:root{color-scheme:dark;--bg: #08080a;--panel: #0d0d0f;--panel-2: #141416;--elevated: #1a1a1d;--line: #232327;--line-strong: #313137;--text: #e7e7ea;--muted: #9a9aa1;--faint: #66666d;--signal: #57b6c4;--signal-dim: #2a4d53;--warn: #cda04a;--bad: #d4675d;--mono: ui-monospace, "JetBrains Mono", "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--mono);font-size:13px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--signal-dim)}:focus-visible{outline:1px solid var(--signal);outline-offset:1px}.label{font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.app{display:grid;grid-template-columns:312px 1fr;height:100vh;overflow:hidden}.sidebar{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);background:var(--panel)}.brand{display:flex;align-items:center;gap:.6rem;padding:.85rem .9rem;border-bottom:1px solid var(--line)}.brand-mark{display:grid;place-items:center;width:26px;height:26px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--signal);font-weight:700;font-size:12px}.brand h1{margin:0;font-size:.8rem;font-weight:600;letter-spacing:.02em}.brand p{margin:1px 0 0;font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.sidebar-tools{padding:.7rem .7rem .6rem;display:flex;flex-direction:column;gap:.5rem;border-bottom:1px solid var(--line)}.new-run{width:100%;padding:.55rem;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--text);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.new-run:hover{border-color:var(--signal);color:var(--signal)}.search{width:100%;padding:.45rem .55rem;border:1px solid var(--line);background:var(--bg);color:var(--text);font-size:.74rem}.search::placeholder{color:var(--faint)}.search:focus{outline:none;border-color:var(--signal)}.filters{display:flex;flex-wrap:wrap;gap:4px}.filter-chip{padding:.24rem .5rem;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:.64rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.filter-chip:hover{color:var(--text)}.filter-chip[aria-pressed=true]{border-color:var(--signal);color:var(--signal)}.case-list{flex:1;min-height:0;overflow-y:auto;padding:4px;margin:0;list-style:none}.case-row{display:grid;grid-template-columns:7px 1fr auto;gap:.5rem;align-items:center;width:100%;padding:.5rem .5rem .5rem .45rem;border:0;border-left:2px solid transparent;background:transparent;text-align:left;color:var(--text)}.case-row:hover{background:var(--panel-2)}.case-row[aria-current=true]{background:var(--panel-2);border-left-color:var(--signal)}.case-dot{width:7px;height:7px;background:var(--faint)}.case-dot.unchanged{background:#45454b}.case-dot.changed{background:var(--warn)}.case-dot.size-mismatch{background:var(--bad)}.case-dot.new{background:transparent;box-shadow:inset 0 0 0 1px var(--signal)}.case-dot.none{background:var(--faint)}.case-row-main{min-width:0}.case-row-name{display:flex;align-items:center;gap:.4rem;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.case-row-sub{font-size:.66rem;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag{font-size:.56rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:1px 4px;border:1px solid var(--line-strong);color:var(--faint)}.tag.run{color:var(--signal);border-color:var(--signal-dim)}.case-row-pct{font-size:.66rem;color:var(--warn);font-variant-numeric:tabular-nums}.sidebar-foot{padding:.5rem .7rem;border-top:1px solid var(--line);font-size:.62rem;letter-spacing:.04em;color:var(--faint)}.list-empty{padding:1.4rem 1rem;color:var(--faint);font-size:.74rem;text-align:center}.link-btn{background:none;border:0;padding:0;font:inherit;color:var(--signal);text-decoration:underline;cursor:pointer}.link-btn:hover{color:var(--text)}.workspace{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}.workspace-empty{margin:auto;max-width:28rem;padding:2rem;text-align:center;color:var(--muted)}.workspace-empty h2{color:var(--text);font-weight:600;letter-spacing:.04em}.workspace-empty p{font-family:var(--sans)}.case-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .8rem;padding:.7rem 1rem;border-bottom:1px solid var(--line);background:var(--panel)}.case-bar h2{margin:0;font-size:.95rem;font-weight:600;letter-spacing:.01em}.spec-summary{display:flex;flex-wrap:wrap;gap:4px;margin-left:auto;align-items:center}.spec-pill{font-size:.66rem;color:var(--muted);padding:.18rem .42rem;border:1px solid var(--line);background:var(--panel-2)}.spec-pill b{color:var(--text);font-weight:600}.status-badge{font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.2rem .42rem;border:1px solid var(--line);color:var(--muted)}.status-badge.unchanged{color:var(--muted)}.status-badge.changed{color:var(--warn);border-color:var(--warn)}.status-badge.size-mismatch{color:var(--bad);border-color:var(--bad)}.status-badge.new{color:var(--signal);border-color:var(--signal-dim)}.status-badge.none{color:var(--faint)}.icon-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.32rem .55rem;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font-size:.68rem;font-weight:600;letter-spacing:.04em;text-decoration:none}.icon-btn:hover{color:var(--text);border-color:var(--line-strong)}.icon-btn.danger:hover{color:var(--bad);border-color:var(--bad)}.viewer{display:flex;flex-direction:column;flex:1;min-height:0}.viewer-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .7rem;padding:.5rem 1rem;border-bottom:1px solid var(--line);background:var(--panel)}.seg{display:inline-flex;border:1px solid var(--line)}.seg button{padding:.32rem .65rem;border:0;background:transparent;color:var(--muted);font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--panel-2);color:var(--text);box-shadow:inset 0 -2px 0 var(--signal)}.toolbar-group{display:inline-flex;align-items:center;gap:.35rem}.toolbar-group label{font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.toolbar-group select{padding:.26rem .4rem;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-size:.7rem}.toolbar-group select:focus{outline:none;border-color:var(--signal)}.zoom-readout{min-width:3.2rem;text-align:center;font-size:.7rem;color:var(--muted);font-variant-numeric:tabular-nums}.check{display:inline-flex;align-items:center;gap:.35rem;font-size:.66rem;letter-spacing:.04em;color:var(--muted);user-select:none;text-transform:uppercase}.check input{accent-color:var(--signal)}.spacer{margin-left:auto}.stage-strip{display:flex;gap:6px;overflow-x:auto;padding:.6rem 1rem;border-bottom:1px solid var(--line);background:var(--panel)}.thumb{position:relative;flex:0 0 auto;width:86px;border:1px solid var(--line);background:var(--panel-2);padding:0;overflow:hidden;color:var(--muted)}.thumb:hover{border-color:var(--line-strong)}.thumb[aria-pressed=true]{border-color:var(--signal);box-shadow:inset 0 0 0 1px var(--signal)}.thumb-frame{aspect-ratio:1;display:grid;place-items:center;background:repeating-conic-gradient(#1b1b1e 0 25%,#131315 0 50%) 0 / 14px 14px}.thumb-frame img{max-width:100%;max-height:100%}.thumb-frame.nodata{font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.thumb-label{padding:.22rem .34rem;font-size:.58rem;letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:1px solid var(--line);color:var(--muted)}.thumb-index{position:absolute;top:3px;left:3px;background:#0009;border:1px solid var(--line);padding:0 .28rem;font-size:.56rem;font-variant-numeric:tabular-nums;color:var(--muted)}.stage-view{position:relative;flex:1;min-height:0;overflow:hidden;background-color:#060608;background-image:linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px);background-size:24px 24px;touch-action:none}.plane{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.plane img{display:block;background:repeating-conic-gradient(#1b1b1e 0 25%,#131315 0 50%) 0 / 22px 22px}.pixelated img{image-rendering:pixelated}.stage-view.grabbable{cursor:grab}.stage-view.grabbing{cursor:grabbing}.view-nodata{position:absolute;inset:0;display:grid;place-items:center;color:var(--faint);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase}.diff-stage{position:absolute;inset:0}.diff-layer{position:absolute;inset:0;display:grid;place-items:center}.diff-layer img{max-width:100%;max-height:100%;object-fit:contain}.diff-stage.pixelated img{image-rendering:pixelated}.diff-divider{position:absolute;top:0;bottom:0;width:1px;background:var(--signal);transform:translate(-.5px);cursor:ew-resize}.diff-divider:before{content:"";position:absolute;left:50%;top:50%;width:12px;height:12px;transform:translate(-50%,-50%) rotate(45deg);background:var(--signal)}.diff-side-label{position:absolute;top:8px;padding:.12rem .4rem;font-size:.6rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);background:#000000a6;color:var(--muted);pointer-events:none}.diff-side-label.left{left:8px}.diff-side-label.right{right:8px}.data-inspector{border-top:1px solid var(--line);background:var(--panel);max-height:38%;display:flex;flex-direction:column}.data-head{display:flex;align-items:baseline;gap:.6rem;padding:.45rem 1rem;border-bottom:1px solid var(--line)}.data-head h3{margin:0;font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.data-head .muted{color:var(--faint);font-size:.66rem}.data-head .desc{font-family:var(--sans);color:var(--faint);font-size:.72rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-body{margin:0;padding:.7rem 1rem;overflow:auto;font-family:var(--mono);font-size:.72rem;line-height:1.55;color:#b9c0c4}.data-empty{color:var(--faint);padding:.8rem 1rem;font-size:.74rem;font-family:var(--sans)}.drawer-backdrop{position:fixed;inset:0;background:#0009;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,94vw);z-index:41;display:flex;flex-direction:column;border-left:1px solid var(--line-strong);background:var(--panel)}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:.82rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.drawer-head p{margin:2px 0 0;font-size:.66rem;color:var(--faint);font-family:var(--sans);letter-spacing:0}.drawer-body{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.85rem}.field{display:flex;flex-direction:column;gap:.3rem}.field>label{font-size:.64rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.field .hint{font-size:.64rem;color:var(--faint);font-family:var(--sans)}.field input[type=text],.field textarea,.field select{width:100%;padding:.45rem .55rem;border:1px solid var(--line);background:var(--bg);color:var(--text);font-size:.74rem}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--signal)}.field textarea{resize:vertical;min-height:4.5rem}.row{display:flex;gap:.55rem}.row>*{flex:1}.mode-toggle{display:flex;gap:0;border:1px solid var(--line)}.mode-toggle button{flex:1;padding:.42rem;border:0;background:transparent;color:var(--muted);font-weight:600;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase}.mode-toggle button+button{border-left:1px solid var(--line)}.mode-toggle button[aria-pressed=true]{background:var(--panel-2);color:var(--text);box-shadow:inset 0 -2px 0 var(--signal)}.mode-toggle button:disabled{opacity:.35;cursor:not-allowed}.color-field{display:flex;gap:.5rem;align-items:center}.color-field input[type=color]{width:40px;height:36px;padding:0;border:1px solid var(--line);background:var(--bg)}.color-field input[type=text]{flex:1}.anim-rows{display:flex;flex-direction:column;gap:.45rem}.anim-row{display:flex;gap:.45rem;align-items:center}.anim-row input[name=anim-name]{flex:2}.anim-row input[name=anim-frames]{flex:1}.anim-row .remove{padding:.38rem .5rem;border:1px solid var(--line);background:var(--panel-2);color:var(--muted)}.anim-row .remove:hover{color:var(--bad);border-color:var(--bad)}.add-row{align-self:flex-start;padding:.32rem .6rem;border:1px dashed var(--line-strong);background:transparent;color:var(--muted);font-size:.66rem;letter-spacing:.04em;text-transform:uppercase}.add-row:hover{color:var(--signal);border-color:var(--signal)}.dropzone{display:flex;flex-direction:column;gap:.4rem;align-items:center;justify-content:center;padding:.9rem;border:1px dashed var(--line-strong);background:var(--bg);text-align:center;color:var(--faint);font-size:.7rem}.dropzone:hover{border-color:var(--line-strong);color:var(--muted)}.dropzone.has-file{border-style:solid;border-color:var(--signal);color:var(--text)}.dropzone .preview{max-height:88px;border:1px solid var(--line)}.drawer-foot{display:flex;gap:.55rem;padding:.8rem 1rem;border-top:1px solid var(--line)}.btn-primary{flex:1;padding:.55rem;border:1px solid var(--text);background:var(--text);color:var(--bg);font-weight:700;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.btn-primary:hover{background:#fff;border-color:#fff}.btn-primary:disabled{opacity:.5;cursor:progress}.btn-ghost{padding:.55rem .9rem;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.btn-ghost:hover{color:var(--text);border-color:var(--line-strong)}.form-error{padding:.55rem .65rem;border:1px solid var(--bad);background:#d4675d14;color:#e9a59f;font-size:.72rem;font-family:var(--sans);white-space:pre-wrap}.hidden{display:none!important}@media(max-width:860px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.sidebar{max-height:42vh}}
