/* ===================================================================
   Championships -- the stadium and the eligibility panels.

   Generated from the supplied Zinga_Championship_Sections package by
   scratchpad/champ_build.py. Edit the package and re-run rather than
   patching this file by hand.

   Four mechanical changes, nothing else touched:

     1. The package's three @font-face blocks are dropped and
        Anton / ZingaText mapped to --display / --body. They
        bundle Nimbus Sans and Nimbus Sans Narrow as a stand-in
        condensed heading and body face; the site already serves those
        two roles as Barlow Condensed and Barlow. This also removes the
        sheet's only relative url(), which build.mjs rejects.
     2. Asset urls are absolute and namespaced champ-*, and the PNG
        masters are WebP -- 9.5MB of source art down to 506KB at the
        sizes these actually paint.
     3. The .zc-motion pause control is gone, here and in the markup:
        no page on this site carries a manual motion toggle. The
        confetti still stops for reduced motion, a hidden tab and an
        off-screen section.
     4. An isolation block is appended for the site rules that reach in.
   =================================================================== */

.zc-sections{--zc-blue:#0062ff;--zc-navy:#00142c;--zc-cyan:#42c9ff;color:#00142c;font-family:var(--body);font-size:16px;line-height:1.5;isolation:isolate}
.zc-sections *{box-sizing:border-box}
.zc-sections h2,.zc-sections h3,.zc-sections p,.zc-sections figure{margin:0}
.zc-sections button,.zc-sections a{-webkit-tap-highlight-color:transparent}
.zc-sections button{font:inherit}
.zc-sections :focus-visible{outline:3px solid #42c9ff;outline-offset:6px}
.zc-stadium{position:relative;isolation:isolate;overflow:hidden;background:#00142c;color:white;aspect-ratio:1466/1073;container-type:inline-size}
.zc-stadium__backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-3;pointer-events:none}
.zc-stadium::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,10,26,.18),transparent 28%,transparent 86%,rgba(1,13,32,.35));z-index:-2;pointer-events:none}
.zc-stadium__intro{position:absolute;top:5.6%;left:9.2%;right:9%;display:grid;grid-template-columns:1fr 1fr;gap:3.2%;align-items:center;z-index:5}
.zc-eyebrow{font-family:var(--ds-ui);font-weight:600;font-size:var(--ds-eyebrow);letter-spacing:.14em;line-height:1.25;color:var(--zc-cyan);text-transform:uppercase;}
.zc-stadium h2{font-family:var(--ds-display);font-weight:400;font-size:var(--ds-title);line-height:1.1;letter-spacing:0;margin-top:.2em;}
.zc-stadium__intro>p{padding-left:6.2%;border-left:1px solid rgba(74,191,255,.65);font-size:var(--ds-copy);line-height:1.55;max-width:34em;text-shadow:0 2px 9px #00142c;}
.zc-trophy{position:absolute;bottom:28.7%;width:23%;height:49%;display:flex;align-items:flex-end;justify-content:center;perspective:1100px;z-index:3;outline:none;cursor:default}
.zc-trophy--dominion{left:12.1%;height:31.5%;bottom:29.5%}
.zc-trophy--eternal{left:37%;width:26%;height:57%;bottom:27.6%;z-index:4}
.zc-trophy--emperor{left:65.3%;width:23%;height:42.8%;bottom:28.4%}
.zc-trophy__art{position:relative;width:100%;height:100%;transform-origin:50% 97%;transition:transform .65s cubic-bezier(.2,.75,.2,1),filter .65s ease;filter:drop-shadow(0 0 8px rgba(94,182,255,.38)) drop-shadow(0 5px 8px rgba(0,0,0,.28));will-change:auto}
.zc-trophy__art img{width:100%;height:100%;object-fit:contain;object-position:center bottom;display:block;user-select:none;-webkit-user-drag:none}
.zc-trophy::before{content:"";position:absolute;inset:8% -12% -4%;background:radial-gradient(ellipse at 50% 70%,rgba(47,150,255,.14),transparent 64%);opacity:.85;pointer-events:none;transition:opacity .6s}
.zc-trophy::after{content:"";position:absolute;bottom:-1%;left:16%;right:16%;height:3%;border-radius:50%;background:#72c5ff;filter:blur(10px);opacity:.3;pointer-events:none;transition:opacity .6s}
@media(hover:hover){.zc-trophy:hover .zc-trophy__art{transform:translateY(-1.1%) scale(1.065);filter:brightness(1.12) drop-shadow(0 0 18px rgba(114,202,255,.65)) drop-shadow(0 8px 16px rgba(0,0,0,.2))}.zc-trophy:hover::before,.zc-trophy:hover::after{opacity:1}}
.zc-trophy:focus-visible .zc-trophy__art,.zc-trophy.is-active .zc-trophy__art{transform:translateY(-1.1%) scale(1.065);filter:brightness(1.12) drop-shadow(0 0 18px rgba(114,202,255,.65))}
.zc-trophy:focus-visible{outline:2px solid #63caff;outline-offset:8px;border-radius:10px}
.zc-caption{position:absolute;top:76.7%;width:27%;text-align:center;z-index:5;pointer-events:none;text-shadow:0 2px 5px #02101f}
.zc-caption--dominion{left:8.2%}.zc-caption--eternal{left:36.5%;top:76.6%}.zc-caption--emperor{left:64.6%}
.zc-caption h3{font-family:var(--ds-display);font-size:var(--ds-card);line-height:1.15;font-weight:400;}
.zc-caption span{display:block;color:#42c9ff;font-family:var(--display);letter-spacing:.25em;font-size:clamp(10px,1.22cqw,19px);margin-top:.5em}
.zc-consent{position:absolute;bottom:4%;left:12%;right:12%;display:flex;align-items:center;justify-content:center;gap:18px;z-index:5;font-size:clamp(11px,1.3cqw,20px);line-height:1.4;text-shadow:0 2px 5px #00142c}
.zc-consent svg{width:20px;height:30px;flex:none;stroke:#58ceff;fill:none;stroke-width:1.3}
.zc-confetti{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}


.zc-eligibility{background:radial-gradient(ellipse at 80% 72%,#e7f0ff 0,transparent 60%),#fff;padding:4.3% 5.3% 5%;display:grid;grid-template-columns:34% 1fr;gap:5%;align-items:center;container-type:inline-size}
.zc-eligibility .zc-eyebrow{font-family:var(--ds-ui);color:var(--zc-blue);font-size:var(--ds-eyebrow);font-weight:600;letter-spacing:.14em;}
.zc-eligibility h2{font-family:var(--ds-display);font-size:var(--ds-title);line-height:1.1;letter-spacing:0;margin:18px 0 34px;max-width:9em;}
.zc-cta{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:16px 23px;border-radius:5px;color:white;background:var(--zc-blue);text-decoration:none;font-size:clamp(15px,1.45cqw,21px);font-weight:700;width:100%;max-width:350px;min-height:52px;box-shadow:0 4px 18px #0062ff12;transition:background .2s,box-shadow .2s}
.zc-cta:hover{background:#004fe0;box-shadow:0 5px 22px #0062ff36}
.zc-cta svg,.zc-criteria-link svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;flex:none}
.zc-criteria-link{display:inline-flex;align-items:center;gap:20px;margin-top:31px;color:#153a85;background:none;border:0;border-bottom:1px solid #153a8580;padding:0 0 6px;font-size:clamp(13px,1.3cqw,18px)!important;cursor:pointer;text-align:left;text-decoration:none}
.zc-rules{list-style:none;margin:0;padding:0;display:grid;gap:17px}
.zc-rule{position:relative;display:grid;grid-template-columns:33% 1fr;align-items:center;min-height:164px;padding:20px 23px 20px 8px;gap:15px;isolation:isolate}
.zc-rule::before{content:"";position:absolute;inset:0;z-index:-1;transform:skewX(-9deg);background:linear-gradient(130deg,#fff 25%,#f7fbff 100%);border-left:6px solid var(--zc-blue);box-shadow:0 12px 27px #07376327,0 2px 5px #26457412}
.zc-rule__number{position:absolute;left:3.8%;top:15%;font-family:var(--display);font-size:22px;font-weight:700;color:#78a5e9}
.zc-rule__icon{width:100%;height:128px;object-fit:contain;display:block;padding-left:11px;filter:drop-shadow(0 6px 7px #1265b419)}
.zc-rule h3{font-family:var(--ds-display);font-size:var(--ds-card);line-height:1.15;margin-bottom:8px;font-weight:400;letter-spacing:0;}
.zc-rule p{font-size:var(--ds-copy);line-height:1.55;color:#3f4c66;}
.zc-dialog{max-width:720px;width:calc(100% - 36px);max-height:85dvh;border:1px solid #9fc7ff;border-radius:12px;padding:36px;color:#0a2341;background:#fff;box-shadow:0 30px 100px #00142c88;font-family:var(--body)}
.zc-dialog::backdrop{background:#00142cc9;backdrop-filter:blur(5px)}
.zc-dialog h2{font-family:var(--ds-display);font-size:var(--ds-title);line-height:1.1;padding-right:30px;}.zc-dialog h3{font-size:var(--ds-card);margin:25px 0 8px;}.zc-dialog p{margin:12px 0;line-height:1.55;}.zc-dialog__close{position:absolute;right:12px;top:12px;border:0;background:#edf6ff;border-radius:50%;width:36px;height:36px;cursor:pointer;font-size:24px!important}
@media(min-width:1650px){.zc-eligibility{padding-left:max(5.3%,calc((100% - 1520px)/2));padding-right:max(5.3%,calc((100% - 1520px)/2))}}
@media(max-width:1000px){.zc-rule{min-height:142px;padding-right:14px;gap:10px}.zc-rule__icon{height:110px}.zc-eligibility{gap:4%;padding:5%}.zc-rule h3{font-size:var(--ds-card);}.zc-rule p{font-size:var(--ds-copy);}.zc-rule__number{font-size:18px}.zc-eligibility h2{font-size:var(--ds-title);}}
@media(max-width:700px){.zc-stadium{aspect-ratio:auto;height:650px}.zc-stadium__backdrop{object-fit:cover;object-position:center bottom}.zc-stadium__intro{top:29px;left:6%;right:6%;grid-template-columns:1fr;gap:16px}.zc-stadium h2{font-size:var(--ds-title);margin-top:7px;}.zc-stadium .zc-eyebrow{font-size:var(--ds-eyebrow);}.zc-stadium__intro>p{font-size:var(--ds-copy);border-left:0;padding-left:0;max-width:34em;line-height:1.55;}.zc-trophy--dominion{left:4%;width:28%;height:27%;bottom:27.8%}.zc-trophy--eternal{left:32%;width:36%;height:43%;bottom:26.5%}.zc-trophy--emperor{left:68%;width:28%;height:34%;bottom:27.8%}.zc-caption{top:74.5%;width:32%}.zc-caption--dominion{left:1%}.zc-caption--eternal{left:34%;top:74.5%}.zc-caption--emperor{left:67%}.zc-caption h3{font-size:var(--ds-card);max-width:7em;margin:0 auto;}.zc-caption span{font-size:10px;letter-spacing:.15em}.zc-consent{left:7%;right:7%;bottom:6%;font-size:12px;gap:12px}.zc-eligibility{grid-template-columns:1fr;padding:40px 7% 45px;gap:32px}.zc-eligibility h2{font-size:var(--ds-title);max-width:12em;margin:13px 0 24px;}.zc-cta{max-width:100%;width:100%;font-size:16px}.zc-criteria-link{font-size:14px!important;margin-top:20px}.zc-rules{gap:18px;padding:0 8px}.zc-rule{grid-template-columns:29% 1fr;min-height:167px;padding:16px 10px 16px 0;gap:13px}.zc-rule__icon{height:104px;padding:0}.zc-rule__number{font-size:16px;left:3%;top:7%}.zc-rule h3{font-size:var(--ds-card);line-height:1.15;}.zc-rule p{font-size:var(--ds-copy);}.zc-rule::before{transform:skewX(-5deg);border-left-width:4px}.zc-dialog{padding:28px 23px}.zc-dialog h2{font-size:var(--ds-title);}}
@media(prefers-reduced-motion:reduce){.zc-sections *{scroll-behavior:auto!important;transition:none!important;animation:none!important}.zc-confetti{display:none}.zc-trophy:hover .zc-trophy__art,.zc-trophy:focus-visible .zc-trophy__art,.zc-trophy.is-active .zc-trophy__art{transform:none}}

/* Tight framing uses layout coordinates; original transparent PNGs remain intact. */
.zc-trophy--dominion .zc-trophy__art{width:auto;height:100%;aspect-ratio:834/1115;overflow:hidden;flex:none}
.zc-trophy--dominion .zc-trophy__art img{position:absolute;max-width:none;width:147.48201%;height:114.61883%;left:-23.74101%;top:-6.81614%;object-fit:fill}
.zc-trophy--eternal .zc-trophy__art{width:auto;height:100%;aspect-ratio:500/1414;overflow:hidden;flex:none}
.zc-trophy--eternal .zc-trophy__art img{position:absolute;max-width:none;width:204.80000%;height:108.62801%;left:-49.80000%;top:-2.68741%;object-fit:fill}
.zc-trophy--emperor .zc-trophy__art{width:auto;height:100%;aspect-ratio:532/1346;overflow:hidden;flex:none}
.zc-trophy--emperor .zc-trophy__art img{position:absolute;max-width:none;width:192.48120%;height:114.11590%;left:-49.43609%;top:-4.90342%;object-fit:fill}
.zc-trophy--dominion{height:27%}.zc-trophy--eternal{height:54%}.zc-trophy--emperor{height:38%}
@media(max-width:700px){.zc-stadium__backdrop{top:auto;bottom:90px;height:320px;object-fit:fill}.zc-trophy--dominion{height:24%;bottom:28%}.zc-trophy--eternal{height:40%;bottom:27.5%}.zc-trophy--emperor{height:31%;bottom:28%}.zc-trophy--eternal .zc-trophy__art{max-width:100%}}


/* --- site rules that reach into the package ------------------------

   The zc- prefix keeps the package out of the site. It does nothing
   about the site reaching in: core.css styles bare h1-h4 and those
   match inside here too.

     core.css  h1,h2,h3,h4 { letter-spacing: -.025em; line-height: 1.03 }
     core.css  h3 { letter-spacing: -.012em }

   The package states both on every heading it cares about, at a
   specificity core.css cannot reach, so only the three it leaves
   unstated actually drift. They are enumerated rather than reset in
   bulk on purpose: a blanket `.zc-sections h2` is (0,2,0) and would
   outrank the package's own `.zc-stadium h2` (0,1,1), which is how an
   earlier version of this block grew every heading in the stadium by a
   third. Measured against the package's own build, these three lines
   are the whole difference.

   Nothing here touches the trophies. core.css `img { height: auto }`
   loses to the package's own `.zc-trophy__art img { height: 100% }`
   already, and an earlier attempt to "help" overrode the tight-framing
   rules at the end of the sheet -- the ones that scale each cup to
   147/204/192% inside a cropped box -- and flattened all three back to
   100%. */
.zc-sections .zc-caption h3,
.zc-sections .zc-dialog h2 {
  letter-spacing: normal;
}
.zc-sections .zc-dialog h3 {
  letter-spacing:0;
  line-height:1.15;
}

/* --- mapped onto the painted plate ------------------------------- */

/* THE CAPTIONS.

   All three sat at one `top`, but the three podiums are at three
   different heights -- the centre one is nearer and taller. Measured
   off the artwork itself, by finding each slab's own blue neon edging
   and the dark drum face between the top edge and the base arc:

     Dominion   x .116-.307   face y .738-.823   mid .781
     Eternal    x .362-.621   face y .705-.825   mid .765
     Emperor    x .675-.873   face y .753-.822   mid .788

   The shipped captions all ran y .767-.832, so the cyan level line
   dropped off the bottom lip of every slab, and each block sat about
   .8% to the right of its own podium. Each is now centred on its own
   face -- top = face mid minus half the caption's .065 height -- and
   on its own slab's centre line.

   Above 700px only: below that the plate switches to object-fit cover
   at center bottom, which crops the width, so those fractions no
   longer describe where the slabs are. The package's own mobile
   placement is left alone. */
@media (min-width: 701px) {
  .zc-caption--dominion { left: 7.6%; top: 74.85%; }
  .zc-caption--eternal  { left: 35.6%; top: 73.25%; }
  .zc-caption--emperor  { left: 63.9%; top: 75.55%; }
}

/* THE SPARK FOUNTAINS.

   A gradient wash over them turned out to read as nothing -- a static
   tint on an already bright area. They get real embers instead, drawn
   as tiny yellow dots on the confetti canvas in championships.js:
   same loop, so they stop off screen, on a hidden tab and under
   reduced motion exactly as the confetti does, and cost no extra
   element. Nothing is needed here.

   THE BLUE BAR UNDER EACH CUP.

   .zc-trophy::after painted a 9-17px blurred bar in #72c5ff at the
   foot of each figure, as a contact shadow. Measured, it landed at y
   .705/.716/.724 -- directly above each caption on the top lip of each
   slab, which is the short blue line that read as a stray mark. The
   plate already paints a lit plinth under every cup, so the fake one
   is removed rather than moved. ::before, the soft floor pool, stays. */
.zc-trophy::after,
.zc-trophy:hover::after,
.zc-trophy:focus-visible::after { content: none; }
