/* Studio — the private design room. Ink frame, limestone paper, drafting sheet. */
.studio-page{height:100vh;height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;background:var(--paper);color:var(--text);font-size:14px;line-height:1.45}
.studio-page>.topbar{grid-row:1}.studio-page>.save-error{grid-row:2}.studio-page>#workspace{grid-row:3}

/* ---------- controls ---------- */
button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--white);color:var(--text);font-size:14px;font-weight:500;line-height:1.2;cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}
button:hover{border-color:var(--line-strong);background:#fff}
button:active{background:var(--paper-2)}
button:disabled{opacity:.45;cursor:not-allowed}
button.primary{background:var(--ink);border-color:var(--ink);color:var(--ink-text)}
button.primary:hover{background:#2a2c30;border-color:#2a2c30}
button.ghost{background:transparent;border-color:transparent}
button.ghost:hover{background:rgba(19,20,22,.05)}
button.text-btn{min-height:36px;padding:0 6px;border:0;background:none;color:var(--text-2);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:4px}
button.text-btn:hover{color:var(--text)}
button.danger,.danger-text{color:var(--danger)!important}
button.danger-button{background:var(--danger);border-color:var(--danger);color:#fff}
button.wide{width:100%}
.icon-btn{width:40px;min-width:40px;padding:0}
button.active,button[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
kbd{font:500 11px/1 var(--sans);padding:3px 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:3px;background:var(--white);color:var(--text-2)}
code{font-size:13px;background:var(--paper-2);padding:1px 4px;border-radius:2px}
.field{display:grid;gap:6px;font-size:13px;font-weight:500;color:var(--text-2);margin:0 0 14px}
.field small,.hint{font-size:13px;font-weight:400;color:var(--text-3);line-height:1.5}
.hint{margin:8px 0 14px}
input,select,textarea{width:100%;min-width:0;min-height:40px;padding:8px 11px;border:1px solid var(--line);border-radius:var(--r);background:var(--white);font-size:15px;font-weight:400;color:var(--text);font-variant-numeric:tabular-nums}
select{appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2346423c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;background-size:16px}
input:hover,select:hover,textarea:hover{border-color:var(--line-strong)}
input:focus,select:focus,textarea:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 3px rgba(180,82,26,.22)}
textarea{resize:vertical;line-height:1.5}
.check{display:flex;align-items:center;gap:10px;min-height:40px;font-size:14px;color:var(--text);cursor:pointer}
.check input{width:18px;height:18px;min-height:0;margin:0;accent-color:var(--ink)}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.row>.field{margin-bottom:10px}

/* ---------- topbar ---------- */
.topbar{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:24px;height:64px;padding:0 16px 0 20px;background:var(--ink);color:var(--ink-text);border-bottom:1px solid #000}
.lockup{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;min-width:0}
.lockup img{height:36px;width:auto}
.lockup-text{display:grid;padding-left:12px;border-left:1px solid var(--ink-line);line-height:1.1}
.lockup-text b{font:400 21px/1 var(--serif);letter-spacing:.01em}
.lockup-text small{margin-top:4px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted)}
.chapters{display:flex;justify-content:center;gap:4px}
.chapters button{position:relative;min-height:44px;padding:0 14px;border:0;background:none;color:var(--ink-muted);font-size:14px;box-shadow:none}
.chapters button i{font-style:normal;font-size:12px;letter-spacing:.08em;color:#8d887f;font-variant-numeric:tabular-nums}
.chapters button:hover:not(:disabled){color:var(--ink-text);background:rgba(255,255,255,.04)}
.chapters button.visited{color:#dcd8d0}
.chapters button.active{color:var(--ink-text)}
.chapters button.active i{color:var(--accent-on-ink)}
.chapters button.active::after{content:'';position:absolute;left:14px;right:14px;bottom:4px;height:2px;background:var(--accent)}
.chapters button:disabled{opacity:.4}
.project-id{display:grid;justify-items:end;min-width:0}
.project-name{width:auto;max-width:260px;min-height:30px;padding:2px 6px;border:1px solid transparent;background:transparent;color:var(--ink-text);font:400 20px/1.1 var(--serif);text-align:right}
.project-name:hover{border-color:var(--ink-line)}
.project-name:focus{background:var(--ink-2);border-color:var(--ink-line);box-shadow:none}
#saved{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-muted);padding-right:6px}
#saved::before{content:'';width:6px;height:6px;border-radius:50%;background:#8d887f}
#saved[data-state=saved]::before{background:#6fb38a}
#saved[data-state=failed]{color:#f2a38f}#saved[data-state=failed]::before{background:#e0634b}
#saved[data-state=draft]::before{background:var(--accent-on-ink)}
.top-actions{display:flex;align-items:center;gap:8px}
.topbar button{background:transparent;border-color:var(--ink-line);color:var(--ink-text)}
.topbar button:hover{background:rgba(255,255,255,.06);border-color:#4a4c52}
.topbar button.primary{background:var(--ink-text);border-color:var(--ink-text);color:var(--ink)}
.topbar button.primary:hover{background:#fff}
.topbar button.ghost{border-color:transparent}
.topbar :focus-visible{outline-color:var(--accent-on-ink)}
.history{display:flex;gap:2px;padding-right:8px;margin-right:4px;border-right:1px solid var(--ink-line)}
.history button{border-color:transparent}
.menu{position:relative}
.menu>summary{list-style:none;display:inline-flex;align-items:center;justify-content:center;height:40px;border:1px solid var(--line);border-radius:var(--r);cursor:pointer}
.topbar .menu>summary{border-color:var(--ink-line);color:var(--ink-text)}
.menu>summary::-webkit-details-marker{display:none}
.menu>div,.popup-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:60;display:grid;gap:2px;min-width:240px;padding:6px;background:var(--white);color:var(--text);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-2)}
.popup-panel{position:fixed;right:auto}
.menu>div button,.popup-panel button{justify-content:flex-start;width:100%;border:0;background:none;color:var(--text);box-shadow:none}
.menu>div button:hover,.popup-panel button:hover{background:var(--paper)}
.popup-panel .field{margin:6px 8px 0}.popup-panel .hint{margin:4px 8px 8px}
.save-error{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:8px 20px;background:#fbe9e5;color:#6d1f16;border-bottom:1px solid #f0c8bf;font-size:14px}
.save-error>span:first-child{display:flex;align-items:center;gap:8px}
.save-error .row{display:flex;gap:8px}

/* ---------- workspace ---------- */
#workspace{display:grid;grid-template-columns:minmax(0,1fr) 400px;min-height:0;--split:.56}
.stage{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;background:var(--paper-2)}
.stagebar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;height:56px;padding:0 16px;background:var(--paper);border-bottom:1px solid var(--line)}
.drawing-id{display:grid;min-width:0;line-height:1.25}
.drawing-id b{font-size:14px;font-weight:600}
.drawing-id span{font-size:13px;color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewmodes{display:flex;padding:3px;gap:2px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-lg)}
.viewmodes button{min-height:34px;padding:0 14px;border:0;background:transparent;color:var(--text-2);box-shadow:none}
.viewmodes button .icon{width:18px;height:18px}
.viewmodes button:hover:not(:disabled){background:rgba(255,255,255,.6)}
.viewmodes button.active{background:var(--white);color:var(--text);box-shadow:0 1px 2px rgba(19,20,22,.12),0 0 0 1px var(--line)}
.drawing-prefs{display:flex;justify-content:flex-end;align-items:center;gap:6px}
.drawing-prefs button{border-color:transparent;background:transparent}
.drawing-prefs button.active{background:var(--white);border-color:var(--line);box-shadow:none;color:var(--text)}
.drawing-prefs button:not(.active){color:var(--text-3)}
.snap{position:relative;display:flex;align-items:center}
.snap>span[data-icon]{position:absolute;left:9px;pointer-events:none;color:var(--text-3)}
.snap>span[data-icon] .icon{width:18px;height:18px}
.snap select{width:92px;min-height:36px;padding-left:34px;font-size:14px;background-color:transparent;border-color:transparent}
.snap select:hover{border-color:var(--line)}
[data-layout=model] .drawing-prefs{visibility:hidden}

.panes{display:grid;min-height:0;min-width:0;gap:0;grid-template-columns:minmax(0,calc(var(--split) * 100% - 4px)) 8px minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
[data-layout=plan] .panes{grid-template-columns:minmax(0,1fr)}
[data-layout=model] .panes{grid-template-columns:minmax(0,1fr)}
[data-layout=plan] #modelPane,[data-layout=plan] .split-divider,[data-layout=model] #planPane,[data-layout=model] .split-divider{display:none}
.pane{position:relative;min-width:0;min-height:0;overflow:hidden;container-type:inline-size}
@container (max-width:560px){.pane-note{display:none}.model-toggles button span{display:none}.model-toggles button{width:38px;padding:0}}
@container (max-width:640px){.model-pane .dock{display:none}.model-pane .pane-foot{justify-content:center}}
@container (max-width:420px){.presets button{padding:0 9px}.dock #fit{padding:0 8px}}
.model-pane::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 42%,transparent 58%,rgba(19,20,22,.075) 100%)}
.plan-pane{background:var(--sheet)}
.plan-pane::before{content:'';position:absolute;inset:10px;border:1px solid rgba(19,20,22,.08);pointer-events:none;z-index:1}
#plan{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:default;outline:none}
#plan text{font-family:'Plan Sans',Arial,sans-serif}
#plan[data-tool=pan],#plan.panning{cursor:grab}
#plan.panning{cursor:grabbing}
#plan:not([data-tool=select]):not([data-tool=pan]){cursor:crosshair}
#plan:focus-visible{box-shadow:inset 0 0 0 2px var(--focus)}
.split-divider{position:relative;z-index:3;background:var(--paper-2);cursor:col-resize;touch-action:none}
.split-divider::after{content:'';position:absolute;top:50%;left:50%;width:2px;height:36px;margin:-18px 0 0 -1px;border-radius:2px;background:var(--line-strong);transition:background .15s,height .15s}
.split-divider:hover::after,.split-divider.dragging::after,.split-divider:focus-visible::after{background:var(--ink);height:56px;margin-top:-28px}
.model-pane{background:#e9e9e7}
#scene3d{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab;outline:none}
#scene3d.dragging{cursor:grabbing}
#scene3d:focus-visible{box-shadow:inset 0 0 0 2px var(--focus)}

/* tool rail */
.tool-rail{position:absolute;z-index:5;left:20px;top:20px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}
.tool-rail>button,.flyout>summary{position:relative;width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:var(--r);background:transparent;color:var(--text-2);box-shadow:none}
.tool-rail>button:hover,.flyout>summary:hover{background:var(--paper);color:var(--text)}
.tool-rail>button.active,.flyout.active>summary{background:var(--ink);color:var(--ink-text);box-shadow:none}
.tool-rail>button>span,.tool-rail>button>kbd,.flyout>summary>span{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);pointer-events:none;opacity:0;transition:opacity .12s}
.tool-rail>button>span,.flyout>summary>span{padding:6px 10px;border-radius:var(--r);background:var(--ink);color:var(--ink-text);font-size:13px;white-space:nowrap}
.tool-rail>button>kbd{left:auto;right:-6px;top:auto;bottom:-2px;transform:none;padding:1px 3px;font-size:10px;border-width:1px;background:transparent;border-color:transparent;color:inherit}
.tool-rail>button:hover>span,.tool-rail>button:focus-visible>span,.flyout>summary:hover>span,.flyout>summary:focus-visible>span{opacity:1}
.tool-rail>button:hover>kbd,.tool-rail>button.active>kbd{opacity:.6}
.rail-rule{width:24px;height:1px;margin:4px 0;background:var(--line)}
.flyout{position:relative}
.flyout>summary{display:flex;align-items:center;justify-content:center;list-style:none;cursor:pointer}
.flyout>summary::-webkit-details-marker{display:none}
.flyout-panel{position:absolute;left:calc(100% + 12px);top:-8px;z-index:20;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;width:300px;padding:8px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-2)}
.flyout-panel button{flex-direction:column;align-items:flex-start;gap:2px;min-height:52px;padding:6px 10px;border-color:transparent;text-align:left}
.flyout-panel button small,.fixture-grid small{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.flyout-panel button:hover{background:var(--paper)}

.pane-foot{position:absolute;z-index:4;left:16px;right:16px;bottom:14px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;pointer-events:none}
.pane-foot>*{pointer-events:auto}
.pane-note{max-width:60%;padding:6px 10px;border-radius:var(--r);background:rgba(251,250,247,.92);color:var(--text-2);font-size:13px;line-height:1.35;pointer-events:none}
.plan-pane .pane-foot{left:84px}
.dock,.presets,.model-toggles{display:flex;align-items:center;gap:2px;padding:3px;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}
.dock button,.presets button,.model-toggles button{min-height:36px;border:0;background:transparent;box-shadow:none;color:var(--text-2)}
.dock button:hover,.presets button:hover,.model-toggles button:hover{background:var(--paper);color:var(--text)}
.dock .icon-btn{width:36px;min-width:36px}
.presets{overflow-x:auto;scrollbar-width:none;max-width:100%}
.presets::-webkit-scrollbar{display:none}
.presets button{padding:0 12px;white-space:nowrap}
.presets button.active,.model-toggles button.active{background:var(--ink);color:var(--ink-text)}
.model-top{position:absolute;z-index:4;top:14px;right:16px;display:flex;gap:8px;align-items:flex-start}
.model-top .menu>summary{width:44px;height:44px;background:rgba(255,255,255,.96);box-shadow:var(--shadow-1)}
.model-toggles button{padding:0 12px}
.model-toggles button .icon{width:18px;height:18px}
.title-block{position:absolute;z-index:2;right:20px;top:20px;display:grid;grid-template-columns:auto auto;gap:0;min-width:200px;border:1px solid var(--text);background:rgba(255,255,255,.94);font-size:12px;line-height:1.2;pointer-events:none}
.title-block b{grid-column:1/-1;padding:7px 10px 6px;border-bottom:1px solid var(--text);font:400 17px/1.1 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.title-block span{padding:5px 10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);font-size:11px;font-variant-numeric:tabular-nums;border-top:1px solid var(--line)}
.title-block span:nth-of-type(odd){border-right:1px solid var(--line)}
.title-block span:first-of-type{border-top:0}.title-block span:nth-of-type(2){border-top:0}
.view-label{position:absolute;z-index:4;left:16px;top:16px;display:flex;align-items:center;gap:10px;pointer-events:none}
.view-label b{padding:6px 10px;border-radius:var(--r);background:rgba(255,255,255,.9);font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2)}
.view-label span{padding:6px 10px;border-radius:var(--r);background:rgba(19,20,22,.78);color:var(--ink-text);font-size:12px}
@container (max-width:640px){.title-block{display:none}.view-label b{display:none}}
.measure-tag{position:absolute;z-index:6;left:0;top:0;padding:6px 10px;border-radius:var(--r);background:var(--ink);color:var(--ink-text);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-1)}
.pane-message{position:absolute;z-index:7;inset:0;display:grid;place-content:center;justify-items:center;gap:8px;padding:24px;text-align:center;background:rgba(235,232,225,.94);color:var(--text-2)}
.pane-message b{font:400 26px/1.15 var(--serif);color:var(--text)}
.pane-message p{max-width:380px;margin:0}
.pane-message .icon{width:28px;height:28px;color:var(--accent-ink)}
.statusline{display:flex;justify-content:space-between;gap:16px;min-height:34px;align-items:center;padding:0 16px;border-top:1px solid var(--line);background:var(--paper);font-size:13px;color:var(--text-3);font-variant-numeric:tabular-nums}
#status{display:flex;align-items:center;gap:8px}
#status::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--ok)}
#status[data-state=warn]{color:var(--warn)}#status[data-state=warn]::before{background:var(--accent)}

/* ---------- inspector ---------- */
.inspector{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:0;background:var(--paper);border-left:1px solid var(--line)}
.sheet-handle{display:none}
.inspector-head{padding:28px 28px 18px}
.inspector-head h1{margin:6px 0 8px;font:400 44px/1 var(--serif);letter-spacing:-.005em}
.inspector-head h2{margin:2px 0 0;font:400 30px/1.05 var(--serif)}
.inspector-head p{margin:0;font-size:14px;color:var(--text-2);max-width:34ch}
.item-head{display:none;align-items:center;gap:12px}
.inspector-head[data-mode=item] .stage-head{display:none}
.inspector-head[data-mode=item] .item-head{display:flex}
.item-head .icon-btn{border-color:var(--line)}
.inspector-body{overflow-y:auto;overscroll-behavior:contain;padding:4px 28px 28px;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
.inspector-foot{padding:14px 28px 18px;border-top:1px solid var(--line);background:var(--paper)}
.foot-row{display:flex;gap:10px;align-items:center}
#stageNext{flex:1;min-height:48px;justify-content:space-between;padding:0 18px;font-size:15px}
#stageBack{min-height:48px}
#reviewDone{display:flex;align-items:center;gap:8px;flex:1;justify-content:center;color:var(--text-2);font-size:14px}
#reviewDone .icon{color:var(--ok)}
#stageBlock{margin:0 0 10px;padding:8px 10px;border-left:2px solid var(--accent);background:var(--accent-soft);color:#5d2a08;font-size:13px}
.section{margin:22px 0 8px}
.section-title{display:flex;align-items:center;gap:12px;margin:0 0 14px;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}
.section-title::after{content:'';flex:1;height:1px;background:var(--line)}
.section-title small{order:2;font-size:12px;letter-spacing:.04em;text-transform:none;color:var(--text-3)}
.section-title::after{order:1}
.stepper-field{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;margin:0 0 10px}
.stepper-field>label{font-size:14px;color:var(--text)}
.stepper{display:grid;grid-template-columns:40px 104px 40px;border:1px solid var(--line);border-radius:var(--r);background:var(--white)}
.stepper button{border:0;border-radius:0;background:transparent;box-shadow:none}
.stepper select{border:0;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);border-radius:0;text-align:center;text-align-last:center;padding:0 22px 0 10px;background-position:right 4px center;font-size:15px}
.stepper select:focus{box-shadow:inset 0 0 0 2px var(--focus)}
.figure{display:flex;align-items:baseline;gap:10px;margin:14px 0 4px;padding-top:14px;border-top:1px solid var(--line-soft)}
.figure strong{font:400 46px/1 var(--serif);font-variant-numeric:lining-nums}
.figure span{font-size:13px;color:var(--text-3)}
.system-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;margin:8px 0 6px;padding:14px 14px 14px 16px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg)}
.system-card .icon{width:28px;height:28px;color:var(--text-2)}
.system-card b{display:block;font-size:15px}.system-card small{font-size:13px;color:var(--text-3)}
.aside-note{margin:22px 0 0;padding:16px;border:1px solid var(--line);border-radius:var(--r-lg)}
.aside-note b{font:400 20px/1.2 var(--serif)}
.aside-note p{margin:6px 0 12px;color:var(--text-2);font-size:14px}
.disclosure{border-top:1px solid var(--line);margin:14px 0 0}
.disclosure:last-of-type{border-bottom:1px solid var(--line)}
.disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;list-style:none;cursor:pointer;font-weight:500}
.disclosure>summary::-webkit-details-marker{display:none}
.disclosure>summary::after{content:'';width:9px;height:9px;margin-right:4px;border-right:1.5px solid var(--text-2);border-bottom:1.5px solid var(--text-2);transform:rotate(45deg) translateY(-3px);transition:transform .2s var(--ease)}
.disclosure[open]>summary::after{transform:rotate(225deg) translate(-2px,-1px)}
.disclosure>summary small{margin-left:auto;font-weight:400;color:var(--text-3)}
.disclosure[open]{padding-bottom:14px}
.disclosure p{margin:0 0 10px;color:var(--text-2)}
.spec{margin:0 0 12px}
.spec>div{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px dashed var(--line-soft);font-size:14px}
.spec dt{color:var(--text-3)}.spec dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.keys{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin:0 0 12px}
.keys>div{display:flex;gap:8px;align-items:center;font-size:13px}.keys dt,.keys dd{margin:0}
.tabs{display:flex;gap:0;margin:6px 0 4px;border-bottom:1px solid var(--line)}
.tabs button{min-height:44px;padding:0 2px;margin-right:20px;border:0;border-radius:0;background:none;color:var(--text-3);box-shadow:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs button:hover{color:var(--text);background:none}
.tabs button.active,.tabs button[aria-pressed=true]{color:var(--text);border-bottom-color:var(--ink);box-shadow:none}
.tool-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tool-cards button,.fixture-grid button{flex-direction:column;align-items:flex-start;gap:2px;min-height:76px;padding:12px;text-align:left}
.tool-cards .icon{width:22px;height:22px;margin-bottom:6px;color:var(--text-2)}
.tool-cards b,.fixture-grid b{font-size:14px;font-weight:500}
.tool-cards small{font-size:12px;color:var(--text-3)}
.tool-cards button.active,.fixture-grid button.active{background:var(--ink);color:var(--ink-text);border-color:var(--ink)}
.tool-cards button.active .icon,.tool-cards button.active small,.fixture-grid button.active small{color:var(--ink-muted)}
.fixture-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.fixture-grid button{min-height:58px;padding:8px 10px}
.note{display:flex;gap:12px;margin:12px 0 0;padding:12px 14px;background:var(--paper-2);border-radius:var(--r-lg);font-size:13px;color:var(--text-2)}
.note .icon{width:18px;height:18px;margin-top:2px;color:var(--text-3)}
.note p{margin:0}.note em{font-style:normal;font-weight:600;color:var(--text)}
.link-row{display:grid;grid-template-columns:auto 1fr auto;gap:14px;width:100%;min-height:64px;margin-top:18px;padding:12px 14px;text-align:left;justify-items:start}
.link-row span{display:grid}.link-row small{font-size:13px;color:var(--text-3);font-weight:400}
.choices{border:0;margin:22px 0 10px;padding:0}
.choices legend{padding:0;margin-bottom:12px;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3)}
.choice-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px}
.choice{position:relative;flex-direction:column;align-items:flex-start;gap:3px;min-height:110px;padding:12px;text-align:left}
.choice .choice-art .icon{width:28px;height:28px;margin-bottom:8px;color:var(--text-2)}
.choice b{font-size:14px;font-weight:500}.choice small{font-size:12px;color:var(--text-3);line-height:1.35}
.choice.active{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.choice.active::after{content:'';position:absolute;top:10px;right:10px;width:8px;height:8px;background:var(--accent)}
.palette{margin:0 0 18px}
.palette-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:14px}
.palette-head span{color:var(--text-2)}.palette-head b{font-weight:500}
.swatches{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
.swatch{min-height:0;aspect-ratio:1;padding:3px;border-color:transparent;background:transparent;border-radius:50%}
.swatch span{display:block;width:100%;height:100%;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.14)}
.swatch:hover{border-color:var(--line-strong);background:transparent}
.swatch.active{border-color:var(--ink);box-shadow:none}
.lede{margin:16px 0;color:var(--text-2);font-size:15px}
.porch-card{margin:16px 0;padding:16px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg)}
.porch-card header{display:grid;margin-bottom:14px}.porch-card header b{font:400 22px/1.2 var(--serif)}
.empty-state{display:grid;justify-items:start;gap:4px;margin:16px 0;padding:18px;border:1px dashed var(--line-strong);border-radius:var(--r-lg);color:var(--text-2)}
.empty-state b{font:400 20px/1.2 var(--serif);color:var(--text)}.empty-state p{margin:0}
.empty-state .icon{width:26px;height:26px;color:var(--text-3)}
.warning{margin:10px 0;padding:10px 12px;border-left:2px solid var(--accent);background:var(--accent-soft);color:#5d2a08;font-size:13px}
.warning ul{margin:6px 0 0;padding-left:18px}
.banner{display:flex;gap:12px;margin:12px 0;padding:14px;background:var(--accent-soft);border-radius:var(--r-lg);color:#5d2a08}
.banner .icon{color:var(--accent-ink)}.banner p{margin:4px 0 0;font-size:13px}
.search-row{display:grid;grid-template-columns:1fr 128px;gap:8px;margin:16px 0}
.visibility{display:flex;flex-wrap:wrap;gap:6px}
.chip-check{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:20px;font-size:13px;text-transform:capitalize;cursor:pointer;background:var(--white)}
.chip-check input{width:16px;height:16px;min-height:0;margin:0;accent-color:var(--ink)}
.object-list{display:grid;gap:2px;margin:12px 0}
.object-list button{display:grid;grid-template-columns:28px 1fr;justify-items:start;gap:10px;min-height:52px;padding:8px 10px;border-color:transparent;background:transparent;text-align:left}
.object-list button:hover{background:var(--white);border-color:var(--line)}
.object-list button.active{background:var(--white);border-color:var(--ink)}
.object-list b{display:block;font-size:14px;font-weight:500}.object-list small{font-size:12px;color:var(--text-3);text-transform:capitalize}
.object-icon .icon{width:20px;height:20px;color:var(--text-3);margin-top:2px}
.empty{color:var(--text-3)}
.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0 10px}
#itemPanel form{margin-top:12px}
#itemPanel>form>button[type=button]{width:100%;margin-bottom:14px}
.review-title{margin:8px 0 6px}.review-title h3{margin:4px 0 0;font:400 30px/1.1 var(--serif)}
.figures{display:grid;grid-template-columns:1.2fr 1fr 1fr;margin:14px 0 6px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.figures>div{padding:12px 0}.figures>div+div{padding-left:14px;border-left:1px solid var(--line-soft)}
.figures dt{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}
.figures dd{margin:4px 0 0;font:400 26px/1.1 var(--serif);font-variant-numeric:lining-nums}
.figures dd.small{font:500 14px/1.3 var(--sans);margin-top:8px}
.figures small{font:400 14px var(--sans);color:var(--text-3)}
.outcome{margin:16px 0;padding:18px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--white)}
.outcome.featured{background:var(--ink);color:var(--ink-text);border-color:var(--ink)}
.outcome h3{margin:6px 0 6px;font:400 26px/1.1 var(--serif)}
.outcome p{margin:0 0 14px;color:var(--text-2)}
.outcome.featured p,.outcome.featured small,.outcome.featured .eyebrow{color:var(--ink-muted)}
.outcome.featured b{color:var(--ink-text);font-weight:500}
.outcome small{display:block;margin-top:10px;font-size:13px;color:var(--text-3)}
.outcome button{width:100%}
.outcome.featured button.primary{background:var(--ink-text);color:var(--ink);border-color:var(--ink-text)}
.outcome.featured :focus-visible{outline-color:var(--accent-on-ink)}

/* ---------- toast ---------- */
.toast{position:fixed;z-index:120;left:50%;bottom:28px;max-width:min(560px,calc(100vw - 32px));padding:12px 18px;border-radius:var(--r-lg);background:var(--ink);color:var(--ink-text);font-size:14px;box-shadow:var(--shadow-2);transform:translate(-50%,16px);opacity:0;pointer-events:none;transition:opacity .2s,transform .25s var(--ease)}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- dialogs ---------- */
.dialog{width:min(640px,calc(100vw - 32px));max-height:min(860px,calc(var(--usable-height,100dvh) - 48px));padding:0;border:0;border-radius:var(--r-lg);background:var(--paper);color:var(--text);box-shadow:var(--shadow-2);overflow:hidden}
.dialog[open]{display:flex;flex-direction:column;animation:rise .28s var(--ease)}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.dialog::backdrop{background:rgba(19,20,22,.58)}
.wide-dialog{width:min(980px,calc(100vw - 32px))}
.compact-dialog{width:min(480px,calc(100vw - 32px))}
.dialog-body{flex:1;min-height:0;overflow-y:auto;padding:32px 36px 24px}
.dialog-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:14px 36px 18px;border-top:1px solid var(--line);background:var(--paper)}
.dialog h2{margin:6px 0 10px;font:400 38px/1.05 var(--serif)}
.compact-dialog h2{font-size:30px}
.dialog-head{margin-bottom:22px}.dialog-head p{margin:0;max-width:62ch;color:var(--text-2)}
.dialog p{color:var(--text-2)}
.dialog-error{padding:10px 12px;background:#fbe9e5;color:#6d1f16!important;border-radius:var(--r)}
.dialog-section{padding:18px 0;border-top:1px solid var(--line)}
.step-label{display:block;margin-bottom:14px}
.type-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.type-choice button{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:14px;row-gap:2px;justify-items:start;align-items:center;min-height:84px;padding:16px;text-align:left}
.type-choice button>span{grid-row:span 2}
.type-choice .icon{width:30px;height:30px;color:var(--text-2)}
.type-choice b{font-size:16px;font-weight:500}.type-choice small{font-size:13px;color:var(--text-3)}
.layout-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}
.layout-card{flex-direction:column;align-items:flex-start;gap:3px;padding:12px 12px 14px;text-align:left}
.layout-art{display:block;width:100%;aspect-ratio:16/10;margin-bottom:10px;padding:10px;background:var(--sheet);border:1px solid var(--line-soft);border-radius:var(--r)}
.layout-art svg{width:100%;height:100%}
.layout-card b{font-size:15px;font-weight:500}.layout-card small{font-size:13px;color:var(--text-3)}
.layout-card.active,.type-choice button.active{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.figure-line{margin:4px 0 0;font-size:14px;font-variant-numeric:tabular-nums;color:var(--text)!important}
#startDimensions{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:4px 24px}
.exit-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.conflict-list{margin:0 0 6px;padding-left:20px;color:var(--text)}
.conflict-list li{margin:6px 0}
.adapter-tag{display:inline-flex!important;align-items:center;gap:8px;margin-top:12px!important;padding:6px 10px;border:1px dashed var(--line-strong);border-radius:var(--r);font-size:13px}
.adapter-tag .icon{width:16px;height:16px}
.sheet-preview{display:grid;gap:12px;margin-top:8px}
.sheet-preview svg,.sheet-preview img{width:100%;height:auto;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-1)}
.sheet-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.sheet-tabs button{min-height:36px;padding:0 12px;font-variant-numeric:tabular-nums}
.sheet-tabs button.active{background:var(--ink);color:var(--ink-text)}
.plan-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 14px}
.plan-review{margin-top:12px}

/* project library (markup from project-library.js / project-ui.js) */
.library-dialog{width:min(1100px,calc(100vw - 32px))}
.library-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px}
.device-notice{margin:0 0 18px;padding:10px 12px;background:var(--paper-2);border-radius:var(--r);font-size:13px}
.library-toolbar{display:grid;grid-template-columns:1fr 200px auto;gap:12px;align-items:end}
.library-toolbar .field{margin:0}
.library-subnav{display:flex;justify-content:space-between;align-items:center;margin:16px 0 8px}
.library-subnav .tabs{margin:0;border:0}
.library-count{font-size:13px;color:var(--text-3)!important}
.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.project-card{display:grid;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:visible}
.project-card.is-current{border-color:var(--ink)}
.project-thumbnail{position:relative;aspect-ratio:16/10;padding:12px;background:var(--sheet);border-bottom:1px solid var(--line-soft);border-radius:var(--r-lg) var(--r-lg) 0 0}
.project-thumbnail svg{width:100%;height:100%}
.thumbnail-placeholder{display:grid;place-items:center;height:100%;font-size:13px;color:var(--text-3)}
.current-project{position:absolute;left:10px;top:10px;padding:3px 8px;background:var(--ink);color:var(--ink-text);font-size:11px;letter-spacing:.1em;text-transform:uppercase;border-radius:2px}
.project-check{position:absolute;right:10px;top:10px}
.project-check input{width:20px;height:20px;min-height:0;accent-color:var(--ink)}
.project-card-body{padding:14px 14px 12px}
.project-card-body h3{margin:0 0 4px;font:400 22px/1.15 var(--serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.project-dimensions{margin:0;font-size:13px;color:var(--text-2)!important;font-variant-numeric:tabular-nums}
.project-card time{display:block;margin-top:2px;font-size:12px;color:var(--text-3)}
.project-card-actions{display:flex;gap:8px;margin-top:12px}
.project-card-actions>button{flex:1}
.project-more{position:relative}
.project-more>summary{display:grid;place-items:center;width:40px;height:40px;list-style:none;border:1px solid var(--line);border-radius:var(--r);cursor:pointer;letter-spacing:1px}
.project-more>summary::-webkit-details-marker{display:none}
.project-more>div{position:absolute;right:0;bottom:calc(100% + 6px);z-index:10;display:grid;min-width:200px;padding:6px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-2)}
.project-more>div button{justify-content:flex-start;border:0;background:none}
.project-more>div button:hover{background:var(--paper)}
.library-empty{grid-column:1/-1;padding:36px;text-align:center;border:1px dashed var(--line-strong);border-radius:var(--r-lg)}
.library-empty b{font:400 24px/1.2 var(--serif)}
.library-bulk{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:10px 12px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg)}
.version-row,.recovery-card{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.version-row small{display:block;color:var(--text-3)}
.recovery-card{display:grid}.recovery-card b{font:400 22px/1.2 var(--serif)}.recovery-card p{margin:0}
.recovery-actions{display:flex;flex-wrap:wrap;gap:8px}
#deleteNames{padding:0;list-style:none}
#deleteNames li{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
#deleteNames li span{grid-column:1;font-size:13px;color:var(--text-3)}#deleteNames li button{grid-row:span 2;grid-column:2}

/* ---------- desktop refinements ---------- */
@media (max-width:1279px){#saved .long{display:none}#saved .short{display:inline}#workspace{grid-template-columns:minmax(0,1fr) 352px}.inspector-head,.inspector-body,.inspector-foot{padding-left:22px;padding-right:22px}.chapters button{padding:0 10px}.chapters button.active::after{left:10px;right:10px}.lockup-text{display:none}.topbar{gap:14px}}
@media (max-width:1179px){.drawing-id span{display:none}.model-toggles button span{display:none}.model-toggles button{padding:0;width:38px}}

/* ---------- compact shell: phones and portrait tablets ---------- */
[data-shell=compact] .topbar{grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:56px 46px;gap:0 10px;height:auto;padding:0 10px 0 14px}
[data-shell=compact] .lockup-text{display:none}
[data-shell=compact] .lockup img{height:32px}
[data-shell=compact] .project-id{justify-items:start;padding-left:4px}
[data-shell=compact] .project-id{width:100%}
[data-shell=compact] .project-name{width:100%;max-width:100%;text-align:left;font-size:19px;text-overflow:ellipsis}
[data-shell=compact] #saved{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:6px}
[data-shell=compact] .chapters{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--ink-line);margin:0 -10px 0 -14px}
[data-shell=compact] .chapters button{min-height:46px;padding:0 4px;font-size:13px;gap:6px}
[data-shell=compact] .chapters button.active::after{left:12%;right:12%;bottom:0}
[data-shell=compact] #projects span,[data-shell=compact] #saveProject span{display:none}
[data-shell=compact] #projects,[data-shell=compact] #saveProject{width:40px;padding:0}
[data-shell=compact] .history{padding-right:4px;margin-right:0;border:0}
[data-shell=compact] .top-actions{gap:4px}
[data-shell=compact] #workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,54fr) minmax(0,46fr)}
[data-shell=compact] #workspace[data-sheet=peek]{grid-template-rows:minmax(0,1fr) auto}
[data-shell=compact] #workspace[data-sheet=full]{grid-template-rows:minmax(0,28fr) minmax(0,72fr)}
[data-shell=compact] #workspace:has(.inspector.dragging){grid-template-rows:minmax(0,1fr) auto}
[data-shell=compact] .inspector.dragging{height:var(--sheet-drag)}
[data-shell=compact] .inspector{grid-template-rows:auto auto minmax(0,1fr) auto;border-left:0;border-top:1px solid var(--line);box-shadow:0 -10px 30px rgba(19,20,22,.1);border-radius:12px 12px 0 0;margin-top:-10px;position:relative;z-index:10}
[data-shell=compact] #workspace[data-sheet=peek] .inspector-body{display:none}
[data-shell=compact] #workspace[data-sheet=peek] .inspector-head p{display:none}
[data-shell=compact] .sheet-handle{display:grid;place-items:center;height:26px;cursor:grab;touch-action:none}
[data-shell=compact] .sheet-handle span{width:40px;height:4px;border-radius:2px;background:var(--line-strong)}
[data-shell=compact] .sheet-handle:focus-visible{outline-offset:-4px}
[data-shell=compact] .inspector-head{padding:0 18px 10px;display:flex;align-items:flex-end}
[data-shell=compact] .stage-head{display:grid;grid-template-columns:auto 1fr;align-items:baseline;column-gap:12px}
[data-shell=compact] .stage-head h1{margin:0;font-size:30px;grid-column:2;grid-row:1}
[data-shell=compact] .stage-head .chapter-no{grid-column:1;grid-row:1}
[data-shell=compact] .stage-head p{grid-column:1/-1;margin-top:4px;font-size:13px}
[data-shell=compact] .inspector-head h2{font-size:24px}
[data-shell=compact] .inspector-body{padding:0 18px 20px}
[data-shell=compact] .inspector-foot{padding:10px 18px calc(10px + env(safe-area-inset-bottom))}
[data-shell=compact] #stageNext,[data-shell=compact] #stageBack{min-height:46px}
[data-shell=compact] .stagebar{grid-template-columns:auto 1fr;height:50px;padding:0 10px;gap:8px}
[data-shell=compact] .drawing-id{display:none}
[data-shell=compact] .viewmodes button{padding:0 11px}
[data-shell=compact] .snap select{width:84px}
[data-shell=compact] .statusline{display:none}
[data-shell=compact] .panes{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,calc(var(--split) * 100% - 4px)) 8px minmax(0,1fr)}
[data-shell=compact] [data-layout=plan] .panes,[data-shell=compact] [data-layout=model] .panes{grid-template-rows:minmax(0,1fr)}
[data-shell=compact] .split-divider{cursor:row-resize}
[data-shell=compact] .split-divider::after{width:36px;height:2px;margin:-1px 0 0 -18px}
[data-shell=compact] .split-divider:hover::after,[data-shell=compact] .split-divider.dragging::after{width:56px;height:2px;margin:-1px 0 0 -28px}
[data-shell=compact] .tool-rail{left:10px;right:10px;top:10px;flex-direction:row;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;border-radius:var(--r-lg)}
[data-shell=compact] .tool-rail::-webkit-scrollbar{display:none}
[data-shell=compact] .tool-rail>button,[data-shell=compact] .flyout>summary{flex:none}
[data-shell=compact] .tool-rail>button>span,[data-shell=compact] .tool-rail>button>kbd,[data-shell=compact] .flyout>summary>span{display:none}
[data-shell=compact] .rail-rule{width:1px;height:24px;margin:0 3px;flex:none}
[data-shell=compact] .flyout{position:static}
[data-shell=compact] .flyout-panel{position:fixed;left:10px;right:10px;top:auto;width:auto;margin-top:8px;grid-template-columns:repeat(3,minmax(0,1fr))}
[data-shell=compact] .plan-pane .pane-foot{left:10px}
[data-shell=compact] #plan{top:66px;height:calc(100% - 66px)}
#saved .short{display:none}
[data-shell=compact] #saved .long{display:none}[data-shell=compact] #saved .short{display:inline}
[data-shell=compact] .pane-foot{left:10px;right:10px;bottom:10px}
[data-shell=compact] .pane-note{display:none}
[data-shell=compact] .plan-pane::before{inset:6px}
[data-shell=compact] .model-top{top:10px;right:10px}
[data-shell=compact] .model-toggles button span{display:none}
[data-shell=compact] .model-toggles button{width:40px;padding:0}
[data-shell=compact] .dock button{min-height:40px}
[data-shell=compact] .dialog{width:100vw;max-width:none;max-height:calc(var(--usable-height,100dvh) - 24px);margin:auto 0 0;border-radius:12px 12px 0 0}
[data-shell=compact] .dialog-body{padding:24px 18px 18px}
[data-shell=compact] .dialog-footer{padding:12px 18px calc(12px + env(safe-area-inset-bottom))}
[data-shell=compact] .dialog-footer button{flex:1}
[data-shell=compact] .dialog h2{font-size:30px}
[data-shell=compact] .type-choice,[data-shell=compact] .library-toolbar{grid-template-columns:1fr}
[data-shell=compact] .layout-choices{grid-template-columns:1fr 1fr}
[data-shell=compact] .layout-card:first-child{grid-column:1/-1}
[data-shell=compact] .layout-card:first-child .layout-art{aspect-ratio:3/1}
[data-shell=compact] .toast{bottom:calc(16px + env(safe-area-inset-bottom))}
@media (max-width:420px){[data-shell=compact] .viewmodes button span{display:none}[data-shell=compact] .viewmodes button{width:44px;padding:0}[data-shell=compact] .chapters button i{display:none}[data-shell=compact] .layout-choices{grid-template-columns:1fr}[data-shell=compact] .fixture-grid{grid-template-columns:1fr 1fr}}

@media (forced-colors:active){button.active,button[aria-pressed=true],.tool-rail>button.active{outline:2px solid Highlight}.chapters button.active::after{background:Highlight}.swatch.active{outline:2px solid Highlight}}
