/* Shared styles for The Nexus SEO service landing pages
   (/faq, /buy-wild-cores, /lol-rank-boost, /wild-rift-elo-boost,
    /wild-rift-boost-comparison).

   V109 — this is the scoped successor to the root-level assets/css/seo-landing.css.
   Those pages used to hand-roll their own <head> and <header>, so that file could
   own bare `body`, `header`, `footer`, `section`, `a` and `*` selectors safely.
   They render inside layout/header.php + layout/footer.php now, which means those
   same bare selectors would repaint the real site chrome — a sticky duplicate
   header bar, Rajdhani on every footer heading, `section{padding:60px 0}` inside
   the footer, and `*{margin:0}` cancelling Bootstrap's spacing everywhere.

   Every rule is therefore confined to the page's own `.nx-seo` wrapper.

   SPECIFICITY IS DELIBERATE, in two tiers:
     - the reset and the bare-element rules use `.nx-seo :where(sel)`, which scores
       exactly one class. That is enough to beat Bootstrap's element selectors
       (which is the whole point — Bootstrap is loaded now and was not before) and
       low enough that the class rules below still win, and that games.css's
       `.nxg-*` rules still tie-break by source order the way they did before.
     - the class rules carry a plain `.nx-seo ` prefix, so every priority
       *between* them is unchanged from the original file.
   Do not "simplify" `:where()` away; it is load-bearing. */

.nx-seo {
  --bg: #080a0f;
  --bg2: #0f1423;
  --emerald: #45F882;
  --gold: #FFBE18;
  --txt: #eaf0f5;
  --muted: rgba(234, 240, 245, .62);
  --line: rgba(255, 255, 255, .1);
  background: var(--bg);
  color: var(--txt);
  font-family: 'Inter', system-ui, sans-serif;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
.nx-seo :where(*) { box-sizing: border-box; margin: 0; padding: 0; }
.nx-seo :where(h1, h2, h3) { font-family: 'Rajdhani', sans-serif; line-height: 1.2; }
.nx-seo :where(a) { color: inherit; text-decoration: none; }
.nx-seo :where(section) { padding: 60px 0; }

.nx-seo .wrap { max-width: 1180px; margin: 0 auto; padding: 0 24px; }
/* Bootstrap adds line-height:1.5 / text-align / user-select to .btn. Only the
   line-height is visible, so it is restored to the body's 1.7 rather than left
   to Bootstrap. */
.nx-seo .btn { display: inline-block; background: linear-gradient(135deg, var(--emerald), #2fd06a); color: #04120a; font-weight: 700; line-height: 1.7; padding: 14px 28px; border-radius: 12px; font-family: 'Rajdhani', sans-serif; font-size: 18px; transition: .2s; border: none; cursor: pointer; }
.nx-seo .btn:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(69, 248, 130, .3); }
.nx-seo .btn.ghost { background: transparent; border: 1px solid var(--emerald); color: var(--emerald); }
.nx-seo .btn.gold { background: linear-gradient(135deg, var(--gold), #e0a800); color: #1a1200; }

.nx-seo .hero { position: relative; padding: 90px 0 70px; background: radial-gradient(circle at 30% 30%, rgba(69, 248, 130, .1), transparent 45%), radial-gradient(circle at 75% 40%, rgba(98, 64, 207, .14), transparent 45%), linear-gradient(180deg, var(--bg2), var(--bg)); }
.nx-seo .hero.gold-hero { background: radial-gradient(circle at 30% 30%, rgba(255, 190, 24, .12), transparent 45%), radial-gradient(circle at 75% 40%, rgba(98, 64, 207, .14), transparent 45%), linear-gradient(180deg, var(--bg2), var(--bg)); }
.nx-seo .hero h1 { font-size: clamp(34px, 6vw, 58px); margin-bottom: 16px; }
.nx-seo .hero h1 span { color: var(--emerald); }
.nx-seo .hero.gold-hero h1 span { color: var(--gold); }
/* Bootstrap's .lead is font-weight:300; the original inherited the body's 400. */
.nx-seo .hero p.lead { font-size: 19px; font-weight: 400; color: var(--muted); max-width: 660px; margin-bottom: 28px; }

.nx-seo .badges { display: flex; flex-wrap: wrap; gap: 12px; margin: 26px 0; }
/* font-weight / line-height / white-space are restatements of the pre-Bootstrap
   defaults, which Bootstrap's own .badge would otherwise supply.

   `position` belongs to that same list and was the one it missed. The theme's own
   .badge (assets/css/style.css) is `position: absolute` because there it is a count
   bubble pinned to a cart icon. Inherited here it took all four pills out of the
   flex row and stacked them on the same static position, 151px wide and four deep —
   so the row the markup describes was never on screen, and the pile landed across
   the hero heading. Measured on /lol-rank-boost at 1280 the stacked borders put the
   worst pixel behind the title at 3.69:1; nothing about the artwork or its scrim was
   involved. Back in flow they are a row of four, and the heading has only the banner
   behind it again. */
.nx-seo .badge { position: static; background: rgba(255, 255, 255, .04); border: 1px solid var(--line); border-radius: 30px; padding: 8px 16px; font-size: 13px; font-weight: 400; line-height: inherit; white-space: normal; color: var(--muted); }
.nx-seo .badge b { color: var(--emerald); }
.nx-seo .cta-row { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 8px; }

.nx-seo .eyebrow { color: var(--emerald); font-weight: 600; letter-spacing: .12em; text-transform: uppercase; font-size: 12px; margin-bottom: 10px; }
.nx-seo h2.sec { font-size: clamp(26px, 4vw, 40px); margin-bottom: 14px; }
.nx-seo .grid { display: grid; gap: 20px; }
.nx-seo .g3 { grid-template-columns: repeat(3, 1fr); }
.nx-seo .g4 { grid-template-columns: repeat(4, 1fr); }
.nx-seo .g2 { grid-template-columns: repeat(2, 1fr); }
/* display:block undoes Bootstrap's .card{display:flex;flex-direction:column}. */
.nx-seo .card { display: block; background: rgba(255, 255, 255, .03); border: 1px solid var(--line); border-radius: 16px; padding: 24px; }
.nx-seo .card h3 { font-size: 20px; margin-bottom: 8px; color: #fff; }
.nx-seo .card p { color: var(--muted); font-size: 15px; }
.nx-seo .card .ico { font-size: 26px; margin-bottom: 10px; }

.nx-seo .steps { counter-reset: s; }
.nx-seo .step { display: flex; gap: 16px; align-items: flex-start; padding: 16px 0; border-bottom: 1px solid var(--line); }
.nx-seo .step .n { flex: 0 0 40px; height: 40px; border-radius: 50%; background: rgba(69, 248, 130, .12); border: 1px solid var(--emerald); color: var(--emerald); display: flex; align-items: center; justify-content: center; font-family: 'Rajdhani'; font-weight: 700; }

.nx-seo .faq { border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-bottom: 12px; background: rgba(255, 255, 255, .02); }
.nx-seo .faq summary { padding: 18px 20px; cursor: pointer; font-family: 'Rajdhani'; font-weight: 600; font-size: 17px; color: #fff; list-style: none; display: flex; justify-content: space-between; }
.nx-seo .faq summary::-webkit-details-marker { display: none; }
.nx-seo .faq summary::after { content: '+'; color: var(--emerald); font-size: 22px; }
.nx-seo .faq[open] summary::after { content: '\2013'; }
.nx-seo .faq p { padding: 0 20px 18px; color: var(--muted); }

.nx-seo .ranks { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.nx-seo .rank { background: rgba(255, 255, 255, .04); border: 1px solid var(--line); border-radius: 8px; padding: 8px 14px; font-size: 14px; color: var(--muted); }
.nx-seo .pricegrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; margin-top: 20px; }
.nx-seo .price { background: rgba(255, 255, 255, .03); border: 1px solid var(--line); border-radius: 14px; padding: 20px; text-align: center; }
.nx-seo .price .amt { font-family: 'Rajdhani'; font-weight: 700; font-size: 26px; color: var(--emerald); }
.nx-seo .price .lbl { color: var(--muted); font-size: 14px; margin-top: 4px; }

.nx-seo .ctaband { background: linear-gradient(135deg, rgba(69, 248, 130, .12), rgba(98, 64, 207, .12)); border: 1px solid var(--line); border-radius: 20px; padding: 44px; text-align: center; }
.nx-seo .ctaband h2 { font-size: clamp(24px, 4vw, 36px); margin-bottom: 12px; }
.nx-seo .crumbs { font-size: 13px; color: var(--muted); padding: 16px 0; }
.nx-seo .crumbs a:hover { color: var(--emerald); }
.nx-seo .seo-text { color: var(--muted); font-size: 15px; }
.nx-seo .seo-text h2 { color: #fff; }
.nx-seo .seo-text a { color: var(--emerald); }

@media (max-width: 860px) {
  .nx-seo .g3, .nx-seo .g4, .nx-seo .g2 { grid-template-columns: 1fr; }
}
[dir=rtl] .nx-seo .step { flex-direction: row-reverse; text-align: right; }
[dir=rtl] .nx-seo .faq summary { flex-direction: row-reverse; }

/* Phase 7 accessibility / motion preferences. The reduced-motion block is scoped
   too: an unscoped `*` version here would re-declare a preference the site stack
   (nexus-motion.css) already owns for the whole page. */
.nx-seo :where(a, button, input, select, textarea):focus-visible { outline: 3px solid #45F882; outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
  .nx-seo :where(*), .nx-seo :where(*)::before, .nx-seo :where(*)::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}
