body{margin:0}[hidden]{display:none!important}
:root{
  --ground:#f1f4f7; --surface:#ffffff; --surface-2:#f7f9fb; --line:#d6dee7; --line-strong:#b9c5d1;
  --ink:#141c26; --muted:#5a6877; --faint:#8794a3;
  --accent:#1f5f8b; --accent-strong:#174a6e; --accent-soft:#e3eef6;
  --rust:#b7410e; --rust-soft:#fbe9df; --ok:#1f7a4d; --ok-soft:#e2f3ea; --warn:#9b6417; --warn-soft:#fbf1dc;
  --canvas:#0f151d; --canvas-2:#161e29; --canvas-line:#2a3542; --canvas-ink:#e6ecf3; --canvas-muted:#93a1b1;
  --shadow:0 1px 2px rgba(20,28,38,.06),0 8px 24px -12px rgba(20,28,38,.18);
  --radius:10px; --radius-sm:6px;
  --display:"Barlow Semi Condensed",system-ui,sans-serif; --body:"IBM Plex Sans",system-ui,sans-serif; --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --ground:#0e131a; --surface:#161d27; --surface-2:#1b2431; --line:#2a3542; --line-strong:#3a4756;
    --ink:#e7ecf2; --muted:#9aa8b7; --faint:#71808f;
    --accent:#7fb3dc; --accent-strong:#a5cbe9; --accent-soft:#1a2c3d;
    --rust:#e0824f; --rust-soft:#3a2418; --ok:#5fc48c; --ok-soft:#16301f; --warn:#e2b04a; --warn-soft:#332a14;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -12px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --ground:#0e131a; --surface:#161d27; --surface-2:#1b2431; --line:#2a3542; --line-strong:#3a4756;
  --ink:#e7ecf2; --muted:#9aa8b7; --faint:#71808f;
  --accent:#7fb3dc; --accent-strong:#a5cbe9; --accent-soft:#1a2c3d;
  --rust:#e0824f; --rust-soft:#3a2418; --ok:#5fc48c; --ok-soft:#16301f; --warn:#e2b04a; --warn-soft:#332a14;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -12px rgba(0,0,0,.6);
}
*{box-sizing:border-box}
body{margin:0;background:var(--ground);color:var(--ink);font:15px/1.55 var(--body);-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.wrap{max-width:1120px;margin:0 auto;padding-block:0 64px;padding-inline:20px}
h1,h2,h3,h4{font-family:var(--display);line-height:1.1;margin:0;text-wrap:balance;letter-spacing:-.005em}
h1{font-size:clamp(34px,5vw,52px);font-weight:700}
h2{font-size:28px;font-weight:700;margin-top:56px;padding-top:24px;border-top:1px solid var(--line)}
h3{font-size:20px;font-weight:600;margin-top:28px}
h4{font-size:16px;font-weight:600;margin-top:18px}
p{margin:.6em 0;max-width:72ch}
.lede{font-size:18px;color:var(--muted);max-width:70ch}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
code,.mono{font-family:var(--mono);font-size:.9em}
code{background:var(--surface-2);border:1px solid var(--line);border-radius:4px;padding:.05em .35em;color:var(--ink)}
.hdr{padding-block:48px 8px}
.hdr .meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;color:var(--muted);font-size:14px}
.hdr .meta span b{color:var(--ink);font-weight:500}
.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:28px}
.stat{background:var(--surface);padding:16px 18px}
.stat .n{font-family:var(--display);font-size:34px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.stat .l{font-size:13px;color:var(--muted);margin-top:6px}
.stat.rust .n{color:var(--rust)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-top:16px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.panel h4{margin-top:0}
.panel p:last-child{margin-bottom:0}
.tag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.04em;padding:2px 7px;border-radius:999px;border:1px solid var(--line-strong);color:var(--muted);vertical-align:middle}
.tag.p0{background:var(--rust);border-color:var(--rust);color:#fff}
.tag.p1{background:var(--rust-soft);border-color:transparent;color:var(--rust)}
.tag.p2{background:var(--warn-soft);border-color:transparent;color:var(--warn)}
.tag.keep{background:var(--ok-soft);border-color:transparent;color:var(--ok)}
/* findings */
.finding{display:grid;grid-template-columns:56px 1fr;gap:14px;padding:18px 0;border-bottom:1px solid var(--line)}
.finding:last-child{border-bottom:0}
.finding .num{font-family:var(--display);font-size:26px;font-weight:700;color:var(--faint);line-height:1.1}
.finding h4{margin:0 0 4px}
.finding p{margin:.35em 0}
.finding .ev{margin-top:8px;font-size:13.5px;color:var(--muted)}
.finding .ev code{font-size:12px}
.finding .ev li{margin:.2em 0}
.finding ul{padding-left:18px;margin:.3em 0}
/* exhibits */
.exhibit{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-top:16px;box-shadow:var(--shadow)}
.exhibit .cap{font-size:13px;color:var(--muted);margin-top:12px}
.navgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.wire{border:1px solid var(--line);border-radius:8px;background:var(--surface-2);padding:10px;font-size:11px;color:var(--muted)}
.wire .t{font-family:var(--display);font-weight:600;font-size:13px;color:var(--ink);margin-bottom:6px}
.wire .bar{height:8px;border-radius:3px;background:var(--line-strong);margin:4px 0}
.wire .row{display:flex;gap:4px;flex-wrap:wrap;margin:6px 0}
.wire .btn{border:1px solid var(--line-strong);border-radius:4px;padding:2px 6px;background:var(--surface);color:var(--ink);font-size:10px}
.wire .btn.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.wire .btn.green{background:#1f7a4d;color:#fff;border-color:#1f7a4d}
.wire .tabs{display:flex;gap:10px;border-bottom:1px solid var(--line-strong);margin:6px 0}
.wire .tabs span{padding:2px 0 4px;font-size:10px}
.wire .tabs span.on{color:var(--accent);border-bottom:2px solid var(--accent);font-weight:600}
.wire .chip{border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px;font-size:10px;background:var(--surface)}
.wire .chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.wire .vert{display:flex;flex-direction:column;gap:3px;margin:6px 0}
.wire .vert span{border:1px solid #1f7a4d;border-radius:3px;padding:2px 6px;font-size:10px;color:#1f7a4d;font-weight:700}
.wire .vert span.on{background:#1f7a4d;color:#fff}
.wire .pill{display:inline-block;border-radius:999px;padding:2px 9px;font-size:10px;border:1px solid var(--line-strong)}
.wire .pill.on{background:#17212f;color:#fff;border-color:#17212f}
.swatches{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}
.sw{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface)}
.sw .c{height:44px}
.sw .m{padding:8px 10px;font-size:12px;line-height:1.35}
.sw .m b{display:block;font-weight:600;color:var(--ink)}
.sw .m code{font-size:11px;padding:0;border:0;background:none;color:var(--muted)}
.greys{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.greys div{flex:1 1 90px;height:36px;border-radius:6px;display:flex;align-items:flex-end;justify-content:center;font-family:var(--mono);font-size:10px;color:#fff;padding-bottom:4px}
.flow{display:grid;gap:8px;margin-top:8px}
.flow .step{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);font-size:14px}
.flow .step .where{font-family:var(--mono);font-size:12px;color:var(--muted);word-break:break-all}
.flow .step .loss{color:var(--rust);font-size:13px;margin-top:4px}
.gens{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.gen{border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:var(--surface-2)}
.gen .t{font-family:var(--display);font-weight:700;font-size:16px}
.gen .d{font-size:13px;color:var(--muted);margin:4px 0 8px}
.gen ul{margin:0;padding-left:16px;font-size:13px}
.gen li{margin:.15em 0}
/* proposal */
.principles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:14px}
.pr{border-left:3px solid var(--accent);padding:6px 0 6px 14px}
.pr b{font-family:var(--display);font-size:17px;font-weight:600;display:block}
.pr span{font-size:13.5px;color:var(--muted)}
table.map{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:10px}
table.map th,table.map td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.map th{font-family:var(--mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:500}
table.map td code{font-size:12px}
.tablewrap{overflow-x:auto}
.phases{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:12px}
.phase{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:14px 16px}
.phase .t{font-family:var(--display);font-weight:700;font-size:17px}
.phase .w{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em}
.phase ul{padding-left:16px;margin:8px 0 0;font-size:13.5px}
.phase li{margin:.25em 0}
.qs li{margin:.4em 0}
.note{border-left:3px solid var(--warn);background:var(--warn-soft);padding:10px 14px;border-radius:0 8px 8px 0;font-size:14px;margin-top:14px}
.kbd{font-family:var(--mono);font-size:11.5px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;padding:0 5px;background:var(--surface)}
.pchecker{padding:20px 0;border-top:1px solid var(--line);min-width:0}
.pchecker h3{margin:0;font-size:16px;letter-spacing:0}
#sec-material-costs>.acts{align-items:center}
#sec-material-costs h3{margin:0;font-size:16px;letter-spacing:0}
.pcheck-table{min-width:1600px;table-layout:fixed}
.pcheck-table th:first-child{width:40px}
.pcheck-table th:nth-child(5){width:220px}
.pcheck-table .in{width:100%;min-width:0;padding:6px;font-size:12px}
.pcheck-add{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin:12px 0}
.pcheck-add .f{flex:1;min-width:180px}
.pcheck-image{position:relative;width:100%;max-width:1200px;border:1px solid var(--line);margin:12px 0;overflow:hidden}
.pcheck-image img{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair}
.pcheck-rect{display:none;position:absolute;pointer-events:none;border:2px solid #168663;background:rgba(22,134,99,.14)}
/* ===== MOCKUP (one-screen app) ===== */
.mock-wrap{margin:20px -20px 0;padding:0 8px}
@media (min-width:1200px){.mock-wrap{margin-left:calc(50% - 50vw + 12px);margin-right:calc(50% - 50vw + 12px);padding:0}}
.mock-frame{border:1px solid var(--line-strong);border-radius:var(--a-r-lg);overflow:hidden;box-shadow:var(--shadow);background:var(--canvas)}
.mock-chrome{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:var(--a-fs-sm);color:var(--muted)}
.mock-chrome .dots span{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--line-strong);margin-right:5px}
.mock-chrome .url{flex:1;text-align:center;font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:var(--a-r-sm);padding:3px 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
/* ===== THEME TOKENS (C2C-059) =====
   The --a-* names are the API; see THEME-CONTRACT.md. Light is the default and matches the /steeldraft screens
   (steelhub.css); .app.dark is the complete dark set. Screens use tokens only. The canvas tokens are read by JS
   (themeHex/themeColor in 00-core.js), so they stay plain hex or rgba. */
/* theme-independent scale tokens; the issued proposal (#qPrint, quote-print.html) has no .app, so it gets them too */
.app,#qPrint{
  --a-r-xs:4px;--a-r-sm:6px;--a-r:8px;--a-r-lg:10px;--a-r-pill:999px;
  --a-fs-2xs:10px;--a-fs-xs:11px;--a-fs-sm:12px;--a-fs:13px;--a-fs-md:15px;--a-fs-lg:18px;--a-fs-xl:24px;
  --a-font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif;
  --a-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  --a-w-medium:500;--a-w-strong:600;--a-w-bold:700;--a-w-heavy:800;}
.app{color-scheme:light;
  --a-bg:#f5f7fa;--a-panel:#ffffff;--a-panel-2:#f1f4f8;--a-field:#ffffff;--a-line:#d9e1ea;--a-line-strong:#bdc9d6;
  --a-ink:#17212f;--a-muted:#56636f;--a-faint:#647180;
  --a-accent:#1f5f8b;--a-accent-strong:#17476a;--a-on-accent:#ffffff;--a-accent-soft:#eef6fb;--a-accent-line:#9fbfd6;
  --a-ok:#1f7a4d;--a-on-ok:#ffffff;--a-ok-soft:#edf8f2;--a-ok-line:#9bc7af;
  --a-warn:#9b6417;--a-on-warn:#ffffff;--a-warn-soft:#fff8e8;--a-warn-line:#e3c58c;
  --a-rust:#b42318;--a-on-rust:#ffffff;--a-rust-soft:#fff1f1;--a-rust-line:#e6a7a0;
  --a-danger:var(--a-rust);--a-danger-soft:var(--a-rust-soft);--a-danger-line:var(--a-rust-line);
  --a-focus:rgba(31,95,139,.28);
  --a-nav:#111827;--a-nav-2:#1f2937;--a-nav-line:#374151;--a-nav-ink:#f9fafb;--a-nav-muted:#b6c0cc;--a-nav-accent:#7cc4f5;--a-nav-warn:#f5b94f;
  --a-brand-blue:#14a8f5;--a-brand-orange:#ff8a00;--a-avatar:#2c5f86;--a-on-avatar:#ffffff;
  --a-glass:rgba(255,255,255,.86);--a-scrim:rgba(17,24,39,.38);
  --a-shadow-sm:0 1px 2px rgba(15,23,42,.04);--a-shadow:0 8px 20px rgba(15,23,42,.08);--a-shadow-lg:0 14px 28px rgba(15,23,42,.16);--a-pop-shadow:rgba(15,23,42,.18);
  --display:var(--a-font);--body:var(--a-font);--mono:var(--a-font-mono);
  --a-canvas-1:#f8fafc;--a-canvas-2:#e3e9f0;--a-sheet-1:#ffffff;--a-sheet-2:#f1f4f8;
  --a-3d-ground:#dfe6ee;--a-3d-grid:#c3cdd8;--a-3d-select:#6fb1e3;--a-3d-problem:#ef8d5c;--a-3d-warn:#e5b45a;--a-3d-guide:#8ea1b6;--a-3d-dim:#2f6a9a;--a-3d-dim-live:#0f3f63;
  --a-unit-nonclimate:#8fb7d8;--a-unit-climate:#9fd3b3;--a-unit-hall:#3d4a5a;--a-unit-door:#d98b3a;--a-unit-edge:rgba(0,0,0,.25);
  --a-plan-floor:#dfe6ee;--a-plan-edge:#a9b6c4;
  --a-plan-paper:#f7fbfe;--a-plan-ink:#23425b;--a-plan-hud:rgba(255,255,255,.94);--a-plan-warn:#8c3425;--a-plan-warn-bg:#fff3e8;
  --a-dl-ink:#1f4462;--a-dl-bg:rgba(255,255,255,.88);--a-dl-line:rgba(47,106,154,.4);
  --a-dl-unit-ink:#1a2a3a;--a-dl-unit-bg:rgba(255,255,255,.74);--a-dl-climate-ink:#1c5a3a;
  --a-dl-hall-ink:#ffffff;--a-dl-hall-bg:rgba(61,74,90,.9);--a-dl-door-ink:#ffffff;--a-dl-door-bg:rgba(155,100,23,.95);
  --a-dl-live-ink:#ffffff;--a-dl-live-bg:#0f3f63}
.app.dark{color-scheme:dark;
  --a-bg:#0f151d;--a-panel:#161e29;--a-panel-2:#1c2632;--a-field:#0f151d;--a-line:#283442;--a-line-strong:#3a4756;
  --a-ink:#e6ecf3;--a-muted:#9aa8b7;--a-faint:#7f8d9c;
  --a-accent:#6fb1e3;--a-accent-strong:#9dcbf0;--a-on-accent:#0f151d;--a-accent-soft:#172a3b;--a-accent-line:rgba(111,177,227,.42);
  --a-ok:#4fc38a;--a-on-ok:#0f151d;--a-ok-soft:#13301f;--a-ok-line:rgba(79,195,138,.4);
  --a-warn:#e5b45a;--a-on-warn:#0f151d;--a-warn-soft:#2e2614;--a-warn-line:rgba(229,180,90,.4);
  --a-rust:#f28b82;--a-on-rust:#0f151d;--a-rust-soft:#3a1f1d;--a-rust-line:rgba(242,139,130,.42);
  --a-focus:rgba(111,177,227,.35);
  --a-nav:#0b1017;--a-nav-2:#161d27;--a-nav-line:#273241;--a-nav-ink:#e6ecf3;--a-nav-muted:#9aa8b7;--a-nav-accent:#6fb1e3;--a-nav-warn:#e5b45a;
  --a-glass:rgba(22,30,41,.84);--a-scrim:rgba(8,12,18,.6);
  --a-shadow-sm:0 1px 2px rgba(0,0,0,.3);--a-shadow:0 10px 30px -10px rgba(0,0,0,.6);--a-shadow-lg:0 30px 60px -20px rgba(0,0,0,.7);--a-pop-shadow:rgba(0,0,0,.55);
  --a-canvas-1:#182230;--a-canvas-2:#0f151d;--a-sheet-1:#1c2632;--a-sheet-2:#161e29;
  --a-3d-ground:#151d27;--a-3d-grid:#22303e;--a-3d-dim:#9ec5e8;--a-3d-dim-live:#ffffff;
  --a-plan-floor:#1b2531;--a-plan-edge:#3a4756;
  --a-plan-paper:#121c26;--a-plan-ink:#cfe3f5;--a-plan-hud:rgba(22,30,41,.92);--a-plan-warn:#f28b82;--a-plan-warn-bg:#3a1f1d;
  --a-dl-ink:#cfe3f5;--a-dl-bg:rgba(12,18,26,.74);--a-dl-line:rgba(158,197,232,.38);
  --a-dl-unit-ink:#e9f0f7;--a-dl-unit-bg:rgba(12,18,26,.5);--a-dl-climate-ink:#dcf4e6;
  --a-dl-hall-ink:#e6ecf3;--a-dl-door-ink:#1b1408;--a-dl-door-bg:rgba(229,180,90,.94);
  --a-dl-live-ink:#0b1520;--a-dl-live-bg:#ffffff}
/* the top bar is the dark /steeldraft navbar in both themes: it re-points the surface tokens for its children */
.app .topbar{--a-panel:var(--a-nav);--a-panel-2:var(--a-nav-2);--a-bg:var(--a-nav-2);--a-field:var(--a-nav-2);--a-line:var(--a-nav-line);--a-ink:var(--a-nav-ink);--a-muted:var(--a-nav-muted);--a-faint:var(--a-nav-muted);--a-accent:var(--a-nav-accent);--a-warn:var(--a-nav-warn);--a-glass:var(--a-nav-2);--a-accent-soft:var(--a-nav-2);--a-accent-strong:var(--a-nav-ink);--a-accent-line:var(--a-nav-line);--a-line-strong:var(--a-nav-line);--a-focus:rgba(124,196,245,.35);color-scheme:dark}
.app{display:grid;grid-template-columns:228px 1fr;grid-template-rows:48px 1fr var(--strip-h,34px);height:700px;background:var(--a-bg);color:var(--a-ink);font:13px/1.45 var(--body);position:relative;user-select:none}
.btn.pri,.msg.me{color:var(--a-on-accent)}
.chipbtn{border:1px solid var(--a-line);background:var(--a-glass);color:var(--a-ink);font:inherit;font-size:var(--a-fs-sm);padding:5px 10px;border-radius:var(--a-r);cursor:pointer;backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2)}
.chipbtn:hover{border-color:var(--a-accent)}
/* Ferro slide-over: floats over the canvas, keeps the stage visible */
.ferro{position:absolute;right:14px;top:56px;bottom:14px;width:min(340px,calc(100% - 28px));display:flex;flex-direction:column;background:var(--a-panel);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow-lg);z-index:4;overflow:hidden}
.ferro .fhd{display:flex;align-items:center;gap:8px;padding:8px 10px 8px 12px;border-bottom:1px solid var(--a-line)}
.ferro .fhd b{font-family:var(--display);font-size:var(--a-fs-md)}
.ferro .fctx{flex:1;font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ferro .chat{flex:1;overflow:auto;padding:12px}
.ferro .fin{display:flex;gap:6px;padding:8px;border-top:1px solid var(--a-line)}
.ferro .fin input{flex:1;min-width:0;border:1px solid var(--a-line-strong);background:var(--a-field);color:var(--a-ink);font:inherit;font-size:var(--a-fs-sm);padding:8px 10px;border-radius:var(--a-r-sm);outline:none}
.ferro .fin input:focus{border-color:var(--a-accent)}
.app.touch .ferro{width:min(380px,calc(100% - 28px))}
/* template gallery */
.palette.gallery .box{width:min(920px,94%)}
.ghd{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-bottom:1px solid var(--a-line)}
.ghd b{font-family:var(--display);font-size:var(--a-fs-lg);display:block}
.ghd span{font-size:var(--a-fs-sm);color:var(--a-muted);display:block;margin-top:2px;max-width:60ch}
.ghd .ib{margin-left:auto}
.gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;padding:12px;max-height:min(560px,70vh);overflow:auto}
.gcard{text-align:left;border:1px solid var(--a-line);background:var(--a-panel);color:var(--a-ink);border-radius:var(--a-r);box-shadow:var(--a-shadow-sm);padding:10px 12px 12px;font:inherit;cursor:pointer}
.gcard:hover{border-color:var(--a-accent)}
.gcard.on{border-color:var(--a-accent);background:var(--a-accent-soft);box-shadow:0 0 0 3px var(--a-focus)}
.gcard .th{color:var(--a-muted);margin-bottom:6px}
.gcard .th svg{width:100%;height:auto;display:block}
.gcard .gt{font-family:var(--display);font-weight:600;font-size:var(--a-fs-md)}
.gcard .gm{font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-accent);margin:2px 0 6px}
.gcard .gd{font-size:var(--a-fs-sm);color:var(--a-muted);line-height:1.4}
.newp{margin-top:16px}

/* stage-appropriate layouts */
.rail .st.mine .lbl:after{content:"yours";font-family:var(--mono);font-size:var(--a-fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--a-accent);margin-left:6px}
.page{position:absolute;inset:0;overflow:auto;padding:20px clamp(16px,3vw,40px) 48px;background:var(--a-bg)}
.page>*{max-width:1040px;margin-left:auto;margin-right:auto}
.phead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.phead>div:first-child{flex:1 1 360px}
.phead .pright{margin-left:auto}
.phead h3{font-family:var(--display);font-size:var(--a-fs-xl);font-weight:var(--a-w-bold);letter-spacing:-.01em;margin:2px 0 4px;color:var(--a-ink)}
.phead .sub{color:var(--a-muted);font-size:var(--a-fs);max-width:60ch}
.app .eyebrow{font-family:var(--body);font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint)}
.phead .eyebrow{color:var(--a-faint);display:flex;gap:8px;align-items:center}
.phead .pright{display:flex;gap:8px;align-items:center;padding-top:4px;flex-wrap:wrap}
.phead .pright .btn{font-size:var(--a-fs)}
.owners{display:inline-flex;gap:4px}
.own{font-family:var(--body);text-transform:none;letter-spacing:0;font-size:var(--a-fs-xs);border:1px solid var(--a-line);border-radius:var(--a-r-pill);padding:1px 8px;color:var(--a-muted)}
.own.lead{color:var(--a-accent);border-color:var(--a-accent-line);background:var(--a-accent-soft)}
.pgrid{display:flex;flex-direction:column;gap:12px}
.pgrid.wide{}
.icard{border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-panel);padding:14px 16px;box-shadow:var(--a-shadow-sm)}
.icard .ih{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.icard h4{font-family:var(--display);font-size:var(--a-fs-md);font-weight:600;margin:0;color:var(--a-ink)}
.icard .card{background:var(--a-bg)}
.icard .kv{margin-top:8px}
.f{display:flex;flex-direction:column;gap:4px;font-size:var(--a-fs-xs);color:var(--a-muted)}
.in{width:100%;border:1px solid var(--a-line-strong);background:var(--a-field);color:var(--a-ink);font:inherit;font-size:var(--a-fs);padding:8px 10px;border-radius:var(--a-r-sm);outline:none;min-width:0}
.in:focus{border-color:var(--a-accent);box-shadow:0 0 0 3px var(--a-focus)}
.f2{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 12px;margin-bottom:8px}
.f2 .f.wide{grid-column:1/-1}
.f select.in{appearance:auto}
.acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.acts .btn{font-size:var(--a-fs-sm)}
.blist{display:flex;flex-direction:column;gap:4px}
.brow{display:grid;grid-template-columns:40px 1fr auto auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);color:var(--a-ink);font:inherit;font-size:var(--a-fs-sm);text-align:left;cursor:pointer}
.brow:hover{border-color:var(--a-accent)}
.brow .mono{color:var(--a-accent);font-size:var(--a-fs-sm)}
.brow .dim{color:var(--a-muted);font-variant-numeric:tabular-nums}
.brow .go{color:var(--a-accent);font-size:var(--a-fs-sm)}
.check{list-style:none;padding:0;margin:0;display:grid;gap:6px;font-size:var(--a-fs-sm)}
.check li{display:flex;align-items:center;gap:8px;color:var(--a-muted)}
.check li:before{content:"○";color:var(--a-faint)}
.check li.ok{color:var(--a-ink)}
.check li.ok:before{content:"✓";color:var(--a-ok)}
.tbl{width:100%;border-collapse:collapse;font-size:var(--a-fs-sm)}
.tbl th{font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.06em;text-transform:uppercase;color:var(--a-muted);background:var(--a-panel-2);text-align:left;padding:7px 8px;border-bottom:1px solid var(--a-line-strong)}
.tbl thead th{position:sticky;top:0;z-index:1}
/* the issued proposal keeps its pre-C2C-068 header style */
#qPrint .tbl th{font-family:var(--mono);font-weight:500;color:var(--a-faint);background:none;border-bottom:1px solid var(--a-line);padding-top:6px;padding-bottom:6px}
#qPrint .tbl thead th{position:static}
#qPrint .tbl td{border-bottom-style:dashed}
.tbl td{padding:8px;border-bottom:1px solid var(--a-line);vertical-align:top}
.tbl td.r,.tbl th.r{text-align:right;font-variant-numeric:tabular-nums}
.tbl tr.tot td{border-bottom:0;font-weight:600;padding-top:10px}
.steps{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.stp{display:flex;align-items:center;gap:8px;border:1px solid var(--a-line);background:var(--a-panel);color:var(--a-muted);border-radius:var(--a-r-pill);padding:6px 12px 6px 6px;font:inherit;font-size:var(--a-fs-sm);cursor:pointer}
.stp .ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:var(--a-fs-xs);font-weight:var(--a-w-bold);border:1.5px solid var(--a-faint)}
.stp.done{background:var(--a-ok-soft);border-color:var(--a-ok-line)} .stp.done .ic{background:var(--a-ok);border-color:var(--a-ok);color:var(--a-on-ok)}
.stp.cur{color:var(--a-ink)} .stp.cur .ic{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent)}
.stp.locked{opacity:.55} .stp.locked .ic{border-style:dashed}
.stp.here{border-color:var(--a-accent-line);background:var(--a-accent-soft);color:var(--a-ink);font-weight:var(--a-w-strong)}
.stages{display:flex;flex-direction:column;gap:4px}
.sl{display:flex;align-items:center;gap:10px;border:1px solid transparent;background:transparent;color:var(--a-muted);border-radius:var(--a-r);padding:6px 8px;font:inherit;font-size:var(--a-fs-sm);cursor:pointer;text-align:left}
.sl:hover{background:var(--a-panel-2)} .sl.here{border-color:var(--a-accent-line);background:var(--a-accent-soft);color:var(--a-ink)}
.sl .ic{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:var(--a-fs-2xs);font-weight:var(--a-w-bold);border:1.5px solid var(--a-faint);flex:none}
.sl.done .ic{background:var(--a-ok);border-color:var(--a-ok);color:var(--a-on-ok)} .sl.cur .ic{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent)}
.sl b{font-weight:500;display:block;line-height:1.2} .sl small{font-size:var(--a-fs-xs);color:var(--a-faint)}
.thumbcard{border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);padding:10px;margin-bottom:8px;color:var(--a-muted)}
.thumbcard .plan{width:100%;display:block}
.thumbcard .tc{font-size:var(--a-fs-xs);color:var(--a-muted);margin-top:6px;text-align:center}
.ownlist{display:grid;gap:6px;font-size:var(--a-fs-sm);color:var(--a-muted)} .ownrow{display:flex;gap:8px;align-items:center}
.cardbtn{width:100%;text-align:left;font:inherit;color:var(--a-ink);cursor:pointer} .cardbtn:hover{border-color:var(--a-accent)}

@media (max-width:980px){.app{grid-template-columns:60px 1fr}.app .rail .lbl,.app .rail .sub,.app .rail .subs,.app .rail .hd,.app .rail .chev{display:none}.app .rail .st{justify-content:center;padding:10px 0}}
@media (max-width:720px){.app .topbar .pid .name{display:none}}
.topbar{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--a-panel);color:var(--a-ink);border-bottom:1px solid var(--a-line)}
.topbar .brand{display:flex;align-items:center;gap:8px;font-family:var(--display);font-weight:var(--a-w-heavy);font-size:var(--a-fs-lg);letter-spacing:-.02em;color:var(--a-ink);width:204px;flex:none}
.topbar .brand i{width:22px;height:22px;flex:none;display:inline-block;position:relative;background:linear-gradient(var(--a-brand-blue),var(--a-brand-blue)) center/3px 100% no-repeat,linear-gradient(var(--a-brand-blue),var(--a-brand-blue)) center/100% 3px no-repeat;border-radius:var(--a-r-xs)}
.topbar .brand i:after{content:"";position:absolute;inset:3px;background:linear-gradient(var(--a-brand-orange),var(--a-brand-orange)) center/3px 100% no-repeat,linear-gradient(var(--a-brand-orange),var(--a-brand-orange)) center/100% 3px no-repeat;transform:rotate(45deg)}
.topbar .brand i:before{content:"";position:absolute;inset:7px;border-radius:50%;background:var(--a-ink);z-index:1}
.topbar .search{flex:0 1 300px;min-width:150px;display:flex;align-items:center;gap:8px;background:var(--a-bg);border:1px solid var(--a-line);border-radius:var(--a-r-sm);padding:6px 10px;color:var(--a-muted);cursor:pointer}
.topbar .search:hover{border-color:var(--a-accent)}
.topbar .search .sq{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .search .k{margin-left:auto;font-family:var(--mono);font-size:var(--a-fs-2xs);border:1px solid var(--a-line);border-radius:var(--a-r-xs);padding:0 5px;color:var(--a-faint)}
.topbar .pid{flex:1 1 120px;display:flex;align-items:center;gap:10px;min-width:0;overflow:hidden}
.topbar .pid .id{font-family:var(--mono);font-size:var(--a-fs-sm);color:var(--a-accent);white-space:nowrap}
.topbar .pid .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .pid .rev{font-family:var(--mono);font-size:var(--a-fs-2xs);border:1px solid var(--a-line);border-radius:var(--a-r-pill);padding:1px 7px;color:var(--a-muted);white-space:nowrap}
.topbar .pid .rev:empty{display:none}
.canvas canvas{touch-action:none}
/* device frames */
.devbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:14px 0 10px;font-size:var(--a-fs);color:var(--muted)}
.devbar .seg{background:var(--surface);border-color:var(--line)}
.devbar .seg button{color:var(--muted)}
.devbar .seg button.on{background:var(--accent-soft);color:var(--accent)}
.mock-frame.ipad{max-width:1194px;margin:0 auto;border-radius:var(--a-r-pill);border:10px solid #1b222c;box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.mock-frame.ipad .mock-chrome{display:none}
.mock-frame.ipad .app{height:834px}
.mock-frame.ipad.portrait{max-width:834px}
.mock-frame.ipad.portrait .app{height:1000px;grid-template-columns:64px 1fr;grid-template-rows:56px 1fr var(--strip-h,34px)}
.mock-frame.ipad.portrait .topbar .pid .rev{display:none}
.mock-frame.ipad.portrait .topbar .search{flex:0 1 200px}
.mock-frame.ipad.portrait .topbar .right .ib{padding:6px 8px;font-size:var(--a-fs-sm)}
.mock-frame.ipad.portrait .topbar{overflow:hidden}
.mock-frame.ipad.portrait .topbar .search{flex:0 1 170px}
.mock-frame.ipad.portrait .app .rail .lbl,.mock-frame.ipad.portrait .app .rail .sub,.mock-frame.ipad.portrait .app .rail .subs,.mock-frame.ipad.portrait .app .rail .hd{display:none}
.mock-frame.ipad.portrait .app .rail .st{justify-content:center;padding:12px 0}
.mock-frame.ipad.portrait .app .status{grid-column:1/-1}
.mock-frame.ipad.portrait .app .topbar .pid .name{display:none}
.app.touch{--tap:44px}
.app.touch .topbar{height:auto}
.app.touch .rail .st{min-height:var(--tap);padding:10px 8px}
.app.touch .btn{min-height:var(--tap);padding:10px 14px;font-size:var(--a-fs)}
.app.touch .ib{min-height:40px;padding:8px 12px;font-size:var(--a-fs)}
.app.touch .tools button{min-height:var(--tap);font-size:var(--a-fs)}
.app.touch .tools button .k,.app.touch .search .k{display:none}
.app.touch .seg button{min-height:38px;padding:6px 14px;font-size:var(--a-fs)}
.app.touch .chips button{min-height:40px;padding:8px 14px;font-size:var(--a-fs)}
.app.touch .field input[type=range]{height:28px}
.app.touch .pcard{padding:14px}
.app.touch .hint{display:none}
.topbar .right{display:flex;align-items:center;gap:4px;flex:none}
.topbar .new-project{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;flex:none;white-space:nowrap}
.topbar .new-project[hidden]{display:none}
@media (max-width:1180px){.topbar .pid .rev,.topbar .pid .name{display:none}}
@media (max-width:1060px){
  .app,.mock-frame.ipad.portrait .app{grid-template-rows:auto minmax(0,1fr) var(--strip-h,34px)}
  .app .topbar{flex-wrap:wrap;min-height:48px;padding:2px 12px}
  .app .topbar .brand{width:auto}
  .app .topbar .right{max-width:100%;flex-wrap:wrap}
}
.ib{border:1px solid transparent;background:transparent;color:var(--a-muted);border-radius:var(--a-r-sm);padding:5px 9px;font:inherit;font-size:var(--a-fs-sm);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.ib:hover{background:var(--a-panel-2);color:var(--a-ink)}
.ib.on{background:var(--a-panel-2);color:var(--a-accent);border-color:var(--a-line)}
.ib .dot{width:7px;height:7px;border-radius:50%;background:var(--a-rust)}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--a-avatar);color:var(--a-on-avatar);font:inherit;font-size:var(--a-fs-xs);font-weight:var(--a-w-bold);display:grid;place-items:center;border:0;padding:0;cursor:pointer;position:relative;margin:0 4px}
.avatar:before{content:"";position:absolute;inset:-7px}
.avatar:focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
/* the avatar menu (C2C-068): name, theme and "Viewing as" live here, off the top bar */
.me{position:relative;flex:none}
.memenu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:210px;background:var(--a-panel);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow-lg);padding:6px;display:flex;flex-direction:column;gap:2px;user-select:none}
.memenu[hidden]{display:none}
.me-name{font-weight:var(--a-w-strong);color:var(--a-ink);padding:8px 10px 6px}
.me-label{font-size:var(--a-fs-sm);color:var(--a-muted);padding:8px 10px 2px;border-top:1px solid var(--a-line);margin-top:4px}
.me-roles{display:flex;flex-direction:column;gap:2px}
.me-item{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 10px;border:0;border-radius:var(--a-r-sm);background:none;color:var(--a-ink);font:inherit;text-align:left;cursor:pointer}
.me-item:hover,.me-item:focus-visible{background:var(--a-panel-2)}
.me-item[aria-checked]:before{content:"";width:14px;flex:none;text-align:center}
.me-item[aria-checked="true"]:before{content:"✓";color:var(--a-accent)}
.rail{background:var(--a-panel);border-right:1px solid var(--a-line);padding:10px 8px;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.rail .hd{font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint);padding:6px 8px 8px}
.rail .st{display:flex;align-items:center;gap:10px;padding:8px 8px;border-radius:var(--a-r);cursor:pointer;color:var(--a-muted);border:1px solid transparent;text-align:left;background:none;font:inherit;width:100%}
.rail .st:hover{background:var(--a-panel-2);color:var(--a-ink)}
.rail .st.on{background:var(--a-accent-soft);color:var(--a-ink);border-color:var(--a-accent-line)}
.rail .st .ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:var(--a-fs-xs);font-weight:var(--a-w-bold);flex:none;border:1.5px solid var(--a-faint);color:var(--a-faint)}
.rail .st.done .ic{background:var(--a-ok);border-color:var(--a-ok);color:var(--a-on-ok)}
.rail .st.cur .ic{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent);box-shadow:0 0 0 3px var(--a-focus)}
.rail .st.locked{opacity:.55}
.rail .st.locked .ic{border-style:dashed}
.rail .st .lbl{font-weight:var(--a-w-strong);font-size:var(--a-fs);line-height:1.2}
.rail .st .sub{display:block;font-size:var(--a-fs-xs);color:var(--a-faint);font-weight:400;margin-top:1px}
.rail .st.cur .sub{color:var(--a-accent)}
.rail .spacer{flex:1}
.rail .home{margin-bottom:6px}
.main{position:relative;overflow:hidden;min-width:0}
.canvas{position:absolute;inset:0;overflow:hidden;background:radial-gradient(1200px 600px at 60% 30%,var(--a-canvas-1) 0%,var(--a-canvas-2) 70%)}
.canvas.embed{position:relative;inset:auto;height:clamp(260px,42vh,420px);border:1px solid var(--a-line);border-radius:var(--a-r-lg);margin:0 0 4px}
.canvas.embed .hud{left:10px;top:10px}
.canvas.embed .hint{display:none}
.canvas canvas{display:block;width:100%;height:100%}
.canvas .hud{position:absolute;left:14px;top:12px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;z-index:3}
#sheetsView,#tableView{padding-top:60px}
.seg{display:inline-flex;background:var(--a-glass);border:1px solid var(--a-line);border-radius:var(--a-r);padding:2px;backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2)}
.seg button{border:0;background:transparent;color:var(--a-muted);font:inherit;font-size:var(--a-fs-sm);padding:4px 10px;border-radius:var(--a-r-sm);cursor:pointer}
.seg button.on{background:var(--a-accent-soft);color:var(--a-accent-strong);box-shadow:inset 0 0 0 1px var(--a-accent-line)}
.seg button:hover{color:var(--a-ink)}
.tools{position:absolute;left:14px;bottom:14px;display:flex;flex-direction:column;gap:4px;background:var(--a-glass);border:1px solid var(--a-line);border-radius:var(--a-r-lg);padding:6px;box-shadow:var(--a-shadow);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2)}
.tools button{display:flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--a-muted);font:inherit;font-size:var(--a-fs-sm);padding:6px 10px;border-radius:var(--a-r-sm);cursor:pointer;text-align:left}
.tools button:hover{background:var(--a-panel-2);color:var(--a-ink)}
.tools button.on{background:var(--a-panel-2);color:var(--a-ink);box-shadow:inset 0 0 0 1px var(--a-line)}
.tools button .sw{width:12px;height:12px;border-radius:var(--a-r-xs);border:1px solid var(--a-line-strong)}
.tools button .k{margin-left:auto;font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-faint)}
.app.touch .topbar .search{flex-basis:250px}
.stamp{position:absolute;right:16px;top:62px;font-family:var(--display);font-weight:700;font-size:var(--a-fs);letter-spacing:.14em;text-transform:uppercase;color:var(--a-rust);border:2px solid var(--a-rust);padding:4px 10px;border-radius:var(--a-r-xs);transform:rotate(-4deg);opacity:.9}
.hint{position:absolute;right:14px;bottom:14px;font-size:var(--a-fs-xs);color:var(--a-muted);background:var(--a-glass);border:1px solid var(--a-line);border-radius:var(--a-r);padding:6px 10px;max-width:280px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.legend{position:absolute;left:50%;transform:translateX(-50%);bottom:14px;display:flex;gap:12px;font-size:var(--a-fs-xs);color:var(--a-muted);background:var(--a-glass);backdrop-filter:blur(10px);border:1px solid var(--a-line);border-radius:var(--a-r-pill);padding:5px 12px;white-space:nowrap}
.legend i{display:inline-block;width:10px;height:10px;border-radius:var(--a-r-xs);margin-right:5px;vertical-align:-1px}
.pricebadge{position:absolute;right:16px;top:14px;background:var(--a-glass);backdrop-filter:blur(10px);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow);padding:8px 12px;text-align:right}
.pricebadge .n{font-family:var(--display);font-size:var(--a-fs-xl);font-weight:700;color:var(--a-ink);font-variant-numeric:tabular-nums}
.pricebadge .l{font-size:var(--a-fs-xs);color:var(--a-muted)}
.rail{overflow:auto}
.rail .subs{display:none;flex-direction:column;gap:1px;margin:2px 0 6px 0;padding-left:14px;border-left:1px solid var(--a-line);margin-left:19px}
.rail .st.open + .subs{display:flex}
.rail .sb{display:flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--a-muted);font:inherit;font-size:var(--a-fs-sm);padding:6px 8px;border-radius:var(--a-r-sm);cursor:pointer;text-align:left;width:100%}
.rail .sb:hover{background:var(--a-panel-2);color:var(--a-ink)}
.rail .sb.on{color:var(--a-accent-strong);background:var(--a-accent-soft);font-weight:var(--a-w-strong)}
.rail .sb .dot{width:6px;height:6px;border-radius:50%;background:var(--a-faint);flex:none}
.rail .sb.done .dot{background:var(--a-ok)} .rail .sb.cur .dot{background:var(--a-accent)} .rail .sb.locked{opacity:.55} .rail .sb.warn .dot{background:var(--a-warn)}
.rail .sb small{margin-left:auto;font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-faint)}
.rail .st .chev{margin-left:auto;color:var(--a-faint);font-size:var(--a-fs-2xs);transition:transform .15s}
.rail .st.open .chev{transform:rotate(90deg)}
.hudsp{flex:1}
#stepSeg button{display:inline-flex;align-items:center;gap:6px}
#stepSeg button i{font-style:normal;font-family:var(--mono);font-size:var(--a-fs-2xs);width:16px;height:16px;border-radius:50%;border:1.5px solid var(--a-faint);display:grid;place-items:center;color:var(--a-faint)}
#stepSeg button.on i{border-color:var(--a-accent);color:var(--a-accent)}
/* Glass step panel. It can collapse to a tab; the camera frames the building in whatever is left. */
.dpanel{position:absolute;left:14px;top:58px;width:min(310px,calc(100% - 28px));max-height:calc(100% - 72px);display:flex;flex-direction:column;background:var(--a-glass);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);z-index:3;overflow:hidden}
.app[data-dstep="plan"] .dpanel{max-height:calc(100% - 230px)}
.app[data-dstep="files"] .dpanel{width:min(600px,calc(100% - 28px))}
.dfpre{margin:8px 0 0;max-height:340px;overflow:auto;padding:10px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);color:var(--a-ink);font-size:var(--a-fs-2xs);line-height:1.45;white-space:pre;tab-size:8}
.dfnotes{margin:0 0 8px;padding:0;list-style:none;font-size:var(--a-fs-sm)}
.dfnotes li{padding:3px 0 3px 18px;position:relative;line-height:1.35}
.dfnotes li::before{position:absolute;left:0;top:3px;font-weight:700}
.dfnotes li.bad{color:var(--a-rust)} .dfnotes li.bad::before{content:"✕"}
.dfnotes li.warn{color:var(--a-warn)} .dfnotes li.warn::before{content:"!"}
.dfnotes li.info{color:var(--a-muted)} .dfnotes li.info::before{content:"i";font-style:italic}
.dpanel .brow .badge{margin-left:auto;align-self:center}
.prow{border:1px solid var(--a-line);border-radius:var(--a-r);padding:6px 8px;margin-bottom:6px;background:var(--a-bg)}
.prow .pr1{display:grid;grid-template-columns:14px minmax(0,1fr) 92px 96px;gap:6px;align-items:center;font-size:var(--a-fs-sm)}
.prow .pr1>span{color:var(--a-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .dep{display:flex;align-items:center;gap:4px;font-size:var(--a-fs-xs);color:var(--a-muted);white-space:nowrap} .prow .dep .in{width:54px}
.prow .pr2{display:flex;flex-direction:column;gap:5px;margin-top:6px;font-size:var(--a-fs-xs)}
.prow .pat{display:flex;gap:6px} .prow .pat .in{flex:1} .prow .pat .btn{padding:4px 10px;font-size:var(--a-fs-sm)}
.zacts .in{flex:1;min-width:0}
.endacts{flex-wrap:wrap;align-items:center} .endacts .dep{display:flex;align-items:center;gap:4px;font-size:var(--a-fs-xs);color:var(--a-muted);white-space:nowrap} .endacts .dep .in{width:58px;flex:none}
.uwrow{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.uwrow .wchips{flex-wrap:wrap;gap:4px} .uwrow .wchips button{padding:3px 7px;font-size:var(--a-fs-xs)}
.uacts{margin-top:8px;flex-wrap:wrap} .uacts .btn{font-size:var(--a-fs-sm);padding:5px 9px}
.dfloads{margin-top:12px}
.dfloads>summary{cursor:pointer;list-style:none}
.dfloads>summary::-webkit-details-marker{display:none}
.dfloads>summary::before{content:"▸ ";color:var(--a-muted)} .dfloads[open]>summary::before{content:"▾ "}
.dfloads>summary .dim{text-transform:none;letter-spacing:0;font-weight:400}
.dpanel .ph{display:flex;align-items:flex-start;gap:8px}
.dpanel .ph>div{flex:1;min-width:0}
.dpanel .pmin{flex:none;padding:2px 8px;margin:-2px -6px 0 0}
.dpanel .pb{scrollbar-width:thin;scrollbar-color:var(--a-line) transparent}
.dpanel .pb::-webkit-scrollbar{width:6px} .dpanel .pb::-webkit-scrollbar-thumb{background:var(--a-line);border-radius:var(--a-r-xs)} .dpanel .pb::-webkit-scrollbar-track{background:transparent}
#dpanelTab{position:absolute;left:14px;top:58px;z-index:3}
/* collapsed sidebar */
.app.railmin{grid-template-columns:60px 1fr}
.app.railmin .rail .lbl,.app.railmin .rail .sub,.app.railmin .rail .subs,.app.railmin .rail .hd,.app.railmin .rail .chev{display:none}
.app.railmin .rail .st{justify-content:center;padding:10px 0}
.rail .rtog{margin-top:2px;color:var(--a-faint)} .rail .rtog .ic{border-style:dashed}
@media (max-width:980px){.rail .rtog{display:none}}
.dpanel .ph{padding:12px 14px 8px;border-bottom:1px solid var(--a-line)}
.dpanel .ph b{font-family:var(--display);font-size:var(--a-fs-md);display:block}
.dpanel .ph span{font-size:var(--a-fs-xs);color:var(--a-muted);display:block;margin-top:2px}
.dpanel .pb{padding:12px 14px;overflow:auto;min-height:0}
.dpanel .brow{grid-template-columns:36px 1fr auto;padding:7px 9px;font-size:var(--a-fs-sm)}
.dpanel .brow .dim{font-size:var(--a-fs-xs)}
.dpanel .kv{font-size:var(--a-fs-sm)}
.dpanel .field{grid-template-columns:1fr 64px;margin:4px 0}
.dpanel .f2{grid-template-columns:1fr 1fr;gap:6px 8px;margin:0}
.dpanel .dftune{margin-top:10px}
.dpanel .in{font-size:var(--a-fs-sm);padding:6px 8px}
.swrow{display:grid;grid-template-columns:84px 1fr;align-items:center;gap:8px;margin:5px 0;font-size:var(--a-fs-sm)}
.swrow>div:first-child{display:flex;flex-direction:column;min-width:0}
.swrow span{color:var(--a-muted)} .swrow b{font-weight:500;font-size:var(--a-fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sws{display:flex;gap:4px;flex-wrap:wrap}
.swb{width:22px;height:22px;border-radius:var(--a-r-sm);border:2px solid var(--a-line-strong);cursor:pointer;padding:0}
.swb.on{border-color:var(--a-accent);box-shadow:0 0 0 2px var(--a-focus)}
.app.touch .dpanel{width:min(340px,calc(100% - 28px))}
.app.touch .swb{width:28px;height:28px}
.tools{left:14px;bottom:14px}
.mixstrip{position:absolute;left:50%;transform:translateX(-50%);bottom:14px;z-index:2;font-size:var(--a-fs-sm);padding:6px 12px;white-space:nowrap}
@media (max-width:980px){.mixstrip{left:auto;transform:none;right:14px;bottom:60px}}
@media (max-width:720px){.dpanel{top:auto;bottom:14px;max-height:46%;left:14px;right:14px;width:auto}.tools{left:auto;right:14px;bottom:auto;top:58px}.ucard{bottom:auto;top:58px;right:14px;width:min(240px,50%)}}
.wsSeg{flex:none}
.wsSeg button.on{color:var(--a-accent)}
.linkrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.linkrow code{flex:1 1 240px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--a-bg);border:1px solid var(--a-line);border-radius:var(--a-r-sm);padding:8px 10px;font-family:var(--mono);font-size:var(--a-fs-sm);color:var(--a-accent)}
textarea.in{resize:vertical;font-family:var(--body)}
.tl{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--a-line);display:grid;gap:10px}
.tl li{position:relative;font-size:var(--a-fs-sm);display:grid;gap:1px}
.tl li:before{content:"";position:absolute;left:-19px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--a-faint);border:2px solid var(--a-panel)}
.tl li.done:before{background:var(--a-ok)} .tl li.cur:before{background:var(--a-accent);box-shadow:0 0 0 3px var(--a-focus)} .tl li.warn:before{background:var(--a-warn)} .tl li.locked{opacity:.55;border:0;padding:0;background:none}
.tl li b{font-weight:500;color:var(--a-ink)} .tl li span{color:var(--a-muted);font-size:var(--a-fs-sm)}
.status .job:before{content:""}
/* dimension + size labels projected over the canvas */
.dimlayer{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.dl{position:absolute;left:0;top:0;white-space:nowrap;font:600 11px/1.3 var(--mono);color:var(--a-dl-ink);background:var(--a-dl-bg);border:1px solid var(--a-dl-line);border-radius:var(--a-r-xs);padding:1px 6px;will-change:transform}
.dl.soft{opacity:.82}
.dl.unit{font-size:var(--a-fs-2xs);padding:0 4px;background:var(--a-dl-unit-bg);border-color:transparent;color:var(--a-dl-unit-ink)}
.dl.unit.climate{color:var(--a-dl-climate-ink)}
.dl.unit.sel{font-size:var(--a-fs-xs);padding:2px 7px;background:var(--a-accent);color:var(--a-on-accent);border-color:var(--a-panel)}
.dl.unit.warn{border-color:var(--a-rust)}
.dl.hall{background:var(--a-dl-hall-bg);color:var(--a-dl-hall-ink);border-color:transparent;font-weight:500;font-size:var(--a-fs-2xs)}
.dl.door{background:var(--a-dl-door-bg);color:var(--a-dl-door-ink);border-color:transparent}
/* site steps: a small building-id tag, nothing else */
.dl.chip{padding:1px 6px;border-radius:var(--a-r-xs);font:700 11px/1.3 var(--display);letter-spacing:.04em;background:var(--a-glass);border-color:var(--a-line);color:var(--a-ink)}
.dl.native-parts{left:12px;top:auto;bottom:56px;width:min(420px,calc(100% - 24px));box-sizing:border-box;padding:8px 10px;white-space:normal;text-align:left;pointer-events:auto;font:12px/1.4 var(--body);letter-spacing:0;background:var(--a-panel);z-index:2}
.native-parts summary{cursor:pointer;font-weight:600;padding-top:5px}
.native-part-list{max-height:180px;overflow:auto;overflow-wrap:anywhere;margin-top:6px;user-select:text}
.dl.native-parts{max-height:calc(100% - 220px);overflow-y:auto}
.native-outcome.failed,.native-check{color:var(--a-ink);border-left:3px solid var(--a-warn);padding-left:8px;margin-top:5px}
.native-check small{display:block;color:var(--a-muted);font-size:11px}
.dl.chip.sel{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent)}
.dl.chip.ghost{opacity:.6}
/* the dimension being dragged in Size */
.dl.live{opacity:1;background:var(--a-dl-live-bg);color:var(--a-dl-live-ink);border-color:var(--a-dl-live-bg);box-shadow:0 0 0 3px var(--a-focus);font-size:var(--a-fs-sm);z-index:2}
.dimsum{font-size:var(--a-fs);font-weight:600;color:var(--a-accent-strong);margin:0 0 8px;letter-spacing:.01em}
.sizes{display:flex;flex-wrap:wrap;gap:6px}
.sz{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid var(--a-line);border-radius:var(--a-r-sm);font-size:var(--a-fs-sm);color:var(--a-muted)}
.sz b{font-family:var(--mono);font-weight:600;color:var(--a-ink)}
.kv b i{font-style:normal;font-size:var(--a-fs-2xs);color:var(--a-warn);border:1px solid currentColor;border-radius:var(--a-r-xs);padding:0 4px;margin-left:4px;vertical-align:1px}
.ucard{position:absolute;right:14px;bottom:14px;width:min(300px,calc(100% - 28px));background:var(--a-glass);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow);padding:12px 14px;backdrop-filter:blur(12px) saturate(1.2);-webkit-backdrop-filter:blur(12px) saturate(1.2);z-index:3}
.ucard .t{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:6px}
.ucard .t .badge{margin-left:auto}
.ucard .kv{font-size:var(--a-fs-sm)}
.ucard .chips{margin-top:8px}
.ucard .x{margin-left:auto;border:0;background:transparent;color:var(--a-muted);cursor:pointer;font:inherit}
.chipbtn.stat{cursor:default}
.brow{grid-template-columns:44px 1fr auto auto auto}
.brow .st4{display:flex;gap:4px} .brow .st4 i{width:8px;height:8px;border-radius:50%;background:var(--a-line);display:inline-block} .brow .st4 i.d{background:var(--a-ok)} .brow .st4 i.w{background:var(--a-warn)}
.brow.on{border-color:var(--a-accent-line);background:var(--a-accent-soft);box-shadow:inset 3px 0 0 var(--a-accent)}
.bsel{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}
.bsel button{border:1px solid var(--a-line-strong);background:var(--a-panel);color:var(--a-muted);font:inherit;font-size:var(--a-fs-sm);padding:6px 12px;border-radius:var(--a-r-pill);cursor:pointer}
.bsel button.on{border-color:var(--a-accent-line);color:var(--a-accent-strong);background:var(--a-accent-soft);font-weight:var(--a-w-strong)}
.fieldrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 14px}
.fieldrow .field{grid-template-columns:1fr 70px}
.tplrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tplrow .th{width:120px;color:var(--a-muted)} .tplrow .th svg{width:100%;display:block}
.nextrow{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.hudpri{flex:0 0 auto;min-height:34px;padding:6px 14px;white-space:nowrap}
.canvas .hud{right:14px}

/* Both builders share the detailed model; Advanced retains the native form layout. */
#builderMode{flex:0 0 auto}
#builderMode button{min-height:36px}
.advanced-builder #viewSeg,.advanced-builder #tools,.advanced-builder #unitCard,.advanced-builder #mixStrip,.advanced-builder #dpanel,.advanced-builder #dpanelTab{display:none!important}
#advancedBuilderHost{position:absolute;top:var(--builder-top,110px);left:14px;width:clamp(400px,55%,790px);bottom:12px;z-index:2;border:1px solid var(--a-line);border-radius:var(--a-r-lg);overflow:hidden;background:var(--a-panel)}
#miniBuilderFrame{display:block;width:100%;height:100%;border:0;background:var(--a-bg);color-scheme:dark}
.light #miniBuilderFrame{color-scheme:light}
.app[data-layout=full] #dpanel{top:var(--builder-top,110px)}
.basic-dimensions{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px}
.basic-number{display:flex;flex-direction:column;gap:6px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.basic-number>div{display:flex;align-items:center;gap:6px}
.basic-number input{width:100%;min-width:0;min-height:40px;color:var(--a-ink);font-size:var(--a-fs-md)}
.basic-number input:invalid{border-color:var(--a-rust)}
.basic-section{margin-top:20px;padding-top:12px;border-top:1px solid var(--a-line)}
.basic-summary{font-size:var(--a-fs-sm);color:var(--a-muted);margin:14px 0 2px}
#runPainterHost{position:absolute;inset:var(--builder-top,110px) 14px 12px;z-index:3;min-height:0}
/* Units & hallways: fixed header, tabs, tools and footer; only the middle scrolls. */
.app{--a-plan-paper:#f7fbfe;--a-plan-ink:#23425b;--a-plan-hud:#fffffff0;--a-plan-warn:#8c3425;--a-plan-warn-bg:#fff3e8}
.run-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px;height:100%;min-height:0}
.run-controls{display:flex;flex-direction:column;min-height:0;overflow:hidden;border:1px solid var(--a-line);border-radius:var(--a-r-lg);background:var(--a-panel)}
#runPainterHost [hidden]{display:none!important}
.run-head{padding:12px 14px 6px;display:flex;flex-direction:column;gap:2px;flex-shrink:0}
.run-head b{font-size:var(--a-fs-md)}
.run-shape-line{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--a-fs-sm);color:var(--a-muted)}
#runPainterHost .run-link{min-height:32px;padding:4px 6px;border:0;background:transparent;color:var(--a-accent);font-weight:600;white-space:nowrap}
#runPainterHost .basic-tabs{padding:6px 10px}
#runPainterHost .basic-tabs button{flex:1 1 auto;background:transparent;border-color:transparent;color:var(--a-muted)}
#runPainterHost .basic-tabs button.on{background:var(--a-panel-2);border-color:var(--a-line);color:var(--a-accent)}
.run-controls>.builder-layout-command-bar{padding:10px 12px 0;flex-shrink:0}
.run-tool-seg.builder-unit-mode-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin:0;padding:3px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg)}
#runPainterHost .run-tool-seg button{border-color:transparent;background:transparent;color:var(--a-muted);font-weight:600}
#runPainterHost .run-tool-seg button.is-active{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent)}
.run-body{flex:1;min-height:0;overflow:auto;padding:12px;scrollbar-width:thin}
.run-body .builder-layout-options-popover{margin:0}
.run-card-head{display:flex;flex-direction:column;gap:2px}.run-card-head strong{font-size:var(--a-fs)}.run-card-head small{font-size:var(--a-fs-xs);color:var(--a-muted);line-height:1.4}
.run-row{display:flex;gap:8px;align-items:flex-end;margin-top:10px}
.run-field{display:flex;flex-direction:column;gap:4px;font-size:var(--a-fs-xs);color:var(--a-muted);min-width:0}
.run-grow{flex:1}.run-num{flex:0 0 64px}
#runPainterHost .run-field input,#runPainterHost .run-field select{width:100%}
.run-repeat.builder-repeat-count-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;align-items:end;margin-top:12px;padding:10px;border-radius:var(--a-r);background:var(--a-bg);border:1px solid var(--a-line)}
.run-stepper>span{display:block;text-align:center;font-size:var(--a-fs-xs);color:var(--a-muted);margin-bottom:4px}
.run-repeat>.run-total{grid-column:1/-1;grid-row:1;display:flex;align-items:center;justify-content:center;gap:6px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.run-stepper>div{display:flex}
#runPainterHost .run-stepper button{flex:0 0 40px;padding:0;font-size:var(--a-fs-lg);line-height:1}
#runPainterHost .run-stepper button:first-child{border-radius:var(--a-r-sm) 0 0 var(--a-r-sm)}
#runPainterHost .run-stepper button:last-child{border-radius:var(--a-r-sm)}
#runPainterHost .run-repeat .run-stepper input{flex:1;width:0;min-width:36px;padding:0 2px;border-radius:0;border-left:0;border-right:0;text-align:center;-moz-appearance:textfield;appearance:textfield}
#runPainterHost .run-repeat input::-webkit-inner-spin-button,#runPainterHost .run-repeat input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
#runPainterHost .run-repeat .run-total input{width:48px;min-height:32px;padding:0;text-align:center;font-weight:700;font-size:var(--a-fs-md);color:var(--a-ink);background:transparent;border-color:transparent;-moz-appearance:textfield;appearance:textfield}
.run-tip{margin:10px 0 0;font-size:var(--a-fs-sm);line-height:1.45;color:var(--a-muted)}
.run-body .builder-hallway-width-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0 0}
.run-foot{flex-shrink:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;border-top:1px solid var(--a-line)}
.run-actions.builder-layout-command-buttons{flex:1 1 100%;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:0}
.run-fit{flex:1;display:flex;gap:8px;align-items:center;font-size:var(--a-fs-sm);color:var(--a-muted)}
.run-summary{font-size:var(--a-fs-sm);color:var(--a-muted)}.run-summary b{font-weight:600;color:var(--a-ink)}
#runPainterHost input:not([type=checkbox]),#runPainterHost select{min-width:0;max-width:100%;min-height:40px;border:1px solid var(--a-line);background:var(--a-bg);color:var(--a-ink);border-radius:var(--a-r-sm);padding:6px;font:inherit;font-size:var(--a-fs);box-sizing:border-box}
#runPainterHost button{min-height:40px;cursor:pointer;font:inherit;font-size:var(--a-fs-sm);color:var(--a-ink);background:var(--a-panel-2);border:1px solid var(--a-line);border-radius:var(--a-r-sm);padding:6px 8px}
#runPainterHost button.is-active,#runPainterHost button.is-selected{border-color:var(--a-accent);color:var(--a-accent)}
#runPainterHost button:disabled{opacity:.45;cursor:default}
.builder-layout-toolbar-grid{padding:0 12px 14px}.builder-unit-mode-bar,.builder-layout-command-buttons,.builder-hallway-width-grid{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 12px}
.builder-layout-command-buttons button{flex:1}.builder-layout-panel-heading{margin:12px 0}.builder-layout-panel-heading strong,.builder-layout-panel-heading small{display:block}.builder-layout-panel-heading small{font-size:var(--a-fs-xs);color:var(--a-muted);margin-top:4px}
.builder-layout-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.builder-layout-form-grid input,.builder-layout-form-grid select{width:100%}.builder-layout-form-grid label,.builder-layout-unit-picker label,.builder-layout-tool-card>label{display:block;font-size:var(--a-fs-xs);color:var(--a-muted);margin-bottom:4px}
.builder-layout-unit-picker select{width:100%}.builder-repeat-count-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;grid-column:1/-1}.builder-layout-toggle-cell input{width:auto}
.builder-choice-chip span{display:block;font-size:var(--a-fs-2xs);color:var(--a-muted)}
.builder-layout-visual-panel,.builder-layout-viewer{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%}
.builder-layout-viewer-stage{position:relative;flex:1;min-height:0;overflow:hidden;border:1px solid var(--a-line);border-radius:var(--a-r-lg);background:var(--a-plan-paper)}
#builder-layout-canvas{display:block;touch-action:none;outline:none}
.builder-layout-canvas-hud{position:absolute;left:8px;right:8px;bottom:8px;display:flex;gap:10px;align-items:center;pointer-events:none;font-size:var(--a-fs-xs);color:var(--a-plan-ink);background:var(--a-plan-hud);padding:8px;border-radius:var(--a-r-sm)}
.builder-layout-warning-list{position:absolute;top:8px;left:8px;right:8px;font-size:var(--a-fs-sm);color:var(--a-plan-warn);pointer-events:none}.builder-layout-warning{background:var(--a-plan-warn-bg);padding:8px;border-radius:var(--a-r-sm);margin-bottom:4px}
.builder-shape-viewer-info{display:flex;justify-content:space-between;gap:10px;padding:8px 0;font-size:var(--a-fs-xs);color:var(--a-muted)}
.builder-layout-context-menu{position:absolute;z-index:5;background:var(--a-panel);padding:6px;border:1px solid var(--a-line);border-radius:var(--a-r)}
.app[data-dstep=plan] #dimLayer,.app[data-dstep=plan] #hint{display:none!important}
@media(max-width:750px){
  /* Phone: plan on top, controls as a bottom sheet; the middle of the sheet scrolls. */
  #runPainterHost{left:6px;right:6px;bottom:4px}
  .run-layout{grid-template-columns:1fr;grid-template-rows:minmax(150px,1fr) auto;gap:6px}
  .builder-layout-visual-panel{grid-row:1}.run-controls{grid-row:2;max-height:58vh}
  .builder-shape-viewer-info,.builder-layout-canvas-hud{display:none}
  .run-head{padding:6px 12px 0}.run-head b{display:none}
  #runPainterHost button,#runPainterHost .run-link{min-height:44px}
  #runPainterHost .basic-tabs{padding:4px 8px}#runPainterHost .basic-tabs button{font-size:var(--a-fs-xs);padding:4px}
  .run-controls>.builder-layout-command-bar{padding:6px 10px 0}
  .run-body{padding:10px}
  .run-foot{padding:8px 10px;gap:6px 10px}.run-fit,.run-summary{font-size:var(--a-fs-xs)}
}
@media(pointer:coarse){#runPainterHost button,#runPainterHost .run-link,#runPainterHost input:not([type=checkbox]),#runPainterHost select{min-height:44px}#runPainterHost .run-stepper button{flex-basis:44px}#runPainterHost .run-fit input{width:22px;height:22px}}
.basic-tabs{display:flex;gap:4px;padding:8px 12px;border-bottom:1px solid var(--a-line);flex-shrink:0}
.basic-tabs button{flex:1 1 auto;min-height:40px;padding:0 8px;white-space:nowrap;border:1px solid transparent;border-radius:var(--a-r-sm);background:transparent;color:var(--a-muted);font:inherit;font-size:var(--a-fs-sm);cursor:pointer}
.basic-tabs button.on{background:var(--a-panel-2);border-color:var(--a-line);color:var(--a-accent)}
.app[data-dstep=plan] #tools{left:var(--plan-left,340px);right:14px;top:var(--builder-top,110px);bottom:auto;flex-direction:row;flex-wrap:wrap;z-index:3}
.app[data-dstep=plan] #tools button{flex:1;min-height:40px;justify-content:center;padding:6px;white-space:nowrap}
.app[data-dstep=plan] #tools .k{display:none}
.app[data-dstep=plan] #mixStrip{left:var(--plan-left,340px);right:14px;bottom:40px;transform:none;text-align:center;white-space:normal;font-size:var(--a-fs-xs);pointer-events:none}
.app[data-dstep=plan] #unitCard{z-index:4;max-height:55%;overflow:auto}
.app[data-dstep=plan] #dpanelTab{top:calc(var(--builder-top,110px) + 56px)}
@media(pointer:coarse){#builderMode button,#bldgSeg button,.basic-number input{min-height:44px}}
@media(max-width:750px){
  .app[data-dstep]:not([data-dstep=""]){grid-template-columns:48px 1fr}
  .app[data-dstep]:not([data-dstep=""]) .topbar{gap:6px;padding:0 6px}
  .app[data-dstep]:not([data-dstep=""]) .topbar .brand{width:auto;font-size:var(--a-fs)}
  .app[data-dstep]:not([data-dstep=""]) .topbar .search,.app[data-dstep]:not([data-dstep=""]) .topbar .wsSeg,.app[data-dstep]:not([data-dstep=""]) #ferroBtn{display:none}
  .app[data-dstep]:not([data-dstep=""]) .topbar .pid{flex:1;min-width:0}
  .app[data-dstep]:not([data-dstep=""]) .topbar .pid .id{font-size:var(--a-fs-2xs);overflow:hidden;text-overflow:ellipsis}
  .app[data-dstep]:not([data-dstep=""]) #statusBar>span:nth-last-child(-n+2){display:none}
  .app[data-dstep]:not([data-dstep=""]) .hud{left:6px;right:6px;gap:6px}
  #stepSeg{width:100%;overflow-x:auto}#stepSeg button{flex:1;padding:6px;font-size:var(--a-fs-xs);min-height:40px;white-space:nowrap}#stepSeg button i{display:none}
  #bldgSeg{max-width:100%;overflow-x:auto}#builderMode{order:2}#hudAction{order:3;font-size:var(--a-fs-xs);padding:6px 8px;min-height:40px}
  #builderMode button{font-size:var(--a-fs-xs);padding:6px 8px;min-height:40px}
  #advancedBuilderHost,.app[data-dstep]:not([data-dstep=""]) #dpanel{top:calc(var(--builder-top,140px) + 170px);left:6px;right:6px;bottom:4px;width:auto;max-height:none}
  .app[data-dstep]:not([data-dstep=""]) #hint{display:none}
  .app[data-dstep]:not([data-dstep=""]) .rail{padding-left:4px;padding-right:4px}
  .app[data-dstep=plan] #tools{left:6px;right:6px;gap:2px;padding:4px}
  .app[data-dstep=plan] #tools button{font-size:var(--a-fs-xs);gap:4px;min-height:44px}
  .app[data-dstep=plan] #tools .sw{width:9px;height:9px;flex-shrink:0}
  .app[data-dstep=plan] #dpanel{top:calc(var(--builder-top,140px) + 260px)}
  .app[data-dstep=plan] #unitCard{left:6px;right:6px;top:calc(var(--builder-top,140px) + 260px);bottom:4px;width:auto;max-height:none}
  .app[data-dstep=plan] #mixStrip{display:none}
}


.btn{border:1px solid var(--a-line-strong);background:var(--a-panel);color:var(--a-ink);font:inherit;font-size:var(--a-fs-sm);padding:7px 12px;border-radius:var(--a-r-sm);cursor:pointer;font-weight:var(--a-w-strong)}
.btn:hover{border-color:var(--a-accent);color:var(--a-accent-strong)}
.btn.pri{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent);flex:1;text-align:center}
.btn.pri:hover{background:var(--a-accent-strong);border-color:var(--a-accent-strong);color:var(--a-on-accent)}
.btn.ghost{background:transparent}
.btn:disabled{opacity:.45;cursor:default}
.sec{margin-bottom:14px}
.sec .h{font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.sec .h .r{margin-left:auto;text-transform:none;letter-spacing:0;font-family:var(--body);font-size:var(--a-fs-xs);color:var(--a-accent);cursor:pointer}
.kv{display:grid;grid-template-columns:1fr auto;gap:4px 10px;font-size:var(--a-fs-sm)}
.kv span{color:var(--a-muted)}
.kv b{font-weight:500;text-align:right;font-variant-numeric:tabular-nums}
.field{display:grid;grid-template-columns:1fr 64px;align-items:center;gap:8px;margin:6px 0}
.field label{font-size:var(--a-fs-sm);color:var(--a-muted)}
.field input[type=range]{grid-column:1/3;width:100%;accent-color:var(--a-accent);margin:0}
.field output{font-family:var(--mono);font-size:var(--a-fs-sm);text-align:right;color:var(--a-ink)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{border:1px solid var(--a-line-strong);background:var(--a-panel);color:var(--a-muted);font:inherit;font-size:var(--a-fs-sm);padding:4px 10px;border-radius:var(--a-r-pill);cursor:pointer}
.chips button.on{border-color:var(--a-accent-line);color:var(--a-accent-strong);background:var(--a-accent-soft);font-weight:var(--a-w-strong)}
.card{border:1px solid var(--a-line);border-radius:var(--a-r);padding:10px 12px;margin:6px 0;background:var(--a-bg)}
.card .t{font-weight:500;display:flex;align-items:center;gap:8px}
.card .d{font-size:var(--a-fs-sm);color:var(--a-muted);margin-top:2px}
.card .t .badge{margin-left:auto}
.badge{font-size:var(--a-fs-2xs);font-weight:var(--a-w-bold);line-height:1.6;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border-radius:var(--a-r-pill);padding:0 8px;border:1px solid var(--a-line);background:var(--a-panel-2);color:var(--a-muted)}
.badge.ok{color:var(--a-ok);background:var(--a-ok-soft);border-color:var(--a-ok-line)}
.badge.warn{color:var(--a-warn);background:var(--a-warn-soft);border-color:var(--a-warn-line)}
.badge.rust{color:var(--a-rust);background:var(--a-rust-soft);border-color:var(--a-rust-line)}
.badge.acc{color:var(--a-accent);background:var(--a-accent-soft);border-color:var(--a-accent-line)}
.lines{font-size:var(--a-fs-sm)}
.lines div{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px dashed var(--a-line)}
.lines div:last-child{border-bottom:0;font-weight:600}
.lines b{font-variant-numeric:tabular-nums;font-weight:500}
.docs a{display:block;font-size:var(--a-fs-sm);color:var(--a-accent);text-decoration:none;padding:5px 0;border-bottom:1px dashed var(--a-line)}
.docs a:last-child{border-bottom:0}
.sheets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.sheet{aspect-ratio:3/4;border:1px solid var(--a-line);border-radius:var(--a-r-xs);background:linear-gradient(var(--a-sheet-1),var(--a-sheet-2));box-shadow:var(--a-shadow-sm);position:relative;overflow:hidden;cursor:pointer}
.sheet:hover{border-color:var(--a-accent)}
.sheet:before{content:"";position:absolute;inset:6px 6px 14px;border:1px solid var(--a-faint);opacity:.5}
.sheet span{position:absolute;bottom:2px;left:0;right:0;text-align:center;font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-muted)}
.locked{border:1px dashed var(--a-line-strong);border-radius:var(--a-r);padding:14px;color:var(--a-muted);font-size:var(--a-fs-sm);background:transparent}
.locked b{color:var(--a-ink);display:block;margin-bottom:4px;font-weight:500}
.chat{display:flex;flex-direction:column;gap:8px}
.msg{max-width:92%;border-radius:var(--a-r-lg);padding:8px 10px;font-size:var(--a-fs-sm);line-height:1.45}
.msg.me{align-self:flex-end;background:var(--a-accent);color:var(--a-on-accent);border-bottom-right-radius:3px}
.msg.f{align-self:flex-start;background:var(--a-bg);border:1px solid var(--a-line);border-bottom-left-radius:3px}
.msg.f .src{display:block;margin-top:6px;font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-faint)}
.status{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:0 12px;background:var(--a-panel);border-top:1px solid var(--a-line);font-size:var(--a-fs-xs);color:var(--a-muted);overflow:hidden;white-space:nowrap}
.status .live{display:inline-flex;align-items:center;gap:6px}
.status .live i{width:7px;height:7px;border-radius:50%;background:var(--a-ok);box-shadow:0 0 0 3px var(--a-ok-soft)}
.status .sp{flex:1}
/* C2C-068: in the live app the strip shows only abnormal states (97-live.js stripSync); the top bar already names the project and customer */
.app[data-strip="calm"]{--strip-h:0px}
.app[data-strip="alert"] .status .live i{background:var(--a-warn);box-shadow:none}
.app[data-strip="calm"] .status{display:none}
.app[data-strip] .status .job,.app[data-strip] .status>span:last-child{display:none}
.status .job{color:var(--a-ink)}
/* home board inside canvas */
.board{position:absolute;inset:0;overflow:auto;padding:22px 26px}
.board h3{font-family:var(--display);font-size:var(--a-fs-xl);font-weight:700;margin:0 0 4px;color:var(--a-ink)}
.board .sub{color:var(--a-muted);font-size:var(--a-fs);margin-bottom:16px}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.col .ch{font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint);margin-bottom:8px;display:flex;justify-content:space-between}
.pcard{border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-panel);padding:10px 12px;margin-bottom:8px;cursor:pointer;box-shadow:var(--a-shadow-sm)}
.pcard:hover{border-color:var(--a-accent)}
.pcard:focus-visible{border-color:var(--a-accent);outline:2px solid var(--a-focus);outline-offset:1px}
/* Home: one project list for Sales and Production (46-plist.js) */
.homehead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.homehead .sub{margin-bottom:0}
.homehead>.btn{flex:none}
.plist .cols{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.plist{margin-top:16px}
.plbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.plbar>.in{flex:1 1 240px;width:auto}
.plfs{display:contents}
.plbar .plf{width:auto;flex:0 1 auto;max-width:200px}
.plbar .plf.on{border-color:var(--a-accent-line);color:var(--a-accent-strong);background:var(--a-accent-soft)}
.plbar .btn.pmini{margin-top:0}
.plbar .plftoggle{display:none}
@media (max-width:600px){.plbar .plftoggle{display:inline-flex}.plbar:not(.open) .plf,.plbar:not(.open) [data-pl-clear]{display:none}.plbar .plf{max-width:none;flex:1 1 140px}}
.plcount{margin-left:auto;font-size:var(--a-fs-sm);color:var(--a-muted);white-space:nowrap}
.plnote{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:var(--a-fs-sm);color:var(--a-muted);margin-bottom:10px}
.plnote .btn.pmini{margin-top:0}
.plopen{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.plscroll{overflow-x:auto}
.pltbl th button{border:0;background:none;padding:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer}
.pltbl tr.rowlink:focus-visible td{background:var(--a-panel-2)}
.pltbl td .mono{font-size:var(--a-fs-xs);color:var(--a-accent)}
.pcard .id{font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--a-accent)}
.pcard .n{font-weight:500;margin:2px 0}
.pcard .m{font-size:var(--a-fs-xs);color:var(--a-muted)}
.pcard .stg{display:flex;gap:3px;margin-top:8px}
.pcard .stg i{flex:1;height:3px;border-radius:var(--a-r-xs);background:var(--a-line)}
.pcard .stg i.d{background:var(--a-ok)}
.pcard .stg i.c{background:var(--a-accent)}
/* palette */
.palette{position:absolute;inset:0;background:var(--a-scrim);display:grid;place-items:start center;padding-top:60px;z-index:5}
.palette .box{width:min(560px,92%);background:var(--a-panel);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow-lg);overflow:hidden}
.palette input{width:100%;border:0;border-bottom:1px solid var(--a-line);background:transparent;color:var(--a-ink);font:inherit;font-size:var(--a-fs-md);padding:14px 16px;outline:none}
.palette .res{max-height:300px;overflow:auto;padding:6px}
.palette .res button{display:grid;grid-template-columns:120px 1fr auto;gap:10px;width:100%;text-align:left;border:0;background:transparent;color:var(--a-ink);font:inherit;padding:8px 10px;border-radius:var(--a-r-sm);cursor:pointer;align-items:center}
.palette .res button:hover,.palette .res button.on{background:var(--a-panel-2)}
.palette .res .id{font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--a-accent)}
.palette .res .m{font-size:var(--a-fs-xs);color:var(--a-muted)}
.palette .ft{display:flex;gap:14px;padding:8px 14px;border-top:1px solid var(--a-line);font-size:var(--a-fs-xs);color:var(--a-faint)}
.toast{position:absolute;left:50%;bottom:52px;transform:translateX(-50%);background:var(--a-panel-2);border:1px solid var(--a-line);color:var(--a-ink);border-radius:var(--a-r);padding:8px 14px;font-size:var(--a-fs-sm);box-shadow:var(--a-shadow-lg);z-index:6}
.controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;font-size:var(--a-fs);color:var(--muted);align-items:center}
.controls .kbd{color:var(--ink)}
@media (prefers-reduced-motion:no-preference){.rail .st,.btn,.ib,.pcard{transition:background .15s,border-color .15s,color .15s}}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.app :focus-visible{outline-color:var(--a-accent)}

/* Customers (CRM) */
.tbl tr.rowlink{cursor:pointer}
.tbl tr.rowlink:hover td{background:var(--a-panel-2)}
.tbl th.th-sort{cursor:pointer;user-select:none}
.tbl th.th-sort.on{color:var(--a-ink)}
.crmbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.crmbar .in{flex:1 1 240px;width:auto}
.crow{display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center;padding:9px 12px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);margin:6px 0}
.crow .nm{font-weight:500;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.crow .mt{font-size:var(--a-fs-sm);color:var(--a-muted);margin-top:2px}
.crow .acts{margin:0;justify-content:flex-end;gap:2px}
.cform{border:1px dashed var(--a-line-strong);border-radius:var(--a-r);padding:10px 12px;margin:6px 0}
.ferr{color:var(--a-rust);font-size:var(--a-fs-sm);margin-top:6px}
.btn.danger{color:var(--a-rust);border-color:var(--a-rust-line)}
.btn.danger:not(.ghost){background:var(--a-rust-soft)}
.picker{border:1px solid var(--a-line);border-radius:var(--a-r);padding:10px;background:var(--a-bg);margin-top:10px}
.pres{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.pres button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;border:0;background:transparent;color:var(--a-ink);font:inherit;padding:7px 9px;border-radius:var(--a-r-sm);cursor:pointer}
.pres button:hover{background:var(--a-panel-2)}
.pres button small{display:block;color:var(--a-muted);font-size:var(--a-fs-xs)}
.rail .crmnav{margin-bottom:6px}
/* Agent review (C2C-069): the rail entry's count, the run table, evidence quotes and the correction editor */
.rail .revnav{margin-bottom:6px}
.rail .revnav .ic{position:relative}
.rvcount{position:absolute;top:-6px;right:-8px;min-width:16px;padding:0 4px;border-radius:var(--a-r-pill);background:var(--a-warn);color:var(--a-on-warn);font-size:var(--a-fs-2xs);font-weight:var(--a-w-bold);line-height:16px;text-align:center}
.rvref{color:var(--a-muted);font-family:var(--a-font-mono);font-size:var(--a-fs-2xs);overflow-wrap:anywhere}
.rvsum{margin:2px 0 0;color:var(--a-muted);font-size:var(--a-fs-sm)}
.rvquote{margin-top:4px;padding-left:8px;border-left:2px solid var(--a-line-strong);color:var(--a-ink);font-style:italic;font-size:var(--a-fs-sm)}
.rvtbl td{vertical-align:top}
.rvpre{white-space:pre-wrap;overflow-wrap:anywhere}
/* review: queue rows */
.rvgroup+.rvgroup{margin-top:6px}
.rvgroup .pflabel{display:flex;gap:8px;align-items:baseline;margin-top:4px}
.rvgroup .pflabel span{font-weight:var(--a-w-medium);letter-spacing:0;text-transform:none;color:var(--a-faint)}
.rvlist{display:flex;flex-direction:column;border:1px solid var(--a-line);border-radius:var(--a-r);overflow:hidden;background:var(--a-panel)}
.rvrow{display:grid;grid-template-columns:28px minmax(0,1fr) auto 14px;gap:12px;align-items:center;min-height:56px;padding:10px 12px;color:var(--a-ink);text-decoration:none;border-top:1px solid var(--a-line)}
.rvrow:first-child{border-top:0}
.rvrow:hover{background:var(--a-panel-2)}
.rvrow:focus-visible{outline:2px solid var(--a-focus);outline-offset:-2px}
.rvrow-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;font-size:var(--a-fs-sm);font-weight:var(--a-w-heavy);background:var(--a-panel-2);color:var(--a-muted)}
.rvrow.bad .rvrow-mark{background:var(--a-rust-soft);color:var(--a-rust)}
.rvrow.ready .rvrow-mark{background:var(--a-ok-soft);color:var(--a-ok)}
.rvrow-main{display:flex;flex-direction:column;min-width:0}
.rvrow-main b{font-weight:var(--a-w-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rvrow-main .rvsum{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rvrow-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap}
.rvrow-go{color:var(--a-faint);font-size:var(--a-fs-lg)}
.rvrow.done{color:var(--a-muted)}
/* review: run page */
.rvpager{display:inline-flex;gap:2px}
.rvpager .btn{min-width:36px;padding-inline:8px;font-size:var(--a-fs-md)}
.rvlead{margin:0 0 12px;font-size:var(--a-fs-md);line-height:1.45;color:var(--a-ink)}
.rvstage{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px 14px;margin-bottom:12px;border-radius:var(--a-r);background:var(--a-panel-2);border:1px solid var(--a-line)}
.rvstage-l{font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint)}
.rvstage-v{padding:3px 12px;border-radius:var(--a-r-pill);font-size:var(--a-fs-md);font-weight:var(--a-w-strong);background:var(--a-accent-soft);color:var(--a-accent-strong);border:1px solid var(--a-accent-line)}
.rvstage-v.ok{background:var(--a-ok-soft);color:var(--a-ok);border-color:var(--a-ok-line)}
.rvstage-v.warn{background:var(--a-warn-soft);color:var(--a-warn);border-color:var(--a-warn-line)}
.rvstage-v.rust{background:var(--a-rust-soft);color:var(--a-rust);border-color:var(--a-rust-line)}
.rvconf{display:inline-flex;align-items:center;gap:8px;margin-left:auto;font-size:var(--a-fs-sm);color:var(--a-muted)}
.rvconf-bar{width:72px;height:6px;border-radius:var(--a-r-pill);background:var(--a-line);overflow:hidden}
.rvconf-bar i{display:block;height:100%;background:var(--a-accent);border-radius:inherit}
.rvconf.ok .rvconf-bar i{background:var(--a-ok)}
.rvconf.warn .rvconf-bar i{background:var(--a-warn)}
.rvwhy,.rvaction{margin-bottom:12px;line-height:1.5}
.rvwhy span,.rvaction span{display:block;margin-bottom:2px;font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint)}
.rvaction{padding:10px 12px;border-left:3px solid var(--a-accent);background:var(--a-accent-soft);border-radius:var(--a-r-sm)}
.rvaction b{font-weight:var(--a-w-strong)}
.rvev{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.rvev li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--a-line)}
.rvev li:first-child{border-top:0;padding-top:0}
.rvev-ic{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--a-r-sm);background:var(--a-panel-2);color:var(--a-muted);font-size:var(--a-fs-md)}
.rvev-b{min-width:0}
.rvev-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.rvev-h .rvref{margin-left:auto}
.rvchecks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.rvchecks li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;padding:8px 10px;border-radius:var(--a-r-sm);border:1px solid var(--a-line)}
.rvchecks li div{display:flex;flex-direction:column;gap:2px;min-width:0}
.rvchecks li div>span:not(.rvref){color:var(--a-muted);font-size:var(--a-fs-sm)}
.rvck-ic{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:var(--a-fs-xs);font-weight:var(--a-w-heavy);background:var(--a-panel-2);color:var(--a-muted)}
.rvchecks li.ok{border-color:transparent;padding-block:4px}
.rvchecks li.ok .rvck-ic{background:var(--a-ok-soft);color:var(--a-ok)}
.rvchecks li.bad{background:var(--a-rust-soft);border-color:var(--a-rust-line)}
.rvchecks li.bad .rvck-ic{background:var(--a-rust);color:var(--a-on-rust)}
.rvchecks li.warn{background:var(--a-warn-soft);border-color:var(--a-warn-line)}
.rvchecks li.warn .rvck-ic{background:var(--a-warn);color:var(--a-on-warn)}
.rvchecks li.info .rvck-ic{background:var(--a-accent-soft);color:var(--a-accent)}
/* review: the decision bar stays in view while the run is read */
.rvdecide{position:sticky;bottom:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:4px;padding:12px 14px;border:1px solid var(--a-line-strong);border-radius:var(--a-r-lg);background:var(--a-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--a-shadow-lg)}
.rvdecide-t{display:flex;flex-direction:column;min-width:0}
.rvdecide-t span{color:var(--a-muted);font-size:var(--a-fs-sm)}
.rvdecide-a{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
.rvdecide-a .btn{min-height:40px}
.app.touch .rvdecide-a .btn{min-height:44px}
.rvformcard{border-color:var(--a-accent-line);box-shadow:var(--a-shadow)}
.rvformcard.reject{border-color:var(--a-rust-line)}
.rvformcard.approve{border-color:var(--a-warn-line)}
.rvfields{display:grid;gap:10px}
.rvfield>span{display:flex;align-items:baseline;gap:8px}
.rvwas{font-style:normal;font-weight:var(--a-w-medium);color:var(--a-muted);font-size:var(--a-fs-xs)}
.rvfield.changed .in{border-color:var(--a-accent);box-shadow:0 0 0 3px var(--a-accent-soft)}
.rvfield.changed>span:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--a-accent);align-self:center}
.rvpicks{margin-top:-4px}
.rvpicks button:hover{color:var(--a-ink);border-color:var(--a-accent-line)}
.rvform{display:grid;gap:10px}
textarea.in.rvjson{font-family:var(--a-font-mono);font-size:var(--a-fs-xs);line-height:1.45;tab-size:2;white-space:pre}
textarea.in.rvjson[aria-invalid="true"]{border-color:var(--a-rust)}
.rverr{color:var(--a-rust);font-size:var(--a-fs-sm)}
.rverr:empty{display:none}
.tbl td.nw{white-space:nowrap}
/* live data (local app only): source badge in the status strip + Sources panel */
.srcbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--a-line);background:var(--a-bg);color:var(--a-ink);font:inherit;font-size:var(--a-fs-xs);padding:2px 9px;border-radius:var(--a-r-pill);cursor:pointer}
.srcbtn i{width:7px;height:7px;border-radius:50%;background:var(--a-faint)}
.srcbtn.live i{background:var(--a-ok);box-shadow:0 0 0 3px var(--a-ok-soft)}
.srcbtn.snapshot i{background:var(--a-accent)}
.srcbtn.demo i{background:var(--a-rust)}
.srcbtn:hover{background:var(--a-panel-2)}
.palette .box.srcpanel{width:min(820px,94%)}
.srcpanel .srcbody{max-height:min(62vh,560px);overflow:auto;padding:14px 16px}
.srcpanel .tbl td{vertical-align:top}
.srcpanel .tbl td:last-child{font-size:var(--a-fs-xs);color:var(--a-muted);max-width:280px;overflow-wrap:anywhere;white-space:normal}

/* roof shape chips (Size) and the not-yet PEMB card */
.roofsel{margin:2px 0 12px}
.roofsel>span{display:block;font-size:var(--a-fs-sm);color:var(--a-muted);margin-bottom:6px}
.roofchips{display:flex;flex-wrap:wrap;gap:6px}
.gcard[disabled]{opacity:.45;cursor:not-allowed}
.gcard[disabled]:hover{transform:none}

/* live Production workspace (75/76-production): rail warn state, work progress, forms, sheets, confirm dialog */
.rail .st.warn .ic{border-color:var(--a-warn);color:var(--a-warn)}
.rail .st.warn .sub{color:var(--a-warn)}
.pflow a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.pflow .acts .pmuted{align-self:center}
.pmuted{font-size:var(--a-fs-sm);color:var(--a-muted);margin:6px 0 0;line-height:1.4}
.pflabel{font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint);margin:14px 0 6px}
.pwork{border:1px solid var(--a-line);border-radius:var(--a-r);padding:10px 12px;margin:6px 0;background:var(--a-bg)}
.pw-h{display:flex;align-items:center;gap:8px}
.pw-h b{font-weight:500;color:var(--a-ink)} .pw-h .badge{margin-left:auto}
.pw-d{font-size:var(--a-fs-sm);color:var(--a-muted);margin-top:6px}
.pw-d.pw-warn{color:var(--a-warn)}
.pbar{height:6px;border-radius:var(--a-r-xs);background:var(--a-line);overflow:hidden;margin-top:8px}
.pbar i{display:block;height:100%;background:var(--a-accent);border-radius:var(--a-r-xs)}
@media (prefers-reduced-motion:no-preference){.pbar i{transition:width .4s}.pbar.ind i{animation:pbar-ind 1.4s ease-in-out infinite}}
@keyframes pbar-ind{0%{transform:translateX(-100%)}100%{transform:translateX(290%)}}
.popen{display:flex;gap:8px;align-items:flex-end;margin:12px 0 16px;max-width:560px}
.popen .f{flex:1}
.popen .btn.pri{flex:none}
.pfields{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.f.miss>span{color:var(--a-warn)}
.f.miss .in{border-color:var(--a-warn)}
.pprov{font-style:normal;font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-muted);margin-left:4px}
.pform{border-top:1px dashed var(--a-line);margin-top:12px;padding-top:4px;display:flex;flex-direction:column;gap:8px}
.pform .pflabel{margin-top:8px}
.locked.pwarn{border-color:var(--a-warn)}
.locked.pwarn b{color:var(--a-warn)}
.locked .acts{margin-top:8px}
.pship-generation-error{overflow-wrap:anywhere}
.psheets{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));margin:10px 0 4px}
.psheets a.sheet{display:block;text-decoration:none}
.psheets .sheet{background:linear-gradient(var(--a-sheet-1),var(--a-sheet-2))}
.psrc{display:flex;align-items:center;gap:10px;border:1px solid var(--a-line);border-radius:var(--a-r);padding:8px 12px;cursor:pointer;background:var(--a-bg);min-height:44px}
.psrc.on{border-color:var(--a-accent-line);background:var(--a-accent-soft)}
.psrc>span:not(.badge){flex:1;display:flex;flex-direction:column;min-width:0}
.psrc small{font-size:var(--a-fs-xs);color:var(--a-muted);overflow-wrap:anywhere}
.pchks{display:flex;flex-wrap:wrap;gap:6px}
.pchk{display:flex;align-items:center;gap:8px;border:1px solid var(--a-line);border-radius:var(--a-r-pill);padding:6px 12px;cursor:pointer;font-size:var(--a-fs-sm);min-height:44px;box-sizing:border-box}
.pchk small{color:var(--a-muted)}
.psrc input,.pchk input{width:18px;height:18px;margin:0;accent-color:var(--a-accent)}
.pfiles .pacts{margin:0;justify-content:flex-end}
.ptable{max-height:420px;overflow:auto}
.pship-table{min-width:760px}
.pc2c-part{width:168px;max-width:168px;white-space:normal;overflow-wrap:anywhere}
.pc2c-part details{margin-top:4px;font-size:var(--a-fs-xs);line-height:1.4}
.pc2c-part summary{cursor:pointer;color:var(--a-muted)}
.pc2c-part details div{margin-top:4px}
.app[data-ws="production"] .page .tbl td{overflow-wrap:anywhere}
/* small text in Production meets AA 4.5:1 in both themes: labels use muted, not faint, and warn-colored text is deepened toward the ink */
.app[data-ws="production"] .phead .eyebrow,.app[data-ws="production"] .page .tbl th:not(.on),.app[data-ws="production"] .rail :is(.hd,.sb small,.rtog,.chev,.st:not(.cur,.warn) .sub){color:var(--a-muted)}
.app[data-ws="production"] :is(.badge.warn,.pw-d.pw-warn,.f.miss>span,.locked.pwarn b,.pcc .miss,.rail .st.warn .sub){color:color-mix(in srgb,var(--a-warn) 80%,var(--a-ink))}   /* long addresses and file names wrap at phone width instead of widening the page */
.pplan{border-top:1px dashed var(--a-line);padding-top:8px;margin-top:8px}
.pplan:first-of-type{border-top:0}
.pplan-b{margin-top:6px}
.psum{font-size:var(--a-fs);color:var(--a-ink);margin:8px 0;line-height:1.45}
.pops td:nth-child(3){color:var(--a-muted)}
.palette.pdlg{place-items:center;padding-top:0}
.pdlg .box{width:min(480px,92%)}
.pdlg-b{padding:12px 16px 0}
.pdlg-f{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px 14px}
.pdlg-f .btn.pri{flex:none}
.btn.busy{cursor:progress}
.app.touch .pflow .in,.app.touch .popen .in,.app.touch .pdlg .in{min-height:var(--tap);font-size:var(--a-fs)}
.app.touch .pflow .chips button{min-height:var(--tap);min-width:var(--tap)}
.app.touch .pflow a.btn,.app.touch .pdlg .btn,.app.touch .popen .btn{min-height:var(--tap)}
.app.touch .psheets a.sheet{min-height:var(--tap)}
.btn.picon{min-width:36px;justify-content:center}
.app.touch .btn.picon{min-width:var(--tap)}
@media (pointer:coarse){.pflow .btn,.pflow .in,.pflow .chips button,.phead .pright .btn,.popen .btn,.popen .in,.pdlg .btn,.pdlg .in{min-height:44px}.btn.picon,.pflow .chips button{min-width:44px}}
/* guided Production flow (77-production-flow.js): next step, attention list, set stepper, sheet preview, input figure, Shipper table.
   Token-only. Tokens the theme branch (C2C-059) adds are used with a fallback to the ones on this branch. */
.pflow :focus-visible{outline:2px solid var(--a-focus,var(--a-accent));outline-offset:2px}
.pnext{border:1px solid var(--a-line);border-left:3px solid var(--a-accent);border-radius:var(--a-r);background:var(--a-panel);padding:12px 14px;margin-top:-4px;margin-bottom:14px}
.pnext.warn{border-left-color:var(--a-warn)} .pnext.ok{border-left-color:var(--a-ok)}
/* C2C-068: on a stage that doesn't own the next step, one quiet line instead of the card */
.pnext.pline{padding:6px 8px 6px 12px;background:transparent}
.pn-l{flex:1 1 300px;min-width:0;font-size:var(--a-fs);color:var(--a-muted)}
.pn-l b{color:var(--a-ink);font-weight:600}
.pn-main{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap}
.pn-t{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:2px}
.pnext .eyebrow{font-family:var(--mono);font-size:var(--a-fs-2xs);letter-spacing:.07em;text-transform:uppercase;color:var(--a-muted);display:flex;align-items:center;gap:6px}
.pn-t b{font-family:var(--display);font-size:var(--a-fs-md);font-weight:600;color:var(--a-ink);line-height:1.3}
.pn-d{font-size:var(--a-fs-sm);color:var(--a-muted);line-height:1.4}
.pn-a{display:flex;gap:8px;flex-wrap:wrap;flex:none}
.pn-a .btn{font-size:var(--a-fs);padding:8px 14px}
.pn-a .btn.pri{flex:none}
.srcinfo{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:var(--a-r-pill);color:var(--a-muted);cursor:help}
.srcinfo:focus-visible{outline:2px solid var(--a-accent);outline-offset:1px}
.pflow kbd{font-family:var(--mono);font-size:var(--a-fs-2xs);line-height:1;padding:2px 4px;border:1px solid var(--a-line);border-radius:var(--a-r-xs);background:var(--a-panel-2);color:var(--a-muted);text-transform:none;letter-spacing:0}
.pwls{display:grid;gap:4px;margin-top:10px;padding-top:8px;border-top:1px dashed var(--a-line)}
.pwl{display:flex;align-items:center;gap:10px}
.pwl-l{flex:1;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(90px,160px) auto;align-items:center;gap:10px;font-size:var(--a-fs-sm);color:var(--a-ink)}
.pwl-l .pbar{margin:0}
.pwl-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pwl-t small{color:var(--a-muted);font-size:var(--a-fs-xs)}
.pwl-p{font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--a-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.pattn{margin-top:10px;padding-top:4px;border-top:1px dashed var(--a-line)}
.pattn .pflabel{margin:6px 0 2px}
.pattn ul{list-style:none;margin:0;padding:0}
.pattn li{display:flex;align-items:center;gap:10px;padding:4px 0 4px 20px;position:relative;font-size:var(--a-fs-sm);color:var(--a-ink);line-height:1.35}
.pattn li::before{position:absolute;left:2px;top:50%;transform:translateY(-50%);font-weight:700;font-size:var(--a-fs-sm)}
.pattn li.bad::before{content:"✕";color:var(--a-rust)} .pattn li.warn::before{content:"!";color:var(--a-warn)} .pattn li.info::before{content:"i";font-style:italic;color:var(--a-accent)}
.pattn li>span{flex:1;min-width:0}
.pattn li .btn{flex:none;font-size:var(--a-fs-sm);padding:5px 10px}
.btn.pmini{font-size:var(--a-fs-sm);padding:4px 10px;margin-top:6px}
.pstep{list-style:none;display:flex;align-items:center;margin:0 0 12px;padding:0;font-size:var(--a-fs-sm);color:var(--a-muted)}
.pstep li{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.pstep li:last-child{flex:none}
.pstep li:not(:last-child)::after{content:"";flex:1;height:1px;background:var(--a-line);margin:0 8px;min-width:8px}
.pstep i{font-style:normal;flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;border:1.5px solid var(--a-line);font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-muted);background:var(--a-panel)}
.pstep span{white-space:nowrap}
.pstep li.done{color:var(--a-ink)} .pstep li.done i{background:var(--a-ok);border-color:var(--a-ok);color:var(--a-on-ok,var(--a-on-accent,#0f151d))}
.pstep li.done:not(:last-child)::after{background:var(--a-ok)}
.pstep li.cur{color:var(--a-ink);font-weight:600} .pstep li.cur i{border-color:var(--a-accent);color:var(--a-accent);background:var(--a-accent-soft,color-mix(in srgb,var(--a-accent) 12%,var(--a-panel)))}
.pstep li.warn{color:var(--a-ink)} .pstep li.warn i{border-color:var(--a-warn);color:var(--a-warn)}
.pmore{margin-top:8px}
.pmore>summary{display:inline-flex;align-items:center;gap:6px;min-height:32px;cursor:pointer;font-size:var(--a-fs-sm);color:var(--a-accent);list-style:none;border-radius:var(--a-r-sm);padding:0 4px}
.pmore>summary::-webkit-details-marker{display:none}
.pmore>summary::before{content:"▸";font-size:var(--a-fs-2xs);transition:transform .15s}
.pmore[open]>summary::before{transform:rotate(90deg)}
.pmore[open]{border-left:2px solid var(--a-line);padding-left:10px}
.psg-h{display:flex;align-items:center;gap:8px;margin:12px 0 0;font-size:var(--a-fs-sm);min-height:28px}
.psg-h b{font-weight:600;color:var(--a-ink)} .psg-h span{color:var(--a-muted);font-size:var(--a-fs-xs)}
.psg-h .btn{margin-left:auto}
/* C2C-068 shared parts: a folded section with a one-line summary, building tabs, a flagged Shipper row, an empty state */
.srow{border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-panel);box-shadow:var(--a-shadow-sm)}
.icard .srow{margin-top:10px;box-shadow:none}
.srow>summary{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 16px;cursor:pointer;list-style:none;border-radius:var(--a-r)}
.srow>summary::-webkit-details-marker{display:none}
.srow>summary::before{content:"▸";color:var(--a-muted);font-size:var(--a-fs-xs);transition:transform .15s}
.srow[open]>summary::before{transform:rotate(90deg)}
.srow>summary:focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
.srow-t{font-family:var(--display);font-size:var(--a-fs-md);font-weight:600;color:var(--a-ink);white-space:nowrap}
.icard .srow-t{font-size:var(--a-fs-sm)}
.srow-s{flex:1;min-width:0;color:var(--a-muted);font-size:var(--a-fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow-r{margin-left:auto}
.srow-b{padding:0 16px 14px}
.srow.bad{border-color:var(--a-warn)}
.ptabs{flex:1;min-width:0}
.ptabs small{color:var(--a-faint);font-size:var(--a-fs-xs);margin-left:2px}
.ptabs button.on small{color:inherit}
.prow-warn{color:var(--a-warn);margin-right:4px;cursor:help}
/* a building's sheets: one row that scrolls sideways, or wrapped into a grid; each tile is a landscape sheet with its titleblock band */
.psg .psheets{display:flex;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:2px 2px 8px;margin:6px 0 2px;scrollbar-width:thin}
.psg .psheets.wrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));overflow:visible}
.psg .psheets .sheet{flex:0 0 136px;aspect-ratio:3/2;scroll-snap-align:start}
.psheets .sheet:before{inset:5px 5px 21px}
.psheets .sheet:after{content:"";position:absolute;left:5px;right:5px;bottom:5px;height:13px;border:1px solid var(--a-faint);opacity:.5}
.psheets .sheet small{position:absolute;inset:9px 9px 25px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--a-fs-2xs);line-height:1.3;text-align:left;color:var(--a-muted);font-family:var(--body)}
.psheets .sheet span{color:var(--a-ink);left:auto;right:9px;bottom:6px;text-align:right}
.psheets a.sheet.on{border-color:var(--a-accent);box-shadow:inset 0 0 0 1px var(--a-accent)}
.ppv{border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);margin:10px 0;overflow:hidden}
.ppv-h{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid var(--a-line);flex-wrap:wrap;background:var(--a-panel)}
.ppv-t{flex:1 1 180px;min-width:0;display:flex;flex-direction:column}
.ppv-t b{font-size:var(--a-fs);font-weight:600;color:var(--a-ink)}
.ppv-t span{font-size:var(--a-fs-xs);color:var(--a-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ppv-h .pmuted{margin:0 4px;font-variant-numeric:tabular-nums}
.ppv-f{display:block;width:100%;height:clamp(320px,64vh,760px);border:0;background:var(--a-panel-2)}
.ppv-n{padding:4px 10px 8px}
.pgrp{border:0;margin:0 0 14px;padding:0;min-width:0}
.pgrp>legend{padding:0;margin:0 0 6px;font-family:var(--mono);font-size:var(--a-fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--a-muted);display:flex;align-items:center;gap:6px}
.pgrp>legend .badge{text-transform:none}
.pgrp [data-p-framing]{min-height:44px}
.pcolor{display:flex;align-items:center;gap:8px}
.pswatch{flex:none;width:22px;height:22px;border-radius:var(--a-r-xs);border:1px solid var(--a-line);background:var(--sw,var(--a-panel-2))}
.pswatch.none{background:repeating-linear-gradient(45deg,var(--a-panel-2) 0 4px,var(--a-bg) 4px 8px)}
.pfig{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:0 0 14px}
.pfig figure{margin:0;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);padding:10px}
.pfig svg{display:block;width:100%;height:auto;max-height:160px}
.pfig figcaption{font-size:var(--a-fs-xs);color:var(--a-muted);margin-top:6px}
.ptb rect{fill:var(--a-panel);stroke:var(--a-line)} .ptb line{stroke:var(--a-line)}
.ptb text{font-family:var(--mono);font-size:9.5px;fill:var(--a-ink)} .ptb text.k{font-size:6.5px;letter-spacing:.06em;fill:var(--a-muted)} .ptb text.miss{fill:var(--a-warn)}
.pelev .roof{fill:var(--c-roof,var(--a-panel-2));stroke:var(--a-line)} .pelev .wall{fill:var(--c-wall,var(--a-panel-2));stroke:var(--a-line)}
.pelev .door{fill:var(--c-door,var(--a-panel));stroke:var(--a-line)} .pelev .rib{stroke:var(--a-ink);opacity:.1}
.pelev .trim{fill:none;stroke:var(--c-trim,var(--a-muted));stroke-width:3;stroke-linejoin:round} .pelev .ground{stroke:var(--a-muted)}
.pelev.no-roof .roof,.pelev.no-wall .wall,.pelev.no-door .door{stroke:var(--a-warn);stroke-dasharray:4 3}
.pelev.no-trim .trim{stroke:var(--a-warn);stroke-width:1.5;stroke-dasharray:4 3}
.pcc{display:flex;flex-wrap:wrap;gap:2px 12px} .pcc .miss{color:var(--a-warn)}
.plink{background:none;border:0;padding:0;font:inherit;color:var(--a-accent);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.pmiss li.warn{color:var(--a-ink)} .pmiss li.warn::before{color:var(--a-warn)}
/* contract check: buildings are columns, the drawings' one set per job leads; the table scrolls inside its card */
.pccx{overflow-x:auto;overscroll-behavior-x:contain;margin:4px 0 10px}
.pccx .tbl{min-width:max-content}
.app[data-ws="production"] .page .pccx .tbl td,.pccx .tbl th{overflow-wrap:normal;vertical-align:middle;min-width:92px}
.pccx .tbl th small{display:block;margin-top:2px;font-family:var(--body);font-size:var(--a-fs-xs);letter-spacing:0;text-transform:none;color:var(--a-muted)}
.pccx .tbl th[scope=row]{min-width:0;font-family:var(--body);font-size:var(--a-fs-sm);letter-spacing:0;text-transform:none;color:var(--a-ink);font-weight:500}
.pccx .tbl tr.pcc-g th{padding-top:12px;color:var(--a-muted)}
.pccx .tbl .pcc-drw{background:var(--a-panel-2)}
.pccx .tbl th[scope=row],.pccx .tbl tr.pcc-g th,.pccx .tbl thead td:first-child{position:sticky;left:0;z-index:1;background:var(--a-panel);box-shadow:inset -1px 0 0 var(--a-line),-4px 0 0 var(--a-panel)}
@media (max-width:560px){.pccx .tbl th[scope=row]{width:104px;white-space:normal}}
.pccx .tbl td small{display:block;margin-top:2px;font-size:var(--a-fs-xs);font-weight:600;color:var(--a-ink)}
.pccx .tbl td.is-diff{background:color-mix(in srgb,var(--a-warn) 14%,transparent);box-shadow:inset 3px 0 0 var(--a-warn)}
.pccx .tbl td.is-miss{color:var(--a-muted)}
.pccx .pswatch{width:16px;height:16px}
.pccx .pcolor{gap:6px}
.tbl.pbld th,.tbl.pbld td{vertical-align:middle}
.tbl.pbld .pck{width:44px;padding:0}
.pbl{display:flex;align-items:center;justify-content:center;min-height:40px;cursor:pointer}
.pbl input{width:18px;height:18px;margin:0;accent-color:var(--a-accent)}
.pshbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 8px}
.pshbar .in{flex:1 1 220px;max-width:340px}
.pshbar .pmuted{margin:0 0 0 auto}
.ptable thead th{position:sticky;top:0;z-index:1;background:var(--a-panel)}
.ptable tr[tabindex]:focus-visible{outline:2px solid var(--a-focus,var(--a-accent));outline-offset:-2px}
.ptable tr.is-issue td{background:var(--a-rust-soft,color-mix(in srgb,var(--a-rust) 9%,transparent))}
.ptable tr.is-issue td:first-child{box-shadow:inset 3px 0 0 var(--a-rust)}
.ptable tr.flash td{background:var(--a-accent-soft,color-mix(in srgb,var(--a-accent) 18%,transparent))}
.rail .rbar{display:block;height:3px;max-width:120px;margin-top:4px;border-radius:var(--a-r-xs);background:var(--a-line);overflow:hidden}
.rail .rbar i{display:block;height:100%;background:var(--a-accent)}
@media (prefers-reduced-motion:no-preference){.rail .rbar i{transition:width .4s}.rail .rbar.ind i{animation:pbar-ind 1.4s ease-in-out infinite}}
.app.touch .pmore>summary,.app.touch .plink,.app.touch .pbl,.app.touch .pnext .btn,.app.touch .ppv .btn{min-height:var(--tap)}
.app.touch .plink{display:inline-flex;align-items:center}
@media (pointer:coarse){.pmore>summary,.plink,.pbl{min-height:44px}.plink{display:inline-flex;align-items:center}}
@media (max-width:600px){
  .pn-a{width:100%} .pn-a .btn{flex:1 1 auto}
  .pwl-l{grid-template-columns:minmax(0,1fr) auto} .pwl-l .pbar{grid-column:1/-1;order:3}
  .pstep{font-size:var(--a-fs-xs)} .pstep li:not(:last-child)::after{margin:0 4px} .pstep i{width:20px;height:20px}
  .pattn li{flex-wrap:wrap}
  .ppv-f{height:60vh}
  .pshbar .in{max-width:none}
  .pfig{grid-template-columns:1fr}
}
/* project finder (45-finder.js): the list under "Find a project", floating in .app, and the top search's results */
.fpop{position:absolute;z-index:5;box-sizing:border-box;background:var(--a-panel);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:0 18px 44px -16px var(--a-pop-shadow);overflow:auto;overscroll-behavior:contain;padding:4px}
.flist{display:flex;flex-direction:column;gap:1px}
.frow{display:flex;align-items:flex-start;gap:10px;box-sizing:border-box;min-height:40px;padding:7px 10px;border-radius:var(--a-r-sm);color:var(--a-ink);cursor:pointer}
.frow:hover{background:var(--a-panel-2)}
.frow.on{background:var(--a-panel-2);box-shadow:inset 3px 0 0 var(--a-accent)}
.fid{flex:none;width:9.5em;padding-top:1px;font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--a-accent);overflow-wrap:anywhere}
.fid .badge{margin-left:2px;padding:0 5px;font-size:var(--a-fs-2xs)}
.fid.fk{font-size:var(--a-fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--a-muted);padding-top:3px}
.fmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.fn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm{font-size:var(--a-fs-xs);color:var(--a-muted);overflow-wrap:anywhere}
.fj{font-family:var(--mono);font-size:var(--a-fs-2xs);color:var(--a-muted)}
.frow mark{background:none;color:inherit;font-weight:700;box-shadow:inset 0 -2px 0 var(--a-accent)}
.fgh{padding:8px 10px 4px;font-size:var(--a-fs-2xs);font-weight:var(--a-w-heavy);letter-spacing:.07em;text-transform:uppercase;color:var(--a-faint)}
.fst{display:flex;flex-direction:column;gap:4px;padding:10px 12px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.fst .fnote{font-size:var(--a-fs-xs);color:var(--a-muted)}
.popen .in[type=search],.palette.find input[type=search]{-webkit-appearance:none;appearance:none}
.palette.find .res{max-height:min(420px,60vh);padding:4px 6px 6px}
.palette.find .ft{flex-wrap:wrap}
.palette.find .ft .fsrc{margin-left:auto;text-align:right}
.app.touch .frow{min-height:var(--tap);padding-top:10px;padding-bottom:10px}
.app.touch .palette.find input{min-height:var(--tap)}
@media (pointer:coarse){.frow{min-height:44px}}
@media (max-width:600px){.frow{flex-wrap:wrap;gap:2px 10px}.fid{width:100%}
  .palette.find{padding-top:12px}.palette.find .box{width:calc(100% - 16px)}.palette.find .ft span:not(.fsrc){display:none}.palette.find .ft .fsrc{margin-left:0;text-align:left}}
@media(max-width:750px){.app[data-dstep]:not([data-dstep=""]) .rail{overflow-x:hidden}.app[data-dstep]:not([data-dstep=""]) .status{overflow:hidden}}

/* Basic Builder touch targets; later than the base .basic-tabs, chip and button rules so they win. */
@media(pointer:coarse){.basic-tabs button,.roofchips button,.acts .btn{min-height:44px}}

/* The one Builder (23-unified-builder.js): the Builder screens on the left; the plan or the 3D model on the right,
   under a view bar. Phone: the bar and a short plan/3D strip sit above the screens. */
.unified-builder #hint{display:none!important}
.unified-builder.builder-plan #dimLayer{display:none!important}
#builderViz{position:absolute;top:var(--builder-top,110px);left:var(--mini-right,50%);right:14px;z-index:4;display:flex;flex-direction:column;gap:4px;min-width:0}
#builderViz[hidden],#builderViz [hidden]{display:none!important}
#builderViz .bv-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
#builderViz .bv-view button{min-height:36px;padding:4px 14px;font-weight:600}
#builderViz .bv-view button.on{background:var(--a-accent);color:var(--a-on-accent)}
#builderViz .bv-btn{min-height:36px;padding:4px 10px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-panel);color:var(--a-ink);font:inherit;font-size:var(--a-fs-sm);cursor:pointer;white-space:nowrap}
#builderViz .bv-btn:disabled{opacity:.45;cursor:default}
#builderViz .bv-run{gap:4px}
#builderViz .bv-foot{display:flex;align-items:baseline;gap:8px;min-width:0}
#builderViz .bv-hint{flex:1;min-width:0;margin:0;font-size:var(--a-fs-xs);line-height:1.35;color:var(--a-muted)}
#builderViz :focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
#runPainterHost.run-embedded{top:calc(var(--builder-top,110px) + var(--viz-bar,52px));left:var(--mini-right,50%);right:14px;bottom:12px}
#runPainterHost.run-embedded .run-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
#runPainterHost.run-embedded .run-controls{display:none}
@media(pointer:coarse){#builderViz .bv-btn,#builderViz .bv-view button{min-height:44px}}
@media(max-width:750px){
  .unified-builder{--viz-h:min(24vh,200px)}
  #builderViz{left:6px;right:6px}
  #builderViz .bv-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  #builderViz .bv-row[data-more]{-webkit-mask-image:linear-gradient(to right,var(--a-ink) calc(100% - 36px),transparent);mask-image:linear-gradient(to right,var(--a-ink) calc(100% - 36px),transparent)}
  #builderViz .bv-row>*{flex-shrink:0}
  #builderViz .bv-foot{display:none}
  #runPainterHost.run-embedded{left:6px;right:6px;bottom:auto;height:var(--viz-h)}
  .unified-builder #advancedBuilderHost{top:calc(var(--builder-top,140px) + var(--viz-bar,52px) + var(--viz-h) + 6px)}
}

/* ---------- the one Builder's bar (24-builder-bar.js, C2C-057): one row on every design step for the building, steps and
   progress, checks and the next action; on the Builder step also undo/redo, save and the file menu. Drawn with Web Awesome 3 (vendored). The theme below maps Web Awesome onto
   the app's tokens; it is unlayered, so it wins over Web Awesome's own theme layer. The theme resolves its derived values
   (focus ring, form-control colors, shadows, font sizes) on :root, so those are declared here too, not only the colors. ---------- */
.app{
  --wa-font-family-body:var(--body);--wa-font-family-heading:var(--display);--wa-font-family-code:var(--mono);
  --wa-color-surface-default:var(--a-panel);--wa-color-surface-raised:var(--a-panel);--wa-color-surface-lowered:var(--a-panel-2);--wa-color-surface-border:var(--a-line);
  --wa-color-text-normal:var(--a-ink);--wa-color-text-quiet:var(--a-muted);--wa-color-text-link:var(--a-accent);
  --wa-color-focus:var(--a-accent);--wa-focus-ring-width:2px;--wa-focus-ring:solid 2px var(--a-accent);--wa-color-shadow:var(--a-pop-shadow);
  --wa-shadow-s:0 1px 2px var(--a-pop-shadow);--wa-shadow-m:0 18px 44px -16px var(--a-pop-shadow);--wa-shadow-l:0 24px 56px -18px var(--a-pop-shadow);
  --wa-color-mix-active:var(--a-panel) 14%;
  --wa-color-overlay-inline:color-mix(in srgb,var(--a-bg) 60%,transparent);--wa-color-overlay-modal:color-mix(in srgb,var(--a-bg) 72%,transparent);
  --wa-color-brand-fill-quiet:color-mix(in srgb,var(--a-accent) 12%,var(--a-panel));--wa-color-brand-fill-normal:color-mix(in srgb,var(--a-accent) 24%,var(--a-panel));--wa-color-brand-fill-loud:var(--a-accent);
  --wa-color-brand-border-quiet:color-mix(in srgb,var(--a-accent) 30%,var(--a-panel));--wa-color-brand-border-normal:color-mix(in srgb,var(--a-accent) 55%,var(--a-panel));--wa-color-brand-border-loud:var(--a-accent);
  --wa-color-brand-on-quiet:var(--a-accent);--wa-color-brand-on-normal:var(--a-ink);--wa-color-brand-on-loud:var(--a-on-accent);
  --wa-color-neutral-fill-quiet:var(--a-panel-2);--wa-color-neutral-fill-normal:color-mix(in srgb,var(--a-ink) 12%,var(--a-panel));--wa-color-neutral-fill-loud:var(--a-ink);
  --wa-color-neutral-border-quiet:var(--a-line);--wa-color-neutral-border-normal:var(--a-line);--wa-color-neutral-border-loud:color-mix(in srgb,var(--a-muted) 40%,var(--a-line));
  --wa-color-neutral-on-quiet:var(--a-ink);--wa-color-neutral-on-normal:var(--a-ink);--wa-color-neutral-on-loud:var(--a-bg);
  --wa-color-success-fill-quiet:color-mix(in srgb,var(--a-ok) 14%,var(--a-panel));--wa-color-success-fill-normal:color-mix(in srgb,var(--a-ok) 26%,var(--a-panel));--wa-color-success-fill-loud:var(--a-ok);
  --wa-color-success-border-quiet:color-mix(in srgb,var(--a-ok) 30%,var(--a-panel));--wa-color-success-border-normal:color-mix(in srgb,var(--a-ok) 55%,var(--a-panel));--wa-color-success-border-loud:var(--a-ok);
  --wa-color-success-on-quiet:var(--a-ok);--wa-color-success-on-normal:var(--a-ink);--wa-color-success-on-loud:var(--a-on-accent);
  --wa-color-warning-fill-quiet:color-mix(in srgb,var(--a-warn) 14%,var(--a-panel));--wa-color-warning-fill-normal:color-mix(in srgb,var(--a-warn) 26%,var(--a-panel));--wa-color-warning-fill-loud:var(--a-warn);
  --wa-color-warning-border-quiet:color-mix(in srgb,var(--a-warn) 30%,var(--a-panel));--wa-color-warning-border-normal:color-mix(in srgb,var(--a-warn) 55%,var(--a-panel));--wa-color-warning-border-loud:var(--a-warn);
  --wa-color-warning-on-quiet:var(--a-warn);--wa-color-warning-on-normal:var(--a-ink);--wa-color-warning-on-loud:var(--a-on-accent);
  --wa-color-danger-fill-quiet:color-mix(in srgb,var(--a-rust) 14%,var(--a-panel));--wa-color-danger-fill-normal:color-mix(in srgb,var(--a-rust) 26%,var(--a-panel));--wa-color-danger-fill-loud:var(--a-rust);
  --wa-color-danger-border-quiet:color-mix(in srgb,var(--a-rust) 30%,var(--a-panel));--wa-color-danger-border-normal:color-mix(in srgb,var(--a-rust) 55%,var(--a-panel));--wa-color-danger-border-loud:var(--a-rust);
  --wa-color-danger-on-quiet:var(--a-rust);--wa-color-danger-on-normal:var(--a-ink);--wa-color-danger-on-loud:var(--a-on-accent);
  --wa-form-control-height:36px;--wa-form-control-padding-inline:12px;--wa-form-control-border-radius:8px;
  --wa-form-control-background-color:var(--a-panel);--wa-form-control-border-color:color-mix(in srgb,var(--a-muted) 40%,var(--a-line));--wa-form-control-activated-color:var(--a-accent);
  --wa-form-control-value-color:var(--a-ink);--wa-form-control-label-color:var(--a-ink);--wa-form-control-hint-color:var(--a-muted);--wa-form-control-placeholder-color:var(--a-faint);
  --wa-tooltip-background-color:var(--a-ink);--wa-tooltip-content-color:var(--a-bg);--wa-tooltip-border-color:var(--a-ink);--wa-tooltip-font-size:12px;
}
.app.touch{--wa-form-control-height:44px}
@media(pointer:coarse){.app{--wa-form-control-height:44px}}
.app.builder-bar .canvas .hud{display:none!important}
#builderBar{position:absolute;top:12px;left:14px;right:14px;z-index:5;box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:6px 8px;
  border:1px solid var(--a-line);border-radius:var(--a-r-lg);background:var(--a-panel);color:var(--a-ink);font-family:var(--body);font-size:var(--a-fs);
  --wa-font-size-l:15px;--wa-font-size-m:13px;--wa-font-size-s:12px;--wa-font-size-xs:11px;--wa-font-size-2xs:10px}
#builderBar[hidden],#builderBar [hidden]{display:none!important}
#builderBar:not(.in-builder) .bb-build{display:none!important}
/* The design panel and its collapsed tab sit under the bar on the steps around the Builder. */
.app.builder-bar #dpanel,.app.builder-bar #dpanelTab{top:var(--builder-top,110px)}
.app.builder-bar #dpanel{max-height:calc(100% - var(--builder-top,110px) - 12px)}
#builderBar .bb-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
#builderBar .bb-sp{flex:1 1 0;min-width:0}
#builderBar .bb-id{font-weight:700}
#builderBar .bb-kind{color:var(--a-muted);font-weight:400}
#builderBar .bb-kind::before{content:"· ";color:var(--a-faint)}
#builderBar .bb-bldg wa-button::part(label){display:inline-flex;gap:4px;align-items:baseline;white-space:nowrap}
#builderBar .bb-flow{display:flex;flex-direction:column;gap:3px;min-width:0}
#builderBar .bb-steps{display:flex;gap:2px}
#builderBar .bb-step::part(base){padding-inline:10px}
#builderBar .bb-step .bb-n{display:inline-grid;place-items:center;width:18px;height:18px;margin-right:6px;border:1px solid currentColor;border-radius:50%;font-size:var(--a-fs-xs);font-variant-numeric:tabular-nums;line-height:1}
#builderBar .bb-step:not(.on) .bb-n{color:var(--a-muted)}
#builderBar .bb-step .bb-n.bb-ok{border-color:var(--a-ok);color:var(--a-ok)}
#builderBar .bb-step.on .bb-l{font-weight:600}
#builderBar .bb-step.on .bb-n,#quoteBar .bb-step.on .bb-n{color:var(--a-accent);border-color:var(--a-accent)}
#builderBar .bb-meter{display:flex;align-items:center;gap:8px;padding:0 10px;min-width:0}
#builderBar .bb-meter wa-progress-bar{flex:1 1 auto;min-width:48px;--track-height:4px;--track-color:var(--a-line);--indicator-color:var(--a-ok)}
#builderBar .bb-count{flex:none;font-size:var(--a-fs-xs);line-height:1;color:var(--a-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
#builderBar .bb-ok{color:var(--a-ok)}
#builderBar .bb-warn{color:var(--a-warn)}
#builderBar .bb-todo{color:var(--a-muted)}
#builderBar .bb-mark:empty{display:none}
#builderBar #bbChecks wa-badge{position:static;translate:none}
#builderBar .bb-history wa-button::part(base){padding-inline:10px;font-size:var(--a-fs-md)}
#builderBar .bb-view wa-button::part(base){padding-inline:12px}
#builderBar .bb-save .bb-l{color:var(--a-muted)}
#builderBar .bb-short{display:none}
#builderBar wa-dropdown-item.bb-cur{font-weight:600}
#builderBar wa-dropdown-item [slot=details]{color:var(--a-muted);font-size:var(--a-fs-xs)}
#builderBar .bb-checks{max-width:340px;font-size:var(--a-fs);line-height:1.4}
#builderBar .bb-pop::part(body){padding:12px 14px}
#builderBar .bb-checks ul{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
#builderBar .bb-checks li{display:block}
#builderBar .bb-checks li>.bb-msg{display:block;padding:0 9px}
#builderBar .bb-go{display:flex;flex-direction:column;align-items:flex-start;gap:2px;box-sizing:border-box;width:100%;min-height:44px;margin:0;padding:6px 8px;
  border:1px solid var(--a-line);border-radius:var(--a-r);background:transparent;color:var(--a-ink);font:inherit;text-align:left;cursor:pointer}
#builderBar .bb-go:hover{background:var(--a-panel-2)}
#builderBar .bb-go:focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
#builderBar .bb-where{font-size:var(--a-fs-sm);font-weight:600;color:var(--a-accent)}
/* The field a check opened: marked for a moment (24-builder-bar.js bbFocus). */
.dpanel .bb-target{outline:2px solid var(--a-warn);outline-offset:2px;border-radius:var(--a-r-sm)}
#builderBar .bb-checks p{margin:8px 0 0;color:var(--a-muted);font-size:var(--a-fs-sm)}
#builderBar .bb-checks p:first-of-type{margin-top:0}
#builderBar .bb-checks .bb-h{margin:0 0 8px;color:var(--a-ink);font:600 15px/1.2 var(--display)}
/* An iPad-wide canvas: the building's kind, the save time and the progress count move into the menus and tooltips. */
#builderBar.compact .bb-kind,#builderBar.compact .bb-save .bb-l{display:none}
#builderBar.compact .bb-count{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#builderBar.compact{gap:6px}
#builderBar.compact .bb-step::part(base){padding-inline:8px}
#builderBar.compact .bb-step .bb-n{margin-right:4px}
/* A phone: two rows. The steps, progress and save take the second row, labels shrink to the current step, Redo moves into ⋯. */
#builderBar.narrow{gap:6px;padding:6px}
#builderBar.narrow .bb-flow{order:10;flex:1 1 calc(100% - 50px)}
#builderBar.narrow:not(.in-builder) .bb-flow{flex-basis:100%}
#builderBar.narrow #bbSave{order:11}
#builderBar.narrow .bb-meter{padding:0 4px}
#builderBar.narrow .bb-step:not(.on) .bb-l,#builderBar.narrow #bbChecks .bb-l,#builderBar.narrow .bb-save{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#builderBar.narrow .bb-step:not(.on) .bb-n{margin-right:0}
#builderBar.narrow .bb-step::part(base),#builderBar.narrow wa-button::part(base){padding-inline:8px}
#builderBar.narrow #bbRedo{display:none}
#builderBar.narrow .bb-long{display:none}#builderBar.narrow .bb-short{display:inline}
#builderBar wa-dropdown-item{min-height:32px;align-items:center}
.app.touch #builderBar wa-button::part(base){min-width:44px}
.app.touch #builderBar wa-dropdown-item{min-height:44px}
@media(pointer:coarse){#builderBar wa-button::part(base){min-width:44px}#builderBar wa-dropdown-item{min-height:44px}}
@media(max-width:750px){#builderBar{top:6px;left:6px;right:6px}}

/* ---- live Sales quote builder (56-quote.js, window.ONE_CANVAS_QUOTE): the quote's bar, drawn like #builderBar, over the
   proposal sheet (the NovelCo workbook's Proposal tab) · tokens only ---- */
.page>.qwrap{max-width:1220px}
.qsr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
#quoteBar{position:sticky;top:-8px;z-index:6;box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;margin-bottom:14px;padding:6px 8px;
  border:1px solid var(--a-line);border-radius:var(--a-r-lg);background:var(--a-panel);color:var(--a-ink);font-family:var(--body);font-size:var(--a-fs);
  --wa-font-size-l:15px;--wa-font-size-m:13px;--wa-font-size-s:12px;--wa-font-size-xs:11px;--wa-font-size-2xs:10px}
#quoteBar [hidden]{display:none!important}
#quoteBar .bb-sp{flex:1 1 0;min-width:0}
#quoteBar .bb-id{font-weight:700}
#quoteBar .bb-kind{color:var(--a-muted);font-weight:400}
#quoteBar .bb-kind::before{content:"· ";color:var(--a-faint)}
#quoteBar .bb-bldg wa-button::part(label){display:inline-flex;gap:4px;align-items:baseline;white-space:nowrap}
#quoteBar .bb-flow{display:flex;flex-direction:column;gap:3px;min-width:0}
#quoteBar .bb-steps{display:flex;gap:2px;flex-wrap:wrap}
#quoteBar .bb-step::part(base){padding-inline:10px}
#quoteBar .bb-step .bb-n{display:inline-grid;place-items:center;width:18px;height:18px;margin-right:6px;border:1px solid currentColor;border-radius:50%;font-size:var(--a-fs-xs);font-variant-numeric:tabular-nums;line-height:1}
#quoteBar .bb-step:not(.on) .bb-n{color:var(--a-muted)}
#quoteBar .bb-step .bb-n.bb-ok{border-color:var(--a-ok);color:var(--a-ok)}
#quoteBar .bb-step.on .bb-l{font-weight:600}
#quoteBar .bb-meter{display:flex;align-items:center;gap:8px;padding:0 10px;min-width:0}
#quoteBar .bb-meter wa-progress-bar{flex:1 1 auto;min-width:48px;--track-height:4px;--track-color:var(--a-line);--indicator-color:var(--a-ok)}
#quoteBar .bb-count{flex:none;font-size:var(--a-fs-xs);line-height:1;color:var(--a-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
#quoteBar .bb-ok{color:var(--a-ok)}
#quoteBar .bb-warn{color:var(--a-warn)}
#quoteBar .bb-todo{color:var(--a-muted)}
#quoteBar #qbChecks wa-badge{position:static;translate:none}
#quoteBar .bb-view wa-button::part(base){padding-inline:12px}
#quoteBar #qbReload::part(base){padding-inline:10px;font-size:var(--a-fs-md)}
#quoteBar .qb-status{display:inline-flex;align-items:center}
#quoteBar wa-dropdown-item [slot=details]{color:var(--a-muted);font-size:var(--a-fs-xs)}
#quoteBar wa-dropdown-item [slot=icon]{font-family:var(--mono);font-size:var(--a-fs-sm);min-width:14px;text-align:center}
#quoteBar wa-dropdown-item{min-height:32px;align-items:center}
#quoteBar .bb-checks{max-width:360px;font-size:var(--a-fs);line-height:1.4}
#quoteBar .bb-pop::part(body){padding:12px 14px}
#quoteBar .bb-checks ul{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
#quoteBar .bb-checks li{display:block}
#quoteBar .bb-checks li>.bb-msg{display:block;padding:0 9px}
#quoteBar .bb-checks li.bad .bb-msg{color:var(--a-rust)}
#quoteBar .bb-go{display:flex;flex-direction:column;align-items:flex-start;gap:2px;box-sizing:border-box;width:100%;min-height:44px;margin:0;padding:6px 8px;
  border:1px solid var(--a-line);border-radius:var(--a-r);background:transparent;color:var(--a-ink);font:inherit;text-align:left;cursor:pointer}
#quoteBar .bb-go:hover{background:var(--a-panel-2)}
#quoteBar .bb-go:focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
#quoteBar .bb-go[disabled]{opacity:.55;cursor:default}
#quoteBar .bb-where{font-size:var(--a-fs-sm);font-weight:600;color:var(--a-accent)}
#quoteBar .bb-checks p{margin:8px 0 0;color:var(--a-muted);font-size:var(--a-fs-sm)}
#quoteBar .bb-checks .bb-h{margin:0 0 8px;color:var(--a-ink);font:600 15px/1.2 var(--display)}
.app.touch #quoteBar wa-button::part(base){min-width:44px}
.app.touch #quoteBar wa-dropdown-item{min-height:44px}
@media(pointer:coarse){#quoteBar wa-button::part(base){min-width:44px}#quoteBar wa-dropdown-item{min-height:44px}}
@media(max-width:750px){#quoteBar .bb-flow{order:10;flex:1 1 100%}#quoteBar .bb-step:not(.on) .bb-l{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  #quoteBar .bb-step:not(.on) .bb-n{margin-right:0}#quoteBar .bb-kind{display:none}}

.qwrap .qbanners{position:static;margin-bottom:12px}
.qbanners{display:flex;flex-direction:column;gap:8px}
.qbanners:empty{display:none}
.qbanner{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--a-line);border-radius:var(--a-r-lg);padding:10px 12px;background:var(--a-panel);color:var(--a-ink);font-size:var(--a-fs-sm)}
.qbanner>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.qbanner span{color:var(--a-muted)}
.qbanner .btn{flex:none}
.qbanner.rust{border-color:var(--a-rust);background:color-mix(in srgb,var(--a-rust) 12%,var(--a-panel))}
.qbanner.rust b{color:var(--a-rust)}
.qbanner.warn{border-color:var(--a-warn);background:color-mix(in srgb,var(--a-warn) 12%,var(--a-panel))}
.qbanner.warn b{color:var(--a-warn)}
.qbanner.acc{border-color:var(--a-accent);background:color-mix(in srgb,var(--a-accent) 10%,var(--a-panel))}
.qmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.qmain small{color:var(--a-muted);font-size:var(--a-fs-xs);overflow-wrap:anywhere}
.qmain small.qwhy{color:var(--a-warn)}
.qfs{border:0;margin:0;padding:0;min-width:0}
.qfs[disabled]{opacity:.7}
.qbad{color:var(--a-warn);min-height:0;font-size:var(--a-fs-xs)}
.qbad:empty{display:none}
.qlist{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:var(--a-fs-sm);color:var(--a-ink)}
.qlink{border:0;background:none;padding:0;font:inherit;color:var(--a-accent);text-decoration:underline;text-underline-offset:2px;cursor:pointer;text-align:left}
.qs-notyet{margin-top:4px}
.qs-notyet .acts .btn.pri{flex:none}
/* Send: one revision, one address, an optional note */
.qs-send{box-sizing:border-box;max-width:720px;display:flex;flex-direction:column;gap:8px;padding:16px 18px;border:1px solid var(--a-line);border-radius:var(--a-r-lg);background:var(--a-panel);color:var(--a-ink);font-size:var(--a-fs-sm);line-height:1.4}
.qs-send h4{margin:0;font:600 16px/1.2 var(--display)}
.qs-send p{margin:0;color:var(--a-muted)}
.qs-send .f2{margin:4px 0 0}
.qs-send .f small{color:var(--a-muted)}
.qs-last{margin:8px 0 0;font-size:var(--a-fs-sm);color:var(--a-muted)}
.qs-send .qs-last{margin:0}
.qs-last.ok{color:var(--a-ok)} .qs-last.warn{color:var(--a-warn)}
/* Sign: the terms are a pair of choices, and the consent is the signer's own sentence, so it wraps as one */
.qs-pick{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;border:0}
.qs-pick legend{width:100%;margin:0 0 4px;padding:0;color:var(--a-muted);font-size:var(--a-fs-xs)}
.qs-consent{align-items:flex-start;margin-top:10px;border-radius:var(--a-r-lg);line-height:1.4}
.qs-consent input,.qs-pick input{flex:none;margin:2px 0 0;accent-color:var(--a-accent)}

/* the sheet: the proposal's blocks in its order, fields in SteelHub One's style */
.qsheet{container-type:inline-size;box-sizing:border-box;display:flex;flex-direction:column;gap:18px;padding:18px clamp(12px,2vw,24px) 22px;
  border:1px solid var(--a-line);border-radius:var(--a-r-lg);background:var(--a-panel);color:var(--a-ink);font-size:var(--a-fs-sm);line-height:1.4}
.qs-title{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;padding-bottom:10px;border-bottom:2px solid var(--a-ink)}
.qs-co{display:flex;flex-direction:column;line-height:1.1}
.qs-co b{font:700 18px/1.1 var(--display);letter-spacing:.04em;text-transform:uppercase}
.qs-co span{font-size:var(--a-fs-xs);color:var(--a-muted)}
.qs-h{text-align:center}
.qs-h h2{margin:0;font:700 22px/1.15 var(--display)}
.qs-h p{margin:2px 0 0;font-style:italic;color:var(--a-muted);font-size:var(--a-fs-sm)}
.qs-state{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px}
.qs-state small{flex-basis:100%;text-align:right;color:var(--a-muted);font-size:var(--a-fs-xs)}
.qs-top{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.qs-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.qs-block{min-width:0;scroll-margin-top:84px}
.qs-block>h4{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:4px 8px;border:1px solid var(--a-line);border-radius:var(--a-r-sm);background:var(--a-panel-2);
  font:600 12px/1.3 var(--display);letter-spacing:.05em;text-transform:uppercase}
.qs-block>h4 small{text-transform:none;letter-spacing:0;font-weight:400;color:var(--a-muted)}
.qs-block>h4 .badge{text-transform:none;letter-spacing:.02em}
.qs-kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 10px;margin:0}
.qs-kv dt{color:var(--a-muted)}
.qs-kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.qs-kv .in,.qs-in{font-size:var(--a-fs-sm);padding:5px 8px}
.qs-kv textarea{resize:vertical}
.qs-fixed{margin:0;padding-left:16px;font-size:var(--a-fs-xs);color:var(--a-muted);display:flex;flex-direction:column;gap:2px}
.qs-hint{display:block;margin:6px 0 0;color:var(--a-muted);font-size:var(--a-fs-xs)}
.qs-pre{white-space:pre-wrap}
.qs-col .locked.pwarn{margin-top:8px}
.qs-colorrow{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.qs-color{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:var(--a-fs-xs);color:var(--a-muted)}
.qs-color .pcolor .in,.qs-cgrid .pcolor .in{flex:1;min-width:0;font-size:var(--a-fs-sm);padding:6px 8px}
.qs-color b{color:var(--a-ink);font-weight:500;font-size:var(--a-fs-sm)}
.qs-more{margin-top:12px}
.qs-more>summary{cursor:pointer;color:var(--a-accent);font-size:var(--a-fs-sm)}
.qs-more>summary .badge{margin-left:6px}
.qs-bpick{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 12px}
.qs-bpick .btn{flex:none}
.qs-bpick .btn.on{border-color:var(--a-accent-line);color:var(--a-accent-strong);background:var(--a-accent-soft);font-weight:var(--a-w-strong)}
.qs-cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.qs-more .pgrp{margin:0 0 12px}
.qs-scroll{overflow-x:auto;margin:0 -4px;padding:0 4px}
.qs-tbl td{vertical-align:middle}
.qs-tbl th{white-space:nowrap}
.qs-tbl th.c,.qs-tbl td.c{text-align:center}
.qs-tbl tfoot td{border-bottom:0;padding-top:10px;font-weight:600}
.qs-tbl .f{font-size:var(--a-fs-xs)}
.qs-letter{display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--a-line);border-radius:50%;font:600 12px/1 var(--mono)}
.qs-sm{display:block;color:var(--a-muted);font-size:var(--a-fs-xs)}
.qs-qty{width:78px}
.qs-qty .in,.qs-adj .in,.qs-bnote{padding:5px 8px;font-size:var(--a-fs-sm);font-variant-numeric:tabular-nums}
.qs-adj{min-width:92px}
td.r .qs-adj .in{text-align:right}
.qs-bnote{min-width:150px;resize:vertical}
.qs-ord{white-space:nowrap}
.qs-ord .btn{padding:5px 8px;min-width:32px}
.qs-ord .btn+.btn{margin-left:2px}
.qs-tbl tr.qs-off>td{background:color-mix(in srgb,var(--a-warn) 6%,transparent)}
.qs-tbl tr.qs-sub td{padding-top:0;font-size:var(--a-fs-sm);color:var(--a-muted);background:color-mix(in srgb,var(--a-warn) 6%,transparent)}
.qs-tbl tr.qs-sub .btn{margin-left:6px;padding:4px 10px}
.qs-tbl tr.qs-none>td:first-child{color:var(--a-muted)}
.qs-old{color:var(--a-faint)}
.qs-add{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-top:12px}
.qs-add .f{flex:1 1 260px}
.qs-cands{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.qs-cands li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);font-size:var(--a-fs-sm)}
.qs-pkg{margin:12px 0 0;font-size:var(--a-fs-sm);color:var(--a-muted)}
.qs-pkg b{color:var(--a-ink);font-weight:600}
.qs-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}
.qs-metrics>div,.qs-read{display:flex;flex-direction:column;gap:2px;min-width:0;padding:6px 8px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);font-size:var(--a-fs-xs);color:var(--a-muted)}
.qs-metrics b,.qs-read b{color:var(--a-ink);font-size:var(--a-fs);font-variant-numeric:tabular-nums}
/* the workbook's internal columns: on screen only, never printed */
.qs-tbl .qs-int{background:color-mix(in srgb,var(--a-accent) 6%,transparent)}
.qs-freight,.qs-permit{margin-top:12px;padding:10px;border:1px dashed var(--a-accent);border-radius:var(--a-r)}
.qs-inth{margin-bottom:8px;font:600 12px/1.3 var(--display);letter-spacing:.05em;text-transform:uppercase}
.qs-inth small{text-transform:none;letter-spacing:0;font-weight:400;color:var(--a-muted)}
.qs-adjgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;align-items:end}
.qs-less{color:var(--a-muted);font-size:var(--a-fs-xs);white-space:nowrap}
.qs-chips{white-space:nowrap}
.qs-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:28px;height:28px;margin:1px;padding:0 6px;
  border:1px solid var(--a-line);border-radius:var(--a-r-sm);font:600 12px/1 var(--mono);color:var(--a-muted);cursor:pointer;user-select:none}
.qs-chip input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.qs-chip:hover{border-color:var(--a-accent)}
.qs-chip.on{background:var(--a-accent);border-color:var(--a-accent);color:var(--a-on-accent)}
.qs-chip:has(input:focus-visible){outline:2px solid var(--a-accent);outline-offset:2px}
.qs-chip.off{opacity:.35;cursor:default}
.qs-chip.off input{cursor:default}
.qs-det{min-width:230px}
.qs-cfgrow{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px}
.qs-cfg{flex:1 1 140px;min-width:0}
.qs-cfg .in{padding:5px 8px;font-size:var(--a-fs-sm)}
.qs-who{flex:none;align-self:center;min-width:28px;font:600 11px/1 var(--mono);color:var(--a-muted)}
.qs-each{margin-top:6px}
.qs-each>summary{cursor:pointer;color:var(--a-accent);font-size:var(--a-fs-sm)}
.qs-each .qs-cfgrow{margin-top:6px}
.qs-fnote{display:block;margin-top:4px;color:var(--a-muted);font-size:var(--a-fs-xs)}
.qs-why{align-self:center;padding:0 2px 6px;color:var(--a-muted);font-size:var(--a-fs-sm)}
.qs-cover{width:18px;height:18px;margin:0;accent-color:var(--a-accent)}
.qs-opts .qs-hint{margin-top:8px}
.qs-close{display:flex;flex-direction:column;gap:14px}
.qs-sum{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 10px;border-top:1px solid var(--a-line);font-size:var(--a-fs)}
.qs-sum b{font-variant-numeric:tabular-nums;text-align:right}
.qs-sum small{color:var(--a-muted);font-weight:400}
.qs-total{border-top:2px solid var(--a-ink);font:700 16px/1.3 var(--display)}
.qs-terms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.qs-terms>div{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:var(--a-fs-xs);color:var(--a-muted)}
.qs-terms b{color:var(--a-ink);font-size:var(--a-fs);font-variant-numeric:tabular-nums}
.qs-closegrid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;align-items:start}
.qs-hold p{margin:0 0 8px;font-size:var(--a-fs-sm)}
.qs-ack{color:var(--a-muted)}
/* the approval lines: a box to tick for the printout (never saved) */
.qs-hold .qs-appr{display:flex;align-items:flex-start;gap:8px;margin:0 0 8px;font-size:var(--a-fs-sm)}
label.qs-appr{cursor:pointer}
.qs-apprbox{flex:none;width:16px;height:16px;margin:0;accent-color:var(--a-accent)}
.qs-box{flex:none;display:inline-grid;place-items:center;box-sizing:border-box;width:14px;height:14px;margin-top:1px;border:1px solid var(--a-ink);border-radius:2px;font:700 11px/1 var(--body)}
/* internal: the permit hold costs and the PERMIT HOLD table (never printed) */
.qs-pgrid{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:12px;align-items:start}
.qs-pcost{display:flex;flex-direction:column;gap:3px;padding:6px 8px;border:1px solid var(--a-line);border-radius:var(--a-r);background:var(--a-bg);font-size:var(--a-fs-sm)}
.qs-ptitle{font-weight:600}
.qs-prow{display:flex;justify-content:space-between;gap:8px;color:var(--a-muted)}
.qs-prow b{color:var(--a-ink);font-variant-numeric:tabular-nums}
.qs-ptot{margin-top:2px;padding-top:4px;border-top:1px solid var(--a-line);font-weight:600}
.qs-ptbl{width:auto;min-width:min(100%,420px)}
.qs-ptbl td b{font-variant-numeric:tabular-nums}
.qs-ptbl .qs-adj{max-width:140px;margin-left:auto}
.qs-det-fee{margin-top:2px}
.qs-dot{color:var(--a-faint)}
.qs-totals{display:flex;flex-direction:column;gap:6px}
.qs-tax{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;padding:8px;border:1px dashed var(--a-line);border-radius:var(--a-r)}
.qs-tax .pchk span{display:flex;flex-direction:column;gap:1px}
.qs-rate{width:110px}
.qs-sign{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;padding-top:10px;border-top:1px solid var(--a-line)}
.qs-sign p{margin:4px 0 0;color:var(--a-muted)}
.qs-line{display:flex;align-items:flex-end;min-height:30px;max-width:440px;margin-top:10px;border-bottom:1px solid var(--a-ink)}
.qs-line span{color:var(--a-muted);font-size:var(--a-fs-xs)}
.qs-esig{gap:10px}
.qs-esig b{font:italic 600 15px/1.2 var(--display);color:var(--a-ink);overflow-wrap:anywhere}
/* the e-signature certificate on a signed contract */
.qs-cert{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--a-line);border-radius:var(--a-r);font-size:var(--a-fs-xs)}
.qs-certh{font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:var(--a-fs-2xs);color:var(--a-muted)}
.qs-certg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}
.qs-certg div{display:flex;flex-direction:column;min-width:0}
.qs-certg span,.qs-certc span{color:var(--a-muted)}
.qs-certg b{font-weight:500;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.qs-certc{margin:0;line-height:1.4}
.qs-fine{margin:0;color:var(--a-muted);font-size:var(--a-fs-2xs);line-height:1.45}
.app.touch .qfs .in,.app.touch .qs-bpick .btn{min-height:var(--tap);font-size:var(--a-fs)}
.app.touch .qs-chip{min-width:44px;height:44px}
@media(pointer:coarse){.qfs .btn,.qbanner .btn,.qlink{min-height:44px}.qfs .in{min-height:44px}.qs-chip{min-width:44px;height:44px}}
@container (max-width:860px){
  .qs-top{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qs-top>.qs-col:last-child{grid-column:1/-1}
  .qs-colorrow{grid-template-columns:repeat(3,minmax(0,1fr))}
  .qs-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@container (max-width:600px){
  .qs-title{grid-template-columns:1fr}
  .qs-h,.qs-state small{text-align:left}
  .qs-state{justify-content:flex-start}
  .qs-top,.qs-closegrid,.qs-sign,.qs-pgrid{grid-template-columns:1fr}
  .qs-colorrow,.qs-metrics,.qs-terms{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Print: the customer's copy alone, light, on letter paper */
#qPrint{display:none}
@media print{
  html,body{background:#fff!important}
  @page{size:letter;margin:.4in}
  body>*:not(#qPrint){display:none!important}
  #qPrint{display:block!important;--a-bg:#ffffff;--a-panel:#ffffff;--a-panel-2:#eef2f6;--a-line:#c3ccd6;--a-ink:#111820;--a-muted:#44505d;--a-faint:#7d8a97;
    --a-accent:#1f5f8b;--a-ok:#1f7a4d;--a-warn:#9b6417;--a-rust:#b7410e;--a-on-accent:#ffffff;color:#111820;background:#fff;font:11px/1.35 var(--body)}
  #qPrint .qsheet{container-type:normal;border:0;border-radius:0;padding:0;gap:10px;font-size:11px}
  #qPrint .qs-top{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:12px}
  #qPrint .qs-colorrow{grid-template-columns:repeat(6,minmax(0,1fr))!important}
  #qPrint .qs-metrics{grid-template-columns:repeat(5,minmax(0,1fr))!important}
  #qPrint .qs-scroll{overflow:visible}
  #qPrint .tbl td,#qPrint .tbl th{padding:3px 5px}
  #qPrint .qs-block,#qPrint tr,#qPrint .qs-sign,#qPrint .qs-cert{break-inside:avoid}
  #qPrint .qs-specs,#qPrint .qs-opts,#qPrint .qs-close{break-inside:auto}
  #qPrint .qs-chip,#qPrint .pswatch,#qPrint .qs-block>h4{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  /* Workbook proposal density: one Letter page, with the building information in its own sheets. */
  #qPrint .qsheet{font-size:9px;line-height:1.2;gap:5px}
  #qPrint p{max-width:none}
  #qPrint .qs-title{gap:4px}#qPrint .qs-co b{font-size:17px}#qPrint .qs-co span{font-size:10px}
  #qPrint .qs-h h2{font-size:16px}#qPrint .qs-h p{font-size:8px;margin:2px 0}
  #qPrint .qs-block>h4{font-size:9px;padding:3px 5px;margin:0 0 4px}
  #qPrint .qs-kv{font-size:9px;gap:2px 5px}#qPrint .qs-top{gap:8px}
  #qPrint .qs-fixed{font-size:8px;line-height:1.2;margin:4px 0 0;padding-left:12px}
  #qPrint .qs-colorrow{gap:4px}#qPrint .qs-color{font-size:8px}#qPrint .qs-color b{font-size:9px}
  #qPrint .tbl{font-size:8px;table-layout:fixed}#qPrint .tbl th,#qPrint .tbl td{padding:2px 3px;overflow-wrap:anywhere}
  #qPrint .qs-pkg{font-size:8px;margin:4px 0 0}#qPrint .qs-metrics{margin-top:4px;gap:4px}
  #qPrint .qs-metrics>div{font-size:8px;padding:3px 4px}#qPrint .qs-metrics b{font-size:9px}
  #qPrint .qs-close{gap:5px}#qPrint .qs-sum{font-size:10px;padding:3px 5px}
  #qPrint .qs-terms{gap:4px}#qPrint .qs-terms>div{font-size:8px}#qPrint .qs-terms b{font-size:9px}
  #qPrint .qs-closegrid,#qPrint .qs-sign{gap:10px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}
  #qPrint .qs-hold p,#qPrint .qs-hold .qs-appr{font-size:8px;margin:0 0 4px;line-height:1.2}
  #qPrint .qs-sign{padding-top:4px;font-size:8px}#qPrint .qs-line{min-height:16px;margin-top:4px}
  #qPrint .qs-line span{font-size:8px}#qPrint .qs-esig b{font-size:10px}
  #qPrint .qs-cert{font-size:7px;gap:3px;padding:4px 5px}#qPrint .qs-certh{font-size:8px}
  #qPrint .qs-fine{font-size:7px;line-height:1.2}
  #qPrint .qs-title{grid-template-columns:1fr auto;padding-bottom:4px}
  #qPrint .qs-col{gap:5px}#qPrint .pswatch{width:12px;height:12px;border-radius:2px}
  #qPrint .qs-tbl th{white-space:normal;font-size:7px;line-height:1.2;letter-spacing:0}
  #qPrint .qs-specs .qs-tbl th:nth-child(1){width:3%}#qPrint .qs-specs .qs-tbl th:nth-child(2){width:4%}
  #qPrint .qs-specs .qs-tbl th:nth-child(3){width:14%}#qPrint .qs-specs .qs-tbl th:nth-child(4){width:10%}
  #qPrint .qs-specs .qs-tbl th:nth-child(5),#qPrint .qs-specs .qs-tbl th:nth-child(6){width:5%}
  #qPrint .qs-specs .qs-tbl th:nth-child(7){width:6%}#qPrint .qs-specs .qs-tbl th:nth-child(8){width:7%}
  #qPrint .qs-specs .qs-tbl th:nth-child(9){width:12%}#qPrint .qs-specs .qs-tbl th:nth-child(10){width:7%}
  #qPrint .qs-specs .qs-tbl th:nth-child(11){width:6%}#qPrint .qs-specs .qs-tbl th:nth-child(12){width:12%}
  #qPrint .qs-opts .qs-tbl th:first-child{width:34%}
  #qPrint .qs-opts .qs-tbl th:nth-child(2),#qPrint .qs-opts .qs-tbl th:nth-child(3),#qPrint .qs-opts .qs-tbl th:nth-child(4){width:7%}
  #qPrint .qs-det{min-width:0}#qPrint .qs-opts .qs-tbl th:last-child{width:16%}
  #qPrint .qs-letter{width:14px;height:14px;font-size:8px}#qPrint .qs-chip{min-width:14px;height:14px;font-size:8px;padding:0 2px}
  #qPrint .qs-certificate-page{break-before:page;font:11px/1.4 var(--body)}
  #qPrint .qs-certificate-page .qs-cert{font-size:11px;padding:12px;gap:8px}
  #qPrint .qs-certificate-page .qs-certh{font-size:12px}
}
/* ---- Ferro tour (C2C-060): the spotlight, Ferro's bubble and the Home invitation ---- */
.app{--a-tour-dim:rgba(6,10,16,.64)}
.app.light{--a-tour-dim:rgba(20,28,38,.42)}
.tour{position:absolute;inset:0;z-index:8;overflow:hidden;pointer-events:none}
.tour .tour-block{position:absolute;inset:0;pointer-events:auto}
.tour.dim .tour-block{background:var(--a-tour-dim)}
.tour-spot{position:absolute;border-radius:var(--a-r-lg);box-shadow:0 0 0 2px var(--a-accent),0 0 0 9999px var(--a-tour-dim);pointer-events:none}
.tour-bubble{position:absolute;left:0;top:0;pointer-events:auto;display:flex;flex-direction:column;gap:8px;background:var(--a-panel);color:var(--a-ink);border:1px solid var(--a-line);border-radius:var(--a-r-lg);padding:12px 14px;box-shadow:0 24px 60px -20px var(--a-pop-shadow)}
.tour-bubble::before{content:"";position:absolute;width:12px;height:12px;background:var(--a-panel);border:1px solid var(--a-line);transform:rotate(45deg);display:none}
.tour-bubble[data-side=left]::before{display:block;left:-7px;top:calc(var(--tour-notch) - 6px);border-top-color:transparent;border-right-color:transparent}
.tour-bubble[data-side=right]::before{display:block;right:-7px;top:calc(var(--tour-notch) - 6px);border-bottom-color:transparent;border-left-color:transparent}
.tour-bubble[data-side=top]::before{display:block;top:-7px;left:calc(var(--tour-notch) - 6px);border-bottom-color:transparent;border-right-color:transparent}
.tour-bubble[data-side=bottom]::before{display:block;bottom:-7px;left:calc(var(--tour-notch) - 6px);border-top-color:transparent;border-left-color:transparent}
.tour-hd{display:flex;align-items:center;gap:8px}
.tour-hd b{font-family:var(--display);font-size:var(--a-fs)}
.tour-orb{flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:inline-grid;place-items:center;background:var(--a-accent);color:var(--a-on-accent);font-size:var(--a-fs)}
.tour-ch{margin-left:auto;min-width:0}
.tour-ch select{max-width:180px;background:var(--a-panel-2);color:var(--a-ink);border:1px solid var(--a-line);border-radius:var(--a-r-sm);font:inherit;font-size:var(--a-fs-sm);padding:4px 6px}
.tour-hd .ib.on{color:var(--a-accent)}
.tour-prog{height:3px;border-radius:var(--a-r-xs);background:var(--a-panel-2);overflow:hidden}
.tour-prog i{display:block;height:100%;background:var(--a-accent)}
.tour-bubble h4{margin:2px 0 0;font-family:var(--display);font-size:var(--a-fs-md);font-weight:700;color:var(--a-ink)}
.tour-body{font-size:var(--a-fs);line-height:1.5;max-height:min(44vh,320px);overflow:auto}
.tour-note{display:block;margin-top:6px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.tour-ft{display:flex;align-items:center;gap:8px;margin-top:2px}
.tour-n{font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--a-faint)}
.tour-sp{flex:1}
.tour-ft .btn.pri{flex:0 0 auto;min-width:84px}
.tour-keys{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:5px 12px}
.tour-keys li{display:flex;align-items:center;gap:8px;font-size:var(--a-fs-sm);color:var(--a-muted)}
.tour kbd{min-width:22px;text-align:center;font-family:var(--mono);font-size:var(--a-fs-xs);color:var(--a-ink);background:var(--a-panel-2);border:1px solid var(--a-line);border-bottom-width:2px;border-radius:var(--a-r-xs);padding:1px 6px}
.tour-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tour-bubble :focus-visible{outline:2px solid var(--a-accent);outline-offset:2px}
.tour-invite{display:flex;align-items:center;gap:12px;max-width:760px;margin:0 0 16px;padding:12px 14px;background:var(--a-panel);border:1px solid var(--a-line);border-left:3px solid var(--a-accent);border-radius:var(--a-r-lg)}
.tour-inv-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:var(--a-fs);color:var(--a-ink)}
.tour-inv-t span{font-size:var(--a-fs-sm);color:var(--a-muted)}
.tour-invite .btn.pri{flex:0 0 auto}
.board .tour-again{margin:-8px 0 12px}
@media (max-width:720px){.tour-invite{flex-wrap:wrap}.tour-keys{grid-template-columns:1fr}}
.app.touch .tour-ft .btn,.app.touch .tour-hd .ib,.app.touch .tour-ch select,.app.touch .tour-invite .btn,.app.touch .tour-invite .ib,.app.touch .tour-again{min-height:var(--tap);min-width:var(--tap)}
@media (pointer:coarse){.tour-ft .btn,.tour-hd .ib,.tour-ch select,.tour-invite .btn,.tour-invite .ib,.tour-again{min-height:44px;min-width:44px}}
@media (prefers-reduced-motion:no-preference){.tour-spot{transition:left .2s,top .2s,width .2s,height .2s}.tour-bubble{transition:left .2s,top .2s}.tour-orb{animation:tour-orb 2.4s ease-in-out infinite}}
.tour.still .tour-spot,.tour.still .tour-bubble{transition:none}
@keyframes tour-orb{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--a-accent) 22%,transparent)}}

/* Phone shell: retain every permitted control without the desktop header's fixed widths. */
@media (max-width:600px){
  .app,.app.railmin,.mock-frame.ipad.portrait .app{grid-template-columns:60px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto}
  .app .topbar,.app[data-dstep]:not([data-dstep=""]) .topbar{display:grid;grid-template-columns:auto minmax(0,1fr) 44px;grid-template-areas:"brand identity search" "workspace workspace workspace" "tools tools tools";gap:4px 8px;padding:4px 8px}
  .app .topbar .brand{grid-area:brand;width:auto;font-size:var(--a-fs);letter-spacing:0}
  .app .topbar .pid{grid-area:identity;min-width:0}
  .app .topbar .pid .id{font-size:var(--a-fs-xs);overflow:hidden;text-overflow:ellipsis}
  .app .topbar .search,.app[data-dstep]:not([data-dstep=""]) .topbar .search{grid-area:search;display:flex;justify-content:center;width:44px;min-width:44px;min-height:44px;padding:0}
  .app .topbar .search .sq,.app .topbar .search .k{display:none}
  .app .topbar .wsSeg,.app[data-dstep]:not([data-dstep=""]) .topbar .wsSeg{grid-area:workspace;display:flex;min-width:0}
  .app .topbar .wsSeg button{flex:1;min-width:44px;min-height:44px}
  .app .topbar .right{grid-area:tools;min-width:0;flex-wrap:wrap;gap:4px}
  .app .topbar .right .ib{min-width:44px;min-height:44px;padding:6px 8px}
  .app[data-dstep]:not([data-dstep=""]) #ferroBtn{display:inline-flex}
  .app .topbar .avatar{width:36px;height:36px}
  .app .rail{min-width:0;min-height:0;overflow-x:hidden}
  .app .rail .st{flex:none;min-height:44px}
  .app .rail .st.open + .subs{display:none}
  .app .main{min-height:0}
  .app .status,.app[data-dstep]:not([data-dstep=""]) .status{flex-wrap:wrap;gap:4px 10px;padding:6px 8px;white-space:normal;overflow:auto;max-height:100px;line-height:1.3}
  .app .status>span{min-width:0;overflow-wrap:anywhere}
  .app .status .sp{display:none}
  .app .status .job{flex:1 1 100%}
}
/* Private Review clarification shares the single-column, token-based layout. */
.rvexplain>div{margin-bottom:14px}.rvexplain p{margin:5px 0 0;line-height:1.5}
.rvchat-history{list-style:none;padding:0;margin:16px 0}.rvchat-history li{padding:14px 0;border-top:1px solid var(--line)}
.rvchat-history p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;margin:6px 0}
.rvchat-history .user>b{color:var(--accent)}

/* One account entry: original tokens, brand, forms and buttons above. */
.auth-app{grid-template-columns:minmax(0,1fr);grid-template-rows:48px minmax(0,1fr);height:auto;min-height:100svh;user-select:auto}
.auth-app .topbar{display:flex;flex-wrap:nowrap;align-items:center;min-height:48px;padding:2px clamp(16px,3vw,40px)}
.auth-app .brand{color:var(--a-nav-ink);text-decoration:none}
.auth-app .topbar .right{grid-area:auto;flex:0 0 auto;flex-wrap:nowrap;max-width:none;margin-left:auto}.auth-app .topbar .btn{min-height:44px}
.auth-main{display:grid;align-content:start;justify-items:center;padding:clamp(24px,6vh,64px) 20px 40px;background:var(--a-bg)}
.auth-card{width:100%;max-width:460px;padding:24px;background:var(--a-panel);border:1px solid var(--a-line);border-radius:var(--a-r-lg);box-shadow:var(--a-shadow)}
.auth-card .phead{margin-bottom:16px}.auth-card h1{font:700 var(--a-fs-xl)/1.2 var(--display);color:var(--a-ink)}
.auth-card .eyebrow,.auth-card p{color:var(--a-muted)}.auth-card .eyebrow{font-size:var(--a-fs-xs)}
.auth-form label{display:block;font-weight:var(--a-w-strong);margin:16px 0}
.auth-form .in{display:block;margin-top:6px;min-height:44px}
.auth-submit{width:100%;min-height:44px;margin-top:8px}
.auth-card nav{display:flex;flex-wrap:wrap;gap:4px 20px;border-top:1px solid var(--a-line);padding-top:12px;margin-top:16px}
.auth-card nav a{display:inline-flex;align-items:center;min-height:44px;color:var(--a-accent)}
.auth-card #email-auth-status{min-height:24px;overflow-wrap:anywhere}
.auth-app :focus-visible{outline:3px solid var(--a-focus);outline-offset:3px}
@media(max-width:600px){.auth-main{padding:24px 12px}.auth-card{padding:20px}.auth-app .topbar{gap:8px;padding-inline:12px}.auth-app .brand{font-size:16px}}
