@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-400-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-400-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-400-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-500-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-500-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-500-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-500-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-600-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-600-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-600-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-600-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-700-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-700-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-700-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/IBMPlexSans-700-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-400-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-500-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexMono-600-cyrillic-ext.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexMono-600-cyrillic.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexMono-600-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/IBMPlexMono-600-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/Archivo-500-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/Archivo-500-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/Archivo-600-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/Archivo-600-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/Archivo-700-latin-ext.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/fonts/Archivo-700-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--bg:#EFF1ED;--panel:#FFFFFF;--panel-2:#F6F7F4;--line:#D6D9D2;--line-2:#E7E9E4;--ink:#1A211E;--ink-2:#5D6764;--ink-3:#8B9490;--amber:#A85F14;--amber-soft:#F3E4D2;--on-amber:#FFFFFF;--cyan:#256B85;--cyan-soft:#DCEAF0;--danger:#A63A2C;--danger-soft:#F6E0DC;--ok:#37704F;--ok-soft:#DDEDE3;--warn:#8A6410;--warn-soft:#F6EBD2;--view-1:#E4E7E2;--view-2:#CFD5CF;--shadow:0 1px 2px rgba(26,33,30,.06),0 8px 24px -12px rgba(26,33,30,.18);--mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--disp:"Archivo","IBM Plex Sans",system-ui,sans-serif;--r:4px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101614;--panel:#18201D;--panel-2:#141B19;--line:#2B3733;--line-2:#222C29;--ink:#E3E9E5;--ink-2:#93A09B;--ink-3:#6B7773;--amber:#E9A24A;--amber-soft:#33261588;--on-amber:#17110A;--cyan:#63B4CF;--cyan-soft:#14303A88;--danger:#E48376;--danger-soft:#3A1F1B88;--ok:#71BC93;--ok-soft:#16301F88;--warn:#D9AE5A;--warn-soft:#33291388;--view-1:#141C1A;--view-2:#0C1211;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.7)}}:root[data-theme=dark]{--bg:#101614;--panel:#18201D;--panel-2:#141B19;--line:#2B3733;--line-2:#222C29;--ink:#E3E9E5;--ink-2:#93A09B;--ink-3:#6B7773;--amber:#E9A24A;--amber-soft:#33261588;--on-amber:#17110A;--cyan:#63B4CF;--cyan-soft:#14303A88;--danger:#E48376;--danger-soft:#3A1F1B88;--ok:#71BC93;--ok-soft:#16301F88;--warn:#D9AE5A;--warn-soft:#33291388;--view-1:#141C1A;--view-2:#0C1211;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.7)}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}.themeswitch .glyph{font-family:var(--sans);font-size:13px;line-height:1}*{box-sizing:border-box}html{color-scheme:light dark}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--disp);margin:0;text-wrap:balance;letter-spacing:-.01em}a{color:var(--cyan)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;border-radius:3px}code{font-family:var(--mono);font-size:.92em}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.topbar{justify-content:space-between;gap:16px;padding:10px 20px;border-bottom:1px solid var(--line);background:var(--panel)}.brand,.topbar{display:flex;align-items:center}.brand{gap:9px;font-family:var(--disp);font-weight:700;font-size:15px;color:var(--ink);text-decoration:none}.brand .mark{width:16px;height:16px;border-left:3px solid var(--amber);border-top:3px solid var(--amber);border-right:3px solid transparent;border-bottom:3px solid transparent;border-radius:2px}.topbar nav{display:flex;align-items:center;gap:14px;font-size:13px}.linklike{background:none;border:0;color:var(--cyan);cursor:pointer;padding:0}.langswitch{display:inline-flex;border:1px solid var(--line);border-radius:3px;overflow:hidden}.langswitch button{display:inline-flex;align-items:center;gap:5px;border:0;background:var(--panel-2);padding:3px 7px;cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--ink-2)}.langswitch .flag{font-size:13px;line-height:1;font-family:"Noto Color Emoji","Segoe UI Emoji","Apple Color Emoji",var(--sans)}.langswitch button:focus-visible{outline-offset:-2px}.langswitch button[aria-pressed=true]{background:var(--amber);color:var(--on-amber)}.foot{display:flex;gap:14px;justify-content:space-between;flex-wrap:wrap;padding:22px 20px 40px;color:var(--ink-3);font-size:12px;border-top:1px solid var(--line);margin-top:40px}.wrap{max-width:1480px;margin:0 auto;padding:20px}.wrap.narrow{max-width:820px}.wrap.wide{max-width:none;padding:20px 15px}.pagehead{margin-bottom:18px}.pagehead.row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.pagehead h1{font-size:clamp(22px,3vw,32px);font-weight:700}.lede{color:var(--ink-2);max-width:65ch;margin:6px 0 0}.subhead{font-family:var(--disp);font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin:22px 0 8px}.subhead.row{justify-content:space-between}.subhead .btn-mini{text-transform:none;letter-spacing:normal}.fine{font-size:12px;color:var(--ink-3);margin:4px 0}.fine.ok{color:var(--ok)}.quoteblock{border-left:3px solid var(--line);padding:6px 0 6px 12px;color:var(--ink-2);margin:10px 0}.cfg{display:grid;grid-template-columns:290px minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}@media (max-width:940px){.cfg{grid-template-columns:1fr}}.rail{display:flex;flex-direction:column;gap:10px;position:-webkit-sticky;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.rail>*{flex-shrink:0}@media (max-width:940px){.rail{position:static;max-height:none;overflow:visible}}.grp{background:var(--panel);border:1px solid var(--line);border-radius:5px;overflow:hidden}.grp>h3{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;padding:9px 12px;background:var(--panel-2);border-bottom:1px solid var(--line-2);color:var(--ink-2)}.grp-body{padding:10px 12px;display:flex;flex-direction:column;gap:9px}.ctl{display:grid;grid-template-columns:1fr 78px;grid-gap:8px;gap:8px;align-items:center}.ctl.full{grid-template-columns:1fr}.ctl label{font-size:12.5px;color:var(--ink-2)}.ctl label b{color:var(--ink);font-weight:500;display:block}.ctl label i{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--ink-3)}.ctl label i.snap{color:var(--amber)}.ctl input[type=number],.ctl select{width:100%;padding:5px 7px;border:1px solid var(--line);border-radius:3px;background:var(--panel-2);font-family:var(--mono);font-size:12.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ctl input[type=number]{text-align:right}.ctl select{font-family:var(--sans)}.ctl-note{font-size:11.5px;color:var(--ink-3);margin:-2px 0 0}.seg-label{font-size:12.5px;color:var(--ink-2);display:block;margin-bottom:5px}.segs{display:flex;border:1px solid var(--line);border-radius:3px;overflow:hidden}.segs button{flex:1 1;padding:6px 4px;background:var(--panel-2);border:0;border-right:1px solid var(--line-2);cursor:pointer;font-size:11.5px;font-family:var(--disp);font-weight:500;color:var(--ink-2)}.segs button:last-child{border-right:0}.segs button[aria-pressed=true]{background:var(--amber);color:var(--on-amber);font-weight:600}.chk{display:flex;align-items:center;gap:8px;font-size:12.5px;cursor:pointer}.chk input{accent-color:var(--amber);width:15px;height:15px}.presets{display:flex;gap:6px;flex-wrap:wrap}.presets button{padding:5px 9px;border:1px solid var(--line);background:var(--panel-2);border-radius:3px;cursor:pointer;font-size:11.5px}.presets button:hover{border-color:var(--amber);color:var(--amber)}.main{display:flex;flex-direction:column;gap:16px;min-width:0}.view{position:relative;background:linear-gradient(170deg,var(--view-1),var(--view-2));border:1px solid var(--line);border-radius:5px;overflow:hidden;box-shadow:var(--shadow)}.view canvas{display:block;width:100%;height:clamp(340px,48vh,540px);cursor:-webkit-grab;cursor:grab;touch-action:none}.view canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.hud{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:5px;pointer-events:none}.hud span{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);background:color-mix(in srgb,var(--panel) 78%,transparent);padding:3px 7px;border-radius:3px;align-self:flex-start;border:1px solid var(--line-2)}.viewbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:9px 12px;border-top:1px solid var(--line);background:var(--panel)}.viewbar .sp{flex:1 1}.viewbar label{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.viewbar input[type=range]{width:110px;accent-color:var(--amber)}.vw-btn{position:absolute;right:12px;top:12px;z-index:2}.vw-btn[aria-pressed=true]{background:var(--amber);color:var(--on-amber);border-color:var(--amber)}.vw-overlay{position:absolute;left:0;top:0;pointer-events:none;overflow:hidden;font-family:var(--mono);z-index:1}.vw-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.vw-line-halo{stroke:var(--panel);stroke-width:4;stroke-linecap:round}.vw-line{stroke:var(--amber);stroke-width:1.5}.vw-dot{fill:var(--amber);stroke:var(--panel);stroke-width:1.5}.vw-snap{fill:none;stroke:var(--amber);stroke-width:1.5;stroke-dasharray:3 2}.vw-snap-dot{fill:var(--amber)}.vw-hover,.vw-tag{position:absolute;left:0;top:0;white-space:nowrap;font-size:10.5px;letter-spacing:.04em;color:var(--ink);background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--line-2);border-radius:3px;padding:2px 6px}.vw-tag{margin:-10px 0 0 10px;color:var(--amber);font-weight:600}.vw-hover{margin:-28px 0 0 14px;color:var(--ink-2)}.vw-readout{position:absolute;right:12px;top:44px;min-width:230px;max-width:calc(100% - 24px);font-size:11px;color:var(--ink);background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--line-2);border-radius:3px;padding:6px 9px;display:flex;flex-direction:column;gap:3px}.vw-row{display:grid;grid-template-columns:2.2em repeat(3,1fr);grid-gap:0 8px;gap:0 8px}.vw-row b{color:var(--ink-3);font-weight:500}.vw-row.vw-delta span{color:var(--cyan)}.vw-row.vw-dist{grid-template-columns:auto 1fr;border-top:1px solid var(--line-2);padding-top:3px;margin-top:2px}.vw-row.vw-dist span{color:var(--amber);font-weight:600;text-align:right}.vw-axes,.vw-hint{font-size:10px;color:var(--ink-3);letter-spacing:.04em}.vw-axes,.vw-exploded-note{border-top:1px solid var(--line-2);padding-top:3px;margin-top:2px}.vw-exploded-note{font-size:10px;color:var(--warn);letter-spacing:.04em}.vw-overlay.vw-exploded .vw-row.vw-dist span,.vw-overlay.vw-exploded .vw-tag{color:var(--ink-3)}@media (max-width:560px){.vw-readout{min-width:0;right:8px;top:40px}.vw-btn{right:8px;top:8px}}.sheetpanel{background:var(--panel);border:1px solid var(--line);border-radius:5px;overflow:hidden;box-shadow:var(--shadow)}.tabs{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--line);background:var(--panel-2)}.tabs button{padding:11px 16px;background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;font-family:var(--disp);font-weight:600;font-size:12.5px;color:var(--ink-3);white-space:nowrap}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--amber)}.count{font-family:var(--mono);font-size:10px;padding:1px 5px;border-radius:8px;background:var(--line-2);margin-left:6px;color:var(--ink-2)}.count.warn{background:var(--danger-soft);color:var(--danger)}.pane{padding:16px 18px}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12.5px}th{text-align:left;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-weight:500;padding:0 10px 7px 0;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:7px 10px 7px 0;border-bottom:1px solid var(--line-2);vertical-align:top}tbody tr:last-child td{border-bottom:0}.num{font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.num,th.num{text-align:right}.dim{color:var(--ink-3);font-size:11.5px}.pname{font-weight:500}.pnote{color:var(--ink-3);font-size:11.5px;display:block;margin-top:1px;font-weight:400}tfoot td{border-top:1px solid var(--ink);border-bottom:0;padding-top:9px;font-weight:600}tr.unseen{background:color-mix(in srgb,var(--amber-soft) 55%,transparent)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--amber);margin-right:7px}.planwrap{border:1px solid var(--line);border-radius:4px;background:var(--panel-2);padding:10px;margin-bottom:14px;overflow:hidden}.plan{display:block;width:100%;height:auto;max-height:min(56vh,500px);touch-action:none}.pl-top{fill:var(--panel);stroke:var(--ink);stroke-width:3}.pl-rail{fill:var(--ink-3);opacity:.28}.pl-brace{fill:var(--danger);opacity:.22;stroke:var(--danger);stroke-width:2;stroke-dasharray:10 7}.pl-runner{stroke:var(--ink-3);stroke-width:2.5;opacity:.5}.pl-runner.on{stroke:var(--ink-2);opacity:.6}.pl-runner.off{stroke-dasharray:9 9;opacity:.22}.pl-runner.fixed{stroke:var(--danger);opacity:.45}.pl-run{cursor:pointer;outline:none}.pl-run.fixed{cursor:not-allowed}.pl-hit{stroke:transparent;stroke-width:26}.pl-run:focus-visible .pl-runner,.pl-run:hover .pl-runner{stroke:var(--amber);opacity:.95}.pl-run.fixed:focus-visible .pl-runner,.pl-run.fixed:hover .pl-runner{stroke:var(--danger);opacity:.6}.pl-top.shelf{stroke-dasharray:14 9;fill:var(--panel-2)}.pl-levels{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.pl-level{padding:5px 10px;border:1px solid var(--line);border-radius:3px;background:var(--panel-2);font-family:var(--mono);font-size:11px;color:var(--ink-2);cursor:pointer}.pl-level.on{background:var(--panel);color:var(--ink);border-color:var(--ink-3)}.pl-count{margin:-6px 0 12px;font-size:11px;color:var(--ink-3);font-family:var(--mono)}.pl-bolt{fill:none;stroke:var(--amber);stroke-width:2.5}.pl-edge{fill:var(--ink);font-family:var(--mono);font-size:22px;letter-spacing:.1em;text-anchor:middle}.pl-plate{cursor:-webkit-grab;cursor:grab}.pl-plate.drag{cursor:-webkit-grabbing;cursor:grabbing}.pl-ledge{fill:var(--amber);fill-opacity:.3;stroke:var(--amber);stroke-width:3}.pl-open{fill:var(--panel-2);stroke:var(--cyan);stroke-width:3;stroke-dasharray:14 9}.pl-plate.bad .pl-ledge{fill:var(--danger);fill-opacity:.34;stroke:var(--danger)}.pl-plate.bad .pl-open{stroke:var(--danger)}.pl-num{font-family:var(--disp);font-weight:700;font-size:46px}.pl-dim,.pl-num{fill:var(--ink);text-anchor:middle}.pl-dim{font-family:var(--mono);font-size:20px}.pl-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.pl-head .pl-levels{margin-bottom:0}.pl-dimswitch{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--ink-3)}.pl-dimlayer{pointer-events:none}.pl-dim-line{fill:none;stroke:var(--ink-3);stroke-width:1.2;opacity:.55}.pl-dim-line.ext{opacity:.42;stroke-dasharray:10 8}.pl-dim-text{fill:var(--ink);font-family:var(--mono);font-size:18px;letter-spacing:.06em;text-anchor:middle}.elev{display:block;width:100%;height:auto;max-height:min(62vh,560px)}.el-floor{stroke:var(--ink);stroke-width:4}.el-leg{fill:var(--ink-3);opacity:.42;stroke:var(--ink);stroke-width:2}.el-leg.centre{opacity:.26}.el-rail{fill:var(--ink-3);opacity:.28;stroke:var(--ink-3);stroke-width:2}.el-brace{fill:var(--danger);opacity:.22;stroke:var(--danger);stroke-width:2}.el-deck{fill:var(--amber);opacity:.28;stroke:var(--amber);stroke-width:2}.el-top{fill:var(--panel);stroke:var(--ink);stroke-width:3}.el-lift{fill:var(--ink);opacity:.55}.el-lift.foot{opacity:.38}.el-dimtoggle{margin:-6px 0 12px}.sw-elev-top{background:var(--ink)}.sw-elev-leg{background:var(--ink-3)}.sw-elev-deck{background:var(--amber)}.sw-elev-lift{background:var(--ink);opacity:.55}.platelist{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:10px;gap:10px}.pcard{border:1px solid var(--line);border-left:3px solid var(--ok);border-radius:3px;padding:10px 12px;background:var(--panel-2)}.pcard.bad{border-left-color:var(--danger)}.pcard h4{margin:0 0 7px;font-size:13px;font-weight:600}.pcard p{margin:7px 0 0;font-size:11.5px;color:var(--ink-2)}.prow{display:flex;align-items:center;gap:6px}.prow label{font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}.pruns{margin-top:8px;padding-top:7px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:5px}.pruns h5{margin:0;font-family:var(--disp);font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}.pruns .chk{font-size:12px}.pcard .pruns p.fine{margin:1px 0 0;font-size:11px;color:var(--ink-3)}.prow input{width:100%;min-width:0;padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:var(--panel);font-size:12px;text-align:right}.legend,.prow input{font-family:var(--mono)}.legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-bottom:14px;font-size:10.5px;color:var(--ink-2)}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:14px;height:3px;border-radius:2px;display:block}.sw-plate{background:var(--amber)}.sw-open{background:var(--cyan)}.sw-rail{background:var(--ink-3)}.sw-brace{background:var(--danger)}.sw-runner-off{background:var(--ink-3);opacity:.3}.sw-runner{background:var(--ink-3);opacity:.6}.sw-runner-fixed{background:var(--danger);opacity:.6}.alerts{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.alert{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border-radius:4px;font-size:12.5px;border:1px solid}.alert.err{background:var(--danger-soft);border-color:var(--danger)}.alert.ok{background:var(--ok-soft);border-color:var(--ok)}.alert.info{background:var(--cyan-soft);border-color:var(--cyan)}.alert.warn{background:var(--warn-soft);border-color:var(--warn)}.alert .tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;padding:2px 6px;border-radius:2px;background:var(--panel);flex:none;margin-top:1px}.alert ul{margin:4px 0 0;padding-left:18px}.notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:12px;gap:12px}.note{border:1px solid var(--line);border-left:3px solid var(--cyan);border-radius:3px;padding:11px 13px;background:var(--panel-2)}.note.good{border-left-color:var(--ok)}.note h4{margin:0 0 4px;font-size:13px;font-weight:600}.note p{margin:0;font-size:12.5px;color:var(--ink-2)}.nest{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.nest figure{margin:0}.nest figcaption{font-family:var(--mono);font-size:10.5px;color:var(--ink-3);margin-bottom:5px}.nest svg{width:100%;height:auto;max-height:200px;border:1px solid var(--line);border-radius:3px;background:var(--panel-2);display:block}.exports{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:12px;gap:12px}.exp{border:1px solid var(--line);border-radius:4px;padding:13px;background:var(--panel-2);display:flex;flex-direction:column;gap:7px}.exp h4{margin:0;font-size:13.5px;font-weight:600}.exp p{margin:0;font-size:12px;color:var(--ink-2);flex:1 1}.btn-mini,.btn-primary,.btn-secondary{border-radius:3px;cursor:pointer;font-family:var(--disp);font-weight:600;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.btn-primary{padding:8px 14px;border:1px solid var(--amber);background:var(--amber);color:var(--on-amber);font-size:13px}.btn-primary:hover{filter:brightness(1.08)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;filter:none}.btn-secondary{padding:7px 12px;font-size:12.5px}.btn-mini,.btn-secondary{border:1px solid var(--line);background:var(--panel-2);color:var(--ink)}.btn-mini{padding:4px 10px;font-size:11.5px;font-family:var(--mono);font-weight:400}.btn-mini:hover{border-color:var(--cyan);color:var(--cyan)}.btn-mini.danger:hover{border-color:var(--danger);color:var(--danger)}.btn-primary.wide{width:100%}.card{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:16px;box-shadow:var(--shadow)}.card.sticky{position:-webkit-sticky;position:sticky;top:16px}.card h2{font-size:15px;margin-bottom:10px}.card h3{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin:16px 0 8px}.stack{flex-direction:column;gap:12px}.row,.stack{display:flex}.row{align-items:center}.row.gap{gap:10px;flex-wrap:wrap}label>span{display:block;font-size:12px;color:var(--ink-2);margin-bottom:4px}label>span em{font-style:normal;color:var(--ink-3);font-size:11px}input[type=date],input[type=email],input[type=number],input[type=password],input[type=text],select,textarea{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:3px;background:var(--panel-2);font-size:13px}textarea{font-family:var(--sans);resize:vertical}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:10px;gap:10px}.factgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:0;gap:0;border:1px solid var(--line);border-radius:4px;overflow:hidden;margin:0 0 18px}.factgrid>div{padding:10px 12px;border-right:1px solid var(--line-2);background:var(--panel)}.factgrid>div:last-child{border-right:0}.factgrid dt{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.factgrid dd{margin:3px 0 0;font-size:14px;font-weight:500}.twocol{display:grid;grid-template-columns:minmax(0,1fr) 330px;grid-gap:20px;gap:20px;align-items:start}@media (max-width:900px){.twocol{grid-template-columns:1fr}}.pill{display:inline-block;padding:2px 9px;border-radius:10px;font-size:11px;font-family:var(--mono);background:var(--line-2);color:var(--ink-2)}.pill.s-new,.pill.warn{background:var(--amber-soft);color:var(--amber)}.pill.s-confirmed,.pill.s-in_production{background:var(--cyan-soft);color:var(--cyan)}.pill.s-delivered,.pill.s-ready{background:var(--ok-soft);color:var(--ok)}.pill.s-cancelled{background:var(--danger-soft);color:var(--danger)}.events{list-style:none;padding:0;margin:0;font-size:12px}.events li{display:flex;gap:10px;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--line-2)}.events time{font-family:var(--mono);color:var(--ink-3)}.events code{color:var(--ink-3);font-size:11px}.keylist{list-style:none;padding:0;margin:0 0 12px}.keylist li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-2)}.keylist li b{flex:1 1;font-weight:500}.keylist li span{font-family:var(--mono);font-size:11px;color:var(--ink-3)}.qr{border:1px solid var(--line);border-radius:4px;background:#fff;align-self:flex-start}.secret{font-family:var(--mono);font-size:12px;padding:6px 8px;border-radius:3px;border:1px solid var(--line);word-break:break-all}.adminnav,.secret{background:var(--panel-2)}.adminnav{display:flex;gap:4px;padding:8px 20px;border-bottom:1px solid var(--line)}.adminnav a{padding:6px 12px;border-radius:3px;font-size:13px;text-decoration:none;color:var(--ink-2);display:inline-flex;align-items:center;gap:7px}.adminnav a:hover{background:var(--panel);color:var(--ink)}.badge{background:var(--amber);color:var(--on-amber);border-radius:9px;padding:1px 7px;font-size:11px;font-family:var(--mono)}.cfg-host{margin-bottom:24px}.basket{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:18px;box-shadow:var(--shadow)}.basket-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px}.basket-head h2{font-size:17px}.qty{width:64px;padding:4px 6px;text-align:right;font-family:var(--mono)}td.actions{display:flex;gap:6px;justify-content:flex-end}.orderform{margin-top:20px;border-top:1px solid var(--line);padding-top:18px}.orderform h3{font-size:15px;font-family:var(--disp);margin-bottom:12px}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:12px;gap:12px}.fields .wide{grid-column:1/-1}.submitrow{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:16px}.grand{display:flex;align-items:baseline;gap:10px}.grand span{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.grand strong{font-family:var(--mono);font-size:24px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.quote dl{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:4px;overflow:hidden;margin:0 0 12px}.quote dl>div{display:flex;justify-content:space-between;gap:16px;padding:9px 14px;border-bottom:1px solid var(--line-2);background:var(--panel)}.quote dl>div:last-child{border-bottom:0}.quote dl>div.grand{background:var(--amber-soft)}.quote dt{color:var(--ink-2);font-size:13px}.quote dd{margin:0;font-family:var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.quote dl>div.grand dd{font-size:19px}.quote dd.was{text-decoration:line-through;color:var(--ink-3);font-weight:400}.quote dl>div.off dd{color:var(--ok)}.done{text-align:center;padding:60px 20px}.done h1{font-size:28px;margin-bottom:10px}.orderno{font-family:var(--mono);font-size:16px;margin:18px 0}.loading{text-align:center;padding:40px}.idx{color:var(--ink-3);font-family:var(--mono);margin-right:6px}.labelinput{display:inline-block;width:auto;min-width:180px;max-width:100%;padding:3px 6px;border:1px solid transparent;border-radius:3px;background:transparent;font-weight:500;font-size:12.5px}.labelinput:hover{border-color:var(--line)}.labelinput:focus{border-color:var(--cyan);background:var(--panel-2)}.stock-short{color:var(--danger);font-weight:600}.stock-ok{color:var(--ok)}.stockblock,.stockcheck{margin:14px 0 6px}.stockblock h3,.stockcheck h3{margin:0 0 6px;font-size:14px}table.compact td,table.compact th{padding:4px 8px}.purchase{padding:10px 0;border-top:1px solid var(--line-2)}.purchase .lines{margin:6px 0 0;padding-left:18px}.row.wrap{flex-wrap:wrap}.grow{flex:1 1 auto}details.card summary{cursor:pointer;font-weight:600}.danger-zone{margin-top:14px;border-color:var(--danger)}.danger-zone label{display:block;margin:8px 0}.danger-zone .typed,.draftstatus{font-family:var(--mono)}.draftstatus{font-size:12px;margin:-4px 0 10px;color:var(--ink-3)}.draftstatus.saved{color:var(--ok)}.draftstatus.error{color:var(--danger);font-weight:600}.alert .grow{flex:1 1 auto}.alert.banner{align-items:center;font-size:13.5px}.alert.banner,.draftnotices{margin:0 0 16px}.draftnotice{align-items:center}.draftnotice .pnote{display:block}.handoff{margin:0 0 16px;border-color:var(--ok)}tr.deleted td{color:var(--ink-3)}.files-tr td{padding-top:0}tr:has(+.files-tr) td{border-bottom:0}.cutfrom{margin:2px 0 6px}.bfiles{margin:2px 0 8px}.bfiles summary{cursor:pointer;font-size:12px;color:var(--ink-2)}.bfiles summary b{font-weight:600;color:var(--ink)}.bfiles .body{padding:10px 0 4px;display:flex;flex-direction:column;gap:14px}.bfiles h4{margin:0 0 6px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3)}.filerow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px}.filerow .fname{font-family:var(--mono);font-size:12px;word-break:break-all}.thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.thumb{margin:0;width:112px}.thumb img{width:112px;height:84px;object-fit:cover;display:block;border:1px solid var(--line);border-radius:3px;background:var(--panel-2)}.thumb .tools{display:flex;gap:3px;margin-top:3px}.thumb .tools .btn-mini{padding:2px 6px}.progress{flex:1 1 160px;max-width:320px;height:4px;background:var(--line-2);border-radius:2px;overflow:hidden}.progress i{display:block;height:100%;background:var(--amber)}.rgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));grid-gap:18px;gap:18px;margin-top:22px}.rcard{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:5px;overflow:hidden;box-shadow:var(--shadow)}.rcard .view{border:0;border-radius:0;height:260px}.rcard .view canvas{height:100%}.rcard-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px}.rcard-body h2{font-size:17px}.rcard-body .factgrid{grid-template-columns:repeat(2,1fr)}.rprice{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.rprice .was{text-decoration:line-through;color:var(--ink-3);font-family:var(--mono)}.rprice strong{font-family:var(--mono);font-size:22px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pstrip{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.pstrip button{flex:none;padding:0;border:1px solid var(--line);border-radius:3px;background:none;cursor:pointer;overflow:hidden}.pstrip button:hover{border-color:var(--cyan)}.pstrip img{display:block;width:96px;height:72px;object-fit:cover}.lightbox{position:fixed;inset:0;z-index:50;justify-content:center;background:rgba(0,0,0,.84)}.lightbox,.lightbox figure{display:flex;align-items:center}.lightbox figure{margin:0;flex-direction:column;gap:8px}.lightbox img{max-width:92vw;max-height:84vh;object-fit:contain;display:block}.lightbox figcaption{color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.08em}.lightbox button{position:absolute;border:0;background:rgba(0,0,0,.5);color:#fff;font-size:30px;line-height:1;width:48px;height:48px;border-radius:24px;cursor:pointer}.lightbox button:hover{background:var(--amber);color:var(--on-amber)}.lightbox .lb-close{top:14px;right:14px}.lightbox .lb-prev{left:14px;top:50%;transform:translateY(-50%)}.lightbox .lb-next{right:14px;top:50%;transform:translateY(-50%)}@media (prefers-reduced-motion:no-preference){.lightbox{animation:lb-in .15s ease-out}}@keyframes lb-in{0%{opacity:0}to{opacity:1}}.ctl input:disabled,.ctl select:disabled,.segs button:disabled{opacity:.55;cursor:not-allowed}.ctl-note.locked,.grp.ready>h3{color:var(--amber)}.grp.ready>h3{background:var(--amber-soft)}.mats{margin:10px 0 14px}.mat{padding:12px 0 10px;border-top:1px solid var(--line-2)}.mat:first-child{border-top:0}.mat-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin-bottom:8px}.mat-row label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-3)}.mat-row label.grow{flex:1 1 240px}.mat-row input,.mat-row select{padding:5px 7px;border:1px solid var(--line);border-radius:3px;background:var(--panel);color:var(--ink);font-size:13.5px;min-width:0}.mat-row input[type=number]{width:110px;font-family:var(--mono);text-align:right}.mat-row select{min-width:200px}.mat-row .btn-mini{align-self:flex-end;margin-bottom:2px}.mat-uses{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;padding-bottom:6px}.mat-uses>span{font-size:12px;color:var(--ink-3)}.mat-uses .chk{display:inline-flex}.mat-row .pnote{align-self:flex-end;padding-bottom:8px}.landing{max-width:1180px;margin:0 auto;padding:0 20px 8px}.hero-sec{padding:44px 0 0}.hsec{margin-top:60px;padding-top:52px;border-top:1px solid var(--line-2)}.hsec-head{max-width:62ch}.hsec-head h2{font-size:clamp(21px,3.2vw,33px);font-weight:700;line-height:1.12}.hsec-head .lede{font-size:15px;margin-top:10px}.eyebrow{display:flex;align-items:center;gap:9px;margin:0 0 13px;color:var(--ink-2);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase}.eyebrow:before{content:"";flex:none;width:18px;height:2px;background:var(--amber)}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);grid-gap:42px;gap:42px;align-items:center}.hero h1{font-size:clamp(30px,5.2vw,50px);line-height:1.06;letter-spacing:-.025em;font-weight:700}.hero-lede{margin:16px 0 0;max-width:52ch;font-size:clamp(14.5px,1.4vw,17px);color:var(--ink-2)}.ctarow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:26px 0 0}.ctarow .btn-primary{padding:12px 22px;font-size:15px}.ctarow .btn-secondary{padding:12px 18px;font-size:14px}@media (max-width:920px){.hero{grid-template-columns:1fr;gap:30px}}.hero-art{padding:14px;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--panel);box-shadow:var(--shadow);background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:22px 22px}.build-art svg,.hero-art svg{display:block;width:100%;height:auto}@media (max-width:600px){.hero-art .dims{display:none}}.dw-line{fill:none}.dw-line,.dw-panel{stroke:var(--ink);stroke-width:2;stroke-linejoin:round}.dw-panel{fill:var(--panel-2)}.dw-solid{fill:var(--view-1);stroke:var(--ink);stroke-width:2}.dw-skin{stroke:var(--amber);stroke-width:1.5}.dw-hatch{stroke:var(--amber);stroke-width:1.4;opacity:.6}.dw-hidden{fill:none;stroke:var(--ink-3);stroke-width:1.4;stroke-dasharray:7 5}.dw-floor{fill:none;stroke:var(--line);stroke-width:2.5}.dw-plate{fill:var(--cyan-soft);stroke:var(--cyan);stroke-width:2}.dw-cut{fill:none;stroke:var(--cyan);stroke-width:1.8;stroke-dasharray:7 5}.dw-arrow{fill:var(--cyan);stroke:none}.dw-fixing{fill:var(--amber);stroke:var(--amber);stroke-width:2.4;stroke-linecap:round}.dw-fixing circle{fill:var(--panel)}.dw-dim{fill:none;stroke:var(--ink-3);stroke-width:1.2}.dw-dimtext{fill:var(--ink-2);font-family:var(--mono);font-size:15px;letter-spacing:.06em;text-anchor:middle}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));grid-gap:1px;gap:1px;margin:38px 0 0;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:var(--line)}.facts>div{padding:15px 17px;background:var(--panel)}.facts dt{font-family:var(--disp);font-size:14px;font-weight:700}.facts dd{margin:4px 0 0;font-size:12.5px;color:var(--ink-2)}.optgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));grid-gap:14px;gap:14px;list-style:none;margin:28px 0 0;padding:0}.optcard{padding:16px 17px 18px;background:var(--panel);border:1px solid var(--line);border-radius:5px}.optcard svg{display:block;width:26px;height:26px;margin-bottom:12px;color:var(--amber)}.optcard h3{margin-bottom:6px;font-size:14.5px;font-weight:600}.optcard p{margin:0;font-size:13px;color:var(--ink-2)}.build{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);grid-gap:34px;gap:34px;align-items:start;margin-top:28px}.build-art{padding:16px;background:var(--panel-2);border:1px solid var(--line);border-radius:5px}.buildlist{list-style:none;margin:0;padding:0}.buildlist li{padding:14px 0;border-top:1px solid var(--line-2)}.buildlist li:first-child{padding-top:0;border-top:0}.buildlist h3{margin-bottom:5px;font-size:14.5px;font-weight:600}.buildlist p{margin:0;font-size:13.5px;color:var(--ink-2)}@media (max-width:860px){.build{grid-template-columns:1fr;gap:24px}}.steplist{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));grid-gap:18px;gap:18px;list-style:none;counter-reset:step;margin:30px 0 0;padding:0}.steplist li{position:relative;counter-increment:step;padding-top:20px;border-top:2px solid var(--amber)}.steplist li:before{content:counter(step,decimal-leading-zero);position:absolute;top:-11px;left:0;padding-right:9px;background:var(--bg);font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink)}.steplist h3{margin-bottom:6px;font-size:14.5px;font-weight:600}.steplist p{margin:0;font-size:13.5px;color:var(--ink-2)}.closer{position:relative;overflow:hidden;margin:60px 0 0;padding:clamp(28px,5vw,48px) clamp(20px,4vw,40px);text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow)}.closer:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--amber)}.closer h2{max-width:21ch;margin:0 auto;font-size:clamp(21px,3.4vw,34px);line-height:1.12;font-weight:700}.closer .lede{max-width:56ch;margin:12px auto 0;font-size:15px}.closer .ctarow{justify-content:center;margin-top:24px}.closer .fine{margin-top:16px;color:var(--ink-2)}.disc{margin:4px 0 10px}.disc .ladder{display:flex;height:14px;border:1px solid var(--line);border-radius:3px;overflow:hidden;background:var(--panel-2)}.disc .seg{display:flex;min-width:0}.disc .seg i{display:block;height:100%}.disc .seg .kept{opacity:.85}.disc .seg .eaten{background-image:repeating-linear-gradient(135deg,transparent 0 3px,rgba(255,255,255,.55) 3px 5px);opacity:.6}.disc .t-margin i{background-color:var(--ok)}.disc .t-toolpath i{background-color:var(--amber)}.disc .t-hardware i{background-color:var(--cyan)}.disc .t-materials i{background-color:var(--ink-3)}.disc .t-consumables i{background-color:var(--warn)}.disc.below .seg .eaten{background-color:var(--danger);opacity:.9}.disc .tiers{display:flex;flex-wrap:wrap;gap:4px 16px;margin:5px 0 0;font-size:11.5px;color:var(--ink-2)}.disc .tiers span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.disc .tiers span:before{content:"";width:9px;height:9px;border-radius:2px;background:var(--tier,var(--ink-3))}.disc .tiers .t-margin{--tier:var(--ok)}.disc .tiers .t-toolpath{--tier:var(--amber)}.disc .tiers .t-hardware{--tier:var(--cyan)}.disc .tiers .t-materials{--tier:var(--ink-3)}.disc .tiers .t-consumables{--tier:var(--warn)}.disc .tiers b{font-family:var(--mono);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink)}.disc.below .tiers .gone b{color:var(--danger);text-decoration:line-through}.disc .tiers .gone b,.disc .tiers .part b{color:var(--danger)}.disc .strip{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;font-size:12px;color:var(--ink-2);margin-bottom:4px}.disc .strip b{font-family:var(--mono);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink)}.disc .strip .net{color:var(--ok)}.disc.below .strip .net{color:var(--danger)}.disc .ctl-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}.disc .ctl-row input[type=number]{width:96px;font-family:var(--mono);text-align:right}.disc .ctl-row input[type=number],.disc .ctl-row select{padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:var(--panel);color:var(--ink)}.disc .ctl-row select,.disc .reason{font-size:12.5px}.disc .reason{flex:1 1 220px;min-width:0;padding:4px 7px;border:1px solid var(--line);border-radius:3px;background:var(--panel);color:var(--ink)}.disc .reason.required{border-color:var(--danger);background:var(--danger-soft)}.disc .why{font-size:11.5px;color:var(--ink-3)}.disc .why.below{font-weight:600}.disc .why.below,.factgrid dd.neg{color:var(--danger)}.factgrid dd.pos{color:var(--ok)}.disc-order{margin:12px 0 4px}