:root{color-scheme:light;--surface-1:#fcfcfb;--page:#f9f9f7;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#898781;--grid:#e1e0d9;--axis:#c3c2b7;--border:rgba(11,11,11,0.1);--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-4:#eda100;--good:#006300;--critical:#d03b3b;--radius:10px;--font:system-ui,-apple-system,"Segoe UI",sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--surface-1:#1a1a19;--page:#0d0d0d;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--axis:#383835;--border:rgba(255,255,255,0.1);--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--good:#0ca30c;--critical:#d03b3b}}:root[data-theme=dark]{color-scheme:dark;--surface-1:#1a1a19;--page:#0d0d0d;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#898781;--grid:#2c2c2a;--axis:#383835;--border:rgba(255,255,255,0.1);--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--good:#0ca30c;--critical:#d03b3b}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--page);color:var(--text-primary);font-family:var(--font);font-size:15px;line-height:1.5}a{color:var(--series-1)}.shell{max-width:1240px;margin:0 auto;padding:24px 20px 64px}.topbar{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;justify-content:space-between;margin-bottom:20px}.topbar h1{font-size:22px;margin:0;letter-spacing:-.01em}.muted{color:var(--text-muted);font-size:13px}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.card h2{margin:0 0 2px;font-size:15px;font-weight:600}.card .sub{margin:0 0 16px;color:var(--text-muted);font-size:12.5px}.grid-tiles{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:12px;gap:12px}.grid-2,.grid-tiles{display:grid;margin-bottom:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));grid-gap:16px;gap:16px}.tile{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.tile .label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:6px}.tile .value{font-size:27px;font-weight:650;letter-spacing:-.02em;line-height:1.15}.tile .unit{font-size:14px;font-weight:500;margin-left:4px}.tile .delta,.tile .unit{color:var(--text-secondary)}.tile .delta{font-size:12.5px;margin-top:4px}.tile .delta.up{color:var(--good)}.tile .delta.down{color:var(--critical)}.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface-1)}.seg button{border:0;background:transparent;color:var(--text-secondary);font:inherit;font-size:13px;padding:6px 12px;cursor:pointer}.seg button[aria-pressed=true]{background:var(--series-1);color:#fff}.btn{border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary);font:inherit;font-size:13px;padding:7px 14px;border-radius:8px;cursor:pointer}.btn.primary{background:var(--series-1);border-color:transparent;color:#fff}.btn:disabled{opacity:.55;cursor:default}.btn.danger{border-color:var(--critical);color:var(--critical)}.btn.icon{padding:6px 10px;font-size:15px;line-height:1}table{width:100%;border-collapse:collapse;font-size:13.5px}td,th{text-align:left;padding:7px 8px;border-bottom:1px solid var(--grid)}th{color:var(--text-muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.03em}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:7px;vertical-align:baseline}.table-scroll{overflow-x:auto;max-height:420px;overflow-y:auto}.tooltip{background:var(--surface-1);border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-size:12.5px;box-shadow:0 6px 20px rgba(0,0,0,.14)}.tooltip .t-head{color:var(--text-muted);margin-bottom:5px}.tooltip .t-row{display:flex;justify-content:space-between;gap:18px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.keybar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;margin-bottom:16px}.keybar-dot{width:8px;height:8px;border-radius:50%;flex:none}.keybar-dot.ok{background:var(--good)}.keybar-dot.missing{background:var(--critical)}.keybar-label{font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--text-secondary);flex:none}.keybar-input{flex:1 1 240px;min-width:200px;padding:7px 11px;border-radius:8px;border:1px solid var(--border);background:var(--page);color:var(--text-primary);font:inherit;font-size:13px;letter-spacing:.14em}.keybar-remember{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--text-secondary);white-space:nowrap;cursor:pointer}.keybar-msg{font-size:12.5px;color:var(--text-muted);flex:1 1 100%}.keybar-msg.err{color:var(--critical)}.valprog{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:13px 16px;margin-bottom:16px}.valprog.failed{border-color:var(--critical)}.valprog-head{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:9px}.valprog-stage{font-size:13.5px;color:var(--text-secondary)}.valprog-total{font-size:17px;font-weight:650;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.valprog-bar{height:6px;background:var(--grid);border-radius:3px;overflow:hidden}.valprog-fill{height:100%;background:var(--series-1);border-radius:3px;transition:width .45s ease-out}.valprog-bar.indeterminate .valprog-fill{width:35%;animation:valprog-slide 1.4s ease-in-out infinite}@keyframes valprog-slide{0%{transform:translateX(-100%)}to{transform:translateX(300%)}}@media (prefers-reduced-motion:reduce){.valprog-bar.indeterminate .valprog-fill{animation:none;width:100%;opacity:.4}.valprog-fill{transition:none}}.valprog-meta{display:flex;justify-content:space-between;gap:12px;margin-top:7px;font-size:12px;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.roll-pop{position:fixed;z-index:40;width:340px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:12px 13px;box-shadow:0 10px 34px rgba(0,0,0,.28);pointer-events:none;font-size:12.5px}.rp-head{font-weight:600;margin-bottom:9px;display:flex;align-items:baseline;gap:8px}.rp-corrupt{font-size:11px;font-weight:500;color:var(--series-2);border:1px solid var(--series-2);border-radius:4px;padding:0 5px}.rp-table{font-size:12.5px}.rp-table td{padding:4px;border-bottom:none}.rp-table .rp-current td{border-top:1px solid var(--grid);border-bottom:1px solid var(--grid)}.rp-bar{height:6px;background:var(--grid);border-radius:3px;margin:10px 0 6px;overflow:hidden}.rp-bar-fill{height:100%;background:var(--series-1);border-radius:3px}.rp-meta{color:var(--text-secondary);margin-bottom:8px}.rp-mods{border-top:1px solid var(--grid);padding-top:7px}.rp-mod{display:flex;justify-content:space-between;gap:12px;padding:2px 0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.rp-foot{margin-top:8px;color:var(--text-muted);font-size:11.5px}tr.has-rolls{cursor:help}tr.has-rolls:hover{background:color-mix(in srgb,var(--series-1) 8%,transparent)}.roll-score{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.login-wrap{max-width:460px;margin:8vh auto;padding:0 20px}.field{display:block;margin-bottom:14px}.field span{display:block;font-size:13px;color:var(--text-secondary);margin-bottom:5px}.field input,.field select{width:100%;padding:9px 11px;border-radius:8px;border:1px solid var(--border);background:var(--page);color:var(--text-primary);font:inherit}.error{color:var(--critical);font-size:13px;margin:10px 0 0}.empty{color:var(--text-muted);font-size:13.5px;padding:28px 0;text-align:center}.items-total{display:flex;align-items:baseline;gap:10px;margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13px}.copy-name{border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.copy-name:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-underline-offset:3px}.copied-tag{margin-left:7px;font-size:11px;color:var(--good);border:1px solid var(--good);border-radius:6px;padding:0 5px}.loading{display:flex;align-items:center;gap:10px;padding:20px 0;color:var(--text-muted);font-size:13px}.spinner{width:16px;height:16px;flex:none;border:2px solid var(--grid);border-top-color:var(--series-1);border-radius:50%;animation:bw-spin .8s linear infinite}@keyframes bw-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.skeleton-row{height:30px;border-radius:6px;background:linear-gradient(90deg,var(--grid) 25%,var(--surface-1) 37%,var(--grid) 63%);background-size:400% 100%;animation:bw-shimmer 1.4s ease infinite;margin-bottom:6px}@keyframes bw-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.picker-chars{margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--grid)}.picker-char-list{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:6px}.picker-char-list label{display:flex;align-items:center;gap:7px;font-size:13.5px;cursor:pointer}.gain-tag,.loss-tag{margin-left:7px;font-size:10.5px;border-radius:5px;padding:0 5px;white-space:nowrap}.gain-tag{color:var(--good);border:1px solid var(--good)}.loss-tag{color:var(--text-muted);border:1px solid var(--border)}.mod-list{list-style:none;margin:0;padding:0}.mod-list li+li{border-top:1px solid var(--grid)}.mod-list label{display:flex;align-items:center;gap:10px;padding:8px 2px;cursor:pointer;font-size:13.5px}.mod-text{flex:1 1}.mod-meta{color:var(--text-muted);font-size:11.5px;white-space:nowrap}.candidate-note{font-size:11px;margin-top:2px;white-space:normal}.session-open,.session-start{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.session-open input,.session-start input{padding:7px 9px;border-radius:8px;border:1px solid var(--border);background:var(--page);color:var(--text-primary);font:inherit;font-size:13px}.session-start>input{flex:1 1 180px;min-width:140px}.session-start label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary)}.session-start label input{width:86px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.session-open{justify-content:space-between;padding:10px 12px;border:1px solid var(--series-1);border-radius:8px}.session-live{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.session-timer{font-size:26px;font-weight:650;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.1;color:var(--series-1)}.session-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.session-actions label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary)}.session-actions label input{width:86px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mine-tag,.warn-tag{margin-left:7px;font-size:10.5px;border-radius:5px;padding:0 5px;white-space:nowrap}.warn-tag{color:var(--series-4);border:1px solid var(--series-4)}.mine-tag{color:var(--series-1);border:1px solid var(--series-1)}.strategy-best{display:flex;flex-direction:column;gap:1px;padding:10px 12px;margin-bottom:12px;background:var(--page);border-radius:8px}.strategy-best strong{font-size:17px}.calc-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;font-size:13px;font-weight:600}.calc-rows{display:flex;flex-direction:column;gap:6px}.calc-row{display:grid;grid-template-columns:minmax(0,1fr) 74px 92px 96px 24px;grid-gap:8px;gap:8px;align-items:center}.calc-row input,.calc-row select{width:100%;min-width:0;padding:7px 9px;border-radius:8px;border:1px solid var(--border);background:var(--page);color:var(--text-primary);font:inherit;font-size:13px}.calc-row select{cursor:pointer}.calc-row input:disabled{opacity:.4;cursor:not-allowed}.calc-num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.combo{position:relative;min-width:0}.combo-input{padding-right:26px!important}.combo-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:none;color:var(--text-muted);cursor:pointer;font-size:15px;line-height:1;padding:2px 4px}.combo-clear:hover{color:var(--text-primary)}.combo-list{position:absolute;z-index:40;top:calc(100% + 4px);left:0;right:0;max-height:260px;overflow-y:auto;margin:0;padding:4px;list-style:none;border-radius:10px;border:1px solid var(--border);background:var(--surface-1);box-shadow:0 12px 28px rgba(0,0,0,.35)}.combo-item{display:flex;justify-content:space-between;gap:10px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px}.combo-item.on{background:rgba(127,127,127,.18)}.combo-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combo-price{flex:none;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.combo-empty{padding:8px;font-size:13px;color:var(--text-muted)}.calc-line{text-align:right;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.calc-x{border:0;background:none;color:var(--text-muted);font-size:18px;line-height:1;cursor:pointer;padding:0}.calc-x:disabled{opacity:.25;cursor:default}.calc-foot{gap:14px;margin-top:16px;padding-top:12px;border-top:1px solid var(--grid)}.calc-foot,.calc-total{display:flex;flex-wrap:wrap}.calc-total{gap:26px;margin-left:auto}.calc-total div{display:flex;flex-direction:column;align-items:flex-end;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.calc-total strong{font-size:17px}.hint{margin:0 0 12px;padding:8px 10px;border-left:3px solid var(--series-4);background:var(--page);border-radius:0 8px 8px 0;font-size:12.5px;color:var(--text-secondary)}.modal-backdrop{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);width:min(620px,100%);max-height:min(80vh,720px);display:flex;flex-direction:column}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 18px 12px;border-bottom:1px solid var(--grid)}.modal-head h2{margin:0;font-size:15px;font-weight:600}.modal-head .sub{margin:2px 0 0;color:var(--text-muted);font-size:13px}.modal-x{border:0;background:none;color:var(--text-muted);font-size:22px;line-height:1;cursor:pointer;padding:0 4px}.modal-body{padding:14px 18px;overflow-y:auto}.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--grid)}.modal-actions{display:flex;gap:8px;margin-left:auto}.picker-tools{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.picker-tools .keybar-input{flex:1 1 180px;min-width:140px}.picker-list{list-style:none;margin:0;padding:0}.picker-list li+li{border-top:1px solid var(--grid)}.picker-list label{display:flex;align-items:center;gap:10px;padding:7px 2px;cursor:pointer;font-size:13.5px}.picker-list label.dimmed .picker-name{color:var(--text-muted)}.picker-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-meta{color:var(--text-muted);font-size:12px;white-space:nowrap}.setting-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.setting-row h3{margin:0 0 2px;font-size:14px;font-weight:600}.setting-check{gap:7px;margin-top:8px}.setting-check,.switch{display:flex;align-items:center;font-size:13px;color:var(--text-secondary)}.switch{gap:8px;white-space:nowrap;cursor:pointer}.warn-line{margin:6px 0 0;font-size:12.5px;color:var(--series-4)}a.candidate-note{display:block;color:var(--series-1);text-decoration:none}a.candidate-note:hover{text-decoration:underline}.working{display:flex;align-items:flex-start;gap:10px;margin:12px 0;padding:10px 12px;background:var(--page);border-radius:8px;font-size:13px}.working .spinner{margin-top:2px}.working-clock{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}