:root{--bg: #f4f5f7;--surface: #ffffff;--surface-2: #f8f9fb;--text: #17191e;--text-2: #4a505c;--muted: #6b7280;--border: #dde0e6;--border-2: #eceef2;--accent: #3559d6;--accent-text: #ffffff;--accent-soft: #e8edfc;--focus: #3559d6;--critical: #c4302f;--critical-soft: #fbe9e8;--caution: #765300;--caution-soft: #fbf3dc;--info: #0a6670;--info-soft: #e3f2f3;--good: #17803d;--good-soft: #e5f4ea;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace;--fs-title: 20px;--fs-section: 15px;--fs-body: 13px;--fs-small: 12px;--fs-label: 11.5px;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--radius: 6px;--radius-panel: 8px;--shadow: 0 1px 2px rgb(20 24 40 / .06), 0 8px 24px rgb(20 24 40 / .1);--shadow-sm: 0 1px 2px rgb(20 24 40 / .05);--drawer-width: 400px;--topbar-height: 49px;--wash: rgb(53 89 214 / .035);--topbar-glass: rgb(255 255 255 / .94);--shine: rgb(255 255 255 / .16);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.34, 1.4, .64, 1);--dur-fast: .12s;--dur: .18s;--dur-slow: .28s;color-scheme:light;font-family:var(--font);font-size:var(--fs-body);line-height:1.45}@media(prefers-color-scheme:dark){:root{--bg: #121418;--surface: #1b1e24;--surface-2: #171a1f;--text: #e8eaee;--text-2: #b4bac5;--muted: #8a919d;--border: #30353e;--border-2: #252930;--accent: #7d9bff;--accent-text: #0f1320;--accent-soft: #232c48;--focus: #9db3ff;--critical: #f07272;--critical-soft: #3a1e20;--caution: #e6b84a;--caution-soft: #3a3016;--info: #5cc4cc;--info-soft: #14302f;--good: #5cc985;--good-soft: #173223;--shadow: 0 1px 2px rgb(0 0 0 / .3), 0 8px 24px rgb(0 0 0 / .35);--shadow-sm: 0 1px 2px rgb(0 0 0 / .25);--wash: rgb(125 155 255 / .03);--topbar-glass: rgb(27 30 36 / .94);--shine: rgb(255 255 255 / .1);color-scheme:dark}}*{box-sizing:border-box}body{margin:0;color:var(--text);background:radial-gradient(1200px 420px at 15% -120px,var(--wash),transparent 70%) no-repeat,var(--bg);background-attachment:fixed}::selection{background:var(--accent-soft);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}a{color:var(--accent)}h1,h2,h3,h4{margin:0;line-height:1.25;text-wrap:balance}h1,h2{font-size:var(--fs-title);font-weight:650}h3{font-size:var(--fs-section);font-weight:600}h4{font-size:var(--fs-body);font-weight:600}p{margin:0}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.mono{font-family:var(--mono);font-size:var(--fs-small)}.muted{color:var(--muted)}.small{font-size:var(--fs-small)}.stale{color:var(--caution);font-weight:600}.label{font-size:var(--fs-label);font-weight:600;color:var(--muted);letter-spacing:.02em}.num{text-align:right;font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.grow{flex:1 1 auto}[hidden]{display:none!important}.stack{display:flex;flex-direction:column;gap:var(--s3)}.row{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}.row>.actions{margin-left:auto;display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}.error{color:var(--critical)}.good{color:var(--good)}button,.btn{font:inherit;font-size:var(--fs-body);padding:5px 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}button:hover:not(:disabled),.btn:hover{border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.08);border-color:var(--accent)}button.ghost{border-color:transparent;background:transparent;color:var(--text-2)}button.ghost:hover:not(:disabled){background:var(--surface-2);border-color:transparent}button.danger{color:var(--critical);border-color:var(--critical)}button.small,.btn.small{padding:2px 8px;font-size:var(--fs-small)}button.link{border:none;background:none;color:var(--accent);padding:0;text-decoration:underline;text-underline-offset:2px}input,textarea,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:5px 8px}textarea{font-family:var(--mono);font-size:var(--fs-small)}input[type=checkbox]{accent-color:var(--accent)}.check{display:inline-flex;gap:6px;align-items:center}.field-label{display:flex;flex-direction:column;gap:var(--s1)}.field-label>span:first-child{font-size:var(--fs-label);font-weight:600;color:var(--muted)}.notice{padding:var(--s2) var(--s3);border-radius:var(--radius);background:var(--caution-soft);color:var(--text)}.notice.error{background:var(--critical-soft);color:var(--critical)}.notice.ok{background:var(--good-soft);color:var(--text)}.empty{color:var(--muted);padding:var(--s4) 0}.login{max-width:340px;margin:15vh auto;padding:var(--s5);display:flex;flex-direction:column;gap:var(--s3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-panel);box-shadow:var(--shadow);animation:rise-in .42s var(--ease-out)}.login label{display:flex;flex-direction:column;gap:var(--s1)}.password-form{max-width:340px}button,.btn,input,textarea,select{transition:border-color var(--dur) var(--ease-out),background-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),transform var(--dur-fast) var(--ease-out),filter var(--dur) var(--ease-out)}button:active:not(:disabled),.btn:active{transform:translateY(1px)}button.primary:hover:not(:disabled),.btn.primary:hover{filter:brightness(1.08)}button.danger:hover:not(:disabled){background:var(--critical-soft)}input:not([type=checkbox]):not([type=radio]):focus,textarea:focus,select:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 1px var(--focus),0 0 0 5px color-mix(in srgb,var(--focus) 20%,transparent)}:focus-visible{transition:outline-offset var(--dur-fast) var(--ease-out)}.notice{animation:drop-in var(--dur-slow) var(--ease-out)}@keyframes drop-in{0%{opacity:0;transform:translateY(-4px)}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:1ms!important}}
