*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1923;--surface:#162032;--surface-hover:#1d2b42;--border:#2a3f5f;--text:#e8eaf0;--text-muted:#7b8da8;--accent:#4fc3f7;--accent-hover:#29b6f6;--accent-glow:#4fc3f726;--danger:#ef5350;--success:#66bb6a;--warning:#ffa726;--radius:6px;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,sans-serif}body,#root{min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.app{flex-direction:column;min-height:100vh;display:flex}.app-body{flex:1;min-height:0;display:flex}.chrome{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:20;background:linear-gradient(#162032f2,#0f1923fa);flex-shrink:0;align-items:center;gap:16px;height:52px;padding:0 20px;display:flex}.brand{letter-spacing:-.01em;white-space:nowrap;font-size:1.1rem;font-weight:700}.view-tabs button{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:.82rem;font-weight:500;transition:color .15s,background .15s}.view-tabs button:hover{color:var(--text);background:#ffffff0d}.view-tabs button.active{color:#0d1b2a;background:var(--accent);font-weight:600}.room-tabs button{font:inherit;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;background:0 0;padding:5px 12px;font-size:.8rem;transition:all .15s;position:relative}.room-tabs button:hover{color:var(--text);border-color:var(--accent)}.room-tabs button.active{color:var(--text);background:var(--accent-glow);border-color:var(--accent)}.tab-close{opacity:.5;cursor:pointer;margin-left:6px;font-size:.9em}.tab-close:hover{opacity:1;color:var(--danger)}.header-controls{align-items:center;gap:8px;margin-left:auto;display:flex}.header-controls select,.header-controls button{font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:5px 10px;font-size:.8rem;transition:border-color .15s,background .15s}.header-controls select:hover,.header-controls button:hover{border-color:var(--accent);background:var(--surface-hover)}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:12px;width:260px;padding:12px;display:flex;overflow-y:auto}.sidebar-room{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;padding-bottom:12px;display:flex}.sidebar-room label{color:var(--text-muted);align-items:center;gap:4px;font-size:.78rem;display:inline-flex}.sidebar-room input[type=number]{width:5.5rem}.sidebar-room-dims{flex-basis:100%;gap:8px;display:flex}.sidebar-room-dims label{flex:1}.wall-picker{flex-basis:100%;gap:3px;display:flex}.wall-picker button{font:inherit;border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;flex:1;padding:4px 10px;font-size:.75rem;transition:all .15s}.wall-picker button:hover{color:var(--text);border-color:var(--accent)}.wall-picker button.active{background:var(--accent);color:#0d1b2a;border-color:var(--accent);font-weight:600}.wall-picker-diagram{flex-basis:100%;grid-template-columns:1fr 1fr 1fr;grid-template-areas:".back.""left room right"".front.";gap:3px;display:grid}.wall-picker-diagram button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);text-align:center;border-radius:4px;padding:4px 2px;font-size:.7rem;transition:all .15s}.wall-picker-diagram button:hover{border-color:var(--accent);color:var(--text)}.wall-picker-diagram button.active{background:var(--accent);color:#0d1b2a;border-color:var(--accent);font-weight:600}.wall-picker-diagram button[data-wall=back]{grid-area:back}.wall-picker-diagram button[data-wall=right]{grid-area:right}.wall-picker-diagram button[data-wall=front]{grid-area:front}.wall-picker-diagram button[data-wall=left]{grid-area:left}.wall-pick-room{border:2px dashed var(--border);border-radius:3px;grid-area:room;min-height:26px}.inspector{flex-direction:column;gap:8px;font-size:.82rem;display:flex}.inspector h3{font-size:.92rem;font-weight:600}.inspector-kind-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:3px;align-self:flex-start;padding:2px 8px;font-size:.68rem;font-weight:600;display:inline-block}.inspector-dims-summary{color:var(--text-muted);margin:0;font-family:ui-monospace,monospace;font-size:.76rem}.dim-field{align-items:center;gap:6px;font-size:.78rem;display:flex}.dim-label{width:48px;color:var(--text-muted);flex-shrink:0;font-size:.76rem}.segmented{flex-wrap:wrap;align-items:center;gap:4px;font-size:.78rem;display:flex}.segmented>span{color:var(--text-muted);margin-right:2px}.segmented button{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;text-transform:capitalize;border-radius:4px;padding:4px 10px;font-size:.76rem;transition:all .15s}.segmented button:hover:not(.active){border-color:var(--accent);color:var(--accent)}.segmented button.active{background:var(--accent);color:#0d1b2a;border-color:var(--accent)}.inspector label.checkbox{flex-direction:row;align-items:center;gap:6px;font-size:.78rem;display:flex}.inspector-actions{gap:8px;margin-top:4px;display:flex}.inspector-actions button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);flex:1;padding:6px 12px;font-size:.78rem;transition:all .15s}.inspector-actions button:hover{border-color:var(--accent);color:var(--accent)}.inspector-actions button.danger{border-color:var(--danger);color:var(--danger);background:#ef535014}.inspector-actions button.danger:hover{background:#ef53502e}.inspector-header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inspector-header h3{flex:1;margin:0}.inspector-group{border-top:1px solid var(--border);padding:6px 0}.inspector-group-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:4px;font-size:.68rem;font-weight:650;display:block}.inspector-pair{grid-template-columns:1fr 1fr;gap:4px;display:grid}.multi-inspector{flex:1}.multi-list{max-height:200px;margin:4px 0 8px;padding:0;list-style:none;overflow-y:auto}.multi-list li{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:3px 0;font-size:.78rem;display:flex}.palette{flex-direction:column;gap:8px;display:flex}.palette input[type=search]{width:100%;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:var(--radius);padding:8px 10px;font-size:.82rem;transition:border-color .15s}.palette input[type=search]:focus{border-color:var(--accent)}.hint{color:var(--text-muted);margin:0;font-size:.75rem}.palette>details{margin-bottom:2px}.palette>details>summary{cursor:pointer;padding:4px 0;font-size:.84rem;font-weight:600}.palette ul{margin:4px 0 0;padding:0;list-style:none}.palette li button{text-align:left;background:var(--bg);border:1px solid var(--border);width:100%;font:inherit;color:var(--text);cursor:pointer;border-radius:4px;justify-content:space-between;gap:8px;margin-bottom:3px;padding:6px 10px;font-size:.78rem;transition:border-color .15s,background .15s;display:flex}.palette li button:hover{border-color:var(--accent);background:var(--surface-hover)}.palette li span{color:var(--text-muted);font-family:ui-monospace,monospace;font-size:.72rem}.palette-crumb{color:var(--text-muted);margin:-2px 0 4px 2px;font-size:.68rem;display:block}.palette-group{margin:4px 0 4px 2px}.palette-group>summary{color:var(--text-muted);cursor:pointer;font-size:.76rem;font-weight:500}.palette-count{color:var(--text-muted);font-size:.68rem}.piece-card{text-align:left;background:var(--bg);border:1px solid var(--border);width:100%;font:inherit;color:var(--text);cursor:pointer;border-radius:4px;align-items:center;gap:8px;margin-bottom:3px;padding:6px 8px;font-size:.78rem;transition:border-color .12s,background .12s;display:flex}.piece-card:hover{border-color:var(--accent);background:var(--surface-hover)}.kind-dot{border:1px solid #00000026;border-radius:50%;flex-shrink:0;width:8px;height:8px}.piece-card-info{flex:1;justify-content:space-between;align-items:baseline;gap:6px;min-width:0;display:flex}.piece-card-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.piece-card-dims{color:var(--text-muted);flex-shrink:0;font-family:ui-monospace,monospace;font-size:.72rem}.catalog-toggles{flex-wrap:wrap;gap:4px 8px;margin-bottom:4px;display:flex}.catalog-toggle{cursor:pointer;align-items:center;gap:4px;font-size:.72rem;display:inline-flex}.palette-cards{flex-direction:column;margin:4px 0;display:flex}.palette-results{margin:6px 0 0;padding:0;list-style:none}.palette-results li{margin-bottom:2px}.palette-recent{border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:8px}.palette-section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:4px;font-size:.68rem;font-weight:650;display:block}.palette mark,.palette-crumb mark{color:var(--text);background:#4fc3f740;border-radius:2px;padding:0 1px}.quick-add{border:1px solid var(--border);background:var(--bg);border-radius:var(--radius);padding:8px 10px}.quick-add>summary{cursor:pointer;font-size:.78rem;font-weight:600;list-style:none}.quick-add>summary::-webkit-details-marker{display:none}.quick-add>summary:after{content:" ▾";color:var(--text-muted)}.quick-add-row{align-items:center;gap:6px;margin-top:8px;font-size:.76rem;display:flex}.quick-add-row select,.quick-add-row input[type=number]{font:inherit;width:4.5rem;padding:4px 6px;font-size:.76rem}.quick-add-row button{font:inherit;cursor:pointer;background:var(--accent);border:1px solid var(--accent);color:#0d1b2a;border-radius:4px;padding:5px 10px;font-size:.76rem;font-weight:600;transition:background .15s}.quick-add-row button:hover{background:var(--accent-hover)}.quick-add select{width:100%;margin-top:6px}.quick-add-presets{flex-wrap:wrap;gap:3px;margin-top:6px;display:flex}.quick-add-presets button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);border-radius:3px;padding:3px 6px;font-size:.68rem;transition:all .15s}.quick-add-presets button:hover{border-color:var(--accent);color:var(--text)}.quick-add-presets button.active{background:var(--accent);color:#0d1b2a;border-color:var(--accent)}.board-container{background:radial-gradient(ellipse at center, #1a2438 0%, var(--bg) 100%);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.board-svg{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;min-height:0;display:block}.board-svg:active{cursor:default}.grid-bg{fill:#f6f1e4}.grid-minor{stroke:#ddd6c5;stroke-width:.15px}.grid-major{stroke:#c4bba8;stroke-width:.3px}.room-fill{stroke:none}.room-outline{fill:none;stroke:#1c1a16;stroke-width:.5px;vector-effect:non-scaling-stroke}.wall-highlight{stroke:var(--accent);stroke-width:3px;stroke-linecap:round;vector-effect:non-scaling-stroke}.board-dim-label{fill:#7a7060;paint-order:stroke;stroke:#f6f1e4;stroke-width:3px;stroke-linejoin:round;font-family:ui-monospace,monospace;font-weight:650}.elev-wall-surface{fill:#f0ebe0}.floor-line{stroke:#1c1a16;stroke-width:.4px}.ceiling-line{stroke:#7a7060;stroke-width:.25px;stroke-dasharray:1.5 1}.elev-ref-line{stroke:#c4b08a;stroke-width:.12px;stroke-dasharray:.8 .5}.elev-bench-ref{fill:#b8956a}.board-ref-label{fill:#7a7060;paint-order:stroke;stroke:#f0ebe0cc;stroke-width:2px;stroke-linejoin:round;font-family:ui-monospace,monospace;font-weight:600}.mount-label{fill:var(--accent);paint-order:stroke;stroke:#1a2438b3;stroke-width:2px;stroke-linejoin:round;font-family:ui-monospace,monospace;font-weight:650}.piece-body{fill:var(--kind-color,#fff);stroke:#1c1a16;stroke-width:.3px;vector-effect:non-scaling-stroke;transition:filter 80ms}.board-piece{cursor:grab}.board-piece:active{cursor:grabbing}.board-piece:hover .piece-body{filter:drop-shadow(0 1px 3px #0003)}.board-piece.selected .piece-body{stroke:var(--accent);stroke-width:2px;filter:drop-shadow(0 0 4px #4fc3f759)}.board-piece.dragging .piece-body{stroke-width:2.5px;filter:drop-shadow(0 2px 6px #00000059)}@keyframes board-piece-in{0%{opacity:0}to{opacity:1}}.board-piece{animation:.18s ease-out board-piece-in}.board-svg .piece-label{fill:#1c1a16;pointer-events:none;font-family:system-ui,-apple-system,sans-serif;font-weight:650}.board-svg .piece-dim{fill:#5c574e;pointer-events:none;font-family:ui-monospace,monospace}.board-svg .piece-mark{fill:#8a8275;letter-spacing:.03em;pointer-events:none;font-family:ui-monospace,monospace;font-weight:600}.board-svg .door-swing{fill:#8a82750f;stroke:#8a8275;stroke-width:.18px;stroke-dasharray:.7 .35;pointer-events:none}.board-svg .snap-guide{stroke:var(--accent);stroke-width:.3px;stroke-dasharray:1.2 .6;pointer-events:none;opacity:.7}.board-wall-nav{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:4px;padding:8px 12px;display:flex}.board-wall-nav button{font:inherit;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;background:0 0;padding:5px 12px;font-size:.8rem;transition:all .15s}.board-wall-nav button:hover{color:var(--text);border-color:var(--accent)}.board-wall-nav button.active{background:var(--accent);color:#0d1b2a;border-color:var(--accent);font-weight:600}.wall-nav-meta{color:var(--text-muted);margin-left:auto;font-family:ui-monospace,monospace;font-size:.76rem}.board-zoom-badge{z-index:5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--text-muted);pointer-events:none;background:#16213ee0;border-radius:4px;padding:3px 8px;font-family:ui-monospace,monospace;font-size:.72rem;position:absolute;bottom:10px;right:10px}.board-empty{fill:#8a8275;font-weight:500}.board-hidden-hint{color:var(--text-muted);text-align:center;background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:6px 12px;font-size:.76rem}.kind-base{--kind-color:#4a90d9;background:#4a90d9}.kind-tall{--kind-color:#e17055;background:#e17055}.kind-upper{--kind-color:#b8a9c8;background:#b8a9c8}.kind-panel,.kind-filler{--kind-color:#d5cfc3;background:#d5cfc3}.kind-bench{--kind-color:#b8b5a0;background:#b8b5a0}.kind-appliance{--kind-color:#fd9644;background:#fd9644}.kind-vanity{--kind-color:#a29bfe;background:#a29bfe}.kind-hanging{--kind-color:#f0ebe0;background:#f0ebe0}.kind-shelf{--kind-color:#d5cfc3;background:#d5cfc3}.kind-drawer{--kind-color:#c7a87c;background:#c7a87c}.kind-fixture{--kind-color:#78e08f;background:#78e08f}.kind-clearance{--kind-color:transparent;background:repeating-linear-gradient(-45deg,#0000,#0000 1.4mm,#4fc3f72e 1.4mm 2.2mm)}.kind-door{--kind-color:#fff;background:#fff}.kind-doorway{--kind-color:#c8b898;background:#c8b898}.kind-person{--kind-color:#dce9f5;background:#dce9f5}.board-piece.kind-clearance .piece-body{fill:#4fc3f714;stroke-dasharray:1.2 .6}.room3d-wrap{flex:1;min-height:0;position:relative}.room3d-wrap canvas{touch-action:none;display:block}.loading{color:var(--text-muted);flex:1;justify-content:center;align-items:center;font-size:.9rem;display:flex}.print-preview{background:#1a2233;flex-direction:column;flex:1;align-items:center;gap:28px;min-height:100vh;padding:24px;display:flex}.print-controls{background:#0003;border-radius:8px;gap:2px;padding:3px;display:flex}.print-controls button{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:5px 14px;font-size:.8rem;transition:all .15s}.print-controls button:hover{color:var(--text)}.print-controls button.active{background:var(--accent);color:#0d1b2a;font-weight:600}.sheet{color:#1c1a16;background:#fff;border-radius:2px;box-shadow:0 2px 8px #00000026,0 12px 36px #00000040}.net-face{fill:#f4efe7;stroke:none}.net-outline{fill:none;stroke:#1c1a16;stroke-linejoin:round}.net-fold{stroke:#8a8275;fill:none}.net-tab{fill:#e4ecef;stroke:#1c1a16;stroke-linejoin:round}.net-tile-bounds{fill:none;stroke:#b91c1c}.net-face-label{fill:#1c1a16;font-family:system-ui,-apple-system,sans-serif;font-weight:650}.net-face-sublabel{fill:#5c574e;font-family:ui-monospace,monospace}@media print{body{background:#fff}.no-print{display:none}.print-preview{background:#fff;gap:0;padding:0}.sheet{box-shadow:none;border:0;border-radius:0;margin:0}}body.pdf-capturing .sheet{box-shadow:none;border:0;border-radius:0}.pdf-modal{z-index:500;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;background:#080c14d1;flex-direction:column;padding:24px;transition:opacity .18s;display:flex;position:fixed;inset:0}.pdf-modal.pdf-modal-visible{opacity:1}.pdf-modal-head{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;align-items:center;gap:12px;padding:12px 16px;display:flex}.pdf-modal-head strong{font-size:.92rem}.pdf-modal-head a,.pdf-modal-head button{font:inherit;border-radius:var(--radius);cursor:pointer;padding:6px 14px;font-size:.82rem;text-decoration:none;transition:background .15s}.pdf-modal-head a{background:var(--accent);color:#0d1b2a;border:none;margin-left:auto;font-weight:600}.pdf-modal-head a:hover{background:var(--accent-hover)}.pdf-modal-head button{color:var(--text);border:1px solid var(--border);background:0 0;width:38px;padding:6px}.pdf-modal-head button:hover{background:var(--surface-hover)}.pdf-modal iframe{border-radius:0 0 var(--radius) var(--radius);background:#222;border:none;flex:1}.save-dialog{z-index:400;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080c14b3;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:fixed;inset:0}.save-dialog-inner{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;width:400px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);padding:24px;display:flex;overflow-y:auto;box-shadow:0 16px 48px #00000080}.save-dialog-inner h2{margin:0;font-size:1rem;font-weight:700}.save-dialog-inner hr{border:none;border-top:1px solid var(--border);margin:4px 0}.save-dialog-inner label{flex-direction:column;gap:4px;font-size:.82rem;display:flex}.save-dialog-inner button{font:inherit;cursor:pointer;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:7px 14px;font-size:.82rem;transition:all .15s}.save-dialog-inner button:hover{border-color:var(--accent);background:var(--surface-hover)}.save-dialog-inner button.danger{border-color:var(--danger);color:var(--danger);background:#ef535014}.auth-chip{color:var(--success);border-radius:var(--radius);background:#66bb6a14;border:1px solid #66bb6a40;align-items:center;gap:8px;padding:8px 12px;font-size:.82rem;display:flex}.auth-chip button{padding:4px 10px;font-size:.76rem}.save-row{align-items:center;gap:6px;display:flex}.save-row button:first-child{text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);flex:1;padding:8px 12px}.save-row button:first-child:hover{border-color:var(--accent)}.save-status{color:var(--text-muted);margin:0;font-size:.78rem}input,select,textarea{background:var(--bg);color:var(--text);border:1px solid var(--border);font:inherit;border-radius:4px;padding:5px 8px;font-size:.82rem;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1024px){.chrome{flex-wrap:wrap;gap:10px;height:auto;min-height:48px;padding:6px 12px}.sidebar{width:200px;padding:8px}.room-tabs{margin-left:0}}.view-tabs{background:var(--bg);border-radius:var(--radius);gap:2px;padding:2px;display:flex}.view-tab{font:inherit;color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;align-items:center;gap:5px;padding:6px 12px;font-size:.8rem;font-weight:500;transition:all .12s;display:flex}.view-tab:hover{color:var(--text);background:#ffffff0f}.view-tab.active{color:#0d1b2a;background:var(--accent);font-weight:650}.view-tab-icon{font-size:.9rem;line-height:1}.room-tabs{align-items:center;gap:2px;margin-left:auto;display:flex}.room-tab{font:inherit;color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:5px;padding:5px 10px;font-size:.78rem;transition:all .12s;display:inline-flex;position:relative}.room-tab:hover{color:var(--text);border-color:var(--border);background:#ffffff0f}.room-tab.active{color:var(--text);background:var(--bg);border-color:var(--border);font-weight:600}.room-tab-dim{color:var(--text-muted);opacity:.7;font-family:ui-monospace,monospace;font-size:.66rem}.room-tab .tab-close{width:16px;height:16px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:12px;transition:all .1s;display:inline-flex}.room-tab .tab-close:hover{background:var(--danger);color:#fff}.room-tab.add{color:var(--text-muted);border:1px dashed var(--border);padding:5px 10px;font-size:.9rem}.room-tab.add:hover{border-color:var(--accent);color:var(--accent);border-style:solid}.room-rename-input{width:80px;font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--accent);border-radius:3px;padding:2px 4px;font-size:.78rem}.header-controls{flex-shrink:0;align-items:center;gap:6px;display:flex}.header-controls select{padding:4px 6px;font-size:.78rem}.save-indicator{color:var(--text-muted);white-space:nowrap;font-size:.72rem}.header-btn{font:inherit;border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;padding:6px 12px;font-size:.8rem;transition:all .12s}.header-btn:hover{border-color:var(--accent);background:#ffffff0a}.header-btn.primary{background:var(--accent);color:#0d1b2a;border-color:var(--accent);font-weight:650}.header-btn.primary:hover{background:var(--accent-hover)}.breadcrumb{border-bottom:1px solid var(--border);color:var(--text-muted);background:#16213eb3;flex-shrink:0;align-items:center;gap:8px;padding:4px 16px;font-size:.76rem;display:flex}.breadcrumb-room{color:var(--text);font-weight:600}.breadcrumb-sep{opacity:.5}.breadcrumb-mode{color:var(--accent);font-weight:500}.breadcrumb-sheets{background:var(--bg);border:1px solid var(--border);border-radius:10px;margin-left:auto;padding:1px 8px;font-family:ui-monospace,monospace;font-size:.7rem}.toast-stack{z-index:900;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:16px;right:16px}.toast{border-radius:var(--radius);pointer-events:auto;padding:10px 16px;font-size:.84rem;font-weight:500;animation:.2s toast-in,.3s 3.5s forwards toast-out;box-shadow:0 6px 20px #0006}.toast-info{background:var(--surface);color:var(--text);border:1px solid var(--border)}.toast-success{color:var(--success);background:#66bb6a26;border:1px solid #66bb6a4d}.toast-error{color:var(--danger);background:#ef53501f;border:1px solid #ef53504d}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}@keyframes toast-out{0%{opacity:1}to{opacity:0;transform:translateY(-8px)}}.loading-overlay{z-index:800;color:var(--text);background:#0a0a1499;justify-content:center;align-items:center;gap:12px;font-size:.92rem;display:flex;position:fixed;inset:0}.loading-spinner{border:2.5px solid #fff3;border-top-color:var(--accent);border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}.print-bar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;display:flex}.print-bar-modes{background:var(--bg);border-radius:var(--radius);gap:2px;padding:2px;display:flex}.print-bar-modes button{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:6px 14px;font-size:.8rem;transition:all .12s}.print-bar-modes button:hover{color:var(--text)}.print-bar-modes button.active{background:var(--accent);color:#0d1b2a;font-weight:650}.print-bar-style{background:var(--bg);border-radius:var(--radius);gap:2px;padding:2px;display:flex}.print-bar-style button{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:5px 10px;font-size:.78rem}.print-bar-style button.active{color:var(--accent);background:#4fc3f733;font-weight:600}.print-bar-actions{gap:6px;margin-left:auto;display:flex}.print-bar-actions button{font:inherit;border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;background:0 0;padding:7px 14px;font-size:.82rem;transition:all .12s}.print-bar-actions button:hover{border-color:var(--accent)}.print-bar-actions button:first-child{background:var(--accent);color:#0d1b2a;border-color:var(--accent);font-weight:650}.welcome-banner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);text-align:center;z-index:10;max-width:480px;padding:12px 20px;font-size:.84rem;animation:.3s toast-in;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0006}.welcome-banner strong{color:var(--text)}.link-btn{font:inherit;font-size:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline;display:inline}.modal-overlay{z-index:600;background:#0a0a14b3;justify-content:center;align-items:center;animation:.16s fade-in;display:flex;position:fixed;inset:0}.save-modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);animation:.2s toast-in;overflow-y:auto;box-shadow:0 20px 60px #00000080}.save-modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px 12px;display:flex}.save-modal-head h2{margin:0;font-size:1rem}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 6px;font-size:1.1rem}.modal-close:hover{color:var(--text);background:var(--bg)}.save-section{border-bottom:1px solid var(--border);padding:14px 20px}.save-section:last-child{border-bottom:0}.save-section h3{color:var(--text-muted);margin:0 0 10px;font-size:.88rem;font-weight:600}.save-section .auth-chip{color:var(--success);border-radius:var(--radius);background:#66bb6a14;border:1px solid #66bb6a33;align-items:center;gap:8px;margin-bottom:10px;padding:8px 12px;font-size:.8rem;display:flex}.save-section .auth-chip button{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #66bb6a4d;border-radius:3px;padding:3px 8px;font-size:.74rem}.save-input-row{gap:6px;margin-bottom:10px;display:flex}.save-input-row input{flex:1;padding:7px 10px}.btn-primary{font:inherit;background:var(--accent);color:#0d1b2a;border:1px solid var(--accent);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:7px 14px;font-size:.82rem;font-weight:650}.btn-primary:hover{background:var(--accent-hover)}.save-list{max-height:200px;margin:0;padding:0;list-style:none;overflow-y:auto}.save-list li{border-top:1px solid var(--border);align-items:center;gap:8px;padding:6px 0;display:flex}.save-list li:first-child{border-top:0}.save-list-name{text-align:left;font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;flex:1;padding:4px 0;font-size:.82rem}.save-list-name:hover{text-decoration:underline}.save-list-date{color:var(--text-muted);font-family:ui-monospace,monospace;font-size:.7rem}.save-list-del{font:inherit;width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;place-items:center;font-size:.9rem;display:grid}.save-list-del:hover{color:var(--danger);background:#ef53501f}.auth-form{gap:6px;display:flex}.auth-form input{flex:1;padding:7px 10px}.auth-form button{font:inherit;background:var(--accent);color:#0d1b2a;border:1px solid var(--accent);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:7px 14px;font-size:.82rem;font-weight:600}.save-local-row{gap:8px;display:flex}.save-local-row button{font:inherit;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);cursor:pointer;flex:1;padding:8px 12px;font-size:.82rem}.save-local-row button:hover{border-color:var(--accent)}.floorplan-workspace{flex-direction:column;flex:1;min-height:0;display:flex}.floorplan-toolbar{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:8px 14px;display:flex}.fp-toolbar-add{font:inherit;cursor:pointer;background:var(--accent);color:#0d1b2a;border:1px solid var(--accent);border-radius:var(--radius);padding:6px 14px;font-size:.82rem;font-weight:650;transition:background .15s}.fp-toolbar-add:hover,.fp-toolbar-add.open{background:var(--accent-hover)}.fp-toolbar-scale{color:var(--text);margin-left:auto;font-size:.82rem;font-weight:600}.floorplan-zoom-controls{gap:4px;margin-left:8px;display:flex}.floorplan-zoom-controls button{font:inherit;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);width:30px;height:30px;color:var(--text);cursor:pointer;place-items:center;font-size:.84rem;transition:all .12s;display:grid}.floorplan-zoom-controls button:hover{border-color:var(--accent);color:var(--accent)}.fp-fit-button{width:auto!important;padding:0 10px!important;font-size:.78rem!important}.floorplan-wall-popover{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px;position:absolute;box-shadow:0 8px 24px #0006}.floorplan-presets{flex-wrap:wrap;gap:4px;min-width:200px;display:flex}.floorplan-presets button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text);text-align:left;border-radius:4px;flex:1;min-width:80px;padding:6px 10px;font-size:.78rem;transition:all .12s}.floorplan-presets button:hover{border-color:var(--accent);background:var(--surface-hover)}.floorplan-presets small{color:var(--text-muted);margin-top:1px;font-size:.66rem;display:block}.floorplan-canvas-wrap{background:radial-gradient(ellipse at center, #1a2438 0%, var(--bg) 100%);cursor:grab;flex:1;position:relative;overflow:hidden}.floorplan-canvas-wrap:active{cursor:grabbing}.floorplan-room-fill{fill:#4fc3f714;cursor:grab;transition:fill .12s}.floorplan-room-fill:hover{fill:#4fc3f724}.floorplan-room-fill.active{fill:#4fc3f72e}.floorplan-room-stroke{fill:none;stroke:var(--text-muted);stroke-width:20px;vector-effect:non-scaling-stroke;transition:stroke .12s}.floorplan-room-stroke:hover{stroke:var(--text)}.floorplan-room-stroke.selected{stroke:var(--accent);stroke-width:30px}.floorplan-room-name-text{fill:var(--text);text-anchor:middle;pointer-events:none;font-weight:700}.floorplan-room-dim-text{fill:var(--text-muted);text-anchor:middle;pointer-events:none;font-family:ui-monospace,monospace}.floorplan-snap-guide{stroke:var(--accent);stroke-width:8px;stroke-dasharray:40 20;opacity:.6;pointer-events:none}.floorplan-empty-state{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.floorplan-empty-card{background:var(--surface);border:1px solid var(--border);text-align:center;pointer-events:auto;border-radius:12px;padding:28px 36px;animation:.3s toast-in;box-shadow:0 8px 24px #0000004d}.floorplan-empty-card h2{margin:0 0 8px;font-size:1rem}.floorplan-empty-card p{color:var(--text-muted);margin:0 0 14px;font-size:.84rem}.floorplan-empty-card button{font:inherit;cursor:pointer;background:var(--accent);color:#0d1b2a;border:1px solid var(--accent);border-radius:var(--radius);padding:8px 18px;font-size:.84rem;font-weight:650}.floorplan-hint-bar{color:var(--text-muted);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f1923cc;justify-content:center;gap:20px;padding:6px 14px;font-size:.72rem;display:flex;position:absolute;bottom:0;left:0;right:0}.palette-common{border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:8px}.common-grid{flex-direction:column;gap:2px;display:flex}.common-btn{text-align:left;background:var(--bg);border:1px solid var(--border);width:100%;font:inherit;color:var(--text);cursor:pointer;border-radius:4px;align-items:center;gap:8px;padding:5px 8px;font-size:.76rem;transition:border-color .12s,background .12s;display:flex}.common-btn:hover{border-color:var(--accent);background:var(--surface-hover)}.common-btn-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.common-btn-dims{color:var(--text-muted);flex-shrink:0;font-family:ui-monospace,monospace;font-size:.68rem}.color-picker-row{align-items:center;gap:8px;display:flex}.color-picker-row input[type=color]{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;width:32px;height:32px;padding:0}.color-reset{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);border-radius:3px;padding:3px 8px;font-size:.72rem;transition:all .12s}.color-reset:hover{border-color:var(--accent);color:var(--text)}.texture-grid{grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:6px;display:grid}.texture-thumb{aspect-ratio:1;border:2px solid var(--border);cursor:pointer;background:var(--bg);border-radius:4px;padding:0;transition:border-color .12s;overflow:hidden}.texture-thumb:hover{border-color:var(--accent)}.texture-thumb.active{border-color:var(--accent);box-shadow:0 0 6px var(--accent-glow)}.texture-thumb img{object-fit:cover;width:100%;height:100%;display:block}.texture-actions{gap:6px;display:flex}.texture-actions button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);border-radius:3px;padding:4px 8px;font-size:.72rem;transition:all .12s}.texture-actions button:hover{border-color:var(--accent);color:var(--text)}.texture-actions button:disabled{opacity:.5;cursor:default}.piece-detail line,.piece-detail rect,.piece-detail ellipse,.piece-detail circle,.piece-detail path{vector-effect:non-scaling-stroke}.doorway-gap{stroke:none}.doorway-leaf{stroke:#5c574e;stroke-width:.3px;vector-effect:non-scaling-stroke}.doorway-arc{fill:none;stroke:#8a8275;stroke-width:.2px;stroke-dasharray:.7 .35;vector-effect:non-scaling-stroke}.doorway-label{fill:#5c574e;pointer-events:none;font-family:ui-monospace,monospace}.floorplan-canvas-wrap.draw-mode{cursor:crosshair}.fp-draw-vertex{fill:var(--accent);stroke:#fff;stroke-width:12px;cursor:pointer;transition:r .1s}.fp-draw-vertex:hover{r:80}.fp-draw-vertex.first{fill:var(--success)}.fp-draw-edge{stroke:var(--accent);stroke-width:12px;stroke-dasharray:40 20;opacity:.8;pointer-events:none}.fp-draw-preview{stroke:var(--accent);stroke-width:8px;stroke-dasharray:30 15;opacity:.5;pointer-events:none}.fp-draw-fill{fill:#4fc3f714;stroke:none;pointer-events:none}.fp-draw-angle{fill:var(--text-muted);pointer-events:none;font-family:ui-monospace,monospace;font-size:160px}.fp-draw-dim{fill:var(--accent);pointer-events:none;font-family:ui-monospace,monospace;font-size:140px}.fp-vertex-handle{fill:var(--accent);stroke:#fff;stroke-width:10px;cursor:grab;transition:r 80ms}.fp-vertex-handle:hover{r:70}.fp-vertex-handle:active{cursor:grabbing}.fp-edge-midpoint{fill:#4fc3f766;stroke:var(--accent);stroke-width:6px;cursor:copy;opacity:0;transition:opacity .12s}.floorplan-canvas-wrap:hover .fp-edge-midpoint{opacity:1}.fp-draw-toolbar{align-items:center;gap:6px;display:flex}.fp-draw-toolbar button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:5px 12px;font-size:.78rem;transition:all .12s}.fp-draw-toolbar button:hover{border-color:var(--accent);color:var(--accent)}.fp-draw-toolbar button.active{background:var(--accent);color:#0d1b2a;border-color:var(--accent)}.fp-draw-toolbar button.danger{border-color:var(--danger);color:var(--danger)}.fp-draw-toolbar button.danger:hover{background:#ef53501f}.fp-shape-presets{flex-wrap:wrap;gap:4px;display:flex}.fp-shape-presets button{font:inherit;cursor:pointer;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);border-radius:4px;padding:4px 8px;font-size:.72rem;transition:all .12s}.fp-shape-presets button:hover{border-color:var(--accent);color:var(--text)}@media (width<=768px){.view-tab-label{display:none}.view-tab{padding:6px 8px}.room-tab-dim{display:none}.breadcrumb{padding:3px 12px;font-size:.72rem}.save-modal{width:calc(100vw - 16px)}.print-bar{gap:6px;padding:8px 12px}}
