/* NWN Year-End Special — season layer (needawebnow seat, STAGED 2026-10-27).
   Scoped entirely under body.nwn-season-<phase>: with no season class (Jan 1 onward) this file changes nothing.
   Tokens are PROVISIONAL (option A, needawebnow); Eddy's pick from the Codex mockups replaces only the token blocks.
   Every text pair below is >= 4.5:1, measured (proof/season-contrast.txt). No clip art: colour, light, pattern only. */

/* ---------- tokens ---------- */
body.nwn-season-halloween { --season-bg:#16121f; --season-bg-2:#241b33; --season-ink:#fff4e6; --season-accent:#ffb547; --season-accent-ink:#1a1206;
  --season-strip-bg:#1c1726; --season-strip-fg:#fff4e6; --season-strip-accent:#ffb547;
  --season-glow:rgba(255,145,40,.20); --season-pattern:repeating-linear-gradient(135deg,rgba(255,181,71,.05) 0 2px,transparent 2px 22px); }
body.nwn-season-fall { --season-bg:#1f1812; --season-bg-2:#33251a; --season-ink:#fdf3e7; --season-accent:#f0a35e; --season-accent-ink:#1f1308;
  --season-strip-bg:#2a1f17; --season-strip-fg:#fdf3e7; --season-strip-accent:#f0a35e;
  --season-glow:rgba(220,120,50,.20); --season-pattern:radial-gradient(rgba(240,163,94,.08) 1px,transparent 1.5px) 0 0/18px 18px; }
body.nwn-season-cyber { --season-bg:#0b0d10; --season-bg-2:#14181d; --season-ink:#ffffff; --season-accent:#5BBF5B; --season-accent-ink:#06210a;
  --season-strip-bg:#0d0f12; --season-strip-fg:#ffffff; --season-strip-accent:#5BBF5B;
  --season-glow:rgba(91,191,91,.22); --season-pattern:linear-gradient(rgba(91,191,91,.06) 1px,transparent 1px) 0 0/100% 22px; }
body.nwn-season-holiday { --season-bg:#0c2219; --season-bg-2:#123526; --season-ink:#fbf7ee; --season-accent:#e9c46a; --season-accent-ink:#1d1704;
  --season-strip-bg:#0f2a1f; --season-strip-fg:#fbf7ee; --season-strip-accent:#e9c46a;
  --season-glow:rgba(233,196,106,.16); --season-pattern:radial-gradient(rgba(251,247,238,.07) 1px,transparent 1.6px) 0 0/26px 26px; }
body.nwn-season-newyear { --season-bg:#0f1526; --season-bg-2:#1a2340; --season-ink:#ffffff; --season-accent:#e6cf9a; --season-accent-ink:#1c160a;
  --season-strip-bg:#121a2e; --season-strip-fg:#ffffff; --season-strip-accent:#e6cf9a;
  --season-glow:rgba(230,207,154,.18); --season-pattern:repeating-linear-gradient(60deg,rgba(230,207,154,.05) 0 1px,transparent 1px 28px); }

/* ---------- header strip (takes the announce bar's slot; no timer) ---------- */
body[class*="nwn-season-"] .nwn-season-strip { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:6px 12px;
  background:var(--season-strip-bg); background-image:var(--season-pattern); color:var(--season-strip-fg);
  font:700 16px/1.25 var(--nwn-font-body, 'DM Sans', Arial, sans-serif); padding:12px 16px; min-height:44px; text-align:center; text-decoration:none; border:0; }
body[class*="nwn-season-"] .nwn-season-strip .sb-label { color:var(--season-strip-accent); font-weight:800; letter-spacing:.01em; }
body[class*="nwn-season-"] .nwn-season-strip .sb-sep { opacity:.7; }
body[class*="nwn-season-"] .nwn-season-strip .sb-cta { text-decoration:underline; text-underline-offset:3px; }
body[class*="nwn-season-"] .nwn-season-strip:hover .sb-cta, body[class*="nwn-season-"] .nwn-season-strip:focus-visible .sb-cta { text-decoration-thickness:2px; }
body[class*="nwn-season-"] .nwn-season-strip:focus-visible { outline:3px solid var(--season-strip-accent); outline-offset:-3px; }
@media (max-width:480px) { body[class*="nwn-season-"] .nwn-season-strip { font-size:15px; padding:10px 12px; }
  body[class*="nwn-season-"] .nwn-season-strip .sb-cta { flex-basis:100%; } body[class*="nwn-season-"] .nwn-season-strip .sb-sep:last-of-type { display:inline; } }
/* cached page after Jan 1: the inline re-check removed the season class, so the strip disappears */
body:not([class*="nwn-season-"]) .nwn-season-strip { display:none !important; }

/* ---------- homepage hero: same copy and buttons, seasonal light + pattern ---------- */
body[class*="nwn-season-"] .nwn-hero { background-color:var(--season-bg); }
/* the theme paints its gradient on ::before (over the background), so the season art replaces that layer */
body[class*="nwn-season-"] .nwn-hero::before { background:
    radial-gradient(ellipse 70% 55% at 50% 0%, var(--season-glow) 0%, transparent 70%),
    radial-gradient(ellipse 55% 50% at 85% 90%, var(--season-glow) 0%, transparent 60%),
    var(--season-pattern),
    linear-gradient(160deg, var(--season-bg) 0%, var(--season-bg-2) 60%, var(--season-bg) 100%); }
body[class*="nwn-season-"] .nwn-hero-eyebrow { border-color:var(--season-accent); color:var(--season-accent); }

/* ---------- hub ---------- */
.nwn-ye-hub { background:var(--nwn-gray, #F7F8F9); }
.nwn-ye-inner { max-width:var(--nwn-max-w, 1180px); margin:0 auto; padding:0 20px; }
.nwn-ye-hero { position:relative; background:var(--season-bg, #1a1a1a); background-image:radial-gradient(900px 420px at 80% 120%, var(--season-glow, rgba(91,191,91,.18)), transparent 60%), var(--season-pattern, none);
  color:var(--season-ink, #fff); padding:56px 0 64px; text-align:center; }
.nwn-ye-hero h1 { color:var(--season-ink, #fff); font-size:clamp(36px, 6vw, 60px); line-height:1.08; margin:8px 0 12px; }
.nwn-ye-sub { font-size:clamp(18px, 2.2vw, 22px); color:var(--season-ink, #fff); opacity:.92; margin:0; }
.nwn-ye-lang { position:absolute; top:16px; right:20px; display:inline-flex; align-items:center; min-height:44px; padding:0 16px; border-radius:999px;
  border:1.5px solid var(--season-accent, #5BBF5B); color:var(--season-ink, #fff); font-weight:700; text-decoration:none; }
.nwn-ye-cards { padding:40px 0 56px; margin-top:-28px; }
.nwn-ye-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:20px; }
.nwn-ye-card { background:#fff; border:1px solid var(--nwn-border, #E5E7EB); border-top:4px solid var(--season-accent, #45A045); border-radius:var(--nwn-radius-lg, 14px);
  box-shadow:var(--nwn-shadow); padding:24px; display:flex; flex-direction:column; }
.nwn-ye-card h2 { font-size:22px; line-height:1.2; margin:0 0 6px; color:var(--nwn-text, #1E1E1E); }
.nwn-ye-headline { color:#4B5563; font-size:16px; margin:0 0 14px; }
.nwn-ye-price { margin:0 0 4px; color:var(--nwn-text, #1E1E1E); } .nwn-ye-price strong { font-size:36px; line-height:1; } .nwn-ye-price span { font-weight:700; color:#4B5563; font-size:15px; }
.nwn-ye-days { font-weight:700; color:#1F5F1F; margin:0 0 12px; font-size:15px; }
.nwn-ye-card ul { list-style:none; margin:0 0 20px; padding:0; color:#374151; font-size:15px; line-height:1.45; }
.nwn-ye-card li { padding-left:22px; position:relative; margin:0 0 8px; } .nwn-ye-card li::before { content:"✓"; position:absolute; left:0; color:#2F7D32; font-weight:800; }
.nwn-ye-btn { margin-top:auto; display:flex; align-items:center; justify-content:center; min-height:48px; border-radius:var(--nwn-radius, 8px);
  background:var(--nwn-dark-deep, #1a1a1a); color:#fff; font-weight:800; font-size:16px; text-decoration:none; }
.nwn-ye-btn:hover, .nwn-ye-btn:focus-visible { background:#000; outline:3px solid var(--season-accent, #5BBF5B); outline-offset:2px; }
.nwn-ye-deadline { text-align:center; font-weight:800; font-size:18px; color:var(--nwn-text, #1E1E1E); margin:28px 0 6px; }
.nwn-ye-note { text-align:center; color:#4B5563; font-size:14px; margin:0; }
@media (max-width:900px) { .nwn-ye-grid { grid-template-columns:1fr; } .nwn-ye-hero { padding:72px 0 56px; } }

/* Year-End card badge (needawebnow 2026-10-27): a pill between the photo and the title. */
.nwn-ye-card-badge { display: inline-block; align-self: flex-start; width: max-content; max-width: calc(100% - 32px); margin: 10px 0 0 16px; background: var(--season-strip-bg, #1f1d2b); color: var(--season-strip-accent, #f7b733); font: 700 12px/1 "DM Sans", system-ui, sans-serif; letter-spacing: .02em; padding: 7px 10px; border-radius: 999px; }
