/* ============================================================================
   BeautyPages — landing sections.

   The second layer on assets/storefront.css (which this file assumes is already
   in the cascade): the section vocabulary a page that SELLS uses — hero, the
   numbered steps, the spa-menu feature list, the FAQ accordion, the closing CTA.

   Shared by the home page and by every niche landing generated from
   niches/*.json, because those pages are the same argument aimed at a narrower
   reader — and a niche landing that quietly drifted into its own type scale
   would read as a different company's page under the same wordmark.

   What stays in index.html is what only the home has: the live layout preview,
   the theme strip, the plan cards and the module grid.
   ========================================================================== */

/* ---- hero ---- */
.hero{padding:5rem 0 4.5rem;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:3.5rem;align-items:center}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:2.6rem}}
.eyebrow{font-size:.78rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--sage);margin-bottom:1.2rem}
h1{font-family:var(--fd);font-weight:340;font-size:clamp(2.6rem,6vw,4.3rem);line-height:1.04;letter-spacing:-.015em}
h1 em{font-style:italic;color:var(--lacquer)}
.hero p.lead{margin:1.4rem 0 2.2rem;font-size:1.12rem;color:var(--plum-soft);max-width:34em}
.hero-ctas{display:flex;gap:.9rem;flex-wrap:wrap}
.hero-note{margin-top:1.1rem;font-size:.85rem;color:var(--plum-soft)}

/* ---- the niche fork ----
   Four doors, directly under the hero, because that is where someone decides
   "is this for me" — a chooser further down is read only by people who already
   decided yes.

   It is also the ONLY internal link into the niche subdomains. Google treats
   each subdomain as a separate site that starts at zero, so without this strip
   the landings launch as orphans reachable by sitemap alone. That is why the
   list is asserted against niches/*.json by scripts/check-niches.mjs rather
   than left to whoever adds the fourth niche to remember.

   .slim is the same strip at the foot of a niche landing, pointing at the
   siblings: someone who came through the wrong door should find the right one
   without going back to the apex to start over. */
.chooser{padding:3.2rem 0 3.4rem}
.chooser h2{font-size:clamp(1.35rem,2.4vw,1.7rem);margin-bottom:1.4rem}
.chooser-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
@media(max-width:900px){.chooser-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.chooser-grid{grid-template-columns:1fr}}
.chooser-grid a{display:block;border:1px solid var(--line);border-radius:16px;padding:1.15rem 1.25rem;background:#fff;text-decoration:none;color:inherit;transition:border-color .18s,transform .18s}
.chooser-grid a:hover,.chooser-grid a:focus-visible{border-color:var(--lacquer);transform:translateY(-2px)}
.chooser-grid b{display:block;font-weight:600;font-size:1rem;margin-bottom:.3rem}
.chooser-grid b::after{content:" →";color:var(--lacquer);font-weight:400}
.chooser-grid span{display:block;font-size:.86rem;color:var(--plum-soft);line-height:1.45}
@media(prefers-reduced-motion:reduce){.chooser-grid a{transition:none}.chooser-grid a:hover,.chooser-grid a:focus-visible{transform:none}}

.chooser.slim{padding:3.4rem 0 0;border-top:1px solid var(--line)}
.chooser.slim h2{font-family:var(--fb);font-size:.95rem;font-weight:600;letter-spacing:0;margin-bottom:1.1rem;color:var(--plum-soft)}
.chooser.slim .chooser-grid{grid-template-columns:repeat(3,1fr)}
@media(max-width:820px){.chooser.slim .chooser-grid{grid-template-columns:1fr}}
/* The closing CTA draws its own rule. Two of them a card's height apart reads
   as a mistake, so the strip keeps its border and .fin gives one up. */
.chooser.slim + .fin{border-top:0}

/* ---- the claims strip under the hero ---- */
.claims{border-block:1px solid var(--line);background:var(--porcelain-2)}
.claims-in{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;padding:1.3rem 0;font-size:.88rem;color:var(--plum-soft)}
.claims-in b{display:block;color:var(--plum);font-weight:600}
@media(max-width:820px){.claims-in{grid-template-columns:1fr 1fr;row-gap:1.2rem}}

/* ---- sections ---- */
.section{padding:4.8rem 0}
.sec-head{max-width:38em;margin-bottom:2.8rem}
h2{font-family:var(--fd);font-weight:340;font-size:clamp(1.8rem,3.6vw,2.6rem);line-height:1.12;letter-spacing:-.01em}
h2 em{font-style:italic;color:var(--lacquer)}
.sec-head p{margin-top:.8rem;color:var(--plum-soft)}

/* ---- steps (a real sequence: the order is the product) ---- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
@media(max-width:820px){.steps{grid-template-columns:1fr}}
.step{border:1px solid var(--line);border-radius:16px;padding:1.6rem;background:#fff}
.step b.n{font-family:var(--fd);font-style:italic;font-weight:340;font-size:2rem;color:var(--lacquer);display:block;line-height:1;margin-bottom:.8rem}
.step h3{font-size:1.05rem;font-weight:600;margin-bottom:.45rem}
.step p{font-size:.92rem;color:var(--plum-soft)}
.step p code{font-family:inherit;background:var(--porcelain);padding:.1em .45em;border-radius:6px;font-size:.92em}

/* ---- features as a spa menu (the product's own vernacular) ---- */
.menu{background:var(--plum);color:var(--porcelain)}
.menu .sec-head p{color:color-mix(in srgb,var(--porcelain) 72%,var(--plum))}
.menu h2 em{color:#E0A195}
.menu-list{max-width:46em}
.menu-row{display:flex;align-items:baseline;gap:.8rem;padding:1.05rem 0;border-bottom:1px solid rgba(246,239,234,.16)}
.menu-row:last-child{border-bottom:0}
.menu-row h3{font-size:1rem;font-weight:600;white-space:nowrap}
.menu-lead{flex:1;border-bottom:1px dotted rgba(246,239,234,.35);transform:translateY(-.3em);min-width:2rem}
.menu-row p{font-size:.88rem;color:color-mix(in srgb,var(--porcelain) 70%,var(--plum));max-width:24em;text-align:right}
@media(max-width:640px){.menu-row{flex-direction:column;gap:.3rem}.menu-lead{display:none}.menu-row p{text-align:left;max-width:none}}

/* ---- FAQ ---- */
.faq{max-width:44em}
.faq details{border-bottom:1px solid var(--line);padding:1rem 0}
.faq summary{font-weight:600;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--fd);color:var(--lacquer);font-size:1.3rem;line-height:1}
.faq details[open] summary::after{content:"–"}
.faq details p{margin-top:.6rem;color:var(--plum-soft);font-size:.94rem;max-width:38em}

/* ---- closing CTA ---- */
.fin{padding:5.5rem 0;text-align:center;border-top:1px solid var(--line)}
.fin h2{margin-bottom:1.6rem}
