.brand .ai{color:var(--brand-accent)}
main{overflow-x:clip}
.route-icon,.step-icon,.route-chip svg{width:40px;height:40px;color:var(--brand-glow);display:block}
.route-title{display:flex;align-items:center;gap:var(--space-3)}.route-title .route-icon{display:flex;align-items:center}
details.uplift-depth{margin-block:var(--space-3)}
details.uplift-depth>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:var(--font-semibold)}
details.uplift-depth>summary:focus-visible,details>summary:focus-visible{outline:3px solid var(--brand-accent);outline-offset:3px}
.research-block,.research-note{max-width:1280px;margin:var(--space-8) auto;padding:var(--space-6);border-top:3px solid #CE9C1B;display:grid;grid-template-columns:minmax(220px,260px) minmax(0,1fr);gap:48px;background:var(--bg-elevated)}
.research-margin{align-self:start}.route-chip,.research-kicker{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--font-semibold)}
.route-chip svg{width:24px;height:24px}.research-kicker svg{width:24px;height:24px;color:#CE9C1B}.research-caveat{color:var(--text-secondary)}
.figure-tag{font-family:var(--font-mono);color:#CE9C1B}.research-bars{margin-block:var(--space-6)}
.research-bar-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,3fr) 4ch;align-items:center;gap:var(--space-3);margin-block:var(--space-3)}
.research-bar-track{height:18px;background:var(--bg-raised)}.research-bar{display:block;height:100%;background:var(--text-secondary)}.research-bar.primary{background:var(--brand-accent)}
.research-axis{display:flex;justify-content:space-between;margin-left:calc(25% + var(--space-3));font-family:var(--font-mono);font-size:.875rem}
.research-source{font-size:.9rem}.research-source div{display:grid;grid-template-columns:7rem 1fr;gap:var(--space-2)}.research-source dt{font-weight:var(--font-semibold)}
.research-pointer{font-size:.9rem}.research-figure table{width:100%;border-collapse:collapse}.research-figure th,.research-figure td{border-bottom:1px solid var(--border-strong);padding:var(--space-2);text-align:left}
.research-categories{list-style:none;padding:0;display:grid;gap:var(--space-2)}.research-categories li{border:1px solid var(--border-strong);padding:var(--space-3)}
@media(max-width:700px){.research-block,.research-note{grid-template-columns:1fr;gap:var(--space-4);margin-inline:var(--space-3)}.research-bar-row{grid-template-columns:1fr 3rem}.research-bar-track{grid-column:1}.research-axis{margin-left:0}.research-source div{grid-template-columns:1fr}}
@media print{details::details-content{content-visibility:visible!important;display:block!important}.research-block,.research-note{break-inside:avoid;background:transparent}}
.research-figure h3{font-size:var(--text-h4,1.5rem);margin-block:var(--space-2)}.research-bar-row>span{font-size:1rem;line-height:1.4}.research-bar-row>strong{font-size:1.125rem;font-variant-numeric:tabular-nums}
.trust-columns>*{min-width:0}.trust-card{overflow-wrap:anywhere}
#routes .agents>.card{display:flex;flex-direction:column}#routes .agents>.card>.actions{margin-top:auto}#routes .agents>.card>:nth-last-child(2){margin-bottom:var(--space-8)}

/* R-25.53 §1 persistent navigation. Sticky only once the header script has enhanced it, so a no-JS
   phone header (full native link list) is never pinned over the page. */
.header.nav-enhanced{position:sticky;top:0;z-index:40;background:var(--bg-base)}
html{scroll-padding-top:var(--tb-header-h,96px)}
section,[id]{scroll-margin-top:var(--tb-header-h,96px)}
@media(max-width:860px){
  .nav-enhanced.menu-open .navlinks{max-height:calc(100vh - var(--tb-header-h,80px));max-height:calc(100dvh - var(--tb-header-h,80px));overflow-y:auto;overscroll-behavior:contain}
}

/* R-25.53 §2 numbered six-stage procurement method. Desktop: one linear rail (topology A).
   Phone: one vertical spine, number/icon/name on one compact row (topology C). */
.procurement-rail{list-style:none;padding:0;margin-block:var(--space-8);display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--space-4);position:relative}
.procurement-rail .proc-step{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"num num" "icon icon" "name name" "desc desc";align-content:start;padding-top:0}
.procurement-rail .proc-num{grid-area:num;font:600 1rem/1 var(--font-mono);color:var(--brand-glow);letter-spacing:.04em;margin-bottom:var(--space-3)}
.procurement-rail .step-icon{grid-area:icon;width:48px;height:48px;padding:10px;margin:0 0 var(--space-3);box-sizing:border-box;border:1.5px solid var(--brand-glow);border-radius:50%;background:var(--bg-base);position:relative;z-index:1}
.procurement-rail .step-icon svg{width:100%;height:100%;display:block}
/* the single connecting route: from each node's icon centre to the next node's icon centre */
.procurement-rail .proc-step:not(:last-child)::after{content:"";position:absolute;top:calc(1rem + var(--space-3) + 24px);left:48px;right:calc(-1 * var(--space-4));height:2px;background:var(--brand-glow);opacity:.55}
.procurement-rail .proc-name{grid-area:name;font-weight:var(--font-semibold,600);font-size:1.0625rem;line-height:1.3;color:var(--text-primary)}
.procurement-rail .proc-sep{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.procurement-rail .proc-desc{grid-area:desc;margin-top:var(--space-2);font-size:.9375rem;line-height:1.5;color:var(--text-secondary)}
@media(max-width:1000px) and (min-width:701px){.procurement-rail{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:var(--space-8)}.procurement-rail .proc-step:nth-child(3)::after{display:none}}
@media(max-width:700px){
  .procurement-rail{grid-template-columns:1fr;gap:0}
  .procurement-rail .proc-step{grid-template-columns:2.25rem 48px 1fr;grid-template-areas:"num icon name" ". . desc";column-gap:var(--space-3);align-items:center;padding-bottom:var(--space-5)}
  .procurement-rail .proc-num{margin:0}
  .procurement-rail .step-icon{margin:0}
  .procurement-rail .proc-desc{margin-top:var(--space-1);align-self:start}
  .procurement-rail .proc-step:not(:last-child)::after{top:48px;bottom:0;left:calc(2.25rem + var(--space-3) + 23px);right:auto;width:2px;height:auto}
}
@media print{.procurement-rail .proc-step::after{display:none}.header.nav-enhanced{position:static}}

/* R-25.53 §4 cover-led issue cards: the front cover is the main clickable surface. */
.cover-card{display:flex;flex-direction:column;padding:0;overflow:hidden}
.cover-card__link{display:flex;flex-direction:column;text-decoration:none;color:inherit;flex:1}
.cover-card__frame{display:block;aspect-ratio:4/5;background:var(--bg-void);border-bottom:1px solid var(--border-default);padding:var(--space-4)}
.cover-card__img{display:block;width:100%;height:100%;object-fit:contain;object-position:center top}
.cover-card__meta{display:block;padding:var(--space-5) var(--space-6) 0}
.cover-card__meta .eyebrow{display:block;margin-bottom:var(--space-2)}
.cover-card__meta h3{text-decoration:underline;text-decoration-color:transparent;text-underline-offset:5px;transition:text-decoration-color var(--duration-normal,.2s) var(--ease-out,ease)}
.cover-card__cta{display:inline-block;margin-top:var(--space-3);font-weight:600;color:var(--brand-glow)}
.cover-card__link:hover h3,.cover-card__link:focus-visible h3{text-decoration-color:currentColor}
.cover-card__link:focus-visible{outline:3px solid var(--brand-accent);outline-offset:-3px}
.cover-card .cover-card__summary{margin:var(--space-3) var(--space-6) var(--space-6);font-size:.9375rem}
#issues .agents{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1000px){#issues .agents{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){#issues .agents{grid-template-columns:1fr}.cover-card__frame{aspect-ratio:auto;height:auto}.cover-card__img{height:auto}}
@media(prefers-reduced-motion:reduce){.cover-card__meta h3{transition:none}}
/* Release A (27 Oct, Luke via Rodrick). 1 Menu parity: site.css `.navlinks a:last-child` painted every link green while the
   About/Solutions/Media buttons stayed white. One rest colour, one hover/focus colour, one current-page marker for links and
   buttons, desktop and phone. */
.navlinks .nav-menu a,.navlinks .nav-parent{color:var(--text-primary);text-decoration:none}
.navlinks .nav-menu a:hover,.navlinks .nav-parent:hover,.navlinks .nav-menu a:focus-visible,.navlinks .nav-parent:focus-visible{color:var(--brand-glow);text-decoration:none}
.navlinks .nav-menu [aria-current=page]{color:var(--brand-glow);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
/* 2 Underlines: standalone links (source titles, route links, account links, footer) read as links by colour; the line
   appears only on hover/focus. Links inside running prose keep one consistent underline. */
main a:not(.button):not(.cover-card__link):not(.skip),.footer-links a{color:var(--brand-glow);text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:1px;text-underline-offset:4px}
main a:not(.button):not(.cover-card__link):not(.skip):hover,main a:not(.button):not(.cover-card__link):not(.skip):focus-visible,.footer-links a:hover,.footer-links a:focus-visible{text-decoration-color:currentColor}
main .reading p:not(.route-link) a:not(.button):not(.cover-card__link):not(.skip){color:inherit;text-decoration-color:var(--brand-accent)}
main .reading p:not(.route-link) a:not(.button):not(.cover-card__link):not(.skip):hover,main .reading p:not(.route-link) a:not(.button):not(.cover-card__link):not(.skip):focus-visible{color:var(--brand-glow);text-decoration-color:currentColor}
/* Release A 2b (Ivor 28 Oct): the reveal wraps words in inline-block .tb4-word, which blocks underline propagation. Words inside
   any underlined main/footer link take the link's own decoration, so the line runs continuously across words and spaces. */
main a:not(.button):not(.cover-card__link):not(.skip) .tb4-word,.footer-links a .tb4-word{text-decoration:inherit}
