:root{--bg: #16181d;--bg-panel: #1d2026;--bg-hover: #23262d;--border: #2c3038;--text: #d5d9e0;--text-muted: #8a919e;--accent: #a28be6;--ok: #5cb872;--err: #d9605c;--warn: #d9a05c;--viz-1: #3987e5;--viz-context: #5f6672;--viz-grid: #2c3038;--viz-axis: #444a55;--font-ui: system-ui, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, monospace;--topbar-h: 41px;--sidebar-w: 280px}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:var(--text);background:var(--bg-hover);border:1px solid var(--border);border-radius:4px;padding:5px 12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button[type=submit]{background:var(--accent);border-color:var(--accent);color:#10131a;font-weight:600}.btn-secondary{background:transparent}.btn-danger{color:var(--err);border-color:var(--err);background:transparent}.btn-danger:hover:not(:disabled){border-color:var(--err);background:#d9605c1f}input[type=text],input[type=search],input[type=number],input[type=date],input[type=time],input[type=password],textarea,select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:5px 8px}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}input[type=color]{width:40px;height:28px;padding:0;border:1px solid var(--border);border-radius:4px;background:var(--bg);cursor:pointer}.icon-btn{background:transparent;border:none;padding:2px 6px;border-radius:3px;color:var(--text-muted);line-height:1}.icon-btn:hover:not(:disabled){color:var(--text);background:var(--bg-hover);border:none}.muted{color:var(--text-muted)}.error-text{color:var(--err);margin:4px 0}.field{display:flex;flex-direction:column;gap:4px}.field-label{font-size:12px;color:var(--text-muted)}.field-row{display:flex;gap:12px}.field-row .field{flex:1}.inline-form{display:flex;gap:8px}.inline-form input{min-width:220px}.layout{display:flex;flex-direction:column;height:100%}.auth-checking{height:100%;display:flex;align-items:center;justify-content:center}.topbar{display:flex;align-items:center;gap:10px;padding:8px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:600;letter-spacing:.02em;color:var(--text)}.brand svg{border-radius:4px;flex-shrink:0}.brand:hover{text-decoration:none;color:var(--accent)}.topbar-spacer{flex:1}.topbar-action{color:var(--text-muted);font-family:var(--font-mono);font-size:12px;border:1px solid var(--border);border-radius:3px;padding:2px 8px;white-space:nowrap}.topbar-action:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.topbar-iconbtn{display:inline-flex;align-items:center;padding:3px 6px}.layout-body{flex:1;display:flex;min-height:0}.rail{width:44px;flex-shrink:0;border-right:1px solid var(--border);background:var(--bg-panel);display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;min-height:0}.rail-item{position:relative;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;color:var(--text-muted);flex-shrink:0}.rail-item:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.rail-active{color:var(--text);background:var(--bg-hover)}.rail-sep{width:20px;height:1px;background:var(--border);margin:3px 0;flex-shrink:0}.rail-scroll{display:flex;flex-direction:column;align-items:center;gap:4px;overflow-y:auto;scrollbar-width:none;min-height:0;padding:4px 0;width:100%}.rail-chip{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;background:#555;color:#fff;font-size:10px;font-weight:700;font-family:var(--font-mono);text-shadow:0 1px 1px rgba(0,0,0,.35)}.rail-item.rail-active .rail-chip{box-shadow:0 0 0 2px var(--bg-panel),0 0 0 4px var(--accent)}.rail-tip{position:fixed;left:50px;transform:translateY(-50%);background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;padding:3px 8px;font-size:12px;color:var(--text);white-space:nowrap;z-index:80;pointer-events:none;box-shadow:0 2px 8px #0000004d}.page{flex:1;overflow-y:auto;width:100%;min-width:0;padding:20px max(16px,calc((100% - 1100px)/2))}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:12px}.page-title{margin:0;font-size:18px}.sidebar{width:var(--sidebar-user-w, var(--sidebar-w));flex-shrink:0;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;overflow-y:auto}.sidebar-resizer{width:5px;cursor:col-resize;flex-shrink:0;background:transparent}.sidebar-resizer:hover{background:var(--border)}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.col-resizing iframe{pointer-events:none}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}.tab{background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;color:var(--text-muted);padding:6px 10px}.tab:hover:not(:disabled){color:var(--text);border-color:transparent}.tab-active{color:var(--text);border-bottom-color:var(--accent)}.tab-count{color:var(--text-muted);font-size:12px;font-family:var(--font-mono)}.settings-page{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.settings-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:8px 16px 0;border-bottom:1px solid var(--border);flex-shrink:0}.settings-tab{padding:5px 14px;font-size:13px;color:var(--text-muted);border:1px solid transparent;border-bottom:none;border-radius:5px 5px 0 0}.settings-tab:hover{color:var(--text);text-decoration:none}.settings-tab-active{color:var(--text);background:var(--bg-panel);border-color:var(--border);margin-bottom:-1px}.rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.row{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;color:var(--text)}.row:hover{border-color:var(--accent);text-decoration:none}.row-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.row-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;max-width:45%}.row-desc{color:var(--text-muted);font-size:13px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-actions{visibility:hidden;margin-left:auto;display:flex;gap:2px}.row:hover .row-actions{visibility:visible}.badge{font-size:11px;font-family:var(--font-mono);padding:1px 6px;border-radius:3px;border:1px solid var(--border);color:var(--text-muted);white-space:nowrap}.badge-ok{color:var(--ok);border-color:var(--ok)}.badge-warn{color:var(--warn);border-color:var(--warn)}.badge-err{color:var(--err);border-color:var(--err)}.card-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:5px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.card:hover{border-color:var(--accent)}.card h3{margin:0;font-size:14px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--text-muted);font-weight:600;font-size:12px;padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:5px 8px;border-bottom:1px solid var(--border)}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--bg-hover)}.table-section td{font-weight:600;color:var(--warn);padding-top:14px;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.ctxmenu{position:fixed;z-index:150;min-width:170px;max-width:240px;width:max-content;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;box-shadow:0 4px 14px #0006;padding:4px;display:flex;flex-direction:column}.rowmenu{position:relative;display:inline-flex}.rowmenu-list{position:absolute;top:100%;right:0;z-index:30;min-width:170px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;box-shadow:0 4px 14px #0006;padding:4px;display:flex;flex-direction:column}.rowmenu-item{background:transparent;border:none;border-radius:3px;text-align:left;padding:6px 10px;white-space:nowrap}.rowmenu-item:hover:not(:disabled){background:var(--bg-hover);border:none}.rowmenu-danger{color:var(--err)}.rowmenu-sep{height:1px;background:var(--border);margin:4px 6px}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:8px 10px 8px 14px;font-size:13px;z-index:500;box-shadow:0 4px 18px #00000059;max-width:min(92vw,560px)}.toast-error{border-left:3px solid var(--err)}.toast-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast-undo{color:var(--accent);font-weight:600;background:none;border:none;cursor:pointer;flex-shrink:0}.confirm-message{margin:0 0 4px;line-height:1.5;white-space:pre-line}.palette-overlay{position:fixed;inset:0;z-index:300;background:#00000073;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 0}.palette{width:min(560px,100%);background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 40px #0000008c;display:flex;flex-direction:column;max-height:70vh}.palette input{border:none;border-bottom:1px solid var(--border);border-radius:8px 8px 0 0;background:transparent;padding:12px 14px;font-size:15px}.palette input:focus{outline:none}.palette-list{overflow-y:auto;padding:6px}.palette-group{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:8px 10px 3px}.palette-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;padding:6px 10px;border-radius:4px;font-size:14px;color:var(--text);cursor:pointer}.palette-hi{background:var(--bg-hover);color:var(--accent)}.palette-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-hint{font-size:11px;color:var(--text-muted);white-space:nowrap;margin-left:auto}.palette-empty{padding:10px 12px}.palette-foot{font-size:11px;padding:6px 12px;border-top:1px solid var(--border)}.modal-overlay{position:fixed;inset:0;background:#0000008c;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 16px}.modal{width:100%;max-width:440px;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;max-height:80vh;display:flex;flex-direction:column}.modal-wide{max-width:720px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border)}.modal-title{font-weight:600}.modal-body{padding:14px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-actions-split{justify-content:space-between}.modal-actions-split>div{display:flex;gap:8px}.move-list{display:flex;flex-direction:column;max-height:40vh;overflow-y:auto;border:1px solid var(--border);border-radius:4px;padding:4px}.move-option{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:3px;cursor:pointer}.move-option:hover{background:var(--bg-hover)}kbd{font-family:var(--font-mono);font-size:11px;padding:1px 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:3px;background:var(--bg)}@media(max-width:720px){.rail,.sidebar-resizer,.row-desc{display:none}.row-actions{visibility:visible}.drawer-overlay{position:fixed;inset:0;background:#00000080;z-index:40}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:50;width:min(85vw,320px);transform:translate(-100%);transition:transform .18s ease-out;border-right:1px solid var(--border)}.sidebar-open{transform:translate(0)}.inline-form{flex:1}.inline-form input{min-width:0;flex:1}.modal-overlay{padding:4vh 8px 8px}}@media print{:root{--bg: #fff;--bg-panel: #fff;--bg-hover: #fff;--border: #bbb;--text: #000;--text-muted: #555;--accent: #000}.topbar,.rail,.sidebar,.toast,.modal-overlay,.palette-overlay,.ctxmenu,.row-actions{display:none!important}.page{overflow:visible;padding:0}}.small{font-size:12px}.mono{font-family:var(--font-mono);font-size:12px}.text-err{color:var(--err)}.text-warn{color:var(--warn)}.link-btn{background:none;border:none;padding:0;color:var(--accent);cursor:pointer}.link-btn:hover:not(:disabled){text-decoration:underline;border:none}.btn-small{font-size:12px;padding:2px 8px}.page-sub{font-weight:400;font-size:14px}.back-link{display:inline-block;font-size:13px;margin-bottom:8px}.check{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.check input{margin:0}input[type=checkbox]{accent-color:var(--accent)}input[type=date],input[type=time]{color-scheme:dark}textarea{resize:vertical}.user-btn{gap:6px;background:transparent}.user-name{max-width:140px;overflow:hidden;text-overflow:ellipsis}.user-menu-list{min-width:220px;margin-top:4px;z-index:150}.user-menu-head{padding:6px 10px;font-size:13px;display:flex;flex-direction:column;gap:2px}.user-menu-head .badge{align-self:flex-start}a.rowmenu-item{color:var(--text)}a.rowmenu-item:hover{background:var(--bg-hover);text-decoration:none}.nav-toggle{display:none}.rail-fill{flex:1}.nav-drawer{padding:8px;gap:2px}.nav-drawer-head{display:flex;align-items:center;gap:8px;font-weight:600;padding:6px 8px 12px}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:4px;color:var(--text-muted)}.nav-link:hover{text-decoration:none;background:var(--bg-hover);color:var(--text)}.nav-link-active{background:var(--bg-hover);color:var(--accent)}@media(max-width:720px){.nav-toggle{display:inline-flex;padding:4px}.user-name{display:none}}@media print{.nav-toggle,.user-menu{display:none!important}}.section-title{margin:0 0 8px;font-size:14px;font-weight:600}.diag-section{margin-bottom:20px}.diag-profile{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.diag-profile .field{width:110px}.diag-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.diag-status{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:8px 0 0}.diag-live{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.diag-weight{font-family:var(--font-mono);font-size:32px;color:var(--text)}.diag-timings{width:auto;min-width:260px}.diag-log{font-family:var(--font-mono);font-size:11px;line-height:1.5;max-height:360px;overflow:auto;padding:6px 8px;margin-bottom:8px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px}.diag-line{white-space:nowrap}.diag-at,.diag-dir{color:var(--text-muted)}.diag-out .diag-hex{color:var(--accent)}.diag-note .diag-text{color:var(--warn)}@media(max-width:720px){.diag-hex{display:none}}.notice{border:1px solid var(--border);border-left:3px solid var(--warn);border-radius:4px;padding:6px 10px;margin:0 0 12px;font-size:13px}.num{text-align:right;white-space:nowrap}.sync-badge,.sync-badge:hover{text-decoration:none}.weigh-live{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 12px;margin-bottom:16px;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel)}.weigh-status{font-size:15px;color:var(--text-muted);text-align:center}.weigh-weight{display:flex;align-items:baseline;gap:6px}.weigh-number{font-family:var(--font-mono);font-size:64px;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}.weigh-unit{font-size:18px;color:var(--text-muted)}.weigh-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.weigh-result{max-width:520px}.weigh-result-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.values-table th{font-weight:400;color:var(--text-muted)}.profile-form{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-bottom:8px}.profile-form .field{width:150px}.reminder-form .check{padding-bottom:6px}.pair-card{border:1px solid var(--border);border-radius:6px;padding:12px;margin-bottom:12px;max-width:420px}.pair-qr{width:220px;margin:8px 0;background:#fff;padding:8px;border-radius:4px}.pair-qr svg{display:block;width:100%;height:auto}.pair-actions{display:flex;gap:8px;flex-wrap:wrap}.pair-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.pair-box{max-width:420px;display:flex;flex-direction:column;gap:12px}.pair-box .page-title{display:flex;align-items:center;gap:8px}.pair-open{display:block;text-align:center;padding:12px;border-radius:6px;background:var(--accent);color:#10131a;font-weight:600}.pair-open:hover{text-decoration:none}.pair-key{font-family:var(--font-mono);font-size:11px;word-break:break-all;color:var(--text-muted)}.row-waiting td{color:var(--text-muted)}.row-actions-cell{width:1%;white-space:nowrap}@media(max-width:720px){.hide-mobile{display:none}.weigh-number{font-size:56px}}.seg{display:inline-flex;border:1px solid var(--border);border-radius:4px;overflow:hidden;flex-shrink:0}.seg-btn{border:none;border-radius:0;background:transparent;color:var(--text-muted);padding:3px 10px;font-family:var(--font-mono);font-size:12px;white-space:nowrap}.seg-btn+.seg-btn{border-left:1px solid var(--border)}.seg-btn:hover:not(:disabled){border-color:var(--border);color:var(--text)}.seg-on{background:var(--bg-hover);color:var(--accent)}.dash-page{padding-left:max(16px,calc((100% - 1400px)/2));padding-right:max(16px,calc((100% - 1400px)/2))}.dash-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;margin-bottom:10px}.kpi{display:flex;flex-direction:column;min-width:0;padding:7px 12px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;color:var(--text)}.kpi-label{font-size:12px;color:var(--text-muted)}.kpi-main{display:flex;align-items:center;justify-content:space-between;gap:8px}.kpi-value{font-size:22px;font-weight:600;line-height:1.3;white-space:nowrap}.kpi-of{font-size:13px;font-weight:400;color:var(--text-muted)}.kpi-sub{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi-delta{font-family:var(--font-mono);font-size:11px;color:var(--text)}.dash-panel{border:1px solid var(--border);background:var(--bg-panel);border-radius:4px;padding:8px 10px;min-width:0;margin-bottom:10px}.dash-panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:4px;min-width:0}.dash-panel-head .section-title{margin:0}.dash-subtitle{margin-top:16px}.multiples{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:8px}.multiples .dash-panel{margin-bottom:0}.multiple-title{margin:0;font-size:13px;font-weight:500}.tchart{position:relative;outline:none;touch-action:pan-y;user-select:none;-webkit-user-select:none}.tchart:focus-visible{box-shadow:0 0 0 1px var(--accent);border-radius:3px}.tchart-svg{display:block;overflow:visible}.tchart-empty{display:flex;align-items:center;justify-content:center}.viz-grid{stroke:var(--viz-grid);stroke-width:1;shape-rendering:crispEdges}.viz-tick{fill:var(--text-muted);font-family:var(--font-mono);font-size:10px;font-variant-numeric:tabular-nums}.viz-crosshair{stroke:var(--text-muted);stroke-width:1;shape-rendering:crispEdges}.viz-context{fill:var(--viz-context);stroke:var(--bg-panel);stroke-width:2}.viz-line{fill:none;stroke:var(--viz-1);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.viz-end{fill:var(--viz-1);stroke:var(--bg-panel);stroke-width:2}.viz-end-label{fill:var(--text);font-family:var(--font-mono);font-size:11px}.viz-tip{position:absolute;top:6px;z-index:80;pointer-events:none;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:12px;width:max-content;max-width:100%;box-shadow:0 2px 8px #00000059}.viz-tip-title{color:var(--text-muted);margin-bottom:2px}.viz-tip-row{display:flex;align-items:baseline;gap:6px}.viz-tip-row strong{font-variant-numeric:tabular-nums}.viz-key-line{display:inline-block;align-self:center;width:12px;height:2px;border-radius:1px;flex-shrink:0}.viz-key-series{background:var(--viz-1)}.viz-key-dot{display:inline-block;align-self:center;width:7px;height:7px;border-radius:50%;background:var(--viz-context);flex-shrink:0}.viz-legend{display:flex;flex-wrap:wrap;align-items:center;gap:2px 12px;font-size:12px;color:var(--text-muted)}.viz-legend-item{display:inline-flex;align-items:center;gap:5px}.viz-stale{opacity:.55;transition:opacity .15s}.sparkline{flex-shrink:0}.spark-line{fill:none;stroke:var(--viz-context);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.spark-end{fill:var(--viz-1);stroke:var(--bg-panel);stroke-width:1.5}@media(max-width:720px){.kpis{grid-template-columns:1fr}.kpi-value{font-size:20px}}
