@font-face{font-family:Onest;src:url('./fonts/onest-variable.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Urbanist;src:url('./fonts/urbanist-variable.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Overpass Mono;src:url('./fonts/overpass-mono-variable.woff2') format('woff2');font-weight:300 700;font-display:swap}
:root{color-scheme:dark;--bg:#232136;--panel:#2a273f;--accent:#c4a7e7;--ink:#e0def4;--accent-ink:#15131d;--panel-2:color-mix(in srgb,var(--panel) 88%,var(--bg) 12%);--panel-3:color-mix(in srgb,var(--panel) 78%,var(--bg) 22%);--control:color-mix(in srgb,var(--panel) 84%,var(--ink) 16%);--muted:color-mix(in srgb,var(--ink) 62%,var(--bg) 38%);--muted-2:color-mix(in srgb,var(--ink) 43%,var(--bg) 57%);--line:color-mix(in srgb,var(--ink) 16%,var(--panel) 84%);--line-strong:color-mix(in srgb,var(--ink) 28%,var(--panel) 72%);--focus:color-mix(in srgb,var(--accent) 30%,transparent);--glass:color-mix(in srgb,var(--panel) 80%,transparent);--shadow:0 22px 52px rgba(0,0,0,.24);--warn:#e8bd6c;--ok:#80c99a;--danger:#e67f85;--font-hero:Onest,Inter,ui-sans-serif,system-ui,sans-serif;--font-section:Urbanist,Inter,ui-sans-serif,system-ui,sans-serif;--font-body:Onest,Inter,ui-sans-serif,system-ui,sans-serif;--font-utility:'Overpass Mono',ui-monospace,monospace;font-family:var(--font-body)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink)}body{background:radial-gradient(circle at 65% -10%,color-mix(in srgb,var(--accent) 9%,transparent),transparent 30%),linear-gradient(180deg,color-mix(in srgb,var(--bg) 93%,#000 7%),var(--bg))}button,input,select{font:inherit}button{cursor:pointer}[hidden]{display:none!important}
h1,h2,h3{font-family:var(--font-section);font-weight:800}button,input,select,textarea{font-family:var(--font-body)}
.shell{min-height:100vh;padding:8px;display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px}.app-header{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:0 8px 6px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px;min-width:0}.brand-mark{width:29px;height:29px;border-radius:7px;background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#fff 40%));color:var(--accent-ink);display:grid;place-items:center;font-weight:900;font-size:15px;box-shadow:inset 0 1px 0 #fff4}.brand-copy{min-width:0}.brand-line{display:flex;gap:8px;align-items:center}.brand h1{margin:0;font-size:1.12rem;line-height:1.05;letter-spacing:-.035em;white-space:nowrap}.brand p{display:none}.version{font:700 .61rem/1 var(--font-utility);padding:4px 6px;border-radius:6px;border:1px solid color-mix(in srgb,var(--accent) 44%,var(--line) 56%);color:var(--accent);background:color-mix(in srgb,var(--panel) 72%,transparent);white-space:nowrap}.header-actions,.header-theme{display:flex;gap:2px;align-items:center}.header-actions{padding-right:8px;border-right:1px solid var(--line)}.header-action{border:0;background:transparent;color:var(--ink);padding:5px 7px;border-radius:7px;font-size:.72rem;white-space:nowrap;text-decoration:none}.header-action:hover{background:var(--control)}.workshop-home-link{color:var(--muted)}.workshop-home-link:hover{color:var(--ink)}
.workspace{min-height:0;display:grid;grid-template-columns:360px minmax(0,1fr);gap:12px}.card{border:1px solid var(--line);border-radius:13px;background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 96%,transparent),color-mix(in srgb,var(--panel-2) 96%,transparent));box-shadow:inset 0 1px 0 rgba(255,255,255,.018)}.controls-card{padding:14px;overflow:auto;min-height:0;max-height:calc(100vh - 92px)}.main-stack{min-width:0;display:grid;grid-template-rows:minmax(500px,1fr);gap:12px;min-height:0}.section{padding:13px 0;border-bottom:1px solid var(--line)}.section:first-child{padding-top:0}.section:last-child{border-bottom:0;padding-bottom:0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.section-title h2{margin:0;font-size:.92rem;letter-spacing:-.01em}.help-dot{width:18px;height:18px;border:1px solid var(--line-strong);border-radius:999px;display:inline-grid;place-items:center;font-size:.66rem;color:var(--muted)}
.field{display:grid;gap:6px;margin-bottom:10px}.field label,.field-label{font-size:.73rem;color:var(--muted)}label{display:grid;gap:6px;font-size:.73rem;color:var(--muted)}input,select,textarea{width:100%;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 77%,var(--bg) 23%);color:var(--ink);border-radius:9px;padding:9px 11px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--focus)}input:disabled{opacity:.5}input[type=range]{padding:0;accent-color:var(--accent)}input[type=checkbox]{width:auto;accent-color:var(--accent)}.field-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.field-heading label{font-size:.75rem;color:var(--ink);font-weight:650}.field-heading output{font:700 .68rem var(--font-utility);color:var(--accent)}
.btn,.iconbtn,.view-tab,.camera-pill,.dock-button{border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 77%,var(--bg) 23%);color:var(--ink);border-radius:9px;padding:9px 11px;transition:background-color .14s ease,border-color .14s ease}.btn:hover,.view-tab:hover,.camera-pill:hover,.dock-button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--control) 90%,var(--accent) 10%)}.btn:active,.view-tab:active,.camera-pill:active{transform:translateY(1px)}.btn.primary{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 78%,#fff 22%));border-color:var(--accent);color:var(--accent-ink);font-weight:800}.btn.compact{padding:6px 9px;font-size:.75rem}.btn:disabled{opacity:.45;cursor:not-allowed}.row-actions{display:flex;gap:7px;margin:10px 0}.row-actions>*{flex:1}.tiny{font-size:.7rem;color:var(--muted);line-height:1.45}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px}.metrics div{display:grid;gap:3px}.metrics span{font:600 .62rem var(--font-utility);color:var(--muted)}.metrics strong{font-size:.92rem}
.stack{display:grid;gap:10px}.set-card{border-top:1px solid var(--line);padding-top:12px;display:grid;gap:10px}.set-head{display:flex;gap:7px;align-items:center}.set-head input{min-width:0;flex:1}.set-head button{border:1px solid var(--line);background:var(--control);color:var(--ink);border-radius:8px;padding:6px 8px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:9px}.row{display:flex;gap:6px;align-items:center}.pin{flex:0 0 auto;width:34px;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--control);color:var(--accent)}.pin[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.badges{display:flex;flex-wrap:wrap;gap:5px}.badge{border:1px solid var(--line);border-radius:999px;padding:4px 7px;color:var(--muted);font:600 .61rem var(--font-utility)}
.workflow-disclosure{margin-top:3px;border-top:1px solid var(--line)}.workflow-disclosure summary{cursor:pointer;color:var(--ink);font-size:.78rem;padding:11px 0;list-style:none;display:grid;gap:3px}.workflow-disclosure summary::-webkit-details-marker{display:none}.workflow-disclosure summary::before{content:'›';float:left;color:var(--accent);font-size:1rem;margin-right:7px;grid-row:1/3}.workflow-disclosure[open] summary::before{transform:rotate(90deg)}.workflow-disclosure summary small{color:var(--muted);font-size:.67rem;margin-left:15px}.disclosure-body{padding:5px 0 12px;display:grid;gap:8px}.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.wide{grid-column:1/-1}.export-state{color:var(--muted);font-size:.68rem;line-height:1.4}.messages{display:grid;gap:6px}.message{padding:7px 9px;border-radius:7px;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 78%,transparent);font-size:.68rem;line-height:1.35;color:var(--muted)}.message.error{border-color:color-mix(in srgb,var(--danger) 52%,var(--line));color:var(--ink)}.message.ok{border-color:color-mix(in srgb,var(--ok) 52%,var(--line))}
.preview-card{position:relative;min-width:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.preview-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px;border-bottom:1px solid var(--line)}.preview-tabs{display:flex;gap:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.view-tab{border:0;border-radius:0;padding:8px 18px;font-size:.73rem}.view-tab.active{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 78%,#fff 22%));color:var(--accent-ink);font-weight:800}.preview-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.camera-pill{font-size:.69rem;padding:7px 9px}.viewport{position:relative;min-height:480px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 70%,var(--panel) 30%),var(--bg));overflow:hidden}.viewport::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:var(--workshop-texture-opacity,.08);background-image:var(--workshop-texture-image,none);background-position:0 0;background-repeat:repeat;background-size:384px 384px}.viewport canvas{width:100%;height:100%;display:block;position:relative;z-index:1}#preview{touch-action:none}#previewWrap .webgl-preview{position:absolute;inset:0;z-index:1;width:100%;height:100%;display:block;touch-action:none}.viewer-dock{position:absolute;z-index:8;right:12px;top:12px;width:174px;max-height:calc(100% - 24px);overflow:auto;padding:8px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--panel) 91%,transparent);box-shadow:var(--shadow);backdrop-filter:blur(12px);display:grid;align-content:start;gap:6px}.cube-host{height:104px;display:grid;place-items:center}.cube-host canvas{width:auto!important;height:auto!important;max-width:100%;cursor:default}.cube-hint{text-align:center;color:var(--muted);font-size:.62rem}.dock-buttons{display:grid;grid-template-columns:1fr 1fr;gap:5px}.dock-select,.dock-button{width:100%;min-height:32px;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--control);color:var(--ink);font-size:.67rem}.dock-toggle{display:flex;align-items:center;gap:7px;padding:5px 2px;color:var(--muted);font-size:.68rem}.dock-toggle input{width:auto}.hud{position:absolute;left:12px;bottom:12px;z-index:4;display:flex;gap:6px;flex-wrap:wrap}.chip{padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:color-mix(in srgb,var(--panel) 82%,transparent);color:var(--muted);font:700 .62rem var(--font-utility);backdrop-filter:blur(8px)}.preview-foot-overlay{position:absolute;left:12px;right:202px;top:12px;z-index:4;max-height:40%;overflow:auto;pointer-events:none}.preview-foot-overlay .message{pointer-events:auto}.preview-foot{border-top:1px solid var(--line);padding:8px 12px;display:flex;justify-content:space-between;gap:10px;align-items:center;color:var(--muted);font-size:.67rem}.ready-line{display:flex;gap:7px;align-items:center}.ready-icon{width:18px;height:18px;border-radius:999px;border:1px solid var(--accent);color:var(--accent);display:grid;place-items:center;font-size:.7rem}.preview-foot>span:first-child{font-family:var(--font-utility)}
.theme-native-select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.theme-menu-button{height:34px;width:154px;display:grid;grid-template-columns:18px minmax(0,1fr) 12px;align-items:center;gap:6px;padding:0 8px;border:1px solid var(--theme-preview-accent,var(--line));border-radius:9px;background:linear-gradient(110deg,var(--theme-preview-bg,var(--control)) 0 66%,var(--theme-preview-panel,var(--control)) 66%);color:var(--theme-preview-ink,var(--ink))}.theme-menu-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;font-weight:800}.theme-menu-popover{position:fixed;inset:auto;z-index:1000;margin:0;padding:0;width:min(620px,calc(100vw - 20px));max-height:min(560px,calc(100vh - 20px));border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);box-shadow:var(--shadow);overflow:hidden}.theme-menu-popover:popover-open,.theme-menu-popover.is-open{display:grid;grid-template-rows:auto minmax(0,1fr)}.theme-menu-head{display:flex;justify-content:space-between;padding:9px 10px;border-bottom:1px solid var(--line);font-size:.7rem}.theme-menu-grid{overflow:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:8px}.theme-menu-option{min-width:0;min-height:68px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:4px 8px;align-content:center;text-align:left;padding:8px 9px;border:1px solid var(--theme-preview-accent);border-radius:8px;background:linear-gradient(125deg,var(--theme-preview-bg) 0 67%,var(--theme-preview-panel) 67%);color:var(--theme-preview-ink)}.theme-menu-option.is-selected{box-shadow:inset 0 0 0 2px var(--theme-preview-accent)}.theme-menu-option-name{font-size:.66rem;font-weight:800}.theme-menu-option-id{font:9px var(--font-utility);opacity:.7}.theme-menu-swatches{grid-column:1/-1;display:flex;gap:3px}.theme-menu-swatch{width:17px;height:8px;border-radius:3px}
.shortcuts-dialog,.wizard-dialog{border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);box-shadow:var(--shadow);padding:0}.shortcuts-dialog{width:min(560px,calc(100vw - 28px))}.shortcuts-dialog::backdrop,.wizard-dialog::backdrop{background:rgba(8,8,16,.65);backdrop-filter:blur(3px)}.shortcuts-head,.wizard-head{display:flex;justify-content:space-between;gap:12px;padding:13px;border-bottom:1px solid var(--line);align-items:center}.shortcuts-body{padding:13px;display:grid;gap:8px}.shortcut-row{display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:center;font-size:.75rem;color:var(--muted)}.shortcut-row code{padding:6px 8px;border-radius:7px;background:var(--control);border:1px solid var(--line);color:var(--ink);font:10px var(--font-utility)}.wizard-dialog{width:min(520px,calc(100vw - 24px))}.wizard-head>div:nth-child(2){display:grid;gap:3px;flex:1}.wizard-head small{color:var(--muted)}.wizard-mark{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:.7rem;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-size:1.2rem}.wizard-progress{display:flex;align-items:center;gap:.8rem;padding:.8rem 1.1rem 0;color:var(--muted);font-size:.75rem}.wizard-progress-track{flex:1;height:4px;border-radius:9px;background:var(--line);overflow:hidden}.wizard-progress-track i{display:block;width:50%;height:100%;background:var(--accent);transition:width .2s ease}.wizard-content{padding:.4rem 1.1rem 1rem;min-height:260px}.wizard-step h2{margin:1rem 0 .35rem}.wizard-step p{color:var(--muted);line-height:1.45;font-size:.9rem}.wizard-step>label,.wizard-step .grid2{margin:.9rem 0}.wizard-footer{display:flex;justify-content:space-between;gap:.5rem;padding:.8rem 1.1rem;border-top:1px solid var(--line)}.wizard-footer #applySetupWizard{margin-left:auto}.wizard-footer [hidden],.wizard-step[hidden]{display:none}
@media(max-width:1120px){.workspace{grid-template-columns:340px minmax(0,1fr)}.app-header{grid-template-columns:minmax(0,1fr) auto auto;gap:6px}.header-actions{padding-right:5px}.brand h1{font-size:1rem}.controls-card{max-height:none}}
@media(max-width:860px){.shell{padding:8px}.workspace{grid-template-columns:1fr}.main-stack{grid-template-rows:auto}.controls-card{max-height:none}.preview-card{min-height:620px}.app-header{grid-template-columns:1fr}.header-theme{justify-content:flex-start}.header-actions{border:0;padding:0;flex-wrap:wrap}.preview-foot{align-items:flex-start;flex-wrap:wrap}.preview-foot-overlay{right:190px}.viewer-dock{right:8px;top:58px;width:160px}}
@media(max-width:520px){.grid2,.theme-menu-grid{grid-template-columns:1fr}.app-header{padding:4px}.brand-mark{display:none}.view-tab{padding:8px 12px}.preview-head{align-items:flex-start;flex-direction:column}.preview-actions{width:100%}.viewport{min-height:420px}.shortcut-row{grid-template-columns:1fr}.preview-foot-overlay{position:relative;left:auto;right:auto;top:auto;margin:8px;max-height:none}.viewer-dock{width:136px}.dock-button{font-size:.61rem}.preview-foot>span:first-child{font-size:.58rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
.side-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;margin:0 0 10px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--bg) 45%,var(--panel) 55%)}.side-tab{border:0;border-radius:7px;padding:9px 8px;background:transparent;color:var(--muted);font-size:.74rem;font-weight:700}.side-tab:hover{background:var(--control);color:var(--ink)}.side-tab.active{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 78%,#fff 22%));color:var(--accent-ink)}.side-panel[hidden]{display:none}.side-panel .section:first-child{padding-top:4px}.fit-set-title{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.82rem}.fit-set-title button{border:1px solid var(--line);border-radius:7px;padding:5px 7px;background:var(--control);color:var(--muted);font-size:.66rem}.speed-control{display:grid;grid-template-columns:auto auto;align-items:center;gap:2px 6px;width:140px;font-size:.65rem;color:var(--muted)}.speed-control output{font:700 .63rem var(--font-utility);color:var(--accent);text-align:right}.speed-control input{grid-column:1/-1;padding:0}.candidate-results{display:grid;gap:6px;margin-top:9px;max-height:210px;overflow:auto}.candidate-note{margin:0;color:var(--muted);font-size:.73rem;line-height:1.4}.candidate-note.error{color:var(--warn)}.candidate-option{display:grid;gap:3px;width:100%;padding:8px 9px;text-align:left;border:1px solid var(--line);border-radius:8px;background:var(--control);color:var(--ink)}.candidate-option:hover,.candidate-option.selected{border-color:var(--accent)}.candidate-option.selected{box-shadow:inset 0 0 0 1px var(--accent)}.candidate-option strong{font-size:.72rem}.candidate-option span,.candidate-option small{color:var(--muted);font-size:.64rem;line-height:1.35}.wizard-content{max-height:min(72vh,640px);overflow:auto}.wizard-step #findGearPairs{width:100%}
@media(max-width:520px){.preview-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.speed-control{grid-column:1/-1;width:100%;grid-template-columns:auto auto}.preview-head{align-items:stretch}.preview-actions .camera-pill{font-size:.61rem;padding:6px}.candidate-option span{line-height:1.45}}
