:root{--unit-blue:#2348ff;--unit-blue-600:#1a38d6;--unit-blue-50:#eef1ff;--unit-blue-100:#dde3ff;--terracotta:#e8603c;--ink:#161513;--paper:#f7f5f0;--n-50:#efece5;--n-100:#e4e0d7;--n-200:#cfcac0;--n-400:#8c867b;--n-600:#4f4b43;--success:#1b7a4b;--success-bg:#e2f1e8;--warning:#8a5a00;--warning-bg:#f8edd5;--error:#c8352c;--error-bg:#f7e1de;--room-living:#f6e6cf;--room-bed:#dce5fb;--room-bath:#cfeae6;--room-circ:#ece9e3;--room-terrace:#eadfc9;--radius:6px;--font-brand:"Urbanist", system-ui, sans-serif;--font-ui:"Inter", system-ui, sans-serif;--focus:0 0 0 3px var(--unit-blue-100)}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font:400 13px/1.45 var(--font-ui);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{box-shadow:var(--focus);outline:none}a{color:var(--unit-blue)}.shell{grid-template-rows:56px minmax(0,1fr);height:100%;display:grid}.topbar{border-bottom:1px solid var(--n-100);background:#fff;align-items:center;gap:20px;min-width:0;padding:0 20px;display:flex}.topbar .divider{background:var(--n-100);flex:none;width:1px;height:24px}.crumbs{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13.5px;overflow:hidden}.crumbs .sep{color:var(--n-400);padding:0 6px}.crumbs button{color:var(--n-600);background:0 0;border:none;padding:0}.crumbs button:hover{color:var(--ink)}.save-state{color:var(--n-600);white-space:nowrap;flex:none;align-items:center;gap:7px;font-size:12.5px;display:flex}.save-state .sq{background:var(--success);width:7px;height:7px}.avatar{background:var(--ink);width:30px;height:30px;color:var(--paper);font:600 11px var(--font-ui);flex:none;justify-content:center;align-items:center;display:flex}.workspace{grid-template-columns:208px minmax(0,1fr) clamp(340px,30vw,440px);min-height:0;display:grid}.stepnav{background:var(--paper);border-right:1px solid var(--n-100);flex-direction:column;gap:4px;min-height:0;padding:20px 12px;display:flex}.eyebrow{font:500 10.5px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--n-400)}.stepnav .eyebrow{padding:0 10px 10px}.step{border-radius:var(--radius);text-align:left;background:0 0;border:1px solid #0000;align-items:flex-start;gap:12px;width:100%;padding:10px;display:flex}.step:not(:disabled):hover{background:#fff}.step.current{border-color:var(--n-100);background:#fff}.step .num{width:24px;height:24px;font:600 12px var(--font-ui);border:1px solid var(--n-200);color:var(--n-400);flex:none;justify-content:center;align-items:center;display:flex}.step.current .num{background:var(--unit-blue);border-color:var(--unit-blue);color:#fff}.step.done .num{background:var(--success);border-color:var(--success);color:#fff}.step .txt{flex-direction:column;gap:2px;min-width:0;display:flex}.step .title{font:500 13.5px var(--font-ui)}.step.current .title{color:var(--unit-blue);font-weight:600}.step:disabled .title{color:var(--n-400)}.step .sub{color:var(--n-400);font-size:11.5px}.soon{font:600 9.5px var(--font-ui);letter-spacing:.06em;color:var(--n-400);border:1px solid var(--n-200);align-self:flex-start;margin-top:3px;padding:1px 4px}.stepnav .foot{border-top:1px solid var(--n-100);color:var(--n-600);flex-direction:column;gap:4px;margin-top:auto;padding:12px 10px 0;font-size:11.5px;display:flex}.canvas-area{background-color:var(--paper);background-image:linear-gradient(#ece9e2 1px,#0000 1px),linear-gradient(90deg,#ece9e2 1px,#0000 1px);background-size:48px 48px;min-width:0;min-height:0;position:relative;overflow:hidden}.panel{background:var(--paper);border-left:1px solid var(--n-100);flex-direction:column;min-width:0;min-height:0;display:flex}.panel-head{border-bottom:1px solid var(--n-100);flex-direction:column;gap:4px;padding:18px 20px 14px;display:flex}.panel-title{font:700 17px var(--font-brand);letter-spacing:-.01em}.panel-sub{color:var(--n-600);font-size:12px}.panel-body{flex:1;min-height:0;overflow:auto}.panel-foot{border-top:1px solid var(--n-100);background:var(--paper);align-items:center;gap:10px;padding:14px 20px;display:flex}.section{border-bottom:1px solid var(--n-100);flex-direction:column;gap:10px;padding:14px 20px;display:flex}.section-title{align-items:baseline;gap:8px;font-size:12.5px;font-weight:600;display:flex}.section-title .hint{color:var(--n-400);font-size:11.5px;font-weight:400}.muted{color:var(--n-600)}.faint{color:var(--n-400)}.spacer{flex:1}.btn{border-radius:var(--radius);border:1px solid var(--n-200);font:500 13px var(--font-ui);white-space:nowrap;background:#fff;align-items:center;gap:8px;padding:9px 14px;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--ink)}.btn.primary{background:var(--unit-blue);border-color:var(--unit-blue);color:#fff}.btn.primary:hover:not(:disabled){background:var(--unit-blue-600);border-color:var(--unit-blue-600)}.btn.primary .unit{background:var(--terracotta);width:8px;height:8px}.btn.ghost{color:var(--unit-blue);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--unit-blue-50);border-color:#0000}.btn.small{border-radius:5px;padding:5px 9px;font-size:12px}.btn:disabled{background:var(--n-100);border-color:var(--n-100);color:var(--n-400)}.field{font:500 12.5px var(--font-ui);flex-direction:column;gap:6px;min-width:0;display:flex}.input,.select{border:1px solid var(--n-200);border-radius:var(--radius);width:100%;min-width:0;font:400 13px var(--font-ui);background:#fff;padding:8px 10px}.input:focus,.select:focus{border-color:var(--unit-blue);box-shadow:var(--focus);outline:none}.input.num{font-variant-numeric:tabular-nums;text-align:right}.unit-input{border:1px solid var(--n-200);border-radius:var(--radius);background:#fff;align-items:center;min-width:0;display:flex}.unit-input:focus-within{border-color:var(--unit-blue);box-shadow:var(--focus)}.unit-input input{text-align:right;background:0 0;border:none;outline:none;flex:1;width:100%;min-width:0;padding:7px 8px}.unit-input span{color:var(--n-400);padding:0 8px 0 0;font-size:12px}.toggle{background:0 0;border:none;align-items:center;gap:8px;padding:0;font-size:13px;display:inline-flex}.toggle .track{background:var(--n-200);border-radius:10px;flex:none;width:34px;height:20px;transition:background .15s;position:relative}.toggle .knob{background:#fff;border-radius:7px;width:14px;height:14px;transition:left .15s;position:absolute;top:3px;left:3px}.toggle[aria-checked=true] .track{background:var(--unit-blue)}.toggle[aria-checked=true] .knob{left:17px}.chip{font:500 11.5px var(--font-ui);border:1px solid var(--n-200);background:#fff;border-radius:4px;padding:3px 7px}.chip.on{border-color:var(--unit-blue);background:var(--unit-blue-50);color:var(--unit-blue)}.badge{font:600 10.5px var(--font-ui);letter-spacing:.06em;text-align:center;padding:3px 6px}.badge.pass{background:var(--success-bg);color:var(--success)}.badge.warn{background:var(--warning-bg);color:var(--warning)}.badge.fail{background:var(--error-bg);color:var(--error)}.badge.auto{color:var(--unit-blue);border:1px solid var(--unit-blue);padding:1px 4px;font-size:9.5px}.badge.lock{color:var(--unit-blue);border:1px solid #b8c4ff;padding:1px 4px;font-size:9px}.progress{background:var(--n-50);height:4px;overflow:hidden}.progress>div{background:var(--unit-blue);height:100%;transition:width .2s}.notice{border-left:3px solid;padding:10px 12px;font-size:12.5px;line-height:1.5}.notice.warn{background:var(--warning-bg);color:var(--warning);border-color:#c98a00}.notice.error{background:var(--error-bg);border-color:var(--error);color:var(--error)}.notice.info{background:var(--unit-blue-50);border-color:var(--unit-blue);color:#1a2e8f}.layer-row{border-bottom:1px solid var(--n-50);grid-template-columns:12px minmax(0,1fr) 60px 18px minmax(124px,150px);align-items:center;gap:10px;padding:6px 20px;display:grid}.layer-row.head{font:500 10.5px var(--font-ui);letter-spacing:.06em;text-transform:uppercase;color:var(--n-400);padding-top:8px;padding-bottom:8px}.layer-row.hover{background:var(--unit-blue-50);outline:1px solid var(--unit-blue);outline-offset:-1px}.layer-row .swatch{width:12px;height:12px}.layer-row .name{align-items:center;gap:6px;min-width:0;display:flex}.layer-row .name span:first-child{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.layer-row .count{text-align:right;color:var(--n-600)}.layer-row .eye{background:0 0;border:none;justify-content:center;align-items:center;width:18px;height:18px;padding:0;display:flex}.layer-row .eye i{border:1.5px solid var(--ink);border-radius:50%;width:16px;height:10px;display:block;position:relative}.layer-row .eye i:after{content:"";background:var(--ink);border-radius:2px;width:4px;height:4px;margin:-2px;position:absolute;top:50%;left:50%}.layer-row .eye.off i{border-color:var(--n-200)}.layer-row .eye.off i:after{background:0 0}.layer-row .select{padding:5px 8px;font-size:12.5px}.layer-row.ignored .name,.layer-row.ignored .count{color:var(--n-400)}.check{border-bottom:1px solid var(--n-50);grid-template-columns:52px minmax(0,1fr);align-items:center;gap:12px;padding:8px 20px;font-size:13px;display:grid}.stats{background:var(--n-100);border-bottom:1px solid var(--n-100);grid-template-columns:1fr 1fr;gap:1px;display:grid}.stats>div{background:var(--paper);flex-direction:column;gap:3px;padding:10px 20px;display:flex}.stats .v{font:500 13px var(--font-ui)}.canvas-chip{z-index:3;border:1px solid var(--n-100);background:#fff;border-radius:5px;align-items:center;gap:8px;max-width:calc(100% - 32px);padding:6px 10px;font-size:12px;display:flex;position:absolute;top:14px;left:16px}.canvas-tools{z-index:3;flex-direction:column;gap:4px;display:flex;position:absolute;top:14px;right:14px}.canvas-tools button{border:1px solid var(--n-200);width:32px;height:32px;font:500 15px var(--font-ui);background:#fff;border-radius:5px;justify-content:center;align-items:center;display:flex}.canvas-tools button:hover{border-color:var(--ink)}.legend{z-index:3;color:var(--n-600);background:#f7f5f0e6;flex-wrap:wrap;gap:6px 14px;max-width:calc(100% - 200px);padding:6px 8px;font-size:11.5px;display:flex;position:absolute;bottom:14px;left:16px}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{width:14px;height:10px;display:inline-block}.center-fill{justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.dropzone{border:1px dashed var(--n-400);text-align:center;background:#fbfaf7;border-radius:8px;flex-direction:column;align-items:center;gap:12px;width:min(600px,100%);padding:52px 40px;display:flex}.dropzone.over{border-color:var(--unit-blue);background:var(--unit-blue-50)}.dropzone .types{gap:8px;display:flex}.dropzone .types span{font:500 11px var(--font-ui);border:1px solid var(--ink);border-radius:3px;padding:4px 8px}.dropzone .types span.off{border-color:var(--n-200);color:var(--n-400);text-decoration:line-through}.dropzone h2{font:500 19px var(--font-ui);margin:0}.card{border:1px solid var(--n-100);background:#fff;border-radius:8px}.projects{flex-direction:column;gap:14px;width:min(640px,100%);display:flex}.project-row{border:1px solid var(--n-100);text-align:left;background:#fff;border-radius:0;align-items:center;gap:14px;width:100%;padding:14px;display:flex}.project-row:hover{border-color:var(--unit-blue)}.project-row .tile{background:var(--unit-blue);flex:none;width:44px;height:44px;position:relative}.project-row .tile:after{content:"";background:var(--terracotta);width:10px;height:10px;position:absolute;top:6px;right:6px}.room{border-bottom:1px solid var(--n-50)}.room-head{text-align:left;background:0 0;border:none;grid-template-columns:10px minmax(0,1fr) auto 20px;align-items:center;gap:10px;width:100%;padding:8px 20px;display:grid}.room-head:hover{background:#fff}.room-head .fill{width:10px;height:10px}.room-body{grid-template-columns:1fr 1fr;gap:10px;padding:4px 20px 14px 40px;display:grid}.room-body .wide{grid-column:1/-1}.chips{flex-wrap:wrap;gap:5px;display:flex}.rule{border-bottom:1px solid var(--n-50);grid-template-columns:34px minmax(0,1fr) 92px;align-items:center;gap:10px;padding:8px 20px;display:grid}.rule .meta{color:var(--n-400);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.rule .meta label{align-items:center;gap:5px;display:inline-flex}.prio{border:1px solid var(--n-100);cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;align-items:center;gap:10px;padding:8px 12px;display:flex}.prio.dragging{opacity:.4}.prio.over{border-color:var(--unit-blue)}.prio .n{background:var(--ink);color:#fff;width:20px;height:20px;font:600 11px var(--font-ui);flex:none;justify-content:center;align-items:center;display:flex}.prio .grip{color:var(--n-400);letter-spacing:-2px}.prio .moves{gap:2px;margin-left:auto;display:flex}.prio .moves button{border:1px solid var(--n-200);background:#fff;border-radius:4px;width:22px;height:22px;padding:0;font-size:11px;line-height:1}input[type=range]{width:100%;accent-color:var(--unit-blue);margin:0}.toast{z-index:50;background:var(--ink);color:var(--paper);border-radius:6px;align-items:center;gap:12px;max-width:min(460px,100vw - 40px);padding:12px 14px;font-size:13.5px;display:flex;position:fixed;bottom:84px;right:20px}.toast i{background:#3fbf7f;flex:none;width:10px;height:10px}.toast.error i{background:var(--terracotta)}.unit-drop{animation:1.2s cubic-bezier(.5,0,.3,1) infinite drop}@keyframes drop{0%{opacity:0;transform:translateY(-40px)}45%,to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.unit-drop{animation:none}*{transition:none!important}}@media (max-width:899px){.shell{grid-template-rows:auto auto;height:auto;min-height:100%}.topbar{gap:10px;height:52px;padding:0 12px}.topbar .divider,.crumbs{display:none}.workspace{grid-template-columns:1fr}.stepnav{border-right:none;border-bottom:1px solid var(--n-100);z-index:20;flex-direction:row;gap:6px;padding:8px;position:sticky;top:0}.stepnav .eyebrow,.stepnav .foot,.step .sub,.soon{display:none}.step{flex:1 1 0;align-items:center;gap:8px;min-width:0;padding:8px 6px}.canvas-area{height:min(70vh,520px)}.panel{border-left:none;border-top:1px solid var(--n-100)}.panel-body{overflow:visible}.panel-foot{z-index:20;position:sticky;bottom:0;box-shadow:0 -6px 16px #28241c14}.btn,.select,.input{min-height:40px}.layer-row{grid-template-columns:12px minmax(0,1fr) 36px 18px minmax(112px,130px);padding:6px 12px}.legend{max-width:calc(100% - 32px);bottom:8px;left:8px}}
