/* ============================================================
   NOWWORX SITE — v3 stylesheet  (light "paper & ink")
   ------------------------------------------------------------
   Why this exists alongside site.css:
   site.css hardcodes the dark-glass marketing surface (dark body,
   glass nav, glass footer). v3 flips the landing page to LIGHT,
   because the page is now led by real screenshots of the app —
   and the app is light (#F2F5FF). Light-on-light lets a screenshot
   read as a screen instead of a glowing rectangle in ink.

   It is also the surface the design guide argues for on the app
   side and the same reasoning applies here: the buyer is 45+ and
   reads this on a phone, outdoors, in daylight.

   Structure deliberately mirrors site.css (tokens → nav → buttons
   → primitives → footer) so the seven dark sub-pages are a tractable
   port later.

   ⚠️ PORTING THE SUB-PAGES IS **NOT** A ONE-<link> SWAP. An earlier
   version of this comment claimed it was; that was wrong, and the
   design-council review caught it. Two reasons:

   1. The two files share 15 token NAMES, and 8 of them hold
      DIFFERENT values — --amber-600 (#E07800 vs #C86A00), all four
      --radius-* (each 2px larger here), --shadow-amber, --t-base and
      --t-fast. A straight swap silently reshapes every card and
      shifts every amber on all seven pages.
   2. The sub-pages are built on the dark-glass tokens (--mkt-*,
      --glass-*) and primitives (.legal-doc, .toc, .faq, .card,
      .contact-card, .cta-band). NONE of those exist here, so they
      would not restyle — they would lose their styling entirely.

   The real port is: reconcile the 8 colliding values first, then
   port the primitives page by page. Budget it as work, not a swap.

   Dark is kept as PUNCTUATION only — .band-night, used THREE times:
   #film, the band before the footer, and the final CTA. The third is
   #film and it was added for the ad (27 Aug): a film wants a dark room,
   and the bands either side of it are both light, so a light band there
   would have run the ticker strip, the film and #why together with
   nothing between them. Three is the ceiling — a fourth and it stops
   being punctuation.
============================================================ */

/* ------------------------------------------------------------
   DISPLAY TYPE: Outfit only.

   site.css defines a 'HankenSwap' face whose unicode-range covers
   ONLY N b e f h n p q r t y, with Outfit picking up every other
   character. The intent was presumably to echo the wordmark, but
   the effect is that single words are set in TWO typefaces:
   "Keep" renders K in Outfit and e-e-p in Hanken Grotesk, and in
   "the phone." only the o is Outfit. At a 78px headline the
   mismatched letterforms and x-heights read as a rendering fault.

   Dropped here on the owner's call. Side benefit: it also removes
   six static TrueType downloads (~115KB on the wire) that existed
   to serve eleven glyphs.

   NOTE: site.css still carries the swap, so the seven dark
   sub-pages keep it until they are ported.
------------------------------------------------------------ */

:root {
  /* --- ink (text) --- */
  --ink-900: #0B1226;
  --ink-700: #22304F;
  --ink-600: #3A4867;
  --ink-500: #55637F;
  /* #737F98 measured 3.86:1 on --paper and 3.59:1 on --paper-2 — both fail
     WCAG 2.2 AA for small text, and every use of this token IS small text
     (captions, plan sub-labels, the trades label).
     #646E84 measures 4.90 / 4.57 against the same two grounds. */
  --ink-400: #646E84;

  /* --- paper (surfaces). Warm, so the cool app screenshots read as screens. --- */
  --paper:    #FBFAF7;
  --paper-2:  #F4F2EC;
  --card:     #FFFFFF;
  --line:     #E4E0D6;
  --line-2:   #CFC9BB;

  /* --- brand --- */
  --cobalt-700: #1338A0;
  --cobalt-600: #1B48CC;
  --cobalt-500: #2356E8;
  --cobalt-400: #5B8EF5;
  --cobalt-100: #DCE8FF;
  --cobalt-50:  #EEF3FF;

  /* Two text-safe ambers, because one cannot serve both sizes.
     --amber-600 measures 3.65:1 on --paper: enough for LARGE text only
       (WCAG 2.2 AA large = 24px regular / 18.66px bold), so it is reserved
       for the .ink-amber headline accents and the 53px/900 .stat-fig.
     --amber-700 measures 4.91 / 4.58 on --paper / --paper-2, so it is the
       one used for the small bold uppercase labels (.kicker, .evidence-tag,
       the Urgent rung), which need the full 4.5:1. */
  --amber-700: #A85900;
  --amber-600: #C86A00;
  --amber-500: #FF8C00;   /* backgrounds and borders only — 2.23:1 as text */
  --amber-400: #FFAA33;
  --amber-50:  #FFF4E4;

  --green-700: #076B4A;
  --green-600: #0E9F6E;
  --green-50:  #E7F7F0;

  --red-600:   #C7362B;
  --red-50:    #FDEDEB;

  /* --- night: the dark bands and the footer ---
     These used to be the old site's saturated navy (#080E20 / #0E1734) with a
     cobalt glow, which is what made them read as a different website dropped
     into this one. They are now a deep WARM charcoal from the same family as
     the paper — same warm cast, opposite end of the scale — so the page runs
     light-warm to dark-warm instead of warm-to-navy. The white is warmed to
     match; a cool #F6F8FC white on a warm ground looks blue by comparison.
     Cobalt stays where it belongs: the app screenshots and the interactive
     bits, which now pop against the warm ground rather than blending into it. */
  --night-900: #14120F;
  --night-800: #201C18;
  --night-700: #2C2620;
  --night-text:      #FAF8F5;
  --night-text-mute: rgba(250,248,245,0.76);
  --night-line:      rgba(255,255,255,0.13);

  --font-display: 'Outfit', sans-serif;
  --font-body:    'DM Sans', sans-serif;
  --font-accent:  'Anton', sans-serif;

  --radius-sm:   8px;
  --radius-md:   14px;
  --radius-lg:   22px;
  --radius-xl:   30px;
  --radius-pill: 999px;

  --ease: cubic-bezier(0.4,0,0.2,1);
  --t-fast: 140ms var(--ease);
  --t-base: 240ms var(--ease);

  --shadow-sm: 0 1px 2px rgba(11,18,38,.06), 0 2px 6px rgba(11,18,38,.05);
  --shadow-md: 0 2px 4px rgba(11,18,38,.05), 0 8px 24px rgba(11,18,38,.08);
  --shadow-lg: 0 4px 8px rgba(11,18,38,.05), 0 18px 48px rgba(11,18,38,.13);
  --shadow-amber: 0 8px 22px rgba(255,140,0,.34);

  --container: 1160px;
}

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

/* scroll-padding-top clears the sticky nav (73px on mobile, 59px desktop) so
   an in-page anchor doesn't land with its heading hidden underneath it.
   Smooth scrolling is desktop-only: over a ~20,000px page it makes a phone tap
   feel like a hang, and it fights momentum scrolling on iOS. */
html { scroll-padding-top: 88px; }
@media (min-width: 981px) { html { scroll-behavior: smooth; } }
html, body { overflow-x: hidden; }

body {
  background: var(--paper);
  color: var(--ink-700);
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.62;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

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

/* Visible keyboard focus everywhere — the old page had none. */
a:focus-visible, button:focus-visible, summary:focus-visible {
  outline: 3px solid var(--cobalt-500);
  outline-offset: 3px;
  border-radius: 4px;
}

/* ===== LAYOUT ===== */
.container { max-width: var(--container); margin: 0 auto; padding: 0 28px; }
.container-narrow { max-width: 800px; margin: 0 auto; }
section { position: relative; }

.skip {
  position: absolute; left: -9999px; top: 0;
  background: var(--cobalt-500); color: #fff;
  font-family: var(--font-display); font-weight: 700;
  padding: 12px 20px; border-radius: 0 0 var(--radius-md) 0; z-index: 200;
}
.skip:focus { left: 0; }

/* ===== NAVIGATION ===== */
.nav {
  position: sticky; top: 0; z-index: 100;
  background: rgba(251,250,247,0.88);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line);
}
.nav-inner {
  max-width: 1240px; margin: 0 auto;
  padding: 14px 28px;
  display: flex; align-items: center; gap: 36px;
}
.nav-logo { display: flex; align-items: center; text-decoration: none; }
/* The logo SVG is used as authored — no recolour, no crop. Only scaled. */
.nav-logo img { height: 26px; width: auto; display: block; }
.nav-links { display: flex; gap: 26px; margin-left: 6px; }
.nav-links a {
  color: var(--ink-600); text-decoration: none;
  font-family: var(--font-display); font-weight: 600; font-size: 0.95rem;
  transition: color var(--t-fast);
}
.nav-links a:hover { color: var(--cobalt-600); }
.nav-cta { margin-left: auto; display: flex; align-items: center; gap: 12px; }

/* ===== BUTTONS ===== */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  font-family: var(--font-display); font-weight: 700;
  border: 1px solid transparent; cursor: pointer; text-decoration: none;
  white-space: nowrap; text-align: center;
  transition: transform var(--t-base), box-shadow var(--t-base), background var(--t-base), border-color var(--t-base);
}
/* min-heights are tap targets: 48px is the WCAG 2.2 target-size floor. */
.btn-lg { padding: 16px 30px; font-size: 1.05rem; min-height: 56px; border-radius: var(--radius-pill); }
.btn-md { padding: 12px 22px; font-size: 0.95rem; min-height: 48px; border-radius: var(--radius-pill); }
.btn-sm { padding: 9px 18px;  font-size: 0.88rem; min-height: 40px; border-radius: var(--radius-pill); }

.btn-amber {
  background: linear-gradient(135deg, var(--amber-400) 0%, var(--amber-500) 100%);
  color: #2A1A00; box-shadow: var(--shadow-amber);
}
.btn-amber:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(255,140,0,.44); }

.btn-ink {
  background: var(--ink-900); color: #fff; box-shadow: var(--shadow-md);
}
.btn-ink:hover { transform: translateY(-2px); background: #131E3E; }

.btn-line {
  background: var(--card); color: var(--ink-900);
  border-color: var(--line-2); box-shadow: var(--shadow-sm);
}
.btn-line:hover { border-color: var(--ink-400); transform: translateY(-2px); }

.btn-quiet { background: transparent; color: var(--ink-600); }
.btn-quiet:hover { color: var(--cobalt-600); }

/* On night bands the outline button needs light treatment. */
.band-night .btn-line {
  background: rgba(255,255,255,0.08); color: var(--night-text);
  border-color: var(--night-line); box-shadow: none;
}
.band-night .btn-line:hover { background: rgba(255,255,255,0.15); border-color: rgba(255,255,255,0.3); }

/* ===== BANDS ===== */
.band       { padding: 96px 0; }
.band-tight { padding: 64px 0; }
.band-alt   { background: var(--paper-2); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.band-night {
  /* Warm amber wash rather than the old cobalt glow — it ties the dark bands
     to the page's accent instead of to the retired navy surface. */
  background:
    radial-gradient(ellipse 90% 70% at 50% 0%, rgba(255,140,0,0.13) 0%, transparent 70%),
    linear-gradient(160deg, var(--night-800) 0%, var(--night-900) 62%, #0E0C0A 100%);
  color: var(--night-text);
}
.band-night h2, .band-night h3, .band-night strong, .band-night b { color: var(--night-text); }
.band-night p, .band-night li { color: var(--night-text-mute); }

/* ===== SECTION HEADS ===== */
.head { max-width: 760px; margin: 0 auto 56px; text-align: center; }
.head.left { margin-left: 0; text-align: left; }
.kicker {
  display: inline-block;
  font-family: var(--font-display); font-weight: 800;
  font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--amber-700); margin-bottom: 14px;
}
.band-night .kicker { color: var(--amber-400); }
h1, h2, h3, h4 { font-family: var(--font-display); color: var(--ink-900); }
.h1 {
  font-weight: 900; font-size: clamp(2.7rem, 6.4vw, 4.9rem);
  line-height: 1.0; letter-spacing: -0.032em;
}
.h2 {
  font-weight: 800; font-size: clamp(2rem, 4.6vw, 3.15rem);
  line-height: 1.08; letter-spacing: -0.024em; margin-bottom: 18px;
}
.h3 { font-weight: 700; font-size: 1.28rem; line-height: 1.25; letter-spacing: -0.012em; margin-bottom: 9px; }
.lead { font-size: 1.18rem; line-height: 1.6; color: var(--ink-500); }
.band-night .lead { color: var(--night-text-mute); }
.ink-amber { color: var(--amber-600); }
.band-night .ink-amber { color: var(--amber-400); }
.ink-cobalt { color: var(--cobalt-600); }

/* ===== CARD ===== */
.card {
  background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius-lg); padding: 30px;
  box-shadow: var(--shadow-sm);
}
.band-night .card {
  background: rgba(255,255,255,0.055); border-color: var(--night-line); box-shadow: none;
}

/* ===== SCREENSHOT FRAMES =====
   Frames are CSS, never baked into the asset, so one export can be
   reframed. Most shots are wrapped in an <a> to the raw file so a phone
   user can tap to see it full size — no JS lightbox. The receptionist
   section's conversation is a <div> instead (19 Aug): it is the only capture
   that animates, and opening an animated WebP bare in a new tab is a worse
   view of it than the section already gives. */
.shot { display: block; text-decoration: none; position: relative; }
.shot picture { display: block; }
.shot img {
  display: block; width: 100%; height: auto;
  border: 1px solid var(--line-2);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  background: #F2F5FF;   /* the app's own page colour, so lazy-load shows no white flash */
}
.band-night .shot img { border-color: rgba(255,255,255,0.18); }
.shot-cap {
  display: block;
  font-family: var(--font-display); font-weight: 600;
  font-size: 0.84rem; color: var(--ink-400);
  margin-top: 12px;
}
.band-night .shot-cap { color: rgba(246,248,252,0.74); }
/* Touch devices can't hover, so tell them the image is tappable. */
@media (hover: none) {
  .shot-cap::after { content: ' · tap for the full screen'; color: var(--cobalt-500); }
  .band-night .shot-cap::after { color: var(--cobalt-400); }
}

/* Phone frame — for the 1179-wide mobile captures */
.phone {
  position: relative; max-width: 366px; margin: 0 auto;
  background: #14120F; border-radius: 36px; padding: 9px;   /* warm, to match .band-night */
  box-shadow: 0 28px 64px rgba(11,18,38,.28), 0 6px 18px rgba(11,18,38,.16);
}
.phone::after {   /* speaker slot */
  content: ''; position: absolute; top: 18px; left: 50%; transform: translateX(-50%);
  width: 66px; height: 4px; border-radius: 999px; background: rgba(255,255,255,0.20);
}
.phone img {
  display: block; width: 100%; height: auto;
  border-radius: 28px; border: 0; box-shadow: none; background: #F2F5FF;
}

/* ===== TICKS ===== */
.tick {
  width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0;
  background: var(--green-50); border: 1px solid var(--green-600);
  display: inline-flex; align-items: center; justify-content: center;
}
.tick::after {
  content: ''; width: 6px; height: 10px;
  border: solid var(--green-700); border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg) translateY(-1px);
}
.band-night .tick { background: rgba(14,159,110,0.2); border-color: #34D399; }
.band-night .tick::after { border-color: #6EE7B7; }

.ticks { list-style: none; display: grid; gap: 15px; }
.ticks li { display: flex; gap: 13px; align-items: flex-start; }

/* ===== FOOTER ===== */
footer {
  background: var(--night-900); color: rgba(246,248,252,0.60);
  padding: 66px 0 36px; font-size: 0.94rem;
}
.footer-grid {
  display: grid; grid-template-columns: 2fr repeat(3, 1fr);
  gap: 48px; margin-bottom: 46px;
}
/* Logo on the dark footer: invert to white. This is a tone change for
   contrast only — the mark itself is untouched. */
/* width:auto is load-bearing. The <img> carries width="538" height="80" so it
   reserves its box before the SVG lands; that attribute is a presentational
   hint, so without an explicit auto here the logo renders 538px wide and
   overflows the footer on any phone. */
.footer-brand img { height: 28px; width: auto; filter: brightness(0) invert(1); margin-bottom: 16px; }
.footer-brand p { max-width: 300px; line-height: 1.6; font-size: 0.92rem; }
.footer-col h4 {
  font-family: var(--font-display); font-size: 0.74rem; font-weight: 800;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(246,248,252,0.82); margin-bottom: 15px;
}
.footer-col a {
  display: block; color: rgba(246,248,252,0.60); text-decoration: none;
  font-size: 0.93rem; margin-bottom: 10px; transition: color var(--t-fast);
}
.footer-col a:hover { color: #fff; }
.footer-statutory {
  border-top: 1px solid var(--night-line);
  padding-top: 20px; margin-bottom: 18px;
  font-size: 0.8rem; line-height: 1.65; color: rgba(246,248,252,0.52);
}
.footer-statutory a { color: rgba(246,248,252,0.62); }
.footer-bottom {
  border-top: 1px solid var(--night-line); padding-top: 22px;
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 14px;
  font-size: 0.82rem; color: rgba(246,248,252,0.52);
}

/* ===== RESPONSIVE ===== */
@media (max-width: 980px) {
  .nav-inner { gap: 16px; padding: 11px 20px; }
  /* The nav is sticky. Wrapping the full link set onto two extra rows made it
     154px tall on a 390px screen — a fifth of the viewport, permanently. The
     first fix kept ONE link (Pricing), but with the others gone it sat hard
     against the wordmark and read as "NOWWORX Pricing" — a single surviving
     section name looks like part of the brand, not like navigation. So on the
     owner's call it is now all-or-nothing: below 980px the links drop
     entirely and the nav is logo + Get started (~58px), doubling as the
     always-available CTA. The full link set stays in the footer, and the page
     is a linear read anyway. No hamburger, no JS. */
  .nav-links { display: none; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 30px; }
}
/* Narrow phones. 320px (SE / Display Zoom) and 360px (a very large share of
   Android) both have to keep the amber CTA fully on screen, because the sticky
   nav holds the ONLY persistent call to action on a 20,000px page. Note that
   html{overflow-x:hidden} hides the symptom, so this must be checked by
   measuring the button's right edge against clientWidth, not scrollWidth. */
@media (max-width: 430px) {
  .nav-inner { padding: 11px 14px; gap: 10px; }
  .nav-logo img { height: 21px; }
  .btn-md { padding: 11px 16px; font-size: 0.9rem; }
}

@media (max-width: 640px) {
  body { font-size: 16px; }
  .container { padding: 0 18px; }
  .band { padding: 62px 0; }
  .band-tight { padding: 44px 0; }
  .head { margin-bottom: 38px; }
  .lead { font-size: 1.08rem; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-bottom { flex-direction: column; }
  .nav-cta .btn-quiet { display: none; }
  .card { padding: 24px; }
}

/* ============================================================
   SUB-PAGE PRIMITIVES (about / careers / contact / enterprise /
   help / sms / legal)
   ------------------------------------------------------------
   The light counterparts of the dark-glass primitives in site.css.
   These exist so the sub-pages can move onto this stylesheet at
   all — the header comment above explains why that was never the
   one-<link> swap an earlier note claimed.

   Class names are kept IDENTICAL to site.css on purpose, so
   converting a page is a <link> change plus a content pass rather
   than a re-tagging exercise. The one deliberate rename is
   .enq-success .tick -> .enq-tick, because .tick here is the small
   green check and its ::after would have stamped a second tick
   inside the big amber one.
============================================================ */

/* ===== PAGE HEADER ===== */
.page-hero { padding: 76px 0 44px; text-align: center; }
.page-hero .eyebrow {
  display: inline-block;
  font-family: var(--font-display); font-weight: 800;
  font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--amber-700); margin-bottom: 16px;
  background: none; border: 0; padding: 0; box-shadow: none;
}
.page-hero h1 {
  font-family: var(--font-display); font-weight: 900;
  font-size: clamp(2.1rem, 5vw, 3.4rem);
  line-height: 1.06; letter-spacing: -0.028em; margin-bottom: 18px;
}
.page-hero .lead { font-size: 1.14rem; color: var(--ink-500); max-width: 620px; margin: 0 auto; }

/* ===== GENERIC SECTION ===== */
.section { padding: 26px 0 76px; }
.section-narrow { max-width: 820px; margin: 0 auto; }
.grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(258px, 1fr)); }

/* A real heading for sub-page section titles. The old pages did this with an
   <h1> carrying six inline style declarations, which put three h1s on a page. */
.sub-h2 {
  font-family: var(--font-display); font-weight: 800;
  font-size: clamp(1.6rem, 3.6vw, 2.3rem); line-height: 1.14;
  letter-spacing: -0.02em; color: var(--ink-900);
  text-align: center; margin-bottom: 34px;
}

/* ===== LONG-FORM PROSE (legal.html, sms.html) ===== */
.legal-doc { max-width: 820px; margin: 0 auto; color: var(--ink-600); }
.legal-doc h2 {
  font-family: var(--font-display); font-weight: 800; font-size: 1.7rem;
  color: var(--ink-900); margin: 56px 0 16px; padding-top: 20px;
  border-top: 1px solid var(--line); scroll-margin-top: 96px;
}
.legal-doc h2:first-of-type { border-top: none; padding-top: 0; margin-top: 8px; }
.legal-doc h3 {
  font-family: var(--font-display); font-weight: 700; font-size: 1.12rem;
  color: var(--ink-900); margin: 28px 0 10px;
}
.legal-doc p, .legal-doc li { font-size: 0.97rem; line-height: 1.78; margin-bottom: 14px; }
.legal-doc ul, .legal-doc ol { margin: 0 0 14px 22px; }
.legal-doc a { color: var(--cobalt-600); text-decoration: underline; }
.legal-doc strong { color: var(--ink-900); }
.legal-doc table { width: 100%; border-collapse: collapse; margin: 16px 0 24px; font-size: 0.9rem; }
.legal-doc th, .legal-doc td { border: 1px solid var(--line); padding: 10px 12px; text-align: left; vertical-align: top; }
.legal-doc th { color: var(--ink-900); font-family: var(--font-display); font-weight: 700; background: var(--paper-2); }
.legal-meta { font-size: 0.86rem; color: var(--ink-400); margin-bottom: 28px; }

/* An unfilled placeholder in a published contract should be impossible to
   scroll past. On the dark stylesheet these were plain text and blended in. */
.fill { background: #FFE9B8; color: #6B3E00; padding: 0 5px; border-radius: 4px; font-weight: 700; }

/* ===== TOC PILL ROW ===== */
.toc { display: flex; flex-wrap: wrap; gap: 10px; max-width: 820px; margin: 0 auto 40px; }
.toc a {
  font-family: var(--font-display); font-size: 0.85rem; font-weight: 700;
  color: var(--ink-600); text-decoration: none;
  padding: 9px 17px; border-radius: var(--radius-pill);
  background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow-sm);
  transition: color var(--t-fast), border-color var(--t-base);
}
.toc a:hover { color: var(--cobalt-600); border-color: var(--line-2); }

/* ===== ACCORDION (help.html) ===== */
.faq { max-width: 820px; margin: 0 auto; }
.faq details {
  background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius-md); margin-bottom: 12px; box-shadow: var(--shadow-sm);
}
.faq summary {
  cursor: pointer; list-style: none; padding: 19px 24px; min-height: 48px;
  font-family: var(--font-display); font-weight: 700; font-size: 1.02rem; color: var(--ink-900);
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-size: 1.45rem; line-height: 1; color: var(--amber-600); transition: transform var(--t-base); flex-shrink: 0; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details > div { padding: 0 24px 21px; color: var(--ink-500); font-size: 0.97rem; line-height: 1.72; }
.faq details > div p + p { margin-top: 11px; }
.faq details > div a { color: var(--cobalt-600); font-weight: 600; }
.faq-group-title {
  font-family: var(--font-display); font-weight: 800; font-size: 0.78rem;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--amber-700); margin: 42px 0 16px;
}
.faq-group-title:first-child { margin-top: 0; }

/* ===== CONTACT CARDS ===== */
.contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(238px, 1fr)); gap: 20px; max-width: 820px; margin: 0 auto; }
.contact-card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: 30px 26px; text-align: center; box-shadow: var(--shadow-sm);
}
.contact-card .ico { font-size: 1.8rem; margin-bottom: 12px; }
.contact-card h3 { font-family: var(--font-display); font-weight: 700; font-size: 1.05rem; margin-bottom: 8px; }
.contact-card p { color: var(--ink-500); font-size: 0.93rem; margin-bottom: 16px; }
.contact-card a.email { font-family: var(--font-display); font-weight: 700; color: var(--cobalt-600); text-decoration: none; font-size: 1rem; }
.contact-card a.email:hover { text-decoration: underline; }

/* ===== CENTRED CTA BLOCK ===== */
.cta-band {
  max-width: 820px; margin: 64px auto 0; text-align: center;
  background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius-xl); padding: 48px 34px; box-shadow: var(--shadow-md);
}
.cta-band h2 {
  font-family: var(--font-display); font-weight: 800;
  font-size: clamp(1.5rem, 3.5vw, 2.1rem); margin-bottom: 12px; letter-spacing: -0.02em;
}
.cta-band p { color: var(--ink-500); margin-bottom: 26px; }
.cta-actions { display: flex; gap: 13px; justify-content: center; flex-wrap: wrap; }

/* ===== ENQUIRY FORMS (contact.html, enterprise.html) ===== */
.enq-card { max-width: 720px; margin: 0 auto; }
.enq-form { display: flex; flex-direction: column; gap: 18px; margin-top: 10px; }
.enq-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.enq-field { display: flex; flex-direction: column; gap: 7px; }
.enq-field label { font-family: var(--font-display); font-size: 0.85rem; font-weight: 700; color: var(--ink-900); }
.enq-field .opt { color: var(--ink-400); font-weight: 500; }
.enq-field input, .enq-field select, .enq-field textarea {
  width: 100%; font-family: var(--font-body); font-size: 0.97rem; color: var(--ink-900);
  background: var(--paper); border: 1px solid var(--line-2); border-radius: var(--radius-md);
  padding: 13px 15px; outline: none; min-height: 48px;
  transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.enq-field input::placeholder, .enq-field textarea::placeholder { color: var(--ink-400); }
.enq-field input:focus, .enq-field select:focus, .enq-field textarea:focus {
  border-color: var(--cobalt-500); box-shadow: 0 0 0 3px rgba(35,86,232,0.16); background: #fff;
}
.enq-field textarea { resize: vertical; min-height: 116px; }
.enq-field.invalid input, .enq-field.invalid select, .enq-field.invalid textarea {
  border-color: var(--red-600); background: var(--red-50);
}
.enq-error { color: var(--red-600); font-size: 0.82rem; min-height: 0; }
.enq-consent { color: var(--ink-500); font-size: 0.84rem; line-height: 1.55; }
.enq-consent a { color: var(--cobalt-600); font-weight: 600; }
.enq-submit { width: 100%; justify-content: center; }
.enq-formerror { color: var(--red-600); font-size: 0.92rem; margin-top: 4px; }
.enq-success { text-align: center; padding: 10px 0 4px; }
/* .enq-tick, NOT .tick — see the note at the top of this block. */
.enq-tick {
  width: 64px; height: 64px; margin: 0 auto 18px; border-radius: 999px;
  background: linear-gradient(135deg, var(--amber-400) 0%, var(--amber-500) 100%);
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; color: #2A1A00; font-weight: 800;
}
.enq-success h3 { font-family: var(--font-display); color: var(--ink-900); font-size: 1.4rem; margin: 0 0 8px; }
.enq-success p { color: var(--ink-500); }
.enq-emailnote { color: var(--ink-500); font-size: 0.88rem; text-align: center; margin-top: 18px; }
.enq-emailnote a { color: var(--cobalt-600); font-weight: 600; }

@media (max-width: 640px) {
  .page-hero { padding: 54px 0 34px; }
  .section { padding: 20px 0 56px; }
  .cta-band { padding: 34px 22px; margin-top: 44px; }
  .cta-actions .btn { width: 100%; }
  .enq-row { grid-template-columns: 1fr; }
  .legal-doc h2 { font-size: 1.38rem; }
}

/* A contract table with 4+ columns is wider than any phone. It scrolls inside
   its own box; the alternative is html{overflow-x:hidden} quietly CLIPPING
   contract text, which is worse than a scrollbar. tabindex+role make the
   scrollable region reachable by keyboard, per WCAG 2.2 SC 2.1.1. */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 16px 0 24px; }
.table-scroll table { margin: 0; min-width: 520px; }
.table-scroll:focus-visible { outline: 3px solid var(--cobalt-500); outline-offset: 3px; }
