/* ============================================================
   MyRISK — site styles
   Palette: MyRISK brand — navy #163B6D ground, turquoise #56BBAF accent,
   aqua for data, cool mist for light sections.
   Type: Archivo (display) / IBM Plex Sans (body) / IBM Plex Mono (utility)
   ============================================================ */

:root{
  /* ---- MyRISK primary brand colours ---- */
  --turquoise:#56BBAF;        /* primary accent */
  --navy:#163B6D;             /* primary dark */
  --aqua:#0C80B5;             /* graphics only - fails as text on both grounds */
  --ocean:#074BAD;            /* secondary action, gradients */

  /* ---- derived steps (not brand colours - shades/tints for contrast) ---- */
  --navy-deep:#0C2445;        /* deepest ground: topbar, strip, footer */
  --navy-mid:#1F4E8C;         /* raised dark surface, hover on dark */
  --aqua-light:#9AD0EA;       /* data text on dark - 6.69:1 on navy */
  --turquoise-bright:#8FD8CE; /* hover on fills, accent text on deepest ground */
  --turquoise-ink:#0B5A50;    /* accent TEXT on light - 8.1:1 on white */

  /* ---- semantic aliases: components reference these, never the brand names ---- */
  --ink:var(--navy);
  --ink-deep:var(--navy-deep);
  --slate:var(--navy-mid);
  --accent:var(--turquoise);
  --accent-ink:var(--turquoise-ink);
  --accent-bright:var(--turquoise-bright);
  --steel:var(--aqua-light);

  --mist:#F1F4F8;
  --mist-2:#E4EAF1;
  --paper:#FFFFFF;
  --body:#42536B;
  --line-dark:rgba(255,255,255,.15);
  --line-light:#DCE3EC;

  --display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --sans:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  /* Semantic status. Carried over from the application style guide, whose pairs are measured:
     each ink clears AA on white and on its own tint. Marketing never needed these; the check
     result screens and the boundary blocks do, and sharing them with the product means a
     "review due" looks the same on the website as it does inside Trace. */
  --ok:#1B7A45;      --ok-tint:#E7F5EC;
  --warn:#8A5B00;    --warn-tint:#FCF3DF;
  --danger:#B3261E;  --danger-tint:#FBEBEA;
  --info:#075D84;    --info-tint:#E8F3F9;
  --warn-bright:#E3B04A;   /* the amber that survives a navy ground, as --accent-bright does */

  /* Heading scale. Four roles, and a heading takes its size from the role it plays rather than
     from the tag it happens to use. Before this there were four h3 sizes (16/17/22/24px) and two
     label sizes 0.3px apart -- differences nobody chose, which is what made the page feel
     unsettled. The application style guide's idea, not its numbers: one size per role. */
  --fs-page:clamp(2.3rem,4.6vw,3.7rem);      /* h1 -- one per page */
  --fs-section:clamp(1.85rem,3.2vw,2.6rem);  /* h2 -- section openers */
  --fs-block:clamp(1.15rem,1.7vw,1.35rem);   /* h3 -- a block within a section */
  --fs-card:1.06rem;                          /* titles inside cards, steps, Q&A */
  --fs-label:.7rem;                          /* every small caps label: eyebrow, crumb, kicker, column head */
  --ls-label:.14em;                          /* and its tracking, which had drifted across .10-.16em */
  --fs-record:.68rem;                        /* mono record data: IDs, timestamps, counts */
  --fs-small:.78rem;                         /* small body text: legal lines, status words */

  --wrap:1200px;
  --pad:clamp(20px,5vw,40px);
  --r:14px;
}

*,*::before,*::after{box-sizing:border-box}

html{scroll-behavior:smooth}

body{
  margin:0;
  background:var(--paper);
  color:var(--body);
  font-family:var(--sans);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%;display:block}
a{color:inherit}

h1,h2,h3,h4{
  font-family:var(--display);
  color:var(--ink);
  font-weight:700;
  letter-spacing:-.022em;
  line-height:1.1;
  margin:0 0 .5em;
}

h1{font-size:var(--fs-page)}
h2{font-size:var(--fs-section)}
h3{font-size:var(--fs-block);letter-spacing:-.012em}
h4{font-size:var(--fs-card);letter-spacing:-.005em}
p{margin:0 0 1.1em}
ul{margin:0;padding:0;list-style:none}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.narrow{max-width:820px}

/* ---------- utility type ---------- */
.eyebrow{
  font-family:var(--mono);
  font-size:var(--fs-label);
  letter-spacing:var(--ls-label);
  text-transform:uppercase;
  color:var(--accent-ink);
  display:flex;
  align-items:center;
  gap:.7em;
  margin:0 0 1.1rem;
  font-weight:500;
}
.eyebrow::before{
  content:"";
  width:26px;height:1px;
  background:var(--accent);
  flex:none;
}
.lede{font-size:clamp(1.05rem,1.55vw,1.22rem);line-height:1.6}
.mono{font-family:var(--mono);font-size:.8rem;letter-spacing:.04em}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.55em;
  font-family:var(--sans);font-weight:600;font-size:.96rem;
  padding:.85em 1.5em;border-radius:8px;border:1px solid transparent;
  text-decoration:none;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease;
}
.btn:hover{transform:translateY(-1px)}
.btn--accent{background:var(--accent);color:var(--navy-deep)}
.btn--accent:hover{background:var(--accent-bright)}
.btn--ink{background:var(--ocean);color:#fff}
.btn--ink:hover{background:var(--navy)}
.btn--ghost{border-color:rgba(255,255,255,.28);color:#fff}
.btn--ghost:hover{border-color:#fff;background:rgba(255,255,255,.07)}
.btn--outline{border-color:var(--line-light);color:var(--ink);background:#fff}
.btn--outline:hover{border-color:var(--ink)}
.btn__arrow{transition:transform .18s ease}
.btn:hover .btn__arrow{transform:translateX(3px)}

.textlink{
  font-family:var(--sans);font-weight:600;font-size:.94rem;
  color:var(--ink);text-decoration:none;
  display:inline-flex;align-items:center;gap:.45em;
  border-bottom:1px solid var(--accent);padding-bottom:2px;
}
.textlink:hover{color:var(--accent-ink)}
.on-ink .textlink{color:#fff}

/* ---------- announcement + header ---------- */
.topbar{
  background:var(--ink-deep);color:rgba(255,255,255,.82);
  font-size:.85rem;text-align:center;padding:.6rem var(--pad);
}
.topbar a{color:#fff;text-decoration:none;border-bottom:1px solid var(--accent)}
.topbar strong{color:var(--accent-bright);font-weight:600}

.nav{
  position:sticky;top:0;z-index:60;
  background:rgba(22,59,109,.92);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-dark);
}
.nav__inner{
  display:flex;align-items:center;gap:2rem;
  height:72px;
}
.brand{
  font-family:var(--display);font-weight:700;font-size:1.32rem;
  color:#fff;text-decoration:none;letter-spacing:-.02em;flex:none;
}
.brand span{color:var(--accent)}
.brand sup{font-size:.5em;top:-.7em;position:relative;color:rgba(255,255,255,.5)}

.nav__links{display:flex;align-items:center;gap:.35rem;margin-left:auto}
.nav__item{position:relative}
.nav__link{
  position:relative;
  background:transparent;border:0;cursor:pointer;font-family:var(--sans);
  display:inline-flex;align-items:center;gap:.35em;
  color:rgba(255,255,255,.82);text-decoration:none;
  font-size:.95rem;font-weight:500;
  padding:.6em .85em;border-radius:7px;
  transition:color .15s ease,background .15s ease;
}
.nav__link:hover,.nav__link[aria-expanded="true"]{color:#fff;background:rgba(255,255,255,.08)}
.nav__link.is-current{color:#fff}
.nav__link.is-current::after{
  content:"";position:absolute;left:.85em;right:.85em;bottom:.15em;height:2px;background:var(--accent);
}
.caret{width:9px;height:9px;opacity:.6}

.mega{
  position:absolute;top:calc(100% + 10px);right:0;
  width:min(620px,80vw);
  background:#fff;border-radius:var(--r);
  border:1px solid var(--line-light);
  box-shadow:0 24px 60px rgba(12,36,69,.30);
  padding:1.6rem;
  display:none;grid-template-columns:1fr 1fr;gap:1.6rem;
}
.mega.is-open{display:grid}
.mega__col h4{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-ink);font-weight:500;margin-bottom:.9rem;
}
.mega__link{
  display:block;text-decoration:none;padding:.5rem .6rem;border-radius:8px;margin-left:-.6rem;
}
.mega__link:hover{background:var(--mist)}
.mega__link strong{display:block;color:var(--ink);font-size:.95rem;font-weight:600}
.mega__link span:not(.chip):not(.example):not(.pill){display:block;color:var(--body);font-size:.83rem;line-height:1.45}

.nav__cta{margin-left:1rem;flex:none}
.menu-btn{
  display:none;margin-left:auto;background:none;border:1px solid var(--line-dark);
  color:#fff;border-radius:8px;padding:.55em .8em;font-family:var(--sans);font-size:.9rem;cursor:pointer;
}

.drawer{
  display:none;background:var(--ink);border-bottom:1px solid var(--line-dark);
  padding:1rem var(--pad) 1.6rem;
}
.drawer.is-open{display:block}
.drawer a{
  display:block;color:rgba(255,255,255,.85);text-decoration:none;
  padding:.75rem 0;border-bottom:1px solid var(--line-dark);font-size:1.02rem;
}
.drawer .btn{margin-top:1.2rem;width:100%;justify-content:center}

/* ---------- hero ---------- */
.hero{
  position:relative;overflow:hidden;
  background:
    radial-gradient(900px 480px at 78% 8%,rgba(86,187,175,.18),transparent 62%),
    radial-gradient(700px 420px at 8% 95%,rgba(12,128,181,.30),transparent 60%),
    var(--ink);
  color:#fff;
}
/* ledger rules — the register the whole product is about */
.hero::before{
  content:"";position:absolute;inset:0;
  background-image:repeating-linear-gradient(to bottom,rgba(255,255,255,.045) 0 1px,transparent 1px 34px);
  pointer-events:none;
}
.hero > .wrap{position:relative;z-index:1}
.hero h1,.hero h2,.hero h3{color:#fff}
.hero p{color:rgba(255,255,255,.78)}

.hero--home .wrap{
  display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(2rem,5vw,4.5rem);
  align-items:center;padding-top:clamp(3.5rem,7vw,5.5rem);padding-bottom:clamp(3.5rem,7vw,5.5rem);
}
.hero__actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem}
.hero__meta{
  display:flex;flex-wrap:wrap;gap:1.4rem;margin-top:2.4rem;
  padding-top:1.4rem;border-top:1px solid var(--line-dark);
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.08em;text-transform:uppercase;
  color:rgba(255,255,255,.55);
}

.hero--page .wrap{padding-top:clamp(2.6rem,5vw,4rem);padding-bottom:clamp(2.6rem,5vw,4rem)}
.hero--page .lede{color:rgba(255,255,255,.8);max-width:760px}
.crumbs{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:rgba(255,255,255,.45);margin-bottom:1.6rem;
}
.crumbs a{text-decoration:none;color:rgba(255,255,255,.6)}
.crumbs a:hover{color:#fff}

/* ---------- signature: the decision record ---------- */
.record{
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.03));
  border:1px solid var(--line-dark);
  border-radius:18px;
  box-shadow:0 30px 70px rgba(6,20,40,.5);
  overflow:hidden;
}
.record__tabs{display:flex;border-bottom:1px solid var(--line-dark);background:rgba(0,0,0,.18)}
.record__tab{
  flex:1;background:none;border:0;border-bottom:2px solid transparent;
  color:rgba(255,255,255,.55);
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;
  padding:.95rem .4rem;cursor:pointer;transition:color .2s ease,border-color .2s ease;
}
.record__tab:hover{color:#fff}
.record__tab[aria-selected="true"]{color:var(--accent-bright);border-bottom-color:var(--accent)}
.record__panel{padding:1.5rem 1.6rem 1.7rem;display:none}
.record__panel.is-active{display:block;animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.record__head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}
.record__id{font-family:var(--mono);font-size:var(--fs-record);letter-spacing:.1em;color:var(--steel)}
.pill{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;
  padding:.35em .7em;border-radius:999px;border:1px solid rgba(86,187,175,.5);
  color:var(--accent-bright);background:rgba(86,187,175,.14);white-space:nowrap;
}
.record__title{
  font-family:var(--display);font-weight:600;font-size:1.12rem;color:#fff;
  letter-spacing:-.01em;line-height:1.35;margin:0 0 1.3rem;
}
.trail{position:relative;padding-left:1.5rem}
.trail::before{content:"";position:absolute;left:4px;top:6px;bottom:14px;width:1px;background:var(--line-dark)}
.trail li{position:relative;padding:0 0 1.05rem}
.trail li::before{
  content:"";position:absolute;left:-1.5rem;top:6px;width:9px;height:9px;border-radius:50%;
  background:var(--ink);border:1.5px solid var(--aqua);
}
/* Three node types, after the application style guide's record spine. The distinction is the
   point of the component: an event, an authority moment, and a future obligation are not the
   same thing and must not look the same.

   This previously keyed off :last-child, which put the "approved" treatment on whichever node
   happened to be last -- and on both panels that node is a *review due*, the one thing it is
   not. Position is not meaning. */
.trail li.is-key::before{border-color:var(--accent);background:var(--accent)}      /* authority: approval, sign-off */
.trail li.is-open::before{border-color:var(--warn-bright);background:transparent}  /* obligation: review due, expiry */
.trail li.is-open strong{color:var(--warn-bright)}
.trail time{
  display:block;font-family:var(--mono);font-size:var(--fs-record);letter-spacing:.08em;
  color:rgba(255,255,255,.42);margin-bottom:.15rem;
}
.trail strong{display:block;color:#fff;font-size:.93rem;font-weight:600;line-height:1.35}
.trail span:not(.chip):not(.example):not(.pill){display:block;color:rgba(255,255,255,.62);font-size:.85rem;line-height:1.45}
.record__foot{
  display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;
  margin-top:.4rem;padding-top:1rem;border-top:1px solid var(--line-dark);
}
.chip{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.06em;
  color:rgba(255,255,255,.7);border:1px solid var(--line-dark);
  border-radius:6px;padding:.35em .6em;
}

/* ---------- sector strip ---------- */
.strip{background:var(--ink-deep);color:rgba(255,255,255,.7);padding:1.5rem 0}
.strip .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 2rem;justify-content:center}
.strip__label{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:rgba(255,255,255,.4);
}
.strip__item{font-size:.92rem;font-weight:500;color:rgba(255,255,255,.82)}

/* ---------- sections ---------- */
.section{padding:clamp(3.5rem,7vw,6rem) 0}
.section--mist{background:var(--mist)}
.section--ink{background:var(--ink);color:rgba(255,255,255,.78)}
.section--ink h2,.section--ink h3,.section--ink h4{color:#fff}
.section--tight{padding-top:clamp(2.5rem,4vw,3.5rem)}
.section__head{max-width:780px;margin-bottom:clamp(2rem,4vw,3rem)}
.section__head p:not(.eyebrow):not(.note):not(.intro){font-size:clamp(1.02rem,1.4vw,1.15rem)}

/* ---------- route cards ---------- */
.routes{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}
.route{
  position:relative;background:#fff;border:1px solid var(--line-light);border-radius:var(--r);
  padding:2rem 1.7rem 1.7rem;display:flex;flex-direction:column;
  text-decoration:none;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}
.route::before{content:"";position:absolute;left:1.7rem;right:1.7rem;top:0;height:3px;background:var(--accent);border-radius:0 0 3px 3px}
.route:hover{border-color:var(--ink);box-shadow:0 18px 44px rgba(22,59,109,.16);transform:translateY(-3px)}
.route__kicker{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--accent-ink);margin-bottom:.9rem}
.route h3{margin-bottom:.35rem}
.route__for{font-size:.9rem;color:var(--body);border-top:1px dashed var(--line-light);padding-top:.9rem;margin-top:auto}
.route__for b{color:var(--ink);font-weight:600;display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.35rem}
.route .textlink{margin-top:1.2rem;align-self:flex-start}

/* ---------- generic card grids ---------- */
.grid{display:grid;gap:1.1rem}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}

.card{
  background:#fff;border:1px solid var(--line-light);border-radius:var(--r);
  padding:1.6rem;transition:border-color .2s ease,transform .2s ease;
}
.card:hover{border-color:var(--steel);transform:translateY(-2px)}
.card h3:not(.intro){font-size:var(--fs-card);margin-bottom:.4rem}
.card p:not(.eyebrow):not(.note):not(.intro){font-size:.94rem;margin:0}
.card__num{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;color:var(--accent-ink);
  display:block;margin-bottom:.8rem;
}
.section--mist .card{background:#fff}
.section--ink .card{background:rgba(255,255,255,.05);border-color:var(--line-dark)}
.section--ink .card p{color:rgba(255,255,255,.7)}
.section--ink .card:hover{border-color:rgba(86,187,175,.55)}

/* ---------- signal chips (symptom lists) ---------- */
.signals{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem}
.signal{
  border:1px solid var(--line-light);border-radius:10px;background:#fff;
  padding:.95rem 1.05rem;font-size:.92rem;color:var(--ink);font-weight:500;line-height:1.4;
  display:flex;gap:.6rem;align-items:flex-start;
}
.signal::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);margin-top:.55em;flex:none}

/* ---------- process steps ---------- */
.steps{counter-reset:step;display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
.steps--5{grid-template-columns:repeat(5,1fr)}
.step{position:relative;padding-top:2.6rem}
.step::before{
  counter-increment:step;content:counter(step,decimal-leading-zero);
  position:absolute;top:0;left:0;
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--accent-ink);
}
.step::after{content:"";position:absolute;top:1.55rem;left:0;right:0;height:1px;background:var(--line-light)}
.section--ink .step::after{background:var(--line-dark)}
.step h3:not(.intro){font-size:var(--fs-card);margin-bottom:.35rem}
.step p:not(.eyebrow):not(.note):not(.intro){font-size:.92rem;margin:0}

/* ---------- split feature ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.panel{
  background:#fff;border:1px solid var(--line-light);border-radius:var(--r);padding:1.8rem;
}
.section--ink .panel{background:rgba(255,255,255,.05);border-color:var(--line-dark)}
.panel h4{margin-bottom:1rem}
.checks li{
  display:flex;gap:.7rem;align-items:flex-start;padding:.5rem 0;font-size:.95rem;color:var(--ink);
}
.section--ink .checks li{color:rgba(255,255,255,.85)}
.checks li::before{
  content:"";flex:none;width:16px;height:16px;border-radius:4px;margin-top:.28em;
  background:rgba(86,187,175,.18);border:1px solid var(--accent);
}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.compare__side{border:1px solid var(--line-light);border-radius:var(--r);padding:1.5rem;background:#fff}
.compare__side--with{border-color:var(--accent);box-shadow:0 12px 34px rgba(86,187,175,.18)}
.compare__side h4{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:.9rem}
.compare__side p:not(.eyebrow):not(.note):not(.intro){font-size:.94rem;margin:0;color:var(--body)}

/* ---------- quotes ---------- */
.quotes{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.quote{
  background:rgba(255,255,255,.05);border:1px solid var(--line-dark);
  border-radius:var(--r);padding:1.9rem;
}
.quote blockquote{
  margin:0 0 1.2rem;font-family:var(--display);font-weight:500;font-size:1.14rem;
  line-height:1.45;color:#fff;letter-spacing:-.01em;
}
.quote figcaption{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--steel)}

/* ---------- CTA band ---------- */
.cta{
  background:linear-gradient(120deg,var(--ink) 0%,var(--ocean) 100%);
  color:#fff;padding:clamp(3rem,6vw,4.5rem) 0;
}
.cta .wrap{display:flex;flex-wrap:wrap;gap:2rem;align-items:center;justify-content:space-between}
.cta .wrap > div:first-child{flex:1 1 440px;max-width:660px}
.cta h2{color:#fff;margin-bottom:.4rem;max-width:24ch}
.cta p{color:rgba(255,255,255,.75);margin:0;max-width:52ch}
.cta__actions{display:flex;flex-wrap:wrap;gap:.7rem}

/* ---------- forms ---------- */
.form{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.field{display:flex;flex-direction:column;gap:.4rem}
.field--full{grid-column:1/-1}
.field label{font-size:.85rem;font-weight:600;color:var(--ink)}
.field input,.field select,.field textarea{
  font-family:var(--sans);font-size:.97rem;color:var(--ink);
  border:1px solid var(--line-light);border-radius:9px;padding:.75em .9em;background:#fff;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--aqua);outline-offset:2px;border-color:var(--aqua)}
.field textarea{min-height:130px;resize:vertical}
/* A status badge always carries a dot AND a word. A reader who cannot separate the hues loses
   nothing, which is the rule the application layer states and the reason the dot is not optional. */
.status{
  display:inline-flex;align-items:center;gap:.45em;
  font-family:var(--sans);font-weight:600;font-size:var(--fs-small);
  padding:.3em .7em;border-radius:6px;border:1px solid currentColor;
}
.status::before{content:"";width:.5em;height:.5em;border-radius:50%;background:currentColor;flex:none}
.status--ok{color:var(--ok);background:var(--ok-tint)}
.status--warn{color:var(--warn);background:var(--warn-tint)}
.status--danger{color:var(--danger);background:var(--danger-tint)}
.status--info{color:var(--info);background:var(--info-tint)}

/* Set inline in ten places at two sizes (.92 and .95rem) that were never a decision. One class,
   one size. A size typed into markup is a size nobody can find later. */
/* An opening paragraph that sits a notch above body copy. Was typed inline as 1.05rem in four
   places; a size used four times is a role, and a role gets a name. */
.intro{font-size:1.05rem;line-height:1.6}
/* Emphasis inside copy on a dark ground. Was `style="color:#fff"`, which is the one colour that
   looks harmless inline and still breaks the moment a ground changes. */
.on-ink strong,.section--ink strong,.cta strong{color:#fff}

.note{font-size:.94rem;color:var(--body);line-height:1.6}
.note--spaced{margin-top:1.6rem}

.form__note{grid-column:1/-1;font-size:.85rem;color:var(--body);margin:0}
/* Hints live beside the field, not inside its label. A label is the field's *name*; anything
   folded into it gets announced before the user can type, which is how a helpful sentence turns
   into an obstacle for a screen reader. aria-describedby puts it after the name instead. */
.field__hint{font-weight:400;color:var(--body);font-size:.82rem;margin:0 0 .1rem;line-height:1.45}
.form__consent{grid-column:1/-1;font-size:.85rem;color:var(--body);margin:.4rem 0 0;line-height:1.55}
.form__consent strong{color:var(--ink)}
/* The honeypot: out of sight, out of the accessibility tree, out of tab order. Not display:none,
   because some fillers skip what is not rendered. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.contact-list li{padding:1.1rem 0;border-bottom:1px solid var(--line-light)}
.contact-list li:first-child{padding-top:0}
.contact-list dt,.contact-list b{
  display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent-ink);margin-bottom:.3rem;font-weight:500;
}
.contact-list a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-light)}
.contact-list a:hover{border-color:var(--ink)}

/* ---------- facts ---------- */
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
.fact{border-top:2px solid var(--accent);padding-top:1rem}
.fact b{display:block;font-family:var(--display);font-size:1.7rem;color:var(--ink);line-height:1.1;margin-bottom:.3rem}
.section--ink .fact b{color:#fff}
.fact span:not(.chip):not(.example):not(.pill){font-size:.9rem;line-height:1.45;display:block}

/* ---------- footer ---------- */
.footer{background:var(--ink-deep);color:rgba(255,255,255,.62);padding:clamp(3rem,6vw,4.5rem) 0 2rem;font-size:.92rem}
.footer h4{
  color:#fff;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;
  text-transform:uppercase;font-weight:500;margin-bottom:1rem;
}
.footer__top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:2rem}
.footer a{color:rgba(255,255,255,.68);text-decoration:none}
.footer a:hover{color:var(--accent-bright)}
.footer li{padding:.3rem 0}
.footer__brand p:not(.eyebrow):not(.note):not(.intro){max-width:34ch;font-size:.92rem;margin-top:1rem}
.footer__legal{
  margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line-dark);
  font-size:var(--fs-small);color:rgba(255,255,255,.4);line-height:1.6;
}
.footer__legal .row{display:flex;flex-wrap:wrap;gap:1.2rem;justify-content:space-between;margin-bottom:1rem}

/* ---------- accent text: dark contexts use the full-strength turquoise ---------- */
.hero .eyebrow,.section--ink .eyebrow,.cta .eyebrow,.on-ink .eyebrow,
.hero .card__num,.section--ink .card__num,
.hero .step::before,.section--ink .step::before,
.on-ink .textlink:hover,.section--ink .textlink:hover{color:var(--accent)}

/* ---------- brand logo ---------- */
.brand-logo{height:34px;width:auto;display:block}
.footer .brand-logo{height:30px}
@media (max-width:640px){.brand-logo{height:28px}}

/* ---------- motion ---------- */
/* reveal is progressive enhancement: without JS everything stays visible */
.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.reveal.is-in{opacity:1;transform:none}

:focus-visible{outline:2px solid var(--aqua);outline-offset:2px;border-radius:4px}

.skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:var(--ink-deep);padding:.7em 1.2em;z-index:99}
.skip:focus{left:12px;top:12px}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  .js .reveal{opacity:1;transform:none}
}

/* ---------- responsive ---------- */
@media (max-width:1040px){
  .nav__links{display:none}
  .nav__cta{display:none}
  .menu-btn{display:block}
  .hero--home .wrap{grid-template-columns:1fr}
  .routes,.grid--3,.grid--4,.steps,.steps--5,.signals,.facts{grid-template-columns:repeat(2,1fr)}
  .split,.quotes,.footer__top{grid-template-columns:1fr}
  .footer__top{gap:2.4rem}
  .step::after{display:none}
}
@media (max-width:640px){
  body{font-size:16px}
  .routes,.grid--2,.grid--3,.grid--4,.steps,.steps--5,.signals,.facts,.compare,.form{grid-template-columns:1fr}
  .cta .wrap{flex-direction:column;align-items:flex-start}
  .strip .wrap{justify-content:flex-start}
  .record__tab{font-size:var(--fs-label);letter-spacing:.08em}
}

/* ============================================================
   D19 route architecture components
   Added for the R1 build: route chooser, fit blocks, boundaries,
   reader questions, proof objects and the public check instrument.
   ============================================================ */

/* ---------- home route chooser ---------- */
.chooser{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem}
.chooser__item{
  position:relative;background:#fff;border:1px solid var(--line-light);border-radius:var(--r);
  padding:1.8rem 1.7rem;display:flex;flex-direction:column;text-decoration:none;
  transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}
.chooser__item::before{content:"";position:absolute;left:1.7rem;right:1.7rem;top:0;height:3px;background:var(--accent);border-radius:0 0 3px 3px}
.chooser__item:hover{border-color:var(--ink);box-shadow:0 18px 44px rgba(22,59,109,.16);transform:translateY(-3px)}
.chooser__when{font-size:1.05rem;color:var(--ink);font-weight:500;line-height:1.45;margin:0 0 1rem}
.chooser__route{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);text-transform:uppercase;
  color:var(--accent-ink);margin:0 0 .5rem;
}
.chooser__step{
  margin-top:auto;padding-top:1rem;border-top:1px dashed var(--line-light);
  font-size:.9rem;color:var(--body);
}
.chooser__step b{
  display:block;font-family:var(--mono);font-size:var(--fs-label);letter-spacing:var(--ls-label);
  text-transform:uppercase;color:var(--ink);margin-bottom:.3rem;
}
.chooser__item .textlink{margin-top:1.1rem;align-self:flex-start}

/* ---------- fit / not fit ---------- */
.fit{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.fit__side{border:1px solid var(--line-light);border-radius:var(--r);padding:1.6rem;background:#fff}
.fit__side--no{border-style:dashed;background:transparent}
.fit__side h4{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;
  margin-bottom:.9rem;color:var(--accent-ink);
}
.fit__side--no h4{color:var(--body)}
.fit__side li{padding:.4rem 0;font-size:.94rem;color:var(--body);padding-left:1.1rem;position:relative}
.fit__side li::before{content:"";position:absolute;left:0;top:.85em;width:6px;height:1.5px;background:var(--accent)}
.fit__side--no li::before{background:var(--line-light)}
.section--ink .fit__side{background:rgba(255,255,255,.05);border-color:var(--line-dark)}
.section--ink .fit__side--no{background:transparent}
.section--ink .fit__side li{color:rgba(255,255,255,.82)}
.section--ink .fit__side h4{color:var(--accent)}
.section--ink .fit__side--no h4{color:var(--aqua-light)}

/* ---------- boundary: what this is not ---------- */
.boundary{
  border:1px solid var(--line-light);border-left:3px solid var(--ink);
  border-radius:0 var(--r) var(--r) 0;padding:1.5rem 1.7rem;background:var(--mist);
}
.boundary h4{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin-bottom:.9rem;
}
.boundary li{padding:.35rem 0 .35rem 1.3rem;position:relative;font-size:.94rem;color:var(--body)}
.boundary li::before{content:"\2014";position:absolute;left:0;color:var(--ink);opacity:.5}
.section--ink .boundary{background:rgba(0,0,0,.18);border-color:var(--line-dark);border-left-color:var(--accent)}
.section--ink .boundary h4{color:var(--accent)}
.section--ink .boundary li{color:rgba(255,255,255,.78)}
.section--ink .boundary li::before{color:var(--accent)}

/* ---------- reader questions ---------- */
.qa{border-top:1px solid var(--line-light)}
.qa__item{border-bottom:1px solid var(--line-light);padding:1.2rem 0}
.qa__item h4{margin-bottom:.35rem;font-family:var(--display);font-size:var(--fs-card)}
.qa__item p:not(.eyebrow):not(.note):not(.intro){margin:0;font-size:.95rem}
.section--ink .qa,.section--ink .qa__item{border-color:var(--line-dark)}
.section--ink .qa__item p{color:rgba(255,255,255,.75)}

/* ---------- proof object ---------- */
.proof{
  border:1px solid var(--line-light);border-radius:var(--r);overflow:hidden;background:#fff;
}
.proof__bar{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  padding:.8rem 1.3rem;background:var(--mist);border-bottom:1px solid var(--line-light);
}
.proof__bar span:not(.chip):not(.example):not(.pill){font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--body)}
.example{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.18em;text-transform:uppercase;
  border:1px solid var(--ink);color:var(--ink);padding:.25em .6em;border-radius:4px;
}
.proof__body{padding:1.5rem 1.7rem}
.proof__body li{padding:.4rem 0 .4rem 1.4rem;position:relative;font-size:.94rem;color:var(--body)}
.proof__body li::before{
  content:"";position:absolute;left:0;top:.72em;width:8px;height:8px;border-radius:2px;
  border:1.5px solid var(--aqua);
}

/* ---------- public check instrument ---------- */
.check{
  border:1px solid var(--line-light);border-radius:18px;background:#fff;
  box-shadow:0 18px 44px rgba(22,59,109,.10);overflow:hidden;
}
.check__head{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  padding:1rem 1.6rem;border-bottom:1px solid var(--line-light);background:var(--mist);
}
.check__name{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.13em;text-transform:uppercase;color:var(--accent-ink)}
.check__dots{display:flex;gap:.35rem}
.check__dot{width:8px;height:8px;border-radius:50%;background:var(--line-light)}
.check__dot.is-done{background:var(--aqua)}
.check__dot.is-now{background:var(--accent);transform:scale(1.25)}
.check__body{padding:2rem 1.8rem}
.check__q{font-family:var(--display);font-weight:700;font-size:1.25rem;color:var(--ink);letter-spacing:-.015em;line-height:1.25;margin:0 0 .4rem}
.check__hint{font-size:.92rem;margin:0 0 1.4rem}
.check__opts{display:grid;gap:.6rem}
.check__opt{
  text-align:left;font-family:var(--sans);font-size:.98rem;color:var(--ink);
  background:#fff;border:1px solid var(--line-light);border-radius:10px;
  padding:.9em 1.1em;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease;
}
.check__opt:hover{border-color:var(--accent);background:rgba(86,187,175,.07);transform:translateX(2px)}
.check__foot{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  padding:.9rem 1.6rem;border-top:1px solid var(--line-light);
}
.check__back{
  background:none;border:0;cursor:pointer;font-family:var(--sans);font-size:.88rem;
  color:var(--body);padding:.3em 0;
}
.check__back:hover{color:var(--ink)}
.check__count{font-family:var(--mono);font-size:var(--fs-record);letter-spacing:.1em;color:var(--body)}
.check__result h3:not(.intro){font-size:var(--fs-block);margin-bottom:.6rem}
.check__pattern{
  font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-ink);margin-bottom:.7rem;
}
.check__next{
  margin-top:1.4rem;padding:1.3rem 1.4rem;border-radius:12px;
  background:var(--mist);border:1px solid var(--line-light);
}
.check__next h4{margin-bottom:.4rem}
.check__next p:not(.eyebrow):not(.note):not(.intro){font-size:.94rem;margin:0 0 1.1rem}
.check__capture{margin-top:1.4rem;padding-top:1.4rem;border-top:1px dashed var(--line-light)}
.check__capture p:not(.eyebrow):not(.note):not(.intro){font-size:.9rem}
.check__row{display:flex;flex-wrap:wrap;gap:.6rem}
.check__row input{
  flex:1 1 220px;font-family:var(--sans);font-size:.95rem;color:var(--ink);
  border:1px solid var(--line-light);border-radius:9px;padding:.7em .9em;
}
.check__row input:focus{outline:2px solid var(--aqua);outline-offset:2px}
.check__noscript{padding:1.8rem;font-size:.95rem}

@media (max-width:640px){
  .chooser,.fit{grid-template-columns:1fr}
  .check__body{padding:1.5rem 1.2rem}
  .check__q{font-size:1.1rem}
}

/* steps inside a split column stack rather than squeezing into narrow columns */
.split .steps,.split .steps--5{grid-template-columns:1fr;gap:0}
.split .step{padding-top:0;padding-left:2.6rem;padding-bottom:1.3rem}
.split .step::before{top:.15rem}
.split .step::after{display:none}

/* ============================================================
   R1.1 — booking forms and dual-path CTAs (post-STORM rebuild)
   ============================================================ */
.hero__actions .btn + .btn{margin-left:0}
.persona-row{display:grid;grid-template-columns:repeat(2,1fr);gap:.7rem}
.persona{
  border:1px solid var(--line-light);border-radius:10px;background:#fff;padding:1rem 1.1rem;
}
.persona b{display:block;color:var(--ink);font-size:.95rem;margin-bottom:.2rem}
.persona span:not(.chip):not(.example):not(.pill){font-size:.88rem;color:var(--body);line-height:1.45}
.section--ink .persona{background:rgba(255,255,255,.05);border-color:var(--line-dark)}
.section--ink .persona b{color:#fff}
.section--ink .persona span{color:rgba(255,255,255,.72)}

.book{max-width:760px}
.book__aside{
  border:1px dashed var(--line-light);border-radius:10px;padding:1rem 1.2rem;
  font-size:.88rem;color:var(--body);margin-top:1.2rem;
}
.chooser--quote .chooser__when{font-family:var(--display);font-weight:500;letter-spacing:-.01em}
.chooser--quote .chooser__when::before{content:"\201C";color:var(--accent-ink);font-size:1.4em;line-height:0;margin-right:.05em}
.chooser--quote .chooser__when::after{content:"\201D";color:var(--accent-ink);font-size:1.4em;line-height:0;margin-left:.05em}
@media (max-width:640px){.persona-row{grid-template-columns:1fr}}
