/* ============================================================
   Zodified — «Альманах» theme (redesign 2026-06-18)
   Increment 1: shell (header/footer) + home page.
   Design source: _design_archives/2026-06-18_zodified-almanah/
   ============================================================ */

:root{
  --bg:#f4eee0; --surface:#fbf6ea; --ink:#1b2440; --soft:#474d63; --muted:#8a836f;
  --accent:#22305f; --accent-deep:#161f44; --accent-soft:#e6e6d8;
  --gold:#9c7d36; --gold-bright:#c0973f; --glyph:#1b2440; --rule:#b89b56;
  --night1:#161d3c; --night2:#222a4f; --line:#d6cab0; --radius:2px;
  --max:1180px;
  --serif:'EB Garamond',Georgia,'Noto Sans Symbols 2',serif;
  --sans:'Manrope','Noto Sans Symbols 2',system-ui,-apple-system,sans-serif;
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;}
@keyframes zTwinkle{0%,100%{opacity:.25}50%{opacity:.9}}
a{color:inherit;}
img{max-width:100%;height:auto;}
::selection{background:var(--accent);color:#fff;}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;color:var(--ink);margin:0 0 .5em;line-height:1.12;}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:10px 16px;z-index:200;}
.skip-link:focus{left:8px;top:8px;}

/* ---------- Header ---------- */
.site-header{background:rgba(244,238,224,.92);backdrop-filter:saturate(150%) blur(8px);
  border-bottom:1px solid var(--ink);position:sticky;top:0;z-index:40;}
.site-nav{max-width:var(--max);margin:0 auto;padding:11px 24px;display:flex;align-items:center;
  justify-content:space-between;flex-wrap:wrap;gap:10px 22px;}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;flex:none;
  font-family:var(--serif);font-weight:600;font-size:1.5rem;letter-spacing:.01em;color:var(--ink);}
.brand::before{content:"✦";color:var(--gold);font-size:1.05rem;}
.periods-nav{display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;list-style:none;margin:0;padding:0;}
.period-link{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;text-decoration:none;
  white-space:nowrap;border-radius:var(--radius);font-family:var(--sans);font-size:.84rem;
  font-weight:600;color:var(--soft);transition:background .15s,color .15s;}
.period-link:hover{color:var(--accent);background:var(--accent-soft);}
.period-icon{color:var(--gold);}
.nav-spacer{flex:1;}
.lang-switcher{display:flex;align-items:center;gap:1px;flex:none;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;list-style:none;margin:0;padding:0;
  font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.04em;}
.lang-switcher a{display:block;padding:5px 8px;color:var(--muted);text-decoration:none;}
.lang-switcher .current a{background:var(--ink);color:var(--bg);}

/* ---------- Breadcrumb ---------- */
.breadcrumb{max-width:var(--max);margin:0 auto;padding:14px 24px 0;}
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0;
  font-family:var(--sans);font-size:.78rem;color:var(--muted);}
.breadcrumb li:not(:last-child)::after{content:"›";padding-left:6px;color:var(--line);}
.breadcrumb a{color:var(--accent);text-decoration:none;}

/* ---------- Layout ---------- */
.content{display:block;}
main section{max-width:var(--max);margin:0 auto;padding:48px 24px 0;}

/* section header: roman numeral + label + gold rule */
.alm-head{display:flex;align-items:center;gap:14px;margin:0 0 20px;}
.alm-head .num{font-family:var(--serif);font-style:italic;font-size:1.2rem;color:var(--gold);flex:none;}
.alm-head .lbl{font-family:var(--sans);font-size:.74rem;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink);flex:none;white-space:nowrap;}
.alm-head .rule{flex:1;height:1px;background:var(--gold);}
.alm-head .aside{font-family:var(--sans);font-size:.7rem;color:var(--muted);flex:none;}
.alm-head .aside a{color:var(--accent);text-decoration:none;font-weight:600;}

.alm-divider{max-width:var(--max);margin:34px auto 0;padding:0 24px;}
.alm-divider>span{display:block;border-top:3px double var(--ink);}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--accent);color:#fff;
  font-family:var(--sans);font-weight:600;font-size:.96rem;padding:15px 28px;border-radius:var(--radius);
  text-decoration:none;min-height:44px;border:none;cursor:pointer;transition:background .15s;}
.btn:hover{background:var(--accent-deep);}
.btn-ghost{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;
  font-size:.92rem;color:var(--ink);text-decoration:none;padding:13px 6px;}
.btn-ghost:hover{color:var(--gold);}

/* ---------- Hero ---------- */
.hero{display:flex;flex-wrap:wrap;gap:40px;align-items:flex-end;}
.hero-main{flex:2 1 440px;min-width:0;}
.hero-eyebrow{display:block;font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold);margin:0 0 16px;}
.hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.5rem,5.6vw,4.4rem);line-height:1.02;
  letter-spacing:-.015em;margin:0 0 18px;}
.hero .lede{font-family:var(--sans);font-size:1.12rem;line-height:1.65;color:var(--soft);margin:0 0 26px;max-width:480px;}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;}
.day-widget{flex:1 1 280px;border:1px solid var(--ink);background:var(--surface);border-radius:var(--radius);}
.day-widget-head{background:var(--ink);color:var(--bg);padding:9px 16px;display:flex;align-items:center;justify-content:space-between;}
.day-widget-head .t{font-family:var(--sans);font-size:.66rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;}
.day-widget-head .star{color:var(--gold-bright);}
.day-widget-body{padding:6px 16px 14px;}
.day-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);}
.day-row .k{font-family:var(--sans);font-size:.82rem;color:var(--muted);}
.day-row .v{font-family:var(--serif);font-weight:600;font-size:1.05rem;text-align:right;}
.day-note{font-family:var(--sans);font-size:.78rem;line-height:1.5;color:var(--soft);margin:12px 0 0;}
.day-note b{color:var(--gold);font-weight:700;}

/* ---------- Sign plate ---------- */
.sign-grid ul{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:1px;background:var(--line);border:1px solid var(--ink);}
.sign-grid h2{position:absolute;left:-9999px;}
.sign-tile{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--bg);text-decoration:none;transition:background .16s;}
.sign-tile:hover{background:var(--surface);}
.sign-tile .symbol{font-size:1.9rem;line-height:1;color:var(--glyph);flex:none;width:30px;text-align:center;}
.sign-tile .name{display:block;font-family:var(--serif);font-weight:600;font-size:1.18rem;line-height:1.1;}
.sign-tile .dates{display:block;font-family:var(--sans);font-size:.7rem;font-weight:500;color:var(--muted);letter-spacing:.02em;margin-top:2px;}

/* ---------- Sky panel (dark) — targets components/sky_panel.html classes ---------- */
.sky-panel{position:relative;overflow:hidden;border-radius:var(--radius);
  background:linear-gradient(155deg,var(--night1),var(--night2));border:1px solid rgba(201,161,74,.28);
  padding:30px clamp(20px,4vw,40px);color:#e7e8f2;}
.sky-header h2{font-family:var(--serif);font-weight:600;font-size:1.4rem;color:#fff;margin:0 0 4px;}
.sky-subtitle{display:block;font-family:var(--sans);font-size:.82rem;color:#a8acc8;margin:0 0 24px;letter-spacing:.02em;}
.sky-table{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2px 40px;}
.sky-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.07);}
.sky-glyph{color:var(--gold-bright);font-size:1.05rem;width:18px;text-align:center;flex:none;}
.sky-planet{font-family:var(--sans);font-size:.9rem;color:#e7e8f2;flex:1;}
.sky-degree{font-family:var(--sans);font-size:.84rem;color:#9fa3c2;}
.sky-sign-glyph{color:var(--gold-bright);font-size:.95rem;width:16px;text-align:center;}
.sky-sign-name{font-family:var(--sans);font-size:.82rem;color:#c6c8de;width:74px;}
.sky-retro{color:#d98a4a;font-size:.8rem;}
.sky-retro-placeholder{width:.8rem;}
.sky-note{font-family:var(--sans);font-size:.84rem;color:#a8acc8;margin:22px 0 0;line-height:1.6;}
.sky-note b{color:var(--gold-bright);font-weight:600;}

/* ---------- Overview + calendar ---------- */
.overview-wrap{display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start;}
.cal-col{flex:1 1 300px;}
/* calendar component (components/calendar.html) */
.calendar-widget>h2{font-family:var(--serif);font-weight:600;font-size:1.4rem;margin:0 0 4px;}
.calendar-note{font-family:var(--sans);font-size:.72rem;color:var(--muted);margin:0 0 14px;}
.cal-month{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:0 0 14px;}
.cal-month-title{font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);margin:0 0 10px;text-align:center;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.cal-day-name{font-family:var(--sans);font-size:.66rem;font-weight:600;color:var(--muted);text-align:center;padding-bottom:4px;}
.cal-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:.82rem;border-radius:var(--radius);text-decoration:none;color:var(--ink);}
.cal-day{color:var(--accent);font-weight:600;}
.cal-day:hover{background:var(--accent-soft);}
.cal-today{background:var(--accent);color:#fff;font-weight:700;}
.cal-unavailable{color:var(--muted);opacity:.45;}
.cal-blank{visibility:hidden;}
.calendar-more{font-family:var(--sans);font-size:.74rem;text-align:center;}
.calendar-more a{color:var(--accent);text-decoration:none;}
.overview-col{flex:2 1 440px;min-width:0;}
.overview-kicker{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 8px;}
.overview-col h2{font-family:var(--serif);font-weight:600;font-size:clamp(1.6rem,3vw,2.1rem);line-height:1.1;margin:0 0 10px;}
.overview-byline{font-family:var(--sans);font-size:.8rem;color:var(--muted);margin:0 0 18px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;}
.overview-byline em{color:var(--soft);}
.overview-byline a{color:var(--accent);text-decoration:none;font-weight:600;}
.overview-body{font-family:var(--sans);font-size:1.04rem;line-height:1.78;color:var(--soft);}
.overview-body>p{margin:0 0 1.1rem;}
.overview-body>p:first-of-type::first-letter{float:left;font-family:var(--serif);font-size:3.4rem;line-height:.78;color:var(--gold);padding:6px 12px 0 0;}
.overview-body h3{font-family:var(--serif);font-weight:600;font-size:1.3rem;margin:1.6rem 0 .7rem;}
.overview-body ul{margin:0 0 1.2rem;padding:0;list-style:none;}
.overview-body li{font-size:1rem;line-height:1.6;color:var(--soft);padding:8px 0;border-bottom:1px solid var(--line);}
.overview-body strong{color:var(--ink);}

/* ---------- Author / EEAT ---------- */
.author-card{border:1px solid var(--ink);background:var(--surface);border-radius:var(--radius);display:flex;flex-wrap:wrap;}
.author-main{flex:2 1 380px;min-width:0;padding:24px clamp(20px,3vw,30px);display:flex;gap:18px;align-items:flex-start;border-bottom:1px solid var(--line);}
.author-badge{width:60px;height:60px;flex:none;border-radius:999px;background:linear-gradient(150deg,var(--night1),var(--accent));color:var(--gold-bright);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:600;font-size:1.3rem;}
.author-name{font-family:var(--serif);font-weight:600;font-size:1.4rem;margin:0 0 2px;}
.author-role{font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:0 0 10px;}
.author-bio{font-family:var(--sans);font-size:.95rem;line-height:1.6;color:var(--soft);margin:0 0 12px;}
.author-links{display:flex;flex-wrap:wrap;gap:8px 16px;font-family:var(--sans);font-size:.8rem;font-weight:600;}
.author-links a{color:var(--accent);text-decoration:none;}
.author-links a:hover{color:var(--gold);}
.author-trust{flex:1 1 240px;padding:20px clamp(20px,3vw,26px);background:var(--bg);}
.author-trust .h{font-family:var(--sans);font-size:.66rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;}
.trust-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);}
.trust-row .k{font-family:var(--sans);font-size:.8rem;color:var(--muted);}
.trust-row .v{font-family:var(--sans);font-size:.82rem;font-weight:600;color:var(--ink);text-align:right;}

/* ---------- Celebrities ---------- */
.celebs{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;list-style:none;margin:0;padding:0;}
.celeb{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;}
.celeb .avatar{width:46px;height:46px;flex:none;border-radius:999px;object-fit:cover;background:linear-gradient(150deg,var(--night1),var(--accent));color:var(--gold-bright);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:600;font-size:1rem;}
.celeb .name{font-family:var(--serif);font-weight:600;font-size:1.12rem;margin:0 0 2px;line-height:1.15;}
.celeb .meta{font-family:var(--sans);font-size:.78rem;color:var(--muted);margin:0;}
.celeb .info-btn{cursor:pointer;color:var(--muted);margin-left:4px;}

/* ---------- Footer ---------- */
.site-footer{margin-top:72px;border-top:3px double var(--ink);background:var(--surface);}
.footer-cols{max-width:var(--max);margin:0 auto;padding:40px 24px 8px;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:28px;}
.footer-col h4{font-family:var(--sans);font-size:.7rem;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:var(--gold);margin:0 0 12px;}
.footer-col ul{list-style:none;margin:0;padding:0;}
.footer-col li{margin:0 0 7px;}
.footer-col a{font-family:var(--sans);font-size:.9rem;color:var(--soft);text-decoration:none;}
.footer-col a:hover{color:var(--accent);}
.footer-bottom{max-width:var(--max);margin:0 auto;padding:18px 24px 30px;display:flex;flex-wrap:wrap;
  justify-content:space-between;gap:8px;align-items:center;border-top:1px solid var(--line);}
.brand-line{font-family:var(--serif);font-weight:600;font-size:1.05rem;}
.footer-bottom small{font-family:var(--sans);font-size:.76rem;color:var(--muted);}

/* ---------- Consent banner ---------- */
.consent-banner{position:fixed;left:0;right:0;bottom:0;z-index:120;background:var(--ink);color:#eee;}
.consent-inner{max-width:var(--max);margin:0 auto;padding:16px 24px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;}
.consent-title{display:block;font-family:var(--serif);font-size:1.05rem;color:#fff;}
.consent-text{font-family:var(--sans);font-size:.82rem;line-height:1.5;color:#c9cbe0;margin:4px 0 0;}
.consent-link{color:var(--gold-bright);text-decoration:none;}
.consent-actions{display:flex;gap:10px;flex:none;}
.consent-btn{font-family:var(--sans);font-weight:600;font-size:.84rem;padding:10px 16px;border-radius:var(--radius);cursor:pointer;border:1px solid rgba(255,255,255,.25);}
.consent-btn-secondary{background:none;color:#e7e8f2;}
.consent-btn-primary{background:var(--gold-bright);color:var(--ink);border-color:var(--gold-bright);}

/* ---------- Responsive ---------- */
@media(max-width:720px){
  main section{padding:32px 16px 0;}
  .site-nav{padding:10px 16px;}
  .periods-nav{order:3;width:100%;}
  .nav-spacer{display:none;}
  .hero{gap:28px;}
  .footer-cols{padding:32px 16px 8px;}
}

/* ============================================================
   Hub знака (sign_hub.html) — increment 2
   ============================================================ */
.hub-header{max-width:760px;margin:0 auto;text-align:center;padding-top:14px;}
.hub-badge{width:88px;height:88px;margin:0 auto 18px;border-radius:20px;
  background:linear-gradient(150deg,#19243f 0%,#2f5a52 100%);display:flex;align-items:center;
  justify-content:center;color:var(--gold-bright);font-size:2.7rem;box-shadow:0 18px 36px -18px rgba(25,36,63,.65);}
.hub-header h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.6rem,7vw,4rem);margin:0 0 10px;letter-spacing:-.01em;}
.hub-meta{font-family:var(--sans);font-size:.94rem;color:var(--soft);margin:0;letter-spacing:.03em;}

.hub-nav{max-width:1000px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;padding-top:0;}
.hub-nav a{display:flex;align-items:center;gap:10px;padding:16px 18px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;
  font-family:var(--serif);font-weight:600;font-size:1.12rem;color:var(--ink);transition:border-color .15s,background .15s;}
.hub-nav a:hover{border-color:var(--accent);background:var(--accent-soft);}
.hub-nav .icon{color:var(--gold);font-size:1.05rem;flex:none;}

/* article + sidebar */
.sign-hub-grid{max-width:1100px;margin:0 auto;padding:56px 24px 0;display:flex;flex-wrap:wrap;gap:48px;}
.sign-hub-main{flex:1 1 520px;min-width:0;}
.sign-hub-side{flex:1 1 260px;}
.sign-about>h2,.sign-description h2{font-family:var(--serif);font-weight:600;font-size:clamp(1.7rem,3vw,2.2rem);margin:0 0 10px;}
.sign-about-header h2{font-family:var(--serif);font-weight:600;font-size:clamp(1.7rem,3vw,2.2rem);margin:0 0 8px;}
.sign-about-byline{font-family:var(--sans);font-size:.82rem;color:var(--muted);margin:0 0 24px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;}
.sign-about-byline a,.byline-author,.byline-methodology{color:var(--accent);text-decoration:none;font-weight:600;}
.sign-about-byline .tts-toggle{font-family:var(--sans);font-size:.82rem;color:var(--accent);background:none;border:none;cursor:pointer;font-weight:600;}
.sign-about-body{font-family:var(--sans);font-size:1.06rem;line-height:1.8;color:var(--soft);}
.sign-about-body>p{margin:0 0 1.2rem;}
.sign-about-body>p:first-of-type::first-letter{float:left;font-family:var(--serif);font-size:3.6rem;line-height:.76;color:var(--gold);padding:6px 12px 0 0;}
.sign-about-body h2,.sign-about-body h3{font-family:var(--serif);font-weight:600;color:var(--ink);margin:1.9rem 0 .7rem;}
.sign-about-body h3{font-size:1.34rem;}
.sign-description p{font-family:var(--sans);font-size:1.06rem;line-height:1.8;color:var(--soft);margin:0 0 1.2rem;}

/* key facts sidebar */
.facts{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:sticky;top:96px;margin:0 0 18px;}
.facts-title{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin:0 0 14px;}
.fact-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);}
.fact-row .k{font-family:var(--sans);font-size:.84rem;color:var(--muted);}
.fact-row .v{font-family:var(--sans);font-size:.84rem;font-weight:600;color:var(--ink);text-align:right;}

/* FAQ accordion */
.sign-faq{max-width:760px;}
.sign-faq>h2{font-family:var(--serif);font-weight:600;font-size:clamp(1.6rem,3vw,2rem);margin:0 0 22px;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-item>summary,.faq-q{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:18px 0;font-family:var(--serif);font-weight:600;font-size:1.18rem;color:var(--ink);cursor:pointer;}
.faq-item>summary::-webkit-details-marker{display:none;}
.faq-item>summary::after{content:"+";color:var(--gold);font-size:1.3rem;flex:none;}
.faq-item[open]>summary::after{content:"–";}
.faq-a{font-family:var(--sans);font-size:1rem;line-height:1.75;color:var(--soft);margin:0 0 18px;}

/* famous people on hub → almanac cards */
.famous-section>h2{font-family:var(--serif);font-weight:600;font-size:clamp(1.6rem,3vw,2rem);margin:0 0 20px;}
.famous-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;list-style:none;margin:0;padding:0;}
.famous-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;}
.famous-card .avatar{width:54px;height:54px;flex:none;border-radius:999px;object-fit:cover;background:linear-gradient(150deg,var(--night1),var(--accent));color:var(--gold-bright);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:600;font-size:1.1rem;}
.famous-card .name{font-family:var(--serif);font-weight:600;font-size:1.08rem;line-height:1.15;}
.famous-card .meta{font-family:var(--sans);font-size:.78rem;color:var(--muted);}

/* ============================================================
   Forecast (forecast.html) — increment 3 (Daily/period/date)
   ============================================================ */
.forecast{max-width:760px;margin:0 auto;padding:0 24px;}
.forecast>header{text-align:center;padding-top:26px;}
.forecast>header h1{font-family:var(--serif);font-weight:500;font-size:clamp(2rem,4.4vw,3rem);line-height:1.08;margin:0 0 14px;letter-spacing:-.01em;}
.forecast .date{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 14px;}
.forecast-byline{font-family:var(--sans);font-size:.82rem;color:var(--muted);margin:0 0 8px;display:flex;flex-wrap:wrap;justify-content:center;gap:6px 12px;align-items:center;}
.forecast-byline a,.byline-author,.byline-methodology{color:var(--accent);text-decoration:none;font-weight:600;}
.forecast-byline .byline-sep{color:var(--line);}
.forecast-byline .tts-toggle{font-family:var(--sans);font-size:.82rem;color:var(--accent);background:none;border:none;cursor:pointer;font-weight:600;}
.archive-banner{max-width:680px;margin:20px auto 0;background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--radius);padding:12px 18px;font-family:var(--sans);font-size:.88rem;color:var(--soft);}
.archive-banner a{color:var(--accent);font-weight:600;text-decoration:none;}
.forecast .body{max-width:680px;margin:36px auto 0;font-family:var(--sans);font-size:1.06rem;line-height:1.8;color:var(--soft);}
.forecast .body p{margin:0 0 1.2rem;}
.forecast .body p:first-of-type{font-size:1.1rem;color:var(--ink);}
.forecast .body h2,.forecast .body h3{font-family:var(--serif);font-weight:600;color:var(--ink);margin:1.9rem 0 .7rem;}
.forecast .body h3{font-size:1.4rem;}
.forecast .body ul{margin:0 0 1.3rem;padding:0 0 0 4px;list-style:none;}
.forecast .body li{display:flex;gap:12px;line-height:1.6;padding:7px 0;}
.forecast .body li::before{content:"✦";color:var(--gold);flex:none;}
.lucky{max-width:680px;margin:24px auto 0;background:linear-gradient(120deg,#fbf4e2,#f6ecd2);border:1px solid #e7d6ad;border-radius:var(--radius);padding:20px 24px;}
.lucky h3{font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin:0 0 16px;}
.lucky ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:18px;list-style:none;margin:0;padding:0;}
.lucky li{display:flex;flex-direction:column;}
.lucky li strong{font-family:var(--sans);font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;}
.lucky li{font-family:var(--serif);font-weight:600;font-size:1.5rem;color:var(--ink);}
.topic-nav{max-width:680px;margin:30px auto 0;}
.topic-nav h2{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;}
.topic-nav ul{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;}
.topic-nav a{display:inline-block;font-family:var(--sans);font-size:.88rem;font-weight:500;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 18px;text-decoration:none;}
.topic-nav a:hover{border-color:var(--accent);color:var(--accent);}
.period-nav{max-width:680px;margin:30px auto 0;padding-bottom:8px;}
.period-nav h2{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;}
.period-nav ul{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;}
.period-nav a{font-family:var(--sans);font-size:.88rem;font-weight:500;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 16px;text-decoration:none;}
.period-nav a:hover{border-color:var(--accent);}
.other-signs-today{max-width:1140px;margin:56px auto 0;padding:0 24px;}
.other-signs-today>h2{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin:0 0 24px;border-bottom:1px solid var(--line);padding-bottom:14px;}

/* portal-grid / portal-card — shared forecast(other signs) + portal.html */
.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;list-style:none;margin:0 auto;padding:0;max-width:var(--max);}
/* portal.html: grid sits directly in <main class="content-wide"> (not in a <section>) → add side padding so it doesn't touch edges */
.content-wide>.portal-grid{padding:0 24px;}
.portal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:8px;}
.portal-card.placeholder{opacity:.7;}
.portal-card-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.portal-card-sign{display:flex;align-items:baseline;gap:10px;text-decoration:none;}
.portal-card-head .symbol{color:var(--glyph);font-size:1.3rem;line-height:1;}
.portal-card-head .name{font-family:var(--serif);font-weight:600;font-size:1.2rem;color:var(--ink);}
.portal-card-head .dates{font-family:var(--sans);font-size:.68rem;color:var(--muted);margin-left:auto;}
.portal-card-excerpt{font-family:var(--sans);font-size:.92rem;line-height:1.55;color:var(--soft);margin:0;}
.portal-card-cta{font-family:var(--sans);font-size:.8rem;font-weight:600;color:var(--accent);text-decoration:none;margin-top:auto;}

/* ============================================================
   Portal / date page (portal.html) — increment 5
   ============================================================ */
.portal-hero{display:block;text-align:center;flex-wrap:initial;}
.portal-hero .hero-eyebrow{font-family:var(--sans);font-size:.72rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 14px;}
.portal-hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,5vw,3.6rem);line-height:1.04;letter-spacing:-.015em;margin:0 0 14px;}
.portal-hero .lede{font-family:var(--sans);font-size:1.06rem;color:var(--soft);margin:0 auto;max-width:520px;}
.birthdays-section{max-width:var(--max);margin:56px auto 0;padding:0 24px;}
.birthdays-section>h2{font-family:var(--serif);font-weight:600;font-size:clamp(1.6rem,3vw,2rem);margin:0 0 20px;}
.birthdays-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;list-style:none;margin:0;padding:0;}
.birthday-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;}
.birthday-card .avatar{width:48px;height:48px;flex:none;border-radius:999px;object-fit:cover;background:linear-gradient(150deg,var(--night1),var(--accent));color:var(--gold-bright);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:600;font-size:1rem;}
.birthday-card .name{font-family:var(--serif);font-weight:600;font-size:1.05rem;line-height:1.15;}
.birthday-card .meta{font-family:var(--sans);font-size:.76rem;color:var(--muted);}

/* ============================================================
   Lunar calendar (lunar_calendar.html) — increment 4 (CSS-only)
   ============================================================ */
.lunar-page{max-width:1000px;margin:0 auto;padding:0 24px;}
.lunar-hero{max-width:760px;margin:0 auto;text-align:center;padding-top:34px;}
.lunar-hero .eyebrow{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin:0 0 16px;}
.lunar-hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,5vw,3.4rem);line-height:1.06;margin:0 0 16px;letter-spacing:-.01em;}
.lunar-hero .lede{font-family:var(--sans);font-size:1.04rem;line-height:1.6;color:var(--soft);margin:0 auto;max-width:480px;}
.lunar-today{margin:36px 0 0;}
.lunar-today-grid{display:flex;align-items:center;flex-wrap:wrap;gap:24px;background:linear-gradient(155deg,var(--night1),var(--night2));border:1px solid rgba(201,161,74,.28);border-radius:var(--radius);padding:26px clamp(20px,4vw,36px);}
.lunar-today-emoji{font-size:2.6rem;flex:none;}
.lunar-today-meta{flex:1 1 200px;}
.lunar-today-date{font-family:var(--sans);font-size:.78rem;color:#a8acc8;margin:0 0 3px;}
.lunar-today-phase{font-family:var(--serif);font-weight:600;font-size:1.7rem;color:#fff;margin:0 0 6px;}
.lunar-today-stats{display:flex;gap:28px;flex-wrap:wrap;list-style:none;margin:0;padding:0;font-family:var(--sans);font-size:.84rem;color:#c6c8de;}
.lunar-today-stats strong{color:var(--gold-bright);}
.lunar-month-nav{display:flex;align-items:center;justify-content:space-between;margin:36px 0 14px;font-family:var(--sans);font-size:.88rem;font-weight:600;color:var(--accent);}
.lunar-month-nav a{text-decoration:none;color:var(--accent);}
.lunar-month-title{font-family:var(--serif);font-weight:600;font-size:1.4rem;color:var(--ink);margin:0;}
.lunar-nav-disabled{opacity:.3;}
.lunar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.lunar-day-name{font-family:var(--sans);font-size:.66rem;font-weight:600;color:var(--muted);text-align:center;padding-bottom:4px;}
.lunar-cell{display:flex;flex-direction:column;align-items:center;gap:2px;aspect-ratio:.92;padding:6px 2px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);}
.lunar-blank{background:transparent;border:none;}
.lunar-cell-day{font-family:var(--sans);font-size:.74rem;font-weight:600;color:var(--muted);align-self:flex-start;padding-left:4px;}
.lunar-cell-emoji{font-size:1.15rem;line-height:1;}
.lunar-cell-sign{font-size:.72rem;color:var(--glyph);}
.lunar-cell-lunar-day{font-family:var(--sans);font-size:.6rem;color:var(--muted);}
.lunar-cell-today{background:var(--accent-soft);border:1.5px solid var(--accent);}
.lunar-cell-today .lunar-cell-day{color:var(--accent);font-weight:700;}
.lunar-cell-event{box-shadow:inset 0 0 0 1px var(--gold);}
.lunar-events{max-width:760px;margin:50px auto 0;}
.lunar-events>h2{font-family:var(--serif);font-weight:600;font-size:1.5rem;margin:0 0 18px;}
.lunar-events-list{list-style:none;margin:0;padding:0;}
.lunar-event{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:13px 18px;margin-bottom:6px;}
.lunar-event-date{font-family:var(--sans);font-size:.84rem;color:var(--muted);width:90px;flex:none;}
.lunar-event-kind{font-family:var(--serif);font-weight:600;font-size:1.12rem;color:var(--ink);flex:1;}
.lunar-event-sign{font-family:var(--sans);font-size:.86rem;color:var(--soft);}
.lunar-legend{max-width:760px;margin:40px auto 0;}
.lunar-legend>h2{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;}
.lunar-legend-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;list-style:none;margin:0;padding:0;font-family:var(--sans);font-size:.86rem;color:var(--soft);}
.lunar-legend-list li{display:flex;align-items:center;gap:10px;}
.lunar-legend-emoji{font-size:1.2rem;}
.visually-hidden{position:absolute;left:-9999px;}

/* ---------- Day overview expand/collapse (CSS-only toggle) ---------- */
.overview-clamp{position:relative;max-height:19em;overflow:hidden;}
.overview-clamp::after{content:"";position:absolute;left:0;right:0;bottom:0;height:6em;
  background:linear-gradient(transparent,var(--bg));pointer-events:none;}
.ov-toggle:checked ~ .overview-clamp{max-height:none;}
.ov-toggle:checked ~ .overview-clamp::after{display:none;}
.ov-btn{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-family:var(--sans);
  font-size:.9rem;font-weight:600;color:var(--accent);background:none;border:1px solid var(--line);
  border-radius:var(--radius);padding:10px 18px;cursor:pointer;transition:border-color .15s,background .15s;}
.ov-btn:hover{border-color:var(--accent);background:var(--accent-soft);}
.ov-less{display:none;}
.ov-toggle:checked ~ .ov-btn .ov-more{display:none;}
.ov-toggle:checked ~ .ov-btn .ov-less{display:inline;}

/* zodiac glyphs: force text-symbol font (navy line glyph, not colored emoji) */
.sign-tile .symbol,.portal-card-head .symbol,.hub-badge,.footer-col a{font-feature-settings:normal;}
.sign-tile .symbol,.portal-card-head .symbol{font-family:'Noto Sans Symbols 2',var(--serif);}
.hub-badge{font-family:'Noto Sans Symbols 2',var(--serif);}

/* ---------- Engagement / share bar (components/engagement.html) ---------- */
.engagement{max-width:680px;margin:8px auto 0;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 0;
  font-family:var(--sans);font-size:.84rem;color:var(--muted);}
.engagement-group{display:flex;align-items:center;flex-wrap:wrap;gap:10px;}
.engagement-group-stats{flex:1 1 auto;}
.engagement-group-share{margin-left:auto;}
.engagement-views{display:inline-flex;align-items:center;gap:6px;color:var(--muted);}
.engagement-divider{color:var(--line);}
.engagement-prompt{color:var(--soft);}
.vote-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;
  padding:5px 13px;background:none;color:var(--soft);cursor:pointer;font-family:var(--sans);font-size:.84rem;
  transition:border-color .15s,color .15s;}
.vote-btn:hover{border-color:var(--accent);color:var(--accent);}
.vote-btn.is-voted{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.vote-btn .vote-count{font-weight:600;}
.engagement-pct{color:var(--muted);font-size:.78rem;}
.share-label{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--soft);}
.share-btn{position:relative;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:999px;background:none;color:var(--soft);cursor:pointer;
  text-decoration:none;transition:border-color .15s,color .15s,background .15s;}
.share-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.share-copy-feedback:not(:empty){position:absolute;top:-26px;left:50%;transform:translateX(-50%);white-space:nowrap;
  font-size:.7rem;font-weight:600;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:2px 7px;}

/* ---------- Portal: day climate (today/date) ---------- */
.climate-text>p{font-family:var(--sans);font-size:1.06rem;line-height:1.75;color:var(--soft);margin:0 0 1rem;}
.climate-list{list-style:none;margin:0;padding:0;}
.climate-list li{display:flex;gap:12px;font-family:var(--sans);font-size:1rem;line-height:1.6;color:var(--soft);padding:9px 0;border-bottom:1px solid var(--line);}
.climate-list .b{color:var(--gold);flex:none;}
.portal-hero .day-widget{align-self:flex-start;}

/* date/portal: climate widget hugs top + sticky beside long overview */
.overview-wrap .day-widget{position:sticky;top:96px;align-self:flex-start;}

/* portal date/today: signs as connected plate (1px gridlines) per design II */
.portal-plate{gap:1px;background:var(--line);border:1px solid var(--ink);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));}
/* v0.4.51: plate must NOT inherit the 24px side padding of .content-wide>.portal-grid —
   it lands INSIDE the plate border and shows as empty cream gutters. Cells flush to the
   border; the breathing room from screen edges comes from the outer width instead. */
.content-wide>.portal-plate{padding:0;width:min(var(--max),calc(100% - 48px));margin-inline:auto;}
/* v0.4.52: general weekly/monthly overview block (no day-widget → constrain to a readable measure) */
.period-overview-col{max-width:760px;}
.portal-plate>li{background:var(--bg);display:flex;}
.portal-plate .portal-card{border:none;border-radius:0;background:transparent;width:100%;}
.portal-plate .portal-card:hover{background:var(--surface);}

/* portal date/today: author / EEAT byline strip after signs */
.portal-byline{max-width:var(--max);margin:34px auto 0;padding:16px 24px 0;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-family:var(--sans);font-size:.8rem;color:var(--muted);}
.portal-byline .pb-author{display:inline-flex;align-items:center;gap:8px;}
.portal-byline .pb-author em{color:var(--soft);font-style:italic;}
.portal-byline .pb-badge{width:26px;height:26px;flex:none;border-radius:999px;background:linear-gradient(150deg,var(--night1),var(--accent));color:var(--gold-bright);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:.72rem;}
.portal-byline a{color:var(--accent);text-decoration:none;font-weight:600;}
.portal-byline .pb-sep{color:var(--line);}
.portal-byline .pb-spacer{flex:1;}
.portal-byline .pb-disclaimer{color:var(--muted);}

/* v0.4.54: 404 page — restored from old main.css design, remapped to almanac tokens */
.error-404{max-width:720px;margin:0 auto;padding:3rem 1rem 4rem;text-align:center;}
.error-404 .err-eyebrow{font-family:var(--sans);font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;color:var(--gold);margin:0 0 1rem;font-weight:600;}
.error-404 .err-glyph{font-family:var(--serif);line-height:1;margin:0 auto 1.25rem;letter-spacing:-.04em;display:flex;justify-content:center;align-items:center;gap:.05em;}
.error-404 .err-num{font-size:clamp(5rem,16vw,9rem);color:var(--ink);font-weight:600;}
.error-404 .err-orb{font-size:clamp(4.2rem,14vw,7.5rem);color:var(--accent);display:inline-block;animation:err-orbit 6s ease-in-out infinite;}
@keyframes err-orbit{0%,100%{transform:translateY(0) rotate(0deg);}50%{transform:translateY(-8px) rotate(8deg);}}
.error-404 h1{font-family:var(--serif);font-size:clamp(1.5rem,4vw,2.2rem);margin:0 0 .6rem;color:var(--ink);}
.error-404 .lede{color:var(--muted);max-width:50ch;margin:0 auto 1.5rem;font-size:1.05rem;}
.error-404 .err-cta-row{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin:0 0 2.5rem;}
.error-404 .err-cta-row .cta{display:inline-block;padding:.65rem 1.25rem;background:var(--accent);color:#fff;border-radius:var(--radius);text-decoration:none;font-weight:500;font-size:.95rem;transition:background .15s ease;}
.error-404 .err-cta-row .cta:hover{background:var(--accent-deep);}
.error-404 .err-cta-row .cta-secondary{background:transparent;color:var(--ink);border:1px solid var(--line);}
.error-404 .err-cta-row .cta-secondary:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);}
.error-404 .err-signs h2{font-family:var(--sans);font-size:.85rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:600;margin:0 0 1rem;}
.error-404 .err-signs-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;}
@media(min-width:480px){.error-404 .err-signs-grid{grid-template-columns:repeat(3,1fr);}}
@media(min-width:720px){.error-404 .err-signs-grid{grid-template-columns:repeat(6,1fr);}}
.error-404 .err-sign-tile{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.85rem .5rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;}
.error-404 .err-sign-tile:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 4px 12px rgba(34,48,95,.12);}
.error-404 .err-sign-tile .symbol{font-family:'Noto Sans Symbols 2',var(--serif);font-size:1.65rem;color:var(--accent);line-height:1;}
.error-404 .err-sign-tile .name{font-size:.85rem;color:var(--ink);font-weight:500;}
