:root{--bg:#f6f8fb;--card:#fff;--line:#e3e8ef;--text:#1b2430;--muted:#6b7686;--accent:#0ea5e9;--ok:#16a34a;--bad:#dc2626}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"Segoe UI","Apple SD Gothic Neo","Malgun Gothic",sans-serif;background:var(--bg);color:var(--text);font-size:15px}
.top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:16px 24px;background:#fff;border-bottom:1px solid var(--line)}
.brand{font-size:17px}.brand b{color:var(--accent)}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--accent);margin-right:8px}
.meta{color:var(--muted);font-size:13px}.meta a{color:var(--accent)}
main{max-width:1080px;margin:24px auto;padding:0 16px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px;margin-bottom:18px}
.card,.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px}
.k{color:var(--muted);font-size:13px}.v{font-size:20px;font-weight:700;margin:6px 0}.v.ok{color:var(--ok)}.v.bad{color:var(--bad)}
.s{color:var(--muted);font-size:12.5px}
.panel{margin-bottom:18px;overflow-x:auto}.panel h2{margin:0 0 12px;font-size:17px}
table{width:100%;border-collapse:collapse}td,th{padding:9px 8px;border-top:1px solid var(--line);text-align:left;vertical-align:top}th{color:var(--muted);font-weight:600;font-size:13px;border-top:0}
code{background:#eef2f7;padding:2px 6px;border-radius:5px;font-size:12.5px}
.tag{display:inline-block;padding:2px 8px;border-radius:20px;font-size:12px;background:#eef2f7}
.t-web{background:#e0f2fe;color:#0369a1}.t-app{background:#fce7f3;color:#9d174d}.t-cpp{background:#ede9fe;color:#5b21b6}.t-csharp{background:#dcfce7;color:#166534}.t-python{background:#fef9c3;color:#854d0e}
.login{max-width:380px}.login form{display:flex;flex-direction:column;gap:10px}
input{padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:15px}
button{padding:10px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-weight:700;font-size:15px;cursor:pointer}
.err{color:var(--bad)}
