:root{--ink:#17251e;--ink-soft:#304036;--gold:#edc443;--gold-deep:#8b6904;--paper:#f1f3ee;--surface:#fff;--line:#d8dfd6;--muted:#5a685e;--error:#9a2921;font-family:"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button,a{touch-action:manipulation}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,svg:focus-visible,canvas:focus-visible{outline:3px solid var(--gold-deep);outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h2{font-size:15px;line-height:1.4;margin-bottom:14px}h3{font-size:16px}button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:5px}button:hover:not(:disabled){border-color:#91a18f;background:var(--surface-soft)}input,select,textarea{display:block;width:100%;min-width:0;min-height:42px;padding:9px 10px;border:1px solid var(--input-line);border-radius:4px;background:var(--surface);color:var(--ink)}textarea{resize:vertical}input[type=checkbox]{display:inline-block;width:18px;min-height:18px;margin:0;accent-color:var(--ink)}label{display:block;font-size:12px;font-weight:600;margin-bottom:12px}label input,label select,label textarea{margin-top:5px}main{max-width:1700px;margin:auto;padding:0 24px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:10px 16px;border:1px solid var(--input-line);background:var(--surface);border-radius:5px;text-decoration:none;font-weight:650;font-size:13px}.button.primary{background:var(--gold);border-color:var(--gold);color:var(--ink)}.button.primary:hover{background:#f5d467}.button.dark{background:var(--ink);color:#fff;border-color:var(--ink)}.button.dark:hover{background:#304638}.full{width:100%}.app-header{display:flex;align-items:center;gap:24px;min-height:76px;padding:12px 24px;background:var(--ink);color:#fff}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0}.brand span{font-size:21px;font-weight:800;letter-spacing:.02em}.brand strong{display:block;font-size:9px;letter-spacing:.2em;color:var(--gold);line-height:1.2}.back-link{font-size:12px;text-decoration:none;color:#d7dfd5}.back-link:hover{text-decoration:underline}.save-state{margin-left:auto;font-size:12px;color:#d7dfd5}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 0 22px}.eyebrow,.panel-kicker{font-size:10px;font-weight:750;letter-spacing:.13em;color:var(--gold-deep);margin-bottom:8px}.intro h1{font-size:clamp(26px,3vw,38px);line-height:1.2;letter-spacing:-.045em;margin-bottom:8px}.intro p:not(.eyebrow){color:var(--muted);max-width:650px}.file-actions{display:flex;gap:8px;flex-shrink:0}.steps{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}.steps button{display:grid;grid-template-columns:30px 1fr;text-align:left;align-content:center;gap:0 12px;padding:14px 18px;border:0;border-right:1px solid var(--line);border-radius:0;background:transparent;min-height:74px}.steps button:last-child{border-right:0}.steps button>span{grid-row:span 2;align-self:center;display:grid;place-items:center;width:28px;height:28px;background:var(--surface-soft);border:1px solid var(--line);border-radius:50%;font-weight:700}.steps strong{font-size:13px}.steps small{color:var(--muted);font-size:11px}.notice{padding:11px 16px;margin:16px 0;background:#f8f2d9;color:#68531b;border:1px solid #e9ddb0;border-radius:4px;font-size:12px}.workspace{display:grid;grid-template-columns:236px minmax(280px,1fr) 250px;gap:14px;align-items:start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;min-width:0;overflow:hidden}.panel-section{padding:18px;border-bottom:1px solid var(--line)}.panel-section:last-child{border-bottom:0}.panel-kicker{color:var(--muted);font-size:9px;margin-bottom:6px}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.helper{font-size:11px;color:var(--muted);line-height:1.6;margin-top:10px}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.tool-grid button{display:flex;align-items:center;gap:9px;padding:9px 8px;text-align:left;font-size:11px;min-height:44px}.tool-grid button>span:not(.symbol){font-size:19px;width:22px;text-align:center}.tool-grid button[aria-pressed=true]{background:var(--selection);border-color:#bd9215}.symbol{display:inline-grid;place-items:center;width:20px;height:20px;flex-shrink:0;border:1.5px solid currentColor;border-radius:50%;font-family:Arial,sans-serif;font-size:13px;font-style:normal;line-height:1;font-weight:500;color:#365642}.symbol.square{border-radius:1px}.symbol.socket{color:#235c91}.room-list,.fixture-list{list-style:none;margin:0;padding:0;display:grid;gap:5px}.room-list button,.fixture-list button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;border:1px solid transparent;background:var(--surface-soft);padding:10px;font-size:12px;min-height:42px;overflow-wrap:anywhere}.room-list button[aria-pressed=true],.fixture-list button[aria-pressed=true]{border-color:#a98412;background:var(--selection)}.room-list small{white-space:nowrap;color:var(--muted);font-size:10px}.room-section h2{display:flex;justify-content:space-between}#room-count{color:var(--muted);font-weight:400}.stage-toolbar{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid var(--line);gap:8px}.view-tabs{display:flex;gap:3px;padding:3px;background:var(--surface-soft);border-radius:5px}.view-tabs button{min-height:36px;padding:6px 15px;background:transparent;border:0;font-size:12px;font-weight:650}.view-tabs button[aria-pressed=true]{background:var(--ink);color:#fff}.history-tools{display:flex;gap:5px}.history-tools button{width:36px;min-height:36px;font-size:22px}.stage{position:relative;height:590px;min-width:0;overflow:hidden;background:#eef1ec}.stage svg,.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.stage svg[data-tool=select]{cursor:default}.stage svg[data-tool=pan],.stage canvas{cursor:grab}.stage svg:not([data-tool=select]):not([data-tool=pan]){cursor:crosshair}.stage svg [data-room],.stage svg [data-fixture]{cursor:move}.view-controls{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);display:flex;box-shadow:0 2px 9px #17251e15;border-radius:5px;background:var(--surface)}.view-controls button{border-radius:0;min-width:42px;min-height:42px;font-size:18px}.view-controls button:first-child{border-radius:5px 0 0 5px}.view-controls button:nth-child(2){font-size:11px;border-inline:0}.view-controls button:last-child{border-radius:0 5px 5px 0}.wall-toggle{position:absolute;top:14px;right:14px;display:flex;align-items:center;gap:8px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:4px;margin:0;font-size:11px}.wall-toggle input{margin:0}.stage-footer{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:12px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);min-height:56px}.stage-footer>span{white-space:nowrap;font-weight:700;color:var(--ink)}.point-legend{display:flex;flex-wrap:wrap;gap:12px;padding:0 12px 12px;font-size:10px;color:var(--muted)}.point-legend>span{display:flex;align-items:center;gap:4px}.point-legend .symbol{width:15px;height:15px;font-size:10px}.empty-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none;text-align:center;padding:35px;gap:12px}.empty-state>span{font-size:48px;color:#8e9d8b}.empty-state strong{font-size:20px}.empty-state p{max-width:250px;color:var(--muted)}.project-details summary{font-weight:700;cursor:pointer;min-height:32px}.project-details form{margin-top:14px}.danger-button{display:block;width:100%;margin-top:12px;padding:10px;min-height:42px;font-size:11px;color:var(--error);border-color:#d7b5ae}.selection-subtitle{font-size:11px;color:var(--muted);margin:-6px 0 16px}.status-message{min-height:44px;padding:12px 0;font-size:13px;font-weight:650;color:var(--ink)}.status-message.error{color:var(--error)}.planner-footer{display:flex;gap:24px;justify-content:space-between;flex-wrap:wrap;padding:0 0 24px;font-size:11px;color:var(--muted)}dialog{width:min(94vw,590px);max-height:90dvh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:28px;color:var(--ink);background:var(--surface);box-shadow:0 20px 80px #0004}dialog::backdrop{background:#14211cb3}dialog h2{font-size:26px;line-height:1.15;letter-spacing:-.03em;margin:8px 0 14px}dialog>p{font-size:13px;color:var(--muted)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.dialog-head .eyebrow{margin:0}.icon-button{width:38px;height:38px;font-size:24px}.delivery-step{display:grid;grid-template-columns:30px 1fr;gap:14px;padding:18px 0;border-bottom:1px solid var(--line)}.delivery-step>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#f6e9af;font-weight:700}.delivery-step p{font-size:12px;color:var(--muted);margin:6px 0 12px}.dialog-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px}#share-files{margin-top:18px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip:focus{position:fixed;top:10px;left:10px;z-index:100;background:var(--gold);padding:10px}
@media(min-width:1550px){.workspace{grid-template-columns:250px minmax(350px,1fr) 280px}.stage{height:660px}}
@media(max-width:1150px){.workspace{grid-template-columns:210px minmax(280px,1fr)}.inspector{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr 1fr}.inspector .panel-section{border-bottom:0;border-right:1px solid var(--line)}.inspector .panel-section:last-child{border:0}.intro{align-items:flex-start}.file-actions{flex-direction:column}.steps button{padding:12px 10px;gap:0 8px}.steps small{display:none}}
@media(max-width:680px){main{padding:0 12px}.app-header{padding:10px 12px;gap:12px;flex-wrap:wrap}.brand img{width:32px;height:32px}.brand span{font-size:18px}.app-header>.button{margin-left:auto}.back-link{display:none}.save-state{order:3;width:100%;margin:0;font-size:10px}.intro{display:block;padding:22px 0 16px}.intro h1{font-size:30px}.intro p:not(.eyebrow){font-size:12px}.file-actions{flex-direction:row;margin-top:16px;flex-wrap:wrap}.file-actions .button{font-size:11px;padding:8px 12px}.steps{grid-template-columns:1fr 1fr}.steps button{min-height:60px}.steps button:nth-child(2){border-right:0}.steps button:nth-child(-n+2){border-bottom:1px solid var(--line)}.steps strong{font-size:11px}.notice{font-size:11px}.workspace{display:flex;flex-direction:column;gap:12px}.workspace>.panel{width:100%}.drawing-panel{order:0}.tool-panel{order:1;display:grid;grid-template-columns:1fr 1fr}.tool-panel>.panel-section{padding:14px}.tool-panel>.panel-section:first-child{border-right:1px solid var(--line)}.room-section{grid-column:1/-1}.room-list{grid-template-columns:1fr 1fr}.inspector{order:2;display:block}.inspector .panel-section{border-right:0;border-bottom:1px solid var(--line)}.stage{height:450px}.stage-footer{align-items:flex-start;font-size:10px}.stage-toolbar{padding:10px}.view-tabs button{padding:6px 12px}.tool-grid{gap:5px}.tool-grid button{font-size:10px;padding:8px 4px;gap:5px}.tool-grid button>span:not(.symbol){width:18px}.panel-kicker{font-size:8px}h2{font-size:13px}.field-pair{gap:6px}label{font-size:11px}.panel-section input,.panel-section select,.panel-section textarea{font-size:16px;padding:7px}.tool-panel .full{font-size:11px;padding:8px}.helper{font-size:10px}.planner-footer{gap:8px}.point-legend{gap:9px;font-size:9px}dialog{padding:20px}dialog h2{font-size:24px}}
@media(max-width:370px){.tool-panel{display:block}.tool-panel>.panel-section:first-child{border-right:0}.tool-grid{grid-template-columns:repeat(4,1fr)}.tool-grid button{flex-direction:column;gap:5px;font-size:9px}.stage{height:390px}.app-header .button{font-size:11px;padding:8px 10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.status-message:not(:empty){position:fixed;z-index:20;bottom:12px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);padding:12px 18px;background:var(--surface);border:1px solid #aaba9f;border-radius:6px;box-shadow:0 4px 20px #17251e20;pointer-events:none}

:root{font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}.field-pair label{display:flex;flex-direction:column;justify-content:space-between}.field-pair input{margin-top:auto}

.stage-footer{flex-wrap:wrap}#edit-selected{font-size:10px;min-height:36px;padding:6px 9px}

.artifact-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 24px}.artifact-icon svg{display:block;width:100%;height:100%}.point-legend .artifact-icon{width:18px;height:18px;flex-basis:18px}

.artifact-picker{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.artifact-picker select{font-size:12px}.artifact-model-preview{display:flex;align-items:center;gap:8px;padding:9px;background:var(--surface-soft);border-radius:4px;font-size:10px;color:var(--muted);margin-bottom:10px;overflow-wrap:anywhere}.artifact-model-preview .artifact-icon{flex-basis:32px;width:32px;height:32px}.inline-check{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:11px}.inline-check input{margin:0;flex:0 0 18px}.artifact-inventory{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}.artifact-inventory summary{font-size:12px;font-weight:650;cursor:pointer}.artifact-inventory ul{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}.artifact-inventory li{font-size:11px}.artifact-inventory small{display:block;color:var(--muted);font-size:10px}.catalog-dialog{width:min(96vw,1000px)}.catalog-dialog h2{margin-bottom:8px}.catalog-actions{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.catalog-layout{display:grid;grid-template-columns:minmax(220px,.85fr) minmax(300px,1.15fr);gap:22px}.catalog-list-panel{min-width:0}.catalog-list{list-style:none;padding:0;margin:0;display:grid;gap:7px;max-height:660px;overflow:auto}.catalog-list button{display:flex;align-items:center;gap:10px;width:100%;padding:12px;text-align:left;min-height:65px}.catalog-list button[aria-pressed=true]{background:var(--selection);border-color:#bd9215}.catalog-list .artifact-icon{width:34px;height:34px;flex-basis:34px}.catalog-list strong{display:block;font-size:12px;overflow-wrap:anywhere}.catalog-list small{display:block;font-size:10px;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}.catalog-editor{padding:18px;background:var(--surface-soft);border:1px solid var(--line);border-radius:6px;min-width:0}.catalog-editor h3{margin-bottom:16px}.catalog-preview{display:flex;align-items:center;gap:14px;min-height:76px;margin:14px 0;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:5px;font-size:11px;color:var(--muted);overflow-wrap:anywhere}.catalog-preview .artifact-icon{width:50px;height:50px;flex-basis:50px}.catalog-edit-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.catalog-edit-actions .button{min-height:38px;padding:8px 10px;font-size:11px}.catalog-edit-actions .danger-button{width:auto;margin:0;background:var(--surface)}.catalog-feedback{min-height:25px;font-size:12px;margin-top:16px;font-weight:650}.catalog-feedback.error{color:var(--error)}.selection-model-details{padding:9px;margin-bottom:12px;background:var(--surface-soft);border-left:2px solid var(--gold-deep);font-size:10px;color:var(--muted)}
@media(max-width:680px){.catalog-layout{display:block}.catalog-list{max-height:250px;margin-bottom:18px}.catalog-editor{padding:14px}.catalog-dialog input,.catalog-dialog select,.catalog-dialog textarea{font-size:16px}.artifact-picker{grid-column:1/-1}.catalog-actions .button{font-size:11px;padding:8px 10px}.artifact-picker .inline-check{font-size:11px}}

@media(max-width:680px){.tool-panel{display:block}.tool-panel>.panel-section:first-child{border-right:0}.tool-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.tool-grid button{flex-direction:column;gap:5px;font-size:10px}.artifact-picker select{font-size:16px}.catalog-dialog .field-pair{gap:12px}}

.catalog-dialog .dialog-head{position:sticky;top:-28px;z-index:3;background:var(--surface);padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:12px}.catalog-dialog .dialog-head h2{margin-bottom:0}@media(max-width:680px){.catalog-dialog .dialog-head{top:-20px}.catalog-dialog .dialog-head h2{font-size:20px}}

.stage svg [data-boundary]{cursor:move}#boundary-list{margin-top:14px}#boundary-list small{white-space:normal;text-align:right}

/* Application shell: neutral drafting surfaces and CH electrical amber. */
:root{color-scheme:light;--ink:#23313b;--ink-soft:#425361;--gold:#edc443;--gold-deep:#806000;--paper:#eef1f4;--surface:#fff;--surface-soft:#f4f6f8;--line:#dfe5ea;--input-line:#c9d3dc;--muted:#617180;--selection:#fff6d8;--stage:#f4f6f8;--error:#ac342c;font-family:"Segoe UI",Arial,sans-serif}
:root[data-theme=dark]{color-scheme:dark;--ink:#e5edf4;--ink-soft:#c0cdd8;--gold:#edc443;--gold-deep:#f1ce65;--paper:#10171d;--surface:#19232c;--surface-soft:#202e39;--line:#30414f;--input-line:#4b6070;--muted:#a5b6c4;--selection:#3e3722;--stage:#131e27;--error:#ffaaa0}
body{font-size:13px}main{max-width:1920px;padding:0 24px}.app-header{min-height:72px;padding:12px 24px;background:var(--surface);color:var(--ink);border-bottom:1px solid var(--line);gap:20px}.brand span{font-size:20px}.brand strong{color:var(--gold-deep)}.brand img{width:36px;height:36px}.header-divider{height:30px;width:1px;background:var(--line)}.app-name{font-size:13px;font-weight:650}.app-name small{display:block;color:var(--muted);font-size:11px;font-weight:400}.back-link{margin-left:auto;color:var(--muted);white-space:nowrap}.save-state{margin-left:0;color:var(--muted);font-size:11px}.save-state::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#329b74;margin-right:7px}.theme-switch{display:flex;padding:3px;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;gap:2px}.theme-switch button{display:flex;align-items:center;gap:6px;min-height:32px;padding:4px 9px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:17px}.theme-switch span{font-size:11px}.theme-switch button[aria-pressed=true]{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:0 1px 3px #0000000a}.button{min-height:38px;border-color:var(--input-line);border-radius:6px;font-size:12px;padding:8px 14px;gap:8px}.button.primary,.button.dark{color:#243025;background:var(--gold);border-color:var(--gold);font-weight:700}.button.primary:hover,.button.dark:hover{background:#f5d467;color:#243025;border-color:#f5d467}.intro{padding:22px 0 18px;gap:16px}.intro h1{font-size:24px;letter-spacing:-.035em;margin-bottom:4px}.intro p:not(.eyebrow){font-size:12px}.file-actions{flex-direction:row}.steps{background:var(--surface);border-radius:8px}.steps button{min-height:65px;padding:12px 18px;position:relative}.steps strong{font-size:12px;font-weight:650}.steps small{font-size:10px}.steps button>span{width:28px;height:28px;border-radius:8px;background:var(--surface-soft);color:var(--muted);font-size:12px}.steps button[aria-current=step]{background:var(--selection)}.steps button[aria-current=step]::after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--gold)}.steps button[aria-current=step]>span{background:var(--gold);color:#243025;border-color:var(--gold)}.notice{background:var(--surface);border-color:var(--line);border-left:3px solid var(--gold);color:var(--muted);padding:9px 14px;margin:14px 0;font-size:11px;border-radius:5px}.workspace{grid-template-columns:272px minmax(280px,1fr) 282px;gap:16px;align-items:stretch}.panel{background:var(--surface);border-radius:9px}.panel-heading{padding:16px 18px;border-bottom:1px solid var(--line)}.panel-heading h2{font-size:13px;margin:0 0 3px;font-weight:700}.panel-heading p{color:var(--muted);font-size:11px}.panel-section{padding:18px}.panel-kicker{display:none}h2{font-size:13px;margin-bottom:16px}.tool-navigation{display:flex;gap:0;padding:8px;border-bottom:1px solid var(--line);background:var(--surface)}.tool-navigation button{flex:1;min-width:0;min-height:38px;padding:6px 4px;border:0;border-radius:5px;background:transparent;color:var(--muted);font-size:10px;font-weight:650;white-space:nowrap}.tool-navigation button[aria-selected=true]{background:var(--surface-soft);color:var(--ink);box-shadow:inset 0 -2px var(--gold)}label{font-size:11px;color:var(--ink-soft);font-weight:600}input,select,textarea{background:var(--surface);border-color:var(--input-line);border-radius:6px;min-height:40px;font-size:12px;color:var(--ink);padding:9px 11px;transition:border-color .15s}input:hover,select:hover,textarea:hover{border-color:var(--muted)}select{appearance:none;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='m6 8 4 4 4-4' fill='none' stroke='%238293a0' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 9px center;background-size:18px;background-repeat:no-repeat}option{background:var(--surface);color:var(--ink)}.field-pair{gap:12px}.field-pair label{justify-content:flex-start}.field-pair input{margin-top:5px}.tool-grid{gap:8px}.tool-grid button{min-height:56px;flex-direction:column;justify-content:center;gap:6px;padding:8px;font-size:11px;background:var(--surface)}.tool-grid button[aria-pressed=true]{background:var(--selection);border-color:var(--gold-deep);color:var(--ink)}.tool-grid .symbol{color:var(--ink)}.room-list button,.fixture-list button{border-radius:6px;background:var(--surface-soft)}.room-list button[aria-pressed=true],.fixture-list button[aria-pressed=true]{background:var(--selection);border-color:var(--gold-deep)}.artifact-model-preview{background:var(--surface-soft);padding:12px;gap:10px}.artifact-picker .button{font-size:11px}.helper{font-size:11px}.stage-toolbar{padding:12px 16px;min-height:65px}.view-tabs{background:var(--surface-soft);border:1px solid var(--line);border-radius:7px;padding:3px}.view-tabs button{min-height:32px;padding:6px 14px;border-radius:4px;font-size:11px;color:var(--muted)}.view-tabs button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #00000012}.stage-label{font-size:11px;font-weight:600;color:var(--ink-soft);margin-right:auto;margin-left:12px}.stage-label small{display:block;font-size:10px;color:var(--muted);font-weight:400}.history-tools button{min-height:34px;width:34px;font-size:21px}.stage{background:var(--stage);height:560px}.view-controls{background:var(--surface);border-radius:7px;box-shadow:0 3px 14px #00000018}.view-controls button{background:var(--surface);color:var(--ink);min-height:38px}.wall-toggle{background:var(--surface);color:var(--ink)}.stage-footer{padding:12px 16px;font-size:11px;min-height:52px;background:var(--surface)}.point-legend{padding:0 16px 14px;gap:16px}.point-legend .artifact-icon{background:#f4f6f1;border-radius:3px}.inspector .panel-section{padding:18px}.project-details summary{font-size:12px}.project-details form{margin-top:16px}.artifact-inventory summary{font-size:11px}.status-message{min-height:30px;padding:6px 0}.status-message:not(:empty){background:var(--surface);border-color:var(--input-line);color:var(--ink);box-shadow:0 4px 20px #0002}.status-message.error{color:var(--error)}.planner-footer{padding-bottom:16px;font-size:10px}dialog{background:var(--surface);border-radius:12px}dialog::backdrop{background:#08121bcc;backdrop-filter:blur(3px)}.catalog-dialog .dialog-head{background:var(--surface)}.catalog-editor,.selection-model-details{background:var(--surface-soft)}.catalog-preview{background:var(--surface)}.catalog-preview .artifact-icon,.artifact-model-preview .artifact-icon{background:#f4f6f1;border-radius:4px}.catalog-list button[aria-pressed=true]{background:var(--selection)}.delivery-step>span{background:var(--selection);color:var(--gold-deep)}.catalog-edit-actions .danger-button{background:var(--surface)}
:root[data-theme=dark] #grid-small path{stroke:#293b49}:root[data-theme=dark] #grid-large>path{stroke:#3b5261}
@media(min-width:1160px){.workspace{height:max(620px,calc(100dvh - 312px))}.tool-panel,.inspector{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--input-line) transparent;scroll-padding:16px}.drawing-panel{display:flex;flex-direction:column}.stage{height:auto;flex:1;min-height:340px}.stage-toolbar,.stage-footer,.point-legend{flex-shrink:0}.tool-navigation{position:sticky;top:0;z-index:2}}
@media(max-width:1250px){.app-name{display:none}.header-divider{display:none}.workspace{grid-template-columns:244px minmax(280px,1fr) 250px}.stage-label{display:none}.app-header{gap:14px}}
@media(max-width:1159px){.workspace{grid-template-columns:260px minmax(0,1fr);align-items:start}.inspector{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr 1fr}.inspector>.panel-heading{grid-column:1/-1}.inspector .panel-section{border-right:1px solid var(--line)}.stage{height:560px}.steps small{display:block}.steps button{padding:12px}.save-state{display:none}.back-link{margin-left:auto}.tool-navigation{position:static}.intro{align-items:center}}
@media(max-width:760px){main{padding:0 12px}.app-header{padding:10px 12px;gap:10px;flex-wrap:wrap}.brand img{width:30px;height:30px}.brand span{font-size:17px}.theme-switch{margin-left:auto}.theme-switch span{display:none}.theme-switch button{min-width:32px;justify-content:center}.app-header>.button{margin-left:0;font-size:11px;padding:8px 10px}.back-link{display:none}.intro{padding:18px 0 14px;display:flex;align-items:flex-start;flex-direction:column;gap:12px}.intro h1{font-size:22px}.intro p:not(.eyebrow){font-size:12px}.file-actions{margin-top:0;flex-direction:row}.file-actions .button{min-height:36px;font-size:11px}.steps{grid-template-columns:repeat(4,minmax(0,1fr))}.steps button{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:10px 4px;min-height:76px;border-bottom:0!important;border-right:1px solid var(--line)!important}.steps button:last-child{border-right:0!important}.steps button>span{width:24px;height:24px;font-size:11px}.steps strong{font-size:10px;line-height:1.3}.steps small{display:none}.notice{font-size:11px}.workspace{display:flex;flex-direction:column;gap:12px}.workspace>.panel{width:100%}.tool-panel{display:block;order:0}.drawing-panel{order:1}.inspector{order:2;display:block}.tool-panel>.panel-section:first-child{border-right:0}.panel-heading{padding:14px 16px}.panel-section,.tool-panel>.panel-section,.inspector .panel-section{padding:16px}.tool-navigation button{font-size:12px;min-height:40px}.tool-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.tool-grid button{font-size:10px;min-height:62px}.tool-panel form{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.tool-panel form .field-pair,.tool-panel form>.button{grid-column:1/-1}.tool-panel .full{font-size:12px}.tool-panel label{font-size:11px}.tool-panel input,.tool-panel select,.tool-panel textarea,.inspector input,.inspector select,.inspector textarea{font-size:16px;min-height:44px}.room-list{grid-template-columns:1fr 1fr}.stage{height:450px}.stage-toolbar{padding:10px 12px}.stage-footer{font-size:10px}.inspector .panel-section{border-right:0;border-bottom:1px solid var(--line)}.planner-footer{gap:8px}.point-legend{gap:12px}.theme-switch button{min-height:34px}.header-divider,.app-name{display:none}}
@media(max-width:370px){.app-header{gap:8px}.app-header>.button{font-size:10px;min-height:38px;padding:7px}.brand{gap:6px}.brand img{width:26px;height:26px}.brand span{font-size:15px}.brand strong{font-size:8px}.theme-switch{gap:0;padding:2px}.theme-switch button{min-width:28px;padding:4px}.tool-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stage{height:380px}.tool-panel form{display:block}.field-pair{display:grid}.steps strong{font-size:9px}}
@media(prefers-reduced-motion:reduce){input,select,textarea{transition:none}}

.planner-loading{padding:40px;display:grid;gap:16px;justify-content:center;text-align:center;color:var(--muted)}

/* Shared side panels: one visual system for tools and properties. */
:root {
  --library-top: #f9fbfc;
  --library-bottom: #e8eef3;
  --library-dot: #768fa01c;
  --control-fill: #ffffff;
  --control-shade: #eef3f7;
  --control-edge: #bacbd7;
  --library-highlight: #ffffffdc;
}
:root[data-theme=dark] {
  --library-top: #233440;
  --library-bottom: #17252f;
  --library-dot: #a3bece12;
  --control-fill: #2b404f;
  --control-shade: #243744;
  --control-edge: #526b7b;
  --library-highlight: #b4cfdf18;
}
:is(.tool-panel, .inspector) {
  background-color: var(--library-bottom);
  background-image: radial-gradient(circle, var(--library-dot) .8px, transparent 1px), linear-gradient(155deg, var(--library-top), var(--library-bottom));
  background-size: 8px 8px, 100% 100%;
  border-color: var(--control-edge);
  box-shadow: inset 0 1px var(--library-highlight), 0 6px 20px #08131c0a;
}
:is(.tool-panel, .inspector) .panel-heading {
  padding: 22px 18px 18px;
  text-align: center;
  background: linear-gradient(180deg, var(--library-highlight), transparent);
}
:is(.tool-panel, .inspector) .panel-heading h2 { font-size: 15px; margin-bottom: 5px; }
:is(.tool-panel, .inspector) .panel-heading p { font-size: 11px; }
:is(.tool-panel, .inspector) .tool-navigation {
  padding: 9px;
  gap: 4px;
  background: var(--library-bottom);
  box-shadow: inset 0 1px var(--library-highlight);
}
:is(.tool-panel, .inspector) .tool-navigation button {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  border: 1px solid transparent;
  border-radius: 7px;
  font-size: 10px;
}
:is(.tool-panel, .inspector) .tool-navigation button[aria-selected=true] {
  color: var(--ink);
  background: linear-gradient(180deg, var(--control-fill), var(--control-shade));
  border-color: var(--control-edge);
  box-shadow: inset 0 -3px var(--gold), inset 0 1px var(--library-highlight), 0 2px 5px #00000012;
}
:is(.tool-panel, .inspector) .panel-section { padding: 20px 18px; }
:is(.tool-panel, .inspector) .panel-section > h2 { text-align: center; font-size: 14px; margin-bottom: 18px; }
:is(.tool-panel, .inspector) form { width: 100%; max-width: 340px; margin-inline: auto; }
:is(.tool-panel, .inspector) form label { text-align: center; font-size: 11px; margin-bottom: 14px; }
:is(.tool-panel, .inspector) input:not([type=checkbox]), :is(.tool-panel, .inspector) select, :is(.tool-panel, .inspector) textarea {
  min-height: 46px;
  padding: 11px 12px;
  border: 1px solid var(--control-edge);
  background-color: var(--control-fill);
  box-shadow: inset 0 2px 4px #07141d0c, 0 1px var(--library-highlight);
  border-radius: 8px;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
}
:is(.tool-panel, .inspector) select { padding-inline: 30px; text-align-last: center; }
:is(.tool-panel, .inspector) textarea { text-align: left; font-weight: 400; }
:is(.tool-panel, .inspector) input:not([type=checkbox]):focus, :is(.tool-panel, .inspector) select:focus {
  border-color: var(--gold-deep);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--gold) 16%, transparent);
}
:is(.tool-panel, .inspector) .field-pair { gap: 10px; }
:is(.tool-panel, .inspector) .full { min-height: 46px; border-radius: 8px; }
:is(.tool-panel, .inspector) .button.dark {
  min-height: 48px;
  background: linear-gradient(180deg, #f6d360, #e8ba2f);
  border-color: #d0a21f;
  box-shadow: inset 0 1px #fff5be, 0 3px 8px #00000018;
  color: #243025;
  font-size: 12px;
}
:is(.tool-panel, .inspector) .button.dark:hover { background: linear-gradient(180deg, #ffe18a, #f0c541); }
:is(.tool-panel, .inspector) .room-section h2 { display: flex; align-items: center; justify-content: center; gap: 10px; }
:is(.tool-panel, .inspector) #room-count {
  display: inline-grid;
  place-items: center;
  min-width: 26px;
  height: 26px;
  border: 1px solid var(--control-edge);
  border-radius: 7px;
  background: var(--control-fill);
  color: var(--ink);
  font-size: 11px;
  font-weight: 650;
}
:is(.tool-panel, .inspector) .room-list { gap: 9px; }
:is(.tool-panel, .inspector) .room-list button {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  min-height: 58px;
  padding: 11px;
  border: 1px solid var(--control-edge);
  background: linear-gradient(150deg, var(--control-fill), var(--control-shade));
  box-shadow: inset 0 1px var(--library-highlight), 0 2px 5px #0000000a;
}
:is(.tool-panel, .inspector) .room-list button::before {
  content: '';
  width: 26px;
  height: 26px;
  border: 1.5px solid var(--muted);
  border-radius: 4px;
  background-image: linear-gradient(90deg, transparent 48%, var(--control-edge) 48%, var(--control-edge) 53%, transparent 53%), linear-gradient(transparent 48%, var(--control-edge) 48%, var(--control-edge) 53%, transparent 53%);
  opacity: .8;
}
:is(.tool-panel, .inspector) .room-list button > span { text-align: center; font-weight: 600; font-size: 12px; }
:is(.tool-panel, .inspector) .room-list small { padding: 4px 6px; border-radius: 5px; background: var(--library-bottom); color: var(--ink-soft); font-size: 10px; }
:is(.tool-panel, .inspector) .room-list button[aria-pressed=true] { border-color: var(--gold-deep); background: var(--selection); box-shadow: inset 3px 0 var(--gold); }
:is(.tool-panel, .inspector) .tool-grid button {
  min-height: 70px;
  border-color: var(--control-edge);
  background: linear-gradient(160deg, var(--control-fill), var(--control-shade));
  box-shadow: inset 0 1px var(--library-highlight);
  text-align: center;
  border-radius: 8px;
}
:is(.tool-panel, .inspector) .tool-grid button[aria-pressed=true] { border-color: var(--gold-deep); background: var(--selection); box-shadow: inset 0 -3px var(--gold); }
:is(.tool-panel, .inspector) .artifact-model-preview { justify-content: center; min-height: 66px; background: var(--control-shade); border: 1px solid var(--control-edge); border-radius: 8px; }
:is(.tool-panel, .inspector) .artifact-picker > label:not(.inline-check) { text-align: center; }
:is(.tool-panel, .inspector) .helper { text-align: center; padding-inline: 3px; }
@media (min-width: 1260px) {
  .workspace { grid-template-columns: 294px minmax(280px, 1fr) 294px; }
}
@media (max-width: 760px) {
  :is(.tool-panel, .inspector) .panel-heading { padding: 18px 16px; }
  :is(.tool-panel, .inspector) .panel-section { padding: 18px 16px; }
  :is(.tool-panel, .inspector) .tool-navigation button { font-size: 12px; }
  :is(.tool-panel, .inspector) form { max-width: 560px; }
  :is(.tool-panel, .inspector) input:not([type=checkbox]), :is(.tool-panel, .inspector) select, :is(.tool-panel, .inspector) textarea { font-size: 16px; }
  :is(.tool-panel, .inspector) .room-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  :is(.tool-panel, .inspector) .room-list button { grid-template-columns: minmax(0, 1fr) auto; }
  :is(.tool-panel, .inspector) .room-list button::before { display: none; }
}
@media (max-width: 420px) {
  :is(.tool-panel, .inspector) .room-list { grid-template-columns: 1fr; }
  :is(.tool-panel, .inspector) .tool-navigation button { font-size: 11px; }
}

/* Property-only content follows the same surface and spacing tokens. */
.inspector .project-details > summary,
.inspector .artifact-inventory > summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 32px;
  text-align: center;
  list-style: none;
  font-size: 13px;
  font-weight: 700;
}
.inspector summary::-webkit-details-marker { display: none; }
.inspector .project-details > summary::before,
.inspector .artifact-inventory > summary::before { content: '▸'; color: var(--gold-deep); }
.inspector details[open] > summary::before { transform: rotate(90deg); }
.inspector .project-details form { margin-top: 18px; }
.inspector .selection-subtitle,
.inspector .selection-model-details { text-align: center; }
.inspector .fixture-list { gap: 9px; }
.inspector .fixture-list button {
  min-height: 58px;
  padding: 11px;
  border: 1px solid var(--control-edge);
  border-radius: 8px;
  background: linear-gradient(150deg, var(--control-fill), var(--control-shade));
  box-shadow: inset 0 1px var(--library-highlight), 0 2px 5px #0000000a;
  justify-content: center;
  flex-wrap: wrap;
  text-align: center;
}
.inspector .fixture-list button[aria-pressed=true] {
  border-color: var(--gold-deep);
  background: var(--selection);
  box-shadow: inset 3px 0 var(--gold);
}
.inspector .artifact-inventory li:not(.helper) {
  padding: 11px;
  text-align: center;
  background: linear-gradient(150deg, var(--control-fill), var(--control-shade));
  border: 1px solid var(--control-edge);
  border-radius: 8px;
  box-shadow: inset 0 1px var(--library-highlight);
}
.inspector .artifact-inventory small { margin-top: 4px; }
@media (min-width: 1160px) and (max-width: 1259px) {
  .workspace { grid-template-columns: 244px minmax(280px, 1fr) 244px; }
}

/* Accessibility: readable contrast, target sizes, reflow and visible focus. */
:root { --focus-ring: #116ba8; --input-line: #748696; --control-edge: #748696; --muted: #566674; }
:root[data-theme=dark] { --focus-ring: #ffe18a; --input-line: #819bad; --control-edge: #819bad; --muted: #a5b6c4; }
body { font-size: 14px; }
:is(button,a,input,select,textarea,summary,[tabindex]):focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
  scroll-margin-block: 90px;
}
:where(button,input,select,summary,.button) { min-height: 44px; }
input[type=checkbox] { min-height: 20px; width: 20px; height: 20px; flex-basis: 20px; }
label:has(input[type=checkbox]) { min-height: 44px; cursor: pointer; }
textarea { min-height: 100px; }
::placeholder { color: var(--muted); opacity: 1; }
:is(.tool-panel,.inspector) form label { font-size: 12px; }
:is(.tool-panel,.inspector) .helper,
.artifact-inventory small,
.catalog-list small,
.stage-footer,
.point-legend,
.keyboard-help { font-size: 12px; line-height: 1.65; }
.tool-navigation button,
.tool-panel .tool-navigation button,
.inspector .tool-navigation button,
.view-tabs button,
.theme-switch span { font-size: 12px; }
.theme-switch button { min-width: 44px; min-height: 44px; }
.history-tools button { width: 44px; min-height: 44px; }
.view-controls button { min-width: 44px; min-height: 44px; }
.icon-button { width: 44px; min-height: 44px; height: 44px; }
.tool-grid .artifact-icon { width: 28px; height: 28px; flex-basis: 28px; padding: 3px; background: #fff; border-radius: 4px; }
.workspace { scroll-margin-top: 16px; }
.tool-panel,.inspector { scrollbar-gutter: stable; scroll-padding-block: 88px 24px; }
.tool-panel .tool-navigation { z-index: 3; }
.tool-panel .tool-navigation button { white-space: normal; line-height: 1.4; }
.keyboard-help { padding: 12px 16px; color: var(--muted); border-top: 1px solid var(--line); }
.placement-details { margin-top: 18px; padding-top: 12px; border-top: 1px solid var(--line); }
.placement-details > summary { padding: 10px 4px; cursor: pointer; font-size: 12px; font-weight: 650; text-align: center; }
.placement-details form { margin-top: 12px; }
.placement-details .helper { margin-bottom: 16px; }
.view-movement { position: absolute; right: 12px; bottom: 72px; display: grid; grid-template-columns: repeat(3,44px); gap: 4px; }
.view-movement button { min-height: 44px; min-width: 44px; font-size: 20px; background: var(--surface); border-color: var(--input-line); }
.view-movement button[data-adjust-view=up] { grid-column: 2; }
.view-movement button[data-adjust-view=left] { grid-column: 1; grid-row: 2; }
.view-movement button[data-adjust-view=right] { grid-column: 3; grid-row: 2; }
.view-movement button[data-adjust-view=down] { grid-column: 2; grid-row: 3; }
.status-message:not(:empty) { position: static; transform: none; width: 100%; max-width: none; margin: 14px 0; padding: 12px 16px; box-shadow: none; pointer-events: auto; overflow-wrap: anywhere; }
.panel-section,.panel-heading { overflow-wrap: anywhere; }
.artifact-inventory li,.fixture-list button { overflow-wrap: anywhere; }
@media(max-width:1159px) { .inspector { grid-template-columns: 1fr 1fr; }.inspector > .project-details { grid-column: 1 / -1; } }
@media(max-width:760px) {
  .inspector { display: block; }
  .app-header { flex-wrap: wrap; }
  .steps button { min-height: 80px; }
  .steps strong { font-size: 12px; }
  .tool-panel form .helper,.tool-panel form > label,.tool-panel form > div:not(.field-pair) { grid-column: 1 / -1; }
  .tool-panel .placement-details .field-pair { grid-template-columns: 1fr 1fr; }
  .view-movement { grid-template-columns: repeat(3,36px); gap: 2px; bottom: 68px; right: 8px; }
  .view-movement button { min-width: 36px; width: 36px; min-height: 36px; }
  .stage-label { display: none; }
}
@media(max-width:420px) {
  .tool-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .tool-panel .tool-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .tool-panel .tool-grid button { font-size: 12px; }
  .stage-toolbar { flex-wrap: wrap; }
  .steps { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .steps button:nth-child(2) { border-right: 0 !important; }
  .steps button:nth-child(-n+2) { border-bottom: 1px solid var(--line) !important; }
  dialog { max-width: calc(100vw - 20px); padding: 16px; }
  .catalog-dialog .dialog-head { top: -16px; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }
@media(forced-colors:active) {
  .tool-panel,.inspector { background: Canvas; }
  button,input,select,textarea { border: 1px solid ButtonText !important; }
  [aria-pressed=true],[aria-selected=true] { outline: 2px solid Highlight; outline-offset: -4px; }
  :focus-visible { outline-color: Highlight; }
}

.theme-switch button[aria-pressed=true],.view-tabs button[aria-pressed=true] { border: 1px solid var(--gold-deep); box-shadow: inset 0 -3px var(--gold-deep); font-weight: 750; }
@media(forced-colors:active) { :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible { outline-color: Highlight; } }

.field-pair > label { min-width: 0; }

.skip:focus { background: #edc443; color: #17251e; }
[role=tabpanel]:focus-visible { outline-offset: -4px; }
@media(max-width:1159px) { .save-state { display:block; position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; } }

/* Floor controls use the same surfaces and control sizes as the editor. */
.floor-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--surface)}
.floor-toolbar label{display:flex;align-items:center;gap:12px;margin:0;font-weight:700}
.floor-toolbar select{width:auto;min-width:140px;margin:0}
.floor-toolbar .button{min-height:44px;padding:8px 12px}
.floor-toolbar>span{font-size:.8rem;color:var(--ink-soft);margin-left:auto}
@media(max-width:760px){.floor-toolbar{padding:12px}.floor-toolbar>span{width:100%;margin:0}.floor-toolbar label{flex:1}.floor-toolbar select{flex:1;min-width:0}}

.floor-toolbar{flex-shrink:0}
