/* Width and stacking of the caption strip live in editor-interface.css; the
   sequence only raises the caption above the viewport so its controls are clickable. */
.design-caption:has(>.assembly-sequence){z-index:5}
.assembly-sequence{position:relative;width:min(330px,100%);margin-top:12px;pointer-events:auto;text-shadow:none;color:#f5f2ea;background:#151719f5;border:1px solid #666;border-radius:4px;font-size:12px}
.assembly-sequence summary{cursor:pointer;padding:12px;min-height:42px;font-weight:600}
.assembly-sequence-body{padding:0 12px 12px;max-height:min(340px,max(100px,calc(100dvh - 470px)));overflow:auto;overscroll-behavior:contain}
.assembly-sequence p{line-height:1.45;margin:10px 0;color:inherit}
.design-caption .assembly-sequence p{font-size:inherit}
.assembly-sequence label{display:grid;gap:6px}
.assembly-sequence select{width:100%;min-width:0;max-width:100%;min-height:44px;background:#24282b;color:inherit;border:1px solid #888;border-radius:3px;padding:6px}
.assembly-sequence-actions{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.assembly-sequence button{flex:1;min-width:0;min-height:44px;background:#303539;color:inherit;border:1px solid #777;border-radius:3px;padding:6px;white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.assembly-sequence button:disabled{opacity:.45;cursor:default}
.assembly-sequence :focus-visible{outline:2px solid #fff;outline-offset:2px}
.two-d-active .assembly-sequence,.demo-focus .assembly-sequence{display:none}
@media(max-width:760px){.design-caption:has(>.assembly-sequence){left:12px;right:12px;max-width:calc(100% - 24px)}.assembly-sequence{width:100%}.assembly-sequence-body{max-height:min(260px,max(100px,calc(100dvh - 660px)))}}

.design-caption .framing-source-notice{max-width:460px;line-height:1.4;padding:7px 9px;background:#151719e8;color:#f5f2ea;border-radius:3px}

.app-dialog.planning-dialog{width:min(900px,calc(100vw - 32px))}.material-planning p{font-size:12px;line-height:1.5;margin:12px 0}.material-planning h3,.material-planning h4{margin:18px 0 10px}.material-planning details{margin:14px 0;padding:12px;border:1px solid #74806e;border-radius:6px;font-size:12px;line-height:1.6;overflow-wrap:anywhere}.material-planning summary{cursor:pointer;font-weight:600}.material-planning ul,.material-planning ol{padding-left:20px}.stock-input{padding:12px 0;border-bottom:1px solid #65705e;margin-bottom:12px}.stock-input label{display:grid;gap:6px;font-size:12px}.stock-input input{padding:9px;min-height:42px;border:1px solid #87917f;border-radius:5px}.stock-input .button{margin-top:7px}.planning-table{overflow:auto}.planning-table table{border-collapse:collapse;font-size:12px;width:100%;min-width:520px}.planning-table td,.planning-table th{padding:10px;border-bottom:1px solid #697263;text-align:left;vertical-align:top}@media(max-width:650px){.app-dialog.planning-dialog{padding:18px}.material-planning .button{min-height:44px}}
.app-dialog.assembly-dialog{width:min(900px,calc(100vw - 32px))}.assembly-controls{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0}.assembly-controls label{display:grid;gap:6px;min-width:160px;font-size:12px}.assembly-controls select{min-height:42px;padding:8px;border:1px solid #8c958b;border-radius:6px}.assembly-workspace>p{margin:12px 0;font-size:12px;line-height:1.5}.assembly-page{margin:16px 0;background:#d8dcd5;padding:12px;max-height:65vh;overflow:auto;border-radius:6px}.assembly-page svg{display:block;width:100%;height:auto;background:white}.assembly-actions{display:flex;gap:10px;flex-wrap:wrap}.assembly-stale{padding:12px;border:1px solid #8b9488;border-radius:6px}.assembly-stale p{margin:0 0 10px}.assembly-print-frame{position:fixed;width:1px;height:1px;left:-10000px;top:0;border:0;pointer-events:none}@media(max-width:650px){.app-dialog.assembly-dialog{padding:18px;width:calc(100vw - 24px)}.assembly-page{padding:3px}.assembly-actions .button{flex:1;min-height:44px}}
.app-dialog.drawing-dialog{width:min(1060px,calc(100vw - 36px))}
.drawing-controls{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.drawing-controls label{display:grid;gap:8px;font-size:12px;color:#bbc7b2}
.drawing-controls select{width:100%;min-width:0;height:40px;border:1px solid #ffffff29;background:#202c24;color:#edf0e5;border-radius:7px;padding:0 10px;font:inherit}
.drawing-revision{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:15px 0 6px;font-size:12px;color:#bbc7b2}
.drawing-revision-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
.drawing-revision .button{font-size:11px}
.drawing-move-toggle{min-height:34px;padding:7px 11px;white-space:nowrap}.drawing-move-toggle.active{border-color:#a9c89c;background:#31483a;color:#f3f7ef}
.drawing-move-instruction{margin:4px 0 9px;padding:8px 10px;border:1px solid #89a77d66;border-radius:6px;background:#203329;color:#dbe8d6;font-size:11px;line-height:1.45}
.drawing-note{font-size:11px;line-height:1.6;color:#adbaa5;margin:8px 0 15px}
.drawing-preview{background:white;border-radius:5px;overflow:auto;height:55dvh;min-height:180px;max-height:55dvh;position:relative;overscroll-behavior:contain}
.drawing-preview:focus-visible{outline:2px solid #9cb892;outline-offset:2px}
.drawing-canvas{position:relative;width:100%;min-height:100%;box-sizing:content-box}
.drawing-canvas[data-fit-mode="diagram"]{width:max-content;min-width:0;min-height:0}
.drawing-preview img{display:block;width:100%;max-width:none;height:auto}
.drawing-inline-svg{display:block;min-width:100%;max-width:none;height:auto}.drawing-canvas[data-fit-mode="diagram"] .drawing-inline-svg{min-width:0}.drawing-inline-svg>svg{display:block;width:100%;height:auto}.drawing-inline-svg svg>rect,.drawing-inline-svg svg>g{pointer-events:none}.drawing-inline-svg svg g[data-opening-id]{pointer-events:all;cursor:pointer}.drawing-inline-svg [data-opening-selectable="true"]:focus{outline:none}.drawing-inline-svg [data-opening-selectable="true"]:focus path{stroke:#a55b1d;stroke-width:2}
.drawing-inline-svg.opening-move-mode svg g[data-opening-id]{cursor:grab;touch-action:none}.drawing-inline-svg.opening-dragging svg g[data-opening-id]{cursor:grabbing}.drawing-inline-svg .opening-move-ghost{fill:#dbe8d622;stroke:#a55b1d;stroke-width:2;stroke-dasharray:7 4;vector-effect:non-scaling-stroke;pointer-events:none}
.drawing-inline-svg.opening-move-mode[data-projection-view="plan"] svg g[data-opening-id] path{stroke:#a55b1d;stroke-width:2;vector-effect:non-scaling-stroke}
.drawing-canvas>p{position:absolute;inset:0;display:grid;place-items:center;font-size:13px;color:#354b3e}
.drawing-error{padding:18px;border:1px solid #b5706166;color:#f6d4c8;border-radius:5px;font-size:12px;line-height:1.6}
.drawing-actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}
/* Download and print stay in the tab order while a preview loads (aria-disabled, not disabled), so the dialog's keyboard wrap does not move under the user. */
.drawing-actions .button[aria-disabled=true]{cursor:default;opacity:.35}
.drawing-zoom{display:flex;align-items:center;gap:8px;margin-left:auto}
.drawing-zoom select{font:inherit;background:#202c24;color:#edf0e5;padding:7px;border:1px solid #ffffff29;border-radius:5px}
.drawing-center{white-space:nowrap}
/* "Recenter drawing" sits in the zoom row as an inline text link, on the row's own
   baseline; the panel-bottom padding of .scope-link does not apply here. */
.drawing-revision-actions .drawing-center{width:auto;padding:0;display:inline-flex;align-items:center;align-self:center;font-size:11px;color:#bbc7b2;text-decoration:underline;text-underline-offset:3px}
.drawing-revision-actions .drawing-center:hover{color:#edf0e5}
/* The framing plan-sheet picker outside the controls grid takes the same dark field. */
.drawing-workspace>label{display:grid;gap:8px;font-size:12px;color:#bbc7b2;margin-top:14px}
.drawing-workspace>label>select{width:100%;min-width:0;height:40px;border:1px solid #ffffff29;background:#202c24;color:#edf0e5;border-radius:7px;padding:0 10px;font:inherit}
.drawing-print{display:none}
.live-drawing-surface{position:absolute;inset:0;z-index:6;overflow:hidden;background:#18221e}.two-d-active.customizing .live-drawing-surface{left:365px}
.drawing-workspace-live{height:100%;display:flex;flex-direction:column;padding:22px 26px 86px;color:#edf0e5;background:radial-gradient(circle at 82% 8%,#405848 0,#1b2721 38%,#151d19 100%)}
.drawing-live-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:17px}.drawing-live-heading h2{font-size:23px;letter-spacing:-.7px;font-weight:620}.drawing-live-heading>div>p:last-child{font-size:11px;color:#b5c5af;margin-top:5px}.drawing-eyebrow{font-size:10px!important;text-transform:uppercase;letter-spacing:.12em;color:#a9be9d!important;margin-bottom:5px!important}.drawing-live-tools{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px}.drawing-view-tabs,.drawing-scope{display:flex;gap:5px;padding:4px;border:1px solid #ffffff21;border-radius:9px;background:#101813a8}.drawing-view-tabs button,.drawing-scope button{min-height:34px;border:0;border-radius:6px;background:transparent;color:#cbd6c6;padding:7px 11px;font-size:11px}.drawing-view-tabs button.active,.drawing-scope button.active{background:#edf0e5;color:#1b261f;font-weight:700}.drawing-workspace-live .drawing-revision{margin-top:3px}.drawing-workspace-live .drawing-preview{flex:1;height:auto;max-height:none;min-height:0;border:1px solid #78917255;box-shadow:0 12px 35px #0004}.drawing-workspace-live .drawing-preview[data-zoom="200"],.drawing-workspace-live .drawing-preview[data-zoom="400"],.drawing-workspace-live .drawing-preview[data-zoom="800"]{overflow:auto}.two-d-active .viewport,.two-d-active .design-caption,.two-d-active .view-mode-switch,.two-d-active .model-hint{visibility:hidden}.two-d-active .customize-panel,.two-d-active .inspector-panel{z-index:9}.two-d-active .bottom-toolbar,.two-d-active .app-status{z-index:10}
@media(max-width:650px){.drawing-controls{grid-template-columns:1fr;gap:12px}.drawing-revision{align-items:flex-start;flex-direction:column}.app-dialog.drawing-dialog{width:calc(100vw - 24px);padding:18px}.drawing-actions .button{min-height:42px}}
@media(max-width:650px){.two-d-active.customizing .live-drawing-surface{left:0}.drawing-workspace-live{padding:16px 12px 120px}.drawing-live-heading{align-items:flex-start;margin-bottom:11px}.drawing-live-heading h2{font-size:19px}.drawing-live-heading .button{min-height:36px;padding:8px 10px;font-size:10px}.drawing-live-tools{align-items:stretch;flex-direction:column;gap:7px}.drawing-view-tabs,.drawing-scope{width:100%;overflow:auto}.drawing-view-tabs button,.drawing-scope button{flex:1;white-space:nowrap;padding:7px 9px}.drawing-workspace-live .drawing-revision{flex-direction:column;align-items:stretch;margin:6px 0}.drawing-workspace-live .drawing-revision-actions{justify-content:flex-start;flex-wrap:wrap}.drawing-workspace-live .drawing-note{margin:4px 0 9px;font-size:10px}.drawing-workspace-live .drawing-zoom{margin-left:0}.drawing-workspace-live .drawing-preview{min-height:180px}}
@media print{
  @page{margin:12mm}
  html:has(.drawing-workspace),body:has(.drawing-workspace){height:auto;overflow:visible;background:white!important;color-scheme:light}
  .builder-app:has(.drawing-workspace){height:auto;overflow:visible}
  .builder-app:has(.drawing-workspace)>:not(.drawing-dialog){display:none!important}
  .app-dialog.drawing-dialog{display:block;position:static;width:100%;max-width:none;max-height:none;height:auto;overflow:visible;margin:0;border:0;border-radius:0;padding:0;box-shadow:none;background:white;color:black}
  .drawing-dialog .dialog-heading,.drawing-controls,.drawing-revision,.drawing-note,.drawing-actions,.drawing-preview{display:none!important}
  .drawing-print{display:block;background:white}
  .drawing-print>img{display:block;width:100%;max-height:265mm;object-fit:contain;object-position:top}
  .drawing-print-notes{break-before:page;font:10pt/1.4 Arial,sans-serif;color:#18251c;background:white}
  .drawing-print-notes h1{font-size:16pt;margin:0 0 10pt}
  .drawing-print-notes ol{padding-left:20pt}
  .drawing-print-notes li{margin:0 0 8pt;break-inside:avoid}
  .drawing-dialog::backdrop{display:none}
}

.drawing-inline-svg [data-member-id]{pointer-events:all;cursor:pointer}.drawing-inline-svg [data-member-id][data-selected=true] path,.drawing-inline-svg [data-member-id]:focus-visible path{stroke:#b95605;stroke-width:2}.drawing-inline-svg [data-member-id]:focus-visible{outline:2px solid #b95605}
@media print{
 @page framing13x19portrait{size:13in 19in;margin:0}
 .drawing-print.framing-fixed-print.framing-portrait{page:framing13x19portrait;width:13in}
 .drawing-print.framing-fixed-print.framing-portrait>img{width:13in;height:19in}
 @page framing13x19{size:19in 13in;margin:0}
 .drawing-print.framing-fixed-print{page:framing13x19;width:19in;max-width:none}
 .drawing-print.framing-fixed-print>img{width:19in;height:13in;max-height:none;max-width:none;object-fit:contain}
 .framing-fixed-print .drawing-print-notes{box-sizing:border-box;width:100%;padding:.5in}
}

/* Screen annotation reflow preserves authoritative SVG and export geometry. */
.drawing-screen-annotations{flex:none;font-size:12px;line-height:1.4;color:#d2d8cc;margin:4px 0 8px;max-width:100%;overflow-wrap:anywhere}
.drawing-screen-annotations p{margin:0}
.drawing-workspace-live .drawing-inline-svg svg text[data-building-dimension-basis],.drawing-workspace-live .drawing-inline-svg svg text[data-height-datum-basis]{visibility:hidden}
@media print{.drawing-screen-annotations{display:none!important}}
@font-face{font-family:Inter;src:local("Inter");font-display:swap}
:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#f3f1eb;background:#131615;font-synthesis:none;font-weight:400;--accent:#c42c1d;--muted:#a5aaa4;--line:#ffffff17;--surface:#202422;--blue:#367bcc}
.ground-visibility{position:absolute;right:24px;top:72px;display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #ffffff29;border-radius:8px;background:#161c1bcc;backdrop-filter:blur(20px);color:#ebeee9;font-size:10px}.ground-visibility input{margin:0;accent-color:#7fa287}.two-d-active .ground-visibility{visibility:hidden}@media(max-width:1000px){.ground-visibility{right:18px;top:68px}}@media(max-width:650px){.ground-visibility{right:14px;top:54px;padding:6px 8px}}@media print{.ground-visibility{display:none}}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.35}button,input,select,textarea{touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #84b9f3;outline-offset:3px}button{color:inherit}button svg{flex-shrink:0}h1,h2,h3,p{margin:0}.builder-app{height:100dvh;min-height:480px;overflow:hidden;background:#1d262b}.app-header{height:74px;background:#111312;display:flex;align-items:center;justify-content:space-between;padding:0 27px;border-bottom:1px solid #ffffff0d;position:relative;z-index:20}.brand{display:flex;align-items:center;gap:14px;font-size:20px;font-weight:850;letter-spacing:-.6px}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border:1px solid #ffffff2c;border-radius:11px;background:#ffffff07}.brand-mark svg{width:20px;height:20px}.brand-red{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:14px}.history-actions{display:flex;gap:5px;padding-right:16px;border-right:1px solid var(--line)}.icon-button{width:34px;height:34px;display:inline-grid;place-items:center;border:0;border-radius:7px;background:transparent;color:inherit}.icon-button:hover{background:#ffffff10}.share-button{width:40px;height:40px;border:1px solid #ffffff2b;border-radius:50%}.button{border:1px solid #ffffff29;border-radius:8px;background:#ffffff08;padding:11px 14px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:12px;font-weight:650;min-height:39px}.button:hover{background:#ffffff15}.button.primary{background:#e8e9df;color:#1c2421;border-color:#e8e9df}.button.primary:hover{background:#fff}.button.danger{background:transparent;color:#e9a49a;border-color:#df7c6938}.button.full{width:100%}.header-save{font-size:12px;background:#ffffff08}.workspace{position:relative;height:calc(100dvh - 74px);min-height:406px}.viewport{position:absolute;inset:0;overflow:hidden}.viewport>div,.viewport canvas{width:100%;height:100%;display:block;outline:none}.design-caption{position:absolute;top:25px;left:27px;pointer-events:none;text-shadow:0 1px 8px #0009;color:white;transition:left .22s}.design-caption h1{font-size:17px;letter-spacing:-.3px;font-weight:620}.design-caption p{margin-top:6px;font-size:11px;color:#f0f1edcc}.customizing .design-caption{left:388px}.view-mode-switch{position:absolute;right:24px;top:24px;display:flex;gap:2px;border:1px solid #ffffff29;border-radius:10px;padding:4px;background:#161c1bcc;backdrop-filter:blur(20px)}.view-mode-switch button{border:0;border-radius:6px;background:transparent;padding:8px 11px;color:#ebeee9;font-size:11px}.view-mode-switch button.active{background:#f2f1e8;color:#1b2320}.customize-panel{position:absolute;left:20px;top:18px;bottom:117px;width:335px;display:flex;flex-direction:column;border:1px solid #ffffff1c;border-radius:14px;background:#1a201eF5;box-shadow:0 15px 42px #0003;backdrop-filter:blur(22px);transform:translateX(-380px);opacity:0;transition:transform .22s,opacity .22s;z-index:5}.customize-panel.open{transform:translateX(0);opacity:1}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;padding:21px 18px 17px 21px}.panel-heading h2{font-size:22px;letter-spacing:-.9px;font-weight:620}.panel-heading p{font-size:10px;margin-top:7px;color:var(--muted)}.panel-heading .icon-button{margin:-5px -5px 0 0}.control-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;padding:0 14px 12px;border-bottom:1px solid var(--line)}.control-tabs button{border:0;border-radius:6px;background:transparent;font-size:11px;color:#aeb6ae;padding:10px 4px;white-space:nowrap}.control-tabs button[aria-selected=true]{background:#ffffff0d;color:#fff}.control-tabs button:hover{background:#ffffff08}.control-content{overflow:auto;overscroll-behavior:contain;padding:0 20px 17px;scrollbar-width:thin;scrollbar-color:#75847845 transparent}.field-group{padding:19px 0 20px;border-bottom:1px solid var(--line)}.field-group h3{font-size:11px;color:#f0f0e7;font-weight:650;margin-bottom:16px;letter-spacing:.15px}.field{margin:0 0 13px;min-width:0}.field:last-child{margin-bottom:0}.field label{display:block;font-size:10px;color:#b8c0b7;margin-bottom:7px;line-height:1.35}
/* A control whose <label> IS the field (specialty finish, custom opening size and
   color) gets the same caption style as a label inside one; its own inputs keep
   their explicit sizes. */
label.field{display:block;font-size:10px;color:#b8c0b7;line-height:1.35}
label.field>span:first-child{display:block;margin-bottom:7px}
label.field>input[type=color]{display:block;margin-top:7px;width:100%;height:36px;padding:2px;border:1px solid #ffffff17;border-radius:6px;background:#ffffff08}
/* A note that introduces the next control keeps its own breathing room below. */
.field-note+.field,.field-note+.color-field,.field-note+.two-fields{margin-top:12px}.field select,.inspector-panel select{width:100%;max-width:100%;background:#ffffff08;color:#e9eae3;border:1px solid #ffffff17;border-radius:6px;height:36px;padding:0 9px;font-size:11px;color-scheme:dark}.field select:hover{border-color:#ffffff3c}.number-input{position:relative;display:flex;align-items:center}.number-input input{width:100%;background:#ffffff08;color:#f3f2e9;border:1px solid #ffffff17;border-radius:6px;height:36px;padding:0 36px 0 10px;font-size:12px;font-variant-numeric:tabular-nums;-moz-appearance:textfield}.number-input input::-webkit-inner-spin-button{opacity:0}.number-input:hover input::-webkit-inner-spin-button{opacity:.5}.number-input span{position:absolute;right:10px;pointer-events:none;font-size:9px;color:#8c988c}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-note,.empty-note{font-size:10px;color:#99a596;line-height:1.65;margin-top:12px}.toggle{display:flex;align-items:center;position:relative;justify-content:space-between;min-height:34px;gap:12px;font-size:11px;color:#c3cbc0}.toggle input{position:absolute;right:0;width:32px;height:25px;opacity:0;cursor:pointer;margin:0}.toggle-track{width:30px;height:17px;border-radius:10px;background:#4a544c;border:1px solid #ffffff0d;pointer-events:none;position:relative}.toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:11px;height:11px;background:#b6c0b4;border-radius:50%;transition:transform .15s}.toggle input:checked+.toggle-track{background:#5b7560}.toggle input:checked+.toggle-track:after{background:#f1f2e9;transform:translateX(13px)}.toggle input:focus-visible+.toggle-track{outline:2px solid #84b9f3;outline-offset:3px}.color-field{border:0;padding:0;margin:0 0 19px;min-width:0}.color-field:last-child{margin-bottom:0}.color-field legend{font-size:10px;margin-bottom:9px;padding:0;display:block;width:100%;color:#c3cbc0}.color-field legend span{float:right;color:#8d998a;font-size:9px}.swatches{display:flex;flex-wrap:wrap;gap:7px}.swatches button{flex:0 0 31px;width:31px;height:27px;border-radius:4px;border:1px solid #ffffff30;position:relative}.swatches button.selected:after{content:"";position:absolute;inset:-4px;border:1px solid #f0f2e5;border-radius:6px}.scope-link{display:flex;align-items:center;justify-content:space-between;background:none;border:0;width:100%;padding:19px 0 2px;color:#9eaa99;font-size:10px}.scope-link svg{width:12px;height:12px}.entity-list{display:grid;gap:6px}.entity{display:flex;align-items:center;justify-content:space-between;text-align:left;padding:12px 10px;border:1px solid #ffffff16;background:#ffffff03;border-radius:6px;width:100%;gap:8px}.entity.selected{border-color:#819b7d;background:#95b08b0d}.entity strong{font-size:10px;display:block;font-weight:550}.entity small{font-size:9px;color:#9da995;display:block;margin-top:5px}.entity svg{width:12px;height:12px}.bottom-toolbar{position:absolute;bottom:41px;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(4,1fr);gap:9px;width:min(620px,calc(100% - 40px));z-index:8}.bottom-toolbar button{min-height:62px;padding:10px 18px;display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid #ffffff29;border-radius:12px;background:#121816e8;box-shadow:0 6px 18px #0002;backdrop-filter:blur(18px);font-size:12px;white-space:nowrap}.bottom-toolbar button:hover{background:#25302cF5}.bottom-toolbar button.active{background:#367bce;border-color:#64a3ec}.bottom-toolbar .output-action{background:#f4f2e9;color:#171e1b;font-weight:650;border-color:#f4f2e9}.bottom-toolbar .output-action:hover{background:white}.model-hint{position:absolute;bottom:115px;left:50%;transform:translateX(-50%);font-size:10px;color:#fffbd5bb;text-shadow:0 1px 5px #000;pointer-events:none;white-space:nowrap}.model-hint span{padding:0 4px}.app-status{position:absolute;bottom:0;left:0;right:0;min-height:28px;display:flex;gap:15px;align-items:center;padding:5px 22px;background:#101814cc;font-size:9px;color:#b8c1af;z-index:10}.app-status>span:first-child{flex:1}.app-status button{font-size:9px;background:none;border:0;color:#c9d3bf;padding:2px 0;text-decoration:underline;text-underline-offset:3px}.revision-label{font-variant-numeric:tabular-nums;color:#8d9a83}.design-error{position:absolute;left:50%;bottom:126px;transform:translateX(-50%);max-width:min(530px,90vw);background:#391c19f2;border:1px solid #b5706166;border-radius:9px;box-shadow:0 4px 20px #0004;padding:13px 17px;font-size:11px;line-height:1.6;z-index:10;color:#f6d4c8}.design-error strong{font-weight:650}.inspector-panel{position:absolute;right:21px;top:81px;max-height:calc(100% - 220px);overflow:auto;width:285px;padding:17px;border:1px solid #ffffff25;border-radius:11px;z-index:7;box-shadow:0 10px 25px #0003;scrollbar-width:thin;scrollbar-color:#75847870 transparent;
 /* Scroll hint: a shadow fixed at the scrollport's bottom edge, covered by a panel-colour
    band that scrolls with the content, so it shows exactly while more rows are below. */
 background:linear-gradient(#18211c00,#18211c 70%) center bottom/100% 34px no-repeat local,linear-gradient(#0b100e00,#0b100ef0) center bottom/100% 34px no-repeat scroll,#18211cf5}.inspector-heading{display:flex;align-items:center;justify-content:space-between}.inspector-heading h2{font-size:14px;font-weight:600}.inspector-heading .icon-button{width:25px;height:25px}.inspector-panel .field-note{margin:7px 0 13px}.entity-detail h3{font-size:13px;margin:19px 0 14px;text-transform:capitalize}.entity-detail dl{display:grid;grid-template-columns:90px 1fr;gap:12px 8px;font-size:10px;line-height:1.45}.entity-detail dt{color:#94a28b}.entity-detail dd{margin:0;color:#e2e9da;overflow-wrap:anywhere}.technical-value{font-size:9px}.app-dialog{width:min(530px,calc(100vw - 36px));max-height:calc(100dvh - 60px);overflow:auto;background:#1b241efc;color:#edf0e5;border:1px solid #ffffff29;padding:25px 27px 28px;border-radius:17px;box-shadow:0 25px 100px #0008}.app-dialog::backdrop{background:#06100bb3;backdrop-filter:blur(7px)}.dialog-heading{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:16px}.dialog-heading h2{font-size:22px;font-weight:550;letter-spacing:-.7px}.dialog-heading .icon-button{flex-shrink:0}.dialog-intro{font-size:12px;color:#adbaa5;line-height:1.7;margin-bottom:22px}.view-choices{display:grid;gap:8px}.view-choices button{background:#ffffff05;border:1px solid #ffffff12;border-radius:8px;text-align:left;padding:17px}.view-choices strong{display:block;font-size:13px;font-weight:550}.view-choices span{display:block;margin-top:7px;font-size:11px;color:#a7b39f}.output-list{display:grid}.output-list button{display:flex;align-items:center;gap:14px;text-align:left;border:0;border-top:1px solid var(--line);padding:18px 0;background:none}.output-list button>span{flex:1}.output-list strong{display:block;font-size:13px;font-weight:550}.output-list small{font-size:10px;line-height:1.6;display:block;color:#a2af99;margin-top:5px}.output-list button>svg:last-child{width:14px}.coverage-list>div{border-top:1px solid var(--line);padding:17px 0}.coverage-list strong{font-size:12px;font-weight:600}.coverage-list p{font-size:11px;color:#b0bca7;line-height:1.7;margin-top:8px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(min-width:1200px){.customizing .bottom-toolbar{left:calc(50% + 160px)}.customizing .model-hint{left:calc(50% + 160px)}}
@media(max-width:1000px){.design-caption{top:82px}.customizing .design-caption{display:none}.view-mode-switch{right:18px;top:20px}.bottom-toolbar{width:min(575px,calc(100% - 30px))}.bottom-toolbar button{padding:10px 13px}.customize-panel{bottom:120px}}
@media(max-width:650px){.app-header{height:66px;padding:0 15px}.brand{font-size:16px;gap:9px;letter-spacing:-.6px}.brand-mark{width:32px;height:32px;border-radius:9px}.brand-mark svg{width:16px;height:16px}.header-actions{gap:5px}.history-actions{border:0;padding:0;gap:1px}.history-actions .icon-button{width:27px;height:30px}.history-actions svg{width:15px;height:15px}.header-save{padding:8px;min-height:32px}.header-save span{display:none}.header-save svg{width:16px;height:16px}.share-button{width:31px;height:31px}.share-button svg{width:15px;height:15px}.workspace{height:calc(100dvh - 66px)}.design-caption{left:17px;top:73px}.design-caption h1{font-size:14px}.design-caption p{font-size:10px;margin-top:5px}.view-mode-switch{right:14px;left:14px;top:14px;width:max-content;margin-left:auto;padding:3px;border-radius:8px}.view-mode-switch button{padding:7px 10px;font-size:10px}.bottom-toolbar{bottom:38px;gap:6px;width:calc(100% - 24px)}.bottom-toolbar button{flex-direction:column;gap:7px;min-height:70px;padding:8px 3px;font-size:10px;border-radius:12px}.bottom-toolbar svg{width:21px;height:21px}.model-hint{bottom:118px;font-size:9px}.app-status{padding:5px 13px;gap:9px;font-size:8px}.app-status button{font-size:8px}.revision-label{display:none}.customize-panel{left:12px;right:12px;top:12px;bottom:124px;width:auto;max-width:390px;transform:translateY(30px);pointer-events:none}.customize-panel.open{transform:translateY(0);pointer-events:auto}.panel-heading{padding:18px 18px 13px}.panel-heading h2{font-size:21px}.panel-heading p{font-size:10px}.control-content{padding:0 18px 12px}.field-group{padding:17px 0}.field-group h3{font-size:12px}.field label,.toggle,.color-field legend{font-size:11px}.field select,.number-input input{height:39px;font-size:12px}.control-tabs button{padding:9px 3px;font-size:11px}.inspector-panel{right:12px;left:12px;top:68px;width:auto;max-width:330px;max-height:calc(100% - 210px)}.design-error{bottom:121px;width:calc(100% - 28px);max-width:none;font-size:10px}.app-dialog{padding:21px}.dialog-heading h2{font-size:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{.app-header,.customize-panel,.bottom-toolbar,.view-mode-switch,.app-status,.model-hint,.design-caption,.inspector-panel{display:none}.workspace{height:100vh}}
.share-label{display:block;font-size:11px;color:#aebca5;margin-bottom:18px}.share-label textarea{display:block;width:100%;height:100px;resize:vertical;margin-top:9px;padding:11px;border:1px solid #ffffff25;background:#ffffff05;border-radius:7px;color:#e3ecd9;font:10px/1.6 ui-monospace,monospace;overflow-wrap:anywhere}.migration-counts{font-size:12px;color:#b9c9ab;margin-bottom:14px}.migration-fields{max-height:42vh;overflow:auto;border-top:1px solid var(--line);scrollbar-width:thin}.migration-fields>div{padding:13px 0;border-bottom:1px solid var(--line);font-size:10px}.migration-fields strong{font-weight:500;overflow-wrap:anywhere}.migration-fields span{float:right;color:#9fbb8e;font-size:9px}.migration-fields .migration-blocked{color:#efb08e}.migration-fields p{font-size:10px;color:#aab8a0;line-height:1.6;margin-top:6px;clear:both}.migration-actions{display:flex;flex-wrap:wrap;gap:9px;margin:18px 0}.migration-actions .button{font-size:10px}

.project-library{padding:14px 0;border-bottom:1px solid #7c8878;margin-bottom:18px}.library-fields{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0;align-items:end}.library-fields label{display:grid;gap:6px;flex:1;min-width:160px;font-size:12px}.library-fields input,.library-fields select{min-height:40px;width:100%;padding:8px;border:1px solid #8c958b;border-radius:5px}.project-library>.button{margin:4px 8px 4px 0}.project-library .output-list small{overflow-wrap:anywhere}

.user-library-records article{padding:16px 0;border-bottom:1px solid #697467}.user-library-records .button{margin:6px 8px 4px 0}.library-favorites{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.entity-detail a{color:inherit;text-decoration:underline}.entity-detail h4{margin-top:14px}.entity-detail p{font-size:12px;line-height:1.5;overflow-wrap:anywhere}

.identity-notice{position:absolute;bottom:116px;left:50%;transform:translateX(-50%);width:min(580px,calc(100% - 28px));padding:12px 16px;background:#202b25f2;color:#edf0e8;border:1px solid #85927c;border-radius:8px;font-size:12px;line-height:1.5;z-index:8}@media(max-width:650px){.identity-notice{bottom:125px;font-size:11px}}
/* The existing desktop panel keeps its position; give the model the area actually visible beside it. */
@media(min-width:901px){.customizing .viewport{left:370px}.customizing .model-hint{left:calc(50% + 185px)}}

/* Keep keyboard focus inside the clipped canvas viewport. */
.viewport canvas:focus-visible{outline:3px solid #84b9f3;outline-offset:-3px}

/* Current native reference controls use the existing dark control palette. */
[data-native-reference-controls]{position:relative;pointer-events:auto;width:min(340px,100%);margin-top:12px;max-height:210px;overflow:auto;border:1px solid #ffffff29;box-shadow:0 4px 18px #0005;font-size:12px;line-height:1.4;text-shadow:none}
[data-native-reference-controls] section{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
[data-native-reference-controls] section>button:first-child,[data-native-reference-controls] p,[data-native-reference-controls] output,[data-native-reference-controls] ul{grid-column:1/-1}
[data-native-reference-controls] button{min-height:36px;padding:7px 10px;border:1px solid #ffffff29;border-radius:5px;background:#202422;color:#f3f1eb;font-size:11px;line-height:1.3;white-space:normal}
[data-native-reference-controls] button[aria-pressed=true]{background:#351714;border-color:#ab3026}
[data-native-reference-controls] p{font-size:11px;color:#c5cbc6}
[data-native-reference-controls] output{display:block;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
[data-native-reference-controls] ul{margin:0;padding-left:18px;overflow-wrap:anywhere}
[data-native-reference-controls] li{margin-top:6px}
[data-native-reference-controls] li button{margin-left:8px}
[data-native-reference-controls]>small{display:block;margin-top:8px;color:#c5cbc6;font-size:10px;line-height:1.4}
@media(max-width:650px){[data-native-reference-controls] button{min-height:44px}}

[data-native-reference-controls] section>button:first-child{display:flex;align-items:center;justify-content:center;gap:8px}
[data-native-reference-controls] section>button:first-child span{font-size:10px;color:#c5cbc6;white-space:nowrap}

/* Tall phone workspace: reserve the passive compass (canvas rows 62-182 at the top
   right) and the collapsed caption strip at the bottom. */
@media(max-width:650px) and (min-height:800px){.inspector-panel{top:196px;max-height:calc(100% - 500px)}}

/* The passive orientation compass is published into the canvas overlay as glyph
   directions; this is the one place that decides where it sits. The group's own
   coordinates run 0..404 x 0..72 (rays about (80,40), legend from x 172), so the
   right edge lands 12px inside the canvas. It stays in the top band under the scene
   actions, clear of the view tabs at the top left and of the framing label bar that
   stacks beneath them, and above the roof of a fitted building. */
.orientation-compass{transform:translate(calc(100% - 416px),66px)}
/* Keep passive direction labels legible over bright roofs and sky without moving them. */
.orientation-compass text{paint-order:stroke fill;stroke:#18222a;stroke-width:3px;stroke-linejoin:round}
/* The component inspector docks at the top right; keep the compass readable beside it. */
.workspace:has(>.inspector-panel) .orientation-compass{transform:translate(calc(100% - 726px),66px)}
/* Overlaid controls reserve canvas height for the camera fit (read by fitInsets in
   the native building viewer): the top band holds the view tabs
   and the compass, the bottom band the caption strip. Wide desktops keep the full fit. */
.viewport{--apb-fit-inset-top:0px;--apb-fit-inset-bottom:175px}
@media(max-width:1150px){.viewport{--apb-fit-inset-bottom:230px}}
@media(max-width:1000px){.viewport{--apb-fit-inset-top:130px;--apb-fit-inset-bottom:230px}}
@media(max-width:650px){
 /* Narrow canvas: the legend moves under the rays (group 0..232 x 0..120). */
 .orientation-compass{transform:translate(calc(100% - 244px),72px)}
 .orientation-legend{transform:translate(-172px,62px)}
 .workspace:has(>.inspector-panel) .orientation-compass{transform:translate(calc(100% - 244px),72px)}
 .viewport{--apb-fit-inset-top:200px;--apb-fit-inset-bottom:310px}
}

/* A saved-identity notice must not intercept reference-measurement controls. */
.identity-notice{pointer-events:none}.identity-notice button{pointer-events:auto}
@media(max-width:650px){.app-header .header-actions button,.app-header .demo-toolbar button{min-width:44px;min-height:44px}.app-header .history-actions .icon-button,.app-header .share-button{width:44px;height:44px}.app-header .header-actions{gap:2px}.app-header .history-actions{gap:0}.app-header .brand{font-size:13px;gap:5px}.app-header{padding-left:8px;padding-right:8px}}

.settings-search-host{flex:0 0 auto;margin:0 20px 12px;padding:10px;border:1px solid #39443c;border-radius:8px;min-width:0;scrollbar-width:thin;scrollbar-color:#75847870 transparent;color-scheme:dark}.settings-search-host>summary{cursor:pointer;font-weight:600;min-height:24px;position:sticky;top:-10px;background:#151817;z-index:1}.settings-search-host [aria-label="Matching settings"]{max-height:190px;overflow:auto;scrollbar-width:thin;scrollbar-color:#75847870 transparent}.settings-search-host[open]{max-height:42vh;overflow:auto}.settings-search-host input{background:#161a18;color:#f3f1eb;border:1px solid #ffffff29;border-radius:7px;padding:10px}.settings-search-host .field-note{margin:8px 0}.settings-search-notice{flex:0 0 auto;margin:0 20px 10px}

.opening-arrangement{border-top:1px solid #39443c;margin-top:20px;padding-top:14px;display:block;font-size:12px;line-height:1.5}.opening-arrangement>summary{cursor:pointer;font-weight:600}.opening-arrangement select{width:100%;min-height:44px;margin:6px 0 12px;background:#161a18;color:#f3f1eb;border:1px solid #ffffff29;border-radius:7px;padding:10px;color-scheme:dark}.opening-arrangement fieldset{min-width:0;margin:12px 0;padding:8px;border:1px solid #39443c}.opening-arrangement fieldset label{display:block;margin:8px 0}.opening-arrangement fieldset small{display:block;margin-left:24px;color:#b6c0b3}.opening-arrangement input[type=checkbox]{margin-right:8px;accent-color:#c42c1d}.opening-arrangement button{margin-top:8px}.opening-arrangement li{margin:8px 0;overflow-wrap:anywhere}
.settings-search-host [aria-label="Matching settings"] button{display:flex;flex-direction:column;align-items:stretch;gap:4px}.settings-search-host [aria-label="Matching settings"] button>span:last-child{font-size:10px;color:#b6c0b3;font-weight:400}

.source-conflict-note,.entity-detail .field-note,.framing-muted{overflow-wrap:anywhere}
/* Port of selected Option 1, using normal runtime imports. */
:root{--accent:#e42618;--surface:#171717;--muted:#b0aca6;--line:#ffffff20;color:#f5f2ea;background:#0a0a0a}
.builder-app{background:#181a1d}.app-header{background:#090909;border-top:3px solid #e42618;height:auto;min-height:76px;padding:0 24px;gap:24px}.brand{font-weight:900;font-size:19px;white-space:nowrap}.brand-mark{display:none}.brand-red{color:#e42618}.header-actions{margin-left:0}.demo-toolbar{display:flex;align-items:center;gap:9px;flex:1;flex-wrap:wrap}.demo-toolbar button{background:#181818;border:1px solid #363636;border-radius:3px;min-height:39px;padding:0 14px;font-size:12px;font-weight:600;white-space:nowrap}.demo-toolbar button:hover{background:#292929;border-color:#777}.demo-toolbar button[aria-pressed=true]{border-color:#b3352a;background:#351714}.demo-workspaces{display:flex;gap:4px}.demo-label{margin-left:auto;font:9px monospace;letter-spacing:1.4px;color:#aaa39b}.workspace{height:calc(100dvh - 76px)}.customize-panel{top:0;left:0;bottom:0;width:322px;background:#111;border-radius:0;border-top:0;border-bottom:0;box-shadow:none;backdrop-filter:none}.panel-heading{padding:22px 18px 18px}.panel-heading h2{font-size:17px}.panel-heading p{font-size:10px;color:#aaa}.control-tabs{background:#111}.control-tabs button{border-radius:2px}.control-tabs button[aria-selected=true]{color:#fff;background:#351714;border-color:#ab3026}.control-body{background:#111}.control-section{border-color:#363636}.customizing .viewport{left:322px}.customizing .design-caption{left:348px}.design-caption{top:auto;bottom:73px;left:24px}
/* The caption is a strip along the bottom of the canvas, not a column up its left side:
   title rows first, then the disclosure, the measurement controls and the assembly
   sequence side by side, wrapping only when the canvas is narrow. It ends before the
   Design outputs button. Every piece stays visible; only the stacking changed. */
.workspace .design-caption{top:auto;bottom:73px;left:24px;right:196px;max-width:none;display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px}
.workspace .design-caption>h1,.workspace .design-caption>p:not(.framing-source-notice){flex:0 0 100%;margin:0}
.workspace .design-caption>.framing-source-notice{flex:1 1 280px;max-width:460px;margin:0}
.workspace .design-caption>[data-native-reference-controls]{flex:0 1 240px;min-width:200px;width:auto;margin-top:0}
.workspace .design-caption>.assembly-sequence{flex:0 1 210px;min-width:190px;width:auto;margin-top:0}
.customizing .design-caption{left:348px}.design-caption h1{font-size:13px}.design-caption p{font-size:10px}.view-mode-switch{top:18px;left:24px;right:auto;border-radius:3px;background:#0e0e0eee;padding:4px}.customizing .view-mode-switch{left:346px}.view-mode-switch button{border-radius:2px;font-size:11px}.view-mode-switch button.active{background:#351714;box-shadow:inset 0 0 0 1px #ad3629}.ground-visibility{display:none}.demo-scene-bar{position:absolute;right:24px;top:calc(100% + 18px);display:flex;gap:7px;z-index:8}.demo-scenes{position:absolute;right:24px;top:calc(100% + 68px);width:320px;padding:20px;background:#111;border:1px solid #444;box-shadow:0 20px 65px #0009;z-index:50}.demo-scene-heading{display:flex;align-items:center;justify-content:space-between}.demo-scene-heading h2{font-size:17px}.demo-scene-heading button{padding:0 12px}.demo-scenes p{font-size:11px;color:#b5b0a9;margin:9px 0 18px}.demo-scene-options{display:grid;gap:8px}.demo-scene-options button{text-align:left;padding:12px;white-space:normal}.demo-scene-options strong{display:block;font-size:13px}.demo-scene-options small{display:block;font-size:10px;color:#c0b8ad;margin-top:5px;font-weight:400}.demo-light-label{font-size:9px;letter-spacing:1.5px;margin-top:22px;margin-bottom:8px;color:#b8b2a9}.demo-lights{display:flex;gap:7px}.demo-lights button{flex:1}.demo-scenes label{font-size:12px}.demo-scenes .demo-footnote{margin:18px 0 12px}.bottom-toolbar{background:#101010;border-radius:4px;box-shadow:none;border:1px solid #3a3a3a;bottom:33px}.bottom-toolbar button.active{background:#321612}.app-status{background:#090909;border-top:1px solid #292929}.model-hint{display:none}.live-drawing-surface{top:0!important;bottom:32px!important;right:0!important;left:0!important}.customizing .live-drawing-surface{left:322px!important}.two-d-active .design-caption,.two-d-active .view-mode-switch{display:none}.demo-focus .app-header{height:0;min-height:0;border:0;padding:0}.demo-focus .app-header>*{visibility:hidden}.demo-focus .demo-exit{visibility:visible;display:block;position:fixed;right:20px;top:20px;z-index:99;box-shadow:0 2px 10px #0006}.demo-focus .workspace{height:100dvh}.demo-focus .customize-panel,.demo-focus .bottom-toolbar,.demo-focus .app-status,.demo-focus .design-caption,.demo-focus .view-mode-switch,.demo-focus .demo-scene-bar{display:none}.demo-focus .viewport{left:0!important}.demo-focus .live-drawing-surface{left:0!important;bottom:0!important}button:focus-visible{outline:2px solid #f5f2ea;outline-offset:3px}
@media(max-width:1150px){.demo-label{display:none}.demo-toolbar{gap:5px}.demo-toolbar button{padding:0 10px}.app-header{gap:16px;padding:0 16px}.brand{font-size:16px}.demo-workspaces{margin-right:auto}
/* Save becomes icon-only here (its phone treatment), which is the width the toolbar
   needs so its buttons never run under undo/redo between 850 and 1150px. */
.header-save span{display:none}.header-save{padding:0 10px;min-height:36px}.history-actions{padding-right:10px}.header-actions{gap:10px}}
@media(max-width:1000px){.demo-toolbar button{padding:0 8px}
/* The options panel owns a narrow desktop (app.css hides the caption beside it); the
   strip's own display rule above must not revive it, and the camera keeps the band. */
.builder-app.customizing .design-caption{display:none}.customizing .viewport{--apb-fit-inset-bottom:0px}}
@media(max-width:850px){.customize-panel{width:280px}.customizing .viewport{left:0}.customizing .live-drawing-surface{left:0!important}.customizing .view-mode-switch{left:298px}.customizing .design-caption{left:298px}.demo-toolbar button{font-size:10px;min-height:36px}.brand{font-size:13px}.app-header{gap:10px}.history-actions{display:none}}
/* Tablets retain a model beside the options. Give Fit view the uncovered canvas;
   phones keep their existing full-width canvas under the intentional editing overlay. */
@media(min-width:651px) and (max-width:850px){.builder-app.customizing:not(.framing-workspace-open):not(.framing-presenting) .viewport{left:280px}}

.view-mode-switch button.active{color:#f5f2ea}.drawing-workspace-live{background:#121212!important}.drawing-workspace-live .drawing-preview{border-color:#444;background:#161616}.bottom-toolbar{left:auto!important;right:24px;transform:none!important}.bottom-toolbar button:not(.output-action){display:none}.bottom-toolbar .output-action{min-width:110px;padding:10px 16px;font-size:11px;background:#161616;color:#ddd}.two-d-active .bottom-toolbar{display:none}.drawing-workspace-live svg{background:#171717!important}.drawing-workspace-live svg text{fill:#dad7d1}.drawing-workspace-live svg path,.drawing-workspace-live svg line,.drawing-workspace-live svg polyline{stroke:#9c9b95}.drawing-workspace-live svg rect{fill:transparent}.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-member-id]{display:none}.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-role="Post"],.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-role="Wall panel"],.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-role="Skirt"],.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-opening-id][data-member-id]{display:inline}.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-role="Post"] path{fill:#f0402f;stroke:#f0402f;stroke-width:3}.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-role="Wall panel"] path{stroke:#c0beb7;opacity:.55}.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-role="Skirt"] path{stroke:#c0beb7;opacity:.7}

.bottom-toolbar{width:auto!important;min-width:0!important}

.drawing-workspace-live{padding-bottom:18px}.drawing-workspace-live .drawing-preview{scrollbar-color:#555 #191919}.drawing-view-tabs button.active,.drawing-scope button.active{background:#351714;color:#fff;box-shadow:inset 0 0 0 1px #ad3629}

.bottom-toolbar{display:flex}.bottom-toolbar .output-action{min-height:40px;border-radius:3px}

/* Revision: prioritize live drawing area; source projection and edit math unchanged. */
.drawing-workspace-live{padding:12px 18px 10px;gap:7px}.drawing-workspace-live .drawing-live-heading,.drawing-workspace-live .drawing-note{display:none}.drawing-workspace-live .drawing-live-tools{margin:0}.drawing-workspace-live .drawing-revision{margin:0;min-height:34px}.drawing-workspace-live .drawing-revision>p{font-size:10px}.drawing-workspace-live .drawing-preview{min-height:0;box-shadow:none}.drawing-workspace-live .drawing-revision-actions{gap:10px}.drawing-workspace-live .drawing-move-toggle{min-height:32px;padding:5px 10px}.drawing-workspace-live .drawing-zoom select{padding:5px}.demo-color-select{display:flex;align-items:center;gap:9px}.demo-color-select>span{width:23px;height:23px;border:1px solid #ffffff55;border-radius:3px;flex:none}.demo-color-select select{min-width:0;flex:1}.two-d-active .customize-panel{width:280px}.two-d-active.customizing .live-drawing-surface{left:280px!important}

/* Native popup menus can use a light surface even when the closed field is dark. */
.builder-app select option,.builder-app select optgroup{color:#171717;background-color:#fff}
.builder-app select option:disabled{color:#595959}
.builder-app .number-input input::placeholder{color:#b3b8b5;opacity:1}

/* Keep core save/history actions available in the integrated editor. */
.builder-app{display:flex;flex-direction:column;height:100dvh;min-height:0}
.builder-app>.workspace{flex:1;height:auto;min-height:0}
.app-header{flex-shrink:0}.header-actions{margin-left:auto}.demo-toolbar{flex:1;min-width:0}
@media(max-width:760px){
 .app-header{height:auto;min-height:108px;padding:8px 12px;gap:8px;flex-wrap:wrap}
 .brand{font-size:14px}.header-actions{margin-left:auto}.history-actions{display:flex}
 .header-save span{display:none}.demo-toolbar{order:3;flex-basis:100%;gap:6px;flex-wrap:wrap}
 .demo-toolbar button{min-height:36px;padding:0 9px;font-size:11px}
 .demo-workspaces{margin-right:0}.demo-scene-bar{top:126px;right:12px}
 .demo-scenes{top:172px;right:12px;width:min(320px,calc(100vw - 24px));max-height:calc(100dvh - 180px);overflow:auto}
 .view-mode-switch{left:12px}.customizing .view-mode-switch,.customizing .design-caption{visibility:hidden}
 /* Phone: the strip stacks title, disclosure, then measurement and assembly side by side. */
 .workspace .design-caption{bottom:112px;left:12px;right:12px;gap:6px 8px;align-items:stretch}
 .workspace .design-caption>.framing-source-notice{flex-basis:100%;max-width:none;font-size:9px;line-height:1.25}
 .workspace .design-caption>[data-native-reference-controls],.workspace .design-caption>.assembly-sequence{flex:1 1 calc(50% - 4px);min-width:0;max-width:none}
 .two-d-active.customizing .live-drawing-surface{left:0!important}
 .demo-focus .app-header{min-height:0}
}

/* The options panel owns the narrow screen while open; keep scene controls off its close button. */
@media(max-width:650px){
 .demo-toolbar[data-options-open="true"] .demo-scene-bar,.demo-toolbar[data-options-open="true"] .demo-scenes{display:none}
 /* Leave the outputs row and status below the scrolling options, not over its inputs. */
 .customize-panel{bottom:112px}
 /* A hidden off-screen layer switch still expands a scrollable overflow container. */
 .customizing .view-mode-switch{left:12px}
}

/* An acknowledged refusal can be dismissed without changing the accepted design. */
.design-error{display:flex;align-items:flex-start;gap:12px}.design-error>div{min-width:0;overflow-wrap:anywhere}.design-error>.icon-button{flex:none;width:28px;height:28px}
.identity-notice{display:flex;align-items:flex-start;gap:12px}.identity-notice>div{min-width:0;overflow-wrap:anywhere}.identity-notice>.icon-button{flex:none;width:36px;height:36px}
/* Fit view can wrap the toolbar at 320px. Anchor scene actions below its actual height. */
@media(max-width:760px){.demo-toolbar{position:relative}.demo-scene-bar{position:absolute;top:calc(100% + 26px);right:0}.demo-scenes{position:absolute;top:calc(100% + 76px);right:0;max-height:calc(100dvh - 250px)}
/* When the popover still has to scroll, show it: a shadow fixed at the bottom edge,
   covered by a popover-colour band that scrolls up with the last control. */
.demo-scenes{scrollbar-width:thin;background:linear-gradient(#11111100,#111 70%) center bottom/100% 36px no-repeat local,linear-gradient(#00000000,#000000e0) center bottom/100% 36px no-repeat scroll,#111}}
@media(max-width:360px){.demo-scene-bar{top:calc(100% + 76px)}.demo-scenes{top:calc(100% + 126px)}}
/* WCAG 1.4.10 / 2.5.8: below 361 px the scene bar drops onto the inspector's row and covered its Close button (measured at 320 and 360 wide, windows under 800 px tall). The inspector starts below the scene bar there; its bottom edge stays where it was. */
@media(max-width:360px) and (max-height:799px){.workspace .inspector-panel{top:112px;max-height:calc(100% - 254px)}}

/* Presentation-only settings lookup; actual controls keep existing layout/drafts. */
.customize-panel .settings-search-host{padding:10px 16px;min-width:0;max-width:100%;box-sizing:border-box}
.settings-search-host input[type="search"]{width:100%;min-width:0;box-sizing:border-box;font:inherit}
.settings-search-host button{min-height:32px;max-width:100%;white-space:normal;overflow-wrap:anywhere;font:inherit}
.settings-search-host ul{list-style:none;padding:0;margin:8px 0;min-width:0;max-height:30dvh;overflow:auto}
.settings-search-host li{min-width:0;margin:4px 0}
.settings-search-host li button{width:100%;text-align:left}
.settings-search-host p,.settings-search-host label,.settings-search-host span{overflow-wrap:anywhere}
.settings-search-host :is(input,button):focus-visible{outline:2px solid currentColor;outline-offset:2px}
@media(max-width:360px){.customize-panel .settings-search-host{padding-inline:12px}}

/* At high browser zoom, scroll the complete options panel rather than letting
   its heading and tabs consume the fields' remaining height. Mac round 2 (D05, 400% zoom =
   595x296 CSS px): the header wraps and the panel shows 64-76px, so a textarea capped at
   100dvh - 224px (72px) never fit; 240px leaves 56px, and FramerComments scrolls the whole
   box into view on focus (Chrome's own focus scroll reveals only the caret). */
@media(max-height:600px){
 .customize-panel{overflow-y:auto;overscroll-behavior:contain}
 .customize-panel>.panel-heading,.customize-panel>.control-tabs,.customize-panel>.control-content{flex-shrink:0}
 .customize-panel>.control-content{overflow:visible}
 .customize-panel textarea{min-height:0;max-height:min(112px,max(44px,calc(100dvh - 240px)));overflow-y:auto}
}

/* Keep the focused bottom options above the existing status footer. The panel's own scroll
   already ends above the footer, but focusing a textarea reveals only its caret: the 5-row
   Framer comments box (112px), reached after a shorter control was centred, kept its caret in
   view and its lower edge clipped at the footer line. Reserve that height at the scroll end so
   a focus scroll lands the whole control in view. */
@media(min-width:651px){.customize-panel{bottom:32px}.customize-panel>.control-content{scroll-padding-bottom:112px}}
.workspace-messages{display:contents}
.live-drawing-slot{display:contents}
/* Audit C-1 (2026-10-10): below 460 CSS px of height (400% zoom on a 1080-1840 px tall screen) the
   canvas overlays (Finished/Framing, model reference measurement, assembly sequence, the scene bar)
   were laid out over a 130-190 px viewport and covered each other, so a focused control could be
   wholly hidden. Keep the 460 px layout, measured with no obscured control at 320, 480 and 595 wide,
   and let the page scroll vertically, the one-direction scroll WCAG 1.4.10 permits. */
@media(max-height:459px){.builder-app{min-height:460px}}

/* Linked native model and drawing: one accepted graph, two independently navigable panes. */
.builder-app.linked-active{--linked-left:0px;--linked-divider:calc((100% + var(--linked-left))/2)}
.builder-app.linked-active.customizing{--linked-left:322px}
.builder-app.linked-active .viewport{left:var(--linked-left);right:calc(100% - var(--linked-divider));--apb-fit-inset-bottom:290px}
.builder-app.linked-active .live-drawing-surface{left:var(--linked-divider)!important;border-left:1px solid #555}
.builder-app.linked-active .drawing-workspace-live{padding:12px 12px 58px}
.builder-app.linked-active .drawing-live-tools{flex-wrap:wrap;gap:8px}
.builder-app.linked-active .drawing-view-tabs{order:-1;flex-basis:100%;justify-content:space-between}
.builder-app.linked-active .drawing-view-tabs button{flex:1;padding:7px 6px}
.builder-app.linked-active .drawing-revision{flex-wrap:wrap;gap:6px}
.builder-app.linked-active .drawing-revision-actions{flex-wrap:wrap}
.builder-app.linked-active .workspace .design-caption{left:calc(var(--linked-left) + 16px);right:calc(100% - var(--linked-divider) + 16px);bottom:48px;gap:6px}
.builder-app.linked-active .design-caption>[data-native-reference-controls],.builder-app.linked-active .design-caption>.assembly-sequence{flex:1 1 180px;min-width:0}
.builder-app.linked-active .view-mode-switch{left:calc(var(--linked-left) + 16px)}
.builder-app.linked-active .inspector-panel{right:calc(100% - var(--linked-divider) + 12px);max-width:calc((100% - var(--linked-left))/2 - 24px);max-height:calc(100% - 380px)}
.builder-app.linked-active .demo-scene-bar{right:calc(100% - var(--linked-divider) + 12px);top:calc(100% + 18px)}
.builder-app.linked-active .demo-scenes{right:calc(100% - var(--linked-divider) + 12px);top:calc(100% + 64px)}
.builder-app.linked-active.demo-focus .live-drawing-surface{left:50%!important}
.builder-app.linked-active.demo-focus .viewport{right:50%;--apb-fit-inset-bottom:0px}
.builder-app.linked-active.demo-focus .drawing-workspace-live{padding-bottom:12px}

.builder-app.linked-active .workspace .orientation-compass{transform:translate(12px,66px)}

.builder-app.linked-active .workspace:has(>.inspector-panel) .orientation-legend{transform:translate(-172px,62px)}

.builder-app.linked-active.demo-focus .demo-exit{right:calc(50% + 16px);top:16px}

/* Draft-only wall sketch. Authoritative drawings and model geometry are unchanged. */
.interior-wall-plan{padding:14px 0;border-bottom:1px solid #ffffff24;margin-bottom:16px}
.interior-plan-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}
.interior-plan-heading .button{font-size:11px;padding:8px;min-height:40px}
.interior-plan-instruction{font-size:12px;line-height:1.5;margin:12px 0;color:#e4e9ee}
.interior-wall-plan svg{display:block;width:100%;height:300px;max-height:50dvh;border:1px solid #627482;border-radius:6px;background:#151c21;color:#eff5f9}
.interior-wall-plan svg:focus-visible{outline:3px solid #8ccaff;outline-offset:2px}
.interior-wall-plan svg text{fill:currentColor;pointer-events:none}
.interior-footprint{stroke:#bbcbd5;stroke-width:2;vector-effect:non-scaling-stroke}
.interior-endpoint-boundary{fill:none;stroke:#edc37d;stroke-width:1;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}
.interior-existing-wall{stroke:#95a3af;stroke-width:4;vector-effect:non-scaling-stroke}
.interior-draft-line{stroke:#83d6fb;fill:#83d6fb}.interior-draft-line line{stroke-width:4;vector-effect:non-scaling-stroke}.interior-draft-line.invalid{stroke:#ffa589;fill:#ffa589}
.interior-plan-cursor{fill:none;stroke:#fff;stroke-width:1.5;pointer-events:none}.interior-plan-cursor>*{vector-effect:non-scaling-stroke}
.interior-plan-tools{display:flex;gap:6px;flex-wrap:wrap}.interior-plan-tools .button{min-height:44px;font-size:11px;padding:7px 9px}
.interior-plan-guides{border:1px solid #ffffff30;margin:12px 0;padding:10px;font-size:11px;display:flex;gap:8px;flex-wrap:wrap}
.interior-plan-guides label{display:flex;gap:7px;align-items:center;min-height:32px}.interior-plan-guides input{width:18px;height:18px}.interior-plan-guides select{background:#20292e;color:white;border:1px solid #647481;border-radius:3px;padding:6px}
.interior-plan-issues{padding:10px;border-left:3px solid #ffa589;background:#ffa58910;font-size:11px;line-height:1.45;margin:10px 0}.interior-plan-issues p{margin:5px 0}
.interior-wall-length{font-size:13px;margin:14px 0}.wall-distance-field>input{width:100%;min-height:42px;background:#202427;color:white;border:1px solid #65727b;padding:9px;border-radius:5px;font:inherit;box-sizing:border-box}.wall-distance-field small{display:block;color:#adb9c2;font-size:10px;line-height:1.4;margin-top:5px}.wall-distance-field [aria-invalid=true]{border-color:#ffa589}
.interior-exact-coordinates{border:1px solid #ffffff30;padding:10px;margin:12px 0}.interior-exact-coordinates summary{font-size:12px;cursor:pointer;min-height:32px}.interior-exact-coordinates .two-fields{margin-top:8px}
.app-dialog.interior-plan-dialog{width:min(900px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:18px}.interior-plan-dialog svg{height:50dvh;max-height:none}.interior-plan-dialog::backdrop{background:#000b}
@media(max-width:650px){.interior-wall-plan svg{height:290px}.app-dialog.interior-plan-dialog{padding:12px}.interior-plan-dialog svg{height:42dvh}.interior-plan-heading{align-items:flex-start}.wall-distance-field small{overflow-wrap:anywhere}}

/* Screen-only line hierarchy. SVG downloads and printed drawings retain their source styles. */
.drawing-workspace-live .drawing-inline-svg svg{background:#10181d!important}
.drawing-workspace-live .drawing-inline-svg [data-screen-layer="shell"] path{stroke:#788d9a;stroke-width:.7;fill-opacity:.07}
.drawing-workspace-live .drawing-inline-svg [data-screen-layer="framing"] path{stroke:#c1d2dc;stroke-width:1.05;fill-opacity:.14}
.drawing-workspace-live .drawing-inline-svg [data-screen-layer="foundation"] path{stroke:#98a8b4;stroke-width:.85;fill-opacity:.12}
.drawing-workspace-live .drawing-inline-svg [data-screen-layer="opening"] path{stroke:#78d4ef;stroke-width:1.35;fill-opacity:.16}
.drawing-workspace-live .drawing-inline-svg [data-member-id][data-selected="true"] path,.drawing-workspace-live .drawing-inline-svg [data-member-id]:focus-visible path{stroke:#ffd178;stroke-width:2.4;fill-opacity:.3}
.drawing-workspace-live .drawing-inline-svg svg text{fill:#e5edf2}
.drawing-workspace-live .drawing-inline-svg svg text[font-size="22"]{font-weight:700;letter-spacing:.2px}
.drawing-workspace-live .drawing-inline-svg svg [data-source-notes] text{fill:#b8c8d2}
.drawing-workspace-live .drawing-screen-annotations{border:1px solid #657884;background:#1c282f;border-radius:5px;color:#e8f0f4;padding:8px 10px;font-size:12px;line-height:1.45}
.detail-view-controls{border:1px solid #667784;background:#152028;border-radius:6px;padding:10px;margin:10px 0}.detail-view-controls h3{font-size:13px;margin:0 0 8px}.detail-view-controls p{font-size:11px;line-height:1.4;margin:7px 0}.detail-view-controls button{min-height:40px}

.drawing-screen-dimensions{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 5px}.drawing-screen-dimensions>div{flex:1 1 160px;min-width:0}.drawing-screen-dimensions dt{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#b4c8d3}.drawing-screen-dimensions dd{margin:2px 0;font-size:12px;font-weight:650;color:#f4f8fa;overflow-wrap:anywhere}.drawing-screen-annotations>p{margin:3px 0}

.app-dialog.interior-plan-dialog{width:min(1100px,calc(100vw - 24px))}.interior-plan-expanded-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:20px}.interior-plan-expanded-layout>aside{padding-left:16px;border-left:1px solid #667784}.interior-plan-expanded-layout .two-fields{grid-template-columns:1fr}.interior-plan-expanded-layout .interior-wall-length{margin-top:10px}
.demo-post-plan .drawing-workspace-live svg[aria-label^="plan "] [data-member-id^="interior/"]{display:inline}
.drawing-workspace-live .drawing-inline-svg [data-member-id^="interior/"] path{stroke:#addcec;stroke-width:1.4;fill-opacity:.24}
@media(max-width:650px){.interior-plan-expanded-layout{grid-template-columns:1fr;gap:12px}.interior-plan-expanded-layout>aside{border-left:0;padding-left:0}.interior-plan-expanded-layout .two-fields{grid-template-columns:1fr 1fr}.interior-plan-dialog svg{height:36dvh}}
/* Keep the plan's screen matrix steady while hover guidance and validation messages change. */
.app-dialog.interior-plan-dialog{height:calc(100dvh - 48px);scrollbar-gutter:stable}

.opening-batch-tool,.opening-precision,.wall-nudge-controls{border:1px solid #667784;background:var(--surface);padding:12px;border-radius:6px;margin:12px 0;color:inherit;font-size:12px}
.opening-batch-tool h3,.opening-precision h4,.wall-nudge-controls h4{margin:0 0 10px;font-size:14px}
.opening-batch-tool label,.opening-precision label,.wall-nudge-controls label{display:grid;gap:6px;margin:10px 0;font-size:12px}
.opening-batch-tool textarea,.opening-precision input,.wall-nudge-controls input{box-sizing:border-box;width:100%;min-height:44px;padding:10px;border:1px solid #718797;border-radius:4px;background:#111a20;color:white;font:inherit}
.opening-batch-tool textarea{resize:vertical;line-height:1.5}.opening-batch-tool small,.opening-precision small,.wall-nudge-controls small{display:block;line-height:1.45;color:var(--muted)}
.precision-actions{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}.precision-actions>.button{min-height:44px;min-width:44px;flex:1 1 auto;padding:9px;font-size:12px}
.opening-batch-tool ol{padding-left:20px;max-height:260px;overflow:auto}.opening-batch-tool li{padding:8px 0;border-bottom:1px solid #536673}.opening-batch-tool li span{display:block;line-height:1.45;margin-top:4px}.precision-error{border-left:3px solid #efa780;padding-left:9px}.opening-precision [role=alert],.opening-batch-tool [role=alert],.wall-nudge-controls [role=alert]{color:#ffd0b7;line-height:1.45}

.drawing-selected-context{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid #d5ac65;border-radius:5px;background:#28251d;color:#fff1d7;font-size:12px}.drawing-selected-context p{margin:4px 0 0;font-size:11px;line-height:1.4;overflow-wrap:anywhere}.drawing-selected-context button{min-height:44px;padding:7px 10px;background:#2c3033;color:white;border:1px solid #87939c;border-radius:4px;flex:none}
.drawing-workspace-live[data-has-selection="true"] .drawing-inline-svg [data-member-id]:not([data-context-selected="true"]){opacity:.6}
.drawing-workspace-live .drawing-inline-svg [data-context-selected="true"] path{stroke:#ffcf83;stroke-width:1.6;fill-opacity:.25}
.drawing-workspace-live .drawing-inline-svg [data-member-id][data-selected="true"] path{stroke:#ffe8a9;stroke-width:2.6}
@media(max-width:650px){.drawing-selected-context{align-items:flex-start}.drawing-selected-context button{font-size:11px}.opening-batch-tool,.opening-precision,.wall-nudge-controls{padding:10px}}

.drawing-dimension-basis-label{font-size:10px;color:#b4c8d3;margin:0 0 4px}.drawing-screen-dimensions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.drawing-screen-dimensions dd{font-size:15px;line-height:1.25}
@media(max-width:650px){.drawing-workspace-live .drawing-screen-annotations{font-size:10px;line-height:1.35;padding:7px 9px}.drawing-screen-dimensions dt{font-size:9px;letter-spacing:0}.drawing-screen-dimensions dd{font-size:15px}.drawing-selected-context{gap:8px}.drawing-selected-context button{padding:6px;max-width:90px}}

/* Match the narrow linked-workspace fallback immediately, before the media-query
   listener commits its React state. A half-width drawing pane cannot contain its
   controls during that transition; do not hide the overflow to mask it. */
@media(max-width:1199px){
 .builder-app.linked-active .live-drawing-surface{left:0!important;right:0;border-left:0}
 .builder-app.linked-active .viewport,.builder-app.linked-active .design-caption,.builder-app.linked-active .view-mode-switch,.builder-app.linked-active .ground-visibility{visibility:hidden}
}

/* A shape cue complements the selected tab color; refusal actions stay tappable. */
.control-tabs button[aria-selected="true"]{box-shadow:inset 0 -2px 0 #fbf8f4}
.control-content .field-note,.model-hint{font-size:12px;line-height:1.5}
.design-error>.icon-button{min-width:36px;min-height:36px;flex-shrink:0}
@media(max-width:640px){.design-error>.icon-button{min-width:44px;min-height:44px}}

@media(max-width:640px){.control-tabs button{min-height:44px}}

.history-timeline { position: relative; }
.history-timeline > summary { cursor: pointer; padding: 8px; }
.history-timeline[open] > ol { position: absolute; z-index: 30; top: 100%; right: 0; width: min(360px,80vw); max-height: 50vh; box-sizing: border-box; overflow: auto; background: #171b19; color: #f1f1ed; padding: 24px; border: 1px solid #70756f; }
.history-timeline > p { position: absolute; width: 1px; height: 1px; overflow: hidden; }
.history-timeline li { margin-bottom: 8px; }
.history-timeline li button { white-space: normal; text-align: left; }

@media(max-width:600px){.history-timeline[open] > ol{position:fixed;left:12px;right:12px;top:90px;width:auto;padding:20px;}}
.validation-issue-list{margin:8px 0 0;padding-left:20px;display:grid;gap:10px;max-height:34dvh;overflow:auto;overscroll-behavior:contain}
.validation-issue-list li{padding:2px;overflow-wrap:anywhere}
.validation-issue-list li>span{display:block}
.validation-issue-list .button{margin-top:6px;min-height:36px;background:#fbf8f4;color:#101010;border:1px solid #101010;text-align:left;white-space:normal}
.validation-issue-list .button:focus-visible{outline:3px solid #fbf8f4;outline-offset:3px;box-shadow:0 0 0 5px #101010}
@media(max-width:640px){.validation-issue-list .button{min-height:44px;width:100%}.design-error:has(.validation-issue-list){font-size:12px;max-height:52dvh;overflow:auto}}
@media print{.validation-issue-list{max-height:none;overflow:visible}.validation-issue-list .button{background:white;color:black;border:1px solid black;box-shadow:none}}
.decision-list{position:relative;font-size:12px}.decision-list>summary{cursor:pointer;list-style:revert;min-height:44px;min-width:44px;padding:10px;border:1px solid #64727b;border-radius:4px;display:flex;align-items:center;box-sizing:border-box;background:#171717;color:#f5f2ea;white-space:nowrap}.decision-list-panel{position:fixed;z-index:55;right:12px;top:90px;width:min(390px,calc(100vw - 24px));max-height:calc(100dvh - 110px);overflow:auto;padding:16px;box-sizing:border-box;background:#111;color:#f5f2ea;border:1px solid #64727b;box-shadow:0 12px 32px #0008;border-radius:5px;font:13px/1.5 system-ui,sans-serif}.decision-list-panel h2{font-size:18px;margin:0 0 10px}.decision-list-panel p{white-space:normal;overflow-wrap:anywhere}.decision-list-panel ul{list-style:none;padding:0;display:grid;gap:14px}.decision-list-panel li{border-top:1px solid #53606b;padding:12px 0;display:grid;gap:8px}.decision-list-panel label{display:grid;gap:4px;font-size:12px}.decision-list-panel input,.decision-list-panel select,.decision-list-panel button{min-height:44px;min-width:44px;max-width:100%;box-sizing:border-box;font:inherit;border:1px solid #718797;background:#202427;color:#f5f2ea;border-radius:4px;padding:9px;white-space:normal;overflow-wrap:anywhere}.decision-list-actions{display:flex;flex-wrap:wrap;gap:8px}.decision-list :focus-visible{outline:3px solid #f5f2ea;outline-offset:3px}.decision-list button:disabled{opacity:.5}@media(max-width:760px){.decision-list-panel{top:138px;max-height:calc(100dvh - 158px)}}
.presentation-tools{display:inline-flex}.presentation-tools-panel{position:fixed;z-index:45;right:18px;top:78px;width:min(620px,calc(100vw - 36px));max-height:calc(100dvh - 98px);overflow:auto;box-sizing:border-box;padding:24px;background:#111;color:#f5f2ea;border:1px solid #363636;border-radius:4px;box-shadow:0 20px 64px #0005;font:15px/1.5 system-ui,sans-serif;overscroll-behavior:contain}.presentation-tools-panel header{display:flex;justify-content:space-between;gap:18px;align-items:start}.presentation-tools-panel h2{font-size:24px;margin:0 0 18px}.presentation-tools-panel h3{font-size:18px;margin:0 0 8px}.presentation-tools-panel p{margin:8px 0 12px}.presentation-eyebrow{font-size:11px;letter-spacing:.15em;font-weight:700;color:#b0aca6}.presentation-tools-panel fieldset{border:1px solid #444;border-radius:4px;margin:0 0 18px;padding:14px}.presentation-tools-panel legend{font-weight:700;padding:0 5px}.presentation-tools-panel label{display:grid;gap:6px;font-weight:600}.presentation-tools-panel select{min-height:44px;width:100%;box-sizing:border-box;padding:8px;border:1px solid #777;border-radius:3px;background:#181818;color:#f5f2ea;font:inherit}.presentation-tools-panel .presentation-check{display:flex;align-items:center;gap:10px;margin:12px 0;font-weight:400}.presentation-check input{width:20px;height:20px}.presentation-actions{display:flex;gap:8px;flex-wrap:wrap}.presentation-tools-panel button{min-height:42px;padding:8px 12px;border:1px solid #777;border-radius:3px;background:#181818;color:#f5f2ea;cursor:pointer;font:600 14px system-ui}.presentation-tools-panel button.primary{background:#351714;border-color:#b3352a;color:white}.presentation-tools-panel button:disabled{opacity:.45;cursor:default}.presentation-tools-panel :focus-visible{outline:3px solid #f5f2ea;outline-offset:3px}.presentation-warning{padding:10px;border-left:4px solid #ab4a27;background:#351714}.presentation-board-preview{background:white;color:#18211f;padding:16px;border:1px solid #444;border-radius:4px}.presentation-board-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.presentation-board-grid figure{margin:0;min-width:0}.presentation-board-grid img{display:block;width:100%;height:180px;object-fit:contain;background:#e8ece8}.presentation-board-grid figcaption{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:600}.presentation-board-grid figcaption button{font-size:12px;min-height:40px}.presentation-swatches{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0;font-size:12px}.presentation-swatches span{display:inline-flex;align-items:center;gap:5px}.presentation-swatches i{display:inline-block;width:18px;height:18px;border:1px solid #7c8680}.presentation-tools-panel footer{padding-top:18px}.presentation-tools-panel footer p,.presentation-tools-panel fieldset p{font-size:13px;color:#b0aca6}@media(max-width:600px){.presentation-tools-panel{right:8px;top:64px;width:calc(100vw - 16px);max-height:calc(100dvh - 76px);padding:16px}.presentation-board-grid{grid-template-columns:1fr}.presentation-board-grid img{height:210px}.presentation-tools-panel h2{font-size:21px}.presentation-tools-panel header{gap:8px}}

.presentation-tools-panel>header{position:sticky;top:-24px;z-index:2;margin:-24px -24px 18px;padding:24px 24px 12px;background:#111;border-bottom:1px solid #363636}.presentation-tools-panel>header h2{margin-bottom:0}@media(max-width:600px){.presentation-tools-panel>header{top:-16px;margin:-16px -16px 16px;padding:16px 16px 12px}}
/* Keep the board controls legible under the main editor's button hover rules. */
.presentation-tools-panel button:hover{background:#262626;color:#f5f2ea}
.presentation-tools-panel button.primary:hover,.presentation-tools-panel button.primary:focus-visible{background:#5a211c;color:#fff}
/* Touch board actions and the checkbox's associated label own a full thumb target. */
@media(max-width:600px) and (pointer:coarse){
 .presentation-tools-panel button,.presentation-tools-panel .presentation-board-grid figcaption button{min-height:44px;min-width:44px}
 .presentation-tools-panel .presentation-check{min-height:44px}
}
.requirements-panel,.major-change-preview{display:grid;gap:14px;overflow-wrap:anywhere}.requirements-panel p,.major-change-preview p{margin:0}.requirement-entry,.requirement-list li{display:grid;gap:12px;border:1px solid #829187;padding:14px}.requirements-panel label{display:grid;gap:6px;min-width:0}.requirements-panel label:has(input[type=checkbox]){display:flex;align-items:flex-start;gap:9px}.requirements-panel input,.requirements-panel select,.requirements-panel button,.major-change-preview button{min-height:44px;font:inherit;max-width:100%}.requirements-panel input:not([type=checkbox]),.requirements-panel select{padding:9px;background:#1b241e;color:inherit;border:1px solid #89968c;width:100%}.requirements-panel input[type=checkbox]{min-height:20px;margin-top:2px}.requirement-list{list-style:none;padding:0;display:grid;gap:12px}.requirement-list span,.requirement-list small{display:block}.requirement-actions{display:flex;flex-wrap:wrap;gap:10px}.requirements-panel :focus-visible,.major-change-preview :focus-visible{outline:3px solid #8dc4ff;outline-offset:3px}

.drawing-impact-list{display:grid;gap:6px;padding-left:20px}.drawing-impact-list li span{display:block;font-size:12px;line-height:1.5}
.history-storage-panel{min-width:0;padding:4px 0}
.history-storage-panel .button{margin:6px 8px 6px 0;white-space:normal;overflow-wrap:anywhere}
.history-storage-panel label{display:block;font-weight:600;margin:10px 0 5px}
.history-storage-panel select{font:inherit;max-width:100%;width:100%;padding:8px;background:var(--panel,#fff);color:inherit;border:1px solid var(--line,#75818a);border-radius:4px}
.history-storage-panel li{padding:7px 0;overflow-wrap:anywhere}
.history-storage-panel small{display:block;margin-top:4px}
.backup-review{border:1px solid var(--line,#75818a);padding:12px;border-radius:6px;margin:10px 0}
.problem-report-preview{max-height:320px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:12px;border:1px solid var(--line,#75818a);border-radius:5px}
@media(max-width:480px){.history-storage-panel .button{width:100%;margin-right:0}.history-storage-panel input[type=file]{max-width:100%}}
.wall-aliases-panel{min-width:0}
.wall-alias-entry{display:grid;gap:6px;margin:14px 0 4px}
.wall-alias-entry label{font-weight:650}
.wall-alias-entry input{box-sizing:border-box;width:100%;max-width:100%;padding:9px;font:inherit;color:inherit;background:var(--panel,#fff);border:1px solid var(--line,#76828b);border-radius:5px}
.wall-aliases-panel strong{overflow-wrap:anywhere}
.wall-alias-actions{display:flex;flex-wrap:wrap;gap:9px;margin:14px 0}
.wall-alias-actions .button{white-space:normal;overflow-wrap:anywhere;min-height:44px}
@media(max-width:480px){.wall-alias-actions .button{width:100%}}
.recovery-panel,.saved-design-details{padding:14px;border:1px solid var(--line,#687681);border-radius:8px;margin:12px 0;min-width:0}
.recovery-panel label,.saved-design-details label{display:grid;gap:5px;margin:10px 0;font-weight:600}
.recovery-panel input,.saved-design-details input,.saved-design-details textarea{width:100%;max-width:100%;box-sizing:border-box;font:inherit;padding:8px;border:1px solid var(--line,#687681);border-radius:4px;background:var(--panel,#fff);color:inherit}
.recovery-panel .button,.saved-design-details .button{margin:5px 8px 5px 0;white-space:normal;overflow-wrap:anywhere}
.recovery-offer{border-left:4px solid #c38120;padding:10px 12px;background:rgba(180,120,30,.08)}
.checkpoint-list{list-style:none;padding:0;display:grid;gap:10px}
.checkpoint-list li{display:grid;gap:5px;padding:10px;border:1px solid var(--line,#687681);border-radius:5px;overflow-wrap:anywhere}
.library-thumbnail{display:grid;grid-template-columns:160px minmax(0,1fr);align-items:center;gap:10px;margin:10px 0;color:inherit}
.library-thumbnail svg,.library-thumbnail img{width:160px;max-width:100%;height:auto;border:1px solid var(--line,#687681);border-radius:4px;background:rgba(120,140,160,.06)}
.library-thumbnail figcaption{font-size:12px;overflow-wrap:anywhere}
.saved-design-details h4{margin:0;overflow-wrap:anywhere}
@media(max-width:480px){.library-thumbnail{grid-template-columns:1fr}.recovery-panel,.saved-design-details{padding:10px}.recovery-panel .button,.saved-design-details .button{width:100%;margin-right:0}}
.framing-workbench{position:absolute;inset:0 0 48px auto;width:390px;z-index:8;background:#20262c;color:#edf1f3;border-left:1px solid #46515a;display:flex;flex-direction:column;font:13px/1.5 Manrope,system-ui,sans-serif;box-shadow:-12px 0 40px #0003}
.framing-workbench header{display:flex;align-items:center;justify-content:space-between;padding:15px 18px 6px}.framing-workbench h2{font-size:21px;line-height:1.2;margin:4px 0}.framing-eyebrow{font-size:10px;letter-spacing:.14em;color:#d3dce2}.framing-workbench button,.framing-workbench input,.framing-workbench select,.framing-workbench textarea{font:inherit;color:inherit;border:1px solid #65717a;border-radius:5px;background:#151b20;padding:8px;max-width:100%;min-height:38px}.framing-workbench button{cursor:pointer}.framing-workbench button:disabled{opacity:.5;cursor:default}.framing-workbench button:hover{border-color:#ffae48}.framing-workbench button[aria-pressed=true]{border-color:#ffad49;background:#483323}.framing-workbench :focus-visible{outline:3px solid #ffb353;outline-offset:2px}.framing-workbench label{display:flex;flex-direction:column;gap:5px;margin:11px 0}.framing-workbench input[type=range]{padding:0;accent-color:#ffac46}.framing-workbench textarea{min-height:72px;resize:vertical}.framing-identity{margin:4px 18px;color:#c6d0d7}.framing-disclosure{margin:8px 18px;font-size:11px;line-height:1.5;color:#f8d4a1;border-left:2px solid #c68b37;padding-left:9px;max-height:calc(5 * 1.5em + 2px);overflow:auto;scrollbar-width:thin;background:linear-gradient(#20262c00,#20262c 70%) center bottom/100% 22px no-repeat local,linear-gradient(#0a0d1000,#0a0d10e0) center bottom/100% 22px no-repeat scroll}.framing-camera{display:flex;flex-wrap:wrap;gap:4px;margin:6px 18px}.framing-camera button{font-size:11px;min-height:32px;padding:5px 7px}.framing-actions{display:flex;gap:6px;flex-wrap:wrap;margin:9px 0}.framing-workbench>.framing-actions{padding:0 18px}.framing-tabs{display:flex;padding:8px 12px;border-bottom:1px solid #505a61;gap:4px}.framing-tabs button{font-size:11px;flex:1}.framing-scroll{overflow:auto;overscroll-behavior:contain;padding:8px 18px 22px;min-height:0;flex:1}.framing-scroll h3{font-size:17px}.framing-scroll p{margin:8px 0}.framing-muted{color:#c2c9d0;font-size:11px}.framing-card{border:1px solid #59616a;border-radius:7px;padding:12px;margin:14px 0;background:#171d22}.framing-card h3,.framing-card h4{margin:0 0 6px}.framing-card dl{display:grid;grid-template-columns:1fr 1.25fr;gap:6px;font-size:12px}.framing-card dt{color:#c6ced4}.framing-card dd{margin:0;overflow-wrap:anywhere}.framing-workbench code{font-size:10px;overflow-wrap:anywhere}.framing-workbench small{display:block;color:#c2cbd2;font-size:10px}.framing-results{display:grid;gap:4px;max-height:180px;overflow:auto}.framing-results button{text-align:left}.framing-workbench details{border-top:1px solid #56616b;padding:12px 0}.framing-workbench summary{font-weight:700;cursor:pointer;min-height:30px}.framing-workbench a{color:#a9d3ff}.framing-part{display:block;width:100%;text-align:left;margin:5px 0}.framing-locator{margin:0;padding:6px 18px;background:#151b20;border-top:1px solid #56616b;flex:none}.framing-locator svg{height:95px;width:100%;display:block}.framing-locator text{fill:#d0d8de;font:9px system-ui}.framing-locator figcaption{font-size:10px;text-align:center;overflow-wrap:anywhere;max-height:30px;overflow:auto}.framing-message{padding:8px 18px;margin:0;font-size:11px;background:#3b3124;max-height:90px;overflow:auto}.framing-workspace-open .viewport{right:390px!important}.framing-workspace-open .design-caption{right:586px;max-width:none}
/* The outputs button leaves the workbench column and docks at the viewport's own
   bottom-right corner (workbench 390px + the usual 24px), so it never sits on the
   locator figure. */
@media(min-width:751px){.framing-workspace-open .bottom-toolbar{right:414px}}
@media(max-width:1000px){.framing-workspace-open .viewport{--apb-fit-inset-top:120px;--apb-fit-inset-bottom:150px}}.framing-workspace-open .design-caption [data-native-reference-controls],.framing-workspace-open .design-caption>.assembly-sequence{display:none}.framing-workspace-open .ground-visibility{right:410px}.framing-workspace-open .customize-panel{visibility:hidden;pointer-events:none}.framing-workspace-open .view-mode-switch{left:18px}.framing-workspace-open .model-hint{right:410px}.framing-workbench.presentation-only{width:310px}.framing-workbench.presentation-only .framing-locator{margin-top:auto}.finish-comparison{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}.finish-comparison span{display:block;height:60px;border:1px solid #777;border-radius:4px}.finish-comparison strong{text-transform:capitalize}.saved-views{padding-left:22px}.saved-views button{width:100%;text-align:left;margin:4px 0}.framing-workbench .assembly-sequence{max-width:100%;background:transparent}.framing-workbench .drawing-workspace{padding:0}.framing-workbench .drawing-preview{min-height:240px}.framing-workbench .drawing-views,.framing-workbench .drawing-controls{flex-wrap:wrap}.framing-workbench .drawing-workspace h2{font-size:16px}.framing-workbench ul{padding-left:18px;max-height:180px;overflow:auto}.framing-workbench ul button{font-size:10px;text-align:left}.framing-workspace-open .viewport .building-viewer{transition:none!important}
@media(max-width:750px){.framing-workbench{inset:auto 0 48px;width:100%;height:49%;border-left:0;border-top:1px solid #65717a}.framing-workbench header{padding:8px 12px 0}.framing-workbench h2{font-size:17px}.framing-identity{margin:2px 12px;font-size:10px}.framing-disclosure{max-height:calc(2 * 1.5em + 2px);margin:4px 12px;font-size:10px}.framing-camera{margin:4px 12px;gap:3px}.framing-camera button{min-height:28px;padding:3px 6px;font-size:10px}.framing-tabs{padding:4px 12px}.framing-workbench>.framing-actions{position:absolute;right:45px;top:2px;margin:0;padding:0}.framing-workbench>.framing-actions button{font-size:0;min-height:28px;width:28px;padding:0}.framing-workbench>.framing-actions button:first-child:after{content:'▣';font-size:16px}.framing-workbench>.framing-actions button:last-child:after{content:'↺';font-size:18px}.framing-scroll{padding:6px 12px 15px}.framing-locator{display:flex;align-items:center;padding:3px 12px}.framing-locator svg{height:42px;width:120px;flex:none}.framing-locator figcaption{padding-left:10px;text-align:left}.framing-workspace-open .viewport{right:0!important;bottom:calc(49% + 48px)!important;left:0!important}.framing-workspace-open .design-caption{display:none}.framing-workspace-open .view-mode-switch{top:10px;bottom:auto;left:12px}.framing-workspace-open .ground-visibility,.framing-workspace-open .model-hint{display:none}.framing-workbench.presentation-only{width:100%;height:35%}}
@media(prefers-reduced-motion:reduce){.framing-workbench *{scroll-behavior:auto}}

.framing-presenting .customize-panel,.framing-presenting .bottom-toolbar,.framing-presenting .editor-toolbar,.framing-presenting .topbar,.framing-presenting .view-mode-switch,.framing-presenting .ground-visibility{display:none!important}.framing-presenting .viewport{right:310px!important;bottom:0!important}.framing-presenting .framing-workbench{bottom:0}.framing-presenting .workspace{inset:0!important}.framing-presenting .design-caption{right:330px}.framing-workbench .drawing-inline-svg [data-member-id]{cursor:pointer}.framing-workbench .drawing-inline-svg [data-selected=true]{stroke:#e5790c!important;stroke-width:2!important}
@media(max-width:750px){.framing-presenting .viewport{right:0!important;bottom:35%!important}.framing-presenting .design-caption{right:12px}.framing-presenting .framing-workbench{bottom:0}}

.framing-workspace-open .demo-scene-bar{display:none!important}.framing-presenting .app-header{display:none!important}.finish-images{display:grid;gap:12px}.finish-images figure{margin:0}.finish-images img{display:block;width:100%;height:auto}.finish-images figcaption{font-size:11px;color:#d2d9df}.framing-workbench .framing-scroll{scrollbar-gutter:stable}.framing-presenting .app-status{display:none!important}
.framing-effects-status{margin:3px 18px;color:#ffe1ac;font-size:11px}.framing-workbench>header,.framing-workbench>.framing-identity,.framing-workbench>.framing-disclosure,.framing-workbench>.framing-camera,.framing-workbench>.framing-tabs,.framing-workbench>.framing-locator{flex-shrink:0}
/* Phone: the workbench header already states the building and its disclosure, so the
   caption strip yields the short viewport to the building (rule above); the view tabs
   take the top-left corner and the label bar stacks under them. The compass cannot
   share a 390 x 268 viewport with those and the building, so it is not drawn here;
   its publication and gating are untouched. The workbench ends above the compact
   outputs button, and the viewport refits into the band under the label bar. */
@media(max-width:750px){.framing-workbench{bottom:88px;height:50%}.framing-workspace-open .orientation-compass{display:none}.framing-workspace-open .viewport{--apb-fit-inset-top:110px;--apb-fit-inset-bottom:0px}.framing-workspace-open .bottom-toolbar .output-action{min-height:42px;flex-direction:row;gap:7px;padding:6px 12px;font-size:10px}.framing-workspace-open .bottom-toolbar svg{width:16px;height:16px}.framing-workbench header{padding:4px 12px;min-height:30px}.framing-workbench header .framing-eyebrow{display:none}.framing-workbench h2{font-size:16px;margin:0}.framing-workbench header>button{min-height:28px;height:28px;padding:2px 9px}.framing-workbench .framing-camera{flex-wrap:wrap;overflow:visible;margin:3px 12px;min-height:30px}.framing-workbench .framing-camera button{flex:0 0 auto}.framing-workbench .framing-tabs{padding:3px 12px;gap:4px}.framing-workbench .framing-tabs button{min-height:32px;padding:4px;font-size:10px}.framing-workbench>.framing-message{flex-shrink:0;max-height:28px;overflow:auto;padding:3px 12px;font-size:10px;margin:0}.framing-workbench .framing-locator{height:40px;box-sizing:border-box;margin:0}.framing-workbench .framing-locator svg{height:32px;width:95px}.framing-workbench .framing-locator figcaption{font-size:9px;line-height:1.2}.framing-workbench>.framing-scroll{flex:1;min-height:80px}.framing-workspace-open .viewport{bottom:calc(50% + 88px)!important}.framing-workspace-open .view-mode-switch{top:10px}.framing-effects-status{font-size:10px;margin:2px 12px}.framing-presenting .framing-workbench{bottom:0;height:35%}.framing-presenting .viewport{bottom:35%!important}.framing-label-status{font-size:10px}.framing-label-status button{font-size:10px}.framing-workbench>.framing-actions{right:46px;top:4px}}
.framing-workbench-slot{display:contents}
.framing-label-overlay{position:fixed;z-index:6;pointer-events:none;color:#edf1f3;font:600 .8125rem/1.4 system-ui,sans-serif}
.framing-label-status,.framing-label,.framing-label-list{position:absolute;pointer-events:auto;background:#151b20;border:1px solid #89969f;border-radius:6px;box-shadow:0 2px 8px #0005;box-sizing:border-box}
.framing-label-status,.framing-label{display:flex;align-items:stretch;overflow:hidden;min-height:44px}
.framing-label-overlay button,.framing-label-overlay input{font:inherit;color:inherit;background:#151b20;border:0;min-height:44px;min-width:44px;padding:7px 9px}
.framing-label-overlay button{cursor:pointer}.framing-label-overlay button:hover,.framing-label-overlay button[aria-pressed=true]{background:#384752}
.framing-label-overlay :focus-visible{outline:3px solid #ffb353;outline-offset:-3px}
.framing-label-status>button:first-child{flex:1;text-align:left;font-size:.75rem}.framing-label-status>button+button,.framing-label-pin{border-left:1px solid #89969f!important}
.framing-label-select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}.framing-label.is-selected{border-color:#ffb353;box-shadow:0 0 0 1px #ffb353}.framing-label-pin{flex:0 0 44px}
.framing-label-list{padding:12px;overflow:auto;overscroll-behavior:contain;font-weight:400;box-sizing:border-box}.framing-label-list-heading{display:flex;justify-content:space-between;align-items:center}.framing-label-list label{display:grid;gap:5px;margin:8px 0}.framing-label-list input{border:1px solid #89969f;border-radius:4px;width:100%;box-sizing:border-box}.framing-label-list p{margin:8px 0;font-size:.75rem;color:#d0d9de}.framing-label-list ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}.framing-label-list li{display:flex;border:1px solid #65717a;border-radius:4px;overflow:hidden}.framing-label-list li>button:first-child{flex:1;min-width:0;text-align:left}.framing-label-list small{display:block;font-size:.68rem;font-weight:400;overflow-wrap:anywhere;color:#d0d9de}.framing-label-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media print{.framing-label-overlay{display:none}}
.job-package{display:grid;gap:14px;min-width:0}.job-package p{margin:0;line-height:1.55}.job-package-options{display:flex;gap:16px;flex-wrap:wrap}.job-package label{display:grid;gap:6px;min-width:0}.job-package select,.job-package input{max-width:100%;min-height:44px;font:inherit}.job-package .button{min-height:44px;justify-self:start}.job-package code{display:block;overflow-wrap:anywhere;font-size:11px;margin-top:4px}.job-package details li{margin:12px 0}.job-package-map{padding:16px;border:1px solid var(--line,#d9dcd6);border-radius:8px;display:grid;gap:12px}.job-package-note{font-size:13px;color:var(--muted,#737971)}
.job-package select{padding:10px 12px;border:1px solid #ffffff30;border-radius:7px;background:#0d1512;color:#edf4e7}.job-package select:focus-visible,.job-package input:focus-visible,.job-package summary:focus-visible{outline:2px solid #edf4e7;outline-offset:3px}

.job-package-filename{overflow-wrap:anywhere}

.job-package label.job-package-board{display:flex;align-items:center;gap:10px}.job-package-board input{min-height:20px;width:20px;height:20px}
.revision-comparison { display:grid; gap:12px; color:inherit; }
.revision-comparison p { margin:0; }
.revision-actions,.revision-legend-items { display:flex;flex-wrap:wrap;gap:8px; }
.revision-identity { padding:12px;border:1px solid #81918b;border-radius:8px;display:grid;gap:6px; }
.revision-identity span,.revision-filename,.revision-change-list span { overflow-wrap:anywhere; }
.revision-identity summary { cursor:pointer; }
.revision-identity dl { margin:8px 0 0; }
.revision-identity dd { margin:2px 0 8px;overflow-wrap:anywhere;font-family:monospace;font-size:.75rem; }
.revision-cross-design { display:flex;align-items:flex-start;gap:8px;padding:10px;border:1px solid #8b5700;border-radius:6px; }
.revision-key { display:inline-block;padding:3px 7px;border:2px solid currentColor;border-radius:4px;font-size:.78rem;line-height:1.5;font-weight:700;background:#fff; }
.revision-key-added { color:#17663c;border-style:solid; }
.revision-key-removed { color:#9c234c;border-style:dashed; }
.revision-key-moved { color:#1a5598;border-style:double; }
.revision-key-changed { color:#825200;border-style:dotted; }
.revision-change-list { list-style:none;margin:0;padding:0;max-height:340px;overflow:auto; }
.revision-change-list li { border-bottom:1px solid #a3ada8;padding:10px 0;display:flex;align-items:flex-start;flex-wrap:wrap;gap:6px; }
.revision-change-list small { flex-basis:100%; }
.revision-overlay-legend { position:absolute;left:12px;top:12px;z-index:7;max-width:min(420px,calc(100% - 24px));padding:10px;background:#fffffff2;color:#172a2a;border:1px solid #61756b;border-radius:8px;box-shadow:0 2px 9px #0002;display:grid;gap:6px;font-size:.8rem; }
.revision-overlay-legend>div:last-child { display:flex;flex-wrap:wrap;gap:6px; }
.revision-comparison .button,.revision-overlay-legend .button { white-space:normal;min-height:40px; }
.revision-comparison button:focus-visible,.revision-overlay-legend button:focus-visible,.revision-comparison summary:focus-visible { outline:3px solid #1256b6;outline-offset:3px; }
@media(max-width:700px) { .revision-actions>.button { width:100%; }.revision-overlay-legend { left:8px;top:8px;max-width:calc(100% - 16px);padding:8px; }.revision-legend-items { gap:4px; }.revision-change-list { max-height:260px; } }
.visual-study{display:inline-flex}.visual-study-panel{position:fixed;inset:24px;z-index:65;overflow:auto;padding:24px;background:#111;color:#f5f2ea;border:1px solid #777;border-radius:5px;font:15px/1.5 system-ui,sans-serif;overscroll-behavior:contain}.visual-study-panel>header{display:flex;justify-content:space-between;gap:12px;align-items:start;position:sticky;top:-24px;background:#111;z-index:2;padding:8px 0;border-bottom:1px solid #444}.visual-study-panel header p{font-size:11px;letter-spacing:.12em;color:#b0aca6}.visual-study-panel h2{margin:0 0 10px}.visual-study-panel button,.visual-study-panel select{min-height:44px;padding:8px 12px;background:#191919;color:#f5f2ea;border:1px solid #777;border-radius:3px;font:inherit}.visual-study-panel button{cursor:pointer}.visual-study-panel button:disabled{opacity:.45;cursor:default}.visual-study-panel :focus-visible{outline:3px solid white;outline-offset:3px}.visual-study-controls{display:flex;align-items:end;gap:14px;flex-wrap:wrap}.visual-study-controls label{display:grid;gap:5px;min-width:140px;max-width:100%}.visual-study-controls select{max-width:100%}.visual-study-controls input[type=range]{height:34px;width:190px;max-width:100%}.visual-study-controls input[type=checkbox]{width:20px;height:20px}.visual-study-canvas{display:block;width:100%;height:480px;background:#e8ecec;touch-action:none}.visual-study-legend{display:flex;gap:8px 16px;flex-wrap:wrap;list-style:none;padding:8px 0}.visual-study-legend li{display:flex;gap:7px;align-items:center;font-size:13px}.visual-study-legend i{width:22px;height:18px;display:inline-block}.pattern-1{background-image:repeating-linear-gradient(45deg,transparent 0 5px,#0006 5px 7px)}.pattern-2{background-image:repeating-linear-gradient(0deg,transparent 0 4px,#0006 4px 6px)}.pattern-3{background-image:radial-gradient(#0008 1px,transparent 2px);background-size:5px 5px}.visual-study-materials{margin-top:24px;border-top:1px solid #444}.visual-study-materials button{margin:0 8px 12px 0}.visual-study-cards{display:grid;grid-template-columns:1fr 1fr;gap:18px}.visual-study-cards figure{margin:0;min-width:0;background:#fff;color:#18211f;padding:12px}.visual-study-cards img{display:block;width:100%;height:auto}.visual-study-cards figcaption{padding:8px;font-weight:600}.visual-study-panel [role=alert]{padding:12px;border-left:4px solid #bc6c46;background:#351714}@media(max-width:600px){.visual-study-panel{inset:8px;padding:14px}.visual-study-panel>header{top:-14px}.visual-study-canvas{height:340px}.visual-study-controls{display:grid;grid-template-columns:1fr;width:100%}.visual-study-controls label{width:100%;min-width:0}.visual-study-controls select{width:100%}.visual-study-cards{grid-template-columns:1fr}}

.visual-study[data-embedded]{display:block;width:100%}.visual-study[data-embedded] .visual-study-panel{position:static;inset:auto;padding:14px;border:0;border-radius:0;max-height:none}.app-dialog.visual-study-dialog{width:min(1240px,calc(100vw - 24px));max-width:calc(100vw - 24px)}.visual-study[data-embedded] .revision-overlay-legend{position:static;max-width:none;margin:10px 0;box-shadow:none}.visual-study[data-embedded] .visual-study-panel>header{top:-14px}.visual-study[data-embedded] .revision-overlay-legend button{color:#f5f2ea;background:#191919}@media(max-width:600px){.app-dialog.visual-study-dialog{width:calc(100vw - 12px);max-width:calc(100vw - 12px)}.visual-study[data-embedded] .visual-study-panel{padding:8px}.visual-study[data-embedded] .visual-study-panel>header{top:-8px}}
.building-specification{max-width:70rem;margin:auto;color:inherit}
.building-specification-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin:1rem 0}
.building-specification table{width:100%;border-collapse:collapse;margin-bottom:1.5rem}
.building-specification th,.building-specification td{text-align:left;vertical-align:top;padding:.65rem .5rem;border-bottom:1px solid #d7dcd8;overflow-wrap:anywhere}
.building-specification th{width:34%;font-weight:600}
.building-specification li{margin-bottom:.5rem}
.specification-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){.building-specification th{width:42%}.building-specification th,.building-specification td{padding:.5rem .25rem}}
.planning-workspace { margin: 1rem 0; padding: .8rem; border: 1px solid #798589; border-radius: .5rem; }
.planning-workspace summary { cursor: pointer; font-weight: 700; }
.planning-workspace p { max-width: 75ch; }
.planning-actions,.planning-inputs { display: flex; flex-wrap: wrap; align-items: end; gap: .6rem; margin: .6rem 0; }
.planning-workspace label { display: flex; flex-direction: column; gap: .25rem; }
.planning-workspace input { max-width: 100%; min-width: 0; min-height: 44px; padding: 8px; }
.planning-workspace button { min-height: 2.75rem; }
.planning-workspace fieldset { min-width: 0; margin: 1rem 0; padding: .7rem; }
.planning-plan { display: block; width: 100%; height: min(65vh, 34rem); background: #f5f7f6; border: 1px solid #68797f; }
.planning-image { display: block; width: 100%; height: min(50vh, 25rem); background: #fff; border: 1px solid #68797f; }
.planning-footprint { fill: none; stroke: #263e44; stroke-width: 2; vector-effect: non-scaling-stroke; }
.planning-zone { fill: #3e8698; fill-opacity: .18; stroke: #286475; stroke-width: 2; vector-effect: non-scaling-stroke; }
.planning-stale { stroke-dasharray: 6 4; fill-opacity: .08; }
.planning-draft { fill: none; stroke: #764408; stroke-width: 3; vector-effect: non-scaling-stroke; }
.planning-point { fill: #764408; stroke: white; stroke-width: 2; vector-effect: non-scaling-stroke; }
.planning-orientation { font-size: 12px; fill: #263e44; }
.planning-zone-name { font-size: 12px; fill: #263e44; pointer-events: none; }
.planning-area-list { padding-left: 1.25rem; }
.planning-area-list li { margin: .75rem 0; }
.planning-area-list em { margin: 0 .4rem; }
.planning-workspace :focus-visible { outline: 3px solid #286475; outline-offset: 3px; }
@media (max-width: 600px) { .planning-inputs label { width: 100%; } .planning-actions button { flex: 1 1 12rem; } }
.app-dialog.planning-dialog{width:min(1100px,calc(100vw - 24px))}
.sheet-model-viewer{min-height:100dvh;background:#17221c;color:#edf0e5;font:15px/1.5 system-ui}.sheet-model-viewer header{padding:16px;max-width:1100px}.sheet-model-viewer h1{font-size:22px;margin:0}.sheet-model-viewer p{margin:6px 0;overflow-wrap:anywhere}.sheet-model-viewer a{color:#b6d8ff;margin-right:20px}.sheet-model-viewer button{min-height:44px;padding:10px;background:#263c2b;color:inherit;border:1px solid #85998a}.sheet-model-canvas{position:relative;height:65dvh;min-height:300px}.sheet-model-viewer :focus-visible{outline:3px solid #8dc4ff;outline-offset:3px}
.procurement-delivery{min-width:0}.procurement-delivery label{display:block;margin:10px 0 5px}.procurement-delivery input:not([type=checkbox]),.procurement-delivery select{box-sizing:border-box;max-width:100%;width:100%;font:inherit;padding:8px;color:inherit;background:var(--surface,#202422);border:1px solid var(--line,#78848b);border-radius:4px}.procurement-delivery .button{margin:5px 7px 5px 0;min-height:44px;white-space:normal;overflow-wrap:anywhere}.procurement-delivery small{display:block}.procurement-check{display:flex!important;align-items:center;gap:8px;min-height:44px}.procurement-table{overflow:auto}.procurement-table table{width:100%;border-collapse:collapse;font-size:12px}.procurement-table td,.procurement-table th{padding:7px;border-bottom:1px solid var(--line,#78848b);text-align:left;vertical-align:top}.procurement-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.procurement-delivery li{overflow-wrap:anywhere}@media(max-width:540px){.procurement-fields{grid-template-columns:1fr}.procurement-delivery .button{width:100%;margin-right:0}.procurement-table table{min-width:600px}}

.procurement-delivery p{overflow-wrap:anywhere}
