:root{--bg:#f6f7f9;--surface:#fff;--border:#d8dce3;--text:#1c2430;--muted:#66707d;--accent:#2563eb;--accent-hover:#1d4ed8;--danger:#dc2626;--radius:8px;--canvas-bg:#fbfcfd;--grid-minor:#e8ecf1;--grid-major:#d5dbe4;--grid-axis:#b9c2cf;--wall-outer:#39424f;--wall-inner:#5d6a7c;--wall-partition:#97a2b2;--node-fill:#fff;--node-stroke:#4b586c;--snap-node:#16a34a;--snap-guide:#d97706;--snap-grid:#94a3b8;--opening-frame:#55606f;--window-glass:#60a5fa;--room-label:#4b5563;--dim-color:#7c8b9d;color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}.page-center{justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.9rem;width:min(360px,90vw);padding:2rem;display:flex}.auth-card h1{margin:0;font-size:1.4rem}.auth-card label{flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;display:flex}input{border:1px solid var(--border);border-radius:6px;padding:.55rem .7rem;font-family:inherit;font-size:.95rem}input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:.55rem 1rem;font-family:inherit;font-size:.95rem;font-weight:600}button:hover{background:var(--accent-hover)}button:disabled{opacity:.6;cursor:default}.muted{color:var(--muted);margin:0;font-size:.85rem}.error{color:var(--danger);margin:0;font-size:.85rem}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.6rem 1.2rem;display:flex}.brand{font-weight:700}.header-right{align-items:center;gap:.8rem;display:flex}.app-main{flex:1;width:100%;max-width:960px;margin:0 auto;padding:1.5rem}.editor-shell{flex-direction:column;height:100vh;display:flex;overflow:hidden}.editor-shell .app-header{justify-content:flex-start;gap:1rem}.editor-shell .brand{color:var(--text);white-space:nowrap;text-decoration:none}.editor-body{flex:1;min-height:0;display:flex}.editor-canvas{background:var(--canvas-bg);touch-action:none;flex:1;width:100%;height:100%;display:block}.toolbar{flex-wrap:wrap;flex:1;align-items:center;gap:.75rem;display:flex}.toolbar-group{border-right:1px solid var(--border);align-items:center;gap:.25rem;padding:0 .5rem;display:flex}.toolbar-group:last-of-type{border-right:none}.toolbar-spacer{flex:1}.tool-btn{color:var(--text);background:0 0;border:1px solid #0000;padding:.35rem .7rem;font-weight:500}.tool-btn:hover{background:var(--bg);border-color:var(--border)}.tool-btn.active{background:var(--accent);color:#fff}.tool-btn:disabled{opacity:.4}.toolbar-label{color:var(--muted);align-items:center;gap:.35rem;font-size:.8rem;display:flex}.toolbar-label select{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:.3rem .4rem;font-family:inherit;font-size:.85rem}.properties-panel{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:.7rem;width:250px;padding:1rem;display:flex;overflow-y:auto}.properties-panel h2{margin:0;font-size:1rem}.prop-row{justify-content:space-between;align-items:center;gap:.5rem;font-size:.85rem;font-weight:600;display:flex}.prop-row input,.prop-row select{width:130px;padding:.35rem .5rem;font-size:.85rem;font-weight:400}.panel-hint{border-top:1px solid var(--border);padding-top:.7rem;line-height:1.6}.room-fill{transition:opacity .1s}.room-fill:hover{opacity:.75}.color-swatches{gap:.35rem;display:flex}.color-swatch{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:5px;width:22px;height:22px;padding:0}.color-swatch.active{outline:2px solid var(--accent);outline-offset:1px}.inline-form{gap:.5rem;margin:1rem 0 1.5rem;display:flex}.inline-form input{flex:1;max-width:380px}.card-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;text-decoration:none;display:flex}.card:hover{border-color:var(--accent)}.card-body{flex-direction:column;gap:.2rem;display:flex}.card-title{font-weight:600}.btn-danger-ghost{color:var(--muted);background:0 0;border:1px solid #0000;font-weight:500}.btn-danger-ghost:hover,.btn-danger-ghost.armed{color:var(--danger);border-color:var(--danger);background:0 0}.plan-name{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.sync-status{white-space:nowrap;color:var(--muted);border:1px solid var(--border);border-radius:99px;padding:.2rem .6rem;font-size:.8rem}.sync-saved{color:#16a34a;border-color:#bbe7c9}.sync-retrying,.sync-conflict{color:var(--danger);border-color:var(--danger)}.conflict-banner{border-bottom:1px solid var(--danger);color:var(--danger);background:#fef2f2;align-items:center;gap:.8rem;padding:.6rem 1.2rem;font-size:.9rem;display:flex}.btn-secondary{color:var(--text);border:1px solid var(--border);background:0 0}.btn-secondary:hover{background:var(--bg)}.modal-backdrop{z-index:50;background:#1c243073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);flex-direction:column;gap:.8rem;width:min(480px,92vw);max-height:85vh;padding:1.2rem 1.4rem;display:flex;overflow-y:auto}.materials-modal{width:min(760px,94vw)}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-header h2{margin:0;font-size:1.15rem}.materials-options{background:var(--bg);border-radius:8px;align-items:center;gap:1rem;padding:.6rem .8rem;display:flex}.export-buttons{gap:.6rem;display:flex}.export-buttons button{flex:1;padding:.7rem}.materials-tables{flex-direction:column;gap:1rem;display:flex}.materials-tables table{border-collapse:collapse;width:100%;font-size:.85rem}.materials-tables th{text-align:left;color:var(--muted);border-bottom:2px solid var(--border);padding:.35rem .5rem;font-weight:600}.materials-tables td{border-bottom:1px solid var(--border);padding:.35rem .5rem}.three-view{flex:1;min-width:0;min-height:0;position:relative}.three-view canvas{display:block}.view-toggle{border-right:1px solid var(--border)}
