/* Pile drivability tool stylesheet, v0.2.2 (31 Oct 2026): GeoMan ANZ drawing-sheet look.
   Follows website/DESIGN.md and website/static/css/site.css so the tool and its WEB-025
   landing page read as one product: paper sheet on the desk colour, 3 px drawing frame with a
   1 px inner rule, title block, GeosansLight for display text (one weight, never bold),
   Jost 400 for body text, site palette, thin black linework and tabular figures.
   Rules: no white text on gold; khaki for rules only; every selector scoped under #gw-app
   (tests/test_webapp_render.py), every hook gw- prefixed. Fonts are self-hosted copies of the
   site's files (static/fonts, OFL text alongside Jost). No inline styles needed. */

@font-face {
  font-family: 'GeosansLight';
  src: url('../fonts/GeosansLight.woff2') format('woff2');
  font-weight: normal; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Jost';
  src: url('../fonts/Jost-Latin.woff2') format('woff2');
  font-weight: 100 900; font-style: normal; font-display: swap;
}

#gw-app {
  --gw-black: #000000; --gw-ink: #232B2B; --gw-ink-soft: #4A5454; --gw-paper: #FFFFFF;
  --gw-gold: #BF910C; --gw-gold-dark: #614806; --gw-rust: #914604; --gw-khaki: #9B8C60;
  --gw-steel: #32668C; --gw-desk: #111616; --gw-grey: #E8E6E1; --gw-grey-2: #F4F3F0;
  --gw-bg: var(--gw-paper); --gw-line: var(--gw-black); --gw-line-soft: #B9B6AE;
  --gw-geo: 'GeosansLight', 'Segoe UI', system-ui, sans-serif;
  --gw-body: 'Jost', 'Segoe UI', system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --gw-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --gw-frame: 14px; --gw-measure: 42.5rem;
  --gw-s1: 4px; --gw-s2: 8px; --gw-s3: 16px; --gw-s4: 24px; --gw-s5: 32px;
}
#gw-app, #gw-app *, #gw-app *::before, #gw-app *::after { box-sizing: border-box; }
#gw-app {
  margin: 0; min-height: 100vh; background: var(--gw-desk); color: var(--gw-ink);
  font-family: var(--gw-body); font-weight: 400; font-size: 16px; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
#gw-app img { max-width: 100%; height: auto; }
#gw-app .gw-num, #gw-app td, #gw-app input, #gw-app .gw-kpi b, #gw-app .gw-calc { font-variant-numeric: tabular-nums lining-nums; }
#gw-app a { color: var(--gw-steel); text-decoration-thickness: 1px; text-underline-offset: 3px; }
#gw-app a:hover { color: var(--gw-rust); }
#gw-app :focus-visible { outline: 2px solid var(--gw-steel); outline-offset: 2px; }
#gw-app h1, #gw-app h2, #gw-app h3, #gw-app h4 { font-family: var(--gw-geo); font-weight: normal; color: var(--gw-ink); line-height: 1.2; }
#gw-app b, #gw-app strong { font-weight: 500; }

/* ---------- the sheet: paper on the desk, drawing window, title block ---------- */
#gw-app .gw-skip { position: absolute; left: -9999px; top: 8px; background: var(--gw-paper); color: var(--gw-ink); padding: 8px 14px; z-index: 300; }
#gw-app .gw-skip:focus { left: 8px; }
#gw-app .gw-sheet { min-height: 100vh; max-width: 1440px; margin: 0 auto; background: var(--gw-paper);
  display: flex; flex-direction: column; border-left: 1px solid var(--gw-khaki); border-right: 1px solid var(--gw-khaki); }
#gw-app .gw-window { position: relative; flex: 1; margin: var(--gw-frame) var(--gw-frame) 0; border: 3px solid var(--gw-black);
  padding: 6px; display: flex; flex-direction: column; min-width: 0; }
#gw-app .gw-window::before { content: ""; position: absolute; inset: 6px; border: 1px solid var(--gw-black); pointer-events: none; }

#gw-app .gw-masthead { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px;
  padding: 16px 24px; border-bottom: 1px solid var(--gw-black); margin: 1px; }
#gw-app .gw-brandmark { display: inline-flex; align-items: center; min-height: 44px; }
#gw-app .gw-brandmark-img { display: block; width: auto; height: 72px; }
#gw-app .gw-sitenav ul, #gw-app .gw-toolnav ul { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 8px; margin: 0; padding: 0; }
#gw-app .gw-sitenav a, #gw-app .gw-toolnav a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 12px;
  font-family: var(--gw-geo); color: var(--gw-ink); text-decoration: none; letter-spacing: 0.12em; font-size: 16px;
  border-bottom: 2px solid transparent; }
#gw-app .gw-sitenav a:hover, #gw-app .gw-toolnav a:hover { border-bottom-color: var(--gw-gold); color: var(--gw-ink); }
#gw-app .gw-toolnav a[aria-current="page"] { border-bottom-color: var(--gw-ink); }

#gw-app .gw-toolstrip { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 24px;
  padding: 4px 24px; margin: 0 1px; border-bottom: 1px solid var(--gw-black); background: var(--gw-grey-2); }
#gw-app .gw-crumbs { margin: 0; font-family: var(--gw-geo); letter-spacing: 0.08em; font-size: 15px; color: var(--gw-ink-soft); }
#gw-app .gw-crumbs span[aria-hidden] { margin: 0 4px; color: var(--gw-khaki); }
#gw-app .gw-toolnav a { font-size: 15px; letter-spacing: 0.1em; }

#gw-app .gw-sitefooter { border-top: 1px solid var(--gw-black); margin: auto 1px 1px; padding: 14px 24px; font-size: 15px; color: var(--gw-ink-soft); }
#gw-app .gw-sitefooter p { margin: 0; }

#gw-app .gw-titleblock { font-family: var(--gw-geo); margin: 0 var(--gw-frame) var(--gw-frame); border: 3px solid var(--gw-black);
  border-top-width: 0; background: var(--gw-black); }
#gw-app .gw-titleblock dl { display: grid; grid-template-columns: 1.1fr 1fr 1.6fr 0.8fr 0.5fr;
  grid-template-areas: "project ref title date rev"; gap: 1.5px; margin: 0; }
#gw-app .gw-cell { position: relative; background: var(--gw-paper); min-height: 124px; padding: 26px 12px 14px;
  display: flex; align-items: center; justify-content: center; text-align: center; min-width: 0; }
#gw-app .gw-cell dt { position: absolute; top: 6px; left: 10px; font-size: 11px; letter-spacing: 0.18em; line-height: 1; color: var(--gw-ink-soft); }
#gw-app .gw-cell dd { margin: 0; font-size: clamp(15px, 1.8vw, 21px); letter-spacing: 0.12em; color: var(--gw-ink); text-transform: uppercase; white-space: nowrap; }
#gw-app .gw-cell-project { grid-area: project; background: var(--gw-gold); padding: 24px 20px 16px; }
#gw-app .gw-cell-project dt { color: var(--gw-ink); }
#gw-app .gw-cell-project dd { display: block; width: 100%; white-space: normal; }
#gw-app .gw-tb-wordmark { display: block; width: 100%; max-width: 216px; height: auto; margin: 0 auto; }
#gw-app .gw-cell-ref { grid-area: ref; }
#gw-app .gw-cell-title { grid-area: title; }
#gw-app .gw-cell-title dd { white-space: normal; letter-spacing: 0.14em; }
#gw-app .gw-cell-date { grid-area: date; }
#gw-app .gw-cell-rev { grid-area: rev; }

/* ---------- page head, disclaimer, worked example strip ---------- */
#gw-app .gw-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 24px;
  padding: clamp(20px, 3vw, 36px) clamp(16px, 3vw, 40px) 12px; }
#gw-app .gw-head h1, #gw-app .gw-doc h1 { font-size: clamp(30px, 4.4vw, 48px); letter-spacing: 0.08em; margin: 0 0 8px; }
#gw-app .gw-lede { margin: 0; font-size: clamp(17px, 2vw, 20px); color: var(--gw-ink-soft); max-width: 40em; }
#gw-app .gw-ver { display: inline-block; margin-left: 6px; font-family: var(--gw-geo); letter-spacing: 0.12em; font-size: 14px;
  border: 1px solid var(--gw-ink); padding: 0 8px; color: var(--gw-ink); vertical-align: 2px; }
#gw-app .gw-headctl { display: flex; align-items: center; gap: 10px; }

#gw-app .gw-units { display: inline-flex; border: 1px solid var(--gw-black); }
#gw-app .gw-units-btn { min-height: 44px; min-width: 52px; padding: 0 14px; border: 0; background: var(--gw-paper); color: var(--gw-ink);
  font-family: var(--gw-geo); font-size: 16px; letter-spacing: 0.14em; cursor: pointer; }
#gw-app .gw-units-btn + .gw-units-btn { border-left: 1px solid var(--gw-black); }
#gw-app .gw-units-btn.gw-active { background: var(--gw-ink); color: var(--gw-paper); }
#gw-app .gw-guidance-btn { min-height: 44px; padding: 0 16px; border: 1px solid var(--gw-black); background: var(--gw-paper); color: var(--gw-ink);
  font-family: var(--gw-geo); font-size: 16px; letter-spacing: 0.12em; cursor: pointer; }
#gw-app .gw-guidance-btn:hover, #gw-app .gw-guidance-btn[aria-expanded="true"] { background: var(--gw-gold); }

#gw-app .gw-disclaimer { display: grid; grid-template-columns: auto 1fr; align-items: stretch; margin: 8px clamp(16px, 3vw, 40px) 0;
  border: 2px solid var(--gw-black); background: var(--gw-paper); }
#gw-app .gw-disclaimer-tag { margin: 0; display: flex; align-items: center; padding: 0 14px; background: var(--gw-gold); color: var(--gw-ink);
  border-right: 2px solid var(--gw-black); font-family: var(--gw-geo); letter-spacing: 0.2em; font-size: 15px; }
#gw-app .gw-disclaimer-text { margin: 0; padding: 12px 16px; font-size: 16px; line-height: 1.55; }
#gw-app .gw-disclaimer--inline { margin: 0 0 16px; }

#gw-app .gw-hero { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; padding: 18px clamp(16px, 3vw, 40px) 4px; }
#gw-app .gw-heronotes { margin: 0; padding-left: 1.4em; font-size: 15px; color: var(--gw-ink-soft); max-width: 46em; }
#gw-app .gw-heronotes li::marker { font-family: var(--gw-geo); color: var(--gw-gold-dark); }

/* ---------- tabs: drawing sheet index ---------- */
#gw-app .gw-tabs { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin: 18px clamp(16px, 3vw, 40px) 0;
  border: 1px solid var(--gw-black); background: var(--gw-black); gap: 1px; }
#gw-app .gw-tabbtn { position: relative; text-align: left; background: var(--gw-paper); color: var(--gw-ink); border: 0; cursor: pointer;
  padding: 10px 12px 10px; min-height: 64px; font-family: var(--gw-geo); font-size: 16px; letter-spacing: 0.06em; line-height: 1.25; }
#gw-app .gw-tabno { display: block; font-size: 11px; letter-spacing: 0.18em; color: var(--gw-ink-soft); margin-bottom: 2px; }
#gw-app .gw-tabbtn small { display: block; font-family: var(--gw-body); font-size: 12.5px; letter-spacing: 0; color: var(--gw-ink-soft); margin-top: 2px; }
#gw-app .gw-tabbtn:hover { background: var(--gw-grey-2); }
#gw-app .gw-tabbtn.gw-active { background: var(--gw-paper); box-shadow: inset 0 -4px 0 var(--gw-gold); }
#gw-app .gw-tabbtn.gw-active .gw-tabno { color: var(--gw-gold-dark); }
#gw-app .gw-tabbtn:focus-visible { outline: 2px solid var(--gw-steel); outline-offset: -4px; }

/* ---------- layout ---------- */
#gw-app .gw-main { padding: 0 clamp(16px, 3vw, 40px) 40px; min-width: 0; }
#gw-app .gw-tab { display: none; }
#gw-app .gw-tab.gw-active { display: block; }
#gw-app .gw-tab:focus-visible { outline-offset: 4px; }
#gw-app .gw-cols { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 24px; align-items: start; }
#gw-app .gw-cols > * { min-width: 0; }
#gw-app .gw-panel { margin: 24px 0 0; padding: 0; min-width: 0; }
#gw-app .gw-panel h2 { margin: 0 0 6px; font-size: clamp(22px, 2.6vw, 28px); letter-spacing: 0.06em; }
#gw-app .gw-panel h3 { margin: 20px 0 6px; font-size: 18px; letter-spacing: 0.08em; }
#gw-app .gw-sub { margin: 0 0 14px; color: var(--gw-ink-soft); font-size: 16px; max-width: 40em; }
#gw-app .gw-note { font-size: 14.5px; color: var(--gw-ink-soft); margin: 10px 0 0; line-height: 1.6; }
#gw-app .gw-note--inline { display: inline; margin: 0 0 0 6px; }

/* ---------- inputs: drawing schedules ---------- */
#gw-app .gw-card { border: 1px solid var(--gw-black); margin: 16px 0; background: var(--gw-paper); }
#gw-app .gw-cardhead { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; padding: 8px 12px; margin: 0;
  border-bottom: 1px solid var(--gw-black); background: var(--gw-grey); }
#gw-app .gw-cardhead h3 { margin: 0; font-size: 15px; letter-spacing: 0.16em; text-transform: uppercase; }
#gw-app .gw-cardhead span { font-size: 14px; color: var(--gw-ink-soft); }
#gw-app .gw-card > .gw-hint, #gw-app .gw-card > .gw-field, #gw-app .gw-card > #gw-soil-rows, #gw-app .gw-card > .gw-btn { margin-left: 12px; margin-right: 12px; }
#gw-app .gw-card > .gw-btn { margin-bottom: 12px; }
#gw-app .gw-card > .gw-hint { margin-bottom: 10px; }
#gw-app .gw-formgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
#gw-app .gw-formgrid--gap { margin-top: 10px; border-top: 1px solid var(--gw-black); }
#gw-app .gw-formgrid > .gw-field { margin: 0; padding: 10px 12px 12px; border-bottom: 1px solid var(--gw-line-soft); }
#gw-app .gw-formgrid > .gw-field:nth-child(odd) { border-right: 1px solid var(--gw-line-soft); }
#gw-app .gw-formgrid > .gw-field:nth-last-child(-n+2):nth-child(odd), #gw-app .gw-formgrid > .gw-field:last-child { border-bottom: 0; }
#gw-app .gw-field { margin: 12px 0; }
#gw-app .gw-field label { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 4px;
  font-family: var(--gw-geo); font-size: 15px; letter-spacing: 0.06em; color: var(--gw-ink); }
#gw-app .gw-field label em { font-style: normal; font-family: var(--gw-body); font-size: 13px; letter-spacing: 0.02em; color: var(--gw-ink-soft);
  border: 1px solid var(--gw-line-soft); padding: 0 6px; white-space: nowrap; }
#gw-app input, #gw-app select, #gw-app textarea { width: 100%; min-height: 44px; padding: 8px 10px; font: inherit; font-size: 16px;
  color: var(--gw-ink); background: var(--gw-paper); border: 1px solid var(--gw-ink); border-radius: 0; }
#gw-app input[type="number"] { text-align: right; }
#gw-app input:focus-visible, #gw-app select:focus-visible, #gw-app textarea:focus-visible { outline: 2px solid var(--gw-steel); outline-offset: 0; border-color: var(--gw-steel); }
#gw-app textarea { font-family: var(--gw-mono); font-size: 13px; min-height: 110px; resize: vertical; }
#gw-app .gw-hint { margin: 4px 0 0; font-size: 13.5px; line-height: 1.5; color: var(--gw-ink-soft); }
#gw-app .gw-hint b { font-weight: 500; color: var(--gw-ink); }
#gw-app .gw-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

#gw-app details.gw-adv { margin: 16px 0 0; border: 1px solid var(--gw-black); }
#gw-app details.gw-adv > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px;
  font-family: var(--gw-geo); letter-spacing: 0.1em; font-size: 15px; color: var(--gw-ink); background: var(--gw-grey-2); }
#gw-app details.gw-adv > summary::-webkit-details-marker { display: none; }
#gw-app details.gw-adv > summary::before { content: "+"; display: inline-block; width: 1em; font-family: var(--gw-body); color: var(--gw-gold-dark); }
#gw-app details.gw-adv[open] > summary::before { content: "\2212"; }
#gw-app details.gw-adv[open] > summary { border-bottom: 1px solid var(--gw-black); }
#gw-app details.gw-adv > .gw-card { margin: 12px; }
#gw-app details { margin: 8px 0; }
#gw-app summary { cursor: pointer; color: var(--gw-ink-soft); font-size: 15px; }
#gw-app details.gw-details > summary { font-family: var(--gw-geo); letter-spacing: 0.12em; text-transform: uppercase; font-size: 13px; min-height: 32px; }

/* ---------- buttons ---------- */
#gw-app .gw-btnrow { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 20px 0 8px; }
#gw-app .gw-quota { margin: 4px 0 0; font-size: 14px; color: var(--gw-ink-soft); font-variant-numeric: tabular-nums; }
#gw-app .gw-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 18px;
  font-family: var(--gw-geo); font-size: 17px; letter-spacing: 0.1em; cursor: pointer; border: 1px solid var(--gw-black); border-radius: 0;
  background: var(--gw-paper); color: var(--gw-ink); }
#gw-app .gw-btn--primary { background: var(--gw-ink); color: var(--gw-paper); padding: 0 22px; min-height: 48px; }
#gw-app .gw-btn--primary:hover { background: var(--gw-black); box-shadow: inset 0 -3px 0 var(--gw-gold); }
#gw-app .gw-btn--ghost:hover { background: var(--gw-grey-2); box-shadow: inset 0 -2px 0 var(--gw-gold); }
#gw-app .gw-btn--small { min-height: 40px; padding: 0 12px; font-size: 15px; }
#gw-app .gw-btn[disabled] { background: var(--gw-grey); color: var(--gw-ink-soft); border-color: var(--gw-ink-soft); cursor: not-allowed; box-shadow: none; }
#gw-app .gw-ic { width: 14px; height: 14px; flex: 0 0 auto; }
#gw-app .gw-spin { width: 14px; height: 14px; border: 2px solid currentColor; border-top-color: transparent; border-radius: 50%; display: none;
  animation: gw-rot .8s linear infinite; }
#gw-app .gw-btn--loading .gw-spin { display: inline-block; }
#gw-app .gw-btn--loading { cursor: progress; }
@keyframes gw-rot { to { transform: rotate(360deg); } }
#gw-app .gw-status { margin: 6px 0 0; min-height: 1em; font-size: 14.5px; color: var(--gw-steel); }
#gw-app .gw-status:empty { display: none; }

/* ---------- results: calculation sheet ---------- */
#gw-app .gw-calchead { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px;
  border-bottom: 2px solid var(--gw-black); padding-bottom: 6px; margin: 0 0 0; }
#gw-app .gw-calchead h2 { margin: 0; }
#gw-app .gw-calcmeta { font-family: var(--gw-geo); letter-spacing: 0.12em; font-size: 13px; color: var(--gw-ink-soft); text-transform: uppercase; }
#gw-app table.gw-calc { width: 100%; border-collapse: collapse; margin: 0 0 12px; font-size: 15.5px; }
#gw-app table.gw-calc caption { text-align: left; font-family: var(--gw-geo); letter-spacing: 0.14em; font-size: 13px; text-transform: uppercase;
  color: var(--gw-ink-soft); padding: 12px 0 6px; }
#gw-app table.gw-calc th, #gw-app table.gw-calc td { border: 0; border-bottom: 1px solid var(--gw-line-soft); padding: 8px 8px; text-align: left; vertical-align: baseline; background: none; }
#gw-app table.gw-calc thead th { position: static; font-family: var(--gw-geo); font-weight: normal; letter-spacing: 0.14em; font-size: 12px;
  text-transform: uppercase; color: var(--gw-ink-soft); border-bottom: 1px solid var(--gw-black); }
#gw-app table.gw-calc tbody th { font-family: var(--gw-body); font-weight: 400; text-transform: none; letter-spacing: 0; font-size: 15.5px; color: var(--gw-ink); }
#gw-app table.gw-calc td.gw-val { text-align: right; white-space: nowrap; font-size: 17px; color: var(--gw-ink); }
#gw-app table.gw-calc td.gw-unit { color: var(--gw-ink-soft); white-space: nowrap; font-size: 14px; }
#gw-app table.gw-calc td.gw-lim { color: var(--gw-ink-soft); font-size: 14px; }
#gw-app table.gw-calc td.gw-chk { text-align: right; width: 1%; white-space: nowrap; }
#gw-app table.gw-calc tr:last-child th, #gw-app table.gw-calc tr:last-child td { border-bottom: 1px solid var(--gw-black); }

#gw-app .gw-stamp { display: inline-block; font-family: var(--gw-geo); letter-spacing: 0.18em; font-size: 13px; line-height: 1; padding: 5px 8px 4px;
  border: 2px solid currentColor; text-transform: uppercase; white-space: nowrap; }
#gw-app .gw-stamp--ok { color: var(--gw-steel); }
#gw-app .gw-stamp--check { color: var(--gw-rust); border-style: double; border-width: 3px; }
#gw-app .gw-stamp--fail { color: var(--gw-paper); background: var(--gw-rust); border-color: var(--gw-rust); }
#gw-app .gw-stamp--na { color: var(--gw-ink-soft); border-style: dotted; }
#gw-app .gw-stamp--note { color: var(--gw-ink); background: var(--gw-gold); border: 1px solid var(--gw-black); }
#gw-app p.gw-stamp { margin: 0 0 10px; }

#gw-app .gw-verdict { display: grid; grid-template-columns: auto 1fr; gap: 0; border: 2px solid var(--gw-black); margin: 0 0 16px; }
#gw-app .gw-verdict > .gw-stamp { align-self: stretch; display: flex; align-items: center; border: 0; border-right: 2px solid var(--gw-black); padding: 0 16px; font-size: 18px; }
#gw-app .gw-verdict--ok > .gw-stamp { color: var(--gw-paper); background: var(--gw-steel); }
#gw-app .gw-verdict--check > .gw-stamp { color: var(--gw-paper); background: var(--gw-rust); }
#gw-app .gw-verdict p { margin: 0; padding: 10px 14px; font-size: 16px; }

/* result status cards (other tabs): same verdict box */
#gw-app .gw-statuscard { display: grid; grid-template-columns: auto 1fr; border: 2px solid var(--gw-black); margin: 0 0 16px; }
#gw-app .gw-scicon { display: flex; align-items: center; justify-content: center; min-width: 52px; font-family: var(--gw-geo); font-size: 22px;
  border-right: 2px solid var(--gw-black); background: var(--gw-grey); color: var(--gw-ink); }
#gw-app .gw-statuscard--ok .gw-scicon { background: var(--gw-steel); color: var(--gw-paper); }
#gw-app .gw-statuscard--warn .gw-scicon, #gw-app .gw-statuscard--bad .gw-scicon { background: var(--gw-rust); color: var(--gw-paper); }
#gw-app .gw-statuscard--info .gw-scicon { background: var(--gw-gold); color: var(--gw-ink); }
#gw-app .gw-scbody { padding: 10px 14px; }
#gw-app .gw-scbody b { display: block; font-family: var(--gw-geo); font-weight: normal; letter-spacing: 0.1em; text-transform: uppercase; font-size: 15px; }
#gw-app .gw-scbody p { margin: 2px 0 0; font-size: 15.5px; max-width: 40em; }
#gw-app .gw-scbody p b { display: inline; font-family: var(--gw-body); text-transform: none; letter-spacing: 0; font-size: inherit; font-weight: 500; }

/* KPI figures (tabs 1, 3 to 6): schedule cells with a corner label like the title block */
#gw-app .gw-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; margin: 12px 0;
  border: 1px solid var(--gw-black); background: var(--gw-black); }
#gw-app .gw-kpis:empty { display: none; }
#gw-app .gw-kpi { position: relative; display: flex; flex-direction: column; background: var(--gw-paper); padding: 10px 12px 10px; min-width: 0; }
#gw-app .gw-kpi b { order: 2; font-family: var(--gw-body); font-weight: 400; font-size: 22px; line-height: 1.2; color: var(--gw-ink); overflow-wrap: anywhere; }
#gw-app .gw-kpi span { order: 1; font-family: var(--gw-geo); font-size: 11.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gw-ink-soft); margin-bottom: 6px; }
#gw-app .gw-kpi i { order: 3; font-style: normal; font-size: 13px; color: var(--gw-ink-soft); }
#gw-app .gw-kpi--red b { color: var(--gw-rust); }

#gw-app .gw-pill { display: inline-flex; align-items: center; gap: 6px; padding: 2px 8px; font-family: var(--gw-geo); font-size: 13px;
  letter-spacing: 0.12em; border: 1px solid var(--gw-ink); color: var(--gw-ink); background: var(--gw-paper); }
#gw-app .gw-pill--ok { color: var(--gw-steel); border-color: var(--gw-steel); }
#gw-app .gw-pill--warn { color: var(--gw-rust); border-color: var(--gw-rust); border-style: dotted; }
#gw-app .gw-pill--bad { color: var(--gw-paper); background: var(--gw-rust); border-color: var(--gw-rust); border-style: dashed; }
#gw-app .gw-pill--info { color: var(--gw-ink); border-color: var(--gw-ink-soft); }
#gw-app .gw-pill--violet { color: var(--gw-gold-dark); border-color: var(--gw-khaki); }
#gw-app .gw-sev-icon { font-size: 12px; line-height: 1; }

#gw-app .gw-banner { border: 2px solid var(--gw-rust); border-left-width: 8px; background: var(--gw-paper); color: var(--gw-ink); padding: 12px 14px; margin: 0 0 16px; font-size: 15.5px; }
#gw-app .gw-banner b { display: block; font-family: var(--gw-geo); font-weight: normal; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gw-rust); margin-bottom: 4px; }

/* ---------- tables ---------- */
#gw-app table { width: 100%; border-collapse: collapse; font-size: 15px; margin: 8px 0; }
#gw-app th { font-family: var(--gw-geo); font-weight: normal; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gw-ink-soft);
  text-align: left; padding: 8px; border-bottom: 1px solid var(--gw-black); background: var(--gw-grey-2); }
#gw-app td { padding: 8px; border-bottom: 1px solid var(--gw-line-soft); vertical-align: middle; }
#gw-app td .gw-mini { width: auto; display: inline-block; }
#gw-app .gw-delbtn { min-height: 40px; min-width: 40px; background: var(--gw-paper); border: 1px solid var(--gw-rust); color: var(--gw-rust); cursor: pointer; font-size: 14px; }
#gw-app .gw-delbtn:hover { background: var(--gw-rust); color: var(--gw-paper); }
#gw-app .gw-tbl th { background: none; }

/* ---------- charts ---------- */
#gw-app .gw-chartwrap { border: 1px solid var(--gw-black); margin: 16px 0 0; padding: 4px; background: var(--gw-paper); }
/* empty chart boxes collapse but keep their width, so Plotly measures the real column width */
#gw-app .gw-chartwrap:has(.gw-chart:empty) { border-color: transparent; padding: 0; margin: 0; }
#gw-app .gw-chart { width: 100%; min-height: 380px; }
#gw-app .gw-chart:empty { min-height: 0; }
#gw-app #gw-w-c4 { min-height: 520px; }
#gw-app #gw-w-c4:empty { min-height: 0; }

/* soil rows */
#gw-app .gw-mini { min-height: 40px; padding: 6px 8px; font-size: 15px; width: 100%; min-width: 0; }
#gw-app #gw-soil-rows .gw-formgrid { gap: 0; }
#gw-app #gw-soil-rows table { font-size: 14px; }

/* ---------- states ---------- */
#gw-app .gw-empty { border: 1px dashed var(--gw-ink-soft); padding: 28px 20px; text-align: center; color: var(--gw-ink-soft); margin: 0; font-size: 15.5px;
  background: repeating-linear-gradient(-45deg, var(--gw-paper) 0 10px, var(--gw-grey-2) 10px 11px); }
#gw-app .gw-empty > b:first-child { display: block; font-family: var(--gw-geo); font-weight: normal; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gw-ink); font-size: 17px; margin-bottom: 4px; }
#gw-app .gw-empty p { margin: 4px 0 0; }
#gw-app .gw-empty b + b, #gw-app .gw-empty b:not(:first-child) { font-weight: 500; }
#gw-app .gw-err { position: fixed; right: 16px; bottom: 16px; max-width: min(520px, calc(100vw - 32px)); background: var(--gw-paper); color: var(--gw-ink);
  border: 2px solid var(--gw-rust); border-left-width: 8px; padding: 12px 16px; z-index: 200; white-space: pre-wrap; font-size: 15px; display: none;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .25); }
#gw-app .gw-formula { border-left: 3px solid var(--gw-gold); background: var(--gw-grey-2); padding: 12px; margin: 8px 0; font-family: var(--gw-mono); font-size: 13.5px; overflow-x: auto; }
#gw-app pre.gw-mono { background: var(--gw-grey-2); border: 1px solid var(--gw-line-soft); padding: 12px; overflow-x: auto; font-size: 12px; white-space: pre-wrap; }

/* ---------- hammer library ---------- */
#gw-app .gw-scroll { max-height: 420px; overflow-y: auto; border: 1px solid var(--gw-black); }
#gw-app .gw-librow { display: grid; grid-template-columns: 1.4fr 1.2fr 1fr .9fr .8fr auto; gap: 12px; align-items: center; padding: 8px 12px;
  border-bottom: 1px solid var(--gw-line-soft); font-size: 15px; }
#gw-app .gw-librow:hover { background: var(--gw-grey-2); }
#gw-app .gw-libhead { position: sticky; top: 0; background: var(--gw-grey); border-bottom: 1px solid var(--gw-black); font-family: var(--gw-geo);
  font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gw-ink-soft); }
#gw-app .gw-libhead:hover { background: var(--gw-grey); }

/* ---------- verification gates ---------- */
#gw-app .gw-gate { border: 1px solid var(--gw-black); padding: 14px 16px; margin: 16px 0; }
#gw-app .gw-gate--pass { border-left: 6px solid var(--gw-steel); }
#gw-app .gw-gate--fail { border-left: 6px double var(--gw-rust); }
#gw-app .gw-gate h3 { margin: 0 0 8px; font-size: 18px; letter-spacing: 0.06em; text-transform: none; }

/* ---------- damage checks ---------- */
#gw-app .gw-damage { margin: 16px 0 0; border: 1px solid var(--gw-black); }
#gw-app .gw-damage h4 { margin: 0; padding: 8px 12px; background: var(--gw-grey); border-bottom: 1px solid var(--gw-black);
  font-size: 13px; letter-spacing: 0.16em; text-transform: uppercase; }
#gw-app .gw-damage ul { list-style: none; margin: 0; padding: 0 12px; }
#gw-app .gw-dmg { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; padding: 8px 0; border-top: 1px solid var(--gw-line-soft); font-size: 15px; }
#gw-app .gw-dmg:first-child { border-top: 0; }
#gw-app .gw-dmg--ok .gw-sev-icon { color: var(--gw-steel); }
#gw-app .gw-dmg--watch .gw-sev-icon, #gw-app .gw-dmg--high .gw-sev-icon, #gw-app .gw-dmg--critical .gw-sev-icon { color: var(--gw-rust); }
#gw-app .gw-dmg--not_evaluated .gw-sev-icon { color: var(--gw-ink-soft); }
#gw-app .gw-dmg-lim, #gw-app .gw-dmg-u { color: var(--gw-ink-soft); font-size: 13.5px; }
#gw-app .gw-dmg-sev { margin-left: auto; font-family: var(--gw-geo); letter-spacing: 0.14em; font-size: 12px; text-transform: uppercase; color: var(--gw-ink-soft); }
#gw-app .gw-dmg .gw-details { flex-basis: 100%; margin: 0; }

/* ---------- guidance panel ---------- */
#gw-app .gw-guidance { position: fixed; top: 16px; right: 16px; width: min(430px, calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow: auto;
  background: var(--gw-paper); border: 3px solid var(--gw-black); padding: 0 0 12px; z-index: 60; box-shadow: 0 10px 30px rgba(0, 0, 0, .3); }
#gw-app .gw-guidance-head { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--gw-black); background: var(--gw-gold); }
#gw-app .gw-guidance-head h3 { margin: 0; flex: 1; font-size: 16px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gw-ink); }
#gw-app .gw-guidance-close { min-height: 40px; padding: 0 12px; background: var(--gw-paper); border: 1px solid var(--gw-black); color: var(--gw-ink);
  font-family: var(--gw-geo); letter-spacing: 0.1em; cursor: pointer; }
#gw-app .gw-guidance-card { border-bottom: 1px solid var(--gw-line-soft); padding: 10px 12px; }
#gw-app .gw-guidance-card h4 { margin: 0 0 4px; font-size: 16px; letter-spacing: 0.06em; }
#gw-app .gw-guidance-what { margin: 4px 0; font-size: 14.5px; color: var(--gw-ink-soft); }
#gw-app .gw-guidance-label { margin: 8px 0 2px; font-family: var(--gw-geo); letter-spacing: 0.16em; text-transform: uppercase; font-size: 11.5px; color: var(--gw-gold-dark); }
#gw-app .gw-guidance-card ul, #gw-app .gw-guidance-steps { margin: 4px 0 6px; padding-left: 18px; }
#gw-app .gw-guidance-card li { font-size: 14.5px; margin: 3px 0; }
#gw-app .gw-guidance-card li.gw-guidance-limit { color: var(--gw-rust); }
#gw-app .gw-guidance-cite { margin: 6px 0 0; font-size: 12.5px; color: var(--gw-ink-soft); overflow-wrap: anywhere; }

/* ---------- method page: reading column ---------- */
#gw-app .gw-doc { padding-top: clamp(20px, 3vw, 40px); }
#gw-app .gw-doc > * { max-width: var(--gw-measure); margin-left: auto; margin-right: auto; }
#gw-app .gw-docsec { margin-top: 36px; font-size: 17px; line-height: 1.7; }
#gw-app .gw-docsec h2 { font-size: clamp(24px, 3vw, 30px); letter-spacing: 0.06em; margin: 0 0 12px; padding-bottom: 6px; border-bottom: 1px solid var(--gw-black); }
#gw-app .gw-docsec h3 { font-size: 21px; letter-spacing: 0.04em; margin: 24px 0 6px; }
#gw-app .gw-docsec ul, #gw-app .gw-docsec ol { padding-left: 1.3em; }
#gw-app .gw-docsec li { margin: 0 0 8px; }
#gw-app .gw-tbl { font-size: 15.5px; }
#gw-app .gw-tbl th { text-transform: none; letter-spacing: 0.06em; font-size: 14px; vertical-align: top; white-space: nowrap; padding-right: 14px; color: var(--gw-ink); }
#gw-app .gw-tbl td, #gw-app .gw-tbl th { border-bottom: 1px solid var(--gw-line-soft); }
#gw-app .gw-refs li { margin-bottom: 8px; }

/* ---------- print / PDF export ---------- */
#gw-app .gw-report { display: none; }
@media print {
  #gw-app { background: #fff; color: #000; min-height: 0; }
  #gw-app .gw-sheet, #gw-app .gw-err, #gw-app .gw-guidance { display: none !important; }
  #gw-app .gw-report { display: block; font: 11pt/1.5 'Jost', Arial, sans-serif; color: #000; }
  #gw-app .gw-report h1 { font-family: var(--gw-geo); font-weight: normal; letter-spacing: 0.08em; font-size: 18pt; border-bottom: 2px solid #000; padding-bottom: 6px; }
  #gw-app .gw-report h2 { font-family: var(--gw-geo); font-weight: normal; letter-spacing: 0.06em; font-size: 13pt; margin-top: 14pt; }
  #gw-app .gw-report table { width: 100%; border-collapse: collapse; }
  #gw-app .gw-report th, #gw-app .gw-report td { border: 1px solid #444; padding: 4pt 6pt; text-align: left; background: none; }
  #gw-app .gw-report .gw-report-warn { border: 2px solid #000; padding: 8pt; }
  #gw-app .gw-report img { max-width: 100%; }
}

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  #gw-app .gw-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
  #gw-app .gw-cols { grid-template-columns: minmax(0, 1fr); }
  #gw-app .gw-librow { grid-template-columns: 1.3fr 1fr 1fr auto; }
  #gw-app .gw-librow .gw-hideM { display: none; }
}
@media (max-width: 720px) {
  #gw-app { --gw-frame: 10px; }
  #gw-app .gw-masthead { padding: 12px 16px; }
  #gw-app .gw-brandmark-img { height: 56px; }
  #gw-app .gw-toolstrip { padding: 4px 12px; }
  #gw-app .gw-toolnav a, #gw-app .gw-sitenav a { padding: 0 8px; }
  #gw-app .gw-titleblock dl { grid-template-columns: 1fr 1fr; grid-template-areas: "project ref" "title title" "date rev"; }
  #gw-app .gw-cell { min-height: 72px; }
  #gw-app .gw-cell dd { font-size: 16px; letter-spacing: 0.08em; }
  #gw-app .gw-cell-project { padding: 24px 12px 12px; }
  #gw-app .gw-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #gw-app .gw-tabbtn small { display: none; }
  #gw-app .gw-tabbtn { min-height: 52px; }
  #gw-app .gw-sitefooter { padding: 12px 16px; }
}
@media (max-width: 620px) {
  #gw-app .gw-formgrid { grid-template-columns: minmax(0, 1fr); }
  #gw-app .gw-formgrid > .gw-field:nth-child(odd) { border-right: 0; }
  #gw-app .gw-formgrid > .gw-field:nth-last-child(-n+2):nth-child(odd) { border-bottom: 1px solid var(--gw-line-soft); }
  #gw-app .gw-formgrid > .gw-field:last-child { border-bottom: 0; }
  #gw-app .gw-hero .gw-btn--primary, #gw-app .gw-btnrow .gw-btn--primary { width: 100%; }
  #gw-app .gw-kpis { grid-template-columns: 1fr 1fr; }
  #gw-app .gw-kpi b { font-size: 19px; }
  #gw-app .gw-librow { grid-template-columns: 1fr 1fr; row-gap: 4px; }
  #gw-app .gw-chart { min-height: 300px; }
  #gw-app #gw-w-c4 { min-height: 460px; }
  #gw-app table { display: block; overflow-x: auto; max-width: 100%; }
  #gw-app table.gw-calc { display: table; }
  #gw-app table.gw-calc .gw-lim { display: none; }
  #gw-app table.gw-calc th, #gw-app table.gw-calc td { padding: 8px 4px; }
  #gw-app table.gw-calc .gw-stamp { letter-spacing: 0.1em; padding: 4px 5px 3px; }
  #gw-app .gw-doc .gw-tbl th { white-space: normal; }
  #gw-app .gw-doc .gw-tbl, #gw-app .gw-doc .gw-tbl tbody, #gw-app .gw-doc .gw-tbl tr, #gw-app .gw-doc .gw-tbl th, #gw-app .gw-doc .gw-tbl td { display: block; }
  #gw-app .gw-doc .gw-tbl th { border-bottom: 0; padding-bottom: 0; }
  #gw-app .gw-disclaimer { grid-template-columns: 1fr; }
  #gw-app .gw-disclaimer-tag { border-right: 0; border-bottom: 2px solid var(--gw-black); padding: 4px 12px; }
  #gw-app .gw-guidance { top: auto; bottom: 0; right: 0; left: 0; width: 100vw; max-height: 80vh; }
}
@media (prefers-reduced-motion: reduce) {
  #gw-app *, #gw-app *::before, #gw-app *::after { animation: none !important; transition: none !important; }
}

/* soil layer schedule rows (rendered by geowave.js) */
#gw-app .gw-soilrow { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)) auto; gap: 0 8px; align-items: end;
  padding: 8px 0; border-bottom: 1px solid var(--gw-line-soft); }
#gw-app .gw-soilrow .gw-field { margin: 0; }
#gw-app .gw-soilrow .gw-field label { font-size: 13.5px; }
#gw-app .gw-soilrow .gw-delbtn { margin-bottom: 2px; }
@media (max-width: 620px) {
  #gw-app .gw-soilrow { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 8px; }
  #gw-app .gw-soilrow .gw-delbtn { justify-self: start; }
}
