:root{color-scheme:light;--bg:#f7f7f8;--fg:#18181b;--muted:#71717a;--border:#e4e4e7;--card:#fff;--accent:#18181b;--accent-fg:#fff;--primary:#2563eb;--primary-fg:#fff;--danger:#b91c1c;--ok:#047857;--warn:#b45309;--sidebar-w:240px;--header-h:56px;--radius:8px;--radius-lg:12px;--shadow-sm:0 1px 2px rgba(0,0,0,.04)}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--fg);font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}h1,h2,h3,h4{margin:0 0 12px;font-weight:600;letter-spacing:-.01em}h1{font-size:22px}h2{font-size:18px;margin-top:24px}h3{font-size:15px}p{margin:0 0 12px}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:#fff;border-right:1px solid var(--border);position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:16px 12px;gap:4px;overflow-y:auto}.sidebar .brand{font-weight:700;font-size:15px;padding:8px 10px 16px;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}.sidebar .brand .dot{width:8px;height:8px;border-radius:999px;background:var(--primary)}.sidebar .nav-section{font-size:11px;text-transform:uppercase;color:var(--muted);padding:12px 10px 4px;letter-spacing:.06em;font-weight:600}.sidebar a.nav-link{display:flex;align-items:center;padding:8px 10px;border-radius:var(--radius);font-size:14px;color:var(--fg);transition:background 80ms ease}.sidebar a.nav-link:hover{background:#f4f4f5}.sidebar a.nav-link.active{background:#18181b;color:#fff}.sidebar .who{margin-top:auto;padding:12px 10px;border-top:1px solid var(--border);font-size:12px;color:var(--muted)}.main{flex:1 1;margin-left:var(--sidebar-w);padding:28px 36px 60px}.main.no-sidebar{margin-left:0}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.card h3{margin-top:0}.card-row{display:flex;justify-content:space-between;gap:12px}.btn,.card-row{align-items:center}.btn{display:inline-flex;gap:6px;padding:8px 14px;border-radius:var(--radius);background:var(--accent);color:var(--accent-fg);border:1px solid var(--accent);cursor:pointer;font-size:14px;font-weight:500;text-decoration:none;transition:opacity 80ms ease}.btn:hover{opacity:.92}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-fg)}.btn.secondary{background:#f4f4f5;color:var(--fg);border-color:var(--border)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.warn{background:var(--warn);border-color:var(--warn);color:#fff}.btn.small{padding:5px 10px;font-size:12px}.btn.ghost{background:transparent;color:var(--fg);border-color:transparent}.btn.ghost:hover{background:#f4f4f5}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=text],input[type=time],input[type=url],select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);font:inherit;background:#fff;transition:border-color 80ms ease,box-shadow 80ms ease}input:focus,select:focus,textarea:focus{outline:none;border-color:#a1a1aa;box-shadow:0 0 0 3px rgba(24,24,27,.06)}input[type=checkbox]{width:auto}textarea{min-height:120px;resize:vertical;font-family:inherit}label{display:block;font-weight:500;margin:12px 0 4px;font-size:13px}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1 1;min-width:0}.stack>*+*{margin-top:12px}.spacer{flex:1 1}.hgap-2{display:inline-flex;gap:6px}table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:14px}td,th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle}th{background:#fafafa;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#fafafa}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}.badge.gray{background:#f4f4f5;color:#52525b}.badge.yellow{background:#fef3c7;color:#92400e}.badge.green{background:#d1fae5;color:#065f46}.badge.red{background:#fee2e2;color:#991b1b}.badge.blue{background:#dbeafe;color:#1e40af}.badge.teal{background:#ccfbf1;color:#115e59}.badge.purple{background:#ede9fe;color:#5b21b6}.muted{color:var(--muted)}.kv{display:grid;grid-template-columns:160px 1fr;grid-gap:8px 16px;gap:8px 16px;font-size:13px}.kv dt{color:var(--muted)}pre{padding:10px;border:1px solid var(--border);border-radius:var(--radius);overflow:auto}code,pre{background:#fafafa;font-size:12px}code{padding:1px 6px;border:1px solid var(--border);border-radius:4px}hr{border:none;border-top:1px solid var(--border);margin:18px 0}.alert{padding:10px 14px;border-radius:var(--radius);margin:8px 0}.alert.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.alert.ok{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.auth-container{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px}.mobile-topbar,.sidebar-backdrop{display:none}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:12px;gap:12px;margin-bottom:20px}.stat-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm)}.stat-card .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.stat-card .value{font-size:28px;font-weight:700;margin-top:4px;letter-spacing:-.02em}.stat-card.warn .value{color:var(--warn)}.stat-card.danger .value{color:var(--danger)}.stat-card.ok .value{color:var(--ok)}.stat-card a,.stat-card.primary .value{color:var(--primary)}.stat-card a{display:block;margin-top:8px;font-size:12px;font-weight:500}.feed{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:4px 0}.feed-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px}.feed-row:last-child{border-bottom:none}.feed-row .when{color:var(--muted);font-size:11px;white-space:nowrap;min-width:92px;padding-top:2px}.feed-row .body{flex:1 1;min-width:0}.feed-row .body code{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}@media (max-width:768px){:root{--sidebar-w:260px}body{font-size:15px}.sidebar{transform:translateX(-100%);transition:transform .22s ease;box-shadow:4px 0 24px rgba(0,0,0,.18);padding-top:64px;z-index:100}body.sidebar-open .sidebar{transform:translateX(0)}body.sidebar-open .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:90}.sidebar a.nav-link{padding:12px 14px;font-size:15px}.sidebar .nav-section{padding:14px 14px 6px}.main{margin-left:0;padding:72px 16px 40px}.mobile-topbar{gap:12px;position:fixed;top:0;left:0;right:0;height:56px;padding:0 14px;background:#fff;border-bottom:1px solid var(--border);z-index:95}.mobile-brand,.mobile-topbar{display:flex;align-items:center}.mobile-brand{font-weight:700;font-size:15px;gap:8px}.mobile-brand .dot{width:8px;height:8px;border-radius:999px;background:var(--primary)}.hamburger{width:40px;height:40px;border:none;background:transparent;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;cursor:pointer;padding:0}.hamburger span{display:block;width:22px;height:2px;background:var(--fg);border-radius:1px}table{display:block;overflow-x:auto;white-space:nowrap;border-radius:var(--radius)}td,th{padding:10px 12px}.row{flex-direction:column}.row>*{flex:1 1;width:100%;min-width:0}.btn{padding:10px 16px}.btn.small{padding:7px 12px;font-size:13px}.kv{grid-template-columns:1fr;gap:2px 0}.kv dt{margin-top:8px;font-weight:600}.kv dd{margin:0 0 6px}.card{padding:14px;border-radius:var(--radius)}h1{font-size:20px}h2{font-size:17px}}