:root{--tech-font:"IBM Plex Mono", ui-monospace, monospace;--tech-sans:"IBM Plex Sans", system-ui, sans-serif;--hand-font:"Caveat", cursive;--paper:#efe4cb;--paper-grain:#785a320d;--line:#2c1f15;--line-soft:#6b5945;--accent:#9b3a3a;--grid-major:#46321e14;--grid-minor:#46321e0a;--sheet-shadow:0 30px 60px -20px #3c281459, 0 6px 16px #3c28141f;--tool-bg:#2a2017;--tool-fg:#efe4cb;--tool-line:#efe4cb26;--sw-thin:.35px;--sw-med:.9px;--sw-thick:1.4px}:root[data-paper=graph]{--paper:#fbfbf6;--paper-grain:#28507805;--line:#1a3554;--line-soft:#527799;--accent:#c63a2b;--grid-major:#3c6ea040;--grid-minor:#3c6ea01f;--sheet-shadow:0 30px 50px -20px #14325a40, 0 4px 14px #14325a14}:root[data-paper=dark]{--paper:#0c1018;--paper-grain:#aadcff04;--line:#cfe6ff;--line-soft:#6f8eaf;--accent:#ffb547;--grid-major:#96c8f01f;--grid-minor:#96c8f00e;--sheet-shadow:0 30px 60px -20px #000c, 0 6px 16px #0006;--tool-bg:#050810;--tool-fg:#cfe6ff;--tool-line:#cfe6ff26}:root[data-paper=blueprint]{--paper:#143659;--paper-grain:#ffffff0a;--line:#f4ead1;--line-soft:#9bb4d4;--accent:#ffb547;--grid-major:#ffffff24;--grid-minor:#fff1;--sheet-shadow:0 30px 60px -20px #081e3ce6, 0 6px 16px #081e3c66;--tool-bg:#08172a;--tool-fg:#f4ead1;--tool-line:#f4ead12e}:root[data-stroke=thin]{--sw-thin:.35px;--sw-med:.8px;--sw-thick:1.4px}:root[data-stroke=medium]{--sw-thin:.6px;--sw-med:1.4px;--sw-thick:2.2px}:root[data-stroke=thick]{--sw-thin:.9px;--sw-med:1.9px;--sw-thick:3px}:root[data-hand=technical]{--letter-font:var(--tech-font);--letter-size:10px;--letter-weight:400;--letter-tracking:.04em}:root[data-hand=caveat]{--letter-font:"Caveat", cursive;--letter-size:13px;--letter-weight:500;--letter-tracking:.01em}:root[data-hand=architect]{--letter-font:"Architects Daughter", cursive;--letter-size:12px;--letter-weight:400;--letter-tracking:0}:root.hide-hidden .edge-hidden,:root.hide-dims .dims-lines,:root.hide-dims .dim-overlay,:root.hide-annot .iso-axes,:root.hide-annot .vp-axes,:root.hide-annot .corner-mark{display:none}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--tech-sans);color:var(--line);background:radial-gradient(circle at 20% 10%,#4a3a26 0%,#2a1f14 60%,#15110a 100%);grid-template-columns:1fr 280px;margin:0;display:grid;overflow:hidden}:root[data-paper=graph] body{background:radial-gradient(circle at 20% 10%,#b9c4d1 0%,#6c7a8c 60%,#38424f 100%)}:root[data-paper=dark] body{background:radial-gradient(circle at 30% 10%,#1a2230 0%,#0a0d14 70%,#050709 100%)}:root[data-paper=blueprint] body{background:radial-gradient(circle at 20% 10%,#1c3852 0%,#0a1a2c 60%,#050d18 100%)}#root{display:contents}.board{justify-content:center;align-items:center;min-width:0;padding:22px;display:flex;position:relative;overflow:hidden}.sheet{aspect-ratio:297/210;background:var(--paper);width:100%;max-width:1280px;box-shadow:var(--sheet-shadow);border-radius:2px;grid-template-rows:1fr 116px;display:grid;position:relative;overflow:hidden}.sheet:before{content:"";pointer-events:none;background:repeating-linear-gradient(0deg, var(--grid-minor) 0 1px, transparent 1px 18.9px), repeating-linear-gradient(90deg, var(--grid-minor) 0 1px, transparent 1px 18.9px), repeating-linear-gradient(0deg, var(--grid-major) 0 1px, transparent 1px 94.5px), repeating-linear-gradient(90deg, var(--grid-major) 0 1px, transparent 1px 94.5px);mix-blend-mode:multiply;position:absolute;inset:0}:root[data-paper=vellum] .sheet:before{background:radial-gradient(ellipse at 20% 30%, var(--paper-grain), transparent 70%), radial-gradient(ellipse at 80% 70%, var(--paper-grain), transparent 70%), repeating-linear-gradient(2deg, transparent 0 32px, #785a3204 32px 33px), repeating-linear-gradient(-3deg, transparent 0 48px, #785a3205 48px 49px)}:root[data-paper=dark] .sheet:before{mix-blend-mode:screen}.sheet:after{content:"";border:1px solid var(--line);pointer-events:none;opacity:.8;border-radius:1px;position:absolute;inset:12px}.corner-mark{pointer-events:none;width:18px;height:18px;position:absolute}.corner-mark:before,.corner-mark:after{content:"";background:var(--line);position:absolute}.corner-mark:before{width:18px;height:1px;top:0;left:0}.corner-mark:after{width:1px;height:18px;top:0;left:0}.cm-tl{top:12px;left:12px}.cm-tr{top:12px;right:12px;transform:scaleX(-1)}.cm-bl{bottom:128px;left:12px;transform:scaleY(-1)}.cm-br{bottom:128px;right:12px;transform:scale(-1)}.grid{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:0;min-height:0;padding:28px;display:grid;position:relative}.viewport{border:1px dashed var(--line-soft);cursor:default;flex-direction:column;min-width:0;min-height:0;margin:-.5px;padding:14px 18px 18px;display:flex;position:relative}.viewport:first-child{border-bottom:none;border-right:none}.viewport:nth-child(2){border-bottom:none}.viewport:nth-child(3){border-right:none}.vp-label{font-family:var(--tech-font);letter-spacing:.14em;color:var(--line);border-bottom:1px solid var(--line-soft);align-items:baseline;gap:10px;margin-bottom:4px;padding:0 0 6px;font-size:10px;font-weight:500;display:flex}.vp-axes{color:var(--line-soft);letter-spacing:.12em;font-size:9px}.vp-stage{flex:1;min-height:0;display:flex;position:relative}.vp-svg{width:100%;height:100%;min-height:0;overflow:visible}.dim-overlay{pointer-events:none;position:absolute;inset:0}.dim-overlay>*{pointer-events:auto}.dim-value,.dim-note{font-family:var(--letter-font);font-size:var(--letter-size);font-weight:var(--letter-weight);letter-spacing:var(--letter-tracking);color:var(--line);white-space:nowrap;background:var(--paper);border-radius:2px;padding:0 4px;line-height:1;position:absolute;transform:translate(-50%,-50%)}.dim-value{text-align:center;min-width:28px}.dim-note{transform:translateY(-50%)}.dim-note .note-pre,.dim-note .note-post{display:inline-block}.dim-input{text-align:center;min-width:1.5em;font:inherit;color:inherit;letter-spacing:inherit;cursor:text;background:0 0;border:none;border-radius:2px;outline:none;margin:0;padding:0 2px;display:inline-block}.dim-input:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}.dim-input:focus{background:color-mix(in srgb, var(--accent) 22%, var(--paper));outline:1px dashed var(--accent);outline-offset:1px}.dim-note .dim-input{text-align:left}.edge-visible{fill:none;stroke:var(--line);stroke-width:var(--sw-med);stroke-linecap:square;vector-effect:non-scaling-stroke;cursor:pointer}.edge-visible.selected{stroke:var(--accent);stroke-width:calc(var(--sw-med) * 1.6)}.edge-hidden{fill:none;stroke:var(--line);stroke-width:var(--sw-thin);stroke-dasharray:2 1.5;vector-effect:non-scaling-stroke;opacity:.85}.edge-center{stroke:var(--accent);stroke-width:var(--sw-thin);stroke-dasharray:4 1 .8 1;vector-effect:non-scaling-stroke;opacity:.9}.dim-ext,.dim-line,.dim-leader{fill:none;stroke:var(--line-soft);stroke-width:var(--sw-thin);vector-effect:non-scaling-stroke}.dim-line{stroke:var(--line)}.viewport svg .dim-line{marker-start:url(#arr);marker-end:url(#arr)}.iso-fit{perspective:none;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.iso-stage{transform-style:preserve-3d;transform-origin:50%;position:relative}.iso-world{transform-style:preserve-3d;position:relative}.iso-box{transform-style:preserve-3d;position:absolute;top:0;left:0}.iso-box .face{background:var(--paper);border:1px solid var(--line);cursor:pointer;transform-origin:0 0;position:absolute;top:0;left:0}:root[data-stroke=medium] .iso-box .face{border-width:1.4px}:root[data-stroke=thick] .iso-box .face{border-width:1.8px}.iso-box .face-top{background:color-mix(in srgb, var(--paper) 75%, white 25%)}.iso-box .face-bottom{background:color-mix(in srgb, var(--paper) 55%, var(--line) 45%)}.iso-box .face-front{background:color-mix(in srgb, var(--paper) 85%, var(--line) 15%)}.iso-box .face-back{background:color-mix(in srgb, var(--paper) 65%, var(--line) 35%)}.iso-box .face-left{background:color-mix(in srgb, var(--paper) 80%, var(--line) 20%)}.iso-box .face-right{background:color-mix(in srgb, var(--paper) 90%, var(--line) 10%)}:root[data-paper=dark] .iso-box .face-top{background:color-mix(in srgb, var(--paper) 75%, var(--line) 8%)}:root[data-paper=dark] .iso-box .face-bottom{background:#06090f}.iso-box.selected-host .face{outline:1px solid var(--accent)}.iso-hole{background:color-mix(in srgb, var(--line) 80%, transparent 20%);border:1px solid var(--line);transform-origin:0 0;pointer-events:auto;cursor:pointer;border-radius:50%;position:absolute;top:0;left:0}:root[data-paper=dark] .iso-hole{background:#06090f}.iso-hole.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.iso-axes{width:0;height:0;transform-style:preserve-3d;position:absolute}.iso-axes .ax{background:var(--line-soft);position:absolute}.ax-x{width:24px;height:1px}.ax-y{width:1px;height:24px;transform:rotate(90deg)}.ax-z{width:1px;height:24px}.iso-axes .lbl{font-family:var(--tech-font);color:var(--line-soft);letter-spacing:.1em;font-size:9px;position:absolute}.lbl-x{top:-6px;left:26px}.lbl-y{top:26px;left:4px}.lbl-z{top:-16px;left:4px}.title-block{border:1px solid var(--line);border-collapse:collapse;font-family:var(--tech-font);color:var(--line);table-layout:fixed;background:0 0;width:calc(100% - 60px);margin:0 30px 22px;font-size:10px}.title-block td{border:1px solid var(--line);vertical-align:top;text-align:left;padding:4px 8px 5px;position:relative}.title-block .tb-label{text-transform:uppercase;letter-spacing:.14em;color:var(--line-soft);margin-bottom:2px;font-size:8px;display:block}.title-block .tb-value{font-family:var(--letter-font);font-size:var(--letter-size);font-weight:var(--letter-weight);color:var(--line);background:0 0;border:none;outline:none;width:100%;padding:0;line-height:1.1}.title-block .tb-value:focus{background:color-mix(in srgb, var(--accent) 10%, transparent)}.tb-logo{font-family:var(--tech-font);text-align:center;vertical-align:middle!important;padding:6px 8px!important}.tb-logo .logo-mark{letter-spacing:.18em;color:var(--line);font-size:12px;font-weight:600}.tb-logo small{letter-spacing:.18em;color:var(--line-soft);text-transform:lowercase;margin-top:3px;font-size:8px;font-weight:300;display:block}.proj-symbol{letter-spacing:.18em;color:var(--line-soft);align-items:center;gap:5px;margin-top:7px;font-size:7.5px;display:inline-flex}.proj-symbol svg{display:block}.sidebar{background:var(--tool-bg);color:var(--tool-fg);font-family:var(--tech-font);border-left:1px solid #000;flex-direction:column;font-size:11px;display:flex;overflow:hidden}.sidebar h2{letter-spacing:.2em;text-transform:uppercase;color:color-mix(in srgb, var(--tool-fg) 70%, transparent);border-bottom:1px solid var(--tool-line);justify-content:space-between;align-items:baseline;margin:18px 16px 8px;padding-bottom:6px;font-size:10px;font-weight:500;display:flex}.sidebar h2 small{color:color-mix(in srgb, var(--tool-fg) 40%, transparent);letter-spacing:.1em;font-size:9px}.sb-meta{border:1px solid var(--tool-line);font-family:var(--tech-font);border-radius:2px;grid-template-columns:auto 1fr;gap:4px 10px;margin:14px 16px 0;padding:8px 10px;font-size:10px;display:grid}.sb-meta .k{color:color-mix(in srgb, var(--tool-fg) 50%, transparent);letter-spacing:.1em;text-transform:uppercase;font-size:9px}.sb-meta .v{color:var(--tool-fg)}.units-row{border:1px solid var(--tool-line);border-radius:2px;gap:0;margin:8px 16px 0;display:flex;overflow:hidden}.units-row label{text-align:center;cursor:pointer;letter-spacing:.12em;color:color-mix(in srgb, var(--tool-fg) 70%, transparent);border-right:1px solid var(--tool-line);flex:1;padding:5px 0;font-size:10px;position:relative}.units-row label:last-child{border-right:none}.units-row input{opacity:0;pointer-events:none;position:absolute}.units-row label:has(input:checked){background:var(--tool-fg);color:var(--tool-bg)}.part-tree{max-height:220px;margin:0;padding:0 8px;list-style:none;overflow:auto}.tree-item .tree-row{width:100%;color:var(--tool-fg);font-family:var(--tech-font);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:2px;grid-template-columns:22px 1fr auto;align-items:center;gap:6px;padding:5px 8px;font-size:11px;display:grid}.tree-item .tree-row:hover{background:color-mix(in srgb, var(--tool-fg) 8%, transparent)}.tree-item.selected .tree-row{background:color-mix(in srgb, var(--accent) 30%, transparent);color:var(--tool-fg)}.tree-icon{color:color-mix(in srgb, var(--tool-fg) 70%, transparent);font-size:13px;line-height:1}.tree-type{color:color-mix(in srgb, var(--tool-fg) 40%, transparent);letter-spacing:.1em;text-transform:uppercase;font-size:9px}.add-row{border-bottom:1px solid var(--tool-line);gap:6px;padding:6px 16px 12px;display:flex}.add-row button{font-family:var(--tech-font);letter-spacing:.12em;text-transform:uppercase;color:color-mix(in srgb, var(--tool-fg) 80%, transparent);border:1px dashed var(--tool-line);cursor:pointer;background:0 0;border-radius:2px;flex:1;padding:6px 0;font-size:10px}.add-row button:hover{background:color-mix(in srgb, var(--tool-fg) 6%, transparent);color:var(--tool-fg);border-style:solid}.export-row{border-bottom:1px solid var(--tool-line);padding:0 16px 12px}.export-btn{width:100%;font-family:var(--tech-font);letter-spacing:.14em;text-transform:uppercase;background:var(--tool-fg);color:var(--tool-bg);border:1px solid var(--tool-fg);cursor:pointer;border-radius:2px;padding:8px 10px;font-size:10px}.export-btn:hover{background:color-mix(in srgb, var(--tool-fg) 88%, var(--accent) 12%)}.export-info{font-family:var(--tech-font);color:color-mix(in srgb, var(--tool-fg) 70%, transparent);margin-top:8px;font-size:10px}.export-warn{color:var(--accent);margin-top:4px;line-height:1.3}.prop-panel{flex:1;padding:0 16px 16px;overflow:auto}.prop-empty{text-align:center;color:color-mix(in srgb, var(--tool-fg) 40%, transparent);font-family:var(--tech-font);margin-top:30px;padding:0 16px;font-size:10px;line-height:1.5}.prop-empty-key{opacity:.6;margin-bottom:8px;font-size:28px}.prop-head{border-bottom:1px solid var(--tool-line);grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin:12px 0 10px;padding-bottom:8px;display:grid}.prop-tag{font-family:var(--tech-font);letter-spacing:.15em;border:1px solid var(--tool-line);color:color-mix(in srgb, var(--tool-fg) 70%, transparent);border-radius:1px;padding:2px 6px;font-size:9px}.prop-name{font-family:var(--tech-font);color:var(--tool-fg);background:0 0;border:none;border-bottom:1px solid #0000;outline:none;font-size:12px}.prop-name:focus{border-bottom-color:var(--tool-fg)}.prop-del{border:1px solid var(--tool-line);color:color-mix(in srgb, var(--tool-fg) 60%, transparent);cursor:pointer;background:0 0;border-radius:2px;width:22px;height:22px;font-size:11px}.prop-del:hover{color:var(--accent);border-color:var(--accent)}.prop-panel fieldset{border:1px solid var(--tool-line);border-radius:2px;margin:0 0 10px;padding:8px 10px 10px}.prop-panel fieldset legend{font-family:var(--tech-font);letter-spacing:.18em;text-transform:uppercase;color:color-mix(in srgb, var(--tool-fg) 60%, transparent);padding:0 4px;font-size:9px}.prop{grid-template-columns:20px 1fr;align-items:center;gap:8px;margin:4px 0;display:grid}.prop-label{font-family:var(--tech-font);color:color-mix(in srgb, var(--tool-fg) 70%, transparent);font-size:10px}.prop-controls{grid-template-columns:1fr 56px;align-items:center;gap:6px;display:grid}.prop-controls input[type=range]{appearance:none;background:0 0;width:100%;height:18px}.prop-controls input[type=range]::-webkit-slider-runnable-track{background:var(--tool-line);height:1px}.prop-controls input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--tool-fg);cursor:ew-resize;border-radius:1px;width:10px;height:14px;margin-top:-7px}.prop-controls input[type=number],.prop-controls select{border:1px solid var(--tool-line);color:var(--tool-fg);font-family:var(--tech-font);background:0 0;border-radius:2px;outline:none;padding:2px 4px;font-size:10px}.prop-controls input[type=number]:focus,.prop-controls select:focus{border-color:var(--tool-fg)}.tweaks-toggle{z-index:49;background:var(--tool-bg);color:var(--tool-fg);border:1px solid var(--tool-line);font-family:var(--tech-font);letter-spacing:.15em;text-transform:uppercase;cursor:pointer;border-radius:2px;padding:6px 10px;font-size:10px;position:fixed;bottom:18px;right:298px}.tweaks-toggle:hover{background:color-mix(in srgb, var(--tool-fg) 8%, var(--tool-bg))}.tweaks-toggle.open{display:none}.tweaks-panel{background:var(--tool-bg);width:280px;color:var(--tool-fg);border:1px solid var(--tool-line);font-family:var(--tech-font);opacity:0;pointer-events:none;z-index:50;border-radius:4px;font-size:11px;transition:opacity .15s,transform .15s;position:fixed;bottom:18px;right:298px;transform:translateY(20px);box-shadow:0 10px 30px #0006}.tweaks-panel.open{opacity:1;pointer-events:auto;transform:translateY(0)}.tw-head{border-bottom:1px solid var(--tool-line);letter-spacing:.15em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:8px 12px;font-size:10px;display:flex}.tw-close{color:color-mix(in srgb, var(--tool-fg) 60%, transparent);cursor:pointer;background:0 0;border:none;font-size:13px}.tw-section{border-bottom:1px solid var(--tool-line);padding:10px 12px}.tw-section:last-child{border-bottom:none}.tw-section h4{letter-spacing:.15em;text-transform:uppercase;color:color-mix(in srgb, var(--tool-fg) 60%, transparent);margin:0 0 6px;font-size:9px;font-weight:500}.tw-radio{border:1px solid var(--tool-line);border-radius:2px;display:flex;overflow:hidden}.tw-radio-grid{grid-template-columns:1fr 1fr;gap:0;display:grid}.tw-radio-grid button:nth-child(2n){border-right:none}.tw-radio-grid button:nth-child(-n+2){border-bottom:1px solid var(--tool-line)}.tw-radio button{color:color-mix(in srgb, var(--tool-fg) 70%, transparent);border:none;border-right:1px solid var(--tool-line);font-family:var(--tech-font);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;background:0 0;flex:1;padding:5px 0;font-size:10px}.tw-radio button:last-child{border-right:none}.tw-radio button.active{background:var(--tool-fg);color:var(--tool-bg)}.tw-tog{cursor:pointer;align-items:center;gap:8px;margin:4px 0;font-size:11px;display:flex}.tw-tog input{accent-color:var(--accent)}.tw-slider{margin:6px 0;font-size:10px;display:block}.tw-slider span{color:color-mix(in srgb, var(--tool-fg) 70%, transparent);justify-content:space-between;display:flex}.tw-slider input{width:100%}@media (width<=980px){body{grid-template-columns:1fr}.sidebar{display:none}.tweaks-panel,.tweaks-toggle{right:12px}}
