@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:optional;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:optional;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f7f3ec;--paper-sunk:#efe9df;--ink:#2a2724;--ink-soft:#6b655d;--rule:#d8cfc0;--track-fill:#d9be93;--track-groove:#9c7f50;--floor:#ece6da;--track-edge:#8a7349;--pass:#3f7244;--tight:#875e08;--fail:#a3362a;--unknown:#6b675f;--empty:var(--ink-soft);--font-ui:"IBM Plex Sans", "Inter", system-ui, sans-serif;--font-data:"IBM Plex Mono", "SF Mono", ui-monospace, monospace;--s1:4px;--s2:8px;--s3:12px;--s4:20px;--s5:32px;--settle-ms:.26s;--settle-ease:cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}::selection{color:var(--ink);background:#e4d6ba}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);caret-color:var(--ink);-webkit-font-smoothing:antialiased}.num{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.shell{grid-template-rows:minmax(320px,1fr) auto auto;height:100%;min-height:0;display:grid}.stage{background:var(--floor);min-height:0;display:flex;overflow:hidden}.canvas{width:100%;height:100%;display:block}.canvas-empty{text-align:center;color:var(--ink-soft);max-width:34ch;margin:auto}.canvas-empty p{margin:0 0 var(--s2);font-size:17px}.canvas-empty-lead{color:var(--ink)}.canvas-empty-action{align-items:center;gap:var(--s2);margin:0 0 var(--s3);flex-direction:column;display:flex}.canvas-empty-action button{min-height:40px;padding:0 var(--s4);background:var(--ink);border:1px solid var(--ink);color:var(--paper);font:inherit;cursor:pointer;border-radius:3px;font-size:15px}.canvas-empty-action button:hover{background:var(--ink-soft);border-color:var(--ink-soft)}.canvas-empty-note{font-family:var(--font-data);color:var(--ink-soft);font-size:13px}.canvas-empty-hint{font-size:16px}.verdict{column-gap:var(--s4);row-gap:var(--s1);padding:var(--s3) var(--s4);border-top:1px solid var(--rule);background:var(--paper-sunk);border-bottom:1px solid var(--rule);grid-template-columns:auto minmax(0,1fr);align-items:baseline;font-size:16px;line-height:1.45;display:grid}.verdict:has(+.verdict-notes){border-bottom:none}.verdict-notes{border-bottom:1px solid var(--rule)}.verdict-mark{grid-area:1/1}.verdict-text{grid-area:1/2}.verdict-empty .verdict-text{grid-column:1/-1}.verdict-mark{font-family:var(--font-data);flex:none;width:2.2ch;font-weight:600}.verdict-detail{color:var(--ink-soft)}.verdict-trust{margin:var(--s1) 0 0;color:var(--ink-soft);max-width:76ch;padding:0;font-size:14px;line-height:1.5;list-style:none}.verdict-trust li{position:relative}.verdict-trust li:before{content:"·";left:calc(var(--s3) * -1);font-weight:600;position:absolute}.verdict-trust li.is-serious:before{content:"!";color:var(--fail)}.verdict-more{margin:var(--s2) 0 0;color:var(--ink-soft);padding:0;font-size:14px;line-height:1.5}.verdict-notes{padding:0 var(--s4) var(--s3) calc(var(--s4) + 2.2ch + var(--s4));background:var(--paper-sunk)}.verdict-action{margin:var(--s2) 0 0;padding:0 0 0 var(--s4);max-width:60ch;color:var(--ink);text-align:left;font-size:15px;font-weight:500;line-height:1.45;position:relative}.verdict-action:before{content:"→";color:var(--ink-soft);font-weight:600;position:absolute;left:0}.verdict-pass .verdict-mark{color:var(--pass)}.verdict-tight .verdict-mark{color:var(--tight)}.verdict-fail .verdict-mark{color:var(--fail)}.verdict-unknown .verdict-mark{color:var(--unknown)}.verdict-unknown{color:var(--ink-soft)}.verdict-empty{color:var(--empty)}.palette{padding:var(--s3) var(--s4) var(--s4);gap:var(--s3);background:var(--paper);flex-direction:column;min-height:0;max-height:45vh;display:flex}.palette-parts{scrollbar-width:thin;scrollbar-color:var(--rule) transparent;gap:var(--s1);min-height:0;padding-bottom:var(--s2);flex-direction:column;display:flex;overflow-y:auto}.palette-parts::-webkit-scrollbar{width:10px}.palette-parts::-webkit-scrollbar-thumb{background:var(--rule);border:3px solid var(--paper);border-radius:5px}.palette-shelves{gap:var(--s1);padding-top:var(--s2);border-top:1px solid var(--rule);flex-direction:column;display:flex}.palette-row{gap:var(--s1);flex-wrap:wrap;align-items:center;display:flex}.piece{display:flex;position:relative}.piece-main{gap:0 var(--s2);text-align:left;min-height:36px;padding:var(--s2) var(--s3);background:var(--paper);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;border-radius:3px;grid-template-columns:minmax(2.6ch,auto) 1fr auto;align-items:baseline;display:grid}.piece-main:hover{border-color:var(--ink-soft)}.piece-id{white-space:nowrap;font-size:15px;font-weight:600}.piece-name{font-size:14px}.piece-dim{color:var(--ink-soft);white-space:nowrap;font-size:12px}.piece-mirror{background:var(--paper);border:1px solid var(--rule);min-width:32px;min-height:44px;color:var(--ink-soft);cursor:pointer;border-radius:0 3px 3px 0;margin-left:-1px;font-size:15px}.piece-mirror:hover{color:var(--ink)}.piece-count{background:var(--ink);min-width:18px;height:18px;color:var(--paper);text-align:center;border-radius:9px;padding:0 4px;font-size:12px;line-height:18px;position:absolute;top:-7px;right:-7px}.palette-controls button,.toggle{min-height:36px;padding:0 var(--s3);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;align-items:center;gap:var(--s2);background:0 0;border-radius:3px;font-size:14px;display:inline-flex}.palette-controls button:hover:not(:disabled){border-color:var(--ink-soft)}.palette-controls button:disabled{opacity:.4;cursor:default}.toggle{cursor:pointer}.spacer{flex:1}.submit{gap:var(--s3);padding:var(--s3);background:var(--paper-sunk);border:1px solid var(--rule);border-radius:3px;flex-direction:column;display:flex}.submit-why,.submit-hint,.submit-err{color:var(--ink-soft);max-width:76ch;margin:0;font-size:16px;line-height:1.5}.submit-hint{font-size:14px}.submit-err{color:var(--fail);font-weight:600}.submit-grid{gap:var(--s2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.submit-field{gap:var(--s1);flex-direction:column;font-size:14px;display:flex}.submit-field>span{color:var(--ink-soft)}.submit-field input,.submit-field select{min-height:44px;padding:0 var(--s2);background:var(--paper);border:1px solid var(--rule);color:var(--ink);font:inherit;border-radius:3px;font-size:14px}.submit-actions{align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.submit-actions button{min-height:44px;padding:0 var(--s4);background:var(--ink);border:1px solid var(--ink);color:var(--paper);font:inherit;cursor:pointer;border-radius:3px;font-size:14px;font-weight:600}.submit-actions button:disabled{opacity:.4;cursor:default}.submit-id{color:var(--ink-soft);font-size:14px}.inventory-row-src{color:var(--ink-soft);white-space:nowrap;font-size:12px}.inventory-row.is-invalid{border-style:solid;border-color:var(--fail)}.inventory-row-bad{color:var(--fail);white-space:nowrap;font-size:12px;font-weight:600}.notice{justify-content:space-between;align-items:flex-start;gap:var(--s3);margin:0 var(--s4) var(--s2);padding:var(--s2) var(--s3);background:var(--paper-sunk);border:1px solid var(--fail);border-radius:3px;display:flex}.notice-line{color:var(--ink);max-width:76ch;margin:0;font-size:16px;line-height:1.5}.notice-line+.notice-line{margin-top:var(--s1)}.notice-close{min-height:36px;padding:0 var(--s3);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;background:0 0;border-radius:3px;flex:none;font-size:14px}.brand-group+.brand-group{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--rule)}.brand-note{align-items:baseline;gap:var(--s2);min-height:32px;color:var(--ink-soft);cursor:pointer;flex-wrap:wrap;margin:0;font-size:14px;line-height:1.5;list-style:none;display:flex}.brand-note::-webkit-details-marker{display:none}.brand-note:after{content:">";font-family:var(--font-data);color:var(--ink-soft);font-size:12px;transition:transform .12s}.brand-group[open]>.brand-note:after{transform:rotate(90deg)}@media (prefers-reduced-motion:reduce){.brand-note:after{transition:none}}.brand-note:hover{color:var(--ink)}.brand-count{font-family:var(--font-data);color:var(--ink-soft);margin-left:auto;font-size:12px}.brand-detail{margin:0 0 var(--s2);color:var(--ink-soft);max-width:76ch;font-size:13px;line-height:1.5}.brand-group.is-collapsible>.palette-row{margin-top:var(--s2)}.brand-name{color:var(--ink);font-weight:600}.brand-warn{color:var(--fail);font-weight:600}.piece.is-unverified .piece-main,.piece.is-unverified .piece-mirror{border-style:dotted;border-color:var(--fail)}.piece.is-unverified .piece-id:after{content:"*";color:var(--fail)}.piece.is-unowned .piece-main,.piece.is-unowned .piece-mirror{border-style:dashed;border-color:var(--ink-soft);color:var(--ink-soft)}.shortfall{padding:0 var(--s4) var(--s2);color:var(--ink-soft);margin:0;font-size:16px;line-height:1.5}.inventory-hint{color:var(--ink-soft);font-size:14px}.inventory{gap:var(--s3);padding:var(--s3);background:var(--paper-sunk);border:1px solid var(--rule);border-radius:3px;flex-direction:column;display:flex}.inventory-head{justify-content:space-between;align-items:center;gap:var(--s3);display:flex}.inventory-title{margin:0;font-size:16px;font-weight:600}.inventory-close{min-height:36px;padding:0 var(--s3);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;background:0 0;border-radius:3px;font-size:14px}.inventory-close:hover{border-color:var(--ink-soft)}.inventory-undeclared,.inventory-shortfall,.inventory-note{color:var(--ink-soft);max-width:76ch;margin:0;font-size:16px;line-height:1.5}.inventory-note{font-size:14px}.inventory-rows{gap:var(--s2);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.inventory-row{gap:var(--s2);min-height:44px;padding:0 var(--s2);background:var(--paper);border:1px solid var(--rule);border-radius:3px;grid-template-columns:3ch 1fr 6ch auto auto auto;align-items:center;display:grid}.inventory-row.is-short{border-style:dashed;border-color:var(--ink-soft)}.inventory-row-id{font-size:14px;font-weight:600}.inventory-row-name{font-size:14px}.inventory-row-input{width:100%;min-height:32px;padding:0 var(--s1);background:var(--paper);border:1px solid var(--rule);color:var(--ink);font:inherit;text-align:right;border-radius:3px;font-size:14px}.inventory-row-used{color:var(--ink-soft);white-space:nowrap;font-size:12px}.inventory-fills{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.inventory-fills-label{color:var(--ink-soft);font-size:14px}.inventory-fills button{min-height:36px;padding:0 var(--s3);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;background:0 0;border-radius:3px;font-size:14px}.inventory-fills button:hover{border-color:var(--ink-soft)}@media (pointer:coarse){.piece-mirror{min-width:44px}.palette-controls button,.submit-actions button,.notice-close,.inventory-close,.inventory-fills button,.inventory-row-input,.canvas-empty-action button,.piece-main,.toggle{min-height:44px}}@media (width<=620px){.shell{padding:var(--s5) var(--s4);display:block}.stage,.verdict,.verdict-notes,.palette,.inventory,.submit,.shortfall,.notice{display:none}.shell:before{content:"The track editor needs a larger screen. Open it on a desktop or tablet.";text-align:center;max-width:30ch;color:var(--ink-soft);margin:20vh auto 0;font-size:17px;line-height:1.5;display:block}}.port{cursor:pointer}.port-hit{fill:#0000}.port-dot{fill:var(--paper);stroke:var(--ink-soft);stroke-width:4px;transition:none}.port:hover .port-dot{stroke:var(--ink)}.port-ring{fill:none;stroke:var(--ink);stroke-width:3px}.port.is-armed .port-dot{fill:var(--ink);stroke:var(--ink);stroke-width:2px}.port:focus{outline:none}.port:focus-visible .port-dot{stroke:var(--ink);stroke-width:7px}.gap-leader{stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.gap-figure{fill:var(--ink);text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--floor);stroke-width:8px;stroke-linejoin:round;font-size:40px;font-weight:600}.crash{max-width:76ch;padding:var(--s5) var(--s4);gap:var(--s3);flex-direction:column;margin:0 auto;display:flex}.crash-title{color:var(--ink);margin:0;font-size:22px;font-weight:600}.crash-lead{color:var(--ink-soft);margin:0;font-size:16px;line-height:1.5}.crash-lead code{font-family:var(--font-data);color:var(--ink);font-size:14px}.crash-actions{gap:var(--s2);flex-wrap:wrap;display:flex}.crash-actions button{min-height:40px;padding:0 var(--s4);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;background:0 0;border-radius:3px;font-size:15px}.crash-actions button:hover{border-color:var(--ink-soft)}.crash-actions button.primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}.crash-actions button.primary:hover{background:var(--ink-soft);border-color:var(--ink-soft)}.crash-repro{width:100%;min-height:22em;padding:var(--s3);background:var(--paper-sunk);border:1px solid var(--rule);color:var(--ink);white-space:pre;resize:vertical;border-radius:3px;font-size:12px;line-height:1.45}@media (pointer:coarse){.crash-actions button{min-height:44px}}@media (width>=1000px){.shell{grid-template-rows:minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr) 320px}.stage{grid-area:1/1}.verdict{grid-area:2/1}.verdict-notes{grid-area:3/1}.palette{border-left:1px solid var(--rule);border-top:none;grid-area:1/2/-1;max-height:none}.notice,.inventory,.submit{grid-column:1/-1}.palette-controls{gap:var(--s2);grid-template-columns:repeat(6,1fr);align-items:stretch;display:grid}.palette-controls .spacer{display:none}.palette-controls>.toggle{grid-column:span 6}.palette-controls>button{grid-column:span 3;font-size:14px}.palette-controls>button:nth-last-of-type(-n+3){grid-column:span 2}.palette-controls .inventory-hint{grid-column:span 6}}
