/* ==========================================================================
   wave2-b.css — Builder B: content clarity + mobile UX (wave-2 ideas 236–269)
   Brand: #6ea8ff / #cfe2ff / #0b0c11, dark gray, dark mode always.
   PROGRESSIVE ENHANCEMENT: this file is strictly optional. Every rule below is
   additive — every page must look and work fine if this stylesheet 404s
   (e.g. a prelaunch 302), with no unstyled-content flashes or broken layout.
   Conventions documented: dates "Sep 26, 2026" (#241), measures "X g (Y oz)" /
   "X cm (Y in)" (#242), one verb per CTA (#252).
   ========================================================================== */

/* ---------- #241 one date format: "Sep 26, 2026" (enforced by XC.date() in
   wave2-b.js; <time datetime> keeps the machine-readable date) ---------- */
.updated{display:block;font-size:.8rem;color:var(--muted);letter-spacing:.02em;margin:.4rem 0 0}

/* ---------- #237 TL;DR box — the page's point, three bullets, for people
   who won't scroll ---------- */
.tldr{background:rgba(110,168,255,.08);border:1px solid rgba(110,168,255,.35);
  border-radius:14px;padding:1rem 1.25rem;margin:1.2rem auto 0;max-width:720px}
.tldr h2{font-size:1rem;margin:0 0 .5rem;color:var(--blue2);letter-spacing:.04em}
.tldr ul{margin:0;padding-left:1.2rem;display:grid;gap:.35rem}
.tldr li{font-size:.95rem;color:var(--ink)}
.tldr li strong{color:var(--blue2)}

/* ---------- #239 jargon tooltips — accessible <dfn> component.
   Newcomers get the definition on hover / focus / tap; nothing here is
   hover-only. First use of each term also links to glossary.html (see HTML). */
dfn.xc-jargon{font-style:normal;border-bottom:1px dotted var(--blue);cursor:help;
  text-decoration:none;position:relative;color:var(--blue2)}
dfn.xc-jargon:focus{outline:2px solid var(--blue);outline-offset:2px;border-radius:3px}
.xc-tip{position:absolute;z-index:120;max-width:min(260px,80vw);background:#14161d;
  border:1px solid rgba(110,168,255,.6);border-radius:10px;padding:.6rem .8rem;
  font-size:.82rem;line-height:1.45;color:var(--ink);font-style:normal;
  box-shadow:0 10px 30px rgba(0,0,0,.55);pointer-events:none}
.xc-tip a{color:var(--blue2)}

/* ---------- #247 "Still stuck?" off-ramp box — no dead ends on content pages */
.still-stuck{border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);
  padding:1.3rem 1.5rem;margin:2.5rem auto 0;max-width:720px;text-align:center}
.still-stuck h2{font-size:1.05rem;margin:0 0 .4rem}
.still-stuck p{color:var(--muted);font-size:.95rem;margin:0 0 .8rem}
.still-stuck .still-links{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap}

/* ---------- #251 policy bottom line — honest summary, no unconfirmed numbers */
.bottom-line{border-left:3px solid var(--blue);background:rgba(110,168,255,.07);
  border-radius:0 12px 12px 0;padding:.9rem 1.1rem;margin:0 auto 1.4rem;max-width:720px}
.bottom-line p{margin:0;font-size:.95rem}
.bottom-line strong{color:var(--blue2)}
.bottom-line .pending{color:var(--muted);font-size:.85rem;display:block;margin-top:.3rem}

/* ---------- #249 safety cross-link line on trick pages ---------- */
.safety-note{max-width:720px;margin:1.6rem auto 0;padding:.8rem 1.1rem;font-size:.9rem;
  border:1px dashed rgba(110,168,255,.45);border-radius:12px;color:var(--muted);text-align:center}
.safety-note a{color:var(--blue2);font-weight:700}

/* ---------- #242 consistent measurement format (docs only — no real numbers
   exist yet). When specs land, write "X g (Y oz)" and "X cm (Y in)". ---------- */
.measure{font-variant-numeric:tabular-nums;white-space:nowrap}

/* ==========================================================================
   MOBILE-FIRST UX (253–269)
   ========================================================================== */

/* ---------- #260 instant, honest tap feedback + brand-blue tap highlight ---------- */
html{-webkit-tap-highlight-color:rgba(110,168,255,.35)}
@media (hover:none),(pointer:coarse){
  a:active,.btn:active,button:active{transform:scale(.97);filter:brightness(1.12)}
  .btn,.btn-small,button,a{transition:transform .08s ease,filter .08s ease}
}

/* ---------- #253 44×44px touch-target audit ----------
   Suspects: sticky-bar / nudge dismiss × buttons, share-kit buttons,
   footer sitemap links, configurator option buttons. */
.sticky-x,.nudge-x{min-width:44px;min-height:44px;display:inline-flex;
  align-items:center;justify-content:center;padding:0 .6rem}
.share-row .btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.foot-map a{display:inline-block;min-height:44px;line-height:44px;padding:0 .5rem}
.poll button{min-height:44px}
.metronome [data-metro-toggle]{min-height:44px;min-width:44px}
[data-add-trick]{min-height:44px;min-width:44px}

/* ---------- #254 safe-area insets on fixed chrome (notched iPhones) ----------
   The sticky bar and nudge never sit under the home indicator. */
.sticky-bar{padding-bottom:calc(.7rem + env(safe-area-inset-bottom,0px))}
.nudge{margin-bottom:env(safe-area-inset-bottom,0px)}
/* keep the sticky bar from covering footer content while it's visible */
body:has(.sticky-bar:not([hidden])){padding-bottom:env(safe-area-inset-bottom,0px)}

/* ---------- #255 thumb-zone CTA placement ----------
   Sticky bar keeps the primary action bottom-right (natural right-thumb
   reach); the dismiss affordance stays clearly secondary. */
.sticky-bar .btn{order:2}
.sticky-bar .sticky-x{order:3;opacity:.75}

/* ---------- #256 mobile form fields that don't fight the keyboard ----------
   16px minimum at phone widths kills Safari's focus zoom. Right keyboards
   come from inputmode/enterkeyhint attributes (added in the HTML). */
@media (max-width:720px){
  input[type="text"],input[type="email"],input[type="tel"],input[type="search"],
  input[type="number"],input[type="date"],textarea,select{font-size:16px}
}

/* ---------- #257 viewport-height fallback chain ----------
   100vh (oldest) → 100svh (small viewport) → 100dvh (dynamic browser chrome). */
.hero{min-height:100vh;min-height:100svh;min-height:100dvh}

/* ---------- #258 scroll margin for the fixed nav ----------
   Anchored sections never land underneath the fixed header. */
html{scroll-padding-top:5rem}
section[id],[id].reveal,main [id]{scroll-margin-top:5rem}

/* ---------- #259 compare table → stacked cards on phones ----------
   data-xc-label attributes are added by wave2-b.js (progressive: without JS
   the table keeps its horizontal scroll wrapper). */
@media (max-width:640px){
  .compare-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .compare-table,.compare-table tbody{display:block;width:100%}
  .compare-table tr{display:block;background:var(--card);border:1px solid var(--line);
    border-radius:14px;margin:0 0 1rem;padding:.4rem 1rem 1rem;box-shadow:0 6px 20px rgba(0,0,0,.25)}
  .compare-table tbody th{display:block;font-size:1.05rem;color:var(--blue2);
    border-bottom:1px solid var(--line);padding:.7rem 0;margin-bottom:.4rem}
  .compare-table td{display:flex;justify-content:space-between;align-items:baseline;
    gap:1rem;padding:.45rem 0;border:0;text-align:right}
  .compare-table td::before{content:attr(data-xc-label);font-weight:700;color:var(--muted);
    font-size:.82rem;text-align:left;flex-shrink:0}
}

/* ---------- #262 landscape-phone hero — a short strip, not a giant logo ---------- */
@media (orientation:landscape) and (max-height:520px){
  .hero{padding:4.5rem 1.2rem 2rem}
  .hero-logo{width:64px;height:64px}
  .hero h1{font-size:1.6rem}
  .hero .section-sub{font-size:.95rem}
}

/* ---------- #250 "best for" verdict row — the skimmer's takeaway ---------- */
.compare-table tr.best-for{background:rgba(110,168,255,.09)}
.compare-table tr.best-for th{color:var(--blue2)}
.compare-table tr.best-for td{font-weight:600}
.mini-toc{position:sticky;top:3.6rem;z-index:50;margin:0 auto 1rem;max-width:720px;display:none}
.mini-toc details{background:rgba(17,19,27,.96);border:1px solid rgba(110,168,255,.4);
  border-radius:12px;backdrop-filter:blur(8px)}
.mini-toc summary{cursor:pointer;list-style:none;min-height:44px;display:flex;
  align-items:center;justify-content:space-between;padding:.55rem 1rem;font-weight:700;
  font-size:.9rem;color:var(--blue2)}
.mini-toc summary::-webkit-details-marker{display:none}
.mini-toc nav{display:flex;flex-direction:column;padding:0 1rem .8rem;gap:.2rem}
.mini-toc a{min-height:44px;display:flex;align-items:center;color:var(--ink);
  text-decoration:none;font-size:.92rem;border-top:1px solid var(--line)}
.mini-toc a:first-child{border-top:0}
@media (max-width:720px){.mini-toc.has-sections{display:block}}

/* ---------- #264 touch-action:manipulation on the clicker game ----------
   Rapid taps register as taps on iOS, never as double-tap zoom. */
[data-click-btn],.rage-zone{touch-action:manipulation}

/* ---------- #265 shrinking nav on scroll — small phones get the pixels back ---------- */
.nav.nav--compact{padding-top:.35rem;padding-bottom:.35rem}
.nav.nav--compact .brand img{width:28px;height:28px}
.nav.nav--compact .brand span{font-size:.95rem}
@media (prefers-reduced-motion:no-preference){
  .nav{transition:padding .2s ease}
  .nav .brand img{transition:width .2s ease,height .2s ease}
}

/* ---------- #267 nudge dialog fits 320px screens ---------- */
@media (max-width:360px){
  .nudge{inset-inline:1rem;left:1rem;right:1rem;max-width:none}
}

/* ---------- #261 service-worker update toast ---------- */
.xc-sw-toast{position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(1.2rem + env(safe-area-inset-bottom,0px));z-index:130;
  background:#14161d;border:1px solid rgba(110,168,255,.6);border-radius:12px;
  padding:.8rem 1rem;display:flex;align-items:center;gap:.8rem;max-width:min(92vw,420px);
  box-shadow:0 14px 40px rgba(0,0,0,.55);font-size:.9rem}
.xc-sw-toast button{min-height:44px}

/* ---------- #243/#245 FAQ density: answers stay short, first sentence bold ---------- */
.faq-list details p strong:first-child{color:var(--ink)}

/* ---------- #246 FAQ audience groups ---------- */
.faq-groups{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;margin:1.2rem 0 2rem}
.faq-groups a{min-height:44px;display:inline-flex;align-items:center;padding:.5rem 1.1rem;
  border:1px solid rgba(110,168,255,.45);border-radius:999px;font-weight:700;
  font-size:.9rem;color:var(--blue2);text-decoration:none}
.faq-group{margin-bottom:2.2rem;scroll-margin-top:5rem}
.faq-group>h2{font-size:1.25rem;margin-bottom:1rem}
.faq-group .faq-list{margin-top:0}
