:root{--bg:#f6f7f9;--panel:#fff;--border:#e3e6eb;--text:#1c2330;--muted:#6b7585;--accent:#e4572e;--accent-soft:#fdebe5;--warn-bg:#fff6e0;--warn-border:#f0c75e;--radius:10px;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--font)}button,input,select,textarea{font:inherit;color:inherit}h2{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 10px;font-size:13px}.app{flex-direction:column;height:100vh;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:20px;padding:10px 16px;display:flex}.brand{align-items:center;gap:10px;min-width:180px;display:flex}.brand .logo{color:var(--accent);font-size:26px;line-height:1}.brand strong{font-size:16px;display:block}.brand small{color:var(--muted);font-size:12px}.structure-picker{flex:1;gap:6px;display:flex;overflow-x:auto}.structure-picker button,.lang button,.tabs button,.segmented button{border:1px solid var(--border);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:8px;padding:6px 12px}.structure-picker button.active,.tabs button.active,.segmented button.active,.lang button.active{background:var(--text);color:#fff;border-color:var(--text)}.structure-picker button:disabled{cursor:not-allowed;color:var(--muted);background:var(--bg)}.structure-picker em{background:var(--border);border-radius:6px;margin-left:4px;padding:1px 6px;font-size:11px;font-style:normal}.lang{gap:4px;display:flex}.lang button{padding:4px 9px;font-size:12px}.workspace{flex:1;grid-template-columns:300px 1fr 390px;min-height:0;display:grid}.left,.right{background:var(--panel);padding:16px;overflow-y:auto}.left{border-right:1px solid var(--border)}.right{border-left:1px solid var(--border)}.center{flex-direction:column;gap:8px;min-width:0;min-height:0;padding:12px;display:flex}.panel-row{gap:8px;margin-bottom:14px;display:flex}.preset-select{flex:1;min-width:0}select,.number-input input{border:1px solid var(--border);background:var(--panel);border-radius:8px;padding:6px 8px}.btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:8px;padding:6px 12px}.btn.ghost:hover{background:var(--bg)}.param-group{border:none;margin:0 0 18px;padding:0}.param-group legend{margin-bottom:8px;padding:0;font-size:13px;font-weight:600}.control{margin-bottom:12px}.control-label{align-items:center;gap:6px;margin-bottom:5px;font-size:13px;display:flex}.help{background:var(--border);width:16px;height:16px;color:var(--muted);cursor:help;border-radius:50%;place-items:center;font-size:11px;display:inline-grid}.number-control{align-items:center;gap:10px;display:flex}.number-control input[type=range]{accent-color:var(--accent);flex:1}.number-input{align-items:center;gap:4px;display:flex}.number-input input{text-align:right;width:76px}.number-control:not(:has(input[type=range])) .number-input input{width:110px}.unit{color:var(--muted);min-width:22px;font-size:12px}.segmented{flex-wrap:wrap;gap:4px;display:flex}.segmented button{padding:5px 10px;font-size:13px}.swatches{flex-wrap:wrap;align-items:center;gap:4px;max-width:100%;display:flex}.swatches .swatch{cursor:pointer;border:1px solid #0000002e;border-radius:6px;flex:none;width:21px;height:21px;padding:0}.swatches .swatch.natural{background:linear-gradient(135deg,#d2a56d 0 33%,#ece4d6 33% 66%,#6f7f8e 66%)}.swatches .swatch.active{outline:2px solid var(--accent,#e4572e);outline-offset:2px}.swatches .swatch-name{opacity:.75;flex-basis:100%;font-size:12px}.control-issue{color:#9a5b00;margin-top:4px;font-size:12px}.view-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.tabs{gap:4px;display:flex}.toggles{flex-wrap:wrap;align-items:center;gap:14px;font-size:13px;display:flex}.toggles label{cursor:pointer;align-items:center;gap:5px;display:flex}.viewport{border-radius:var(--radius);border:1px solid var(--border);background:#eef1f5;flex:1;min-height:320px;overflow:hidden}.placeholder{height:100%;color:var(--muted);text-align:center;place-items:center;padding:24px;display:grid}.disclaimer{color:var(--muted);margin:0;font-size:12px}.parts-panel section{margin-bottom:20px}.warnings{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:8px;padding:8px 12px;font-size:13px}.warnings p{margin:4px 0}.summary{grid-template-columns:1fr auto;gap:4px 12px;margin:0;font-size:13px;display:grid}.summary dt{color:var(--muted)}.summary dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:500}.hint{color:var(--muted);margin:-4px 0 8px;font-size:12px}table.parts{border-collapse:collapse;width:100%;font-size:13px}table.parts th,table.parts td{text-align:left;border-bottom:1px solid var(--border);padding:6px}table.parts thead th{color:var(--muted);font-size:12px;font-weight:500}table.parts .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.parts tr.cat th{background:var(--bg);font-size:12px;font-weight:600}table.parts tr.part{cursor:pointer}table.parts tr.part:hover,table.parts tr.part.open{background:var(--accent-soft)}.swatch{vertical-align:middle;border:1px solid #00000026;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}tr.spec td{background:#fbfbfc}tr.spec dl{grid-template-columns:1fr auto;gap:3px 10px;margin:0;font-size:12px;display:grid}tr.spec dt{color:var(--muted)}tr.spec dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.ai-placeholder{border:1px dashed var(--border);border-radius:8px;padding:12px}.ai-placeholder textarea{width:100%}@media (max-width:1100px){.workspace{grid-template-columns:280px 1fr}.right{border-left:none;border-top:1px solid var(--border);grid-column:1/-1}.app{height:auto;min-height:100vh}.topbar{flex-wrap:wrap;gap:10px 14px}.structure-picker{flex:none;overflow-x:visible}.center{align-self:start;height:100dvh;position:sticky;top:0}.viewport{min-height:320px}}@media (max-width:720px){.topbar{flex-wrap:wrap;gap:10px}.structure-picker{flex:100%;order:3;min-width:0;overflow-x:auto}.structure-picker button{text-overflow:ellipsis;min-width:0;overflow:hidden}.workspace{grid-template-columns:1fr}.left{border-right:none;border-bottom:1px solid var(--border);order:2}.center{order:1;height:auto;position:relative}.center .viewport{flex:none;height:70dvh;min-height:300px}.right{order:3}}.list-control{flex-direction:column;gap:6px;display:flex}.list-control .hint{margin:0 0 4px}.list-item{border:1px solid var(--border);background:var(--panel);border-radius:8px}.list-item.has-error{background:#fff7f7;border-color:#e0a3a3}.list-item-head{align-items:center;display:flex}.list-item-title{text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:baseline;gap:6px;min-width:0;padding:7px 8px;display:flex}.list-item-title small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chev{color:var(--muted);width:10px}.icon-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;padding:6px 8px}.icon-btn:hover:not(:disabled){background:var(--bg);color:var(--text)}.list-item>.control-issue{padding:0 10px 8px}.list-item-body{border-top:1px solid var(--border);padding:4px 10px 10px}.add-btn{align-self:flex-start}.drawing-view{background:#fff;flex-direction:column;height:100%;display:flex}.drawing-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px;padding:8px;display:flex}.drawing-tabs button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:4px 10px;font-size:13px}.drawing-tabs button.active{background:var(--accent-soft);border-color:var(--accent)}.drawing-hint{color:var(--muted);margin-left:auto;font-size:11px}.drawing-canvas{cursor:grab;touch-action:none;flex:1;position:relative;overflow:hidden}.drawing-canvas:active{cursor:grabbing}.drawing-svg{transform-origin:50%;position:absolute;inset:12px}.drawing-svg svg{display:block}.file-menu{position:relative}.menu-backdrop{z-index:20;position:fixed;inset:0}.menu{z-index:21;background:var(--panel);border:1px solid var(--border);border-radius:10px;min-width:240px;padding:6px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 30px #141e3226}.menu-group+.menu-group{border-top:1px solid var(--border);margin-top:4px;padding-top:4px}.menu-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:4px 8px;font-size:11px}.menu button{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;width:100%;padding:6px 8px;display:block}.menu button:hover{background:var(--accent-soft)}.toast{z-index:30;background:var(--text);color:#fff;border-radius:8px;padding:8px 14px;font-size:13px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.parts-head{justify-content:space-between;align-items:center;display:flex}.parts-head h2{margin:0}.price-toggle{color:var(--muted);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:flex}.price-input{text-align:right;border:1px solid var(--border);border-radius:6px;width:56px;padding:2px 4px}table.parts tfoot th{border-top:2px solid var(--text);padding-top:8px}.right{overflow-x:auto}.edit-toolbar{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.edit-toolbar button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:13px}.edit-toolbar button.active{background:var(--accent-soft);border-color:var(--accent);color:#9b2f10}.edit-toolbar button:disabled{opacity:.4;cursor:default}.edit-toolbar .sep{background:var(--border);width:1px;height:22px;margin:0 4px}.grid-toggle{cursor:pointer;align-items:center;gap:5px;margin-left:8px;font-size:13px;display:flex}.viewport{position:relative}.drawing-static,.drawing-overlay{position:absolute;inset:0}.drawing-static svg{display:block}.plan-overlay{cursor:default;display:block}.plan-overlay.placing{cursor:crosshair}.plan-overlay.grabbing{cursor:grab}.ov-item{fill:#e4572e00;stroke:none}.ov-item.hover{fill:#e4572e1f;stroke:#e4572e}.ov-item.selected{fill:#e4572e38;stroke:#e4572e}.ov-ghost{fill:#3b5b8c2e;stroke:#3b5b8c;stroke-dasharray:60 40}.ov-ghost.bad{fill:#c8282826;stroke:#c62828}.ov-guide,.ov-dim line{stroke:#e4572e}.ov-dim text{fill:#b3401f;font-weight:600}.ov-hint{fill:var(--muted)}.inspector{z-index:5;background:var(--panel);border:1px solid var(--border);border-radius:12px;width:232px;max-height:calc(100% - 20px);padding:10px;font-size:12.5px;position:absolute;top:10px;right:10px;overflow-y:auto;box-shadow:0 8px 24px #141e321f}.inspector.folded{width:auto;min-width:200px;padding:6px 10px}.inspector.folded .inspector-head{margin-bottom:0}.inspector-size{color:var(--muted);font-weight:400}.shape-toggle{border:1px solid var(--border);background:var(--panel);cursor:pointer;width:100%;color:var(--text);border-radius:6px;align-items:center;gap:6px;margin-bottom:8px;padding:3px 8px;font-size:12px;display:flex}.shape-toggle-caret{color:var(--muted);margin-left:auto}.inspector-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.chips{flex-wrap:wrap;gap:4px;margin-bottom:10px;display:flex}.chips button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:2px 8px;font-size:12px}.chips button.active{background:var(--accent-soft);border-color:var(--accent)}.inspector-grid{grid-template-columns:1fr auto;align-items:center;gap:6px 8px;display:grid}.inspector-grid label{color:var(--muted)}.inspector-grid .number-input input{width:76px}.inspector-grid select{max-width:130px}.inspector-actions{gap:6px;margin-top:10px;display:flex}.inspector-actions .btn{flex:1}.btn.danger{color:#c62828}.inspector-error{color:#c62828;margin:8px 0 0;font-size:12px}.inspector-hint{color:var(--muted);margin:8px 0 0;font-size:11px}.gap-label{color:#b3401f;white-space:nowrap;background:#fff;border:1px solid #e4572e;border-radius:4px;padding:0 4px;font-size:11px;font-weight:600}.list-item.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.btn.small{margin-left:auto;padding:2px 8px;font-size:12px}.hidden-list .control-label{justify-content:space-between}.ov-block{fill:#3b5b8c00;stroke:none}.ov-block.hover{fill:#3b5b8c14;stroke:#3b5b8c}.ov-block.selected{fill:#3b5b8c24;stroke:#3b5b8c}.ov-block.upper.hover,.ov-block.upper.selected{stroke-dasharray:80 50}.site-panel{flex-direction:column;gap:14px;display:flex}.site-add-title{margin-bottom:6px;font-size:13px;font-weight:600}.site-add-buttons{grid-template-columns:1fr 1fr;gap:6px;display:grid}.site-list{flex-direction:column;gap:4px;display:flex}.site-row{text-align:left;border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:baseline;gap:8px;padding:7px 10px;display:flex}.site-row small{color:var(--muted)}.site-row.active{border-color:var(--accent);background:var(--accent-soft)}.site-object{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:12px;display:flex}.site-name{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:15px;font-weight:600}.site-object-actions{gap:6px;display:flex}.site-object-actions .btn:first-child{flex:1}.site-pose{gap:8px;display:flex}.site-pose label{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:flex}.site-pose input{border:1px solid var(--border);text-align:right;border-radius:6px;width:64px;padding:3px 5px}.site-banner{background:#eef4fb;border:1px solid #b8cde6;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:6px 10px;font-size:13px;display:flex}table.parts .origin{color:var(--muted);font-size:11px;display:block}.site-links{flex-direction:column;gap:6px;display:flex}.site-link{align-items:center;gap:6px;font-size:13px;display:flex}.site-link span{flex:1}.site-link input{border:1px solid var(--border);text-align:right;border-radius:6px;width:52px;padding:2px 4px}.site-link-candidates{flex-direction:column;gap:4px;display:flex}.site-rotate{gap:6px;display:flex}.site-rotate .btn{flex:1;padding:4px 6px}.tool-rail{z-index:4;background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:2px;max-height:calc(100% - 16px);padding:4px;display:flex;position:absolute;top:8px;left:8px;overflow-y:auto;box-shadow:0 4px 14px #141e3214}.rail-btn{cursor:pointer;width:36px;height:36px;color:var(--text);background:0 0;border:none;border-radius:8px;place-items:center;display:grid}.rail-btn:hover:not(:disabled){background:var(--bg)}.rail-btn.active{background:var(--accent-soft);color:#b3401f}.rail-btn:disabled{color:#b8c0cc;cursor:default}.rail-sep{background:var(--border);height:1px;margin:3px 4px}.rail-anchor{position:relative}.rail-pop{z-index:6;background:var(--panel);border:1px solid var(--border);border-radius:10px;width:240px;padding:6px;font-size:13px;position:absolute;top:0;left:42px;box-shadow:0 10px 30px #141e3226}.rail-pop button{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;width:100%;padding:6px 8px;display:block}.rail-pop button:hover{background:var(--accent-soft)}.rail-pop p{color:var(--muted);margin:4px}body.placing-object,body.placing-object *{cursor:copy!important}.drawing-tabs{padding-left:0}.rail-btn{width:32px;height:32px}.rail-btn svg{width:18px;height:18px}.rail-sep{margin:2px 4px}.tool-rail{scrollbar-width:none}.tool-rail::-webkit-scrollbar{display:none}.shape-chips button{padding:2px 4px;line-height:0}.pen-bar{z-index:5;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:8px 10px;font-size:12.5px;position:absolute;bottom:10px;left:56px;right:10px;box-shadow:0 8px 24px #141e321f}.pen-row{flex-wrap:wrap;align-items:center;gap:4px 6px;margin-bottom:4px;display:flex}.pen-bar{max-width:640px}.pen-row button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:2px 7px;font-size:11.5px}.pen-row button.active{background:var(--accent-soft);border-color:var(--accent)}.pen-row label{color:var(--muted);align-items:center;gap:4px;display:flex}.pen-row input{width:58px}.pen-row .pen-close{margin-left:auto}.pen-hint{color:var(--muted);margin:0}.pen-hint strong{color:var(--text);font-weight:600}.site-link select{max-width:120px;font-size:12px}.inspector-grid input[type=number]{width:76px}.cursor-hint{z-index:50;pointer-events:none;color:#fff;white-space:nowrap;background:#1f2937eb;border-radius:6px;max-width:360px;padding:4px 8px;font-size:12px;line-height:1.3;display:none;position:fixed;top:0;left:0;box-shadow:0 4px 12px #0000002e}.select-frame{background:#3b5b8c14;border:1.5px dashed #3b5b8c;position:absolute}.notice{z-index:6;color:#7a3e00;background:#fff4e5;border:1px solid #f3c58a;border-radius:8px;max-width:80%;padding:6px 12px;font-size:13px;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #141e321f}.site-split{width:100%;margin-bottom:8px}.structure-picker{align-items:center}.structure-picker .nav-builder,.structure-picker .nav-catalog{align-items:center;gap:6px;font-weight:500;display:inline-flex}.structure-picker .nav-builder.active{background:var(--accent);color:#fff;border-color:var(--accent)}.structure-picker .nav-catalog.active{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.nav-sep{background:var(--border);align-self:stretch;width:1px;margin:2px 4px}.nav-anchor{position:relative}.nav-caret{color:var(--muted);font-size:11px}.nav-recent-label{color:var(--muted);margin-left:6px;font-size:12px}.structure-picker .nav-recent{padding:4px 10px;font-size:12.5px}.catalog{z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:12px;width:min(640px,100vw - 32px);padding:12px;position:absolute;box-shadow:0 14px 36px #141e322e}.catalog-header{top:calc(100% + 6px);left:0}.catalog-rail{width:min(520px,100vw - 120px);top:0;left:44px}.catalog-search{box-sizing:border-box;border:1px solid var(--border);border-radius:8px;width:100%;margin-bottom:10px;padding:7px 10px;font-size:13px}.catalog-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.catalog-cat-title{color:var(--muted);text-transform:none;margin:0 0 4px 4px;font-size:11.5px}.catalog-item{text-align:left;cursor:pointer;width:100%;color:var(--text);touch-action:none;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px;font-size:13px;display:flex}.catalog-item:hover:not(:disabled){background:var(--accent-soft)}.catalog-item:disabled{color:#9aa3ad;cursor:default}.catalog-item em{color:var(--muted);border:1px solid var(--border);border-radius:6px;margin-left:auto;padding:0 5px;font-size:10.5px;font-style:normal}.catalog-item svg{flex:none}.catalog-hint{color:var(--muted);margin:10px 4px 0;font-size:12px}.site-add-catalog{width:100%}.catalog-panel{width:min(420px,100vw - 32px);top:calc(100% + 6px);left:0}.estimate{max-width:620px;margin-top:18px}.estimate-fields{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px 14px;margin:8px 0 12px;display:grid}.estimate-field{grid-template-columns:1fr auto;align-items:center;gap:3px 6px;font-size:12px;display:grid}.estimate-field span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;grid-column:1/-1;overflow:hidden}.estimate-field input,.estimate-field select{border:1px solid var(--border);width:100%;min-width:0;font:inherit;border-radius:6px;padding:5px 7px}.estimate-field select{grid-column:1/-1}.estimate-field em{color:var(--muted);font-style:normal}.estimate-table{border-collapse:collapse;width:100%;font-size:13px}.estimate-table th{text-align:left;border-bottom:1px solid var(--border);padding:5px 0;font-weight:400}.estimate-table td{text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;padding:5px 0}.estimate-table tr.total th,.estimate-table tr.total td{border-bottom:none;padding-top:9px;font-size:15px;font-weight:700}.modal-backdrop{z-index:60;background:#0f141e59;justify-content:center;align-items:flex-start;padding:40px 16px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--panel);border-radius:12px;width:min(640px,100%);padding:18px 20px;box-shadow:0 20px 50px #0a14284d}.modal h2{margin:0 0 10px}.modal fieldset{border:1px solid var(--border);border-radius:10px;grid-template-columns:1fr 1fr;gap:8px 12px;margin:0 0 12px;padding:10px 12px;display:grid}.modal legend{color:var(--muted);padding:0 4px;font-size:12px}.offer-field{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.offer-field.wide,.modal fieldset .hint{grid-column:1/-1}.offer-field input,.offer-field textarea{border:1px solid var(--border);font:inherit;color:var(--text);border-radius:6px;padding:6px 8px}.offer-logo{object-fit:contain;max-width:120px;max-height:40px;margin-top:4px}.offer-check{align-items:center;gap:6px;font-size:13px;display:flex}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.small{align-self:flex-start;padding:2px 8px;font-size:12px}.modal.projects{width:min(720px,100%)}.projects-save{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.projects-save input{border:1px solid var(--border);min-width:180px;font:inherit;border-radius:6px;flex:1;padding:7px 9px}.projects-list{flex-direction:column;gap:6px;max-height:55vh;margin:0 0 10px;padding:0;list-style:none;display:flex;overflow:auto}.projects-list li{border:1px solid var(--border);border-radius:10px;grid-template-columns:96px 1fr auto;align-items:center;gap:10px;padding:6px;display:grid}.projects-list li.current{border-color:var(--accent)}.projects-thumb{cursor:pointer;width:96px;height:72px;color:var(--muted);background:#eef1f5;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:22px;display:flex;overflow:hidden}.projects-thumb img{object-fit:cover;width:100%;height:100%;display:block}.projects-info{flex-direction:column;gap:2px;min-width:0;display:flex}.projects-info strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.projects-info span{color:var(--muted);font-size:12px}.projects-info input{border:1px solid var(--accent);font:inherit;border-radius:6px;padding:4px 6px}.projects-actions{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.btn.danger{color:#fff;background:#c62828;border-color:#c62828}@media (max-width:560px){.projects-list li{grid-template-columns:72px 1fr}.projects-thumb{width:72px;height:54px}.projects-actions{grid-column:1/-1;justify-content:flex-start}}.measure-label{color:#fff;white-space:nowrap;text-align:center;background:#1e88e5;border-radius:6px;padding:3px 7px;font-size:12px;line-height:1.25;box-shadow:0 2px 6px #00000040}.measure-label strong{font-size:13px;display:block}.measure-label span{opacity:.9;font-size:11px}.loads{margin-top:16px}.loads-site{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 12px;margin:6px 0 4px;display:grid}.loads-field{color:var(--muted);flex-direction:column;gap:3px;min-width:0;font-size:12px;display:flex}.loads-field.wide{grid-column:span 2}.loads-field select,.loads-field input{border:1px solid var(--border);font:inherit;color:var(--text);border-radius:6px;width:100%;min-width:0;padding:5px 7px}.loads-verdict{margin:12px 0 6px;font-size:14px}.loads-verdict.ok{color:#2e7d32}.loads-verdict.bad{color:#c62828}.loads-checks{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.loads-checks li{border:1px solid var(--border);border-radius:8px;padding:8px 10px}.loads-check-head{justify-content:space-between;gap:8px;font-size:13px;display:flex}.loads-bar{background:#e9edf2;border-radius:3px;height:6px;margin:6px 0 4px;overflow:hidden}.loads-bar i{background:#2e7d32;height:100%;display:block}.loads-checks li.warn .loads-bar i{background:#f9a825}.loads-checks li.bad .loads-bar i{background:#c62828}.loads-checks li.bad strong{color:#c62828}.loads-advice{color:#b45309;margin:4px 0 0;font-size:12.5px}@media (max-width:560px){.loads-field.wide{grid-column:auto}}.site-plot{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;margin:8px 0;padding:8px 10px;display:flex}.site-plot-on{cursor:pointer;align-items:center;gap:8px;display:flex}.site-plot-on .site-add-title{margin:0}.site-plot-rect{flex-wrap:wrap;align-items:flex-end;gap:6px;display:flex}.site-plot-rect label{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.site-plot-rect input{border:1px solid var(--border);width:70px;font:inherit;border-radius:6px;padding:4px 6px}.site-plot-field{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.site-plot-field select{border:1px solid var(--border);font:inherit;color:var(--text);border-radius:6px;padding:5px 7px}.plot-label{color:#fff;white-space:nowrap;background:#c62828;border-radius:4px;padding:1px 6px;font-size:11px}.measure-overlay{cursor:crosshair;display:block}.drawing-tools{border-left:1px solid var(--border);gap:4px;margin-left:8px;padding-left:8px;display:inline-flex}.notes2d{position:absolute;inset:0}.notes2d-bar{background:var(--panel);border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:4px 8px;font-size:12px;position:absolute;top:8px;left:8px}.notes2d-bar form{gap:6px;display:flex}.notes2d-bar input{min-width:180px;padding:2px 6px;font-size:13px}.cutting{margin-top:14px}.cutting-toggle{font:inherit;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;font-weight:700}.cutting-stock{align-items:center;gap:6px;margin:8px 0 2px;font-size:12.5px;display:inline-flex}.cutting-stock select{border:1px solid var(--border);font:inherit;border-radius:6px;padding:3px 6px}.cutting-section{margin:10px 0}.cutting-head{justify-content:space-between;gap:8px;margin-bottom:4px;font-size:13px;display:flex}.cutting-head span{color:var(--muted);font-size:12px}.cutting-bar{grid-template-columns:36px 1fr 40px;align-items:center;gap:6px;margin:2px 0;font-size:11px;display:grid}.cutting-count{color:var(--muted);text-align:right}.cutting-track{background:repeating-linear-gradient(45deg,#eceff1,#eceff1 4px,#dfe3e7 4px 8px);border-radius:3px;gap:1px;height:16px;display:flex;overflow:hidden}.cutting-track i{color:#3e2723;white-space:nowrap;justify-content:center;align-items:center;font-size:10px;font-style:normal;display:flex;overflow:hidden}.cutting-waste{color:var(--muted);font-size:10.5px}.bg-picker{position:relative}.bg-dot{vertical-align:-2px;border:1px solid #00000040;border-radius:50%;width:14px;height:14px;display:inline-block}.bg-pop{z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;min-width:200px;padding:10px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 30px #0a14282e}.bg-swatches{grid-template-columns:repeat(4,36px);gap:8px;display:grid}.bg-swatch{cursor:pointer;border:1px solid #0003;border-radius:8px;width:36px;height:36px;padding:0}.bg-swatch.active{outline:2px solid var(--accent);outline-offset:2px}.bg-custom{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.bg-custom input{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;width:36px;height:28px;padding:0}.cut-toggle{font-weight:600}.cut-slider{align-items:center;gap:6px;font-size:12.5px;display:flex}.cut-slider input{width:140px;accent-color:var(--accent)}.cut-slider span{font-variant-numeric:tabular-nums;min-width:52px}.rail-rooms{grid-template-columns:1fr 1fr;gap:2px 8px;min-width:300px;display:grid}.rail-rooms p{color:var(--muted);grid-column:1/-1;margin:0 0 4px;font-size:12px}.rail-rooms button.active{color:var(--accent);font-weight:600}.wall-remove{color:#c62828;cursor:pointer;opacity:.55;background:#fff;border:1px solid #c62828;border-radius:50%;width:20px;height:20px;padding:0;font-size:11px;line-height:1}.wall-remove:hover{opacity:1;color:#fff;background:#c62828}.look-select select{border:1px solid var(--border);font:inherit;background:var(--panel);color:var(--text);border-radius:6px;padding:4px 6px;font-size:12.5px}.bg-ground{align-items:center;gap:6px;font-size:12.5px;display:flex}.bg-ground span{color:var(--muted);margin-right:2px}.rail-furn{min-width:340px;display:block}.rail-furn-group{grid-template-columns:1fr 1fr;gap:0 8px;margin-top:4px;display:grid}.rail-furn-group strong{color:var(--muted);text-transform:uppercase;grid-column:1/-1;margin:4px 4px 0;font-size:11px}.rail-furn-group button{padding:4px 8px}.viewport.cards-hidden .inspector{display:none}.inspector{overflow-x:hidden}.inspector select{max-width:100%}.card-handle{z-index:6;border:1px solid var(--border);background:var(--panel);width:22px;height:56px;color:var(--muted);cursor:pointer;border-right:none;border-radius:10px 0 0 10px;justify-content:center;align-items:center;gap:6px;padding:0;transition:color .15s,background .15s,width .15s;display:flex;position:absolute;box-shadow:-4px 4px 14px #141e321f}.card-handle:hover{color:var(--accent);background:var(--accent-soft);width:26px}.card-handle.out{width:auto;height:40px;color:var(--text);padding:0 12px 0 10px;font-size:12.5px;font-weight:600}.card-handle.out:hover{width:auto}.center{position:relative}.workspace.no-left>.left,.workspace.no-right>.right{display:none}.workspace.no-left{grid-template-columns:1fr 390px}.workspace.no-right{grid-template-columns:300px 1fr}.workspace.no-left.no-right{grid-template-columns:1fr}.side-handle{z-index:7;border:1px solid var(--border);background:var(--panel);width:16px;height:56px;color:var(--muted);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s,width .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 12px #141e321a}.side-handle.left{border-left:none;border-radius:0 10px 10px 0;left:0}.side-handle.right{border-right:none;border-radius:10px 0 0 10px;right:0}.side-handle:hover{color:var(--accent);background:var(--accent-soft);width:20px}.side-handle.out{color:var(--text)}@media (max-width:1100px){.workspace.no-left{grid-template-columns:1fr}.workspace.no-right{grid-template-columns:280px 1fr}.side-handle.right{display:none}}@media (max-width:720px){.workspace.no-left,.workspace.no-right{grid-template-columns:1fr}.side-handle{display:none}}.sun-pop{min-width:280px}.sun-pop input[type=range]{width:100%}.sun-row{justify-content:space-between;align-items:center;gap:8px;font-size:12.5px;display:flex}.sun-row input[type=number]{width:80px}.sun-quick{flex-wrap:wrap;gap:4px;display:flex}.btn.sun-on{color:#b86b00}.views-pop{min-width:260px}.views-list{flex-direction:column;gap:4px;max-height:260px;display:flex;overflow:auto}.views-row{align-items:center;gap:4px;display:flex}.views-row .btn{text-align:left;flex:1}.views-row input{flex:1;min-width:0}.lock-badge{border:1px solid var(--border);background:#ffffffeb;border-radius:999px;padding:4px 6px;font-size:15px;line-height:1;display:inline-block;box-shadow:0 2px 8px #141e3233}.site-row{position:relative}.site-row-lock{cursor:pointer;opacity:.28;margin-left:auto;padding:0 4px;font-size:13px}.site-row:hover .site-row-lock,.site-row-lock.on,.site-row-lock:focus-visible{opacity:1}.site-lock{width:100%;margin-bottom:8px}.site-lock.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.site-lock-all{gap:6px;margin-bottom:6px;display:flex}.site-frozen{border:0;min-width:0;margin:0;padding:0}.site-frozen:disabled{opacity:.55}.scope-note{background:var(--accent-soft);color:var(--accent);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:260px;padding:3px 9px;font-size:12px;overflow:hidden}.model-dim{color:#fff;white-space:nowrap;background:#1f2937;border-radius:5px;padding:4px 7px;font:600 12px/1 system-ui,sans-serif;box-shadow:0 1px 4px #0000004d}.rail-swatches{grid-template-columns:repeat(4,26px);gap:6px;padding:4px 2px 8px;display:grid}.rail-swatches button{cursor:pointer;border:2px solid #ffffffb3;border-radius:6px;width:26px;height:26px;padding:0;box-shadow:0 0 0 1px #00000040}.rail-swatches button.active{box-shadow:0 0 0 2px #e4572e}.rail-num{align-items:center;gap:6px;padding:3px 2px;font-size:12px;display:flex}.rail-num span:first-child{flex:1}.rail-num input{width:62px}.rail-tools{grid-template-columns:1fr 1fr;gap:4px;padding:2px 0 8px;display:grid}.rail-tools button{text-align:left;align-items:center;gap:6px;font-size:12px;display:flex}.rail-wide{text-align:left;width:100%;margin:2px 0 8px}.tool-rail{max-height:none;box-shadow:none;border-radius:10px;flex-flow:wrap;align-items:stretch;gap:6px;margin:0 0 6px;padding:4px;display:flex;position:static;overflow:visible}.tb-group{border:1px solid var(--border);background:var(--panel);border-radius:8px;flex-direction:column;align-items:stretch;padding:2px 3px 1px;display:flex}.tb-group.accent{border-color:var(--accent);background:var(--accent-soft)}.tb-row{gap:1px;display:flex}.tb-label{color:var(--muted);text-align:center;white-space:nowrap;padding:1px 0 0;font-size:10px;line-height:1.2}.tb-group.accent .tb-label{color:#b3401f;font-weight:600}.rail-btn.labelled{flex-direction:column;align-items:center;gap:1px;width:auto;min-width:46px;height:auto;padding:3px 4px 2px;display:flex}.rail-btn.labelled svg{width:18px;height:18px}.rail-label{white-space:nowrap;font-size:10.5px;line-height:1.15}.rail-btn.danger{color:#c62828}.tb-end{align-items:center;gap:1px;margin-left:auto;display:flex}.tb-key{color:var(--muted);margin-left:auto;font-size:11px}.rail-pop button{align-items:center;gap:6px;display:flex}.tool-status{border:1px solid var(--border);background:var(--panel);border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:6px 0 0;padding:5px 10px;font-size:12.5px;display:flex}.tool-status-text{color:var(--muted)}.tool-status-fields{flex-wrap:wrap;align-items:center;gap:4px 12px;margin-left:auto;display:flex}.tool-status .rail-num{padding:0}.tool-status .rail-num span:first-child{flex:none}.tool-status .rail-swatches{grid-template-columns:repeat(16,20px);gap:4px;padding:0}.tool-status .rail-swatches button{width:20px;height:20px}.tool-status .rail-furn-group{flex-wrap:wrap;gap:2px;display:flex}.tool-status .rail-furn-group button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:1px 6px;font-size:11.5px}.tool-status .rail-furn-group button.active{background:var(--accent-soft);border-color:var(--accent)}@media (max-width:1100px){.rail-btn.labelled{min-width:38px}.rail-label{font-size:9.5px}}.tool-rail{z-index:6;position:relative}.tb-float{z-index:6;pointer-events:none;flex-wrap:wrap;gap:6px;display:flex;position:absolute;top:calc(100% + 10px);left:10px;right:10px}.tb-float>*{pointer-events:auto}.tb-float:empty{display:none}.tb-float .tb-group{background:#fff4ef;box-shadow:0 6px 18px #141e3224}.rail-btn.suggest{color:#fff;background:#e4572e}.rail-btn.suggest:hover:not(:disabled){background:#cf4a23}.tool-status-size{border:1px solid var(--accent);background:var(--accent-soft);white-space:nowrap;border-radius:6px;margin-left:auto;padding:1px 8px}.tool-status-size+.tool-status-fields{margin-left:0}.tour{z-index:40;pointer-events:none;position:fixed;inset:0}.tour-hole{border:2px solid #e4572e;border-radius:10px;transition:all .2s;position:fixed;box-shadow:0 0 0 9999px #141c2859}.tour-card{pointer-events:auto;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.45;position:fixed;box-shadow:0 12px 32px #141e3240}.tour-card p{color:var(--text);margin:6px 0 10px}.tour-step{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:2px;font-size:11.5px;display:flex}.tour-step .icon-btn{padding:2px 6px}.tour-actions{justify-content:flex-end;gap:6px;display:flex}.tour-actions .btn{padding:4px 10px;font-size:12.5px}.rail-help{width:300px}.help-keys{border-collapse:collapse;width:100%;margin:2px 0 6px;font-size:12px}.help-keys td{vertical-align:top;padding:2px 4px}.help-keys td:first-child{white-space:nowrap;width:1%}.help-keys kbd{border:1px solid var(--border);background:var(--bg);border-bottom-width:2px;border-radius:4px;padding:0 5px;font:11px/1.5 system-ui,sans-serif;display:inline-block}.tb-float.low{top:calc(100% + 56px)}.tool-status-fields.need{outline-offset:3px;border-radius:6px;outline:2px solid #e4572e;animation:1.2s ease-in-out 3 need-pulse}@keyframes need-pulse{50%{outline-color:#e4572e33}}.rail-color{width:170px}.rail-color .rail-swatches{grid-template-columns:repeat(4,26px)}.rail-more{width:300px}.start-card{z-index:5;background:var(--panel);border:1px solid var(--border);border-radius:12px;width:300px;padding:10px;font-size:13px;position:absolute;bottom:10px;left:10px;box-shadow:0 8px 24px #141e3224}.start-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.start-choices{gap:6px;display:grid}.start-choices button{text-align:left;border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.start-choices button:hover{border-color:var(--accent);background:var(--accent-soft)}.start-choices b{font-size:13.5px;display:block}.start-choices small{color:var(--muted);margin-top:2px;font-size:12px;line-height:1.35;display:block}.start-icon{font-size:22px;line-height:1}.start-tour{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:2px 0;font-size:12.5px}.estimate-chip{z-index:5;border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:999px;padding:5px 12px;font-size:13px;position:absolute;bottom:10px;right:10px;box-shadow:0 6px 18px #141e321f}.estimate-chip:hover{border-color:var(--accent)}.estimate-chip b{color:#b3401f}.viewport.cards-hidden .estimate-chip{right:40px}.brief-btn{background:var(--accent);color:#fff;border-color:var(--accent);white-space:nowrap;font-weight:600}.modal.brief{width:min(760px,100%)}.brief-head{justify-content:space-between;align-items:center;display:flex}.brief h3{margin:14px 0 4px;font-size:15px}.brief-facts{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 16px;margin:0;display:grid}.brief-facts div{border-bottom:1px solid var(--border);justify-content:space-between;gap:8px;padding:2px 0;font-size:13px;display:flex}.brief-facts dt{color:var(--muted)}.brief-facts dd{white-space:nowrap;margin:0;font-weight:600}.brief-issue{margin:3px 0;font-size:13px}.brief-issue.err{color:#b3261e}.brief-issue.warn{color:#8a4b00}.brief-stage h4{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;justify-content:space-between;margin:10px 0 2px;font-size:13px;display:flex}.brief-stage h4 span{color:var(--text);text-transform:none}.brief-stage table{border-collapse:collapse;width:100%;font-size:13px}.brief-stage td{border-bottom:1px solid var(--border);padding:3px 6px}.brief-stage td.n{text-align:right;white-space:nowrap}.brief-price{border:1px solid var(--border);width:84px;font:inherit;text-align:right;border-radius:6px;padding:2px 6px}.brief-total{margin:12px 0 0;font-size:15px}.brief-total small{color:var(--muted);font-size:12px}.brief-total .warn{color:#8a4b00}.brief-next{margin:4px 0 0;padding-left:20px;font-size:13px;line-height:1.55}.brief-actions{flex-wrap:wrap;gap:8px;margin:14px 0 6px;display:flex}.checks-btn{white-space:nowrap}.checks-btn.good{color:#2e7d32;border-color:#a5d6a7}.checks-btn.warn{color:#8a4b00;background:#fff8ed;border-color:#f3c58a}.checks-btn.bad{color:#b3261e;background:#fff1f0;border-color:#f0a9a4}.checks-count{color:#fff;background:currentColor;border-radius:999px;margin-left:6px;padding:0 7px;font-size:11.5px;line-height:1.6}.checks-btn.good .checks-count{display:none}.checks-btn.warn .checks-count{background:#b26a00}.checks-btn.bad .checks-count{background:#b3261e}.modal.checks{width:min(720px,100%)}.checks-ok{color:#2e7d32;margin:10px 0;font-size:15px}.check-list{margin:4px 0 0;padding:0;list-style:none}.check-row{border-radius:8px;align-items:flex-start;gap:8px;margin:3px 0;padding:6px 8px;font-size:13px;line-height:1.45;display:flex}.check-row.error{background:#fff1f0}.check-row.warn{background:#fff8ed}.check-text{flex:1}.check-norm{color:var(--muted);margin-top:2px;font-size:11.5px;font-style:normal;display:block}.check-row .btn.small{white-space:nowrap;margin-left:0}.rail-storeys{width:300px}.storey-panel table{border-collapse:collapse;width:100%;margin:2px 0 6px;font-size:13px}.storey-panel td{border-bottom:1px solid var(--border);padding:3px 4px}.storey-panel td.n{text-align:right;white-space:nowrap;color:var(--muted)}.storey-panel td.n input{border:1px solid var(--border);width:64px;font:inherit;text-align:right;color:var(--text);border-radius:6px;padding:2px 6px}.storey-actions{flex-direction:column;gap:2px;margin:4px 0;display:flex}.storey-panel .hint{font-size:11.5px}.rail-pop{z-index:9}.wall-type select{max-width:320px;font:inherit;border:1px solid var(--border);border-radius:6px;padding:2px 6px}.wall-type-r{color:var(--muted);font-size:11.5px;font-style:normal}.brief-code{color:#b3401f}.underlay-box{flex-wrap:wrap;align-items:center;gap:8px 12px;padding:6px 8px;font-size:12.5px;display:flex}.underlay-box label{align-items:center;gap:4px;display:inline-flex}.underlay-box input[type=number],.underlay-box input[type=text]{width:70px}.underlay-err{color:#b3401f}.site-find{width:100%;font:inherit;border:1px solid var(--border);border-radius:6px;margin:4px 0;padding:4px 8px}.site-row-n{color:var(--muted);margin-right:4px;font-size:11px;font-style:normal}.site-list{max-height:260px;overflow-y:auto}.modal.history{max-width:640px}.modal.history h3{margin:14px 0 6px;font-size:14px}.hist-list,.hist-versions{border:1px solid var(--border);border-radius:8px;max-height:300px;margin:0;padding:0;list-style:none;overflow-y:auto}.hist-list li button{text-align:left;border:0;border-bottom:1px solid var(--border);width:100%;font:inherit;cursor:pointer;color:inherit;background:0 0;gap:10px;padding:6px 10px;display:flex}.hist-list li button:hover:not(:disabled){background:#fff4ef}.hist-list li.now button{cursor:default;background:#fde7df;font-weight:600}.hist-list li.later button{opacity:.45}.hist-time{color:var(--muted);font-variant-numeric:tabular-nums;min-width:44px}.hist-text{flex:1}.hist-now{color:#b3401f;font-size:12px;font-style:normal}.hist-save{gap:8px;margin-bottom:8px;display:flex}.hist-save input{font:inherit;border:1px solid var(--border);border-radius:6px;flex:1;padding:6px 8px}.hist-versions li{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:6px 10px;display:flex}.hist-auto{color:var(--muted);font-size:12px;font-style:normal}@media (max-width:720px){.topbar{gap:6px 8px;padding:6px 10px}.brand{gap:8px;min-width:0}.brand .logo{font-size:22px}.brand strong{font-size:15px}.brand small{display:none}.topbar .btn,.topbar button{padding:4px 8px;font-size:12.5px}.topbar .lang button{padding:3px 7px;font-size:11.5px}.structure-picker button{padding:4px 9px}html,body{overflow-x:hidden}.structure-picker{scrollbar-width:none}.structure-picker::-webkit-scrollbar{display:none}.center{gap:6px;padding:6px}.view-toolbar{scrollbar-width:none;flex-wrap:nowrap;gap:8px;padding-bottom:2px;overflow-x:auto}.view-toolbar::-webkit-scrollbar{display:none}.view-toolbar>*,.toggles{white-space:nowrap;flex-wrap:nowrap;flex:none}.toggles{gap:10px}.tool-rail{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;margin:0;overflow:auto hidden}.tool-rail>*{flex:none}.center .viewport{height:68dvh;min-height:280px}.tool-status{flex-wrap:wrap}.disclaimer{font-size:11px}.left,.right{padding:12px}}@media (pointer:coarse){.rail-btn{min-width:44px;min-height:44px}.rail-btn.labelled{min-width:48px;min-height:48px}.tabs button,.structure-picker button,.lang button,.segmented button,.btn,.icon-btn{min-height:40px}.toggles label{min-height:36px}.toggles input[type=checkbox],.sun-row input[type=checkbox]{width:20px;height:20px}.left input,.right input,.left select,.right select,.tool-status input,.tool-status select,.sun-pop input[type=number]{min-height:38px;font-size:16px}input[type=range]{min-height:32px}.list-item-title{padding:10px 8px}.side-handle{width:24px}.viewport,.viewport canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}}@media (hover:none){.rail-btn:hover:not(:disabled){background:0 0}.rail-btn.active:hover{background:var(--accent-soft)}}:root{--bg:#faf6f1;--radius:14px;--accent-soft:#fdebdf}.logo-critter{cursor:pointer;background:#fff3d6;border:none;border-radius:50%;flex:none;place-items:center;width:46px;height:46px;padding:0;transition:transform .2s;display:grid;box-shadow:0 2px 8px #e4572e2e}.logo-critter:hover{transform:rotate(-8deg)scale(1.08)}.logo-critter:active{transform:scale(.92)}.critter{display:block}.crit-eyes{transform-box:fill-box;transform-origin:50%;animation:5.2s infinite crit-blink}@keyframes crit-blink{0%,94%,to{transform:scaleY(1)}97%{transform:scaleY(.1)}}.notice{border-radius:14px;align-items:center;gap:8px;display:flex}.notice-critter{flex:none;animation:.6s crit-hop}@keyframes crit-hop{0%{transform:translateY(0)}40%{transform:translateY(-6px)rotate(-6deg)}to{transform:translateY(0)}}.placeholder{text-align:center}.placeholder-critter{margin:0 auto 8px;animation:3.2s ease-in-out infinite crit-bob}@keyframes crit-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.critter-row{vertical-align:middle;opacity:.85;gap:3px;margin-right:8px;display:inline-flex}.btn{border-radius:999px;transition:transform .15s,box-shadow .15s,background .15s}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 3px 8px #1c23301a}.btn:active:not(:disabled){transform:translateY(0)scale(.97)}.brief-btn{box-shadow:0 3px 10px #e4572e4d}.structure-picker button,.lang button,.tabs button,.segmented button{border-radius:999px}.tool-rail,.tb-group{border-radius:14px}.viewport{border-radius:18px}@media (prefers-reduced-motion:reduce){.crit-eyes,.notice-critter,.placeholder-critter{animation:none}.btn,.logo-critter{transition:none}}.logo-critter{background:linear-gradient(#fff3d6,#fff3d6) padding-box padding-box,repeating-linear-gradient(45deg,#ffc107 0 5px,#2b2b2b 5px 10px) border-box;border:3px solid #0000;width:52px;height:52px;box-shadow:0 3px 10px #2b2b2b40}.viewport-loading{height:100%;color:var(--muted);text-align:center;place-content:center;justify-items:center;gap:10px;padding:24px;display:grid}.loading-critter{animation:.9s ease-in-out infinite crit-jump}@keyframes crit-jump{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-10px)rotate(3deg)}}@media (prefers-reduced-motion:reduce){.loading-critter{animation:none}}.about{width:min(560px,100%)}.about h3{margin:14px 0 6px;font-size:15px}.about p{margin:0 0 8px;line-height:1.5}.about-critters{justify-content:center;gap:8px;margin-bottom:6px;display:flex}.about-links{flex-wrap:wrap;gap:8px;margin:6px 0 10px;display:flex}.about-links .btn{align-items:center;text-decoration:none;display:inline-flex}.about-btn{color:#c62860}.about-donate{flex-direction:column;gap:8px;margin:6px 0 10px;display:flex}.about-donate .btn.primary{align-self:flex-start;text-decoration:none}.about-copy{border:1px solid var(--border);border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:4px 10px;padding:8px 10px;display:grid}.about-copy>div{grid-column:1/-1}.about-copy code{word-break:break-all;background:var(--bg);border-radius:8px;padding:6px 8px;font-size:12.5px}.donate-meme{background:linear-gradient(#fff8ec,#ffeed6);border-radius:18px;justify-content:center;align-items:center;gap:12px;margin:4px 0 10px;padding:10px 12px 4px;display:flex;overflow:hidden}.meme-sway{transform-box:fill-box;transform-origin:50% 100%;animation:3.2s ease-in-out infinite meme-breathe}@keyframes meme-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.015,.985)}}.meme-eyes{transform-box:fill-box;transform-origin:50%;animation:4.6s infinite crit-blink}.meme-ear-l{transform-box:fill-box;transform-origin:80% 100%;animation:5s ease-in-out infinite meme-ear}@keyframes meme-ear{0%,86%,to{transform:rotate(0)}90%{transform:rotate(-9deg)}94%{transform:rotate(3deg)}}.meme-tail{transform-box:fill-box;transform-origin:0 100%;animation:2.2s ease-in-out infinite meme-tail}@keyframes meme-tail{0%,to{transform:rotate(-5deg)}50%{transform:rotate(9deg)}}.meme-steam path{opacity:0;animation:2.2s ease-in-out infinite meme-steam}@keyframes meme-steam{0%{opacity:0;transform:translateY(6px)}40%{opacity:.9}to{opacity:0;transform:translateY(-8px)}}.meme-heart{fill:#ff6f91;opacity:0;animation:2.7s ease-out infinite meme-heart}@keyframes meme-heart{0%{opacity:0;transform:translateY(14px)scale(.6)}25%{opacity:1}to{opacity:0;transform:translateY(-22px)scale(1.15)}}.meme-bubble{background:#fff;border-radius:18px;max-width:170px;padding:10px 14px;font-size:13.5px;font-weight:600;line-height:1.3;box-shadow:0 4px 14px #b46e282e}@media (prefers-reduced-motion:reduce){.meme-sway,.meme-eyes,.meme-ear-l,.meme-tail,.meme-steam path,.meme-heart{animation:none}.meme-heart{opacity:1}}.about-links .btn{gap:7px}.social-icon{flex:none}.about-donate{gap:10px}.donate-card{border:1px solid var(--border);background:#fffdf8;border-radius:16px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.donate-head{align-items:center;gap:10px;display:flex}.donate-head strong{font-size:15px;display:block}.donate-head small{color:var(--muted);font-size:12.5px;display:block}.donate-badge{background:#fff1d6;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:26px;line-height:1;display:grid}.donate-steps{color:var(--text);margin:0;padding-left:20px;font-size:13px;line-height:1.5}.donate-warn{color:#8a4b00;background:#fff4de;border-radius:10px;margin:0;padding:6px 10px;font-size:12.5px}.donate-card .btn.primary{align-self:flex-start;text-decoration:none}.donate-card .about-copy{border:none;padding:0}.donate-how{color:var(--muted);margin:0;font-size:13px}.donate-card{gap:6px;padding:10px 12px}.about-copy .address-qr{border:1px solid var(--border);background:#fff;border-radius:12px;grid-column:1/-1;justify-self:center;padding:4px}.address-qr-wrap{grid-column:1/-1;justify-self:center;display:inline-block;position:relative}.address-qr-wrap .address-qr{display:block}.address-qr-coin{color:#fff;text-align:center;background:#26a17b;border-radius:50%;width:26px;height:26px;margin:-13px 0 0 -13px;font-size:16px;font-weight:800;line-height:26px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 3px #fff}.file-menu{align-items:center;gap:8px;display:inline-flex;position:relative}.save-status{color:#2e7d32;white-space:nowrap;font-size:12px}.save-nudge{color:#8a4b00;background:#fff4de;border-color:#f0c75e;animation:2.4s ease-in-out infinite nudge-glow}@keyframes nudge-glow{0%,to{box-shadow:0 0 #f0c75e00}50%{box-shadow:0 0 0 4px #f0c75e59}}@media (max-width:720px){.save-status{display:none}}@media (prefers-reduced-motion:reduce){.save-nudge{animation:none}}
