/* Baby Names — the /baby-names surface on askramji.com.
 *
 * Tokens are copied verbatim from the host's production `css/style.css` so this surface
 * READS AS THE SAME SITE, not a new one. Do not introduce a second palette here.
 *
 * Structure is taken from the approved mockup (Workbench
 * projects/naamkaran/docs/mockup-site-v1.html). The mockup draws seven phone screens side by
 * side; on the real site those are seven full-viewport sections in the host's existing
 * scroll-snap deck, which is how askramji already works.
 */
:root{
  --ivory:#fdf6ea; --ivory-deep:#f6ead6;
  --ink:#2b1a12; --ink-soft:#5c4636;
  --maroon:#6b1f1f; --maroon-deep:#3d1215; --night:#200e10;
  --saffron:#e07b2a; --gold:#c9a24b; --gold-bright:#f0d089;
  --serif:'Noto Serif Devanagari',Georgia,serif;
  --sans:'Noto Sans Devanagari',system-ui,-apple-system,sans-serif;
  --ease:cubic-bezier(.22,.9,.28,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html,body{height:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--maroon-deep);
  -webkit-font-smoothing:antialiased;overscroll-behavior-y:none;
  -webkit-tap-highlight-color:transparent}
button{font-family:inherit;cursor:pointer}
.hidden{display:none!important}

/* ---------- deck ---------- */
.deck{height:100dvh;overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth}
.screen{min-height:100dvh;scroll-snap-align:start;scroll-snap-stop:always;
  display:flex;flex-direction:column;position:relative;overflow:hidden}

/* ---------- shared control set (mirrors the host's .lang-toggle glass pill) ---------- */
.host-link{position:fixed;top:calc(10px + env(safe-area-inset-top));left:12px;z-index:50;
  display:flex;align-items:center;gap:6px;height:34px;padding:0 13px;
  background:rgba(0,0,0,.28);border:1px solid rgba(201,162,75,.45);border-radius:999px;
  color:#e9dcc4;font-size:12px;font-weight:600;text-decoration:none;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.host-link:active{transform:scale(.95)}

/* ---------- 1 · hero ---------- */
.screen-hero{background:
  radial-gradient(120% 90% at 50% 0%,#fffdf7 0%,var(--ivory) 55%,var(--ivory-deep) 100%);
  align-items:center;justify-content:center;text-align:center;padding:74px 24px 96px}
.screen-hero::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:radial-gradient(60% 40% at 50% 108%,rgba(224,123,42,.18),transparent 70%)}
.hero-inner{max-width:560px;display:flex;flex-direction:column;align-items:center;gap:14px}
.mark{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;
  border:2px solid var(--gold);color:var(--maroon);
  font-family:var(--serif);font-size:32px;font-weight:700;line-height:1;
  background:radial-gradient(circle at 35% 30%,#fffdf7,#f3e3c2);
  box-shadow:0 6px 24px rgba(107,31,31,.14),inset 0 0 0 5px rgba(201,162,75,.18)}
/* Optical centring, same measurement as the host's श्री medallion: the glyph's ascenders sit
   high in the em box, so centring the LAYOUT BOX leaves the INK visibly high. Both axes. */
.mark span{display:block;transform:translateX(-.04em) translateY(7px)}
.hero-title{font-family:var(--serif);font-weight:600;font-size:clamp(28px,7vw,42px);
  color:var(--maroon-deep);line-height:1.35}
.hero-sub{font-family:var(--serif);font-size:clamp(16px,4.4vw,21px);color:var(--saffron);font-weight:600}
.hero-promise{font-size:clamp(14px,3.9vw,17px);line-height:1.85;color:var(--ink-soft);max-width:44ch}
.hero-foot{position:absolute;left:0;right:0;bottom:calc(30px + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;align-items:center;gap:14px;padding:0 24px}
.cta{border:0;border-radius:999px;padding:16px 36px;font-size:16px;font-weight:700;
  color:#fff8ea;background:linear-gradient(135deg,var(--maroon),#8f2b2b);
  box-shadow:0 10px 30px rgba(107,31,31,.35);width:100%;max-width:340px;min-height:52px}
.cta:active{transform:scale(.97)}
.quiet-link{background:none;border:0;color:var(--ink-soft);font-size:14px;
  text-decoration:underline;text-underline-offset:4px;opacity:.85;min-height:44px}
.hostline{font-size:11px;color:#8a7358;letter-spacing:.04em}

/* ---------- 2 · birth details ---------- */
.screen-detail{background:var(--ivory);padding:74px 20px 28px;justify-content:flex-start}
.detail-inner{max-width:520px;width:100%;margin:0 auto;display:flex;flex-direction:column;
  flex:1;min-height:0}
.crumb{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#9a7f4a;font-weight:700}
.screen-detail h2{font-family:var(--serif);color:var(--maroon-deep);font-size:22px;margin:8px 0 4px}
.lead{font-size:14px;color:var(--ink-soft);line-height:1.75}
.field{margin-top:12px;display:flex;flex-direction:column;gap:5px}
.field label{font-size:12px;font-weight:600;color:#8a7358;letter-spacing:.04em}
.field input{background:#fffdf7;border:1px solid rgba(201,162,75,.45);border-radius:14px;
  padding:13px 14px;font-family:var(--sans);font-size:16px;color:var(--ink);
  width:100%;min-height:50px;-webkit-appearance:none;appearance:none}
.field input:focus{outline:2px solid var(--maroon);outline-offset:1px;
  border-color:var(--maroon)}
.detail-note{font-size:12.5px;color:#7d6647;margin-top:14px;line-height:1.7;
  border-left:2px solid rgba(201,162,75,.5);padding-left:10px}
.detail-err{margin-top:12px;font-size:13.5px;line-height:1.7;color:#8c3a20;
  background:#f6e7e0;border:1px solid #e3c2b2;border-radius:12px;padding:11px 13px}
.detail-foot{margin-top:auto;padding-top:20px}

/* ---------- 3 · reveal ---------- */
.screen-reveal{background:
  radial-gradient(130% 100% at 50% -10%,#54201f 0%,var(--maroon-deep) 45%,var(--night) 100%);
  color:#f4e8d2;align-items:center;justify-content:center;text-align:center;padding:74px 20px 96px}
.eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#d9c49a}
.big-syl{font-family:var(--serif);font-size:clamp(72px,26vw,104px);line-height:1;
  color:var(--gold-bright);margin:10px 0 4px;text-shadow:0 6px 30px rgba(240,208,137,.25)}
.rom{font-size:12.5px;letter-spacing:.22em;color:#d9c49a}
.nak{font-family:var(--serif);font-size:16px;color:#f0dfb8;margin-top:12px}
.practice{font-size:12.5px;color:#cbb27f;margin-top:14px;line-height:1.7;max-width:27ch;
  border-top:1px solid rgba(201,162,75,.28);border-bottom:1px solid rgba(201,162,75,.28);
  padding:10px 0}
.reveal-foot{margin-top:auto;display:flex;flex-direction:column;gap:12px;align-items:center;
  padding:20px 0 4px;width:100%;max-width:340px}

/* ---------- 4/5/6 · names, fallback, variant (one light family, three states) ---------- */
.screen-names{background:var(--ivory);padding:74px 16px 24px;justify-content:flex-start}
.names-inner{max-width:560px;width:100%;margin:0 auto;display:flex;flex-direction:column;flex:1}
.statebar{font-size:11.5px;font-weight:700;letter-spacing:.04em;border-radius:999px;
  padding:6px 13px;display:inline-block;margin-bottom:13px;align-self:flex-start}
.statebar.ok{background:#e7f2ea;color:#1f5c3c;border:1px solid #bcd9c6}
.statebar.low{background:#fbf2dd;color:#8a6520;border:1px solid #e6d09a}
.statebar.fb{background:#f6e7e0;color:#8c3a20;border:1px solid #e3c2b2}
.statebar.vt{background:#f1ecf7;color:#5a3a78;border:1px solid #d3c4e6}
.screen-names h3{font-family:var(--serif);color:var(--maroon-deep);font-size:19px;margin-bottom:3px}
.subl{font-size:13px;color:var(--ink-soft);margin-bottom:14px;line-height:1.65}
.nc{background:#fffdf7;border:1px solid rgba(201,162,75,.45);border-radius:15px;
  padding:14px 15px;margin-bottom:11px}
.nc .top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.nc .nm{font-family:var(--serif);font-size:24px;font-weight:700;color:var(--ink)}
.badge{font-size:10px;font-weight:700;color:#1f5c3c;background:#e7f2ea;border:1px solid #bcd9c6;
  border-radius:999px;padding:3px 9px;white-space:nowrap}
.badge.vt{color:#5a3a78;background:#f1ecf7;border-color:#d3c4e6}
.nc .mn{font-size:14px;color:#453a2c;margin-top:8px;line-height:1.65}
.nc .att{font-size:11.5px;color:#8a7358;margin-top:9px;
  border-top:1px dashed rgba(201,162,75,.5);padding-top:8px;line-height:1.7}
.nc .att b{color:var(--saffron)}
.why{background:#fbf6ea;border:1px solid rgba(201,162,75,.4);border-radius:13px;
  padding:13px 14px;font-size:13px;color:var(--ink-soft);line-height:1.75}
.why b{color:var(--maroon)}
.names-foot{margin-top:auto;padding-top:16px;display:flex;flex-direction:column;gap:10px}

/* ---------- 7 · keepsake card ---------- */
.screen-card{background:#1c1416;padding:74px 18px 34px;align-items:center;justify-content:center;
  gap:18px}
.keep{width:100%;max-width:300px;background:var(--ivory);border:1px solid var(--gold);
  border-radius:4px;overflow:hidden}
.keep .t{border-bottom:1px solid rgba(201,162,75,.6);padding:12px 18px;display:flex;
  justify-content:space-between;align-items:baseline}
.keep .t .o{font-size:13px;color:var(--saffron);letter-spacing:.2em}
.keep .t .n{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#8a7358;font-weight:700}
.keep .in{padding:20px 20px 16px}
.keep .nm{font-family:var(--serif);font-size:52px;line-height:1;color:var(--maroon-deep)}
.keep .ro{font-size:11.5px;letter-spacing:.2em;color:var(--saffron);margin-top:6px}
.keep .me{font-family:var(--serif);font-size:14px;color:#4a3c24;line-height:1.75;margin-top:13px;
  border-top:1px solid rgba(201,162,75,.5);padding-top:11px}
.keep .sy{font-size:11px;color:#8a7358;margin-top:13px}
.keep .sy b{display:block;font-family:var(--serif);font-size:20px;color:var(--maroon);margin-top:3px}
.keep .sig{font-size:10px;color:#8a7358;margin-top:14px;
  border-top:1px solid rgba(201,162,75,.5);padding-top:10px;display:flex;
  justify-content:space-between;align-items:center;gap:8px}
/* NOT a QR code. A labelled placeholder — the real QR is a named build item. It must not
   LOOK like a scannable code, or a reader will photograph it and get nothing. */
.keep .qr{border:1px dashed rgba(201,162,75,.8);padding:3px 7px;font-size:9px;color:#9a7f4a;
  white-space:nowrap}
.card-note{color:#cbb79a;font-size:11.5px;text-align:center;max-width:270px;line-height:1.7}

/* ---------- 8 · about / parampara ---------- */
.screen-info{background:var(--ivory);padding:74px 22px 48px;justify-content:flex-start;
  align-items:center}
.info-inner{max-width:620px;width:100%;display:flex;flex-direction:column;gap:16px}
.screen-info h2{font-family:var(--serif);color:var(--maroon-deep);font-size:23px}
.info-card{background:#fffdf7;border:1px solid rgba(201,162,75,.4);border-radius:16px;
  padding:18px 20px}
.info-card h3{font-family:var(--serif);color:var(--saffron);font-size:16px;margin-bottom:7px}
.info-card p{font-size:14.5px;line-height:1.85;color:var(--ink-soft)}
.label-rule{background:#120d0c;color:#d9c9a8;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.8;
  border-radius:9px;padding:13px 14px;white-space:pre-wrap;overflow-wrap:anywhere}
.label-rule .g{color:#9fe0b6}.label-rule .y{color:#f0c98e}.label-rule .d{color:#8a7a5c}

/* ---------- desktop (the host keeps the same deck, wider — no invented editorial layout) ---------- */
@media (min-width:760px){
  .screen{padding-left:40px;padding-right:40px}
  .cta{max-width:380px}
  .keep{max-width:340px}
}

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

/* ---------- focus ----------
   Every interactive element must be reachable by Tab AND its ring must CONTRAST against the
   surface it is actually drawn on. That is harder than it looks, and I got it wrong twice:

     v1  gold everywhere            -> 2.2:1 on ivory, below the 3.0:1 WCAG 1.4.11 floor
     v2  maroon on ivory, gold dark -> better, but the HERO was in neither list, so its CTA
         kept the white ring at 1.02:1 (invisible on ivory) and its quiet-link 1.39:1; and the
         fixed .host-link carried maroon over the DARK screens at ~1.2:1 (also invisible).
         Muse measured all three (2026-10-07).

   The rule that survives: name every surface, and for a FIXED element that overlaps several,
   use a ring that reads on both — a dark outline with a light halo, not one colour.

   MEASURED, each against the surface it is actually drawn on — Muse recomputed every one of
   these from the shipped tokens, and corrected two numbers I had quoted wrongly:
     ivory input  .field input, maroon on #fffdf7 ......... 11.21:1
     ivory screens, maroon on #fdf6ea ..................... 10.62:1
     hero #cta-begin, maroon-deep on the hero foot #f4e0c7  12.61:1   (was 1.02:1 — invisible)
     hero #link-parampara, maroon on #f4e0c7 .............. 8.87:1   (was 1.39:1)
     dark reveal, gold-bright on lightest stop #54201f ... 8.79:1   (worst case; 12.45 on night)
     dark card, gold-bright on #1c1416 .................. 12.13:1
     fixed .host-link — two-tone, so one tone reads on each family: outline 12.61:1 on ivory,
       halo 9.98:1 on dark.
   THE FLOOR IS 8.79:1. Two earlier figures in this comment were wrong and are corrected here:
   I wrote "dark screens ~17:1" (not reachable from any token — Muse could not reproduce it)
   and "hero CTA 10.6:1" (mislabelled: the ring is maroon-DEEP and it sits on the hero foot, not
   on ivory). A comment that states a contrast it cannot demonstrate is the same error as the
   19.87:1 it replaced — white on #000000, a background that does not exist on this page. */
:focus-visible{outline:2px solid var(--gold-bright);outline-offset:2px}
/* Every ivory surface, INCLUDING the hero. Omitting the hero was the bug. */
.screen-hero :focus-visible,
.screen-detail :focus-visible,
.screen-names :focus-visible,
.screen-info :focus-visible{outline-color:var(--maroon);outline-offset:2px}
/* The dark screens keep gold-bright; the CTA gets a halo that reads on ivory AND dark. */
.screen-reveal :focus-visible,
.screen-card :focus-visible{outline-color:var(--gold-bright)}
.cta:focus-visible,.btn-wa:focus-visible{
  outline:2px solid var(--maroon-deep);outline-offset:2px;
  box-shadow:0 0 0 4px var(--gold-bright)}       /* dark ring + light halo: reads on either */
/* The fixed host-link overlaps BOTH surface families, so it cannot have one colour. */
.host-link:focus-visible{
  outline:2px solid var(--maroon-deep);outline-offset:2px;
  box-shadow:0 0 0 4px rgba(240,208,137,.9)}
.field input:focus-visible{outline:2px solid var(--maroon);outline-offset:1px}
