/* ==========================================================================
   True Biz Designs &mdash; Report Platform
   Palette matched to truebizdesigns.com: navy #10223a, brand blue #4280c9,
   Ubuntu.

   Two values inherited from the original theme fail WCAG for text &mdash; the grey
   #808289 at 3.84:1 and #4280c9 on white at 4.07:1 &mdash; so the brand blue is
   reserved for rules, borders and large text, while #1F5FA8 (6.44:1) carries
   links and buttons. The input border is #7D8BA0 rather than a lighter grey
   because field borders must reach 3:1 under 1.4.11 to identify the control.
   Every pair below is verified.
   ========================================================================== */

:root{
  --navy:#10223a; --navy-2:#16304f; --navy-3:#0B1727;
  --blue:#4280c9;          /* brand accent: rules, borders, large text */
  --blue-ink:#1F5FA8;      /* text-safe: links, buttons */
  --sky:#8FC0F0;           /* light accent on dark */
  --ink:#1B2836;
  --muted:#55606E;
  --paper:#fff; --paper-2:#F4F6F9; --paper-3:#E3E9F1;
  --line:#D3DAE3; --line-input:#7D8BA0;
  --danger:#A3231B; --serious:#9C4A16; --moderate:#6B5416;
  --focus:#1B2836;
  --wrap:54rem;
  --ui:"Ubuntu",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper-2);color:var(--ink);font-family:var(--ui);
  font-size:17px;line-height:1.7;font-weight:300;-webkit-font-smoothing:antialiased}

h1,h2,h3{line-height:1.2;margin:0 0 .6rem;font-weight:700}
h1{font-size:clamp(1.7rem,4vw,2.4rem);text-transform:uppercase;letter-spacing:.04em}
h2{font-size:clamp(1.25rem,2.6vw,1.6rem);text-transform:uppercase;letter-spacing:.05em}
h3{font-size:1.12rem;font-weight:500;letter-spacing:.01em}
p{margin:0 0 1rem}
a{color:var(--blue-ink);text-underline-offset:3px}
a:hover{color:var(--ink)}

:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.masthead,.siteftr,.scorecard{--focus:var(--sky)}

.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:-9999px;top:0;z-index:99;background:var(--blue);color:#fff;
  padding:1rem 1.5rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.skip:focus{left:0}

/* ---------- Chrome ---------- */
.masthead{background:var(--navy-3);color:#C7D4E3}
.masthead__inner{max-width:var(--wrap);margin:0 auto;padding:1.1rem 1.25rem;
  display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}
.brand{display:flex;align-items:center;gap:.6rem;color:#fff;text-decoration:none;
  font-weight:700;font-size:1.1rem;text-transform:uppercase;letter-spacing:.04em}
.brand__mark{width:.8rem;height:.8rem;background:var(--blue);flex:none}
.masthead__tag{margin:0;margin-left:auto;font-size:.78rem;color:#8DA2BC;
  text-transform:uppercase;letter-spacing:.1em}

main{max-width:var(--wrap);margin:0 auto;padding:2.25rem 1.25rem 3.5rem}
.shell{max-width:46rem;background:var(--paper);padding:2rem 2rem 2.5rem;
  border:1px solid var(--line);border-top:4px solid var(--blue)}
@media (max-width:640px){.shell{padding:1.5rem 1.25rem 2rem}}

.siteftr{background:var(--navy-3);color:#A9BDD4;font-size:.92rem;padding:2.25rem 0}
.siteftr__inner{max-width:var(--wrap);margin:0 auto;padding:0 1.25rem}
.siteftr a{color:var(--sky)}
.siteftr__a11y{margin-bottom:0}

/* ---------- Hero & cards ---------- */
.eyebrow{display:flex;align-items:center;gap:.55rem;font-size:.72rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:.9rem}
.eyebrow::before{content:"";width:.55rem;height:.55rem;background:var(--blue);flex:none}
.lede{font-size:1.08rem;color:var(--muted);max-width:40em}
.section-head{margin-top:2.5rem;padding-top:.5rem;border-top:4px solid var(--blue);
  display:inline-block}

.cards{list-style:none;margin:1.4rem 0 0;padding:0;display:grid;gap:1.1rem;
  grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}
.card{background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--blue);
  padding:1.4rem;display:flex;flex-direction:column}
.card__title{margin-bottom:.4rem;font-weight:700;color:var(--navy)}
.card__title a{text-decoration:none}
.card__title a:hover{text-decoration:underline}
.card__blurb{color:var(--muted);font-size:.96rem}
.card__meta{font-size:.85rem;color:var(--muted);margin-top:auto;margin-bottom:.9rem}

.note{margin-top:2.5rem;background:var(--paper-2);padding:1.4rem 1.6rem;
  border-left:5px solid var(--blue)}
.plain-list{margin:0;padding-left:1.15rem}
.plain-list li{margin-bottom:.55rem}
.plain-list li:last-child{margin-bottom:0}
.plain-list--tight li{margin-bottom:.2rem}

/* ---------- Progress ---------- */
.progress{margin-bottom:1.7rem}
.progress__text{font-size:.9rem;font-weight:500;margin-bottom:.4rem;text-transform:uppercase;
  letter-spacing:.06em}
.progress__pct{font-weight:300;color:var(--muted);text-transform:none;letter-spacing:0}
.progress__bar{width:100%;height:.6rem;appearance:none;border:1px solid var(--line);
  background:var(--paper-3)}
.progress__bar::-webkit-progress-bar{background:var(--paper-3)}
.progress__bar::-webkit-progress-value{background:var(--blue-ink)}
.progress__bar::-moz-progress-bar{background:var(--blue-ink)}

/* ---------- Fields ---------- */
.step__intro{color:var(--muted);margin-bottom:1.5rem}
.field-wrap[hidden]{display:none}
.field{margin:0 0 1.5rem;padding:0;border:0}
fieldset.field{border:0}
.field--nested{margin-top:.9rem;margin-bottom:0;padding-left:1.1rem;
  border-left:3px solid var(--blue)}
.field__label{display:block;font-weight:500;margin-bottom:.35rem;padding:0}
legend.field__label{padding:0}
.field__req,.field__opt{font-weight:300;color:var(--muted);font-size:.88rem}
.field__hint{font-size:.89rem;color:var(--muted);margin:0 0 .45rem}
.field__error{font-size:.91rem;color:var(--danger);font-weight:500;margin:0 0 .45rem}

input[type=text],input[type=email],input[type=url],input[type=tel],input[type=number],
input[type=date],input[type=search],input[type=password],select,textarea{
  width:100%;min-height:50px;padding:.75rem .85rem;font-family:var(--ui);font-size:1rem;
  font-weight:300;color:var(--ink);background:var(--paper);
  border:2px solid var(--line-input);border-radius:0}
textarea{min-height:8rem;resize:vertical;line-height:1.6}
input:focus,select:focus,textarea:focus{border-color:var(--blue-ink)}
.field--error input,.field--error select,.field--error textarea{border-color:var(--danger)}

.choices{display:grid;gap:.15rem}
.choice{display:flex;align-items:flex-start;gap:.65rem;padding:.55rem .6rem;min-height:44px;
  border:2px solid transparent}
.choice:hover{background:var(--paper-2)}
.choice input{margin-top:.35rem;width:1.15rem;height:1.15rem;flex:none;accent-color:var(--blue-ink)}
.choice label{cursor:pointer;line-height:1.5}

/* ---------- Errors & flashes ---------- */
.errors{border:3px solid var(--danger);background:var(--paper);padding:1.1rem 1.25rem;
  margin-bottom:1.7rem}
.errors__title{color:var(--danger);font-size:1.05rem;margin-bottom:.5rem;text-transform:none;
  letter-spacing:0}
.errors__list{margin:0;padding-left:1.15rem}
.errors__list a{color:var(--danger);font-weight:500}
.errors__list li{margin-bottom:.3rem}
.flash{padding:.9rem 1.1rem;margin-bottom:1.25rem;border-left:5px solid var(--blue);
  background:var(--paper-3)}
.flash--error{border-left-color:var(--danger)}

/* ---------- Consent & buttons ---------- */
.consent{background:var(--paper-2);padding:1.4rem 1.6rem;margin:2rem 0 1.5rem;
  border-left:5px solid var(--blue)}
.consent h2{font-size:1.1rem}
.consent .field{margin-bottom:1rem}
.consent__note{font-size:.89rem;color:var(--muted);margin-bottom:0}

.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;
  padding:.75rem 1.75rem;font-family:var(--ui);font-size:.92rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.07em;text-decoration:none;
  border:2px solid transparent;border-radius:0;cursor:pointer}
.btn--primary{background:var(--blue-ink);color:#fff}
.btn--primary:hover{background:var(--navy);color:#fff}
.btn--quiet{background:transparent;color:var(--blue-ink);border-color:var(--blue-ink)}
.btn--quiet:hover{background:var(--paper-3);color:var(--navy)}
.btn[disabled]{opacity:.6;cursor:not-allowed}

.saved{font-size:.87rem;color:var(--muted);margin-top:.9rem;min-height:1.3em}
.saved:empty{margin-top:0}
.resume{font-size:.89rem;color:var(--muted);margin-top:2rem;padding-top:1rem;
  border-top:1px solid var(--line)}

/* ---------- Processing ---------- */
.processing{text-align:center;padding:1.5rem 0}
.processing__bar{width:100%;height:.75rem;appearance:none;border:1px solid var(--line);
  background:var(--paper-3);margin:1.25rem 0}
.processing__bar::-webkit-progress-value{background:var(--blue-ink)}
.processing__bar::-moz-progress-bar{background:var(--blue-ink)}
.proc-fallback{font-size:.89rem;color:var(--muted);max-width:34em;margin:1.5rem auto 0}

/* ---------- Report ---------- */
.meta{display:flex;flex-wrap:wrap;gap:1.5rem;margin:1.5rem 0 2rem;padding:1rem 0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.meta dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.meta dd{margin:.15rem 0 0;font-weight:500}
.toc{background:var(--paper-2);padding:1.1rem 1.4rem;margin-bottom:2.5rem;
  border-left:5px solid var(--blue)}
.toc h2{font-size:.85rem;letter-spacing:.12em}
.toc ol{margin:0;padding-left:1.2rem}
.toc li{margin-bottom:.25rem}
.shell section{margin-bottom:2.75rem}

.phases{list-style:none;counter-reset:p;margin:1rem 0 0;padding:0}
.phases li{counter-increment:p;padding:0 0 1.25rem 3rem;position:relative;
  border-left:2px solid var(--line);margin-left:.95rem}
.phases li:last-child{border-left-color:transparent;padding-bottom:0}
.phases li::before{content:counter(p,decimal-leading-zero);position:absolute;left:-1rem;top:0;
  width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;
  background:var(--navy);color:var(--sky);font-size:.75rem;font-weight:700}
.phases h3{margin-bottom:.2rem;font-weight:700;color:var(--navy)}
.phases p{margin:0;color:var(--muted)}

.pricing{width:100%;border-collapse:collapse;margin-top:1rem;font-size:.95rem}
.pricing caption{text-align:left;color:var(--muted);font-size:.89rem;padding-bottom:.75rem}
.pricing th,.pricing td{text-align:left;padding:.8rem .7rem;border-bottom:1px solid var(--line);
  vertical-align:top}
.pricing thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);font-weight:500}
.pricing__desc{font-weight:300;color:var(--muted);font-size:.87rem}
.next{background:var(--paper-2);padding:1.5rem;border-left:5px solid var(--blue)}
.disclaimer{font-size:.87rem;color:var(--muted);border-top:1px solid var(--line);
  padding-top:1rem}

/* ---------- Scan report ---------- */
.scorecard{display:flex;flex-wrap:wrap;gap:2rem;align-items:center;background:var(--navy);
  color:#C7D4E3;padding:1.6rem;margin:1.5rem 0 .75rem}
.score__num{font-size:3.2rem;font-weight:700;line-height:1;margin:0;color:#fff}
.score__num span{font-size:1.05rem;font-weight:300;color:#8DA2BC}
.score__label{margin:.3rem 0 0;font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;
  color:#8DA2BC}
.score__cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:1rem;
  margin:0;flex:1}
.score__cats dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:#8DA2BC}
.score__cats dd{margin:.1rem 0 0;font-weight:700;font-size:1.15rem;color:#fff}
.score__note{font-size:.89rem;color:var(--muted);margin-bottom:2.5rem}

.finding{border:1px solid var(--line);border-left:5px solid var(--muted);background:var(--paper);
  padding:1.2rem 1.35rem;margin-bottom:1.1rem}
.finding--critical{border-left-color:var(--danger)}
.finding--serious{border-left-color:var(--serious)}
.finding--moderate{border-left-color:var(--moderate)}
.finding--minor{border-left-color:var(--blue)}
.finding h3{margin-bottom:.5rem;font-weight:700;color:var(--navy)}
.finding p{margin-bottom:.6rem}
.finding p:last-child{margin-bottom:0}
.finding__tags{display:flex;flex-wrap:wrap;gap:.4rem}
.tag{display:inline-block;font-size:.7rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.1em;padding:.28rem .6rem;background:var(--paper-3);color:var(--ink)}
.tag--critical{background:var(--danger);color:#fff}
.tag--serious{background:var(--serious);color:#fff}
.tag--moderate{background:var(--moderate);color:#fff}
.finding__who,.finding__fix{font-size:.94rem}
.finding__ev code{display:block;padding:.55rem .7rem;font-size:.82rem;overflow-wrap:anywhere}
.manual{background:var(--paper-2);padding:1.5rem;border-left:5px solid var(--blue)}

/* ---------- Admin ---------- */
.filters{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;margin-bottom:1.5rem}
.filters .field{margin-bottom:0;flex:1 1 12rem}
details summary{cursor:pointer;padding:.5rem 0;font-weight:500;min-height:44px}
details summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
code{background:var(--paper-3);padding:.15rem .4rem;font-size:.9em;overflow-wrap:anywhere}

@media (prefers-contrast:more){
  :root{--muted:#333C47;--line:#7C8797;--line-input:#3F4B5A}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}
@media print{
  .masthead,.siteftr,.toc,.actions,.skip,.filters{display:none}
  body{background:#fff;font-size:11pt}
  .shell{border:0;padding:0}
  .next,.note,.manual,.scorecard{background:#fff;border-left:2px solid #000;color:#000}
  .scorecard{border:1px solid #000}
  .score__num,.score__cats dd{color:#000}
}

/* ---------- Admin navigation ---------- */
.adminnav{margin:0 0 1.75rem;border-bottom:2px solid var(--line)}
.adminnav ul{display:flex;flex-wrap:wrap;gap:.15rem;list-style:none;margin:0;padding:0}
.adminnav a{display:block;padding:.7rem 1rem;min-height:44px;line-height:1.9;
  text-decoration:none;font-size:.82rem;font-weight:500;text-transform:uppercase;
  letter-spacing:.09em;color:var(--muted);border-bottom:3px solid transparent;
  margin-bottom:-2px}
.adminnav a:hover{color:var(--navy);background:var(--paper-2)}
.adminnav a[aria-current=page]{color:var(--navy);border-bottom-color:var(--blue);font-weight:700}
.adminnav__end{margin-left:auto}

/* ---------- Alerts ---------- */
.alerts{background:var(--paper-2);border-left:5px solid var(--blue);padding:1.2rem 1.4rem;
  margin-bottom:2rem}
.alerts--ok{border-left-color:var(--blue-ink)}
.alerts__title{font-size:.95rem;letter-spacing:.1em;margin-bottom:.7rem}
.alerts ul{margin:0;padding-left:1.15rem}
.alert{margin-bottom:.5rem}
.alert:last-child{margin-bottom:0}
.alert--error{color:var(--danger);font-weight:500}
.alert--warn{color:var(--moderate);font-weight:500}

/* ---------- Stats ---------- */
.sub{font-size:.85rem;letter-spacing:.14em;color:var(--muted);margin:2.5rem 0 1rem;
  padding-top:.6rem;border-top:2px solid var(--blue);display:inline-block}
.stats{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr));margin:0}
.stat{background:var(--paper-2);border-left:4px solid var(--blue);padding:1.1rem 1.2rem}
.stat dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.stat dd{margin:.25rem 0 0;font-size:2rem;font-weight:700;line-height:1;color:var(--navy)}
.stat__sub{margin:.35rem 0 0;font-size:.82rem;color:var(--muted)}

/* ---------- Bar table ---------- */
.bars{width:100%;border-collapse:collapse;font-size:.95rem}
.bars th,.bars td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--line);
  vertical-align:middle}
.bars thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);font-weight:500}
.bars td:last-child{width:50%}
.bar{display:block;height:.85rem;background:var(--blue);min-width:2px}

/* ---------- Status pills ---------- */
.pill{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;padding:.28rem .55rem;background:var(--paper-3);color:var(--ink);
  white-space:nowrap}
.pill--new{background:var(--blue-ink);color:#fff}
.pill--processing{background:var(--paper-3);color:var(--ink)}
.pill--report_delivered{background:var(--sky);color:var(--navy-3)}
.pill--won{background:#1D5E2F;color:#fff}
.pill--lost{background:var(--paper-3);color:var(--muted)}
.pill--consultation_booked,.pill--proposal_sent{background:var(--blue-ink);color:#fff}
