@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-shadow:#8f826c;--track-edge:#8a7349;--slab-side:#bdb19b;--seam:#6e5a38;--grid-line:#d8cfbe;--ghost-opacity:.5;--unjoinable-opacity:.3;--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;--page-title:24px;--build-name:40px;--build-code:28px;--build-meta:16px;--target-build:48px;--s1:4px;--s2:8px;--s3:12px;--s4:20px;--s5:32px;--motion-settle-ms:.16s;--motion-settle-ease:ease-out}*{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:auto 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-frame{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.canvas-area{flex:1;min-width:0;min-height:0;display:flex;position:relative}.mode-strip{align-items:center;gap:var(--s2) var(--s3);padding:var(--s2) var(--s3);background:var(--paper);border-top:1px solid var(--rule);flex-wrap:wrap;display:flex}.mode-strip-text{color:var(--ink);flex:100%;margin:0}.mode-strip button{min-height:36px;padding:0 var(--s3);border:1px solid var(--rule);background:0 0;border-radius:3px}@media (pointer:coarse){.mode-strip button{min-height:44px}}.grid-caption{color:var(--ink-soft);pointer-events:none;margin:0;font-size:13px;position:absolute;inset-block-end:var(--s3);inset-inline-end:var(--s3)}.grid{fill:none;stroke:var(--grid-line);stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.table-outline{fill:var(--ink-soft);fill-opacity:.05;stroke:var(--ink-soft);stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:none}.table-outline.is-over{stroke:var(--fail)}.table-caption{max-width:60%;color:var(--ink-soft);pointer-events:none;margin:0;font-size:13px;position:absolute;inset-block-end:var(--s3);inset-inline-start:var(--s3)}.table-caption.is-over{color:var(--fail)}.hidden-end-hint{max-width:60%;color:var(--ink-soft);pointer-events:none;margin:0;font-size:13px;position:absolute;inset-block-start:var(--s3);inset-inline-start:var(--s3)}.seam{stroke:var(--seam);stroke-width:2.5px;vector-effect:non-scaling-stroke;pointer-events:none}.piece{cursor:pointer}.piece:focus{outline:none}.piece-hit{fill:none;stroke:#0000;stroke-linecap:butt;pointer-events:stroke}.piece-focus{fill:none;stroke:var(--ink);stroke-width:2px;stroke-dasharray:1 3;stroke-linecap:round;vector-effect:non-scaling-stroke;visibility:hidden;pointer-events:none}.piece:focus-visible .piece-focus{visibility:visible}.piece-selected,.piece-selected-halo,.piece-run{fill:none;vector-effect:non-scaling-stroke;pointer-events:none}.piece-selected-halo{stroke:var(--paper);stroke-width:7px}.piece-selected{stroke:var(--ink);stroke-width:3px}.piece-run{stroke:var(--ink-soft);stroke-width:1px}.body,.body-roof{stroke:var(--ink-soft);stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.body{fill:var(--slab-side)}.roof-hatch{stroke:var(--ink-soft);stroke-width:1px;vector-effect:non-scaling-stroke}.bridge-outline{fill:none;stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke;pointer-events:none}.piece-label{fill:var(--ink);stroke:var(--floor);stroke-width:3px;stroke-linejoin:round;paint-order:stroke;pointer-events:none;font-size:13px}@media print{.grid{stroke-opacity:.5}}.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,.build-primary{background:var(--ink);border:1px solid var(--ink);color:var(--paper);font:inherit;cursor:pointer;border-radius:3px}.canvas-empty-action button:hover,.build-primary:hover{background:var(--ink-soft);border-color:var(--ink-soft)}.canvas-empty-action button{min-height:40px;padding:0 var(--s4);font-size:15px}.canvas-empty-note{font-family:var(--font-data);color:var(--ink-soft);font-size:13px}.canvas-empty-hint{font-size:16px}@keyframes settle{0%{opacity:.85;transform:translateY(2px)}to{opacity:1;transform:none}}.settle{animation:settle var(--motion-settle-ms) var(--motion-settle-ease)}@media (prefers-reduced-motion:reduce){.settle{animation:none}}.verdict{column-gap:var(--s4);row-gap:var(--s1);padding:var(--s3) var(--s4);border-top:1px solid var(--rule);background:var(--paper);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-adapters{margin:var(--s1) 0 0;color:var(--ink);max-width:76ch;font-size:15px;line-height:1.45}.verdict-basis,.verdict-limits{margin:var(--s1) 0 0;color:var(--ink-soft);max-width:76ch;font-size:14px;line-height:1.5}.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-unmeasured{margin:var(--s1) 0 0;color:var(--ink);max-width:76ch;font-size:15px;line-height:1.45}.verdict-fold{min-height:36px;margin:var(--s1) 0 0;color:var(--ink-soft);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;text-decoration:underline}.verdict-fold:hover{color:var(--ink)}@media (pointer:coarse){.verdict-fold{min-height:44px}}.verdict-notes{padding:0 var(--s4) var(--s3) calc(var(--s4) + 2.2ch + var(--s4));background:var(--paper)}.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)}.identity{padding:var(--s2) var(--s4);background:var(--paper);border-bottom:1px solid var(--rule)}.identity .notice{margin:var(--s2) 0 0}.app-name{align-items:center;gap:var(--s2);color:var(--ink);margin:0;font-size:13px;display:flex}.app-name-mark{flex:none}.app-name-title{font-weight:600}.app-name-tag{color:var(--ink-soft)}.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;overflow-y:auto}.palette-parts{min-height:calc(5.5 * 36px + 5 * var(--s1));scrollbar-width:thin;scrollbar-color:var(--rule) transparent;gap:var(--s1);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}.palette-row>.piece{flex:100%;min-width:0}.palette-row>.piece>.piece-main{flex:auto;min-width:0}.piece-main{gap:0 var(--s2);text-align:left;min-height:36px;padding:7px var(--s3);background:var(--paper);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer;border-radius:3px;grid-template-columns:auto minmax(2.6ch,max-content) minmax(0,1fr) auto;align-items:center;display:grid}.piece-main:hover{border-color:var(--ink-soft)}.piece-id{white-space:nowrap;text-overflow:ellipsis;max-width:10ch;font-size:15px;font-weight:600;overflow:hidden}.piece-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:14px;overflow:hidden}.piece-name.has-notes{white-space:normal;flex-direction:column;display:flex}.piece-name-text,.piece-note{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.piece-note{color:var(--ink-soft);font-size:12px}.palette-subhead{margin:var(--s3) 0 var(--s1);color:var(--ink);font-size:12px;font-weight:600}.part-preview{pointer-events:none;display:block;overflow:visible}.part-preview-edge,.part-preview-plank{fill:none;stroke-linecap:butt;vector-effect:non-scaling-stroke}.part-preview-edge{stroke:currentColor;stroke-width:9px}.part-preview-plank{stroke:var(--paper);stroke-width:6px}.part-preview-beam{fill:currentColor}.part-preview-body{fill:none;stroke:currentColor;stroke-width:1px}.part-preview-hatch{stroke:currentColor;stroke-width:.75px}.part-preview-chevron{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linejoin:round}.part-preview-end.is-peg{fill:currentColor}.part-preview-end.is-socket{fill:var(--paper);stroke:currentColor;stroke-width:1px}.piece-dim{color:var(--ink-soft);white-space:nowrap;font-size:12px}.piece-origin{background:var(--paper);border:1px solid var(--rule);min-width:32px;color:var(--ink);border-radius:0 3px 3px 0;justify-content:center;align-items:center;margin-left:-1px;display:flex}.piece-origin:hover{border-color:var(--ink-soft)}.piece:has(.piece-origin)>.piece-main{border-radius:3px 0 0 3px}.origin-glyph{width:14px;height:14px;overflow:visible}.origin-glyph path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.piece-count{top:-7px;right:var(--s1);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}.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.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}.brand-group[open]>.brand-note:after{transform:rotate(90deg)}.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,.brand-warn{color:var(--ink);font-weight:600}.piece.is-unverified .piece-main,.piece.is-unverified .piece-origin{border-style:dotted;border-color:var(--ink)}.piece.is-unverified .piece-id:after{content:"*";color:var(--ink)}.measured-tick{vertical-align:baseline;width:.75em;height:.75em;margin-left:.1em;display:inline-block;overflow:visible}.measured-tick path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.palette-key{margin:var(--s2) 0 0;color:var(--ink-soft);font-size:12px}.palette-key>span{white-space:nowrap;margin-right:var(--s3)}.palette-key .measured-tick,.palette-key .origin-glyph{color:var(--ink);vertical-align:-2px}.palette-key-star{color:var(--ink);font-family:var(--font-data)}.piece.is-unowned .piece-main,.piece.is-unowned .piece-origin{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{color:var(--ink-soft);max-width:76ch;margin:0;font-size:16px;line-height:1.5}.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;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-origin{min-width:44px;min-height: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}.part-preview{width:40px;height:28px}}@media (width<=620px){.shell{padding:var(--s5) var(--s4);display:block}.shell :is(.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.is-unjoinable{cursor:not-allowed;opacity:var(--unjoinable-opacity)}.port-dot.is-peg{fill:var(--ink-soft)}.port-ring{fill:none;stroke:var(--ink);stroke-width:3px;vector-effect:non-scaling-stroke}.port.is-armed .port-dot{stroke:var(--ink);stroke-width:2px}.port-cursor-ring{fill:none;stroke:var(--ink-soft);stroke-width:2px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.port-target-ring{fill:none;stroke:var(--ink);stroke-width:2px;vector-effect:non-scaling-stroke}.join-suggest{cursor:pointer}.join-suggest-box{fill:var(--paper);stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.join-suggest:hover .join-suggest-box,.join-suggest:focus-visible .join-suggest-box{stroke-width:3px}.join-suggest:focus{outline:none}.join-suggest-text{fill:var(--ink);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-weight:600}.port:focus{outline:none}.port:focus-visible .port-dot{stroke:var(--ink);stroke-width:7px}.weld{cursor:pointer}.weld:focus{outline:none}.weld-hit{fill:#0000}.weld-bracket{fill:none;stroke:var(--ink);stroke-width:3px;stroke-linecap:round;vector-effect:non-scaling-stroke;visibility:hidden}.weld:hover .weld-bracket,.weld:focus-visible .weld-bracket{visibility:visible}.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:auto minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr) 320px}.identity{grid-area:1/1}.stage{grid-area:2/1}.verdict{grid-area:3/1}.verdict-notes{grid-area:4/1}.palette{border-left:1px solid var(--rule);border-top:none;grid-area:1/2/-1;max-height:none;overflow-y:auto}.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 2;font-size:14px}.palette-controls .inventory-hint{grid-column:span 6}.layout-file>button{grid-column:span 3}}.graph-listing{padding-top:var(--s2);border-top:1px solid var(--rule);color:var(--ink-soft);margin-top:0;font-size:14px;line-height:1.5}.graph-listing summary{color:var(--ink);cursor:pointer;font-size:15px;font-weight:600}.palette:has(.graph-listing[open]){overflow-y:auto}.palette:has(.graph-listing[open])>*{flex-shrink:0}.graph-listing h3{margin:var(--s3) 0 var(--s1);color:var(--ink);font-size:14px}.graph-listing ol,.graph-listing ul{margin:0;padding-left:2.2ch}.graph-listing ul ul{margin-bottom:var(--s1)}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width>=1000px){.mode-strip{flex-wrap:nowrap}.mode-strip-text{flex:1 1 0;min-width:0}.mode-strip button{flex:none}}.ghost-wood{opacity:var(--ghost-opacity)}.ghost-edge{fill:none;stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.ghost.is-red .ghost-edge{stroke:var(--fail);stroke-width:2px}.ghost-mark{color:var(--ink);font-weight:600}.ghost-mark.is-fail{color:var(--fail)}.adapter-joint-mark .adapter-outline{fill:none;stroke:var(--ink);stroke-width:2px;vector-effect:non-scaling-stroke}.adapter-joint-mark .adapter-core{fill:var(--ink)}.red-mark .mark-halo,.red-mark .mark-ink{vector-effect:non-scaling-stroke}.red-mark .mark-halo{stroke-width:5px}.red-mark .mark-ink{stroke-width:3px}.bridge-casing{fill:none;stroke:var(--floor);stroke-linecap:butt;pointer-events:none}.raised-shadow{fill:none;stroke:var(--track-shadow);stroke-linecap:butt;pointer-events:none}.raised-shadow.is-ramp{fill:var(--track-shadow);stroke:none}.rise-chevron{fill:none;stroke:var(--ink);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-linejoin:round}.buffer-beam rect{fill:var(--ink);stroke:none}.verdict-raised{color:var(--ink)}.adapter-glyph{color:var(--ink);font-weight:600}.mode-strip .primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.move-run{gap:var(--s1);display:inline-flex}.move-run button{min-width:36px;padding:0 var(--s2)}@media (pointer:coarse){.move-run button{min-width:44px}}.piece[aria-pressed=true] .piece-hit{touch-action:none}.move-refusal{color:var(--ink)}.piece-main[data-picked]{touch-action:none}.piece>.piece-main[data-picked]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.verdict-join{min-height:32px;padding:0 var(--s3);background:var(--paper);border:1px solid var(--ink);color:var(--ink);font:inherit;cursor:pointer;border-radius:3px;margin-inline-start:var(--s2);font-size:14px}@media (pointer:coarse){.verdict-join{min-height:44px}}.view-corner{gap:var(--s2);z-index:2;display:flex;position:absolute;inset-block-start:var(--s3);inset-inline-end:var(--s3)}.view-switch{display:inline-flex}.view-switch button,.view-reset,.build-it,.build-outline{background:var(--paper);border:1px solid var(--rule);color:var(--ink);font:inherit;cursor:pointer}.view-switch button:hover,.view-reset:hover,.build-it:hover,.build-outline:hover{border-color:var(--ink-soft)}.view-reset,.build-it,.build-outline{border-radius:3px}.view-switch button,.view-reset,.build-it{min-width:44px;min-height:36px;padding:0 var(--s3);font-size:14px}.view-switch button:first-child{border-radius:3px 0 0 3px}.view-switch button:last-child{border-radius:0 3px 3px 0;margin-inline-start:-1px}.view-switch button[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);z-index:1;font-weight:600;position:relative}.view-switch button:focus-visible{z-index:2;position:relative}.share{display:inline-flex;position:relative}.share-button{min-width:7.5rem}.share-button:disabled{color:var(--ink-soft);cursor:default}.share-button:disabled:hover{border-color:var(--rule)}.share-panel{width:min(22rem, calc(100vw - 2 * var(--s4)));align-items:flex-start;gap:var(--s2);padding:var(--s3);background:var(--paper);border:1px solid var(--rule);border-radius:3px;flex-direction:column;font-size:14px;line-height:1.5;display:flex;position:absolute;inset-block-start:calc(100% + var(--s2));inset-inline-end:0}.share-line{color:var(--ink)}.share-url{width:100%;min-height:36px;padding:0 var(--s2);font:inherit;font-family:var(--font-data);color:var(--ink);background:var(--paper-sunk);border:1px solid var(--rule);border-radius:3px;font-size:12px}.share-close,.put-aside-button,.build-text{color:var(--ink);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.put-aside-button:hover,.build-text:hover{text-decoration-thickness:2px}.share-close{min-height:36px}@media (pointer:coarse){.view-switch button,.view-reset,.build-it,.share-close{min-height:44px}}.viewer3d-area{background:var(--floor)}.viewer3d{position:absolute;inset:0}.viewer3d-canvas{touch-action:none;width:100%;height:100%;display:block}.viewer3d-canvas:focus{outline:none}.viewer3d-canvas:focus-visible{outline:2px solid var(--ink);outline-offset:-4px}.viewer3d-howto{max-width:50%;color:var(--ink-soft);pointer-events:none;margin:0;font-size:13px;position:absolute;inset-block-start:var(--s3);inset-inline-start:var(--s3)}.viewer3d-area .table-caption,.viewer3d-howto{z-index:1;background:var(--floor);padding:calc(var(--s1) / 2) var(--s1);border-radius:3px}.viewer3d-inset{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.viewer3d-inset rect{fill:none;stroke:var(--ink);stroke-width:1.5px}.viewer3d-inset line{stroke:var(--ink);stroke-width:1px}.build-mode{background:var(--paper);color:var(--ink);font-family:var(--font-ui);outline:none;position:fixed;inset:0;overflow:auto}.build-step{touch-action:none;grid-template-rows:minmax(0,65fr) auto;display:grid;overflow:hidden}@media (aspect-ratio>=6/5){.build-step{grid-template-rows:none;grid-template-columns:minmax(0,68fr) minmax(20rem,32fr)}}.build-picture{width:100%;max-width:1400px;min-height:0;position:relative}.build-picture .canvas-frame,.build-picture .canvas-area{position:absolute;inset:0}.build-label{touch-action:pan-y;min-height:0;padding:var(--s5);align-items:flex-start;gap:var(--s2);flex-direction:column;display:flex;position:relative;overflow-y:auto}.build-name{font-size:var(--build-name);margin:0;font-weight:600;line-height:1.15}.build-code{font-size:var(--build-code);font-family:var(--font-data);margin:0;font-weight:500}.build-code-line{font-size:var(--build-code);margin:0;line-height:1.25}.build-meta{font-size:var(--build-meta);color:var(--ink-soft);margin:0}.build-note{font-size:var(--build-meta);margin:0;line-height:1.4}.build-warn{font-size:var(--build-code);gap:0 var(--s2);flex-wrap:wrap;align-items:baseline;display:flex}.build-reason{color:var(--ink-soft);font-size:var(--build-meta)}.build-quiet{min-height:1.4em;font-size:var(--build-meta);color:var(--ink-soft);margin:0}.build-dead{justify-content:flex-end;align-self:flex-end;gap:var(--s2);padding:var(--s4);margin-top:auto;margin-inline-end:calc(-1 * var(--s4));margin-bottom:calc(-1 * var(--s4));flex-wrap:wrap;display:flex}.build-dead button,.build-actions button{min-height:var(--target-build);padding:0 var(--s4);font-size:var(--build-meta)}.build-sr-nav{gap:var(--s2);display:flex}.build-sr-nav button{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.build-sr-nav button:focus-visible{width:auto;height:48px;padding:0 var(--s4);clip-path:none;position:static;overflow:visible}.build-pull{justify-content:center;display:flex}.build-pull-col{width:min(40rem,100%);padding:var(--s5);gap:var(--s4);flex-direction:column;display:flex}.build-heading{font-size:var(--build-code);margin:0;font-weight:600}.build-resume{font-size:var(--build-meta);margin:0}.build-parts{border-collapse:collapse;font-size:var(--build-meta);align-self:flex-start;width:auto}.build-parts td:not(:first-child){padding-inline-start:var(--s4)}.build-parts td{padding:var(--s2) var(--s3) var(--s2) 0;border-bottom:1px solid var(--rule)}.build-parts td.num{text-align:end}.build-short{font-weight:600}.build-actions{gap:var(--s3);flex-wrap:wrap;align-items:center;display:flex}.build-hint{font-size:var(--build-meta);color:var(--ink-soft);margin:0}.build-verdict .verdict{margin:0}@media (width<=599px){.build-mode{--build-name:32px;--build-code:24px;--build-meta:15px}.build-label,.build-pull-col{padding:var(--s4)}}.build-verdict .verdict-action{display:none}.friend{background:var(--paper);min-height:100%;color:var(--ink);flex-direction:column;display:flex}.friend-head{padding:var(--s3) var(--s5);border-bottom:1px solid var(--rule)}.friend-main{gap:var(--s4);padding:var(--s4) var(--s5) var(--s5);flex-direction:column;flex:1;width:min(64rem,100%);margin:0 auto;display:flex}.friend-title{font-size:var(--page-title);outline:none;margin:0;font-weight:600}.friend-picture{background:var(--floor);border:1px solid var(--rule);height:min(60vh,40rem);min-height:16rem;display:flex}.friend-picture-inner{flex:1;min-width:0;min-height:0;display:flex}.friend-verdict .verdict{background:0 0;margin:0;padding:0}.friend-sizes{margin:var(--s2) 0 0;color:var(--ink-soft);font-size:14px}.friend-actions{align-items:flex-start;gap:var(--s3);flex-direction:column;display:flex}.friend-build{min-height:48px;padding:0 var(--s5);background:var(--ink);color:var(--paper);border:1px solid var(--ink);font:inherit;cursor:pointer;border-radius:3px;font-weight:600}.friend-build:hover{background:var(--ink-soft);border-color:var(--ink-soft)}.friend-parts summary{cursor:pointer;align-items:center;gap:var(--s1);min-height:44px;list-style:none;display:flex}.friend-parts summary::-webkit-details-marker{display:none}.friend-parts summary:after{content:">";font-family:var(--font-data);color:var(--ink-soft);margin-inline-start:var(--s2);font-size:12px}.friend-parts[open] summary:after{transform:rotate(90deg)}.friend-parts table{border-collapse:collapse}.friend-parts td{padding:var(--s1) var(--s4) var(--s1) 0;border-bottom:1px solid var(--rule)}.friend-quiet{gap:var(--s2) var(--s4);flex-wrap:wrap;display:flex}.friend-quiet button{min-height:44px;color:var(--ink);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.friend-quiet button:hover{text-decoration-thickness:2px}.friend-open{min-height:44px;color:var(--ink);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.friend-open:hover{text-decoration-thickness:2px}.friend-open:disabled{color:var(--ink-soft);cursor:default;text-decoration:none}.friend-phone-note{color:var(--ink-soft);margin:0;display:none}.friend-ask{gap:var(--s3);padding:var(--s4);border:1px solid var(--rule);border-radius:3px;flex-direction:column;max-width:36rem;display:flex}.friend-ask-question{outline:none;margin:0;font-weight:600}.friend-ask-rows{gap:var(--s2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.friend-ask-row{align-items:center;gap:var(--s3);min-height:48px;display:flex}.layout-thumb{color:var(--ink);flex:none}.friend-ask-buttons{align-items:center;gap:var(--s4);flex-wrap:wrap;display:flex}.friend-ask-keep{min-height:44px;color:var(--ink);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.friend-said{margin:0}.notice.put-aside{border-color:var(--rule)}.example-line{align-items:center;gap:var(--s2) var(--s4);margin-top:var(--s2);flex-wrap:wrap;display:flex}.example-title{font-weight:600}.example-build{min-height:44px;padding:0 var(--s4);background:var(--ink);color:var(--paper);border:1px solid var(--ink);font:inherit;cursor:pointer;border-radius:3px;font-weight:600}.example-build:hover{background:var(--ink-soft);border-color:var(--ink-soft)}.example-own{min-height:44px;color:var(--ink);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.example-own:hover{text-decoration-thickness:2px}.friend-own-note{color:var(--ink-soft);margin:0}.put-aside-buttons{gap:var(--s4);flex:none;display:flex}.put-aside-button{min-height:44px;font-size:14px}.put-aside-button:disabled{color:var(--ink-soft);cursor:default;text-decoration:none}.friend-message .friend-main{justify-content:center;align-items:flex-start;max-width:36rem}.friend-message-line{outline:none;margin:0;font-size:17px;line-height:1.5}@media (width<=620px){.friend-head{padding:var(--s3) var(--s4)}.friend-main{padding:var(--s3) var(--s4) var(--s4);gap:var(--s3)}.friend-picture{height:50vh;min-height:12rem}.friend-actions{align-items:stretch}.friend-build{width:100%}.friend-open,.friend-ask{display:none}.friend-phone-note{display:block}}.build-origin{width:1%}.build-origin .piece-origin{border-radius:3px;min-height:32px;margin-left:0}
