:root{--bg:#f4f2ed;--panel:#fff;--panel-2:#faf8f4;--line:#e3dfd6;--ink:#1f2423;--muted:#6b7470;--accent:#1f6f67;--accent-soft:#e2f0ee;--accent-ink:#0f4c46;--warn:#b7791f;--warn-soft:#fbf1dc;--danger:#c0392b;--danger-soft:#fbe5e1;--shadow:0 10px 30px #1f282614;--radius:10px;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#171a19;--panel:#1f2322;--panel-2:#262b29;--line:#2f3533;--ink:#ecebe6;--muted:#9aa39f;--accent:#5fb3a8;--accent-soft:#1d3330;--accent-ink:#c8e9e4;--warn:#e2a84a;--warn-soft:#3a2f1a;--danger:#e46a5b;--danger-soft:#3b2220;--shadow:0 10px 30px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:13px;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:650}a{color:var(--accent)}.app{grid-template-rows:48px 1fr 30px;grid-template-columns:292px minmax(0,1fr) 320px;height:100vh;display:grid}.app.noRight{grid-template-columns:292px minmax(0,1fr) 0}.header{background:var(--panel);border-bottom:1px solid var(--line);z-index:5;grid-column:1/-1;align-items:center;gap:10px;padding:0 12px;display:flex}.header .brand{letter-spacing:-.02em;align-items:center;gap:8px;font-weight:700;display:flex}.header .brand .logo{background:var(--accent);color:#fff;border-radius:8px;place-items:center;width:26px;height:26px;font-size:14px;display:grid}.header .projectName{background:0 0;border:1px solid #0000;border-radius:6px;min-width:160px;padding:4px 8px;font-weight:600}.header .projectName:hover,.header .projectName:focus{border-color:var(--line);background:var(--panel-2);outline:none}.header .saveState{color:var(--muted);min-width:120px;font-size:12px}.header .saveState.dirty{color:var(--warn)}.header .saveState.error{color:var(--danger)}.header .spacer{flex:1}.seg{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{color:var(--muted);background:0 0;border:0;align-items:center;gap:6px;padding:6px 10px;font-weight:600;display:inline-flex}.seg button.active{background:var(--accent);color:#fff}.seg button+button{border-left:1px solid var(--line)}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-weight:600;display:inline-flex}.btn:hover{background:var(--panel-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-ink)}.btn.danger{color:var(--danger)}.btn.icon{padding:6px}.btn.sm{padding:4px 8px;font-size:12px}.btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}.btn svg{width:16px;height:16px}.iconRow{flex-wrap:wrap;gap:6px;display:flex}.sidebar{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.rightPanel{background:var(--panel);border-left:1px solid var(--line);min-height:0;overflow:auto}.app.noRight .rightPanel{display:none}.section{border-bottom:1px solid var(--line);padding:14px}.section h3{justify-content:space-between;align-items:center;margin-bottom:10px;font-size:13px;display:flex}.kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:10.5px;font-weight:700}.muted{color:var(--muted)}.small{font-size:12px}.hint{background:var(--warn-soft);color:#6b4e13;border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.5}[data-theme=dark] .hint{color:#f1d9a6}.note{background:var(--panel-2);border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.5}.badge{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:2px 7px;font-size:10.5px;font-weight:700;display:inline-block}.badge.ok{background:var(--accent-soft);color:var(--accent-ink)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.muted{background:var(--panel-2);color:var(--muted);border:1px solid var(--line)}.search{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;outline:none;width:100%;padding:8px 10px}.search:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.chips{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.chip{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:600}.chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.libraryScroll{flex:1;padding:0 14px 14px;overflow:auto}.catalogGrid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.catalogItem{border:1px solid var(--line);background:var(--panel);text-align:center;cursor:grab;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:10px 8px;transition:transform .12s,border-color .12s;display:flex}.catalogItem:hover{border-color:var(--accent);background:var(--panel-2);transform:translateY(-1px)}.catalogItem:active{cursor:grabbing}.catalogItem .thumb{place-items:center;width:64px;height:44px;display:grid}.catalogItem strong{font-size:12px;font-weight:600}.catalogItem small{color:var(--muted);font-size:10.5px}.catalogItem .price{color:var(--accent-ink);font-size:10.5px;font-weight:600}.stage{min-width:0;min-height:0;display:flex;position:relative}.stage.split{grid-template-columns:1fr 1fr;display:grid}.stage.split>*{border-right:1px solid var(--line);min-width:0}.editor2d{background:radial-gradient(circle at 50% 40%,#faf9f6,#ebe8e1);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}[data-theme=dark] .editor2d{background:radial-gradient(circle at 50% 40%,#23272a,#171a19)}.editor2d canvas{display:block}.scene3d{background:#eceae4;flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}.scene3d canvas{outline:none;display:block}.sceneLegend,.walkHint{border:1px solid var(--line);color:var(--muted);pointer-events:none;background:#ffffffe6;border-radius:8px;padding:6px 10px;font-size:11.5px;position:absolute;bottom:12px;left:12px}[data-theme=dark] .sceneLegend,[data-theme=dark] .walkHint{background:#1f2322e6}.walkHint{color:var(--ink);bottom:40px}.stageTools{background:var(--panel);border:1px solid var(--line);width:-moz-fit-content;width:fit-content;box-shadow:var(--shadow);z-index:3;border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;max-width:calc(100% - 24px);margin:0 auto;padding:6px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.stageTools .sep{background:var(--line);width:1px;height:22px;margin:0 4px}.toolbar{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);z-index:3;border-radius:12px;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute;top:12px;left:12px}.toolbar .btn{border:0;justify-content:center;width:36px;height:36px}.toolbar .btn.active{background:var(--accent);color:#fff}.overlayTopRight{z-index:3;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:12px;right:12px}.card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;padding:10px 12px;font-size:12px}.footer{background:var(--panel);border-top:1px solid var(--line);color:var(--muted);grid-column:1/-1;align-items:center;gap:18px;padding:0 14px;font-size:11.5px;display:flex}.footer b{color:var(--ink);font-weight:600}.footer .spacer{flex:1}.footer .warn{color:var(--warn)}.field{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.field label{color:var(--muted);font-size:11px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--panel-2);border-radius:7px;outline:none;width:100%;padding:6px 8px}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.grid2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.grid3{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.toggle{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;font-size:12.5px;display:flex}.toggle input{accent-color:var(--accent);width:16px;height:16px}input[type=range]{accent-color:var(--accent);width:100%}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:7px;width:28px;height:28px;position:relative}.swatch.active{border-color:var(--accent);box-shadow:inset 0 0 0 2px #fff}.swatch:hover:after{content:attr(title);background:var(--ink);color:var(--bg);white-space:nowrap;z-index:4;border-radius:4px;margin-top:4px;padding:2px 6px;font-size:10px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.list{flex-direction:column;gap:4px;display:flex}.listRow{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.listRow:hover,.listRow.active{background:var(--accent-soft);border-color:var(--accent)}.listRow .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.metric{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.metric strong{font-variant-numeric:tabular-nums;font-size:17px;display:block}.metric span{color:var(--muted);font-size:10.5px}.toasts{z-index:50;pointer-events:none;flex-direction:column;gap:6px;display:flex;position:fixed;top:60px;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:var(--bg);box-shadow:var(--shadow);border-radius:8px;padding:8px 14px;font-size:12.5px;animation:.2s fadeIn}.toast.success{background:var(--accent);color:#fff}.toast.warning{background:var(--warn);color:#fff}.toast.error{background:var(--danger);color:#fff}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.modalBackdrop{z-index:40;background:#14181759;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);width:min(640px,92vw);max-height:86vh;box-shadow:var(--shadow);border-radius:14px;padding:20px 22px;overflow:auto}.modal h2{margin-bottom:6px;font-size:17px}.modal .actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.kbd{background:var(--panel-2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.menu{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);z-index:20;border-radius:10px;min-width:220px;margin-top:4px;padding:6px;position:absolute;top:100%;right:0}.menu button{text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;width:100%;padding:8px 10px;display:flex}.menu button:hover{background:var(--panel-2)}.menu .sepLine{background:var(--line);height:1px;margin:4px 0}.relative{position:relative}.tabs{border-bottom:1px solid var(--line);gap:2px;padding:0 8px;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;padding:10px;font-weight:600}.tabs button.active{color:var(--accent-ink);border-bottom-color:var(--accent)}.versionCard{border:1px solid var(--line);background:var(--panel);border-radius:10px;overflow:hidden}.versionCard img{object-fit:cover;background:#ddd;width:100%;height:90px;display:block}.versionCard .body{padding:8px 10px}.table{border-collapse:collapse;width:100%;font-size:12px}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:6px}.table th{color:var(--muted);font-size:11px;font-weight:600}.table td.num{text-align:right;font-variant-numeric:tabular-nums}.empty{color:var(--muted);padding:10px 0;font-size:12.5px;line-height:1.6}.onboardList{grid-template-columns:1fr 1fr;gap:10px 20px;font-size:13px;line-height:1.6;display:grid}.onboardList li{list-style:none}.fileInput{display:none}@media (max-width:1100px){.app{grid-template-columns:240px minmax(0,1fr) 280px}}@media (max-width:860px){.app{grid-template-columns:0 minmax(0,1fr) 0}.sidebar,.rightPanel{display:none}}.sceneControls{background:var(--panel);border:1px solid var(--line);width:-moz-fit-content;width:fit-content;box-shadow:var(--shadow);z-index:3;border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;max-width:calc(100% - 24px);margin:0 auto;padding:6px;display:flex;position:absolute;top:12px;left:12px;right:12px}.sceneControls .seg button{padding:5px 9px;font-size:12px}@media (max-width:1280px){.hideNarrow{display:none}}.header .brand{white-space:nowrap}.header .saveState{white-space:nowrap;text-overflow:ellipsis;max-width:170px;overflow:hidden}.editor2d.presentation{background:#fbfaf7}[data-theme=dark] .editor2d.presentation{background:#f4f2ed}.segmented{background:var(--panel-2);border:1px solid var(--line);border-radius:9px;gap:2px;margin-top:8px;padding:2px;display:flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:5px 6px;font-size:11.5px;font-weight:600}.segmented button.active{background:var(--panel);color:var(--ink);box-shadow:0 1px 2px #0000001f}.catalogItem{position:relative}.brandTag{letter-spacing:.06em;color:#ffdb00;background:#0058a3;border-radius:4px;padding:1px 5px;font-size:8.5px;font-weight:800;position:absolute;top:6px;left:6px}.miniSwatches{flex-wrap:wrap;justify-content:center;gap:4px;margin:1px 0;display:flex}.miniSwatch{cursor:pointer;border:1px solid #0000002a;border-radius:50%;width:13px;height:13px;padding:0}.miniSwatch.active{outline:2px solid var(--accent);outline-offset:1px}.badge.brand{color:#ffdb00;background:#0058a3}.variantList{flex-direction:column;gap:4px;margin-top:8px;display:flex}.variant{text-align:left;border:1px solid var(--line);background:var(--panel);cursor:pointer;color:var(--ink);border-radius:8px;align-items:center;gap:9px;padding:6px 8px;font-size:12px;display:flex}.variant:hover{background:var(--panel-2)}.variant.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.variantDot{border:1px solid #00000026;border-radius:50%;flex:none;width:20px;height:20px;position:relative}.variantDot2{border:1.5px solid var(--panel);border-radius:50%;width:10px;height:10px;position:absolute;bottom:-3px;right:-3px}.swatchGroup{margin-top:6px}.swatchKind{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:3px;font-size:10px;display:block}details.section>summary{cursor:pointer;list-style:none}details.section>summary::-webkit-details-marker{display:none}details.section>summary:before{content:"▸ ";color:var(--muted)}details.section[open]>summary:before{content:"▾ "}.wizard{z-index:30;background:var(--panel);border:1px solid var(--line);border-radius:14px;width:410px;max-width:calc(100vw - 32px);padding:14px;position:fixed;top:64px;left:304px;box-shadow:0 18px 50px #0000002e}.wizard .kicker{align-items:center;gap:6px;display:inline-flex}.wizard .progress{background:var(--panel-2);border-radius:4px;height:4px;margin:8px 0 4px;overflow:hidden}.wizard .progress span{background:var(--accent);height:100%;transition:width .3s;display:block}.wizardTable{margin-top:8px}.wizardTable td{vertical-align:middle}.wizardTable td.num{white-space:nowrap}.cmInput{width:64px;padding:4px 6px;font-size:12px}@media (max-width:900px){.wizard{top:auto;bottom:48px;left:16px}}.kitItem{grid-column:span 2}.kitItem svg{margin:4px 0}.kitTag{background:var(--accent);color:#fff}.selList{flex-direction:column;gap:3px;margin-top:8px;display:flex}.selRow{border:1px solid var(--line);background:var(--panel);cursor:pointer;text-align:left;color:var(--ink);border-radius:8px;align-items:center;gap:8px;padding:5px 8px;font-size:12px;display:flex}.selRow:hover{background:var(--panel-2)}.selRow .variantDot{width:14px;height:14px}.selName{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.scene3dFallback{background:var(--panel-2);place-items:center;display:grid}.scene3dFallback .card{background:var(--panel);border:1px solid var(--line);border-radius:12px;max-width:360px;padding:18px 20px}.scene3dFallback p{margin:6px 0 0}.linkBtn{color:var(--accent-ink);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 0 0 8px;font-weight:600;text-decoration:underline}.sheetOverlay{z-index:60;background:var(--panel-2);position:fixed;inset:0;overflow:auto}.sheetBar{z-index:2;background:var(--panel);border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:10px 16px;display:flex;position:sticky;top:0}.sheet{color:#23282a;background:#fff;border-radius:14px;max-width:1040px;margin:24px auto 48px;padding:36px 40px;box-shadow:0 12px 40px #0000001a}.sheet .muted{color:#6c746f}.sheetHead{border-bottom:2px solid #1f6f67;justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:18px;display:flex}.sheetHead h1{letter-spacing:-.01em;margin:4px 0 2px;font-size:30px}.sheetKpis{gap:22px;display:flex}.sheetKpis div{text-align:right;flex-direction:column;display:flex}.sheetKpis span{text-transform:uppercase;letter-spacing:.06em;color:#6c746f;font-size:10.5px}.sheetKpis strong{color:#1f6f67;font-size:22px;font-weight:700}.sheetKpis em{color:#8a918c;font-size:11px;font-style:normal}.sheetShots{grid-template-columns:1fr 1.25fr;gap:16px;margin:22px 0;display:grid}.sheetShots figure{margin:0}.sheetShots img,.shotPh{object-fit:contain;color:#8a918c;background:#f6f3ec;border-radius:10px;place-items:center;width:100%;height:360px;display:grid}.sheetShots figcaption{color:#6c746f;text-transform:uppercase;letter-spacing:.06em;margin-top:6px;font-size:11px}.sheetCols{grid-template-columns:1fr 1.25fr;gap:28px;display:grid}.sheet h2{text-transform:uppercase;letter-spacing:.07em;color:#1f6f67;margin:0 0 8px;font-size:15px}.sheet h3{margin:14px 0 4px;font-size:13px}.sheet .table td,.sheet .table th{color:#23282a;border-color:#ebe6dc}.sheet .table tfoot td{border-top:1.5px solid #23282a}.sheetNotes{color:#4a514d;margin:0;padding-left:18px;font-size:12.5px;line-height:1.5}.shopTable td:first-child{width:32px}.shopTable a{color:inherit;border-bottom:1px dotted #9aa29d;text-decoration:none}@media (max-width:860px){.sheet{margin:12px;padding:20px 16px}.sheetHead,.sheetShots,.sheetCols{display:block}.sheetKpis{margin-top:12px}.sheetKpis div{text-align:left}}@media print{@page{size:A4;margin:12mm}.app>:not(.sheetOverlay){display:none!important}.sheetOverlay{background:#fff;position:static;overflow:visible}.noPrint{display:none!important}.sheet{box-shadow:none;max-width:none;margin:0;padding:0}.sheetShots img,.shotPh{height:240px}.shopBrand,.sheetCols>div{break-inside:avoid-page}}.srOnly{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.alignCtl{justify-content:flex-end;gap:4px;margin-top:4px;display:flex}.alignCtl select{padding:2px 4px;font-size:11.5px}.mobileBar,.mobileScrim{display:none}@media (max-width:760px){.app{grid-template-rows:48px 1fr 0 52px;grid-template-columns:minmax(0,1fr);height:100dvh}.app>.header{grid-column:1;gap:6px;padding:0 8px;overflow-x:auto}.header .brand{gap:0;font-size:0}.header>*{flex-shrink:0}.header .projectName{width:96px;min-width:0}.header .spacer,.header .saveState,.header .btn span,.header .btn .hideNarrow{display:none}.header .seg button{padding:5px 7px}.header .seg button:nth-child(3),.footer{display:none}.stage{grid-column:1}.sidebar,.rightPanel{display:none}.app[data-panel=library] .sidebar,.app[data-panel=props] .rightPanel{z-index:40;border:1px solid var(--line);border-radius:16px 16px 0 0;height:62dvh;display:flex;position:fixed;bottom:52px;left:0;right:0;overflow:auto;box-shadow:0 -12px 40px #0000002a}.app[data-panel=props] .rightPanel{flex-direction:column}.mobileScrim{z-index:39;background:#0000002a;display:block;position:fixed;inset:0 0 52px}.mobileBar{background:var(--panel);border-top:1px solid var(--line);z-index:41;grid-area:4/1;gap:8px;padding:6px 10px;display:flex}.mobileBar button{border:1px solid var(--line);background:var(--panel-2);color:var(--ink);border-radius:10px;flex:1;font-size:13px;font-weight:600}.mobileBar button.active{background:var(--ink);color:var(--bg)}.toolbar{top:8px;left:8px;transform:none}.stageTools{bottom:8px}.stageTools .btn:not(.icon){gap:0;padding:6px 8px;font-size:0}.onboardList{grid-template-columns:1fr}.modal{padding:16px}.wizard{width:auto;max-height:60dvh;bottom:60px;left:8px;right:8px;overflow:auto}.sceneLegend{display:none}}
