/* ============================================================
   agency.css — Editorial / agency-grade extensions to app.css.
   Story-driven home page. Keep the chromatic identity intact.
   ============================================================ */

/* ============================================================
   LIVE TICKER — top of page, ultra-thin info strip
   ============================================================ */
.live-ticker { position: relative; z-index: 50; background: var(--color-near-black); color: rgba(255,255,255,0.78); border-bottom: 1px solid rgba(255,255,255,0.08); }
.live-ticker .lt-inner { display: flex; align-items: center; gap: 24px; padding: 10px 28px; font-family: var(--font-mono, "JetBrains Mono", monospace); font-size: 11px; letter-spacing: 0.06em; }
.live-ticker .lt-pulse { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--color-wise-green); box-shadow: 0 0 0 4px rgba(159,232,112,0.18); animation: ltpulse 1.6s ease-out infinite; }
@keyframes ltpulse { 0% { box-shadow: 0 0 0 0 rgba(159,232,112,0.35); } 70% { box-shadow: 0 0 0 8px rgba(159,232,112,0); } 100% { box-shadow: 0 0 0 0 rgba(159,232,112,0); } }
.live-ticker .lt-k { color: rgba(255,255,255,0.4); margin-right: 6px; text-transform: uppercase; letter-spacing: 0.12em; }
.live-ticker .lt-v { color: #fff; }
.live-ticker .lt-grow { margin-left: auto; }
.live-ticker .lt-dot { color: rgba(255,255,255,0.25); }
@media (max-width: 720px) {
  .live-ticker .lt-inner { gap: 12px; padding: 8px 16px; font-size: 10px; overflow-x: auto; white-space: nowrap; }
}

/* ============================================================
   CURSOR LABEL — "view", "give", "explore" beside the cursor ring
   ============================================================ */
.cursor-label { position: fixed; top: 0; left: 0; pointer-events: none; z-index: 9999; transform: translate(-50%, -50%); padding: 6px 12px; background: var(--color-near-black); color: var(--color-wise-green); border-radius: 9999px; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; opacity: 0; transition: opacity 200ms var(--ease-out); }
.cursor-label.show { opacity: 1; }

/* ============================================================
   CHAPTER MARKERS — story scaffold
   ============================================================ */
.chapter { padding: 140px 0 120px; position: relative; }
@media (max-width: 720px) { .chapter { padding: 80px 0 64px; } }

.ch-head { display: grid; grid-template-columns: 220px 1fr; gap: 64px; align-items: start; margin-bottom: 64px; padding-bottom: 32px; border-bottom: 1px solid var(--color-near-black); }
.ch-num { font-family: var(--font-display); font-weight: 900; font-size: 14px; letter-spacing: 0.16em; color: var(--color-positive); }
.ch-num .roman { display: block; font-size: 80px; line-height: 0.86; letter-spacing: -3px; color: var(--fg-1); margin-top: 8px; letter-spacing: 0; font-feature-settings: "calt" 1; }
.ch-title { font-family: var(--font-display); font-weight: 900; font-size: clamp(40px, 5.6vw, 88px); line-height: 0.9; letter-spacing: -2.6px; margin: 0; text-wrap: balance; }
.ch-lede { font-size: 18px; line-height: 1.45; color: var(--fg-2); font-weight: 500; max-width: 640px; margin-top: 28px; }
@media (max-width: 920px) {
  .ch-head { grid-template-columns: 1fr; gap: 16px; }
  .ch-num .roman { font-size: 56px; }
}

/* ============================================================
   SIDE ANNOTATIONS — footnotes, asides, margin notes
   ============================================================ */
.note { display: grid; grid-template-columns: 220px 1fr; gap: 64px; align-items: start; margin: 64px 0; }
.note-aside { padding: 18px 0; border-top: 1px solid var(--color-near-black); border-bottom: 1px solid var(--color-near-black); }
.note-aside .nk { font-family: var(--font-display); font-weight: 900; font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-positive); }
.note-aside .nv { font-size: 12px; color: var(--fg-2); line-height: 1.5; margin-top: 8px; font-weight: 500; }
.note-aside .ns { display: block; font-family: var(--font-display); font-size: 22px; font-weight: 900; letter-spacing: -0.6px; line-height: 1; color: var(--fg-1); margin-top: 10px; }
.note-body { max-width: 720px; }
.note-body p { font-size: 18px; line-height: 1.5; color: var(--fg-1); font-weight: 500; margin: 0 0 20px; text-wrap: pretty; }
.note-body p:last-child { margin-bottom: 0; }
.note-body p .pull { background: var(--color-wise-green); padding: 0 6px; border-radius: 4px; }
.note-body p .underline { background-image: linear-gradient(120deg, var(--color-wise-green) 0%, var(--color-wise-green) 100%); background-repeat: no-repeat; background-size: 100% 0.34em; background-position: 0 88%; padding: 0 2px; }
@media (max-width: 920px) {
  .note { grid-template-columns: 1fr; gap: 24px; }
  .note-body p { font-size: 16px; }
  /* avoid oversized opening paragraphs */
  .note-body p.opening { font-size: 16px; }
}


/* ============================================================
   HUGE EDITORIAL DROP-CAP / opening graf
   ============================================================ */
.opening { font-family: var(--font-display); font-weight: 900; font-size: clamp(36px, 4.6vw, 64px); line-height: 0.96; letter-spacing: -1.8px; margin: 0; text-wrap: pretty; }
.opening::first-letter { font-size: 1.6em; line-height: 0.9; padding-right: 0.08em; }

/* ============================================================
   ROTATING WORD — hero descriptor cycles
   ============================================================ */
.rotator { display: inline-flex; align-items: baseline; vertical-align: baseline; }
.rotator-slot { display: inline-block; position: relative; overflow: hidden; height: 1em; min-width: 200px; vertical-align: bottom; }
.rotator-slot .opt { position: absolute; inset: 0; opacity: 0; transform: translateY(100%); transition: opacity 500ms var(--ease-out), transform 500ms var(--ease-out); white-space: nowrap; }
.rotator-slot .opt.active { opacity: 1; transform: translateY(0); }
.rotator-slot .opt.out { opacity: 0; transform: translateY(-100%); }

/* ============================================================
   STAT CARD primitives — agency-density numbers
   ============================================================ */
.stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border-top: 1px solid var(--color-near-black); border-bottom: 1px solid var(--color-near-black); }
.stat-row > div { padding: 32px; border-right: 1px solid var(--border-subtle); }
.stat-row > div:last-child { border-right: 0; }
.stat-row .k { font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fg-3); margin-bottom: 14px; }
.stat-row .v { font-family: var(--font-display); font-weight: 900; font-size: clamp(36px, 4vw, 56px); line-height: 0.86; letter-spacing: -1.6px; }
.stat-row .vs { font-size: 13px; font-weight: 500; color: var(--fg-2); margin-top: 8px; line-height: 1.4; }
@media (max-width: 720px) {
  .stat-row { grid-template-columns: 1fr 1fr; }
  .stat-row > div { border-bottom: 1px solid var(--border-subtle); }
  .stat-row > div:nth-child(2) { border-right: 0; }
}

/* ============================================================
   ASYMMETRIC SPLIT — editorial 2-column with offset
   ============================================================ */
.split { display: grid; grid-template-columns: 5fr 7fr; gap: 80px; align-items: start; }
.split.flip { grid-template-columns: 7fr 5fr; }
.split.tight { gap: 48px; }
@media (max-width: 920px) { .split, .split.flip { grid-template-columns: 1fr; gap: 32px; } }

/* ============================================================
   PROCESS DIAGRAM — pixel → oxygen visual
   ============================================================ */
.pixel-flow { padding: 80px 0; }
.pixel-flow .stage { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; gap: 24px; align-items: center; padding: 56px 0; }
.pixel-flow .node { aspect-ratio: 1; max-width: 140px; border-radius: 50%; background: var(--bg-2); display: flex; align-items: center; justify-content: center; flex-direction: column; padding: 16px; transition: background 240ms var(--ease-out); }
.pixel-flow .node:hover { background: var(--color-light-mint); }
.pixel-flow .node svg { width: 48px; height: 48px; stroke: var(--fg-1); }
.pixel-flow .node .nl { font-size: 10px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-3); margin-top: 10px; text-align: center; }
.pixel-flow .arrow { color: var(--color-positive); font-size: 24px; }
.pixel-flow .node.end { background: var(--color-wise-green); }
.pixel-flow .node.end svg { stroke: var(--color-dark-green); }
.pixel-flow .node.end .nl { color: var(--color-dark-green); font-weight: 900; }
@media (max-width: 920px) {
  .pixel-flow .stage { grid-template-columns: 1fr; gap: 0; padding: 24px 0; }
  .pixel-flow .arrow { transform: rotate(90deg); padding: 16px 0; }
}

/* ============================================================
   PROGRAM SHOWCASE — horizontal sticky beats
   ============================================================ */
.beats { display: grid; grid-template-columns: 1fr; gap: 0; }
.beat { padding: 96px 0; border-top: 1px solid var(--color-near-black); display: grid; grid-template-columns: 220px 1fr; gap: 64px; align-items: start; }
.beat:last-child { border-bottom: 1px solid var(--color-near-black); }
.beat-num { font-family: var(--font-display); font-weight: 900; font-size: clamp(56px, 8vw, 140px); line-height: 0.86; letter-spacing: -3px; color: var(--color-positive); }
.beat-num small { display: block; font-family: var(--font-body); font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fg-3); margin-top: 12px; }
.beat-body h3 { font-family: var(--font-display); font-weight: 900; font-size: clamp(36px, 5vw, 64px); line-height: 0.92; letter-spacing: -2px; margin: 0; text-wrap: balance; }
.beat-body p { font-size: 18px; line-height: 1.5; color: var(--fg-2); font-weight: 500; margin: 24px 0 0; max-width: 720px; text-wrap: pretty; }
.beat-body .meta { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 8px; }
.beat-body .meta span { font-size: 12px; font-weight: 600; padding: 6px 12px; background: var(--bg-2); border-radius: 9999px; color: var(--fg-2); }
@media (max-width: 920px) { .beat { grid-template-columns: 1fr; gap: 16px; padding: 56px 0; } .beat-num { font-size: 56px; } }

/* ============================================================
   QUOTE BREAK — full-bleed dark band
   ============================================================ */
.quote-band { padding: 140px 0; background: var(--color-near-black); color: #fff; text-align: center; margin: 80px 0; border-radius: 40px; }
.quote-band .mark-q { font-family: var(--font-display); font-weight: 900; font-size: 200px; line-height: 0.6; color: var(--color-wise-green); margin: 0 0 -40px; }
.quote-band blockquote { font-family: var(--font-display); font-weight: 900; font-size: clamp(44px, 6vw, 96px); line-height: 0.96; letter-spacing: -2.6px; max-width: 1100px; margin: 0 auto; color: #fff; text-wrap: balance; padding: 0 24px; }
.quote-band cite { display: block; margin-top: 56px; font-style: normal; font-size: 12px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-wise-green); }
@media (max-width: 720px) {
  .quote-band { padding: 80px 24px; }
  .quote-band .mark-q { font-size: 120px; margin-bottom: -24px; }
}

/* ============================================================
   EVIDENCE GRID — projects as evidence
   ============================================================ */
.evidence { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; }
.ev { padding: 28px; border-radius: 24px; background: var(--bg-2); display: flex; flex-direction: column; min-height: 220px; transition: background 240ms var(--ease-out), transform 240ms; cursor: none; }
.ev:hover { background: var(--color-light-mint); transform: translateY(-4px); }
.ev .ev-pre { font-family: var(--font-mono, monospace); font-size: 11px; letter-spacing: 0.06em; color: var(--color-positive); margin-bottom: 14px; }
.ev .ev-name { font-family: var(--font-display); font-weight: 900; font-size: 24px; line-height: 1; letter-spacing: -0.8px; }
.ev .ev-desc { font-size: 12px; color: var(--fg-2); margin: 12px 0 auto; line-height: 1.45; font-weight: 500; }
.ev .ev-foot { padding-top: 16px; margin-top: 16px; border-top: 1px solid var(--border-subtle); display: flex; justify-content: space-between; font-size: 11px; color: var(--fg-3); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.ev.span-4 { grid-column: span 4; }
.ev.span-5 { grid-column: span 5; }
.ev.span-6 { grid-column: span 6; }
.ev.span-7 { grid-column: span 7; }
.ev.span-8 { grid-column: span 8; }
.ev.dark { background: var(--color-near-black); color: #fff; }
.ev.dark .ev-name { color: #fff; }
.ev.dark .ev-desc { color: rgba(255,255,255,0.65); }
.ev.dark .ev-foot { color: rgba(255,255,255,0.45); border-top-color: rgba(255,255,255,0.16); }
.ev.dark:hover { background: #1a1d18; }
.ev.green { background: var(--color-wise-green); color: var(--color-dark-green); }
.ev.green .ev-name, .ev.green .ev-pre { color: var(--color-dark-green); }
.ev.green:hover { background: #b6f48d; }
.ev.featured .ev-name { font-size: 36px; letter-spacing: -1.2px; }
@media (max-width: 920px) {
  .evidence { grid-template-columns: 1fr 1fr; }
  .ev.span-4, .ev.span-5, .ev.span-6, .ev.span-7, .ev.span-8 { grid-column: span 1; }
  .ev.featured { grid-column: span 2; }
}

/* ============================================================
   VISION PROGRESS — 2026 → 2035 horizontal time bar
   ============================================================ */
.vision-line { padding: 64px 0; }
.vision-line .vl { position: relative; padding: 64px 0; }
.vision-line .vl-track { position: relative; height: 2px; background: var(--border-subtle); }
.vision-line .vl-track::after { content: ""; position: absolute; left: 0; top: 0; height: 100%; width: var(--vl-progress, 25%); background: var(--color-wise-green); transition: width 300ms var(--ease-out); }
.vision-line .vl-nodes { display: grid; grid-template-columns: repeat(4, 1fr); position: absolute; top: -22px; left: 0; right: 0; }
.vision-line .vl-node { display: flex; flex-direction: column; align-items: flex-start; cursor: none; }
.vision-line .vl-node:last-child { align-items: flex-end; }
.vision-line .vl-node .dot { width: 12px; height: 12px; border-radius: 50%; background: var(--bg-1); border: 2px solid var(--fg-1); transition: background 200ms, transform 200ms; }
.vision-line .vl-node.passed .dot, .vision-line .vl-node.active .dot { background: var(--color-wise-green); border-color: var(--color-wise-green); transform: scale(1.2); }
.vision-line .vl-node .y { font-family: var(--font-display); font-weight: 900; font-size: 20px; letter-spacing: -0.6px; margin-top: 16px; }
.vision-line .vl-node .lbl { font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-3); margin-top: 4px; max-width: 180px; text-wrap: balance; }
.vision-line .vl-node.active .lbl { color: var(--color-positive); }
@media (max-width: 720px) {
  .vision-line .vl-nodes { grid-template-columns: 1fr; gap: 32px; position: static; }
}

/* ============================================================
   EPILOGUE — big closing type
   ============================================================ */
.epilogue { padding: 160px 0 80px; text-align: center; }
.epilogue .pre { font-family: var(--font-mono, monospace); font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-positive); margin-bottom: 32px; }
.epilogue h2 { font-family: var(--font-display); font-weight: 900; font-size: clamp(64px, 10vw, 200px); line-height: 0.84; letter-spacing: -6px; margin: 0; text-wrap: balance; }
.epilogue h2 .accent { color: var(--color-positive); }
.epilogue h2 mark { background: var(--color-wise-green); color: var(--color-near-black); padding: 0 12px; border-radius: 8px; }
.epilogue .actions { display: inline-flex; gap: 16px; margin-top: 64px; flex-wrap: wrap; justify-content: center; }
.epilogue .actions a { padding: 22px 38px; border-radius: 9999px; font-weight: 700; font-size: 18px; text-decoration: none; display: inline-flex; align-items: center; gap: 8px; cursor: none; transition: transform 160ms var(--ease-out); }
.epilogue .actions a.primary { background: var(--color-wise-green); color: var(--color-dark-green); }
.epilogue .actions a.secondary { background: var(--color-near-black); color: var(--color-wise-green); }
.epilogue .actions a.ghost { background: transparent; color: var(--fg-1); border: 1px solid var(--color-near-black); }
.epilogue .actions a:hover { transform: scale(1.04); }

/* ============================================================
   AGENCY MARQUEE — facts not partners
   ============================================================ */
.fact-mq { background: var(--color-near-black); color: #fff; padding: 32px 0; overflow: hidden; margin: 0; border-radius: 0; }
.fact-mq-track { display: flex; gap: 0; white-space: nowrap; animation: mq 50s linear infinite; align-items: center; }
.fact-mq-track .item { display: inline-flex; align-items: center; gap: 24px; padding: 0 36px; font-family: var(--font-display); font-weight: 900; font-size: 24px; letter-spacing: -0.4px; }
.fact-mq-track .item .badge { display: inline-flex; align-items: center; padding: 4px 10px; background: var(--color-wise-green); color: var(--color-dark-green); border-radius: 9999px; font-family: var(--font-body); font-weight: 700; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; }
.fact-mq-track .sep { display: inline-block; color: var(--color-wise-green); font-size: 12px; padding: 0 8px; }

/* ============================================================
   CINEMATIC SCROLL ZOOM — opening hero scales as you scroll
   ============================================================ */
.zoom-stage { transform-origin: center top; will-change: transform; }

/* Hero specific */
.story-hero { padding: 100px 0 140px; position: relative; }
.story-hero .badges { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 48px; }
.story-hero .badge-info { display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px; background: var(--bg-2); border-radius: 9999px; font-size: 12px; font-weight: 700; letter-spacing: 0.04em; color: var(--fg-1); }
.story-hero .badge-info.dark { background: var(--color-near-black); color: #fff; }
.story-hero .badge-info .pulse { width: 6px; height: 6px; border-radius: 50%; background: var(--color-wise-green); animation: ltpulse 1.6s ease-out infinite; }
.story-hero .badge-info .chip { padding: 2px 8px; background: var(--color-wise-green); color: var(--color-dark-green); border-radius: 9999px; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }

.story-hero h1 { font-family: var(--font-display); font-weight: 900; font-size: clamp(80px, 13vw, 280px); line-height: 0.82; letter-spacing: -8px; margin: 0; text-wrap: balance; font-feature-settings: "calt" 1; }
.story-hero h1 .accent { color: var(--color-positive); }
.story-hero h1 .leaf { display: inline-block; vertical-align: text-top; margin-left: 0.04em; }

.story-hero .sub-line { display: grid; grid-template-columns: 1fr auto; gap: 64px; margin-top: 56px; align-items: end; }
.story-hero .sub-line p { font-family: var(--font-display); font-weight: 900; font-size: clamp(24px, 2.6vw, 40px); line-height: 1.04; letter-spacing: -1px; margin: 0; max-width: 720px; }
.story-hero .sub-line .right { text-align: right; }
.story-hero .sub-line .right .y { font-family: var(--font-display); font-weight: 900; font-size: 80px; line-height: 0.86; letter-spacing: -3px; color: var(--color-positive); }
.story-hero .sub-line .right .ylabel { font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--fg-3); margin-top: 6px; }

@media (max-width: 720px) {
  .story-hero h1 { font-size: 64px; letter-spacing: -3px; }
  .story-hero .sub-line { grid-template-columns: 1fr; gap: 24px; }
  .story-hero .sub-line p { font-size: 22px; }
}

/* ============================================================
   ANNOTATION FOR PROCESS DIAGRAM "PIXEL → OXIGEN"
   ============================================================ */
.flow-arc { padding: 100px 0; }
.flow-arc .frame { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1fr; gap: 20px; align-items: stretch; }
.flow-arc .step { padding: 28px; border-radius: 24px; background: var(--bg-2); display: flex; flex-direction: column; gap: 14px; }
.flow-arc .step .ico { width: 44px; height: 44px; border-radius: 12px; background: var(--bg-1); display: flex; align-items: center; justify-content: center; color: var(--fg-1); }
.flow-arc .step .ico svg { width: 22px; height: 22px; }
.flow-arc .step h4 { font-family: var(--font-display); font-weight: 900; font-size: 19px; line-height: 1; letter-spacing: -0.5px; margin: 0; }
.flow-arc .step p { font-size: 12px; line-height: 1.45; color: var(--fg-2); margin: 0; font-weight: 500; }
.flow-arc .step.first .ico { background: var(--color-near-black); color: var(--color-wise-green); }
.flow-arc .step.last { background: var(--color-wise-green); color: var(--color-dark-green); }
.flow-arc .step.last .ico { background: var(--color-dark-green); color: var(--color-wise-green); }
.flow-arc .step.last h4 { color: var(--color-dark-green); }
.flow-arc .step.last p { color: rgba(22,51,0,0.78); }
@media (max-width: 920px) { .flow-arc .frame { grid-template-columns: 1fr 1fr; } }

/* ============================================================
   UNESCO LARGE FEATURE (used on home + parteneri)
   ============================================================ */
.unesco-feature { background: var(--color-near-black); color: #fff; border-radius: 40px; padding: 96px 64px; display: grid; grid-template-columns: 1.2fr 1fr; gap: 80px; align-items: center; position: relative; overflow: hidden; }
.unesco-feature::before { content: ""; position: absolute; top: -250px; left: -250px; width: 700px; height: 700px; background: radial-gradient(circle, rgba(159,232,112,0.14), transparent 60%); pointer-events: none; }
.unesco-feature .ucol h2 { font-family: var(--font-display); font-weight: 900; font-size: clamp(40px, 5.6vw, 80px); line-height: 0.92; letter-spacing: -2.6px; margin: 16px 0 24px; color: #fff; position: relative; text-wrap: balance; }
.unesco-feature .ucol h2 .accent { color: var(--color-wise-green); }
.unesco-feature .ucol p { font-size: 16px; line-height: 1.55; color: rgba(255,255,255,0.7); margin: 0 0 32px; max-width: 480px; position: relative; }
.unesco-feature .pillz { display: flex; gap: 8px; flex-wrap: wrap; position: relative; }
.unesco-feature .pillz span { padding: 6px 12px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.14); border-radius: 9999px; font-size: 12px; font-weight: 600; color: rgba(255,255,255,0.85); }
.unesco-feature .ubadge { position: relative; aspect-ratio: 1; display: flex; align-items: center; justify-content: center; }
@media (max-width: 920px) {
  .unesco-feature { grid-template-columns: 1fr; padding: 48px 28px; gap: 32px; }
}

/* ============================================================
   GLITCH/MORPH on hero word "pixelii"
   ============================================================ */
.glitch-target { display: inline-block; position: relative; }
.glitch-target::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0.1em; height: 0.1em; background: var(--color-wise-green); transform: scaleX(0); transform-origin: left; transition: transform 1200ms var(--ease-out); }
.glitch-target.is-in::after { transform: scaleX(1); }

/* Section transition fade */
.story-section { opacity: 0; transform: translateY(24px); transition: opacity 800ms var(--ease-out), transform 800ms var(--ease-out); }
.story-section.in { opacity: 1; transform: none; }

/* ============================================================
   FOOTER override: bigger, more agency
   ============================================================ */
.gv-footer { margin-top: 0; border-radius: 40px 40px 0 0; }
