/* Self-hosted type (no request leaves bondstone.app). Instrument Sans, the variable face with its
   width and weight axes, and JetBrains Mono at 400 and 500, the latin subsets, each under the SIL Open
   Font License 1.1: /fonts/InstrumentSans-OFL.txt and /fonts/JetBrainsMono-OFL.txt. */
@font-face{font-family:"Instrument Sans";src:url("/fonts/InstrumentSans-Variable.woff2") format("woff2");font-weight:400 700;font-stretch:75% 100%;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/fonts/JetBrainsMono-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("/fonts/JetBrainsMono-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}

/* BONDSTONE stylesheet (24 Sep 2026). One file for every page.
   White and cool grey, navy type, one cobalt (--brand) for everything you can click.
   The product sits in dark navy frames: any element with .dark, .band--navy, .footer or .patch-frame flips to the dark tokens.
   Amber (--signal) marks a fixable finding and nothing else.
   Type: Instrument Sans for everything, JetBrains Mono only inside records, file listings and data. */

:root{
  --bg:#FFFFFF;
  --bg-2:#F4F6F9;
  --panel:#FFFFFF;
  --panel-2:#F7F9FC;
  --line:#E3E8EF;
  --line-2:#CFD8E3;
  --grid:rgba(11,27,46,.045);
  --text:#0B1B2E;
  --text-2:#3E4F66;
  --text-3:#5C6D84;
  --field-line:#7D8CA0;
  --brand:#2447D6;
  --brand-2:#1B37AE;
  --brand-wash:rgba(36,71,214,.1);
  --signal:#FFB23F;
  --signal-text:#A35F00;
  --signal-wash:rgba(255,178,63,.12);
  --signal-edge:rgba(214,138,20,.55);
  --live:#2447D6;
  --live-wash:rgba(36,71,214,.1);
  --pass:#1F9D63;
  --err:#FF8A7A;
  --console:#0B1B2E;
  --console-seam:#1E3450;
  --ps-text:#E4E9F0;
  --ps-cmd:#F2DE7C;
  --ps-arg:#8BA2C0;
  --sans:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
  --w:1200px;
  --gutter:1.5rem;
  --r:6px;
  --r-lg:10px;
  color-scheme:light;
}

/* Base */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--line-2);text-underline-offset:.2em}
a:hover{text-decoration-color:var(--live)}
:focus-visible{outline:2px solid var(--live);outline-offset:3px}
img,svg{max-width:100%;height:auto;display:block}
h1,h2,h3,h4{font-family:var(--sans);margin:0;text-wrap:balance;font-stretch:108%}
.h1{font-size:clamp(2.5rem,5vw,4.25rem);line-height:1.02;font-weight:640;letter-spacing:-.028em}
.h1--sm{font-size:clamp(2.2rem,4vw,3.3rem);line-height:1.05}
.h2{font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.08;font-weight:620;letter-spacing:-.02em}
.h3{font-size:1.2rem;line-height:1.25;font-weight:600;letter-spacing:-.005em}
p{margin:.8rem 0;max-width:64ch}
.lede{font-size:1.16rem;line-height:1.55;color:var(--text-2);max-width:36em}
.small{font-size:.9375rem}
.muted{color:var(--text-3)}
.mono{font-family:var(--mono)}
ul,ol{margin:0;padding-left:1.2rem}
.container{max-width:var(--w);margin:0 auto;padding:0 var(--gutter)}
.band{padding:6.5rem 0}
.band--tight{padding:4.5rem 0}
.band--deep{background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sec-head{max-width:46rem;margin-bottom:3rem}
.sec-head .lede{margin-top:1rem}
.split{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}
.btns{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2rem}
.split>*,.hero .container>*,.hero-grid>*,.cta-band .container>*,.about>*{min-width:0}
@media (max-width:900px){.band{padding:4.5rem 0}.split{grid-template-columns:minmax(0,1fr);gap:2.5rem}}
@media (max-width:600px){.lede{font-size:1.08rem}}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;font:600 .95rem/1 var(--sans);padding:.95rem 1.25rem;border-radius:var(--r);border:1px solid var(--text);background:var(--text);color:var(--bg);text-decoration:none;cursor:pointer;white-space:nowrap}
.btn:hover{background:#fff;border-color:#fff}
.btn--ghost{background:transparent;color:var(--text);border-color:var(--line-2)}
.btn--ghost:hover{background:transparent;border-color:var(--text)}

/* Forms */
.form{display:grid;gap:.9rem}
.form-row{display:grid;grid-template-columns:1fr 1fr auto;gap:.75rem;align-items:end}
.field{display:grid;gap:.35rem}
.field label{font:500 .84rem/1.2 var(--sans);color:var(--text-3)}
.field input,.field select,.field textarea{font:400 1rem/1.3 var(--sans);padding:.85rem .9rem;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);color:var(--text);width:100%}
.field input::placeholder,.field textarea::placeholder{color:var(--text-3)}
.field textarea{min-height:6rem;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--live);box-shadow:0 0 0 3px var(--live-wash)}
.form-note{font-size:.88rem;color:var(--text-3);margin:0}
@media (max-width:700px){.form-row{grid-template-columns:1fr}.form-row .btn{width:100%}}

/* Nav: the wordmark here; the department nav, its panels and the grouped menu are v5's (the site rebrand, below). */
.wordmark{display:inline-flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--text)}
.wordmark .mark{display:block;height:30px;aspect-ratio:57/64;background:url("/assets/bondstone-mark-64.png") center/contain no-repeat;flex:none}
.wordmark .name{font:700 1rem/1 var(--sans);font-stretch:118%;letter-spacing:.2em;text-transform:uppercase;margin-right:-.2em}

/* Hero (inner pages) */
.hero{padding:4.5rem 0 5rem}
.hero .container{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:4rem;align-items:start}
.hero .lede{margin:1.5rem 0 2rem}
@media (max-width:1000px){.hero{padding:3rem 0 4rem}.hero .container{grid-template-columns:minmax(0,1fr);gap:3rem}}

/* Hero (home): copy wide on the left, the patch in the space on the right */
.hero--home{padding:4rem 0 5rem}
.hero--home .container{display:block}
.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:3.5rem;align-items:start}
.hero--home .hero-title{font-size:clamp(2.4rem,4.3vw,4rem);line-height:1.02}
.hero-for{font-size:1.15rem;color:var(--text-2);margin:1.1rem 0 1.75rem}
.hero-form .form-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}
.hero-form .form-note{margin-top:.1rem}
.hero-copy .lede{margin:1.75rem 0 0;font-size:1.05rem;color:var(--text-2);max-width:40em}
.hero-copy .lede b{color:var(--text);font-weight:600}
.one-area{margin:1.5rem 0 0;padding:.85rem 1rem;border:1px solid var(--line);border-left:2px solid var(--live);border-radius:var(--r);font-size:.9rem;line-height:1.5;color:var(--text-2);background:var(--panel);max-width:40em}
.one-area b{color:var(--text);font-weight:600}
.talk{font-size:.9rem;color:var(--text-2);margin:.25rem 0 0}
.patch{margin:0}
.patch-field{max-width:480px;margin-left:auto}
.patch-field svg{width:100%;height:auto;overflow:visible}
.ring{fill:none;stroke:var(--line);stroke-width:1.2}
.ring--edge{stroke:var(--line-2)}
.ring-lbl,.office text{font:500 14px var(--mono);fill:var(--text-3);paint-order:stroke;stroke:var(--bg);stroke-width:6px;stroke-linejoin:round}
.office rect{fill:var(--text)}
.office text{fill:var(--text)}
.dot{fill:#8AA0BD;opacity:.3}
.js .dot{opacity:0;transition:opacity .45s ease var(--d,0s),fill .5s ease var(--l,0s)}
.js #field.on .dot{opacity:.3}
.js #field.lit .dot.fx,#field .dot.fx.static{fill:var(--signal);opacity:.88;transition:opacity .5s ease var(--l,0s),fill .5s ease var(--l,0s)}
.rk{cursor:pointer;transition:opacity .4s ease}
.js .rk{opacity:0}
.js #field.done .rk{opacity:1}
.rk .hit{fill:transparent}
.rk .mk{fill:var(--bg);stroke:var(--signal);stroke-width:2.5}
.rk text{font:700 14px var(--sans);fill:var(--signal);pointer-events:none}
.rk:hover .mk{fill:var(--panel)}
.rk.sel .mk{fill:var(--signal)}
.rk.sel text{fill:var(--bg)}
.rk:focus{outline:none}
.rk:focus-visible .mk{stroke:var(--text);stroke-width:3.5}
.pick{display:flex;gap:.7rem;align-items:flex-start;max-width:480px;margin:1rem 0 0 auto;font-size:.92rem;line-height:1.45;color:var(--text-2);transition:opacity .35s ease}
.pick b{color:var(--text);font-weight:600}
.pick .num{display:inline-grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:50%;background:var(--signal);color:var(--bg);font:700 .75rem/1 var(--sans);flex:none;margin-top:-.05rem}
.js .patch.pending .pick{opacity:0}
.legend{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;align-items:center;max-width:480px;margin:1rem 0 0 auto;font-size:.82rem;color:var(--text-2)}
.legend .note{flex-basis:100%;color:var(--text-3);line-height:1.5}
.sw{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;background:#8AA0BD;opacity:.5;margin-right:.45rem;vertical-align:.05em}
.sw--fx{background:var(--signal);opacity:1}
@media (max-width:1000px){
  .hero-grid{grid-template-columns:minmax(0,1fr);gap:3rem}
  .patch-field,.pick,.legend{margin-left:auto;margin-right:auto}
}
@media (max-width:700px){.hero-form .form-row{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.dot,.rk,.pick,#pin{transition:none!important}}

/* The entry band under the hero */
.entry-top{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.5rem}
.tabs{display:flex;gap:.4rem;flex-wrap:wrap}
.tab{display:inline-flex;align-items:center;gap:.5rem;font:500 .88rem/1 var(--sans);padding:.6rem .8rem;border:1px solid var(--line-2);border-radius:var(--r);background:transparent;color:var(--text-2);cursor:pointer}
.tab b{display:inline-grid;place-items:center;width:1.25rem;height:1.25rem;border-radius:50%;border:1.5px solid var(--signal);color:var(--signal);font-size:.7rem}
.tab:hover{border-color:var(--text-3);color:var(--text)}
.tab[aria-selected="true"]{border-color:var(--live);color:var(--text);background:var(--live-wash)}
.tab[aria-selected="true"] b{background:var(--signal);color:var(--bg)}
.sheet--wide .sheet-body{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,5fr) minmax(0,4fr);gap:1.25rem;align-items:start;padding:1.25rem}
.sheet--wide .sheet-title{font-size:1.2rem}
.sheet--wide .record+.record{margin-top:0}
.also{font-size:.84rem;color:var(--text-3);margin:.8rem 0 0}
#pin{transition:opacity .2s ease}
#pin.swap{opacity:.25}
@media (max-width:900px){.sheet--wide .sheet-body{grid-template-columns:minmax(0,1fr)}}

/* Exhibits */
.sheet{position:relative;z-index:1;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:0 30px 60px -28px rgba(0,0,0,.65)}
.sheet-bar{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 1rem;border-bottom:1px solid var(--line);font:500 .78rem/1.3 var(--sans);color:var(--text-3)}
.sheet-body{padding:1rem}
.sheet-title{font:600 1.08rem/1.25 var(--sans);font-stretch:104%;letter-spacing:-.01em;margin:0}
.sheet-meta{font-size:.8rem;color:var(--text-3);margin:.3rem 0 .8rem}
.finding{display:flex;align-items:center;gap:.6rem;margin:0 0 .7rem;padding:.5rem .7rem;background:var(--signal-wash);border:1px solid var(--signal-edge);border-radius:var(--r);font-size:.9rem;font-weight:500}
.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.65rem 0 1rem}
.chip{font:500 .76rem/1 var(--sans);padding:.4rem .55rem;border:1px solid var(--line-2);border-radius:3px;color:var(--text-2)}
.findings{list-style:none;margin:0 0 1rem;padding:0;display:grid;gap:.35rem}
.findings li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.65rem;font-size:.92rem;padding:.5rem .65rem;border:1px solid var(--line);border-radius:var(--r)}
.findings li.sel{background:var(--signal-wash);border-color:var(--signal-edge)}
.findings .src{font:500 .74rem/1 var(--sans);color:var(--text-3)}
.sq{width:.55rem;height:.55rem;border-radius:1px;background:var(--signal);flex:none}
.sq.warn{opacity:.55}
.sq.pass{background:var(--pass)}
.sheet-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.9rem;font-size:.78rem;color:var(--text-3)}
.caption{font-size:.86rem;color:var(--text-3);margin:1.25rem 0 0;max-width:36em}

/* Records: a PowerShell console */
.record{background:var(--console);border:1px solid var(--console-seam);color:var(--ps-text);border-radius:6px;padding:.8rem .9rem;font:400 .78rem/1.6 var(--mono);overflow-x:auto}
.record+.record{margin-top:.5rem}
.record .lbl{display:flex;justify-content:space-between;gap:1rem;color:var(--ps-arg);font:500 .72rem/1.4 var(--sans);margin-bottom:.45rem}
.record .lbl span:first-child{white-space:nowrap}
.record .lbl span:last-child{text-align:right}
.record .cmd::before{content:"PS C:\\> ";color:var(--ps-arg)}
.record .c{color:var(--ps-cmd)}
.record .a{color:var(--ps-arg)}
.record .out{color:#C9D2DE}
.record .err{color:var(--err)}
.record .hl{color:var(--signal)}
.dns{display:grid;grid-template-columns:auto 1fr;gap:.15rem .9rem;margin:0}
.dns dt{color:var(--ps-arg)}
.dns dd{margin:0;word-break:break-word}
.fix-note{font:400 .78rem/1.5 var(--sans);color:var(--ps-arg);margin:.5rem 0 0}

/* One city, counted */
.bars{display:grid;gap:1rem;margin:0 0 4rem}
.bar-row{display:grid;grid-template-columns:16rem minmax(0,1fr) 10rem;gap:1.5rem;align-items:center}
.bar-label{font-size:.97rem;color:var(--text-2)}
.bar-track{height:2.6rem;background:rgba(255,255,255,.03);border-radius:3px}
.bar{height:100%;background:var(--line-2);border-radius:3px}
.bar-row.fx .bar{background:var(--signal)}
.bar-row.fx .bar-label{color:var(--text)}
.bar-val{font:620 1.6rem/1 var(--sans);font-stretch:108%;font-variant-numeric:tabular-nums;text-align:right;letter-spacing:-.01em}
.bar-val small{font:400 .85rem/1 var(--sans);color:var(--text-3);margin-left:.3rem;letter-spacing:0}
.bar-row.fx .bar-val{color:var(--signal)}
@media (max-width:760px){
  .bar-row{grid-template-columns:1fr auto;gap:.5rem 1rem}
  .bar-track{grid-column:1/-1;height:1.8rem}
}

/* From 74 million to your hundred */
.narrow{list-style:none;margin:0 0 4.5rem;padding:0;border-top:1px solid var(--line-2)}
.narrow li{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:2rem;align-items:baseline;padding:1.5rem 0;border-bottom:1px solid var(--line)}
.narrow li>b{font:640 clamp(2.5rem,5.2vw,4.2rem)/1 var(--sans);font-stretch:110%;letter-spacing:-.03em;color:var(--text)}
.narrow li>span{font-size:1.12rem;line-height:1.5;color:var(--text-2);max-width:32em}
.narrow li.fx>b{color:var(--signal)}
@media (max-width:700px){.narrow li{grid-template-columns:minmax(0,1fr);gap:.5rem}}

/* A sequence, so numbered */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem;list-style:none;padding:0;margin:0}
.step{border-top:1px solid var(--line-2);padding-top:1.4rem}
.step .n{display:block;font:600 1.6rem/1 var(--sans);font-stretch:110%;color:var(--text-3);margin-bottom:1rem}
.step h3{margin-bottom:.5rem}
.step p{color:var(--text-2);font-size:.97rem;margin:0}
@media (max-width:900px){.steps{grid-template-columns:1fr;gap:1.75rem}}
.steps--stack{grid-template-columns:1fr;gap:1.4rem;margin-bottom:.5rem}
.steps--stack .step{padding-top:1rem}
.steps--stack .step .n{font-size:1.1rem;margin-bottom:.5rem}

/* The rule */
.rule{padding:6rem 0}
.rule .h1{max-width:16em;font-weight:620}
.rule p{margin-top:1.5rem;color:var(--text-2);max-width:42em}

/* Checklists */
.checks{list-style:none;padding:0;margin:0;display:grid;gap:1rem}
.checks li{display:grid;grid-template-columns:1.3rem 1fr;gap:.7rem;align-items:start}
.checks li::before{content:"";width:.8rem;height:.42rem;margin-top:.5rem;border-left:2px solid var(--pass);border-bottom:2px solid var(--pass);transform:rotate(-45deg)}
.checks b{font-weight:600;color:var(--text)}
.checks li span{color:var(--text-2)}

/* File listing */
.manifest{background:var(--console);border:1px solid var(--console-seam);color:var(--ps-text);border-radius:var(--r-lg);padding:1.3rem 1.4rem;font:400 .84rem/1.6 var(--mono)}
.manifest .lbl{display:flex;justify-content:space-between;gap:1rem;font:500 .8rem/1.4 var(--sans);color:var(--ps-arg);margin-bottom:.8rem}
.manifest ol{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}
.manifest li{display:grid;grid-template-columns:minmax(11rem,auto) 1fr;gap:1rem}
.manifest li b{color:var(--ps-text);font-weight:500}
.manifest li span{color:var(--ps-arg);font-family:var(--sans);font-size:.88rem}
@media (max-width:600px){.manifest li{grid-template-columns:1fr;gap:.1rem}}

/* Registers */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel)}
.table-wrap--flush{border:0;border-radius:0;background:transparent}
table{width:100%;border-collapse:collapse;font-size:.95rem}
th,td{text-align:left;padding:.95rem 1.1rem;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}
th{font:500 .82rem/1.3 var(--sans);color:var(--text-3);background:var(--panel-2)}
td{color:var(--text-2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td .pct{font:620 1.3rem/1 var(--sans);color:var(--signal)}
tbody tr:last-child td{border-bottom:0}
td.city{font-weight:600;color:var(--text)}
.cs th,.cs td{padding:.55rem .7rem;font-size:.8rem;white-space:normal}
.cs th{background:transparent}
.cs th:first-child,.cs td:first-child{padding-left:1rem}
.cs th:last-child,.cs td:last-child{padding-right:1rem}
.table-wrap--wrap th,.table-wrap--wrap td{white-space:normal;vertical-align:top}
/* /pack's call sheet on a phone (the walk of 10 Oct 2026: "a directory" read "director", the Read column was lost, and
   nothing said either table scrolled): each row stacks, the rank, the business and the miles on one line, then the
   finding, then where the number came from, each cell labelled from its own data-k. */
@media (max-width:600px){
  .table-wrap table.cs,.table-wrap table.cs tbody{display:block}
  .table-wrap table.cs thead{display:none}
  .table-wrap table.cs tbody tr{display:grid;grid-template-columns:1.3rem minmax(0,1fr) auto;gap:.15rem .55rem;align-items:baseline;padding:.65rem 1rem;border-bottom:1px solid var(--line)}
  .table-wrap table.cs tbody tr:last-child{border-bottom:0}
  .table-wrap table.cs td{display:block;padding:0;border:0;white-space:normal;font-size:.84rem}
  .table-wrap table.cs td.rk{grid-column:1;color:var(--text-3)}
  .table-wrap table.cs td.biz{grid-column:2;font-weight:600;color:var(--text)}
  .table-wrap table.cs td.num{grid-column:3}
  .table-wrap table.cs td.num::after{content:" mi"}
  .table-wrap table.cs td.fd,.table-wrap table.cs td.src,.table-wrap table.cs td.rd{grid-column:2/-1}
  .table-wrap table.cs td.src,.table-wrap table.cs td.rd{font-size:.78rem;color:var(--text-3)}
  .table-wrap table.cs td.src::before,.table-wrap table.cs td.rd::before{content:attr(data-k) ": "}
}
.table-wrap--wrap td{max-width:26em}

/* Pricing */
.prices{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
.price{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.75rem;display:flex;flex-direction:column}
.price--feat{border-color:var(--line-2);box-shadow:inset 0 2px 0 var(--live)}
.price .name{font:500 .95rem/1.3 var(--sans);color:var(--text-3);margin:0 0 .6rem}
.price .amount{font:640 2.6rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em}
.price .amount small{font:400 .95rem/1 var(--sans);color:var(--text-3);margin-left:.35rem;letter-spacing:0}
.price .per{color:var(--text-3);font-size:.9rem;margin:.4rem 0 1.25rem}
.price .checks{margin:0 0 1.5rem;flex:1;align-content:start}
.price .btn{align-self:flex-start}
.price .checks li{font-size:.95rem}
.offer{margin-top:1rem;padding:.8rem .9rem;background:var(--panel-2);border-left:2px solid var(--live);font-size:.88rem;border-radius:0 var(--r) var(--r) 0;color:var(--text-2)}
.offer b{color:var(--text)}
.pulse{margin:1rem 0 0;padding:0;list-style:none;display:grid;gap:.3rem;font-size:.85rem;line-height:1.45;color:var(--text-3)}
.pulse li{display:flex;gap:.55rem;align-items:baseline}
.pulse li::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--pass);opacity:.85;transform:translateY(-.06rem)}
.prose .pulse,.doc .pulse{padding-left:0}.prose .pulse li{margin:0}
.next{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-top:1.25rem}
.next .price{background:transparent}
.next .price p.muted{flex:1;margin-top:.5rem}
.next .price .h3{margin-top:.2rem}
.promise{margin-top:2rem;font-size:.95rem;color:var(--text-2);max-width:56em}
@media (max-width:900px){.prices,.next{grid-template-columns:1fr}}
/* Only what can be bought, full size; what cannot yet is one small list under it (the walk of 10 Oct 2026, item 14). */
.prices--two{grid-template-columns:repeat(2,minmax(0,1fr));max-width:62rem}
@media (max-width:900px){.prices--two{grid-template-columns:1fr}}
.later{margin-top:1.25rem;max-width:62rem;padding:1.1rem 1.3rem;border:1px dashed var(--line-2);border-radius:var(--r-lg)}
.later-h{font:500 .9rem/1.3 var(--sans);color:var(--text-3);margin:0 0 .7rem;letter-spacing:0}
.later ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.later li{display:grid;grid-template-columns:10rem minmax(0,1fr) auto;gap:.2rem 1rem;align-items:baseline;font-size:.9rem;line-height:1.45;color:var(--text-2)}
.later li b{color:var(--text);font-weight:600}
.later li a{white-space:nowrap;font-weight:500}
@media (max-width:700px){.later li{grid-template-columns:minmax(0,1fr) auto}.later li span{grid-column:1/-1;grid-row:2}}
/* The front page's one price line, where the pricing table was (the walk: the home page repeated /pricing in full). */
.price-line{margin:1.5rem 0 0;color:var(--text-2);font-size:.95rem;max-width:40em}
.price-line b{font:640 1.7rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;color:var(--text);margin-right:.35rem}
.split-said{margin:1.25rem 0 0;color:var(--text-2);max-width:40em}
ol.rules{margin:0;padding-left:1.3rem;display:grid;gap:.45rem;color:var(--text-2);font-size:.95rem}

/* Where we stop */
.never{display:grid;grid-template-columns:repeat(3,1fr);gap:0 2.5rem}
.never div{border-top:1px solid var(--line-2);padding:1.25rem 0 1.75rem}
.never b{display:block;font:600 1.1rem/1.3 var(--sans);font-stretch:104%}
.never p{margin:.45rem 0 0;color:var(--text-2);font-size:.95rem}
@media (max-width:900px){.never{grid-template-columns:1fr}}
/* Five cards: three across, then two sharing the same width, so no cell of the row stands empty. */
@media (min-width:901px){.never--five{grid-template-columns:repeat(6,1fr)}.never--five>div{grid-column:span 2}.never--five>div:nth-child(n+4){grid-column:span 3}}

/* About */
.about{display:grid;grid-template-columns:5fr 7fr;gap:4rem;align-items:center}
.photo{aspect-ratio:4/5;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);display:grid;place-items:center;text-align:center;padding:1.5rem;color:var(--text-3);font:400 .84rem/1.5 var(--sans);margin:0}
.photo img{width:100%;height:100%;object-fit:cover;border-radius:var(--r-lg)}
.about .h2{margin-bottom:1rem}
.entity{margin-top:1.5rem;font-size:.9rem;line-height:1.7;color:var(--text-3)}
@media (max-width:900px){.about{grid-template-columns:1fr;gap:2rem}.photo{max-width:22rem}}

/* Timeline */
.timeline{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:1.25rem}
.timeline li{border-top:1px solid var(--line-2);padding-top:1.2rem}
.timeline .when{display:block;font:600 .88rem/1.3 var(--sans);color:var(--text-3);margin-bottom:.4rem}
.timeline b{display:block;font:600 1.08rem/1.3 var(--sans);margin-bottom:.3rem}
.timeline p{margin:0;font-size:.92rem;color:var(--text-2)}
@media (max-width:900px){.timeline{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.timeline{grid-template-columns:1fr}}

/* First email exhibit */
.email{background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg)}
.email .hdr{padding:.9rem 1.1rem;border-bottom:1px solid var(--line);font:400 .84rem/1.7 var(--sans);color:var(--text-2)}
.email .hdr b{color:var(--text-3);font-weight:500;display:inline-block;width:5em}
/* The label in its own column, so a subject that wraps lines up under itself, never under "Subject" (the walk). */
.email .hdr>div{display:grid;grid-template-columns:5em minmax(0,1fr)}
.email .hdr>div>b{width:auto}
.email .body{padding:1.1rem;font-size:.95rem;line-height:1.6;color:var(--text)}
.email .body p{margin:0 0 .8rem}
.email .sig{font-size:.86rem;color:var(--text-3);border-top:1px solid var(--line);padding-top:.7rem;margin-top:1rem}

/* Pack page price block */
.hero-price{display:flex;gap:2rem;align-items:flex-start;flex-wrap:wrap;margin:1.5rem 0 .5rem;padding:1.25rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.hero-price .amount{font:640 2.8rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;display:block}
.hero-price .per{color:var(--text-3);font-size:.9rem;display:block;margin-top:.35rem}
.hero-price .offer{margin:0;flex:1;min-width:16rem}

/* FAQ */
.faq{display:grid;grid-template-columns:1fr 1fr;gap:0 4rem;border-bottom:1px solid var(--line)}
.faq details{border-top:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:1.1rem 2.2rem 1.1rem 0;font:600 1.05rem/1.35 var(--sans);position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:.2rem;top:.95rem;font:400 1.3rem/1 var(--sans);color:var(--text-3);transition:transform .15s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:0 0 1.2rem;color:var(--text-2);font-size:.97rem}
@media (max-width:900px){.faq{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.faq summary::after{transition:none}}

/* Closing band */
.cta-band .container{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
@media (max-width:900px){.cta-band .container{grid-template-columns:1fr;gap:2rem}}

/* Prose pages */
.prose{max-width:44rem}
.prose h2{margin:0 0 .6rem}
.prose > * + h2{margin-top:2.5rem}
.prose h3{margin:1.6rem 0 .4rem}
.prose li{margin:.35rem 0}
.prose p{color:var(--text-2)}
.prose .lede{color:var(--text-2)}

/* Footer: the plain footer of a page somebody was sent; the site's footer is v5's (the site rebrand, below). */
.footer{color:var(--text-2);font-size:.92rem}
.footer a{text-decoration:none;color:var(--text-2)}
.footer a:hover{color:var(--text)}
.footer .legal{display:flex;flex-wrap:wrap;gap:.75rem 2rem;justify-content:space-between;font-size:.82rem;color:var(--text-3)}


/* v3: the map grid behind the hero */
.hero--home{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero--home::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:48px 48px;background-position:-1px -1px;
  -webkit-mask-image:radial-gradient(ellipse 60% 75% at 72% 42%,#000 25%,transparent 78%);mask-image:radial-gradient(ellipse 60% 75% at 72% 42%,#000 25%,transparent 78%)}
.hero--home .container{position:relative}
.hero--home .hero-title{font-weight:700;letter-spacing:-.035em}
.axis{stroke:var(--line-2);stroke-width:1;stroke-dasharray:3 6}
.tick{stroke:var(--line-2);stroke-width:1.5}
.tick--major{stroke:var(--text-3)}
.bearing{font:500 13px var(--mono);fill:var(--text-3)}
.status{display:inline-flex;align-items:center;gap:.55rem;font:500 .8rem/1 var(--mono);color:var(--text-2);padding:.45rem .7rem;border:1px solid var(--line);border-radius:999px;background:var(--panel);margin:0 0 1.5rem}
.status i{width:.45rem;height:.45rem;border-radius:50%;background:var(--pass);box-shadow:0 0 0 3px rgba(70,211,154,.18)}

/* v3: the filter tree, from 74 million to your hundred */
.tree{list-style:none;margin:0 0 4.5rem;padding:0;max-width:60rem}
.tree li{position:relative;display:grid;grid-template-columns:11.5rem minmax(0,1fr);gap:1.5rem;align-items:baseline;padding:1.3rem 1.5rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel)}
.tree li+li{margin-top:1rem}
.tree li:nth-child(2){margin-left:3rem}
.tree li:nth-child(3){margin-left:6rem}
.tree li:nth-child(4){margin-left:9rem}
.tree li+li::before{content:"";position:absolute;left:-1.75rem;top:-1.05rem;width:1.75rem;height:calc(50% + 1.05rem);border-left:1px solid var(--line-2);border-bottom:1px solid var(--line-2);border-bottom-left-radius:6px}
.tree li>b{font:500 clamp(2.2rem,4.2vw,3.4rem)/1 var(--mono);letter-spacing:-.04em;color:var(--text)}
.tree li>span{font-size:1.05rem;line-height:1.5;color:var(--text-2)}
.tree li>span em{display:block;font:500 .74rem/1.4 var(--mono);font-style:normal;color:var(--text-3);margin-bottom:.35rem}
.tree li.fx{border-color:var(--signal-edge);box-shadow:inset 3px 0 0 var(--signal)}
.tree li.fx>b{color:var(--signal)}
.tree li.last{border-color:var(--line-2)}
@media (max-width:760px){
  .tree li{grid-template-columns:minmax(0,1fr);gap:.5rem;padding:1.1rem 1.2rem}
  .tree li:nth-child(2){margin-left:1rem}.tree li:nth-child(3){margin-left:2rem}.tree li:nth-child(4){margin-left:3rem}
  .tree li+li::before{left:-1rem;width:1rem}
}

/* v3: shares drawn as bars in the city table */
.share{display:inline-flex;align-items:center;gap:.9rem;justify-content:flex-end;width:100%}
.share .track{width:9rem;height:.45rem;border-radius:99px;background:var(--line)}
.share .fill{display:block;height:100%;border-radius:99px;background:var(--signal)}
.share .pct{min-width:3.2rem;text-align:right;font:500 1.15rem/1 var(--mono)}
tbody tr:hover td{background:rgba(90,180,255,.04)}
th{font-family:var(--mono);font-size:.76rem;letter-spacing:0}
@media (max-width:600px){.share .track{width:4.5rem}}

/* v3: quieter surfaces */
.sheet{box-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 24px 48px -28px rgba(0,0,0,.7)}
.never div{border-top-color:var(--line-2)}
.step{border-top-color:var(--line-2)}
.step .n{font:500 1rem/1 var(--mono);color:var(--live)}
.faq summary::after{font-family:var(--mono)}


.finding{background:transparent;border-color:var(--signal-edge);box-shadow:inset 3px 0 0 var(--signal)}
.findings li.sel{background:transparent;border-color:var(--signal-edge);box-shadow:inset 3px 0 0 var(--signal)}


/* ================= v4: light enterprise ================= */

/* Dark scope: tokens flip inside these, so every component renders dark without its own rules */
.dark,.band--navy,.footer,.patch-frame{
  --bg:#0B1B2E;--bg-2:#081524;--panel:#112640;--panel-2:#16304F;--line:#1E3450;--line-2:#2C4666;
  --text:#EEF3F9;--text-2:#A9B7C9;--text-3:#8195AE;--signal-text:#FFB23F;--signal-edge:rgba(255,178,63,.45);
  --grid:rgba(120,165,220,.07);--live:#7FA8FF;--live-wash:rgba(127,168,255,.14);--field-line:#5A7597;
  color:var(--text);background:var(--bg);color-scheme:dark}
.band--navy{padding:6.5rem 0}
@media (max-width:900px){.band--navy{padding:4.5rem 0}}

/* Type */
body{font-size:1.0625rem}
.h1,.h2,.h3,.sheet-title{font-weight:600;letter-spacing:-.03em}
.h2{letter-spacing:-.025em}
.lede{color:var(--text-2)}

/* Links, focus, buttons: one cobalt */
:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
a:hover{text-decoration-color:var(--brand)}
.btn{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600;border-radius:var(--r)}
.btn:hover{background:var(--brand-2);border-color:var(--brand-2)}
.btn--ghost{background:transparent;color:var(--text);border-color:var(--line-2)}
.btn--ghost:hover{background:transparent;border-color:var(--text)}
.dark .btn--ghost,.band--navy .btn--ghost,.footer .btn--ghost{color:var(--text);border-color:var(--line-2)}

/* Forms */
.field input,.field select,.field textarea{background:var(--panel);border-color:var(--line-2);color:var(--text)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-wash)}

/* Nav: white, the navy mark (v5 writes the rest). */

/* Hero: calm, short, the product framed on the right */
.hero--home{border-bottom:1px solid var(--line);padding:4.5rem 0 4rem}
.hero--home::before{-webkit-mask-image:radial-gradient(ellipse 55% 70% at 78% 40%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse 55% 70% at 78% 40%,#000 20%,transparent 75%)}
.hero--home .hero-title{font-weight:600;letter-spacing:-.035em;font-size:clamp(2.4rem,4.2vw,3.9rem);line-height:1.04}
.hero-sub{font-size:1.2rem;line-height:1.55;color:var(--text-2);margin:1.25rem 0 2rem;max-width:34em}
.hero-sub b{color:var(--text);font-weight:600}
.status{background:var(--bg-2);border-color:var(--line);color:var(--text-2)}
.status i{background:var(--pass);box-shadow:0 0 0 3px rgba(31,157,99,.15)}
.patch-frame{border-radius:12px;border:1px solid #1E3450;box-shadow:0 1px 2px rgba(11,27,46,.08),0 28px 60px -24px rgba(11,27,46,.45);overflow:hidden;max-width:500px;margin-left:auto}
.frame-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 1rem;border-bottom:1px solid var(--line);font:500 .78rem/1 var(--mono);color:var(--text-3)}
.frame-bar .tag{padding:.3rem .5rem;border:1px solid var(--line-2);border-radius:99px;color:var(--text-2)}
.patch-frame .patch-field{max-width:none;margin:0;padding:1.25rem 1.25rem .5rem}
.patch-frame .pick{max-width:none;margin:0;padding:.9rem 1.1rem;border-top:1px solid var(--line)}
.legend{max-width:500px;color:var(--text-2)}
.legend .note{color:var(--text-3)}
.sw{background:#8AA0BD;opacity:.8}
.sw.sw--fx{background:var(--signal);opacity:1}
@media (max-width:1000px){.patch-frame{margin:0 auto}}

/* Trust strip under the hero */
.trust{border-bottom:1px solid var(--line);background:#fff}
.trust ul{list-style:none;margin:0 auto;padding:1.4rem var(--gutter);max-width:var(--w);display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.trust li{display:flex;gap:.7rem;align-items:flex-start;font-size:.93rem;line-height:1.45;color:var(--text-2)}
.trust li b{color:var(--text);font-weight:600;display:block}
.trust li::before{content:"";flex:none;width:1.15rem;height:1.15rem;margin-top:.1rem;border-radius:50%;background:var(--brand-wash) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.3l2.6 2.5L12 5.4' fill='none' stroke='%232447D6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/.8rem no-repeat}
@media (max-width:900px){.trust ul{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.trust ul{grid-template-columns:1fr}}

/* Light bands and panels */
.band--deep{background:var(--bg-2);border-color:var(--line)}
.sheet{box-shadow:0 1px 2px rgba(11,27,46,.06),0 16px 40px -20px rgba(11,27,46,.25);border-color:var(--line)}
.sheet-bar{border-bottom-color:var(--line)}
.finding{color:var(--text)}
.table-wrap{background:#fff;border-color:var(--line)}
th{background:var(--bg-2);color:var(--text-3)}
td{color:var(--text-2)}
tbody tr:hover td{background:rgba(36,71,214,.03)}
td .pct,.share .pct{color:var(--signal-text)}
.share .track{background:var(--line)}
.tab{border-color:var(--line-2);color:var(--text-2);background:#fff}
.tab b{border-color:var(--signal-edge);color:var(--signal-text)}
.tab[aria-selected="true"]{border-color:var(--brand);background:var(--brand-wash);color:var(--text)}
.tab[aria-selected="true"] b{background:var(--signal);border-color:var(--signal);color:#0B1B2E}
.price{background:#fff;border-color:var(--line)}
.price--feat{border-color:var(--line-2);box-shadow:inset 0 3px 0 var(--brand),0 16px 40px -24px rgba(11,27,46,.3)}
.offer{background:var(--bg-2);border-left-color:var(--brand)}
.checks li::before{border-color:var(--pass)}
.step .n{color:var(--brand)}
.manifest{background:var(--console);border-color:var(--console-seam)}
.photo{background:var(--bg-2);border-color:var(--line)}
.never div{border-top-color:var(--line-2)}
.rule{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.rule .h1{font-weight:600}
.faq,.faq details{border-color:var(--line)}

/* The navy band: 74 million to your hundred */
.band--navy .tree li{background:var(--panel)}
.band--navy .lede{color:var(--text-2)}
.band--navy .step{border-top-color:var(--line-2)}
.band--navy .step .n{color:var(--live)}
.band--navy a{text-decoration-color:var(--line-2)}
.tree li.fx>b{color:var(--signal-text)}


/* ================= added in the app (24 Sep 2026) ================= */

/* The About section with no photograph yet: the words take the whole row. */
.about>:only-child{grid-column:1/-1;max-width:48rem}

/* What a form says back when it cannot be sent: the server's own sentence, under the button. */
.form-error{margin:0;padding:.7rem .9rem;border:1px solid var(--signal-edge);border-left:3px solid var(--signal);border-radius:var(--r);background:var(--signal-wash);color:var(--text);font-size:.92rem;line-height:1.45}
.form-error:empty{display:none}
.btn[aria-busy="true"]{opacity:.7;cursor:progress}

/* Live readings that could not be taken: said in words, never left blank. */
.unread{color:var(--text-3)}

/* A dated reading under a figure or a record. */
.read-when{font-size:.86rem;color:var(--text-3);margin:.75rem 0 0}

/* Documents: the privacy policy, the terms, the refunds page and the notices the server writes. */
.doc h2{font-size:1.35rem;line-height:1.25;font-weight:600;letter-spacing:-.015em;margin:2.25rem 0 .6rem}
.doc h1+.lede{margin-top:1.25rem}
.doc ul{padding-left:1.2rem}
.doc table{margin:1rem 0}
.doc .dated,.doc .eyebrow{font-size:.9rem;color:var(--text-3)}
.doc .eyebrow{margin:0 0 1rem}
.doc pre{background:var(--console);color:var(--ps-text);border-radius:var(--r);padding:.9rem 1rem;overflow-x:auto;font:400 .82rem/1.6 var(--mono)}
.doc code{font-family:var(--mono);font-size:.9em}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.doc h1{font-size:clamp(2rem,3.6vw,2.9rem);line-height:1.06;font-weight:600;letter-spacing:-.03em;margin:0 0 1rem;font-stretch:108%}
.doc table{border:1px solid var(--line);border-radius:var(--r)}
/* A receipt line is one JSON object with no spaces to break at: it wraps anywhere rather than run out of its console. */
.record .jsonl{overflow-wrap:anywhere}
/* A two-column count (a city's report, the counts round your office) wraps its labels at every width, so the figure
   stays in view instead of behind a sideways scroll: at 1440 the Leeds report's 3,297 and its read dates were cut off
   in the hero's narrow column (the blind walk of 10 Oct 2026), and a longer city name is wider still. The figure keeps
   to one line. */
.hero .table-wrap th,.hero .table-wrap td{white-space:normal}
.hero .table-wrap td.num{white-space:nowrap}
/* Two lines rather than six (the compliance page), one column on a phone like the six. */
.never.never--two{grid-template-columns:1fr 1fr}
@media (max-width:900px){.never.never--two{grid-template-columns:1fr}}
/* The pages the server writes for one person (an agreement to accept, a Friday report): their form
   and their headline, in the site's own buttons and tokens. */
:root{--border-5:var(--line-2)}
.doc .headline{font-size:1rem;color:var(--text);margin:.5rem 0 1rem}
.doc .button{display:inline-flex;align-items:center;justify-content:center;font:600 .95rem/1 var(--sans);padding:.95rem 1.25rem;border-radius:var(--r);border:1px solid var(--brand);background:var(--brand);color:#fff;text-decoration:none;cursor:pointer}
.doc .button:hover{background:var(--brand-2);border-color:var(--brand-2)}
.footer--plain{padding:2rem 0}
.footer--plain .legal{margin-top:0;padding-top:0;border-top:0}

/* ================= the review of 24 Sep 2026 ================= */

/* A jump to a section (/#patch, /contact#book) lands below the sticky header, not under it (tech-03). */
html{scroll-padding-top:5.25rem}

/* The first stop for a keyboard: past the nine links of the header to the page (tech-12). */
.skip{position:absolute;left:1rem;top:-4rem;z-index:40;padding:.7rem 1rem;background:var(--brand);color:#fff;border-radius:var(--r);text-decoration:none;font:600 .92rem/1 var(--sans)}
.skip:focus{top:.7rem}

/* The footer's column heads are h2 for the page's outline, set as small labels (tech-12): v5 writes them. */

/* Contrast (tech-05, tech-11): a field's edge at 3:1 or more against the field, light and dark, and
   on the dark bands the focus ring and the focused field in the light cobalt, 7.4:1 on navy, where
   the deep cobalt measured 2.4:1. */
.field input,.field select,.field textarea{border-color:var(--field-line)}
:is(.dark,.band--navy,.footer,.patch-frame) :focus-visible{outline-color:var(--live)}
:is(.dark,.band--navy,.footer,.patch-frame) .field :is(input,select,textarea):focus{border-color:var(--live);box-shadow:0 0 0 3px var(--live-wash)}
.field [aria-invalid="true"]{border-color:var(--signal-text)}

/* Tables of cities (tech-04): the city's name is the link, the dates wrap, and on a phone each row
   stacks (name and share, then the dates) so nothing sits behind a sideways scroll. */
table.cities td.when{white-space:normal;min-width:7.5rem}
table.cities .m-only{display:none}
@media (max-width:600px){
  table.cities,table.cities tbody{display:block}
  table.cities thead{display:none}
  table.cities tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.35rem 1rem;align-items:center;padding:.85rem 1rem;border-bottom:1px solid var(--line)}
  table.cities tbody tr:last-child{border-bottom:0}
  table.cities td{display:block;padding:0;border:0;white-space:normal;min-width:0}
  table.cities td.when{grid-column:1/-1;font-size:.86rem;color:var(--text-3)}
  table.cities td.go{display:none}
  table.cities td[colspan]{grid-column:1/-1}
  table.cities .m-only{display:inline}
  table.cities .share{gap:.6rem}
  table.cities .share .track{width:3.5rem}
}

/* A finding's key, as the pack carries it (the method's list of findings). */
.key{display:inline-block;margin-top:.3rem;font-size:.74rem;font-weight:400;color:var(--text-3);white-space:normal}

/* The agreement's own words, quoted (the refunds page). */
.doc blockquote{margin:1rem 0;padding:.1rem 0 .1rem 1.1rem;border-left:3px solid var(--line-2)}
.doc blockquote p{color:var(--text)}
.paths{font-size:.84em;word-spacing:.15em}

/* ================= the pages a client is sent (24 Sep 2026) ================= */

/* The mark as an image (a page somebody was sent is printed, and no background prints): the same size
   as the nav's own mark, and nothing painted behind it. */
.wordmark img.mark{width:auto;background:none}

/* A short page somebody was sent (a link that ran out, an invitation) keeps its footer at the foot of
   the window, not halfway up it with white below. */
body.plain{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
body.plain>main{flex:1 0 auto}
/* A button that cannot be pressed yet says so by its look (the invitation's Join). */
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn:disabled:hover{background:var(--brand);border-color:var(--brand)}

/* ================= v5: the company (site/rebrand) ================= */

/* The site rebrand (23 Oct 2026, ops/SITE-REBRAND-CONTRACT.md §4): Bondstone as a company of four departments, on the same
   tokens and type. The department nav and its grouped menu, the footer, and the components every department's pages share.
   The class names are the contract (server/sitekit.ts writes most of them); a page's own rules go in its builder's block at
   the end of this file. One cobalt for what you can click; amber only for a finding; navy frames for the product. */

/* The dark scope, widened: the navy hero, a navy card, a product frame, the promise box and the intelligence panel flip to
   the dark tokens exactly as .dark and .band--navy do, so every component inside them renders dark with no rules of its own. */
.hero--navy,.card--navy,.frame,.promise-box,.intel{
  --bg:#0B1B2E;--bg-2:#081524;--panel:#112640;--panel-2:#16304F;--line:#1E3450;--line-2:#2C4666;
  --text:#EEF3F9;--text-2:#A9B7C9;--text-3:#8195AE;--signal-text:#FFB23F;--signal-edge:rgba(255,178,63,.45);
  --grid:rgba(120,165,220,.07);--live:#7FA8FF;--live-wash:rgba(127,168,255,.14);--field-line:#5A7597;
  color:var(--text);background:var(--bg);color-scheme:dark}
:is(.hero--navy,.card--navy,.frame,.promise-box,.intel) :focus-visible{outline-color:var(--live)}
:is(.hero--navy,.card--navy,.frame,.promise-box,.intel) .field :is(input,select,textarea):focus{border-color:var(--live);box-shadow:0 0 0 3px var(--live-wash)}
:is(.dark,.band--navy,.footer,.hero--navy,.card--navy,.frame,.promise-box,.intel) :is(.eyebrow,.card-k,.card-go,.np-all){color:var(--live)}

/* ── Type and heroes, to the front door's bar (24 Oct 2026) ── */
/* A heading's lines are balanced, so no heading ends in a word on its own or breaks a phrase ("Find / out free"). */
.h1,.h2,.h3,.card-h{text-wrap:balance}
/* A hero with copy and nothing beside it (the method, the city reports, the email check, the phone firms' Pack) stands on one
   column at a reading width, instead of a left half with an empty right half. */
.hero:not(.hero--home,.ct-hero,.rp-hero--solo) .container:has(> :only-child){grid-template-columns:minmax(0,1fr)}
.hero:not(.hero--home,.ct-hero,.rp-hero--solo) .container>:only-child{max-width:46rem}
.hero:not(.hero--home){padding:5rem 0 5.5rem}
@media (max-width:1000px){.hero:not(.hero--home){padding:3rem 0 4rem}}

/* ── The header: the four departments, each a link to its hub that opens its panel on hover and on keyboard focus ── */
.nav{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.nav .container{display:flex;align-items:center;gap:1.75rem;height:4.25rem}
.nav-main{margin-left:auto;align-self:stretch;display:flex}
.nav-links{display:flex;align-items:stretch;gap:1.45rem;margin:0;padding:0;list-style:none}
.nav-links>li{position:relative;display:flex;align-items:center}
.nav-links>li>a{position:relative;display:inline-flex;align-items:center;gap:.28rem;height:100%;font:500 .92rem/1 var(--sans);color:var(--text-2);text-decoration:none;white-space:nowrap}
.nav-links>li>a:hover,.nav-links>li:hover>a,.nav-links>li:focus-within>a,.nav-links>li>a[aria-current]{color:var(--text)}
.nav-links>li>a[aria-current]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px 2px 0 0;background:var(--brand)}
.nav-links .caret{width:14px;height:14px;stroke-width:2;color:var(--text-3);transition:transform .18s ease,color .18s ease}
.has-panel:hover>a .caret,.has-panel:focus-within>a .caret{transform:rotate(180deg);color:var(--text-2)}
.nav-panel{position:absolute;top:calc(100% + .4rem);left:-1.1rem;z-index:30;width:28rem;padding:.5rem;background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 1px 2px rgba(11,27,46,.06),0 26px 60px -20px rgba(11,27,46,.34);
  visibility:hidden;opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s}
.has-panel:hover>.nav-panel,.has-panel:focus-within>.nav-panel{visibility:visible;opacity:1;transform:none;pointer-events:auto;transition:opacity .16s ease,transform .16s ease,visibility 0s}
/* The gap under the header is part of the panel, so the pointer never leaves it on the way down. */
.nav-panel::before{content:"";position:absolute;left:0;right:0;top:-.5rem;height:.5rem}
.np-head{display:flex;align-items:center;gap:.8rem;max-width:none;margin:0;padding:.65rem .7rem .85rem;border-bottom:1px solid var(--line);font-size:.9rem;line-height:1.4;color:var(--text-2)}
.np-head .ico-chip{width:36px;height:36px;border-radius:10px}
.np-head .ico-chip .ico{width:19px;height:19px}
.np-rows{list-style:none;margin:.35rem 0;padding:0;display:grid;gap:.1rem}
.np-row{display:grid;gap:.18rem;padding:.62rem .7rem;border-radius:9px;color:var(--text);text-decoration:none}
.np-row:hover,.np-row:focus-visible{background:var(--bg-2)}
.np-name{font:600 .95rem/1.3 var(--sans)}
.np-desc{font-size:.84rem;line-height:1.35;color:var(--text-3)}
.np-all{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.8rem .7rem .55rem;border-top:1px solid var(--line);font:600 .9rem/1 var(--sans);color:var(--brand);text-decoration:none}
.np-all .ico{width:18px;height:18px;transition:transform .18s ease}
.np-all:hover .ico{transform:translateX(3px)}
.nav-cta{display:flex;align-items:center;gap:.4rem}
.nav-cta .signin{font:500 .92rem/1 var(--sans);text-decoration:none;color:var(--text-2);padding:.6rem .55rem}
.nav-cta .signin:hover{color:var(--text)}
.nav-cta .btn{min-width:10.75rem;padding:.8rem 1.05rem;font-size:.9rem}
.nav-menu{display:none}
@media (min-width:1100px) and (max-width:1279px){
  .nav .container{gap:1.25rem}
  .nav-links{gap:1.05rem}
  .nav-links>li>a,.nav-cta .signin{font-size:.875rem}
  .wordmark .name{letter-spacing:.17em}
  .nav-cta .btn{min-width:10rem;padding:.75rem .9rem;font-size:.86rem}
}
/* Under 1100px: the grouped menu, each department a heading with its services under it, then the company's pages and the button. */
@media (max-width:1099px){
  .nav .container{gap:.6rem}
  .nav-main,.nav-cta .signin{display:none}
  .nav-menu{display:block;margin-left:auto}
  .nav-menu summary{display:inline-flex;align-items:center;list-style:none;cursor:pointer;padding:.62rem .8rem;border:1px solid var(--line-2);border-radius:var(--r);background:#fff;font:600 .9rem/1 var(--sans);color:var(--text)}
  .nav-menu summary::-webkit-details-marker{display:none}
  .nav-menu summary .ico{width:18px;height:18px}
  .nm-open,.nav-menu[open] .nm-shut{display:inline-flex;align-items:center;gap:.45rem}
  .nm-shut,.nav-menu[open] .nm-open{display:none}
  .nm-panel{position:absolute;left:0;right:0;top:100%;max-height:calc(100vh - 4.25rem);max-height:calc(100dvh - 4.25rem);overflow-y:auto;overscroll-behavior:contain;
    padding:.25rem var(--gutter) 1.5rem;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 28px 48px -28px rgba(11,27,46,.4)}
  .nm-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2.5rem}
  .nm-group{padding:1rem 0 .5rem;border-bottom:1px solid var(--line)}
  .nm-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.3rem 0 .45rem;font:600 .78rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand);text-decoration:none}
  .nm-head .ico{width:16px;height:16px}
  .nm-group ul,.nm-more{list-style:none;margin:0;padding:0}
  .nm-group li a{display:flex;align-items:baseline;padding:.62rem 0;font:500 .98rem/1.3 var(--sans);color:var(--text);text-decoration:none}
  .nm-more{margin-top:.35rem}
  .nm-more a{display:block;padding:.85rem 0;border-bottom:1px solid var(--line);font:600 1rem/1.2 var(--sans);color:var(--text);text-decoration:none}
  .nm-cta{width:100%;margin-top:1.25rem}
  .nav-cta .btn{padding:.72rem .85rem;font-size:.86rem}
}
@media (max-width:640px){.nm-groups{grid-template-columns:minmax(0,1fr)}}
@media (max-width:480px){.nav-cta{display:none}.wordmark .name{letter-spacing:.16em;font-size:.95rem}}
@media (prefers-reduced-motion:reduce){.nav-panel,.nav-links .caret,.np-all .ico{transition:none!important}}

/* ── The footer: navy; the company in a line, a column per department and one for the company, the legal row ── */
.footer:not(.footer--plain){padding:4.5rem 0 2.25rem;border-top:1px solid #1E3450}
.footer .wordmark{color:var(--text)}
.footer .wordmark .mark{background-image:url("/assets/bondstone-mark-white-64.png")}
.foot-top{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1.75rem 4rem;align-items:end;padding-bottom:2.75rem;border-bottom:1px solid var(--line)}
.foot-line{max-width:28em;margin:1.3rem 0 0;font-size:1.08rem;line-height:1.55;color:var(--text)}
.foot-reach .own{max-width:36em;margin:0;font-size:.88rem;line-height:1.6;color:var(--text-3)}
.foot-reach .own+.own{margin-top:.55rem}
.footer .own a{color:var(--text-2);text-decoration:underline;text-decoration-color:var(--line-2)}
.footer .cols{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2rem;padding:2.75rem 0}
.footer .foot-h{margin:0 0 1rem;font:600 .74rem/1.3 var(--sans);font-stretch:100%;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.footer .foot-h a{color:var(--text-3)}
.footer .foot-h a:hover{color:var(--text)}
.footer .cols ul{list-style:none;margin:0;padding:0;display:grid;gap:.62rem}
.footer .cols li{line-height:1.35}
.foot-legal{display:grid;gap:.9rem;padding-top:1.75rem;border-top:1px solid var(--line)}
.legal-links ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.6rem}
.legal-links a{font-size:.86rem}
.legal-co{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;max-width:none;margin:0;font-size:.82rem;line-height:1.55;color:var(--text-3)}
.nobr{white-space:nowrap}
@media (max-width:1000px){.footer .cols{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:2.25rem}}
@media (max-width:760px){
  .footer:not(.footer--plain){padding:3.5rem 0 2rem}
  .foot-top{grid-template-columns:minmax(0,1fr);align-items:start}
  .footer .cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.25rem 1.5rem}
}

/* ── Icons: inline line drawings in the text's colour; a chip is a soft cobalt square holding one ── */
.ico{display:inline-block;flex:none;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.ico-chip{display:inline-grid;place-items:center;flex:none;width:44px;height:44px;border-radius:12px;background:var(--brand-wash);color:var(--brand)}
.ico-chip .ico{width:22px;height:22px}
:is(.dark,.band--navy,.footer,.hero--navy,.card--navy,.frame,.promise-box,.intel) .ico-chip{background:rgba(127,168,255,.13);color:var(--live)}

/* ── Breadcrumbs, the eyebrow, a pill, a flag ── */
.crumbs{margin:0 0 1.1rem;font:500 .84rem/1.4 var(--sans);color:var(--text-3)}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem .55rem}
.crumbs li{display:flex;align-items:center;gap:.55rem}
.crumbs li+li::before{content:"/";color:var(--line-2)}
.crumbs a{color:var(--text-3);text-decoration:none}
.crumbs a:hover{color:var(--brand)}
.crumbs [aria-current]{color:var(--text-2)}
.eyebrow{display:flex;align-items:center;gap:.55rem;max-width:none;margin:0 0 1.1rem;font:600 .8rem/1.25 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.eyebrow .ico{width:20px;height:20px}
.doc .eyebrow{display:block;font-weight:400;letter-spacing:0;text-transform:none}
.pill{display:inline-flex;align-items:center;padding:.32rem .6rem;border-radius:99px;background:var(--brand);color:#fff;font:600 .72rem/1 var(--sans);letter-spacing:.03em;white-space:nowrap;vertical-align:middle}
.flag{display:inline-flex;align-items:center;align-self:center;gap:.4rem;padding:.3rem .58rem;border:1px solid var(--line-2);border-radius:99px;font:600 .72rem/1 var(--sans);letter-spacing:.02em;color:var(--text-2);white-space:nowrap}
.flag::before{content:"";width:.42rem;height:.42rem;border-radius:50%;background:currentColor}
.flag--fx{color:var(--signal-text);border-color:var(--signal-edge);background:var(--signal-wash)}
.flag--live{color:var(--live);border-color:rgba(36,71,214,.35);background:var(--live-wash)}
.flag--ok{color:var(--pass);border-color:rgba(31,157,99,.35);background:rgba(31,157,99,.08)}
:is(.dark,.band--navy,.hero--navy,.card--navy,.frame,.promise-box,.intel) .flag--live{border-color:rgba(127,168,255,.4)}
:is(.dark,.band--navy,.hero--navy,.card--navy,.frame,.promise-box,.intel) .flag--ok{color:#5BD6A0;border-color:rgba(91,214,160,.4);background:rgba(91,214,160,.1)}

/* ── Heroes: the navy hero (the front page), with the B mark as the faintest watermark; a service hero's price ── */
.hero--navy{position:relative;overflow:hidden;padding:5.5rem 0 6rem;border-bottom:1px solid #1E3450}
.hero--navy::after{content:"";position:absolute;right:-5rem;bottom:-9rem;width:30rem;aspect-ratio:1328/1495;background:url("/assets/bondstone-mark-white.png") center/contain no-repeat;opacity:.04;pointer-events:none}
.hero--navy .container{position:relative;z-index:1}
.hero--navy .lede{color:var(--text-2)}
@media (max-width:1000px){.hero--navy{padding:4rem 0 4.5rem}}
@media (max-width:760px){.hero--navy::after{display:none}}
.price-tag{margin:1.75rem 0 0;padding:1.15rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.price-tags{display:flex;flex-wrap:wrap;gap:1.1rem 2.75rem;margin:1.75rem 0 0;padding:1.15rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.price-tags .price-tag{margin:0;padding:0;border:0}
.pt-figure{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .45rem;max-width:none;margin:0}
.pt-figure b{font:640 2.6rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;color:var(--text)}
.pt-from,.pt-unit{font:500 .95rem/1.2 var(--sans);color:var(--text-3)}
.pt-note{max-width:30em;margin:.5rem 0 0;font-size:.9rem;line-height:1.45;color:var(--text-2)}
@media (max-width:600px){.pt-figure b{font-size:2.15rem}}

/* ── Cards: 2, 3 or 4 across, one column on a phone; white, navy, or featured with a cobalt rule ── */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.cards--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.cards--4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1000px){.cards--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.cards,.cards--2,.cards--3,.cards--4{grid-template-columns:minmax(0,1fr)}}
.card{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:0 1px 2px rgba(11,27,46,.04),0 14px 34px -26px rgba(11,27,46,.3);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.card:hover{transform:translateY(-2px);border-color:var(--line-2);box-shadow:0 1px 2px rgba(11,27,46,.05),0 22px 44px -26px rgba(11,27,46,.38)}
.card--navy{border-color:#1E3450}
.card--feat{border-color:var(--line-2);box-shadow:inset 0 3px 0 var(--brand),0 16px 40px -24px rgba(11,27,46,.3)}
.card>.ico-chip{margin-bottom:1.25rem}
.card-k{max-width:none;margin:0 0 .55rem;font:600 .78rem/1.25 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.card-h{margin:0;font:600 1.3rem/1.22 var(--sans);font-stretch:106%;letter-spacing:-.02em;color:var(--text)}
.card-p{margin:.6rem 0 0;font-size:.97rem;line-height:1.55;color:var(--text-2)}
.card-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .4rem;max-width:none;margin:1.3rem 0 0;font:640 1.9rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;color:var(--text)}
.card-price small,.svc-price small{font:500 .88rem/1.2 var(--sans);letter-spacing:0;color:var(--text-3)}
.card-price .price-plus,.svc-price .price-plus{flex-basis:100%;display:block;margin-top:.45rem;font:500 .86rem/1.4 var(--sans);letter-spacing:0;color:var(--text-2)}
.card-go{display:inline-flex;align-items:center;gap:.4rem;margin-top:auto;padding-top:1.5rem;font:600 .95rem/1.2 var(--sans);color:var(--brand);text-decoration:none}
.card-go .ico{width:18px;height:18px;transition:transform .2s ease}
.card:hover .card-go .ico{transform:translateX(3px)}
.card--click .card-go::after{content:"";position:absolute;inset:0;border-radius:inherit}
.card--sm{padding:1.4rem 1.5rem}
.card--sm .card-h{font-size:1.1rem}
.card--sm .card-price{font-size:1.4rem;margin-top:1rem}
.card--sm .card-go{padding-top:1.1rem;font-size:.9rem}
@media (prefers-reduced-motion:reduce){.card,.card-go .ico{transition:none}.card:hover{transform:none}.card:hover .card-go .ico{transform:none}}

/* ── The departments (the front page): Cyber Security wide and navy, with its prices and the free check, over three cards ── */
.depts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.dept--feat{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:2.5rem 3rem;align-items:start;padding:2.5rem}
.dept--feat:hover{transform:none}
.dept--feat .card-h{max-width:15em;font-size:clamp(1.65rem,2.5vw,2.15rem);line-height:1.1}
.dept--feat .card-p{max-width:34em;font-size:1.02rem}
.dept-main{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.dept-side{padding:1.6rem;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg)}
.dept-svcs{list-style:none;display:grid;grid-template-columns:repeat(2,max-content);gap:.55rem 2.5rem;width:100%;margin:1.5rem 0 0;padding:0}
.dept-svcs a{display:inline-flex;align-items:center;gap:.55rem;font:500 .94rem/1.4 var(--sans);color:var(--text);text-decoration:none;transition:color .15s ease}
.dept-svcs a::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;background:var(--live)}
.dept-svcs a:hover{color:var(--live)}
@media (max-width:600px){.dept-svcs{grid-template-columns:minmax(0,1fr)}}
@media (max-width:1000px){.dept--feat{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){.depts{grid-template-columns:minmax(0,1fr)}.dept--feat{padding:1.75rem 1.4rem}.dept-prices{grid-template-columns:minmax(0,1fr)}}

/* ── Service rows (/pricing, the hubs): the row is the link; name, what it is, the whole price, an arrow; stacked on a phone ── */
.svc-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.svc-row{position:relative;display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr) minmax(0,14rem) 1.5rem;gap:.5rem 2rem;align-items:center;padding:1.35rem .5rem;border-bottom:1px solid var(--line);transition:background .15s ease}
.svc-row:hover{background:var(--panel-2)}
.svc-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .6rem}
.svc-name{font:600 1.06rem/1.3 var(--sans);color:var(--text);text-decoration:none}
.svc-name::after{content:"";position:absolute;inset:0}
.svc-what{max-width:none;margin:0;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.svc-price{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:.1rem .35rem;max-width:none;margin:0;text-align:right;font:640 1.25rem/1.15 var(--sans);font-stretch:106%;color:var(--text)}
.svc-price .price-plus{text-align:right}
.svc-go{display:inline-flex;justify-content:flex-end;color:var(--brand)}
.svc-go .ico{width:20px;height:20px;transition:transform .2s ease}
.svc-row:hover .svc-go .ico{transform:translateX(3px)}
@media (max-width:900px){
  .svc-row{grid-template-columns:minmax(0,1fr) auto;gap:.45rem 1rem;padding:1.15rem .25rem}
  .svc-what{grid-column:1/-1;grid-row:2}
  .svc-price{grid-column:1;grid-row:3;justify-content:flex-start;text-align:left}
  .svc-price .price-plus{text-align:left}
  .svc-go{grid-column:2;grid-row:1}
}
@media (prefers-reduced-motion:reduce){.svc-row,.svc-go .ico{transition:none}}

/* ── The comparison table: labels down the left, a choice per column, the recommended one tinted; cards on a phone ── */
.compare-wrap{overflow:hidden;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel)}
.compare{width:100%;border-collapse:collapse;font-size:.95rem}
.compare caption{padding:1rem 1.1rem 0;text-align:left;font:600 .95rem/1.3 var(--sans);color:var(--text)}
.compare th,.compare td{padding:1rem 1.1rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:normal}
.compare thead th,.compare thead td{background:var(--panel-2);font:600 1rem/1.3 var(--sans);letter-spacing:-.005em;color:var(--text)}
.compare thead th a{color:var(--text);text-decoration:none}
.compare thead th a:hover{color:var(--brand)}
.compare tbody th{width:24%;background:transparent;font:500 .9rem/1.4 var(--sans);color:var(--text-2)}
.compare td{color:var(--text)}
@media (min-width:761px){.compare tbody tr:last-child>*{border-bottom:0}}
.compare .is-rec{background:var(--brand-wash)}
.compare thead .is-rec{box-shadow:inset 0 3px 0 var(--brand)}
.compare .pill{margin-left:.35rem}
.compare tbody tr:hover td{background:inherit}
.compare tbody tr:hover td.is-rec{background:var(--brand-wash)}
@media (max-width:760px){
  .compare-wrap{overflow:visible;border:0;background:transparent}
  .compare,.compare tbody,.compare tr,.compare th,.compare td{display:block}
  .compare thead{display:none}
  .compare tbody tr{margin:0 0 .85rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);overflow:hidden}
  .compare tbody th{width:auto;padding:.8rem 1rem;border-bottom:1px solid var(--line);background:var(--panel-2);font:600 .92rem/1.35 var(--sans);color:var(--text)}
  .compare td{display:grid;grid-template-columns:minmax(0,9rem) minmax(0,1fr);gap:.75rem;padding:.7rem 1rem;border-bottom:1px solid var(--line)}
  .compare td::before{content:attr(data-k);font:500 .82rem/1.4 var(--sans);color:var(--text-3)}
  .compare tbody tr>td:last-child{border-bottom:0}
}

/* ── Stages (the Full Package): numbered cards, the money on top ── */
.stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem}
.stages>li{position:relative;display:flex;flex-direction:column;padding:1.5rem 1.4rem 1.6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.stage-money{max-width:none;margin:0;font:640 1.9rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;color:var(--text)}
.stage-n{max-width:none;margin:1rem 0 .3rem;font:500 .74rem/1.3 var(--mono);color:var(--brand)}
.stage-name{margin:0;font:600 1.1rem/1.25 var(--sans);letter-spacing:-.01em}
.stage-when{max-width:none;margin:.35rem 0 1rem;font-size:.86rem;color:var(--text-3)}
.stages .checks{gap:.55rem}
.stages .checks li{font-size:.92rem}
@media (max-width:1000px){.stages{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.stages{grid-template-columns:minmax(0,1fr)}}

/* ── Callouts: a quiet note, a finding's note in amber, our promise in navy ── */
.note{max-width:46em;margin:1.5rem 0 0;padding:1rem 1.15rem;border-left:3px solid var(--brand);border-radius:0 var(--r) var(--r) 0;background:var(--panel-2);font-size:.95rem;line-height:1.55;color:var(--text-2)}
.note b{color:var(--text)}
.note--fx{border-left-color:var(--signal);background:var(--signal-wash)}
.legend .note{max-width:none;margin:0;padding:0;border:0;border-radius:0;background:none;font-size:inherit}
.promise-box{padding:2.25rem;border:1px solid #1E3450;border-radius:var(--r-lg);box-shadow:0 24px 56px -30px rgba(11,27,46,.55)}
.promise-box .h2,.promise-box .h3{margin:0 0 .5rem}
.promise-box .checks{margin-top:1.25rem}
@media (max-width:600px){.promise-box{padding:1.6rem 1.35rem}}

/* ── Exhibits: a dark product frame with its bar and body, label and value rows, a browser window ── */
.frame{margin:0;overflow:hidden;border:1px solid #1E3450;border-radius:12px;box-shadow:0 1px 2px rgba(11,27,46,.08),0 28px 60px -24px rgba(11,27,46,.45)}
.frame-body{padding:1.15rem 1.25rem 1.3rem}
.kv{margin:0}
.kv>div{display:grid;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr);gap:1rem;padding:.62rem 0;border-top:1px solid var(--line)}
.kv>div:first-child{border-top:0}
.kv dt{font:500 .72rem/1.6 var(--mono);letter-spacing:.03em;text-transform:uppercase;color:var(--text-3)}
.kv dd{margin:0;font-size:.95rem;line-height:1.45;color:var(--text)}
@media (max-width:520px){.kv>div{grid-template-columns:minmax(0,1fr);gap:.15rem}}
.browser{overflow:hidden;background:var(--panel);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 1px 2px rgba(11,27,46,.06),0 24px 56px -28px rgba(11,27,46,.4)}
.browser-bar{display:flex;align-items:center;gap:.9rem;padding:.6rem .85rem;background:var(--bg-2);border-bottom:1px solid var(--line)}
.browser-bar::before{content:"";flex:none;width:10px;height:10px;margin-right:32px;border-radius:50%;background:var(--line-2);box-shadow:16px 0 0 var(--line-2),32px 0 0 var(--line-2)}
.browser-url{flex:1;min-width:0;padding:.38rem .8rem;background:var(--panel);border:1px solid var(--line);border-radius:99px;font:500 .76rem/1.2 var(--mono);color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.browser-body{padding:1.25rem}

/* ── The intelligence panel (the front page's hero): a dark frame of findings, fading in one by one on load ── */
.intel{overflow:hidden;margin:0;background:var(--panel);border:1px solid #2C4666;border-radius:14px;box-shadow:0 1px 2px rgba(0,0,0,.2),0 32px 70px -28px rgba(0,0,0,.65)}
.intel .frame-bar{color:var(--text-3)}
/* A row: its kind and its flag on the first line, then the finding and where it was read, each the full width. */
.intel-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.4rem 1rem;align-items:center;padding:1rem 1.15rem;border-top:1px solid var(--line);animation:intel-in .55s ease both}
.intel-row:first-of-type{border-top:0}
.intel-row>*{grid-column:1/-1;margin:0}
.intel-row>.intel-k{grid-column:1;grid-row:1}
.intel-row>.flag{grid-column:2;grid-row:1;justify-self:end}
.intel-row:nth-of-type(2){animation-delay:.15s}
.intel-row:nth-of-type(3){animation-delay:.3s}
.intel-row:nth-of-type(4){animation-delay:.45s}
.intel-row:nth-of-type(n+5){animation-delay:.6s}
.intel-k{font:600 .7rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.intel-src{font:400 .74rem/1.45 var(--mono);color:var(--text-3)}
@keyframes intel-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.intel-row{animation:none}}

/* ── The stat strip: the figure, what it is, and its date or source ── */
.stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1.5rem 2.5rem}
.stat{padding-top:1.1rem;border-top:1px solid var(--line-2)}
.stat b{display:block;font:640 clamp(2.2rem,4vw,3.1rem)/1 var(--sans);font-stretch:108%;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.stat span{display:block;margin-top:.55rem;font-size:.97rem;line-height:1.45;color:var(--text-2)}
.stat small{display:block;margin-top:.35rem;font:400 .78rem/1.45 var(--mono);color:var(--text-3)}

/* ── The enquiry band: the pitch on the left, the form on the right, on white or navy ── */
.enquire{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:3rem 4rem;align-items:start}
.enquire .form{padding:1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 18px 40px -28px rgba(11,27,46,.3)}
.band--navy .enquire .form{border-color:#2C4666}
@media (max-width:900px){.enquire{grid-template-columns:minmax(0,1fr);gap:2rem}.enquire .form{padding:1.35rem}}

/* ── Forms the kit writes: two fields to a row, the free check, an enquiry ── */
.form-row--2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:600px){.form-row--2{grid-template-columns:minmax(0,1fr)}}
.check-form .btn,.enquiry-form .btn{width:100%}
@media (min-width:601px){.enquiry-form .btn{width:auto}}

/* ── More from this department, and the closing band ── */
.related{border-top:1px solid var(--line)}
.related-h{margin:0 0 1.5rem}
.related-more{margin:1.75rem 0 0;font-size:.95rem;color:var(--text-2)}
.closing .closing-go .btns{margin:0}
.closing .talk{margin-top:1rem}
.closing .lede{text-wrap:pretty}

/* ═══ The builders' blocks are at the very end of this file, after the print rules: one per builder, page-only rules. ═══ */

/* Print: white paper, navy type, the mark at the top, nothing that only a screen needs. */
@media print{
  html{scroll-padding-top:0}
  body{background:#fff}
  body.plain{display:block;min-height:0}
  .skip,.nav-main,.nav-links,.nav-cta,.nav-menu{display:none}
  .nav{position:static;background:none;border-bottom:0;-webkit-backdrop-filter:none;backdrop-filter:none}
  .nav .container{height:auto;padding-top:0;padding-bottom:1.25rem}
  .band,.band--tight{padding:0}
  .footer{--bg:#fff;--text:#0B1B2E;--text-2:#3E4F66;--text-3:#5C6D84;--line:#CFD8E3;--line-2:#CFD8E3;background:none;color:var(--text-2);border-top:0}
  .footer--plain{padding:1rem 0 0}
  .footer--plain .legal{border-top:.5pt solid var(--line);padding-top:.6rem}
}

/* ================= THE BUILDERS' BLOCKS (the site rebrand, 23 Oct 2026) =================
   One per builder, page-only rules between its own START and END lines, nothing outside them. The three comment lines
   between two blocks stay, so git merges the builders' blocks side by side without a conflict. */
/* ===== B1 home+about START ===== */
/* The front page (/) and /about (builder B1, ops/SITE-REBRAND-CONTRACT.md §9 B1): page-only rules over the v5 components. */

/* ── / the hero: the copy on the left, the intelligence panel on the right, drawn as the product's own screen ── */
/* The front door (24 Oct 2026, Rudi's bar: a stranger believes this is a billion-dollar company in the first second). One dark
   canvas from the top of the screen (the header sits on the navy, below), a heading with presence on two deliberate lines, depth
   drawn with light rather than gradients (the contract keeps gradients off the site), and the product telling the whole story:
   the panel's rows arrive, then the proof behind the first of them. */
.front .nav{background:rgba(11,27,46,.96);border-bottom-color:rgba(255,255,255,.08)}
.front .wordmark:focus-visible,.front .nav-links>li>a:focus-visible,.front .nav-cta a:focus-visible,.front .nav-menu summary:focus-visible{outline-color:#7FA8FF}
.front .wordmark{color:#EEF3F9}
.front .wordmark .mark{background-image:url("/assets/bondstone-mark-white-64.png")}
.front .nav-links>li>a,.front .nav-cta .signin{color:#B7C4D6}
.front .nav-links>li>a:hover,.front .nav-links>li:hover>a,.front .nav-links>li:focus-within>a,.front .nav-cta .signin:hover{color:#FFFFFF}
.front .nav-links .caret{color:#7F93AC}
.front .nav-menu summary{background:transparent;color:#EEF3F9;border-color:rgba(255,255,255,.2)}
.home-hero{padding:6rem 0 6.5rem}
.home-hero .container{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:4rem;align-items:center}
.home-hero .h1{max-width:none;font-size:clamp(2.6rem,5vw,4.5rem);line-height:.98;letter-spacing:-.036em}
.h1-tint{display:block;color:#BFD3FF}
.home-hero .lede{max-width:30em;margin:1.6rem 0 0;font-size:1.22rem;line-height:1.55;color:#B7C4D6}
.home-hero .btns{margin-top:2.4rem;gap:.85rem}
.home-hero .btn{padding:1.05rem 1.45rem;font-size:1rem}
.home-hero .btn:not(.btn--ghost){box-shadow:0 10px 28px -12px rgba(36,71,214,.9)}
.home-hero .btn--ghost{color:#EEF3F9;border-color:rgba(255,255,255,.24)}
.home-hero .btn--ghost:hover{border-color:#FFFFFF}
.intel-foot .ico{width:16px;height:16px;stroke-width:2;color:#5BD6A0}
/* The light: a cobalt glow behind the panel and a cooler one low on the left, each a blurred shadow, never a gradient. */
.home-sky{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.home-sky::before,.home-sky::after{content:"";position:absolute;border-radius:50%}
.home-sky::before{right:8%;top:14%;width:26rem;height:18rem;background:rgba(36,71,214,.22);box-shadow:0 0 180px 140px rgba(36,71,214,.22)}
.home-sky::after{left:-6rem;bottom:-10rem;width:20rem;height:14rem;background:rgba(127,168,255,.07);box-shadow:0 0 160px 120px rgba(127,168,255,.07)}
@media (max-width:1060px){.home-hero{padding:4.5rem 0 5rem}.home-hero .container{grid-template-columns:minmax(0,1fr);gap:3rem}.home-intel{max-width:40rem}.home-sky::before{right:-4rem;top:40%}}
@media (max-width:600px){.home-hero .lede{font-size:1.08rem;line-height:1.5}}
@media (max-width:480px){.home-hero .btns>.btn{flex:1 1 100%}}
.home-intel{position:relative;margin:0;min-width:0}
.home-intel figcaption{margin:4.5rem 0 0;font-size:.84rem;line-height:1.5;color:var(--text-3)}
.home-intel .intel{border-radius:16px;box-shadow:0 0 0 1px rgba(127,168,255,.08),0 2px 4px rgba(0,0,0,.25),0 50px 100px -40px rgba(0,0,0,.9),0 0 140px -30px rgba(36,71,214,.5);animation:home-rise .7s cubic-bezier(.2,.7,.2,1) both}
.home-intel .frame-bar{padding:.75rem 1.15rem;background:var(--bg-2)}
.intel-app{display:inline-flex;align-items:center;gap:.6rem;color:var(--text-2)}
.intel-mark{flex:none;width:13px;height:15px;background:url("/assets/bondstone-mark-white-64.png") center/contain no-repeat;opacity:.85}
.intel-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;padding:1.05rem 1.2rem .9rem;border-bottom:1px solid var(--line)}
.intel-title{margin:0;font:600 1.02rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.01em;color:var(--text)}
.intel-count{margin:0;font:500 .72rem/1.3 var(--mono);color:var(--text-3)}
.intel-list{list-style:none;margin:0;padding:0}
.home-intel .intel-row{grid-template-columns:2rem minmax(0,1fr) auto;gap:.3rem .85rem;padding:.95rem 1.2rem;animation-duration:.6s;animation-timing-function:cubic-bezier(.2,.7,.2,1)}
.home-intel .intel-row>*{grid-column:2/-1}
.home-intel .intel-row>.intel-ico{grid-column:1;grid-row:1/span 3;align-self:start}
.home-intel .intel-row>.intel-k{grid-column:2;grid-row:1}
.home-intel .intel-row>.flag{grid-column:3;grid-row:1}
.home-intel .intel-row:nth-of-type(1){animation-delay:.3s}
.home-intel .intel-row:nth-of-type(2){animation-delay:.45s}
.home-intel .intel-row:nth-of-type(3){animation-delay:.6s}
.home-intel .intel-row:nth-of-type(4){animation-delay:.75s}
.home-intel .intel-row--sel{background:rgba(255,178,63,.045);box-shadow:inset 2px 0 0 var(--signal)}
.intel-ico{display:grid;place-items:center;width:2rem;height:2rem;border-radius:9px;background:rgba(127,168,255,.12);color:var(--live)}
.intel-ico .ico{width:17px;height:17px}
.intel-what{font-size:.98rem;line-height:1.45;color:var(--text);text-wrap:pretty}
.home-intel .intel-src{font-size:.72rem}
.intel-src>span{white-space:nowrap}
.intel-src i{font-style:normal;margin:0 .5rem;color:var(--line-2)}
.intel-foot{display:flex;align-items:center;gap:.5rem;max-width:none;margin:0;padding:.8rem 1.2rem;border-top:1px solid var(--line);background:var(--bg-2);font:500 .74rem/1.3 var(--mono);color:var(--text-3);animation:intel-in .6s ease .95s both}
.home-proofcard{position:absolute;right:-2rem;bottom:1.25rem;z-index:2;width:21.5rem;padding:.85rem .95rem .9rem;border:1px solid #34507A;border-radius:12px;background:#132A48;box-shadow:0 1px 2px rgba(0,0,0,.3),0 30px 60px -24px rgba(0,0,0,.85);animation:home-rise .7s cubic-bezier(.2,.7,.2,1) 1.25s both}
.hpc-top{display:flex;align-items:center;gap:.6rem;max-width:none;margin:0 0 .6rem;font:600 .86rem/1.3 var(--sans);color:#EEF3F9}
.hpc-code{display:grid;gap:.1rem;padding:.55rem .75rem;border:1px solid #2C4666;border-radius:8px;background:#0B1B2E;font:400 .72rem/1.6 var(--mono);color:#A9B7C9;overflow-wrap:anywhere}
.hpc-code .hl{color:var(--signal)}
.hpc-code .pc-1{padding-left:1rem}
.hpc-src{max-width:none;margin:.55rem 0 0;font:500 .7rem/1.3 var(--mono);color:#8195AE}
@media (max-width:1240px){.home-proofcard{right:1rem}}
@media (max-width:600px){.home-proofcard{display:none}.home-intel figcaption{margin-top:1rem}}
.flag--solid{color:#0B1B2E;background:var(--signal);border-color:var(--signal)}
@keyframes home-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (max-width:600px){
  .home-intel .intel-row{grid-template-columns:minmax(0,1fr) auto;gap:.35rem .75rem;padding:.95rem 1rem}
  .home-intel .intel-row>.intel-ico{display:none}
  .home-intel .intel-row>*{grid-column:1/-1}
  .home-intel .intel-row>.intel-k{grid-column:1}
  .home-intel .intel-row>.flag{grid-column:2}
  .intel-head,.intel-foot,.home-intel .frame-bar{padding-left:1rem;padding-right:1rem}
  .home-intel .frame-bar{gap:.75rem;font-size:.72rem}
  .intel-src i{display:none}
  .intel-src>span{display:block}
}
@media (prefers-reduced-motion:reduce){.home-intel .intel,.intel-foot,.home-proofcard{animation:none}}

/* ── / the departments: the free check's own heading beside Cyber Security's prices; the three cards' prices on one line ── */
.home-depts .dept:not(.dept--feat) .card-price{margin-top:auto;padding-top:1.3rem}
.home-depts .dept:not(.dept--feat) .card-go{margin-top:0}
.home-depts .card-p{text-wrap:pretty}
@media (min-width:761px) and (max-width:1000px){.home-depts .depts{grid-template-columns:repeat(2,minmax(0,1fr))}.home-depts .dept:last-child{grid-column:1/-1}}
.home-depts .dept-main>.ico-chip{margin-bottom:1.25rem}
.hc-home-head{margin:0 0 1.15rem}
.hc-home-k{display:flex;align-items:center;gap:.55rem;max-width:none;margin:0;font:600 1.02rem/1.3 var(--sans);color:var(--text)}
.hc-home-k .ico{width:19px;height:19px;color:var(--live)}
.hc-home-p{margin:.4rem 0 0;font-size:.92rem;line-height:1.5;color:var(--text-2)}

/* ── / the engine: what we read, wired to the mark, wired to the four departments; one column on a phone ── */
.engine{display:grid;grid-template-columns:minmax(0,1fr) 5.5rem minmax(0,.82fr) 5.5rem minmax(0,1fr);row-gap:2.25rem;padding:2.5rem 2.75rem 2.75rem;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px rgba(11,27,46,.04),0 24px 56px -34px rgba(11,27,46,.32)}
.engine-step--read{grid-area:1/1}.engine-src{grid-area:2/1}.engine-wire--in{grid-area:2/2}
.engine-step--prove{grid-area:1/3}.engine-hub{grid-area:2/3}.engine-wire--out{grid-area:2/4}
.engine-step--act{grid-area:1/5}.engine-out{grid-area:2/5}
.engine-n{max-width:none;margin:0 0 .65rem;font:500 .74rem/1 var(--mono);color:var(--brand)}
.engine-step h3{margin:0 0 .45rem}
.engine-step p:last-child{margin:0;font-size:.95rem;line-height:1.55;color:var(--text-2);max-width:22em}
.engine-src,.engine-out{list-style:none;margin:0;padding:0;display:grid;grid-auto-rows:1fr}
.engine-src li,.engine-out li{display:flex;align-items:center;min-width:0;padding:.22rem 0}
.engine-out li{align-items:stretch}
.engine-src span{display:flex;align-items:center;gap:.6rem;width:100%;padding:.48rem .75rem;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);font-size:.88rem;line-height:1.3;color:var(--text)}
.engine-src .ico{width:16px;height:16px;color:var(--text-3)}
.engine-wire{position:relative}
.engine-wire svg{position:absolute;inset:0;width:100%;height:100%}
.engine-wire path{fill:none;stroke:rgba(36,71,214,.3);stroke-width:1.25;vector-effect:non-scaling-stroke}
.engine-hub{position:relative;display:grid;place-items:center}
.engine-hub::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1.25px solid rgba(36,71,214,.3)}
.engine-mark{position:relative;width:5.25rem;height:5.25rem;border-radius:20px;background:#0B1B2E url("/assets/bondstone-mark-white-64.png") center/2.15rem auto no-repeat;box-shadow:0 0 0 8px var(--panel),0 0 0 9px var(--line),0 20px 40px -18px rgba(11,27,46,.6)}
.engine-hub-cap{position:absolute;left:0;right:0;top:calc(50% + 3.75rem);text-align:center;font:500 .72rem/1.3 var(--mono);color:var(--text-3)}
.engine-out a{display:flex;align-items:center;gap:.8rem;width:100%;padding:.6rem .8rem;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);text-decoration:none;transition:border-color .15s ease,background .15s ease}
.engine-out a:hover{border-color:var(--brand);background:var(--panel-2)}
.engine-out .ico-chip{width:34px;height:34px;border-radius:9px}
.engine-out .ico-chip .ico{width:18px;height:18px}
.engine-dept{display:grid;gap:.1rem;min-width:0}
.engine-dept b{font:600 .95rem/1.25 var(--sans)}
.engine-dept small{font-size:.8rem;line-height:1.35;color:var(--text-3)}
@media (max-width:900px){
  .engine{grid-template-columns:minmax(0,1fr);row-gap:1.1rem;padding:1.6rem 1.25rem 1.5rem}
  .engine>*{grid-area:auto}
  .engine-wire{display:none}
  .engine-src{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.4rem}
  .engine-src li{padding:0}
  .engine-src span{width:auto;padding:.4rem .65rem;font-size:.84rem}
  .engine-hub{min-height:9.5rem;margin:.25rem 0 .75rem}
  .engine-hub::before{left:50%;right:auto;top:0;bottom:0;border-top:0;border-left:1.25px solid rgba(36,71,214,.3)}
  .engine-mark{width:4.5rem;height:4.5rem;border-radius:17px;background-size:1.85rem auto}
  .engine-hub-cap{top:auto;bottom:-.35rem;left:50%;right:auto;transform:translateX(-50%);padding:0 .6rem;background:var(--panel);white-space:nowrap}
  .engine-out{gap:.5rem}
  .engine-out li{padding:0}
}

/* ── / the rule, who we are ── */
.home-rule .eyebrow{margin:0 0 1.25rem;color:var(--brand)}
.home-more{margin:1.25rem 0 0}
.home-more a{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--brand);text-decoration:none}
.home-more .ico{width:18px;height:18px;transition:transform .2s ease}
.home-more a:hover .ico{transform:translateX(3px)}
.home-who .h2 span,.about-founder .h2 span{display:block}
.home-who-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1.25rem 4rem;align-items:start}
.home-who .lede{margin-top:.15rem}
.home-who .entity{margin-top:1.1rem}
@media (max-width:900px){.home-who-grid{grid-template-columns:minmax(0,1fr)}}

/* ── /about: the company on the record beside the heading, the founder and his rule, what we keep, the departments, the name ── */
.about-hero .container{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:4.5rem;align-items:center}
.about-hero .h1{max-width:9.5em}
.about-hero .lede{margin:1.5rem 0 0}
.about-hero-p{margin:1rem 0 0;color:var(--text-2)}
@media (max-width:1000px){.about-hero .container{grid-template-columns:minmax(0,1fr);gap:3rem}.about-record{max-width:36rem}}
.about-record .frame-body{padding:1.25rem 1.35rem 1.1rem}
.about-record-lede{max-width:none;margin:0 0 .35rem;padding-bottom:1rem;border-bottom:1px solid var(--line);font-size:.98rem;line-height:1.55;color:var(--text)}
.about-record .kv>div:first-child{border-top:0}
.about-record .kv a{color:var(--text)}
.about-own{max-width:none;margin:1.75rem 0 0;font-size:.95rem;color:var(--text-2)}
.about-work-head .talk{margin-top:1.5rem;font-size:.95rem;line-height:1.55}
.about-work .checks span{text-wrap:pretty}
@media (min-width:901px){.about-work-head{position:sticky;top:6.5rem}}
.about-founder{border-top:1px solid var(--line)}
.about-founder-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:3rem 5rem;align-items:center}
.about-quote{margin:0;padding:.3rem 0 .3rem 1.75rem;border-left:3px solid var(--brand)}
.about-quote p{max-width:none;margin:0;font:500 clamp(1.25rem,1.9vw,1.55rem)/1.42 var(--sans);font-stretch:104%;letter-spacing:-.015em;color:var(--text);text-wrap:pretty}
@media (max-width:900px){.about-founder-grid{grid-template-columns:minmax(0,1fr)}}
.about-keep-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem}
.about-keep-list li{padding:1.6rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.about-keep-list .ico-chip{margin-bottom:1.15rem}
.about-keep-list h3{margin:0 0 .45rem}
.about-keep-list p{margin:0;font-size:.95rem;line-height:1.55;color:var(--text-2)}
@media (max-width:1000px){.about-keep-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.about-keep-list{grid-template-columns:minmax(0,1fr)}}
.about-dept-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.about-dept-list a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center;height:100%;padding:1.25rem 1.35rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--text);text-decoration:none;transition:border-color .2s ease,box-shadow .2s ease}
.about-dept-list a:hover{border-color:var(--line-2);box-shadow:0 16px 36px -26px rgba(11,27,46,.4)}
.about-dept-t{display:grid;gap:.2rem}
.about-dept-t b{font:600 1.08rem/1.3 var(--sans)}
.about-dept-t span{font-size:.93rem;line-height:1.45;color:var(--text-2)}
.about-dept-list a>.ico{width:20px;height:20px;color:var(--brand);transition:transform .2s ease}
.about-dept-list a:hover>.ico{transform:translateX(3px)}
@media (max-width:760px){.about-dept-list{grid-template-columns:minmax(0,1fr)}}
.about-name-grid{align-items:center}
.about-wall{width:100%;max-width:30rem;margin:0;justify-self:end}
.wall{width:100%;height:auto;overflow:visible}
.wall-s{fill:var(--panel);stroke:#9AAABF;stroke-width:1.25}
.wall-r{fill:var(--bg-2);stroke:var(--line-2);stroke-width:1}
.wall-bond{fill:var(--brand-wash);stroke:var(--brand);stroke-width:1.75}
.wall-bond-t{font:600 12.5px var(--sans);letter-spacing:.14em;fill:var(--brand)}
.wall-t{font:600 12.5px var(--sans);letter-spacing:.12em;fill:var(--text-3)}
.wall-tick,.wall-ground{fill:none;stroke:var(--line-2);stroke-width:1.25}
.about-wall figcaption{margin:.85rem 0 0;font-size:.86rem;color:var(--text-3)}
@media (max-width:900px){.about-wall{justify-self:start}}
@media (prefers-reduced-motion:reduce){.engine-out a,.home-more .ico,.about-dept-list a,.about-dept-list a>.ico{transition:none}}

/* ── round two (23 Oct 2026): the Websites card's Full Package line, /about's press line, and /promises ── */
/* The Full Package, said in the Websites card with its own price: its own link, lifted above the card's (.card--click) */
.dept-also{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;align-items:center;align-self:stretch;margin:1.1rem 0 0;padding:.75rem .9rem;border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2);font-size:.88rem;line-height:1.4;color:var(--text-2);text-decoration:none;transition:border-color .15s ease}
.dept-also-t{display:grid;gap:.1rem}
.dept-also-t>b{font-weight:600;color:var(--text)}
.dept-also-t span b{font-weight:640;color:var(--text)}
.dept-also .ico{width:16px;height:16px;color:var(--brand)}
.dept-also:hover{border-color:var(--brand)}
.about-press{display:flex;gap:.6rem;align-items:flex-start;max-width:none;margin:1.1rem 0 0;font-size:.92rem;line-height:1.5;color:var(--text-2)}
.about-press .ico{flex:none;width:18px;height:18px;margin-top:.12rem;color:var(--brand)}
@media (max-width:1000px){.about-record-col{max-width:36rem}}
/* /promises: the heading beside what we never promise, then a ledger by department, a row per service */
.pm-hero .container{align-items:center}
.pm-jump ul{list-style:none;margin:2rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.pm-jump a{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem .9rem;border:1px solid var(--line-2);border-radius:99px;background:var(--panel);font:600 .9rem/1 var(--sans);color:var(--text);text-decoration:none}
.pm-jump a:hover{border-color:var(--brand);color:var(--brand)}
.pm-jump .ico{width:18px;height:18px;color:var(--brand)}
.pm-never{padding:2rem 2rem 1.25rem}
.pm-never .h3{margin:0}
.pm-never-p{max-width:none;margin:.45rem 0 0;font-size:.95rem;color:var(--text-2)}
.pm-never-list{list-style:none;margin:1.1rem 0 0;padding:0}
.pm-never-list li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;padding:.85rem 0;border-top:1px solid var(--line)}
.pm-never-list .ico{width:18px;height:18px;margin-top:.12rem;color:var(--text-3)}
.pm-never-list b{display:block;font-weight:600;color:var(--text)}
.pm-never-list span{font-size:.92rem;line-height:1.45;color:var(--text-2)}
.pm-groups{display:grid;gap:1.25rem}
.pm-group{scroll-margin-top:6rem;padding:1.75rem 2rem .6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 14px 34px -26px rgba(11,27,46,.3)}
.pm-group-head{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding-bottom:1.25rem;border-bottom:1px solid var(--line)}
.pm-group-head .h3{flex:1;margin:0}
.pm-all{display:inline-flex;align-items:center;gap:.4rem;font:600 .92rem/1.2 var(--sans);color:var(--brand);text-decoration:none}
.pm-all .ico{width:18px;height:18px;transition:transform .2s ease}
.pm-all:hover .ico{transform:translateX(3px)}
.pm-rows{list-style:none;margin:0;padding:0}
.pm-row{display:grid;grid-template-columns:minmax(0,16rem) minmax(0,1fr);gap:.8rem 3rem;padding:1.35rem 0;border-top:1px solid var(--line)}
.pm-row:first-child{border-top:0}
.pm-svc{display:inline-flex;align-items:flex-start;gap:.4rem;align-self:start;font:600 1.06rem/1.35 var(--sans);color:var(--text);text-decoration:none}
.pm-svc .ico{flex:none;width:18px;height:18px;margin-top:.15rem;color:var(--brand);transition:transform .2s ease}
.pm-svc:hover{color:var(--brand)}
.pm-svc:hover .ico{transform:translateX(3px)}
.pm-row .checks{gap:.75rem}
.pm-row .checks li span{font-size:.97rem;line-height:1.55;color:var(--text)}
@media (max-width:760px){.pm-row{grid-template-columns:minmax(0,1fr)}.pm-group{padding:1.35rem 1.25rem .35rem}.pm-never{padding:1.6rem 1.35rem 1rem}}
@media (max-width:600px){.pm-all{flex-basis:100%}}
@media (prefers-reduced-motion:reduce){.dept-also,.pm-all .ico,.pm-svc .ico{transition:none}}
/* ===== B1 home+about END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B2 cyber START ===== */
/* The Cyber Security pages (server/sitepages-cyber.ts): the hub with the free checker, the clean-up, the rebuild and the Care
   plans. Page-only rules, every class prefixed cy-; the shared components are v5's. Amber only on a finding, green on a
   pass, cobalt for what you can click. */

/* Heroes: the promise on the left; on the right the hub's checker as a navy panel, or a service page's exhibit. */
.cy-hero .container{align-items:center}
@media (max-width:1100px){.cy-hero:not(.cy-hero--hub) .container{grid-template-columns:minmax(0,1fr);gap:3rem}.cy-hero .cy-exhibit{max-width:38rem}}
.cy-hero--hub .h1{font-size:clamp(2.4rem,4.6vw,3.9rem);line-height:1.03}
.cy-check{padding:2rem 2rem 1.5rem;border:1px solid #1E3450;border-radius:16px;box-shadow:0 1px 2px rgba(11,27,46,.08),0 32px 64px -30px rgba(11,27,46,.55)}
.cy-check .h2{font-size:clamp(1.55rem,2.3vw,1.95rem);line-height:1.14}
.cy-check .lede{margin:.8rem 0 1.5rem;font-size:1rem;line-height:1.55}
.cy-check-foot{display:flex;align-items:center;gap:.55rem;max-width:none;margin:1.3rem 0 0;padding-top:1.1rem;border-top:1px solid var(--line);font-size:.9rem;color:var(--text-2)}
.cy-check-foot .ico{width:18px;height:18px;color:var(--live)}
/* The checker's field and its button on one line, as a search box is; stacked on a phone. Same form, same markup. */
:is(.cy-check,.cy-close) .form{grid-template-columns:minmax(0,1fr) auto;column-gap:.6rem;align-items:end}
:is(.cy-check,.cy-close) .form>*{grid-column:1/-1}
:is(.cy-check,.cy-close) .form>.field{grid-column:1}
:is(.cy-check,.cy-close) .form>div:not(.field){grid-column:2;grid-row:1}
:is(.cy-check,.cy-close) .form .btn{width:auto;height:3.1rem;padding:0 1.3rem}
.cy-check .field input{height:3.1rem}
@media (max-width:480px){
  .cy-check{padding:1.5rem 1.25rem 1.25rem}
  :is(.cy-check,.cy-close) .form{grid-template-columns:minmax(0,1fr)}
  :is(.cy-check,.cy-close) .form>div:not(.field){grid-column:1;grid-row:auto}
  :is(.cy-check,.cy-close) .form .btn{width:100%}
}
/* From 1001px the checker sits beside the hero, so its own button is hidden there and "See what we do" is the hero's solid one. */
@media (min-width:1001px){
  .cy-hero--hub .btns>.btn:first-child{display:none}
  .cy-hero--hub .btns>.btn--ghost{background:var(--brand);border-color:var(--brand);color:#fff}
  .cy-hero--hub .btns>.btn--ghost:hover{background:var(--brand-2);border-color:var(--brand-2)}
}
.cy-assure{list-style:none;margin:2.5rem 0 0;padding:1.3rem 0 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:.7rem 1.8rem}
.cy-assure li{display:flex;align-items:center;gap:.5rem;font-size:.9rem;line-height:1.35;color:var(--text-2)}
.cy-assure .ico{width:18px;height:18px;color:var(--brand)}

/* Two columns: a heading on the left, its words on the right (the problem, what AI Secure means, what a rebuild gives you). */
.cy-two{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:1.5rem 4rem;align-items:start}
.cy-two .lede{margin:1rem 0 0}
.cy-two p{color:var(--text-2)}
.cy-problem{margin-bottom:3.5rem}
.cy-problem .h2{max-width:12em}
.cy-problem .lede{margin-top:0}
@media (max-width:900px){.cy-two{grid-template-columns:minmax(0,1fr)}.cy-problem{margin-bottom:2.5rem}}
.cy-label{max-width:none;margin:0 0 1rem;font:600 .76rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}

/* What we find: nine plain lines, each with its icon, three across. */
.cy-finds{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:2.5rem;border-top:1px solid var(--line-2)}
.cy-finds li{display:flex;align-items:center;gap:.9rem;padding:1.05rem 0;border-bottom:1px solid var(--line);font-size:1rem;line-height:1.4;color:var(--text)}
:is(.cy-finds,.cy-signs) .ico-chip{width:38px;height:38px;border-radius:10px}
:is(.cy-finds,.cy-signs) .ico-chip .ico{width:19px;height:19px}
@media (max-width:900px){.cy-finds{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.cy-finds{grid-template-columns:minmax(0,1fr)}}

/* Exhibits: the proof, the clean-up report, the before and after, the alert. Dark frames; every one says it is invented. */
.cy-exhibit{margin:0;min-width:0}
.cy-exhibit .caption{margin:.9rem 0 0}
.cy-exhibit .frame-body{padding:1.25rem 1.35rem 1.4rem}
.cy-proof{align-items:center}
.cy-proof .checks{margin-top:2rem}
.cy-res-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.cy-res-head p{max-width:none;margin:0}
@media (max-width:520px){.cy-res-head{flex-direction:column;gap:.75rem}.cy-res-head .flag{align-self:flex-start}}
.cy-res-domain{font:600 1.15rem/1.2 var(--sans);font-stretch:106%;letter-spacing:-.01em;color:var(--text)}
p.cy-res-when{margin-top:.4rem;font:400 .76rem/1.6 var(--mono);color:var(--text-3)}
.cy-res-k{max-width:none;margin:1.15rem 0 .35rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--signal-text)}
.cy-res-p{max-width:none;margin:0 0 1rem;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.cy-place{padding:.7rem .85rem;background:var(--bg-2);border:1px solid var(--line);border-radius:8px}
.cy-place+.cy-place{margin-top:.6rem}
.cy-place small{display:block;margin-bottom:.3rem;font:500 .74rem/1.35 var(--sans);color:var(--text-3)}
.cy-place code{display:block;font:400 .82rem/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
.cy-place--fx{border-left:3px solid var(--signal)}
.cy-res-foot{display:flex;align-items:center;gap:.5rem;max-width:none;margin:1rem 0 0;font-size:.88rem;color:var(--text-2)}
.cy-res-foot .ico{width:18px;height:18px;color:#5BD6A0;stroke-width:2}
.cy-fixes{list-style:none;margin:0;padding:0}
.cy-fixes li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.2rem 1rem;align-items:center;padding:.8rem 0;border-bottom:1px solid var(--line)}
.cy-fix-where{grid-column:1;font:400 .74rem/1.4 var(--mono);color:var(--text-3);overflow-wrap:anywhere}
.cy-fix-what{grid-column:1;font-size:.93rem;line-height:1.4;color:var(--text)}
.cy-fixes .flag{grid-column:2;grid-row:1/span 2}
.cy-ba-row{display:grid;grid-template-columns:minmax(0,7.5rem) minmax(0,1fr) minmax(0,1fr);gap:.75rem;align-items:center;padding:.68rem 0;border-top:1px solid var(--line)}
.cy-ba-head{padding-top:0;border-top:0;font:500 .72rem/1.3 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}
.cy-ba-k{font-size:.88rem;line-height:1.35;color:var(--text-2)}
.cy-ba .flag{white-space:normal;line-height:1.2}
.cy-ba-n{font-size:.86rem;line-height:1.4;color:var(--text)}
@media (max-width:520px){
  .cy-ba-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.45rem .75rem}
  .cy-ba-k{grid-column:1/-1}
  .cy-ba-head>:first-child{display:none}
}
.cy-mail{display:grid;gap:.3rem;margin:0 0 1.1rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.cy-mail div{display:grid;grid-template-columns:3.4rem minmax(0,1fr);gap:.75rem;align-items:baseline}
.cy-mail dt{font:500 .7rem/1.6 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}
.cy-mail dd{margin:0;font-size:.88rem;line-height:1.5;color:var(--text-2)}
.cy-alert-h{max-width:none;margin:.85rem 0 .45rem;font:600 1.12rem/1.35 var(--sans);letter-spacing:-.01em;color:var(--text)}
.cy-alert-next{margin:1rem 0 0}
.cy-alert-next b{color:var(--text);font-weight:600}

/* The four steps, four across; the services' cards and the Care plans under them. */
.cy-steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem}
@media (max-width:1000px){.cy-steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.75rem 2rem}}
@media (max-width:600px){.cy-steps{grid-template-columns:minmax(0,1fr)}}
.cy-ticks{align-self:stretch;list-style:none;margin:1.15rem 0 0;padding:1rem 0 0;border-top:1px solid var(--line);display:grid;gap:.55rem}
.cy-ticks li{display:flex;align-items:flex-start;gap:.55rem;font-size:.93rem;line-height:1.45;color:var(--text-2)}
.cy-ticks .ico{width:17px;height:17px;margin-top:.15rem;color:var(--pass);stroke-width:2.2}
.cy-plans{display:grid;grid-template-columns:minmax(0,14rem) minmax(0,1fr);gap:1rem 2.5rem;align-items:center;margin-top:1.25rem;padding:1.35rem 1.5rem;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r-lg)}
.cy-plans-head p{margin:.3rem 0 0;font-size:.9rem;line-height:1.45;color:var(--text-3)}
.cy-plans ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}
.cy-plans a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.35rem .6rem;align-items:center;height:100%;padding:.95rem 1.05rem 1rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);color:var(--text);text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease}
.cy-plans a:hover{border-color:var(--brand);box-shadow:0 10px 24px -18px rgba(11,27,46,.4)}
.cy-plan-name{grid-column:1;font:600 1rem/1.25 var(--sans)}
.cy-plan-what{grid-column:1/-1;grid-row:3;font-size:.84rem;line-height:1.4;color:var(--text-3)}
.cy-plan-price{grid-column:1/-1;grid-row:2;margin-top:.15rem;font:640 1.45rem/1 var(--sans);font-stretch:106%;letter-spacing:-.015em;white-space:nowrap}
.cy-plan-price small{margin-left:.25rem;font:500 .76rem/1 var(--sans);letter-spacing:0;color:var(--text-3)}
.cy-plans a>.ico{grid-column:2;grid-row:1;width:18px;height:18px;color:var(--brand)}
@media (max-width:1100px){.cy-plans{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.cy-plans ul{grid-template-columns:minmax(0,1fr)}.cy-plans{padding:1.2rem}}
@media (prefers-reduced-motion:reduce){.cy-plans a{transition:none}}

/* What AI Secure means: the signs it watches for, four across, then what you hear and when. */
.cy-ai .sec-head{margin-bottom:2.25rem}
p.cy-ai-intro{max-width:none;margin:0 0 1rem;font-weight:600;color:var(--text)}
.cy-signs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.cy-signs li{display:flex;flex-direction:column;align-items:flex-start;gap:.9rem;padding:1.2rem 1.25rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);font-size:1rem;line-height:1.4;color:var(--text)}
p.cy-ai-close{max-width:44em;margin:2rem 0 0;font-size:1.05rem;line-height:1.6;color:var(--text-2)}
@media (max-width:1000px){.cy-signs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.cy-signs{grid-template-columns:minmax(0,1fr);gap:.6rem}.cy-signs li{flex-direction:row;align-items:center;gap:.8rem;padding:.8rem .9rem}}

/* One line to another department, between two bands. */
.cy-web{padding:2.1rem 0;border-bottom:1px solid var(--line)}
.cy-web p{display:flex;align-items:center;gap:1rem;max-width:none;margin:0;font-size:1rem;line-height:1.5;color:var(--text-2)}
.cy-web b{color:var(--text);font-weight:600}
.cy-web a{font-weight:600;color:var(--brand);text-decoration:none;white-space:nowrap}
.cy-web a::after{content:"\00a0\2192"}
@media (max-width:600px){.cy-web p{align-items:flex-start}}

/* Who we are beside the questions, on the hub; the closing band's checker. */
.cy-who .split{grid-template-columns:minmax(0,4fr) minmax(0,7fr)}
.cy-who .faq{grid-template-columns:minmax(0,1fr)}
.cy-q{margin:0 0 1.1rem}
.cy-who .prose a{font-weight:600;color:var(--brand);text-decoration:none}
@media (max-width:900px){.cy-who .split{grid-template-columns:minmax(0,1fr)}}
.cy-close .talk{margin-top:1.1rem}

/* A service page: what is included, what you need, the timeline, the plans, the comparison, the enquiry it closes on. */
.cy-gets{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.cy-gets--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cy-gets li{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);font-size:.97rem;line-height:1.5;color:var(--text-2)}
.cy-gets b{display:block;margin-bottom:.25rem;font:600 1.05rem/1.3 var(--sans);letter-spacing:-.005em;color:var(--text)}
@media (max-width:1000px){.cy-gets,.cy-gets--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.cy-gets,.cy-gets--4{grid-template-columns:minmax(0,1fr);gap:.75rem}.cy-gets li{flex-direction:row;align-items:flex-start;gap:.9rem;padding:1.1rem 1.15rem}}
.cy-timeline .when{color:var(--brand)}
.cy-timeline li.is-key{border-top:2px solid var(--brand);padding-top:calc(1.2rem - 1px)}
.cy-need{margin-top:3rem;padding:1.4rem 1.6rem;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r-lg)}
.cy-need ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem 2rem}
.cy-need li{display:flex;align-items:flex-start;gap:.65rem;font-size:.95rem;line-height:1.45;color:var(--text-2)}
.cy-need b{color:var(--text);font-weight:600}
.cy-need .ico{width:20px;height:20px;margin-top:.1rem;color:var(--brand)}
@media (max-width:900px){.cy-need ul{grid-template-columns:minmax(0,1fr)}}
.cy-more{max-width:none;margin:1.5rem 0 0;font-size:.97rem;color:var(--text-2)}
.cy-more a{font-weight:600;color:var(--brand);text-decoration:none}
.cy-more a::after{content:"\00a0\2192"}
.cy-plan .card-h{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .65rem}
.cy-plan .card-price{margin-top:1.1rem}
.cy-plan .cy-ticks{flex:1 0 auto;align-content:start}
.cy-plan .btn{margin-top:1.6rem}
.cy-tick-all span{font-weight:600;color:var(--text)}
.cy-compare .compare{table-layout:fixed}
.cy-compare .compare thead td{width:40%}
.cy-compare .compare :is(thead th,td){text-align:center;vertical-align:middle}
.cy-compare .compare thead th{white-space:nowrap}
.cy-yes{display:inline-flex;color:var(--pass)}
.cy-yes .ico{width:20px;height:20px;stroke-width:2.2}
.cy-no{display:inline-block;width:14px;height:2px;border-radius:2px;background:var(--line-2);vertical-align:middle}
.cy-cmp-price{font:640 1.2rem/1 var(--sans);font-stretch:106%;letter-spacing:-.01em;color:var(--text)}
/* On a phone the table keeps its ticks: each feature a line of its own, then its three plans side by side. */
@media (max-width:760px){
  .cy-compare .compare-wrap{overflow:hidden;border:1px solid var(--line);background:var(--panel)}
  .cy-compare .compare tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0 .5rem;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none}
  .cy-compare .compare tbody tr:last-child{border-bottom:0}
  .cy-compare .compare tbody th{grid-column:1/-1;width:auto;padding:.85rem .5rem .2rem;border:0;background:none;font:500 .92rem/1.4 var(--sans);color:var(--text)}
  .cy-compare .compare td{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .45rem;padding:.4rem .5rem .85rem;border:0;text-align:left}
  .cy-compare .compare td::before{font-size:.8rem}
  .cy-compare .compare tbody tr:first-child td{flex-direction:column;align-items:flex-start}
  .cy-compare .cy-cmp-price{font-size:1.1rem}
  .cy-compare .compare td.is-rec{background:none}
  .cy-compare .compare td.is-rec::before{color:var(--brand);font-weight:600}
}
.cy-start .enquire{align-items:center}
.cy-start .lede{margin:1rem 0 0}
.cy-facts{list-style:none;margin:1.75rem 0 0;padding:0;display:grid;gap:.7rem}
.cy-facts li{display:flex;align-items:flex-start;gap:.6rem;font-size:1rem;line-height:1.45;color:var(--text)}
.cy-facts .ico{width:19px;height:19px;margin-top:.12rem;color:#5BD6A0;stroke-width:2.2}
.cy-start .talk{max-width:34em;margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--line);color:var(--text-2)}
/* The clean-up's emergency line: the hours a person answers the phone in, under the hero's two buttons. */
.cy-hero-under{max-width:34em;margin:1rem 0 0;font-size:.9rem;line-height:1.5;color:var(--text-3)}

/* /cyber/check, the free check's own page: the form straight under the question, a search box on one line, wide enough to type
   a long address; then what the check reads apart from the team's full read, and the four results as four calm cards. */
.cy-hero--check .h1{font-size:clamp(2.3rem,4.3vw,3.6rem);line-height:1.04}
.cy-hero--check .lede{max-width:36em;margin:1.4rem 0 0}
.cy-search{max-width:34rem;margin:2rem 0 0}
.cy-search .form{grid-template-columns:minmax(0,1fr) auto;column-gap:.6rem;align-items:end}
.cy-search .form>*{grid-column:1/-1}
.cy-search .form>.field{grid-column:1}
.cy-search .form>div:not(.field){grid-column:2;grid-row:1}
.cy-search .form .btn{width:auto;height:3.4rem;padding:0 1.4rem;font-size:1rem}
.cy-search .field input{height:3.4rem;font-size:1.05rem}
.cy-search .form-note{margin-top:.15rem}
@media (max-width:480px){
  .cy-search .form{grid-template-columns:minmax(0,1fr)}
  .cy-search .form>div:not(.field){grid-column:1;grid-row:auto}
  .cy-search .form .btn{width:100%}
}
.cy-hero--check .cy-assure{margin-top:2rem}
.cy-label--next{margin-top:2.75rem}
.cy-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.cy-result{padding:1.6rem 1.75rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.cy-result-h{margin:0 0 1rem;font-size:1rem;line-height:1}
.cy-result-h .flag{padding:.4rem .7rem;font-size:.8rem}
.cy-result p{max-width:none;margin:0;font-size:1rem;line-height:1.6;color:var(--text-2)}
.cy-result a{font-weight:600;color:var(--brand);text-decoration:none}
.cy-result a:hover{text-decoration:underline}
@media (max-width:760px){.cy-results{grid-template-columns:minmax(0,1fr);gap:.9rem}.cy-result{padding:1.35rem 1.35rem 1.45rem}}
/* ===== B2 cyber END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B3 growth START ===== */
/* Lead Generation: /lead-generation, /target-list, /outreach, /performance (sitepages-growth.ts). Every class here starts g-. */

/* The hero: the eyebrow beside its pill, who it is for, an exhibit with its caption, a price row in a grid */
.g-hero .container{align-items:center}
.g-ey{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin:0 0 1.1rem}
.g-ey .eyebrow{margin:0}
.g-for{margin:1.4rem 0 0;max-width:34em;font-size:.9rem;line-height:1.5;color:var(--text-3)}
.g-ex{min-width:0}
.g-hero .pt-note{max-width:none}
.g-ex .frame-bar .tag{white-space:nowrap}
.g-ex .caption{margin-top:.85rem}
.g-tags{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem 1.75rem}
.g-tags--4{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:1001px) and (max-width:1240px){.g-tags:not(.g-tags--4){grid-template-columns:repeat(2,minmax(0,1fr))}.g-tags:not(.g-tags--4) .price-tag:last-child{grid-column:1/-1}}
.g-tags .pt-figure b{font-size:2.2rem}
.g-tags .pt-note{font-size:.86rem}
@media (max-width:600px){
  .g-tags{grid-template-columns:minmax(0,1fr);gap:0;padding:0}
  .g-tags .price-tag{padding:.9rem 0}
  .g-tags .price-tag+.price-tag{border-top:1px solid var(--line)}
  .g-tags--4{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.25rem;padding:1.15rem 0}
  .g-tags--4 .price-tag{padding:0}
  .g-tags--4 .price-tag+.price-tag{border-top:0}
  .g-tags .pt-figure b{font-size:1.85rem}
}

/* Inside the frames: a company at the top, the rows of a list, a reply, a month itemised */
.g-co{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.6rem 1rem;margin:0 0 .35rem;padding-bottom:.95rem;border-bottom:1px solid var(--line)}
.g-co p{margin:0}
.g-co>div{flex:1 1 12rem;min-width:0}
.g-ex .kv>div{grid-template-columns:minmax(0,6rem) minmax(0,1fr)}
.g-ex .kv dd{text-wrap:pretty}
@media (max-width:520px){.g-ex .kv>div{grid-template-columns:minmax(0,1fr)}}
.kv .g-src{display:block;margin-top:.3rem;font:400 .72rem/1.45 var(--mono);color:var(--text-3)}
.g-track{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:.35rem 0 0;padding:1.1rem 0 0;border-top:1px solid var(--line)}
.g-track li{position:relative;padding:1.3rem .5rem 0 0;font:500 .76rem/1.35 var(--sans);color:var(--text-2)}
.g-track li::before{content:"";position:absolute;top:0;left:0;width:.7rem;height:.7rem;border-radius:50%;background:var(--live)}
.g-track li::after{content:"";position:absolute;top:.3rem;left:.95rem;right:.25rem;height:2px;border-radius:2px;background:var(--live);opacity:.4}
.g-track li:last-child::after{display:none}
.g-track .is-now{font-weight:600;color:var(--text)}
.g-track .is-now::before{box-shadow:0 0 0 4px var(--live-wash)}
.g-co-name{font:600 1.1rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.01em}
.g-co .g-co-meta{margin-top:.3rem;font:400 .74rem/1.4 var(--mono);color:var(--text-3)}
.g-sheet{list-style:none;margin:0;padding:0}
.g-sheet li{display:grid;grid-template-columns:1.5rem minmax(0,1fr) auto;gap:.2rem .7rem;align-items:start;padding:.85rem 0;border-top:1px solid var(--line)}
.g-sheet li:first-child{border-top:0;padding-top:.15rem}
.g-sheet .flag{align-self:start;margin-top:.05rem}
.g-sheet-n{font:500 .72rem/1.9 var(--mono);color:var(--text-3)}
.g-sheet-row p{margin:0}
.g-sheet-co{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .6rem;font-size:.95rem}
.g-sheet-co span{font:500 .72rem/1 var(--mono);color:var(--text-3)}
.g-sheet-row .g-sheet-why{margin-top:.2rem;font-size:.9rem;line-height:1.4;color:var(--text-2)}
.g-sheet-row .g-sheet-src{margin-top:.3rem;font:400 .72rem/1.45 var(--mono);color:var(--text-3)}
.g-sheet-row .g-sheet-who{margin-top:.2rem;font-size:.82rem;line-height:1.4;color:var(--text-2)}
@media (max-width:520px){.g-sheet li{grid-template-columns:1.3rem minmax(0,1fr)}.g-sheet .flag{grid-column:2;grid-row:2;justify-self:start;margin-top:.5rem}}
.g-sheet-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;max-width:none;margin:.5rem 0 0;padding-top:.8rem;border-top:1px solid var(--line);font:500 .74rem/1.4 var(--mono);color:var(--text-3)}
.g-quote{margin:.95rem 0 .6rem;padding:.85rem 1rem;border-left:2px solid var(--live);border-radius:0 var(--r) var(--r) 0;background:var(--panel-2)}
.g-quote p{margin:0;font-size:.97rem;line-height:1.5}
.g-bill-h{max-width:none;margin:0 0 .35rem;font:500 .72rem/1.4 var(--mono);letter-spacing:.03em;text-transform:uppercase;color:var(--text-3)}
.g-bill{list-style:none;margin:0;padding:0}
.g-bill li{display:grid;grid-template-columns:1.1rem minmax(0,1fr) auto;gap:.75rem;align-items:start;padding:.7rem 0;border-top:1px solid var(--line)}
.g-bill .ico{width:18px;height:18px;margin-top:.1rem;color:var(--pass)}
.g-bill-co b{display:block;font-size:.95rem;font-weight:600}
.g-bill-co small{display:block;margin-top:.15rem;font-size:.84rem;line-height:1.4;color:var(--text-2)}
.g-bill-amt{font-weight:600;font-size:.95rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.g-bill .is-out :is(.ico,.g-bill-amt){color:var(--text-3)}
.g-bill .is-out b{color:var(--text-2)}
.g-bill .is-out .g-bill-amt{font-weight:500;font-size:.84rem}
.g-sum{margin:.35rem 0 0;padding-top:.45rem;border-top:1px solid var(--line-2)}
.g-sum>div{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;font-size:.92rem;color:var(--text-2)}
.g-sum dd{margin:0;font-variant-numeric:tabular-nums;color:var(--text)}
.g-sum .g-sum-total{align-items:baseline;margin-top:.4rem;padding-top:.75rem;border-top:1px solid var(--line)}
.g-sum-total dt{font-weight:600;color:var(--text)}
.g-sum-total dd{font:640 1.6rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em}

/* The charts: inline SVG on a 300-unit box, phone first; the words shrink in user units once the chart is drawn larger */
.g-fig{max-width:34rem;margin:0;padding:1.5rem 1.5rem 1.25rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 18px 40px -28px rgba(11,27,46,.3)}
.g-chart{width:100%;height:auto;overflow:visible}
.g-chart text{font:500 12.5px var(--sans);fill:var(--text-3)}
.g-chart :is(.g-row,.g-val,.g-note){fill:var(--text);font-weight:600}
.g-chart :is(.g-val,.g-note){paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
.g-chart .g-tick--on{fill:var(--brand);font-weight:700}
.g-grid{stroke:var(--line);stroke-width:1}
.g-base{fill:var(--brand);fill-opacity:.16}
.g-range{fill:var(--brand)}
/* The chart's promise line only: the promise box shares the class name, and an icon in it would inherit the dash. */
.g-chart .g-promise{stroke:var(--text);stroke-width:1.5;stroke-dasharray:4 3}
.g-fixed{stroke:var(--text-2);stroke-width:1.5;stroke-dasharray:6 4}
.g-cap{stroke:var(--line-2);stroke-width:1;stroke-dasharray:2 3}
.g-line{fill:none;stroke:var(--brand);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.g-dot{fill:var(--brand);stroke:var(--panel);stroke-width:1.5}
@media (min-width:480px){.g-chart text{font-size:9px}}
@media (max-width:480px){.g-fig{padding:1.1rem 1rem 1rem}}
.g-key{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line);font-size:.84rem;line-height:1.4;color:var(--text-2)}
.g-k{display:inline-flex;align-items:center;gap:.5rem}
.g-k::before{content:"";flex:none;width:1.1rem;height:.6rem;border-radius:2px;background:var(--brand)}
.g-k--promise::before,.g-k--line::before,.g-k--fixed::before{height:0;border-radius:0;background:none;border-top:2px dashed var(--text)}
.g-k--line::before{border-top:3px solid var(--brand)}
.g-k--fixed::before{border-top-color:var(--text-2)}

/* The hub: where a reason to buy is read, the four steps, the three ways, your side, the website first */
.g-sigs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem}
.g-sigs li{display:flex;flex-direction:column;gap:.35rem;padding:1.4rem 1.4rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.g-sigs .ico-chip{width:38px;height:38px;margin-bottom:.8rem;border-radius:10px}
.g-sigs .ico-chip .ico{width:20px;height:20px}
.g-sigs b{font:600 1.04rem/1.3 var(--sans);letter-spacing:-.01em}
.g-sigs li>span:last-child{font-size:.9rem;line-height:1.45;color:var(--text-3)}
@media (max-width:1000px){.g-sigs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){
  .g-sigs{grid-template-columns:minmax(0,1fr);gap:.7rem}
  .g-sigs li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.15rem .9rem;padding:1rem 1.1rem}
  .g-sigs .ico-chip{grid-row:1/3;margin:0}
}
.g-steps{grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem}
.g-steps .step{display:flex;flex-direction:column;align-items:flex-start}
.g-steps .step>p:not(.g-in){margin-bottom:1.1rem}
.step .g-in{display:inline-block;margin-top:auto;padding:.3rem .55rem;border:1px solid var(--line-2);border-radius:99px;font:500 .72rem/1.2 var(--mono);color:var(--text-3)}
@media (max-width:1000px){.g-steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 2.5rem}}
@media (max-width:600px){.g-steps{grid-template-columns:minmax(0,1fr);gap:1.75rem}}
.g-ways .g-pill{position:absolute;top:0;left:1.75rem;margin:0;transform:translateY(-50%)}
.g-ways .card-price{margin-top:1rem}
.g-sub{margin:4rem 0 1.25rem}
.g-side-in{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:2.5rem 5rem;align-items:center}
.g-side .h2{max-width:17em}
.g-side .stats{grid-template-columns:minmax(0,1fr)}
@media (max-width:900px){.g-side-in{grid-template-columns:minmax(0,1fr)}}
.g-more{margin:1.5rem 0 0;font-size:.97rem;color:var(--text-2)}
.g-aid-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1rem;max-width:none;margin:0 0 1.15rem;font:600 1.05rem/1.3 var(--sans)}
.g-aid .checks{gap:.75rem}
.g-aid .checks li{font-size:.95rem}

/* What counts: the four checks, numbered, beside the reply they are judged on; what is never counted */
.g-qual{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:2.5rem 4rem;align-items:start}
.g-checks{list-style:none;margin:0;padding:0;display:grid;gap:1.35rem}
.g-checks li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;align-items:start}
.g-checks b{display:block;font:600 1.02rem/1.5 var(--sans)}
.g-checks p{margin:.2rem 0 0;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.g-mark{display:inline-grid;place-items:center;flex:none;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--brand);color:#fff;font:700 .74rem/1 var(--sans);vertical-align:middle}
.g-thread{margin:0}
.g-thread .g-mark{width:1.25rem;height:1.25rem;margin-left:.3rem;font-size:.66rem}
.g-thread .body p:last-child{margin-bottom:0}
.g-thread mark{padding:.05rem .15rem;border-radius:3px;background:var(--brand-wash);color:var(--text);box-shadow:inset 0 -2px 0 rgba(36,71,214,.35)}
.g-verdict{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1rem;padding:.8rem 1.1rem;border-top:1px solid var(--line);border-radius:0 0 var(--r-lg) var(--r-lg);background:var(--panel-2);font-size:.88rem;font-weight:500;color:var(--text-2)}
.g-never{margin-top:3.5rem;padding-top:2rem;border-top:1px solid var(--line)}
.g-never .h3{margin:0 0 1.1rem}
.g-never ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem 2rem}
.g-never li{display:flex;gap:.55rem;align-items:flex-start;font-size:.92rem;line-height:1.45;color:var(--text-2)}
.g-never .ico{width:16px;height:16px;margin-top:.2rem;color:var(--text-3)}
@media (max-width:1000px){.g-qual{grid-template-columns:minmax(0,1fr)}.g-never ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.g-never ul{grid-template-columns:minmax(0,1fr)}}
.g-dispute{margin-top:3.5rem;padding-top:2rem;border-top:1px solid var(--line)}
.g-dispute>.h3{margin:0 0 1.75rem}

/* The service pages: sizes, the row, what you pay for, your name, your side and the brakes, the promise, the trade */
.g-size .card-price{margin-top:1rem}
.g-size-facts{list-style:none;width:100%;margin:1.1rem 0 0;padding:0;border-top:1px solid var(--line)}
.g-size-facts li{padding:.55rem 0;border-bottom:1px solid var(--line);font-size:.92rem;line-height:1.4;color:var(--text-2)}
.g-rowsplit .g-sub{margin:2.25rem 0 1rem}
.g-panel{display:flex;flex-direction:column;min-width:0;padding:1.9rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 14px 34px -26px rgba(11,27,46,.3)}
.g-panel .card-price{margin-top:.6rem}
.g-panel-note{margin:.65rem 0 1.4rem;padding-bottom:1.25rem;border-bottom:1px solid var(--line);font-size:.9rem;color:var(--text-3)}
.g-panel .checks{gap:.85rem}
.g-panel .checks li{font-size:.95rem;line-height:1.5}
.g-not{max-width:none}
.g-volume,.g-why{align-items:center}
.g-promise-line{display:flex;gap:.7rem;align-items:flex-start;margin:1.5rem 0 0;padding:1rem 1.15rem;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);font-size:.95rem;line-height:1.5}
.g-promise-line .ico{width:20px;height:20px;margin-top:.1rem;color:var(--pass)}
.g-tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.g-tiles li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.15rem;padding:1.6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.g-tiles .h3{margin:.55rem 0 .45rem}
.g-tiles p{margin:0;font-size:.95rem;line-height:1.55;color:var(--text-2)}
@media (max-width:760px){.g-tiles{grid-template-columns:minmax(0,1fr)}.g-tiles li{padding:1.3rem}}
.g-pair .h2{max-width:14em}
.g-brakes{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.g-brakes li{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:.3rem 1.5rem;padding:1.15rem 0;border-bottom:1px solid var(--line)}
.g-brakes b{font:600 1.05rem/1.45 var(--sans)}
.g-brakes span{line-height:1.5;color:var(--text-2)}
@media (max-width:600px){.g-brakes li{grid-template-columns:minmax(0,1fr)}}
.g-promise{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1.5rem 4rem;align-items:start;padding:2.75rem}
.g-promise .h2{max-width:14em;margin:0}
.g-promise .checks{margin-top:.3rem}
@media (max-width:900px){.g-promise{grid-template-columns:minmax(0,1fr);padding:2rem 1.6rem}}
.g-later{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;margin-top:1.25rem}
.g-later p{max-width:none;margin:0;padding:1.15rem 1.3rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);font-size:.95rem;line-height:1.5;color:var(--text-2)}
.g-later b{color:var(--text)}
@media (max-width:760px){.g-later{grid-template-columns:minmax(0,1fr)}}
.g-stat{padding:2.25rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.g-stat p{margin:0}
.g-stat .g-stat-fig{font:640 clamp(3.2rem,6vw,4.6rem)/1 var(--sans);font-stretch:108%;letter-spacing:-.03em}
.g-stat .g-stat-what{margin-top:1rem;font-size:1.05rem;line-height:1.5}
.g-stat .g-stat-src{margin-top:.8rem;font:400 .78rem/1.45 var(--mono);color:var(--text-3)}
.g-trade{list-style:none;margin:1.75rem 0 0;padding:0;border-top:1px solid var(--line-2)}
.g-trade li{display:grid;grid-template-columns:6.25rem minmax(0,1fr);gap:1.25rem;align-items:baseline;padding:.85rem 0;border-bottom:1px solid var(--line)}
.g-trade b{font:640 1.45rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.g-trade span{font-size:.95rem;line-height:1.45;color:var(--text-2)}
.g-vs{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.g-vs li{display:grid;gap:.45rem;padding:1.5rem 1.6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.g-vs b{font:640 2.1rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em}
.g-vs span{font-size:.97rem;line-height:1.5;color:var(--text-2)}
.g-vs small{font:400 .76rem/1.4 var(--mono);color:var(--text-3)}
.g-vs .is-us{border-color:var(--line-2);box-shadow:inset 3px 0 0 var(--brand)}

/* The close: the enquiry itself on the navy band, what happens after you write, then the form */
.g-start .enquire{align-items:center}
.g-start .h2{max-width:13em}
.g-next{list-style:none;margin:1.9rem 0 1.6rem;padding:0;display:grid;gap:.85rem;counter-reset:g}
.g-next li{display:grid;grid-template-columns:1.6rem minmax(0,1fr);gap:.85rem;align-items:start;font-size:.97rem;line-height:1.5;color:var(--text-2);counter-increment:g}
.g-next li::before{content:counter(g);display:grid;place-items:center;width:1.6rem;height:1.6rem;border:1px solid var(--line-2);border-radius:50%;font:600 .76rem/1 var(--sans);color:var(--text)}
.g-next b{font-weight:600;color:var(--text)}

/* Round two (23 Oct 2026): every promise box's way to /promises; the first email, marked with its shape; the sample list */
.g-promise .g-promises{display:block;padding-top:1.1rem;line-height:1.45}
.g-promise .g-promises .ico{display:inline-block;vertical-align:-.22em;margin-left:.4rem}
.g-first-split{align-items:center}
.g-shape{margin-top:2rem}
.g-first{margin:0}
.g-first .body{padding-left:3rem}
.g-first .body p:last-child{margin-bottom:0}
.g-first .g-part{position:relative}
.g-first .g-part .g-mark{position:absolute;top:.15rem;left:-1.95rem;width:1.25rem;height:1.25rem;font-size:.66rem}
.g-first .sig{line-height:1.9}
.g-ph{padding:.05rem .35rem;border-radius:4px;background:var(--bg-2);box-shadow:inset 0 0 0 1px var(--line);color:var(--text-2);white-space:nowrap}
@media (max-width:520px){.g-first .body{padding-left:2.6rem}.g-first .g-part .g-mark{left:-1.75rem}}
.g-sample{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;max-width:none;margin:2rem 0 0}
.g-dl{gap:.55rem}
.g-dl .ico{width:18px;height:18px}
.g-sample>span{font-size:.88rem;line-height:1.4;color:var(--text-3)}
/* ===== B3 growth END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B4 web START ===== */
/* The Websites pages (/websites, /websites/full-package, /websites/care; server/sitepages-web.ts). Page-only rules, every
   class wb-. The exhibits are pictures of software (a browser with a phone speed test docked under it, the two ways to pay for
   the build's last stages, a month's log, a monthly report) on the v5 tokens; the bars are quiet: navy for what we sell, slate
   for the rest. */
.wb-hero .container{align-items:center}
.wb-hero .price-tags{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem 1.75rem}
.wb-hero .price-tags .pt-figure b{font-size:2.2rem}
@media (max-width:600px){.wb-hero .price-tags{gap:.75rem 1rem}.wb-hero .price-tags .pt-figure b{font-size:1.55rem}.wb-hero .price-tags .pt-unit,.wb-hero .price-tags .pt-note{font-size:.8rem}}
.frame.wb-parts .tag,.frame.wb-log .tag,.frame.wb-report .tag{white-space:nowrap}
.wb-aside{max-width:46em;margin:1.75rem 0 0;font-size:.93rem;line-height:1.55;color:var(--text-3)}

/* The hub's exhibit: an invented business's new site in a browser, its phone speed test docked under it. */
.wb-shot{margin:0}
.wb-shot .browser{box-shadow:0 1px 2px rgba(11,27,46,.06),0 34px 70px -34px rgba(11,27,46,.5)}
.wb-site{background:#fff}
.wb-site-nav{display:flex;align-items:center;gap:1rem;padding:.8rem 1.15rem;border-bottom:1px solid var(--line);font:500 .7rem/1 var(--sans);color:var(--text-3)}
.wb-site-logo{display:inline-flex;align-items:center;gap:.45rem;margin-right:auto;font:700 .8rem/1 var(--sans);letter-spacing:-.01em;color:var(--text)}
.wb-site-logo i{width:.9rem;height:.9rem;border-radius:3px;background:var(--text);box-shadow:inset -.32rem -.32rem 0 var(--brand)}
.wb-site-links{display:flex;gap:1rem}
.wb-site-cta{padding:.45rem .65rem;border-radius:4px;background:var(--brand);color:#fff;font-weight:600}
.wb-site-hero{padding:1.6rem 1.25rem 1.3rem}
.wb-site-k{max-width:none;margin:0 0 .55rem;font:600 .64rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.wb-site-h{max-width:15em;margin:0;font:640 1.42rem/1.12 var(--sans);font-stretch:106%;letter-spacing:-.022em;color:var(--text)}
.wb-site-btns{display:flex;gap:.45rem;max-width:none;margin:1.1rem 0 0}
.wb-site-btn{padding:.55rem .8rem;border-radius:4px;background:var(--brand);color:#fff;font:600 .7rem/1 var(--sans)}
.wb-site-btn--ghost{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}
.wb-site-tiles{list-style:none;margin:0;padding:0 1.25rem 1.3rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}
.wb-site-tiles li{padding:.7rem .75rem;border:1px solid var(--line);border-radius:6px;font:600 .7rem/1.3 var(--sans);color:var(--text)}
.wb-site-tiles .ico{display:block;width:18px;height:18px;margin-bottom:.5rem;color:var(--brand)}
.wb-meter{padding:1.05rem 1.2rem 1rem}
.wb-meter-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;max-width:none;margin:0;font:500 .74rem/1.2 var(--mono);color:var(--text-3)}
.wb-meter-read{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;max-width:none;margin:.9rem 0 .75rem}
.wb-meter-read span{font-size:.92rem;color:var(--text-2)}
.wb-meter-read b{font:640 2.1rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;color:var(--text)}
.wb-meter-track{position:relative;height:.5rem;border-radius:99px;background:var(--line-2)}
.wb-meter-track i{position:absolute;top:0;bottom:0;left:0;width:var(--w);border-radius:99px;background:#5BD6A0}
.wb-meter-track em{position:absolute;top:-.32rem;bottom:-.32rem;left:var(--at);width:2px;margin-left:-1px;border-radius:1px;background:var(--text)}
.wb-meter-scale{position:relative;height:.8rem;max-width:none;margin:.6rem 0 0;font:500 .68rem/1 var(--mono);color:var(--text-3)}
.wb-meter-scale span{position:absolute;top:0;left:0;white-space:nowrap}
.wb-meter-scale .wb-meter-target{left:var(--at);transform:translateX(-50%);color:var(--text-2)}
@media (max-width:520px){.wb-site-links{display:none}.wb-site-h{font-size:1.2rem}.wb-site-tiles{gap:.4rem;padding:0 1rem 1.1rem}.wb-site-tiles li{padding:.6rem}}

/* Built to be found: the two points on the left, BrightLocal's two figures as quiet bars on the right. */
.wb-found{align-items:center}
.wb-points{list-style:none;margin:2rem 0 0;padding:0;display:grid;gap:1.3rem;max-width:34rem}
.wb-points li{padding-left:1.1rem;border-left:2px solid var(--line-2);font-size:.98rem;line-height:1.55;color:var(--text-2)}
.wb-points b{display:block;margin-bottom:.2rem;font-weight:600;color:var(--text)}
.wb-chart{margin:0;padding:2rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 18px 40px -28px rgba(11,27,46,.3)}
.wb-chart-h{max-width:none;margin:0;font:600 1.08rem/1.3 var(--sans);color:var(--text)}
.wb-chart-sub{max-width:none;margin:.3rem 0 1.75rem;font-size:.88rem;color:var(--text-3)}
.wb-bars{display:grid;gap:1.5rem}
.wb-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem 1rem;align-items:baseline}
.wb-bar-l{font-size:.97rem;color:var(--text-2)}
.wb-bar-v{font:640 1.75rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.wb-bar-t{grid-column:1/-1;height:.8rem;border-radius:99px;background:var(--bg-2)}
.wb-bar-t i{display:block;height:100%;width:var(--w);border-radius:99px;background:var(--text)}
.wb-bar--2 .wb-bar-t i{background:#8AA0BD}
.wb-chart-src{margin:1.75rem 0 0;padding-top:1rem;border-top:1px solid var(--line);font:400 .76rem/1.5 var(--mono);color:var(--text-3)}

/* What you get, and the three ways: the price and the link line up at the foot of every card in a row. */
.wb-get .card-h{margin-bottom:1.1rem}
.wb-get .checks{gap:.7rem}
.wb-get .checks li{font-size:.93rem;line-height:1.45}
.wb-ways .card-p{flex:1 0 auto}

/* Stages: a chevron in the gap says "then"; on the hub (no money) the step leads. */
.wb-stages>li .stage-n:first-child{margin-top:0}
.wb-stage-p{max-width:none;margin:0;font-size:.93rem;line-height:1.55;color:var(--text-2)}
.wb-stages>li:not(:last-child)::after{content:"";position:absolute;z-index:1;width:.55rem;height:.55rem;border-top:2px solid var(--line-2);border-right:2px solid var(--line-2)}
@media (min-width:1001px){.wb-stages>li:not(:last-child)::after{top:2.1rem;right:-.95rem;transform:rotate(45deg)}}
@media (min-width:601px) and (max-width:1000px){.wb-stages>li:nth-child(odd)::after{top:2.1rem;right:-.95rem;transform:rotate(45deg)}.wb-stages>li:nth-child(even)::after{display:none}}
@media (max-width:600px){.wb-stages>li:not(:last-child)::after{left:2rem;bottom:-.95rem;transform:rotate(135deg)}}

/* The promise: the navy box, its heading left and the promises right. */
.wb-promise{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:2rem 4rem;align-items:center;padding:3rem}
.wb-promise .h2{margin:0;max-width:14em}
.wb-promise .lede{margin:1rem 0 0;font-size:1.05rem}
.wb-promise .checks{gap:1.1rem}
.wb-promise .checks li span{font-size:1.02rem;line-height:1.5;color:var(--text)}
.wb-promise--one{display:block}
@media (max-width:900px){.wb-promise{grid-template-columns:minmax(0,1fr);padding:2rem 1.5rem}}

/* After launch: one wide card, Website Care's line on the left and its price on the right. */
.wb-after{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:2rem 4rem;align-items:end;padding:2.5rem}
.wb-after .h2{margin:0;max-width:15em;font-size:clamp(1.6rem,2.4vw,2.1rem)}
.wb-after .card-p{max-width:40em}
.wb-after .ico-chip{margin-bottom:1.25rem}
.wb-after-side{display:flex;flex-direction:column;align-items:flex-start;padding-left:2.5rem;border-left:1px solid var(--line)}
.wb-after-side .card-price{margin-top:0}
.wb-after-side .wb-aside{margin-top:.6rem}
.wb-after .card-go{padding-top:1.1rem}
@media (max-width:900px){.wb-after{grid-template-columns:minmax(0,1fr);padding:1.75rem}.wb-after-side{padding:1.5rem 0 0;border-left:0;border-top:1px solid var(--line)}}

/* The close: the enquiry on the navy band above the footer, what happens next numbered under the pitch. */
.wb-start .enquire{align-items:center}
.wb-start .h2{max-width:14em}
.wb-start .lede{margin:1.1rem 0 0}
.wb-next{list-style:none;counter-reset:wb-next;margin:1.9rem 0 1.6rem;padding:0;display:grid;gap:.85rem;max-width:30rem}
.wb-next li{counter-increment:wb-next;display:grid;grid-template-columns:1.75rem minmax(0,1fr);gap:.8rem;align-items:start;font-size:1rem;line-height:1.5;color:var(--text)}
.wb-next li::before{content:counter(wb-next);display:grid;place-items:center;width:1.75rem;height:1.75rem;border-radius:50%;border:1px solid var(--line-2);font:600 .78rem/1 var(--sans);color:var(--live)}

/* The Full Package's exhibits: what is inside it, and the build's payments as a schedule. */
.wb-parts-list{list-style:none;margin:0;padding:0}
.wb-parts-list li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;align-items:start;padding:1rem 0;border-top:1px solid var(--line)}
.wb-parts-list li:first-child{border-top:0;padding-top:.3rem}
.wb-parts-list .ico-chip{width:40px;height:40px;border-radius:11px}
.wb-parts-list a{font:600 1.02rem/1.3 var(--sans);color:var(--text);text-decoration:none}
.wb-parts-list a:hover{text-decoration:underline;text-decoration-color:var(--live)}
.wb-parts-list p{max-width:none;margin:.3rem 0 0;font-size:.9rem;line-height:1.5;color:var(--text-2)}
.wb-parts-first{display:flex;gap:.7rem;align-items:flex-start;max-width:none;margin:.4rem 0 0;padding:.85rem 1rem;border:1px dashed var(--line-2);border-radius:var(--r);font-size:.88rem;line-height:1.45;color:var(--text-2)}
.wb-parts-first .ico{width:20px;height:20px;color:var(--live)}
.wb-paying{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:1.5rem 4rem;align-items:center;margin-top:1.25rem;padding:2rem 2.25rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.wb-paying-say .h3{margin:0}
.wb-paying-say p{margin:.6rem 0 0;font-size:.97rem;line-height:1.55;color:var(--text-2)}
.wb-split{margin:0}
.wb-split-h{margin:0 0 .9rem;font:600 1rem/1.35 var(--sans);color:var(--text);text-wrap:balance}
.wb-split-row{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:.45rem 1.25rem;align-items:center}
.wb-split-row+.wb-split-row{margin-top:.55rem}
.wb-split-l{font-size:.92rem;color:var(--text-2)}
.wb-split-bar{display:flex;gap:4px}
.wb-split-bar i{flex:var(--g) 1 0;min-width:0;display:flex;flex-direction:column;gap:.2rem;padding:.6rem .75rem;border:1px solid var(--line);border-radius:6px;background:var(--bg-2);font-style:normal}
.wb-split-bar b{font:600 .98rem/1.1 var(--sans);font-variant-numeric:tabular-nums;color:var(--text)}
.wb-split-bar small{font:500 .7rem/1.2 var(--mono);color:var(--text-3)}
.wb-split-note{max-width:none;margin:.75rem 0 0 12.25rem;font-size:.86rem;color:var(--text-3)}
@media (max-width:900px){.wb-paying{grid-template-columns:minmax(0,1fr);padding:1.5rem}}
@media (max-width:600px){.wb-split-row{grid-template-columns:minmax(0,1fr)}.wb-split-row+.wb-split-row{margin-top:.9rem}.wb-split-note{margin-left:0}}

/* What the monthly covers, and what the package saves: two quiet bar pairs, slate for bought separately, navy for the package. */
.wb-monthly .card-price{margin:.3rem 0 1rem}
.wb-monthly .card-h{margin-bottom:1.1rem;font-size:1.12rem}
.wb-monthly .checks li{font-size:.94rem;line-height:1.5}
.wb-value{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.wb-pair{margin:0;padding:1.9rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 18px 40px -30px rgba(11,27,46,.3)}
.wb-pair-h{margin:0 0 1.4rem;font:600 .78rem/1.25 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.wb-pair-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem 1rem;align-items:baseline}
.wb-pair-row+.wb-pair-row{margin-top:1.5rem}
.wb-pair-l{font-weight:600;font-size:.98rem;color:var(--text)}
.wb-pair-v{font:640 1.6rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.wb-pair-t{grid-column:1/-1;height:.7rem;border-radius:99px;background:var(--bg-2)}
.wb-pair-t i{display:block;height:100%;width:var(--w);border-radius:99px;background:#AFBDD0}
.wb-pair-row--pkg .wb-pair-t i{background:var(--text)}
.wb-pair-s{grid-column:1/-1;font-size:.84rem;line-height:1.45;color:var(--text-3)}
.wb-pair-save{display:flex;align-items:center;gap:.55rem;max-width:none;margin:1.6rem 0 0;padding-top:1.15rem;border-top:1px solid var(--line);font:600 1.02rem/1.3 var(--sans);color:var(--text)}
.wb-pair-save .ico{width:20px;height:20px;color:var(--pass)}
@media (max-width:760px){.wb-value{grid-template-columns:minmax(0,1fr)}.wb-pair{padding:1.4rem}}
.wb-expect .stat b{font-size:clamp(1.9rem,3.2vw,2.7rem)}

/* Website Care: one month's log in the hero, what is included, the monthly report. */
.wb-log-rows{list-style:none;margin:0;padding:0}
.wb-log-rows li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.85rem;align-items:center;padding:.72rem 0;border-top:1px solid var(--line);font-size:.92rem;line-height:1.35;color:var(--text)}
.wb-log-rows li:first-child{border-top:0;padding-top:.15rem}
.wb-log-rows .ico{width:18px;height:18px;color:var(--text-3)}
.wb-log-rows b{font:500 .78rem/1 var(--mono);color:var(--text-2)}
.wb-inc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:1.25rem}
.wb-inc-keep .checks{margin-top:1.3rem}
.wb-inc-keep .checks li{font-size:.97rem}
.wb-inc-grow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.wb-num-b{display:block;margin-bottom:.9rem;font:640 2.9rem/1 var(--sans);font-stretch:108%;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.wb-num .card-h{font-size:1.1rem}
@media (max-width:600px){.wb-num{display:grid;grid-template-columns:3.2rem minmax(0,1fr);column-gap:1rem;align-content:start;padding:1.3rem 1.35rem}.wb-num-b{grid-row:1/span 2;margin:0;font-size:2.3rem}.wb-num .card-p{margin-top:.35rem}}
@media (max-width:1000px){.wb-inc{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.wb-inc-grow{grid-template-columns:minmax(0,1fr)}}
.wb-report-split{align-items:start}
.wb-report-split>div:first-child{padding-top:1rem}
.wb-report-k{max-width:none;margin:0 0 .5rem;font:500 .7rem/1.3 var(--mono);letter-spacing:.03em;text-transform:uppercase;color:var(--text-3)}
.wb-report-t{font-size:.88rem}
.wb-report-t th,.wb-report-t td{padding:.6rem 0;border-bottom:1px solid var(--line);background:none;white-space:normal;vertical-align:baseline}
.wb-report-t th{font:500 .72rem/1.3 var(--sans);color:var(--text-3)}
.wb-report-t th+th,.wb-report-t td+td{width:5.2rem;text-align:right}
.wb-report-t td{font:400 .8rem/1.4 var(--mono);color:var(--text)}
.wb-report-t td+td{font:600 .95rem/1.2 var(--sans);font-variant-numeric:tabular-nums}
.wb-report-t td:last-child{font-weight:400;color:var(--text-3)}
.wb-report-t tbody tr:hover td{background:none}
@media (max-width:600px){.wb-report-t th+th,.wb-report-t td+td{width:4.1rem;padding-left:.6rem}.wb-report-t th{font-size:.68rem}}
@media (max-width:760px){.wb-vs .compare td{grid-template-columns:minmax(0,1fr);gap:.2rem}.wb-vs .compare td::before{font-size:.76rem}.wb-vs .compare tbody tr:last-child>th,.wb-vs .compare tbody tr:last-child>td:not(:last-child){border-bottom:1px solid var(--line)}}
.wb-report-more{max-width:none;margin:.6rem 0 1.5rem;font-size:.82rem;color:var(--text-3)}
.wb-report-ai{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;max-width:none;margin:0}
.wb-report-ai b{font:640 2.3rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;color:var(--text)}
.wb-report-ai span{font-size:.92rem;color:var(--text-2)}
.wb-report-ai small{flex-basis:100%;margin-top:.35rem;font:500 .74rem/1.3 var(--mono);color:var(--text-3)}
.wb-terms{align-items:center}
.wb-terms-list{margin-top:1.6rem}
.wb-terms-list a{color:var(--text)}

/* Round two (23 Oct 2026): each promise box's way to every promise we make (/promises) */
.wb-promise .wb-promises{display:block;padding-top:1.25rem;line-height:1.45}
.wb-promise .wb-promises .ico{display:inline-block;vertical-align:-.22em;margin-left:.4rem}
/* ===== B4 web END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B5 data START ===== */
/* /data, /pricing and /contact (B5, ops/SITE-REBRAND-CONTRACT.md §9). Page-only rules; the components are v5's. */

/* Paragraphs and lists on these pages end without a lone word on their last line, where the browser can. */
.data-trust li,.dp-rows li,.dp-head-start,.dp-pack-list li,.split-said,.dp-buy .one-area,.data-never p,.dp-who .lede,.dp-who-card p,.pr-pay-ways p,.ct-answers p,.pr-free-row small,.ct-also{text-wrap:pretty}

/* /data: the hero's department line over the heading, the scope under the form */
.data-hero .eyebrow{margin-bottom:1.25rem}
.data-hero .status{margin:1.75rem 0 0}
.dp-entry-sub{margin:.6rem 0 0;max-width:46rem}

/* /data: two Packs, one price */
.dp-pack .card-p{margin-bottom:1.1rem}
.dp-rows{gap:.6rem;font-size:.95rem;line-height:1.5}
.dp-rows li::before{margin-top:.42rem}
.dp-pack .card-price{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line);width:100%}
.dp-closed{width:100%;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line)}
.dp-closed p{margin:.7rem 0 0;font-size:.95rem;color:var(--text-2)}
.dp-head-start{display:flex;gap:.9rem;align-items:flex-start;max-width:none;margin:1.5rem 0 0;padding:1.1rem 1.25rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg-2);font-size:.95rem;line-height:1.55;color:var(--text-2)}
.dp-head-start .ico{width:22px;height:22px;margin-top:.05rem;color:var(--brand)}
.dp-head-start b{display:block;color:var(--text);font-weight:600}

/* /data: what lands in your hands, then the price, our word and the order in one bar */
.dp-pack-lede{margin-top:1rem}
.dp-pack-list{margin-top:2rem}
.dp-buy{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,5fr) auto;gap:1.25rem 2.5rem;align-items:center;margin-top:3.5rem;padding:1.75rem 2rem 1.35rem;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand),0 16px 40px -24px rgba(11,27,46,.3)}
.dp-buy .price-line{margin:0}
.dp-buy .price-line b{display:block;margin:0 0 .45rem;font-size:2.6rem;letter-spacing:-.025em}
.dp-buy .one-area{margin:0;padding:0 0 0 2.5rem;border:0;border-left:1px solid var(--line);border-radius:0;background:none}
.dp-buy .btns{margin:0;flex-wrap:nowrap}
.dp-buy .talk{grid-column:1/-1;max-width:none;margin:0;padding-top:1.1rem;border-top:1px solid var(--line)}
@media (max-width:1000px){.dp-buy{grid-template-columns:minmax(0,1fr);padding:1.5rem 1.35rem 1.25rem}.dp-buy .one-area{padding:0;border:0}.dp-buy .btns{flex-wrap:wrap}}

/* /data: who looks at your Pack */
.dp-who{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:2rem 4rem;align-items:center}
.dp-who .lede{margin-top:1rem}
.dp-who-card{padding:1.6rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.dp-who-card p{margin:0;color:var(--text)}
.dp-who-card .entity{margin-top:1rem}
.dp-who-card .card-go{padding-top:1rem}
@media (max-width:900px){.dp-who{grid-template-columns:minmax(0,1fr)}}

/* /pricing: the heading and the way to each department; free to start beside them */
.pr-hero{padding-bottom:3.5rem;border-bottom:1px solid var(--line)}
.pr-hero .container{align-items:center}
.pr-jump ul{list-style:none;margin:2rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.pr-jump a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .8rem;border:1px solid var(--line-2);border-radius:99px;background:var(--panel);font:600 .86rem/1 var(--sans);color:var(--text);text-decoration:none}
.pr-jump a:hover{border-color:var(--brand);color:var(--brand)}
.pr-jump .ico{width:18px;height:18px;color:var(--brand)}
.pr-free{padding:.6rem;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 2px rgba(11,27,46,.05),0 22px 48px -28px rgba(11,27,46,.35)}
.pr-free-k{margin:0;padding:.75rem .85rem .55rem;font:600 .78rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.pr-free-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center;padding:.9rem .85rem;border-top:1px solid var(--line);border-radius:10px;color:var(--text);text-decoration:none}
.pr-free-row:hover{background:var(--bg-2)}
.pr-free-row b{display:block;font-weight:600;line-height:1.3}
.pr-free-row small{display:block;margin-top:.2rem;font-size:.86rem;line-height:1.4;color:var(--text-3)}
.pr-free-row>.ico{width:18px;height:18px;color:var(--brand)}

/* /pricing: one block per department, its head over its rows */
.pr-dept+.pr-dept{border-top:1px solid var(--line)}
.pr-dept-head{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.1rem;margin-bottom:1.75rem}
.pr-dept-name{flex:1;min-width:14rem}
.pr-dept-name .h2{font-size:clamp(1.6rem,2.4vw,2rem)}
.pr-dept-name p{margin:.3rem 0 0;color:var(--text-2)}
.pr-all{display:inline-flex;align-items:center;gap:.4rem;font:600 .95rem/1.2 var(--sans);color:var(--brand);text-decoration:none}
.pr-all .ico{width:18px;height:18px;transition:transform .2s ease}
.pr-all:hover .ico{transform:translateX(3px)}
.pr-more{margin:1.25rem 0 0}
.pr-sizes{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}
.pr-sizes>span{padding:.32rem .6rem;border:1px solid var(--line);border-radius:99px;background:var(--panel);font-size:.84rem;line-height:1.3;color:var(--text-2);white-space:nowrap}
.pr-sizes b{color:var(--text);font-weight:600}
.pr-dept .prices--two,.pr-dept .later{max-width:none}
.pr-dept .price-plus>span{white-space:nowrap}
/* /pricing: the phone firms' Pack once its orders close, said as /data's card says it */
.pr-comms{display:flex;gap:1.1rem;align-items:flex-start;margin-top:1.25rem;padding:1.5rem 1.6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.pr-comms-t{flex:1;min-width:0}
.pr-comms .dp-closed{margin-top:1rem;padding-top:1rem}
@media (max-width:600px){.pr-comms{padding:1.25rem}}
@media (max-width:600px){.pr-dept-name{flex-basis:100%}.pr-all{flex-basis:100%}}
@media (prefers-reduced-motion:reduce){.pr-all .ico{transition:none}}

/* /pricing: how paying works */
.pr-pay{border-top:1px solid var(--line)}
.pr-pay-ways{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.pr-pay-ways li{padding:1.6rem 1.6rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.pr-pay-ways .ico-chip{margin-bottom:1.1rem}
.pr-pay-ways .h3{margin:0 0 .5rem}
.pr-pay-ways li>p:last-child{margin:0;font-size:.97rem;color:var(--text-2)}
@media (max-width:900px){.pr-pay-ways{grid-template-columns:minmax(0,1fr)}}

/* /contact: the pitch and the form; the departments under the company; the short answers */
.ct-hero .container{display:block}
@media (min-width:901px){.ct-grid>form{grid-column:2;grid-row:1/span 2}}
.ct-more .entity{margin-top:0}
#book{border-top:1px solid var(--line)}
.ct-depts{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}
.ct-depts-h{margin:0 0 .8rem;font:600 .78rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ct-depts ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.ct-depts a{display:flex;gap:.6rem;align-items:center;padding:.7rem .85rem;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);font:600 .95rem/1.25 var(--sans);color:var(--text);text-decoration:none}
.ct-depts a:hover{border-color:var(--brand)}
.ct-depts .ico{width:19px;height:19px;color:var(--brand)}
.ct-depts a>span{flex:1}
.ct-depts a>.ico:last-child{width:16px;height:16px;transition:transform .2s ease}
.ct-depts a:hover>.ico:last-child{transform:translateX(3px)}
@media (prefers-reduced-motion:reduce){.ct-depts a>.ico:last-child{transition:none}}
.ct-also{margin-top:1.75rem}
.ct-answers{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem 2.5rem}
.ct-answers li{padding-top:1.1rem;border-top:1px solid var(--line-2)}
.ct-ans-k{display:flex;align-items:center;gap:.45rem;margin:0 0 .5rem;font:600 .74rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.ct-ans-k .ico{width:16px;height:16px}
.ct-ans-k a{color:inherit;text-decoration:none}
.ct-answers li>p:last-child{margin:0;font-size:.97rem;color:var(--text-2)}
.ct-answers b{color:var(--text);font-weight:600}
@media (max-width:900px){.ct-answers{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media (max-width:600px){.ct-answers,.ct-depts ul{grid-template-columns:minmax(0,1fr)}}
/* ===== B5 data END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B6 funnels START ===== */
/* The funnels (ops/SITE-FUNNELS.md): the free checker's result (sitepages.hackResultPage) and the page an enquiry lands on
   (sitepages.contactSentPage). The proof first, then one next step: the offer beside a call-back form, then the Care plans. */
.hr-split{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:3rem 4rem;align-items:start}
@media (max-width:1000px){.hr-split{grid-template-columns:minmax(0,1fr)}}
/* Each finding is its own piece of evidence: what it is, in a sentence, and the place on the owner's domain to open. */
.hr-proofs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;align-items:stretch}
.hr-proofs>:only-child{grid-column:1/-1;max-width:48rem}
.hr-proofs--found{margin-top:3rem}
@media (max-width:900px){.hr-proofs{grid-template-columns:minmax(0,1fr)}}
.hr-find{display:flex;flex-direction:column;min-width:0;padding:1.6rem 1.6rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--signal)}
.hr-find-h{margin:0;font:600 1.15rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.01em}
.hr-find p{margin:.6rem 0 1.25rem;color:var(--text-2)}
.hr-find .record{margin-top:auto}
.hr-find .record .lbl{flex-wrap:wrap;gap:.2rem 1rem}
.hr-find .record .lbl span:first-child{white-space:normal;overflow-wrap:anywhere}
.hr-find .record .out{overflow-wrap:anywhere}
/* The offer beside the call-back form. */
.hr-offer{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:1.25rem;align-items:start}
@media (max-width:900px){.hr-offer{grid-template-columns:minmax(0,1fr)}}
.hr-deal{padding:2.25rem}
.hr-deal .card-h{font-size:1.6rem}
.hr-deal .card-price{margin-top:1rem;font-size:2.6rem}
.hr-deal .card-p{margin-top:.6rem;font-size:1.02rem;color:var(--text)}
.hr-deal .checks{margin:1.5rem 0 2rem;gap:.7rem}
.hr-talk{padding:1.75rem;border:1px solid var(--line-2);border-radius:var(--r-lg)}
.hr-talk .h3{margin:0}
.hr-talk-line{margin:.5rem 0 1.25rem;font-size:.95rem;color:var(--text-2)}
.hr-talk .form{gap:.8rem}
.hr-rebuild{max-width:52em;margin:2rem 0 0;font-size:.95rem;color:var(--text-2)}
/* The Care plans: the offer on a clean result, compact after a compromise. */
.hr-plans .card{padding:1.6rem 1.6rem 1.75rem}
.hr-plans .pill{position:absolute;top:1.5rem;right:1.5rem}
.hr-plans .card-price{margin-top:.8rem}
.hr-plans .card-p{margin-bottom:1.5rem;font-size:.93rem}
.hr-plans .btn{margin-top:auto;width:100%;white-space:normal;text-align:center;line-height:1.25}
.hr-plans--compact .card{padding:1.4rem 1.5rem 1.5rem}
.hr-plans--compact .pill{top:1.35rem;right:1.4rem}
.hr-plans--compact .card-p{margin-bottom:1.25rem}
.hr-terms{margin:1.25rem 0 0;font-size:.9rem;color:var(--text-3)}
.hr-read .kv dd{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}
.hr-read .kv .flag{margin-top:.05rem}
.hr-retry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:end;max-width:32rem;margin-top:2rem}
.hr-retry .form-error{grid-column:1/-1}
@media (max-width:600px){
  .hr-retry{grid-template-columns:minmax(0,1fr)}
  .hr-deal{padding:1.6rem 1.35rem}.hr-deal .card-price{font-size:2.2rem}
  .hr-deal .btn,.hr-talk .btn,.hr-retry .btn{width:100%}
  .hr-talk{padding:1.4rem 1.25rem}
}
/* The page an enquiry lands on: what to have ready, the price, and what happens next. */
.sent .eyebrow{color:var(--brand)}
.sent-ready{margin-top:2.25rem}
.sent-ready .h3{margin:0 0 1rem}
.sent-ready .checks{gap:.7rem}
.sent-asks li::before{width:.42rem;height:.42rem;margin:.62rem 0 0 .2rem;border:0;border-radius:50%;background:var(--brand);transform:none}
.sent-after{margin:1.5rem 0 0;font-size:.97rem;color:var(--text-2)}
.sent-after b{color:var(--text)}
.sent-h{margin:0 0 1.25rem}
.sent .steps+.btns{margin-top:2.25rem}
.sent .entity{margin-top:2.5rem}
.sent-plans{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.sent-plans li{padding:.9rem 0;border-bottom:1px solid var(--line)}
.sent-plan{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .7rem;max-width:none;margin:0}
.sent-plan b{font-weight:600;color:var(--text)}
.sent-plan span:last-child{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text)}
.sent-adds{margin:.25rem 0 0;font-size:.92rem;color:var(--text-3)}
/* After a compromise: the call-back card, and under it the emergency line while a person answers it. On a clean result, the
   next free step: the email check, as a quiet note under the plans. */
.hr-side{display:grid;gap:1.1rem;align-content:start;min-width:0}
.hr-ring{display:grid;justify-items:start;gap:.65rem;padding:.25rem .25rem 0}
.hr-ring p{max-width:30em;margin:0;font-size:.88rem;line-height:1.5;color:var(--text-3)}
@media (max-width:600px){.hr-ring .btn{width:100%}}
.hr-next{max-width:52em;margin-top:2.25rem}
.hr-next a{font-weight:600;color:var(--brand)}

/* THE PROOF PAGE an evidence email links to (server/cyber/evidence-render.ts): a plain page, with no nav and no script. Its hero
   in one column, each finding a card with the place to open on the owner's own domain (as the checker's result shows them), and
   the offer it ends on: the clean-up beside a call-back form on the navy band. Scoped to plain pages and to its own sections. */
.plain .hero .container{display:block}
.plain .hero .h1{max-width:20em;font-size:clamp(2.1rem,4vw,3.3rem);line-height:1.05;overflow-wrap:break-word}
.plain .hero .lede{max-width:44em;margin:1.5rem 0 0}
.plain .hero .lede+.btn{margin-top:2rem}
.plain .hero p.src{margin:1.1rem 0 0;font-size:.9rem;color:var(--text-3)}
section.findings{display:block;margin:0;padding:0 0 5rem}
section.findings .container{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;align-items:stretch}
section.findings .container>:only-child{grid-column:1/-1}
section.findings .finding{display:flex;flex-direction:column;align-items:stretch;gap:0;min-width:0;margin:0;padding:1.5rem 1.6rem 1.45rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--signal);font-size:1rem;font-weight:400}
section.findings .finding .lbl{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .75rem}
section.findings .finding .lbl strong{font:600 1.12rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.01em;color:var(--text)}
section.findings .finding .lbl .src{padding:.3rem .55rem;border:1px solid var(--signal-edge);border-radius:99px;background:var(--signal-wash);font:600 .7rem/1 var(--sans);letter-spacing:.02em;color:var(--signal-text)}
section.findings .finding>p{max-width:none;margin:.65rem 0 1.25rem;font-size:.98rem;line-height:1.55;color:var(--text-2);overflow-wrap:anywhere}
section.findings .finding>.src{display:grid;gap:.3rem;margin-top:auto;padding:.75rem .9rem;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;font:500 .74rem/1.35 var(--sans);color:var(--text-3)}
section.findings .finding>.src a{font:400 .82rem/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
section.findings .finding>.src .pts{font:400 .82rem/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
section.findings .finding>.find{margin:.55rem 0 0;font-size:.85rem;line-height:1.5;color:var(--text-3);overflow-wrap:anywhere}
@media (max-width:900px){section.findings .container{grid-template-columns:minmax(0,1fr)}section.findings{padding-bottom:3.5rem}}
/* the proof page as the sale (v2, 31 Oct 2026): the alarm on one dark band (the lines true of this site, the estimated loss, their
   admin usernames), what it is doing to them, what we hold on them, the proof, and the price last. Urgent, and still easy to scan. */
.pf-hero{padding:3.25rem 0 3.5rem}
.plain .pf-hero .container{display:block}
.plain .pf-hero .container>.pf-top{max-width:none}
.pf-top{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:3.5rem;align-items:start}
.pf-top>*{min-width:0}
@media (max-width:1000px){.pf-hero{padding:2.25rem 0 2.5rem}.pf-top{grid-template-columns:minmax(0,1fr);gap:2rem}}
.pf-hero .eyebrow{color:var(--signal)}
.pf-report{margin:0 0 2.25rem}
.pf-report .eyebrow{margin:0 0 .8rem}
.pf-meta{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1.5fr) minmax(0,1.2fr) minmax(0,1.6fr);margin:0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.pf-meta>div{min-width:0;padding:.7rem 1.25rem .75rem 0}
.pf-meta>div+div{padding-left:1.25rem;border-left:1px solid var(--line-2)}
.pf-meta dt{font:500 .76rem/1.3 var(--sans);letter-spacing:.02em;color:var(--text-3)}
.pf-meta dd{margin:.2rem 0 0;font:500 .98rem/1.3 var(--sans);color:var(--text);overflow-wrap:anywhere}
.pf-meta dd code{font:500 .92rem/1.3 var(--mono)}
@media (max-width:900px){.pf-report{margin-bottom:1.6rem}.pf-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-meta>div{padding:.5rem .7rem .55rem 0;border-top:1px solid var(--line-2)}.pf-meta>div+div{padding-left:0;border-left:0}.pf-meta>div:first-child{grid-column:1/-1;border-top:0}.pf-meta>div:nth-child(3){padding-left:.8rem;border-left:1px solid var(--line-2)}.pf-meta>.pf-by{grid-column:1/-1}.pf-meta dd{font-size:.92rem}.pf-meta dd code{font-size:.78rem;white-space:nowrap}}
.pf-gone{max-width:46rem}
.pf-gone .lede{margin:1.25rem 0 0}
.plain .pf-hero .h1{max-width:15em;font-size:clamp(2.15rem,3.7vw,3.2rem);line-height:1.04}
.pf-id{display:flex;flex-wrap:wrap;gap:.4rem;margin:1.15rem 0 0}
.pf-id span{padding:.28rem .55rem;border:1px solid var(--line-2);border-radius:5px;font:500 .8rem/1.3 var(--mono);color:var(--text);overflow-wrap:anywhere}
.plain .pf-hero p.src{margin:.7rem 0 0;font-size:.84rem;color:var(--text-3)}
.pf-zing{list-style:none;margin:1.6rem 0 0;padding:0;display:grid;gap:.7rem}
.pf-zing li{padding:.05rem 0 .05rem .95rem;border-left:3px solid var(--signal);font:600 clamp(1.2rem,1.9vw,1.42rem)/1.26 var(--sans);font-stretch:104%;letter-spacing:-.014em;color:var(--text);text-wrap:pretty}
.pf-hero .btns{margin-top:1.75rem}
.pf-pay{display:contents}
.pay-terms{margin:.7rem 0 0;font-size:.82rem;line-height:1.4;color:var(--text-3)}
.pay-terms a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.sr-fix .pay-terms{margin-top:.55rem}
.pf-ring{margin:1.1rem 0 0;color:var(--text-2)}
.cy-gets.pf-gets-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:600px){.cy-gets.pf-gets-2{grid-template-columns:minmax(0,1fr)}}
.pf-verdict{padding:1.5rem 1.6rem 1.35rem;background:var(--panel);border:1px solid var(--signal-edge);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--signal)}
.pf-sev{display:flex;align-items:center;gap:.6rem;margin:0;font:600 .8rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--signal-text)}
.pf-dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--signal);box-shadow:0 0 0 4px var(--signal-wash)}
.pf-loss{margin:1.15rem 0 0}
.pf-loss-k{margin:0;font:600 .92rem/1.3 var(--sans);color:var(--text-2)}
.pf-loss-n{margin:.2rem 0 0;font:640 clamp(2rem,3.3vw,2.75rem)/1.06 var(--sans);font-stretch:106%;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--signal);white-space:nowrap}
.pf-loss-y{margin:.3rem 0 0;font:600 1.05rem/1.3 var(--sans);color:var(--text)}
.pf-loss-how{margin:.45rem 0 0;font-size:.86rem;line-height:1.45;color:var(--text-3)}
.pf-stats{margin:1.1rem 0 0;grid-template-columns:max-content minmax(0,1fr);gap:0 .9rem}
.pf-stats .stat{display:grid;grid-column:1/-1;grid-template-columns:3rem minmax(0,1fr);grid-template-columns:subgrid;align-items:baseline;padding:.55rem 0;border-top:1px solid var(--line)}
.pf-stats .stat b{font-size:1.5rem;letter-spacing:-.02em}
.pf-stats .stat span{margin:0;font-size:.95rem;line-height:1.35}
.pf-stats .stat:last-child{padding-bottom:0}
.pf-scale{margin:1.75rem 0 0;padding-top:1.25rem;max-width:none;border-top:1px solid var(--line-2);font-size:1.02rem;line-height:1.5;color:var(--text-2)}
.pf-scale b{font-weight:600;font-variant-numeric:tabular-nums;color:var(--text)}
.pf-still{margin:.85rem 0 0;padding:.6rem .75rem;border:1px solid var(--signal-edge);border-radius:7px;background:var(--signal-wash);font:600 .92rem/1.35 var(--sans);color:var(--signal-text)}
.pf-logins{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:1rem 3.5rem;align-items:center;margin-top:2.25rem;padding-top:1.75rem;border-top:1px solid var(--line-2)}
.pf-logins>*{min-width:0}
.pf-logins-k{margin:0 0 .8rem;font:600 .8rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--signal-text)}
.pf-names{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.55rem}
.pf-names code{display:inline-block;max-width:100%;padding:.5rem .8rem;background:var(--signal);border-radius:7px;font:700 1.22rem/1.2 var(--mono);color:#0B1B2E;overflow-wrap:anywhere}
.pf-logins-at{margin:.75rem 0 0;font-size:.86rem;color:var(--text-3)}
.pf-logins-at code{font:400 .84rem/1.5 var(--mono);color:var(--text-2);overflow-wrap:anywhere}
.pf-logins-why{margin:0;font-size:1.08rem;line-height:1.45;color:var(--text-2)}
.pf-logins-why b{display:block;font-size:1.28rem;line-height:1.25;letter-spacing:-.012em;color:var(--text)}
@media (max-width:1000px){.pf-logins{grid-template-columns:minmax(0,1fr);margin-top:1.75rem;padding-top:1.5rem}}
@media (max-width:360px){.pf-loss-n{white-space:normal}}
.pf-impact.band{padding:4.5rem 0}
.pf-impact .sec-head{margin-bottom:2rem}
.pf-impact .cy-gets{gap:2.25rem 2.5rem}
.pf-impact .cy-gets li{display:block;padding:1rem 0 0;background:none;border:0;border-top:3px solid var(--signal);border-radius:0;font-size:1.02rem;line-height:1.5}
.pf-impact .cy-gets b{margin-bottom:.45rem;font:620 clamp(1.3rem,1.9vw,1.55rem)/1.2 var(--sans);font-stretch:104%;letter-spacing:-.018em}
.pf-why{margin-top:3.5rem;padding-top:2.75rem;border-top:1px solid var(--line)}
.pf-why .sec-head{margin:0}
.pf-why .checks li{grid-template-columns:.7rem 1fr}
.pf-why .checks li::before{width:.55rem;height:.55rem;margin-top:.52rem;background:var(--signal);border:0;border-radius:1px;transform:none}
.pf-firm.band{padding:4rem 0}
.pf-firm .sec-head{margin-bottom:1.75rem}
.pf-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 3rem;margin:0}
.pf-facts>div{display:grid;grid-template-columns:10.5rem minmax(0,1fr);gap:1rem;align-items:baseline;padding:.8rem 0;border-top:1px solid var(--line-2)}
.pf-facts dt{font-size:.92rem;color:var(--text-3)}
.pf-facts dd{margin:0;font-size:1rem;line-height:1.4;color:var(--text);font-weight:500;overflow-wrap:anywhere}
.pf-facts dd code{font:500 1rem/1.4 var(--mono)}
.pf-facts dd.pf-flag{color:var(--signal-text);font-weight:600}
@media (max-width:900px){.pf-impact.band{padding:3.25rem 0}.pf-firm.band{padding:3rem 0}.pf-why{margin-top:2.25rem;padding-top:2rem}.pf-why .sec-head{margin-bottom:1rem}.pf-facts{grid-template-columns:minmax(0,1fr)}.pf-facts>div{grid-template-columns:7.5rem minmax(0,1fr);gap:.75rem}}
.pf-more{grid-column:1/-1;margin:.25rem 0 0;max-width:none;font-size:1.02rem;color:var(--text-2)}
.pf-found-head{padding:4.5rem 0 0}
.pf-found-head .sec-head{margin-bottom:2rem}
.pf-ref{font-family:var(--mono);font-size:.92em;white-space:nowrap}
.pf-fn{margin:0 0 .45rem;font:500 .74rem/1.2 var(--mono);color:var(--text-3)}
.pf-about.band{padding:4.5rem 0}
.pf-about .sec-head{margin-bottom:2rem}
.pf-figs{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem 2rem}
.pf-figs .stat b{font-size:clamp(1.7rem,2.6vw,2.3rem)}
.pf-figs-when{margin:.9rem 0 0;font-size:.86rem;color:var(--text-3)}
.pf-cred{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem 3rem;margin-top:2.5rem;padding-top:1.75rem;border-top:1px solid var(--line)}
.pf-cred>div{min-width:0}
.pf-cred .h3{margin:0 0 .55rem}
.pf-cred p{margin:0;font-size:.98rem;line-height:1.55;color:var(--text-2);overflow-wrap:anywhere}
.pf-cred-links{list-style:none;margin:0;padding:0;display:grid;gap:.3rem;font-size:.98rem;color:var(--text-2)}
@media (max-width:900px){.pf-about.band{padding:3.25rem 0}.pf-figs{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-cred{grid-template-columns:minmax(0,1fr)}}
@media (max-width:1000px){.pf-found-head{padding-top:3.25rem}}
.pf-offer .enquire{align-items:center}
.pf-offer .lede{margin:1rem 0 0;max-width:34em}
.pf-offer .btns{margin-top:2rem}
.pf-offer .talk{max-width:34em;margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--line);color:var(--text-2)}
.pf-call{padding:1.75rem;background:var(--panel);border:1px solid #2C4666;border-radius:var(--r-lg)}
.pf-call .h3{margin:0}
.pf-call-line{max-width:none;margin:.45rem 0 1.25rem;font-size:.95rem;color:var(--text-2)}
.pf-call .form{gap:.85rem;padding:0;background:none;border:0;box-shadow:none}
@media (max-width:600px){.pf-call{padding:1.35rem 1.25rem}.pf-call .btn,.pf-offer .btns .btn{width:100%}}
/* ===== B6 funnels END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B7 guides START ===== */
/* The guides (builder G): /guides and /guides/<slug> (server/sitepages-guides.ts). Read like a publication: the heading, its
   standfirst and the byline; an "In short" box; the body at about 68 characters a line, the contents and the next step beside
   it from 1100px; steps you can scan; records in the records' type; the related guides; the closing band. */
.gd-head{padding:3.25rem 0 2.75rem;border-bottom:1px solid var(--line)}
.gd-head .container>*{max-width:52rem}
.gd-h1{font-size:clamp(2.1rem,4.2vw,3.3rem);line-height:1.06}
.gd-stand{max-width:40em;margin:1.25rem 0 0;font-size:clamp(1.12rem,1.5vw,1.27rem);line-height:1.55;color:var(--text-2)}
.gd-byline{display:flex;align-items:center;gap:.9rem;margin-top:1.9rem}
.gd-avatar{display:grid;place-items:center;flex:none;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--text);color:#fff;font:600 .8rem/1 var(--sans);letter-spacing:.06em}
.gd-byline p{max-width:none;margin:0;font-size:.92rem;line-height:1.45}
.gd-by{display:block;color:var(--text)}
.gd-by a{font-weight:600;text-decoration:none}
.gd-by a:hover{text-decoration:underline}
.gd-meta{display:flex;flex-wrap:wrap;gap:0 .5rem;color:var(--text-3)}
.gd-meta>span{white-space:nowrap}
.gd-meta>span+span::before{content:"·";margin-right:.5rem}
/* The body column and, from 1100px, the contents and the next step beside it, kept in view as you read. */
.gd-grid{display:grid;grid-template-columns:minmax(0,1fr);padding-top:2.75rem;padding-bottom:5rem}
.gd-grid>*{min-width:0;max-width:43rem}
@media (min-width:1100px){
  .gd-grid{grid-template-columns:minmax(0,43rem) minmax(0,16rem);grid-template-areas:"short side" "body side";column-gap:3.5rem;justify-content:space-between;padding-top:3.25rem}
  .gd-short{grid-area:short}
  .gd-body{grid-area:body}
  .gd-side{grid-area:side;align-self:start;position:sticky;top:6.25rem}
}
.gd-side-k{max-width:none;margin:0 0 .55rem;font:600 .74rem/1.2 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--brand)}
.gd-short{margin:0 0 2.25rem;padding:1.35rem 1.5rem 1.4rem;background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:0 var(--r-lg) var(--r-lg) 0}
.gd-short p:not(.gd-side-k){max-width:none;margin:.45rem 0 0;font-size:1.06rem;line-height:1.55;color:var(--text)}
.gd-toc{margin:0 0 2.5rem;padding:1.1rem 1.25rem .45rem;border:1px solid var(--line);border-radius:var(--r-lg)}
.gd-toc ol{list-style:none;margin:0;padding:0}
.gd-toc li+li{border-top:1px solid var(--line)}
.gd-toc a{display:flex;align-items:baseline;gap:.65rem;padding:.55rem 0;font-size:.93rem;line-height:1.4;color:var(--text-2);text-decoration:none}
.gd-toc a:hover{color:var(--brand)}
.gd-toc-n{flex:none;min-width:1rem;font:500 .78rem/1.4 var(--mono);color:var(--text-3)}
.gd-next{display:none}
@media (min-width:1100px){
  .gd-toc{margin:0;padding:.85rem 0 0;border:0;border-top:2px solid var(--text);border-radius:0}
  .gd-next{display:block;margin-top:2.25rem;padding:1.2rem 1.2rem 1.25rem;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg)}
  .gd-next:first-child{margin-top:0}
  .gd-next p:not(.gd-side-k){max-width:none;margin:0 0 1rem;font:600 1rem/1.35 var(--sans);color:var(--text)}
  .gd-next .btn{width:100%;padding:.8rem 1rem;font-size:.9rem;white-space:normal;text-align:center;line-height:1.25}
}
/* The words: a little larger than the site's body, darker headings, steps and points you can scan. */
.gd-body{font-size:1.125rem;line-height:1.72;color:var(--text-2)}
.gd-sec>p{max-width:none;margin:0 0 1.15rem}
.gd-body b{font-weight:600;color:var(--text)}
.gd-body a{color:var(--brand);text-decoration-color:rgba(36,71,214,.35)}
.gd-body a:hover{text-decoration-color:var(--brand)}
.gd-sec+.gd-sec{margin-top:2.9rem}
.gd-sec h2{margin:0 0 1rem;font:620 clamp(1.45rem,2.3vw,1.8rem)/1.2 var(--sans);font-stretch:106%;letter-spacing:-.02em;color:var(--text)}
.gd-step{display:block;margin-bottom:.5rem;font:600 .76rem/1.2 var(--sans);font-stretch:100%;letter-spacing:.09em;text-transform:uppercase;color:var(--brand)}
.gd-list{list-style:none;margin:0 0 1.35rem;padding:0;display:grid;gap:.7rem}
.gd-list li{position:relative;padding-left:1.5rem}
.gd-list li::before{content:"";position:absolute;left:.1rem;top:.68em;width:.42rem;height:.42rem;border-radius:2px;background:var(--brand)}
.gd-steps{list-style:none;margin:.25rem 0 1.5rem;padding:0;counter-reset:gd;display:grid;gap:1rem}
.gd-steps li{position:relative;min-height:2rem;padding-left:2.9rem;counter-increment:gd}
.gd-steps li::before{content:counter(gd);position:absolute;left:0;top:.05em;width:1.95rem;height:1.95rem;border-radius:50%;background:var(--brand-wash);color:var(--brand);font:600 .9rem/1.95rem var(--sans);text-align:center}
.gd-body code{padding:.06em .32em;border:1px solid var(--line);border-radius:4px;background:var(--bg-2);font:400 .84em/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
.gd-code{margin:0 0 1.35rem;padding:1rem 1.15rem;background:var(--console);border-radius:var(--r-lg);font:400 .86rem/1.75 var(--mono);color:var(--ps-text);white-space:pre-wrap;overflow-wrap:break-word}
.gd-body .gd-code code,.gd-body .gd-rec-line code{padding:0;border:0;background:none;font:inherit;color:inherit}
.gd-note{max-width:none;margin:1.5rem 0;font-size:1rem}
/* The exhibits: a record read part by part, an invented email, two bars, a page of results. */
.gd-fig{margin:1.9rem 0 2.1rem}
.gd-fig figure{margin:0}
.gd-fig .caption{max-width:none;margin-top:.8rem;font-size:.86rem;line-height:1.5}
.gd-rec-line{max-width:none;margin:0 0 .9rem;font:500 .9rem/1.6 var(--mono);color:var(--text);overflow-wrap:break-word}
.gd-parts{margin:0;font-size:.95rem;line-height:1.55}
.gd-parts>div{padding:.75rem 0;border-top:1px solid var(--line)}
.gd-body .gd-parts dt code{padding:0;border:0;background:none;font:500 .82rem/1.4 var(--mono);color:var(--live)}
.gd-parts dd{margin:.3rem 0 0;color:var(--text-2)}
.gd-fig .kv dd{font-size:.95rem}
.gd-email .body{font-size:.97rem}
.gd-email .body p{max-width:none}
.gd-bars{margin:1.75rem 0 2rem;padding:1.4rem 1.5rem 1.3rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.gd-bars-h{max-width:none;margin:0 0 .4rem;font:600 .98rem/1.4 var(--sans);color:var(--text)}
.gd-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem 1rem;align-items:baseline;margin-top:.95rem}
.gd-bar-l{font-size:.95rem;line-height:1.4;color:var(--text-2)}
.gd-bar-v{font:640 1.5rem/1 var(--sans);font-stretch:106%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.gd-bar-t{grid-column:1/-1;height:.55rem;overflow:hidden;border-radius:99px;background:var(--bg-2)}
.gd-bar-t i{display:block;width:var(--w);height:100%;border-radius:99px;background:var(--brand)}
.gd-bar+.gd-bar .gd-bar-t i{opacity:.55}
.gd-bars-src{margin-top:1.15rem;font-size:.84rem;line-height:1.45;color:var(--text-3)}
.gd-serp{margin:0;padding:1.15rem 1.35rem .35rem;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 14px 34px -26px rgba(11,27,46,.3)}
.gd-serp-k{max-width:none;margin:0 0 .35rem;font:600 .72rem/1.2 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.gd-serp-r{padding:.85rem 0 .95rem;border-top:1px solid var(--line)}
.gd-serp-k+.gd-serp-r{border-top:0}
.gd-serp-r--fx{margin:0 -1.35rem;padding-left:1.35rem;padding-right:1.35rem;background:var(--signal-wash);box-shadow:inset 3px 0 0 var(--signal)}
.gd-serp-url{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .75rem;max-width:none;margin:0;font-size:.82rem;line-height:1.4;color:var(--text-3)}
.gd-serp-t{max-width:none;margin:.25rem 0;font:500 1.06rem/1.35 var(--sans);color:var(--brand)}
.gd-serp-s{max-width:none;margin:0;font-size:.92rem;line-height:1.5;color:var(--text-2)}
.gd-foot{margin-top:3.25rem;padding-top:1.4rem;border-top:1px solid var(--line)}
.gd-foot p{max-width:none;margin:0;font-size:.95rem;line-height:1.6;color:var(--text-3)}
/* A guide as a card (the hub, and the related guides): the title is the card's one link. */
.gd-card .card-h a{color:inherit;text-decoration:none}
.gd-card .card-h a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.gd-card .card-h a:focus-visible{outline:none}
.gd-card:focus-within{outline:2px solid var(--brand);outline-offset:3px}
.gd-card-k{display:flex;align-items:center;gap:.5rem;max-width:none;margin:0 0 .85rem;font:600 .74rem/1.2 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--brand)}
.gd-card-k .ico{width:18px;height:18px}
.gd-card-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;max-width:none;margin:auto 0 0;padding-top:1.35rem;font-size:.88rem;color:var(--text-3)}
.gd-card .card-p+.gd-card-meta{margin-top:auto}
.gd-card-meta>span{display:inline-flex;align-items:center;gap:.4rem}
.gd-card-meta .ico{width:16px;height:16px}
.gd-card-go{font-weight:600;color:var(--brand)}
.gd-card-go .ico{transition:transform .2s ease}
.gd-card:hover .gd-card-go .ico{transform:translateX(3px)}
.gd-more{padding:4.5rem 0}
.gd-more-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1.5rem;margin-bottom:1.5rem}
.gd-more-head .h3{margin:0;font-size:1.35rem}
.gd-all{display:inline-flex;align-items:center;gap:.35rem;font:600 .95rem/1.2 var(--sans);color:var(--brand);text-decoration:none}
.gd-all .ico{width:18px;height:18px}
/* The hub: the hero with the urgent way in, then the guides by department; one-guide departments side by side. */
.gd-hub-hero{border-bottom:1px solid var(--line)}
.gd-hub-hero .container{align-items:center}
.gd-urgent{justify-self:end;width:100%;max-width:27rem}
.gd-hub{padding-top:4.5rem}
.gd-group+.gd-group,.gd-group+.gd-groups{margin-top:3.75rem}
.gd-group-head{display:flex;align-items:flex-start;gap:1rem;margin:0 0 1.35rem}
.gd-group-head .ico-chip{width:40px;height:40px}
.gd-group-h{margin:.1rem 0 0;font:620 1.4rem/1.2 var(--sans);font-stretch:106%;letter-spacing:-.02em}
.gd-group-h a{color:inherit;text-decoration:none}
.gd-group-h a:hover{color:var(--brand)}
.gd-group-p{max-width:none;margin:.3rem 0 0;font-size:.95rem;line-height:1.45;color:var(--text-2)}
.gd-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto 1fr;gap:0 1.25rem}
.gd-groups>.gd-group{display:grid;grid-row:span 2;grid-template-rows:subgrid;margin-top:0}
@media (max-width:1000px){
  .gd-groups{grid-template-columns:minmax(0,1fr);grid-template-rows:none;row-gap:3.25rem}
  .gd-groups>.gd-group{display:block;grid-row:auto}
}
@media (max-width:760px){
  .gd-head{padding:2.25rem 0 2rem}
  .gd-grid{padding-top:2rem;padding-bottom:3.5rem}
  .gd-body{font-size:1.06rem;line-height:1.68}
  .gd-short{padding:1.15rem 1.2rem 1.2rem}
  .gd-steps li{padding-left:2.6rem}
  .gd-steps li::before{width:1.8rem;height:1.8rem;font-size:.85rem;line-height:1.8rem}
  .gd-bars,.gd-serp{padding-left:1.15rem;padding-right:1.15rem}
  .gd-rec-line,.gd-code{font-size:.8rem}
  .gd-meta{flex-direction:column}
  .gd-meta>span+span::before{content:none}
  .gd-serp-r--fx{margin:0 -1.15rem;padding-left:1.15rem;padding-right:1.15rem}
  .gd-more{padding:3.5rem 0}
  .gd-urgent{justify-self:stretch;max-width:none}
}
@media (prefers-reduced-motion:reduce){.gd-card-go .ico{transition:none}.gd-card:hover .gd-card-go .ico{transform:none}}
/* ===== B7 guides END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B8 email START ===== */
/* "Email me this result" under the free checker's result (sitemail.emailResultForm): a quiet row under the offer, ruled off
   from it, one line of fields on a wide screen. And the page it lands on (/cyber/check/sent), which writes with the B6 classes
   of the page an enquiry lands on. */
.hm{margin-top:3rem;padding-top:2.25rem;border-top:1px solid var(--line-2)}
.hm .h3{margin:0}
.hm-line{max-width:44rem;margin:.45rem 0 1.15rem;font-size:.95rem;color:var(--text-2)}
.hm-form{max-width:58rem;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;gap:.75rem;align-items:end}
.hm-form .form-error,.hm-form .form-note{grid-column:1/-1}
.hm-sent .sent-ready+.btns{margin-top:2.25rem}
@media (max-width:760px){
  .hm{margin-top:2.5rem;padding-top:1.75rem}
  .hm-form{grid-template-columns:minmax(0,1fr)}
  .hm-form .btn{width:100%}
}
/* ===== B8 email END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B9 perf START ===== */
/* The phone's action bar (sitelayout.ts actionBar): under 760px only, over the safe area and under the header's menu. The
   footer gets its height as room. site.js sets data-off while a form is on screen, and data-ready once it has placed it. */
.actbar{display:none}
@media (max-width:759.98px){
  .actbar{position:fixed;left:0;right:0;bottom:0;z-index:19;display:flex;align-items:center;justify-content:center;gap:.6rem;
    padding:.55rem var(--gutter) calc(.55rem + env(safe-area-inset-bottom,0px));
    background:#fff;border-top:1px solid var(--line);box-shadow:0 -10px 24px -18px rgba(11,27,46,.32)}
  .actbar[data-off]{transform:translateY(calc(100% + 1.5rem));visibility:hidden}
  .actbar[data-ready]{transition:transform .22s ease,visibility 0s linear 0s}
  .actbar[data-ready][data-off]{transition:transform .22s ease,visibility 0s linear .22s}
  .actbar .btn{min-height:2.75rem;padding:.7rem 1rem;font-size:.95rem;line-height:1.15;white-space:normal;text-align:center}
  .actbar-go{flex:1 1 auto;min-width:0;max-width:24rem}
  .actbar-ring{flex:none;gap:.45rem;background:#fff}
  .actbar-ring .ico{width:18px;height:18px;stroke-width:1.8}
  .actbar~.footer:not(.footer--plain){padding-bottom:calc(2rem + 3.85rem + 1px + env(safe-area-inset-bottom,0px))}
  html:has(.actbar){scroll-padding-bottom:4.5rem}
}
@media (max-width:359.98px){.actbar{gap:.5rem;padding-left:1rem;padding-right:1rem}.actbar .btn{padding:.7rem .75rem;font-size:.875rem}}
@media (prefers-reduced-motion:reduce){.actbar[data-ready],.actbar[data-ready][data-off]{transition:none}}
@media print{.actbar{display:none}}
/* ===== B9 perf END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B10 sectors START ===== */
/* Lead Generation by industry: /lead-generation/for/<trade> (sitepages-sectors.ts). Every class here starts sx-. */

/* The hero: the trade's eyebrow, who it is for, and a company on a list in its frame */
.sx-hero .container{align-items:center}
.sx-for{max-width:34em;margin:1.4rem 0 0;font-size:.92rem;line-height:1.5;color:var(--text-3)}
.sx-ex{min-width:0}
.sx-ex .frame-bar .tag{white-space:nowrap}
.sx-ex .caption{margin-top:.85rem}
.sx-co{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.6rem 1rem;margin:0 0 .35rem;padding-bottom:.95rem;border-bottom:1px solid var(--line)}
.sx-co p{margin:0}
.sx-co>div{flex:1 1 12rem;min-width:0}
.sx-co-name{font:600 1.1rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.01em}
.sx-co .sx-co-meta{margin-top:.3rem;font:400 .74rem/1.4 var(--mono);color:var(--text-3)}
.sx-ex .kv>div{grid-template-columns:minmax(0,5.5rem) minmax(0,1fr)}
.sx-ex .kv dd{text-wrap:pretty}
.kv .sx-src{display:block;margin-top:.3rem;font:400 .72rem/1.45 var(--mono);color:var(--text-3)}
@media (max-width:520px){.sx-ex .kv>div{grid-template-columns:minmax(0,1fr)}}

/* The dated reasons: a card each, what happened and what it means, then where we read it */
.sx-why{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.sx-why li{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:0 1.25rem;padding:1.6rem 1.6rem 1.35rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.sx-why .ico-chip{grid-row:1/4}
.sx-why .h3{margin:.6rem 0 0}
.sx-why li>p{margin:.45rem 0 0;font-size:.97rem;line-height:1.55;color:var(--text-2);text-wrap:pretty}
.sx-why .sx-read{display:grid;gap:.2rem;margin-top:1.15rem;padding-top:.9rem;border-top:1px solid var(--line)}
.sx-read small{font:500 .68rem/1.5 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}
.sx-read span{font-size:.93rem;font-weight:500;line-height:1.45;color:var(--text)}
@media (max-width:760px){.sx-why{grid-template-columns:minmax(0,1fr);gap:.9rem}}
@media (max-width:520px){
  .sx-why li{grid-template-columns:minmax(0,1fr);grid-template-rows:none;padding:1.3rem 1.25rem 1.15rem}
  .sx-why .ico-chip{grid-row:auto;width:38px;height:38px;border-radius:10px}
  .sx-why .ico-chip .ico{width:20px;height:20px}
  .sx-why .h3{margin-top:.9rem}
}

/* Who we write to: how we reach them on the left, the roles on the right */
.sx-who .h2{max-width:14em}
.sx-how{margin-top:1.75rem;gap:.85rem}
.sx-how li{font-size:.97rem;line-height:1.5}
.sx-roles{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.sx-roles li{display:grid;gap:.2rem;padding:1.1rem 0;border-bottom:1px solid var(--line)}
.sx-roles b{font:600 1.05rem/1.4 var(--sans)}
.sx-roles span{font-size:.97rem;line-height:1.5;color:var(--text-2)}
@media (min-width:901px){.sx-roles{margin-top:2.6rem}}

/* The questions, one column beside their heading */
.sx-qa{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:1.5rem 4rem;align-items:start}
.sx-qa .sec-head{margin:0}
.sx-qa .faq{grid-template-columns:minmax(0,1fr)}
@media (max-width:900px){.sx-qa{grid-template-columns:minmax(0,1fr)}}

/* The three ways, and what we count under them */
.sx-ways .sx-pill{position:absolute;top:0;left:1.75rem;margin:0;transform:translateY(-50%)}
.sx-ways .card-price{margin-top:1rem}
.sx-qual{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:1.5rem 3rem;align-items:center;margin-top:1.5rem;padding:1.75rem 2rem;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:var(--r-lg)}
.sx-qual .card-k{margin-bottom:.6rem}
.sx-qual-line{max-width:none;margin:0;font:500 1.08rem/1.55 var(--sans);color:var(--text)}
.sx-qual-note{max-width:none;margin:.8rem 0 0;font-size:.92rem;line-height:1.5;color:var(--text-2)}
.sx-qual-note a{white-space:nowrap;color:var(--brand)}
.sx-ask{margin:0;padding:1.1rem 1.2rem;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r)}
.sx-ask blockquote{margin:0}
.sx-ask p{margin:0;font-size:1rem;line-height:1.5;color:var(--text)}
.sx-ask figcaption{margin-top:.6rem;font:400 .72rem/1.4 var(--mono);color:var(--text-3)}
@media (max-width:900px){.sx-qual{grid-template-columns:minmax(0,1fr);padding:1.4rem 1.3rem}}

/* The other trades, under the questions */
.sx-others{margin-top:4rem;padding-top:2.25rem;border-top:1px solid var(--line)}
.sx-others .h3{margin:0 0 1.25rem}
.sx-others ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.sx-others a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.85rem;align-items:center;height:100%;padding:1rem 1.1rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--text);text-decoration:none;transition:border-color .2s ease,transform .2s ease}
.sx-others a:hover{border-color:var(--line-2);transform:translateY(-2px)}
.sx-others .ico-chip{width:38px;height:38px;border-radius:10px}
.sx-others .ico-chip .ico{width:20px;height:20px}
.sx-others b{display:block;font-size:.97rem;font-weight:600;line-height:1.3}
.sx-others small{display:block;margin-top:.2rem;font-size:.84rem;line-height:1.35;color:var(--text-3)}
.sx-others .sx-go{width:18px;height:18px;color:var(--brand)}
@media (max-width:1000px){.sx-others ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.sx-others ul{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.sx-others a{transition:none}.sx-others a:hover{transform:none}}

/* The close: the enquiry on the navy band, what happens after you write, then the form begun with the trade */
.sx-start .enquire{align-items:center}
.sx-start .h2{max-width:13em}
.sx-next{list-style:none;margin:1.9rem 0 1.6rem;padding:0;display:grid;gap:.85rem;counter-reset:sx}
.sx-next li{display:grid;grid-template-columns:1.6rem minmax(0,1fr);gap:.85rem;align-items:start;font-size:.97rem;line-height:1.5;color:var(--text-2);counter-increment:sx}
.sx-next li::before{content:counter(sx);display:grid;place-items:center;width:1.6rem;height:1.6rem;border:1px solid var(--line-2);border-radius:50%;font:600 .76rem/1 var(--sans);color:var(--text)}
.sx-next b{font-weight:600;color:var(--text)}
/* ===== B10 sectors END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B11 reports START ===== */
/* Hacked business websites by area: /cyber/reports and /cyber/reports/<slug> (sitepages-cyberreports.ts). Every class starts rp-.
   A data publication: calm, dated, exact. Amber only on a compromise; numbers in columns are tabular, standalone ones are not. */

/* The heroes: the question (or an area's headline) on the left and a dark frame of figures on the right; one column without one */
.rp-hero--solo .container{display:block}
.rp-hero--solo .container>div{max-width:50rem}
.rp-hero--hub{padding-bottom:3.5rem}
.rp-hero--hub .h1{max-width:15em;font-size:clamp(2.4rem,4.2vw,3.6rem);line-height:1.04}

.rp-hero .lede{margin:1.4rem 0 0}
.rp-hero .btns{margin-top:1.9rem}
.rp-assure{list-style:none;display:flex;flex-wrap:wrap;gap:.75rem 1.75rem;margin:2.25rem 0 0;padding:1.25rem 0 0;border-top:1px solid var(--line);font-size:.92rem;color:var(--text-2)}
.rp-assure li{display:flex;align-items:center;gap:.5rem}
.rp-assure .ico{width:18px;height:18px;color:var(--brand)}

/* The hub's frame: the cities read most recently, each a row that opens its page */
.rp-latest .frame-bar .tag{white-space:nowrap}
.rp-latest .frame-body{padding:.9rem 1.25rem 1.15rem}
.rp-latest-k{display:flex;justify-content:space-between;gap:1rem;max-width:none;margin:0 0 .35rem;font:500 .72rem/1.3 var(--mono);color:var(--text-3)}
.rp-latest-list{list-style:none;margin:0;padding:0}
.rp-latest-list a{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;border-top:1px solid var(--line);color:var(--text);text-decoration:none}
.rp-latest-list a:hover .rp-latest-name{color:var(--live)}
.rp-latest-name{display:grid;gap:.15rem;min-width:0;font:600 1.02rem/1.3 var(--sans)}
.rp-latest-name small{font:400 .8rem/1.35 var(--sans);color:var(--text-3)}
.rp-latest-list b{flex:none;font:620 1.45rem/1 var(--sans);font-variant-numeric:tabular-nums;color:var(--signal-text)}
.rp-latest-foot{max-width:none;margin:0;padding-top:.85rem;border-top:1px solid var(--line);font-size:.82rem;line-height:1.5;color:var(--text-3)}
.rp-latest-foot a{color:var(--live);font-weight:600;text-decoration:none}
.rp-latest-foot a:hover{text-decoration:underline}
@media (max-width:1000px){.rp-latest{display:none}}

/* The figures: the number, what it counts, its share; amber only on the compromised */
.rp-figs{list-style:none;margin:0;padding:0;display:grid}
.rp-fig{display:grid;align-content:start;gap:.3rem;min-width:0}
.rp-n{font:640 clamp(2.5rem,4.4vw,3.5rem)/1 var(--sans);font-stretch:108%;letter-spacing:-.03em;color:var(--text)}
.rp-k{font-size:1.02rem;line-height:1.35;color:var(--text);font-weight:500}
.rp-s{display:block;font-size:.86rem;line-height:1.45;color:var(--text-3)}
.rp-fig--fx .rp-s{color:var(--signal-text);font-weight:600}
.rp-fig--fx .rp-s::before{content:"";display:inline-block;width:.5rem;height:.5rem;margin-right:.45rem;border-radius:50%;background:var(--signal);vertical-align:.05em}

/* The hub's totals, one ledger per country, ruled, under the hero */
.rp-totals{padding:0 0 5rem}
.rp-ledger{padding:2rem 0 2.25rem;border-top:1px solid var(--line-2)}
.rp-ledger+.rp-ledger{margin-top:.5rem}
.rp-ledger-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;margin-bottom:1.75rem}
.rp-ledger-h{margin:0;font:620 1.55rem/1.2 var(--sans);font-stretch:106%;letter-spacing:-.02em}
.rp-ledger-h a{color:var(--text);text-decoration:none}
.rp-ledger-h a:hover{color:var(--brand)}
.rp-when{display:flex;align-items:center;gap:.45rem;max-width:none;margin:0;font:500 .8rem/1.4 var(--mono);color:var(--text-3)}
.rp-when .ico{width:16px;height:16px}
.rp-ledger .rp-figs{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem 0}
.rp-ledger .rp-fig{padding:0 2rem}
.rp-ledger .rp-fig:first-child{padding-left:0}
.rp-ledger .rp-fig+.rp-fig{border-left:1px solid var(--line)}
.rp-thin{max-width:44em;margin:0;color:var(--text-2)}
.rp-empty{max-width:44rem;padding:1.75rem 2rem;border:1px dashed var(--line-2);border-radius:var(--r-lg)}
.rp-empty .h3{margin:0 0 .4rem}
.rp-empty p{margin:0;color:var(--text-2)}
@media (max-width:760px){
  .rp-totals{padding-bottom:3.5rem}
  .rp-ledger{padding:1.6rem 0 1.75rem}
  .rp-ledger-head{flex-direction:column;align-items:flex-start;margin-bottom:1.1rem}
  .rp-ledger .rp-figs{grid-template-columns:minmax(0,1fr);gap:0}
  .rp-ledger .rp-fig,.rp-ledger .rp-fig:first-child{padding:1rem 0}
  .rp-ledger .rp-fig+.rp-fig{border-left:0;border-top:1px solid var(--line)}
}

/* An area's figures in a dark frame beside its headline */
.rp-count .frame-bar{color:var(--text-2)}
.rp-count .frame-bar .tag{white-space:nowrap}
.rp-count .frame-body{padding:.35rem 1.4rem 1.2rem}
.rp-count .rp-figs{grid-template-columns:minmax(0,1fr)}
.rp-count .rp-fig{padding:1.05rem 0;border-bottom:1px solid var(--line)}
.rp-count .rp-n{font-size:clamp(2.2rem,3.4vw,2.75rem)}
.rp-count-foot{display:flex;align-items:flex-start;gap:.5rem;max-width:none;margin:1rem 0 0;font-size:.84rem;line-height:1.5;color:var(--text-3)}
.rp-count-foot .ico{width:16px;height:16px;margin-top:.15rem}

/* The hub's tables of cities, one per country: white, ruled, never a sideways scroll */
.rp-jump{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;max-width:none;margin:-1.25rem 0 2.25rem;font-size:.9rem}
.rp-jump span{margin-right:.25rem;font:500 .78rem/1.3 var(--mono);color:var(--text-3)}
.rp-jump a{padding:.42rem .8rem;border:1px solid var(--line-2);border-radius:99px;background:var(--panel);color:var(--text);font-weight:500;text-decoration:none}
.rp-jump a:hover{border-color:var(--brand);color:var(--brand)}
.rp-country+.rp-country{margin-top:3.5rem}
.rp-country-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin:0 0 1rem}
.rp-country-head .h3{font-size:1.3rem}
.rp-country-head a{color:var(--text);text-decoration:none}
.rp-country-head a:hover{color:var(--brand)}
.rp-n-cities{font:500 .8rem/1.3 var(--mono);color:var(--text-3)}
.rp-table{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.rp-areas{width:100%;border-collapse:collapse;font-size:.97rem}
.rp-areas thead th{padding:.85rem 1.1rem;background:var(--panel-2);font:500 .74rem/1.3 var(--mono);color:var(--text-3);white-space:normal;vertical-align:bottom}
.rp-areas thead .rp-sorted{color:var(--text)}
.rp-areas .rp-sort{width:14px;height:14px;margin-left:.2rem;vertical-align:-2px;stroke-width:2}
.rp-areas tbody th,.rp-areas td{padding:1rem 1.1rem}
.rp-areas tbody tr:last-child>*{border-bottom:0}
.rp-areas td.num{color:var(--text)}
.rp-city{background:transparent;font:600 1rem/1.3 var(--sans);color:var(--text);white-space:normal}
.rp-city a{color:var(--text);text-decoration:none}
.rp-city a:hover{color:var(--brand);text-decoration:underline;text-decoration-color:var(--brand)}
.rp-city small{display:block;margin-top:.15rem;font:400 .82rem/1.3 var(--sans);color:var(--text-3)}
.rp-share b{display:inline-block;min-width:3.4rem;font-weight:600;color:var(--signal-text)}
.rp-track{display:inline-block;width:5.5rem;height:6px;margin-right:.7rem;vertical-align:middle;border-left:1px solid var(--line-2)}
.rp-track i{display:block;height:100%;border-radius:0 3px 3px 0;background:var(--signal)}
.rp-dates{color:var(--text-3);font-size:.9rem}
.rp-m{display:none}
.rp-areas tbody tr:hover>*{background:rgba(36,71,214,.025)}
.rp-notes{max-width:none;margin:1rem 0 0;font-size:.88rem;line-height:1.5;color:var(--text-3)}
.rp-notes:empty{display:none}
.rp-none{margin:0;padding:1.25rem 1.4rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--text-2)}
@media (max-width:900px){
  .rp-table{background:transparent;border:0;border-radius:0;overflow:visible}
  .rp-areas,.rp-areas tbody{display:block}
  .rp-areas thead{display:none}
  .rp-areas tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem .75rem;margin:0 0 .75rem;padding:1.1rem 1.15rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
  .rp-areas tbody th,.rp-areas td{display:block;padding:0;border:0;text-align:left;white-space:normal}
  .rp-areas tbody tr:hover>*{background:transparent}
  .rp-city{grid-column:1/3;grid-row:1}
  .rp-areas td.rp-share{display:flex;flex-direction:column-reverse;align-items:flex-end;grid-column:3;grid-row:1}
  .rp-share .rp-track{width:100%;margin:.5rem 0 0}
  .rp-share b{min-width:0;font-size:1.25rem;line-height:1}
  .rp-areas td[data-k]{grid-row:2;font-size:1rem}
  .rp-areas td[data-k]::before{content:attr(data-k);display:block;margin-bottom:.2rem;font:500 .76rem/1.3 var(--sans);color:var(--text-3);white-space:nowrap}
  .rp-areas td.rp-dates{grid-column:1/-1;grid-row:3;padding-top:.75rem;border-top:1px solid var(--line);font-size:.84rem}
  .rp-m{display:inline}
}

/* An area's detail: what the spam advertised beside how it compares, each a white panel on the grey band */
.rp-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;align-items:stretch}
.rp-panel{display:flex;flex-direction:column;min-width:0;padding:2rem 2.1rem 2.1rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.rp-panel-h{margin:0;font:620 1.4rem/1.2 var(--sans);font-stretch:106%;letter-spacing:-.02em}
.rp-panel-p{max-width:none;margin:.65rem 0 0;font-size:.97rem;line-height:1.55;color:var(--text-2)}
.rp-panel-foot{margin-top:auto;padding-top:1.5rem}
.rp-panel-note{max-width:none;margin:0;padding-top:1rem;border-top:1px solid var(--line);font-size:.86rem;line-height:1.5;color:var(--text-3)}
.rp-panel-note a,.rp-others a,.rp-more a{color:var(--brand);font-weight:600;text-decoration:none}
.rp-panel-note a:hover,.rp-others a:hover,.rp-more a:hover{text-decoration:underline}
.rp-others{max-width:none;margin:1rem 0 0;font-size:.92rem;line-height:1.7;color:var(--text-2)}
.rp-others>span:first-child{margin-right:.3rem;color:var(--text-3)}
.rp-sep{margin:0 .2rem;color:var(--text-3)}
@media (max-width:900px){.rp-panels{grid-template-columns:minmax(0,1fr)}.rp-panel{padding:1.6rem 1.35rem 1.7rem}}

/* Quiet bars: a label, a thin bar from its baseline, the value at the tip */
.rp-bars{list-style:none;margin:1.5rem 0 0;padding:0;display:grid;gap:.95rem}
.rp-bars li{display:grid;grid-template-columns:minmax(0,12.5rem) minmax(0,1fr) minmax(5.5rem,auto);gap:.35rem 1rem;align-items:center}
.rp-bar-k{font-size:.94rem;line-height:1.35;color:var(--text)}
.rp-bar-k a{color:var(--text);text-decoration:none;font-weight:600}
.rp-bar-k a:hover{color:var(--brand);text-decoration:underline}
.rp-bar-t{display:block;height:8px;border-left:1px solid var(--line-2)}
.rp-bar-t i{display:block;height:100%;min-width:2px;border-radius:0 4px 4px 0;background:#8A9AAF}
.rp-bar-v{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.rp-bar-v b{font-weight:600;color:var(--text)}
.rp-bar-v small{margin-left:.45rem;font-size:.8rem;color:var(--text-3)}
#cities .rp-bar-t i{background:var(--signal)}
.rp-pair{margin-top:1.6rem}
.rp-pair-k{max-width:none;margin:0;font:600 .95rem/1.3 var(--sans);color:var(--text)}
.rp-pair .rp-bars{margin-top:.8rem;gap:.6rem}
.rp-pair .is-area .rp-bar-t i{background:var(--text)}
.rp-pair li:not(.is-area) .rp-bar-t i{background:#B7C3D2}
.rp-pair li:not(.is-area) .rp-bar-k{color:var(--text-2)}
.rp-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;max-width:none;margin:1.1rem 0 0;font-size:.84rem;color:var(--text-2)}
.rp-legend span{display:inline-flex;align-items:center;gap:.45rem}
.rp-key{display:inline-block;width:.75rem;height:.75rem;border-radius:2px;background:#B7C3D2}
.rp-key--area{background:var(--text)}
@media (max-width:520px){
  .rp-bars li{grid-template-columns:minmax(0,1fr) auto;gap:.35rem .75rem}
  .rp-bar-k{grid-column:1/-1}
  .rp-bar-t{grid-column:1}
  .rp-bar-v{grid-column:2}
}

/* What the two counts mean, and the line to how we read */
.rp-means{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.rp-mean{padding:1.75rem 1.9rem 1.85rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.rp-mean-k{max-width:none;margin:0 0 1rem}
.rp-mean-k .flag{padding:.4rem .7rem;font-size:.8rem}
.rp-mean .h3{margin:0 0 .5rem}
.rp-mean p{max-width:none;color:var(--text-2)}
.rp-mean p:last-child{margin-bottom:0}
.rp-more{max-width:none;margin:1.75rem 0 0;font-size:.97rem;color:var(--text-2)}
@media (max-width:760px){.rp-means{grid-template-columns:minmax(0,1fr);gap:.9rem}.rp-mean{padding:1.4rem 1.35rem 1.5rem}}
.rp-how a{color:var(--brand);font-weight:600;text-decoration:none}
.rp-how a:hover{text-decoration:underline}

/* The next steps on an area's page: the clean-up, and the Care plans with their prices */
.rp-ticks{list-style:none;margin:1.1rem 0 0;padding:0;display:grid;gap:.5rem}
.rp-ticks li{display:flex;gap:.55rem;align-items:flex-start;font-size:.94rem;line-height:1.45;color:var(--text-2)}
.rp-ticks .ico{width:18px;height:18px;margin-top:.1rem;color:var(--pass)}
.rp-plans{list-style:none;width:100%;margin:1.2rem 0 0;padding:0;border-top:1px solid var(--line)}
.rp-plans a{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none;font-weight:500}
.rp-plans a:hover{color:var(--brand)}
.rp-plan-price{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-plan-price small{margin-left:.3rem;font-weight:500;font-size:.84rem;color:var(--text-3)}

/* The close: the free check, its field and button on one line from 601px */
.rp-close .form{grid-template-columns:minmax(0,1fr) auto;column-gap:.6rem;align-items:end}
.rp-close .form>*{grid-column:1/-1}
.rp-close .form>.field{grid-column:1}
.rp-close .form>div:not(.field){grid-column:2;grid-row:1}
.rp-close .form .btn{width:auto;height:3.1rem;padding:0 1.3rem}
.rp-close .talk{margin-top:1.1rem}
@media (max-width:600px){
  .rp-close .form{grid-template-columns:minmax(0,1fr)}
  .rp-close .form>div:not(.field){grid-column:1;grid-row:auto}
  .rp-close .form .btn{width:100%}
}
/* ===== B11 reports END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B12 about START ===== */
/* The founder's photo and his story (/about's founder card and the people band, the home page's "From Leeds" block, a guide's
   byline) and /press, for journalists and partners (24 Oct 2026). Page-only rules over the v5 components. */

/* ── the founder's portrait, wherever it shows: a calm frame of the photo, never cropped past its own 3:4 ── */
.founder-photo,.who-photo,.pr-photo-img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;border-radius:var(--r-lg);background:var(--bg-2)}

/* ── /about: his card beside his story; on a phone the heading, then the card in a row, then the story ── */
.about-story{display:grid;grid-template-columns:minmax(0,19rem) minmax(0,1fr);grid-template-areas:"card head" "card body";gap:0 5rem;align-items:start}
.about-story--words{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "body"}
.about-story-h{grid-area:head;margin:0 0 1.25rem}
.about-story-body{grid-area:body}
.about-story-body .about-quote{margin-top:2.25rem}
.founder-card{grid-area:card;margin:0}
.founder-card figcaption{display:grid;justify-items:start;gap:.1rem;margin-top:1.1rem}
.founder-name{font:600 1.12rem/1.3 var(--sans);font-stretch:104%;color:var(--text)}
.founder-role,.founder-line{font-size:.95rem;line-height:1.45;color:var(--text-2)}
.founder-go{display:inline-flex;align-items:center;gap:.4rem;margin-top:.7rem;font:600 .95rem/1.3 var(--sans);color:var(--brand);text-decoration:none}
.founder-go .ico{width:18px;height:18px;transition:transform .2s ease}
.founder-go:hover .ico{transform:translateX(3px)}
@media (max-width:900px){
  .about-story{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "card" "body"}
  .founder-card{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:1.25rem;align-items:center;margin:0 0 2rem}
  .founder-card figcaption{margin:0}
}

/* ── the people band: his face beside his name, so the names and the lines under them stay level across the cards ── */
.person--face{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:.75rem}
.person--face p{grid-column:1/-1}
.person-face{width:2.25rem;height:2.25rem;border-radius:50%;object-fit:cover;background:var(--line)}

/* ── the home page's "From Leeds. Built in Melbourne.": a modest portrait beside the words ── */
.who-body{display:grid;grid-template-columns:8.5rem minmax(0,1fr);gap:2rem;align-items:start}
@media (max-width:600px){.who-body{grid-template-columns:minmax(0,1fr);gap:1.25rem}.who-photo{width:7rem}}

/* ── a guide's byline: his face in the circle the initials used ── */
.gd-avatar--face{display:block;object-fit:cover;background:var(--bg-2)}

/* ── /press: the page in brief and the two sentences to quote, the founder, the mark, the facts ── */
.pr-hero .container{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4.5rem;align-items:center}
.pr-hero .lede{margin:1.5rem 0 1.25rem}
.pr-write{display:flex;gap:.6rem;align-items:flex-start;max-width:none;margin:0;font-size:.98rem;line-height:1.5;color:var(--text-2)}
.pr-write .ico{flex:none;width:18px;height:18px;margin-top:.17rem;color:var(--brand)}
.pr-two .frame-body{padding:1.4rem 1.5rem 1.55rem}
.pr-two-p{max-width:none;margin:0;font-size:1.06rem;line-height:1.62;color:var(--text)}
@media (max-width:1000px){.pr-hero .container{grid-template-columns:minmax(0,1fr);gap:2.5rem}.pr-two{max-width:40rem}}
.pr-founder-grid{display:grid;grid-template-columns:minmax(0,21rem) minmax(0,1fr);gap:2.5rem 5rem;align-items:center}
.pr-founder-grid--words{grid-template-columns:minmax(0,1fr)}
.pr-photo{margin:0}
.pr-photo figcaption{margin-top:1.1rem}
.pr-founder .eyebrow{margin:0 0 .8rem;color:var(--brand)}
.pr-founder .h2{margin:0 0 1rem}
.pr-more{margin:1.5rem 0 0}
.pr-more a{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--brand);text-decoration:none}
.pr-more .ico{width:18px;height:18px;transition:transform .2s ease}
.pr-more a:hover .ico{transform:translateX(3px)}
@media (max-width:900px){.pr-founder-grid{grid-template-columns:minmax(0,1fr)}.pr-photo{max-width:15rem}}
/* A file to save: a round cobalt chip with the arrow turned to point down, its name, and its kind and size under it. */
.pr-dl{display:inline-flex;align-items:center;gap:.75rem;color:var(--text);text-decoration:none}
.pr-dl-ico{display:grid;place-items:center;flex:none;width:2.5rem;height:2.5rem;border-radius:50%;background:var(--brand-wash);color:var(--brand)}
.pr-dl-ico .ico{width:18px;height:18px;transform:rotate(90deg)}
.pr-dl-t{display:grid;gap:.05rem}
.pr-dl-t b{font:600 .95rem/1.3 var(--sans);color:var(--brand)}
.pr-dl-t small{font-size:.84rem;line-height:1.4;color:var(--text-3)}
.pr-dl:hover .pr-dl-t b{text-decoration:underline;text-underline-offset:.2em}
.pr-mark-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;max-width:48rem}
.pr-mark{display:grid;gap:1.1rem;align-content:start;min-width:0}
.pr-mark-tile{display:grid;place-items:center;aspect-ratio:3/2;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel)}
.pr-mark-tile--dark{background:var(--text);border-color:var(--text)}
.pr-mark-tile img{width:34%;height:auto}
@media (max-width:600px){.pr-mark-list{grid-template-columns:minmax(0,1fr)}}
.pr-facts-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem 4.5rem;align-items:start}
.pr-co .h3,.pr-what .h3{margin:0 0 1rem}
.pr-co .kv{padding:.4rem 1.35rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.pr-co .kv>div{padding:.75rem 0}
.pr-co .kv a{color:var(--text)}
.pr-depts{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.pr-depts a{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;align-items:start;padding:1.05rem 1.2rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--text);text-decoration:none;transition:border-color .2s ease,box-shadow .2s ease}
.pr-depts a:hover{border-color:var(--line-2);box-shadow:0 16px 36px -26px rgba(11,27,46,.4)}
.pr-dept-t{display:grid;gap:.2rem}
.pr-dept-t b{font:600 1.02rem/1.3 var(--sans)}
.pr-dept-t span{font-size:.92rem;line-height:1.5;color:var(--text-2)}
.pr-next{margin:2.75rem 0 0}
@media (max-width:900px){.pr-facts-grid{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.founder-go .ico,.pr-more .ico,.pr-depts a{transition:none}}
/* ===== B12 about END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B13 alerts START ===== */
/* Free website alerts (server/sitepages-alerts.ts, server/sitealerts-form.ts): the sign-up form, the offer it sits in on a clean
   result, /cyber/check and /cyber/care, the /cyber/alerts page, and the pages its links open. Page-only rules, every class al-;
   the finding cards, the read frame and the exhibit are the result page's and the Care page's own (hr-, cy-). */

/* The form: an address and a name side by side, the button under them. With the website carried from a result, the two fields
   and the button sit on one line on a wide screen. */
.al-form{gap:.85rem}
.al-form .form-note{font-size:.85rem;line-height:1.5}
@media (min-width:761px){
  .al-form--fixed{grid-template-columns:minmax(0,1fr) auto;column-gap:.75rem;align-items:end}
  .al-form--fixed>*{grid-column:1/-1}
  .al-form--fixed>.form-row{grid-column:1;grid-row:1}
  .al-form--fixed>div:not(.form-row){grid-column:2;grid-row:1}
}
@media (max-width:760px){.al-form .btn{width:100%}}

/* The offer on another page: what alerts are on the left, the form on the right, in a white panel ruled in cobalt. */
.al-offer{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:1.5rem 3rem;align-items:start;margin-top:2.5rem;padding:2rem 2.1rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand),0 18px 40px -30px rgba(11,27,46,.3)}
p.al-offer-k{max-width:none;margin:0;font:600 .76rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.al-offer-h{margin:.6rem 0 0;font:620 1.4rem/1.2 var(--sans);font-stretch:106%;letter-spacing:-.015em;color:var(--text)}
h2.al-offer-h{font-size:clamp(1.55rem,2.4vw,2rem);line-height:1.12}
.al-offer-p{max-width:40em;margin:.75rem 0 0;font-size:.97rem;line-height:1.58;color:var(--text-2)}
.al-offer-more{margin:.9rem 0 0;font-size:.95rem}
.al-offer-more a{font-weight:600;color:var(--brand);text-decoration:none}
.al-offer-more a::after{content:"\00a0\2192"}
.al-offer-more a:hover{text-decoration:underline}
/* A result's: the line wide, then the one-line form under it. */
.al-offer--result{grid-template-columns:minmax(0,1fr);gap:1.25rem}
.al-offer--result .al-offer-p{max-width:52em}
.al-offer--result .al-offer-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:2rem;align-items:end}
.al-offer--result .al-offer-copy>*{grid-column:1}
.al-offer--result .al-offer-more{grid-column:2;grid-row:1/span 3;margin:0;white-space:nowrap}
@media (max-width:900px){
  .al-offer{grid-template-columns:minmax(0,1fr);gap:1.25rem;padding:1.5rem 1.35rem}
  .al-offer--result .al-offer-copy{display:block}
  .al-offer--result .al-offer-more{margin:.9rem 0 0;white-space:normal}
}
/* On /cyber/check it sits straight under the hero, before the grey band. */
.al-band{padding:0 0 4.5rem}
.al-band .al-offer{margin-top:0}
@media (max-width:900px){.al-band{padding-bottom:3.5rem}}

/* /cyber/alerts: the sign-up as a navy panel beside the hero. */
.al-hero .h1{font-size:clamp(2.2rem,3.9vw,3.3rem);line-height:1.05}
.al-hero .lede{max-width:34em;margin:1.4rem 0 0}
.al-hero .cy-assure{margin-top:1.4rem;padding-top:0;border-top:0}
.al-panel{padding:2rem 2rem 1.6rem;border:1px solid #1E3450;border-radius:16px;box-shadow:0 1px 2px rgba(11,27,46,.08),0 32px 64px -30px rgba(11,27,46,.55)}
.al-panel .h2{margin:.4rem 0 0;font-size:clamp(1.5rem,2.2vw,1.85rem);line-height:1.15}
p.al-panel-line{max-width:none;margin:.65rem 0 1.4rem;font-size:.98rem;line-height:1.55;color:var(--text-2)}
.al-panel .btn{width:100%}
.al-panel .form-row--2{grid-template-columns:minmax(0,1fr)}
@media (max-width:480px){.al-panel{padding:1.5rem 1.25rem 1.25rem}}

/* What counts as a change: five plain lines with their icons, beside a sample alert. */
.al-two{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:2.5rem 4rem;align-items:start}
.al-two .sec-head{margin-bottom:2rem}
@media (max-width:1000px){.al-two{grid-template-columns:minmax(0,1fr)}.al-two .cy-exhibit{max-width:36rem}}
.al-changes{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.al-changes li{display:flex;align-items:flex-start;gap:.95rem;padding:1rem 0;border-bottom:1px solid var(--line);font-size:.98rem;line-height:1.5;color:var(--text-2)}
.al-changes b{display:block;margin-bottom:.1rem;font-weight:600;color:var(--text)}
.al-changes .ico-chip{flex:none;width:38px;height:38px;border-radius:10px}
.al-changes .ico-chip .ico{width:19px;height:19px}
p.al-quiet{max-width:44em;margin:1.4rem 0 0;font-size:.93rem;line-height:1.55;color:var(--text-3)}

/* Free alerts beside AI Secure Care: two columns, plain words, a tick where Care does more. */
.al-compare .compare{table-layout:fixed}
.al-compare .compare thead td{width:30%}
.al-yes{display:inline-flex;align-items:flex-start;gap:.45rem}
.al-yes .ico{flex:none;width:18px;height:18px;margin-top:.15rem;color:var(--pass);stroke-width:2.2}
.al-no{color:var(--text-3)}
.al-cmp-price{font:640 1.15rem/1 var(--sans);font-stretch:106%;letter-spacing:-.01em;color:var(--text)}

/* The pages the links open: the result of the first check on the left, what happens next on the right. */
.al-on .lede{max-width:38em}
p.al-next{display:flex;align-items:center;gap:.5rem;max-width:none;margin:1.25rem 0 0;font-size:.95rem;color:var(--text-2)}
.al-next .ico{width:18px;height:18px;color:var(--brand)}
.al-read{max-width:36rem;margin-top:2rem}
.al-sent .btns{margin-top:1.75rem}
.al-note{max-width:44em}
.al-care{border-top:1px solid var(--line)}
.al-found .hr-proofs{margin:0}
.al-found .al-note{margin-top:2rem}
.al-fix{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:1.5rem 3rem;align-items:center;margin-top:3rem;padding:2rem 2.1rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--signal)}
.al-fix .lede{margin:.8rem 0 0;font-size:1.05rem}
.al-fix-go{display:grid;justify-items:start;gap:.9rem}
.al-fix-go .talk{margin:0;font-size:.9rem}
@media (max-width:900px){.al-fix{grid-template-columns:minmax(0,1fr);padding:1.5rem 1.35rem}.al-fix-go .btn{width:100%}}
/* ===== B13 alerts END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B14 currency START ===== */
/* ===== B14 currency END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B15 supplier START ===== */
/* Supplier Check (server/sitepages-supplier.ts, 25 Oct 2026): the upload in the hero beside an illustration of a result, the
   four findings and the sentence the product is for, the plans and the fixes, councils and public bodies; and the line the home
   page's Cyber Security card carries for it. Page-only rules, every class prefixed sc-; the shared components are v5's. Amber
   only on a finding, cobalt for what you can click, navy for the product. One load sequence: the illustration's rows. */

/* The hero: the question and the upload on the left, one over the other; the illustration on the right, centred beside both. */
.sc-hero .container{align-items:start;row-gap:2.25rem}
.sc-hero-head{grid-column:1;grid-row:1}
.sc-hero .lede{max-width:36em;margin:1.4rem 0 0}
.sc-upload{grid-column:1;grid-row:2;padding:1.6rem 1.6rem 1.45rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 18px 40px -28px rgba(11,27,46,.3)}
.sc-hero .sc-exhibit{grid-column:2;grid-row:1/span 2;align-self:center}
@media (max-width:1000px){.sc-hero-head,.sc-upload,.sc-hero .sc-exhibit{grid-column:1;grid-row:auto}}
.sc-form{gap:1rem}
.sc-list{display:grid;gap:.85rem;min-width:0;margin:0;padding:0;border:0}
.sc-list legend{margin:0 0 .3rem;padding:0;font:600 1.02rem/1.3 var(--sans);color:var(--text)}
p.sc-hint{max-width:none;margin:0;font-size:.9rem;line-height:1.45;color:var(--text-3)}
.sc-file input[type=file]{padding:.55rem .6rem;border-style:dashed;background:var(--panel-2);font-size:.92rem;color:var(--text-2);cursor:pointer}
.sc-file input[type=file]::file-selector-button{margin-right:.85rem;padding:.6rem .9rem;border:1px solid var(--line-2);border-radius:var(--r);background:var(--panel);font:600 .88rem/1 var(--sans);color:var(--text);cursor:pointer}
.sc-file input[type=file]:hover::file-selector-button{border-color:var(--text)}
.sc-paste textarea{min-height:5.6rem}
p.sc-status{max-width:none;margin:.1rem 0 0;font-size:.86rem;line-height:1.45;color:var(--text-2)}
p.sc-status:empty{display:none}
.sc-form .btn{width:100%}
@media (min-width:601px){.sc-form .btn{width:auto}}
@media (max-width:480px){.sc-upload{padding:1.25rem 1.1rem 1.15rem}}
@media (max-width:360px){.sc-file input[type=file]{font-size:.84rem}.sc-file input[type=file]::file-selector-button{margin-right:.55rem;padding:.55rem .7rem}}

/* The illustration: a result as the buyer sees it, one supplier a row, its finding as a flag, the sentence under them. */
.sc-exhibit{min-width:0;margin:0}
.sc-exhibit .caption{margin:.9rem 0 0}
.sc-exhibit .frame-body{padding:1.15rem 1.3rem 1.3rem}
@media (max-width:1000px){.sc-exhibit{max-width:38rem}}
.sc-ex-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.3rem 1rem;padding-bottom:.9rem;border-bottom:1px solid var(--line)}
.sc-ex-head p{max-width:none;margin:0}
.sc-ex-title{font:600 1.05rem/1.3 var(--sans);font-stretch:106%;letter-spacing:-.01em;color:var(--text)}
.sc-ex-when{font:400 .74rem/1.5 var(--mono);color:var(--text-3)}
.sc-rows{list-style:none;margin:0;padding:0}
.sc-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.3rem 1rem;align-items:center;padding:.95rem 0;border-bottom:1px solid var(--line);animation:sc-row-in .5s ease both}
.sc-row:nth-child(2){animation-delay:.12s}
.sc-row:nth-child(3){animation-delay:.24s}
.sc-row:nth-child(4){animation-delay:.36s}
.sc-who{grid-column:1;grid-row:1;font:600 .98rem/1.3 var(--sans);color:var(--text)}
.sc-row .flag{grid-column:2;grid-row:1}
.sc-what{grid-column:1/-1;font-size:.92rem;line-height:1.45;color:var(--text-2)}
.sc-where{grid-column:1/-1;font:400 .76rem/1.4 var(--mono);color:var(--text-3)}
.sc-ex-foot{display:flex;align-items:flex-start;gap:.6rem;max-width:none;margin:1.05rem 0 0;font-size:.92rem;line-height:1.45;color:var(--text)}
.sc-ex-foot .ico{width:18px;height:18px;margin-top:.1rem;color:var(--live)}
@keyframes sc-row-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.sc-row{animation:none}}

/* What we check: four cards, two across; then the sentence the product is for, on navy; then one quiet line. */
.sc-checks .card-h{font-size:1.2rem}
.sc-ring{display:flex;align-items:flex-start;gap:1.1rem;margin-top:1.75rem;padding:1.6rem 1.75rem;border:1px solid #1E3450;border-radius:var(--r-lg)}
p.sc-ring-h{max-width:none;margin:0;font:620 clamp(1.15rem,1.9vw,1.45rem)/1.3 var(--sans);font-stretch:106%;letter-spacing:-.015em;color:var(--text)}
p.sc-ring-p{max-width:46em;margin:.5rem 0 0;font-size:.97rem;line-height:1.55;color:var(--text-2)}
p.sc-also{max-width:52em;margin:1.5rem 0 0;font-size:.95rem;line-height:1.55;color:var(--text-3)}
@media (max-width:600px){.sc-ring{flex-direction:column;gap:.9rem;padding:1.35rem 1.25rem}}

/* How it works: the note under the steps. */
.sc-match{margin-top:2.75rem}

/* The plans: three cards, then the free check and every plan side by side in one panel under them; then the fixes a supplier can buy. */
.sc-plan .card-price{margin-top:1rem}
.sc-includes{margin-top:1.25rem;padding:1.6rem 1.75rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.sc-sides{display:grid;grid-template-columns:minmax(0,1fr);gap:1.75rem}
@media (min-width:761px){.sc-sides{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:0}.sc-side--plan{padding-left:2.5rem;border-left:1px solid var(--line)}.sc-side:not(.sc-side--plan){padding-right:2.5rem}}
.sc-label{max-width:none;margin:0 0 .4rem;font:600 .76rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.sc-side--plan .sc-label{color:var(--brand)}
.sc-side-h{margin:0 0 1rem;font:600 1.2rem/1.25 var(--sans);font-stretch:106%;letter-spacing:-.015em;color:var(--text)}
.sc-includes .checks{gap:.65rem}
.sc-includes .checks li{font-size:.95rem;line-height:1.45}
.sc-inc-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line)}
p.sc-which{flex:1 1 20rem;max-width:none;margin:0;font-size:.93rem;line-height:1.5;color:var(--text-2);text-wrap:pretty}
@media (max-width:600px){.sc-inc-foot .btn{width:100%}}
.sc-fixes{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1rem 2.5rem;align-items:start;margin-top:3rem;padding-top:2.25rem;border-top:1px solid var(--line-2)}
.sc-fixes-head p{max-width:30em;margin:.5rem 0 0;font-size:.95rem;line-height:1.55;color:var(--text-2)}
.sc-fix-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.sc-fix-list li{display:grid;grid-template-columns:minmax(0,11.5rem) minmax(0,1fr) auto;gap:.3rem 1.25rem;align-items:baseline;padding:.9rem 0;border-bottom:1px solid var(--line)}
.sc-fix-name{font-weight:600;color:var(--text)}
.sc-fix-name a{color:var(--brand);text-decoration:none}
.sc-fix-name a:hover{text-decoration:underline}
.sc-fix-what{font-size:.93rem;line-height:1.45;color:var(--text-2)}
.sc-fix-price{font:640 1.15rem/1 var(--sans);font-stretch:106%;color:var(--text);white-space:nowrap}
.sc-fix-price small{margin-left:.3rem;font:500 .78rem/1 var(--sans);color:var(--text-3)}
@media (max-width:900px){.sc-fixes{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.sc-fix-list li{grid-template-columns:minmax(0,1fr) auto}.sc-fix-what{grid-column:1/-1;grid-row:2}}

/* Councils and public bodies: the heading on the left, the hand-off to Supplier Watch on the right (its pieces are in B24). */
.sc-public{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:2.5rem 4rem;align-items:center}
.sc-public .lede{margin:1rem 0 0}
p.sc-try{max-width:none;margin:1.75rem 0 0;font-size:.95rem;color:var(--text-2)}
.sc-try a{font-weight:600;color:var(--brand);text-decoration:none;white-space:nowrap}
.sc-try a::after{content:"\00a0\2192"}
@media (max-width:900px){.sc-public{grid-template-columns:minmax(0,1fr)}}
/* ===== B15 supplier END ===== */
/* ===== B16 supplier results START ===== */
/* Supplier Check's token pages (server/supcheck/pages.ts): the buyer's results, the fix-it link to copy, the supplier's
   fix-it page, the stop page. Page-only rules, every class sr-; the counts frame is the kit's .frame, the proof is the kit's
   .record, the plans are kit .cards. Amber only on a finding; no animation. */

/* The hero: the words on the left, the counts in a navy frame on the right. */
.sr-hero .container{align-items:center}
.sr-hero .lede{margin:1.4rem 0 1.5rem}
.sr-fix-hero .container{align-items:start}
/* an Australian firm's fix-it page is a plain page, and keeps the fix-it page's two columns */
.plain .sr-fix-hero .container{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:4rem}
@media (max-width:1000px){.plain .sr-fix-hero .container{grid-template-columns:minmax(0,1fr);gap:2.25rem}}
.sr-hero .note,.sr-problem{max-width:36rem;margin:0 0 1.25rem}
.sr-frame{min-width:0}
.sr-counts{margin:0}
.sr-count{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.2rem 1rem;align-items:baseline;padding:.9rem 0;border-top:1px solid var(--line)}
.sr-count:first-child{padding-top:.15rem;border-top:0}
.sr-count dt{font:500 .93rem/1.35 var(--sans);color:var(--text-2)}
.sr-count dd{display:contents}
.sr-count dd b{grid-column:2;grid-row:1;font:640 1.85rem/1 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;text-align:right;color:var(--text)}
.sr-count dd small{grid-column:1/-1;font-size:.8rem;line-height:1.45;color:var(--text-3)}
.sr-count--fx dd b{color:var(--signal-text)}
.sr-frame-when{max-width:none;margin:.75rem 0 0;padding-top:.8rem;border-top:1px solid var(--line);font:400 .74rem/1.55 var(--mono);color:var(--text-3)}

/* While we read: the bar, "Refresh" for a browser with no script, and where the link lives. */
.sr-progress{display:block;width:100%;max-width:34rem;height:.6rem;margin:0;border:0;border-radius:99px;background:var(--line);color:var(--brand);overflow:hidden;-webkit-appearance:none;appearance:none}
.sr-progress::-webkit-progress-bar{background:var(--line);border-radius:99px}
.sr-progress::-webkit-progress-value{background:var(--brand);border-radius:99px}
.sr-progress::-moz-progress-bar{background:var(--brand);border-radius:99px}
.sr-refresh{margin:.9rem 0 0;font-size:.95rem;color:var(--text-2)}
.sr-refresh a{font-weight:600;color:var(--brand)}
.sr-hero .sr-keep{margin:1.75rem 0 0}
.sr-reads-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 2.5rem}
.sr-reads-list li{display:flex;align-items:flex-start;gap:.8rem;font-size:.98rem;line-height:1.5;color:var(--text-2)}
.sr-reads-list .flag{min-width:6.5rem;justify-content:center}

/* A supplier as a card: its name, what was paid, its address, its chips, each finding with its proof, the ring line. */
.sr-band .sec-head{margin-bottom:2.25rem}
.sr-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;align-items:start}
.sr-rows>:only-child{grid-column:1/-1;max-width:48rem}
.sr-row{display:flex;flex-direction:column;gap:.8rem;min-width:0;padding:1.5rem 1.6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.sr-row--urgent{box-shadow:inset 0 3px 0 var(--signal)}
.sr-row p{max-width:none;margin:0}
.sr-row-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem}
.sr-name{font:600 1.15rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.01em;overflow-wrap:anywhere}
.sr-paid{font:500 .82rem/1.3 var(--mono);color:var(--text-3)}
.sr-addr{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .65rem}
.sr-domain{font:500 .88rem/1.4 var(--mono);color:var(--text);overflow-wrap:anywhere}
.sr-how{font-size:.86rem;color:var(--text-3)}
.sr-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.sr-find{display:grid;gap:.6rem}
.sr-row .sr-find>p,.sr-find-h{font-size:.97rem;line-height:1.55;color:var(--text)}
:is(.sr-proof,.sr-records .record) .lbl{flex-wrap:wrap;gap:.2rem 1rem}
:is(.sr-proof,.sr-records .record) .lbl span:first-child{white-space:normal;overflow-wrap:anywhere}
:is(.sr-proof,.sr-records .record) .out{overflow-wrap:anywhere}
.sr-also{font-size:.9rem;line-height:1.5;color:var(--text-2)}
.sr-also a{font-weight:600;color:var(--brand)}
.sr-also code{font-family:var(--mono);font-size:.9em}
.sr-ring{display:flex;align-items:flex-start;gap:.55rem;padding:.7rem .85rem;border-radius:var(--r);background:var(--signal-wash);font-size:.9rem;line-height:1.45;color:var(--text)}
.sr-ring .ico{flex:none;width:18px;height:18px;margin-top:.1rem;color:var(--signal-text)}
.sr-mint{margin:.2rem 0 0}

/* The plans: what a watch gives, then the four plans, the one that fits the list ruled in cobalt. */
p.sr-plan-why{max-width:none;margin:0 0 1.25rem;font:620 clamp(1.1rem,1.7vw,1.3rem)/1.35 var(--sans);font-stretch:106%;letter-spacing:-.012em;color:var(--text)}
.sr-plan-gets{grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:.65rem 1.5rem;margin:0 0 2.25rem}
.sr-plans{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem}
.sr-plan .card-h{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.sr-plan .card-p{margin-top:.75rem}
.sr-plan-go{width:100%;margin:auto 0 0;padding-top:1.4rem}
.sr-plan-go .btn{width:100%}
.sr-plan-note{margin:.75rem 0 0;font-size:.86rem;line-height:1.45;color:var(--text-3)}
.sr-plan>.sr-plan-note:last-child{margin-top:auto;padding-top:1.4rem}
.sr-plan-terms{margin:1.5rem 0 0;font-size:.88rem;color:var(--text-3)}
@media (max-width:1100px){.sr-plans{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* On a watch: every supplier in a table (cards on a phone), what each chip means, the download, the watch. */
.sr-table th,.sr-table td{white-space:normal;vertical-align:top}
.sr-table td{font-size:.93rem}
.sr-table td small{display:block;margin-top:.25rem;font-size:.8rem;color:var(--text-3)}
.sr-t-name{font-weight:600;color:var(--text);overflow-wrap:anywhere}
.sr-table tr.is-urgent td:first-child{box-shadow:inset 3px 0 0 var(--signal)}
.sr-table .btn{padding:.6rem .8rem;font-size:.84rem}
.sr-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 2.5rem;margin:2rem 0 0}
.sr-legend>div{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem}
.sr-legend dd{margin:0;font-size:.9rem;line-height:1.5;color:var(--text-2)}
.sr-csv{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;max-width:none;margin:2rem 0 0;font-size:.92rem;color:var(--text-3)}
.sr-more{font-size:.9rem;color:var(--text-3)}
.sr-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.sr-list li{padding:1rem 0;border-bottom:1px solid var(--line);font-size:.98rem;line-height:1.55;color:var(--text-2)}
.sr-list b{font-weight:600;color:var(--text)}
.sr-list a{font-weight:600;color:var(--brand)}
.sr-watch li{display:flex;align-items:flex-start;gap:.8rem}
.sr-watch .ico{flex:none;width:20px;height:20px;margin-top:.15rem;color:var(--brand)}
.sr-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem 4rem}
.sr-two .sec-head{margin-bottom:1.5rem}
.sr-why{max-width:40em;color:var(--text-2)}

/* The fix-it link a press just made, to copy: the field and its button on one line (the button shows only with the script),
   the note under it, what the supplier sees beside them. */
.sr-fixlink{border-bottom:1px solid var(--line);box-shadow:inset 0 3px 0 var(--brand)}
.sr-fixlink-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:2rem 4rem;align-items:start}
.sr-fixlink .sec-head{margin-bottom:0}
.sr-sees{padding:1.5rem 1.6rem;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r-lg)}
.sr-sees-k{max-width:none;margin:0 0 1rem;font:600 .76rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.sr-sees .checks{gap:.8rem}
.sr-sees .checks li{font-size:.95rem;line-height:1.5}
.sr-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.6rem;align-items:end;max-width:40rem;margin-top:1.75rem}
.sr-copy input{font:400 .88rem/1.3 var(--mono)}
.sr-copy textarea{min-height:15.5rem;font-size:.93rem;line-height:1.55}
.sr-copy--note{grid-template-columns:minmax(0,1fr)}
.sr-copy--note .btn{justify-self:start}
.sr-copy .btn[hidden]{display:none}

/* The supplier's page: the findings beside the hero, then the free steps, then the fixes we sell. */
.sr-found{display:grid;gap:1rem;min-width:0}
.sr-find-h{font-weight:600}
.sr-frees{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;align-items:start}
.sr-frees>:only-child{grid-column:1/-1;max-width:48rem}
.sr-free{padding:1.6rem 1.7rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.sr-free .h3{margin:0 0 1rem}
.sr-steps{display:grid;gap:.7rem;margin:0;padding-left:1.25rem;font-size:.97rem;line-height:1.55;color:var(--text-2)}
.sr-steps code{padding:.05rem .3rem;border-radius:4px;background:var(--bg-2);font:400 .86em/1.4 var(--mono);color:var(--text);overflow-wrap:anywhere}
.sr-records{display:grid;gap:.6rem;margin-top:1.25rem}
.sr-records .out{font-size:.9rem;color:var(--ps-cmd)}
.sr-free .sr-also{margin:1rem 0 0}
.sr-fix-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:2rem 4rem;align-items:start}
.sr-fix-grid .sec-head{margin-bottom:0}
.sr-fixes{display:grid;gap:1.25rem}
.sr-fix .btns,.sr-buy{margin:auto 0 0;padding-top:1.4rem}
.sr-band .talk{margin-top:1.75rem}

/* A finding read more than a day ago (said with its day), the warning beside a fix-it link, a fix paid for, a watch still
   reading the rest of its list. */
.sr-also.sr-stale,.sr-row .sr-find>p.sr-stale{font-size:.9rem;color:var(--text-3)}
.sr-fixlink .sr-notthere{max-width:40rem;margin:1.5rem 0 0}
.sr-wait-late[hidden]{display:none}
.sr-fix-paid{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .7rem;margin:auto 0 0;padding-top:1.4rem;font-size:.9rem;line-height:1.45;color:var(--text-2)}
.sr-hero .sr-reading{max-width:36rem;margin:0 0 .9rem;font-size:.97rem;line-height:1.5;color:var(--text-2)}
.sr-reading b{font-weight:600;color:var(--text)}
.sr-hero--paid .sr-refresh{margin:.6rem 0 1.4rem}

@media (max-width:900px){.sr-rows,.sr-frees,.sr-two,.sr-reads-list,.sr-fix-grid,.sr-fixlink-grid{grid-template-columns:minmax(0,1fr)}.sr-rows>:only-child,.sr-frees>:only-child{max-width:none}}
@media (max-width:760px){
  .sr-legend{grid-template-columns:minmax(0,1fr)}
  .sr-table-wrap{overflow:visible;border:0;background:transparent}
  .sr-table,.sr-table tbody,.sr-table tr,.sr-table td{display:block}
  .sr-table thead{display:none}
  .sr-table tbody tr{margin:0 0 .75rem;padding:.9rem 1rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel)}
  .sr-table td{padding:.3rem 0;border:0}
  .sr-table td:empty{display:none}
  .sr-table tr.is-urgent{box-shadow:inset 0 3px 0 var(--signal)}
  .sr-table tr.is-urgent td:first-child{box-shadow:none}
}
@media (max-width:600px){
  .sr-plans{grid-template-columns:minmax(0,1fr)}
  .sr-row,.sr-free{padding:1.25rem 1.2rem}
  .sr-copy{grid-template-columns:minmax(0,1fr)}
  .sr-copy .btn{width:100%}
}
/* ===== B16 supplier results END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B17 chrome START ===== */
/* The chrome (the authority pass, 29 Oct 2026, ops/SITE-AUTHORITY-CONTRACT.md §4.8, builder A): the footer's lockup, the five
   menus' panels, the grouped menu under 1100px and the footer, over v5's header and footer rules. */

/* ── The lockup, in the footer only: the descriptor under the name in two lines at the name's width, ice on the navy. The
   header, a page somebody was sent and the sign-in door carry the mark and the name alone (Rudi, 29 Oct 2026) ── */
.footer .wordmark .wm-words{display:grid;gap:.36rem;justify-items:start}
.footer .wordmark .wm-desc{display:block;margin-right:-.13em;font:600 .625rem/1.25 var(--sans);letter-spacing:.13em;text-transform:uppercase;color:#9DB1CE}
.footer .wordmark .wm-desc>span{display:block;white-space:nowrap}
@media (max-width:480px){.footer .wordmark .wm-desc{font-size:.6rem}}

/* ── The panels: Cyber Security's wide, its groups in two columns and its flagship on top; Company's rows in two columns;
   the two menus at the right of the bar open from their right edge ── */
.nav-panel{width:26rem}
.nav-panel.np--wide{width:40rem}
.nav-panel.np--two{width:34rem}
.nav-panel.np--end{left:auto;right:-1.1rem}
.np-head>span:last-child{text-wrap:balance}
.np-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 .75rem}
.np-label{max-width:none;margin:.8rem .7rem .3rem;font:600 .7rem/1.3 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.np-group--feat .np-row{padding:.8rem calc(.7rem - 1px);border:1px solid var(--line);background:var(--panel-2)}
.np-group--feat .np-row:hover,.np-group--feat .np-row:focus-visible{border-color:var(--line-2);background:var(--bg-2)}
.np-group--feat .np-rows{display:grid;gap:.4rem}
.np--two .np-rows{display:block;columns:2;column-gap:.5rem}
.np--two .np-rows>li{break-inside:avoid}
.np-also{max-width:none;margin:0;padding:.15rem .7rem .55rem;font-size:.84rem;line-height:1.4;color:var(--text-3)}
.np-also a{color:var(--text-2);font-weight:500;text-decoration:none}
.np-also a:hover{color:var(--text);text-decoration:underline}

/* ── Under 1100px: the menus' groups flow down two columns, the growth services' heading quieter, as it is not a link ── */
@media (max-width:1099px){
  .nm-groups{display:block;columns:2;column-gap:2.5rem}
  .nm-group{break-inside:avoid}
  .nm-group--quiet .nm-head{max-width:none;margin:0;color:var(--text-3)}
}
@media (max-width:640px){.nm-groups{columns:1}}

/* ── The footer on a phone: the last column, alone in its row, runs across both with its rows in two columns ── */
@media (max-width:760px){
  .footer .cols>div:last-child:nth-child(odd){grid-column:1/-1}
  .footer .cols>div:last-child:nth-child(odd) ul{display:block;columns:2;column-gap:1.5rem}
  .footer .cols>div:last-child:nth-child(odd) li{break-inside:avoid;margin-bottom:.62rem}
}

/* ── On paper the footer's descriptor is slate, as the navy under it is not printed ── */
@media print{.footer .wordmark .wm-desc{color:#5C6D84}}
/* ===== B17 chrome END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B18 home+about START ===== */
/* The authority pass (29 Oct 2026, ops/SITE-AUTHORITY-CONTRACT.md §4.1 to §4.3, builder B): the front page at organisation scale,
   /about's two practices and /contact's "What we do". Page-only rules over the v5 components; where B1's hero must change (the
   findings panel holds each finding on one line), it is overridden here. Nothing here animates. */

/* ── / the hero: the panel wide enough for each finding on one line at desktop width, the heading's first line whole ── */
@media (min-width:1248px){.home-hero .container{grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);gap:3rem}}
@media (min-width:1100px) and (max-width:1247px){.home-hero .container{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:3rem}}
@media (max-width:1099px){.home-hero{padding:4.5rem 0 5rem}.home-hero .container{grid-template-columns:minmax(0,1fr);gap:3rem}.home-intel{max-width:40rem}.home-sky::before{right:-4rem;top:40%}}
@media (min-width:601px){
  .home-intel .intel-row{grid-template-columns:1.75rem minmax(0,1fr) auto;column-gap:.75rem;padding-left:1.1rem;padding-right:1.1rem}
  .home-intel .intel-ico{width:1.75rem;height:1.75rem;border-radius:8px}
  .home-intel .intel-ico .ico{width:15px;height:15px}
  .home-intel .intel-what{font-size:.9rem;line-height:1.45}
  /* The proof hangs below the panel's corner, over its foot, so no finding's source or date is hidden behind it. */
  .home-proofcard{bottom:2rem}
  .home-intel figcaption{margin-top:7rem}
}

/* ── / the trust strip: the last two lines are the way to where a buyer checks them, their titles underlined as links ── */
.hm-trust li>a{display:block;color:var(--text-2);text-decoration:none}
.hm-trust li>a b{text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--line-2);text-underline-offset:.24em;transition:color .15s ease,text-decoration-color .15s ease}
.hm-trust li>a:hover b{color:var(--brand);text-decoration-color:var(--brand)}
/* Two by two before any title wraps (at a laptop's 1100 to 1180 the fourth broke onto two lines); one column on a phone, as before. */
@media (min-width:521px) and (max-width:1180px){.hm-trust ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem 2rem}}

/* ── / what we do: two practices, Cyber Security the wider, their services by name under the labels of their menus ── */
.hm-prac-grid{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(0,1fr);gap:1.25rem}
.hm-prac{padding:2.25rem 2.25rem 2rem}
.hm-prac:hover{transform:none}
.hm-prac .card-h{font-size:clamp(1.45rem,2.1vw,1.75rem);line-height:1.15}
.hm-prac .card-p{max-width:34em;margin-top:.75rem;font-size:1rem}
.hm-prac-groups{display:grid;grid-template-columns:minmax(0,1fr);gap:1.4rem 2.5rem;align-content:start;width:100%;margin:1.75rem 0 0;padding-top:1.6rem;border-top:1px solid var(--line)}
.hm-prac--cyber .hm-prac-groups{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"org web" "free web"}
.hm-prac--cyber .hm-prac-group:nth-child(1){grid-area:org}
.hm-prac--cyber .hm-prac-group:nth-child(2){grid-area:web}
.hm-prac--cyber .hm-prac-group:nth-child(3){grid-area:free}
.hm-prac-k{max-width:none;margin:0 0 .55rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.hm-prac-group ul{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}
.hm-prac-group a{display:inline-block;padding:.28rem 0;font:500 1rem/1.4 var(--sans);color:var(--text);text-decoration:none}
.hm-prac-group a:hover{color:var(--brand);text-decoration:underline;text-decoration-color:var(--brand)}
.hm-prac-rows{gap:0}
.hm-prac-rows li+li{border-top:1px solid var(--line)}
.hm-prac-group .hm-prac-rows a{display:grid;gap:.15rem;padding:.8rem 0}
.hm-prac-rows li:first-child a{padding-top:0}
.hm-prac-rows b{font-weight:600;color:var(--text)}
.hm-prac-rows span{font-size:.9rem;line-height:1.4;color:var(--text-3)}
.hm-prac-group .hm-prac-rows a:hover{text-decoration:none}
.hm-prac-rows a:hover b{color:var(--brand)}
@media (max-width:1000px){.hm-prac-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.hm-prac{padding:1.75rem 1.4rem}.hm-prac--cyber .hm-prac-groups{grid-template-columns:minmax(0,1fr);grid-template-areas:"org" "web" "free"}}

/* ── / our research: the deepest navy on the page; the figures large and tabular, their captions small ── */
.hm-research{background:var(--bg-2)}
.hm-research .sec-head{margin-bottom:3.25rem}
.hm-figs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line-2)}
.hm-fig{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:2rem 2.25rem 0;border-left:1px solid var(--line)}
.hm-fig:first-child{padding-left:0;border-left:0}
.hm-fig-where{max-width:none;margin:0 0 1rem;font:600 .74rem/1.3 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}
.hm-fig-n{font:640 clamp(3rem,5vw,4.4rem)/1 var(--sans);font-stretch:108%;letter-spacing:-.035em;font-variant-numeric:tabular-nums;color:var(--text)}
.hm-fig-k{max-width:17em;margin-top:.85rem;font-size:1rem;line-height:1.45;color:var(--text);text-wrap:balance}
.hm-fig-share{margin-top:.6rem;font:600 .92rem/1.4 var(--sans);font-variant-numeric:tabular-nums;color:#BFD3FF}
.hm-fig-when{margin-top:.3rem;font:400 .76rem/1.5 var(--mono);color:var(--text-3)}
.hm-research-go{max-width:none;margin:3rem 0 0}
.hm-research .sec-head+.hm-research-go{margin-top:0}
.hm-research-go a{display:inline-flex;align-items:center;gap:.45rem;font:600 1rem/1.2 var(--sans);color:var(--live);text-decoration:none}
.hm-research-go .ico{width:18px;height:18px;transition:transform .2s ease}
.hm-research-go a:hover .ico{transform:translateX(3px)}
@media (max-width:900px){
  .hm-figs{grid-template-columns:minmax(0,1fr)}
  .hm-fig{padding:1.75rem 0;border-left:0;border-bottom:1px solid var(--line)}
  .hm-research-go{margin-top:2rem}
}

/* ── / the rule, and its three steps under it ── */
.hm-steps{list-style:none;margin:3.5rem 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem 3rem}
.hm-steps li{padding-top:1.25rem;border-top:1px solid var(--line-2)}
.hm-steps .hm-step-n{max-width:none;margin:0 0 .75rem;font:500 .76rem/1 var(--mono);color:var(--brand)}
.hm-steps h3{margin:0 0 .45rem}
.hm-steps p:last-child{max-width:24em;margin:0;font-size:.97rem;line-height:1.55;color:var(--text-2)}
@media (max-width:760px){.hm-steps{grid-template-columns:minmax(0,1fr);gap:1.5rem;margin-top:2.5rem}}

/* ── / who we serve: four cards, each the way to its page; two by two until there is room for four ── */
.hm-aud .card-h{font-size:1.2rem}
.hm-aud .card-p{font-size:.96rem}
@media (min-width:761px) and (max-width:1239px){.hm-who-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ── / the growth services: one quiet row on white between the two grey bands, never a band of cards ── */
.hm-growth{padding:2.6rem 0;background:var(--bg)}
.hm-growth-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.25rem 3rem;align-items:center}
.hm-growth-h{margin:0;font:600 1.05rem/1.3 var(--sans);font-stretch:104%;letter-spacing:-.005em;color:var(--text)}
.hm-growth-t p{max-width:46em;margin:.35rem 0 0;font-size:.97rem;line-height:1.55;color:var(--text-2)}
.hm-growth-go{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.hm-growth-go a{display:inline-flex;align-items:center;gap:.55rem;padding:.7rem .95rem;border:1px solid var(--line-2);border-radius:var(--r);background:var(--panel);font:600 .92rem/1.2 var(--sans);color:var(--text);text-decoration:none;transition:border-color .15s ease}
.hm-growth-go a:hover{border-color:var(--text)}
.hm-growth-go .ico{width:17px;height:17px;color:var(--text-3)}
.hm-growth-go a>.ico:last-child{width:15px;height:15px;color:var(--brand)}
@media (max-width:760px){.hm-growth-row{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.hm-growth-go{display:grid;grid-template-columns:minmax(0,1fr)}.hm-growth-go a{display:flex}.hm-growth-go a>.ico:last-child{margin-left:auto}}

/* ── /about: the two practices, then the growth services in one line under them ── */
.ab-growth{max-width:none;margin:1.5rem 0 0;font-size:.97rem;color:var(--text-2)}

/* ── /contact: an organisation's way to a briefing, then what we do: the two practices, the growth services under their own label ── */
.ct-brief{max-width:none;margin:2rem 0 0;padding-top:1.5rem;border-top:1px solid var(--line);font-size:.97rem;color:var(--text-2)}
.ct-brief a{font-weight:600;color:var(--brand);text-decoration-color:var(--brand)}
.ct-brief+.ct-depts{margin-top:1.25rem;padding-top:0;border-top:0}
.ct-depts-sub{max-width:none;margin:1.15rem 0 .6rem;font:600 .72rem/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ct-depts-growth a{padding:.6rem .85rem;font-weight:500;font-size:.92rem}

@media (prefers-reduced-motion:reduce){.hm-trust li>a b,.hm-research-go .ico,.hm-growth-go a{transition:none}}
/* ===== B18 home+about END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B19 authority pages START ===== */
/* The authority pass's three pages (29 Oct 2026, server/sitepages-authority.ts, builder C): /briefing, /for/government-suppliers
   and /for/small-businesses. The v5 kit does the heavy lifting (cards, rows, frames, flags, the closing band); these are the
   pieces only these pages have, each under .ap-. */

/* ── The openings: the copy on the left, the form or the exhibit beside it; one column under 1000px (the kit's hero) ── */
.ap-hero .btns{margin-top:2.25rem}
@media (min-width:1001px){.ap-brief .container{grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);gap:4.5rem}}
@media (min-width:1001px){.ap-gov .ap-hero-copy{align-self:center;padding-bottom:1.75rem}}

/* ── /briefing: three steps down a hairline, the line they end on, the form, and the free way in under it ── */
.ap-steps{list-style:none;margin:2.6rem 0 0;padding:0}
.ap-step{position:relative;display:grid;grid-template-columns:2.6rem minmax(0,1fr);column-gap:1.15rem;padding-bottom:1.7rem}
.ap-step::before{content:"";position:absolute;left:calc(1.3rem - .5px);top:2.6rem;bottom:0;width:1px;background:var(--line-2)}
.ap-step:last-child{padding-bottom:0}
.ap-step:last-child::before{display:none}
.ap-step-n{grid-row:1/span 2;display:grid;place-items:center;width:2.6rem;height:2.6rem;border:1px solid var(--line-2);border-radius:50%;background:var(--bg);font:500 .78rem/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--brand)}
.ap-step-h{grid-column:2;margin:.52rem 0 .3rem;font:600 1.1rem/1.3 var(--sans);font-stretch:106%;letter-spacing:-.012em;color:var(--text)}
.ap-step p{grid-column:2;max-width:34em;margin:0;font-size:.98rem;line-height:1.58;color:var(--text-2)}
.ap-free{display:flex;align-items:center;gap:.6rem;max-width:none;margin:2.1rem 0 0;padding-top:1.35rem;border-top:1px solid var(--line);font:600 1.02rem/1.4 var(--sans);color:var(--text)}
.ap-free .ico{width:20px;height:20px;stroke-width:2;color:var(--pass)}
.ap-side{min-width:0}
.ap-form{padding:2rem;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand),0 1px 2px rgba(11,27,46,.04),0 28px 56px -32px rgba(11,27,46,.38)}
.ap-form .field textarea{min-height:8.5rem}
.ap-form .form-note{margin-top:.15rem;line-height:1.5}
.ap-alt{display:flex;align-items:flex-start;gap:.7rem;max-width:none;margin:1.3rem .15rem 0;font-size:.94rem;line-height:1.5;color:var(--text-2)}
.ap-alt .ico{width:20px;height:20px;margin-top:.08rem;color:var(--brand)}
.ap-alt a{font-weight:600;color:var(--text);text-decoration-color:var(--brand)}
@media (min-width:1001px) and (max-width:1279px){.ap-form .form-row--2{grid-template-columns:minmax(0,1fr)}}
@media (max-width:1000px){.ap-side{max-width:40rem}}
@media (max-width:600px){.ap-form{padding:1.4rem 1.2rem}.ap-steps{margin-top:2.1rem}}

/* ── How we work: four things, each the way to check it where there is one, on a grey strip under the opening ── */
.ap-proof{background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ap-proof ul{list-style:none;margin:0;padding:2.1rem 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.6rem 2.25rem}
.ap-proof li{display:grid;align-content:start;gap:.8rem;min-width:0}
.ap-proof .ico-chip{width:38px;height:38px;border-radius:10px}
.ap-proof .ico-chip .ico{width:19px;height:19px}
.ap-proof-t{display:grid;gap:.22rem;min-width:0;font-size:.92rem;line-height:1.45;color:var(--text-2)}
.ap-proof-t b{font-weight:600;color:var(--text)}
.ap-proof-t a{text-decoration-color:var(--line-2)}
.ap-proof-t a:hover{text-decoration-color:var(--brand)}
@media (max-width:1000px){.ap-proof ul{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.ap-proof ul{grid-template-columns:minmax(0,1fr);padding:1.75rem 0}.ap-proof li{display:flex;align-items:flex-start;gap:.85rem}}

/* ── /for/government-suppliers: one supplier as a check reads it, beside the opening ── */
.ap-exhibit{min-width:0;margin:0;align-self:center}
.ap-exhibit .frame-body{padding:0}
.ap-exhibit .caption{margin:.9rem 0 0}
.ap-ex-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.4rem 1rem;padding:1.15rem 1.3rem 1.05rem;border-bottom:1px solid var(--line)}
.ap-ex-head p{max-width:none;margin:0}
.ap-ex-who{display:grid;gap:.3rem;font:600 1.05rem/1.3 var(--sans);font-stretch:106%;letter-spacing:-.01em;color:var(--text)}
.ap-ex-who code{font:400 .76rem/1.4 var(--mono);letter-spacing:0;color:var(--text-3)}
.ap-ex-when{padding-top:.15rem;font:400 .74rem/1.5 var(--mono);color:var(--text-3)}
.ap-ex-rows{list-style:none;margin:0;padding:0}
.ap-ex-row{display:grid;grid-template-columns:1.25rem minmax(0,1fr) auto;gap:.32rem .75rem;align-items:center;padding:1rem 1.3rem;border-bottom:1px solid var(--line)}
.ap-ex-ico{display:flex;color:var(--text-3)}
.ap-ex-ico .ico{width:18px;height:18px}
.ap-ex-k{font:600 .7rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ap-ex-row .flag{justify-self:end}
.ap-ex-what{grid-column:2/-1;font-size:.95rem;line-height:1.45;color:var(--text)}
.ap-ex-src{grid-column:2/-1;font:400 .74rem/1.45 var(--mono);color:var(--text-3)}
.ap-ex-foot{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem .6rem;max-width:none;margin:0;padding:1rem 1.3rem 1.15rem}
.ap-ex-foot-k{flex-basis:100%;font:600 .7rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ap-ex-foot a{display:inline-flex;align-items:baseline;gap:.5rem;padding:.45rem .72rem;border:1px solid var(--line-2);border-radius:99px;font:500 .82rem/1 var(--sans);color:var(--text);text-decoration:none;transition:border-color .15s ease}
.ap-ex-foot a b{font-weight:640;font-variant-numeric:tabular-nums}
.ap-ex-foot a:hover{border-color:var(--live)}
@media (max-width:1000px){.ap-exhibit{max-width:38rem}}
@media (max-width:420px){.ap-ex-row{grid-template-columns:1.1rem minmax(0,1fr) auto;padding:.95rem 1.05rem}.ap-ex-head,.ap-ex-foot{padding-left:1.05rem;padding-right:1.05rem}.ap-ex-foot{gap:.5rem .45rem}.ap-ex-foot a{gap:.4rem;padding:.42rem .58rem;font-size:.78rem}}
@media (prefers-reduced-motion:reduce){.ap-ex-foot a{transition:none}}

/* ── What a check looks at, and how we read: a quiet line under the prices ── */
.ap-looks .card-h{font-size:1.25rem}
.ap-read{display:flex;align-items:center;gap:1rem;margin:2.75rem 0 0;padding:1.1rem 1.3rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel-2)}
.ap-read .ico-chip{width:38px;height:38px;border-radius:10px}
.ap-read .ico-chip .ico{width:19px;height:19px}
.ap-read p{max-width:none;margin:0;font-size:.95rem;line-height:1.55;color:var(--text-2)}
.ap-read b{font-weight:600;color:var(--text)}
.ap-read a{font-weight:600;color:var(--brand);white-space:nowrap}
@media (max-width:760px){.ap-read{align-items:flex-start;padding:1.1rem}}

/* ── /for/small-businesses: a service as a card, its icon and its pill on one line at the top ── */
.ap-svc-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;margin-bottom:1.3rem}
.ap-svc>.ico-chip{margin-bottom:0}
.ap-svc .card-h{font-size:1.2rem}
.ap-svcs .card-price{font-size:1.7rem}
@supports (grid-template-rows:subgrid){.ap-svcs .ap-svc{display:grid;grid-row:span 6;grid-template-rows:subgrid;row-gap:0;align-content:start}.ap-svcs .ap-svc>.card-h{align-self:end}}
@media (max-width:760px){.ap-svc{padding:1.4rem 1.35rem}.ap-svc-top{margin-bottom:1rem}.ap-svcs .card-price{margin-top:1rem;font-size:1.55rem}.ap-svc .card-go{padding-top:1.1rem}}
/* ===== B19 authority pages END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B20 hubs START ===== */
/* The hubs (the authority pass, 29 Oct 2026: ops/SITE-AUTHORITY-CONTRACT.md §4.7, builder D). /data's practice band, /cyber's
   organisations, /pricing in the practices' order with Supplier Check's ladder, and the growth services as a quieter group on
   /pricing, /promises, /guides and /press. Page-only rules on the v5 components; every class here starts hb-. */

/* /data: the practice under its promise, three cards with their prices and links level along the foot */
.hb-di-head{max-width:52rem;margin-bottom:2.25rem}
.hb-di-head .lede{margin-top:.85rem;text-wrap:pretty}
.hb-di-card .card-p{margin-bottom:1.15rem}
.hb-di-card .card-price,.hb-di-card .dp-closed{margin-top:auto}
.hb-di-card .card-go{margin-top:0}

/* /cyber: for organisations, under the hero: its heading, then Supplier Check as one wide card, what it checks on the left and
   its three prices, the free check and its page on the right */
.hb-org{border-top:1px solid var(--line)}
.hb-org-head{max-width:48rem;margin-bottom:2.25rem}
.hb-org-head .lede{margin-top:1rem;text-wrap:pretty}
.hb-org-cards{display:grid;gap:1.25rem}
.hb-org-card{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:2rem 3.5rem;align-items:stretch;padding:2.25rem 2.25rem 2rem}
.hb-org-card:hover{transform:none}
.hb-org-main,.hb-org-side{display:flex;flex-direction:column;min-width:0}
.hb-org-side{padding-left:3.5rem;border-left:1px solid var(--line)}
.hb-org-card-head{display:flex;align-items:center;gap:.9rem}
.hb-org-card-head .card-h{font-size:1.5rem}
.hb-org-k{max-width:none;margin:1.6rem 0 .35rem;font:600 .72rem/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.hb-org-finds{list-style:none;margin:0;padding:0}
.hb-org-finds li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;align-items:start;padding:1rem 0;border-top:1px solid var(--line)}
.hb-org-finds li:first-child{border-top:0}
.hb-org-finds .ico-chip{width:38px;height:38px;border-radius:10px}
.hb-org-finds .ico-chip .ico{width:19px;height:19px}
.hb-org-finds li>span:last-child{font-size:.95rem;line-height:1.55;color:var(--text-2);text-wrap:pretty}
.hb-org-finds b{display:block;margin-bottom:.1rem;font-weight:600;color:var(--text)}
.hb-org-side .hb-steps{margin:0 0 1.6rem}
.hb-org-btn{width:100%;margin-top:auto}
.hb-org-side .card-go{margin-top:0;padding-top:1rem;align-self:center}
@media (max-width:1000px){
  .hb-org-card{grid-template-columns:minmax(0,1fr);row-gap:.75rem;padding:1.9rem 1.75rem 1.6rem}
  .hb-org-side{padding:0;border-left:0}
}
@media (min-width:601px) and (max-width:1000px){.hb-org-btn,.hb-org-side .card-go{align-self:flex-start}.hb-org-btn{width:auto;min-width:16rem}}
@media (max-width:600px){.hb-org-card{padding:1.6rem 1.35rem 1.4rem}}

/* Supplier Check's three steps (/cyber's card): a label, the price big and tabular, and what it reads */
.hb-steps{width:100%;margin:1.4rem 0 0}
.hb-steps>div{display:grid;grid-template-columns:minmax(0,7.25rem) minmax(0,1fr);gap:.2rem 1rem;align-items:baseline;padding:.95rem 0;border-top:1px solid var(--line)}
.hb-steps>div:last-child{border-bottom:1px solid var(--line)}
.hb-steps dt{font:600 .72rem/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.hb-steps dd{display:grid;gap:.25rem;margin:0}
.hb-steps b{display:block;font:640 1.6rem/1.1 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.hb-steps b small{margin-right:.3rem;font:500 .84rem/1 var(--sans);letter-spacing:0;color:var(--text-3)}
.hb-steps dd span{font-size:.9rem;line-height:1.4;color:var(--text-2)}
@media (max-width:420px){.hb-steps>div{grid-template-columns:minmax(0,1fr)}}

/* /pricing: a part's label inside a block (Cyber Security's menu groups, who the Data Intelligence products are for) */
.hb-label{margin:3rem 0 1rem;font:600 .76rem/1.3 var(--sans);font-stretch:100%;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.pr-dept-head+.hb-label{margin-top:.25rem}

/* /pricing: Supplier Check, its whole ladder in one panel, the free check to the public sector plan */
.hb-sc{padding:1.6rem 1.6rem 1.4rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(11,27,46,.04),0 14px 34px -26px rgba(11,27,46,.3)}
.hb-sc-head{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:.5rem 2rem;align-items:baseline;padding:0 .5rem 1.4rem}
.hb-sc-name{display:inline-flex;align-items:center;gap:.4rem;font:600 1.12rem/1.3 var(--sans);color:var(--text);text-decoration:none}
.hb-sc-name .ico{width:18px;height:18px;color:var(--brand);transition:transform .2s ease}
.hb-sc-name:hover{color:var(--brand)}
.hb-sc-name:hover .ico{transform:translateX(3px)}
.hb-sc-what{max-width:none;margin:0;font-size:.95rem;line-height:1.5;color:var(--text-2);text-wrap:pretty}
.hb-ladder{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));overflow:hidden;border:1px solid var(--line);border-radius:var(--r-lg)}
.hb-rung{display:flex;flex-direction:column;min-width:0;padding:1.15rem 1.2rem 1.25rem;border-left:1px solid var(--line);background:var(--panel)}
.hb-rung:first-child{border-left:0}
.hb-rung>p{max-width:none;margin:0}
.hb-rung-k{font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.hb-rung-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .4rem;padding:.65rem 0 .7rem;font:640 1.75rem/1.05 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.hb-rung-price small{font:500 .82rem/1.2 var(--sans);letter-spacing:0;color:var(--text-3)}
.hb-rung-for{font-size:.9rem;line-height:1.4;color:var(--text)}
.hb-rung>.hb-rung-read{margin-top:.2rem;font-size:.82rem;line-height:1.4;color:var(--text-3)}
.hb-rung--free{background:var(--panel-2)}
.hb-rung--public{--text:#EEF3F9;--text-3:#A9B7C9;background:#0B1B2E;border-left-color:#0B1B2E}
.hb-sc-notes{list-style:none;margin:1.3rem 0 0;padding:0 .5rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem 2rem}
.hb-sc-notes li{position:relative;padding-left:1rem;font-size:.88rem;line-height:1.5;color:var(--text-2);text-wrap:pretty}
.hb-sc-notes li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--live)}
.hb-fixes{max-width:none;margin:1.9rem 0 .8rem;font-size:.92rem;color:var(--text-2)}
@media (max-width:900px){
  .hb-sc{padding:1.25rem 1.1rem 1.15rem}
  .hb-sc-head{grid-template-columns:minmax(0,1fr);padding:0 .25rem 1.1rem}
  .hb-ladder{grid-template-columns:minmax(0,1fr)}
  .hb-rung{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:1rem;padding:.95rem 1rem;border-left:0;border-top:1px solid var(--line)}
  .hb-rung:first-child{border-top:0}
  .hb-rung-k,.hb-rung-for,.hb-rung-read{grid-column:1}
  .hb-rung-price{grid-column:2;grid-row:1/span 3;align-self:center;justify-content:flex-end;padding:0;font-size:1.45rem;text-align:right}
  .hb-rung>.hb-rung-k{margin-bottom:.3rem}
  .hb-sc-notes{grid-template-columns:minmax(0,1fr);padding:0 .25rem}
}
@media (prefers-reduced-motion:reduce){.hb-sc-name .ico{transition:none}.hb-sc-name:hover .ico{transform:none}}

/* /pricing: the External Exposure Audit's bands above Supplier Check's ladder, four rungs across on a wide screen (31 Oct 2026) */
.hb-sc+.hb-sc{margin-top:1.25rem}
.hb-rung-read a{color:inherit}
@media (min-width:901px){.hb-ladder--4{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* /pricing: the growth services, one heading over two quieter parts */
.hb-gs-top{max-width:46rem;margin-bottom:2.25rem}
.hb-gs-top .h2{font-size:clamp(1.6rem,2.4vw,2rem)}
.hb-gs-top p{margin:.35rem 0 0;color:var(--text-2)}
.hb-gs-dept{scroll-margin-top:6rem}
.hb-gs-dept+.hb-gs-dept{margin-top:2.75rem}
.hb-gs-head{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin-bottom:1rem}
.hb-gs-head .ico-chip{width:36px;height:36px;border-radius:10px}
.hb-gs-head .ico-chip .ico{width:18px;height:18px}
.hb-gs-name{flex:1;min-width:14rem}
.hb-gs-name .h3{margin:0;font-size:1.12rem}
.hb-gs-name p{margin:.1rem 0 0;font-size:.92rem;color:var(--text-3)}
@media (max-width:600px){.hb-gs-name{flex-basis:calc(100% - 3.5rem)}.hb-gs-head .pr-all{flex-basis:100%}}

/* /promises: the growth services, one heading over two quieter groups (outlined, no shadow, a smaller head) */
.hb-pm-growth{margin-top:3.25rem;scroll-margin-top:6rem}
.hb-pm-growth-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem 1rem;margin:0 0 1.1rem}
.hb-pm-growth-head .h3{margin:0;font-size:1.3rem}
.hb-pm-growth-head p{max-width:none;margin:0;font-size:.95rem;color:var(--text-3)}
.hb-pm-quiet{background:transparent;box-shadow:none}
.hb-pm-quiet .pm-group-head{padding-bottom:1rem}
.hb-pm-quiet .pm-group-head .ico-chip{width:36px;height:36px;border-radius:10px}
.hb-pm-quiet .pm-group-head .ico-chip .ico{width:18px;height:18px}
.hb-pm-quiet .pm-group-head .h3{font-size:1.08rem}
.hb-pm-quiet .pm-row{padding:1.1rem 0}

/* /press: what we do, the two practices first, then the growth services under a small heading of their own, quieter */
.hb-press-gs{margin:1.75rem 0 .75rem;font:600 .74rem/1.3 var(--sans);font-stretch:100%;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
.hb-press-quiet a{padding:.8rem 1.1rem;background:transparent}
.hb-press-quiet .ico-chip{width:34px;height:34px;border-radius:9px}
.hb-press-quiet .ico-chip .ico{width:17px;height:17px}
.hb-press-quiet .pr-dept-t b{font-size:.95rem}
.hb-press-quiet .pr-dept-t span{font-size:.88rem}

/* /guides: the growth services last, beside a practice with one guide: one quieter heading over their cards, each card naming
   its department (the row's heads and cards stay level through the v5 subgrid) */
.hb-gd-span-2{grid-column:span 2}
.hb-gd-span-3{grid-column:1/-1}
.hb-gd-growth-head{padding-top:.55rem}
.hb-gd-growth-head .gd-group-h{font-size:1.15rem;color:var(--text-2)}
.hb-gd-growth-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.hb-gd-span-1 .hb-gd-growth-cards{grid-template-columns:minmax(0,1fr)}
.hb-gd-span-3 .hb-gd-growth-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.hb-gd-growth .gd-card{box-shadow:none}
@media (max-width:1000px){.hb-gd-span-2,.hb-gd-span-3{grid-column:auto}.hb-gd-growth-head{padding-top:0}}
@media (max-width:760px){.hb-gd-growth-cards,.hb-gd-span-3 .hb-gd-growth-cards{grid-template-columns:minmax(0,1fr)}}

/* /pricing: four ways to pay, two by two */
.hb-pay-ways{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:900px){.hb-pay-ways{grid-template-columns:minmax(0,1fr)}}
/* ===== B20 hubs END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B21 audit page START ===== */
/* The External Exposure Audit's public page (31 Oct 2026, server/sitepages-audit.ts, lane R): the footprint card beside the opening, what
   we read, what you receive, the bands and Monitoring. The v5 kit does the rest; these pieces are only here, each under .xa-. */

/* ── The opening: the copy, and the footprint card beside it ── */
.xa-hero .crumbs{margin-bottom:1.5rem}
@media (min-width:1001px){.xa-hero .container{grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);gap:4.5rem;align-items:center}}
.xa-exhibit{min-width:0;margin:0}
.xa-exhibit .frame-body{padding:0}
.xa-exhibit .caption{margin:.9rem 0 0}
.xa-ex-head{padding:1.15rem 1.3rem 1.05rem;border-bottom:1px solid var(--line)}
.xa-ex-who{display:grid;gap:.3rem;max-width:none;margin:0;font:600 1.05rem/1.3 var(--sans);font-stretch:106%;letter-spacing:-.01em;color:var(--text)}
.xa-ex-who code{font:400 .76rem/1.4 var(--mono);letter-spacing:0;color:var(--text-3)}
.xa-ex-stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line)}
.xa-ex-stats li{min-width:0;padding:1rem 1.1rem 1.05rem;border-left:1px solid var(--line)}
.xa-ex-stats li:first-child{padding-left:1.3rem;border-left:0}
.xa-ex-stats b{display:block;font:640 1.85rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:var(--text)}
.xa-ex-stats span{display:block;margin-top:.45rem;font-size:.78rem;line-height:1.35;color:var(--text-3)}
.xa-ex-rows{list-style:none;margin:0;padding:0}
.xa-ex-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.3rem .75rem;align-items:center;padding:.95rem 1.3rem;border-bottom:1px solid var(--line)}
.xa-ex-row:last-child{border-bottom:0}
.xa-ex-what{font-size:.96rem;line-height:1.35;font-weight:500;color:var(--text)}
.xa-ex-where,.xa-ex-when{grid-column:1/-1;font:400 .74rem/1.45 var(--mono);color:var(--text-3);overflow-wrap:anywhere}
.xa-ex-when{margin-top:-.15rem}
@media (max-width:420px){.xa-ex-stats li{padding-left:.8rem;padding-right:.6rem}.xa-ex-stats li:first-child{padding-left:1.05rem}.xa-ex-head,.xa-ex-row{padding-left:1.05rem;padding-right:1.05rem}.xa-ex-stats b{font-size:1.6rem}}

/* ── What we read: what comes with an order, and what needs a signature ── */
.xa-reads{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}
.xa-read{min-width:0;padding:1.9rem 2rem 2rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.xa-read--signed{box-shadow:inset 0 3px 0 var(--brand)}
.xa-read .h3{margin:0 0 1.25rem}
.xa-read .checks{gap:.8rem}
.xa-read .checks li{font-size:.98rem;line-height:1.5}
@media (max-width:860px){.xa-reads{grid-template-columns:minmax(0,1fr)}.xa-read{padding:1.5rem 1.4rem 1.6rem}}

/* ── What you receive: the report's seven sections, and the grades beside them ── */
.xa-receive{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:4rem;align-items:start}
.xa-list{list-style:none;margin:0;padding:0}
.xa-list li{display:grid;grid-template-columns:2.2rem minmax(0,1fr);gap:.1rem .75rem;padding:1.05rem 0;border-top:1px solid var(--line-2)}
.xa-list li:first-child{border-top:0;padding-top:0}
.xa-list-n{font:500 .9rem/1.55 var(--mono);font-variant-numeric:tabular-nums;color:var(--brand)}
.xa-list-h{margin:0;font:600 1.08rem/1.35 var(--sans);font-stretch:104%;letter-spacing:-.01em;color:var(--text)}
.xa-list p{max-width:40em;margin:.2rem 0 0;font-size:.97rem;line-height:1.52;color:var(--text-2)}
.xa-plus{margin-top:1.1rem;padding-top:1.5rem;border-top:1px solid var(--line-2);gap:.8rem}
.xa-grades{position:sticky;top:6.25rem;min-width:0;margin:0}
.xa-grades .frame-body{padding:.35rem 0 0}
.xa-grade-rows{list-style:none;margin:0;padding:0}
.xa-grade-rows li{display:grid;grid-template-columns:minmax(0,1fr) auto 7.2rem;gap:.85rem;align-items:center;padding:.72rem 1.25rem;border-bottom:1px solid var(--line)}
.xa-grade-k{font-size:.96rem;font-weight:500;color:var(--text)}
.xa-grade-c{font:400 .74rem/1.3 var(--mono);text-align:right;color:var(--text-3)}
.xa-grades .ar-g{width:2.15rem;height:2.15rem;font-size:1.1rem}
.xa-grade-foot{max-width:none;margin:0;padding:.95rem 1.25rem 1.1rem;font-size:.86rem;line-height:1.45;color:var(--text-3)}
.xa-grades-go{display:inline-flex;align-items:center;gap:.4rem;margin-top:1rem;font:600 .95rem/1.2 var(--sans);color:var(--brand);text-decoration:none}
.xa-grades-go:hover{color:var(--brand-2)}
@media (max-width:1000px){.xa-receive{grid-template-columns:minmax(0,1fr);gap:2.75rem}.xa-grades{position:static;max-width:34rem}}

/* ── The bands ── */
.xa-price{font:640 1.45rem/1.15 var(--sans);font-stretch:106%;letter-spacing:-.015em;font-variant-numeric:tabular-nums;color:var(--text)}
.xa-unit{font:500 .84rem/1.2 var(--sans);color:var(--text-3)}
#prices .compare th[scope="col"]{font-size:1.02rem}
.xa-quote{max-width:none;margin:1.25rem 0 0;font-size:.98rem;line-height:1.5;color:var(--text-2)}
.xa-quote a{font-weight:600;color:var(--brand)}
.xa-honest{max-width:46rem;margin:2.25rem 0 0;padding-left:1.25rem;border-left:3px solid var(--brand);font:500 1.14rem/1.5 var(--sans);letter-spacing:-.006em;color:var(--text)}

/* ── Monitoring: what we watch, and what an alert says ── */
.xa-watch{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:4rem;align-items:start}
.xa-watch .h3{margin:0 0 1.15rem}
.xa-watched{list-style:none;margin:0;padding:0}
.xa-watched li{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:.2rem 1rem;padding:.85rem 0;border-top:1px solid var(--line-2)}
.xa-watched span{font:500 .78rem/1.65 var(--mono);color:var(--text-3)}
.xa-watched p{max-width:none;margin:0;font-size:.98rem;line-height:1.5;color:var(--text)}
@media (max-width:860px){.xa-watch{grid-template-columns:minmax(0,1fr);gap:2.5rem}}
@media (max-width:480px){.xa-watched li{grid-template-columns:minmax(0,1fr)}}

/* ── The sample's opening ── */
.xa-sample-hero{padding-bottom:3rem}
.xa-sample-hero .container{display:block}
.xa-sample-hero .crumbs{margin-bottom:1.5rem}
@media (max-width:1000px){.xa-sample-hero{padding-bottom:2.25rem}}
/* ===== B21 audit page END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B22 audit report START ===== */
/* The External Exposure Audit's private pages (31 Oct 2026, server/audit/pages.ts, lane R): the report, the authorisation and the Brief, and the
   public sample, which prints through the same code. Under .ar-. Tables turn into cards on a phone, as the kit's comparison does, and
   nothing scrolls sideways. The print rules at the end are the board's copy: "Save as PDF" is the PDF (§9). */

.ar-vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.ar-dim{color:var(--text-3)}
.ar-quiet{max-width:none;margin:0;font-size:.97rem;line-height:1.5;color:var(--text-2)}
.ar-steps{margin:.75rem 0 0;padding-left:1.35rem;display:grid;gap:.5rem;font-size:.97rem;line-height:1.5}
.ar-steps li{padding-left:.25rem}
.ar-h3{margin:3rem 0 1.15rem;font:600 1.2rem/1.3 var(--sans);font-stretch:106%;letter-spacing:-.014em;color:var(--text)}
.ar-h3--flush,.ar-sec-head+.ar-h3{margin-top:0}
.ar-h3-note{max-width:44em;margin:-.7rem 0 1rem;font-size:.92rem;line-height:1.5;color:var(--text-2)}
.ar-sep{color:var(--text-3)}
.ar-problem{max-width:none;margin:0 0 1.25rem}

/* ── The sample's line, held on screen so no screen of it can be taken for a real report ── */
.ar-ribbon{position:sticky;top:4.25rem;z-index:15;max-width:none;margin:0;padding:.55rem 0;background:#FFF6E7;border-top:1px solid var(--signal-edge);border-bottom:1px solid var(--signal-edge);font:500 .86rem/1.35 var(--sans);color:var(--text)}
.ar-ribbon .container{display:block}
.ar-ribbon~.ar-body .ar-sec{scroll-margin-top:7.5rem}
.ar-tag{align-self:center;padding:.3rem .55rem;border:1px solid var(--line-2);border-radius:99px;font:500 .72rem/1 var(--mono);color:var(--text-3);white-space:nowrap}

/* ── The firm's own story: what a report and a Brief open with. The story, then the proof, then the fix, and on a wide screen the proof stands beside them ── */
.ar-story{display:grid;grid-template-columns:minmax(0,1.14fr) minmax(0,.86fr);grid-template-areas:"text proof" "fix proof";gap:1.6rem 3rem;align-items:start}
.ar-story-text{grid-area:text;min-width:0}
.ar-story-h{margin:.85rem 0 0;font:640 clamp(1.6rem,2.7vw,2.3rem)/1.13 var(--sans);font-stretch:106%;letter-spacing:-.022em;color:var(--text)}
.ar-story-p{max-width:38em;margin:1rem 0 0;font-size:1.12rem;line-height:1.58;color:var(--text);overflow-wrap:anywhere}
.ar-story-proof{grid-area:proof;min-width:0;padding:1.3rem 1.4rem 1.35rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--signal)}
.ar-story-fix{grid-area:fix;min-width:0;padding-top:1.05rem;border-top:2px solid var(--text)}
.ar-story-fix p:last-child{max-width:38em;margin:0;font-size:1.04rem;line-height:1.55;color:var(--text);overflow-wrap:anywhere}
.ar-story .ar-story-k{max-width:none;margin:0 0 .6rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-proof{list-style:none;margin:0;padding:0;display:grid;gap:.8rem}
.ar-proof li{display:grid;gap:.2rem;min-width:0;padding-top:.8rem;border-top:1px solid var(--line)}
.ar-proof li:first-child{padding-top:0;border-top:0}
.ar-proof p{max-width:none;margin:0;font-size:.97rem;line-height:1.42;font-weight:500;color:var(--text);overflow-wrap:anywhere}
.ar-proof code{font:400 .79rem/1.5 var(--mono);color:var(--text-2);overflow-wrap:anywhere}
.ar-proof span{font-size:.82rem;line-height:1.35;color:var(--text-3)}
.ar-find .ar-proof{margin:.95rem 0 0;padding:.75rem .85rem;background:var(--bg-2);border:1px solid var(--line);border-radius:8px}
.ar-find .ar-proof p{font-size:.9rem}
.ar-story+.ar-h3{margin-top:3.25rem}
@media (max-width:980px){.ar-story{grid-template-columns:minmax(0,1fr);grid-template-areas:"text" "proof" "fix";gap:1.4rem}}

/* ── 1. The cover ── */
.ar-cover{padding:4.5rem 0 4.25rem}
.ar-cover .eyebrow .ico{width:18px;height:18px}
.ar-cover-h{max-width:20em;overflow-wrap:break-word}
.ar-cover-p{max-width:47em;margin:1.6rem 0 0;font-size:1.1rem;line-height:1.6;color:var(--text-2)}
.ar-cover-kv{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:1.25rem 2.5rem;margin:2.75rem 0 0;padding-top:1.6rem;border-top:1px solid var(--line-2)}
.ar-cover-kv dt{font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-cover-kv dd{margin:.5rem 0 0;font-size:1.02rem;line-height:1.45;color:var(--text);overflow-wrap:anywhere}
.ar-cover-kv code{font:400 .94rem/1.4 var(--mono)}
@media (max-width:760px){.ar-cover{padding:3rem 0}.ar-cover-kv{grid-template-columns:minmax(0,1fr)}}

/* ── The body: the sections, and on a wide screen their names held beside them ── */
.ar-body{display:block}
.ar-rail{display:none}
.ar-main{min-width:0}
@media (min-width:1181px){
  .ar-body{display:grid;grid-template-columns:10.5rem minmax(0,1fr);gap:3.75rem;align-items:start}
  .ar-rail{display:block;position:sticky;top:7rem;padding-top:4.75rem}
}
.ar-rail-k{max-width:none;margin:0 0 .85rem;font:600 .7rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-rail ol{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.ar-rail a{font-size:.93rem;line-height:1.3;color:var(--text-2);text-decoration:none}
.ar-rail a:hover{color:var(--brand)}
.ar-sec{padding:4.5rem 0;border-bottom:1px solid var(--line);scroll-margin-top:4.25rem}
.ar-sec:last-child{border-bottom:0}
.ar-sec-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:0 1rem;align-items:baseline;margin-bottom:2.1rem}
.ar-n{max-width:none;margin:0;font:500 .86rem/1 var(--mono);font-variant-numeric:tabular-nums;color:var(--brand)}
.ar-sec-lede{max-width:44em;margin:.65rem 0 0;font-size:1.05rem;line-height:1.5;color:var(--text-2)}
@media (max-width:760px){.ar-sec{padding:3.25rem 0}.ar-sec-head{grid-template-columns:minmax(0,1fr) auto;margin-bottom:1.6rem}.ar-n{grid-column:1;grid-row:1;margin-bottom:.6rem}.ar-tag{grid-column:2;grid-row:1;margin-bottom:.6rem}.ar-sec-t{grid-column:1/-1}}

/* ── 2. For the board ── */
.ar-board-top{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem;margin-bottom:.25rem}
.ar-board-top--2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ar-unknown{display:flex;gap:1.15rem;align-items:flex-start;min-width:0;padding:1.4rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-unknown-n{max-width:none;margin:0;font:640 2.75rem/1 var(--sans);font-stretch:108%;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.ar-unknown-h{max-width:none;margin:0;font:600 1.05rem/1.3 var(--sans);color:var(--text)}
.ar-unknown-p{max-width:none;margin:.5rem 0 0;font-size:.86rem;line-height:1.7;color:var(--text-3)}
.ar-unknown-p code{display:inline-block;margin-right:.35rem;font:400 .8rem/1.5 var(--mono);color:var(--text-2);overflow-wrap:anywhere}
.ar-note{min-width:0;margin:0;padding:1.4rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-note p{max-width:none;margin:0;font-size:1rem;line-height:1.55;color:var(--text)}
.ar-note .ar-note-k{margin-bottom:.55rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-grades-wrap,.ar-hosts-wrap,.ar-breaches-wrap,.ar-inv-wrap{overflow:hidden;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel)}
.ar-grades,.ar-hosts,.ar-breaches,.ar-inv{width:100%;border-collapse:collapse;font-size:.93rem}
.ar-grades :is(th,td),.ar-hosts :is(th,td),.ar-breaches :is(th,td),.ar-inv :is(th,td){padding:.9rem 1rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-weight:400}
.ar-grades thead :is(th,td),.ar-hosts thead :is(th,td),.ar-breaches thead :is(th,td),.ar-inv thead :is(th,td){background:var(--panel-2);font:600 .82rem/1.3 var(--sans);color:var(--text-2)}
.ar-grades tbody tr:last-child>*,.ar-hosts tbody tr:last-child>*,.ar-breaches tbody tr:last-child>*,.ar-inv tbody tr:last-child>*{border-bottom:0}
.ar-grades tbody th,.ar-hosts tbody th,.ar-breaches tbody th,.ar-inv tbody th{background:transparent;font-family:var(--sans)}
.ar-grades tbody th{vertical-align:middle}
.ar-grades code,.ar-hosts code,.ar-inv code,.ar-breaches code{font:400 .86rem/1.4 var(--mono);color:var(--text);overflow-wrap:anywhere}
.ar-breaches :is(th,td){white-space:normal}
.ar-breaches tbody :is(th,td){overflow-wrap:anywhere}
.ar-breaches td[data-k="Version"] code{white-space:nowrap}
.ar-grades td{white-space:nowrap}
.ar-g{display:inline-flex;align-items:center;justify-content:center;width:2.45rem;height:2.45rem;margin-right:.6rem;border:1px solid var(--line-2);border-radius:var(--r);font:640 1.25rem/1 var(--sans);font-stretch:108%;color:var(--text);vertical-align:middle}
.ar-g--a,.ar-g--b{border-color:rgba(31,157,99,.4);background:rgba(31,157,99,.08);color:var(--pass)}
.ar-g--d,.ar-g--f{border-color:var(--signal-edge);background:var(--signal-wash);color:var(--signal-text)}
.ar-g--none{width:auto;height:2.45rem;padding:0 .6rem;font:600 .66rem/1 var(--sans);letter-spacing:.06em;color:var(--text-3);white-space:nowrap}
.ar-cov{font:400 .76rem/1.3 var(--mono);color:var(--text-3);vertical-align:middle}
.ar-foot-grade{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 2rem;margin-top:.85rem;padding:.9rem 1rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-foot-k{font:600 1rem/1.3 var(--sans);color:var(--text)}
.ar-foot-k small{display:block;margin-top:.15rem;font:400 .84rem/1.3 var(--sans);color:var(--text-3)}
.ar-verdicts{display:grid;grid-template-columns:repeat(auto-fit,minmax(14.5rem,1fr));gap:1rem}
.ar-verdict{display:flex;flex-direction:column;min-width:0;padding:1.3rem 1.35rem 1.25rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-verdict--ok{box-shadow:inset 0 3px 0 var(--pass)}
.ar-verdict--fx{box-shadow:inset 0 3px 0 var(--signal)}
.ar-verdict-h{margin:0;font:600 .72rem/1.35 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-verdict-w{max-width:none;margin:.65rem 0 0;font:640 1.6rem/1.1 var(--sans);font-stretch:106%;letter-spacing:-.02em;color:var(--text)}
.ar-verdict-p{max-width:none;margin:.55rem 0 0;font-size:.93rem;line-height:1.48;color:var(--text-2);overflow-wrap:anywhere}
.ar-proofs{list-style:none;margin:.75rem 0 0;padding:0;display:grid;gap:.6rem}
.ar-proofs li{display:grid;gap:.15rem;font-size:.84rem;line-height:1.4;color:var(--text-3)}
.ar-proofs b{font-weight:600;color:var(--text)}
.ar-proofs code{font:400 .78rem/1.4 var(--mono);overflow-wrap:anywhere}
.ar-google{display:flex;justify-content:space-between;gap:1rem;max-width:none;margin:auto 0 0;padding-top:.85rem;font-size:.84rem;color:var(--text-3)}
.ar-verdict-p+.ar-google,.ar-proofs+.ar-google{margin-top:auto}
.ar-google b{font-weight:600;color:var(--text)}
.ar-actions{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.ar-actions li{display:grid;grid-template-columns:1.6rem minmax(0,1fr) auto 6.25rem 11.5rem;gap:.35rem 1rem;align-items:center;padding:.8rem 0;border-bottom:1px solid var(--line-2)}
.ar-action-n{font:500 .84rem/1 var(--mono);color:var(--text-3)}
.ar-action-t{font-size:1rem;line-height:1.4;font-weight:500;color:var(--text)}
.ar-action-m,.ar-action-w{font-size:.88rem;line-height:1.35;color:var(--text-2)}
.ar-unread{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.ar-unread li{display:grid;grid-template-columns:minmax(0,17rem) minmax(0,1fr);gap:.15rem 1rem;font-size:.93rem;line-height:1.45;color:var(--text-2)}
.ar-unread code{font:400 .86rem/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
@media (max-width:980px){
  .ar-actions li{grid-template-columns:1.6rem minmax(0,1fr) auto}
  .ar-action-m{grid-column:2;grid-row:2}.ar-action-w{grid-column:2/-1;grid-row:3}
  .ar-verdicts{grid-template-columns:minmax(0,1fr)}
  .ar-board-top--2{grid-template-columns:minmax(0,1fr)}
}

/* ── 3. Your footprint ── */
.ar-stats{margin-bottom:2rem}
.ar-stats .stat b{font-size:clamp(1.9rem,3.2vw,2.5rem)}
.ar-shown{max-width:none;margin:0 0 .85rem;font-size:.88rem;line-height:1.45;color:var(--text-3)}
.ar-hosts{table-layout:fixed}
.ar-hosts :is(th,td){padding:.8rem .7rem;font-size:.86rem;line-height:1.4}
.ar-hosts thead :is(th,td){white-space:nowrap}
/* By name, not by place: a column nobody filled is not drawn, and the others keep their widths. */
@media (min-width:861px){
  .ar-hosts :is(th,td):first-child{width:27%;padding-left:1rem}
  .ar-hosts .ar-c-from{width:11%}
  .ar-hosts .ar-c-live{width:8%}
  .ar-hosts .ar-c-plat{width:10.5%}
  .ar-hosts .ar-c-cert{width:14%}
  .ar-hosts .ar-c-state{width:12.5%}
}
.ar-hosts :is(tbody th,td){white-space:normal}
.ar-hosts .flag{white-space:normal;line-height:1.15}
.ar-lapsed{font-weight:600;color:var(--signal-text)}
.ar-pills{display:flex;flex-wrap:wrap;gap:.3rem}
.ar-pill{min-width:0;max-width:100%;padding:.22rem .45rem;border:1px solid var(--line-2);border-radius:var(--r);font-size:.76rem;line-height:1.25;color:var(--text-2);overflow-wrap:anywhere}
.ar-orphans{display:grid;grid-template-columns:repeat(auto-fit,minmax(14.5rem,1fr));gap:1rem}
.ar-orphan{min-width:0;padding:1.2rem 1.3rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-orphan-h{margin:0;font:600 1.02rem/1.3 var(--sans);color:var(--text)}
.ar-orphan-p{max-width:none;margin:.35rem 0 .8rem;font-size:.88rem;line-height:1.45;color:var(--text-3)}
.ar-orphan ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem;font-size:.86rem;line-height:1.45;color:var(--text-3)}
.ar-orphan li{display:grid;gap:.1rem}
.ar-orphan code{font:400 .84rem/1.45 var(--mono);color:var(--text);overflow-wrap:anywhere}
.ar-orphan li span code{color:var(--text-2)}
@media (max-width:980px){.ar-orphans{grid-template-columns:minmax(0,1fr)}}

/* ── Tables as cards on a phone: each row a card, each cell saying what it is ── */
@media (max-width:860px){
  .ar-hosts-wrap,.ar-grades-wrap,.ar-breaches-wrap,.ar-inv-wrap{overflow:visible;border:0;background:transparent}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv),:is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) :is(tbody,tr,th,td){display:block;width:auto}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) thead{display:none}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) tbody tr{margin:0 0 .75rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);overflow:hidden}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) tbody th{width:auto;padding:.75rem 1rem;border-bottom:1px solid var(--line);background:var(--panel-2)}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) td{display:grid;grid-template-columns:minmax(0,6.5rem) minmax(0,1fr);gap:.75rem;align-items:center;padding:.6rem 1rem;border-bottom:1px solid var(--line);white-space:normal}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) td::before{content:attr(data-k);font:500 .8rem/1.4 var(--sans);color:var(--text-3)}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) tbody tr>td:last-child{border-bottom:0}
  .ar-grades td{grid-template-columns:minmax(0,6.5rem) auto minmax(0,1fr)}
  .ar-grades td .ar-g{margin-right:0}
  .ar-hosts td>*{justify-self:start}
  /* A report can hold 250 hostnames: two columns in each card, so a phone is not walking down six rows for every name. */
  :is(.ar-hosts,.ar-inv) tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.1rem 0;padding-bottom:.4rem}
  :is(.ar-hosts,.ar-inv) tbody th{grid-column:1/-1}
  :is(.ar-hosts,.ar-inv) td{display:block;padding:.45rem 1rem;border-bottom:0}
  :is(.ar-hosts,.ar-inv) td::before{display:block;margin-bottom:.1rem;font-size:.72rem}
  .ar-inv tbody tr{margin-bottom:.5rem}
}

/* A cell with nothing to say takes no line of its own on a phone, label and all. Screens only: A4 is narrower than this too, and on paper the table is a table, so a hidden cell would slide its row one column left. */
@media screen and (max-width:860px){:is(.ar-hosts,.ar-grades) td:empty{display:none}}

/* ── 4. Findings, by dimension ── */
.ar-dim-sec{margin-top:3.25rem}
.ar-dim-sec:first-of-type{margin-top:0}
.ar-dim-h{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.3rem 1rem;margin:0;padding-bottom:.65rem;border-bottom:2px solid var(--text);font:600 1.3rem/1.25 var(--sans);font-stretch:106%;letter-spacing:-.016em;color:var(--text)}
.ar-dim-h span{font:500 .86rem/1.3 var(--sans);letter-spacing:0;color:var(--text-3)}
.ar-receipt-box{margin-top:1rem;padding:.85rem 1.1rem .4rem;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-find+.ar-receipt-box{margin-top:1rem}
.ar-receipt-k{max-width:none;margin:0 0 .3rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-receipt{list-style:none;margin:0;padding:0}
.ar-receipt-row{padding:.6rem 0 .7rem;border-top:1px solid var(--line)}
.ar-receipt-row:first-child{border-top:0}
.ar-receipt-h{display:flex;justify-content:space-between;gap:1rem;max-width:none;margin:0;font-size:.92rem;font-weight:500;color:var(--text)}
.ar-receipt-h code{font:400 .86rem/1.4 var(--mono)}
.ar-receipt-s{max-width:none;margin:.2rem 0 0;font-size:.84rem;line-height:1.4;color:var(--text-3)}
.ar-deductions{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.25rem}
.ar-deductions li{display:grid;grid-template-columns:1.75rem minmax(0,1fr);gap:.35rem;font-size:.84rem;line-height:1.42;color:var(--text-2)}
.ar-deductions b{font:500 .8rem/1.5 var(--mono);text-align:right;color:var(--text)}
.ar-find{min-width:0;margin:1rem 0 0;padding:1.35rem 1.45rem 1.4rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-find-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.4rem 1rem}
.ar-find-h{margin:0;max-width:34em;font:600 1.12rem/1.32 var(--sans);font-stretch:104%;letter-spacing:-.01em;color:var(--text)}
.ar-find-head .flag{margin-top:.1rem}
.ar-find-host{max-width:none;margin:.25rem 0 0}
.ar-find-host code{font:400 .82rem/1.45 var(--mono);color:var(--text-3);overflow-wrap:anywhere}
.ar-find-p{max-width:none;margin:.6rem 0 0;font-size:.98rem;line-height:1.55;color:var(--text-2);overflow-wrap:anywhere}
.ar-find-kv{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:.65rem 1.5rem;margin:.95rem 0 0;padding:.7rem .85rem;background:var(--bg-2);border:1px solid var(--line);border-radius:8px}
.ar-find-kv dt{font:500 .72rem/1.3 var(--sans);color:var(--text-3)}
.ar-find-kv dd{margin:.2rem 0 0;font-size:.86rem;line-height:1.45;color:var(--text)}
.ar-find-kv code{font:400 .8rem/1.5 var(--mono);overflow-wrap:anywhere}
.ar-fixed{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;max-width:none;margin:.75rem 0 0;font-size:.9rem;color:var(--text-2)}
.ar-fix{margin-top:.95rem;padding-top:.85rem;border-top:1px solid var(--line)}
.ar-fix-k{display:flex;justify-content:space-between;gap:1rem;max-width:none;margin:0 0 .5rem;font:600 .9rem/1.3 var(--sans);color:var(--text)}
.ar-fix-k span{font:400 .84rem/1.3 var(--sans);color:var(--text-3)}
.ar-paste{margin:0 0 .6rem;padding:.75rem .85rem;background:var(--console);border-radius:8px;color:var(--ps-text);font:400 .8rem/1.55 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
.ar-paste code{font:inherit;color:inherit}
.ar-fix-p{max-width:none;margin:.45rem 0 0;font-size:.92rem;line-height:1.5;color:var(--text-2);overflow-wrap:anywhere}
.ar-fix-proof{max-width:none;margin:.6rem 0 0;font-size:.88rem;line-height:1.45;color:var(--text-3)}
.ar-fix-proof b{font-weight:600;color:var(--text-2)}
@media (max-width:640px){.ar-find{padding:1.15rem 1.1rem 1.2rem}.ar-find-kv{grid-template-columns:minmax(0,1fr)}.ar-unread li{grid-template-columns:minmax(0,1fr)}}

/* ── 5. Credentials ── */
.ar-say{max-width:none;margin:0 0 1.1rem;font-size:1.08rem;line-height:1.5;font-weight:500;color:var(--text)}
.ar-note-line{max-width:none;margin:1rem 0 0;font-weight:600;color:var(--text)}
.ar-parts{display:block;margin-top:.3rem}
.ar-parts code{display:inline-block;margin:0 .3rem .15rem 0;padding:.1rem .35rem;border:1px solid var(--line);border-radius:4px;font:400 .78rem/1.4 var(--mono);color:var(--text-2)}
.ar-breaches td b{font-weight:600}
.ar-breaches tbody th{font-weight:600;color:var(--text)}
.ar-breaches+.ar-quiet,.ar-breaches-wrap+.ar-quiet{margin-top:.75rem;font-size:.88rem;color:var(--text-3)}
@media (max-width:860px){.ar-breaches td{align-items:start}}

/* ── 6. Method ── */
.ar-methods{display:grid;grid-template-columns:repeat(auto-fit,minmax(14.5rem,1fr));gap:1rem}
.ar-method{min-width:0;padding:1.25rem 1.35rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.ar-method-h{margin:0;font:600 1.02rem/1.3 var(--sans);color:var(--text)}
.ar-method-p{max-width:none;margin:.35rem 0 0;font-size:.86rem;line-height:1.4;color:var(--text-3)}
.ar-method ul{margin:.7rem 0 0;padding-left:1.05rem;font-size:.9rem;line-height:1.47;color:var(--text-2)}
.ar-method li{margin:.3rem 0}
.ar-method-kv{margin:1.5rem 0 0;border-top:1px solid var(--line-2)}
.ar-method-kv>div{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:.2rem 1rem;padding:.7rem 0;border-bottom:1px solid var(--line-2)}
.ar-method-kv dt{font-size:.9rem;font-weight:500;color:var(--text)}
.ar-method-kv dd{margin:0;font-size:.92rem;line-height:1.5;color:var(--text-2)}
.ar-method-kv code{font:400 .84rem/1.5 var(--mono)}
.ar-check{max-width:none;margin:1.1rem 0 0;font-weight:500;color:var(--text)}
@media (max-width:980px){.ar-methods{grid-template-columns:minmax(0,1fr)}}
@media (max-width:480px){.ar-method-kv>div{grid-template-columns:minmax(0,1fr)}}

/* ── 7. Monitoring ── */
.ar-mon{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.25rem 2.5rem;margin-bottom:2.25rem;padding:1.5rem 1.6rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-mon--on{box-shadow:inset 0 3px 0 var(--pass)}
.ar-mon-k{max-width:none;margin:0;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-mon-price{max-width:none;margin:.5rem 0 0;font:640 2.1rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:var(--text)}
.ar-mon-price small{margin-left:.4rem;font:500 .9rem/1 var(--sans);letter-spacing:0;color:var(--text-3)}
.ar-mon-t{max-width:none;margin:.45rem 0 0;font-size:.95rem;line-height:1.45;color:var(--text-2)}
.ar-press{margin:0}
.ar-watch{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:2.75rem}
.ar-watched{list-style:none;margin:0;padding:0}
.ar-watched li{display:grid;grid-template-columns:6.25rem minmax(0,1fr);gap:.1rem .9rem;padding:.65rem 0;border-top:1px solid var(--line-2);font-size:.93rem;line-height:1.45;color:var(--text)}
.ar-watched span{font:500 .74rem/1.75 var(--mono);color:var(--text-3)}
.ar-watch .checks{gap:.7rem}
.ar-watch .checks li{font-size:.93rem;line-height:1.45}
@media (max-width:760px){.ar-watch{grid-template-columns:minmax(0,1fr);gap:2rem}.ar-mon .btn,.ar-press{width:100%}}
@media (max-width:480px){.ar-watched li{grid-template-columns:minmax(0,1fr)}}

/* ── The staff view's band: never a client's ── */
.ar-staff{padding:1.5rem 0 1.65rem;background:var(--signal-wash);border-bottom:1px solid var(--signal-edge)}
.ar-staff-k{max-width:none;margin:0;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--signal-text)}
.ar-staff-t{max-width:none;margin:.4rem 0 0;font-size:1.05rem;font-weight:500;color:var(--text)}
.ar-staff-form{max-width:44rem;margin-top:1rem}

/* ── The authorisation ── */
.ar-auth-hero{padding-bottom:0}
.ar-auth-hero+.band{padding-top:2.75rem}
.ar-auth-hero .container{display:block}
.ar-auth-hero .h1{font-size:clamp(2.1rem,4vw,3.1rem);line-height:1.05}
.ar-auth-hero .lede{max-width:44em;margin-bottom:0}
.ar-auth .h3{margin:0 0 .6rem}
.ar-auth p{max-width:none}
.ar-auth-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:3.5rem;align-items:start}
.ar-auth-grid>div>p{margin:0 0 1rem;font-size:.97rem;line-height:1.5;color:var(--text-2)}
.ar-auth-side{display:grid;gap:1.5rem;min-width:0}
.ar-inv td{white-space:nowrap}
.ar-band{padding:1.3rem 1.4rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-band--fx{box-shadow:inset 0 3px 0 var(--signal);border-color:var(--signal-edge)}
.ar-auth .ar-band-k{margin:0;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-auth .ar-band-t{margin:.45rem 0 0;font:600 1.25rem/1.3 var(--sans);font-stretch:106%;letter-spacing:-.014em;color:var(--text)}
.ar-auth .ar-band-p{margin:.4rem 0 0;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.ar-covers .h3{margin:1.5rem 0 .75rem}
.ar-covers .h3:first-child{margin-top:0}
.ar-covers .checks{gap:.65rem}
.ar-covers .checks li{font-size:.94rem;line-height:1.48}
.ar-auth .ar-never{margin:.35rem 0 0;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.ar-sign{padding:1.5rem;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-tick{display:grid;grid-template-columns:1.25rem minmax(0,1fr);gap:.65rem;align-items:start;font-size:.96rem;line-height:1.45;color:var(--text);cursor:pointer}
.ar-tick input{width:1.15rem;height:1.15rem;margin:.14rem 0 0;accent-color:var(--brand)}
@media (max-width:980px){.ar-auth-grid{grid-template-columns:minmax(0,1fr);gap:2.5rem}}

/* ── The Brief ── */
.ar-brief-hero{padding:4.5rem 0 3.75rem;background:var(--bg-2);border-bottom:1px solid var(--line)}
.ar-brief-hero .container{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:4rem;align-items:center}
.ar-brief-copy{min-width:0}
.ar-brief-one{grid-template-columns:minmax(0,1fr)!important}
.ar-brief-hero--story{padding:3.25rem 0 3.5rem}
.ar-brief-hero--story .container{display:block}
.ar-brief-hero--story .ar-brief-copy{margin-bottom:2.25rem;padding-bottom:1.6rem;border-bottom:1px solid var(--line)}
.ar-brief-hero--story .ar-brief-copy .h1{font-size:clamp(1.75rem,3vw,2.5rem)}
.ar-brief-more{display:grid;grid-template-columns:minmax(0,1fr) 19rem;gap:3rem;align-items:start}
.ar-brief-more-t{min-width:0}
.ar-brief-more .ar-brief-stats{grid-template-columns:minmax(0,1fr);gap:.9rem}
.ar-brief-copy .h1{font-size:clamp(2.2rem,4.4vw,3.6rem);line-height:1.04;overflow-wrap:break-word}
.ar-brief-line{max-width:none;margin:1rem 0 0;font:400 .84rem/1.45 var(--mono);color:var(--text-3)}
.ar-brief-copy .lede{margin:1.25rem 0 0}
.ar-brief-foot{min-width:0;padding:1.4rem 1.5rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-brief-stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));gap:1rem}
.ar-brief-stats b{display:block;font:640 2.1rem/1 var(--sans);font-stretch:108%;letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:var(--text)}
.ar-brief-stats span{display:block;margin-top:.4rem;font-size:.82rem;line-height:1.35;color:var(--text-3)}
.ar-brief-k{max-width:none;margin:1.15rem 0 .45rem;padding-top:.95rem;border-top:1px solid var(--line);font:600 .7rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-brief-names{list-style:none;margin:0;padding:0;display:grid;gap:.2rem}
.ar-brief-names code{font:400 .84rem/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
.ar-brief-h{margin-bottom:1.6rem}
.ar-brief-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem}
.ar-brief-cards>:last-child:nth-child(odd){grid-column:1/-1}
.ar-find--brief{display:flex;flex-direction:column;margin:0;box-shadow:inset 0 3px 0 var(--signal)}
.ar-find--brief .ar-find-kv{grid-template-columns:minmax(0,1fr)}
.ar-brief-do{max-width:none;margin:.9rem 0 0;font-size:.93rem;line-height:1.5;color:var(--text-2);overflow-wrap:anywhere}
.ar-brief-do b{font-weight:600;color:var(--text)}
.ar-brief-offer{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:4rem;align-items:start}
.ar-brief-sub{max-width:none;margin:.6rem 0 1.4rem;font-size:1.05rem;color:var(--text-2)}
.ar-brief-offer .checks{gap:.7rem}
.ar-brief-offer .checks li{font-size:.98rem;line-height:1.48}
.ar-brief-sample{max-width:none;margin:1.25rem 0 0;font-weight:600}
.ar-brief-sample a{color:var(--brand)}
.ar-offer{padding:1.6rem 1.7rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-offer-k{max-width:none;margin:0;font-size:.92rem;line-height:1.4;color:var(--text-2)}
.ar-offer-price{max-width:none;margin:.5rem 0 0;font:640 2.75rem/1 var(--sans);font-stretch:108%;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.ar-offer-p{max-width:none;margin:.6rem 0 0;font-size:.95rem;line-height:1.45;color:var(--text-2)}
.ar-offer .btns{margin-top:1.35rem}
.ar-brief-req{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:4rem;align-items:start}
.ar-brief-who{max-width:none;margin:.9rem 0 0;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.ar-brief-who b{font-weight:600;color:var(--text)}
.ar-req{scroll-margin-top:5.5rem}
@media (max-width:1000px){
  .ar-brief-hero{padding:3rem 0}
  .ar-brief-hero .container,.ar-brief-offer,.ar-brief-req,.ar-brief-more{grid-template-columns:minmax(0,1fr);gap:2.25rem}
  .ar-brief-more .ar-brief-stats{grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr))}
  .ar-brief-cards{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:420px){.ar-brief-stats{gap:.6rem}.ar-brief-stats b{font-size:1.7rem}.ar-brief-foot{padding:1.2rem 1.1rem}}

/* ── On paper: the board's copy. A4, white, For the board on one sheet, every finding whole, and nothing that only a screen needs ── */
.ar-cover-toc{display:none}
@media print{
  @page{size:A4;margin:15mm 14mm 16mm}
  html,body{font-size:10pt}
  body{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ar-rail,.ar-staff,.ar-ribbon,.ar-press,.xa-sample-hero,.closing,.footer:not(.footer--plain),.ar-brief-req,.ar-offer .btns,.ar-tag{display:none!important}
  .ar-body{display:block;padding:0;max-width:none}
  .container{max-width:none;padding:0}
  .ar-cover{--bg:#fff;--text:#0B1B2E;--text-2:#3E4F66;--text-3:#5C6D84;--line:#CFD8E3;--line-2:#CFD8E3;background:#fff;color:#0B1B2E;padding:22mm 0 0;break-after:page}
  .ar-cover .eyebrow{color:#2447D6}
  .ar-cover-h{font-size:30pt}
  .ar-cover-p{font-size:12pt}
  .ar-cover-kv{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr)}
  .ar-cover-toc{display:block;margin-top:14mm;padding-top:6mm;border-top:.5pt solid #CFD8E3}
  .ar-cover-toc p{max-width:none;margin:0 0 3mm;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:#5C6D84}
  .ar-cover-toc ol{list-style:decimal inside;margin:0;padding:0;display:grid;gap:1.6mm;font-size:11pt;color:#0B1B2E}
  .ar-sec{padding:0 0 9mm;border-bottom:0}
  #ar-footprint,#ar-story+#ar-board{break-before:page}
  .ar-sec-head{margin-bottom:5mm}
  .ar-sec .h2{font-size:18pt}
  .ar-h3{margin:5.5mm 0 2.5mm;break-after:avoid}
  .ar-dim-h,.ar-sec-head,.ar-find-head{break-after:avoid}
  .ar-dim-sec{margin-top:7mm}
  .ar-story,.ar-find,.ar-verdict,.ar-orphan,.ar-receipt-row,.ar-method,.ar-mon,.ar-offer,.ar-actions li,.ar-grades tr,.ar-hosts tr,.ar-breaches tr,.ar-inv tr,.ar-unknown,.ar-note{break-inside:avoid}
  .ar-story{grid-template-columns:minmax(0,1.14fr) minmax(0,.86fr);grid-template-areas:"text proof" "fix proof";gap:4mm 7mm}
  .ar-story-h{font-size:15pt}
  .ar-story-p{margin-top:2.5mm;font-size:10.5pt;line-height:1.45}
  .ar-story-proof{padding:3mm 3.5mm}
  .ar-find{padding:3.5mm 4mm}
  .ar-board-top--2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .ar-unknown,.ar-note{padding:3mm 4mm}
  .ar-unknown-n{font-size:22pt}
  .ar-note p{font-size:9.5pt;line-height:1.42}
  .ar-grades :is(th,td){padding:1.6mm 2.5mm}
  .ar-grades td{white-space:nowrap}
  .ar-g{width:1.75rem;height:1.75rem;margin-right:.35rem;font-size:.95rem}
  .ar-g--none{width:auto;height:1.75rem;padding:0 .35rem;font-size:.54rem}
  .ar-cov{font-size:.64rem;white-space:nowrap}
  .ar-foot-grade{margin-top:2mm;padding:1.6mm 2.5mm}
  .ar-verdicts,.ar-orphans,.ar-methods{grid-template-columns:repeat(auto-fit,minmax(50mm,1fr))}
  .ar-verdict{padding:3mm 3.5mm}
  .ar-verdict-w{margin-top:1.5mm;font-size:13pt}
  .ar-verdict-p{margin-top:1mm;font-size:8.5pt}
  .ar-google{padding-top:1.5mm;font-size:8pt}
  .ar-actions li{grid-template-columns:1.2rem minmax(0,1fr) auto 5.2rem 9.4rem;padding:1.7mm 0}
  .ar-action-t{font-size:9.5pt}
  .ar-action-m,.ar-action-w{grid-column:auto;grid-row:auto;font-size:8.5pt}
  .ar-unread li{grid-template-columns:minmax(0,16rem) minmax(0,1fr);font-size:8.5pt}
  .ar-hosts :is(th,td){padding:1.4mm 1.3mm;font-size:7.6pt;line-height:1.3}
  .ar-hosts :is(th,td):first-child{width:26.5%;padding-left:2.4mm}
  .ar-hosts .ar-c-from{width:11%}
  .ar-hosts .ar-c-live{width:7.5%}
  .ar-hosts .ar-c-plat{width:10.5%}
  .ar-hosts .ar-c-cert{width:14.5%}
  .ar-hosts .ar-c-state{width:12%}
  .ar-hosts code{font-size:7.4pt}
  .ar-pill{padding:.2mm .8mm;font-size:6.6pt}
  .ar-hosts .flag{padding:.3mm 1.1mm;font-size:6.6pt}
  .ar-watch{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);break-inside:avoid}
  .ar-grades,.ar-hosts,.ar-breaches,.ar-inv{display:table;width:100%}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) thead{display:table-header-group}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) tbody{display:table-row-group}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) :is(thead tr,tbody tr){display:table-row;margin:0;padding:0;border:0;border-radius:0}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) :is(thead th,thead td,tbody th,td){display:table-cell;border-bottom:.5pt solid #CFD8E3;background:transparent}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) tbody tr>td:last-child{border-bottom:.5pt solid #CFD8E3}
  :is(.ar-hosts,.ar-grades,.ar-breaches,.ar-inv) td::before{content:none}
  .ar-paste{background:#F4F6F9;color:#0B1B2E;border:.5pt solid #CFD8E3}
  .ar-mon-t{margin-top:2mm}
  a{text-decoration:none}
}
@media (prefers-reduced-motion:reduce){.xa-grades-go{transition:none}}
/* ===== B22 audit report END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B23 audit desk START ===== */
/* ===== B23 audit desk END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B24 who to ring START ===== */
/* A real face, a real name and a direct line on every page we send a customer (server/personcard.ts), the way a formal report names its
   consultant: the whole card beside the close, the compact one near the top, and a cell of the report's masthead. Every colour is a
   token, so a dark band turns it with no rules of its own. With no photo file there is no image, and the words take the room. */
.pcard{display:flex;align-items:flex-start;gap:1.25rem;margin:1.75rem 0 0;padding:1.1rem;max-width:32rem;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-lg);text-align:left}
.band--navy .pcard{border-color:#2C4666}
.pcard--words{padding:1.1rem 1.35rem;box-shadow:inset 3px 0 0 var(--live)}
.pcard-photo{flex:0 0 7.25rem;display:block;width:7.25rem;height:auto;aspect-ratio:3/4;object-fit:cover;object-position:50% 18%;border-radius:var(--r);background:var(--bg-2)}
.pcard-body{flex:1;min-width:0}
.pcard-body p{max-width:none;margin:0}
.pcard-k{font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.pcard-body .pcard-name{margin-top:.4rem;font:620 1.32rem/1.2 var(--sans);font-stretch:104%;letter-spacing:-.014em;color:var(--text)}
.pcard-body .pcard-role{margin-top:.12rem;font-size:.94rem;line-height:1.4;color:var(--text-2)}
.pcard-body .pcard-says{margin-top:.65rem;font-size:1rem;line-height:1.45;color:var(--text);text-wrap:balance}
.pcard-body .pcard-ring{margin-top:.4rem}
.pcard-ring .pcard-tel{display:inline-flex;align-items:center;gap:.5rem;min-height:2.5rem;font:620 1.3rem/1.2 var(--sans);font-stretch:104%;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--text);text-underline-offset:.22em}
.pcard-ic{flex:none;width:1.1rem;height:1.1rem;color:var(--live)}
.pcard-body .pcard-place{margin-top:.3rem;font-size:.86rem;line-height:1.45;color:var(--text-3);overflow-wrap:anywhere}
.pcard-body .pcard-also{margin-top:.7rem;padding-top:.65rem;border-top:1px solid var(--line);font-size:.92rem;line-height:1.45;color:var(--text-2)}
.pcard-tel2{font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}
/* the compact one */
.pcard--line{align-items:center;gap:.8rem;margin:1.6rem 0 0;padding:0;background:none;border:0;border-radius:0}
.pcard-face{flex:none;width:3.25rem;height:3.25rem;border-radius:50%;object-fit:cover;object-position:50% 18%;background:var(--bg-2)}
.pcard-text{display:grid;gap:.08rem;min-width:0;max-width:none;margin:0;font-size:.95rem;line-height:1.4;color:var(--text-2)}
.pcard--line .pcard-k{font-size:.7rem}
.pcard-who b{font-weight:600;color:var(--text)}
.pcard--line .pcard-tel{justify-self:start;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}
/* the masthead's cell */
.pf-by dd{display:flex;align-items:center;gap:.7rem}
.pf-by .pcard-face{width:2.9rem;height:2.9rem}
.pf-by-who{display:grid;min-width:0}
.pf-by-who b{font-weight:500}
.pf-by-who span{font-size:.84rem;font-weight:400;line-height:1.3;color:var(--text-2)}
.pf-by-who .pcard-tel{justify-self:start;font-size:.92rem;line-height:1.35;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap}
.pf-offer .pcard+.talk{margin-top:1.1rem;padding-top:0;border-top:0}
.pf-offer .pcard{max-width:34em}
.sr-fix-grid .pcard{margin-top:1.5rem}
.sr-note .pcard--line{margin-top:1.25rem}
@media (max-width:720px){
  .pf-by-who .pcard-tel,.pcard--line .pcard-tel{display:inline-flex;align-items:center;min-height:44px;margin:-.5rem 0 -.6rem}
}
@media (max-width:480px){
  .pcard{gap:.9rem;padding:.9rem}
  .pcard--line{padding:0}
  .pcard-photo{flex-basis:5.5rem;width:5.5rem}
  .pcard-body .pcard-name,.pcard-ring .pcard-tel{font-size:1.2rem}
}
/* ===== B24 who to ring END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B24 watch page START ===== */
/* Supplier Watch's public page (31 Oct 2026, FUNNELS-CONTRACT.md §5, lane 1, server/sitepages-watch.ts), and the small pieces the other pages take for it:
   the hand-off on /supplier-check, the slim card on /cyber and the line on a UK proof page. The opening, the exhibit and the prices use the audit
   page's pieces (B21), so the two read as one practice. Everything new here starts sw-, and the two exceptions are named for the pages they sit on. */

/* ── What you receive: three cards over two, the row's heights level ── */
.sw-gets{grid-template-columns:repeat(6,minmax(0,1fr))}
.sw-gets>.card{grid-column:span 2}
.sw-gets>.card:nth-child(n+4){grid-column:span 3}
.sw-gets>.card:hover{transform:none}
@media (max-width:1000px){
  .sw-gets{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sw-gets>.card,.sw-gets>.card:nth-child(n+4){grid-column:span 1}
  .sw-gets>.card:last-child{grid-column:1/-1}
}
@media (max-width:760px){.sw-gets{grid-template-columns:minmax(0,1fr)}}

/* ── Prices: the lines under the table ── */
.sw-note{max-width:46rem;margin:.6rem 0 0;font-size:.98rem;line-height:1.55;color:var(--text-2);text-wrap:pretty}
.sw-note--first{margin-top:1.25rem;font-weight:600;color:var(--text)}
.sw-note a{font-weight:600;color:var(--brand)}
@media (min-width:761px){.sw-tiers .compare{table-layout:fixed}.sw-tiers .compare thead td,.sw-tiers .compare tbody th{width:22%}}

/* ── Where it sits in your file, beside what it does not do ── */
.sw-file{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3rem 5rem;align-items:start}
.sw-file .h2{font-size:clamp(1.55rem,2.3vw,1.95rem)}
.sw-file-p{max-width:34em;margin:1.1rem 0 0;font-size:1.06rem;line-height:1.6;color:var(--text-2);text-wrap:pretty}
.sw-nots{list-style:none;margin:1rem 0 0;padding:0}
.sw-nots li{padding:.95rem 0;border-top:1px solid var(--line-2);font-size:1rem;line-height:1.5;color:var(--text-2);text-wrap:pretty}
.sw-nots li:first-child{border-top:0;padding-top:0}
.sw-nots li:last-child{padding-bottom:0}
@media (max-width:860px){.sw-file{grid-template-columns:minmax(0,1fr)}}

/* ── The quote: the form, and who writes back ── */
.sw-quote{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:2.5rem 4rem;align-items:start}
.sw-form .form-row--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.sw-tick{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:start;font-size:.98rem;line-height:1.45;color:var(--text);cursor:pointer}
.sw-tick input{width:1.15rem;height:1.15rem;margin:.14rem 0 0;accent-color:var(--brand)}
.sw-form .btn{min-width:13rem}
.sw-quote .pcard{margin:0}
@media (max-width:900px){.sw-quote{grid-template-columns:minmax(0,1fr)}.sw-quote .pcard{max-width:34rem}}
@media (max-width:760px){.sw-tick{min-height:44px;align-items:center}.sw-tick input{margin:0}}
@media (max-width:700px){.sw-form .form-row--2{grid-template-columns:minmax(0,1fr)}.sw-form .btn{width:100%}}

/* ── /cyber: the slim card between the audit's and Supplier Check's ── */
.sw-org-card{align-items:center}
.sw-org-card .card-p{max-width:38em;margin-top:.9rem}
.sw-org-card .hb-org-side{justify-content:center}
.sw-org-card .card-go{align-self:flex-start;padding-top:.9rem}
.sw-org-from{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .45rem;max-width:none;margin:0;font:640 1.9rem/1.1 var(--sans);font-stretch:108%;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text)}
.sw-org-from small{font:500 .84rem/1 var(--sans);letter-spacing:0;color:var(--text-3)}
.sw-org-from span{font:400 .92rem/1.4 var(--sans);letter-spacing:0;color:var(--text-2)}

/* ── /supplier-check: the public band's hand-off to Supplier Watch ── */
.sc-public--hand{align-items:start}
.sc-hand{padding-top:2rem}
p.sc-hand-line{max-width:none;margin:0 0 1.35rem;font-size:1.08rem;line-height:1.55;color:var(--text)}
@media (max-width:900px){.sc-hand{padding-top:0}}

/* ── A UK proof page: the line for a firm over 50 staff, under the clean-up's price ── */
p.pf-audit{max-width:36em;margin:1.1rem 0 0;font-size:.95rem;line-height:1.55;color:var(--text-2)}
.pf-audit a{color:var(--text)}
/* ===== B24 watch page END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B25 body page START ===== */
/* One public body's private Supplier Watch page (server/supcheck/body-pages.ts), which is also the one-page pack: a dossier, not a sales page. One figure table,
   one price, one action. On paper it is one A4 sheet: the opening collapses, the form and the buttons go, and the figures and the price stay. */
.bw-hero{padding:3.75rem 0 3.25rem;background:var(--bg-2);border-bottom:1px solid var(--line)}
.bw-h1{font-size:clamp(2.1rem,4.2vw,3.4rem);line-height:1.05;overflow-wrap:break-word}
.bw-ref{max-width:none;margin:.9rem 0 0;font:400 .84rem/1.45 var(--mono);color:var(--text-3)}
.bw-lede{max-width:44rem;margin:1rem 0 0;font-size:1.08rem}
.bw-found .h2{margin-bottom:1.6rem}
.bw-figures{width:100%;border-collapse:collapse;border:0;background:none;font-size:1rem}
.bw-figures :is(th,td){padding:.72rem 1rem .72rem 0;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;vertical-align:baseline;font:400 1rem/1.4 var(--sans);color:var(--text-2)}
.bw-figures thead th{padding-top:0;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.bw-figures tbody th{width:46%;color:var(--text)}
.bw-figures tbody tr:last-child :is(th,td){border-bottom:1px solid var(--line)}
.bw-figures .bw-n{font-weight:620;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text)}
.bw-figures .bw-on{padding-right:0;font:400 .84rem/1.4 var(--mono);white-space:nowrap;color:var(--text-3)}
.bw-one{margin-top:2rem;padding:1.15rem 1.35rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 3px 0 0 var(--brand)}
.bw-one .bw-k{margin:0}
.bw-one-p{max-width:none;margin:.5rem 0 0;font-size:1rem;line-height:1.5;color:var(--text);overflow-wrap:anywhere}
.bw-k{max-width:none;margin:0 0 .75rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.bw-two{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:4rem;align-items:start}
.bw-does{margin-top:1.4rem;gap:.7rem}
.bw-does li{font-size:1rem;line-height:1.48}
.bw-price{padding:1.6rem 1.7rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.bw-money{max-width:none;margin:0;font:640 2.75rem/1 var(--sans);font-stretch:108%;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.bw-per{max-width:none;margin:.6rem 0 0;font-size:1rem;line-height:1.45;color:var(--text)}
.bw-buy{max-width:none;margin:.65rem 0 0;font-size:.93rem;line-height:1.48;color:var(--text-2)}
.bw-press{margin-top:1.3rem}
.bw-small .bw-two{gap:3rem;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.bw-line{max-width:none;margin:0 0 .55rem;font-size:.95rem;line-height:1.5;color:var(--text-2)}
.bw-line:last-child{margin-bottom:0}
.bw-ask{scroll-margin-top:4.5rem}
.bw-ask .bw-form{margin-top:1.4rem}
.bw-form .form-row--2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.bw-tick{display:grid;grid-template-columns:1.25rem minmax(0,1fr);gap:.65rem;align-items:start;font-size:.96rem;line-height:1.45;color:var(--text);cursor:pointer}
.bw-tick input{width:1.15rem;height:1.15rem;margin:.14rem 0 0;accent-color:var(--brand)}
.bw-asked{max-width:none;margin:1.4rem 0 0;padding:1rem 1.2rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 3px 0 0 var(--pass);font-size:1rem;line-height:1.5;color:var(--text)}
.bw-who .pcard{margin:0}
.bw-foot{padding:1.4rem 0}
.bw-entity{max-width:none;margin:0;font-size:.84rem;line-height:1.5;color:var(--text-3)}
@media (max-width:900px){
  .bw-two,.bw-small .bw-two{grid-template-columns:minmax(0,1fr);gap:2.25rem}
}
@media (max-width:600px){
  .bw-hero{padding:2.5rem 0 2.25rem}
  .bw-form .form-row--2{grid-template-columns:minmax(0,1fr)}
  .bw-figures thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .bw-figures,.bw-figures tbody{display:block}
  .bw-figures tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.1rem .75rem;padding:.7rem 0;border-bottom:1px solid var(--line)}
  .bw-figures :is(th,td),.bw-figures tbody tr:last-child :is(th,td){padding:0;border:0}
  .bw-figures tbody th{width:auto}
  .bw-figures .bw-n{text-align:right}
  .bw-figures .bw-on{grid-column:1/-1;font-size:.78rem}
  .bw-price{padding:1.3rem 1.25rem 1.4rem}
  .bw-money{font-size:2.35rem}
}
/* On paper: one A4 sheet, in two columns under a short head. What a reader files, and nothing only a screen needs. */
@media print{
  body.plain:has(.bw-page){font-size:9.6pt}
  body.plain:has(.bw-page) .nav{padding:0;border:0;background:none}
  body.plain:has(.bw-page) .footer--plain,.bw-press,.bw-ask-form{display:none!important}
  .bw-page .band{padding:0;background:none;border:0}
  .bw-page .h2{font-size:13pt;letter-spacing:-.01em}
  .bw-hero{padding:0 0 3.5mm;background:none;border-bottom:.5pt solid #CFD8E3}
  .bw-hero .eyebrow{margin:0 0 .8mm;font-size:7.4pt}
  .bw-h1{font-size:19pt;line-height:1.1}
  .bw-ref{margin:.8mm 0 0;font-size:7.8pt}
  .bw-lede{max-width:none;margin:1.2mm 0 0;font-size:9.4pt;line-height:1.38}
  .bw-found{margin-top:4.5mm}
  .bw-found .h2{margin-bottom:1.6mm}
  .bw-figures :is(th,td){padding:.95mm 3mm .95mm 0;font-size:9.4pt;line-height:1.28}
  .bw-figures thead th{font-size:7pt}
  .bw-figures .bw-on{padding-right:0;font-size:7.8pt}
  .bw-figures tbody tr:last-child :is(th,td){border-bottom:.5pt solid #CFD8E3}
  .bw-one{margin-top:2.6mm;padding:1.8mm 3mm;box-shadow:none;border:.5pt solid #CFD8E3;border-left:1.4pt solid #2447D6;break-inside:avoid}
  .bw-one-p{margin-top:.6mm;font-size:9.2pt;line-height:1.34}
  .bw-k{margin:0 0 1mm;font-size:7.2pt}
  .bw-two,.bw-small .bw-two{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:7mm}
  .bw-offer{margin-top:4.5mm}
  .bw-does{margin-top:1.6mm;gap:.6mm}
  .bw-does li{font-size:9.2pt;line-height:1.3;grid-template-columns:3.2mm 1fr;gap:1mm}
  .bw-does li::before{width:2.2mm;height:1.1mm;margin-top:1.1mm;border-width:1pt}
  .bw-price{padding:0;border:0;background:none;box-shadow:none}
  .bw-money{font-size:21pt}
  .bw-per{margin-top:.7mm;font-size:9.2pt;line-height:1.3}
  .bw-buy{margin-top:.8mm;font-size:8.6pt;line-height:1.3}
  .bw-small{margin-top:4.5mm}
  .bw-line{margin-bottom:.8mm;font-size:8.6pt;line-height:1.32}
  .bw-ask{margin-top:4.5mm}
  .bw-ask .bw-two{display:block}
  .bw-who .pcard{display:block;max-width:none;padding:0;border:0;background:none;box-shadow:none}
  .bw-who .pcard-photo,.bw-who .pcard-says,.bw-who .pcard-place,.bw-who .pcard-also{display:none}
  .bw-who .pcard-body{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 2.5mm}
  .bw-who .pcard-body .pcard-k{flex-basis:100%;font-size:7.2pt}
  .bw-who .pcard-body .pcard-name{margin:0;font-size:9.4pt;font-weight:600}
  .bw-who .pcard-body .pcard-role{margin:0;font-size:9.2pt}
  .bw-who .pcard-body .pcard-ring{margin:0}
  .bw-who .pcard-ring .pcard-tel{min-height:0;font-size:9.4pt;font-weight:600}
  .bw-who .pcard-ic{display:none}
  .bw-foot{margin-top:2.6mm;padding:0}
  .bw-entity{font-size:7.6pt}
}
/* ===== B25 body page END ===== */
/* - - - */
/* - - - */
/* - - - */
/* ===== B26 brief bands START ===== */
/* ── What a press lands on: hidden until the 303's address points at it, because the route that prints the Brief hands it no query ── */
.ar-said{display:none;max-width:none;margin:0;padding:.9rem 1.5rem;background:var(--brand);color:#fff;font:600 1rem/1.4 var(--sans);text-align:center}
.ar-said:target{display:block}
/* ── The contract line, in the hero: what AusTender holds, dated ── */
.ar-contract{max-width:46em;margin:1rem 0 0}
.ar-contract-p{max-width:none;margin:0;font-size:1.05rem;line-height:1.55;color:var(--text);overflow-wrap:anywhere}
.ar-contract-src{display:flex;flex-wrap:wrap;gap:.15rem 1rem;max-width:none;margin:.45rem 0 0;font-size:.82rem;line-height:1.4;color:var(--text-3)}
.ar-contract-src code{font:400 .79rem/1.5 var(--mono);color:var(--text-2);overflow-wrap:anywhere}
/* ── Check it yourself: the lookup under each finding, and what it gave on the day. The story's fix keeps its own look with this after it ── */
.ar-story-fix>p:not(.ar-story-k){max-width:38em;margin:0;font-size:1.04rem;line-height:1.55;color:var(--text);overflow-wrap:anywhere}
.ar-check{margin:.95rem 0 0;padding:.7rem .85rem;background:var(--bg-2);border:1px solid var(--line);border-radius:8px}
.ar-check .ar-check-k{max-width:none;margin:0 0 .3rem;font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-check-c{display:block;font:400 .82rem/1.5 var(--mono);color:var(--text);overflow-wrap:anywhere}
.ar-check .ar-check-p{max-width:none;margin:.3rem 0 0;font-size:.86rem;line-height:1.45;color:var(--text-2);overflow-wrap:anywhere}
.ar-check-p span{color:var(--text-3)}
/* ── The block for IT: one panel a director can forward whole ── */
.ar-it{padding:1.6rem 1.7rem 1.75rem;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:inset 0 3px 0 var(--brand)}
.ar-it-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem 2rem}
.ar-it-head .ar-brief-sub{margin:.45rem 0 0;overflow-wrap:anywhere}
.ar-it-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.15rem 2.25rem;margin:1.35rem 0 0}
.ar-it-kv>div{min-width:0}
.ar-it-kv>div:last-child:nth-child(odd){grid-column:1/-1}
.ar-it-kv dt{font:600 .72rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.ar-it-kv dd{max-width:46em;margin:.35rem 0 0;font-size:.97rem;line-height:1.52;color:var(--text);overflow-wrap:anywhere}
.ar-it-kv code{display:block;padding:.65rem .8rem;background:var(--console);border-radius:8px;color:var(--ps-text);font:400 .8rem/1.55 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
/* ── The offer: the step after the report, nothing asking for it, and on Small the fix alone ── */
.ar-offer-next{max-width:none;margin:.5rem 0 0;font-size:.92rem;line-height:1.45;color:var(--text-3)}
.ar-offer-fix{max-width:none;margin:1.1rem 0 0;padding-top:.9rem;border-top:1px solid var(--line);font-size:.93rem;line-height:1.5;color:var(--text-2)}
.ar-offer-fix a{font-weight:600;color:var(--brand)}
.ar-offer .ar-press{display:contents}
/* ── The request and the correction ── */
.ar-brief-asks{display:grid;gap:1.5rem;min-width:0}
.ar-req .btns{margin-top:.25rem}
.ar-cor{padding-top:1.1rem;border-top:1px solid var(--line);font-size:.95rem;color:var(--text-2)}
.ar-cor summary{cursor:pointer;font-weight:600;color:var(--text)}
.ar-cor form{margin-top:1rem}
@media (max-width:980px){.ar-it-kv{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.ar-it{padding:1.25rem 1.15rem 1.35rem}.ar-it-copy{width:100%}}
@media print{.ar-said,.ar-it-copy{display:none!important}.ar-it{break-inside:avoid;box-shadow:none}.ar-it-kv code{background:none;color:inherit;padding:0}}
/* ===== B26 brief bands END ===== */
