:root{color-scheme:dark;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--bg: #0d1317;--workspace: #11191e;--panel: #182229;--panel-raised: #202c34;--panel-soft: #151e24;--line: #344149;--line-soft: #28343b;--text: #edf2f5;--muted: #9aa8b0;--dim: #6f7c84;--orange: #ff7818;--orange-soft: #b65417;--cyan: #1ab7d3;--violet: #a991d8;--danger: #f45f61;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--orange);outline-offset:1px}.boot-screen,.fatal-error{height:100%;display:grid;place-content:center;grid-template-columns:auto auto;gap:16px;color:var(--muted);background:radial-gradient(circle at 50% 42%,#18232a,var(--bg) 45%)}.boot-screen strong,.fatal-error b{display:block;color:var(--text);font-size:22px;letter-spacing:-.02em}.boot-screen span,.fatal-error small{display:block;margin-top:5px;font-size:12px}.fatal-error p{max-width:560px;color:#ffc2c3}.brand-mark{width:34px;height:34px;display:grid;place-content:center;background:var(--orange);color:#111;font-weight:950;font-style:italic;clip-path:polygon(0 0,100% 0,82% 100%,18% 100%)}.app-shell{height:100%;min-width:980px;display:grid;grid-template-columns:282px minmax(420px,1fr) 268px;grid-template-rows:54px minmax(0,1fr) 62px;grid-template-areas:"top top top" "left work right" "bottom bottom bottom";background:var(--bg)}.topbar{grid-area:top;position:relative;z-index:20;display:grid;grid-template-columns:205px auto minmax(180px,1fr) auto;align-items:center;gap:18px;padding:0 12px 0 14px;border-bottom:1px solid var(--line);background:#121a1f;box-shadow:0 2px 9px #0007}.brand-block{display:flex;align-items:center;gap:9px}.brand-block .brand-mark{width:28px;height:28px;font-size:15px}.brand-block strong{display:block;font-size:15px;line-height:1.05;letter-spacing:-.01em}.brand-block span{display:block;margin-top:3px;color:var(--dim);font:700 8px/1 ui-monospace,SFMono-Regular,monospace;letter-spacing:.1em}.project-actions,.export-actions{display:flex;align-items:center;gap:4px}.project-title{justify-self:center;display:flex;align-items:center;gap:8px;min-width:0}.project-title label{color:var(--dim);font:700 9px/1 ui-monospace,monospace;letter-spacing:.12em}.project-title input{width:min(30vw,330px);padding:7px 10px;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--text);text-align:center;font-weight:650}.project-title input:hover,.project-title input:focus{border-color:var(--line);background:var(--panel-soft)}.button{min-height:30px;border:1px solid var(--line);border-radius:3px;padding:0 11px;background:var(--panel-raised);color:#dbe3e7;font-size:11px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .15s}.button:hover{background:#29363e;border-color:#4b5b65;color:#fff}.button:active{transform:translateY(1px)}.button:disabled{cursor:wait;filter:saturate(.4)}.button.ghost{background:transparent;border-color:transparent;color:#aeb9bf}.button.ghost:hover{background:var(--panel-raised);border-color:var(--line);color:#fff}.button.primary{min-height:32px;background:var(--orange);border-color:#ff8b36;color:#170d05;padding-inline:18px;box-shadow:inset 0 1px #ffad75}.button.primary:hover{background:#ff8a32}.button.wide{width:100%;min-height:34px}.panel{min-width:0;background:var(--panel)}.left-panel{grid-area:left;position:relative;z-index:10;border-right:1px solid var(--line);overflow:hidden}.right-panel{grid-area:right;position:relative;z-index:10;border-left:1px solid var(--line);overflow:auto}.pattern-left,.pattern-right,.app-shell[data-mode=patterns] .design-left,.app-shell[data-mode=patterns] .design-right{display:none}.app-shell[data-mode=patterns] .pattern-left,.app-shell[data-mode=patterns] .pattern-right{display:block}.tab-strip{display:grid;grid-template-columns:repeat(3,1fr);padding:7px;gap:2px;border-bottom:1px solid var(--line-soft);background:#141d23}.tab{border:0;border-radius:3px;padding:8px 2px;background:transparent;color:var(--dim);font-size:9px;font-weight:800;cursor:pointer;text-transform:uppercase;letter-spacing:.04em}.tab:hover{color:#c9d3d8;background:#1c272e}.tab.active{background:#29343b;color:#fff;box-shadow:inset 0 -2px var(--orange)}.parameter-scroll{height:calc(100% - 80px);overflow:auto;scrollbar-color:#3f4c54 transparent;scrollbar-width:thin}.parameter-page{display:none;padding:4px 13px 22px}.parameter-page.active{display:block}.section-heading{min-height:38px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-soft);margin-bottom:8px}.section-heading span{color:#e4eaed;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.1em}.section-heading small{color:var(--dim);font-size:9px}.field{min-height:37px;display:grid;grid-template-columns:1fr 122px;align-items:center;gap:8px;border-bottom:1px solid #232e35;color:#b8c2c8;font-size:11px}.field.stacked{grid-template-columns:1fr;gap:5px;padding:8px 0 9px}.field input,.field select,.project-title input,.pattern-browser-head input{min-width:0;border:1px solid #3a4851;border-radius:3px;background:#11191e;color:var(--text)}.field input,.field select{width:100%;height:28px;padding:0 7px;font-size:11px}.field select{appearance:auto}.unit-input{display:grid;grid-template-columns:1fr 33px;align-items:center;border:1px solid #3a4851;border-radius:3px;background:#11191e;overflow:hidden}.unit-input input{border:0;border-radius:0;text-align:right;font-variant-numeric:tabular-nums}.unit-input b{padding-right:6px;color:var(--dim);text-align:right;font-size:9px;font-weight:600}.parameter-callout{display:grid;gap:5px;margin:14px 0 5px;padding:11px 12px;border-left:2px solid var(--orange);background:#1d272e}.parameter-callout.cool{border-left-color:var(--cyan)}.parameter-callout b{color:#e9eef0;font-size:10px}.parameter-callout span{color:var(--muted);font-size:10px;line-height:1.45}.switch-field{min-height:48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #273139;font-size:11px;cursor:pointer}.switch-field span b,.switch-field span small{display:block}.switch-field small{margin-top:3px;color:var(--dim)}.switch-field input{position:absolute;opacity:0}.switch-field i{width:32px;height:17px;position:relative;border-radius:10px;background:#344149;transition:background .15s}.switch-field i:after{content:"";position:absolute;left:2px;top:2px;width:13px;height:13px;border-radius:50%;background:#99a5ac;transition:transform .15s,background .15s}.switch-field input:checked+i{background:#9e4d1b}.switch-field input:checked+i:after{transform:translate(15px);background:var(--orange)}.preset-card{display:grid;gap:4px;margin:12px 0 10px;padding:13px;border:1px solid #4c4037;border-radius:4px;background:linear-gradient(135deg,#2a261f,#1c252b)}.preset-card small{color:var(--orange);font:800 8px/1 ui-monospace,monospace;letter-spacing:.12em}.preset-card b{font-size:12px}.preset-card span{color:var(--muted);font-size:9px}.workspace{grid-area:work;position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--workspace)}.viewport-host{position:absolute;inset:38px 0 0}.pattern-viewport{display:none;background-color:#141d22;background-image:linear-gradient(#ffffff07 1px,transparent 1px),linear-gradient(90deg,#ffffff07 1px,transparent 1px);background-size:20px 20px}.app-shell[data-mode=patterns] .design-viewport{display:none}.app-shell[data-mode=patterns] .pattern-viewport{display:block}.wing-canvas,.pattern-canvas{display:block;width:100%;height:100%;touch-action:none}.viewport-toolbar{position:absolute;z-index:4;inset:0 0 auto;height:38px;display:flex;align-items:center;gap:8px;padding:0 10px;border-bottom:1px solid var(--line-soft);background:#141d22}.pattern-toolbar,.app-shell[data-mode=patterns] .design-toolbar{display:none}.app-shell[data-mode=patterns] .pattern-toolbar{display:flex}.tool-group{display:flex;border:1px solid #334149;border-radius:3px;overflow:hidden}.tool{min-height:25px;border:0;border-right:1px solid #334149;padding:0 9px;background:#1c272e;color:var(--muted);font-size:9px;font-weight:750;cursor:pointer}.tool:last-child{border-right:0}.tool:hover,.tool.active{background:#303d45;color:#fff}.tool.active{box-shadow:inset 0 -2px var(--orange)}.toolbar-hint{margin-left:auto;color:#5f6d75;font:600 9px/1 ui-monospace,monospace}.layer-key{gap:10px;border:0;color:var(--muted);font-size:9px;text-transform:uppercase}.layer-key span:before{content:"";display:inline-block;width:14px;margin-right:4px;border-top:2px solid;vertical-align:middle}.key-cut:before{border-color:#fff!important}.key-seam:before{border-color:var(--orange)!important;border-top-style:dashed!important}.key-mark:before{border-color:var(--cyan)!important}.viewport-overlay{position:absolute;z-index:4;left:11px;bottom:10px;display:flex;gap:8px;align-items:center;pointer-events:none;color:#77858d;font:650 9px/1 ui-monospace,monospace}.axis-pill{padding:5px 7px;border:1px solid #3a464e;border-radius:3px;background:#11191ecc;color:#a6b2b8}.calculation-mask{position:absolute;z-index:12;inset:38px 0 0;display:none;place-content:center;justify-items:center;gap:7px;background:#10171ddd;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:var(--muted);font-size:10px}.calculation-mask.visible{display:grid}.calculation-mask b{color:var(--text);font-size:13px}.spinner{width:28px;height:28px;border:2px solid #40505a;border-top-color:var(--orange);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.inspector-section{padding:0 13px 11px;border-bottom:1px solid var(--line-soft)}.object-inspector{display:grid;justify-items:start;gap:4px;min-height:104px;align-content:center;color:var(--muted);font-size:10px;line-height:1.4}.object-inspector b{color:var(--text);font-size:12px}.selection-icon{width:27px;height:27px;display:grid;place-content:center;border:1px solid #42515a;border-radius:3px;color:var(--orange);font-size:18px}.semantic-tag{max-width:100%;padding:3px 5px;overflow:hidden;border-radius:2px;background:#11191e;color:var(--orange);font:700 8px/1.3 ui-monospace,monospace;text-overflow:ellipsis;white-space:nowrap}.object-inspector dl{width:100%;margin:5px 0 0}.object-inspector dl div,#metrics div,.manufacturing-summary div{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid #28333a}.object-inspector dt,#metrics dt,.manufacturing-summary dt{color:var(--muted)}.object-inspector dd,#metrics dd,.manufacturing-summary dd{margin:0;color:#e2e8eb;text-align:right;font-variant-numeric:tabular-nums}.visibility-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.visibility-grid label{display:flex;align-items:center;gap:6px;min-height:29px;padding:0 6px;border:1px solid #2e3a42;border-radius:3px;background:#151f25;color:#aab5bb;font-size:9px;cursor:pointer}.visibility-grid input{width:11px;height:11px;accent-color:var(--orange)}.swatch{width:7px;height:7px;border-radius:1px;background:#fff}.swatch.orange{background:var(--orange)}.swatch.cyan{background:var(--cyan)}.swatch.violet{background:var(--violet)}.swatch.blue{background:#70bac8}.swatch.gray{background:#65737b}#metrics,.manufacturing-summary{margin:0;font-size:10px}#metrics div{padding:6px 0}.topology-strip{display:grid;grid-template-columns:1fr 1fr;gap:5px}.topology-strip span{padding:8px;border:1px solid #2d3940;border-radius:3px;color:var(--dim);font-size:8px;text-transform:uppercase}.topology-strip b{display:block;margin-bottom:2px;color:#e4e9ec;font-size:13px}.layer-table{display:grid;grid-template-columns:1fr auto;gap:7px 10px;align-items:center;color:var(--muted);font-size:9px}.layer-table span{display:flex;gap:7px;align-items:center;color:#d8dfe3}.layer-table b{color:var(--dim);font-weight:500}.export-stack{display:grid;gap:6px}.pattern-browser-head{display:grid;gap:10px;padding:12px;border-bottom:1px solid var(--line-soft)}.pattern-browser-head>div{display:flex;justify-content:space-between;align-items:baseline}.pattern-browser-head b{font-size:12px}.pattern-browser-head span{color:var(--dim);font-size:9px}.pattern-browser-head input{height:30px;padding:0 9px;font-size:10px}.pattern-filters{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px;border-bottom:1px solid var(--line-soft)}.chip{border:1px solid #35434b;border-radius:10px;padding:4px 8px;background:transparent;color:var(--dim);font-size:8px;font-weight:800;text-transform:uppercase;cursor:pointer}.chip.active{border-color:#9d5726;background:#422818;color:#ff9a55}.pattern-list{height:calc(100% - 112px);overflow:auto;padding:5px;scrollbar-width:thin}.pattern-row{width:100%;min-height:50px;display:grid;grid-template-columns:4px 1fr auto;align-items:center;gap:9px;border:1px solid transparent;border-bottom-color:#263139;border-radius:3px;padding:5px 7px 5px 3px;background:transparent;text-align:left;cursor:pointer}.pattern-row:hover{background:#1d282f}.pattern-row.active{border-color:#704324;background:#2b261f}.pattern-row>i{align-self:stretch;border-radius:2px;background:var(--orange);opacity:.5}.pattern-row.active>i{opacity:1}.pattern-row span b,.pattern-row span small{display:block}.pattern-row span b{color:#dce3e6;font-size:10px}.pattern-row span small{margin-top:4px;color:var(--dim);font-size:8px}.pattern-row em{color:#8c9aa2;font: 750 8px/1 ui-monospace,monospace}.pattern-canvas{cursor:grab}.pattern-canvas:active{cursor:grabbing}.pattern-piece{cursor:pointer;color:var(--orange)}.pattern-piece .cut-path{fill:#202b3159;stroke:#d8e1e5;stroke-width:1.25;vector-effect:non-scaling-stroke}.pattern-piece .seam-path{fill:none;stroke:var(--orange);stroke-width:.9;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.pattern-piece .internal-path{fill:none;stroke:#7b8990;stroke-width:.65;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.pattern-piece .pattern-hole{fill:none;stroke:var(--cyan);stroke-width:.9;vector-effect:non-scaling-stroke}.pattern-piece .pattern-mark{fill:none;stroke:var(--cyan);stroke-width:.8;vector-effect:non-scaling-stroke}.pattern-piece .grain-path{fill:none;stroke:var(--violet);stroke-width:.8;vector-effect:non-scaling-stroke}.pattern-piece .piece-title{fill:#bbc6cc;font:700 10px ui-sans-serif,sans-serif}.pattern-piece .pattern-label{fill:#73828a;font:7px ui-monospace,monospace}.pattern-piece:hover .cut-path,.pattern-piece.selected .cut-path{stroke:#fff;stroke-width:2}.pattern-piece.selected .piece-title{fill:var(--orange)}.pattern-piece.family-lower{color:var(--cyan)}.pattern-piece.family-lower .seam-path{stroke:var(--cyan)}.pattern-piece.family-rib{color:var(--violet)}.pattern-piece.family-rib .seam-path{stroke:var(--violet)}.pattern-empty{fill:var(--muted);font:12px ui-sans-serif,sans-serif}.bottom-bar{grid-area:bottom;z-index:20;display:grid;grid-template-columns:390px 1fr auto;align-items:center;gap:16px;border-top:1px solid var(--line);background:#121a1f;box-shadow:0 -3px 10px #0006}.workspace-switch{align-self:stretch;display:grid;grid-template-columns:1fr 1fr}.workspace-switch button{position:relative;border:0;border-right:1px solid var(--line);padding:0 15px;background:transparent;color:var(--dim);text-align:left;cursor:pointer}.workspace-switch button:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:transparent}.workspace-switch button.active{background:#1b252b;color:#fff}.workspace-switch button.active:before{background:var(--orange)}.workspace-switch b,.workspace-switch span{display:block}.workspace-switch b{font-size:11px}.workspace-switch span{margin-top:4px;color:var(--dim);font-size:8px}.status-line{min-width:0;display:flex;align-items:center;gap:8px;color:#9ba8af;font-size:9px;white-space:nowrap}.status-line>span:nth-child(2){overflow:hidden;text-overflow:ellipsis}.status-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#56b973;box-shadow:0 0 6px #56b97388}.status-dot.error{background:var(--danger);box-shadow:0 0 6px #f45f6188}#dirty-state{margin-left:auto;color:#75828a;font:750 8px/1 ui-monospace,monospace}#dirty-state.dirty{color:#f6a562}.bottom-metrics{display:flex;height:100%}.bottom-metrics span{min-width:100px;display:grid;place-content:center;gap:3px;border-left:1px solid var(--line);color:var(--dim);text-align:center;font-size:7px;letter-spacing:.08em}.bottom-metrics b{color:#e7ecef;font-size:12px;letter-spacing:0}@media(max-width:1180px){.app-shell{grid-template-columns:250px minmax(390px,1fr) 238px}.project-title{display:none}.topbar{grid-template-columns:195px 1fr auto}.project-actions{justify-self:start}.bottom-bar{grid-template-columns:330px 1fr auto}.bottom-metrics span{min-width:80px}}@media(max-width:760px){html,body,#app{overflow:auto}.app-shell{min-width:0;min-height:920px;height:auto;grid-template-columns:1fr;grid-template-rows:54px 55vh auto auto 62px;grid-template-areas:"top" "work" "left" "right" "bottom"}.topbar{position:sticky;top:0;grid-template-columns:1fr auto;gap:6px}.project-actions,.project-title,.export-button{display:none}.left-panel,.right-panel{min-height:340px;max-height:520px;border:0;border-top:1px solid var(--line)}.right-panel{overflow:visible}.parameter-scroll{max-height:450px}.toolbar-hint{display:none}.bottom-bar{position:sticky;bottom:0;grid-template-columns:1fr auto}.workspace-switch{grid-column:1}.status-line,.bottom-metrics span:first-child{display:none}.bottom-metrics span{min-width:72px}.viewport-overlay{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
