:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--border:#dfe3e8;--text:#16191d;--text-muted:#5f6672;--accent:#1f5f4b;--accent-soft:#e6f1ed;--ok:#1f7a4d;--ok-soft:#e4f4ea;--warn:#9a6200;--warn-soft:#fdf1dc;--stop:#a32a25;--stop-soft:#fbe7e6;--shadow:0 1px 2px #10141a0f, 0 4px 12px #10141a0a;--radius:10px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14171b;--surface:#1c2025;--surface-2:#23282e;--border:#333a42;--text:#e9ecef;--text-muted:#9aa3ae;--accent:#5fbf9b;--accent-soft:#1c302a;--ok:#63c48c;--ok-soft:#1a2c22;--warn:#e0ae5a;--warn-soft:#302718;--stop:#e8817c;--stop-soft:#331d1c;--shadow:0 1px 2px #0006, 0 4px 12px #00000040}}:root[data-theme=dark]{--bg:#14171b;--surface:#1c2025;--surface-2:#23282e;--border:#333a42;--text:#e9ecef;--text-muted:#9aa3ae;--accent:#5fbf9b;--accent-soft:#1c302a;--ok:#63c48c;--ok-soft:#1a2c22;--warn:#e0ae5a;--warn-soft:#302718;--stop:#e8817c;--stop-soft:#331d1c}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}a{color:inherit;text-decoration:none}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.1rem}h3{font-size:.95rem}.shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:4px;width:210px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{flex-direction:column;align-items:flex-start;gap:1px;padding:2px 10px 20px;display:flex}.brand strong{letter-spacing:-.02em;color:var(--accent);font-size:1.5rem;line-height:1.1}.brand span{letter-spacing:.01em;color:var(--text-muted);max-width:15ch;font-size:.7rem;line-height:1.35}.nav-link{color:var(--text-muted);border-radius:8px;padding:8px 10px;font-weight:500}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.main{flex:1;min-width:0;padding:26px 30px 60px}.card>p{max-width:82ch}.page-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.subnav{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:4px;margin-bottom:18px;display:flex}.subnav-link{color:var(--text-muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-weight:500}.subnav-link:hover{color:var(--text)}.subnav-link.active{color:var(--accent);border-bottom-color:var(--accent)}.login-card{overflow:hidden}.login-head{background:var(--accent);color:#fff;text-align:center;padding:26px 24px 22px}.login-head h1{letter-spacing:-.03em;margin-top:10px;font-size:2rem}.login-head p{opacity:.8;margin:4px 0 0;font-size:.8rem}.login-mark{background:#ffffff29;border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto;font-size:1.7rem;font-weight:600;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;display:grid}.stat .label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.78rem}.stat .value{letter-spacing:-.02em;margin-top:4px;font-size:1.9rem;font-weight:600}.stat .hint{color:var(--text-muted);font-size:.8rem}.stat.alert .value{color:var(--stop)}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:0 12px 8px;font-size:.75rem;font-weight:600}td{border-top:1px solid var(--border);padding:11px 12px}tbody tr:hover{background:var(--surface-2);cursor:pointer}.num{text-align:right;font-variant-numeric:tabular-nums}.badge{background:var(--surface-2);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.stop{background:var(--stop-soft);color:var(--stop)}.notice{border-left:3px solid;border-radius:8px;margin-bottom:8px;padding:10px 12px;font-size:.88rem}.notice.stop{background:var(--stop-soft);border-color:var(--stop)}.notice.warn{background:var(--warn-soft);border-color:var(--warn)}button,.button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 14px;font-weight:500}button:hover{background:var(--surface-2)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{filter:brightness(1.08)}button:disabled{opacity:.5;cursor:not-allowed}input,select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:7px 10px}input.plain{background:0 0;border:1px solid #0000;border-radius:6px}input.plain:hover{border-color:var(--border)}input.plain:focus{border-color:var(--accent);background:var(--surface);outline:none}button.linkish{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px 0 0;font-size:.78rem}button.linkish:hover{color:var(--accent);background:0 0}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.muted{color:var(--text-muted)}.small{font-size:.85rem}.split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.field-list{grid-template-columns:150px 1fr;gap:6px 12px;margin:0;display:grid}.field-list dt{color:var(--text-muted);font-size:.88rem}.field-list dd{font-variant-numeric:tabular-nums;margin:0}.viewer{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);width:100%;height:78vh}.log{margin:0;padding:0;list-style:none}.log li{border-top:1px solid var(--border);padding:8px 0;font-size:.86rem}.log li:first-child{border-top:none}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;color:var(--text-muted);background:var(--surface);padding:30px}.dropzone.over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}@media (width<=900px){.shell{flex-direction:column}.sidebar{flex-direction:row;width:100%;overflow-x:auto}.brand{padding-bottom:0}.main{padding:18px 16px 50px}.split{grid-template-columns:1fr}}
