:root{--bg:#f5f6f8;--card:#fff;--fg:#1f2328;--sub:#636c76;--line:#d8dee4;--accent:#2f6fde}
@media (prefers-color-scheme:dark){:root{--bg:#16181c;--card:#22252b;--fg:#e6e8eb;--sub:#9aa3ad;--line:#353a42;--accent:#6ea0ff}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,"Hiragino Sans","Yu Gothic UI",sans-serif;line-height:1.6}
.wrap{max-width:1000px;margin:0 auto;padding:0 16px}
.top{background:var(--card);border-bottom:1px solid var(--line)}
.brand{display:block;padding:14px 0;font-weight:700;font-size:1.2rem;color:var(--fg);text-decoration:none}
h2{font-size:1rem;color:var(--sub);margin:28px 0 10px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.card{display:block;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;color:var(--fg);text-decoration:none;transition:border-color .15s,transform .15s}
a.card:hover{border-color:var(--accent);transform:translateY(-2px)}
.card.off{opacity:.55}
.icon{font-size:1.8rem}
.title{font-weight:700;margin-top:4px}
.desc{color:var(--sub);font-size:.88rem}
.badge{font-size:.7rem;font-weight:400;border:1px solid var(--line);border-radius:4px;padding:0 4px;color:var(--sub)}
.notices ul{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:10px}
.notices li{padding:10px 14px;border-top:1px solid var(--line)}
.notices li:first-child{border-top:0}
.date{color:var(--sub);font-size:.85rem}
.notices .body{color:var(--sub);font-size:.9rem}
.foot{color:var(--sub);font-size:.8rem;padding:32px 16px}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.user{display:flex;align-items:center;gap:12px;font-size:14px}
.user a{color:inherit}
.user form{margin:0}
.user button{font:inherit;cursor:pointer;background:none;border:1px solid currentColor;border-radius:6px;padding:2px 10px;color:inherit}
.login{max-width:360px;margin:40px auto;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:24px}
.login label{display:block;margin:12px 0;font-size:14px}
.login input{display:block;width:100%;box-sizing:border-box;padding:8px;margin-top:4px;font-size:16px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg)}
.login button{width:100%;padding:10px;margin-top:8px;font-size:16px;border:0;border-radius:6px;background:var(--accent);color:#fff;cursor:pointer}
.login .error{color:#c00}
.login ul.errorlist{color:#c00;font-size:13px}
