:root{color:#172033;font-synthesis:none;--ink:#172033;--muted:#69758a;--line:#dbe2ea;--line-strong:#c7d0dc;--panel:#fff;--panel-soft:#f8fafc;--primary:#1d4ed8;--primary-soft:#eaf1ff;--danger:#b42318;--danger-soft:#fff0ee;--warning:#a15c00;--warning-soft:#fff8e8;--success:#137a4b;--shadow:0 10px 32px #141f3314;background:#f3f6fa;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{min-width:1180px}button,input,select,textarea{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.035em;margin-bottom:8px;font-size:30px}h2{margin-bottom:6px}h3{margin-bottom:12px;font-size:14px}.muted{color:var(--muted)}.small{font-size:12px;line-height:1.5}.eyebrow{color:#516079;text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:800}.app-header{color:#f8fafc;z-index:50;background:#111827;border-bottom:1px solid #ffffff14;grid-template-columns:240px 1fr 240px;align-items:center;height:64px;padding:0 24px;display:grid;position:relative}.app-header-compact{grid-template-columns:190px 1fr 240px;height:56px;padding:0 16px}.brand{align-items:center;gap:10px;width:max-content;font-size:18px;font-weight:800;display:inline-flex}.brand-mark{background:linear-gradient(145deg,#2563eb,#1d4ed8);border-radius:9px;place-items:center;width:34px;height:34px;display:grid}.app-header-center{justify-content:center;min-width:0;display:flex}.header-user{justify-content:flex-end;align-items:center;gap:8px;display:flex}.user-chip{color:#d6deea;white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.app-header .icon-button{color:#f8fafc;background:#ffffff0f;border-color:#ffffff2e}.app-header .icon-button:hover{color:#fff;background:#ffffff29;border-color:#ffffff47}.page-shell{background:#f3f6fa;min-height:100vh}.content-wrap{max-width:1280px;margin:0 auto;padding:36px 32px 60px}.page-title-row{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:28px;display:flex}.page-title-row p{margin:0}.title-inline{align-items:center;gap:8px;display:flex}.title-inline h1{margin:0 0 8px}.breadcrumb{margin-bottom:18px}.breadcrumb a{color:#58667a;align-items:center;gap:6px;font-size:13px;font-weight:650;display:inline-flex}.button,.icon-button,.tool-button{border:1px solid var(--line-strong);cursor:pointer;background:#fff;border-radius:8px;transition:background .15s,border-color .15s,box-shadow .15s,transform 80ms}.button{justify-content:center;align-items:center;gap:7px;min-height:38px;padding:0 14px;font-size:13px;font-weight:700;display:inline-flex}.button:hover{background:#f8fafc;border-color:#aab6c5}.button:active,.icon-button:active,.tool-button:active{transform:translateY(1px)}.button:disabled{opacity:.55;cursor:default}.button-primary{color:#fff;background:#1d4ed8;border-color:#1d4ed8;box-shadow:0 2px 8px #1d4ed82e}.button-primary:hover{background:#1b46c0;border-color:#1b46c0}.button-small{border-radius:7px;min-height:32px;padding:0 10px;font-size:12px}.button-large{min-height:46px}.button-danger-soft{color:var(--danger);background:var(--danger-soft);border-color:#f5c8c2}.icon-button{place-items:center;width:34px;height:34px;padding:0;display:inline-grid}.icon-button:hover{background:#f1f5f9}.icon-button.danger{color:var(--danger)}.icon-button:disabled{opacity:.38;cursor:not-allowed;transform:none}.icon-button:disabled:hover{border-color:var(--line-strong);background:#fff}.app-header .icon-button:disabled:hover{background:#ffffff0f;border-color:#ffffff2e}.alert{color:#8f2318;background:#fff3f1;border:1px solid #f0b8b2;border-radius:9px;margin:12px 0;padding:11px 13px;font-size:13px}.alert.compact{padding:8px;font-size:11px}.info-box{color:#31517e;background:#eef5ff;border:1px solid #cbdcff;border-radius:9px;padding:11px 12px;font-size:12px;line-height:1.45}label{color:#45536a;gap:6px;font-size:12px;font-weight:700;display:grid}input,select,textarea{border:1px solid var(--line-strong);width:100%;color:var(--ink);background:#fff;border-radius:8px;outline:none;padding:8px 10px;font-weight:500}input,select{min-height:36px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:#6b91ef;box-shadow:0 0 0 3px #2563eb1c}input[type=checkbox]{accent-color:#1d4ed8;width:16px;height:16px;min-height:16px}input[type=range]{box-shadow:none;border:0;padding:0}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.span-2{grid-column:span 2}.field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.switch-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.project-card{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:13px;grid-template-rows:auto 1fr auto;gap:15px;min-height:220px;padding:20px;display:grid;position:relative;box-shadow:0 5px 16px #1928440a}.project-card:hover{box-shadow:var(--shadow);border-color:#b5c3d5;transform:translateY(-1px)}.project-card-icon{color:#1d4ed8;background:#eef4ff;border-radius:10px;place-items:center;width:43px;height:43px;display:grid}.project-card-main h2{margin:0 0 7px;font-size:18px}.project-card-main p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:1.5;display:-webkit-box;overflow:hidden}.project-card-meta{color:#7b8799;border-top:1px solid #eef1f5;justify-content:space-between;gap:12px;padding-top:13px;font-size:11px;display:flex}.project-card-actions{opacity:0;gap:5px;display:flex;position:absolute;top:16px;right:16px}.project-card:hover .project-card-actions{opacity:1}.empty-state{color:#69758a;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:180px;display:flex}.empty-state-action{cursor:pointer;width:100%}.empty-state.compact{min-height:100px}.building-list{gap:18px;display:grid}.building-card{border:1px solid var(--line);background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 4px 14px #19284409}.building-header{background:#fbfcfe;border-bottom:1px solid #e8edf3;justify-content:space-between;align-items:center;min-height:72px;padding:14px 18px;display:flex}.building-header>div{align-items:center;gap:12px;display:flex}.building-header>div>svg{color:#315c9c}.building-header h2{margin:0 0 3px;font-size:16px}.building-header span{color:var(--muted);font-size:11px}.building-empty{color:#8490a1;justify-content:center;align-items:center;gap:8px;padding:26px;font-size:12px;display:flex}.floor-row{cursor:pointer;border-top:1px solid #eef1f5;grid-template-columns:38px minmax(220px,1fr) 300px auto;align-items:center;gap:12px;min-height:64px;padding:8px 14px;display:grid}.floor-row:first-child{border-top:0}.floor-row:hover{background:#f8fbff}.floor-icon{color:#2d5fb4;background:#eef4ff;border-radius:8px;place-items:center;width:34px;height:34px;display:grid}.floor-name,.floor-meta{flex-direction:column;gap:3px;display:flex}.floor-name strong{font-size:13px}.floor-name span,.floor-meta span{color:var(--muted);font-size:11px}.floor-meta{grid-template-columns:90px 1fr;display:grid}.row-actions{align-items:center;gap:5px;display:flex}.copy-options{border:1px solid var(--line);background:#f8fafc;border-radius:9px;grid-template-columns:1fr 1fr;gap:8px 14px;padding:12px;display:grid}.copy-options h3{grid-column:span 2;margin:0 0 3px}.copy-options label{align-items:center;gap:7px;font-weight:600;display:flex}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:500;background:#0f172a75;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:13px;flex-direction:column;width:100%;max-height:calc(100vh - 48px);display:flex;overflow:hidden;box-shadow:0 30px 80px #0f172a4d}.modal-header,.modal-footer{align-items:center;min-height:58px;padding:12px 16px;display:flex}.modal-header{border-bottom:1px solid var(--line);justify-content:space-between}.modal-header h2{margin:0;font-size:17px}.modal-body{padding:18px;overflow:auto}.modal-footer{border-top:1px solid var(--line);background:#fbfcfd;justify-content:flex-end;gap:8px}.login-screen{background:#111827;grid-template-columns:1.1fr .9fr;min-height:100vh;display:grid}.login-panel{flex-direction:column;justify-content:center;padding:8vw;display:flex}.login-intro{color:#fff;background:radial-gradient(circle at 20% 25%,#2563eb59,#0000 35%),linear-gradient(145deg,#0f172a,#172554)}.hero-logo{background:#ffffff1a;border:1px solid #ffffff26;border-radius:15px;place-items:center;width:58px;height:58px;margin-bottom:22px;display:grid}.login-intro h1{margin-bottom:14px;font-size:44px}.login-intro>p{color:#cbd5e1;max-width:590px;font-size:17px;line-height:1.6}.feature-line{color:#dbeafe;align-items:center;gap:9px;margin-top:28px;font-size:12px;display:flex}.login-form-panel{background:#f7f9fc}.login-form{gap:18px;width:min(420px,100%);display:grid}.login-form h2{margin:4px 0 6px;font-size:28px}.login-form p{margin:0}.app-loading,.editor-loading{color:#4d5d73;background:#f6f8fb;justify-content:center;align-items:center;gap:12px;height:100vh;display:flex}.spinner{border:3px solid #d9e1ec;border-top-color:#2563eb;border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.editor-shell{background:#dfe5ed;flex-direction:column;height:100vh;min-height:720px;display:flex;overflow:hidden}.editor-breadcrumb{align-items:center;gap:8px;min-width:0;display:flex}.editor-breadcrumb>div{flex-direction:column;min-width:0;display:flex}.editor-breadcrumb strong,.editor-breadcrumb span{white-space:nowrap;text-overflow:ellipsis;max-width:480px;overflow:hidden}.editor-breadcrumb strong{color:#f5f7fb;font-size:12px}.editor-breadcrumb span{color:#aeb9c9;font-size:10px}.save-state{color:#cbd5e1;background:#ffffff0f;border-radius:7px;align-items:center;gap:6px;height:30px;padding:0 9px;font-size:11px;display:inline-flex}.save-state small{color:#8fa0b8;border-left:1px solid #ffffff1a;padding-left:7px}.save-saved svg{color:#4ade80}.save-dirty svg,.save-saving svg{color:#93c5fd}.save-error svg,.save-conflict svg{color:#fda4af}.editor-banner{z-index:40;align-items:center;gap:9px;min-height:39px;padding:6px 12px;font-size:12px;display:flex}.editor-banner.error{color:#9b281d;background:#fff0ee;border-bottom:1px solid #f2c5bf}.editor-banner.warning{color:#805000;background:#fff8e7;border-bottom:1px solid #f1d6a0}.editor-banner>span{flex:1}.editor-banner>button:not(.button){cursor:pointer;color:currentColor;background:0 0;border:0;margin-left:auto;font-size:20px}.editor-commandbar{z-index:35;background:#f9fbfd;border-bottom:1px solid #cfd8e4;align-items:center;gap:10px;min-height:50px;padding:7px 9px;display:flex}.cad-toolbar{flex:1;align-items:center;gap:7px;min-width:0;display:flex}.tool-group{gap:3px;display:flex}.tool-separator{background:#d8e0e9;align-self:stretch;width:1px;margin:2px}.tool-button{color:#48566c;place-items:center;width:35px;height:35px;display:grid;position:relative}.tool-button:hover{color:#1d3f77;background:#edf2f8}.tool-button.active{color:#1d4ed8;background:#e5efff;border-color:#9ab9f4;box-shadow:inset 0 0 0 1px #1d4ed80f}.tool-button small{font-size:8px;font-weight:800;position:absolute;bottom:1px;right:3px}.toolbar-spacer{flex:1}.editor-top-actions{align-items:center;gap:6px;display:flex}.header-dropdown{position:relative}.header-dropdown>summary{list-style:none}.header-dropdown>summary::-webkit-details-marker{display:none}.dropdown-panel{border:1px solid var(--line);min-width:190px;box-shadow:var(--shadow);z-index:100;background:#fff;border-radius:9px;padding:10px;position:absolute;top:calc(100% + 7px);right:0}.layer-panel{gap:8px;display:grid}.layer-panel label{align-items:center;gap:7px;font-weight:600;display:flex}.editor-main{flex:1;grid-template-columns:minmax(0,1fr) 290px;min-height:0;display:grid}.canvas-wrap{background:#cbd3dd;min-width:0;min-height:0;position:relative;overflow:hidden}.cad-canvas{touch-action:none;-webkit-user-select:none;user-select:none;background:#fff;width:100%;height:100%;display:block}.cad-canvas.tool-wall,.cad-canvas.tool-window,.cad-canvas.tool-door,.cad-canvas.tool-double-door,.cad-canvas.tool-opening,.cad-canvas.tool-room,.cad-canvas.tool-dimension,.cad-canvas.tool-text,.cad-canvas.tool-calibrate,.cad-canvas.tool-stair,.cad-canvas.tool-fixture-square,.cad-canvas.tool-fixture-circle{cursor:crosshair}.cad-canvas.tool-select,.cad-canvas.tool-pan{cursor:grab}.canvas-help{color:#f8fafc;pointer-events:none;background:#0f172ac7;border-radius:6px;padding:6px 9px;font-size:10px;position:absolute;bottom:10px;left:12px;box-shadow:0 3px 10px #0f172a26}.cad-inspector{z-index:20;background:#fff;border-left:1px solid #cfd8e4;flex-direction:column;width:290px;min-height:0;display:flex}.inspector-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:67px;padding:11px 13px;display:flex}.inspector-head h2{margin:2px 0 0;font-size:17px}.inspector-scroll{flex:1;min-height:0;overflow-y:auto}.inspector-section{border-bottom:1px solid #edf0f4;gap:11px;padding:14px;display:grid}.inspector-section:last-child{border-bottom:0}.inspector-section h3{color:#2d3e56;margin:0}.section-title{justify-content:space-between;align-items:center;display:flex}.inspector-section .field-row{gap:7px}.inspector-section input,.inspector-section select,.inspector-section textarea{min-height:33px;padding:6px 8px;font-size:12px}.inspector-section textarea{resize:vertical;border:1px solid var(--line);width:100%;font:inherit;border-radius:6px}.inspector-section label{gap:4px;font-size:10.5px}.metric-card{background:#f8fbff;border:1px solid #d9e3ee;border-radius:9px;gap:2px;padding:11px;display:grid}.metric-card span{color:#62728a;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:800}.metric-card strong{font-size:20px}.metric-card small{color:#708099;font-size:9.5px;line-height:1.4}.metric-card.compact-metric{padding:8px 10px}.metric-card.compact-metric strong{font-size:14px}.wall-inline-measure{color:#1d4ed8;box-sizing:border-box;background:#eff6fff7;border:2px solid #93c5fd;border-radius:28px;align-content:center;justify-items:center;gap:5px;width:100%;height:100%;padding:10px 12px;font-family:Arial,sans-serif;display:grid}.wall-inline-measure>span{text-transform:uppercase;letter-spacing:.06em;font-size:52px;font-weight:800;line-height:1}.wall-inline-measure>div{justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.wall-inline-measure input{color:#1d4ed8;text-align:right;background:#fff;border:0;border-radius:16px;outline:none;width:320px;min-width:0;height:76px;padding:0 14px;font:800 72px/1 Arial,sans-serif;box-shadow:inset 0 0 0 2px #2563eb2e}.wall-inline-measure input:focus{box-shadow:inset 0 0 0 3px #2563eb}.wall-inline-measure b{font-size:58px;line-height:1}.rotation-control{grid-template-columns:32px 1fr 32px;align-items:center;gap:6px;display:grid}.rotation-control .icon-button{border:1px solid var(--line);color:#334155;background:#f8fafc;font-size:17px;font-weight:700}.rotation-control .icon-button:hover{color:#1d4ed8;background:#edf3fa}.rotation-control select{width:100%}.opening-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.opening-metrics>div{text-align:center;background:#f8fafc;border:1px solid #dbe3ec;border-radius:7px;min-width:0;padding:7px 6px}.opening-metrics span{color:#718096;text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;font-size:8.5px;display:block}.opening-metrics strong{color:#26364d;white-space:nowrap;font-size:10.5px;display:block}.upload-button{width:fit-content}.revision-list{gap:7px;display:grid}.revision-row{border:1px solid var(--line);border-radius:8px;justify-content:space-between;align-items:center;gap:14px;padding:9px 10px;display:flex}.revision-row>div{flex-direction:column;gap:3px;display:flex}.revision-row strong{font-size:12px}.revision-row span{color:var(--muted);font-size:10px}@media (width<=1300px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.editor-main{grid-template-columns:minmax(0,1fr) 270px}.cad-inspector{width:270px}.fixture-tools{display:none}}.building-name-line{align-items:center;gap:6px;display:flex}.building-name-line h2{margin:0}.icon-button-small{width:26px;height:26px}.user-table{border:1px solid var(--line);background:#fff;border-radius:11px;overflow:hidden}.user-table-head,.user-table-row{grid-template-columns:1.2fr 1.4fr .8fr 110px;align-items:center;gap:14px;padding:11px 14px;display:grid}.user-table-head{color:#6b778a;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--line);background:#f8fafc;font-size:10px;font-weight:800}.user-table-row{border-top:1px solid #eef1f5;min-height:58px;font-size:12px}.user-table-row:first-of-type{border-top:0}.user-table-row>div:first-child{align-items:center;gap:8px;display:flex}.user-table-row small{color:#1d4ed8;background:#eaf1ff;border-radius:5px;padding:2px 5px;font-size:9px;font-weight:800}.role-badge{color:#46566d;background:#f1f5f9;border-radius:6px;align-items:center;gap:5px;width:max-content;padding:4px 7px;font-size:11px;font-weight:700;display:inline-flex}.fatal-error-screen{background:#f3f6fa;place-items:center;min-height:100vh;padding:32px;display:grid}.fatal-error-card{border:1px solid var(--line);width:min(680px,100%);box-shadow:var(--shadow);background:#fff;border-radius:13px;padding:26px}.fatal-error-card h1{margin-top:4px}.fatal-error-card pre{color:#8f2318;white-space:pre-wrap;word-break:break-word;background:#fff3f1;border:1px solid #f0b8b2;border-radius:8px;margin:18px 0;padding:12px;overflow:auto}.fatal-error-actions{gap:8px;margin-bottom:14px;display:flex}.text-style-controls{grid-template-columns:1fr;gap:6px;display:grid}.text-style-controls label{align-items:center;gap:7px;font-size:11px;font-weight:500;display:flex}.text-style-controls input[type=checkbox]{width:15px;height:15px;min-height:0;padding:0}.inspector-section .color-input{cursor:pointer;width:100%;height:34px;padding:3px}.button-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.button-row.compact .button{min-height:28px;padding:4px 8px}.apartment-list{gap:10px;margin-top:14px;display:grid}.apartment-card{border:1px solid var(--line);background:#fbfcfe;border-radius:10px;overflow:hidden}.apartment-row{grid-template-columns:minmax(180px,1fr) minmax(220px,1.2fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.apartment-row input{width:100%}.apartment-row>span{color:var(--muted);font-size:11px}.apartment-room-list{border-top:1px solid var(--line);background:#fff}.apartment-room-list>div{border-top:1px solid #eef1f5;grid-template-columns:minmax(160px,1fr) 100px 110px;gap:10px;padding:7px 10px;font-size:11px;display:grid}.apartment-room-list>div:first-child{border-top:0}.apartment-room-list span{text-align:right;color:var(--muted)}.danger-button{color:#b42318;background:#fff;border-color:#f1c7c2}.danger-button:hover{background:#fff2f0}
