/* ============================================================
   TexasInheritance.com — design system
   One stylesheet. No frameworks. No build step.
   ============================================================ */

/* --- Fonts, served from this site ------------------------------
   Inter and Source Serif 4 (variable), self-hosted rather than loaded from
   Google Fonts, so visitors' browsers never contact Google. Latin and
   Latin Extended subsets only. Both are SIL Open Font License; the licence
   files sit beside the fonts in /assets/fonts/. Source: @fontsource-variable
   5.3.0. Adding a file here means adding a passthrough line in
   eleventy.config.js as well.
   --------------------------------------------------------------- */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-wght-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("/assets/fonts/inter-latin-ext-wght-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: "Source Serif 4";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/assets/fonts/source-serif-4-latin-opsz-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: "Source Serif 4";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/assets/fonts/source-serif-4-latin-ext-opsz-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}


:root {
  /* --- Color ------------------------------------------------ */
  --navy:        #1B3A5C;
  --navy-deep:   #12293F;
  --navy-soft:   #2E5379;
  /* Accent — matched to the hue of the Ti logo's orange (#D87000), darkened
     until white text on it clears WCAG AA. The logo's own orange is only
     3.2:1 and cannot be used for buttons or links; logos are exempt from
     contrast rules, interface elements are not. Do not "correct" these
     back toward the logo's brightness. */
  --terracotta:  #A2611A;   /* 4.65 on page bg · 4.93 white on it */
  --terracotta-d:#8A5114;   /* hover — 6.43 white on it */
  --brick:       #8B4A3F;
  --bg:          #FAF8F5;
  --surface:     #FFFFFF;
  --surface-alt: #F2EEE8;
  --text:        #1F2529;
  --text-muted:  #55606B;
  --rule:        #E0D9CF;
  --field-border:#8C7F71;   /* 3.7:1 on --bg — form controls need a visible edge */
  --focus:       #A2611A;

  /* --- Type ------------------------------------------------- */
  --serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --step--1: 0.9375rem;  /* 15px  small print       */
  --step-0:  1.1875rem;  /* 19px  body             */
  --step-1:  1.375rem;   /* 22px  lead             */
  --step-2:  1.625rem;   /* 26px  h3               */
  --step-3:  2rem;       /* 32px  h2               */
  --step-4:  2.75rem;    /* 44px  h1               */
  --step-5:  3.5rem;     /* 56px  hero             */

  /* --- Space ------------------------------------------------ */
  --measure: 68ch;
  --gutter: 1.5rem;
  --radius: 6px;
  --shadow: 0 1px 3px rgba(31,37,41,.07), 0 8px 24px rgba(31,37,41,.06);
}

/* ============================================================
   Reset & base
   ============================================================ */

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-size: var(--step-0);
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

h1, h2, h3, h4 {
  font-family: var(--serif);
  font-weight: 600;
  line-height: 1.2;
  color: var(--navy-deep);
  margin: 0 0 .5em;
  letter-spacing: -0.01em;
}
h1 { font-size: var(--step-4); }
h2 { font-size: var(--step-3); }
h3 { font-size: var(--step-2); }
h4 { font-size: var(--step-1); }

p { margin: 0 0 1.15em; }
p:last-child { margin-bottom: 0; }

a { color: var(--navy); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--terracotta-d); }

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

strong { font-weight: 650; }

/* ============================================================
   Layout
   ============================================================ */

.wrap { width: 100%; max-width: 1120px; margin-inline: auto; padding-inline: var(--gutter); }
.wrap--narrow { max-width: 760px; }

.section { padding-block: 4.5rem; }
.section--tight { padding-block: 3rem; }
.section--alt  { background: var(--surface-alt); }
.section--navy { background: var(--navy-deep); color: #E8EDF2; }
.section--navy h2, .section--navy h3 { color: #FFFFFF; }
.section--navy a { color: #F0C9AC; }

.skip {
  position: absolute; left: -9999px; top: 0;
  background: var(--navy-deep); color: #fff;
  padding: .75rem 1.25rem; z-index: 100;
}
.skip:focus { left: .5rem; top: .5rem; }

.eyebrow {
  font-family: var(--sans);
  font-size: var(--step--1);
  font-weight: 650;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--terracotta-d);
  margin: 0 0 .75rem;
}

.lead {
  font-size: var(--step-1);
  line-height: 1.55;
  color: var(--text-muted);
  max-width: 56ch;
}

.prose { max-width: var(--measure); }
.prose h2 { margin-top: 2.5rem; }
.prose h3 { margin-top: 2rem; font-size: var(--step-1); }
.prose ul, .prose ol { padding-left: 1.35em; margin: 0 0 1.15em; }
.prose li { margin-bottom: .5em; }
.prose li::marker { color: var(--terracotta); }

/* ============================================================
   Header & navigation
   ============================================================ */

.site-header {
  background: var(--surface);
  border-bottom: 1px solid var(--rule);
  position: sticky; top: 0; z-index: 50;
}
.site-header__bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1.5rem; min-height: 76px;
}
.brand {
  font-family: var(--serif);
  font-size: 1.3rem; font-weight: 650;
  color: var(--navy-deep); text-decoration: none;
  line-height: 1.15;
}
.brand span { display: block; font-family: var(--sans); font-size: .72rem; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase; color: var(--text-muted); margin-top: 2px; }

/* Logo version of the brand link. Sized by height so the header bar stays
   a consistent depth regardless of the artwork's proportions. */
.brand--logo { display: flex; align-items: center; padding: .35rem 0; }
.brand--logo img {
  height: 46px;
  width: auto;
  display: block;
}
@media (max-width: 480px) {
  .brand--logo img { height: 38px; }
}

/* Utility strip — secondary links and the two office numbers */
.utility { background: var(--navy-deep); color: #C3CFDB; font-size: .875rem; }
.utility__bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 1rem; min-height: 42px; flex-wrap: wrap;
}
.utility a { color: #C3CFDB; text-decoration: none; }
.utility a:hover { color: #fff; text-decoration: underline; }
.utility__links, .utility__phones { display: flex; gap: 1.35rem; flex-wrap: wrap; }
.utility__phones a { font-weight: 600; white-space: nowrap; }
.utility__phones span { color: #93A3B4; font-weight: 400; }

@media (max-width: 720px) {
  .utility__links { display: none; }
  .utility__bar { justify-content: center; }
  .utility__phones { gap: 1rem; font-size: .8125rem; }
}

.nav { display: flex; align-items: center; gap: 1.4rem; }
.nav a {
  font-size: .9375rem; font-weight: 550; color: var(--text);
  text-decoration: none; padding: .4rem 0;
  border-bottom: 2px solid transparent;
}
.nav a:hover, .nav a[aria-current="page"] { color: var(--navy); border-bottom-color: var(--terracotta); }

/* The one nav item that is an action, not a topic */
.nav a.nav__cta {
  background: var(--terracotta); color: #fff;
  padding: .5rem 1.05rem; border-radius: var(--radius);
  border-bottom: 2px solid transparent; font-weight: 650;
}
.nav a.nav__cta:hover { background: var(--terracotta-d); color: #fff; border-bottom-color: transparent; }

.nav-toggle {
  display: none; background: none; border: 1px solid var(--rule);
  border-radius: var(--radius); padding: .55rem .9rem;
  font: inherit; font-size: 1rem; font-weight: 600; cursor: pointer; color: var(--navy-deep);
}

@media (max-width: 980px) {
  .nav-toggle { display: block; }
  .nav {
    display: none; position: absolute; left: 0; right: 0; top: 100%;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--surface); border-bottom: 1px solid var(--rule);
    padding: .5rem var(--gutter) 1rem; box-shadow: var(--shadow);
  }
  .nav.is-open { display: flex; }
  .nav a { padding: .85rem 0; border-bottom: 1px solid var(--rule); font-size: 1.0625rem; }
  .nav a:last-child { border-bottom: none; }
  .nav a.nav__cta { text-align: center; margin-top: .75rem; padding: .85rem 1rem; }
}

/* ============================================================
   Buttons
   ============================================================ */

.btn {
  display: inline-block;
  font: inherit; font-size: 1.0625rem; font-weight: 600;
  padding: .85rem 1.6rem;
  border-radius: var(--radius);
  border: 2px solid transparent;
  text-decoration: none; cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.btn--primary { background: var(--terracotta); color: #fff; border-color: var(--terracotta); }
.btn--primary:hover { background: var(--terracotta-d); border-color: var(--terracotta-d); color: #fff; }
.btn--ghost { background: transparent; color: var(--navy); border-color: var(--navy); }
.btn--ghost:hover { background: var(--navy); color: #fff; }
.btn--onnavy { background: transparent; color: #fff; border-color: rgba(255,255,255,.55); }
.btn--onnavy:hover { background: #fff; color: var(--navy-deep); border-color: #fff; }
.btn[disabled] { opacity: .45; cursor: not-allowed; }

.btn-row { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 1.75rem; }

/* ============================================================
   Phone pair — two local numbers, one office
   ============================================================ */

.phones { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 1.75rem; }

.phones__num {
  display: block; text-decoration: none;
  border: 2px solid var(--navy); border-radius: var(--radius);
  padding: .7rem 1.5rem;
  color: var(--navy);
  font-family: var(--serif); font-size: 1.3rem; font-weight: 650; line-height: 1.2;
  white-space: nowrap;
  transition: background-color .15s ease, color .15s ease;
}
.phones__num span {
  display: block;
  font-family: var(--sans); font-size: .7rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
  color: var(--text-muted); margin-bottom: .2rem;
}
.phones__num:hover { background: var(--navy); color: #fff; }
.phones__num:hover span { color: #fff; }

.phones--onnavy .phones__num { border-color: rgba(255,255,255,.5); color: #fff; }
.phones--onnavy .phones__num span { color: #F0C9AC; }
.phones--onnavy .phones__num:hover { background: #fff; color: var(--navy-deep); border-color: #fff; }
.phones--onnavy .phones__num:hover span { color: var(--navy-deep); }

.phones__note {
  font-size: var(--step--1); color: var(--text-muted);
  margin-top: .9rem; max-width: 48ch;
}
.section--navy .phones__note { color: #93A3B4; }

/* ============================================================
   Hero
   ============================================================ */

.hero { background: var(--surface); border-bottom: 1px solid var(--rule); padding-block: 5rem 4.5rem; }
.hero h1 { font-size: clamp(2.25rem, 5vw, var(--step-5)); max-width: 17ch; }
.hero .lead { margin-top: 1.25rem; font-size: clamp(1.15rem, 2.2vw, 1.4rem); color: var(--text); }
.hero__note { margin-top: 2rem; font-size: var(--step--1); color: var(--text-muted); max-width: 52ch; }

/* ============================================================
   Credential band — board certification
   ============================================================ */

.creds {
  background: var(--surface);
  border-bottom: 1px solid var(--rule);
  padding-block: 1.65rem;
}
.creds__bar {
  display: flex; align-items: center; justify-content: center;
  gap: 1.35rem; flex-wrap: wrap; text-align: left;
}
.creds__seal {
  flex: none;
  width: 62px; height: 62px; border-radius: 50%;
  background: var(--navy-deep); color: #fff;
  display: grid; place-items: center;
  font-family: var(--serif); font-size: 1.5rem; font-weight: 700;
  letter-spacing: .02em;
}
.creds__text { max-width: 64ch; }

/* The certification sentence is required verbatim by Tex. Disciplinary R. 7.02.
   It is set as one unbroken run of text — never split it, abbreviate it, or
   de-emphasise any part of it relative to the rest. */
.creds__title {
  font-family: var(--serif); font-size: 1.3rem; font-weight: 650;
  color: var(--navy-deep); line-height: 1.3; margin: 0 0 .3rem;
  text-wrap: balance;
}
.creds__body { font-size: 1rem; color: var(--text-muted); margin: 0; line-height: 1.5; }

@media (max-width: 640px) {
  .creds__bar { justify-content: flex-start; gap: 1rem; }
  .creds__seal { width: 52px; height: 52px; font-size: 1.25rem; }
  .creds__title { font-size: 1.1rem; }
  .creds__body { font-size: .9375rem; }
}

/* ============================================================
   Cards & grids
   ============================================================ */

.grid { display: grid; gap: 1.25rem; }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }

.card {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 1.75rem;
  display: flex; flex-direction: column;
}
.card h3 { font-size: var(--step-1); margin-bottom: .4rem; }
.card p { color: var(--text-muted); font-size: 1.0625rem; }

/* "Door" cards — the situation-based entry points */
.door {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-left: 4px solid var(--terracotta);
  border-radius: var(--radius);
  padding: 1.75rem;
  text-decoration: none;
  display: block;
  transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.door:hover { box-shadow: var(--shadow); transform: translateY(-2px); border-left-color: var(--navy); }
.door__quote {
  font-family: var(--serif); font-size: var(--step-1); font-weight: 600;
  color: var(--navy-deep); line-height: 1.3; margin: 0 0 .6rem;
}
.door__desc { color: var(--text-muted); font-size: 1.0625rem; margin: 0 0 1rem; }
.door__go { color: var(--terracotta-d); font-weight: 650; font-size: 1rem; }
.door__go::after { content: " →"; }

/* ============================================================
   Bridge — routes informational readers toward the triage tool
   Used at the foot of pages that answer a practical question but
   whose readers often turn out to have an actual dispute.
   Must never read as a bait-and-switch: answer the question fully
   first, then offer this as a second, optional door.
   ============================================================ */

.bridge {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-top: 4px solid var(--terracotta);
  border-radius: var(--radius);
  padding: clamp(1.5rem, 4vw, 2.25rem);
  margin: 3rem 0 0;
}
.bridge h2 {
  font-size: var(--step-2); margin: 0 0 .6rem; max-width: 26ch;
}
.bridge p { font-size: 1.0625rem; color: var(--text-muted); max-width: 60ch; }
.bridge__signs {
  list-style: none; padding: 0;
  margin: 1.25rem 0 0;
  display: grid; gap: .5rem;
}
.bridge__signs li {
  position: relative; padding-left: 1.6rem;
  font-size: 1.0625rem; color: var(--text);
}
.bridge__signs li::before {
  content: "—"; position: absolute; left: 0; color: var(--terracotta); font-weight: 700;
}

/* ============================================================
   Callouts
   ============================================================ */

.callout {
  border-left: 4px solid var(--navy);
  background: var(--surface-alt);
  padding: 1.4rem 1.6rem;
  border-radius: 0 var(--radius) var(--radius) 0;
  margin: 2rem 0;
}
.callout h3, .callout h4 { margin-top: 0; margin-bottom: .4rem; font-size: var(--step-1); }
.callout p { font-size: 1.0625rem; }
.callout--deadline { border-left-color: var(--brick); background: #F7EEEA; }
.callout--deadline h3, .callout--deadline h4 { color: var(--brick); }

.tldr {
  background: var(--surface);
  border: 1px solid var(--rule);
  border-top: 4px solid var(--navy);
  border-radius: var(--radius);
  padding: 1.75rem;
  margin: 0 0 2.5rem;
}
.tldr h2 {
  font-family: var(--sans); font-size: var(--step--1); font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase; color: var(--text-muted);
  margin: 0 0 .9rem;
}
.tldr ul { margin: 0; padding-left: 1.25em; }
.tldr li { margin-bottom: .55em; font-size: 1.0625rem; }
.tldr li:last-child { margin-bottom: 0; }

.disclaimer {
  font-size: var(--step--1);
  color: var(--text-muted);
  border-top: 1px solid var(--rule);
  padding-top: 1.25rem;
  margin-top: 3rem;
}

/* ============================================================
   Sign list — "what this looks like in real life"
   ============================================================ */

.signs { list-style: none; padding: 0; margin: 0; display: grid; gap: .85rem; }
.signs li {
  background: var(--surface); border: 1px solid var(--rule);
  border-radius: var(--radius); padding: 1rem 1.15rem 1rem 3rem;
  position: relative; font-size: 1.0625rem; margin: 0;
}
.signs li::before {
  content: "✓"; position: absolute; left: 1.1rem; top: 1rem;
  color: var(--terracotta); font-weight: 700;
}

/* ============================================================
   Steps / numbered elements
   ============================================================ */

.steps { list-style: none; counter-reset: s; padding: 0; margin: 0; display: grid; gap: 1.15rem; }
.steps li {
  counter-increment: s; position: relative; padding-left: 3.5rem; margin: 0;
  font-size: 1.0625rem;
}
.steps li::before {
  content: counter(s);
  position: absolute; left: 0; top: -2px;
  width: 2.5rem; height: 2.5rem; border-radius: 50%;
  background: var(--navy); color: #fff;
  display: grid; place-items: center;
  font-family: var(--serif); font-size: 1.15rem; font-weight: 650;
}
.steps li strong { display: block; color: var(--navy-deep); font-size: var(--step-1);
  font-family: var(--serif); font-weight: 600; margin-bottom: .15rem; }

/* ============================================================
   FAQ (details/summary)
   ============================================================ */

.faq { border-top: 1px solid var(--rule); }
.faq details { border-bottom: 1px solid var(--rule); }
.faq summary {
  cursor: pointer; list-style: none;
  padding: 1.35rem 2.5rem 1.35rem 0;
  font-family: var(--serif); font-size: var(--step-1); font-weight: 600;
  color: var(--navy-deep); position: relative;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+"; position: absolute; right: .25rem; top: 50%; transform: translateY(-50%);
  font-family: var(--sans); font-size: 1.75rem; font-weight: 400; color: var(--terracotta);
  line-height: 1;
}
.faq details[open] summary::after { content: "–"; }
.faq summary:hover { color: var(--terracotta-d); }
.faq details > div { padding: 0 2.5rem 1.5rem 0; max-width: var(--measure); }

/* ============================================================
   Article teasers
   ============================================================ */

.teaser { border-top: 1px solid var(--rule); padding: 1.4rem 0; }
.teaser h3 { font-size: var(--step-1); margin-bottom: .3rem; }
.teaser h3 a { text-decoration: none; }
.teaser h3 a:hover { text-decoration: underline; }
.teaser p { color: var(--text-muted); font-size: 1.0625rem; margin: 0; }
.teaser time { font-size: var(--step--1); color: var(--text-muted); display: block; margin-bottom: .3rem; }

/* ============================================================
   Breadcrumb & on-this-page
   ============================================================ */

.crumbs { font-size: var(--step--1); color: var(--text-muted); margin-bottom: 1.25rem; }
.crumbs a { color: var(--text-muted); }
.crumbs span { margin: 0 .4rem; }

.toc {
  background: var(--surface-alt); border-radius: var(--radius);
  padding: 1.35rem 1.6rem; margin: 0 0 2.5rem;
}
.toc h2 {
  font-family: var(--sans); font-size: var(--step--1); font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase; color: var(--text-muted); margin: 0 0 .75rem;
}
.toc ol { margin: 0; padding-left: 1.25em; }
.toc li { margin-bottom: .35em; font-size: 1.0625rem; }

/* ============================================================
   Deadline timeline

   Teaches the single most misunderstood fact on the site: the
   two-year clock runs from the date the will is ADMITTED TO
   PROBATE, not from the date of death.

   Built entirely in CSS — a few hundred bytes, scales to any
   screen, stays sharp at any zoom level, and remains readable
   when a visitor bumps their text size up. Marked up as an
   ordered list so a screen reader gets the sequence too.
   ============================================================ */

.timeline {
  list-style: none;
  margin: 2rem 0 0;
  padding: 0;
  display: grid;
  gap: 0;
  counter-reset: none;
}

.timeline__step {
  position: relative;
  margin: 0;
  padding: 0 0 2rem 3rem;
  border-left: 2px solid var(--rule);
}
.timeline__step:last-child { padding-bottom: 0; border-left-color: transparent; }

.timeline__step::before {
  content: "";
  position: absolute;
  left: -0.6rem; top: .15rem;
  width: 1.1rem; height: 1.1rem;
  border-radius: 50%;
  background: var(--surface);
  border: 3px solid var(--rule);
}

.timeline__label {
  font-family: var(--serif);
  font-size: var(--step-1);
  font-weight: 650;
  color: var(--navy-deep);
  line-height: 1.25;
  margin: 0 0 .2rem;
}
.timeline__note { font-size: 1rem; color: var(--text-muted); margin: 0; line-height: 1.5; }
.timeline__note strong { color: var(--text); }

/* The step where the clock actually starts — the whole point of the graphic */
.timeline__step--start { border-left-color: var(--terracotta); }
.timeline__step--start::before { border-color: var(--terracotta); background: var(--terracotta); }
.timeline__step--start .timeline__label { color: var(--terracotta-d); }

/* The gap nobody expects: probate can follow death by months or years */
.timeline__step--gap { border-left-style: dashed; padding-bottom: 1.5rem; }
.timeline__step--gap::before { display: none; }
.timeline__step--gap .timeline__note {
  font-style: italic;
  padding-left: 0;
}

/* The end of the line */
.timeline__step--end::before { border-color: var(--brick); background: var(--brick); }
.timeline__step--end .timeline__label { color: var(--brick); }

.timeline__caption {
  font-size: var(--step--1);
  color: var(--text-muted);
  margin: 1.5rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--rule);
  max-width: 60ch;
}

/* ============================================================
   Bio block
   ============================================================ */

.bio { display: grid; grid-template-columns: 220px 1fr; gap: 2.25rem; align-items: start; }

.bio__photo {
  width: 220px;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: var(--radius);
  background: var(--surface-alt);
}

/* Shown until a real photograph is supplied. Deliberately looks
   like a considered empty state rather than a broken image. */
.bio__photo-fallback {
  width: 220px; aspect-ratio: 4/5; border-radius: var(--radius);
  background: var(--surface-alt);
  border: 1px dashed var(--rule);
  display: grid; place-items: center; align-content: center; gap: .4rem;
  color: var(--text-muted);
  font-size: var(--step--1); text-align: center; padding: 1rem;
}
.bio__photo-fallback span:first-child { font-size: 1.75rem; opacity: .5; }

@media (max-width: 640px) {
  .bio { grid-template-columns: 1fr; }
  .bio__photo, .bio__photo-fallback { width: 180px; }
}

/* ============================================================
   Footer
   ============================================================ */

.site-footer { background: var(--navy-deep); color: #C3CFDB; padding-block: 3.5rem 2rem; font-size: 1.0625rem; }
.site-footer h3 {
  font-family: var(--sans); font-size: var(--step--1); font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase; color: #fff; margin-bottom: .9rem;
}
.site-footer a { color: #C3CFDB; text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: .5rem; }
.site-footer__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 2.5rem; }
.site-footer__legal {
  border-top: 1px solid rgba(255,255,255,.15);
  margin-top: 2.5rem; padding-top: 1.5rem;
  font-size: var(--step--1); color: #93A3B4; max-width: 80ch;
}

/* ============================================================
   Triage tool
   ============================================================ */

.quiz { background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius);
  padding: clamp(1.5rem, 4vw, 2.75rem); box-shadow: var(--shadow); }

.quiz__progress { display: flex; gap: .4rem; margin-bottom: 2rem; }
.quiz__progress span {
  height: 6px; flex: 1; background: var(--rule); border-radius: 3px;
}
.quiz__progress span.is-done { background: var(--terracotta); }
.quiz__progress span.is-current { background: var(--navy); }

.quiz__count { font-size: var(--step--1); font-weight: 650; letter-spacing: .06em;
  text-transform: uppercase; color: var(--text-muted); margin-bottom: .6rem; }
.quiz__q { font-size: clamp(1.5rem, 3.5vw, var(--step-3)); margin-bottom: .5rem; }
.quiz__help { color: var(--text-muted); font-size: 1.0625rem; margin-bottom: 1.75rem; max-width: 58ch; }

.quiz__options { display: grid; gap: .75rem; }
.opt {
  display: block; width: 100%; text-align: left;
  background: var(--bg); border: 2px solid var(--rule); border-radius: var(--radius);
  padding: 1.1rem 1.35rem; font: inherit; font-size: 1.0625rem; font-weight: 550;
  color: var(--text); cursor: pointer;
  transition: border-color .12s ease, background-color .12s ease;
}
.opt:hover { border-color: var(--navy); background: var(--surface-alt); }
.opt small { display: block; font-weight: 400; color: var(--text-muted); font-size: .9375rem; margin-top: .2rem; }

.quiz__back {
  background: none; border: none; font: inherit; font-size: 1rem; color: var(--text-muted);
  cursor: pointer; padding: .5rem 0; margin-top: 1.5rem; text-decoration: underline;
}
.quiz__back:hover { color: var(--navy); }

.result__badge {
  display: inline-block; font-size: var(--step--1); font-weight: 700;
  letter-spacing: .09em; text-transform: uppercase;
  padding: .4rem .9rem; border-radius: 100px; margin-bottom: 1rem;
}
.result__badge--strong { background: #DCEBDF; color: #2C5C38; }
.result__badge--maybe  { background: #F6E7D5; color: #8A5418; }
.result__badge--urgent { background: #F7DFDA; color: #8B3A2C; }
.result__badge--no     { background: var(--surface-alt); color: var(--text-muted); }

.result__summary { border: 1px solid var(--rule); border-radius: var(--radius);
  background: var(--bg); padding: 1.4rem 1.6rem; margin: 2rem 0; font-size: 1.0625rem; }
.result__summary dt { font-weight: 650; color: var(--text-muted); font-size: .9375rem; }
.result__summary dd { margin: 0 0 .9rem; }
.result__summary dd:last-child { margin-bottom: 0; }

/* ============================================================
   Forms

   Sized generously on purpose. The people using this are often
   older, often on a phone, often upset. Small inputs and thin
   labels are a barrier at exactly the wrong moment.
   ============================================================ */

.field { margin-bottom: 1.75rem; }

.field label {
  display: block;
  font-family: var(--sans);
  font-size: 1.0625rem;
  font-weight: 650;
  color: var(--navy-deep);
  margin-bottom: .45rem;
}
.field__optional { font-weight: 400; color: var(--text-muted); }

.field input,
.field textarea {
  display: block;
  width: 100%;
  font: inherit;
  font-size: 1.0625rem;
  line-height: 1.5;
  color: var(--text);
  background: var(--bg);
  /* --rule is too faint for a form control: 1.3:1 against the page.
     WCAG 1.4.11 wants 3:1 for the boundary of an interactive component,
     and an older reader needs to see where the box actually is.
     --field-border is 3.7:1. Do not swap this back to --rule. */
  border: 2px solid var(--field-border);
  border-radius: var(--radius);
  padding: .8rem 1rem;
  transition: border-color .12s ease, background-color .12s ease;
}
.field input { min-height: 3rem; }
.field textarea { resize: vertical; min-height: 9rem; }

.field input:hover,
.field textarea:hover { border-color: var(--text-muted); }

.field input:focus,
.field textarea:focus {
  border-color: var(--navy);
  background: var(--surface);
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

.field__help {
  font-size: var(--step--1);
  color: var(--text-muted);
  margin: .45rem 0 0;
}

/* Native validation styling — only after the field has been touched,
   so nothing turns red before the person has had a chance to type. */
.field input:not(:placeholder-shown):invalid,
.field textarea:not(:placeholder-shown):invalid { border-color: var(--brick); }

button.btn { font-family: var(--sans); }

.visually-hidden {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

@media print {
  .site-header, .site-footer, .btn, .quiz__back { display: none; }
  body { background: #fff; font-size: 12pt; }
}
