:root{--bg:#1a1a2e;--bg-surface:#16213e;--bg-elevated:#1f2b47;--accent:#e94560;--accent-soft:#e9456026;--text:#eee;--text-muted:#8892b0;--border:#2a3a5c;--radius:10px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;touch-action:manipulation;font-family:-apple-system,BlinkMacSystemFont,SF Pro,system-ui,sans-serif;overflow:hidden}.app{height:100%;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);flex-direction:column;display:flex}.toolbar{background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;min-height:48px;padding:8px 16px;display:flex}.toolbar-title{align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.toolbar-icon{width:20px;height:20px;color:var(--accent)}.toolbar-center{background:var(--bg);border-radius:8px;gap:4px;padding:2px;display:flex}.cam-btn,.toolbar-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px 10px;transition:all .15s;display:flex}.cam-btn svg,.toolbar-btn svg{width:20px;height:20px}.cam-btn.active{background:var(--accent-soft);color:var(--accent)}.cam-btn:hover,.toolbar-btn:hover{color:var(--text)}.main-content{flex:1;display:flex;position:relative;overflow:hidden}.scene-container{flex:1;position:relative}.scene-container canvas{touch-action:none}.sidebar{background:var(--bg-surface);border-left:1px solid var(--border);z-index:5;flex-direction:column;width:320px;display:flex;overflow:hidden}@media (width<=768px){.sidebar{width:85%;max-width:360px;position:absolute;top:0;bottom:0;right:0;box-shadow:-4px 0 20px #0006}}.sidebar-tabs{border-bottom:1px solid var(--border);display:flex}.sidebar-tabs button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:10px;font-size:13px;font-weight:500;transition:all .15s}.sidebar-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.sidebar-content{-webkit-overflow-scrolling:touch;flex:1;padding:12px;overflow-y:auto}.sidebar-empty{text-align:center;color:var(--text-muted);padding:32px 16px}.sidebar-empty .hint{opacity:.7;margin-top:8px;font-size:13px}.room-list{list-style:none}.room-item{border-radius:var(--radius);cursor:pointer;align-items:center;gap:10px;padding:10px;transition:background .15s;display:flex}.room-item:hover{background:var(--bg-elevated)}.room-item.selected{background:var(--accent-soft)}.room-status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.room-info{flex-direction:column;display:flex}.room-name{font-size:14px;font-weight:500}.room-meta{color:var(--text-muted);font-size:12px}.task-list{list-style:none}.task-item{border-radius:var(--radius);align-items:flex-start;gap:8px;padding:8px;display:flex}.task-item.done .task-title{opacity:.5;text-decoration:line-through}.task-check{cursor:pointer;background:0 0;border:none;padding:0;font-size:16px;line-height:1}.task-info{flex-direction:column;display:flex}.task-title{font-size:14px}.task-body{color:var(--text-muted);margin-top:2px;font-size:12px}.add-form{flex-direction:column;gap:10px;display:flex}.form-toggle{background:var(--bg);border-radius:8px;gap:4px;padding:2px;display:flex}.form-toggle button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;padding:6px;font-size:13px}.form-toggle button.active{background:var(--accent-soft);color:var(--accent)}.add-form input,.add-form select,.add-form textarea{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .15s}.add-form input:focus,.add-form select:focus,.add-form textarea:focus{border-color:var(--accent)}.add-form textarea{resize:vertical}.btn-primary{background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;text-align:center;border:none;padding:10px 16px;font-size:14px;font-weight:500;transition:opacity .15s}.btn-primary:hover{opacity:.9}.upload-overlay{background:var(--bg);flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.upload-overlay.drag-over{background:var(--accent-soft)}.upload-box{text-align:center;max-width:400px}.upload-icon{width:64px;height:64px;color:var(--accent);margin-bottom:16px}.upload-box h2{margin-bottom:8px;font-size:22px}.upload-hint{color:var(--text-muted);margin-bottom:20px;font-size:14px}.upload-btn{cursor:pointer;margin-bottom:16px;display:inline-block}.upload-formats{color:var(--text-muted);margin-bottom:32px;font-size:12px}.upload-steps{justify-content:center;gap:16px;display:flex}.step{color:var(--text-muted);flex-direction:column;align-items:center;gap:6px;font-size:12px;display:flex}.step-num{background:var(--accent-soft);width:24px;height:24px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.room-label{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;border:1px solid var(--border);color:var(--text);background:#16213ee6;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-family:-apple-system,BlinkMacSystemFont,SF Pro,system-ui,sans-serif;font-size:12px;font-weight:500;display:flex}.room-label.selected{border-color:var(--accent)}.annotation-pin{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;border:1px solid var(--border);color:var(--text);background:#16213ee6;border-radius:8px;padding:4px 8px;font-family:-apple-system,BlinkMacSystemFont,SF Pro,system-ui,sans-serif;transition:all .15s}.annotation-pin.expanded{max-width:200px;padding:8px 12px}.pin-icon{font-size:14px}.pin-detail{margin-top:4px;font-size:12px}.pin-detail strong{margin-bottom:2px;display:block}.pin-detail p{color:var(--text-muted);font-size:11px}.loading-screen{color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}.loading-spinner.large{width:48px;height:48px}@keyframes spin{to{transform:rotate(360deg)}}.floorplan-view{background:var(--bg);cursor:grab;touch-action:none;flex:1;position:relative;overflow:hidden}.floorplan-view:active{cursor:grabbing}.floorplan-canvas{transform-origin:50%;will-change:transform;margin-top:-50%;margin-left:-50%;position:absolute;top:50%;left:50%}.floorplan-svg{justify-content:center;align-items:center;display:flex}.floorplan-svg svg{width:auto;max-width:100vw;height:auto;max-height:85vh}.floorplan-image{-webkit-user-select:none;user-select:none;pointer-events:none;width:auto;max-width:100vw;height:auto;max-height:85vh}.floorplan-room-chips{-webkit-overflow-scrolling:touch;z-index:5;background:linear-gradient(#0000,#1a1a2ef2);gap:6px;padding:32px 12px 12px;display:flex;position:absolute;bottom:0;left:0;right:0;overflow-x:auto}.room-chip{background:var(--bg-surface);border:1px solid var(--border);color:var(--text);white-space:nowrap;cursor:pointer;border-radius:20px;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:500;transition:all .15s;display:flex}.room-chip.selected{border-color:var(--room-color,var(--accent));background:var(--accent-soft)}.room-chip:hover{border-color:var(--room-color,var(--accent))}.room-chip-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.room-chip-area{color:var(--text-muted);font-size:11px}.floorplan-controls{z-index:5;flex-direction:column;gap:4px;display:flex;position:absolute;top:12px;right:12px}.floorplan-controls button{background:var(--bg-surface);border:1px solid var(--border);width:36px;height:36px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;font-family:inherit;font-size:16px;font-weight:600;transition:all .15s;display:flex}.floorplan-controls button:hover{background:var(--bg-elevated)}.sidebar-header{border-bottom:1px solid var(--border);padding:8px 12px}.back-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:4px 0;font-family:inherit;font-size:13px;display:flex}.room-detail{flex-direction:column;gap:16px;display:flex}.room-detail-header h3{margin-bottom:4px;font-size:18px}.room-original{color:var(--text-muted);margin-bottom:8px;font-size:11px;display:block}.room-status-select select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 8px;font-family:inherit;font-size:13px}.measurement-section{border-top:1px solid var(--border);padding-top:12px}.measurement-section h4{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:4px;font-size:13px;font-weight:600}.section-hint{color:var(--text-muted);opacity:.7;margin-bottom:8px;font-size:11px}.measurement-grid{flex-direction:column;gap:2px;display:flex}.measurement-row{cursor:pointer;border-radius:6px;justify-content:space-between;align-items:center;min-height:36px;padding:8px;transition:background .15s;display:flex}.measurement-row:hover{background:var(--bg-elevated)}.measurement-row.editing{background:var(--bg-elevated);cursor:default;flex-direction:column;align-items:stretch;gap:6px}.measurement-label{color:var(--text-muted);flex-shrink:0;font-size:13px}.measurement-value{text-align:right;font-variant-numeric:tabular-nums;font-size:13px;font-weight:500}.measurement-edit{align-items:center;gap:6px;display:flex}.measurement-edit input{background:var(--bg);border:1px solid var(--accent);color:var(--text);border-radius:6px;outline:none;flex:1;padding:6px 8px;font-family:inherit;font-size:13px}.measurement-unit{color:var(--text-muted);flex-shrink:0;font-size:12px}.measurement-save,.measurement-cancel{border:1px solid var(--border);cursor:pointer;color:var(--text);background:0 0;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:12px}.measurement-save{border-color:var(--accent);color:var(--accent)}.room-notes{color:var(--text-muted);font-size:13px;line-height:1.5}.concepts-list,.task-section{flex-direction:column;gap:12px;display:flex}.concepts-header{justify-content:space-between;align-items:center;display:flex}.concepts-header h4{font-size:14px;font-weight:600}.btn-small{background:var(--accent-soft);color:var(--accent);cursor:pointer;border:none;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500}.concept-form{flex-direction:column;gap:8px;display:flex}.concept-form input,.concept-form select,.concept-form textarea{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);outline:none;padding:8px 10px;font-family:inherit;font-size:13px}.concept-form input:focus,.concept-form textarea:focus{border-color:var(--accent)}.concept-form textarea{resize:vertical}.concept-cards{flex-direction:column;gap:8px;list-style:none;display:flex}.concept-card{background:var(--bg-elevated);border-radius:var(--radius);padding:10px 12px}.concept-type{text-transform:uppercase;letter-spacing:.05em;color:var(--accent);margin-bottom:4px;font-size:10px}.concept-card strong{margin-bottom:4px;font-size:14px;display:block}.concept-card p{color:var(--text-muted);font-size:13px;line-height:1.4}.room-chevron{color:var(--text-muted);flex-shrink:0}.toolbar-btn.active{color:var(--accent)}
