/*
Theme Name: FHR Child
Description: Cosmic-dark child theme for FreeHoroscopeReading.net, carrying the approved design system on top of Kadence.
Template: kadence
Version: 0.1.0
Author: FreeHoroscopeReading.net
Text Domain: fhr-child
*/

/* ==========================================================================
   Design tokens (Phase 6A Task 1 — Claude Design visual refresh)
   Source: horoscope-reading-website-redesign/project/Free Horoscope
   Reading.dc.html. Every oklch-bearing token is declared TWICE:
     1) here in :root, as a plain hex/rgba fallback — this is what browsers
        without oklch() support (older Safari/Firefox) resolve to, so a
        colour never resolves to nothing.
     2) inside the `@supports (color: oklch(0 0 0))` block right below,
        reassigning the SAME custom properties to the exact oklch() values
        from the design bundle. Browsers that don't understand oklch() never
        apply that block at all (the @supports test itself fails), so they
        keep the fallback permanently; browsers that do support it get the
        exact design colour.
   Token NAMES are unchanged from the previous palette (plus a few additions
   the new design needs, e.g. --mono) because the plugin's tool.css reads
   these via var(--gold, ...) etc. — renaming would silently break the
   reading tool's styling.
   ========================================================================== */
:root{
  --night:#0e0e1a;              /* page base            -- oklch(0.17 0.025 285) */
  --night-2:#17172a;             /* secondary panel dark -- oklch(0.22 0.03 285) */
  --indigo:#392a51;              /* deep indigo glow     -- oklch(0.32 0.07 300) */
  --violet:#c0abe9;              /* violet accent        -- oklch(0.78 0.09 300) */
  --gold:#e9c67d;                /* gold accent          -- oklch(0.84 0.1 85) */
  --gold-soft:#e9ca89;           /* gold alt             -- oklch(0.85 0.09 85) */
  --gold-2:#eda97c;              /* CTA gradient 2nd stop -- oklch(0.79 0.1 55) */
  --cta-text:#1e1006;            /* text on gold CTAs    -- oklch(0.19 0.03 60) */
  --star:#f6f2e7;                /* headings             -- oklch(0.96 0.015 90) */
  --lav:#ebe8df;                 /* body text            -- oklch(0.93 0.012 90) */
  --muted:rgba(213,209,198,.7);  /* muted text           -- oklch(0.86 0.015 90 / 0.7) */
  --faint:rgba(211,209,202,.5);  /* faint text           -- oklch(0.86 0.01 90 / 0.5) */
  --line:rgba(223,192,127,.18);  /* hairline border      -- oklch(0.82 0.09 85 / 0.18) */
  --card:rgba(244,238,224,.03);  /* card fill            -- oklch(0.95 0.02 90 / 0.03) */
  --bg-glow-1:rgba(57,42,81,.55); /* page bg radial 1    -- oklch(0.32 0.07 300 / 0.55) */
  --bg-glow-2:rgba(19,41,70,.5);  /* page bg radial 2    -- oklch(0.28 0.06 255 / 0.5) */
  --sans:'Work Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --mono:'IBM Plex Mono',ui-monospace,'SFMono-Regular','Courier New',monospace;
}

@supports (color: oklch(0 0 0)){
  :root{
    --night:oklch(0.17 0.025 285);
    --night-2:oklch(0.22 0.03 285);
    --indigo:oklch(0.32 0.07 300);
    --violet:oklch(0.78 0.09 300);
    --gold:oklch(0.84 0.1 85);
    --gold-soft:oklch(0.85 0.09 85);
    --gold-2:oklch(0.79 0.1 55);
    --cta-text:oklch(0.19 0.03 60);
    --star:oklch(0.96 0.015 90);
    --lav:oklch(0.93 0.012 90);
    --muted:oklch(0.86 0.015 90 / 0.7);
    --faint:oklch(0.86 0.01 90 / 0.5);
    --line:oklch(0.82 0.09 85 / 0.18);
    --card:oklch(0.95 0.02 90 / 0.03);
    --bg-glow-1:oklch(0.32 0.07 300 / 0.55);
    --bg-glow-2:oklch(0.28 0.06 255 / 0.5);
  }
}

/* ==========================================================================
   Site-wide base styling (ported from design/pages/homepage.html body/header)
   ========================================================================== */
*{box-sizing:border-box}

html{background:var(--night)}

/* Kadence prints a customizer-generated <style> block in <head> that sets
   `body{background:var(--global-palette8)}` and
   `.content-bg{background:var(--global-palette9)}` (both near-white) — this
   is what made the site render on a white background even with fhr-child
   active. `.content-bg` is the class Kadence's post_class() filter adds to
   every <article>, so it (and the wrappers around it) must be neutralized
   with !important, since we can't guarantee our stylesheet always prints
   after that inline block. */
.site, #wrapper, .wp-site-blocks,
.content-area, #content, #primary,
.site-container, .content-container,
.content-bg, article, .entry, .entry-content,
.entry-content-wrap, .site-main{
  background:transparent !important;
}

html{ background:var(--night) !important; }

body{
  font-family:var(--sans);
  color:var(--star);
  /* Two-radial cosmic backdrop, verbatim composition from the design bundle.
     Tokens: see the bg-glow and night entries in :root above.
     NEVER write a bare asterisk-slash pair inside a CSS comment (e.g. naming a
     token group "bg-glow-*" then a slash) — it closes the comment early. That
     happened here: the leftover text parsed as a custom property whose value
     swallowed the whole background declaration, so Kadence's near-white
     body background won and the live site rendered light-on-light. */
  background:
    radial-gradient(1100px 620px at 78% -8%, var(--bg-glow-1), transparent 65%),
    radial-gradient(900px 520px at 8% 12%, var(--bg-glow-2), transparent 60%),
    var(--night) !important;
  background-attachment:fixed !important;
}

body, .entry-content, p{
  color:var(--lav);
}

a{
  color:var(--gold-soft);
  text-decoration:none;
}
a:hover{ text-decoration:underline; }

h1, h2, h3, h4, h5, h6,
.entry-title, .site-title{
  font-family:var(--serif) !important;
  font-weight:600;
  letter-spacing:.005em;
  color:var(--star);
}

h1{ font-size:clamp(32px,6vw,52px); line-height:1.05; }
h2{ font-size:clamp(25px,4vw,34px); }
h3{ font-size:20px; }

/* Violet selection (design system) — plain rgba fallback first, exact oklch
   for browsers that support it (same fallback pattern as the tokens above). */
::selection{
  background:rgba(192,171,233,.35);
  color:var(--night);
}
@supports (color: oklch(0 0 0)){
  ::selection{ background:oklch(0.78 0.09 300 / 0.35); }
}

/* Signature shape (Task 1): pill buttons/chips, border-radius:999px.
   Buttons that inherit theme defaults get the gold-gradient CTA treatment
   unless overridden. */
.wp-block-button__link,
button[type="submit"],
input[type="submit"]{
  background:linear-gradient(100deg,var(--gold),var(--gold-2));
  color:var(--cta-text);
  border:0;
  border-radius:999px;
  font-weight:700;
}

/* Reusable gold CTA gradient + pill shape, for markup that isn't one of the
   element selectors above (e.g. <a> CTAs). */
.fhr-cta-gradient{
  background:linear-gradient(100deg,var(--gold),var(--gold-2));
  color:var(--cta-text);
  border-radius:999px;
}

::placeholder{ color:#6f688f; }

.eyebrow,
.k{
  text-transform:uppercase;
  letter-spacing:.32em;
  font-size:12px;
  color:var(--gold);
  font-weight:600;
}

/* ==========================================================================
   Header & nav (Task 3 — ported from design/components/header-footer.html)
   header.php/footer.php fully replace Kadence's chrome, so #masthead/
   #colophon no longer exist in the DOM; these are our own classes.
   ========================================================================== */
/* Three-zone header: brand left | nav centred | CTA right.
   A grid (not flex space-between) so the nav is centred against the PAGE, not
   against whatever width the brand and CTA happen to take — the two outer
   columns are sized independently, so the centre stays optically centred. */
.fhr-header{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:16px;
  padding:16px 24px;border-bottom:1px solid var(--line);
  /* Sticky translucent + blurred chrome (Task 2). Solid fallback colour
     first for browsers without backdrop-filter support, then the
     translucent version once we know blur will actually render. */
  position:sticky;top:0;z-index:40;
  background:#14121f;
}
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)){
  .fhr-header{
    background:rgba(14,14,26,.82);
    -webkit-backdrop-filter:blur(14px);
    backdrop-filter:blur(14px);
  }
}
@supports (color: oklch(0 0 0)){
  .fhr-header{ background:oklch(0.17 0.025 285 / 0.82); }
}
.fhr-header > .fhr-brand{ justify-self:start; }
.fhr-header > .fhr-nav{ justify-self:center; }
.fhr-header > .fhr-free{ justify-self:end; }
.fhr-brand{
  display:flex;align-items:baseline;gap:8px;
  font-family:var(--serif);font-size:20px;font-weight:600;
  color:var(--star);text-decoration:none;
}
.fhr-brand:hover{ text-decoration:none; }
.fhr-brand-tld{
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(223,192,127,.75);font-weight:400;
}
.fhr-nav{ display:flex;gap:22px;align-items:center; }
.fhr-nav-list{ display:flex;gap:22px;align-items:center;list-style:none;margin:0;padding:0; }
.fhr-nav-list a{ color:var(--lav);text-decoration:none;font-size:14px; }
.fhr-nav-list a:hover{ color:var(--star);text-decoration:none; }
.fhr-nav-list .current-menu-item > a{ color:var(--gold-soft); }
.fhr-free{
  color:var(--cta-text) !important;background:linear-gradient(100deg,var(--gold),var(--gold-2));
  padding:10px 20px;border-radius:999px;font-weight:500;font-size:14px;text-decoration:none;
  box-shadow:0 10px 24px -12px rgba(232,182,75,.7);
  white-space:nowrap;
}
.fhr-free:hover{ text-decoration:none;filter:brightness(1.08); }
@media(max-width:760px){ .fhr-nav-list{ display:none; } }
/* Narrow phones: brand (211px) + CTA (135px) + 48px padding overflowed a
   390px header, clipping the CTA. Tighten padding, shrink the brand and let
   it truncate, and keep the CTA intact — it is the primary action. */
/* Once the nav list is hidden (<=760px) the centre column is empty, so drop to
   two zones: brand left, CTA right. */
@media(max-width:760px){
  .fhr-header{ grid-template-columns:1fr auto; }
  .fhr-header > .fhr-nav{ display:none; }
}
@media(max-width:480px){
  .fhr-header{ padding:12px 14px;gap:10px; }
  .fhr-brand{ font-size:16px;gap:7px;min-width:0;overflow:hidden; }
  .fhr-brand .fhr-brand-name{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
  .fhr-free{ padding:8px 12px;font-size:13px; }
}

/* ==========================================================================
   Footer (Task 3 — ported from design/components/header-footer.html)
   ========================================================================== */
.fhr-footer{
  margin-top:60px;border-top:1px solid var(--line);padding:40px 24px 26px;
  background:linear-gradient(180deg,rgba(14,14,26,.4),#08070f);
}
.fhr-fcols{ display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:26px;max-width:960px;margin:0 auto; }
.fhr-fh{ font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0 0 12px; }
.fhr-fcols a{ display:block;color:var(--lav);text-decoration:none;font-size:14px;margin:7px 0; }
.fhr-fcols a:hover{ color:var(--gold-soft); }
.fhr-about{ color:var(--muted);font-size:13.5px;line-height:1.6;max-width:34ch;margin:8px 0 0; }
.fhr-about-b{ font-family:var(--serif);font-size:18px;color:var(--star); }
.fhr-footer-menu{ list-style:none;margin:0;padding:0; }
.fhr-legal{
  max-width:960px;margin:26px auto 0;border-top:1px solid var(--line);padding-top:16px;
  color:var(--muted);font-size:12px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
}
@media(max-width:640px){ .fhr-fcols{ grid-template-columns:1fr 1fr; } }

/* ==========================================================================
   Homepage (Phase 6A Task 3 — ported from Free Horoscope Reading.dc.html,
   the HOME screen: hero, 12-sign picker, sky-now + tool cards, ad slot,
   SEO/FAQ). {{ }} data bindings and <sc-for>/<sc-if> loops in the source are
   reproduced here as plain PHP/CSS, not as the prototype's component model.
   ========================================================================== */
.fhr-hero{
  position:relative;overflow:hidden;padding:86px 22px 54px;text-align:center;
}
.fhr-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.7;
  background-image:
    radial-gradient(1.3px 1.3px at 12% 22%,#fff,transparent),
    radial-gradient(1.2px 1.2px at 78% 14%,#fff,transparent),
    radial-gradient(1px 1px at 46% 34%,#d9d0ff,transparent),
    radial-gradient(1.4px 1.4px at 66% 58%,#fff,transparent),
    radial-gradient(1px 1px at 30% 66%,#cfc6ff,transparent),
    radial-gradient(1.2px 1.2px at 88% 44%,#fff,transparent);
}
.fhr-hz{ position:relative;max-width:900px;margin:0 auto; }
.fhr-eyebrow-mono{
  font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  color:rgba(223,192,127,.85);
}
.fhr-hz h1{
  font-weight:400;font-size:clamp(34px,6.5vw,70px);line-height:1.05;
  letter-spacing:-.015em;margin:20px 0 0;color:var(--star);
}
.fhr-em{ color:var(--gold-soft);font-style:italic; }
.fhr-lead{
  color:var(--lav);font-size:clamp(15px,2.4vw,18px);line-height:1.6;
  max-width:620px;margin:22px auto 0;
}
.fhr-cta-row{ display:flex;justify-content:center;gap:14px;margin-top:32px;flex-wrap:wrap; }
.fhr-pill{
  display:inline-block;font-family:var(--sans);font-weight:500;font-size:17px;
  padding:17px 38px;border-radius:999px;text-decoration:none;cursor:pointer;
}
.fhr-pill:hover{ text-decoration:none; }
.fhr-pill-primary{
  border:0;background:linear-gradient(100deg,var(--gold),var(--gold-2));
  color:var(--cta-text);box-shadow:0 14px 40px rgba(233,198,125,.25);
  transition:transform .15s ease;
}
.fhr-pill-primary:hover{ transform:translateY(-2px);color:var(--cta-text); }
.fhr-pill-secondary{
  border:1px solid rgba(223,192,127,.3);background:transparent;color:var(--lav);
  transition:background .15s ease;
}
.fhr-pill-secondary:hover{ background:rgba(223,192,127,.1);color:var(--lav); }
.fhr-microcopy{
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--faint);margin-top:20px;
}
#fhr-reading-form{ margin-top:34px; }

section.fhr-band{ padding:14px 22px 20px;max-width:1180px;margin:0 auto; }
.fhr-band-title{
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--faint);text-align:center;margin-bottom:18px;
}

/* 12-sign picker grid: 6 columns desktop -> 3 -> 2 on mobile. */
.fhr-sign-grid{ display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px; }
@media(max-width:900px){ .fhr-sign-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:480px){ .fhr-sign-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.fhr-sign-card{
  display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;
  padding:20px 8px 16px;border:1px solid var(--line);border-radius:16px;
  background:var(--card);color:var(--lav);text-decoration:none;
  transition:transform .18s ease,background .18s ease,border-color .18s ease;
}
.fhr-sign-card:hover{
  transform:translateY(-3px);background:rgba(223,192,127,.12);
  border-color:rgba(223,192,127,.45);text-decoration:none;color:var(--lav);
}
.fhr-sign-glyph{
  font-size:30px;line-height:1;color:var(--gold-soft);
  font-family:'Noto Sans Symbols 2','Segoe UI Symbol',serif;font-variant-emoji:text;
}
.fhr-sign-name{ font-family:var(--serif);font-size:20px;color:var(--star); }
.fhr-sign-dates{ font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--faint); }

/* Sky right now + tool cards */
.fhr-sky-tools{ display:grid;grid-template-columns:1.15fr 1fr;gap:18px; }
.fhr-sky-tools.fhr-sky-tools--no-sky{ grid-template-columns:1fr;max-width:560px;margin-left:auto;margin-right:auto; }
@media(max-width:820px){ .fhr-sky-tools{ grid-template-columns:1fr; } }

.fhr-sky{
  padding:30px 34px;border:1px solid rgba(192,171,233,.22);border-radius:22px;
  background:linear-gradient(160deg,rgba(192,171,233,.1),var(--card));
}
.fhr-sky-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(192,171,233,.9);
}
.fhr-sky-body{ display:flex;align-items:center;gap:26px;margin-top:20px; }
.fhr-moon-disc{
  position:relative;width:92px;height:92px;border-radius:50%;flex:none;
  background:var(--star);box-shadow:0 0 44px rgba(244,238,224,.3);overflow:hidden;
}
.fhr-moon-shadow{ position:absolute;inset:0;border-radius:50%;background:var(--night); }
.fhr-sky-title{ font-family:var(--serif);font-size:30px;line-height:1.15;color:var(--star); }
.fhr-sky-note{ margin:8px 0 0;font-size:15px;line-height:1.6;color:var(--muted);max-width:44ch; }
.fhr-sky-transits{ display:flex;gap:10px;margin-top:22px;flex-wrap:wrap; }
.fhr-sky-transits span{
  font-family:var(--mono);font-size:11px;letter-spacing:.05em;padding:7px 12px;
  border-radius:999px;border:1px solid var(--line);color:rgba(225,220,235,.8);
}

.fhr-tools-list{ display:grid;gap:14px; }
.fhr-tool-card{
  display:flex;align-items:center;gap:18px;text-align:left;padding:20px 22px;
  border:1px solid var(--line);border-radius:18px;background:var(--card);
  color:var(--lav);text-decoration:none;transition:background .15s,border-color .15s;
}
.fhr-tool-card:hover{ background:rgba(223,192,127,.1);border-color:rgba(223,192,127,.4);text-decoration:none;color:var(--lav); }
.fhr-tool-card .fhr-g{ font-size:26px;color:var(--gold-soft);width:34px;text-align:center;flex:none; }
.fhr-tool-card .fhr-tt{ display:block;font-family:var(--serif);font-size:22px;color:var(--star); }
.fhr-tool-card .fhr-ts{ display:block;font-size:14px;color:var(--muted);margin-top:2px; }

/* Ad slot — position reserved, only rendered in markup when fhr_ads_enabled()
   is true (default off); this rule just styles it when it exists. */
.fhr-ad-slot{
  height:110px;border:1px dashed rgba(211,209,202,.22);border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(211,209,202,.35);
}

.fhr-seo{ max-width:760px;margin:0 auto;color:var(--lav);font-size:16px;line-height:1.75; }
.fhr-seo h2{ text-align:center; }
.fhr-seo a{ color:var(--gold-soft);text-decoration:underline; }

.fhr-faq-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:28px;
  max-width:1180px;margin-left:auto;margin-right:auto;
}
@media(max-width:900px){ .fhr-faq-grid{ grid-template-columns:1fr 1fr; } }
@media(max-width:560px){ .fhr-faq-grid{ grid-template-columns:1fr; } }
.fhr-faq-item{ padding:22px 0 0;border-top:1px solid rgba(223,192,127,.28); }
.fhr-faq-item .fhr-faq-q{ font-family:var(--serif);font-size:21px;line-height:1.2;color:var(--star); }
.fhr-faq-item .fhr-faq-a{ margin:10px 0 0;font-size:14.5px;line-height:1.65;color:var(--muted); }

/* ==========================================================================
   Pillar / generic page template (Task 5 — ported from
   design/components/pillar-article.html)
   ========================================================================== */

/* Two-column layout (Phase 4): article + sticky right sidebar. Desktop-only
   grid; collapses to a single stacked column at 900px (see media query
   below) so the sidebar never fights the article for width on tablets/
   phones. The article keeps its own comfortable reading measure — the
   sidebar is what uses the extra space on wide viewports. */
.fhr-layout{
  max-width:1120px;margin:0 auto;padding:0 22px;
  display:grid;grid-template-columns:minmax(0,760px) minmax(240px,320px);
  gap:0 56px;align-items:start;
}

.fhr-wrap{ max-width:none;margin:0;padding:30px 0 60px; }
.fhr-crumb{ color:var(--muted);font-size:13px;margin-bottom:6px; }
.fhr-crumb a{ color:var(--lav);text-decoration:none; }
.fhr-crumb a:hover{ text-decoration:underline; }
.fhr-wrap h1{ margin:14px 0 20px; }

.fhr-content{ line-height:1.72;max-width:75ch; }
.fhr-content p, .fhr-content li{ color:var(--lav);font-size:16.5px; }
.fhr-content h2{ margin:34px 0 8px;scroll-margin-top:24px; }
.fhr-content h3{
  font-size:17px;margin:26px 0 6px;color:var(--star);
  border-top:1px solid var(--line);padding-top:16px;
  scroll-margin-top:24px;
}
.fhr-content ul, .fhr-content ol{ padding-left:20px; }
.fhr-content a{ color:var(--gold-soft);text-decoration:underline;text-underline-offset:2px; }
.fhr-content strong{ color:var(--star); }

.fhr-inline-cta{
  margin:30px 0;border:1px solid var(--line);border-radius:18px;padding:22px;text-align:center;
  background:linear-gradient(160deg,rgba(90,69,196,.22),rgba(255,255,255,.02));
  max-width:75ch;
}
.fhr-inline-cta h4{ font-family:var(--serif);font-weight:600;font-size:22px;margin:0 0 4px;color:var(--star); }
.fhr-inline-cta p{ margin:0 0 14px;color:var(--muted);font-size:14px; }
.fhr-inline-cta a{
  display:inline-block;color:var(--cta-text);background:linear-gradient(100deg,var(--gold),var(--gold-2));
  padding:12px 22px;border-radius:999px;font-weight:700;text-decoration:none;
  box-shadow:0 12px 30px -14px rgba(232,182,75,.7);
}
.fhr-inline-cta a:hover{ text-decoration:none; }

/* ---- Sidebar (Phase 4) ---- */
/* The sidebar must FLOAT (stay in view) as the article scrolls.
   A sticky child can only travel inside its parent's box, and the grid's
   `align-items:start` was sizing this column to its own content (~940px) —
   so it scrolled away with the page instead of pinning. `align-self:stretch`
   makes the column span the full grid row (the article's height), giving the
   sticky child room to travel the whole way down. */
.fhr-sidebar{ padding:30px 0 60px; align-self:stretch; }
.fhr-side-inner{
  position:sticky;
  /* The header scrolls away with the page (it isn't fixed), so this offset is
     just breathing room from the viewport edge. */
  top:24px;
  /* Never taller than the viewport, or there'd be nothing left to pin on
     shorter laptop screens; the cards scroll internally in that case. */
  max-height:calc(100vh - 48px);
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(184,176,224,.35) transparent;
}
.fhr-side-inner::-webkit-scrollbar{ width:8px; }
.fhr-side-inner::-webkit-scrollbar-track{ background:transparent; }
.fhr-side-inner::-webkit-scrollbar-thumb{
  background:rgba(184,176,224,.28);border-radius:8px;
}
.fhr-side-inner::-webkit-scrollbar-thumb:hover{ background:rgba(184,176,224,.45); }
/* Stacked mobile layout has no sticky behaviour to preserve. */
@media(max-width:900px){
  .fhr-side-inner{ position:static;max-height:none;overflow:visible; }
}

.fhr-side-cta{
  border:1px solid var(--line);border-radius:18px;padding:22px 20px;text-align:center;
  background:
    radial-gradient(160px 100px at 50% 0%,rgba(90,69,196,.38),transparent),
    linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.01));
  margin-bottom:20px;
}
.fhr-side-eyebrow{
  text-transform:uppercase;letter-spacing:.28em;font-size:11px;color:var(--gold);
  font-weight:600;margin:0 0 8px;
}
.fhr-side-cta h4{ font-family:var(--serif);font-weight:600;font-size:20px;margin:0 0 6px;color:var(--star); }
.fhr-side-cta p{ margin:0 0 14px;color:var(--muted);font-size:13.5px;line-height:1.5; }
.fhr-side-btn{
  display:inline-block;width:100%;color:var(--cta-text);
  background:linear-gradient(100deg,var(--gold),var(--gold-2));
  padding:11px 14px;border-radius:999px;font-weight:700;text-decoration:none;font-size:14px;
  box-shadow:0 12px 26px -14px rgba(232,182,75,.7);
}
.fhr-side-btn:hover{ text-decoration:none;filter:brightness(1.03); }

.fhr-side-toc, .fhr-side-related{
  border:1px solid var(--line);border-radius:16px;padding:18px 20px;
  background:rgba(255,255,255,.03);margin-bottom:20px;
}
.fhr-side-toc:last-child, .fhr-side-related:last-child{ margin-bottom:0; }
.fhr-side-h{
  text-transform:uppercase;letter-spacing:.16em;font-size:11.5px;color:var(--muted);
  margin:0 0 12px;font-weight:600;
}
.fhr-side-toc ol{ list-style:none;margin:0;padding:0;counter-reset:fhr-toc; }
.fhr-side-toc li{ counter-increment:fhr-toc;margin:0 0 9px; }
.fhr-side-toc li:last-child{ margin-bottom:0; }
.fhr-side-toc a{
  display:flex;gap:8px;color:var(--lav);text-decoration:none;font-size:13.5px;line-height:1.4;
}
.fhr-side-toc a::before{
  content:counter(fhr-toc);color:var(--gold);font-size:11.5px;flex:none;margin-top:2px;
}
.fhr-side-toc a:hover{ color:var(--star);text-decoration:underline; }

.fhr-side-rc{
  display:block;color:var(--star);text-decoration:none;font-size:14px;
  padding:9px 0;border-top:1px solid var(--line);
}
.fhr-side-related .fhr-side-rc:first-of-type{ border-top:0;padding-top:0; }
.fhr-side-rc:hover{ color:var(--gold-soft);text-decoration:underline; }

/* Collapse to a single stacked column: sidebar content (CTA, TOC, related)
   renders below the article instead of alongside it, and loses its sticky
   positioning so it doesn't pin itself mid-page on tablets/phones.

   grid-template-columns is minmax(0,1fr), NOT a bare 1fr (Phase 6E fix): a
   bare 1fr track has no explicit minimum, so a grid item containing
   non-wrapping content (e.g. the hub picker's .fhr-chip-strip, a flex row
   with flex:none children meant to scroll horizontally WITHIN itself) can
   force the track — and the whole page — wider than the viewport instead
   of just scrolling internally. Desktop never hit this because its own
   track is already minmax(0,760px); this is the same clamp, ported to the
   collapsed single-column case. Caught by Playwright at 390px showing
   954px of page-level horizontal scroll on /daily-horoscope. */
@media(max-width:900px){
  .fhr-layout{ grid-template-columns:minmax(0,1fr);gap:0; }
  .fhr-wrap{ padding-bottom:10px; }
  .fhr-sidebar{ padding-top:0; }
  .fhr-side-inner{ position:static;top:auto; }
}

/* ==========================================================================
   Daily horoscope template (Phase 6B-1 Task 2 — ported from the
   DAILY/WEEKLY/MONTHLY screen, design bundle lines ~250-330). The 12
   real child pages of /daily-horoscope; each carries its own sign glyph,
   dates, live sky line, generated body, period tabs (Weekly/Monthly always
   disabled here, never a dead link), a birth-chart CTA and a back-link to
   the hub. No fabricated ratings/lucky-numbers panel — see template-daily.php.
   ========================================================================== */
.fhr-daily{ max-width:1080px;margin:0 auto;padding:30px 22px 80px; }

/* Sign chips WRAP rather than scroll horizontally.
   The mockup drew this as a single row, but with twelve signs that always
   overflows: it produced a horizontal scrollbar and hid signs off-screen, so a
   visitor could not see their own sign without dragging. Wrapping shows all
   twelve at once at every width, needs no interaction, and matches how the
   homepage grid and the compatibility pickers already present the signs. */
.fhr-chip-strip{
  display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;
}
.fhr-chip{
  flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:9px 15px;
  border:1px solid var(--line);border-radius:999px;background:var(--card);
  color:var(--lav);font-size:14px;text-decoration:none;
}
.fhr-chip:hover{ border-color:rgba(223,192,127,.6);text-decoration:none;color:var(--lav); }
.fhr-chip.is-active{ border-color:rgba(223,192,127,.7);background:rgba(223,192,127,.14);color:var(--star); }
.fhr-chip-glyph{
  font-family:'Noto Sans Symbols 2','Segoe UI Symbol',serif;font-variant-emoji:text;color:var(--gold-soft);
}

.fhr-daily-head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  margin-top:36px;flex-wrap:wrap;
}
.fhr-daily-id{ display:flex;align-items:center;gap:16px; }
.fhr-daily-glyph{
  font-size:52px;line-height:1;color:var(--gold-soft);
  font-family:'Noto Sans Symbols 2','Segoe UI Symbol',serif;font-variant-emoji:text;
}
.fhr-daily-id h1{ font-size:clamp(30px,5vw,50px);line-height:1;margin:0; }
.fhr-daily-meta{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--faint);margin-top:8px;
}

.fhr-tabs{ display:flex;gap:6px;padding:5px;border:1px solid var(--line);border-radius:999px; }
.fhr-tab{
  font-family:var(--sans);font-size:14px;padding:9px 20px;border-radius:999px;
  color:var(--muted);
}
.fhr-tab.is-active{
  background:linear-gradient(100deg,var(--gold),var(--gold-2));color:var(--cta-text);font-weight:600;
}
.fhr-tab.is-disabled{ opacity:.4;cursor:not-allowed; }

/* Two columns per the design's DAILY screen: a main reading column and a
   ~300px sidebar (today's ratings, lucky numbers/colour, ad slot). Both
   columns always have real content now (the sidebar's ratings/lucky/colour
   are not gated by fhr_ads_enabled() — only the ad slot placeholder inside
   it is), so there is no "collapse to one column" case to handle here. */
.fhr-daily-grid{ display:grid;grid-template-columns:1fr 300px;gap:18px;margin-top:26px;align-items:start; }
@media(max-width:820px){ .fhr-daily-grid{ grid-template-columns:1fr; } }

.fhr-daily-card{
  padding:34px 38px;border:1px solid var(--line);border-radius:22px;background:var(--card);
}
@media(max-width:600px){ .fhr-daily-card{ padding:26px 22px; } }
.fhr-daily-date{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-soft);
}
.fhr-daily-sky{ font-size:15.5px;line-height:1.7;color:var(--muted);margin:14px 0 0; }
.fhr-daily-lede, .fhr-daily-lede p{
  font-family:var(--serif);font-size:clamp(20px,2.6vw,26px);line-height:1.42;color:var(--star);margin:16px 0 0;
}
.fhr-daily-card .fhr-content{ margin-top:14px; }
.fhr-daily-card .fhr-content p{ margin:14px 0 0; }
.fhr-daily-updated{
  font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--faint);margin:22px 0 0;
}

.fhr-daily-actions{ display:flex;gap:12px;margin-top:22px;flex-wrap:wrap; }
.fhr-daily-actions .fhr-pill, .fhr-one-line-actions .fhr-pill{ padding:13px 24px;font-size:14.5px; }
.fhr-share-btn{ font-family:inherit; }

/* ---- Sidebar: today's ratings + lucky numbers/colour + ad slot ---- */
.fhr-daily-side{ display:grid;gap:14px; }
.fhr-ratings{ padding:24px 24px;border:1px solid var(--line);border-radius:20px;background:var(--card); }
.fhr-ratings-h{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--faint);margin-bottom:16px;
}
.fhr-rating-row{ display:grid;grid-template-columns:56px 1fr 28px;align-items:center;gap:10px;margin-bottom:12px; }
.fhr-rating-row:last-child{ margin-bottom:0; }
.fhr-rating-label{ font-size:13.5px;color:var(--lav); }
.fhr-rating-bar{ height:6px;border-radius:3px;background:rgba(244,238,224,.08);overflow:hidden;display:block; }
.fhr-rating-fill{ display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--violet),var(--gold)); }
.fhr-rating-value{ font-family:var(--mono);font-size:11px;color:var(--faint);text-align:right; }

.fhr-flavor-cards{ display:grid;grid-template-columns:1fr 1fr;gap:14px; }
.fhr-flavor-card{ padding:18px 14px;border:1px solid var(--line);border-radius:18px;text-align:center; }
.fhr-flavor-card-h{
  font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);
}
.fhr-flavor-card-v{ font-family:var(--serif);font-size:24px;margin-top:8px;color:var(--gold-soft); }
.fhr-flavor-card-v.fhr-flavor-color{ font-size:20px;color:var(--star); }

/* ---- "{Sign} in one line" block, below both columns ---- */
.fhr-one-line{ margin-top:22px;padding:26px 30px;border:1px solid var(--line);border-radius:20px; }
@media(max-width:600px){ .fhr-one-line{ padding:22px; } }
.fhr-one-line-h{ font-family:var(--serif);font-size:24px;color:var(--star); }
.fhr-one-line-body{ margin:8px 0 0;font-size:15.5px;line-height:1.7;color:var(--muted);max-width:80ch; }
.fhr-one-line-actions{ display:flex;gap:10px;margin-top:16px;flex-wrap:wrap; }

.fhr-daily-back{ margin-top:30px; }
.fhr-daily-back a{ color:var(--lav);text-decoration:none;font-size:14.5px; }
.fhr-daily-back a:hover{ color:var(--gold-soft);text-decoration:underline; }

/* ---- 12-sign picker on the /daily-horoscope hub page (page.php) ---- */
.fhr-hub-picker{ margin:36px 0;padding-top:8px; }
.fhr-hub-picker-h{
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--muted);margin:0 0 14px;
}
.fhr-hub-picker-grid{ display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px; }
@media(max-width:640px){ .fhr-hub-picker-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:420px){ .fhr-hub-picker-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.fhr-hub-picker-grid .fhr-sign-card{ padding:16px 6px 12px; }

/* ---- Zodiac compatibility pair pages (Phase 6B-3 Task 2) ---- */
.fhr-compat-h1{ font-size:clamp(30px,5vw,50px);line-height:1.05;margin:32px 0 0; }
.fhr-compat-lead{ font-size:16px;line-height:1.6;color:var(--muted);max-width:62ch;margin:12px 0 0; }

.fhr-compat-pickers{
  display:grid;grid-template-columns:1fr 44px 1fr;align-items:start;gap:14px;margin-top:30px;
}
@media(max-width:700px){ .fhr-compat-pickers{ grid-template-columns:1fr; } }
.fhr-compat-picker{ padding:18px;border:1px solid var(--line);border-radius:20px; }
.fhr-compat-picker-h{
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);margin-bottom:12px;
}
.fhr-compat-and{
  text-align:center;font-family:var(--serif);font-size:26px;color:var(--gold-soft);
  align-self:center;
}
@media(max-width:700px){ .fhr-compat-and{ display:none; } }
.fhr-compat-grid{ grid-template-columns:repeat(4,minmax(0,1fr)); }
@media(max-width:480px){ .fhr-compat-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
.fhr-compat-grid .fhr-sign-card{ padding:14px 4px 10px; }
.fhr-compat-grid .fhr-sign-card .fhr-sign-glyph{ font-size:24px; }
.fhr-compat-grid .fhr-sign-card .fhr-sign-name{ font-size:15px; }
.fhr-compat-grid .fhr-sign-card.is-active{
  border-color:rgba(223,192,127,.75);background:rgba(223,192,127,.16);
}

.fhr-compat-match{
  margin-top:26px;padding:30px 32px;border:1px solid var(--line);border-radius:22px;
  background:linear-gradient(160deg,rgba(192,171,233,.08),var(--card));
}
@media(max-width:600px){ .fhr-compat-match{ padding:22px; } }
.fhr-compat-match-head{ display:flex;align-items:center;gap:24px;flex-wrap:wrap; }
.fhr-compat-dial{
  position:relative;width:96px;height:96px;flex:none;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}
.fhr-compat-dial-inner{
  width:74px;height:74px;border-radius:50%;background:var(--night);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-size:26px;color:var(--star);
}
.fhr-compat-match-copy{ flex:1;min-width:240px; }
.fhr-compat-title{ font-family:var(--serif);font-size:28px;color:var(--star); }
.fhr-compat-body{ margin:10px 0 0;font-size:16px;line-height:1.7;color:var(--lav); }
.fhr-compat-rest{ margin-top:18px; }
.fhr-compat-rest p{ margin:14px 0 0; }

.fhr-compat-facets{ margin-top:24px; }
.fhr-facet-row{ grid-template-columns:104px 1fr 28px; }

.fhr-compat-actions{ display:flex;gap:12px;margin-top:24px;flex-wrap:wrap; }
.fhr-compat-actions .fhr-pill{ padding:13px 24px;font-size:14.5px; }

/* ---- A x B picker on the /zodiac-compatibility hub (page.php) ---- */
.fhr-compat-hint{
  margin:16px 0 0;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--gold-soft);
}
.fhr-compat-allpairs{
  display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:6px;
}
.fhr-compat-allpairs a{ font-size:13.5px;color:var(--muted);text-decoration:none; }
.fhr-compat-allpairs a:hover{ color:var(--gold-soft);text-decoration:underline; }

/* ---- Tarot three-card pull (Phase 6C Task 2) ---- */
.fhr-tarot{ max-width:1000px;text-align:center; }
.fhr-tarot-h1{ font-size:clamp(32px,5.5vw,52px);line-height:1.05;margin:20px 0 0; }
.fhr-tarot-prompt{
  font-size:16.5px;line-height:1.6;color:var(--muted);max-width:50ch;margin:10px auto 0;
}
.fhr-tarot-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:36px;text-align:left;
}
@media(max-width:700px){
  .fhr-tarot-grid{ grid-template-columns:1fr;max-width:280px;margin-left:auto;margin-right:auto;gap:14px; }
}
.fhr-tarot-position{
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);margin-bottom:10px;text-align:center;
}
.fhr-tarot-card{
  /* !important on background/border/padding: Kadence's own button styling
     (a compound selector, higher specificity than this single class) was
     painting these buttons solid blue with a shadow — same "beat the
     parent theme's button defaults" problem .fhr-pill-primary/-secondary
     already solve for elsewhere in this file. */
  display:block;width:100%;aspect-ratio:.62;border:0 !important;background:none !important;
  padding:0 !important;box-shadow:none !important;cursor:pointer;perspective:1200px;
}
.fhr-tarot-card:hover .fhr-tarot-card-inner{ transform:translateY(-4px); }
.fhr-tarot-card.is-flipped:hover .fhr-tarot-card-inner{ transform:rotateY(180deg) translateY(-4px); }
.fhr-tarot-card-inner{
  /* display:block is required here: this is a <span> (inline by default)
     so that width/height percentages below would otherwise be silently
     ignored (inline non-replaced boxes don't size from width/height at
     all), collapsing the absolutely-positioned faces inside it to almost
     nothing. */
  display:block;position:relative;width:100%;height:100%;transform-style:preserve-3d;
  transition:transform .5s ease;
}
.fhr-tarot-card.is-flipped .fhr-tarot-card-inner{ transform:rotateY(180deg); }
.fhr-tarot-face{
  position:absolute;inset:0;backface-visibility:hidden;border-radius:18px;
  border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:12px;padding:22px 18px;text-align:center;
}
.fhr-tarot-face-back{ background:var(--card); }
.fhr-tarot-face-front{ transform:rotateY(180deg);background:linear-gradient(160deg,rgba(223,192,127,.1),var(--card)); }
.fhr-tarot-back-glyph{ font-size:28px;color:var(--gold-soft); }
.fhr-tarot-back-label{
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);
}
.fhr-tarot-glyph{ font-size:34px;color:var(--gold-soft);font-family:var(--mono);display:inline-block; }
.fhr-tarot-glyph.is-reversed{ transform:rotate(180deg); }
.fhr-tarot-name{ font-family:var(--serif);font-size:24px;line-height:1.15;color:var(--star); }
.fhr-tarot-orientation{
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);
}
.fhr-tarot-meaning{ font-size:14px;line-height:1.55;color:var(--muted); }
.fhr-tarot-actions{ display:flex;gap:12px;justify-content:center;margin-top:30px;flex-wrap:wrap; }

/* Single-column stacking (below): the design's aspect-ratio:.62 (tall/
   narrow, meant for a 3-WIDE row) would stack three ~550px-tall cards
   into one ~1700px scroll on a narrow screen. Widen the ratio here only
   (still enough headroom for the glyph/name/orientation/meaning text to
   fit without overflowing) so the mobile stack stays reasonably short,
   without changing the desktop 3-column look at all. Placed AFTER the
   unconditional .fhr-tarot-card rule above on purpose — a media-scoped
   rule earlier in the file would otherwise lose to that later,
   equal-specificity, unconditional one regardless of viewport width. */
@media(max-width:700px){
  .fhr-tarot-card{ aspect-ratio:.85; }
}

@media(prefers-reduced-motion:reduce){
  .fhr-tarot-card-inner{ transition:none; }
  .fhr-tarot-card:hover .fhr-tarot-card-inner{ transform:none; }
  .fhr-tarot-card.is-flipped:hover .fhr-tarot-card-inner{ transform:rotateY(180deg); }
}
.fhr-compat-browse-links a:hover{ color:var(--gold-soft);text-decoration:underline; }

/* ---- Birth chart wheel (Phase 6D Task 2) ---- */
.fhr-chart{ max-width:1080px; }
.fhr-chart-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(223,192,127,.85);margin-top:22px;
}
.fhr-chart-note{
  font-size:14.5px;line-height:1.6;color:var(--muted);max-width:70ch;margin:14px 0 0;
  padding:14px 18px;border:1px solid var(--line);border-radius:14px;background:var(--card);
  text-align:left;
}

.fhr-chart-form{
  display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;justify-content:center;
  margin-top:28px;text-align:left;
}
.fhr-chart-field{ display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--faint); }
.fhr-chart-field label{ color:var(--muted); }
.fhr-chart-optional{ color:var(--faint);font-weight:400; }
.fhr-chart-field input{
  font-family:var(--sans);font-size:15px;padding:10px 14px;border-radius:12px;
  border:1px solid var(--line);background:var(--card);color:var(--lav);
  color-scheme:dark;min-width:180px;
}
.fhr-chart-form .fhr-pill{ padding:12px 26px;font-size:15px; }

.fhr-chart-grid{
  display:grid;grid-template-columns:minmax(280px,440px) 1fr;gap:30px;
  margin-top:34px;align-items:start;text-align:left;
}
@media(max-width:820px){ .fhr-chart-grid{ grid-template-columns:1fr; } }

.fhr-chart-wheel-wrap{ max-width:440px;margin:0 auto; }
.fhr-wheel-svg{ width:100%;height:auto;display:block; }
@media(prefers-reduced-motion:no-preference){
  .fhr-wheel-svg{ animation:fhr-wheel-fade .6s ease; }
}
@keyframes fhr-wheel-fade{ from{ opacity:0;transform:scale(.97); } to{ opacity:1;transform:scale(1); } }

.fhr-wheel-ring-outer{ fill:none;stroke:var(--line);stroke-width:1.5; }
.fhr-wheel-ring-dashed{ fill:none;stroke:rgba(192,171,233,.3);stroke-width:1;stroke-dasharray:4 5; }
.fhr-wheel-core{ fill:rgba(233,198,125,.5);stroke:none; }
.fhr-wheel-sign-tick{ stroke:rgba(223,192,127,.22);stroke-width:1; }
.fhr-wheel-sign-glyph{
  font-size:17px;font-family:'Noto Sans Symbols 2','Segoe UI Symbol',serif;font-variant-emoji:text;
  fill:var(--gold-soft);
}
.fhr-wheel-house-cusp{ stroke:rgba(223,192,127,.16);stroke-width:1; }
.fhr-wheel-house-cusp.is-angular{ stroke:rgba(223,192,127,.4);stroke-width:1.6; }
.fhr-wheel-asc-label{
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;fill:var(--gold);font-weight:600;
}
.fhr-wheel-degree-tick{ stroke:rgba(235,232,223,.4);stroke-width:1.2; }
.fhr-wheel-planet-glyph{
  font-size:16px;font-family:'Noto Sans Symbols 2','Segoe UI Symbol',serif;font-variant-emoji:text;
  fill:var(--star);
}

.fhr-chart-side{ display:grid;gap:14px; }
.fhr-chart-placements{ display:grid;gap:8px; }
.fhr-chart-row{
  display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:14px;
  padding:13px 18px;border:1px solid var(--line);border-radius:14px;background:var(--card);
}
.fhr-chart-row-glyph{
  font-size:18px;font-family:'Noto Sans Symbols 2','Segoe UI Symbol',serif;font-variant-emoji:text;
  color:var(--gold-soft);
}
.fhr-chart-row-glyph.is-text{ font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:var(--gold); }
.fhr-chart-row-body{ font-size:15px;color:var(--lav); }
.fhr-chart-row-house{ font-family:var(--mono);font-size:11px;color:var(--faint);white-space:nowrap; }

/* Hub lede: the mockup's single orienting line under a hub heading, above the
   pickers. Kept visually distinct from body copy so it reads as a subtitle. */
.fhr-hub-lede{
  margin:-6px 0 26px;
  max-width:60ch;
  font-size:17.5px;
  line-height:1.55;
  color:var(--lav);
}
@media(max-width:600px){ .fhr-hub-lede{ font-size:16px;margin-bottom:20px; } }

/* Tool hubs are single-column and narrower, per the mockup's 980px tool screens.
   The sidebar is omitted on these pages (see page.php), so the grid collapses to
   one centred column instead of leaving a dead gutter where the aside used to be. */
.fhr-layout--tool{
  grid-template-columns:minmax(0,1fr);
  max-width:1000px;
}
