:root{color-scheme:dark;--c-bg: #16202a;--c-bg-inset: #0f1620;--c-surface: #1f2a33;--c-surface-hover: #2a3640;--c-border: #3a4750;--c-border-faint: #2a3640;--c-text: #ece7da;--c-text-strong: #f5f1e8;--c-text-soft: #d8d2c2;--c-text-muted: #8a8578;--c-text-faint: #6b675c;--c-accent: #818cf8;--c-accent-strong: #6366f1;--c-accent-light: #bdc3fe;--c-accent-contrast: #16202a;--c-solo: #818cf8;--c-ok: #34d399;--c-warn: #fbbf24;--c-danger: #f87171;--c-data-manual: #a855f7;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--r-sm: .4rem;--r-md: .6rem;--r-lg: .75rem;--r-full: 999px;--fs-xs: .78rem;--fs-sm: .85rem;--fs-base: 1rem;--fs-h2: 1.3rem;--fs-h1: 1.6rem;--lh: 1.5;--shadow-card: 0 1px 2px rgba(0,0,0,.3);--shadow-pop: 0 6px 20px rgba(0,0,0,.45);--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--maxw: 30rem;--touch: 44px}@media(min-width:640px){:root{--maxw: 42rem}}@media(min-width:1024px){:root{--maxw: 56rem}}*{box-sizing:border-box}body{margin:0;padding:var(--sp-4);font-family:var(--font);line-height:var(--lh);background:var(--c-bg);color:var(--c-text);min-height:100vh}@media(min-width:640px){body{padding:var(--sp-6)}}main,.app-header,.app-nav,.app-footer{max-width:var(--maxw);margin-left:auto;margin-right:auto}h1{color:var(--c-text-strong);font-size:var(--fs-h1)}h2{color:var(--c-text-strong);font-size:var(--fs-h2)}a{color:var(--c-accent)}.app-header{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2)}.wordmark{font-size:1.35rem;font-weight:800;letter-spacing:-.01em;text-decoration:none;color:var(--c-text-strong)}.wordmark .solo{color:var(--c-solo)}.app-nav{display:flex;gap:var(--sp-4);font-size:var(--fs-sm);border-bottom:1px solid var(--c-border);padding-bottom:var(--sp-3);margin-bottom:var(--sp-5);overflow-x:auto;scrollbar-width:none}.app-nav::-webkit-scrollbar{display:none}.app-nav a{text-decoration:none;color:var(--c-text-muted);white-space:nowrap;padding:var(--sp-1) 0}.app-nav a.active{color:var(--c-accent);font-weight:600}.app-footer{margin-top:var(--sp-8);padding-top:var(--sp-4);border-top:1px solid var(--c-border);color:var(--c-text-muted);font-size:var(--fs-sm)}.card{background:var(--c-surface);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);margin:var(--sp-4) 0;box-shadow:var(--shadow-card)}button,.btn{background:var(--c-accent);color:var(--c-accent-contrast);border:0;padding:.65rem 1.1rem;border-radius:var(--r-full);font-weight:600;cursor:pointer;font-size:var(--fs-base);min-height:var(--touch)}button:hover,.btn:hover{background:var(--c-accent-light)}button:disabled,.btn:disabled{opacity:.5;cursor:default;background:var(--c-accent)}.btn-secondary{background:transparent;color:var(--c-accent);border:1px solid var(--c-accent)}.btn-secondary:hover{background:var(--c-surface-hover)}.btn-danger{background:transparent;color:var(--c-danger);border:1px solid var(--c-danger);padding:.3rem .8rem;font-size:var(--fs-sm);min-height:auto}.btn-sm{padding:.35rem .8rem;font-size:var(--fs-sm);min-height:auto}.field{display:block;margin:var(--sp-3) 0 var(--sp-1);color:var(--c-text-muted);font-size:var(--fs-sm)}input,select,textarea{width:100%;background:var(--c-bg-inset);color:var(--c-text);border:1px solid var(--c-border);border-radius:var(--r-sm);padding:.6rem .7rem;font-size:var(--fs-base);min-height:var(--touch)}input[type=checkbox],input[type=radio]{width:auto;min-height:auto}.row{display:flex;gap:var(--sp-3);flex-wrap:wrap}.row>div{flex:1;min-width:8rem}fieldset{border:1px solid var(--c-border);border-radius:var(--r-md);margin:var(--sp-3) 0;padding:.3rem .9rem .9rem}legend{color:var(--c-text-strong);padding:0 .4rem;font-size:var(--fs-sm)}.tbl-wrap{overflow-x:auto;margin:var(--sp-3) 0}.tbl{width:100%;border-collapse:collapse;font-size:.92rem}.tbl th{text-align:left;color:var(--c-text-muted);border-bottom:1px solid var(--c-border);padding:.5rem .6rem;white-space:nowrap}.tbl td{padding:.5rem .6rem}.tbl .num{text-align:right}.tbl .muted,.text-muted{color:var(--c-text-muted)}.text-faint{color:var(--c-text-faint)}.ok{color:var(--c-ok)}.warn{color:var(--c-warn)}.danger{color:var(--c-danger)}pre{white-space:pre-wrap;word-break:break-word;font-size:var(--fs-sm)}
