:root {
  --bg:#0a1020;--surface:#121a2d;--surface2:#161f36;--card:#1a2540;
  --panel-left:#10192e;--panel-mid:#0c1426;--panel-right:#13182b;--panel-bottom:#15182a;
  --border:#26334f;--border2:#32456a;
  --text:#f5f8fc;--sub:#c3d0e4;--dim:#8fa3c0;
  --mono:'IBM Plex Mono',monospace;--sans:'IBM Plex Sans',sans-serif;
  --amber:#f5ad4f;--amber2:#d8882d;--pass:#5fd88a;--fail:#f26b60;--warn:#f5c75a;--blue:#6cb4f0;--purple:#b88aff;
  --r:8px;--r2:5px;
}
/* Font variants — controlled by data-font attribute on html element */
:root {
  --mono:'Inconsolata','Courier New',monospace;
  --sans:'Inter','Helvetica Neue',sans-serif;
}
[data-font="ibm"] { --mono:'IBM Plex Mono',monospace; --sans:'IBM Plex Sans',sans-serif; }
[data-font="jetbrains"] { --mono:'JetBrains Mono',monospace; --sans:'Inter',sans-serif; }
[data-font="arial"] { --mono:'Arial',sans-serif; --sans:'Arial',sans-serif; }
[data-font="arialblack"] { --mono:'Arial Black',sans-serif; --sans:'Arial Black',sans-serif; }
[data-font="bookantiqua"] { --mono:'Book Antiqua',serif; --sans:'Book Antiqua',serif; }
[data-font="bookmanold"] { --mono:'Bookman Old Style',serif; --sans:'Bookman Old Style',serif; }
[data-font="calisto"] { --mono:'Calisto MT',serif; --sans:'Calisto MT',serif; }
[data-font="centurygothic"] { --mono:'Century Gothic',sans-serif; --sans:'Century Gothic',sans-serif; }
[data-font="centuryschoolbook"] { --mono:'Century Schoolbook',serif; --sans:'Century Schoolbook',serif; }
[data-font="comicsans"] { --mono:'Comic Sans MS',cursive; --sans:'Comic Sans MS',cursive; }
[data-font="abadi"] { --mono:'Abadi MT Condensed Light',sans-serif; --sans:'Abadi MT Condensed Light',sans-serif; }
[data-font="albertusxb"] { --mono:'Albertus Extra Bold',serif; --sans:'Albertus Extra Bold',serif; }
[data-font="albertusmed"] { --mono:'Albertus Medium',serif; --sans:'Albertus Medium',serif; }
[data-font="antiqueolive"] { --mono:'Antique Olive',sans-serif; --sans:'Antique Olive',sans-serif; }
[data-font="arialmt"] { --mono:'Arial MT',sans-serif; --sans:'Arial MT',sans-serif; }
[data-font="arialnarrow"] { --mono:'Arial Narrow',sans-serif; --sans:'Arial Narrow',sans-serif; }
[data-font="bazooka"] { --mono:BAZOOKA,'Comic Sans MS','Segoe Print',fantasy; --sans:BAZOOKA,'Comic Sans MS','Segoe Print',fantasy; }
[data-font="boulder"] { --mono:Boulder,sans-serif; --sans:Boulder,sans-serif; }
[data-font="calligrapher"] { --mono:Calligrapher,'Lucida Handwriting','Segoe Script','Brush Script MT',cursive; --sans:Calligrapher,'Lucida Handwriting','Segoe Script','Brush Script MT',cursive; }
[data-font="cgomega"] { --mono:'CG Omega',sans-serif; --sans:'CG Omega',sans-serif; }
[data-font="cgtimes"] { --mono:'CG Times',serif; --sans:'CG Times',serif; }
[data-font="charlesworth"] { --mono:CHARLESWORTH,'Monotype Corsiva','Segoe Script','Brush Script MT',cursive; --sans:CHARLESWORTH,'Monotype Corsiva','Segoe Script','Brush Script MT',cursive; }
[data-font="chaucer"] { --mono:Chaucer,'Segoe Script','Brush Script MT','Lucida Handwriting',cursive; --sans:Chaucer,'Segoe Script','Brush Script MT','Lucida Handwriting',cursive; }
[data-font="clarendoncond"] { --mono:'Clarendon Condensed',serif; --sans:'Clarendon Condensed',serif; }
[data-font="copperplatebold"] { --mono:'Copperplate Gothic Bold',serif; --sans:'Copperplate Gothic Bold',serif; }
[data-font="copperplatelight"] { --mono:'Copperplate Gothic Light',serif; --sans:'Copperplate Gothic Light',serif; }
[data-font="allegro"] { --mono:Allegro,'Segoe Print','Comic Sans MS',cursive; --sans:Allegro,'Segoe Print','Comic Sans MS',cursive; }
[data-font="amazonebt"] { --mono:'Amazone BT','Brush Script MT','Segoe Script',cursive; --sans:'Amazone BT','Brush Script MT','Segoe Script',cursive; }
[data-font="amertypebt"] { --mono:'AmerType Md BT',sans-serif; --sans:'AmerType Md BT',sans-serif; }
[data-font="arrusbt"] { --mono:'Arrus BT',serif; --sans:'Arrus BT',serif; }
[data-font="aurorabt"] { --mono:'AURORA CN BT',sans-serif; --sans:'AURORA CN BT',sans-serif; }
[data-font="avantgardebkbt"] { --mono:'AvantGarde Bk BT',sans-serif; --sans:'AvantGarde Bk BT',sans-serif; }
[data-font="avantgardemdbt"] { --mono:'AvantGarde Md BT',sans-serif; --sans:'AvantGarde Md BT',sans-serif; }
[data-font="bankgothicbt"] { --mono:'BANKGOTHIC MD BT',sans-serif; --sans:'BANKGOTHIC MD BT',sans-serif; }
[data-font="benguiatbt"] { --mono:'Benguiat Bk BT',serif; --sans:'Benguiat Bk BT',serif; }
[data-font="bernhardfashionbt"] { --mono:'BernhardFashion BT','Segoe Script','Brush Script MT',cursive; --sans:'BernhardFashion BT','Segoe Script','Brush Script MT',cursive; }
[data-font="bernhardmodbt"] { --mono:'BernhardMod BT',serif; --sans:'BernhardMod BT',serif; }
[data-font="binnerd"] { --mono:BinnerD,sans-serif; --sans:BinnerD,sans-serif; }
[data-font="bremenbt"] { --mono:'BREMEN BD BT',sans-serif; --sans:'BREMEN BD BT',sans-serif; }
[data-font="caslonopnbt"] { --mono:'CaslonOpnface BT',serif; --sans:'CaslonOpnface BT',serif; }
[data-font="charterbdbt"] { --mono:'Charter Bd BT',serif; --sans:'Charter Bd BT',serif; }
[data-font="charterbt"] { --mono:'Charter BT',serif; --sans:'Charter BT',serif; }
[data-font="chelthmbt"] { --mono:'ChelthmITC Bk BT',serif; --sans:'ChelthmITC Bk BT',serif; }
[data-font="cloisterblackbt"] { --mono:'CloisterBlack BT','Old English Text MT',fantasy; --sans:'CloisterBlack BT','Old English Text MT',fantasy; }
[data-font="copperplgothbt"] { --mono:'CopperplGoth Bd BT',serif; --sans:'CopperplGoth Bd BT',serif; }
[data-font="english111bt"] { --mono:'English 111 Vivace BT','Brush Script MT','Segoe Script',cursive; --sans:'English 111 Vivace BT','Brush Script MT','Segoe Script',cursive; }
[data-font="engraversgothicbt"] { --mono:'EngraversGothic BT',serif; --sans:'EngraversGothic BT',serif; }
[data-font="exotc350bt"] { --mono:'Exotc350 Bd BT',sans-serif; --sans:'Exotc350 Bd BT',sans-serif; }
[data-font="freefrm721bt"] { --mono:'Freefrm721 Blk BT',sans-serif; --sans:'Freefrm721 Blk BT',sans-serif; }
[data-font="frnkgothicbt"] { --mono:'FrnkGothITC Bk BT',sans-serif; --sans:'FrnkGothITC Bk BT',sans-serif; }
/* v1.0.344-ui1 — CE-64: most of the faces above aren't installed on the user's machine, so the
   browser falls back to the generic keyword and drops the weight/style/width the name implies.
   --active-font-weight/--active-font-style are set from JS (getUiFontStyleHints) so the fallback at
   least renders bold/black/light/italic the way the chosen font's name promises. */
body { font-weight: var(--active-font-weight, normal); font-style: var(--active-font-style, normal); }
/* font-alt is kept for backward compat */
.font-alt { --mono:'IBM Plex Mono',monospace; --sans:'IBM Plex Sans',sans-serif; }
/* Middle results panel — slightly larger mono for readability */
.panel-mid-data .check-val,
.panel-mid-data .pill,
.panel-mid-data .big,
.panel-mid-data .summary-cell .big,
.panel-mid-data .util-pct { font-size:14px!important; }
.panel-mid-data .check-limit,
.panel-mid-data .headroom { font-size:11px!important; }
.panel-mid-data .card-title { font-size:13px!important; letter-spacing:.06em!important; }
/* Carbon panel — larger values for concrete and steel figures */
.panel-right .gwp-stage-row .stage-value { font-size:13px!important; }
.panel-right .gwp-stage-row .stage-percent { font-size:13px!important; font-weight:800!important; }
.panel-right .card-title { font-size:13px!important; }
.panel-right .summary-cell .big { font-size:19px!important; }
/* Left panel — ensure consistent font */
.panel-left .inp-label { font-size:12.5px!important; }
.panel-left .inp { font-size:13px!important; }
/* Bottom panel tabs */
.panel-bottom .inp-label { font-size:12.5px!important; }
.panel-bottom .nhbc-side-table-card { font-size:11px!important; }
.light{
  --bg:#eef3fb;--surface:#fff;--surface2:#f3f7fd;--card:#fafcff;
  --panel-left:#e6edf8;--panel-mid:#f3f7fd;--panel-right:#eaf1fb;--panel-bottom:#e1e9f5;
  --border:#c8d5ec;--border2:#93a8c9;
  --text:#0d1528;--sub:#2d3f5f;--dim:#5a6e8a;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13px;height:100vh;overflow:hidden;display:flex;flex-direction:column;}
::-webkit-scrollbar{width:7px;height:7px;}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px;}::-webkit-scrollbar-thumb:hover{background:var(--amber2);}
header{background:var(--surface);border-bottom:1px solid var(--border);padding:0 16px;height:52px;display:flex;align-items:center;gap:10px;flex-shrink:0;}
.logo{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--amber);letter-spacing:.05em;white-space:nowrap;display:flex;flex-direction:column;justify-content:center;line-height:1.05;}
.logo-main{display:flex;align-items:baseline;gap:8px;}
/* Civil ET mark, top-left of the header; stands in for the workspace title in nodes mode */
.logo .civil-et-logo-img{height:36px!important;width:auto!important;flex:0 0 auto;display:block!important;border-radius:5px;align-self:center;object-fit:contain;}
html.civil-et-mode-nodes .logo .title-full{display:none;}
/* Header brand lockup — wordmark colours sampled from the logo, version as a quiet mono chip */
.logo .civil-et-brand-sub{display:inline-flex!important;align-items:baseline;gap:9px;opacity:1!important;}
.logo .civil-et-brand{font-family:'DM Sans','Inter',var(--sans);font-size:16px!important;font-weight:700;letter-spacing:.01em;line-height:1;white-space:nowrap;}
.logo .civil-et-brand .cet-b1{color:#35b4e8;font-weight:700;}
.logo .civil-et-brand .cet-b2{color:#f5871f;font-weight:700;}
.logo .civil-et-ver{font-family:var(--mono);font-size:10px!important;font-weight:500;letter-spacing:.08em;color:var(--dim);border:1px solid var(--border2);border-radius:999px;padding:1px 7px;line-height:1.45;white-space:nowrap;}
.light .logo .civil-et-brand .cet-b1,.theme-sand .logo .civil-et-brand .cet-b1,.theme-bw .logo .civil-et-brand .cet-b1{color:#1a8fc4;}
.theme-sand .logo .civil-et-brand .cet-b2,.theme-bw .logo .civil-et-brand .cet-b2{color:#d9700c;}
.logo .title-full{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--text);letter-spacing:0;margin-left:0;}
.logo .logo-subtitle{font-family:var(--mono);font-size:9px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--amber);line-height:1;margin-top:2px;}
.logo span{color:var(--sub);font-weight:400;}
.logo .title-full,.logo .logo-subtitle{color:var(--text);}
.logo .logo-subtitle{color:var(--amber);}
.badge{font-family:var(--mono);font-size:11px;padding:3px 9px;border-radius:3px;border:1px solid var(--border2);color:var(--sub);}
.hdr-stat{display:flex;align-items:center;gap:10px;padding:6px 13px;border-radius:var(--r2);border:1px solid;font-family:var(--mono);font-size:12px;}
.hdr-stat.pass{border-color:rgba(95,216,138,.5);color:var(--pass);background:rgba(95,216,138,.1);}
.hdr-stat.fail{border-color:rgba(242,107,96,.5);color:var(--fail);background:rgba(242,107,96,.1);}
.hdr-qval{font-size:12px;opacity:.9;color:var(--sub);}/* v1.0.18 header q pressure contrast */
.light .hdr-status.pass .hdr-pressure,.theme-bw .hdr-status.pass .hdr-pressure,.theme-sand .hdr-status.pass .hdr-pressure,.light .hdr-status.pass .hdr-pressure b,.theme-bw .hdr-status.pass .hdr-pressure b,.theme-sand .hdr-status.pass .hdr-pressure b{color:#0b7a34!important;opacity:1!important;font-weight:800!important;}
.light .hdr-status.fail .hdr-pressure,.theme-bw .hdr-status.fail .hdr-pressure,.theme-sand .hdr-status.fail .hdr-pressure,.light .hdr-status.fail .hdr-pressure b,.theme-bw .hdr-status.fail .hdr-pressure b,.theme-sand .hdr-status.fail .hdr-pressure b{color:#a32018!important;opacity:1!important;font-weight:800!important;}
header nav{margin-left:auto;display:flex;gap:6px;}
.nav-btn{background:none;border:none;color:var(--sub);font-family:var(--sans);font-size:13px;padding:7px 13px;border-radius:var(--r2);cursor:pointer;transition:all .15s;}
.nav-btn:hover{background:var(--border);color:var(--text);}
.nav-btn.report{border:1px solid var(--amber2);color:var(--amber);}
.nav-btn.report:hover{background:var(--amber);color:#000;}
/* File menu */
.file-menu-wrap{position:relative;}
.file-menu-btn{background:var(--card);border:1px solid var(--border2);color:var(--sub);padding:5px 11px;border-radius:var(--r2);cursor:pointer;font-size:12px;font-family:var(--sans);display:flex;align-items:center;gap:5px;}
.file-menu-btn:hover{background:var(--border);color:var(--text);}
.file-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);min-width:200px;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,0.45);overflow:hidden;}
.file-item{padding:9px 14px;font-size:12px;cursor:pointer;color:var(--sub);display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);}
.file-item:last-child{border-bottom:none;}
.file-item:hover{background:var(--border);color:var(--text);}
.file-item .fi-icon{font-size:13px;width:18px;text-align:center;}
.file-item.danger{color:var(--fail);}
.file-item.danger:hover{background:rgba(242,107,96,0.15);}
.file-sep{height:1px;background:var(--border);margin:0;}
/* Project meta modal */
.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
/* RIBA stage */
.riba-bar{display:flex;align-items:center;gap:6px;padding:4px 8px;background:rgba(108,180,240,0.08);border-radius:4px;border:1px solid rgba(108,180,240,0.3);}
.riba-label{font-size:10px;font-family:var(--mono);color:var(--blue);font-weight:700;letter-spacing:.06em;white-space:nowrap;}
.riba-select{background:var(--surface);border:1px solid var(--border2);color:var(--text);font-size:11px;cursor:pointer;outline:none;font-family:var(--mono);border-radius:3px;padding:2px 4px;}
/* Header foundation chips compact */
.hdr-fdns{display:flex;align-items:center;gap:4px;overflow-x:auto;max-width:320px;flex-shrink:0;}
.hdr-fdns::-webkit-scrollbar{height:3px;}
.hdr-fdn-chip{padding:3px 8px;border-radius:3px;cursor:pointer;font-size:10px;font-family:var(--mono);font-weight:700;border:1px solid var(--border);background:var(--card);color:var(--sub);white-space:nowrap;display:flex;align-items:center;gap:3px;}
.hdr-fdn-chip.active{background:var(--amber);color:#000;border-color:var(--amber);}
.hdr-fdn-chip .rm{opacity:0.6;cursor:pointer;font-size:9px;margin-left:2px;}
.hdr-fdn-chip .rm:hover{opacity:1;color:var(--fail);}
.hdr-fdn-add{padding:3px 7px;border-radius:3px;font-size:10px;font-family:var(--mono);background:none;border:1px dashed var(--amber2);color:var(--amber2);cursor:pointer;}
.hdr-fdn-add:hover{background:var(--amber);color:#000;border-color:var(--amber);}
.main{display:grid;grid-template-columns:var(--col-mid,1fr) 4px var(--col-viz,1fr);gap:0;flex:1;overflow:hidden;position:relative;}
.panel{overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;}
/* v1.0.18: Full-height left/right panels */
.app-body{display:flex;flex-direction:row;flex:1;overflow:hidden;min-height:0;}
.col-left-full{width:var(--col-left,300px);flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border);}
.col-centre-full{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;}
.col-right-full{width:var(--col-right,420px);flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;border-left:1px solid var(--border);}
.panel-left{background:#f1f4fa;color:#0d1528;--text:#0d1528;--sub:#3a4e6e;--dim:#5f748f;--card:#ffffff;--surface:#e8eef7;--border:#d8e2f0;--border2:#93a8c9;flex:1;overflow-y:auto;overflow-x:hidden;}
.light .panel-left{background:#0f1a2e;color:#f5f8fc;--text:#f5f8fc;--sub:#c3d0e4;--dim:#8fa3c0;--card:#1a2540;--surface:#121a2d;--border:#26334f;--border2:#32456a;}
.panel-right{background:var(--panel-right);flex:1;overflow-y:auto;overflow-x:hidden;}
.panel-mid-data{background:var(--panel-mid);border-right:1px solid var(--border);}
.panel-mid-viz{background:var(--panel-mid);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:8px;overflow-y:auto;gap:0;}
.panel-right{background:var(--panel-right);}
.resizer{position:absolute;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent;z-index:5;}
.resizer:hover,.resizer.dragging{background:var(--amber);}
.h-resizer{height:5px;cursor:row-resize;background:var(--border);flex-shrink:0;transition:background .15s;}
.h-resizer:hover{background:var(--amber);}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px;position:relative;}
.card.draggable{cursor:move;}
.card.dragging{opacity:0.4;}
.card.drop-target{border:2px dashed var(--amber);}
.card-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text);margin-bottom:10px;display:flex;align-items:center;gap:6px;user-select:none;}
.card-title::before{content:'';width:3px;height:14px;background:var(--amber);border-radius:2px;display:inline-block;}
.card-title .drag-handle{margin-left:auto;color:var(--dim);cursor:grab;font-size:14px;padding:0 4px;}
.card-title .drag-handle:hover{color:var(--amber);}
.card-toggle{margin-left:6px;width:34px;height:19px;background:var(--border2);border-radius:10px;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0;}
.card-toggle.on{background:var(--amber);}
.card-toggle::after{content:'';position:absolute;width:13px;height:13px;background:#fff;border-radius:50%;top:3px;left:3px;transition:transform .2s;}
.card-toggle.on::after{transform:translateX(15px);}
.card.off{opacity:0.55;}
.card.off>*:not(.card-title){display:none;}
.inp-row{display:flex;flex-direction:column;gap:4px;margin-bottom:9px;}
.inp-row:last-child{margin-bottom:0;}
.inp-label{font-size:12px;color:var(--text);display:flex;justify-content:space-between;align-items:center;font-weight:500;}
.inp-unit{color:var(--dim);font-family:var(--mono);font-size:11px;font-weight:400;}
.inp-hint{font-size:11px;color:var(--dim);margin-top:2px;line-height:1.35;}
.inp{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:7px 10px;color:var(--text);font-family:var(--mono);font-size:13px;outline:none;transition:border-color .15s;}
.inp:focus{border-color:var(--amber);}
.inp-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.inp-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;}
select.inp{cursor:pointer;}
.check-row{padding:10px 0;border-bottom:1px solid var(--border);}
.check-row:last-child{border-bottom:none;}
.check-top{display:flex;align-items:flex-start;gap:8px;}
.check-lbl{flex:1;}
.check-lbl-main{font-size:13px;color:var(--text);font-weight:600;}
.check-lbl-note{font-size:11px;color:var(--sub);margin-top:3px;line-height:1.5;}
.check-right{text-align:right;min-width:120px;}
.check-val{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text);}
.check-limit{font-size:10px;color:var(--sub);margin-top:2px;font-family:var(--mono);}
.check-pills{display:flex;gap:4px;justify-content:flex-end;margin-top:5px;align-items:center;}
.headroom{font-size:10px;color:var(--sub);font-family:var(--mono);}
.util-wrap{margin-top:6px;display:flex;align-items:center;gap:6px;}
.util-bar{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden;}
.util-fill{height:100%;border-radius:3px;transition:width .4s ease;}
.util-pct{font-size:10px;font-family:var(--mono);color:var(--sub);min-width:32px;text-align:right;}
.pill{font-size:11px;font-weight:700;font-family:var(--mono);padding:3px 9px;border-radius:3px;min-width:48px;text-align:center;}
.pill.pass{background:rgba(95,216,138,.2);color:var(--pass);border:1px solid rgba(95,216,138,.45);}
.pill.fail{background:rgba(242,107,96,.2);color:var(--fail);border:1px solid rgba(242,107,96,.45);}
.pill.warn{background:rgba(245,199,90,.2);color:var(--warn);border:1px solid rgba(245,199,90,.45);}
.pill.info{background:rgba(108,180,240,.2);color:var(--blue);border:1px solid rgba(108,180,240,.45);}
.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.summary-cell{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:12px;}
.summary-cell .big{font-family:var(--mono);font-size:17px;font-weight:700;line-height:1;color:var(--text);}
.summary-cell .lbl{font-size:12px;color:var(--sub);margin-top:5px;font-weight:500;}
.summary-cell .lbl .unit{color:var(--amber);font-family:var(--mono);font-weight:700;font-size:13px;}
.inp-unit{color:var(--dim);font-family:var(--mono);font-size:12px;font-weight:500;}
.seg-ctrl{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);overflow:hidden;}
.seg-btn{flex:1;padding:6px 0;text-align:center;font-size:12px;font-family:var(--mono);cursor:pointer;border:none;background:transparent;color:var(--sub);transition:all .15s;font-weight:600;}
.seg-btn.active{background:var(--amber);color:#000;}
.drop-zone{border:2px dashed var(--border2);border-radius:var(--r);padding:16px;text-align:center;cursor:pointer;transition:border-color .2s;}
.drop-zone:hover{border-color:var(--amber2);}
.drop-zone.has-file{border-color:var(--pass);border-style:solid;}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:100;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(5px);}
.modal{background:var(--surface);border:1px solid var(--border2);border-radius:12px;width:720px;max-height:82vh;display:flex;flex-direction:column;}
.modal-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;}
.modal-head h2{font-size:15px;font-weight:600;flex:1;color:var(--text);}
.modal-body{flex:1;overflow-y:auto;padding:20px;}
.modal-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;}
.report-text{font-family:var(--mono);font-size:11px;line-height:1.8;white-space:pre-wrap;color:var(--text);background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:16px;min-height:200px;}
.btn{padding:8px 16px;border-radius:var(--r2);border:none;cursor:pointer;font-family:var(--sans);font-size:13px;font-weight:500;transition:all .15s;}
.btn-primary{background:var(--amber);color:#000;font-weight:600;}
.btn-primary:hover{background:#e09030;}
.btn-ghost{background:var(--card);color:var(--text);border:1px solid var(--border2);}
.btn-ghost:hover{background:var(--border);}
.btn-sm{padding:5px 11px;font-size:11px;}
.toggle-row{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);}
.toggle-label{font-size:12px;color:var(--text);font-weight:600;}
.toggle-sub{font-size:11px;color:var(--sub);margin-top:2px;}
.toggle{width:40px;height:22px;background:var(--border2);border-radius:12px;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0;}
.toggle.on{background:var(--amber);}
.toggle::after{content:'';position:absolute;width:16px;height:16px;background:#fff;border-radius:50%;top:3px;left:3px;transition:transform .2s;}
.toggle.on::after{transform:translateX(18px);}
.info-box{background:rgba(108,180,240,.12);border:1px solid rgba(108,180,240,.35);border-radius:5px;padding:10px 12px;font-size:12px;color:var(--sub);line-height:1.6;margin-top:8px;}
.info-box b{color:var(--blue);}
.opt-tip{background:rgba(95,216,138,.12);border:1px solid rgba(95,216,138,.35);border-radius:5px;padding:10px 12px;font-size:12px;color:var(--sub);margin-top:8px;line-height:1.6;}
.opt-tip b{color:var(--pass);}
.opt-tip .opt-badge{display:inline-block;background:rgba(95,216,138,.3);color:var(--pass);font-family:var(--mono);font-size:10px;padding:2px 7px;border-radius:3px;margin-right:5px;font-weight:600;}
.da1-box{background:rgba(108,180,240,.08);border:1px solid rgba(108,180,240,.35);border-radius:5px;padding:10px 12px;font-size:12px;color:var(--sub);line-height:1.8;margin-top:8px;}
.da1-box .da1-hdr{font-family:var(--mono);font-size:11px;color:var(--blue);font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px;}
.da1-box .da1-row{display:flex;justify-content:space-between;padding:2px 0;}
.da1-box .da1-row span:last-child{font-family:var(--mono);color:var(--text);font-weight:500;}
.viz-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px;position:relative;display:flex;flex-direction:column;flex-shrink:0;}
.viz-card.minimised{padding:8px 12px;height:auto !important;min-height:0;flex:none;}
.viz-card.minimised .viz-hdr{margin-bottom:0;}
.viz-card .viz-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-shrink:0;}
.viz-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text);}
.viewer-3d{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);flex:1;min-height:0;overflow:hidden;position:relative;overscroll-behavior:contain;touch-action:none;contain:strict;}
.viewer-3d canvas{display:block;touch-action:none;width:100% !important;height:100% !important;}
/* ViewCube gizmo face hover */
.viewer-3d [title*="Snap"]:hover{filter:brightness(1.18) saturate(1.2);outline:2px solid rgba(255,255,255,.5);}
/* B/W theme: make ViewCube faces readable */
.theme-bw .viewer-3d [title*="Snap"]{filter:grayscale(1) contrast(1.2);}

.viz-card.fullscreen{position:fixed;inset:0;z-index:200;border-radius:0;border:none;background:var(--bg);padding:20px;margin:0;overflow:hidden;display:flex;flex-direction:column;height:auto !important;}
.viz-card.fullscreen .viewer-3d{flex:1;height:auto;min-height:0;}
.viz-card.fullscreen svg{max-height:calc(100vh - 110px);}
.viz-resize{height:6px;cursor:row-resize;background:transparent;margin:-3px 0;position:relative;z-index:4;flex-shrink:0;}
.viz-resize:hover{background:var(--amber);opacity:0.5;}
.viz-resize.dragging{background:var(--amber);}
.viz-body{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;}
.viz-body > svg{flex:1;min-height:0;}
.move-handle{position:absolute;z-index:12;background:var(--move-icon-bg,var(--amber));color:var(--move-icon-fg,#000);border:2px solid var(--move-icon-border,#000);border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:move;font-size:12px;font-weight:700;box-shadow:0 2px 6px rgba(0,0,0,0.5);transform:translate(-50%,-50%);user-select:none;transition:transform .1s,background .15s;pointer-events:auto;}
.move-handle:hover{filter:brightness(1.12);transform:translate(-50%,-50%) scale(1.18);}
.move-handle.tree{background:#5fd88a;}
.move-handle.tree:hover{background:#8ceeae;}
.move-handle.active{background:#f26b60;color:#fff;}
.move-handle-tag{position:absolute;z-index:11;background:rgba(10,16,32,0.85);color:var(--amber);padding:1px 5px;border-radius:3px;font-size:9px;font-family:var(--mono);font-weight:700;transform:translate(-50%,calc(-50% - 18px));pointer-events:none;white-space:nowrap;border:1px solid rgba(245,173,79,0.4);}
.move-handle-tag.tree{color:var(--pass);border-color:rgba(95,216,138,0.4);}
.move-label{position:absolute;z-index:11;background:rgba(0,0,0,0.75);color:var(--amber);padding:2px 6px;border-radius:3px;font-size:10px;font-family:var(--mono);font-weight:600;transform:translate(-50%,0);pointer-events:none;white-space:nowrap;}
.fs-btn{background:var(--card);border:1px solid var(--border2);color:var(--sub);padding:3px 8px;border-radius:3px;cursor:pointer;font-size:11px;font-family:var(--mono);}
.fs-btn:hover{background:var(--amber);color:#000;border-color:var(--amber);}
.alt-size-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;}
.alt-size-cell{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:10px;cursor:pointer;transition:all .15s;}
.alt-size-cell:hover{border-color:var(--amber);transform:translateY(-1px);}
.alt-size-cell.current{border-color:var(--amber);background:rgba(245,173,79,.1);}
.alt-size-cell .as-dim{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--text);}
.alt-size-cell .as-props{font-size:10px;color:var(--sub);margin-top:4px;line-height:1.5;}
.alt-size-cell .as-co2{font-family:var(--mono);color:var(--amber);font-weight:600;}
.panel-bottom{background:var(--panel-bottom);border-top:1px solid var(--border);}
/* AI chat floating panel */
.chat-fab{position:fixed;bottom:18px;right:18px;z-index:80;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#f0a040,#f26b60);color:#fff;border:none;cursor:grab;font-size:22px;box-shadow:0 4px 16px rgba(0,0,0,0.4);transition:transform .12s ease, box-shadow .12s ease;touch-action:none;user-select:none;will-change:right,bottom,transform;}
.chat-fab.dragging{cursor:grabbing;transform:scale(1.08);box-shadow:0 8px 24px rgba(0,0,0,0.55);}
.chat-fab:hover{transform:scale(1.06);}
.chat-panel{position:fixed;bottom:84px;right:18px;z-index:80;width:380px;height:460px;background:var(--surface);border:1px solid var(--border2);border-radius:10px;display:flex;flex-direction:column;box-shadow:0 8px 36px rgba(0,0,0,0.55);}
.chat-hdr{padding:10px 14px;border-bottom:1px solid var(--border);display:flex;gap:8px;align-items:center;}
.chat-body{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px;}
.chat-msg{padding:8px 12px;border-radius:10px;font-size:12px;line-height:1.55;max-width:88%;white-space:pre-wrap;}
.chat-msg.u{align-self:flex-end;background:var(--amber);color:#000;}
.chat-msg.a{align-self:flex-start;background:var(--card);color:var(--text);border:1px solid var(--border);}
.chat-input{border-top:1px solid var(--border);padding:10px;display:flex;gap:6px;}
.chat-input input{flex:1;background:var(--card);border:1px solid var(--border);border-radius:5px;padding:7px 10px;color:var(--text);outline:none;font-size:12px;}
.chat-input input:focus{border-color:var(--amber);}
/* Foundation selector */
.fdn-bar{display:flex;gap:4px;padding:6px 10px;background:var(--surface);border-bottom:1px solid var(--border);align-items:center;overflow-x:auto;}
.fdn-chip{padding:4px 10px;border-radius:4px;cursor:pointer;font-size:11px;font-family:var(--mono);border:1px solid var(--border);background:var(--card);color:var(--sub);display:flex;align-items:center;gap:4px;white-space:nowrap;}
.fdn-chip.active{background:var(--amber);color:#000;border-color:var(--amber);font-weight:700;}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
input[type=number]{-moz-appearance:textfield;appearance:textfield;}
/* v1.0.18 — light-mode readable numeric inputs for plan live-edit */
.plan-live-input{
  width:66px;
  background:rgba(8,15,31,0.72);
  border:1px solid rgba(173,216,255,0.45);
  border-radius:4px;
  color:#f8fafc;
  -webkit-text-fill-color:#f8fafc;
  caret-color:var(--amber);
  font-family:var(--mono);
  font-size:11px;
  padding:3px 5px;
  text-align:right;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.04);
}
.light .plan-live-input{
  background:rgba(255,255,255,0.88);
  color:#0f172a;
  -webkit-text-fill-color:#0f172a;
  border:1px solid rgba(15,23,42,0.34);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.75),0 1px 2px rgba(15,23,42,0.08);
}
.light .plan-live-input::selection{background:#2563eb;color:#ffffff;-webkit-text-fill-color:#ffffff;}
.light .plan-live-unit{color:#334155!important;}
.light .plan-edit-menu{
  background:rgba(241,245,249,0.56)!important;
  border-color:rgba(51,65,85,0.18)!important;
  box-shadow:0 18px 46px rgba(15,23,42,.22), inset 0 1px 0 rgba(255,255,255,.62)!important;
}

/* v1.0.18 — compact 3D load arrow filter to prevent label crowding */
.load-filter-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px;padding:6px 8px;background:rgba(10,16,32,0.42);border:1px solid var(--border);border-radius:5px;font-family:var(--mono);font-size:10px;color:var(--sub);}
.load-filter-group{display:flex;align-items:center;gap:3px;}
.load-filter-name{font-weight:800;margin-right:2px;letter-spacing:.05em;}
.load-filter-chip{border:1px solid var(--border2);background:rgba(255,255,255,0.04);color:var(--sub);border-radius:3px;padding:2px 7px;min-width:24px;text-align:center;cursor:pointer;font-family:var(--mono);font-size:10px;font-weight:700;line-height:1.4;}
.load-filter-chip.on{background:var(--amber);border-color:var(--amber);color:#000;}
.load-filter-chip:hover{border-color:var(--amber);color:var(--text);}
.load-filter-chip.on:hover{color:#000;}
.load-filter-action{background:var(--card);border:1px solid var(--border2);color:var(--sub);border-radius:3px;padding:2px 7px;cursor:pointer;font-size:10px;font-family:var(--mono);}
.load-filter-action:hover{background:var(--border);color:var(--text);}
.light .load-filter-strip{background:rgba(255,255,255,0.62);}




/* v1.0.4.29 — PC4 input/section/quantity refinements */
.pc-load-stack{display:flex;flex-direction:column;gap:12px;}
.pc-load-group{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:10px 11px;overflow:hidden;}
.pc-load-heading{font-family:var(--mono);font-size:15px!important;line-height:1.22;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--amber);margin:0 0 9px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.pc-load-heading .pc-load-axis{font-size:11px;font-weight:800;color:var(--sub);letter-spacing:.04em;text-transform:none;}
.pc-load-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.pc-load-grid-four{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.pc-load-subnote{font-size:10.5px;color:var(--dim);line-height:1.35;margin-top:6px;}
.pc-edge-note{font-family:var(--mono);font-size:10.5px;color:var(--sub);line-height:1.45;margin-top:6px;padding:7px 8px;border:1px solid var(--border);border-radius:6px;background:rgba(108,180,240,.06);}
@media (max-width:1280px){.pc-load-grid,.pc-load-grid-four{grid-template-columns:1fr;}.pc-load-heading{font-size:14px!important;}}

/* v1.0.4.29 — PC4 readability and quantity refinements */
.panel-left .pc-load-heading,
.panel-left .pc-input-section-title,
.panel-left [style*="color:'var(--amber)"],
.panel-left [style*="color: 'var(--amber)'"],
.panel-left [style*="color:var(--amber)"][style*="font-size:10"],
.panel-left [style*="color: var(--amber)"][style*="font-size:10"]{
  font-size:12.5px!important;
  line-height:1.28!important;
  font-weight:900!important;
  letter-spacing:.065em!important;
}
.pc-factor-help{
  margin-top:10px;
  padding:9px 10px;
  border:1px solid rgba(108,180,240,.35);
  border-radius:7px;
  background:rgba(108,180,240,.08);
  color:var(--sub);
  font-size:11.5px;
  line-height:1.48;
}
.pc-factor-help b{color:var(--text);font-family:var(--mono);}
.pc-symbol-note{
  margin:7px 0 9px;
  padding:8px 9px;
  border:1px solid var(--border);
  border-radius:6px;
  background:var(--surface);
  color:var(--sub);
  font-size:11px;
  line-height:1.45;
}
.pc-symbol-note b{color:var(--amber);font-family:var(--mono);}
.qty-multiplier-card{
  margin-bottom:10px;
  padding:9px 10px;
  border:1px solid rgba(245,173,79,.35);
  border-radius:7px;
  background:rgba(245,173,79,.08);
}
.qty-multiplier-card .inp-row{margin-bottom:0;}

/* v1.0.4.29 — PC4 pile quantity/carbon, input hierarchy and nested split chart */
.panel-left .pc-load-heading{font-size:16px!important;letter-spacing:.075em!important;}
.panel-left .pc-input-subtitle,
.panel-left .pc-reinf-subtitle,
.panel-left .pc-allowable-heading{
  display:block;
  font-size:13.5px!important;
  line-height:1.25!important;
  color:var(--amber)!important;
  font-family:var(--mono)!important;
  font-weight:950!important;
  letter-spacing:.085em!important;
  text-transform:uppercase!important;
  margin:12px 0 7px!important;
}
.pc-factor-grid{display:grid;grid-template-columns:1fr;gap:6px;margin-top:8px;}
.pc-factor-row{display:grid;grid-template-columns:82px minmax(0,1fr);gap:8px;padding:7px 8px;border:1px solid var(--border);border-radius:6px;background:rgba(255,255,255,.035);font-size:11.3px;line-height:1.38;}
.pc-factor-row b{font-family:var(--mono);color:var(--amber);font-size:12px;}
.pc-factor-row span{color:var(--sub);}
.pc-split-card{position:relative;overflow:visible;}
.pc-split-chart-wrap{position:relative;display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;}
.pc-split-legend{display:grid;gap:6px;min-width:180px;flex:1 1 180px;}
.pc-split-row{display:grid;grid-template-columns:12px 58px 1fr auto;gap:6px;align-items:center;padding:5px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:10.5px;cursor:pointer;}
.pc-split-row:hover,.pc-split-row.active{border-color:var(--amber);box-shadow:0 0 15px rgba(245,173,79,.22);}
.pc-split-chip{width:11px;height:11px;border-radius:3px;display:inline-block;}
.pc-split-value{font-family:var(--mono);font-weight:850;color:var(--text);white-space:nowrap;}
.pc-split-hover{position:static;width:min(100%,430px);margin:8px auto 0;z-index:1;background:rgba(10,16,32,.64);border:1px solid rgba(148,163,184,.38);border-radius:8px;padding:9px 10px;box-shadow:0 10px 28px rgba(0,0,0,.26);pointer-events:auto;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.pc-split-hover-title{font-family:var(--mono);font-size:11px;font-weight:900;color:var(--amber);letter-spacing:.07em;margin-bottom:6px;text-transform:uppercase;}
.pc-split-mini-row{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;line-height:1.45;color:var(--sub);border-top:1px solid var(--border);padding-top:4px;margin-top:4px;}
.pc-split-mini-row b{font-family:var(--mono);color:var(--text);}
.theme-bw .pc-split-hover{background:rgba(255,255,255,.82)!important;color:#111!important;box-shadow:0 8px 22px rgba(0,0,0,.16)!important;}
.pc-split-click-note{width:100%;text-align:center;color:var(--dim);font-size:10.5px;font-family:var(--mono);padding:4px 0 0;}

/* v1.0.4.20 — B/W contrast for 3D load filter + reinforcement display */
.theme-bw .load-filter-strip{background:#ffffff!important;border-color:#111!important;color:#111!important;box-shadow:none!important;}
.theme-bw .load-filter-name{color:#111!important;}
.theme-bw .load-filter-chip{background:#ffffff!important;color:#111!important;border-color:#111!important;}
.theme-bw .load-filter-chip.on{background:#111!important;color:#fff!important;border-color:#111!important;}
.theme-bw .load-filter-action{background:#ffffff!important;color:#111!important;border-color:#111!important;}
.theme-bw .load-filter-action:hover{background:#111!important;color:#fff!important;border-color:#111!important;}
.theme-bw .plan-edit-menu button:hover{background:#111!important;color:#fff!important;border-color:#111!important;}
.theme-bw .plan-edit-menu .plan-live-input{background:#fff!important;color:#111!important;-webkit-text-fill-color:#111!important;border-color:#111!important;}

/* v1.0.18 — linked hover glow for GWP donut slices and legend rows */
.gwp-donut path{transition:filter .18s ease, opacity .18s ease, transform .18s ease;transform-box:fill-box;transform-origin:center;cursor:pointer;}
.gwp-donut path.gwp-linked-active{opacity:1;transform:scale(1.018);}
.gwp-donut path.gwp-linked-muted{opacity:.42;}
.gwp-stage-row{border:1px solid transparent;border-radius:7px;padding:4px 6px;transition:background .18s ease, box-shadow .18s ease, border-color .18s ease, transform .18s ease, opacity .18s ease;cursor:pointer;}
.gwp-stage-row.gwp-linked-active{transform:translateX(2px);}
.gwp-stage-row.gwp-linked-muted{opacity:.58;}
.stage-delete-btn{margin-left:8px;background:rgba(242,107,96,.12);border:1px solid rgba(242,107,96,.35);color:var(--fail);border-radius:4px;padding:2px 6px;cursor:pointer;font-size:10px;font-family:var(--mono);}
.stage-delete-btn:hover{background:var(--fail);color:#fff;border-color:var(--fail);}


/* v1.0.18 — responsive laptop layout + left-spanning bottom tab */
:root{
  --hdr-gap:8px;
  --kpi-lg:17px;
  --kpi-md:13px;
  --kpi-sm:10px;
}
.app-header{
  height:auto;
  min-height:52px;
  padding:6px 10px;
  gap:var(--hdr-gap);
  flex-wrap:nowrap;
  align-content:center;
}
.app-header .logo{min-width:230px;flex:0 1 auto;}
.app-header .logo .title-full{font-size:13px;}
.hdr-status{flex:0 0 auto;}
.hdr-centre{flex:1 1 180px!important;min-width:0!important;overflow:visible!important;padding:0 4px!important;}
.hdr-centre .riba-bar{max-width:100%;}
.hdr-centre .riba-select{max-width:180px;min-width:86px;text-overflow:ellipsis;}
/* CE-51: the header actions (A-/A+, File, theme, font, Report) belong hard against the right edge.
   This used to be margin-left:0, and every rule that put them back on the right was conditional —
   the @media (max-width:2100px) block and the per-mode rules for nodes/column/baseplate/beam/slab/
   ifc. Foundation mode above 2100px matched none of them, so on a wide screen the whole cluster
   sat mid-header with a dead gap to its right. .hdr-actions is the last header child in every
   mode, so an auto left margin is the right rule unconditionally. */
.hdr-actions{margin-left:auto!important;min-width:0;}
.hdr-carbon{min-width:190px;}
.hdr-carbon-total b{white-space:nowrap;}
.hdr-carbon-breakdown{white-space:nowrap;}
.hdr-fdns{max-width:clamp(150px,18vw,300px);}
.lc-shell{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;}
.lc-top{flex:1;display:flex;min-width:0;min-height:0;overflow:hidden;}
.lc-top .col-left-full{height:auto;min-height:0;}
.lc-top .col-centre-full{height:auto;min-height:0;}
.bottom-tab-left-span{height:var(--bottom-height,360px);overflow:hidden;display:flex;flex-direction:column;flex-shrink:0;min-height:0;}
.bottom-tab-left-span .panel-bottom{height:100%;min-height:0;}
.panel-left{min-height:0;}
.panel-right .card{padding:11px;}
.panel-right .card-title{font-size:11px;line-height:1.25;margin-bottom:8px;}
.panel-right .summary-cell .big{font-size:var(--kpi-lg)!important;}
.panel-right div[style*="font-size:17"]{font-size:var(--kpi-lg)!important;}
.panel-right div[style*="font-size:16"]{font-size:var(--kpi-md)!important;}
.panel-right div[style*="font-size:13"]{font-size:var(--kpi-sm)!important;}
.panel-right svg[viewBox]{max-width:100%;}
.panel-right .gwp-donut{
  width:clamp(205px,52%,260px)!important;
  height:auto!important;
  min-width:205px;
  flex:0 0 auto;
}
.panel-right div:has(> .gwp-donut){gap:8px!important;align-items:center!important;}
.panel-right .gwp-stage-row{
  display:grid!important;
  grid-template-columns:12px 56px minmax(68px,1fr) 54px 38px;
  gap:4px!important;
  align-items:center!important;
  font-size:10px!important;
  padding:3px 5px!important;
}
.panel-right .gwp-stage-row span{min-width:0!important;}
.panel-right .gwp-stage-row span:nth-child(3){overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.15;}
.panel-right .gwp-stage-row span:nth-child(4),
.panel-right .gwp-stage-row span:nth-child(5){white-space:nowrap;}
.panel-right .gwp-stage-row + .gwp-stage-row{margin-top:2px;}
.panel-bottom div[style*="font-size:24"]{font-size:clamp(18px,1.35vw,24px)!important;}
.panel-bottom div[style*="font-size:17"]{font-size:clamp(14px,1.1vw,17px)!important;}
.panel-bottom div[style*="padding:12px 14px"]{padding:10px!important;}

@media (max-width:1600px){
  :root{--kpi-lg:15px;--kpi-md:12px;--kpi-sm:9px;}
  .app-header{min-height:60px;}
  .app-header .logo{min-width:215px;}
  .app-header .logo .title-full{font-size:12px!important;}
  .hdr-status{font-size:10px!important;padding:3px 8px!important;}
  .hdr-status span{font-size:10px!important;}
  .hdr-fdn-chip{padding:3px 6px;font-size:9px;}
  .hdr-fdn-add{padding:3px 6px;font-size:9px;}
  .hdr-centre .riba-select{max-width:145px;font-size:10px;}
  .riba-bar{padding:3px 6px;gap:4px;}
  .hdr-actions{gap:4px!important;}
  .file-menu-btn,.nav-btn{font-size:11px;padding:5px 8px;}
  .hdr-carbon{min-width:160px;}
  .hdr-carbon-breakdown{gap:8px!important;}
  .hdr-carbon-breakdown span{font-size:9px!important;}
  .panel{padding:10px;}
  .card{padding:10px;}
  .panel-right .gwp-donut{width:215px!important;min-width:190px;}
}

@media (max-width:1450px){
  .app-header{flex-wrap:wrap;min-height:88px;padding:6px 8px;row-gap:5px;}
  .app-header .logo{order:1;flex:1 1 310px;min-width:260px;}
  .hdr-status{order:2;}
  .hdr-actions{order:3;margin-left:auto!important;}
  .hdr-fdns{order:4;flex:0 1 310px;max-width:310px;}
  .hdr-centre{order:5;flex:1 1 320px!important;}
  .hdr-centre .riba-select{max-width:220px;}
  .hdr-carbon-breakdown{display:none!important;}
  .hdr-carbon{min-width:115px;}
  .col-left-full{width:min(var(--col-left,300px),250px)!important;}
  .col-right-full{width:min(var(--col-right,440px),390px)!important;}
  .main{grid-template-columns:minmax(320px,var(--col-mid,1fr)) 4px minmax(380px,var(--col-viz,1fr));}
  .panel-right .gwp-donut{width:205px!important;min-width:185px;}
  .panel-right .gwp-stage-row{grid-template-columns:12px 52px minmax(54px,1fr) 48px 36px;font-size:9px!important;}
}

@media (max-width:1250px){
  .app-header{min-height:104px;}
  .hdr-actions{width:100%;justify-content:flex-end;}
  .hdr-carbon{margin-right:auto;}
  .col-right-full{width:min(var(--col-right,440px),330px)!important;}
  .col-left-full{width:min(var(--col-left,300px),220px)!important;}
  .main{grid-template-columns:minmax(280px,var(--col-mid,1fr)) 4px minmax(340px,var(--col-viz,1fr));}
  .panel-right .gwp-donut{width:190px!important;min-width:175px;}
  .panel-right div:has(> .gwp-donut){flex-wrap:wrap!important;}
  .panel-right .gwp-stage-row{grid-template-columns:12px 52px minmax(76px,1fr) 52px 38px;}
}



/* v1.0.18 — narrow-panel text wrapping + NHBC/laptop responsive refinements */
.panel-right,
.panel-right .card,
.panel-right .card *{min-width:0;max-width:100%;}
.panel-right .card-title{white-space:normal!important;overflow-wrap:anywhere;word-break:normal;}
.panel-right .card div,.panel-right .card span,.panel-right .card label,.panel-right .card p{overflow-wrap:anywhere;word-break:normal;}
.panel-right .inp-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;}
.panel-right .inp{min-width:0!important;width:100%!important;}
.panel-right .drop-zone{overflow-wrap:anywhere;}
.panel-right div:has(> .gwp-donut){flex-wrap:wrap!important;justify-content:center!important;}
.panel-right .gwp-donut{width:clamp(190px,58%,255px)!important;min-width:185px!important;}
.panel-right .gwp-stage-row{grid-template-columns:12px 58px minmax(0,1fr)!important;row-gap:3px!important;column-gap:6px!important;}
.panel-right .gwp-stage-row span:nth-child(1){grid-column:1;grid-row:1;}
.panel-right .gwp-stage-row span:nth-child(2){grid-column:2;grid-row:1;}
.panel-right .gwp-stage-row span:nth-child(3){grid-column:3;grid-row:1;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;line-height:1.2!important;}
.panel-right .gwp-stage-row span:nth-child(4){grid-column:2 / 3;grid-row:2;white-space:normal!important;text-align:left!important;line-height:1.15!important;}
.panel-right .gwp-stage-row span:nth-child(5){grid-column:3 / 4;grid-row:2;white-space:normal!important;justify-self:end;}
.panel-right .card div[style*="justify-content:space-between"]{flex-wrap:wrap!important;gap:6px!important;}
.nhbc-layout{display:grid;grid-template-columns:minmax(220px,0.85fr) minmax(480px,2.0fr) minmax(220px,0.9fr) minmax(220px,0.9fr) minmax(180px,0.65fr);gap:14px;align-items:start;}
.nhbc-side-table-card{margin-top:10px;background:var(--card);border:1px solid var(--border);border-radius:5px;padding:9px 10px;}
.nhbc-side-table-card table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:9px;}
.nhbc-side-table-card th,.nhbc-side-table-card td{padding:4px 5px!important;line-height:1.25;overflow-wrap:normal;}
.nhbc-depth-card{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-top:8px;margin-bottom:8px;}
.nhbc-depth-head{display:grid!important;grid-template-columns:minmax(95px,0.95fr) minmax(135px,1.25fr);gap:10px;align-items:end;}
.nhbc-depth-left,.nhbc-depth-right{min-width:0;}
.nhbc-depth-right{text-align:right;}
.nhbc-depth-note{white-space:normal!important;overflow-wrap:anywhere;line-height:1.35;}
.nhbc-mid-tables{display:none!important;}
.plan-edit-menu{width:min(520px,calc(100vw - 24px))!important;min-width:min(430px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;max-height:calc(100vh - 24px)!important;overflow:auto!important;}
.plan-live-row{grid-template-columns:92px 28px minmax(110px,1fr) 28px 96px!important;}
@media (max-width:1500px){.nhbc-layout{grid-template-columns:minmax(220px,0.95fr) minmax(440px,1.8fr) minmax(280px,1.15fr) minmax(180px,0.7fr);gap:12px;}.nhbc-depth-head{grid-template-columns:1fr;gap:6px;}.nhbc-depth-right{text-align:left;}}
@media (max-width:1250px){.nhbc-layout{grid-template-columns:minmax(220px,0.9fr) minmax(420px,1.4fr) minmax(260px,1fr);}.nhbc-layout > div:nth-child(4){grid-column:1 / -1;}}
@media (max-width:900px){.nhbc-layout{grid-template-columns:1fr;}}
@media (max-width:560px){.plan-live-row{grid-template-columns:78px 26px minmax(70px,1fr) 26px 76px!important;gap:4px!important;padding:5px 6px!important;}.plan-live-input{width:58px!important;font-size:10px!important;}.plan-edit-menu{padding:3px!important;}}
@media (max-width:420px){.plan-live-row{grid-template-columns:1fr 28px 1fr 28px!important;}.plan-live-row > div:first-child{grid-column:1 / -1;}.plan-live-row > div:last-child{grid-column:1 / -1;justify-content:flex-start!important;}}

/* v1.0.18 — NHBC Table 4b / Table 5 wide-span correction
   Tables remain below the NHBC link but use the spare horizontal runway to the right.
   This keeps the depth/level cards on the right unchanged while making the NHBC tables readable. */
.nhbc-side-table-card{
  position:relative;
  z-index:2;
  width:clamp(560px, calc(100vw - 900px), 900px);
  max-width:calc(100vw - 600px);
}
.nhbc-side-table-card table{
  table-layout:auto!important;
  font-size:10px!important;
}
.nhbc-side-table-card th,
.nhbc-side-table-card td{
  padding:6px 8px!important;
  line-height:1.28!important;
  white-space:normal!important;
  overflow-wrap:break-word!important;
}
.nhbc-side-table-card th:first-child,
.nhbc-side-table-card td:first-child{min-width:130px;}
.nhbc-side-table-card th:nth-child(2),
.nhbc-side-table-card td:nth-child(2),
.nhbc-side-table-card th:nth-child(3),
.nhbc-side-table-card td:nth-child(3){min-width:115px;}
@media (min-width:1501px){
  .nhbc-side-table-card{width:min(920px, calc(100vw - 610px));}
}
@media (max-width:1500px){
  .nhbc-side-table-card{width:min(760px, calc(100vw - 560px));max-width:calc(100vw - 520px);}
}
@media (max-width:1250px){
  .nhbc-side-table-card{width:100%;max-width:100%;}
}



/* v1.0.18 — readability, side-by-side NHBC tables, collapsible right carbon drawer */
body{font-size:14px;}
.panel-left{--amber:#a85100;--amber2:#864100;}
.light .panel-left{--amber:#ffc45c;--amber2:#f0a13a;}
.inp-label,.toggle-label{font-size:12.5px!important;}
.inp-hint,.toggle-sub,.check-limit,.headroom,.util-pct,.alt-size-cell .as-props{font-size:11px!important;line-height:1.45!important;}
.card-title,.viz-title{font-size:12.5px!important;line-height:1.25!important;}
.app-body [style*="font-size:9"]{font-size:10.5px!important;}
.app-body [style*="font-size:10"]{font-size:11px!important;}
.app-body [style*="font-size:24"]{font-size:22px!important;}
.app-body [style*="font-size:28"]{font-size:25px!important;}
.app-body [style*="font-size:32"]{font-size:27px!important;}
.panel-right .summary-cell .big{font-size:clamp(15px,1.15vw,17px)!important;}
.panel-bottom div[style*="font-size:24"]{font-size:clamp(20px,1.25vw,22px)!important;}
.panel-bottom div[style*="font-size:17"]{font-size:clamp(15px,1vw,16px)!important;}
.nhbc-side-tables{
  display:grid;
  grid-template-columns:minmax(310px,1fr) minmax(310px,1fr);
  gap:10px;
  align-items:start;
  margin-top:10px;
  width:min(920px, calc(100vw - 610px));
  max-width:calc(100vw - 585px);
  position:relative;
  z-index:1;
}
.nhbc-side-tables .nhbc-side-table-card{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin-top:0!important;
  position:static!important;
  overflow:hidden;
}
.nhbc-side-tables .nhbc-side-table-card table{width:100%!important;table-layout:fixed!important;font-size:11px!important;}
.nhbc-side-tables .nhbc-side-table-card th,
.nhbc-side-tables .nhbc-side-table-card td{padding:6px 8px!important;line-height:1.35!important;white-space:normal!important;overflow-wrap:break-word!important;}
.nhbc-side-tables .nhbc-side-table-card th:first-child,
.nhbc-side-tables .nhbc-side-table-card td:first-child{min-width:0!important;width:42%;}
.nhbc-side-tables .nhbc-side-table-card th:nth-child(2),
.nhbc-side-tables .nhbc-side-table-card td:nth-child(2),
.nhbc-side-tables .nhbc-side-table-card th:nth-child(3),
.nhbc-side-tables .nhbc-side-table-card td:nth-child(3){min-width:0!important;width:29%;}
@media (max-width:1450px){
  .nhbc-side-tables{width:min(780px, calc(100vw - 560px));max-width:calc(100vw - 540px);grid-template-columns:minmax(280px,1fr) minmax(280px,1fr);}
}
@media (max-width:1250px){
  .nhbc-side-tables{width:100%;max-width:100%;grid-template-columns:1fr;}
}
.right-drawer-toolbar{
  height:34px;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:5px 9px;
  background:var(--surface);
  border-bottom:1px solid var(--border);
  font-family:var(--mono);
  font-size:11px;
}
.right-drawer-toolbar .right-title{color:var(--amber);font-weight:800;letter-spacing:.05em;white-space:nowrap;}
.right-drawer-toolbar button{
  background:var(--card);
  border:1px solid var(--border2);
  color:var(--sub);
  border-radius:4px;
  padding:3px 7px;
  cursor:pointer;
  font-family:var(--mono);
  font-size:10.5px;
}
.right-drawer-toolbar button:hover{background:var(--amber);border-color:var(--amber);color:#000;}
.col-right-full.right-drawer-pinned{min-width:0;}
.col-right-full.right-drawer-pinned .panel-right{flex:1;min-height:0;}
.right-drawer-float{
  position:fixed;
  top:70px;
  right:10px;
  bottom:10px;
  width:min(430px,calc(100vw - 24px));
  z-index:95;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:var(--panel-right);
  border:1px solid var(--border2);
  border-radius:10px;
  box-shadow:0 18px 48px rgba(0,0,0,.55);
}
.right-drawer-float .panel-right{flex:1;min-height:0;}
.right-tab-rail{
  position:fixed;
  top:50%;
  right:0;
  transform:translateY(-50%);
  z-index:90;
  writing-mode:vertical-rl;
  text-orientation:mixed;
  padding:12px 7px;
  background:var(--amber);
  color:#000;
  border:1px solid var(--amber2);
  border-right:none;
  border-radius:8px 0 0 8px;
  font-family:var(--mono);
  font-weight:700;
  font-size:11px;
  cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.right-tab-rail:hover{filter:brightness(1.08);}
@media (max-width:1450px){.right-drawer-float{top:96px;width:min(390px,calc(100vw - 24px));}}


/* v1.0.20 — NHBC tables are a real grid item, not an overflow overlay */
.nhbc-layout > div:nth-child(1){grid-column:1;grid-row:1;}
.nhbc-layout > .nhbc-side-tables{grid-column:1 / 3;grid-row:2;width:100%!important;max-width:100%!important;}
.nhbc-layout > div:nth-child(3){grid-column:2;grid-row:1;}
.nhbc-layout > div:nth-child(4){grid-column:3;grid-row:1 / span 2;}
.nhbc-layout > div:nth-child(5){grid-column:4;grid-row:1 / span 2;}
.nhbc-layout > div:nth-child(6){grid-column:5;grid-row:1 / span 2;}
.nhbc-layout > .nhbc-side-tables .nhbc-side-table-card{box-shadow:none;}
@media (max-width:1250px){
  .nhbc-layout > div:nth-child(1),
  .nhbc-layout > .nhbc-side-tables,
  .nhbc-layout > div:nth-child(3),
  .nhbc-layout > div:nth-child(4),
  .nhbc-layout > div:nth-child(5){grid-column:auto!important;grid-row:auto!important;}
}
/* v1.0.18 — bottom drawer, yellow toggles restored, and quantity overlays */
.toggle.on,.card-toggle.on{background:#f5ad4f!important;}
.panel-left .toggle.on,.panel-left .card-toggle.on{background:#f5ad4f!important;}
.panel-left .seg-btn.active{background:#f5ad4f!important;color:#000!important;}
.bottom-drawer-toolbar{
  height:34px;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:5px 9px;
  background:var(--surface);
  border-bottom:1px solid var(--border);
  font-family:var(--mono);
  font-size:11px;
}
.bottom-drawer-toolbar .bottom-title{color:var(--amber);font-weight:700;letter-spacing:.05em;white-space:nowrap;}
.bottom-drawer-toolbar button{
  background:var(--card);
  border:1px solid var(--border2);
  color:var(--sub);
  border-radius:4px;
  padding:3px 7px;
  cursor:pointer;
  font-family:var(--mono);
  font-size:10.5px;
}
.bottom-drawer-toolbar button:hover{background:var(--amber);border-color:var(--amber);color:#000;}
.bottom-tab-left-span .bottom-drawer-toolbar + .panel-bottom{height:auto!important;flex:1!important;min-height:0!important;}
.bottom-tab-rail{
  position:fixed;
  left:50%;
  bottom:0;
  transform:translateX(-50%);
  z-index:90;
  padding:7px 14px;
  background:var(--amber);
  color:#000;
  border:1px solid var(--amber2);
  border-bottom:none;
  border-radius:8px 8px 0 0;
  font-family:var(--mono);
  font-weight:800;
  font-size:11px;
  cursor:pointer;
  box-shadow:0 -8px 24px rgba(0,0,0,.35);
}
.bottom-tab-rail:hover{filter:brightness(1.08);}
.quantity-overlay{
  position:absolute;
  left:10px;
  top:10px;
  z-index:18;
  min-width:170px;
  max-width:min(260px,calc(100% - 20px));
  padding:8px 10px;
  border:1px solid rgba(108,180,240,.38);
  border-radius:7px;
  background:rgba(10,16,32,.80);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 8px 22px rgba(0,0,0,.32);
  pointer-events:none;
  color:#f5f8fc;
  font-family:var(--mono);
}
.light .quantity-overlay{background:rgba(255,255,255,.86);color:#0d1528;border-color:rgba(15,23,42,.22);}
.quantity-overlay .qo-title{font-size:10.5px;font-weight:900;color:var(--amber);letter-spacing:.06em;margin-bottom:5px;text-transform:uppercase;}
.quantity-overlay .qo-row{display:flex;justify-content:space-between;gap:12px;align-items:baseline;font-size:10.5px;line-height:1.45;border-top:1px solid rgba(143,163,192,.18);padding-top:3px;margin-top:3px;}
.quantity-overlay .qo-row span:first-child{color:var(--sub);white-space:normal;}
.quantity-overlay .qo-row b{color:var(--text);font-weight:900;white-space:nowrap;}
.quantity-overlay .qo-row .qo-warn{color:var(--warn);}
.quantity-overlay .qo-row .qo-pass{color:var(--pass);}
@media (max-width:1300px){.quantity-overlay{font-size:10px;min-width:155px;padding:7px 8px}.quantity-overlay .qo-row{font-size:10px;}}

/* v1.0.18 — bottom pin/floating drawer, material CO2 breakdown */
.bottom-drawer-float{
  position:fixed;
  left:8px;
  right:calc(var(--right-drawer-width, 440px) + 18px);
  bottom:10px;
  height:min(390px,48vh);
  min-height:245px;
  z-index:96;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:var(--panel-bottom);
  border:1px solid var(--border2);
  border-radius:10px;
  box-shadow:0 -18px 48px rgba(0,0,0,.58);
}
.bottom-drawer-float .panel-bottom{flex:1!important;min-height:0!important;height:auto!important;}
@media (max-width:1450px){.bottom-drawer-float{right:12px;height:min(370px,50vh);}}
.material-breakdown-card .material-breakdown-row{
  padding:8px 9px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:6px;
}
.material-breakdown-card .mbr-top{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap;}
.material-breakdown-card .mbr-name{font-size:12px;font-weight:800;color:var(--text);}
.material-breakdown-card .mbr-co2{font-family:var(--mono);font-size:12px;font-weight:800;color:var(--text);}
.material-breakdown-card .mbr-bar{height:8px;background:rgba(143,163,192,.18);border-radius:999px;overflow:hidden;margin:7px 0 5px;}
.material-breakdown-card .mbr-bar span{display:block;height:100%;border-radius:999px;}
.material-breakdown-card .mbr-meta{font-size:10.8px;color:var(--sub);line-height:1.35;}
.material-breakdown-card .mbr-meta b{color:var(--text);font-family:var(--mono);}
.viz-card input[type=checkbox]{accent-color:var(--amber);}


/* v1.0.18 — full-width bottom drawer, GWP polish, PF label protection */
.app-body{min-height:0;}
.bottom-tab-full-span{height:var(--bottom-height,360px);width:100%;overflow:hidden;display:flex;flex-direction:column;flex:0 0 auto;min-height:0;background:var(--panel-bottom);border-top:1px solid var(--border);} 
.bottom-tab-full-span .panel-bottom{height:auto!important;flex:1!important;min-height:0!important;}
.bottom-tab-full-span .bottom-drawer-toolbar{border-top:1px solid rgba(245,173,79,.18);} 
.bottom-drawer-float{left:8px!important;right:8px!important;width:auto!important;max-width:none!important;}
.bottom-drawer-toolbar .bottom-title{overflow:hidden;text-overflow:ellipsis;}
.bottom-tab-rail{left:50%;right:auto;}
.panel-right .card-title{display:flex;align-items:flex-start;gap:6px;}
.panel-right .card-title > span[style*="margin-left:auto"]{white-space:nowrap!important;flex:0 0 auto!important;overflow:visible!important;text-overflow:clip!important;max-width:none!important;word-break:normal!important;}
.viz-title select.inp{min-width:64px!important;max-width:120px!important;white-space:nowrap!important;}
.move-handle-tag{max-width:86px;overflow:visible!important;white-space:nowrap!important;}
.gwp-view-toggle{margin:8px 0 8px;max-width:260px;}
.gwp-view-toggle .seg-btn{font-size:10.5px!important;padding:5px 0!important;}
.gwp-factor-grid{gap:7px!important;padding:7px 8px!important;margin-bottom:8px!important;}
.gwp-factor-grid .inp-label{font-size:10px!important;line-height:1.18!important;display:block!important;}
.gwp-factor-grid .inp-unit{font-size:9px!important;display:block;margin-top:1px;color:var(--dim)!important;}
.gwp-factor-grid .inp{padding:5px 8px!important;font-size:11px!important;}
.gwp-factor-grid div[style*="Typical UK"]{font-size:9px!important;line-height:1.2!important;}
.panel-right .gwp-donut{width:clamp(185px,54%,238px)!important;min-width:178px!important;}
.panel-right .gwp-stage-row{font-size:10px!important;grid-template-columns:12px 64px minmax(0,1fr)!important;}
.panel-right .gwp-stage-row span:nth-child(3){font-size:9.5px!important;line-height:1.1!important;}
.panel-right .gwp-stage-row span:nth-child(4){font-size:10px!important;}
.panel-right .gwp-stage-row span:nth-child(5){font-size:10px!important;}
.viewer-3d{isolation:isolate;}
@media (max-width:1450px){.bottom-tab-full-span{height:min(var(--bottom-height,360px),44vh);} .panel-right .gwp-donut{width:185px!important;min-width:168px!important;}}


/* v1.0.18 — right-panel PF badge protection + active-foundation live-drag hardening */
.panel-right .card-title{
  flex-wrap:wrap!important;
  align-items:flex-start!important;
  gap:6px!important;
  min-width:0!important;
  line-height:1.16!important;
}
.panel-right .right-pf-badge,
.panel-right .card-title > span[style*="margin-left: auto"],
.panel-right .card-title > span[style*="margin-left:auto"]{
  flex:0 0 auto!important;
  min-width:38px!important;
  max-width:140px!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow:visible!important;
  text-overflow:clip!important;
  text-align:right!important;
  line-height:1.1!important;
}
.panel-right .right-drag-handle{
  margin-left:4px!important;
  flex:0 0 auto!important;
  white-space:nowrap!important;
}
.panel-right .card-title .right-pf-badge + .right-drag-handle{
  margin-left:2px!important;
}
@media (max-width:1500px){
  .panel-right .right-pf-badge{min-width:34px!important;font-size:10px!important;}
}



/* v1.0.18 — compact plan live-edit drawer
   Keeps live controls usable without blanketing the plan view. */
.plan-edit-menu{
  width:min(380px, calc(100vw - 24px))!important;
  min-width:min(320px, calc(100vw - 24px))!important;
  max-width:380px!important;
  max-height:min(390px, calc(100vh - 24px))!important;
  overflow:auto!important;
  overscroll-behavior:contain;
}
.plan-live-row{
  grid-template-columns:72px 24px minmax(80px,1fr) 24px 78px!important;
  gap:4px!important;
  padding:4px 7px!important;
}
.plan-live-input{
  width:58px!important;
  font-size:10.5px!important;
  padding:3px 5px!important;
}
.plan-live-unit{font-size:9px!important;}
@media (max-width:720px){
  .plan-edit-menu{
    width:min(340px, calc(100vw - 18px))!important;
    min-width:min(300px, calc(100vw - 18px))!important;
    max-width:340px!important;
  }
  .plan-live-row{
    grid-template-columns:66px 23px minmax(70px,1fr) 23px 70px!important;
  }
}


/* v1.0.18 — accessible theme options + GWP legend-above-pie layout */
:root{--theme-accent:#f5ad4f;--move-icon-bg:var(--amber);--move-icon-fg:#000;--move-icon-border:#000;}
.light{
  --bg:#f4f7fb;--surface:#ffffff;--surface2:#f8fafc;--card:#ffffff;
  --panel-left:#0f1a2e;--panel-mid:#f8fafc;--panel-right:#f8fafc;--panel-bottom:#f3f6fb;
  --border:#c8d5ec;--border2:#94a3b8;
  --text:#111827;--sub:#334155;--dim:#64748b;
  --amber:#2563eb;--amber2:#1d4ed8;--blue:#1d4ed8;--warn:#a16207;
  --move-icon-bg:#2563eb;--move-icon-fg:#fff;--move-icon-border:#1d4ed8;
}
.light header,.light .app-header{background:#ffffff;border-color:#cbd5e1;}
.light .panel-left{background:#0f1a2e;color:#f5f8fc;--text:#f5f8fc;--sub:#c3d0e4;--dim:#8fa3c0;--card:#1a2540;--surface:#121a2d;--border:#26334f;--border2:#32456a;--amber:#60a5fa;--amber2:#3b82f6;--move-icon-bg:#60a5fa;--move-icon-fg:#071426;--move-icon-border:#93c5fd;}
.light .seg-btn.active,.light .hdr-fdn-chip.active,.light .btn-primary{background:#2563eb!important;color:#fff!important;border-color:#1d4ed8!important;}
.light .toggle.on,.light .card-toggle.on,.light .panel-left .toggle.on,.light .panel-left .card-toggle.on{background:#3b82f6!important;}
.light .unit,.light .inp-unit{color:#2563eb!important;}
.light .panel-left .unit,.light .panel-left .inp-unit{color:#60a5fa!important;}
.light .nav-btn.report{border-color:#2563eb;color:#1d4ed8;background:#eff6ff;}
.light .nav-btn.report:hover{background:#2563eb;color:#fff;}

.theme-bw{
  --bg:#ffffff;--surface:#ffffff;--surface2:#f7f7f7;--card:#ffffff;
  --panel-left:#ffffff;--panel-mid:#ffffff;--panel-right:#ffffff;--panel-bottom:#ffffff;
  --border:#d4d4d4;--border2:#111827;
  --text:#111111;--sub:#343434;--dim:#666666;
  --amber:#111111;--amber2:#000000;--blue:#111111;--purple:#111111;--warn:#a16207;
  --move-icon-bg:#111111;--move-icon-fg:#ffffff;--move-icon-border:#111111;
}
.theme-bw body,.theme-bw header,.theme-bw .app-header{background:#ffffff!important;color:#111111!important;}
.theme-bw .panel-left{background:#ffffff!important;color:#111!important;--text:#111;--sub:#343434;--dim:#666;--card:#fff;--surface:#f8f8f8;--border:#d4d4d4;--border2:#111;--amber:#111;--amber2:#000;}
.theme-bw .viewer-3d,.theme-bw .viz-card .viewer-3d{background:#fdfdfd!important;}
.theme-bw .seg-btn.active,.theme-bw .hdr-fdn-chip.active,.theme-bw .btn-primary{background:#111!important;color:#fff!important;border-color:#000!important;}
.theme-bw .toggle.on,.theme-bw .card-toggle.on{background:#111!important;}
/* B/W theme: toggle OFF → mid-grey so it's clearly different from ON (black) */
.theme-bw .toggle:not(.on),.theme-bw .card-toggle:not(.on){background:#999999!important;}
/* B/W: all hover states that use --amber (#111) as background need white text */
.theme-bw .fs-btn:hover{background:#111!important;border-color:#111!important;color:#fff!important;}
.theme-bw .nav-btn.report:hover{background:#111!important;color:#fff!important;}
.theme-bw .hdr-fdn-add:hover{background:#111!important;border-color:#111!important;color:#fff!important;}
.theme-bw .right-drawer-toolbar button:hover{background:#111!important;border-color:#111!important;color:#fff!important;}
.theme-bw .bottom-drawer-toolbar button:hover{background:#111!important;border-color:#111!important;color:#fff!important;}
.theme-bw .seg-btn:hover:not(.active){color:#111!important;background:rgba(17,17,17,0.08)!important;}
/* B/W: active tree tab (amber bg = black in B/W) — needs white text */
.theme-bw div[style*="var(--amber)"]{color:#111!important;}
.theme-bw [style*="background:var(--amber)"]{color:#fff!important;}
.theme-bw [style*="background: var(--amber)"]{color:#fff!important;}
/* Tree tabs T1/T2 — when active they use amber bg which becomes black in B/W */
.theme-bw .nhbc-tree-tab-active{color:#fff!important;background:#111!important;border-color:#111!important;}
.theme-bw .nhbc-tree-tab-active *{color:#fff!important;}
/* B/W: active hdr-fdn-chip */
.theme-bw .hdr-fdn-chip.active{background:#111!important;color:#fff!important;border-color:#111!important;}
/* B/W: all amber-coloured inline styles for active states override to white */
.theme-bw *[style*="color: #000"]:not(input):not(textarea){color:#fff!important;}
/* B/W: inputs stay dark-on-white */
.theme-bw input,.theme-bw textarea,.theme-bw select{color:#111!important;background:#fff!important;border-color:#666!important;}
/* B/W: seg-btn active */
.theme-bw .seg-btn.active{color:#fff!important;background:#111!important;}
/* B/W: hover over any button */
.theme-bw button:hover:not(.toggle):not(.card-toggle){color:#fff!important;background:#111!important;border-color:#111!important;}
.theme-bw .move-handle{background:#111!important;color:#fff!important;border-color:#111!important;}
.theme-bw .move-handle:hover{background:#333!important;color:#fff!important;}
.theme-bw .move-handle-tag{background:#111!important;color:#fff!important;border-color:#111!important;}
.theme-bw .move-label{background:#111!important;color:#fff!important;}
.theme-bw .plan-live-input{background:#fff!important;color:#111!important;-webkit-text-fill-color:#111!important;border-color:#111!important;}
.theme-bw .pill.pass{background:#dff5e7!important;color:#14803c!important;border-color:#72c892!important;}
.theme-bw .pill.fail{background:#fde7e5!important;color:#b23428!important;border-color:#e49790!important;}
.theme-bw .card,.theme-bw .summary-cell,.theme-bw .inp{box-shadow:none!important;}
.theme-bw .logo .title-full{color:#111!important;}

.theme-sand{
  --bg:#f6f1e7;--surface:#fffaf0;--surface2:#fbf3e3;--card:#fffaf0;
  --panel-left:#162033;--panel-mid:#fffaf0;--panel-right:#fffaf0;--panel-bottom:#fbf3e3;
  --border:#dec9a6;--border2:#9f7a44;
  --text:#1f2937;--sub:#475569;--dim:#7c6f64;
  --amber:#9a4f00;--amber2:#733b00;--blue:#1e40af;--warn:#b45309;
  --move-icon-bg:#9a4f00;--move-icon-fg:#fff;--move-icon-border:#733b00;
}
.theme-sand header,.theme-sand .app-header{background:#fffaf0;border-color:#dec9a6;}
.theme-sand .panel-left{background:#162033;color:#f8fafc;--text:#f8fafc;--sub:#cbd5e1;--dim:#94a3b8;--card:#1c2940;--surface:#111a2c;--border:#2d3c58;--border2:#506483;--amber:#f5ad4f;--amber2:#d8882d;}
.theme-sand .seg-btn.active,.theme-sand .hdr-fdn-chip.active,.theme-sand .btn-primary{background:#9a4f00!important;color:#fff!important;border-color:#733b00!important;}
.theme-sand .toggle.on,.theme-sand .card-toggle.on,.theme-sand .panel-left .toggle.on,.theme-sand .panel-left .card-toggle.on{background:#f5ad4f!important;}
.theme-sand .move-handle{background:#9a4f00!important;color:#fff!important;border-color:#733b00!important;}
.theme-sand .move-handle:hover{background:#b86a17!important;color:#fff!important;}


/* v1.0.18 — Light Slate contrast pass: blue accent instead of burnt amber; B/W move icon readable */
.light .card-title::before{background:#2563eb!important;}
.light .panel-left .card-title::before{background:#60a5fa!important;}
.light .fs-btn:hover,.light .seg-btn.active{box-shadow:0 0 0 1px rgba(37,99,235,.18) inset;}
.light .hdr-fdn-chip.active{background:#2563eb!important;color:#fff!important;}
.light .gwp-view-toggle .seg-btn.active{background:#2563eb!important;color:#fff!important;}
.light .report-text b,.light .card-title span{letter-spacing:.03em;}

.theme-select{background:var(--card);border:1px solid var(--border2);color:var(--text);border-radius:4px;padding:5px 8px;font-family:var(--mono);font-size:10.5px;max-width:140px;}
.gwp-chart-stack{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:6px;width:100%;}
.gwp-legend-top{width:100%;display:grid;grid-template-columns:1fr;gap:6px;}
.gwp-stage-row-v14{display:grid!important;grid-template-columns:auto minmax(58px,.9fr) minmax(70px,1fr) auto auto;align-items:center;gap:7px;font-size:11px;min-width:0;}
.gwp-stage-row-v14 .stage-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.gwp-stage-row-v14 .stage-desc{font-size:10px;color:var(--dim);white-space:normal;line-height:1.15;}
.gwp-stage-row-v14 .stage-value{font-family:var(--mono);font-weight:800;color:var(--text);white-space:nowrap;}
.gwp-stage-row-v14 .stage-percent{font-family:var(--mono);font-size:10px;text-align:right;font-weight:800;min-width:42px;}
.gwp-donut{width:min(300px,100%);height:auto;display:block;}
@media (max-width:1500px){.gwp-stage-row-v14{grid-template-columns:auto minmax(54px,.8fr) minmax(54px,1fr) auto auto;font-size:10.5px;gap:5px}.gwp-stage-row-v14 .stage-desc{font-size:9.5px}.gwp-donut{width:min(270px,100%);}}
@media (max-width:1250px){.theme-select{max-width:112px;font-size:10px}.gwp-stage-row-v14{grid-template-columns:auto minmax(58px,1fr) auto auto}.gwp-stage-row-v14 .stage-desc{grid-column:2 / -1;}}


/* v1.0.18 — visibility fixes for chart labels, quantity overlays and report scheme preview */
/* Chart labels: do not allow SVG labels to become unreadably small when the right rail is squeezed. */
.panel-right svg text{
  letter-spacing:.01em;
}
.panel-right svg text[font-size="10"],
.panel-right svg text[font-size="11"],
.panel-right svg text[font-size="12"],
.panel-right svg text[font-size="13"],
.panel-right svg text[font-size="14"]{
  font-size:12.5px!important;
}
.panel-right svg text[fill="var(--dim)"],
.panel-right svg text[fill="var(--sub)"]{
  fill:var(--sub)!important;
  opacity:1!important;
}
.gwp-stage-row-v14{
  font-size:12px!important;
  grid-template-columns:auto minmax(64px,.8fr) minmax(72px,1fr) auto auto!important;
  gap:7px!important;
}
.gwp-stage-row-v14 .stage-desc{font-size:10.8px!important;line-height:1.18!important;color:var(--sub)!important;}
.gwp-stage-row-v14 .stage-value{font-size:11.2px!important;}
.gwp-stage-row-v14 .stage-percent{font-size:11.2px!important;min-width:46px!important;}
@media (max-width:1500px){
  .gwp-stage-row-v14{font-size:11.5px!important;grid-template-columns:auto minmax(60px,.75fr) minmax(68px,1fr) auto auto!important;gap:6px!important;}
  .gwp-stage-row-v14 .stage-desc{font-size:10.3px!important;}
  .panel-right svg text[font-size="10"],
  .panel-right svg text[font-size="11"],
  .panel-right svg text[font-size="12"]{font-size:12px!important;}
}
@media (max-width:1250px){
  .gwp-stage-row-v14{grid-template-columns:auto minmax(70px,1fr) auto auto!important;}
  .gwp-stage-row-v14 .stage-desc{grid-column:2 / -1;}
}

/* Quantity summary overlay: force high-contrast text in B/W and Warm Sand themes. */
.theme-bw .quantity-overlay,
.theme-sand .quantity-overlay{
  background:rgba(17,24,39,.90)!important;
  color:#f8fafc!important;
  border-color:rgba(255,255,255,.45)!important;
  box-shadow:0 10px 26px rgba(0,0,0,.35)!important;
}
.theme-bw .quantity-overlay .qo-title,
.theme-sand .quantity-overlay .qo-title{
  color:#fbbf24!important;
}
.theme-bw .quantity-overlay .qo-row span:first-child,
.theme-sand .quantity-overlay .qo-row span:first-child{
  color:#cbd5e1!important;
}
.theme-bw .quantity-overlay .qo-row b,
.theme-sand .quantity-overlay .qo-row b{
  color:#ffffff!important;
}
.theme-bw .quantity-overlay .qo-row .qo-pass,
.theme-sand .quantity-overlay .qo-row .qo-pass{
  color:#5fd88a!important;
}
.theme-bw .quantity-overlay .qo-row .qo-warn,
.theme-sand .quantity-overlay .qo-row .qo-warn{
  color:#f5c75a!important;
}
.theme-bw .quantity-overlay .qo-row,
.theme-sand .quantity-overlay .qo-row{
  border-top-color:rgba(255,255,255,.18)!important;
}

/* B/W and Sand chart contrast: keep charts coloured but make axis/label text readable. */
.theme-bw .panel-right svg text[fill="var(--dim)"],
.theme-bw .panel-right svg text[fill="var(--sub)"],
.theme-sand .panel-right svg text[fill="var(--dim)"],
.theme-sand .panel-right svg text[fill="var(--sub)"]{
  fill:#111827!important;
}
.theme-sand .panel-right svg text[fill="var(--text)"]{fill:#1f2937!important;}
.theme-bw .panel-right .gwp-stage-row-v14 .stage-desc,
.theme-bw .panel-right .gwp-stage-row-v14 .stage-label,
.theme-bw .panel-right .gwp-stage-row-v14 .stage-value,
.theme-sand .panel-right .gwp-stage-row-v14 .stage-desc,
.theme-sand .panel-right .gwp-stage-row-v14 .stage-label,
.theme-sand .panel-right .gwp-stage-row-v14 .stage-value{
  color:#111827!important;
}

/* Report modal preview now visibly reflects the selected report colour scheme. */
.report-text.report-preview-amber{
  border-left:4px solid #c97a1e!important;
  background:linear-gradient(90deg,rgba(201,122,30,.08),transparent 18%),var(--card)!important;
}
.report-text.report-preview-mono{
  border-left:4px solid #111!important;
  background:linear-gradient(90deg,rgba(17,17,17,.07),transparent 18%),var(--card)!important;
}
.report-text.report-preview-blue{
  border-left:4px solid #1d4ed8!important;
  background:linear-gradient(90deg,rgba(29,78,216,.08),transparent 18%),var(--card)!important;
}
.report-scheme-swatch{
  width:14px;height:14px;border-radius:3px;display:inline-block;border:1px solid var(--border2);vertical-align:middle;margin-right:6px;
}
.report-scheme-swatch.amber{background:#c97a1e;}
.report-scheme-swatch.mono{background:#111;}
.report-scheme-swatch.blue{background:#1d4ed8;}



/* v1.0.18 — B/W collapsed tab label contrast fix */
.theme-bw .bottom-tab-rail,
.theme-bw .right-tab-rail{
  background:#111111!important;
  color:#ffffff!important;
  border-color:#111111!important;
  text-shadow:none!important;
}
.theme-bw .bottom-tab-rail:hover,
.theme-bw .right-tab-rail:hover{
  background:#000000!important;
  color:#ffffff!important;
  filter:none!important;
}
/* Keep tab labels readable if a dark rail/background is applied by any theme override. */
.theme-bw .bottom-tab-rail *,
.theme-bw .right-tab-rail *{
  color:#ffffff!important;
}


/* v1.0.20 — manual bottom drawer height resize works pinned and floating */
.bottom-resize-grip{
  height:8px;
  flex:0 0 8px;
  cursor:row-resize;
  background:linear-gradient(to bottom, rgba(245,173,79,.55), rgba(245,173,79,.08));
  border-top:1px solid rgba(245,173,79,.45);
  border-bottom:1px solid rgba(0,0,0,.12);
  position:relative;
  z-index:2;
}
.bottom-resize-grip::after{
  content:'';
  position:absolute;
  left:50%;top:50%;
  width:54px;height:3px;
  transform:translate(-50%,-50%);
  border-radius:999px;
  background:rgba(245,248,252,.72);
  box-shadow:0 0 0 1px rgba(0,0,0,.18);
}
.light .bottom-resize-grip::after,
.theme-bw .bottom-resize-grip::after,
.theme-sand .bottom-resize-grip::after{background:rgba(15,23,42,.52);}
.h-resizer{
  height:8px!important;
  flex:0 0 8px!important;
  background:linear-gradient(to bottom, rgba(245,173,79,.58), rgba(245,173,79,.10))!important;
  border-top:1px solid rgba(245,173,79,.45);
  border-bottom:1px solid var(--border);
  position:relative;
  z-index:80;
}
.h-resizer::after{
  content:'';
  position:absolute;
  left:50%;top:50%;
  width:58px;height:3px;
  transform:translate(-50%,-50%);
  border-radius:999px;
  background:rgba(245,248,252,.72);
  box-shadow:0 0 0 1px rgba(0,0,0,.18);
}
.light .h-resizer::after,
.theme-bw .h-resizer::after,
.theme-sand .h-resizer::after{background:rgba(15,23,42,.52);}
.bottom-drawer-toolbar{cursor:default;}
.bottom-drawer-float{height:min(var(--bottom-height,360px), calc(100vh - 78px))!important;min-height:170px!important;resize:none;}
.bottom-tab-full-span{height:min(var(--bottom-height,360px), calc(100vh - 82px))!important;min-height:170px!important;}


/* v1.0.20 — NHBC Table 4b / 5 explanatory format using available width */
.nhbc-side-tables{gap:14px!important;}
.nhbc-side-tables .nhbc-side-table-card{padding:12px 14px!important;border-radius:8px!important;}
.nhbc-side-table-title{font-size:11px!important;color:var(--amber)!important;font-family:var(--mono)!important;font-weight:800!important;letter-spacing:.055em!important;margin-bottom:6px!important;}
.nhbc-side-table-note{font-size:10.5px!important;color:var(--dim)!important;line-height:1.45!important;margin:5px 0 8px 0!important;}
.nhbc-side-tables .nhbc-side-table-card table{font-size:12px!important;table-layout:fixed!important;}
.nhbc-side-tables .nhbc-side-table-card th{vertical-align:bottom!important;font-size:11px!important;line-height:1.25!important;}
.nhbc-side-tables .nhbc-side-table-card td{font-size:11.5px!important;line-height:1.35!important;}
.nhbc-side-tables .nhbc-side-table-card th .nhbc-th-main{display:block;font-weight:800!important;color:inherit!important;}
.nhbc-side-tables .nhbc-side-table-card th .nhbc-th-sub{display:block;font-size:9.5px!important;font-weight:500!important;color:var(--sub)!important;line-height:1.25!important;margin-top:2px!important;}
.nhbc-side-tables .nhbc-side-table-card th:first-child,
.nhbc-side-tables .nhbc-side-table-card td:first-child{width:32%!important;}
.nhbc-side-tables .nhbc-side-table-card th:nth-child(2),
.nhbc-side-tables .nhbc-side-table-card td:nth-child(2),
.nhbc-side-tables .nhbc-side-table-card th:nth-child(3),
.nhbc-side-tables .nhbc-side-table-card td:nth-child(3){width:34%!important;}
@media (max-width:1450px){
  .nhbc-side-tables .nhbc-side-table-card table{font-size:11px!important;}
  .nhbc-side-tables .nhbc-side-table-card th .nhbc-th-sub{font-size:9px!important;}
}



/* v1.0.2 RESPONSIVE WORKSPACE PATCH
   Goal: comfortable laptop + desktop behaviour without shrinking everything into unreadability.
   Strategy: header becomes a controlled 2-row workspace bar on normal laptops, right carbon panel becomes
   a drawer on small laptops, bottom tab title becomes scrollable chips, and the centre view keeps priority. */
.app-header,
.app-header *{box-sizing:border-box;}
.app-header > *{min-width:0;}
.logo-main{min-width:0;max-width:100%;}
.logo .title-full{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.logo .logo-main > span:last-child{white-space:nowrap;flex:0 0 auto;}
.hdr-status{min-width:0;}
.hdr-status .hdr-pressure{white-space:nowrap;}
.hdr-centre{min-width:0!important;}
.hdr-centre input,
.hdr-centre select{min-width:0!important;max-width:100%;}
.hdr-actions{min-width:0!important;max-width:100%;}
.hdr-actions > *{min-width:0;}
.hdr-actions select{min-width:0!important;}
.file-menu-wrap{min-width:0;}
.file-menu-btn{white-space:nowrap;}
.theme-select{min-width:0!important;}

/* Make the bottom title behave like tabs, not one unbreakable sentence. */
.bottom-drawer-toolbar{min-width:0!important;}
.bottom-drawer-toolbar .bottom-title{
  flex:1 1 auto!important;
  min-width:0!important;
  display:flex!important;
  align-items:center!important;
  gap:6px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  scrollbar-width:thin;
  padding-right:6px;
}
.bottom-drawer-toolbar .bottom-title::-webkit-scrollbar{height:4px;}
.bottom-title-chip{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  font-weight:600;
  padding:2px 6px;
  border:1px solid var(--border);
  border-radius:999px;
  background:var(--card);
  color:var(--text);
  font-family:var(--mono);
  font-size:10px;
  font-weight:800;
  letter-spacing:.035em;
}
.bottom-title-sep{flex:0 0 auto;color:var(--dim);font-weight:800;}
.bottom-drawer-toolbar > span:last-child{flex:0 0 auto;}
.bottom-tab-rail,
.right-tab-rail{max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Standard laptop / 1080p desktop: use a proper two-row header.
   This is intentionally triggered before the UI becomes cramped. */
@media (max-width:2100px){
  .app-header{
    flex-wrap:wrap!important;
    align-items:center!important;
    min-height:72px!important;
    height:auto!important;
    row-gap:5px!important;
    column-gap:8px!important;
    padding:6px 10px!important;
  }
  .app-header .logo{order:1!important;flex:1 1 320px!important;min-width:260px!important;max-width:560px!important;}
  .app-header .logo .title-full{font-size:12.5px!important;}
  .hdr-status{order:2!important;flex:0 1 auto!important;}
  .app-header > div:nth-child(3){order:3!important;flex:0 0 auto!important;}
  .hdr-actions{
    order:4!important;
    margin-left:auto!important;
    width:auto!important;
    flex:0 1 auto!important;
    display:flex!important;
    flex-wrap:wrap!important;
    justify-content:flex-end!important;
    align-items:center!important;
    gap:5px!important;
  }
  .hdr-centre{
    order:5!important;
    flex:1 0 100%!important;
    width:100%!important;
    max-width:100%!important;
    display:grid!important;
    grid-template-columns:minmax(250px,max-content) minmax(360px,1fr)!important;
    align-items:end!important;
    gap:8px!important;
    padding:0!important;
    overflow:hidden!important;
  }
  .hdr-centre .riba-bar{min-width:0!important;width:max-content!important;max-width:100%!important;}
  .hdr-centre .riba-select{max-width:260px!important;}
  .hdr-centre > div:nth-child(2){
    min-width:0!important;
    display:grid!important;
    grid-template-columns:86px 12px minmax(220px,1fr)!important;
    align-items:end!important;
    gap:6px!important;
    width:100%!important;
  }
  .hdr-centre > div:nth-child(2) > div{min-width:0!important;}
  .hdr-centre > div:nth-child(2) > div:last-child input{width:100%!important;}
  .hdr-carbon-breakdown{display:none!important;}
  .hdr-carbon{min-width:132px!important;}
  .theme-select{max-width:124px!important;}
  .hdr-actions select[title="Choose monospace font"]{max-width:190px!important;}
}

@media (max-width:1700px){
  .app-header{min-height:80px!important;}
  .app-header .logo{flex-basis:300px!important;max-width:430px!important;}
  .hdr-status{padding:3px 8px!important;}
  .hdr-status .hdr-pressure{font-size:9.5px!important;}
  .hdr-centre{grid-template-columns:minmax(210px,max-content) minmax(300px,1fr)!important;}
  .hdr-centre .riba-select{max-width:210px!important;font-size:10px!important;}
  .hdr-centre > div:nth-child(2){grid-template-columns:78px 10px minmax(200px,1fr)!important;}
  .hdr-centre > div:nth-child(2) input{font-size:10.5px!important;padding:3px 5px!important;}
  .file-menu-btn,.theme-select,.hdr-actions select[title="Choose monospace font"],.nav-btn.report{font-size:10.5px!important;}
  .hdr-actions select[title="Choose monospace font"]{max-width:158px!important;}
  .hdr-carbon{min-width:118px!important;}
  .hdr-carbon-total b{font-size:14px!important;}
}

@media (max-width:1500px){
  .app-header{min-height:94px!important;}
  .app-header .logo{flex:1 1 260px!important;min-width:230px!important;max-width:360px!important;}
  .app-header .logo .title-full{font-size:12px!important;}
  .hdr-actions{max-width:calc(100% - 10px)!important;}
  .theme-select{max-width:104px!important;}
  .hdr-actions select[title="Choose monospace font"]{max-width:135px!important;}
  .hdr-centre{
    grid-template-columns:1fr!important;
    align-items:stretch!important;
    gap:5px!important;
  }
  .hdr-centre .riba-bar{width:100%!important;}
  .hdr-centre .riba-select{max-width:100%!important;width:100%!important;}
  .hdr-centre > div:nth-child(2){grid-template-columns:78px 8px minmax(160px,1fr)!important;}
  .col-left-full{width:clamp(210px,17vw,250px)!important;}
  .col-right-full{width:clamp(300px,25vw,390px)!important;}
  .main{grid-template-columns:minmax(285px,var(--col-mid,0.9fr)) 4px minmax(360px,var(--col-viz,1.1fr))!important;}
}

/* Small laptop: stop the carbon rail from stealing permanent workspace width.
   It remains available as a floating drawer/pinned-style overlay. */
@media (max-width:1366px){
  .app-header{min-height:104px!important;}
  .hdr-carbon{display:none!important;}
  .hdr-centre > div:nth-child(2){grid-template-columns:76px minmax(160px,1fr)!important;}
  .hdr-centre > div:nth-child(2) > span{display:none!important;}
  .app-body > .resizer{display:none!important;}
  .col-right-full.right-drawer-pinned{
    position:fixed!important;
    top:112px!important;
    right:10px!important;
    bottom:10px!important;
    width:min(390px,calc(100vw - 24px))!important;
    max-width:calc(100vw - 24px)!important;
    z-index:96!important;
    background:var(--panel-right)!important;
    border:1px solid var(--border2)!important;
    border-radius:10px!important;
    box-shadow:0 18px 48px rgba(0,0,0,.55)!important;
    overflow:hidden!important;
  }
  .col-right-full.right-drawer-pinned .panel-right{flex:1 1 auto!important;min-height:0!important;}
  .lc-shell{width:100%!important;flex:1 1 auto!important;}
  .col-left-full{width:clamp(200px,18vw,230px)!important;}
  .main{grid-template-columns:minmax(260px,0.88fr) 4px minmax(340px,1.12fr)!important;}
  .panel{padding:9px!important;}
  .card{padding:9px!important;}
}

/* 1280px and below: keep controls accessible; avoid crushed header fields. */
@media (max-width:1280px){
  .app-header{min-height:112px!important;}
  .app-header .logo{flex-basis:240px!important;min-width:210px!important;}
  .hdr-status{max-width:calc(100% - 260px)!important;}
  .hdr-actions{width:auto!important;max-width:100%!important;}
  .theme-select{max-width:96px!important;}
  .hdr-actions select[title="Choose monospace font"]{max-width:112px!important;}
  .nav-btn.report{padding:5px 8px!important;}
  .hdr-centre > div:nth-child(2){grid-template-columns:72px minmax(140px,1fr)!important;}
  .right-drawer-float,
  .col-right-full.right-drawer-pinned{top:120px!important;width:min(360px,calc(100vw - 18px))!important;}
  .bottom-drawer-toolbar{gap:6px!important;padding:5px 7px!important;}
  .bottom-title-chip{font-size:9.5px!important;padding:2px 5px!important;}
}

/* Compact/tablet fallback: stack the input rail above the calculation/visual workspace.
   This keeps the application usable instead of forcing impossible three-column compression. */
@media (max-width:1050px){
  body{overflow:hidden!important;}
  .app-header{min-height:132px!important;}
  .hdr-actions{justify-content:flex-start!important;width:100%!important;order:5!important;}
  .hdr-centre{order:4!important;}
  .lc-top{flex-direction:column!important;overflow:auto!important;}
  .lc-top > .resizer{display:none!important;}
  .col-left-full{
    width:100%!important;
    max-height:245px!important;
    min-height:170px!important;
    border-right:none!important;
    border-bottom:1px solid var(--border)!important;
  }
  .col-centre-full{width:100%!important;min-height:680px!important;}
  .main{
    display:flex!important;
    flex-direction:column!important;
    overflow:auto!important;
  }
  .main > .resizer{display:none!important;}
  .panel-mid-data,.panel-mid-viz{width:100%!important;min-height:420px!important;flex:0 0 auto!important;}
  .viewer-3d{min-height:300px!important;}
  .bottom-drawer-float{height:min(var(--bottom-height,330px),42vh)!important;}
}

/* Prevent floating widgets from becoming unusable on very narrow widths. */
@media (max-width:760px){
  .app-header{min-height:156px!important;align-content:flex-start!important;}
  .app-header .logo{flex:1 1 100%!important;max-width:100%!important;}
  .hdr-status{max-width:100%!important;}
  .hdr-centre > div:nth-child(2){grid-template-columns:1fr!important;}
  .right-drawer-float,
  .col-right-full.right-drawer-pinned{top:160px!important;left:8px!important;right:8px!important;width:auto!important;}
  .chat-panel{width:calc(100vw - 20px)!important;right:10px!important;}
}



/* v1.0.2 — bottom drawer font-size trim
   Reduces the Soil Report / NHBC / Reference / Project Data / Job Progress area by ~1 step
   while retaining readable numeric result callouts. */
.panel-bottom{
  font-size:13px!important;
}
.panel-bottom > div:first-child{
  overflow-x:auto!important;
  overflow-y:hidden!important;
  flex:0 0 auto!important;
}
.panel-bottom > div:first-child button{
  font-size:12px!important;
  padding:9px 16px!important;
  white-space:nowrap!important;
  flex:0 0 auto!important;
}
.panel-bottom .card-title,
.panel-bottom .viz-title,
.panel-bottom .inp-label,
.panel-bottom .toggle-label{
  font-size:11.5px!important;
}
.panel-bottom .inp,
.panel-bottom select,
.panel-bottom input,
.panel-bottom textarea,
.panel-bottom button{
  font-size:12px!important;
}
.panel-bottom [style*="font-size: 13px"],
.panel-bottom [style*="font-size:13px"]{
  font-size:12px!important;
}
.panel-bottom [style*="font-size: 12px"],
.panel-bottom [style*="font-size:12px"]{
  font-size:11px!important;
}
.panel-bottom [style*="font-size: 11px"],
.panel-bottom [style*="font-size:11px"]{
  font-size:10px!important;
}
.panel-bottom [style*="font-size: 10px"],
.panel-bottom [style*="font-size:10px"]{
  font-size:9.5px!important;
}
.panel-bottom .nhbc-side-table-card table,
.panel-bottom .nhbc-side-table-card th,
.panel-bottom .nhbc-side-table-card td{
  font-size:10.5px!important;
}
.panel-bottom .bottom-title-chip{
  font-size:9px!important;
  padding:2px 5px!important;
}
@media (max-width:1280px){
  .panel-bottom > div:first-child button{
    font-size:11.5px!important;
    padding:8px 13px!important;
  }
}



/* v1.0.2 — compact small-screen bottom drawer + collapsible input rail */
.input-drawer-toolbar{
  height:32px;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:5px 9px;
  background:var(--surface);
  border-bottom:1px solid var(--border);
  font-family:var(--mono);
  font-size:11px;
}
.input-drawer-toolbar .input-title{
  color:var(--amber);
  font-weight:800;
  letter-spacing:.055em;
  white-space:nowrap;
}
.input-drawer-toolbar button{
  background:var(--card);
  border:1px solid var(--border2);
  color:var(--sub);
  border-radius:4px;
  padding:3px 7px;
  cursor:pointer;
  font-family:var(--mono);
  font-size:10.5px;
}
.input-drawer-toolbar button:hover{background:var(--amber);border-color:var(--amber);color:#000;}
.input-drawer-pinned .panel-left{height:auto!important;flex:1!important;min-height:0!important;}
.left-tab-rail{
  position:fixed;
  left:0;
  top:50%;
  transform:translateY(-50%);
  z-index:92;
  writing-mode:vertical-rl;
  text-orientation:mixed;
  padding:12px 7px;
  background:var(--amber);
  color:#000;
  border:1px solid var(--amber2);
  border-left:none;
  border-radius:0 8px 8px 0;
  font-family:var(--mono);
  font-weight:800;
  font-size:11px;
  cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.left-tab-rail:hover{filter:brightness(1.08);}
.theme-bw .left-tab-rail{background:#111!important;color:#fff!important;border-color:#111!important;}
.theme-bw .input-drawer-toolbar button:hover{background:#111!important;color:#fff!important;border-color:#111!important;}

/* Prevent NHBC depth/result numbers from colliding in the bottom drawer. */
.panel-bottom .nhbc-depth-head{
  grid-template-columns:1fr!important;
  gap:5px!important;
  align-items:start!important;
}
.panel-bottom .nhbc-depth-right{text-align:left!important;}
.panel-bottom .nhbc-depth-card{overflow:hidden!important;}
.panel-bottom .nhbc-depth-card *,
.panel-bottom .nhbc-layout *{min-width:0;}
.panel-bottom .nhbc-depth-left > div:nth-child(2){font-size:20px!important;line-height:1.05!important;}
.panel-bottom .nhbc-depth-right > div:nth-child(2){font-size:14px!important;line-height:1.12!important;white-space:normal!important;overflow-wrap:anywhere!important;}
.panel-bottom .nhbc-depth-note{font-size:9.8px!important;line-height:1.25!important;}
.panel-bottom div[style*="justify-content:space-between"]{min-width:0!important;}
.panel-bottom .pill{flex:0 0 auto!important;}

@media (max-width:1366px), (max-height:820px){
  .bottom-tab-full-span{
    height:min(var(--bottom-height,240px),32vh)!important;
    min-height:128px!important;
  }
  .bottom-drawer-float{
    height:min(var(--bottom-height,260px),40vh)!important;
    min-height:140px!important;
  }
  .bottom-drawer-toolbar{
    height:30px!important;
    flex:0 0 30px!important;
    padding:4px 7px!important;
    font-size:10px!important;
  }
  .bottom-drawer-toolbar .bottom-title{
    max-width:calc(100vw - 230px)!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    white-space:nowrap!important;
    scrollbar-width:thin;
  }
  .bottom-drawer-toolbar button{font-size:9.5px!important;padding:2px 6px!important;}
  .bottom-drawer-toolbar span[style*="color:var(--dim)"]{font-size:9.5px!important;white-space:nowrap!important;}
  .bottom-title-chip{font-size:8.5px!important;padding:2px 5px!important;}
  .panel-bottom{padding:7px!important;font-size:11.5px!important;}
  .panel-bottom .card-title,.panel-bottom .viz-title{font-size:10.5px!important;}
  .panel-bottom .inp-label,.panel-bottom .toggle-label{font-size:10.5px!important;}
  .panel-bottom .inp,.panel-bottom select,.panel-bottom input,.panel-bottom textarea,.panel-bottom button{font-size:11px!important;}
  .panel-bottom .nhbc-layout{gap:9px!important;}
  .panel-bottom .nhbc-depth-card{padding:7px 9px!important;margin-top:6px!important;margin-bottom:6px!important;}
  .panel-bottom .nhbc-depth-left > div:nth-child(2){font-size:18px!important;}
  .panel-bottom .nhbc-depth-right > div:nth-child(2){font-size:13px!important;}
  .panel-bottom div[style*="font-size:24"]{font-size:18px!important;}
  .panel-bottom div[style*="font-size:17"]{font-size:13px!important;}
  .panel-bottom div[style*="font-size:16"]{font-size:12.5px!important;}
}

@media (max-width:1180px), (max-height:720px){
  .bottom-tab-full-span{
    height:min(var(--bottom-height,220px),28vh)!important;
    min-height:115px!important;
  }
  .bottom-drawer-float{
    height:min(var(--bottom-height,240px),36vh)!important;
    min-height:130px!important;
  }
  .bottom-resize-grip,.h-resizer{height:6px!important;flex-basis:6px!important;}
  .panel-bottom{padding:6px!important;}
  .bottom-drawer-toolbar .bottom-title{max-width:calc(100vw - 205px)!important;}
}

@media (max-width:1050px){
  .left-tab-rail{top:46%;font-size:10px;padding:10px 6px;}
  .input-drawer-toolbar{height:30px;flex-basis:30px;}
  .col-left-full.input-drawer-pinned{max-height:225px!important;}
}



/* v1.0.2 — bottom drawer font hierarchy fine-tune
   Keep the smallest text unchanged; only step down the two largest bottom-drawer text tiers. */
.panel-bottom .nhbc-depth-left > div:nth-child(2){
  font-size:19px!important;
  line-height:1.05!important;
}
.panel-bottom .nhbc-depth-right > div:nth-child(2){
  font-size:13px!important;
  line-height:1.12!important;
}
.panel-bottom div[style*="font-size:24"],
.panel-bottom div[style*="font-size: 24"]{
  font-size:21px!important;
}
.panel-bottom div[style*="font-size:17"],
.panel-bottom div[style*="font-size: 17"]{
  font-size:15px!important;
}
@media (max-width:1366px), (max-height:820px){
  .panel-bottom .nhbc-depth-left > div:nth-child(2){font-size:17px!important;}
  .panel-bottom .nhbc-depth-right > div:nth-child(2){font-size:12px!important;}
  .panel-bottom div[style*="font-size:24"],
  .panel-bottom div[style*="font-size: 24"]{font-size:17px!important;}
  .panel-bottom div[style*="font-size:17"],
  .panel-bottom div[style*="font-size: 17"]{font-size:12px!important;}
}


/* v1.0.2-minimal-v2 — compact right-side card expanders and readable collapsed summaries */
.card-title{gap:8px!important;margin-bottom:8px!important;}
.card-title::before{flex:0 0 auto!important;}
.card-head-main{display:flex!important;align-items:center!important;gap:8px!important;min-width:0!important;flex:1 1 auto!important;}
.card-head-text{min-width:0!important;display:flex!important;align-items:center!important;gap:6px!important;flex-wrap:wrap!important;}
.card-title .drag-handle{margin-left:2px!important;order:3!important;}
.card-collapse-btn{
  order:2!important;margin-left:6px!important;width:18px!important;height:18px!important;
  border:1px solid var(--border2)!important;background:var(--surface)!important;color:var(--amber)!important;
  border-radius:4px!important;cursor:pointer!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;
  font-size:10px!important;line-height:1!important;flex:0 0 18px!important;padding:0!important;
}
.card-collapse-btn:hover{background:var(--border)!important;color:var(--text)!important;}
.card-collapsed-summary{margin-top:2px!important;padding:0 0 1px 11px!important;}
.summary-strip{display:flex!important;flex-wrap:wrap!important;gap:5px 8px!important;align-items:center!important;font-size:10px!important;line-height:1.35!important;font-weight:400!important;letter-spacing:0!important;text-transform:none!important;color:var(--sub)!important;}
.summary-chip{
  display:inline-flex!important;align-items:center!important;gap:3px!important;padding:2px 6px!important;
  border-radius:999px!important;border:1px solid var(--border)!important;background:var(--surface)!important;
  font-size:10px!important;line-height:1.25!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;color:var(--sub)!important;
  max-width:100%;white-space:normal!important;
}
.summary-chip b,.summary-chip .chip-value{font-size:10px!important;color:var(--text)!important;font-weight:700!important;}
.summary-chip .chip-label{font-size:10px!important;color:var(--dim)!important;font-weight:600!important;}
.summary-chip.pass{border-color:rgba(95,216,138,.40)!important;background:rgba(95,216,138,.09)!important;color:var(--pass)!important;}
.summary-chip.fail{border-color:rgba(242,107,96,.40)!important;background:rgba(242,107,96,.09)!important;color:var(--fail)!important;}
.summary-chip.warn{border-color:rgba(245,199,90,.40)!important;background:rgba(245,199,90,.09)!important;color:var(--warn)!important;}
.summary-chip.muted{color:var(--dim)!important;background:transparent!important;}
.panel-left .summary-chip{background:#ffffff!important;border-color:#d8e2f0!important;}
.light .panel-left .summary-chip{background:var(--surface)!important;border-color:var(--border)!important;}
.panel-mid-data .summary-strip{font-size:10px!important;}
.panel-mid-data .card-collapsed-summary{padding-left:12px!important;}

/* ====================================================================== */
/* v1.0.3 — global readability pass: bump small fonts +2 sizes, fix B/W   */
/* contrast where text was rendered black on black backgrounds.           */
/* ====================================================================== */
body{font-size:14px!important;}

/* Header chips/labels: keep small but readable. */
.hdr-status{font-size:13px!important;}
.hdr-pressure{font-size:12px!important;}
.hdr-pressure b{font-size:13px!important;}
.riba-label{font-size:12px!important;}
.riba-select{font-size:12px!important;}

/* Card titles: bump labels by one step but leave the figure values alone. */
.card-title{font-size:14px!important;letter-spacing:.05em!important;}
.inp-label{font-size:13px!important;}
.inp{font-size:14px!important;}

/* Pills and chip badges: a touch larger so PASS/FAIL is unmissable. */
.pill{font-size:12px!important;padding:4px 10px!important;}
.summary-chip{font-size:12px!important;}

/* Logo subtitle removed — keep the title font legible. */
.logo .title-full{font-size:14px!important;}

/* Tab-rail (left edge "INPUT" pill) — keep readable in B/W. */
.theme-bw .left-tab-rail{font-size:12px!important;}

/* B/W theme — fix "completely black on black" hidden text. The dark navy  */
/* card backgrounds inherited from the dark theme were not always being    */
/* overridden, so any element with --card or --surface black-ish kept dark */
/* text invisible. Force light card backgrounds + dark text in B/W.        */
.theme-bw .card,
.theme-bw .summary-cell,
.theme-bw .panel-right .card,
.theme-bw .panel-mid-data .card,
.theme-bw .panel-bottom .card{
  background:#ffffff!important;
  color:#0a0a0a!important;
  border-color:#cfcfcf!important;
}
.theme-bw .card *:not(input):not(textarea):not(select):not(button):not(.pill):not(.summary-chip),
.theme-bw .summary-cell *:not(input):not(textarea):not(select):not(button):not(.pill):not(.summary-chip){
  color:#0a0a0a!important;
}
/* Keep amber accents readable in B/W by mapping to charcoal */
.theme-bw .card-title::before{background:#000000!important;}
.theme-bw .panel-right [style*="color:var(--amber)"],
.theme-bw .panel-mid-data [style*="color:var(--amber)"],
.theme-bw .panel-right [style*="color: var(--amber)"],
.theme-bw .panel-mid-data [style*="color: var(--amber)"]{color:#000000!important;}

/* Tinted info boxes inside cards */
.theme-bw .opt-tip{background:#f4f4f4!important;border-color:#cfcfcf!important;color:#0a0a0a!important;}
.theme-bw .info-box,
.theme-bw .da1-box{background:#f7f7f7!important;border-color:#cfcfcf!important;color:#0a0a0a!important;}

/* Pie chart text in B/W */
.theme-bw svg text{fill:#000000!important;}
/* v1.0.4.20 — B/W section NHBC card contrast fix.
   The SVG was rendered before the document theme class updated, leaving a dark card
   with black B/W text. Force the section NHBC card to a white report-style panel. */
.theme-bw svg .section-nhbc-level-card-bg{fill:#ffffff!important;stroke:#111111!important;opacity:1!important;}
.theme-bw svg .section-nhbc-level-card-line{stroke:#111111!important;opacity:.42!important;}
.theme-bw svg .section-nhbc-level-card-text,
.theme-bw svg .section-nhbc-level-card-title,
.theme-bw svg .section-nhbc-level-card-value{fill:#111111!important;}
.theme-bw svg .section-nhbc-level-card-ok{fill:#111111!important;}


/* Dark-theme inline styled colors that need force-dark in B/W */
.theme-bw [style*="color:var(--text)"],
.theme-bw [style*="color: var(--text)"]{color:#0a0a0a!important;}
.theme-bw [style*="color:var(--sub)"],
.theme-bw [style*="color: var(--sub)"]{color:#1f1f1f!important;}
.theme-bw [style*="color:var(--dim)"],
.theme-bw [style*="color: var(--dim)"]{color:#3a3a3a!important;}



/* v1.0.4.3 — summary readability + section label spacing */
.panel-mid-data table td{
  font-size:15px!important;
  line-height:1.45!important;
}
.panel-mid-data table th{
  font-size:13px!important;
  line-height:1.35!important;
}
.panel-mid-data table td:nth-child(3),
.panel-mid-data table td:nth-child(4),
.panel-mid-data table td:nth-child(5){
  font-size:15.5px!important;
  font-weight:850!important;
}
.panel-mid-data table td:nth-child(1){
  font-size:15px!important;
  font-weight:700!important;
}
.panel-mid-data .pill{
  font-size:13px!important;
  padding:5px 13px!important;
  min-width:62px!important;
}
.panel-mid-data .summary-chip,
.panel-mid-data .summary-chip b,
.panel-mid-data .summary-chip .chip-value,
.panel-mid-data .summary-chip .chip-label{
  font-size:12.5px!important;
  line-height:1.35!important;
}
.panel-mid-data .check-val{font-size:15px!important;}
.panel-mid-data .check-lbl-main{font-size:14.5px!important;}
.panel-mid-data .check-limit,.panel-mid-data .headroom,.panel-mid-data .util-pct{font-size:12px!important;}



/* v1.0.4.5 — 3D/Plan contrast and grid alignment patch */
/* Keep structural/chart text monochrome in B/W, but preserve engineering status colours for plan pressure numbers. */
.plan-q{font-family:var(--mono);font-weight:900;paint-order:stroke;stroke:var(--surface);stroke-width:2.5px;stroke-linejoin:round;}
.plan-q-pass{fill:var(--pass)!important;}
.plan-q-warn{fill:var(--warn)!important;}
.plan-q-fail{fill:var(--fail)!important;}
.theme-bw svg text.plan-q-pass{fill:#16803a!important;stroke:#ffffff!important;}
.theme-bw svg text.plan-q-warn{fill:#b45309!important;stroke:#ffffff!important;}
.theme-bw svg text.plan-q-fail{fill:#c32920!important;stroke:#ffffff!important;}
.theme-sand svg text.plan-q-pass{fill:#0f8a3b!important;stroke:#fffaf0!important;}
.theme-sand svg text.plan-q-warn{fill:#b45309!important;stroke:#fffaf0!important;}
.theme-sand svg text.plan-q-fail{fill:#c32920!important;stroke:#fffaf0!important;}

/* B/W: move handles must remain visible on white background and against black active UI. */
.theme-bw{--move-icon-bg:#000000;--move-icon-fg:#ffffff;--move-icon-border:#000000;}
.theme-bw .move-handle,
.theme-bw .move-handle.active,
.theme-bw .move-handle.tree{
  background:#000000!important;
  color:#ffffff!important;
  border:2px solid #ffffff!important;
  box-shadow:0 0 0 2px #000000,0 4px 12px rgba(0,0,0,.38)!important;
}
.theme-bw .move-handle-tag,
.theme-bw .move-handle-tag.tree{
  background:#000000!important;
  color:#ffffff!important;
  border-color:#000000!important;
}
.theme-bw svg text[fill="var(--move-icon-fg,#000)"]{fill:#ffffff!important;}

/* B/W: 3D load selector chips and action buttons need explicit on/off contrast. */
.theme-bw .load-filter-strip{background:#f1f1f1!important;border-color:#111111!important;color:#111111!important;}
.theme-bw .load-filter-name{color:#111111!important;}
.theme-bw .load-filter-chip{background:#ffffff!important;color:#111111!important;border:1px solid #111111!important;}
.theme-bw .load-filter-chip.on{background:#111111!important;color:#ffffff!important;border-color:#111111!important;}
.theme-bw .load-filter-chip.on:hover{background:#000000!important;color:#ffffff!important;}
.theme-bw .load-filter-action{background:#ffffff!important;color:#111111!important;border:1px solid #111111!important;}
.theme-bw .load-filter-action:hover{background:#111111!important;color:#ffffff!important;border-color:#111111!important;}

/* Quantity overlay: active/all mode label must not disappear in B/W/light/sand. */
.quantity-overlay .qo-title span,
.quantity-overlay .qo-mode{
  color:#fbbf24!important;
  text-shadow:0 1px 1px rgba(0,0,0,.55);
}
.light .quantity-overlay .qo-title span,
.light .quantity-overlay .qo-mode{
  color:#1d4ed8!important;
  text-shadow:none;
}
.theme-bw .quantity-overlay .qo-title span,
.theme-bw .quantity-overlay .qo-mode,
.theme-sand .quantity-overlay .qo-title span,
.theme-sand .quantity-overlay .qo-mode{
  color:#fbbf24!important;
  text-shadow:0 1px 1px rgba(0,0,0,.65)!important;
}


/* v1.0.4.22 — pile-cap mode disables NHBC tree checks */
.nhbc-disabled-panel{opacity:.48;filter:grayscale(.9);pointer-events:none;}
.nhbc-disabled-note{margin:10px 0;padding:12px 14px;border:1px dashed var(--border2);border-radius:8px;background:var(--surface);color:var(--sub);font-size:12px;line-height:1.55;}
.nhbc-disabled-note b{color:var(--amber);}


.viewer3d-edit-dims{
  position:absolute;left:12px;bottom:12px;z-index:8;display:flex;gap:6px;flex-wrap:wrap;
  padding:6px 7px;border:1px solid rgba(173,216,255,.28);border-radius:8px;
  background:rgba(8,14,28,.58);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.viewer3d-edit-dims button{
  border:1px solid rgba(245,173,79,.45);background:rgba(245,173,79,.12);color:var(--text);
  border-radius:6px;padding:4px 8px;font:800 10.5px var(--mono);cursor:pointer;letter-spacing:.03em;
}
.viewer3d-edit-dims button:hover{background:var(--amber);color:#07101f;}
.viewer3d-dim-stepper{
  position:absolute;z-index:14;display:flex;flex-direction:column;align-items:center;gap:1px;
  transform:translate(46px,-50%);pointer-events:auto;user-select:none;
  padding:2px 3px;border:1px solid rgba(245,173,79,.48);border-radius:7px;
  background:rgba(8,14,28,.50);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  box-shadow:0 8px 18px rgba(0,0,0,.35);
}
.viewer3d-dim-stepper span{font:900 9px var(--mono);line-height:1;color:var(--amber);letter-spacing:.04em;}
.viewer3d-dim-stepper button{width:22px;height:15px;line-height:12px;padding:0;border:1px solid rgba(245,173,79,.50);border-radius:4px;background:rgba(245,173,79,.14);color:var(--text);font:900 9px var(--mono);cursor:pointer;}
.viewer3d-dim-stepper button:hover{background:var(--amber);color:#07101f;}
.theme-bw .viewer3d-dim-stepper{background:#fff;border-color:#111;}
.theme-bw .viewer3d-dim-stepper span{color:#111;}
.theme-bw .viewer3d-dim-stepper button{background:#eee;color:#111;border-color:#111;}
.theme-bw .viewer3d-dim-stepper button:hover{background:#111;color:#fff;}

/* v1.0.13 — combined footing / strip footing input grids */
.cf-table{display:grid;gap:4px;align-items:center;margin-bottom:4px;font-family:var(--mono);font-size:10px;color:var(--sub);}
.cf-table-geo{grid-template-columns:1.35fr .8fr .8fr .9fr .9fr 28px;}
.cf-table-load{grid-template-columns:1.25fr .8fr .8fr .8fr .8fr .8fr;}
.cf-table b{font-size:9px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;}
.cf-table span{font-size:10px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cf-mini-inp{width:100%;min-width:0;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:3px 4px;font-family:var(--mono);font-size:10px;outline:none;}
.cf-mini-inp:focus{border-color:var(--amber);}
@media (max-width:1280px){.cf-table-geo,.cf-table-load{grid-template-columns:1fr 1fr 1fr;}.cf-table-load b:nth-child(n+4),.cf-table-geo b:nth-child(n+4){display:none;}}

/* v1.0.20 — font-size alignment with earlier pad-foundation UI while retaining current font family */
body{font-size:14px;}
.logo .title-full{font-size:14px!important;}
.logo .logo-subtitle{font-size:10px!important;}
.card-title,.viz-title{font-size:13.5px!important;letter-spacing:.075em!important;}
.inp-label,.panel-left .inp-label,.panel-bottom .inp-label{font-size:13.5px!important;line-height:1.25!important;}
.inp,.riba-select,.theme-select,.file-menu-btn{font-size:14px!important;}
.inp{padding:8px 10px!important;}
.inp-unit,.inp-hint{font-size:12px!important;}
.toggle-label{font-size:13.5px!important;}
.toggle-sub{font-size:12px!important;}
.check-lbl-main{font-size:14.5px!important;}
.check-lbl-note{font-size:12px!important;}
.check-val{font-size:15px!important;}
.check-limit,.headroom,.util-pct{font-size:11.5px!important;}
.summary-cell .big{font-size:21px!important;}
.summary-cell .lbl{font-size:12.5px!important;}
.pill{font-size:12px!important;}
.fs-btn,.load-filter-chip,.load-filter-action{font-size:11.5px!important;}
.hdr-stat{font-size:13px!important;}
.hdr-qval{font-size:12.5px!important;}
.panel-mid-data .check-val,.panel-mid-data .pill,.panel-mid-data .big,.panel-mid-data .summary-cell .big,.panel-mid-data .util-pct{font-size:15px!important;}
.panel-mid-data .card-title,.panel-right .card-title{font-size:13.5px!important;}

/* v1.0.24 — 3D face-pull handles */
.viewer3d-face-pull-overlay{font-family:var(--mono);}
.viewer3d-face-pull-handle{
  --fp-rot:0deg;
  position:absolute;
  transform:translate(-50%,-50%);
  pointer-events:auto;
  width:28px;
  height:28px;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  border:1.4px solid rgba(245,173,79,.88);
  border-radius:50%;
  background:rgba(10,16,32,.78);
  color:var(--amber);
  line-height:1;
  box-shadow:0 3px 12px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.12);
  backdrop-filter:blur(3px);
  user-select:none;
  z-index:20;
}
.viewer3d-face-pull-handle::before{
  content:'';
  width:16px;
  height:12px;
  display:block;
  background:currentColor;
  clip-path:polygon(0 43%,62% 43%,62% 22%,100% 50%,62% 78%,62% 57%,0 57%);
  transform:rotate(var(--fp-rot));
  transform-origin:50% 50%;
  filter:drop-shadow(0 0 2px rgba(0,0,0,.45));
}
.viewer3d-face-pull-handle:hover{
  background:rgba(245,173,79,.94);
  color:#000;
  border-color:var(--amber);
  box-shadow:0 0 0 2px rgba(245,173,79,.22),0 8px 22px rgba(0,0,0,.45);
}
.light .viewer3d-face-pull-handle,
.theme-bw .viewer3d-face-pull-handle,
.theme-sand .viewer3d-face-pull-handle{
  background:rgba(255,255,255,.88);
  color:#7a4a00;
  border-color:rgba(122,74,0,.45);
}
.light .viewer3d-face-pull-handle:hover,
.theme-bw .viewer3d-face-pull-handle:hover,
.theme-sand .viewer3d-face-pull-handle:hover{
  background:var(--amber);
  color:#000;
}

/* v1.0.29 — readability and single-font consistency
   Objective: keep the selected font family consistent across the UI and lift the
   smallest labels to the readable scale seen in the older v1.0.23 layout. */
:root{
  --mono:'Inconsolata','Courier New',monospace;
  --sans:'Inconsolata','Courier New',monospace;
  --fs-body:14px;
  --fs-label:13.5px;
  --fs-small:12.5px;
  --fs-mini:11.5px;
  --fs-card:14px;
  --fs-input:14px;
}
[data-font="ibm"]{--mono:'IBM Plex Mono',monospace;--sans:'IBM Plex Mono',monospace;}
[data-font="jetbrains"]{--mono:'JetBrains Mono',monospace;--sans:'JetBrains Mono',monospace;}
[data-font="arial"]{--mono:'Arial',sans-serif;--sans:'Arial',sans-serif;}
[data-font="arialblack"]{--mono:'Arial Black',sans-serif;--sans:'Arial Black',sans-serif;}
[data-font="bookantiqua"]{--mono:'Book Antiqua',serif;--sans:'Book Antiqua',serif;}
[data-font="bookmanold"]{--mono:'Bookman Old Style',serif;--sans:'Bookman Old Style',serif;}
[data-font="calisto"]{--mono:'Calisto MT',serif;--sans:'Calisto MT',serif;}
[data-font="centurygothic"]{--mono:'Century Gothic',sans-serif;--sans:'Century Gothic',sans-serif;}
[data-font="centuryschoolbook"]{--mono:'Century Schoolbook',serif;--sans:'Century Schoolbook',serif;}
[data-font="comicsans"]{--mono:'Comic Sans MS',cursive;--sans:'Comic Sans MS',cursive;}
[data-font="abadi"]{--mono:'Abadi MT Condensed Light',sans-serif;--sans:'Abadi MT Condensed Light',sans-serif;}
[data-font="albertusxb"]{--mono:'Albertus Extra Bold',serif;--sans:'Albertus Extra Bold',serif;}
[data-font="albertusmed"]{--mono:'Albertus Medium',serif;--sans:'Albertus Medium',serif;}
[data-font="antiqueolive"]{--mono:'Antique Olive',sans-serif;--sans:'Antique Olive',sans-serif;}
[data-font="arialmt"]{--mono:'Arial MT',sans-serif;--sans:'Arial MT',sans-serif;}
[data-font="arialnarrow"]{--mono:'Arial Narrow',sans-serif;--sans:'Arial Narrow',sans-serif;}
[data-font="bazooka"]{--mono:BAZOOKA,cursive;--sans:BAZOOKA,cursive;}
[data-font="boulder"]{--mono:Boulder,sans-serif;--sans:Boulder,sans-serif;}
[data-font="calligrapher"]{--mono:Calligrapher,cursive;--sans:Calligrapher,cursive;}
[data-font="cgomega"]{--mono:'CG Omega',sans-serif;--sans:'CG Omega',sans-serif;}
[data-font="cgtimes"]{--mono:'CG Times',serif;--sans:'CG Times',serif;}
[data-font="charlesworth"]{--mono:CHARLESWORTH,cursive;--sans:CHARLESWORTH,cursive;}
[data-font="chaucer"]{--mono:Chaucer,cursive;--sans:Chaucer,cursive;}
[data-font="clarendoncond"]{--mono:'Clarendon Condensed',serif;--sans:'Clarendon Condensed',serif;}
[data-font="copperplatebold"]{--mono:'Copperplate Gothic Bold',serif;--sans:'Copperplate Gothic Bold',serif;}
[data-font="copperplatelight"]{--mono:'Copperplate Gothic Light',serif;--sans:'Copperplate Gothic Light',serif;}
[data-font="allegro"]{--mono:Allegro,cursive;--sans:Allegro,cursive;}
[data-font="amazonebt"]{--mono:'Amazone BT',cursive;--sans:'Amazone BT',cursive;}
[data-font="amertypebt"]{--mono:'AmerType Md BT',sans-serif;--sans:'AmerType Md BT',sans-serif;}
[data-font="arrusbt"]{--mono:'Arrus BT',serif;--sans:'Arrus BT',serif;}
[data-font="aurorabt"]{--mono:'AURORA CN BT',sans-serif;--sans:'AURORA CN BT',sans-serif;}
[data-font="avantgardebkbt"]{--mono:'AvantGarde Bk BT',sans-serif;--sans:'AvantGarde Bk BT',sans-serif;}
[data-font="avantgardemdbt"]{--mono:'AvantGarde Md BT',sans-serif;--sans:'AvantGarde Md BT',sans-serif;}
[data-font="bankgothicbt"]{--mono:'BANKGOTHIC MD BT',sans-serif;--sans:'BANKGOTHIC MD BT',sans-serif;}
[data-font="benguiatbt"]{--mono:'Benguiat Bk BT',serif;--sans:'Benguiat Bk BT',serif;}
[data-font="bernhardfashionbt"]{--mono:'BernhardFashion BT',cursive;--sans:'BernhardFashion BT',cursive;}
[data-font="bernhardmodbt"]{--mono:'BernhardMod BT',serif;--sans:'BernhardMod BT',serif;}
[data-font="binnerd"]{--mono:BinnerD,sans-serif;--sans:BinnerD,sans-serif;}
[data-font="bremenbt"]{--mono:'BREMEN BD BT',sans-serif;--sans:'BREMEN BD BT',sans-serif;}
[data-font="caslonopnbt"]{--mono:'CaslonOpnface BT',serif;--sans:'CaslonOpnface BT',serif;}
[data-font="charterbdbt"]{--mono:'Charter Bd BT',serif;--sans:'Charter Bd BT',serif;}
[data-font="charterbt"]{--mono:'Charter BT',serif;--sans:'Charter BT',serif;}
[data-font="chelthmbt"]{--mono:'ChelthmITC Bk BT',serif;--sans:'ChelthmITC Bk BT',serif;}
[data-font="cloisterblackbt"]{--mono:'CloisterBlack BT',cursive;--sans:'CloisterBlack BT',cursive;}
[data-font="copperplgothbt"]{--mono:'CopperplGoth Bd BT',serif;--sans:'CopperplGoth Bd BT',serif;}
[data-font="english111bt"]{--mono:'English 111 Vivace BT',cursive;--sans:'English 111 Vivace BT',cursive;}
[data-font="engraversgothicbt"]{--mono:'EngraversGothic BT',serif;--sans:'EngraversGothic BT',serif;}
[data-font="exotc350bt"]{--mono:'Exotc350 Bd BT',sans-serif;--sans:'Exotc350 Bd BT',sans-serif;}
[data-font="freefrm721bt"]{--mono:'Freefrm721 Blk BT',sans-serif;--sans:'Freefrm721 Blk BT',sans-serif;}
[data-font="frnkgothicbt"]{--mono:'FrnkGothITC Bk BT',sans-serif;--sans:'FrnkGothITC Bk BT',sans-serif;}
.font-alt{--mono:'IBM Plex Mono',monospace;--sans:'IBM Plex Mono',monospace;}

html,body,#root{font-family:var(--mono)!important;font-size:var(--fs-body)!important;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
body,.panel,.card,.modal,.btn,.nav-btn,.inp,select,input,button,textarea{font-family:var(--mono)!important;}

/* General text scale: do not inflate major headings; lift only small/detail text. */
.logo .title-full{font-size:14px!important;}
.logo .logo-subtitle,.badge,.hdr-qval,.hdr-stat,.file-menu-btn,.riba-label,.riba-select,.theme-select,.fs-btn{font-size:12.5px!important;}
.nav-btn{font-size:13.5px!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:14px!important;letter-spacing:.075em!important;line-height:1.25!important;}
.card-title::before{height:16px!important;}

.inp-label,.toggle-label,.check-lbl-main,.summary-cell .lbl,.file-item,.toggle-sub{font-size:var(--fs-label)!important;line-height:1.32!important;}
.inp,.plan-live-input,.riba-select,select.inp,input.inp,textarea.inp{font-size:var(--fs-input)!important;line-height:1.25!important;min-height:31px;}
.inp-unit,.inp-hint,.check-lbl-note,.check-limit,.headroom,.util-pct,.da1-box,.info-box,.opt-tip,.pc-symbol-note,.pc-factor-help{font-size:var(--fs-small)!important;line-height:1.45!important;}
.pill,.check-val,.summary-cell .big,.panel-mid-data .check-val,.panel-mid-data .pill,.panel-mid-data .util-pct{font-size:14px!important;line-height:1.2!important;}
.panel-mid-data .summary-cell .big,.panel-right .summary-cell .big{font-size:19px!important;}

/* Inline styles in the React file use very small fontSize values in several places.
   Override those without touching the large numbers. */
.app-header [style*="font-size: 9"],.app-header [style*="font-size:9"],
.app-header [style*="font-size: 10"],.app-header [style*="font-size:10"],
.app-header [style*="font-size: 10.5"],.app-header [style*="font-size:10.5"]{font-size:12px!important;}
.panel-left [style*="font-size: 9"],.panel-left [style*="font-size:9"],
.panel-left [style*="font-size: 10"],.panel-left [style*="font-size:10"],
.panel-left [style*="font-size: 10.5"],.panel-left [style*="font-size:10.5"],
.panel-mid-data [style*="font-size: 9"],.panel-mid-data [style*="font-size:9"],
.panel-mid-data [style*="font-size: 10"],.panel-mid-data [style*="font-size:10"],
.panel-mid-data [style*="font-size: 10.5"],.panel-mid-data [style*="font-size:10.5"],
.panel-right [style*="font-size: 9"],.panel-right [style*="font-size:9"],
.panel-right [style*="font-size: 10"],.panel-right [style*="font-size:10"],
.panel-right [style*="font-size: 10.5"],.panel-right [style*="font-size:10.5"],
.panel-bottom [style*="font-size: 9"],.panel-bottom [style*="font-size:9"],
.panel-bottom [style*="font-size: 10"],.panel-bottom [style*="font-size:10"],
.panel-bottom [style*="font-size: 10.5"],.panel-bottom [style*="font-size:10.5"]{font-size:12px!important;line-height:1.35!important;}

/* Results table and cards: stronger small-value hierarchy. */
.check-row{padding:11px 0!important;}
.check-right{min-width:138px!important;}
.util-bar{height:7px!important;}
.summary-grid{gap:9px!important;}
.summary-cell{padding:12px 14px!important;}

/* Left input cards: match the old readable look without changing layout density too much. */
.panel-left .card{padding:13px!important;}
.panel-left .inp-row{gap:5px!important;margin-bottom:10px!important;}
.panel-left .inp-grid,.panel-left .inp-grid-3{gap:8px!important;}
.panel-left .pc-load-heading,.panel-left .pc-input-subtitle,.panel-left .pc-reinf-subtitle,.panel-left .pc-allowable-heading{font-size:14px!important;line-height:1.25!important;}

/* Visual labels, plan/section SVGs and chart labels. */
.viz-card svg text,.panel-right svg text,.panel-mid-viz svg text{font-family:var(--mono)!important;}
.viz-card svg text[font-size="8"],.viz-card svg text[font-size="9"],.viz-card svg text[font-size="9.5"],.viz-card svg text[font-size="10"],
.panel-right svg text[font-size="8"],.panel-right svg text[font-size="9"],.panel-right svg text[font-size="9.5"],.panel-right svg text[font-size="10"],
.panel-mid-viz svg text[font-size="8"],.panel-mid-viz svg text[font-size="9"],.panel-mid-viz svg text[font-size="9.5"],.panel-mid-viz svg text[font-size="10"]{font-size:11.5px!important;}
.viewer-3d,.viewer-3d *{font-family:var(--mono)!important;}
.load-filter-strip,.load-filter-chip,.load-filter-action{font-size:11.5px!important;}

/* Bottom drawer and reference/soil tabs. */
.panel-bottom,.bottom-drawer-toolbar,.nhbc-side-table-card,.report-text{font-size:13px!important;line-height:1.45!important;}
.bottom-title-chip{font-size:12.5px!important;}

/* Right carbon panel. */
.panel-right .gwp-stage-row .stage-value,.panel-right .gwp-stage-row .stage-percent{font-size:13.5px!important;}
.panel-right .pc-split-row,.panel-right .as-props,.panel-right .lbl{font-size:12px!important;}

/* Keep compact screens usable. */
@media (max-width:1400px){
  :root{--fs-body:13.5px;--fs-label:13px;--fs-small:12px;--fs-mini:11px;--fs-input:13.5px;}
  .card-title,.viz-title,.input-title,.right-title,.bottom-title{font-size:13.5px!important;}
}


/* v1.0.37 — readability + professional font pack
   Aim: lift detail text, keep the large result values under control, and make one selected font apply consistently across the UI. */
:root{
  --fs-body:14px;
  --fs-label:14px;
  --fs-small:13px;
  --fs-mini:12.5px;
  --fs-card:14.5px;
  --fs-input:14px;
  --ui-letter-space:0.015em;
}
[data-font="inconsolata"]{--mono:'Inconsolata','Courier New',monospace;--sans:'Inconsolata','Courier New',monospace;}
[data-font="aptos"]{--mono:'Aptos','Aptos Display','Segoe UI',Calibri,Arial,sans-serif;--sans:'Aptos','Aptos Display','Segoe UI',Calibri,Arial,sans-serif;}
[data-font="atkinson"]{--mono:'Atkinson Hyperlegible','Segoe UI',Arial,sans-serif;--sans:'Atkinson Hyperlegible','Segoe UI',Arial,sans-serif;}
[data-font="lato"]{--mono:'Lato','Segoe UI',Arial,sans-serif;--sans:'Lato','Segoe UI',Arial,sans-serif;}
[data-font="inter"]{--mono:'Inter','Segoe UI',Arial,sans-serif;--sans:'Inter','Segoe UI',Arial,sans-serif;}
[data-font="ibm"]{--mono:'IBM Plex Mono',monospace;--sans:'IBM Plex Mono',monospace;}
[data-font="jetbrains"]{--mono:'JetBrains Mono',monospace;--sans:'JetBrains Mono',monospace;}
[data-font="arial"]{--mono:'Arial',sans-serif;--sans:'Arial',sans-serif;}
[data-font="arialblack"]{--mono:'Arial Black',sans-serif;--sans:'Arial Black',sans-serif;}
[data-font="bookantiqua"]{--mono:'Book Antiqua',serif;--sans:'Book Antiqua',serif;}
[data-font="bookmanold"]{--mono:'Bookman Old Style',serif;--sans:'Bookman Old Style',serif;}
[data-font="calisto"]{--mono:'Calisto MT',serif;--sans:'Calisto MT',serif;}
[data-font="centurygothic"]{--mono:'Century Gothic',sans-serif;--sans:'Century Gothic',sans-serif;}
[data-font="centuryschoolbook"]{--mono:'Century Schoolbook',serif;--sans:'Century Schoolbook',serif;}
[data-font="comicsans"]{--mono:'Comic Sans MS',cursive;--sans:'Comic Sans MS',cursive;}
[data-font="abadi"]{--mono:'Abadi MT Condensed Light',sans-serif;--sans:'Abadi MT Condensed Light',sans-serif;}
[data-font="albertusxb"]{--mono:'Albertus Extra Bold',serif;--sans:'Albertus Extra Bold',serif;}
[data-font="albertusmed"]{--mono:'Albertus Medium',serif;--sans:'Albertus Medium',serif;}
[data-font="antiqueolive"]{--mono:'Antique Olive',sans-serif;--sans:'Antique Olive',sans-serif;}
[data-font="arialmt"]{--mono:'Arial MT',sans-serif;--sans:'Arial MT',sans-serif;}
[data-font="arialnarrow"]{--mono:'Arial Narrow',sans-serif;--sans:'Arial Narrow',sans-serif;}
[data-font="bazooka"]{--mono:BAZOOKA,cursive;--sans:BAZOOKA,cursive;}
[data-font="boulder"]{--mono:Boulder,sans-serif;--sans:Boulder,sans-serif;}
[data-font="calligrapher"]{--mono:Calligrapher,cursive;--sans:Calligrapher,cursive;}
[data-font="cgomega"]{--mono:'CG Omega',sans-serif;--sans:'CG Omega',sans-serif;}
[data-font="cgtimes"]{--mono:'CG Times',serif;--sans:'CG Times',serif;}
[data-font="charlesworth"]{--mono:CHARLESWORTH,cursive;--sans:CHARLESWORTH,cursive;}
[data-font="chaucer"]{--mono:Chaucer,cursive;--sans:Chaucer,cursive;}
[data-font="clarendoncond"]{--mono:'Clarendon Condensed',serif;--sans:'Clarendon Condensed',serif;}
[data-font="copperplatebold"]{--mono:'Copperplate Gothic Bold',serif;--sans:'Copperplate Gothic Bold',serif;}
[data-font="copperplatelight"]{--mono:'Copperplate Gothic Light',serif;--sans:'Copperplate Gothic Light',serif;}
[data-font="allegro"]{--mono:Allegro,cursive;--sans:Allegro,cursive;}
[data-font="amazonebt"]{--mono:'Amazone BT',cursive;--sans:'Amazone BT',cursive;}
[data-font="amertypebt"]{--mono:'AmerType Md BT',sans-serif;--sans:'AmerType Md BT',sans-serif;}
[data-font="arrusbt"]{--mono:'Arrus BT',serif;--sans:'Arrus BT',serif;}
[data-font="aurorabt"]{--mono:'AURORA CN BT',sans-serif;--sans:'AURORA CN BT',sans-serif;}
[data-font="avantgardebkbt"]{--mono:'AvantGarde Bk BT',sans-serif;--sans:'AvantGarde Bk BT',sans-serif;}
[data-font="avantgardemdbt"]{--mono:'AvantGarde Md BT',sans-serif;--sans:'AvantGarde Md BT',sans-serif;}
[data-font="bankgothicbt"]{--mono:'BANKGOTHIC MD BT',sans-serif;--sans:'BANKGOTHIC MD BT',sans-serif;}
[data-font="benguiatbt"]{--mono:'Benguiat Bk BT',serif;--sans:'Benguiat Bk BT',serif;}
[data-font="bernhardfashionbt"]{--mono:'BernhardFashion BT',cursive;--sans:'BernhardFashion BT',cursive;}
[data-font="bernhardmodbt"]{--mono:'BernhardMod BT',serif;--sans:'BernhardMod BT',serif;}
[data-font="binnerd"]{--mono:BinnerD,sans-serif;--sans:BinnerD,sans-serif;}
[data-font="bremenbt"]{--mono:'BREMEN BD BT',sans-serif;--sans:'BREMEN BD BT',sans-serif;}
[data-font="caslonopnbt"]{--mono:'CaslonOpnface BT',serif;--sans:'CaslonOpnface BT',serif;}
[data-font="charterbdbt"]{--mono:'Charter Bd BT',serif;--sans:'Charter Bd BT',serif;}
[data-font="charterbt"]{--mono:'Charter BT',serif;--sans:'Charter BT',serif;}
[data-font="chelthmbt"]{--mono:'ChelthmITC Bk BT',serif;--sans:'ChelthmITC Bk BT',serif;}
[data-font="cloisterblackbt"]{--mono:'CloisterBlack BT',cursive;--sans:'CloisterBlack BT',cursive;}
[data-font="copperplgothbt"]{--mono:'CopperplGoth Bd BT',serif;--sans:'CopperplGoth Bd BT',serif;}
[data-font="english111bt"]{--mono:'English 111 Vivace BT',cursive;--sans:'English 111 Vivace BT',cursive;}
[data-font="engraversgothicbt"]{--mono:'EngraversGothic BT',serif;--sans:'EngraversGothic BT',serif;}
[data-font="exotc350bt"]{--mono:'Exotc350 Bd BT',sans-serif;--sans:'Exotc350 Bd BT',sans-serif;}
[data-font="freefrm721bt"]{--mono:'Freefrm721 Blk BT',sans-serif;--sans:'Freefrm721 Blk BT',sans-serif;}
[data-font="frnkgothicbt"]{--mono:'FrnkGothITC Bk BT',sans-serif;--sans:'FrnkGothITC Bk BT',sans-serif;}

html,body,#root,.app-body,.panel,.card,.modal,.btn,.nav-btn,.inp,select,input,button,textarea{
  font-family:var(--mono)!important;
  font-variant-numeric:tabular-nums slashed-zero;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
body{font-size:var(--fs-body)!important;letter-spacing:var(--ui-letter-space);}

/* Keep result figures strong but prevent the hierarchy gap becoming ridiculous. */
.summary-cell .big,.panel-mid-data .summary-cell .big,.panel-right .summary-cell .big{font-size:18px!important;line-height:1.12!important;}
.check-val,.panel-mid-data .check-val{font-size:14.5px!important;line-height:1.25!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:14.5px!important;line-height:1.28!important;letter-spacing:.07em!important;}
.logo .title-full{font-size:14.5px!important;}
.nav-btn,.btn{font-size:13.5px!important;}

/* Lift the text that was causing eye-strain. */
.inp-label,.toggle-label,.check-lbl-main,.summary-cell .lbl,.file-item,.toggle-sub,.alt-size-cell .as-dim{font-size:var(--fs-label)!important;line-height:1.38!important;}
.inp,.plan-live-input,.riba-select,select.inp,input.inp,textarea.inp,.theme-select{font-size:var(--fs-input)!important;line-height:1.35!important;min-height:32px!important;}
.inp-unit,.inp-hint,.check-lbl-note,.check-limit,.headroom,.util-pct,.da1-box,.info-box,.opt-tip,.pc-symbol-note,.pc-factor-help,.alt-size-cell .as-props{font-size:var(--fs-small)!important;line-height:1.48!important;}
.badge,.hdr-qval,.hdr-stat,.file-menu-btn,.riba-label,.fs-btn,.hdr-fdn-chip,.hdr-fdn-add{font-size:12.5px!important;line-height:1.3!important;}
.pill,.seg-btn,.btn-sm{font-size:12.5px!important;line-height:1.25!important;}

/* React inline styles still have some 8–11px details. Force those up to a readable minimum. */
.app-body [style*="font-size: 8"],.app-body [style*="font-size:8"],
.app-body [style*="font-size: 8.5"],.app-body [style*="font-size:8.5"],
.app-body [style*="font-size: 9"],.app-body [style*="font-size:9"],
.app-body [style*="font-size: 9.5"],.app-body [style*="font-size:9.5"],
.app-body [style*="font-size: 10"],.app-body [style*="font-size:10"],
.app-body [style*="font-size: 10.5"],.app-body [style*="font-size:10.5"],
.app-body [style*="font-size: 11"],.app-body [style*="font-size:11"]{
  font-size:12.5px!important;
  line-height:1.38!important;
}

/* SVG/view labels: keep dimensions and heat-map legends legible without inflating the main model. */
.viz-card svg text,.panel-right svg text,.panel-mid-viz svg text{font-family:var(--mono)!important;font-variant-numeric:tabular-nums slashed-zero;}
.viz-card svg text[font-size="8"],.viz-card svg text[font-size="8.5"],.viz-card svg text[font-size="9"],.viz-card svg text[font-size="9.5"],.viz-card svg text[font-size="10"],.viz-card svg text[font-size="10.5"],
.panel-right svg text[font-size="8"],.panel-right svg text[font-size="8.5"],.panel-right svg text[font-size="9"],.panel-right svg text[font-size="9.5"],.panel-right svg text[font-size="10"],.panel-right svg text[font-size="10.5"],
.panel-mid-viz svg text[font-size="8"],.panel-mid-viz svg text[font-size="8.5"],.panel-mid-viz svg text[font-size="9"],.panel-mid-viz svg text[font-size="9.5"],.panel-mid-viz svg text[font-size="10"],.panel-mid-viz svg text[font-size="10.5"]{
  font-size:12px!important;
}

/* Chart label clarity. */
.panel-right .card-title{font-size:14px!important;}
.panel-right .gwp-stage-row .stage-value,.panel-right .gwp-stage-row .stage-percent{font-size:13.5px!important;}
.panel-right .pc-split-row,.panel-right .lbl,.panel-right .as-props{font-size:12.5px!important;}

/* Slightly more readable input card density. */
.panel-left .card{padding:14px!important;}
.panel-left .inp-row{gap:5px!important;margin-bottom:11px!important;}
.panel-left .inp-grid,.panel-left .inp-grid-3{gap:9px!important;}
.check-row{padding:12px 0!important;}
.util-bar{height:8px!important;}

@media (max-width:1400px){
  :root{--fs-body:13.5px;--fs-label:13.5px;--fs-small:12.5px;--fs-mini:12px;--fs-input:13.5px;}
  .summary-cell .big,.panel-mid-data .summary-cell .big,.panel-right .summary-cell .big{font-size:17.5px!important;}
  .card-title,.viz-title,.input-title,.right-title,.bottom-title{font-size:14px!important;}
}


/* v1.0.38 — Aptos default, reduce oversized display figures by one step, keep detail text readable */
:root{
  --mono:'Aptos','Aptos Display','Segoe UI',Calibri,Arial,sans-serif;
  --sans:'Aptos','Aptos Display','Segoe UI',Calibri,Arial,sans-serif;
}
.summary-cell .big,.panel-mid-data .summary-cell .big,.panel-right .summary-cell .big{font-size:17px!important;line-height:1.12!important;}
.check-val,.panel-mid-data .check-val{font-size:13.5px!important;line-height:1.24!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:13.5px!important;line-height:1.26!important;letter-spacing:.065em!important;}
.logo .title-full{font-size:13.5px!important;}
.logo .logo-subtitle{font-size:8.5px!important;}
.plan-q{font-size:12.5px!important;}
.viz-card svg text[font-size="14"]{font-size:13px!important;}
.viz-card svg text[font-size="13"]{font-size:12.5px!important;}
/* Keep the 3D projection buttons compact even with the readable-font overrides. */
.viewer-3d button{font-size:9.5px!important;line-height:1.1!important;}


/* v1.0.39 — compact plan load box + display-font trimming */
.summary-cell .big,
.panel-mid-data .summary-cell .big,
.panel-right .summary-cell .big{font-size:16px!important;line-height:1.10!important;}
.check-val,.panel-mid-data .check-val{font-size:12.8px!important;line-height:1.22!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:12.8px!important;line-height:1.24!important;letter-spacing:.06em!important;}
.logo .title-full{font-size:12.8px!important;}
.logo .logo-subtitle{font-size:8px!important;}
.pill,.seg-btn,.btn-sm{font-size:11.5px!important;}
.plan-q{font-size:11px!important;}
.viewer-3d button{font-size:8px!important;line-height:1.05!important;letter-spacing:.035em!important;}
.viz-card svg .plan-load-title{font-size:8.5px!important;}
.viz-card svg .plan-load-muted{font-size:7.5px!important;}
.viz-card svg .plan-load-box text{font-size:7.8px!important;line-height:1.1!important;}
.viz-card svg .plan-heat-label{font-size:8.5px!important;opacity:.9;}
.viz-card svg text[font-size="14"]{font-size:11.5px!important;}
.viz-card svg text[font-size="13"]{font-size:11px!important;}
.viz-card svg text[font-size="12.5"]{font-size:10.8px!important;}

/* v1.0.40 — tighter loading labels and reduced oversized UI display text */
.summary-cell .big,
.panel-mid-data .summary-cell .big,
.panel-right .summary-cell .big{font-size:14.6px!important;line-height:1.08!important;}
.check-val,.panel-mid-data .check-val,.util-pct{font-size:11.6px!important;line-height:1.18!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:11.6px!important;line-height:1.20!important;letter-spacing:.045em!important;}
.logo .title-full{font-size:11.8px!important;}
.logo .logo-subtitle{font-size:7.4px!important;}
.pill,.seg-btn,.btn-sm,.fs-btn{font-size:9.6px!important;line-height:1.14!important;padding:2px 6px!important;}
.badge,.hdr-qval,.hdr-stat,.file-menu-btn,.riba-label,.hdr-fdn-chip,.hdr-fdn-add{font-size:10.8px!important;line-height:1.2!important;}
.plan-q{font-size:10px!important;}
.panel-bottom div[style*="font-size:24"],.panel-bottom div[style*="font-size: 24"]{font-size:15px!important;line-height:1.1!important;}
.panel-bottom div[style*="font-size:17"],.panel-bottom div[style*="font-size: 17"]{font-size:11.5px!important;line-height:1.16!important;}
.panel-bottom div[style*="font-size:16"],.panel-bottom div[style*="font-size: 16"]{font-size:11px!important;line-height:1.15!important;}
.app-body .viewer-3d button,.viewer-3d button{
  font-size:6.8px!important;
  line-height:1!important;
  letter-spacing:.018em!important;
  padding:2px 5px!important;
  min-width:38px!important;
  border-radius:3px!important;
}
.viz-card svg .plan-load-title{font-size:7.1px!important;}
.viz-card svg .plan-load-muted{font-size:6.6px!important;}
.viz-card svg .plan-load-box text{font-size:6.8px!important;line-height:1!important;}
.viz-card svg .plan-load-box text tspan{font-size:inherit!important;}
.viz-card svg .plan-heat-label{font-size:7.8px!important;}
.viz-card svg text[font-size="14"]{font-size:10.5px!important;}
.viz-card svg text[font-size="13"]{font-size:10.2px!important;}
.viz-card svg text[font-size="12.5"]{font-size:9.8px!important;}


/* v1.0.41 — plan toolbar, plan bearing label and section-height tidy-up */
.viz-card .viz-hdr{
  gap:8px!important;
  flex-wrap:wrap!important;
}
.viz-card .viz-hdr>.viz-title{
  flex:0 0 auto!important;
  min-width:0!important;
}
.plan-toolbar{
  flex:1 1 360px!important;
  justify-content:flex-end!important;
  row-gap:3px!important;
  column-gap:4px!important;
}
.plan-toolbar .seg-btn{
  flex:0 0 auto!important;
  font-size:8.1px!important;
  line-height:1!important;
  padding:1px 5px!important;
  min-height:17px!important;
  min-width:24px!important;
  border-radius:3px!important;
}
.plan-toolbar .fs-btn{
  font-size:8.1px!important;
  line-height:1!important;
  padding:1px 5px!important;
  min-height:17px!important;
}
.plan-toolbar span{
  font-size:8.2px!important;
  line-height:1.05!important;
  white-space:nowrap!important;
}
.viz-title select.inp{
  min-width:56px!important;
  max-width:96px!important;
  min-height:22px!important;
  padding:1px 5px!important;
  font-size:9.2px!important;
  line-height:1.05!important;
  flex:0 0 auto!important;
}
/* Remove the heat-map caption that was colliding with plan annotations. Corner q values stay. */
.viz-card svg .plan-heat-label{
  display:none!important;
}
/* Projection buttons: bigger than v1.0.40, still compact. */
.app-body .viewer-3d button,.viewer-3d button{
  font-size:8.4px!important;
  line-height:1.05!important;
  letter-spacing:.025em!important;
  padding:2px 6px!important;
  min-width:44px!important;
  border-radius:3px!important;
}
/* Middle summary/check table reduced by roughly one font step. */
.panel-mid-data .summary-cell .big,
.panel-mid-data .check-val,
.panel-mid-data .pill,
.panel-mid-data .util-pct{
  font-size:10.6px!important;
  line-height:1.14!important;
}
.panel-mid-data .summary-cell .lbl,
.panel-mid-data .check-lbl-main{
  font-size:12.0px!important;
  line-height:1.24!important;
}
.panel-mid-data .check-limit,
.panel-mid-data .headroom,
.panel-mid-data .check-lbl-note{
  font-size:10.8px!important;
  line-height:1.22!important;
}
.panel-mid-data .summary-cell{
  padding:10px 12px!important;
}
@media (max-width:1200px){
  .plan-toolbar{flex-basis:100%!important;justify-content:flex-start!important;}
}

.theme-bw svg .plan-column-rect{fill:#dbe7ff!important;stroke:#000000!important;stroke-width:2.1!important;}
.theme-bw svg .plan-column-cross{stroke:#000000!important;stroke-width:1.4!important;}
.theme-bw svg .plan-load-box-bg{fill:#ffffff!important;stroke:#111111!important;stroke-width:1.0!important;}
.theme-bw svg .plan-load-box text{fill:#111111!important;}
.theme-bw svg .plan-load-title{fill:#000000!important;font-weight:800!important;}
.theme-bw svg .plan-load-row-sub{fill:#333333!important;}


/* v1.0.43 hard overrides — font switching + layout fixes */
:root{
  --active-font-stack:'Inter','Segoe UI',Arial,sans-serif;
  --mono:var(--active-font-stack);
  --sans:var(--active-font-stack);
  --fs-body:13.4px;
  --fs-label:12.9px;
  --fs-small:11.8px;
  --fs-input:13px;
}
html[data-font="aptos"],body[data-font="aptos"]{--active-font-stack:'Aptos','Aptos Display','Segoe UI',Calibri,Arial,sans-serif;}
html[data-font="atkinson"],body[data-font="atkinson"]{--active-font-stack:'Atkinson Hyperlegible','Segoe UI',Arial,sans-serif;}
html[data-font="lato"],body[data-font="lato"]{--active-font-stack:'Lato','Segoe UI',Arial,sans-serif;}
html[data-font="inter"],body[data-font="inter"]{--active-font-stack:'Inter','Segoe UI',Arial,sans-serif;}
html[data-font="inconsolata"],body[data-font="inconsolata"]{--active-font-stack:'Inconsolata','Courier New',monospace;}
html[data-font="ibm"],body[data-font="ibm"]{--active-font-stack:'IBM Plex Mono','Courier New',monospace;}
html[data-font="jetbrains"],body[data-font="jetbrains"]{--active-font-stack:'JetBrains Mono','Courier New',monospace;}
html[data-font="arial"],body[data-font="arial"]{--active-font-stack:Arial,'Arial MT',Helvetica,sans-serif;}
html[data-font="arialblack"],body[data-font="arialblack"]{--active-font-stack:'Arial Black','Arial Bold',Gadget,sans-serif;}
html[data-font="bookantiqua"],body[data-font="bookantiqua"]{--active-font-stack:'Book Antiqua','Palatino Linotype',Palatino,serif;}
html[data-font="bookmanold"],body[data-font="bookmanold"]{--active-font-stack:'Bookman Old Style','URW Bookman',serif;}
html[data-font="calisto"],body[data-font="calisto"]{--active-font-stack:'Calisto MT','Bookman Old Style',serif;}
html[data-font="centurygothic"],body[data-font="centurygothic"]{--active-font-stack:'Century Gothic','Segoe UI',sans-serif;}
html[data-font="centuryschoolbook"],body[data-font="centuryschoolbook"]{--active-font-stack:'Century Schoolbook','Century Schoolbook L',serif;}
html[data-font="comicsans"],body[data-font="comicsans"]{--active-font-stack:'Comic Sans MS','Comic Sans',cursive,sans-serif;}
html[data-font="abadi"],body[data-font="abadi"]{--active-font-stack:'Abadi MT Condensed Light',Abadi,sans-serif;}
html[data-font="albertusxb"],body[data-font="albertusxb"]{--active-font-stack:'Albertus Extra Bold',Albertus,serif;}
html[data-font="albertusmed"],body[data-font="albertusmed"]{--active-font-stack:'Albertus Medium',Albertus,serif;}
html[data-font="antiqueolive"],body[data-font="antiqueolive"]{--active-font-stack:'Antique Olive',sans-serif;}
html[data-font="arialmt"],body[data-font="arialmt"]{--active-font-stack:'Arial MT',Arial,sans-serif;}
html[data-font="arialnarrow"],body[data-font="arialnarrow"]{--active-font-stack:'Arial Narrow',Arial,sans-serif;}
html[data-font="bazooka"],body[data-font="bazooka"]{--active-font-stack:BAZOOKA,cursive;}
html[data-font="boulder"],body[data-font="boulder"]{--active-font-stack:Boulder,sans-serif;}
html[data-font="calligrapher"],body[data-font="calligrapher"]{--active-font-stack:Calligrapher,cursive;}
html[data-font="cgomega"],body[data-font="cgomega"]{--active-font-stack:'CG Omega',sans-serif;}
html[data-font="cgtimes"],body[data-font="cgtimes"]{--active-font-stack:'CG Times',serif;}
html[data-font="charlesworth"],body[data-font="charlesworth"]{--active-font-stack:CHARLESWORTH,cursive;}
html[data-font="chaucer"],body[data-font="chaucer"]{--active-font-stack:Chaucer,cursive;}
html[data-font="clarendoncond"],body[data-font="clarendoncond"]{--active-font-stack:'Clarendon Condensed',serif;}
html[data-font="copperplatebold"],body[data-font="copperplatebold"]{--active-font-stack:'Copperplate Gothic Bold',serif;}
html[data-font="copperplatelight"],body[data-font="copperplatelight"]{--active-font-stack:'Copperplate Gothic Light',serif;}
html[data-font="allegro"],body[data-font="allegro"]{--active-font-stack:Allegro,cursive;}
html[data-font="amazonebt"],body[data-font="amazonebt"]{--active-font-stack:'Amazone BT',cursive;}
html[data-font="amertypebt"],body[data-font="amertypebt"]{--active-font-stack:'AmerType Md BT',sans-serif;}
html[data-font="arrusbt"],body[data-font="arrusbt"]{--active-font-stack:'Arrus BT',serif;}
html[data-font="aurorabt"],body[data-font="aurorabt"]{--active-font-stack:'AURORA CN BT',sans-serif;}
html[data-font="avantgardebkbt"],body[data-font="avantgardebkbt"]{--active-font-stack:'AvantGarde Bk BT',sans-serif;}
html[data-font="avantgardemdbt"],body[data-font="avantgardemdbt"]{--active-font-stack:'AvantGarde Md BT',sans-serif;}
html[data-font="bankgothicbt"],body[data-font="bankgothicbt"]{--active-font-stack:'BANKGOTHIC MD BT',sans-serif;}
html[data-font="benguiatbt"],body[data-font="benguiatbt"]{--active-font-stack:'Benguiat Bk BT',serif;}
html[data-font="bernhardfashionbt"],body[data-font="bernhardfashionbt"]{--active-font-stack:'BernhardFashion BT',cursive;}
html[data-font="bernhardmodbt"],body[data-font="bernhardmodbt"]{--active-font-stack:'BernhardMod BT',serif;}
html[data-font="binnerd"],body[data-font="binnerd"]{--active-font-stack:BinnerD,sans-serif;}
html[data-font="bremenbt"],body[data-font="bremenbt"]{--active-font-stack:'BREMEN BD BT',sans-serif;}
html[data-font="caslonopnbt"],body[data-font="caslonopnbt"]{--active-font-stack:'CaslonOpnface BT',serif;}
html[data-font="charterbdbt"],body[data-font="charterbdbt"]{--active-font-stack:'Charter Bd BT',serif;}
html[data-font="charterbt"],body[data-font="charterbt"]{--active-font-stack:'Charter BT',serif;}
html[data-font="chelthmbt"],body[data-font="chelthmbt"]{--active-font-stack:'ChelthmITC Bk BT',serif;}
html[data-font="cloisterblackbt"],body[data-font="cloisterblackbt"]{--active-font-stack:'CloisterBlack BT',cursive;}
html[data-font="copperplgothbt"],body[data-font="copperplgothbt"]{--active-font-stack:'CopperplGoth Bd BT',serif;}
html[data-font="english111bt"],body[data-font="english111bt"]{--active-font-stack:'English 111 Vivace BT',cursive;}
html[data-font="engraversgothicbt"],body[data-font="engraversgothicbt"]{--active-font-stack:'EngraversGothic BT',serif;}
html[data-font="exotc350bt"],body[data-font="exotc350bt"]{--active-font-stack:'Exotc350 Bd BT',sans-serif;}
html[data-font="freefrm721bt"],body[data-font="freefrm721bt"]{--active-font-stack:'Freefrm721 Blk BT',sans-serif;}
html[data-font="frnkgothicbt"],body[data-font="frnkgothicbt"]{--active-font-stack:'FrnkGothITC Bk BT',sans-serif;}
html,body,#root,.app-body,.panel,.card,.modal,.btn,.nav-btn,.inp,select,input,button,textarea,.viewer-3d,.viewer-3d *,svg text{font-family:var(--active-font-stack)!important;}
body{font-size:var(--fs-body)!important;}
.inp,.plan-live-input,.riba-select,select.inp,input.inp,textarea.inp{font-size:var(--fs-input)!important;min-height:30px!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:13px!important;line-height:1.22!important;}
.logo .title-full{font-size:13px!important;}
.logo .logo-main span:last-child{font-size:10px!important;}
/* Middle summary font down by one step */
.panel-mid-data .summary-cell .big,.panel-right .summary-cell .big,.summary-cell .big{font-size:17px!important;line-height:1.12!important;}
.panel-mid-data .check-val,.panel-mid-data .pill,.check-val,.pill{font-size:13.4px!important;}
.panel-mid-data .summary-cell .lbl,.panel-mid-data .check-lbl-main,.panel-mid-data .check-limit,.panel-mid-data .headroom{font-size:11.4px!important;}
/* Plan controls: compact load chips and clean PF spacing */
.viz-card select{font-size:11px!important;min-height:26px!important;padding:3px 7px!important;}
.viz-card .seg-btn{font-size:9px!important;padding:2px 6px!important;min-width:24px!important;line-height:1.15!important;}
.viz-card .seg-btn[title*="applied load"],.viz-card button.seg-btn{border-radius:3px!important;}
/* 3D ISO/ORTHO/PERSP buttons: readable but not dominating */
.viewer-3d button,.viewer-3d .view-btn,.viewer-3d [data-view-btn]{font-size:9.5px!important;padding:2px 7px!important;min-height:16px!important;}
/* Plan load box — right corner, readable, contrasting */
svg .plan-load-box-bg{fill:rgba(10,16,32,.91)!important;stroke:rgba(108,180,240,.55)!important;}
svg .plan-load-title{font-size:11px!important;font-weight:780!important;}
svg .plan-load-row{font-size:10.6px!important;font-weight:700!important;}
svg .plan-load-row-sub{font-size:9.8px!important;font-weight:600!important;}
/* B/W view: column and applied-load data must stay visible */
.theme-bw svg .plan-column-rect{fill:#d9e8ff!important;stroke:#000000!important;stroke-width:2.3!important;}
.theme-bw svg .plan-column-cross{stroke:#000000!important;stroke-width:1.5!important;}
.theme-bw svg .plan-load-box-bg{fill:#ffffff!important;stroke:#000000!important;stroke-width:1.2!important;}
.theme-bw svg .plan-load-box text,.theme-bw svg .plan-load-title,.theme-bw svg .plan-load-row,.theme-bw svg .plan-load-row-sub{fill:#000000!important;stroke:none!important;}
/* Bottom rail/tab title: remove heavy bold look */
.bottom-drawer-toolbar .bottom-title,.bottom-title-chip,.bottom-tab-rail{font-weight:600!important;letter-spacing:.025em!important;}
.bottom-title-chip{font-size:10.5px!important;padding:2px 6px!important;}
/* Avoid plan caption/heat text fighting the drawing */
.plan-heat-label{font-weight:600!important;opacity:.82!important;}


/* v1.0.45 — Inter default + compact summary/check display fonts */
:root{
  --active-font-stack:'Inter','Segoe UI',Arial,sans-serif;
  --mono:var(--active-font-stack);
  --sans:var(--active-font-stack);
}
html:not([data-font]),body:not([data-font]){
  --active-font-stack:'Inter','Segoe UI',Arial,sans-serif;
}
.panel-mid-data,
.panel-right,
.summary-table,
.check-table,
.check-row,
.summary-cell{
  font-family:var(--active-font-stack)!important;
}
.panel-mid-data .summary-cell,
.panel-right .summary-cell,
.summary-cell{
  padding:7px 9px!important;
}
.panel-mid-data .summary-cell .big,
.panel-right .summary-cell .big,
.summary-cell .big,
.summary-table .big{
  font-size:14.4px!important;
  line-height:1.04!important;
  letter-spacing:.005em!important;
  font-weight:700!important;
}
.panel-mid-data .check-val,
.panel-right .check-val,
.check-val,
.panel-mid-data .util-pct,
.panel-right .util-pct,
.util-pct{
  font-size:12.2px!important;
  line-height:1.10!important;
  font-weight:700!important;
}
.panel-mid-data .pill,
.panel-right .pill,
.pill{
  font-size:11.8px!important;
  line-height:1.08!important;
}
.panel-mid-data .check-lbl-main,
.panel-right .check-lbl-main,
.check-lbl-main{
  font-size:13.2px!important;
  line-height:1.18!important;
  font-weight:650!important;
}
.panel-mid-data .check-row,
.panel-right .check-row,
.check-row{
  padding-top:8px!important;
  padding-bottom:8px!important;
}
.panel-mid-data .check-limit,
.panel-right .check-limit,
.panel-mid-data .headroom,
.panel-right .headroom,
.panel-mid-data .summary-cell .lbl,
.panel-right .summary-cell .lbl{
  font-size:11.2px!important;
  line-height:1.18!important;
}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{
  font-size:12.4px!important;
  line-height:1.16!important;
}


/* v1.0.47 — summary table numeric values set to one consistent readable size */
.panel-mid-data table td:nth-child(3),
.panel-mid-data table td:nth-child(4),
.panel-mid-data table td:nth-child(5),
.panel-right table td:nth-child(3),
.panel-right table td:nth-child(4),
.panel-right table td:nth-child(5){
  font-size:13.5px!important;
  line-height:1.18!important;
  font-weight:650!important;
  letter-spacing:-0.01em!important;
}

/* Linked node transfer note: keep validation visible without long transfer text breaking cards. */
.linked-column-info{
  line-height:1.34!important;
  overflow-wrap:anywhere!important;
}
.linked-column-info b{
  color:var(--pass)!important;
}

/* Requested compact UI pass: reduce regular display text by 1px while leaving the tiny labels alone. */
body{font-size:12px!important;}
.inp,.plan-live-input,.riba-select,select.inp,input.inp,textarea.inp,.theme-select{font-size:13px!important;}
.inp-label,.toggle-label,.check-lbl-main,.summary-cell .lbl,.file-item,.toggle-sub,.alt-size-cell .as-dim{font-size:12px!important;}
.inp-unit,.inp-hint,.check-lbl-note,.check-limit,.headroom,.util-pct,.da1-box,.info-box,.opt-tip,.pc-symbol-note,.pc-factor-help,.alt-size-cell .as-props{font-size:10.2px!important;}
.card-title,.viz-title,.input-title,.right-title,.bottom-title,.section-title{font-size:11.4px!important;}
.summary-cell .big,.panel-mid-data .summary-cell .big,.panel-right .summary-cell .big,.summary-table .big{font-size:13.4px!important;}
.check-val,.panel-mid-data .check-val,.panel-right .check-val{font-size:11.2px!important;}
.pill,.panel-mid-data .pill,.panel-right .pill{font-size:10.8px!important;}
.panel-mid-data table td:nth-child(3),.panel-mid-data table td:nth-child(4),.panel-mid-data table td:nth-child(5),
.panel-right table td:nth-child(3),.panel-right table td:nth-child(4),.panel-right table td:nth-child(5){font-size:12.5px!important;}
.linked-column-info{font-size:10px!important;}

/* v1.0.68 — node-transfer lock states + compact project header */
.inp-row.node-locked{opacity:.58;filter:saturate(.55);}
.inp-row.node-locked .inp{background:rgba(148,163,184,.18)!important;border-color:rgba(148,163,184,.35)!important;color:var(--dim)!important;cursor:not-allowed!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02);}
.inp-row.node-locked .inp-hint{color:var(--amber)!important;font-size:10px!important;line-height:1.35!important;}
.node-lock-note{border-color:rgba(245,173,79,.38)!important;background:rgba(245,173,79,.08)!important;color:var(--sub)!important;}
.hdr-centre input[title="Job number"]{width:82px!important;font-size:12.5px!important;padding:3px 6px!important;height:25px!important;}
.hdr-centre input[title="Project name"]{font-size:12.5px!important;padding:3px 6px!important;height:25px!important;}
.hdr-centre span{line-height:1.05;}
.hdr-centre span[style*="uppercase"]{font-size:8.8px!important;}
.lc-top{width:100%;min-width:0;}
.lc-top .col-centre-full{flex:1 1 auto;min-width:0;}
.lc-top .col-right-full.right-drawer-pinned{flex:0 0 var(--col-right,420px)!important;width:var(--col-right,420px)!important;max-width:40vw;order:3;}
@media (max-width:1450px){.lc-top .col-right-full.right-drawer-pinned{flex-basis:min(var(--col-right,390px),360px)!important;width:min(var(--col-right,390px),360px)!important;max-width:36vw!important;}.hdr-centre input[title="Job number"]{width:74px!important}.hdr-centre input[title="Project name"]{font-size:12px!important}}

/* v1.0.93 — node consistency pass */
.civil-et-mode-foundation .hdr-carbon{display:none!important;}
.fdn-carbon-scope{display:flex;gap:6px;margin-left:8px;align-items:center;}
.fdn-carbon-scope button{border:1px solid var(--border2);background:rgba(255,255,255,.035);color:var(--text);border-radius:6px;padding:4px 9px;font:900 10px var(--mono);cursor:pointer;}
.fdn-carbon-scope button.active{background:var(--amber);color:#111;border-color:transparent;}
.working-card-v92{margin-top:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden;}
.working-card-v92-head{padding:7px 10px;cursor:pointer;display:flex;align-items:center;gap:6px;user-select:none;background:rgba(245,173,79,.035);}
.working-card-v92-head span{color:var(--amber);font-size:12px;font-weight:900;font-family:var(--mono);letter-spacing:.06em;}
.working-card-v92-head em{margin-left:auto;font-size:10px;color:var(--dim);font-style:normal;}
.working-card-v92-body{padding:8px 12px 10px;border-top:1px solid var(--border);font-family:var(--mono);font-size:11px;line-height:1.58;color:var(--sub);}
.work-row-v92{display:grid;grid-template-columns:1.35fr 2fr auto;gap:10px;padding:3px 0;border-bottom:1px dashed var(--border);align-items:start;}
.work-eq-v92{font-size:10.5px;line-height:1.35;}
.work-result-v92{font-size:11px;}
.work-label-v92{color:var(--blue);font-weight:800;}
.work-eq-v92{color:var(--sub);}
.work-note-v92{color:var(--dim);font-style:italic;margin-left:6px;font-size:10px;}
.work-result-v92{color:var(--text);font-weight:900;white-space:nowrap;text-align:right;}
.work-result-v92 span{color:var(--amber);margin-left:4px;font-size:10.5px;}
/* make foundation lifecycle card match base plate rhythm */
.gwp-view-toggle,.seg-ctrl.gwp-view-toggle{display:grid!important;grid-template-columns:1fr 1fr!important;border:1px solid var(--border2)!important;border-radius:7px!important;overflow:hidden!important;margin:8px 0 10px!important;}
.gwp-view-toggle .seg-btn,.seg-ctrl.gwp-view-toggle .seg-btn{border:0!important;background:rgba(255,255,255,.035)!important;color:var(--text)!important;padding:7px 8px!important;font-family:var(--mono)!important;font-weight:900!important;font-size:10px!important;cursor:pointer!important;}
.gwp-view-toggle .seg-btn.active,.seg-ctrl.gwp-view-toggle .seg-btn.active{background:var(--amber)!important;color:#111!important;}
.gwp-chart-stack{gap:8px!important;}
.gwp-stage-row-v14{border-radius:7px!important;}


/* v1.0.93 — base plate / foundation visual alignment */
.civil-et-mode-baseplate .civil-et-right-replacement > .card + .card,
.civil-et-mode-baseplate .civil-et-right-replacement > .civil-et-card + .civil-et-card{margin-top:12px!important;}


/* v1.0.97 — foundation input boxes match base plate node for Dark Navy / Warm Sand */
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left{
  background:#10192e!important;color:#f5f8fc!important;
  --text:#f5f8fc!important;--sub:#c3d0e4!important;--dim:#8fa3c0!important;
  --card:#1a2540!important;--surface:#121a2d!important;--border:#26334f!important;--border2:#32456a!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .card{background:#1a2540!important;color:#f5f8fc!important;border-color:#26334f!important;}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .inp:not(:disabled),
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left input:not([type=checkbox]):not([type=radio]):not(:disabled),
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left select:not(:disabled),
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left textarea:not(:disabled){
  background:#f8fafc!important;color:#07111f!important;-webkit-text-fill-color:#07111f!important;
  border:1px solid rgba(8,18,35,.38)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.85)!important;color-scheme:light!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left select:not(:disabled) option{background:#ffffff!important;color:#07111f!important;}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .node-locked .inp,
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .node-locked input,
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .node-locked select{background:#dbe3ee!important;color:#475569!important;-webkit-text-fill-color:#475569!important;opacity:1!important;}


/* v1.0.97 — dropdown and collapsed-summary contrast cleanup */
select option,
.panel-left select option,
.civil-et-workspace select option,
.civil-et-node select option,
.civil-et-link-menu select option,
.civil-et-column-shell select option,
.civil-et-card select option{
  background:#ffffff!important;
  color:#07111f!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip{
  background:#ffffff!important;
  color:#07111f!important;
  border-color:#d8e2f0!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip b,
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip .chip-value{
  color:#07111f!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip .chip-label{
  color:#334155!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip.pass{
  background:#e8fff0!important;
  color:#047857!important;
  border-color:#2dd36f!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip.fail{
  background:#fff0ef!important;
  color:#b91c1c!important;
  border-color:#ef4444!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip.warn{
  background:#fff8df!important;
  color:#92400e!important;
  border-color:#f59e0b!important;
}
html.civil-et-mode-foundation:not(.light):not(.theme-bw) .panel-left .summary-chip.muted{
  background:#eef2f7!important;
  color:#475569!important;
}

/* v1.0.99 — ETAG/Tedds order, resizable base-plate input panel, dropdown contrast */
.civil-et-baseplate-left select,
.civil-et-baseplate-left .civil-et-field select{
  background:#f8fafc!important;
  color:#07111f!important;
  -webkit-text-fill-color:#07111f!important;
  color-scheme:light!important;
}
.civil-et-baseplate-left select option,
.civil-et-baseplate-left .civil-et-field option{
  background:#ffffff!important;
  color:#07111f!important;
  -webkit-text-fill-color:#07111f!important;
}
.bp-etag-body{display:grid!important;gap:10px!important;}
.bp-etag-group{border-top:1px solid var(--border);padding-top:9px;margin-top:2px;}
.bp-etag-group:first-child{border-top:0;padding-top:0;margin-top:0;}
.bp-etag-group-title{color:var(--blue);font-family:var(--mono);font-weight:900;font-size:11px;letter-spacing:.03em;margin:0 0 7px;text-transform:none;}


/* v1.0.99 — base plate input panel resize + ETAG/Tedds layout */
.civil-et-baseplate-shell{grid-template-columns:minmax(300px,var(--bp-left-width,360px)) 8px minmax(480px,1fr)!important;}
.civil-et-baseplate-resizer{width:8px;cursor:col-resize;background:linear-gradient(180deg,rgba(245,173,79,.20),rgba(148,163,184,.10));border-left:1px solid var(--border2);border-right:1px solid var(--border2);position:relative;z-index:12;}
.civil-et-baseplate-resizer:after{content:'';position:absolute;left:3px;top:50%;width:2px;height:56px;transform:translateY(-50%);border-radius:999px;background:rgba(245,173,79,.72);box-shadow:0 0 10px rgba(245,173,79,.28);}
.civil-et-baseplate-resizer:hover{background:rgba(245,173,79,.22);}
.bp-etag-tedds-body{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px!important;align-items:start;}
.bp-etag-tedds-col{display:grid;gap:10px;min-width:0;}
.bp-etag-note{font-size:10px;line-height:1.35;color:var(--sub);border:1px solid rgba(118,169,255,.25);background:rgba(37,99,235,.08);border-radius:8px;padding:8px;margin:0 0 8px;}
.civil-et-baseplate-left input,.civil-et-baseplate-left select,.input-panel input,.input-panel select,.civil-et-mode-foundation input,.civil-et-mode-foundation select{color-scheme:light!important;}
.civil-et-baseplate-left select option,.input-panel select option,.civil-et-mode-foundation select option{background:#ffffff!important;color:#07111f!important;-webkit-text-fill-color:#07111f!important;}
@media(max-width:980px){.bp-etag-tedds-body{grid-template-columns:1fr!important}.civil-et-baseplate-shell{grid-template-columns:1fr!important}.civil-et-baseplate-resizer{display:none!important}}

/* v1.0.102 — ETAG validation and working-font tuning */
.bp-etag-warning{border:1px solid rgba(248,113,113,.55);background:rgba(127,29,29,.22);color:#fecaca;border-radius:8px;padding:8px 10px;margin:6px 0;font-size:11px;line-height:1.35;font-weight:800;}

.bp-restore-manual-btn{
  width:100%;
  justify-content:center;
  margin:6px 0 4px;
  border-color:rgba(251,176,64,.55)!important;
  background:rgba(251,176,64,.16)!important;
  color:var(--text)!important;
  font-weight:900!important;
}
.bp-restore-manual-btn:hover{
  background:rgba(251,176,64,.28)!important;
}

/* v1.0.140 — linked foundation source pill */
.node-source-pill{display:inline-flex;align-items:center;gap:4px;border:1px solid rgba(147,172,211,.35);border-radius:999px;padding:1px 7px;font-size:10px;font-family:var(--mono);font-weight:800;vertical-align:middle;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--sub);background:rgba(255,255,255,.04)}
.node-source-pill.ok{border-color:rgba(89,217,142,.40);color:var(--pass);background:rgba(89,217,142,.08)}
.node-source-pill.warn{border-color:rgba(255,183,77,.40);color:var(--amber);background:rgba(255,183,77,.08)}

/* v1.0.143 — align foundation typography with base plate module and enable BP card drag feedback */
.panel-mid-data .card,
.panel-mid-data .working-card-v92,
.panel-mid-data .summary-strip,
.panel-mid-data table,
.panel-left .card,
.panel-left .inp-row,
.panel-left .toggle-row{
  font-family:var(--active-font-stack)!important;
}
.panel-mid-data .card-title,
.panel-mid-data .section-title,
.panel-mid-data .working-card-v92-head span,
.panel-mid-data table thead th,
.panel-mid-data h3,
.panel-mid-data h4{
  color:var(--amber)!important;
  font-weight:900!important;
  letter-spacing:.055em!important;
  text-transform:uppercase!important;
}
.panel-mid-data table,
.panel-mid-data table td,
.panel-mid-data .work-eq-v92,
.panel-mid-data .work-label-v92,
.panel-mid-data .work-result-v92{
  font-size:11.6px!important;
  line-height:1.42!important;
}
.panel-mid-data table td:nth-child(3),
.panel-mid-data table td:nth-child(4),
.panel-mid-data table td:nth-child(5),
.panel-mid-data .work-result-v92{
  font-size:12.6px!important;
  font-weight:900!important;
}
.panel-mid-data .work-label-v92{color:#5fa8ff!important;font-weight:900!important;}
.panel-mid-data .working-card-v92-head{background:rgba(245,173,79,.045)!important;}
.bp-card{transition:border-color .12s ease, box-shadow .12s ease, opacity .12s ease;}
.bp-card[draggable="true"] h3{cursor:grab;}
.bp-card[draggable="true"] h3:active{cursor:grabbing;}
.bp-card-move{margin-left:8px;color:var(--dim);font:900 13px var(--mono);letter-spacing:-.18em;opacity:.75;}
.bp-card-dragging{opacity:.55;}
.bp-card-drop-target{border-color:var(--amber)!important;box-shadow:0 0 0 1px rgba(245,173,79,.35),0 0 18px rgba(245,173,79,.18)!important;}

/* v1.0.143 — foundation module typography pass to match base plate module rhythm */
html.civil-et-mode-foundation .panel-mid-data,
html.civil-et-mode-foundation .panel-mid-data .card,
html.civil-et-mode-foundation .panel-mid-data table,
html.civil-et-mode-foundation .panel-mid-data .check-row,
html.civil-et-mode-foundation .panel-mid-data .working-card-v92{
  font-family:var(--active-font-stack)!important;
  font-size:12px!important;
  letter-spacing:.005em!important;
}
html.civil-et-mode-foundation .panel-mid-data .card{
  border-radius:10px!important;
  border-color:var(--border2)!important;
}
html.civil-et-mode-foundation .panel-mid-data .card-title,
html.civil-et-mode-foundation .panel-mid-data .section-title,
html.civil-et-mode-foundation .panel-mid-data .viz-title,
html.civil-et-mode-foundation .panel-mid-data h3,
html.civil-et-mode-foundation .panel-mid-data h4{
  color:var(--amber)!important;
  font-family:var(--active-font-stack)!important;
  font-size:11.8px!important;
  line-height:1.15!important;
  font-weight:900!important;
  letter-spacing:.055em!important;
  text-transform:uppercase!important;
}
html.civil-et-mode-foundation .panel-mid-data .card-title span,
html.civil-et-mode-foundation .panel-mid-data .section-title span{
  font-size:10.6px!important;
  font-weight:750!important;
  letter-spacing:.015em!important;
  text-transform:none!important;
}
html.civil-et-mode-foundation .panel-mid-data table{
  font-size:12px!important;
  line-height:1.28!important;
}
html.civil-et-mode-foundation .panel-mid-data table thead th,
html.civil-et-mode-foundation .panel-mid-data th{
  color:var(--amber)!important;
  font-family:var(--active-font-stack)!important;
  font-size:11.1px!important;
  line-height:1.16!important;
  font-weight:900!important;
  letter-spacing:.055em!important;
  text-transform:uppercase!important;
  padding:7px 8px!important;
}
html.civil-et-mode-foundation .panel-mid-data table td,
html.civil-et-mode-foundation .panel-mid-data td{
  font-family:var(--active-font-stack)!important;
  font-size:12px!important;
  line-height:1.22!important;
  padding:7px 8px!important;
  font-weight:700!important;
}
html.civil-et-mode-foundation .panel-mid-data table td:first-child{
  font-size:12.2px!important;
  font-weight:850!important;
  letter-spacing:.003em!important;
}
html.civil-et-mode-foundation .panel-mid-data table td:nth-child(2){
  font-size:11.4px!important;
  font-weight:700!important;
  color:var(--sub)!important;
}
html.civil-et-mode-foundation .panel-mid-data table td:nth-child(3),
html.civil-et-mode-foundation .panel-mid-data table td:nth-child(4),
html.civil-et-mode-foundation .panel-mid-data table td:nth-child(5),
html.civil-et-mode-foundation .panel-mid-data table td:nth-child(6),
html.civil-et-mode-foundation .panel-mid-data .check-val,
html.civil-et-mode-foundation .panel-mid-data .util-pct{
  font-size:12.4px!important;
  line-height:1.12!important;
  font-weight:900!important;
  letter-spacing:-.005em!important;
}
html.civil-et-mode-foundation .panel-mid-data .pill{
  font-size:10.2px!important;
  line-height:1!important;
  font-weight:900!important;
  padding:4px 10px!important;
  border-radius:5px!important;
}
html.civil-et-mode-foundation .panel-mid-data .check-lbl-main{
  font-size:12.2px!important;
  line-height:1.2!important;
  font-weight:850!important;
}
html.civil-et-mode-foundation .panel-mid-data .check-limit,
html.civil-et-mode-foundation .panel-mid-data .headroom,
html.civil-et-mode-foundation .panel-mid-data .check-lbl-note,
html.civil-et-mode-foundation .panel-mid-data .summary-strip,
html.civil-et-mode-foundation .panel-mid-data .da1-box{
  font-size:10.8px!important;
  line-height:1.34!important;
}
html.civil-et-mode-foundation .panel-mid-data .working-card-v92-head{
  padding:8px 11px!important;
  background:rgba(245,173,79,.045)!important;
}
html.civil-et-mode-foundation .panel-mid-data .working-card-v92-head span{
  color:var(--amber)!important;
  font-size:11.5px!important;
  font-weight:900!important;
  letter-spacing:.055em!important;
}
html.civil-et-mode-foundation .panel-mid-data .working-card-v92-head em{
  font-size:10px!important;
  font-weight:650!important;
}
html.civil-et-mode-foundation .panel-mid-data .working-card-v92-body{
  font-size:11.2px!important;
  line-height:1.48!important;
}
html.civil-et-mode-foundation .panel-mid-data .work-row-v92{
  grid-template-columns:1.32fr 2fr auto!important;
  gap:10px!important;
  padding:4px 0!important;
}
html.civil-et-mode-foundation .panel-mid-data .work-label-v92{
  font-size:11.2px!important;
  color:#5fa8ff!important;
  font-weight:900!important;
}
html.civil-et-mode-foundation .panel-mid-data .work-eq-v92{
  font-size:11px!important;
  color:var(--sub)!important;
}
html.civil-et-mode-foundation .panel-mid-data .work-result-v92{
  font-size:11.6px!important;
  font-weight:900!important;
  color:var(--text)!important;
}
html.civil-et-mode-foundation .panel-mid-data .work-result-v92 span{
  color:var(--amber)!important;
  font-size:10.8px!important;
  font-weight:900!important;
}
html.civil-et-mode-foundation .panel-mid-data .summary-strip .summary-chip,
html.civil-et-mode-foundation .panel-mid-data .summary-chip{
  font-size:10.4px!important;
  font-weight:850!important;
  letter-spacing:.01em!important;
}

/* v1.0.145 — foundation B/W detail drawing scale + linked support section fixes */
.fs-btn.active{background:var(--amber)!important;color:#000!important;border-color:var(--amber)!important;box-shadow:0 0 0 1px rgba(245,173,79,.22) inset;}
.foundation-detail-svg-wrap{width:100%;height:100%;min-height:260px;display:flex;align-items:center;justify-content:center;background:#f7f7f5;border:1px solid rgba(15,23,42,.18);border-radius:8px;overflow:hidden;cursor:grab;}
.foundation-detail-svg-wrap:active{cursor:grabbing;}
.foundation-detail-svg{width:100%;height:100%;display:block;background:#f7f7f5;}
.foundation-detail-svg text{fill:#000!important;font-family:Inter,Arial,sans-serif!important;font-size:15px;font-weight:700;}
.foundation-detail-svg .dim{font-size:15px;font-weight:800;}
.foundation-detail-svg .note{font-size:13px;font-weight:700;}
.foundation-detail-svg .title{font-size:18px;font-weight:900;}
.foundation-detail-svg .thin{stroke:#111;stroke-width:1.15;fill:none;}
.foundation-detail-svg .med{stroke:#111;stroke-width:1.65;fill:none;}
.foundation-detail-svg .heavy{stroke:#111;stroke-width:2.6;fill:none;}
.foundation-detail-svg .conc{fill:#efefed;stroke:#111;stroke-width:1.35;}
.foundation-detail-svg .soil{fill:#f2f2f0;stroke:#555;stroke-width:1.0;}
.foundation-detail-svg .rebar{stroke:#111;stroke-width:1.05;}
.foundation-detail-svg .dash{stroke-dasharray:7 6;}
.foundation-detail-svg .support{fill:none;stroke:#111;stroke-width:1.55;}
.foundation-detail-svg .supportFill{fill:#111;stroke:#111;stroke-width:.9;}
.foundation-detail-svg .supportOutline{fill:none;stroke:#111;stroke-width:1.0;}
.foundation-detail-svg .rebarCircle{fill:#111;stroke:#111;stroke-width:.55;}
.foundation-detail-svg .basePlate{fill:none;stroke:#111;stroke-width:1.25;}
.foundation-detail-svg .bolt{fill:none;stroke:#111;stroke-width:1.0;}
.foundation-detail-svg .cornerP{font-size:12px;font-weight:800;}
/* v1.0.172 — steel design module update */
.foundation-detail-svg-wrap{position:relative;}
.foundation-detail-zoom-tools{position:absolute;right:14px;top:12px;display:flex;align-items:center;gap:6px;z-index:5;background:rgba(255,255,255,.92);border:1px solid rgba(17,24,39,.18);border-radius:9px;padding:5px 7px;box-shadow:0 8px 20px rgba(0,0,0,.16);font-family:Inter,Arial,sans-serif;color:#111;}
.foundation-detail-zoom-tools button{border:1px solid rgba(17,24,39,.20);background:#fff;color:#111;border-radius:6px;min-width:26px;height:24px;line-height:20px;font-size:14px;font-weight:800;cursor:pointer;}
.foundation-detail-zoom-tools b{font-size:12px;min-width:42px;text-align:center;color:#111;}

/* v1.0.185 — match column-module clickable carbon chart glow */
.fdn-carbon-bar rect:not([fill="transparent"]),
.fdn-carbon-bar text{
  transition:filter .14s ease, opacity .14s ease, transform .14s ease;
}
.fdn-carbon-bar:hover rect:not([fill="transparent"]),
.fdn-carbon-bar.active rect:not([fill="transparent"]){
  filter:drop-shadow(0 0 7px var(--fdnGlow,#5fd88a)) drop-shadow(0 0 14px rgba(95,216,138,.22));
}
.fdn-carbon-bar:hover text,
.fdn-carbon-bar.active text{
  filter:drop-shadow(0 0 5px var(--fdnGlow,#5fd88a));
}
.fdn-carbon-bar:hover rect:not([fill="transparent"]){
  opacity:.98!important;
}

/* v1.0.185 override */
 .fdn-carbon-bar rect,
.fdn-carbon-bar text{
  transition:filter .14s ease, opacity .14s ease, transform .14s ease;
}
.fdn-carbon-bar:hover rect:not([fill="transparent"]),
.fdn-carbon-bar.active rect:not([fill="transparent"]){
  filter:drop-shadow(0 0 8px rgba(95,216,138,.58)) drop-shadow(0 0 18px rgba(95,216,138,.32));
}
.fdn-carbon-bar:hover text,
.fdn-carbon-bar.active text{
  filter:drop-shadow(0 0 6px rgba(95,216,138,.50));
}
.fdn-carbon-bar:hover rect:not([fill="transparent"]){
  opacity:.98!important;
}
.fdn-carbon-bar.active rect:not([fill="transparent"]){
  opacity:.95!important;
}


/* v1.0.185 — unified clickable source carbon chart glow */
.carbon-source-bar rect,
.carbon-source-bar text,
.fdn-carbon-bar rect,
.fdn-carbon-bar text{
  transition:filter .14s ease, opacity .14s ease, transform .14s ease;
}
.carbon-source-bar:hover rect:not([fill="transparent"]),
.carbon-source-bar.active rect:not([fill="transparent"]),
.fdn-carbon-bar:hover rect:not([fill="transparent"]),
.fdn-carbon-bar.active rect:not([fill="transparent"]){
  filter:drop-shadow(0 0 8px rgba(95,216,138,.58)) drop-shadow(0 0 18px rgba(95,216,138,.32)) !important;
}
.carbon-source-bar:hover text,
.carbon-source-bar.active text,
.fdn-carbon-bar:hover text,
.fdn-carbon-bar.active text{
  filter:drop-shadow(0 0 6px rgba(95,216,138,.50)) !important;
}
.carbon-source-bar:hover rect:not([fill="transparent"]),
.fdn-carbon-bar:hover rect:not([fill="transparent"]){ opacity:.98!important; }
.carbon-source-bar.active rect:not([fill="transparent"]),
.fdn-carbon-bar.active rect:not([fill="transparent"]){ opacity:.95!important; }


/* v1.0.208 — remove project-wide green chart glow/halo. Keep hover interaction without neon. */
.carbon-source-bar rect,
.carbon-source-bar text,
.fdn-carbon-bar rect,
.fdn-carbon-bar text,
.carbon-source-bar:hover rect:not([fill="transparent"]),
.carbon-source-bar.active rect:not([fill="transparent"]),
.fdn-carbon-bar:hover rect:not([fill="transparent"]),
.fdn-carbon-bar.active rect:not([fill="transparent"]),
.carbon-source-bar:hover text,
.carbon-source-bar.active text,
.fdn-carbon-bar:hover text,
.fdn-carbon-bar.active text{
  filter:none!important;
  text-shadow:none!important;
  transition:opacity .12s ease!important;
}
.carbon-source-bar:hover rect:not([fill="transparent"]),
.fdn-carbon-bar:hover rect:not([fill="transparent"]){opacity:.96!important;}
.carbon-source-bar.active rect:not([fill="transparent"]),
.fdn-carbon-bar.active rect:not([fill="transparent"]){opacity:.92!important;}
.bluebook-expanded-route{display:flex;gap:8px;align-items:center;justify-content:space-between;margin:0 0 10px 0;padding:8px 10px;border:1px solid var(--border2);border-radius:9px;background:rgba(255,255,255,.035);}
.bluebook-expanded-route select{min-width:280px;height:30px;font-weight:800;}


/* v1.0.214 — compact Blue Book tables and remove chart glow consistently. */
.bluebook-wide-table-wrap{
  overflow:auto!important;
  width:100%!important;
}
.bluebook-wide-table{
  width:max-content!important;
  min-width:0!important;
  max-width:none!important;
  table-layout:auto!important;
  border-collapse:collapse!important;
}
.bluebook-wide-table th,.bluebook-wide-table td{
  padding:4px 7px!important;
  min-width:34px;
  max-width:190px;
}
.bluebook-wide-table .bb-empty{
  min-width:10px!important;
  width:10px!important;
  padding-left:2px!important;
  padding-right:2px!important;
  color:transparent!important;
}
.bluebook-excel-table thead th[colspan]{
  text-align:center!important;
}
.gwp-donut path,
.gwp-donut path.gwp-linked-active,
.gwp-donut path.gwp-linked-muted,
.bp-svg-slice,
.bp-svg-slice.is-hot,
.carbon-source-bar rect,
.fdn-carbon-bar rect,
.carbon-source-bar text,
.fdn-carbon-bar text{
  filter:none!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
.gwp-donut path.gwp-linked-active{transform:none!important;}
.gwp-stage-row,
.gwp-stage-row.gwp-linked-active,
.gwp-stage-row.gwp-linked-muted,
.gwp-stage-row span,
.gwp-stage-row b{
  filter:none!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
.bp-life-donut,
.bp-life-donut:hover,
.bp-steel-bar.active i,
.bp-steel-bar:hover i{
  filter:none!important;
  box-shadow:none!important;
}
.gwp-donut{
  width:min(300px,100%)!important;
  height:auto!important;
}


/* v1.0.215 — steel Blue Book table readability and chart consistency */
.steel-column-bluebook-panel .bluebook-wide-table{font-size:9.8px!important;line-height:1.32!important;}
.steel-column-bluebook-panel .bluebook-wide-table th,
.steel-column-bluebook-panel .bluebook-wide-table td{padding:5px 8px!important;min-width:42px!important;max-width:none!important;overflow:visible!important;text-overflow:clip!important;}
.steel-column-bluebook-panel .bluebook-wide-table thead th{white-space:normal!important;line-height:1.35!important;vertical-align:bottom!important;min-width:54px!important;}
.steel-column-bluebook-panel .bluebook-excel-table thead th[colspan]{min-width:150px!important;white-space:normal!important;text-align:center!important;}
.steel-column-bluebook-panel .bluebook-wide-table tbody th,
.steel-column-bluebook-panel .bluebook-wide-table tbody td{white-space:nowrap!important;}
.steel-column-bluebook-panel .bluebook-wide-table .bb-empty{min-width:12px!important;width:12px!important;max-width:12px!important;padding-left:2px!important;padding-right:2px!important;}
.gwp-donut,.gwp-donut *,
.steel-gwp-card .bp-svg-slice,
.steel-gwp-card .bp-svg-slice.is-hot,
.steel-gwp-card .bp-svg-slice.is-muted,
.bp-life-donut,.bp-life-donut:hover,
.carbon-source-bar rect,.carbon-source-bar text,
.fdn-carbon-bar rect,.fdn-carbon-bar text,
.col-steel-bar rect,.col-steel-bar text,
.bp-steel-svg-bar rect,.bp-steel-svg-bar text{filter:none!important;box-shadow:none!important;text-shadow:none!important;}
.steel-gwp-card .bp-svg-slice.is-hot,
.gwp-donut path.gwp-linked-active{transform:none!important;}
.steel-gwp-card .bp-svg-slice{transform-origin:155px 145px!important;}
.steel-gwp-card .gwp-donut{width:min(300px,100%)!important;height:auto!important;display:block!important;margin:0 auto!important;}


/* v1.0.219 — remove green chart borders but restore pie/donut glow by slice colour. */
.carbon-source-bar rect:not([fill="transparent"]),
.fdn-carbon-bar rect:not([fill="transparent"]),
.col-steel-bar rect:not([fill="transparent"]),
.bp-steel-svg-bar rect:not([fill="transparent"]){
  stroke:none!important;
  stroke-width:0!important;
}
.gwp-stage-row.gwp-linked-active{
  border-color:transparent!important;
  box-shadow:none!important;
}
.gwp-donut path,
.bp-svg-slice{
  transition:filter .16s ease, opacity .16s ease, transform .16s ease;
  transform-box:fill-box;
  transform-origin:center;
}
.gwp-donut path.gwp-linked-active,
.bp-svg-slice.is-hot{
  filter:drop-shadow(0 0 9px currentColor) drop-shadow(0 0 20px currentColor)!important;
  opacity:1!important;
}
.gwp-donut path.gwp-linked-muted,
.bp-svg-slice.is-muted{
  opacity:.36!important;
}
.bp-life-donut:hover{
  filter:drop-shadow(0 0 12px rgba(245,173,79,.45))!important;
}


/* v1.0.219 — Blue Book grade table colour coding and no-overlap table cells. */
.bluebook-excel-table{border-collapse:collapse!important;width:max-content!important;table-layout:auto!important;}
.bluebook-excel-table th,.bluebook-excel-table td{white-space:nowrap!important;min-width:64px!important;padding:6px 10px!important;overflow:visible!important;text-overflow:clip!important;line-height:1.32!important;}
.bluebook-excel-table thead th{white-space:normal!important;min-width:82px!important;vertical-align:bottom!important;text-align:center!important;}
.bluebook-excel-table tbody th:nth-child(1){min-width:132px!important;text-align:left!important;}
.bluebook-excel-table tbody th:nth-child(2){min-width:70px!important;text-align:left!important;}
.bluebook-excel-table tbody th:nth-child(3){min-width:42px!important;text-align:center!important;}
.bluebook-excel-table .bb-empty{min-width:14px!important;width:14px!important;max-width:18px!important;padding-left:2px!important;padding-right:2px!important;color:transparent!important;}
.bluebook-excel-block.bb-grade-s275 .bluebook-excel-table th,
.bluebook-excel-block.bb-grade-s275 .bluebook-excel-table td{background:#f7d5d8!important;color:#182132!important;border-color:rgba(28,36,52,.22)!important;}
.bluebook-excel-block.bb-grade-s275 .bluebook-excel-table tbody tr:nth-child(even) th,
.bluebook-excel-block.bb-grade-s275 .bluebook-excel-table tbody tr:nth-child(even) td{background:#fae5e7!important;}
.bluebook-excel-block.bb-grade-s355 .bluebook-excel-table th,
.bluebook-excel-block.bb-grade-s355 .bluebook-excel-table td{background:#d8efd6!important;color:#132317!important;border-color:rgba(28,52,36,.22)!important;}
.bluebook-excel-block.bb-grade-s355 .bluebook-excel-table tbody tr:nth-child(even) th,
.bluebook-excel-block.bb-grade-s355 .bluebook-excel-table tbody tr:nth-child(even) td{background:#e8f6e6!important;}
.bluebook-excel-block.bb-grade-s420 .bluebook-excel-table th,
.bluebook-excel-block.bb-grade-s420 .bluebook-excel-table td{background:#dfd3f6!important;color:#161121!important;border-color:rgba(44,34,68,.22)!important;}
.bluebook-excel-block.bb-grade-s420 .bluebook-excel-table tbody tr:nth-child(even) th,
.bluebook-excel-block.bb-grade-s420 .bluebook-excel-table tbody tr:nth-child(even) td{background:#ebe5f8!important;}
.bluebook-excel-block.bb-grade-s460 .bluebook-excel-table th,
.bluebook-excel-block.bb-grade-s460 .bluebook-excel-table td{background:#fde7b8!important;color:#20180c!important;border-color:rgba(60,44,16,.22)!important;}
.bluebook-excel-block.bb-grade-s460 .bluebook-excel-table tbody tr:nth-child(even) th,
.bluebook-excel-block.bb-grade-s460 .bluebook-excel-table tbody tr:nth-child(even) td{background:#fff1d2!important;}
.bluebook-excel-block.bb-grade-s275 .bluebook-node-detail-title,
.bluebook-excel-block.bb-grade-s355 .bluebook-node-detail-title,
.bluebook-excel-block.bb-grade-s420 .bluebook-node-detail-title,
.bluebook-excel-block.bb-grade-s460 .bluebook-node-detail-title{color:var(--accent)!important;}
.steel-column-bluebook-panel .bluebook-excel-table th,.steel-column-bluebook-panel .bluebook-excel-table td{min-width:66px!important;padding:6px 9px!important;}
.steel-column-bluebook-panel .bluebook-excel-table thead th{min-width:86px!important;}


/* v1.0.219 — selected-section-only Blue Book tables and safer column widths. */
.bluebook-excel-table th,.bluebook-excel-table td{min-width:72px!important;max-width:none!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;}
.bluebook-excel-table thead th{min-width:96px!important;white-space:normal!important;line-height:1.24!important;}
.bluebook-excel-table tbody th:nth-child(1){min-width:150px!important;}
.bluebook-excel-table tbody th:nth-child(2){min-width:84px!important;}
.bluebook-excel-table tbody th:nth-child(3){min-width:54px!important;}
.bluebook-excel-table .bb-empty{min-width:18px!important;width:18px!important;max-width:22px!important;}
.bluebook-node-detail-block{overflow:hidden!important;}
.bluebook-wide-table-wrap{overflow:auto!important;max-width:100%!important;}


/* v1.0.219 — Blue Book tables: readable selected-section rows and separated routes. */
.bluebook-node-form label{grid-template-columns:120px minmax(270px,1fr)!important;}
.bluebook-node-form select{min-width:320px!important;max-width:100%!important;text-overflow:ellipsis!important;}
.bluebook-node-form label:nth-child(3) select{min-width:390px!important;}
.steel-column-bluebook-panel .bluebook-excel-table th,
.steel-column-bluebook-panel .bluebook-excel-table td,
.bluebook-node-detail-block .bluebook-excel-table th,
.bluebook-node-detail-block .bluebook-excel-table td{min-width:82px!important;padding:7px 10px!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;}
.steel-column-bluebook-panel .bluebook-excel-table thead th,
.bluebook-node-detail-block .bluebook-excel-table thead th{min-width:110px!important;white-space:normal!important;line-height:1.22!important;vertical-align:bottom!important;}
.steel-column-bluebook-panel .bluebook-excel-table tbody th:nth-child(1),
.bluebook-node-detail-block .bluebook-excel-table tbody th:nth-child(1){min-width:168px!important;}
.steel-column-bluebook-panel .bluebook-excel-table tbody th:nth-child(2),
.bluebook-node-detail-block .bluebook-excel-table tbody th:nth-child(2){min-width:90px!important;}
.bluebook-wide-table-wrap{overflow:auto!important;max-width:100%!important;}
.bluebook-route-summary{white-space:normal!important;overflow:visible!important;}

/* v1.0.224 — Blue Book axial-force/bending header alignment */
.bluebook-excel-table thead th.bb-long-span{max-width:none!important;min-width:180px!important;white-space:normal!important;line-height:1.25!important;text-align:center!important;vertical-align:middle!important;}
.bluebook-excel-table thead th.bb-zone-head{font-size:10px!important;letter-spacing:.02em!important;white-space:normal!important;text-align:center!important;vertical-align:bottom!important;}
.bluebook-excel-table thead th.bb-long-text{padding-left:10px!important;padding-right:10px!important;}
.bluebook-excel-table thead th.bb-small-head,.bluebook-excel-table thead th.bb-num-head{white-space:nowrap!important;min-width:42px!important;max-width:80px!important;text-align:center!important;}
.bluebook-excel-table thead th.bb-lm-cell{min-width:46px!important;max-width:58px!important;width:46px!important;}
.bluebook-excel-table .bb-empty-span{min-width:10px!important;width:auto!important;max-width:none!important;padding-left:2px!important;padding-right:2px!important;}
.bluebook-wide-table.bb-axial-force-bending-table thead th.bb-long-span{min-width:220px!important;}
.bluebook-wide-table.bb-axial-force-bending-table thead th.bb-zone-head{background:inherit!important;}
.bluebook-wide-table.bb-axial-force-bending-table thead tr.bb-afb-axis-row th{vertical-align:middle!important;}
.bluebook-symbol-inline{font-size:10.5px;line-height:1.35;color:var(--sub);border-left:2px solid rgba(245,173,79,.65);padding:4px 0 4px 8px;margin:4px 0 6px 0;}


/* v1.0.224 — Blue Book data tables: prevent clipped route names and damaged headers. */
.bluebook-node-form label{grid-template-columns:130px minmax(340px,1fr)!important;}
.bluebook-node-form select{min-width:340px!important;max-width:100%!important;text-overflow:ellipsis!important;}
.bluebook-node-form label:nth-child(3) select{min-width:430px!important;}
.bluebook-wide-table-wrap{overflow:auto!important;max-width:100%!important;}
.bluebook-excel-table{border-collapse:collapse!important;table-layout:auto!important;width:max-content!important;min-width:auto!important;}
.bluebook-excel-table th,.bluebook-excel-table td{white-space:nowrap!important;min-width:76px!important;padding:7px 10px!important;overflow:visible!important;text-overflow:clip!important;}
.bluebook-excel-table thead th{white-space:normal!important;line-height:1.2!important;vertical-align:bottom!important;min-width:90px!important;}
.bluebook-excel-table tbody th:nth-child(1){min-width:150px!important;}
.bluebook-excel-table tbody th:nth-child(2){min-width:88px!important;}
.steel-column-bluebook-panel select{min-width:430px!important;max-width:620px!important;}
.bluebook-route-summary{white-space:normal!important;overflow:visible!important;}
.bluebook-symbol-notes{margin-top:8px;padding:8px 10px;border-left:3px solid var(--amber);font-size:11px;color:var(--muted);line-height:1.35;}


/* v1.0.225 node-map bottom rail flash guard */
html.civil-et-mode-nodes .bottom-drawer-toolbar .bottom-title{position:relative!important;min-width:260px!important;color:transparent!important;overflow:visible!important;}
html.civil-et-mode-nodes .bottom-drawer-toolbar .bottom-title > *{visibility:hidden!important;}
html.civil-et-mode-nodes .bottom-drawer-toolbar .bottom-title::before{content:'Project Data / Future Development';position:absolute;left:0;top:50%;transform:translateY(-50%);color:var(--amber)!important;visibility:visible!important;white-space:nowrap;font-weight:800;letter-spacing:.05em;}


/* v1.0.231 — Column input compaction + global large-font controls */
:root{--cet-big-font-delta:0px;--cet-med-font-delta:0px;}
:root[data-big-font-level="-6"]{--cet-big-font-delta:-8px;--cet-med-font-delta:-4px;}
:root[data-big-font-level="-5"]{--cet-big-font-delta:-7px;--cet-med-font-delta:-3.5px;}
:root[data-big-font-level="-4"]{--cet-big-font-delta:-6px;--cet-med-font-delta:-3px;}
:root[data-big-font-level="-3"]{--cet-big-font-delta:-5px;--cet-med-font-delta:-2.5px;}
:root[data-big-font-level="-2"]{--cet-big-font-delta:-3.5px;--cet-med-font-delta:-2px;}
:root[data-big-font-level="-1"]{--cet-big-font-delta:-2px;--cet-med-font-delta:-1px;}
:root[data-big-font-level="0"]{--cet-big-font-delta:0px;--cet-med-font-delta:0px;}
:root[data-big-font-level="1"]{--cet-big-font-delta:1px;--cet-med-font-delta:.5px;}
:root[data-big-font-level="2"]{--cet-big-font-delta:2px;--cet-med-font-delta:1px;}
.font-size-control{display:flex;align-items:center;gap:3px;border:1px solid var(--border2);background:var(--card);border-radius:var(--r2);padding:2px 4px;height:30px;flex-shrink:0;}
.font-size-btn{border:1px solid var(--border2);background:var(--surface);color:var(--text);border-radius:4px;padding:3px 7px;font-family:var(--mono);font-size:11px;font-weight:900;cursor:pointer;line-height:1;}
.font-size-btn:hover{border-color:var(--amber);color:var(--amber);}
.font-size-level{min-width:20px;text-align:center;font-family:var(--mono);font-size:10px;font-weight:900;color:var(--sub);}
.card-title,.viz-title,.modal-head h2,.summary-cell .big,.bp-util-head b,.bp-util-head span,.steel-node-title,.civil-et-node-title,.steel-selected-title,.steel-section-node select,.civil-et-column-left .civil-et-field select,.civil-et-column-main .steel-column-card-title,.column-header-status,.bp-header-status{font-size:clamp(10.5px, calc(13px + var(--cet-big-font-delta)), 28px)!important;}
.logo .title-full,.civil-et-carbon-total,.civil-et-kpi b,.civil-et-scors-badge b,.civil-et-scors-pointer-badge,.summary-kpi b,.summary-kpi strong,.bp-qty-tile strong,.bp-qty-tile b,.bp-gwp-total,.bp-gwp-total b,.bp-life-total,.carbon-total,.carbon-total b,.gwp-total,.gwp-total b,.steel-alt-option b,.steel-alt-option strong,.steel-three-title,.steel-three-section,.column-picker-btn,.baseplate-picker-btn,.file-menu-btn,.report-btn{font-size:clamp(10.5px, calc(13px + var(--cet-big-font-delta)), 28px)!important;}
.civil-et-card h3,.bp-gwp-card .card-title,.bp-right-section-title,.steel-module-title-card h3,.steel-input-panel .civil-et-card h3,.civil-et-field input,.civil-et-field select,.civil-et-table,.steel-grade-table th,.steel-grade-table td,.steel-buckling-head,.steel-frame-table td,.steel-frame-table th,.bp-header-status span,.column-header-status span,.bp-util-note,.bp-qty-tile span,.bp-life-field input,.steel-manual-load-note,.bluebook-note{font-size:clamp(10.5px, calc(12.5px + var(--cet-med-font-delta)), 18px)!important;}
.column-load-stacks{display:flex;flex-direction:column;gap:7px;min-width:0;}
.column-load-stack{border:1px solid var(--border);border-radius:6px;background:rgba(255,255,255,.025);padding:5px;min-width:0;}
.column-load-stack-title{font-family:var(--mono);font-size:10px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--amber);margin:0 0 4px 2px;}
.civil-et-load-build-compact{width:auto!important;min-width:0!important;table-layout:auto!important;}
.civil-et-load-build-compact th,.civil-et-load-build-compact td{padding:4px 5px!important;white-space:nowrap!important;}
.civil-et-load-build-compact input{width:56px!important;min-width:0!important;}
.civil-et-column-left{min-width:250px!important;}
.civil-et-column-left .steel-manual-load-note{font-size:10.5px!important;line-height:1.35!important;}


/* v1.0.236 — hard fallback for A-/A+ on non-inline CSS text.
   Main coverage is handled by the DOM scaler in index.html; these selectors catch static module classes. */
:root[data-big-font-level="-6"]{--cet-all-med-delta:-5px;--cet-all-big-delta:-8px;}
:root[data-big-font-level="-5"]{--cet-all-med-delta:-4.2px;--cet-all-big-delta:-7px;}
:root[data-big-font-level="-4"]{--cet-all-med-delta:-3.5px;--cet-all-big-delta:-6px;}
:root[data-big-font-level="-3"]{--cet-all-med-delta:-2.7px;--cet-all-big-delta:-5px;}
:root[data-big-font-level="-2"]{--cet-all-med-delta:-1.8px;--cet-all-big-delta:-3.5px;}
:root[data-big-font-level="-1"]{--cet-all-med-delta:-0.9px;--cet-all-big-delta:-2px;}
:root[data-big-font-level="0"]{--cet-all-med-delta:0px;--cet-all-big-delta:0px;}
:root[data-big-font-level="1"]{--cet-all-med-delta:.6px;--cet-all-big-delta:1px;}
:root[data-big-font-level="2"]{--cet-all-med-delta:1.1px;--cet-all-big-delta:2px;}
:where(.app-header,.app-body,.right-drawer,.bottom-drawer,.civil-et-node-map,.civil-et-node-library)
:where(input,select,textarea,button,label,th,td,p,li,a,b,strong,span,h1,h2,h3,h4,h5,h6,.card-title,.viz-title,.inp-label,.inp,.check-val,.summary-cell .big,.civil-et-kpi b,.bp-qty-tile b,.bp-qty-tile strong,.gwp-stage-row,.bluebook-excel-table th,.bluebook-excel-table td,.steel-grade-table th,.steel-grade-table td,.civil-et-table th,.civil-et-table td){
  --cet-static-font-delta:var(--cet-all-med-delta);
}
:where(.app-header,.app-body,.right-drawer,.bottom-drawer,.civil-et-node-map,.civil-et-node-library)
:where(.summary-cell .big,.civil-et-kpi b,.bp-qty-tile b,.bp-qty-tile strong,.gwp-total b,.carbon-total b,.civil-et-carbon-total,.civil-et-scors-pointer-badge,.logo .title-full){
  --cet-static-font-delta:var(--cet-all-big-delta);
}


/* v1.0.237 — column minimum readable sizes at A- levels.
   Prevents old module-specific calc rules from pushing column status, pickers and select text below usable size. */
html.civil-et-mode-column .column-header-status{font-size:var(--cet-col-status,12px)!important;}
html.civil-et-mode-column .column-header-status span{font-size:var(--cet-col-status-sub,10px)!important;}
html.civil-et-mode-column .column-picker-btn,
html.civil-et-mode-column .civil-et-column-shell input,
html.civil-et-mode-column .civil-et-column-shell select,
html.civil-et-mode-column .civil-et-column-shell textarea,
html.civil-et-mode-column #civil-et-column-right input,
html.civil-et-mode-column #civil-et-column-right select,
html.civil-et-mode-column #civil-et-column-right textarea{font-size:var(--cet-col-control,13px)!important;line-height:1.25!important;}
html.civil-et-mode-column .civil-et-column-shell .civil-et-field > span,
html.civil-et-mode-column .civil-et-column-shell .civil-et-card h3,
html.civil-et-mode-column #civil-et-column-right .card-title{font-size:var(--cet-col-normal,12.5px)!important;}


/* ===================================================================================
   v1.0.343 UNIFORM FONT SCALE - one ramp for the whole app.
   Roles: value (inputs + primary data numbers) / label (headings, field labels) /
   display (KPI + carbon totals) / unit (m2, m3, kgCO2e suffixes - never below 11.5px
   so the unicode superscript glyphs stay legible) / hint (explanatory text, floor 11px).
   Keyed to the existing A-/A+ deltas so the font-size control keeps working.
   Append-only: this file's last-!important-wins cascade is the working mechanism, and
   these rules also out-rank the (non-!important) module-injected stylesheets.
   =================================================================================== */
:root{
  --fs-value:calc(13.5px + var(--cet-med-font-delta,0px));
  --fs-label:calc(12.5px + var(--cet-med-font-delta,0px));
  --fs-unit:calc(12.5px + var(--cet-med-font-delta,0px));
  --fs-hint:calc(11px + var(--cet-med-font-delta,0px));
  --fs-display:calc(17px + var(--cet-big-font-delta,0px));
  --fs-display-xl:calc(21px + var(--cet-big-font-delta,0px));
}
/* VALUES - every editable input and primary data number reads at the same size */
.inp,select.inp,input.inp,textarea.inp,.plan-live-input,.riba-select,
.check-val,.pill,.util-pct,
.panel-mid-data table td,.panel-right table td,
.civil-et-field input,.civil-et-field select,
.civil-et-node-form input,.civil-et-node-form select,.civil-et-node-form textarea,
.gwp-factor-grid .inp,.bp-life-field input,
.civil-et-takeoff-table td,.civil-et-table td{font-size:var(--fs-value)!important;}
/* the results panels carry higher-specificity descendant rules (10.2-10.8px eras) that
   would outrank the bare selectors above - repeat the ramp at their specificity */
.panel-mid-data .pill,.panel-right .pill,html.civil-et-mode-foundation .panel-mid-data .pill,
.panel-mid-data .check-val,.panel-right .check-val,html.civil-et-mode-foundation .panel-mid-data .check-val,
.panel-mid-data .util-pct,.panel-right .util-pct,html.civil-et-mode-foundation .panel-mid-data .util-pct{font-size:var(--fs-value)!important;}
/* 13px pills must not keep the compact-era 2px 6px shell */
.pill,.panel-mid-data .pill,.panel-right .pill,html.civil-et-mode-foundation .panel-mid-data .pill{padding:3px 8px!important;line-height:1.2!important;}
/* LABELS - headings and field labels */
.inp-label,.toggle-label,.check-lbl-main,.summary-cell .lbl,.file-item,
.card-title,.viz-title,.civil-et-card h3,
.civil-et-table th,.steel-frame-table th,.civil-et-takeoff-table th,
.bp-qty-tile span,.civil-et-qty-tile span{font-size:var(--fs-label)!important;}
/* DISPLAY - KPI and carbon headline numbers get their design size back */
.summary-cell .big,.civil-et-qty-tile b{font-size:var(--fs-display)!important;}
.civil-et-kpi b,.civil-et-carbon-total,.bp-qty-tile b,.bp-qty-tile strong,
.carbon-total,.gwp-total b,.civil-et-scors-badge b{font-size:var(--fs-display-xl)!important;}
/* UNITS - m2 / m3 / kgCO2e strings: 11.5px floor keeps superscript glyphs readable */
.inp-unit,.plan-live-unit,.gwp-factor-grid .inp-unit,
.civil-et-qty-tile em,.bp-qty-tile em,.slab-summary-tile em,
.civil-et-scors-badge span,.hdr-carbon-breakdown span{font-size:var(--fs-unit)!important;}
sup,sub{font-size:.82em;}
/* HINTS - explanatory text stays visually smaller but never below 11px */
.inp-hint,.check-lbl-note,.check-limit,.headroom,.toggle-sub,.opt-tip,
.pc-symbol-note,.pc-factor-help,.da1-box,.info-box,.alt-size-cell .as-props,
.civil-et-carbon-sub,.civil-et-note,.bp-util-note,.bp-element-note,
.steel-svg-help,.steel-member-note,.steel-three-controls button,
.ldset-lbl,.ldset-chk,.ldset-ref-drop,
.beam-node-chip span,.beam-udl-width-lbl,.beam-item-row span.tag,
.beam-support-menu label,.beam-load-mini small,.beam-section-field,
.slab-node-chip span,.slab-preset-custom,.slab-3d-dim-lbl,
.slab-summary-tile span,.slab-opt-spec,
.f3d-note,.f3d-wt-sub,.f3d-wt-src,.f3d-legend span,
.f3d-rules-panel .rp-tbl th,.f3d-rules-panel .rp-tbl td,
.cfl-results-table th,.civil-et-side-output-sub{font-size:var(--fs-hint)!important;}
/* charts: one text size everywhere - inline font shorthands keep weight/family, this fixes size */
.slab-concrete-comparison svg text,.beam-concrete-comparison svg text,.ifc-concrete-comparison svg text,
.col-steel-comparison svg text,.slab-steel-comparison svg text,.beam-steel-comparison svg text,
.ifc-steel-comparison svg text,.ifc-rebar-comparison svg text,.ifc-timber-comparison svg text,
.bp-steel-comparison svg text,.col-steel-comparison-card svg text,
/* CE-51: the foundation steel bars are the one exception. Their names ("UK reinforcement bar")
   are far longer than the CEM labels this rule was written for — at 18px "reinforcement" drew
   ~127px wide inside an 85px column, so the four names ran straight through each other. That
   chart sizes its own text (steelChartLayout in app.js wraps each name and picks a size that
   fits its column), so the !important here has to let its font-size attribute through. */
svg g.carbon-source-bar:not(.fdn-steel-bar) text,svg g.col-steel-bar text,svg g.bp-steel-svg-bar text{font-size:18px!important;}
/* material-split / GWP legend rows: readable size, label truncates before the % can spill */
.gwp-stage-row{font-size:var(--fs-unit)!important;min-width:0;}
.gwp-stage-row .stage-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.gwp-stage-row .stage-percent{white-space:nowrap;}
/* right-panel carbon data rows + calc working text ride the same numeric scale as the
   charts; data is regular weight - only headline/summary numbers stay bold */
#civil-et-column-right .civil-et-bar-row,#civil-et-column-right .civil-et-bar-row span,
#civil-et-column-right .civil-et-bar-row b{font-size:var(--cet-col-table,12.5px)!important;font-weight:600!important;}
.working-card-v92-body,.work-eq-v92,.work-note-v92,.work-result-v92 span,
.slab-work-card,.beam-work-card{font-size:var(--fs-unit)!important;}
/* node-map micro chrome keeps a tighter 10px floor (dense card internals) */
.civil-et-node-load-grid span,.civil-et-node-load-grid b{font-size:10px!important;}
.civil-et-node-load-grid input{font-size:11px!important;}
/* the header font <select> gets a class + width cap (was unstyled and could blow the row) */
.font-select{max-width:150px;}
@media (max-width:1600px){.font-select{max-width:110px;}}
