:root{--bg: #0f1115;--panel: #151a21;--panel-2: #1b2129;--border: #2a313c;--text: #e8ebf0;--muted: #8b94a5;--accent: #22d3ee;--accent-dim: #0e7490;--gold: #d4a72c;--good: #34d399;--warn: #fbbf24;--bad: #f87171}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:SF Pro Text,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:600;letter-spacing:.06em;font-size:15px}.brand span{color:var(--accent)}.tabs{display:flex;gap:4px}.tab{padding:5px 14px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;font-size:13px}.tab.active{background:var(--panel-2);border-color:var(--border);color:var(--text)}.tab:hover:not(.active){color:var(--text)}.spacer{flex:1}.filechip{font-size:12px;color:var(--muted);border:1px solid var(--border);border-radius:6px;padding:4px 10px;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overlay-toggle{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);white-space:nowrap;cursor:pointer}.btn{padding:6px 14px;border-radius:6px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;font-size:13px}.btn:hover{border-color:var(--accent-dim)}.btn.primary{background:var(--accent-dim);border-color:var(--accent-dim);color:#fff}.btn.primary:hover{filter:brightness(1.15)}.btn:disabled{opacity:.45;cursor:default}.drawingbar{display:flex;align-items:center;gap:12px;padding:8px 18px;background:var(--panel-2);border-bottom:1px solid var(--border)}.drawing-picker{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);white-space:nowrap}.drawing-picker select{padding:5px 10px;border-radius:6px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:13px;cursor:pointer}.drawingbar .hint{font-size:12px;color:var(--muted)}.pane-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px;text-align:center;background:#fff;color:#6b7280;font-size:13px}.pane-empty b{color:#111827;font-size:15px;font-weight:600}.pane-empty .sub{font-size:12px;color:#9ca3af}.main{flex:1;display:flex;flex-direction:column;min-height:0}.dropzone{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;margin:24px;border:2px dashed var(--border);border-radius:14px;color:var(--muted);transition:border-color .15s,background .15s}.dropzone.drag{border-color:var(--accent);background:#22d3ee0d}.dropzone h2{margin:0;font-size:18px;font-weight:500;color:var(--text)}.dropzone .sub{font-size:13px}.panes{flex:1;display:grid;gap:1px;background:var(--border);min-height:0}.panes.two{grid-template-columns:1fr 1fr}.panes.three{grid-template-columns:1fr 1fr 1fr}.pane{display:flex;flex-direction:column;background:var(--panel);min-width:0;min-height:0;flex:1}.pane-label{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--border);background:var(--panel)}.pane-label .dot{width:7px;height:7px;border-radius:50%}.canvas{flex:1;overflow:hidden;background:#fff;position:relative;cursor:grab}.canvas:active{cursor:grabbing}.canvas svg{display:block;width:100%;height:100%}.statusbar{display:flex;align-items:center;gap:18px;padding:7px 18px;font-size:12px;color:var(--muted);background:var(--panel);border-top:1px solid var(--border)}.statusbar b{color:var(--text);font-weight:600}.statusbar .ok{color:var(--good)}.statusbar .attn{color:var(--warn);border:1px solid rgba(251,191,36,.35);border-radius:6px;padding:2px 10px}.verdicts{border-top:1px solid var(--border);background:var(--panel);padding:10px 18px;max-height:220px;overflow-y:auto}.vrow{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:13px}.vrow .piece{min-width:180px;color:var(--text)}.chip{padding:3px 12px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;font-size:12px}.chip.match.on{background:#34d39926;border-color:var(--good);color:var(--good)}.chip.minor.on{background:#fbbf2426;border-color:var(--warn);color:var(--warn)}.chip.wrong.on{background:#f8717126;border-color:var(--bad);color:var(--bad)}.vrow input{flex:1;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:4px 10px;font-size:12px}.vrow input::placeholder{color:var(--muted);opacity:.6}input[type=file]{display:none}.working{flex:1;display:flex;align-items:center;justify-content:center;background:var(--panel)}.pending-line{color:var(--muted);font-size:13px}.after-slot{flex:1;display:flex;flex-direction:column;min-height:0}.after-slot.crossfading{position:relative}.after-slot.crossfading>.crossfade-card,.after-slot.crossfading>.crossfade-viewer{position:absolute;top:0;right:0;bottom:0;left:0}.crossfade-card,.crossfade-viewer{display:flex;flex:1;min-height:0}.after-slot.crossfading>.crossfade-card{animation:crossfade-out var(--crossfade-ms, .25s) ease both}.after-slot.crossfading>.crossfade-viewer{animation:crossfade-in var(--crossfade-ms, .25s) ease both}@keyframes crossfade-out{0%{opacity:1}to{opacity:0}}@keyframes crossfade-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.after-slot.crossfading>.crossfade-card,.after-slot.crossfading>.crossfade-viewer{animation:none}}.card{position:relative;width:460px;max-width:90%;padding:26px 28px 22px;background:var(--panel-2);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 50px #00000073}.card h2{margin:0 0 4px;font-size:17px;font-weight:600}.card .file{margin:0 0 18px;font-size:12.5px;color:var(--muted)}.card .file b{color:var(--text);font-weight:500}.card.failed h2{color:var(--bad)}.stages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.stage{display:grid;grid-template-columns:22px 1fr auto;column-gap:12px;align-items:start;padding:9px 0;position:relative;transition:opacity .35s ease}.stage+.stage:before{content:"";position:absolute;left:10.5px;top:-9px;height:9px;width:1px;background:var(--border)}.stage .name{font-size:14px;font-weight:500;line-height:22px}.stage .sub{font-size:12.5px;color:var(--muted);line-height:17px;margin-top:1px}.stage .time{font-size:12px;color:var(--muted);line-height:22px;font-variant-numeric:tabular-nums}.mark{width:22px;height:22px;border-radius:50%;display:grid;place-items:center}.stage.pending{opacity:.38}.stage.pending .mark{border:1.5px solid var(--muted)}.stage.running .mark{border:2px solid rgba(34,211,238,.25);border-top-color:var(--accent);animation:card-spin .9s linear infinite}.stage.running .name{color:var(--text)}.stage.running .time{color:var(--accent)}.stage.done .mark{background:#34d39924}.stage.done .mark svg{width:13px;height:13px;stroke:var(--good);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;transform-origin:center;animation:card-pop .32s cubic-bezier(.2,.9,.3,1.2) both}.stage.done .name{color:var(--text)}.stage.failed .mark{background:#f8717129}.stage.failed .mark svg{width:13px;height:13px;stroke:var(--bad);stroke-width:2.4;fill:none;stroke-linecap:round}.stage.failed .name{color:var(--bad)}.stage .fail-message{font-size:12.5px;color:var(--bad);line-height:17px;margin-top:1px}@keyframes card-spin{to{transform:rotate(360deg)}}@keyframes card-pop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.stage.running .mark{animation:none}.stage.done .mark svg{animation:none}}.foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted)}.foot .bar{flex:1;height:3px;border-radius:2px;background:var(--border);overflow:hidden}.foot .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent-dim),var(--accent));border-radius:2px}.foot b{color:var(--text);font-weight:500;font-variant-numeric:tabular-nums}.foot .ok{color:var(--good);font-weight:600}.card.ready .foot{border-top-color:#34d39959}.dialog-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#0009}.dialog{position:relative;width:420px;max-width:90%;padding:26px 28px 22px;background:var(--panel-2);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 50px #00000073;animation:card-pop .32s cubic-bezier(.2,.9,.3,1.2) both}.dialog .mark{width:32px;height:32px;margin-bottom:14px;background:#f8717129}.dialog .mark svg{width:18px;height:18px;stroke:var(--bad);stroke-width:1.8;fill:none;stroke-linecap:round}.dialog h2{margin:0 0 8px;font-size:17px;font-weight:600;color:var(--text)}.dialog .file{margin:0 0 10px;font-size:12.5px;font-weight:500;color:var(--text)}.dialog .message{margin:0 0 20px;font-size:13px;line-height:18px;color:var(--muted);white-space:pre-wrap}.dialog .actions{display:flex;justify-content:flex-end}@media (prefers-reduced-motion: reduce){.dialog{animation:none}}
