/* Brit Dad in America: brand B "Red, White & Blue" (adopted 18 Oct 2026).
   Navy ground, white text, cover blue accent, one red full stop. No web fonts.
   Master: brand/identity/B-red-white-blue/spec.md.
   Contrast ratios below are against navy and against the lightest point of the
   centre lift (#132241); every text pair is at least 4.5:1. */
:root {
  --navy: #0e1b33;
  --blue: #3b6fd4;          /* cover blue. White on it 4.76:1. On navy 3.61:1, on the lift 3.31:1 */
  --blue-deep: #3466c9;     /* primary button hover. White on it 5.40:1 */
  --red: #c8102e;           /* the full stop after the wordmark only; never text */
  --white: #ffffff;         /* 17.17:1 on navy, 15.76:1 on the lift */
  --mist: #aeb8cc;          /* secondary text: 8.61:1 on navy, 7.90:1 on the lift */
  --mist-dim: #95a1b9;      /* footer and small print: 6.60:1 on navy, 6.06:1 on the lift */
  --edge: rgba(255, 255, 255, 0.4);   /* outline button border: 3.75:1 on navy, 3.65:1 on the lift */
  --hairline: rgba(255, 255, 255, 0.14); /* decorative edge of the mark tile only */
  --blue-tint: rgba(59, 111, 212, 0.14); /* hover fill; white 13.5:1, mist 6.8:1 on it (on the lift) */
  --lift: rgba(22, 38, 74, 0.6);          /* navy raised #16264a, soft centre lift */
  --lift-0: rgba(22, 38, 74, 0);
  --serif: Georgia, "Times New Roman", serif;
  --sans: "Avenir Next", Avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color-scheme: dark;
}

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

html {
  background: var(--navy);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  background-color: var(--navy);
  /* The navy-raised lift sits behind the header and links, as on the covers. */
  background-image: radial-gradient(ellipse min(820px, 125vw) min(560px, 70vh) at 50% min(45vh, 420px), var(--lift), var(--lift-0));
  background-repeat: no-repeat;
  color: var(--white);
  font-family: var(--sans);
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.wrap {
  width: 100%;
  max-width: calc(560px + 32px);
  margin-left: auto;
  margin-right: auto;
  padding-left: 16px;
  padding-right: 16px;
}

main {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: clamp(48px, 9vh, 96px);
  padding-bottom: 48px;
}

.profile { text-align: center; }

/* The mark: navy tile with a 1 px white 14% hairline, so it reads on navy (spec "On navy"). */
.mark {
  display: block;
  width: 72px;
  height: 72px;
  margin: 0 auto;
  border-radius: 22.5%;
  box-shadow: 0 0 0 1px var(--hairline);
}
a.mark-link {
  display: block;
  width: 72px;
  margin: 0 auto;
  border-radius: 22.5%;
}
a.mark-link:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 4px;
}

/* Wordmark: Georgia Bold, tracking -1.2%. 46 px stacked on phones, 60 px on one line wider up. */
h1 {
  margin: 26px 0 0;
  font-family: var(--serif);
  font-weight: 700;
  font-size: clamp(2.875rem, 2.1rem + 3.43vw, 3.75rem);
  line-height: 1.06;
  letter-spacing: -0.012em;
  text-wrap: balance;
}
/* The red full stop is graphic only: the alt text "" keeps the heading's accessible name
   "Brit Dad in America". Browsers without content alt text use the first line. */
main:not(.page) h1::after {
  content: ".";
  content: "." / "";
  color: var(--red);
}

.rule {
  width: 48px;
  height: 4px;
  margin: 24px auto 0;
  border: 0;
  border-radius: 0;
  background: var(--blue);
}

.bio {
  margin: 20px auto 0;
  color: var(--mist);
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  line-height: 1.5;
}
/* The flags never sit alone on a line. */
.bio .nowrap { white-space: nowrap; }

@media (min-width: 480px) {
  .mark,
  a.mark-link { width: 84px; height: 84px; }
  h1 { margin-top: 30px; }
  .rule { width: 56px; margin-top: 26px; }
  .bio { margin-top: 22px; font-size: 1.25rem; }
}
/* Wider screens: the wordmark runs on one line, a little wider than the link column. */
@media (min-width: 720px) {
  main:not(.page) h1 { margin-left: -80px; margin-right: -80px; }
}

/* Platform glyphs: simple line icons drawn in-house on a 24 px grid (no platform artwork).
   Colour comes from currentColor, so they follow the link colour. */
.icon {
  display: block;
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.icon .solid { fill: currentColor; stroke: none; }

/* Social icon row on the home page: 48 px round targets with the outline-button edge
   (3.75:1 against navy). 6 x 48 + 5 x 8 = 328 px, the column width at 360 px. */
.socials {
  list-style: none;
  margin: 30px auto 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.socials a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border: 1.5px solid var(--edge);
  border-radius: 50%;
  color: var(--white);
  transition: border-color 0.15s ease, background-color 0.15s ease;
}
.socials .icon { width: 22px; height: 22px; }
.socials a:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 3px;
}
/* Below 360 px the column is under 328 px, so six do not fit on one line:
   two even rows of three instead of five and one (5 + 1 was seen at 352-359 px). */
@media (max-width: 359.98px) {
  .socials { max-width: 160px; }
}
@media (min-width: 480px) {
  .socials { margin-top: 34px; gap: 12px; }
}

/* Link list */
.links {
  list-style: none;
  margin: 40px 0 0;
  padding: 0;
  display: grid;
  gap: 12px;
}

.links a {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 66px;
  padding: 11px 20px;
  border: 1.5px solid var(--edge);
  border-radius: 14px;
  color: var(--white);
  text-align: center;
  text-decoration: none;
  transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.links .label {
  font-size: 1.0625rem;
  font-weight: 600;
  letter-spacing: 0.005em;
  line-height: 1.3;
}

.links .sub {
  margin-top: 3px;
  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1.35;
  color: var(--mist);
  overflow-wrap: anywhere;
}

/* Primary link: cover blue with white text (4.76:1), so the small line stays pure white. */
.links a.primary {
  background: var(--blue);
  border-color: var(--blue);
  color: var(--white);
}
.links a.primary .sub { color: var(--white); }

@media (min-width: 480px) {
  .links { margin-top: 44px; gap: 14px; }
  .links a { min-height: 72px; }
  .links .label { font-size: 1.1875rem; }
  .links .sub { font-size: 0.875rem; }
}

.links a:focus-visible,
.button:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 3px;
}

/* Affiliate disclosure, right under the links. */
.disclosure {
  margin: 18px 0 0;
  color: var(--mist);
  font-size: 0.9375rem;
  line-height: 1.5;
  text-align: center;
  text-wrap: balance;
}

/* Email under the home links: plain text you can read and copy, and a mailto link.
   12 px padding makes the tap area 49.5 px tall (25.5 px line + 24). */
.contact {
  margin: 20px 0 0;
  text-align: center;
  line-height: 1.5;
}
.contact a {
  display: inline-block;
  padding: 12px 4px;
  font-weight: 600;
  overflow-wrap: anywhere;
}
.contact + .disclosure { margin-top: 6px; }

/* Long-form pages (privacy, 404) */
.page h1 {
  font-size: clamp(2.25rem, 1.7rem + 2.4vw, 2.75rem);
  line-height: 1.12;
}

.prose {
  margin-top: 32px;
  text-align: left;
  color: var(--mist);
}
.prose h2 {
  margin: 32px 0 6px;
  color: var(--white);
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
}
.prose p { margin: 0 0 14px; }
.prose .updated {
  margin-bottom: 24px;
  color: var(--mist-dim);
  font-size: 0.9375rem;
  text-align: center;
}

a.inline,
.prose a,
footer a {
  color: var(--white);
  text-decoration-line: underline;
  text-decoration-color: var(--blue);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  overflow-wrap: break-word;
}
a.inline:focus-visible,
.prose a:focus-visible,
footer a:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 2px;
  border-radius: 2px;
}
/* Bigger tap areas for links inside sentences, without changing the layout. */
.prose a { position: relative; }
.prose a::after {
  content: "";
  position: absolute;
  inset: -13px -4px;
}

.actions {
  margin-top: 36px;
  display: flex;
  justify-content: center;
}

/* Secondary button: outline, same shape as the links. */
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 28px;
  border: 1.5px solid var(--edge);
  border-radius: 14px;
  color: var(--white);
  font-weight: 600;
  letter-spacing: 0.005em;
  text-decoration: none;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.lead {
  max-width: 32ch;
  margin: 22px auto 0;
  color: var(--mist);
  text-wrap: balance;
}

/* Primary button: cover blue with white text (4.76:1), as the TikTok link. */
.button.primary {
  background: var(--blue);
  border-color: var(--blue);
  color: var(--white);
}

/* Work with me page */
.intro {
  max-width: 36ch;
  margin: 22px auto 0;
  color: var(--mist);
  font-size: 1.125rem;
  text-wrap: balance;
}
.intro + .actions { margin-top: 26px; }

.section {
  margin-top: 44px;
  padding-top: 30px;
  border-top: 1px solid var(--hairline);   /* decorative divider only */
  text-align: left;
}
.section h2 {
  margin: 0 0 14px;
  font-family: var(--serif);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.012em;
  text-wrap: balance;
}
.section p {
  margin: 14px 0 0;
  color: var(--mist);
}
.section h2 + p { margin-top: 0; }

/* Small caps label above a group, tracked +20% (spec: caps labels +18-22%). */
.section .label-caps {
  margin: 20px 0 10px;
  color: var(--mist);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  line-height: 1.4;
  text-transform: uppercase;
}

/* "Open to" list: white text, a short cover-blue dash as the bullet. */
.ticks {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.ticks li {
  position: relative;
  padding-left: 26px;
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.4;
}
.ticks li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.66em;
  width: 14px;
  height: 3px;
  background: var(--blue);
}

/* Tags: plain text on a faint hairline pill. Not links, so no button edge and no hover. */
.tags {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.tags li {
  padding: 7px 14px;
  border: 1px solid var(--hairline);
  border-radius: 999px;
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

/* Social list with handles: same edge and radius as the link buttons. */
.social-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
.social-list a {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 64px;
  padding: 10px 18px;
  border: 1.5px solid var(--edge);
  border-radius: 14px;
  color: var(--white);
  text-decoration: none;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}
.social-list .name {
  display: block;
  font-weight: 600;
  line-height: 1.3;
}
.social-list .handle {
  display: block;
  color: var(--mist);
  font-size: 0.875rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.social-list a:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: 3px;
}
@media (min-width: 560px) {
  .social-list { grid-template-columns: 1fr 1fr; }
}

/* Get in touch: the address as large text that selects in one go, then a mailto button. */
.section .email-big {
  margin: 0;
  color: var(--white);
  font-size: clamp(1.1875rem, 0.95rem + 1.1vw, 1.5rem);
  font-weight: 600;
  line-height: 1.3;
  overflow-wrap: anywhere;
  -webkit-user-select: all;
  user-select: all;
}
.section .actions {
  margin-top: 20px;
  justify-content: flex-start;
}
.section p.note {
  margin-top: 16px;
  color: var(--mist);
}

#get-in-touch { scroll-margin-top: 24px; }
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

footer {
  flex-shrink: 0;
  padding: 24px 0 36px;
  color: var(--mist-dim);
  font-size: 0.8125rem;
  line-height: 1.6;
  text-align: center;
}
footer p { margin: 0; }
footer a { color: var(--mist); }
/* Bigger tap area for the small footer link without changing the layout. */
footer a { position: relative; }
footer a::after {
  content: "";
  position: absolute;
  inset: -15px -8px;
}
footer p + p { margin-top: 8px; }
footer .sep { padding: 0 0.5em; }

/* Hover only where a real pointer can hover, so tapped buttons on phones do not stay lit. */
@media (hover: hover) and (pointer: fine) {
  .links a:hover {
    border-color: var(--blue);
    background-color: var(--blue-tint);
  }
  .links a.primary:hover {
    background: var(--blue-deep);
    border-color: var(--blue-deep);
  }
  a.inline:hover,
  .prose a:hover,
  footer a:hover {
    color: var(--white);
    text-decoration-color: var(--white);
  }
  .button:hover,
  .socials a:hover,
  .social-list a:hover {
    border-color: var(--blue);
    background-color: var(--blue-tint);
  }
  .button.primary:hover {
    background: var(--blue-deep);
    border-color: var(--blue-deep);
  }
}

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; }
}
