/*
Theme Name: NFL Lines (GeneratePress Child)
Theme URI: https://nfllines.com
Description: Child theme for GeneratePress 3.6.1. Versioned INDEPENDENTLY of the NFL Lines plugin — they are separate artifacts on separate release lines, which is what stops the number collisions. Carries the account/CTA zone in the nav bar and nothing else — the menu itself is a WP Menu the operator owns in Appearance → Menus, and all component styling comes from the plugin's design system (nfl-lines-ds.css). Deliberately thin.
Author: Black Ops Marketing LLC
Template: generatepress
Version: 3.0
Requires at least: 6.5
Requires PHP: 7.4
Text Domain: nfl-lines-gp
*/

/* ==========================================================================
 * THIS FILE IS INTENTIONALLY ALMOST EMPTY.
 *
 * The account/CTA zone reuses the plugin's shared primitives — .nfl-ds-btn,
 * .nfl-ds-btn--primary, .nfl-ds-btn--sm — which load on every page via
 * nfl-lines-ds.css. That is a ruling, not a shortcut: a second source of
 * button styling would recreate the exact drift v0.45.5 spent a whole ship
 * collapsing, and it would sit OUTSIDE that gate's glob, so nothing would
 * catch it.
 *
 * Rules below are ONLY for placement inside GP's nav bar — things the plugin
 * sheet has no opinion about because they concern the theme's own layout.
 * If you need a component here, add it to nfl-lines-ds.css instead.
 * ========================================================================== */

.nfl-gp-account {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
  padding: 0 10px;
}

.nfl-gp-account__link {
  color: inherit;
  text-decoration: none;
  font-weight: 600;
  font-size: 0.92rem;
  white-space: nowrap;
}

.nfl-gp-account__link:hover { text-decoration: underline; }

/* The account menu is a <details> so it needs no JavaScript — GP's own
   dropdown JS governs the WP menu, not this zone. */
.nfl-gp-account__menu { position: relative; }

.nfl-gp-account__summary {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  cursor: pointer;
  list-style: none;
  font-weight: 600;
  font-size: 0.92rem;
  white-space: nowrap;
}

.nfl-gp-account__summary::-webkit-details-marker { display: none; }
.nfl-gp-account__summary::marker { content: ''; }

.nfl-gp-account__avatar {
  width: 24px;
  height: 24px;
  border-radius: var(--nfl-radius-pill, 999px);
  vertical-align: middle;
}

.nfl-gp-account__chevron {
  width: 7px;
  height: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  transition: transform 0.15s ease;
}

.nfl-gp-account__menu[open] .nfl-gp-account__chevron { transform: rotate(-135deg); }

.nfl-gp-account__dropdown {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  z-index: 200;
  min-width: 190px;
  margin: 0;
  padding: 6px;
  list-style: none;
  background: var(--nfl-card-bg, #fff);
  border: 1px solid var(--nfl-card-border, #e6e8ec);
  border-radius: var(--nfl-radius-card, 12px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}

.nfl-gp-account__dropdown a {
  display: block;
  padding: 8px 12px;
  border-radius: var(--nfl-radius-control, 9px);
  color: var(--nfl-text, #111827);
  text-decoration: none;
  font-size: 0.9rem;
  white-space: nowrap;
}

.nfl-gp-account__dropdown a:hover { background: var(--nfl-page-bg, #fafafa); }

/* Mobile: the same zone renders inside GP's mobile menu bar, where the
   dropdown becomes a plain stacked list rather than a floating panel. */
@media (max-width: 768px) {
  .nfl-gp-account { padding: 8px 12px; width: 100%; }
  .nfl-gp-account__dropdown { position: static; box-shadow: none; min-width: 0; }
}

/* ==========================================================================
 * PRIMARY NAV — ONE ROW  (v0.45.7b.1)
 *
 * Operator-verified fix: the ruled bar plus the account/CTA zone had the
 * primary nav at its width limit, and the dropdown caret GP renders on
 * ANALYSIS was the last straw — the whole bar wrapped to a second row.
 *
 * WHY CSS AND NOT A SETTING: GeneratePress FREE exposes no menu-padding
 * control. Location, drop point, dropdown behaviour and direction are the
 * whole Primary Navigation panel; padding lives in GP PREMIUM's Spacing
 * module, which this build deliberately does not use (.53 — free GP, thinnest
 * CSS to fight). So the lever is here.
 *
 * WHY IT LIVES IN THE CHILD THEME: it was tested in Customizer → Additional
 * CSS, which stores in the DATABASE — it would not travel with this zip, is
 * not in version control, and the runbook's Studio harvest would not carry it
 * to the live site at cutover. Operator: delete the Additional CSS copy so
 * this file is the single source.
 *
 * WHY NOT IN nfl-lines-ds.css: these are GP's own selectors, not design-system
 * primitives. A nav-specific value in the shared token layer is exactly the
 * drift the v0.45.5 cross-surface gate exists to catch, and the theme sits
 * outside that gate's glob.
 *
 * TUNING: 12px was the tested value. Lower (10, 8) if the bar wraps again
 * after menu items are added; below ~8px the items stop reading as separate
 * links. Raise to 14-16 if it looks cramped on a wide screen.
 * ========================================================================== */

.main-navigation .main-nav ul li a {
  padding-left: 12px;
  padding-right: 12px;
}

/* The account chip + Build button share the bar via generate_menu_bar_items.
   They had already wrapped to their own line before the caret existed, so the
   zone gives back a little room too. */
.main-navigation .menu-bar-items {
  margin-left: 8px;
}


/* ==========================================================================
 * THE SITE FOOTER  (v0.46.25.2)
 * ==========================================================================
 * ⛔ THIS BLOCK IS THE EXCEPTION TO THIS FILE'S OWN RULE, AND IT IS DELIBERATE.
 *
 * Everything else here is placement only, because component styling comes from
 * the plugin's design system and a second source of it would recreate the drift
 * v0.45.5 spent a ship collapsing. The footer is different for one reason: it
 * WRAPS EVERY PAGE, including pages served when the plugin is deactivated. If
 * it borrowed .nfl-ds-* for its own layout, switching the plugin off would
 * leave a bare stack of blue links where the footer used to be.
 *
 * "Renders unstyled when the plugin is off" is a worse answer than "renders
 * plainly". So these rules are SELF-CONTAINED — every colour and space has a
 * literal fallback, and the --nfl-* tokens are used only as the preferred
 * value. Plugin on: the footer matches the site. Plugin off: it still reads as
 * a footer. That is the whole point of the footer living in the theme.
 * ========================================================================== */

/* ⛔ v0.46.25.3 — THE FOOTER WRAPPED, AND IT IS THE WIDTH BUG AGAIN.
 *
 * The About column dropped to a second row with the right half of the footer
 * empty, and the two that fitted were squeezed left in a container wide enough
 * for four. That is Frame Law 3 in the theme — a full-width band with
 * partial-width content — and the LAWS APPLY TO THIS HALF TOO.
 *
 * TWO CAUSES, and the first is the one that has cost this project five cuts:
 *
 * 1. GeneratePress renders its credits area as a FLEX CONTAINER, so this block
 *    was a flex ITEM and shrink-wrapped to its content. max-width:1200px does
 *    nothing to a box that never grew — "everything inside a shrink-wrapped box
 *    is 100% of a box that already collapsed". It is exactly what .nfl-ds-main
 *    fixes on five plugin surfaces, and the same three declarations fix it here.
 *
 * 2. repeat(auto-fit, minmax(190px, 1fr)) then fitted as many 190px tracks as
 *    the COLLAPSED width allowed — two — and wrapped the third. auto-fit is for
 *    a grid whose column COUNT is unknown. This one is three, ruled, always.
 *    Naming the count removes the guess.
 */
.nfl-gp-foot {
  width: 100%;
  min-width: 0;
  flex: 1 1 auto;
  max-width: 1200px;
  margin: 0 auto;
  padding: 8px 20px 4px;
  text-align: left;
}

.nfl-gp-foot__cols {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--nfl-gap-6, 20px);
  margin: 0 0 18px;
}

.nfl-gp-foot__head {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin: 0 0 8px;
  opacity: 0.75;
}

.nfl-gp-foot__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nfl-gp-foot__list li { margin: 0 0 5px; }

.nfl-gp-foot__list a {
  text-decoration: none;
  font-size: 0.92rem;
  color: inherit;
  opacity: 0.85;
}

.nfl-gp-foot__list a:hover { opacity: 1; text-decoration: underline; }

/* The disclaimer. It stays on every page — the site publishes picks against
   betting lines. */
.nfl-gp-foot__legal {
  margin: 0;
  padding: 12px 0 0;
  border-top: 1px solid currentColor;
  font-size: 0.82rem;
  opacity: 0.7;
}

/* Three across down to tablet, then two, then one. STACKING ONLY AT PHONE
   WIDTH — the ruling — and never a partial row above it. */
@media (max-width: 860px) {
  .nfl-gp-foot__cols { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
  .nfl-gp-foot { padding: 8px 14px 4px; }
  .nfl-gp-foot__cols { grid-template-columns: 1fr; gap: 16px; }
}

/* ==========================================================================
 * ARCHIVES  (v0.46.25.2)
 * ==========================================================================
 * The post CARDS are the plugin's — .nfl-ds-postgrid and .nfl-ds-media come
 * from nfl-lines-ds.css, which loads on every front-end request including a
 * category archive (Assets::enqueue hooks wp_enqueue_scripts with no page
 * gate; only the chart scripts are gated). Verified before reuse.
 *
 * What is left here is the page SHELL — width, header, pagination — which is
 * the theme's own layout and has no design-system equivalent.
 * ========================================================================== */

.nfl-gp-archive__container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 1.5rem 1rem 3rem;
}

.nfl-gp-archive__header { margin: 0 0 18px; }

.nfl-gp-archive__title {
  font-size: clamp(1.5rem, 3vw, 2.1rem);
  line-height: 1.15;
  letter-spacing: -0.015em;
  margin: 0;
}

.nfl-gp-archive__lede {
  color: var(--nfl-text-muted, #6b7280);
  max-width: 68ch;
  margin: 8px 0 0;
}

.nfl-gp-archive__empty { margin: 24px 0; }

.nfl-gp-archive__pagination { margin: 28px 0 0; }
