:root{--ink:#141115;--cream:#f7f3e3;--pink:#f487b6;--blue:#3772ff;--color-background:var(--cream);--color-surface:#ffffff8c;--color-text:var(--ink);--color-text-muted:color-mix(in srgb, var(--ink) 62%, var(--cream));--color-accent:var(--blue);--color-accent-strong:color-mix(in srgb, var(--blue) 80%, black);--color-accent-2:var(--pink);--color-on-accent:#fff;--color-error:#c4285e;--color-border:#1411151f;--glass-bg:#ffffff6b;--glass-bg-strong:#ffffff9e;--glass-border:#ffffffb3;--glass-highlight:inset 0 1px 0 #ffffffd9;--glass-blur:blur(22px) saturate(180%);--button-fill:#c8c8ce80;--button-fill-hover:#c8c8ceb3;--button-border:#ffffffd9;--button-border-hover:color-mix(in srgb, var(--button-border), var(--color-text) 18%);--input-border:color-mix(in srgb, var(--color-text) 28%, transparent);--input-border-hover:color-mix(in srgb, var(--color-text) 45%, transparent);--hud-glass:#faf6e8cc;--hud-border:#fffdf5e6;--hud-blur:blur(16px) saturate(150%);--hud-hover:#14111512;--hud-separator:#1411151f;--hud-selected:color-mix(in srgb, var(--color-accent) 16%, transparent);--backdrop-contour:#3772ff29;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--corner-ratio:.2;--tray-width:320px;--control-height:44px;--font-body:14px;--font-meta:12px;--font-title:20px;--radius-pill:9999px;--shadow-floating:0 10px 30px #14111524, 0 2px 6px #14111514;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-background:var(--ink);--color-surface:#28222a99;--color-text:var(--cream);--color-text-muted:color-mix(in srgb, var(--cream) 62%, var(--ink));--color-accent:#6b95ff;--color-accent-strong:var(--color-accent);--color-on-accent:var(--ink);--color-error:#ff9dc4;--color-border:#f7f3e324;--glass-bg:#1e19207a;--glass-bg-strong:#1e1920b3;--glass-border:#f7f3e329;--glass-highlight:inset 0 1px 0 #f7f3e31f;--button-fill:#78747e80;--button-fill-hover:#78747eb3;--button-border:#ffffff38;--backdrop-contour:#f7f3e312;--hud-glass:#282124cc;--hud-border:#f7f3e329;--hud-hover:#f7f3e317;--hud-separator:#f7f3e324;--hud-selected:color-mix(in srgb, var(--color-accent) 26%, transparent);--shadow-floating:0 12px 34px #00000073, 0 2px 6px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--color-background:var(--ink);--color-surface:#28222a99;--color-text:var(--cream);--color-text-muted:color-mix(in srgb, var(--cream) 62%, var(--ink));--color-accent:#6b95ff;--color-accent-strong:var(--color-accent);--color-on-accent:var(--ink);--color-error:#ff9dc4;--color-border:#f7f3e324;--glass-bg:#1e19207a;--glass-bg-strong:#1e1920b3;--glass-border:#f7f3e329;--glass-highlight:inset 0 1px 0 #f7f3e31f;--button-fill:#78747e80;--button-fill-hover:#78747eb3;--button-border:#ffffff38;--backdrop-contour:#f7f3e312;--hud-glass:#282124cc;--hud-border:#f7f3e329;--hud-hover:#f7f3e317;--hud-separator:#f7f3e324;--hud-selected:color-mix(in srgb, var(--color-accent) 26%, transparent);--shadow-floating:0 12px 34px #00000073, 0 2px 6px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--color-background);height:100%;color:var(--color-text);font:var(--font-body) / 1.4 system-ui, -apple-system, "Segoe UI", sans-serif;margin:0}[hidden]{display:none!important}#app{z-index:1;height:100%;position:relative}.viewport{height:100%;position:relative;overflow:hidden}.viewport canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}body:not(.placing) .viewport canvas[data-over-vehicle]:not([data-space-held]):not([data-dragging]){cursor:pointer}.viewport canvas[data-dragging]{cursor:grabbing}.viewport canvas:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.camera-controls{top:var(--space-4);right:var(--space-4);gap:var(--space-1);padding:var(--space-1);background:color-mix(in srgb, var(--color-surface) 92%, transparent);border-radius:var(--radius-pill);flex-direction:column;display:flex;position:absolute}button{height:var(--control-height);min-width:var(--control-height);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button.primary{color:var(--color-text);font-weight:600}.status{place-content:center;gap:var(--space-3);text-align:center;background:var(--color-background);justify-items:center;display:grid;position:absolute;inset:0}.status[hidden]{display:none}.status.error p{color:var(--color-error)}.bottom-stack{left:50%;bottom:var(--space-4);align-items:center;gap:var(--space-2);max-width:calc(100% - 2 * var(--space-4));pointer-events:none;flex-direction:column;display:flex;position:absolute;transform:translate(-50%)}.bottom-stack>*{pointer-events:auto}.dock{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:color-mix(in srgb, var(--color-surface) 94%, transparent);box-shadow:var(--shadow-floating);flex-wrap:wrap;display:flex}.dock-section{align-items:center;gap:var(--space-3);display:flex}.dock-divider{background:var(--color-border);align-self:stretch;width:1px}.icon-button{width:var(--control-height);border-radius:50%;place-items:center;padding:0;display:grid}.icon-button .icon{width:20px;height:20px}.icon{flex:none;width:18px;height:18px;display:block}.dock-icon{color:var(--color-text-muted);place-items:center;display:grid}.dock-traffic{gap:var(--space-2)}.parts-toggle .icon-wrench{width:22px;height:22px}.parts-toggle{align-items:center;gap:var(--space-2);display:inline-flex}.camera-controls button[data-action^=zoom] .icon,.theme-toggle .icon,.camera-controls .sound-toggle .icon{margin:0 auto}.dock-label{font-size:var(--font-meta);color:var(--color-text-muted)}.dock-label strong{color:var(--color-text);font-weight:600}.intensity{gap:var(--space-1);min-width:170px;display:grid}.intensity input{width:100%;accent-color:var(--color-accent)}.intensity input:disabled,.dock button:disabled{opacity:.55;cursor:not-allowed}.lock-hint{color:var(--color-text-muted)}.intensity:has(input:disabled) .dock-label strong{color:var(--color-text-muted)}.scene-pill{align-items:center;gap:var(--space-1);padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:color-mix(in srgb, var(--color-surface) 94%, transparent);box-shadow:var(--shadow-floating);display:flex}.scene-name{width:11.5em;padding:0 var(--space-2);text-align:center;text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.pill-arrow{height:var(--control-height);min-width:var(--control-height);border-radius:var(--radius-pill);padding:0;font-size:18px;line-height:1}.first-visit-tip{max-width:420px;padding:var(--space-2) var(--space-5) var(--space-2) var(--space-3);border:1px solid var(--color-accent);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:var(--color-surface);box-shadow:var(--shadow-floating);position:relative}.first-visit-tip p{margin:0}.first-visit-tip .tip-camera{margin-top:var(--space-1);font-size:var(--font-meta);color:var(--color-text-muted)}.tip-close{top:var(--space-1);right:var(--space-1);height:var(--control-height);min-width:var(--control-height);background:0 0;border:0;padding:0;position:absolute}.vehicle-tooltip{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:var(--color-surface);color:var(--color-text);font-size:var(--font-meta);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-floating);position:absolute;top:0;left:0}.results-card{width:min(600px,100%);padding:var(--space-3);border:1px solid var(--color-border);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:color-mix(in srgb, var(--color-surface) 96%, transparent);box-shadow:var(--shadow-floating)}.results-card header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.results-card h2{font-size:var(--font-body);margin:0}.results-close{height:var(--control-height);min-width:var(--control-height);padding:0}.results-scroll{max-height:38vh;overflow-y:auto}.results-card table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.results-card th,.results-card td{padding:var(--space-1) var(--space-2);text-align:right;vertical-align:top}.results-card tbody th{text-align:left;color:var(--color-text-muted);font-weight:400}.results-card thead th{font-weight:400}.results-card .run-name{font-weight:700;display:block}.results-card .run-label,.results-card .sample{font-size:var(--font-meta);color:var(--color-text-muted)}.results-card .run-label,.results-card td{white-space:nowrap}.results-card tr.group th{padding-top:var(--space-2);color:var(--color-text);font-weight:700}.results-headlines{gap:var(--space-2);margin:0 0 var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.results-headlines .headline{min-width:0}.results-headlines dt{font-size:var(--font-meta);color:var(--color-text-muted)}.results-headlines dd{align-items:baseline;gap:0 var(--space-1);font-variant-numeric:tabular-nums;flex-wrap:wrap;margin:0;display:flex}.results-headlines .headline-value{font-size:var(--font-title);font-weight:600;line-height:1.2}.results-headlines .headline-detail{font-size:var(--font-meta);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;flex-basis:100%;overflow:hidden}.results-caption{margin:calc(-1 * var(--space-1)) 0 var(--space-2);font-size:var(--font-meta);color:var(--color-text-muted)}.results-headlines .change{border-radius:var(--radius-pill);font-size:var(--font-meta);white-space:nowrap;border:1px solid #0000;padding:0 6px;font-weight:600}.results-headlines .change.better{color:var(--color-on-accent);background:var(--color-accent-strong)}.results-headlines .change.worse{color:var(--color-error);border-color:currentColor}.results-headlines .change.same{color:var(--color-text-muted);padding:0;font-weight:400}@media (width<=560px){.results-headlines{grid-template-columns:repeat(2,minmax(0,1fr))}}.results-details-toggle{font-size:var(--font-meta)}.results-scroll:not([hidden]){margin-top:var(--space-2)}.results-reopen{border-radius:var(--radius-pill)}body:before{content:"";z-index:0;pointer-events:none;background-color:var(--backdrop-contour);position:fixed;inset:0;-webkit-mask:url(/images/topographic.svg) 50%/cover no-repeat;mask:url(/images/topographic.svg) 50%/cover no-repeat}html,body{background:var(--color-background);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,sans-serif}.camera-controls,.first-visit-tip,.vehicle-tooltip,.results-card,.results-reopen,.status:not([hidden])>*{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.camera-controls{border-radius:var(--radius-pill);padding:var(--space-1)}.camera-controls button{width:var(--control-height);height:var(--control-height);min-width:var(--control-height);border-radius:50%;padding:0}.vehicle-tooltip,.results-card{background:var(--glass-bg-strong)}.status{background:0 0}button{--fill:var(--button-fill);border:1px solid var(--button-border);background:var(--fill);box-shadow:none;transition:transform .1s,background-color .15s}button:hover:not(:disabled):not(.primary):not([aria-pressed=true]){--fill:var(--button-fill-hover)}button:hover:not(:disabled){border-color:var(--button-border-hover)}button:active:not(:disabled){transform:scale(.97)}button.primary{--fill:color-mix(in srgb, var(--color-accent) 50%, transparent);border-color:var(--button-border);color:var(--color-text)}button.primary:hover:not(:disabled){--fill:color-mix(in srgb, var(--color-accent) 65%, transparent)}button.results-reopen{--fill:var(--glass-bg-strong)}.intensity input{accent-color:var(--color-accent)}.first-visit-tip{border-color:color-mix(in srgb, var(--color-accent-2) 55%, var(--glass-border))}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.camera-controls,.first-visit-tip,.vehicle-tooltip,.results-card,.results-reopen{background:var(--glass-bg-strong)}}@media (prefers-reduced-transparency:reduce){.camera-controls,.first-visit-tip,.vehicle-tooltip,.results-card,.results-reopen{background:var(--color-background);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (width>=900px){.dock{flex-wrap:nowrap}.intensity{max-width:210px}}.pill-action{height:var(--control-height);padding:0 var(--space-3);border-radius:var(--radius-pill);font-size:var(--font-meta)}.leave-dialog{width:min(380px, calc(100% - 2 * var(--space-4)));padding:var(--space-5) var(--space-4) var(--space-4);border:1px solid var(--glass-border);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:var(--glass-bg-strong);color:var(--color-text);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);position:fixed}.leave-dialog::backdrop{background:#00000040}.leave-dialog p{margin:0 0 var(--space-4)}.leave-dialog .dialog-actions{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;display:flex}.leave-dialog .dialog-close{top:var(--space-2);right:var(--space-2);height:var(--control-height);min-width:var(--control-height);padding:0;position:absolute}.parts-toggle{align-self:center}.parts-drawer{right:var(--space-4);bottom:var(--tray-bottom,var(--space-4));width:var(--tray-width);max-height:calc(100% - var(--tray-top,var(--space-4)) - var(--tray-bottom,var(--space-4)));padding:var(--space-3);border:1px solid var(--glass-border);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:var(--glass-bg-strong);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);position:absolute;overflow-y:auto}.parts-drawer header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.parts-drawer h2{font-size:var(--font-body);margin:0 auto 0 0}.parts-hint{font-size:var(--font-meta);color:var(--color-text-muted);flex-basis:100%;order:1}.parts-groups{gap:var(--space-3);display:grid}.parts-group{gap:var(--space-1);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.parts-group h3{font-size:var(--font-meta);color:var(--color-text-muted);grid-column:1/-1;margin:0;font-weight:600}.parts-group .part{align-content:center;place-items:center;gap:var(--space-1);aspect-ratio:1;width:100%;min-width:0;height:auto;padding:var(--space-1);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));font-size:var(--font-meta);text-align:center;cursor:grab;touch-action:none;line-height:1.2;display:grid;overflow:hidden}.part-label{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;max-width:100%;display:-webkit-box;overflow:hidden}.part-picture{background:50%/contain no-repeat;width:48px;height:48px}.parts-drawer:not(.pictured) .part-picture{height:0}.parts-drawer.locked .part{cursor:not-allowed}body.placing,body.placing canvas{cursor:grabbing}.inspector{top:var(--space-4);left:var(--space-4);width:240px;padding:var(--space-3);border:1px solid var(--glass-border);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:var(--glass-bg-strong);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);position:absolute}.inspector header{justify-content:space-between;align-items:center;display:flex}.inspector h2{font-size:var(--font-body);margin:0}.inspector header button{height:var(--control-height);min-width:var(--control-height);padding:0}.vehicle-card{width:280px;max-height:calc(100% - 2 * var(--space-4) - 120px);overflow-y:auto}.vehicle-card .vehicle-id,.vehicle-card .vehicle-gone-note{font-weight:400;font-size:var(--font-meta);color:var(--color-text-muted)}.vehicle-card h3{margin:var(--space-2) 0 var(--space-1);font-size:var(--font-meta);color:var(--color-text-muted);font-weight:600}.vehicle-card dl{gap:2px var(--space-2);font-size:var(--font-meta);font-variant-numeric:tabular-nums;grid-template-columns:auto 1fr;margin:0;display:grid}.vehicle-card dt{color:var(--color-text-muted)}.vehicle-card dd{text-align:right;margin:0}.vehicle-card .vehicle-highlights{gap:var(--space-1) var(--space-2);margin:var(--space-2) 0;font-size:var(--font-body)}.vehicle-card .vehicle-highlights dd{font-weight:600}.vehicle-details-toggle{width:100%;font-size:var(--font-meta)}.inspector-hint,.inspector-error{margin:var(--space-1) 0 var(--space-2);font-size:var(--font-meta);color:var(--color-text-muted)}.inspector-error{color:var(--color-error)}.inspector-actions{gap:var(--space-2);margin:var(--space-2) 0;display:flex}.inspector label{justify-content:space-between;align-items:center;gap:var(--space-2);margin:var(--space-1) 0;font-size:var(--font-meta);display:flex}.inspector input[type=number]{width:64px}input[type=number],input[type=text]{--short-side:var(--control-height);min-height:var(--control-height);padding:0 var(--space-2);border:1px solid var(--input-border);border-radius:calc(var(--short-side) * var(--corner-ratio));background:var(--color-surface);color:var(--color-text);font:inherit}input[type=number]:hover:not(:disabled),input[type=text]:hover:not(:disabled){border-color:var(--input-border-hover)}.placement-reason{pointer-events:none;padding:var(--space-1) var(--space-2);border-radius:calc(var(--short-side,var(--control-height)) * var(--corner-ratio));background:var(--glass-bg-strong);font-size:var(--font-meta);border:2px solid;font-weight:600;position:absolute}.placement-reason.valid{color:var(--color-accent)}.placement-tip{color:var(--color-text-muted);margin-top:2px;font-weight:400;display:block}.placement-reason.invalid{color:var(--color-error);border-style:dashed}.inspector .timing label{grid-template-columns:1fr 64px auto;align-items:center;display:grid}.inspector .timing input{width:100%}.inspector>button.primary{width:100%;margin-top:var(--space-1)}#app.laptop-only{z-index:1;place-content:center;gap:var(--space-2);min-height:100dvh;padding:var(--space-5) var(--space-4);text-align:center;color:var(--color-text);display:grid;position:relative}#app.laptop-only h1{max-width:32ch;margin:0 auto;font-size:1.25rem;font-weight:600;line-height:1.35}.vehicle-tooltip-hint{font-size:var(--font-meta);color:var(--color-text-muted);display:block}.vehicle-card .vehicle-picture{height:104px;margin:var(--space-1) 0 0;background:50%/contain no-repeat}.top-stack{top:var(--space-4);z-index:2;align-items:center;gap:var(--space-2);pointer-events:none;flex-direction:column;width:min(600px,max(360px,100% - 624px));display:flex;position:absolute;left:50%;transform:translate(-50%)}.top-stack>*{pointer-events:auto}.results-card{transform-origin:top;transition:transform .18s ease-out,opacity .18s ease-out;container-type:inline-size}.results-card.results-opening,.results-card.results-closing{opacity:0;transform:scale(.8)}.results-card.results-closing{transition-timing-function:ease-in}@media (prefers-reduced-motion:reduce){.results-card{transition:none}}@container (width<=520px){.results-headlines{grid-template-columns:repeat(2,minmax(0,1fr))}}.piece-rotate{z-index:3;width:var(--control-height);height:var(--control-height);min-width:var(--control-height);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:50%;padding:0;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.piece-rotate .icon{width:18px;height:18px;margin:0 auto}.inspector select{min-height:var(--control-height);max-width:60%;padding:0 var(--space-3);border:1px solid var(--button-border);border-radius:var(--radius-pill);background:var(--button-fill);color:var(--color-text);font:inherit;cursor:pointer}.inspector select:hover:not(:disabled){background:var(--button-fill-hover)}@supports (appearance:base-select){.inspector select{appearance:base-select}.inspector select::picker(select){appearance:base-select}.inspector select{align-items:center;gap:var(--space-1);display:inline-flex}.inspector select::picker-icon{color:var(--color-text-muted);transition:rotate .15s}.inspector select:open::picker-icon{rotate:180deg}.inspector select::picker(select){margin-top:var(--space-1);--short-side:96px;--outer-radius:calc(var(--short-side) * var(--corner-ratio));--inset:var(--space-1);padding:var(--inset);border:1px solid var(--glass-border);border-radius:var(--outer-radius);background:var(--glass-bg-strong);color:var(--color-text);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.inspector select option{padding:var(--space-1) var(--space-2);border-radius:max(0px, calc(var(--outer-radius) - var(--inset)));font-size:var(--font-meta)}.inspector select option:hover,.inspector select option:focus-visible{background:var(--button-fill-hover)}.inspector select option:checked{background:color-mix(in srgb, var(--color-accent) 50%, transparent)}.inspector select option::checkmark{display:none}}@supports (corner-shape:squircle){.first-visit-tip,.vehicle-tooltip,.results-card,.leave-dialog,.parts-drawer,.parts-group .part,.inspector,.placement-reason,input[type=number],input[type=text],.inspector select option{corner-shape:squircle}.inspector select::picker(select){corner-shape:squircle}}.dock,.scene-pill,.duration-menu{background:var(--hud-glass);border:1px solid var(--hud-border);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--hud-blur);backdrop-filter:var(--hud-blur)}.dock{gap:var(--space-1);padding:var(--space-1) var(--space-2) var(--space-1) var(--space-1)}.dock-section{gap:var(--space-1)}.dock-divider{height:24px;margin:0 var(--space-1);background:var(--hud-separator);align-self:center}.dock button{--fill:transparent;height:var(--control-height);color:var(--color-text);border-color:#0000}.dock button:hover:not(:disabled){--fill:var(--hud-hover);border-color:#0000}.play-ring{flex:none;width:48px;height:48px;position:relative}.dock .play-button{--fill:transparent;width:100%;height:100%;color:var(--color-accent-strong);border-radius:50%;place-items:center;padding:0;display:grid}.play-button:before{content:"";background:var(--hud-selected);border-radius:50%;transition:background-color .15s;position:absolute;inset:6px}.dock .play-button:hover:not(:disabled){--fill:transparent}.play-button:hover:before{background:color-mix(in srgb, var(--color-accent) 28%, transparent)}.play-icon{position:relative}.play-icon .icon{width:18px;height:18px}.ring{pointer-events:none;position:absolute;inset:0;rotate:-90deg}.ring circle{fill:none;stroke-width:2.5px}.ring-track{stroke:var(--hud-separator)}.ring-fill{stroke:var(--color-accent);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px}.dock[data-state=ready] .ring-fill{stroke-linecap:butt}.countdown{min-width:6.6em;padding:0 var(--space-1);font-size:var(--font-body);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:center;font-weight:600}.dock .icon-button.quiet{color:var(--color-text-muted)}.dock .icon-button.quiet:hover:not(:disabled){color:var(--color-text)}.duration-trigger{align-items:center;gap:var(--space-1);padding:0 var(--space-3);border-radius:var(--radius-pill);font:inherit;white-space:nowrap;display:inline-flex}.dock .duration-trigger{--fill:var(--hud-hover)}.dock .duration-trigger:hover:not(:disabled){--fill:color-mix(in srgb, var(--color-text) 11%, transparent)}.dock .parts-toggle[aria-expanded=true],.dock .duration-trigger[aria-expanded=true],.dock .duration-trigger[aria-expanded=true]:hover:not(:disabled){--fill:var(--hud-selected);color:var(--color-accent-strong)}.duration-key{color:var(--color-text-muted)}.duration-value{font-variant-numeric:tabular-nums;font-weight:600}.duration-trigger .icon-caret{width:14px;height:14px;color:var(--color-text-muted);transition:rotate .15s}.duration-trigger[aria-expanded=true] .icon-caret{rotate:180deg}.duration-menu{--outer-radius:calc(var(--short-side,150px) * var(--corner-ratio));--inset:var(--space-1);padding:var(--inset);border-radius:var(--outer-radius);color:var(--color-text);margin:0;list-style:none;position:fixed;inset:auto}.duration-menu:popover-open{gap:var(--space-1);display:grid}.duration-menu [role=option]{align-items:center;gap:var(--space-2);min-height:var(--control-height);padding:0 var(--space-3) 0 var(--space-2);border-radius:max(0px, calc(var(--outer-radius) - var(--inset)));font-variant-numeric:tabular-nums;cursor:pointer;display:flex}.duration-menu [role=option] .icon-check{visibility:hidden;width:14px;height:14px}.duration-menu [role=option]:hover,.duration-menu [role=option]:focus-visible{background:var(--hud-hover)}.duration-menu [role=option]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.duration-menu [role=option][aria-selected=true]{background:var(--hud-selected);color:var(--color-accent-strong);font-weight:600}.duration-menu [role=option][aria-selected=true] .icon-check{visibility:visible}.dock-traffic{padding:0 var(--space-1)}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.dock,.scene-pill,.duration-menu{background:color-mix(in srgb, var(--hud-glass), var(--color-background) 60%)}}@media (prefers-reduced-transparency:reduce){.dock,.scene-pill,.duration-menu{background:var(--color-background);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.duration-trigger .icon-caret,.play-button:before{transition:none}}@supports (corner-shape:squircle){.duration-menu,.duration-menu [role=option]{corner-shape:squircle}}.tool-toggle{align-items:center;gap:var(--space-2);padding:0 var(--space-3);border-radius:var(--radius-pill);font:inherit;white-space:nowrap;display:inline-flex}.camera-controls .sound-toggle[aria-checked=true]{--fill:var(--hud-selected);color:var(--color-accent-strong)}.sound-toggle:not([aria-checked=true]) .icon{color:var(--color-text-muted)}.tool-toggle{font-size:var(--font-meta);margin-left:auto}.tool-toggle[aria-pressed=true]{--fill:color-mix(in srgb, var(--color-error) 18%, transparent);border-color:color-mix(in srgb, var(--color-error) 60%, transparent);color:var(--color-error)}body.removing .viewport canvas{cursor:not-allowed}.parts-group .part[aria-pressed=true]{--fill:var(--hud-selected);border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}body.placing.stamping,body.placing.stamping canvas{cursor:copy}.parts-replace{margin-bottom:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--hud-separator)}.parts-replace header{margin-bottom:var(--space-1);justify-content:space-between;align-items:center;display:flex}.parts-replace h3{font-size:var(--font-body);margin:0}.parts-replace .parts-hint{margin:0 0 var(--space-2)}.replace-close{width:var(--control-height);height:var(--control-height);border-radius:50%;padding:0}.part-note{color:var(--color-text-muted);font-size:11px}.parts-drawer.replacing .parts-groups{opacity:.55}.replace-confirm{margin:var(--space-2) 0 0;padding:var(--space-2);border-radius:calc(var(--control-height) * var(--corner-ratio));background:var(--hud-hover)}.replace-confirm p{margin:0 0 var(--space-2)}.replace-confirm .ok{color:var(--color-accent-strong)}.replace-confirm .bad{color:var(--color-error)}.inspector-actions{flex-wrap:wrap}.inspector-actions button{align-items:center;gap:var(--space-1);white-space:nowrap;display:inline-flex}.inspector-actions button.danger{color:var(--color-error)}.inspector-actions button .icon{width:16px;height:16px}.editor-overlay{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.handle-track{fill:none;stroke:var(--color-accent);stroke-opacity:.45;stroke-width:1.5px;stroke-dasharray:4 5}.handle-grip{fill:none;stroke:var(--color-accent);stroke-width:7px;stroke-linecap:round;filter:drop-shadow(0 1px 2px #14111559)}#handle-arrow path{fill:var(--color-accent)}.handle-hit{fill:none;stroke:#0000;stroke-width:26px;pointer-events:stroke;cursor:grab}.editor-overlay.turning .handle-hit,.editor-overlay.turning~.piece-rotate{cursor:grabbing}.editor-overlay.turning .handle-track{stroke-opacity:.8}.connection circle{stroke-width:2.5px}.connection.kept circle{fill:var(--color-accent);stroke:#fff}.connection.broken circle{fill:#ffffffd9;stroke:var(--color-error);stroke-dasharray:3 2}.connection.broken path{stroke:var(--color-error);stroke-width:2.5px;stroke-linecap:round}.connection.made circle{fill:#ffffffd9;stroke:var(--color-accent)}.piece-rotate{background:var(--hud-glass);border-color:var(--hud-border);color:var(--color-accent-strong);box-shadow:var(--shadow-floating);cursor:grab;touch-action:none;transform:translate(-50%,-50%)}.edit-toast{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-4);border:1px solid var(--hud-border);border-radius:var(--radius-pill);background:var(--hud-glass);box-shadow:var(--glass-highlight), var(--shadow-floating);-webkit-backdrop-filter:var(--hud-blur);backdrop-filter:var(--hud-blur);font-weight:600;display:flex}.edit-toast .toast-dot{color:var(--color-text-muted)}.edit-toast button{--fill:var(--hud-selected);padding:0 var(--space-3);border-radius:var(--radius-pill);color:var(--color-accent-strong);font:inherit;border-color:#0000}
