@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font:"Geist Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Geist Mono Variable", ui-monospace, "SF Mono", Consolas, monospace;--accent:#4d8dff;--accent-2:#38e1d0;--accent-ink:#fff;--brand:linear-gradient(135deg, #4d8dff 0%, #38c8e8 100%);--danger:#ff6b5e;--warn:#ffb547;--ok:#3ddc97;--r-s:8px;--r-m:12px;--r-l:16px;--ease:cubic-bezier(.2, .8, .2, 1);--spring:cubic-bezier(.3, 1.35, .5, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0f15;--surface:#14171fbd;--surface-solid:#171a22;--raise:#ffffff0e;--raise-2:#ffffff1a;--border:#ffffff17;--border-strong:#ffffff2e;--text:#eef1f6;--text-2:#a5adbb;--text-3:#6d7586;--accent-soft:#4d8dff2e;--shadow:0 18px 50px #0000008c, 0 2px 8px #00000059;--shadow-s:0 6px 20px #0006;--sheen:inset 0 1px 0 #ffffff12;--thumb:radial-gradient(120% 90% at 50% 0%, #ffffff21, #ffffff0a);--tip:#f2f4f8;--tip-ink:#10131a}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f8fa;--surface:#fffc;--surface-solid:#fff;--raise:#0f172a0d;--raise-2:#0f172a17;--border:#0f172a17;--border-strong:#0f172a33;--text:#12151c;--text-2:#535c6c;--text-3:#8992a2;--accent:#2f6df6;--accent-soft:#2f6df61f;--danger:#dc3b2c;--warn:#b86e00;--ok:#12925c;--shadow:0 18px 44px #0f172a29, 0 2px 6px #0f172a14;--shadow-s:0 6px 18px #0f172a1f;--sheen:inset 0 1px 0 #ffffffb3;--thumb:radial-gradient(120% 90% at 50% 0%, #fff, #eceff3);--tip:#171a22;--tip-ink:#f2f4f8}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:13px/1.45 var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01", "cv11";overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}h2{letter-spacing:-.01em;font-size:15px;font-weight:600}h3{text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);font-size:11px;font-weight:600}hr{border:0;border-top:1px solid var(--border);margin:5px 0}kbd{font:500 11px var(--mono);background:var(--raise-2);color:var(--text);border:1px solid var(--border);border-radius:5px;padding:2px 6px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent-soft)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--raise-2);background-clip:content-box;border:3px solid #0000;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:content-box;border:3px solid #0000}.glass{background:var(--surface);-webkit-backdrop-filter:saturate(170%)blur(24px);border:1px solid var(--border);box-shadow:var(--shadow-s), var(--sheen);border-radius:var(--r-l)}.hint{color:var(--text-3);font-size:12px}.hint.pad{padding:12px 2px 4px}.callout{border-radius:var(--r-s);background:var(--raise);border-left:3px solid var(--text-3);color:var(--text-2);padding:8px 10px;font-size:12px}.callout.warn{border-color:var(--warn);background:color-mix(in srgb, var(--warn) 12%, transparent);color:var(--text)}.callout.error{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 13%, transparent);color:var(--text)}.row{flex-wrap:wrap;gap:8px;display:flex}.grow{flex:1}.sep{background:var(--border);flex:none;width:1px;height:20px;margin:0 4px}.sep.across{width:22px;height:1px;margin:4px 0}.dot{border:1px solid var(--border-strong);border-radius:50%;flex:none;width:12px;height:12px;display:inline-block}.dot.big{width:18px;height:18px}.link{color:var(--accent);background:0 0;border:0;padding:0;font-size:12px;font-weight:500}.link:hover{text-decoration:underline}.btn{border:1px solid var(--border);background:var(--raise);white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:7px;height:34px;padding:0 14px;font-weight:500;transition:background .15s,border-color .15s,transform .1s,filter .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--raise-2);border-color:var(--border-strong)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--brand);color:#04101f;box-shadow:0 4px 16px color-mix(in srgb, var(--accent) 40%, transparent);border-color:#0000;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--brand);filter:brightness(1.1)}.btn.danger{color:var(--danger)}.btn.danger.solid{background:var(--danger);color:#fff;border-color:#0000}.btn.ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled),.btn.ghost.on{background:var(--raise-2);color:var(--text);border-color:#0000}.btn.tight{gap:3px;height:30px;padding:0 8px 0 10px}.btn.block{width:100%}.btn.ai{border-color:color-mix(in srgb, var(--accent) 45%, transparent);background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 20%, transparent), color-mix(in srgb, var(--accent-2) 14%, transparent))}.btn.ai:hover:not(:disabled){background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 30%, transparent), color-mix(in srgb, var(--accent-2) 22%, transparent));border-color:var(--accent)}.btn.ai svg{color:var(--accent)}.ibtn{width:36px;height:36px;color:var(--text-2);background:0 0;border:0;border-radius:10px;flex:none;place-items:center;transition:background .15s,color .15s,transform .1s;display:inline-grid;position:relative}.ibtn:hover:not(:disabled){background:var(--raise-2);color:var(--text)}.ibtn:active:not(:disabled){transform:scale(.94)}.ibtn:disabled{opacity:.35;cursor:default}.ibtn.on{background:var(--accent-soft);color:var(--accent)}.ibtn.quiet{color:var(--text-3)}.ibtn.small{border-radius:8px;width:28px;height:28px}.ibtn.danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 16%, transparent);color:var(--danger)}.ibtn.accent{background:var(--brand);color:#04101f;box-shadow:0 4px 14px color-mix(in srgb, var(--accent) 38%, transparent)}.ibtn.accent:hover:not(:disabled){background:var(--brand);color:#04101f;filter:brightness(1.12)}.ibtn.accent.on{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}.pill{border:1px solid var(--border);background:var(--raise);border-radius:999px;align-items:center;gap:5px;height:30px;margin:0 2px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex;position:relative}.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 40%, transparent);background:color-mix(in srgb, var(--warn) 12%, transparent)}.pill:hover,.pill.on{border-color:var(--border-strong)}[data-tip]:after{content:attr(data-tip);z-index:60;background:var(--tip);color:var(--tip-ink);font:500 12px/1.3 var(--font);white-space:nowrap;pointer-events:none;opacity:0;box-shadow:var(--shadow-s);text-transform:none;letter-spacing:0;border-radius:8px;padding:5px 9px;transition:opacity .12s;position:absolute}[data-tip][data-key]:after{content:attr(data-tip) "   " attr(data-key)}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1;transition-delay:.4s}[data-tip-pos=bottom]:after{top:calc(100% + 8px);left:50%;transform:translate(-50%)}[data-tip-pos=bottom-end]:after{top:calc(100% + 8px);right:0}[data-tip-pos=top]:after{bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}[data-tip-pos=right]:after{top:50%;left:calc(100% + 10px);transform:translateY(-50%)}[data-tip-pos=left]:after{top:50%;right:calc(100% + 10px);transform:translateY(-50%)}.seg{grid-template-columns:repeat(var(--n), 1fr);background:var(--raise);border-radius:12px;padding:3px;display:inline-grid;position:relative}.seg-pill{width:calc((100% - 6px) / var(--n));transform:translateX(calc(var(--i) * 100%));background:var(--surface-solid);border:1px solid var(--border);transition:transform .32s var(--spring);border-radius:9px;position:absolute;top:3px;bottom:3px;left:3px;box-shadow:0 2px 8px #0000002e}.seg button{z-index:1;height:32px;color:var(--text-2);white-space:nowrap;background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:500;transition:color .2s;display:flex;position:relative}.seg button:hover,.seg button.on{color:var(--text)}.seg.small button{height:28px;padding:0 11px;font-size:12.5px}.seg.wide{width:100%;display:grid}.seg.views{background:0 0;padding:0}.seg.views .seg-pill{width:calc(100% / var(--n));background:var(--brand);box-shadow:0 4px 18px color-mix(in srgb, var(--accent) 45%, transparent);border:0;border-radius:10px;top:0;bottom:0;left:0}.seg.views button{height:36px;padding:0 18px;font-size:13.5px;font-weight:600}.seg.views button.on{color:#04101f}.pop-wrap{display:inline-flex;position:relative}.pop{z-index:30;background:color-mix(in srgb, var(--surface-solid) 96%, transparent);min-width:200px;box-shadow:var(--shadow);animation:pop .16s var(--ease);border-radius:14px;padding:8px;position:absolute}.pop h3{padding:4px 6px 8px}.pop.side-bottom{top:calc(100% + 10px)}.pop.side-top{bottom:calc(100% + 12px)}.pop.align-start{left:0}.pop.align-end{right:0}.pop.align-center{left:50%;translate:-50%}@keyframes pop{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.menu{flex-direction:column;min-width:240px;display:flex}.menu-item{text-align:left;height:34px;color:var(--text);background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:0 10px;display:flex}.menu-item svg{color:var(--text-3);flex:none}.menu-item span{flex:1}.menu-item:hover{background:var(--raise-2)}.menu-item:hover svg{color:var(--accent)}.menu-item.danger{color:var(--danger)}.menu-gap{width:16px;flex:none!important}.app{position:fixed;inset:0;overflow:clip}.stage,.plan{position:absolute;inset:0}.canvas{touch-action:none;cursor:default;width:100%;height:100%;display:block}.canvas.tool-marquee,.canvas.tool-wall,.canvas.tool-room,.canvas.tool-divider,.canvas.tool-door,.canvas.tool-window,.canvas.tool-label,.canvas.tool-measure,.canvas.tool-calibrate{cursor:crosshair}.chrome{transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s}.app.focus .chrome{opacity:0;pointer-events:none;visibility:hidden}.loading{color:var(--text-2);place-content:center;justify-items:center;gap:14px;display:grid;position:absolute;inset:0}.loading i,.spin{animation:.9s linear infinite spin}.loading i{border:2.5px solid var(--raise-2);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px}@keyframes spin{to{transform:rotate(360deg)}}.topbar{z-index:20;pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:start;gap:12px;display:grid;position:absolute;top:12px;left:12px;right:12px}.cluster{pointer-events:auto;justify-self:start;align-items:center;gap:2px;min-width:0;height:48px;padding:0 6px;display:flex}.cluster.centre{justify-self:center}.cluster:last-child{justify-self:end}.logo{filter:drop-shadow(0 2px 8px color-mix(in srgb, var(--accent) 45%, transparent));flex:none;margin:0 4px 0 5px}.title{border-radius:8px;align-items:center;min-width:40px;max-width:240px;display:inline-grid;position:relative}.title:before{content:attr(data-value);visibility:hidden;white-space:pre;grid-area:1/1;padding:5px 8px;font-size:14px;font-weight:600;overflow:hidden}.title input{letter-spacing:-.01em;text-overflow:ellipsis;cursor:text;background:0 0;border:0;border-radius:8px;grid-area:1/1;width:100%;min-width:0;padding:5px 8px;font-size:14px;font-weight:600}.title input:hover{background:var(--raise)}.title input:focus{background:var(--raise-2);outline:2px solid var(--accent);outline-offset:0}.title:focus-within:after{opacity:0!important}.rail{z-index:15;border-radius:16px;flex-direction:column;align-items:center;gap:3px;padding:6px;display:flex;position:absolute;top:76px;left:12px}.rail .ibtn{width:38px;height:38px}.dock{z-index:15;border-radius:16px;align-items:center;gap:2px;padding:6px;display:flex;position:absolute;bottom:16px;left:50%;translate:-50%}.hints{z-index:14;background:color-mix(in srgb, var(--surface-solid) 78%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border);max-width:calc(100% - 32px);color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;border-radius:999px;padding:6px 12px;font-size:12px;position:absolute;bottom:76px;left:50%;overflow:hidden;translate:-50%}.hints kbd{margin:0 5px 0 12px}.hints kbd:first-child{margin-left:0}.hints.faded{opacity:0}.scalebar{color:var(--text-2);font:500 11px var(--mono);pointer-events:none;flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute;bottom:26px;right:86px}.scalebar i{border:1.5px solid var(--text-2);border-top:0;border-radius:0 0 2px 2px;height:6px}.focusbar{z-index:25;opacity:.28;align-items:center;gap:4px;padding:6px;transition:opacity .2s;display:flex;position:absolute;top:12px;left:50%;translate:-50%}.focusbar:hover,.focusbar:focus-within{opacity:1}.quick{z-index:12;animation:pop .16s var(--ease);background:color-mix(in srgb, var(--surface-solid) 92%, transparent);border-radius:13px;gap:1px;padding:4px;display:flex;position:absolute;translate:-50% -100%}.quick .ibtn{width:32px;height:32px}.library{z-index:15;width:332px;animation:slide-right .24s var(--ease);flex-direction:column;gap:10px;padding:14px 14px 0;display:flex;position:absolute;top:76px;bottom:16px;left:74px}@keyframes slide-right{0%{opacity:0;transform:translate(-12px)}}.library>header,.inspector>header{justify-content:space-between;align-items:center;gap:8px;display:flex}.library h2{font-size:17px}.library h3{padding:14px 2px 8px}.search{background:var(--raise);border:1px solid var(--border);height:38px;color:var(--text-3);border-radius:11px;align-items:center;gap:8px;padding:0 6px 0 12px;display:flex}.search:focus-within{border-color:var(--accent);background:var(--raise-2)}.search input{min-width:0;color:var(--text);background:0 0;border:0;outline:none;flex:1}.search input::placeholder{color:var(--text-3)}.chips{scrollbar-width:none;flex:none;gap:6px;margin:0 -14px;padding:0 14px 2px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--border);height:28px;color:var(--text-2);white-space:nowrap;background:0 0;border-radius:999px;flex:none;padding:0 11px;font-size:12.5px;font-weight:500;transition:all .15s}.chip:hover{color:var(--text);border-color:var(--border-strong)}.chip.on{background:var(--text);color:var(--bg);border-color:#0000}.scroll{flex:1;min-height:0;margin:0 -8px;padding:0 8px 14px;overflow-y:auto}.grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.card{cursor:grab;-webkit-user-select:none;user-select:none;transition:background .15s, border-color .15s, transform .15s var(--ease);border:1px solid #0000;border-radius:12px;flex-direction:column;gap:6px;padding:5px 5px 7px;display:flex;position:relative}.card:hover{background:var(--raise);border-color:var(--border);transform:translateY(-1px)}.card:active{cursor:grabbing;transform:scale(.97)}.card.on{background:var(--accent-soft);border-color:var(--accent)}.card>span{color:var(--text-2);text-align:center;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0 2px;font-size:11.5px;line-height:1.25;display:-webkit-box;overflow:hidden}.card:hover>span{color:var(--text)}.thumb{aspect-ratio:1;background:var(--thumb);border:1px solid var(--border);border-radius:9px;place-items:center;display:grid;overflow:hidden}.thumb img{object-fit:contain;width:100%;height:100%;animation:.3s fade}.thumb.floor,.thumb.symbol{aspect-ratio:1.25}.thumb-wait{aspect-ratio:1;background:var(--c);opacity:.5;border-radius:30%;width:34%;animation:1.4s ease-in-out infinite breathe}@keyframes breathe{50%{opacity:.2;transform:scale(.86)}}@keyframes fade{0%{opacity:0}}.card-x{background:var(--surface-solid);width:22px;height:22px;color:var(--text-2);opacity:0;border:0;border-radius:7px;place-items:center;transition:opacity .15s;display:grid;position:absolute;top:9px;right:9px}.card:hover .card-x{opacity:1}.card-x:hover{color:var(--danger)}.opening-icon{fill:none;stroke-linecap:round;stroke-linejoin:round;width:78%}.opening-icon .wall{stroke:var(--text);stroke-width:3.5px}.opening-icon .pane{stroke:var(--text-2);stroke-width:1.2px;fill:#6cc3ff3d}.opening-icon .glass{stroke:#4aa8f0;stroke-width:1.4px}.opening-icon .leaf,.opening-icon .slide{stroke:var(--text-2);stroke-width:1.5px}.opening-icon .slide{stroke-width:2.4px}.opening-icon .glazed{stroke:#4aa8f0}.opening-icon .dashed{stroke-dasharray:3 3}.inspector{z-index:15;width:308px;max-height:calc(100% - 164px);animation:slide-left .24s var(--ease);flex-direction:column;gap:10px;padding:14px 14px 0;display:flex;position:absolute;top:76px;right:12px}@keyframes slide-left{0%{opacity:0;transform:translate(12px)}}.inspector>header small{color:var(--text-3);text-transform:uppercase;letter-spacing:.07em;font-size:11px;font-weight:600;display:block}.inspector>header h2{text-overflow:ellipsis;white-space:nowrap;max-width:220px;margin-top:1px;font-size:17px;overflow:hidden}.inspector .actions{background:var(--raise);border-radius:12px;gap:2px;padding:3px;display:flex}.inspector .actions .ibtn{flex:1;width:auto;height:34px}.inspector .scroll{flex-direction:column;gap:8px;display:flex}.section{flex-direction:column;gap:8px;padding-top:6px;display:flex}.section>header{justify-content:space-between;align-items:center;margin-top:4px;display:flex}.field{grid-template-columns:104px 1fr;align-items:center;gap:8px;display:grid}.field>span{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.field.stacked{grid-template-columns:1fr;gap:6px}.input{background:var(--raise);border:1px solid var(--border);border-radius:9px;align-items:center;gap:6px;min-width:0;height:32px;padding:0 9px;transition:border-color .15s,background .15s;display:flex}.input:hover{border-color:var(--border-strong)}.input:focus-within{border-color:var(--accent);background:var(--raise-2)}.input input,.input select{font-variant-numeric:tabular-nums;background:0 0;border:0;outline:none;flex:1;width:100%;min-width:0;padding:0}.input select{cursor:pointer}.input select option,.input select optgroup{background:var(--surface-solid);color:var(--text)}.input em{color:var(--text-3);font-size:12px;font-style:normal}.input.big{border-radius:11px;height:40px;padding:0 12px}input[type=number]::-webkit-inner-spin-button{opacity:.4}input[type=range]{accent-color:var(--accent);width:100%}.toggle{cursor:pointer;align-items:center;gap:10px;min-height:30px;display:flex}.toggle span{color:var(--text-2);flex:1}.toggle input{opacity:0;pointer-events:none;position:absolute}.toggle i{background:var(--raise-2);border-radius:999px;flex:none;width:34px;height:20px;transition:background .2s;position:relative}.toggle i:after{content:"";width:16px;height:16px;transition:transform .25s var(--spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000059}.toggle input:checked+i{background:var(--accent)}.toggle input:checked+i:after{transform:translate(14px)}.toggle input:focus-visible+i{outline:2px solid var(--accent);outline-offset:2px}.swatches{grid-template-columns:repeat(6,1fr);gap:7px;display:grid}.swatches.compact{grid-template-columns:repeat(6,24px);padding:4px}.swatch{aspect-ratio:1;border:1px solid var(--border-strong);transition:transform .15s var(--spring);border-radius:50%;padding:0;position:relative}.swatch:hover{transform:scale(1.14)}.swatch.on{box-shadow:0 0 0 2px var(--surface-solid), 0 0 0 4px var(--accent)}.swatch.custom{cursor:pointer;background:conic-gradient(#ff5e5e,#ffd35e,#5eff8f,#5ed6ff,#8f5eff,#ff5ecf,#ff5e5e);overflow:hidden}.swatch.custom input{opacity:0;cursor:pointer;width:200%;height:200%;position:absolute;inset:-8px}.issues-pop{width:320px;max-height:60vh;overflow-y:auto}.issues-pop .hint{padding:0 6px 6px}.issues{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.issues li{border-left:3px solid var(--text-3);background:var(--raise);cursor:pointer;color:var(--text-2);border-radius:9px;flex-direction:column;padding:8px 10px;font-size:12.5px;display:flex}.issues li b{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-size:11px}.issues li:hover{background:var(--raise-2);color:var(--text)}.issues li.error{border-color:var(--danger)}.issues li.error b{color:var(--danger)}.issues li.warning{border-color:var(--warn)}.issues li.warning b{color:var(--warn)}.notice{z-index:35;background:color-mix(in srgb, var(--surface-solid) 94%, transparent);max-width:min(560px,100% - 32px);box-shadow:var(--shadow);animation:pop .2s var(--ease);border-radius:14px;padding:8px 8px 8px 16px;position:absolute;top:74px;left:50%;translate:-50%}.notice .line{align-items:center;gap:12px;display:flex}.notice ul{max-height:180px;color:var(--text-2);margin:8px 0 6px;padding-left:18px;overflow-y:auto}.welcome{z-index:13;text-align:center;width:min(720px,100% - 180px);box-shadow:var(--shadow), var(--sheen);animation:rise .5s var(--ease);border-radius:24px;padding:34px 34px 30px;position:absolute;top:50%;left:50%;translate:-50% -46%}@keyframes rise{0%{opacity:0;transform:translateY(14px)scale(.985)}}.welcome-x{position:absolute;top:12px;right:12px}.welcome h1{letter-spacing:-.03em;background:linear-gradient(120deg, var(--text) 30%, var(--accent) 120%);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:30px;font-weight:650;line-height:1.15}.welcome>p{color:var(--text-2);margin:10px 0 26px;font-size:15px}.starts{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.start{border:1px solid var(--border);background:var(--raise);text-align:left;transition:transform .2s var(--ease), border-color .2s, background .2s;border-radius:16px;flex-direction:column;align-items:flex-start;gap:4px;padding:14px;display:flex}.start:hover{border-color:var(--accent);background:var(--raise-2);transform:translateY(-3px)}.start b{margin-top:8px;font-size:14px;font-weight:600}.start span:last-child{color:var(--text-3);font-size:12px;line-height:1.4}.start-icon{background:var(--raise-2);width:38px;height:38px;color:var(--accent);border-radius:11px;place-items:center;display:grid}.start.lead .start-icon{background:var(--brand);color:#04101f;box-shadow:0 6px 18px color-mix(in srgb, var(--accent) 40%, transparent)}.fab{z-index:40;background:var(--brand);color:#04101f;width:54px;height:54px;box-shadow:0 10px 30px color-mix(in srgb, var(--accent) 50%, transparent), inset 0 1px 0 #ffffff73;transition:transform .25s var(--spring), filter .2s, opacity .25s, visibility .25s;border:0;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:16px;right:16px}.fab:before{content:"";border:1.5px solid var(--accent);opacity:0;border-radius:50%;animation:3.2s ease-out infinite ping;position:absolute;inset:-5px}.fab.open:before{animation:none}@keyframes ping{0%{opacity:.55;transform:scale(.92)}60%,to{opacity:0;transform:scale(1.3)}}.fab:hover{filter:brightness(1.08);transform:scale(1.07)}.fab:active{transform:scale(.95)}.fab.open{background:var(--surface-solid);color:var(--text);box-shadow:var(--shadow-s);border:1px solid var(--border)}.chatwin{z-index:45;resize:both;width:384px;min-width:300px;max-width:calc(100vw - 16px);height:540px;min-height:320px;max-height:calc(100vh - 16px);box-shadow:var(--shadow), var(--sheen);background:color-mix(in srgb, var(--surface-solid) 90%, transparent);animation:rise .25s var(--ease);border-radius:20px;flex-direction:column;display:flex;position:fixed;overflow:hidden}.chatwin.hidden{display:none}.chatwin>header{cursor:grab;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--border);touch-action:none;align-items:center;gap:8px;padding:10px 10px 10px 14px;display:flex}.chatwin>header:active{cursor:grabbing}.chatwin>header h2{flex:none}.chatwin .grip{color:var(--text-3);opacity:.5;flex:1}.spark{background:var(--brand);color:#04101f;border-radius:8px;place-items:center;width:26px;height:26px;display:grid}.chat-log{-webkit-user-select:text;user-select:text;flex-direction:column;flex:1;gap:8px;min-height:0;padding:14px;display:flex;overflow-y:auto}.chat-log>*{flex:none}.chat-empty{flex-direction:column;gap:7px;margin:auto 0;display:flex}.chat-empty p{color:var(--text-2);margin-bottom:6px;font-size:13.5px}.idea{text-align:left;border:1px solid var(--border);background:var(--raise);color:var(--text-2);border-radius:11px;padding:9px 12px;font-size:12.5px;transition:all .15s}.idea:hover{border-color:var(--accent);color:var(--text);background:var(--accent-soft)}.msg{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px;max-width:92%;padding:8px 12px;font-size:13.5px;line-height:1.5;animation:.25s fade}.msg.user{background:var(--brand);color:#04101f;border-bottom-right-radius:5px;align-self:flex-end;font-weight:500}.msg.text{background:var(--raise-2);border-bottom-left-radius:5px;align-self:flex-start}.msg.action{color:var(--text-3);align-items:center;gap:6px;padding:0 4px;font-size:12px;display:flex}.msg.action svg{color:var(--ok);flex:none}.msg.error{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);align-self:flex-start}.msg.thought{max-width:100%;color:var(--text-3);align-self:stretch;padding:0 4px;font-size:12px}.msg.thought button{color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-size:12px;font-weight:500;display:flex}.msg.thought button:hover{color:var(--text-2)}.msg.thought svg{transition:transform .15s}.msg.thought.open svg{transform:rotate(90deg)}.msg.thought p{margin:4px 0 0 17px;font-style:italic}.msg.thinking{background:var(--raise-2);align-self:flex-start;gap:4px;padding:12px 14px;display:flex}.msg.thinking i{background:var(--text-2);border-radius:50%;width:6px;height:6px;animation:1.1s ease-in-out infinite bob}.msg.thinking i:nth-child(2){animation-delay:.15s}.msg.thinking i:nth-child(3){animation-delay:.3s}@keyframes bob{0%,60%,to{opacity:.3;transform:none}30%{opacity:1;transform:translateY(-3px)}}.chat-input{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding:10px;display:flex}.chat-input .context{background:var(--accent-soft);color:var(--accent);border-radius:999px;align-self:flex-start;padding:3px 9px;font-size:11.5px;font-weight:500}.chat-input .row{background:var(--raise);border:1px solid var(--border);border-radius:14px;flex-wrap:nowrap;align-items:flex-end;padding:6px 6px 6px 12px}.chat-input .row:focus-within{border-color:var(--accent)}.chat-input textarea{resize:none;background:0 0;border:0;outline:none;flex:1;min-width:0;padding:5px 0;font-size:13.5px;line-height:1.45}.send{background:var(--brand);color:#04101f;border:0;border-radius:10px;flex:none;place-items:center;width:32px;height:32px;transition:transform .15s,opacity .15s;display:grid}.send:disabled{opacity:.3;cursor:default}.send:hover:not(:disabled){transform:scale(1.06)}.chat-key{border:1px dashed var(--border-strong);background:var(--raise);text-align:left;color:var(--text-2);border-radius:14px;align-items:center;gap:12px;margin:10px;padding:12px 14px;font-size:12px;display:flex}.chat-key:hover{border-color:var(--accent)}.chat-key svg{color:var(--accent);flex:none}.chat-key b{color:var(--text);font-size:13px;display:block}.modal-back{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#05080e8c;place-items:center;padding:16px;animation:.18s fade;display:grid;position:fixed;inset:0}.modal{background:color-mix(in srgb, var(--surface-solid) 96%, transparent);width:440px;max-width:100%;max-height:100%;box-shadow:var(--shadow), var(--sheen);animation:rise .28s var(--ease);border-radius:22px;flex-direction:column;gap:12px;padding:20px;display:flex;overflow-y:auto}.modal.wide{width:620px}.modal>header{align-items:center;gap:10px;display:flex}.modal>header h2{letter-spacing:-.02em;flex:1;font-size:18px}.modal>header .ibtn{margin:-6px -8px -6px 0}.modal-icon{background:var(--accent-soft);width:32px;height:32px;color:var(--accent);border-radius:10px;place-items:center;display:grid}.modal-body{color:var(--text-2);font-size:14px;line-height:1.5}.modal>footer{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.preview{object-fit:contain;border:1px solid var(--border);background:#fff;border-radius:14px;max-height:280px}.progress{flex-direction:column;gap:10px;padding:4px 0;display:flex}.progress .bar{background:var(--raise-2);border-radius:3px;height:5px;overflow:hidden}.progress .bar:after{content:"";background:var(--brand);border-radius:3px;width:35%;height:100%;animation:1.3s ease-in-out infinite slide;display:block}@keyframes slide{0%{transform:translate(-110%)}to{transform:translate(300%)}}.progress .steps{color:var(--text-3);flex-direction:column;gap:6px;display:flex}.progress .steps span{align-items:center;gap:8px;display:flex}.progress .steps i{border:1.5px solid var(--border-strong);border-radius:50%;width:14px;height:14px}.progress .steps .done{color:var(--ok)}.progress .steps .now{color:var(--text);font-weight:600}.samples{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.sample{border:1px solid var(--border);background:var(--raise);text-align:left;transition:transform .2s var(--ease), border-color .2s, background .2s;border-radius:16px;flex-direction:column;gap:3px;padding:10px 10px 12px;display:flex}.sample:hover{border-color:var(--accent);background:var(--raise-2);transform:translateY(-3px)}.sample b{margin-top:8px;font-size:14px}.sample span{color:var(--text-2);font-size:12px;line-height:1.4}.sample small{color:var(--text-3);font:500 11px var(--mono);margin-top:4px}.plan-preview{aspect-ratio:1.3;background:var(--thumb);border:1px solid var(--border);border-radius:10px;width:100%;padding:6px}.plan-preview .wall{stroke:var(--text);stroke-linecap:square}.plan-preview .zone{stroke:var(--accent-2);stroke-width:.05px;stroke-dasharray:.16 .12}@media (width<=640px){.samples{grid-template-columns:1fr}}.view3d,.view3d-host{position:absolute;inset:0}.view3d-host canvas{outline:none;display:block}.readout{z-index:16;font:600 12.5px var(--mono);pointer-events:none;border-radius:999px;padding:6px 14px;position:absolute;bottom:116px;left:50%;translate:-50%}.minimap{z-index:15;cursor:pointer;background:#0e1118b8;border-color:#ffffff1f;border-radius:18px;position:absolute;bottom:16px;left:16px}.crosshair{pointer-events:none;background:#fff;border-radius:50%;width:6px;height:6px;margin:-3px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 1.5px #0000008c}.light-pop{flex-direction:column;gap:10px;width:284px;padding:12px;display:flex}.light-pop h3{padding:0}.sunpad{-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:4px;display:flex}.sunpad svg{touch-action:none;display:block}.sunpad .sky{fill:#cfe5fb;stroke:var(--border-strong);transition:fill .4s}.sunpad.night .sky{fill:#131c36}.sunpad .ring{fill:none;stroke:#64748b73;stroke-dasharray:2 4}.sunpad .house{stroke:#1f2a3d;stroke-width:1.6px;stroke-linecap:round}.sunpad.night .house{stroke:#dbe4f3}.sunpad .beam{stroke:#f59e0b;stroke-opacity:.6;stroke-dasharray:3 3}.sunpad .orb{fill:#fbbf24;stroke:#fff;stroke-width:2px;cursor:grab;filter:drop-shadow(0 0 8px #fbbf24)}.sunpad.night .orb{fill:#e8eefc;filter:drop-shadow(0 0 8px #b8c8ff)}.sunpad .hint{text-align:center}@media (width<=900px){.seg.views button span{display:none}.seg.views button{padding:0 14px}.title{max-width:120px}.starts{grid-template-columns:repeat(2,1fr)}.welcome{width:calc(100% - 32px)}.hints{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.chatwin.over{outline:2px dashed var(--accent);outline-offset:-6px}.attached{flex-wrap:wrap;gap:6px;display:flex}.attached span{border:1px solid var(--border-strong);width:56px;height:56px;animation:pop .18s var(--ease);border-radius:10px;position:relative;overflow:hidden}.attached img{object-fit:cover;width:100%;height:100%;display:block}.attached button{color:#fff;background:#0a0d14c7;border:0;border-radius:50%;place-items:center;width:18px;height:18px;padding:0;display:grid;position:absolute;top:3px;right:3px}.attached button:hover{background:var(--danger)}.chat-input .row{gap:4px;padding-left:6px}.chat-input .attach{align-self:flex-end;margin-bottom:2px}.msg-images{flex-wrap:wrap;gap:5px;margin-bottom:6px;display:flex}.msg-images img{object-fit:cover;border-radius:9px;width:92px;height:92px;display:block}
