.btn,.modal-label,.pdf-page-nav,.saved-toast{font-weight:600}.lock-toggle,.palette-item,.plan-area.panning,.tab{user-select:none}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:#f0f2f5;color:#333;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;scroll-padding-bottom:100px}.btn{padding:7px 14px;border:1px solid #ccc;background:#fff;color:#444;border-radius:5px;cursor:pointer;font-size:.8rem;transition:.15s;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center}.btn-primary,.modal-input:focus{border-color:#4a90d9}.btn:hover{background:#e8e8e8;color:#222}.btn-primary{background:#4a90d9;color:#fff}.btn-success,.saved-toast{background:#27ae60;color:#fff}.btn-primary:hover{background:#3a7bc8}.btn-success{border-color:#27ae60}.btn-success:hover{background:#219a52}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:disabled:hover{background:inherit;color:inherit}.saved-toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(80px);padding:10px 24px;border-radius:6px;font-size:.9rem;transition:transform .3s;z-index:1000;pointer-events:none}.saved-toast.show{transform:translateX(-50%) translateY(0)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.modal{background:#fff;border-radius:10px;padding:24px 28px;min-width:340px;max-width:calc(100vw - 40px);max-height:calc(100vh - 40px);overflow-y:auto;box-shadow:0 8px 30px rgba(0,0,0,.18)}.modal h3{margin:0 0 16px;font-size:1.1rem}.modal-label{display:block;font-size:.8rem;color:#555;margin-bottom:6px}.modal-input{width:100%;padding:8px 10px;border:1px solid #ccc;border-radius:5px;font-size:.9rem;outline:0;transition:border-color .15s}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}#layout-phase,#setup-phase{display:flex;flex-direction:column;height:100vh;height:100dvh}.setup-header,header{background:#fff;padding:14px 24px;border-bottom:1px solid #ddd;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.pdf-fallback-btn,.pdf-page-nav{left:50%;transform:translateX(-50%);padding:5px 14px}.setup-header h1,header h1{font-size:1.3rem;color:#4a90d9}.header-actions,.setup-actions,.share-link-row{display:flex;gap:8px;align-items:center}.main-layout,.setup-content{display:flex;flex:1;overflow:hidden}.svg-preview-area{flex:1;overflow:hidden;position:relative;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.upload-prompt{text-align:center;color:#888}.upload-icon{font-size:4rem;margin-bottom:12px}.upload-prompt p{font-size:1.1rem;margin-bottom:6px}.upload-hint{font-size:.85rem;color:#aaa}.upload-progress{margin:14px auto 8px;width:300px;max-width:80%;height:10px;background:#e6e6e6;border-radius:5px;overflow:hidden;position:relative}.upload-progress-fill{height:100%;width:0%;background:#4a90d9;border-radius:5px;transition:width .15s ease-out;position:relative}.upload-progress-fill.indeterminate{width:35%;animation:1.4s ease-in-out infinite upload-indeterminate}@keyframes upload-indeterminate{0%{left:-35%}100%{left:100%}}.upload-progress-label{font-size:.95rem;color:#666;margin-bottom:4px;font-variant-numeric:tabular-nums}.upload-svg-btn{margin-top:16px;z-index:20}.svg-preview-area.has-preview .upload-svg-btn{position:absolute;top:10px;left:10px;margin-top:0}.pdf-page-nav{position:absolute;top:8px;z-index:20;display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.95);border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.15);font-size:.82rem;color:#555}.pdf-fallback-btn,.plan-zoom-controls{box-shadow:0 1px 4px rgba(0,0,0,.12);z-index:20}.pdf-fallback-btn{position:absolute;bottom:10px;background:rgba(255,255,255,.92);border:1px solid #ccc;border-radius:6px;font-size:.78rem;color:#777;cursor:pointer}.pdf-fallback-btn:hover{background:#fff;color:#333;border-color:#999}.preview-container{width:100%;height:100%;position:relative;overflow:hidden;cursor:grab;touch-action:none}.calibrating .plan-container,.drawing-rooms .plan-container,.measuring .plan-container,.preview-container.selecting{cursor:crosshair}.preview-container.panning{cursor:grabbing}#preview-svg{position:absolute;top:0;left:0;transform-origin:0 0}#selection-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.selection-handle,.selection-rect{pointer-events:auto}.setup-sidebar{width:300px;background:#fff;border-left:1px solid #ddd;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.setup-sidebar-section{padding:14px 16px;border-bottom:1px solid #eee}.setup-sidebar-section h3{font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:#4a90d9;margin-bottom:10px}.no-floors{color:#aaa;font-size:.85rem;font-style:italic;padding:8px 0}.floor-card{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:10px;margin-bottom:8px;display:flex;align-items:center;gap:10px}.floor-card-thumb{width:80px;height:60px;background:#fff;border:1px solid #ddd;border-radius:4px;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center}.floor-card-thumb svg{width:100%;height:100%}.floor-card-info,.props-header-info{flex:1;min-width:0}.floor-card-name{font-weight:600;font-size:.85rem;color:#333;margin-bottom:2px}.floor-card-dims{font-size:.72rem;color:#999}.floor-card-reorder{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.floor-card-move{background:#f0f0f0;border:1px solid #ccc;color:#555;cursor:pointer;font-size:1rem;padding:4px 8px;line-height:1;border-radius:4px;transition:background .15s,color .15s,border-color .15s}.floor-card-move:hover{background:#e0edf7;color:#4a90d9;border-color:#4a90d9}.floor-card-move:disabled{opacity:.25;cursor:not-allowed}.floor-card-move:disabled:hover{background:#f0f0f0;color:#555;border-color:#ccc}.floor-card-delete{background:0 0;border:none;color:#ccc;cursor:pointer;font-size:1.1rem;padding:4px;line-height:1}.floor-card-delete:hover{color:#e74c3c}.instruction-text{font-size:.85rem;color:#555;line-height:1.5;margin-bottom:10px}.instruction-text b{color:#4a90d9}.selection-actions{display:flex;gap:6px}#add-floor-btn{width:100%;margin-top:10px}.save-indicator{display:inline-flex;align-items:center;flex-direction:row-reverse;gap:6px;flex-shrink:0;transition:.2s;font-size:.75rem;white-space:nowrap}.save-indicator::before{content:'';width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;font-size:11px;line-height:1;flex-shrink:0}.save-indicator-text{color:#999;font-weight:500}.save-indicator.saved::before{background:#27ae60;content:'\2713';color:#fff}.save-indicator.unsaved::before{background:#f0ad4e;content:'\270E';color:#fff;font-size:12px}.save-indicator.unsaved .save-indicator-text{color:#b8860b}.save-indicator.error::before{background:#e74c3c;content:'\2717';color:#fff}.save-indicator.error .save-indicator-text{color:#c0392b}.plan-zoom-controls{position:absolute;bottom:16px;right:16px;display:flex;align-items:center;gap:4px;background:rgba(255,255,255,.9);border-radius:6px;padding:4px 6px}.export-row,.export-row label{align-items:center;display:flex}.plan-area,.plan-container,.sidebar,.tabs-bar{background:#fff}.plan-zoom-controls .btn{padding:5px 10px;font-size:.75rem}.zoom-level{font-size:.78rem;color:#888;min-width:42px;text-align:center;font-variant-numeric:tabular-nums}#draw-room-toggle-btn.active,.plan-zoom-controls .btn.active{background:#4a90d9;color:#fff;border-color:#4a90d9}.export-modal{min-width:320px}.export-section{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #eee}.export-section:last-of-type{border-bottom:none}.export-section h4{margin:0 0 8px;font-size:.85rem;color:#555}.export-row{gap:10px;margin-bottom:8px}.props-group,.props-header{margin-bottom:10px}.export-row label{font-size:.82rem;color:#444;gap:6px}.export-row select{font-size:.82rem;padding:4px 8px;border:1px solid #ccc;border-radius:4px}.export-loading{font-size:.82rem;color:#888;font-style:italic}.tabs-bar{display:flex;align-items:center;padding:0 24px;border-bottom:1px solid #ddd;flex-shrink:0;min-height:42px}.tabs{display:flex;gap:0;flex:1}.edit-floors-btn{margin-left:auto;font-size:.78rem;padding:5px 14px;flex-shrink:0}.tab{padding:10px 22px;cursor:pointer;font-size:.9rem;font-weight:600;color:#999;border-bottom:3px solid transparent;transition:.15s}.furniture-item,.plan-area{cursor:grab}.tab:hover{color:#555}.tab.active{color:#4a90d9;border-bottom-color:#4a90d9}.plan-area{flex:1;overflow:hidden;position:relative;touch-action:none}.plan-container svg,.plan-wrapper{position:absolute;top:0;left:0}.plan-area.panning{cursor:grabbing}.plan-container{position:relative;display:inline-block;border:none;border-radius:0;overflow:visible;box-shadow:none}.plan-container img{display:block;height:auto;user-select:none;-webkit-user-drag:none}.plan-container svg{width:100%;height:100%;overflow:visible}.furniture-item:hover ellipse.item-shape,.furniture-item:hover path.item-shape,.furniture-item:hover rect.item-shape{filter:brightness(1.1)}.furniture-item.selected ellipse.item-shape,.furniture-item.selected path.item-shape,.furniture-item.selected rect.item-shape{stroke-dasharray:4 2}.dim-lines-overlay{visibility:hidden;pointer-events:none}.resize-handle{fill:#fff;stroke:#4a90d9;stroke-width:1.5;cursor:nwse-resize}.resize-handle-ne,.resize-handle-sw{cursor:nesw-resize}.resize-handle-nw,.resize-handle-se,.room-resize-handle{cursor:nwse-resize}.room-item{cursor:move}.color-swatch,.lock-toggle,.room-item.locked{cursor:pointer}.room-item:hover rect.room-shape{filter:brightness(1.08)}.sidebar{width:290px;border-left:1px solid #ddd;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.sidebar-section{padding:12px 14px;border-bottom:1px solid #eee}.sidebar-section h3{font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:#4a90d9;margin-bottom:8px}.props-header{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#f4f6f9;border-radius:6px}.props-header-swatch{width:28px;height:28px;border-radius:6px;flex-shrink:0;border:2px solid rgba(0,0,0,.1)}.props-header-name{font-size:.85rem;font-weight:600;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.props-header-type{font-size:.7rem;color:#888;text-transform:capitalize}.props-group-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.8px;color:#aaa;margin-bottom:5px}.prop-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.prop-row label{font-size:.75rem;color:#888;width:28px;flex-shrink:0;text-align:right}.prop-row input[type=number],.prop-row input[type=text],.prop-row input[type=url],.prop-row select{flex:1;background:#f8f9fa;border:1px solid #ddd;color:#333;padding:6px 8px;border-radius:5px;font-size:.82rem;width:0;transition:border-color .15s,box-shadow .15s}.prop-row input:focus,.prop-row select:focus{outline:0;border-color:#4a90d9;box-shadow:0 0 0 2px rgba(74,144,217,.15)}.prop-row .unit{font-size:.7rem;color:#999;width:16px;flex-shrink:0}.color-swatch-grid{display:flex;flex-wrap:wrap;gap:5px;padding:2px 0}.color-swatch{width:24px;height:24px;border-radius:5px;border:2px solid transparent;transition:transform .1s,border-color .15s;position:relative}.color-swatch:hover{transform:scale(1.15)}.color-swatch.active{border-color:#333;box-shadow:0 0 0 2px rgba(74,144,217,.3)}.lock-toggle{display:flex;align-items:center;gap:8px;padding:6px 0}.lock-toggle input,.mobile-sidebar-toggle{display:none}.lock-toggle-track{width:36px;height:20px;background:#ddd;border-radius:10px;position:relative;transition:background .2s;flex-shrink:0}.lock-toggle input:checked+.lock-toggle-track{background:#4a90d9}.lock-toggle-track::after{content:'';position:absolute;width:16px;height:16px;background:#fff;border-radius:50%;top:2px;left:2px;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}.lock-toggle input:checked+.lock-toggle-track::after{transform:translateX(16px)}.lock-toggle-label{font-size:.78rem;color:#666}.item-entry,.palette-item{cursor:pointer;color:#555}.palette-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.palette-item{padding:6px 4px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:5px;text-align:center;font-size:.72rem;transition:.15s}.palette-item:hover{background:#e8ecf0;color:#333;border-color:#4a90d9}.palette-item .dims{font-size:.62rem;color:#aaa;margin-top:1px}.item-list{max-height:220px;overflow-y:auto}.item-entry{padding:5px 8px;font-size:.75rem;border-radius:3px;margin-bottom:2px;display:flex;align-items:center;gap:6px}.item-entry:hover{background:rgba(74,144,217,.06)}.item-entry.active{background:rgba(74,144,217,.12);color:#333;font-weight:600}.item-swatch{width:12px;height:12px;border-radius:2px;flex-shrink:0}.item-entry.item-child{padding-left:22px;font-size:.7rem;opacity:.8}.item-entry .item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-price{font-size:.7rem;color:#27ae60;font-weight:600;flex-shrink:0;margin-left:auto}.item-list-total{display:flex;justify-content:space-between;align-items:center;padding:6px 8px 4px;margin-top:4px;border-top:1px solid #e0e0e0;font-size:.75rem;font-weight:600;color:#333}.item-list-total-value{color:#27ae60;font-size:.8rem}.no-selection{color:#aaa;font-size:.8rem;font-style:italic;padding:8px 0}.rotate-row{display:flex;gap:4px;margin-top:2px}.rotate-row .btn{flex:1;padding:6px 4px;font-size:.78rem}.props-actions{display:flex;gap:6px;margin-top:8px}.props-actions .btn{flex:1;padding:7px 10px}.btn-danger{background:#fff;border-color:#e74c3c;color:#e74c3c}.btn-danger:hover{background:#e74c3c;color:#fff}.sidebar-subsection{padding:6px 0}.sidebar-subsection+.sidebar-subsection{border-top:1px solid #f0f0f0;margin-top:2px}.sidebar-subsection-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.6px;color:#aaa;margin-bottom:4px;font-weight:600}.sidebar-btn-row{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-top:4px}.sidebar-count{font-size:.68rem;color:#888;background:#f0f2f5;padding:1px 7px;border-radius:9px;font-weight:600;line-height:1.4}.btn-xs{font-size:.68rem;padding:3px 8px}.scale-info{font-size:.75rem;color:#888;padding:2px 0}.scale-info .val{color:#27ae60;font-weight:600}.cal-banner b,.scale-info .uncal{color:#e67e22}.cal-banner{background:rgba(230,126,34,.08);border:1px solid rgba(230,126,34,.25);border-radius:5px;padding:8px 10px;font-size:.78rem;color:#b86a14;margin-bottom:8px;line-height:1.4}.preview-zoom-controls{position:absolute;bottom:16px;left:16px;display:flex;gap:4px;z-index:20}.preview-zoom-controls .btn{padding:5px 10px;font-size:.75rem;box-shadow:0 1px 4px rgba(0,0,0,.1)}.history-panel{width:260px;background:#fff;border-left:1px solid #ddd;flex-shrink:0;display:flex;flex-direction:column;overflow:hidden}.history-header{padding:12px 14px;border-bottom:1px solid #eee;display:flex;align-items:center;justify-content:space-between}.history-header h3{font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:#4a90d9;margin:0}.history-list{flex:1;overflow-y:auto;padding:8px}.history-entry{padding:8px 10px;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;gap:8px;transition:background .15s}.history-entry:hover{background:#f8f9fa}.history-entry.latest{border-color:#27ae60;background:rgba(39,174,96,.04)}.history-info{min-width:0;flex:1}.history-time{font-size:.75rem;color:#333;font-weight:600}.history-label{font-size:.68rem;color:#999;margin-top:1px}@media (max-width:768px){.save-indicator-text,.sidebar{display:none}.header-actions .btn,.plan-zoom-controls .btn,.setup-actions .btn{padding:6px 10px;font-size:.75rem}.setup-header,header{padding:10px 12px;gap:8px;padding-top:max(10px,env(safe-area-inset-top))}.selection-actions,.setup-header{flex-wrap:wrap}header h1{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.setup-header h1{font-size:1rem;width:100%}.header-actions{gap:6px;flex-shrink:0;margin-left:auto}.setup-actions{flex-wrap:wrap;gap:6px;width:100%}.tabs-bar{padding:0 8px;min-height:36px}.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.tab{padding:8px 14px;font-size:.8rem;flex-shrink:0}.edit-floors-btn{font-size:.7rem;padding:4px 10px}.setup-content{flex-direction:column}.setup-sidebar{width:100%;border-left:none;border-top:1px solid #ddd;max-height:calc(40vh - env(safe-area-inset-bottom));padding-bottom:max(10px,env(safe-area-inset-bottom))}.history-panel,.sidebar{width:100%;border-left:none;border-top:1px solid #ddd;max-height:40vh}.main-layout{flex-direction:column;position:relative}.plan-area{flex:1;min-height:0}.sidebar{overflow-y:auto;flex-shrink:0;padding-bottom:max(60px,calc(50px + env(safe-area-inset-bottom)))}.sidebar.mobile-open{display:flex;scroll-padding-bottom:20px}.mobile-sidebar-toggle{display:inline-flex}.palette-grid{grid-template-columns:1fr 1fr 1fr}.palette-item{padding:10px 6px;font-size:.78rem}.plan-zoom-controls{bottom:max(12px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));flex-wrap:wrap;justify-content:center}.lock-toggle-label,.rotate-row .btn{font-size:.85rem}.resize-handle{stroke-width:2}.prop-row input[type=number],.prop-row input[type=text],.prop-row input[type=url],.prop-row select{font-size:16px;padding:8px 10px;border-radius:6px}.prop-row label{font-size:.82rem}.prop-row{margin-bottom:8px}.color-swatch{width:32px;height:32px;border-radius:6px}.rotate-row .btn{padding:10px 6px}.props-actions .btn{padding:10px 12px;font-size:.85rem}.lock-toggle{padding:8px 0}.lock-toggle-track{width:44px;height:24px;border-radius:12px}.lock-toggle-track::after{width:20px;height:20px}.lock-toggle input:checked+.lock-toggle-track::after{transform:translateX(20px)}.props-header{padding:12px 14px}.item-entry{padding:8px 10px;font-size:.82rem}.floor-card{padding:12px}.selection-actions .btn{padding:8px 14px;font-size:.8rem}.modal-overlay{align-items:flex-end;padding:0}.modal{max-width:100%;max-height:80dvh;border-radius:12px 12px 0 0;margin:0}.sidebar .sidebar-section{flex-shrink:0!important;flex-grow:0!important;flex-basis:auto!important;overflow:visible!important}.sidebar .item-list{max-height:none;overflow-y:visible}}@media (max-width:480px){.palette-grid{grid-template-columns:1fr 1fr}}.share-link-section{margin-bottom:16px}.share-link-section:last-of-type{margin-bottom:0}.share-link-hint{font-size:.8rem;color:#666;margin:0 0 8px}.share-link-row .modal-input{flex:1;font-family:monospace;font-size:.8rem;min-width:0}.view-only-banner{background:#fff3cd;color:#856404;padding:4px 12px;font-size:.75rem;font-weight:600;border-radius:4px;white-space:nowrap}