:root{
  --paper:#efedf4; --paper-2:#e4e1ec; --white:#ffffff; --lav:#d9d0df; --grey:#dfdfdf;
  --ink:#16151c; --ink-2:#221f2b; --ink-soft:#16151c99;
  /* Accents are sampled from Justin's v2 background scene, which is the
     reference for the whole palette. --red and --orange are his values
     untouched: he painted with them. His blue (#5b90dd) and green (#6cc296)
     are the same hues the site already used, but far lighter; white text and
     white icons sit on these swatches, so each is his hue and saturation
     dropped in lightness until white clears 4.5:1. His violet is already
     dark enough to use exactly as painted. --paper, --lav and --grey above
     are likewise his: #efedf4, #d9d0df and #dfdfdf all appear in the art. */
  --red:#bd203f;      /* his, as painted */
  --orange:#e87c1a;   /* his, as painted */
  --blue:#3375d5;     /* his #5b90dd sky */
  --green:#37845d;    /* his #6cc296 kelp */
  --violet:#7042c0;   /* his, as painted */
  --magenta:#bc4c9b;  /* his #c35fa5 */
  --navy:var(--blue); /* legacy alias: older markup still says navy */
  --accent:var(--red);
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --disp:"Anton",sans-serif; --sans:"Archivo",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}

/* Full-page illustrated background scene (Justin's art, 3200x9438).

   The layer is fixed and viewport-sized on purpose. It used to be an absolute
   layer sized to the document, which broke three ways: it changed document
   height after GSAP/ScrollTrigger had cached its trigger positions (stale
   triggers never fired, so sections stayed at the opacity:0 that gsap.from()
   sets -> the blank page), its 3200px width escaped body's overflow-x:hidden
   and added ~750px of horizontal scroll each side, and fitting the art to the
   page HEIGHT blew it up to ~3240px wide so only a zoomed middle slice showed.
   Fixed + overflow:hidden makes all three impossible: it contributes nothing to
   layout, cannot scroll, and only ever rasterizes a viewport-sized area.

   The art is fit to WIDTH so the whole composition is in frame, and
   utek-bgscene.js slides it vertically with scroll so the scene is travelled
   once from top to bottom of the page. */
.artbg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;isolation:isolate;
  --artbg-zoom:100%;--artbg-lift:#2b2933;--artbg-veil:.34}
.artbg-inner{position:absolute;top:0;left:50%;width:var(--artbg-zoom);transform:translateX(-50%)}
.artbg-inner img{display:block;width:100%;height:auto;will-change:transform}
/* `lighten` clamps every art pixel darker than --artbg-lift up to it, so no
   band of the art can go dark enough to swallow the near-black body copy set
   over it. v1's art had a near-black lower half and needed a heavy grey floor
   (#98959f) to stay readable. v2 is painted light throughout — its deepest
   band is a mid-blue sky — so the floor is dropped to near-black: it still
   guards against a pure-black shape, but it no longer desaturates Justin's
   palette, which is what a high floor was doing to the fish and planets.
   Legibility on v2 is carried by --artbg-veil below instead.
   isolation:isolate keeps the blend inside this layer. */
.artbg-lift{position:absolute;inset:0;background:var(--artbg-lift);mix-blend-mode:lighten}
/* Overall wash so nothing competes with body copy. Raise --artbg-veil to fade
   the art back further, lower it to let more colour through. It sat at .46
   while the art still had near-black bands and every value had to be pulled
   up; v2 is painted light throughout, so the wash is now doing more harm than
   good and is dialled back to .34 to keep the palette closer to the drawing.
   Body copy sits straight on the art with no local backdrop, so this is the
   only legibility guard -- going much below .30 starts to lose contrast where
   copy crosses the darkest line work. */
.artbg::after{content:"";position:absolute;inset:0;background:var(--paper);opacity:var(--artbg-veil)}
/* Narrow screens: the full 3200px-wide composition would shrink to a texture,
   so zoom in rather than hide it. This was display:none below 900px, which is
   why phones showed no background at all. */
@media(max-width:900px){.artbg{--artbg-zoom:260%;--artbg-veil:.42}}
/* The old letter/shape decorations clash with the scene, hide them. */
.bg .blob,.bg .floatpart{display:none}

.bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.bg .blob{position:absolute;font-family:var(--disp);color:#16151c08;font-size:32vw;line-height:.8;letter-spacing:-.04em;user-select:none}
.floatpart{position:absolute;opacity:.5;will-change:transform}
.fp-ring{border-radius:50%;border:6px solid var(--c,#16151c22);background:transparent}
.fp-hex{background:var(--c,#16151c14);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.fp-plus{background:
  linear-gradient(var(--c,#16151c1f),var(--c,#16151c1f)) center/100% 32% no-repeat,
  linear-gradient(var(--c,#16151c1f),var(--c,#16151c1f)) center/32% 100% no-repeat}
.fp-bolt{border-radius:50%;border:5px solid var(--c,#16151c22);background:
  linear-gradient(var(--c,#16151c22),var(--c,#16151c22)) center/52% 5px no-repeat,
  linear-gradient(var(--c,#16151c22),var(--c,#16151c22)) center/5px 52% no-repeat}
.fp-bracket{border-left:11px solid var(--c,#16151c1c);border-bottom:11px solid var(--c,#16151c1c)}
.fp-cog{border-radius:50%;background:repeating-conic-gradient(var(--c,#16151c1c) 0 14deg,transparent 14deg 28deg);
  -webkit-mask:radial-gradient(transparent 32%,#000 33%);mask:radial-gradient(transparent 32%,#000 33%)}
.gltr{font-family:var(--disp);color:#16151c0b;line-height:.7;letter-spacing:-.03em;user-select:none}

.thread{position:absolute;top:0;left:50%;width:2px;height:100%;z-index:1;pointer-events:none;transform:translateX(-50%);
  background:#16151c14}
.thread .prog{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--accent);transform:scaleY(0);transform-origin:top}
@media(max-width:900px){.thread{display:none}}

.rail{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;gap:20px;
  padding:8px 18px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  background:var(--paper-2);border-bottom:2px solid var(--ink)}
.rail .dot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block;animation:blink 1.5s infinite;margin-right:7px}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
.rail b{font-weight:700}.rail .mut{color:var(--ink-soft)}
.rail .right{margin-left:auto;display:flex;gap:18px;align-items:center}
.rail .live{color:var(--accent);font-weight:700}
@media(max-width:820px){.rail .hideS{display:none}}

header{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;padding:16px 26px;transition:background .3s}
header.solid{background:var(--paper);border-bottom:1.5px solid #16151c18}
.brandmark{display:flex;align-items:center;gap:10px;font-weight:900;font-size:19px;letter-spacing:-.02em;cursor:pointer;text-decoration:none;color:var(--ink)}
.brandmark .sq-logo{width:30px;height:30px;display:block;border:2.5px solid var(--ink);background:#fff;box-shadow:3px 3px 0 var(--ink);transform:rotate(-6deg)}
nav{display:flex;gap:26px;font-weight:800;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase}
nav a{color:var(--ink);text-decoration:none;position:relative;cursor:pointer}
nav a span{position:absolute;left:0;bottom:-5px;height:3px;width:0;background:var(--accent);transition:width .25s}
nav a:hover span{width:100%}
.navcta{font-family:var(--sans);font-weight:900;font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  color:#fff;background:var(--ink);padding:9px 14px;border:2.5px solid var(--ink);cursor:pointer;text-decoration:none}
.hdr-actions{display:flex;align-items:center;gap:12px}
.menubtn{display:none;width:44px;height:44px;flex:none;background:var(--white);border:2.5px solid var(--ink);
  box-shadow:3px 3px 0 var(--ink);cursor:pointer;padding:0;
  flex-direction:column;align-items:center;justify-content:center;gap:5px}
.menubtn span{display:block;width:20px;height:2.5px;background:var(--ink);transition:transform .25s,opacity .2s}
.menubtn.open span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.menubtn.open span:nth-child(2){opacity:0}
.menubtn.open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
@media(max-width:1180px){nav{display:none}.menubtn{display:flex}}
@media(max-width:1360px){nav{gap:19px}}
nav a.on{color:var(--accent)}
nav a.on span{width:100%}

.mobilemenu{position:fixed;inset:0;z-index:59;background:var(--paper);
  display:flex;flex-direction:column;padding:96px 26px 30px;overflow-y:auto;
  opacity:0;transform:translateY(-8px);transition:opacity .24s ease,transform .24s ease}
.mobilemenu.open{opacity:1;transform:none}
.mobilemenu[hidden]{display:none}
.mm-links{display:flex;flex-direction:column}
.mm-links a{display:flex;align-items:baseline;gap:16px;padding:13px 4px;text-decoration:none;color:var(--ink);
  font-family:var(--disp);font-size:32px;line-height:1;letter-spacing:.01em;border-bottom:2px solid #16151c1c}
.mm-links a i{font-style:normal;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;color:var(--accent)}
.mm-links a:active{color:var(--accent)}
.mm-cta{margin-top:26px;justify-content:center}
.mm-meta{margin-top:18px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);text-align:center}
/* Set by UTEK.lockScroll (utek.js) for the mobile menu and both modals.
   Pairs with lenis.stop() -- this rule alone does not hold the page. */
html.menu-lock,html.menu-lock body{overflow:hidden}

main{position:relative;z-index:10}

.hero{position:relative;height:100vh;min-height:680px;display:grid;place-items:center;z-index:10}
.stagewrap{width:1280px;height:760px;position:relative;transform-origin:center center;flex:none}
.col{position:absolute;left:56px;top:146px;width:418px;z-index:25}
.col .meta{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-top:20px}
.col .meta b{color:var(--ink)}
.col h1{font-family:var(--disp);font-size:58px;line-height:.86;letter-spacing:.005em}
.col h1 .h1-kicker{display:block;font-size:.4em;line-height:1.05;letter-spacing:.03em;color:var(--ink-soft);margin-bottom:.18em}
.col h1 em{font-style:normal;color:var(--accent)}
.col p{font-size:15px;line-height:1.55;font-weight:600;color:#16151ccc;margin-top:13px;max-width:378px}
.col .cta{display:flex;gap:12px;margin-top:22px}
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 20px;font-family:var(--sans);font-weight:900;
  font-size:13px;letter-spacing:.05em;text-transform:uppercase;border:2.5px solid var(--ink);cursor:pointer;text-decoration:none;
  background:var(--accent);color:#fff;box-shadow:5px 5px 0 var(--ink);transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}
.btn:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}
.btn.ghost{background:var(--white);color:var(--ink)}

.logcard{position:absolute;left:56px;top:566px;width:392px;z-index:25;
  background:var(--ink);border:2.5px solid var(--ink);box-shadow:8px 8px 0 rgba(22,21,28,.18)}
.logcard .lh{display:flex;align-items:center;gap:8px;padding:7px 12px;background:#26242e;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#e7e3ef;border-bottom:1px solid #ffffff1f}
.logcard .lh .d{width:8px;height:8px;border-radius:50%;background:var(--green);animation:blink 1.5s infinite}
.logcard .lh .pct{margin-left:auto;color:#cfcad8}
.logbody{padding:11px 14px;height:150px;overflow:hidden;font-family:var(--mono);font-size:12px;line-height:1.6;color:#d8d3e2}
.logbody .ln{opacity:1}
.logbody .ok{color:#79d39b}.logbody .mut{color:#ffffff55}
.logbody .cur{display:inline-block;width:8px;height:14px;background:var(--green);vertical-align:-2px;animation:blink 1s steps(1) infinite}

.stage{position:absolute;inset:0;z-index:15}
.assembly{position:absolute;left:452px;top:120px;width:790px;height:540px;cursor:pointer;z-index:30}
.part{position:absolute;will-change:transform}

.baseplate{left:486px;top:182px;width:716px;height:418px;background:var(--white);
  border:3px solid var(--ink);box-shadow:13px 13px 0 rgba(22,21,28,.9)}
.baseplate .pp{position:absolute;inset:12px;border:1px solid #16151c1f}
.baseplate .stamp{position:absolute;right:15px;bottom:11px;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;color:#16151c88;text-transform:uppercase}
.baseplate .stampL{position:absolute;left:15px;top:11px;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;color:#16151c88;text-transform:uppercase}

.divider{position:absolute;left:516px;top:372px;width:656px;display:flex;align-items:center;gap:12px;z-index:18}
.divider .ln{flex:1;height:0;border-top:1px solid #16151c2b}
.divider .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}

.ltr{font-family:var(--disp);line-height:.8;font-size:130px}
.ltr .g{display:block;color:var(--lc);
  text-shadow:1px 1px 0 var(--ink),2px 2px 0 var(--ink),3px 3px 0 var(--ink),4px 4px 0 var(--ink),5px 5px 0 var(--ink),6px 6px 0 var(--ink),7px 7px 0 var(--ink),8px 8px 0 var(--ink)}
#L-U{left:648px;top:222px;--lc:var(--ink)}
#L-U .g{text-shadow:1px 1px 0 #00000016,7px 7px 0 #16151c26}
#L-T{left:748px;top:222px;--lc:var(--red)}
#L-E{left:846px;top:222px;--lc:var(--navy)}
#L-K{left:940px;top:222px;--lc:var(--orange)}

.clock{position:absolute;left:506px;top:404px;width:676px;display:flex;align-items:flex-end;justify-content:center;gap:6px;z-index:18}
.cd{text-align:center;position:relative}
.cd .v{font-family:var(--mono);font-weight:800;font-size:74px;line-height:.9;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.cd .k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-top:8px}
.colon{font-family:var(--mono);font-weight:800;font-size:62px;color:var(--accent);line-height:1;padding-bottom:30px}

.hex{width:54px;height:60px;background:var(--c);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);display:grid;place-items:center}
.hex::after{content:"";width:22px;height:26px;background:var(--white);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.washer{width:58px;height:58px;border-radius:50%;border:13px solid var(--c);background:transparent}
.bolt{display:flex;flex-direction:column;align-items:center}
.bolt .head{width:38px;height:16px;background:var(--c);border:2.5px solid var(--ink);border-bottom:none}
.bolt .shaft{width:17px;height:40px;background:var(--c);border:2.5px solid var(--ink);background-image:repeating-linear-gradient(0deg,transparent,transparent 5px,#16151c33 5px,#16151c33 7px)}
.cornerbolt{width:26px;height:26px;border-radius:50%;background:var(--paper-2);border:3px solid var(--ink);display:grid;place-items:center}
.cornerbolt::after{content:"";width:12px;height:3px;background:var(--ink);transform:rotate(45deg)}

.accent{opacity:0}
.callout{position:absolute;display:flex;align-items:center;gap:7px;pointer-events:none;white-space:nowrap;opacity:0}
.callout .num{width:24px;height:24px;border-radius:50%;border:2px solid var(--ink);background:var(--white);display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:11px;flex:none;color:var(--ink)}
.callout .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#16151ccc}

.figtag{position:absolute;left:486px;top:612px;z-index:24;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.figtag b{color:var(--ink)}

.scrollcue{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:55;display:flex;flex-direction:column;align-items:center;gap:6px;
  font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}
.scrollcue .arw{width:16px;height:16px;border-right:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink);transform:rotate(45deg);animation:bob 1.4s infinite}
@keyframes bob{0%,100%{transform:rotate(45deg) translate(0,0)}50%{transform:rotate(45deg) translate(3px,3px)}}

.statement{position:relative;z-index:10;max-width:1080px;margin:0 auto;padding:140px 40px 120px;text-align:center}
.statement .sk{font-family:var(--mono);font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:30px}
.statement .sk-lg{font-size:16px;letter-spacing:.3em;color:var(--ink)}
.statement h2{font-family:var(--disp);font-size:clamp(38px,6vw,86px);line-height:.96;letter-spacing:.005em}
.statement h2 .w{display:inline-block;margin:0 .12em}
.statement h2 .ac{color:var(--accent)}
.statement .lead{font-size:17px;font-weight:600;line-height:1.6;color:#16151ccc;max-width:600px;margin:36px auto 0}

.theme-seal{position:relative;display:flex;justify-content:center;margin-top:6px;padding-top:20px}
.seal-plate{position:relative;background:var(--white);border:3px solid var(--ink);
  box-shadow:13px 13px 0 rgba(22,21,28,.9);padding:58px 64px 30px;width:100%;max-width:720px;
  background-image:repeating-linear-gradient(135deg,#16151c08 0 2px,transparent 2px 11px)}
.seal-bolt{position:absolute;width:28px;height:28px;border-radius:50%;background:var(--paper-2);
  border:3px solid var(--ink);display:grid;place-items:center;z-index:2}
.seal-bolt::after{content:"";width:15px;height:3px;background:var(--ink);transform:rotate(var(--r,42deg))}
.seal-bolt.tl{left:-14px;top:-14px;--r:34deg}
.seal-bolt.tr{right:-14px;top:-14px;--r:-38deg}
.seal-bolt.bl{left:-14px;bottom:-14px;--r:-18deg}
.seal-bolt.br{right:-14px;bottom:-14px;--r:52deg}
.seal-stampL{position:absolute;left:16px;top:11px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:#16151c88;text-transform:uppercase}
.seal-stamp{position:absolute;right:-10px;top:30px;transform:rotate(11deg);
  font-family:var(--mono);font-weight:800;font-size:clamp(15px,2.2vw,22px);letter-spacing:.14em;
  color:var(--accent);border:3px solid var(--accent);padding:5px 13px;text-transform:uppercase;opacity:.9;
  background:#fff;box-shadow:0 0 0 4px #fff}
.seal-redactions{font-size:clamp(30px,6.4vw,78px);display:flex;flex-direction:column;gap:.22em;align-items:center;margin:.1em 0 .35em}
.seal-row{display:flex;gap:.3em;flex-wrap:wrap;justify-content:center}
.rb{display:block;height:.74em;width:calc(var(--c,3) * .56em);background:var(--ink);border-radius:2px;
  box-shadow:inset 0 -.06em 0 #ffffff1c, inset 0 .06em 0 #00000022}
.rb.ac{background:var(--accent)}
.seal-status{margin-top:26px;padding-top:18px;border-top:1px solid #16151c1a;
  display:flex;gap:18px;align-items:center;justify-content:center;flex-wrap:wrap}
.ss-k{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft)}
.ss-cd{display:inline-flex;gap:16px;flex-wrap:wrap;justify-content:center}
.ss-u{display:inline-flex;align-items:baseline;gap:5px}
.ss-u b{font-family:var(--mono);font-weight:800;font-size:18px;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.ss-u i{font-family:var(--mono);font-style:normal;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
@media(max-width:680px){
  .seal-plate{padding:54px 28px 28px}
  .seal-status{gap:12px}
  .ss-cd{gap:12px}
}
.theme-live-in{animation:themeIn .72s cubic-bezier(.2,.7,.2,1) both}
@keyframes themeIn{from{opacity:0;transform:translateY(20px) scale(.985)}to{opacity:1;transform:none}}
.theme-seal-out{animation:sealOut .6s ease forwards;transform-origin:center}
@keyframes sealOut{to{opacity:0;transform:scale(.95) rotate(-1.5deg)}}
@media(prefers-reduced-motion:reduce){.theme-live-in,.theme-seal-out{animation:none}}

.sponsor-modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px}
.sponsor-modal[hidden]{display:none}
.sm-backdrop{position:absolute;inset:0;background:#16151ccc;animation:smFade .2s ease}
.sm-card{position:relative;z-index:1;background:var(--paper);border:3px solid var(--ink);box-shadow:14px 14px 0 rgba(22,21,28,.9);
  width:min(520px,100%);max-height:90vh;overflow:auto;padding:34px 34px 30px;animation:smPop .28s cubic-bezier(.2,.8,.25,1)}
@keyframes smFade{from{opacity:0}to{opacity:1}}
@keyframes smPop{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
.sm-x{position:absolute;top:12px;right:14px;width:34px;height:34px;border:2.5px solid var(--ink);background:var(--white);
  font-size:20px;line-height:1;cursor:pointer;font-family:var(--sans);box-shadow:3px 3px 0 var(--ink);transition:transform .1s,box-shadow .1s}
.sm-x:hover{background:var(--accent);color:#fff;transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}
.sm-tag{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}
.sm-card h3{font-family:var(--disp);font-size:44px;line-height:.9;letter-spacing:.005em}
.sm-card h3 em{font-style:normal;color:var(--accent)}
.sm-sub{font-size:14.5px;font-weight:600;line-height:1.5;color:#16151ccc;margin:12px 0 22px}
.sm-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sm-form label{display:flex;flex-direction:column;gap:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.sm-form .sm-full{grid-column:1/-1}
.sm-form input,.sm-form select,.sm-form textarea{font-family:var(--sans);font-size:15px;font-weight:600;color:var(--ink);
  background:var(--white);border:2.5px solid var(--ink);padding:11px 12px;width:100%}
.sm-form textarea{resize:vertical}
.sm-form input:focus,.sm-form select:focus,.sm-form textarea:focus{outline:none;box-shadow:3px 3px 0 var(--accent)}
.sm-submit{grid-column:1/-1;justify-content:center;margin-top:4px}
.sm-status{grid-column:1/-1;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--ink);min-height:1em;margin:0}
@media(max-width:520px){.sm-form{grid-template-columns:1fr}.sm-card h3{font-size:36px}}

.section{position:relative;z-index:10;max-width:1180px;margin:0 auto;padding:96px 40px}

/* Plain-language explainer. The hero only ever said "Skule's annual
   engineering showdown", which assumes the reader already knows what UTEK is;
   this is the paragraph for everyone who doesn't. Two columns on the same
   type scale the rest of the site uses -- an oversized lede read like a
   different site had been pasted in. */
.about-band{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 56px;align-items:start;
  border-top:2.5px solid var(--ink);padding-top:26px}
.about-band p{font-size:16px;font-weight:600;line-height:1.6;color:#16151cc4}
.about-lede{color:var(--ink);font-weight:700}
.about-lede em{font-style:normal;color:var(--accent)}
.about-band b{color:var(--ink)}
@media(max-width:820px){.about-band{grid-template-columns:1fr;gap:16px}}

/* link out to the resources page from wherever preparation is mentioned */
.sec-sub .subcta{display:inline-flex;align-items:center;gap:7px;margin-top:12px;
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;border-bottom:2px solid var(--accent);padding-bottom:2px}
.sec-sub .subcta:hover{color:var(--accent)}
.section.dark{max-width:none;background:var(--ink);color:#fff}
.sec-inner{max-width:1180px;margin:0 auto}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:56px;flex-wrap:wrap}
.sec-tag{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}
.sec-tag b{color:var(--accent)}
.sec-title{margin:0;font-weight:400;font-family:var(--disp);font-size:62px;line-height:.9;letter-spacing:.005em}
.sec-title em{font-style:normal;color:var(--accent)}
.sec-sub{font-size:15px;font-weight:600;color:#16151ccc;max-width:360px;line-height:1.5}

.komps{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
@media(max-width:920px){.komps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.komps{grid-template-columns:1fr}}
.komp{position:relative;background:var(--white);border:2.5px solid var(--ink);box-shadow:7px 7px 0 var(--ink);
  padding:22px 22px 20px;overflow:hidden;transition:transform .24s cubic-bezier(.16,.84,.24,1),box-shadow .24s;--kc:var(--red)}
.komp:hover{transform:translate(-3px,-5px) rotate(-1deg);box-shadow:14px 16px 0 var(--ink)}
.komp .kcorner{position:absolute;width:11px;height:11px;border-radius:50%;background:var(--paper-2);border:2px solid var(--ink);transition:transform .3s cubic-bezier(.16,.84,.24,1)}
.komp .kc1{top:9px;left:9px}.komp .kc2{top:9px;right:9px}.komp .kc3{bottom:9px;left:9px}.komp .kc4{bottom:9px;right:9px}
.komp:hover .kc1{transform:translate(-8px,-8px)}.komp:hover .kc2{transform:translate(8px,-8px)}
.komp:hover .kc3{transform:translate(-8px,8px)}.komp:hover .kc4{transform:translate(8px,8px)}
.komp .ktop{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}
.komp .knum{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--ink-soft)}
.komp .kchip{width:42px;height:42px;display:grid;place-items:center;border:2.5px solid var(--ink);background:var(--kc);transition:transform .3s cubic-bezier(.34,1.4,.64,1)}
.komp:hover .kchip{transform:rotate(-14deg) scale(1.12)}
.komp .kchip svg{width:22px;height:22px}
.komp h3{font-family:var(--disp);font-size:30px;line-height:.94;letter-spacing:.01em;margin-bottom:10px;min-height:30px}
.komp .kdesc{font-size:13.5px;line-height:1.5;font-weight:600;color:#16151cbb;min-height:60px}
.komp .kspecs{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.komp .spec{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);border:1.5px solid var(--ink);padding:4px 8px;background:var(--paper)}
.komp .kbar{position:absolute;left:0;bottom:0;height:6px;width:100%;background:var(--kc);transition:height .25s}
.komp:hover .kbar{height:9px}

.sched{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:40px}
@media(max-width:760px){.sched{grid-template-columns:1fr}}
.day{background:var(--white);border:3px solid var(--ink);box-shadow:8px 8px 0 var(--ink);padding:24px 26px 20px}
.day .dhead{display:flex;align-items:baseline;gap:12px;border-bottom:2.5px solid var(--ink);padding-bottom:12px;margin-bottom:8px}
.day .dnum{font-family:var(--disp);font-size:40px;line-height:1}
.day .ddate{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.day .dtag{margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:var(--accent);padding:5px 9px;border:2px solid var(--ink)}
.step{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid #16151c1f;position:relative}
.step:last-child{border-bottom:none}
.step .sdot{flex:none;width:34px;height:34px;border-radius:50%;border:2.5px solid var(--ink);background:var(--white);display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:13px}
.step .stime{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--accent);letter-spacing:.05em;min-width:64px}
.step .sbody h4{font-size:16px;font-weight:900;letter-spacing:-.01em}
.step .sbody p{font-size:13px;font-weight:600;color:#16151caa;margin-top:3px}

.crew{position:relative;z-index:10;padding:96px 0}
.crew .sec-head{max-width:1220px;margin:0 auto 44px;padding:0 40px}
.crew-row{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.crew-row+.crew-row{margin-top:20px}
.marquee{display:flex;gap:18px;width:max-content;animation:scrollx 88s linear infinite}
.marquee.rev{animation-direction:reverse;animation-duration:80s}
.crew-row:hover .marquee{animation-play-state:paused}
@keyframes scrollx{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.cmember{position:relative;flex:none;width:204px;background:var(--white);border:2.5px solid var(--ink);box-shadow:6px 6px 0 var(--ink);
  overflow:hidden;transition:transform .14s,box-shadow .14s}
.cmember:hover{transform:translateY(-4px);box-shadow:9px 12px 0 var(--ink);z-index:2}
.cm-photo{position:relative;aspect-ratio:4/5;border-bottom:2.5px solid var(--ink);
  background:repeating-linear-gradient(45deg,var(--white) 0 9px,#16151c0d 9px 10px)}
.cm-photo::after{content:"";position:absolute;left:0;top:0;width:100%;height:7px;background:var(--mc,var(--ink));z-index:2}
.cm-photo image-slot{position:absolute;inset:0;width:100%;height:100%;display:block}
.cmember figcaption{padding:13px 15px 15px}
.cm-name{display:block;font-weight:900;font-size:15.5px;letter-spacing:-.01em;line-height:1.12}
.cm-role{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px}
.cmember.lead .cm-role{display:inline-block;color:#fff;background:var(--mc,var(--ink));border:2px solid var(--ink);padding:3px 7px;letter-spacing:.08em}
@media(max-width:560px){.cmember{width:170px}}

.spon-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
@media(max-width:760px){.spon-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.spon{aspect-ratio:3/2;background:var(--white);border:2.5px solid var(--ink);box-shadow:5px 5px 0 var(--ink);
  display:grid;place-items:center;position:relative;transition:transform .18s,box-shadow .18s}
.spon:hover{transform:translate(-3px,-3px) rotate(-1deg);box-shadow:9px 9px 0 var(--ink)}
.spon .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.spon .tier{position:absolute;top:8px;left:8px;font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:#fff;padding:2px 6px}
.spon .pb{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--paper-2);border:2px solid var(--ink)}
.spon .pb1{top:7px;right:7px}.spon .pb2{bottom:7px;left:7px}

.cta-inner{display:flex;align-items:center;justify-content:space-between;gap:40px;flex-wrap:wrap;padding:84px 40px}
.cta-inner h2{font-family:var(--disp);font-size:64px;line-height:.9;color:#fff}
.cta-inner h2 em{font-style:normal;color:#ff7d92}
.cta-inner p{font-size:15px;font-weight:600;color:#ffffffbb;margin-top:14px;max-width:420px;line-height:1.5}
.cta-inner .btn{box-shadow:5px 5px 0 #000}
.cta-side{display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.cta-fine{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#ffffff99;max-width:340px;line-height:1.7}

.sitefoot{position:relative;z-index:10;background:var(--paper-2);padding:0 40px 88px;
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.sitefoot b{color:var(--ink)}
.sitefoot .fl{display:flex;gap:20px;flex-wrap:wrap}
.sitefoot a{color:var(--ink-soft);text-decoration:none}.sitefoot a:hover{color:var(--accent)}

/* contact + announcements block above the meta bar */
.foot-top{max-width:1180px;margin:0 auto;padding:72px 0 0;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,404px);gap:48px;align-items:start}
.foot-contact h2{font-family:var(--disp);font-size:clamp(40px,4.6vw,58px);line-height:.9;letter-spacing:.005em;
  text-transform:none;color:var(--ink)}
.foot-contact h2 em{font-style:normal;color:var(--accent)}
.foot-contact p{font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:0;text-transform:none;
  color:#16151ccc;line-height:1.55;margin-top:14px;max-width:36ch}
.foot-contact p a{color:var(--ink);text-decoration:underline;text-decoration-thickness:2px;
  text-decoration-color:var(--accent);text-underline-offset:3px}
.foot-contact p a:hover{color:var(--accent)}
.foot-social{display:flex;gap:12px;margin-top:26px}
.foot-social a{display:grid;place-items:center;width:46px;height:46px;background:var(--white);color:var(--ink);
  border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);
  transition:transform .12s,box-shadow .12s,background .12s,color .12s}
.foot-social a:hover{background:var(--accent);color:#fff;transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}
.foot-social a:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}
.foot-social svg{width:20px;height:20px;fill:currentColor;display:block}

.foot-signup{position:relative;background:var(--white);border:3px solid var(--ink);box-shadow:9px 9px 0 var(--ink);
  padding:26px 26px 28px}
.foot-signup .fs-k{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-soft)}
.foot-signup h3{font-family:var(--disp);font-size:31px;line-height:.95;letter-spacing:.005em;
  text-transform:none;color:var(--ink);margin:11px 0 0}
.foot-signup h3 em{font-style:normal;color:var(--accent)}
.foot-signup p{font-family:var(--sans);font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;
  color:#16151cb3;line-height:1.5;margin:10px 0 20px}
.foot-signup .btn{width:100%;justify-content:center}


.komps{grid-auto-flow:dense}
.komp-wrap.feat{grid-column:span 2;grid-row:span 2}
@media(max-width:920px){.komp-wrap.feat{grid-column:span 2;grid-row:auto}}
@media(max-width:620px){.komp-wrap.feat{grid-column:span 1}}
.komp>*{position:relative;z-index:1}
.komp .kghost{position:absolute;right:8px;bottom:-30px;z-index:0;font-family:var(--disp);font-size:148px;line-height:.7;color:#16151c09;pointer-events:none;letter-spacing:-.03em}
.komp .kmore{display:none}
.komp.big{display:flex;flex-direction:column;justify-content:center;padding:34px 30px 30px}
.komp.big .ktop{margin-bottom:24px}
.komp.big .kchip{width:58px;height:58px}.komp.big .kchip svg{width:31px;height:31px}
.komp.big .knum{font-size:12.5px}
.komp.big h3{font-size:clamp(38px,3.3vw,54px);margin:0 0 14px}
.komp.big .kdesc{font-size:16px;min-height:0;max-width:32ch;margin-bottom:12px}
.komp.big .kmore{display:block;font-size:13px;font-weight:600;color:#16151c99;max-width:36ch}
.komp.big .kspecs{margin-top:24px}
.komp.big .kghost{font-size:248px;bottom:-52px;right:14px}

.komp-machine{position:relative}
.machine-strip{position:relative;display:flex;align-items:center;gap:6px;padding:70px 0 78px;margin-bottom:18px}
.machine-strip .axis{position:absolute;left:2%;right:2%;top:50%;height:0;border-top:1px solid #16151c26;z-index:0}
.kpart{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:11px;background:none;border:0;cursor:pointer;position:relative;z-index:1;font-family:inherit;padding:0;-webkit-tap-highlight-color:transparent}
.kp-cal{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;color:var(--ink-soft);transition:color .2s}
.kp-node{width:74px;height:74px;border:2.5px solid var(--ink);background:var(--white);display:grid;place-items:center;
  box-shadow:4px 4px 0 var(--ink);transition:transform .3s cubic-bezier(.34,1.5,.5,1),background .2s,box-shadow .2s;position:relative}
.kp-node svg{width:34px;height:34px;stroke:var(--ink);transition:stroke .2s}
.kp-new{position:absolute;top:-11px;right:-13px;background:var(--kc);color:#fff;border:2px solid var(--ink);
  font-family:var(--mono);font-style:normal;font-size:8.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  padding:2px 6px;transform:rotate(6deg);box-shadow:2px 2px 0 var(--ink)}
.kp-name{font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#16151cd9;text-align:center;line-height:1.25;max-width:116px;transition:color .2s}
.kpart:hover .kp-node,.kpart.sel .kp-node{background:var(--kc);box-shadow:8px 8px 0 var(--ink);transform:translateY(-12px) rotate(-5deg)}
.kpart:hover .kp-node svg,.kpart.sel .kp-node svg{stroke:#fff}
.kpart:hover .kp-cal,.kpart.sel .kp-cal{color:var(--ink);font-weight:700}
.kpart:hover .kp-name,.kpart.sel .kp-name{color:var(--ink)}
.kpart::after{content:"";position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:50%;background:var(--ink);transform:translate(-50%,-50%);z-index:-1}

.machine-detail{position:relative;border:3px solid var(--ink);background:var(--white);box-shadow:11px 11px 0 var(--ink);min-height:248px;overflow:hidden}
.kdetail{display:none}
.kdetail.on{display:grid;grid-template-columns:auto 1fr;gap:34px;align-items:center;padding:38px 40px}
.kd-vis{position:relative;width:160px;height:160px;border:3px solid var(--ink);background:var(--kc);display:grid;place-items:center;box-shadow:7px 7px 0 var(--ink);flex:none}
.kd-vis svg{width:80px;height:80px;stroke:#fff}
.kd-vis .kd-num{position:absolute;top:-16px;left:-16px;width:42px;height:42px;border-radius:50%;border:2.5px solid var(--ink);background:var(--white);display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:13px}
.kd-tag{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px}
.kd-body h3{font-family:var(--disp);font-size:clamp(36px,4.2vw,56px);line-height:.92;letter-spacing:.005em}
.kd-elig{display:inline-flex;align-items:center;gap:8px;margin-top:12px;
  font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--kc)}
.kd-elig::before{content:"";flex:none;width:14px;height:0;border-top:2px solid var(--kc)}
.kd-desc{font-size:16px;font-weight:600;color:#16151ccc;line-height:1.5;margin:12px 0 18px;max-width:48ch}
.kd-ghost{position:absolute;right:24px;bottom:-46px;font-family:var(--disp);font-size:210px;line-height:.7;color:#16151c0a;pointer-events:none;letter-spacing:-.03em}
.kspecs{display:flex;gap:9px;flex-wrap:wrap;margin-top:4px}
.kspecs .spec{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);border:2px solid var(--ink);padding:5px 9px;background:var(--paper)}
.kspecs .spec.isnew{background:var(--kc);color:#fff}
/* Interaction cues.

   These used to be a white chip with a border floating under each component,
   which read as a sticker dropped on top of the page rather than part of it.
   They are now drafting annotations: a hairline leader runs the full width of
   the component it belongs to and the note sits in the break, the same motif
   as the hero's `UTEK begins in` divider and the venue sheet's title block.
   No box, no fill -- the rule ties the note to the thing above it. */
.hint{display:flex;align-items:center;gap:16px;margin-top:28px}
.hint::before,.hint::after{content:"";flex:1 1 0;min-width:12px;height:0;border-top:1px solid #16151c26}
/* set in sentence case, not tracked-out caps: these are full sentences spoken
   to the reader, and caps made them read as a label rather than a note */
.hint > span{display:inline-block;flex:0 1 auto;text-align:center;
  font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.01em;color:#16151cb8}
.hint > .hint-touch{display:none}
@media(hover:none){.hint > .hint-desktop{display:none}.hint > .hint-touch{display:inline-flex}}
/* sits below the hero baseplate and spans its border box (716 + 2x3px border)
   so the leader lines up with the plate edges above it; top clears the plate's
   13px drop shadow, which ends at 619 */
.hint.hero-hint{position:absolute;left:486px;width:722px;top:634px;z-index:24;margin:0}
.hero-hint > span{white-space:nowrap}
@media(max-width:760px){
  .machine-strip{overflow-x:auto;overflow-y:hidden;gap:14px;padding:54px 4px 60px;justify-content:flex-start}
  .machine-strip .axis{display:none}
  .kpart{flex:0 0 96px;margin-top:0!important}
  .kdetail.on{grid-template-columns:1fr;gap:22px;padding:28px}
}

.spon-open{display:block}
.sp-body{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(258px,.9fr);gap:40px;align-items:start}
.spon-pitch{background:var(--white);border:3px solid var(--ink);box-shadow:10px 10px 0 var(--ink);padding:38px 40px 36px}
.sp-tag{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:14px}
.spon-pitch h3{font-family:var(--disp);font-weight:400;font-size:clamp(30px,3.2vw,42px);line-height:.96;letter-spacing:.005em}
.spon-pitch h3 em{font-style:normal;color:var(--accent)}
.spon-pitch p{font-size:15px;font-weight:600;line-height:1.6;color:#16151ccc;margin-top:16px}
.sp-aside{border-left:2px solid #16151c1a;padding-left:30px}
.sp-aside-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:16px}
.sp-points{list-style:none;margin:0;display:flex;flex-direction:column;gap:13px}
.sp-points li{position:relative;padding-left:24px;font-size:14px;font-weight:600;line-height:1.5;color:#16151ccc}
.sp-points li::before{content:"";position:absolute;left:2px;top:7px;width:9px;height:9px;background:var(--accent);border:2px solid var(--ink)}
.sp-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.spon-wall-wrap{margin-top:34px}
.spon-wall-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);text-align:center;margin-bottom:16px}
.spon-wall{display:flex;flex-wrap:wrap;justify-content:center;gap:16px}
.spon-logo{display:grid;place-items:center;min-width:170px;height:92px;padding:16px 22px;
  background:var(--white);border:2.5px solid var(--ink);box-shadow:5px 5px 0 var(--ink);transition:transform .12s,box-shadow .12s}
.spon-logo:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}
.spon-logo img{max-height:52px;width:auto;object-fit:contain}
@media(max-width:900px){
  .sp-body{grid-template-columns:1fr;gap:26px}
  .spon-pitch{padding:26px 22px 26px}
  .sp-aside{border-left:0;border-top:2px solid #16151c1a;padding-left:0;padding-top:22px}
}

.carousel{position:relative}
.cs-rail{display:flex;align-items:center;gap:14px;padding:9px 14px;background:var(--ink);border:2.5px solid var(--ink);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:#e7e3ef}
.cs-rail::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:14px 0 0 var(--orange),28px 0 0 var(--green);margin-right:18px}
.cs-rail .cs-frames{margin-left:auto;color:#ffffff66;letter-spacing:.34em}
.ring-stage{position:relative;height:648px;margin-top:8px;perspective:1500px;perspective-origin:50% 44%;
  overflow:hidden;cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.ring-stage.drag{cursor:grabbing}
.ring{position:absolute;left:50%;top:44%;width:0;height:0;transform-style:preserve-3d;
  transform:rotateX(-5deg) rotateY(var(--ry,0deg))}
.ring-card{position:absolute;left:0;top:0;width:320px;height:336px;margin:-168px 0 0 -160px;
  transform:rotateY(var(--a)) translateZ(var(--radius,500px));backface-visibility:hidden;
  background:var(--white);border:2.5px solid var(--ink);box-shadow:8px 8px 0 var(--ink);
  cursor:pointer;will-change:transform,opacity;transition:box-shadow .2s}
.ring-card.is-front{box-shadow:13px 15px 0 var(--ink)}
.ring-card::after{content:"";position:absolute;left:0;top:0;width:100%;height:8px;background:var(--pc,var(--ink));z-index:3}
.rc-img{position:relative;height:232px;overflow:hidden;border-bottom:2.5px solid var(--ink);
  background:repeating-linear-gradient(45deg,var(--white) 0 9px,#16151c0d 9px 10px)}
.rc-img image-slot{position:absolute;inset:0;width:100%;height:100%;display:block}
.rc-pn{position:absolute;top:13px;left:11px;z-index:2;font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);background:var(--white);border:1.5px solid var(--ink);padding:3px 6px;pointer-events:none}
.rc-cap{display:flex;align-items:center;gap:11px;padding:0 16px;height:96px}
.rc-yr{font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:.04em;color:#fff;background:var(--pc,var(--ink));border:2px solid var(--ink);padding:4px 7px;flex:none}
.rc-t{font-weight:900;font-size:18px;letter-spacing:-.01em;line-height:1.08;color:var(--ink)}
.ring-nav{position:absolute;top:44%;transform:translateY(-50%);z-index:10;width:54px;height:54px;
  background:var(--white);border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);cursor:pointer;
  font-family:var(--mono);font-size:28px;line-height:1;color:var(--ink);display:grid;place-items:center;
  transition:transform .12s,box-shadow .12s}
.ring-nav:hover{transform:translateY(-50%) translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}
.ring-nav:active{transform:translateY(-50%) translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}
.ring-nav.prev{left:10px}.ring-nav.next{right:10px}
@media(max-width:760px){
  .ring-stage{height:380px;perspective:1300px;perspective-origin:50% 46%}
  .ring{transform:rotateX(-4deg) rotateY(var(--ry,0deg))}
  .ring-card{--radius:300px;width:190px;height:218px;margin:-109px 0 0 -95px;border-width:2px;box-shadow:5px 5px 0 var(--ink)}
  .ring-card.is-front{box-shadow:8px 9px 0 var(--ink)}
  .ring-card::after{height:6px}
  .rc-img{height:142px;border-bottom-width:2px}
  .rc-cap{height:78px;padding:0 11px;gap:8px}
  .rc-yr{font-size:10px;padding:2px 5px;border-width:1.5px}
  .rc-t{font-size:13.5px}
  .ring-nav{width:40px;height:40px;font-size:20px;box-shadow:3px 3px 0 var(--ink)}
  .ring-nav.prev{left:6px}.ring-nav.next{right:6px}
}

.day-track{position:relative}
.day-rail{position:absolute;left:17px;top:0;width:3px;height:0;transform:translateX(-50%);background:#16151c1a;z-index:0;border-radius:2px}
.day-fill{position:absolute;left:0;top:0;width:100%;height:100%;background:var(--accent);transform:scaleY(0);transform-origin:top center;border-radius:2px;will-change:transform}
.day-track .step{position:relative;z-index:1}
.sdot{transition:background .3s,color .3s,border-color .3s,transform .3s,box-shadow .3s}
.step .sdot.done{background:var(--accent);color:#fff;box-shadow:3px 3px 0 var(--ink);transform:scale(1.05)}

/* Why-sponsor accordion, and the resources page. Both reuse .faq-list. */
/* The sponsor reasons live inside the pitch plate, ruled off from the body the
   same way .sp-aside is. They were three bolted plates of their own, which
   competed with the box they belong to; this is the quiet version: hairline
   rows, a small square switch, no fills or shadows. */
.spon-why{margin-top:32px;border-top:2px solid #16151c1a;padding-top:24px}
.spon-why-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-soft);margin-bottom:4px}
.spon-why .faq-list{border-top:0;background:none}
.spon-why .faq-item{border:0;border-bottom:1.5px solid #16151c1a;background:none;box-shadow:none;--fc:var(--accent)}
.spon-why .faq-item:last-child{border-bottom:0}
.spon-why .faq-item::before{display:none}
.spon-why .faq-q{gap:14px;padding:15px 2px}
.spon-why .faq-q:hover{background:none}
.spon-why .faq-q:hover .faq-tx,.spon-why .faq-item.open .faq-tx{color:var(--accent)}
.spon-why .faq-n{width:24px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink-soft)}
.spon-why .faq-tx{font-family:var(--sans);font-weight:800;font-size:16.5px;letter-spacing:-.005em;
  line-height:1.3;transition:color .2s}
.spon-why .faq-tog{align-self:center;flex:none;width:21px;height:21px;border-radius:0;
  border:2px solid #16151c3d;background:none;transform:none!important;transition:border-color .2s}
.spon-why .faq-tog::before,.spon-why .faq-tog::after{content:"";position:absolute;left:50%;top:50%;
  border:0;background:var(--ink-soft);transform:translate(-50%,-50%);transition:background .2s,opacity .22s}
.spon-why .faq-tog::before{width:9px;height:2px}
.spon-why .faq-tog::after{width:2px;height:9px}
.spon-why .faq-item.open .faq-tog{background:none;border-color:var(--accent)}
.spon-why .faq-item.open .faq-tog::before,.spon-why .faq-item.open .faq-tog::after{background:var(--accent)}
.spon-why .faq-item.open .faq-tog::after{opacity:0}
.spon-why .faq-a p{padding:0 2px 18px 38px;font-size:14.5px;line-height:1.6;color:#16151cb3}
@media(max-width:620px){.spon-why .faq-a p{padding-left:38px}}

.faq-list{border-top:2.5px solid var(--ink)}
.faq-item{position:relative;border-bottom:2.5px solid var(--ink);--fc:var(--red)}
.faq-item:nth-child(2){--fc:var(--blue)}
.faq-item:nth-child(3){--fc:var(--green)}
.faq-item:nth-child(4){--fc:var(--orange)}
.faq-item:nth-child(5){--fc:var(--violet)}
.faq-item:nth-child(6){--fc:var(--magenta)}
.faq-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--fc);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.16,.84,.24,1);z-index:1}
.faq-item.open::before{transform:scaleX(1)}
.faq-q{display:flex;align-items:center;gap:20px;width:100%;background:none;border:0;cursor:pointer;text-align:left;
  padding:24px 18px 24px 28px;font-family:inherit;color:var(--ink);transition:background .25s}
.faq-q:hover{background:#16151c06}
.faq-n{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--fc);flex:none;width:40px}
.faq-tx{font-weight:900;font-size:clamp(17px,1.9vw,22px);letter-spacing:-.01em;line-height:1.16;flex:1}
.faq-tog{flex:none;width:34px;height:34px;border:2.5px solid var(--ink);border-radius:50%;background:var(--white);position:relative;transition:background .25s,transform .35s cubic-bezier(.34,1.4,.5,1)}
.faq-tog::before{content:"";position:absolute;left:50%;top:44%;width:9px;height:9px;border-right:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink);transform:translate(-50%,-50%) rotate(45deg);transition:border-color .25s}
.faq-item.open .faq-tog{background:var(--fc);transform:rotate(180deg)}
.faq-item.open .faq-tog::before{border-color:#fff}
.faq-a{height:0;overflow:hidden}
.faq-a-in{overflow:hidden}
.faq-a p{font-size:15.5px;font-weight:600;line-height:1.62;color:#16151ccc;padding:0 28px 26px 108px;max-width:780px}
.faq-a p b{color:var(--ink)}
@media(max-width:620px){.faq-a p{padding-left:28px}}
@media(max-width:600px){
  .faq-q{gap:13px;padding:20px 12px 20px 18px}
  .faq-n{width:auto}
  .faq-a p{padding:0 18px 22px 18px}
}

#ambient{position:fixed;inset:0;z-index:2;pointer-events:none}
.soundwrap{position:fixed;left:18px;bottom:18px;z-index:62;display:flex;flex-direction:column;align-items:flex-start;gap:11px}
.soundtoggle{display:flex;align-items:center;gap:10px;
  padding:9px 14px 9px 11px;background:var(--white);border:2.5px solid var(--ink);box-shadow:4px 4px 0 var(--ink);
  cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);
  transition:transform .12s,box-shadow .12s}
.soundtoggle:hover{transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}
.soundtoggle:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}
.soundtoggle .sl b{color:var(--accent);font-weight:700}
/* effects toggle: same chassis as the ambient one, different glyph so the two
   are told apart at a glance */
.soundtoggle .sfxi{flex:none;width:18px;height:18px;display:block}
.soundtoggle .sfxi svg{width:100%;height:100%;display:block;fill:none;stroke:var(--ink);
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:stroke .25s}
.soundtoggle.on .sfxi svg{stroke:var(--accent)}
.soundtoggle.on .sfxi svg path:last-child{animation:sfxspark 1.6s ease-in-out infinite}
@keyframes sfxspark{0%,100%{opacity:.35}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.soundtoggle.on .sfxi svg path:last-child{animation:none}}

.soundtoggle .eq{display:flex;align-items:flex-end;gap:2.5px;width:18px;height:15px}
.soundtoggle .eq i{flex:1;height:32%;background:var(--ink);transition:background .25s}
.soundtoggle.on .eq i{background:var(--accent);animation:eqbar .9s ease-in-out infinite}
.soundtoggle.on .eq i:nth-child(2){animation-delay:.15s}
.soundtoggle.on .eq i:nth-child(3){animation-delay:.30s}
.soundtoggle.on .eq i:nth-child(4){animation-delay:.45s}
@keyframes eqbar{0%,100%{height:24%}50%{height:100%}}

@media(max-width:760px){.soundwrap{display:none}}

.stage .part[data-drag]{cursor:grab;touch-action:pan-y}
.stage .part[data-drag]:active{cursor:grabbing}
.stage .part[data-drag],.stage .part[data-drag] *{user-select:none;-webkit-user-select:none}
.btn.magnet{transition:transform .12s,box-shadow .12s,translate .55s cubic-bezier(.22,1.7,.36,1)}
.navcta.magnet{transition:translate .55s cubic-bezier(.22,1.7,.36,1)}
.statement h2 .w:hover{animation:wjig .5s cubic-bezier(.36,.07,.19,.97)}
@keyframes wjig{
  20%{transform:translate(-2px,1px) rotate(-2deg)}
  40%{transform:translate(3px,-2px) rotate(2deg)}
  60%{transform:translate(-3px,1px) rotate(-1.4deg)}
  80%{transform:translate(2px,0) rotate(1deg)}
}
.cd .v.tick{animation:tickpop .32s ease-out}
@keyframes tickpop{0%{transform:translateY(-3px) scale(1.06)}100%{transform:none}}
@media(prefers-reduced-motion:reduce){
  .statement h2 .w:hover{animation:none}
  .cd .v.tick{animation:none}
}

.cornerbolt{touch-action:none;
  cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 24 24'><path fill='%2316151c' stroke='%23faf7f0' stroke-width='1.2' d='M21.6 18.4l-6.8-6.8a5.6 5.6 0 0 0-7.3-7.3l3.5 3.5-2.9 2.9-3.5-3.5a5.6 5.6 0 0 0 7.3 7.3l6.8 6.8a1.6 1.6 0 0 0 2.3 0l.6-.6a1.6 1.6 0 0 0 0-2.3z'/></svg>") 13 13, grab}
.cornerbolt::before{content:"";position:absolute;inset:-15px;border-radius:50%}
.torq{position:absolute;z-index:90;translate:-50% 0;display:none;
  font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  background:var(--ink);color:#fff;padding:4px 9px;pointer-events:none;white-space:nowrap}
.cornerbolt.rescrew{transition:rotate 1.15s cubic-bezier(.5,.05,.3,1),opacity .3s,scale .4s !important}

.podzone{position:relative;display:grid;grid-template-columns:1fr 340px;gap:48px;align-items:end;margin-top:54px}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:0;max-width:680px;width:100%;justify-self:center}
.pstep{display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.pblock{position:relative;width:100%;border:3px solid var(--ink);background:var(--white);box-shadow:6px 6px 0 var(--ink);
  display:flex;align-items:flex-end;justify-content:center;overflow:hidden;
  background-image:repeating-linear-gradient(-45deg,transparent 0 14px,#16151c0d 14px 17px)}
.s1 .pblock{height:190px;background-color:#fff}
.s2 .pblock{height:128px;margin-right:-3px}
.s3 .pblock{height:92px;margin-left:-3px}
.pnum{font-family:var(--mono);font-weight:800;font-size:64px;line-height:.8;letter-spacing:-.04em;color:#16151c1f;margin-bottom:10px}
.s1 .pnum{font-size:96px;color:#bd203f24}
.pcrate{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:0 14px 16px}
.pplace{font-family:var(--mono);font-weight:800;font-size:13px;letter-spacing:.22em;text-transform:uppercase;
  background:var(--ink);color:#fff;padding:4px 12px}
.s1 .pplace{background:var(--red)}
.pgets{font-family:var(--mono);font-size:10.5px;line-height:1.7;letter-spacing:.1em;text-transform:uppercase;color:#16151cbb}

.pstep{translate:0 36px;opacity:0;transition:translate .7s cubic-bezier(.2,1.4,.36,1),opacity .45s}
.podzone.in .s3{transition-delay:.05s}
.podzone.in .s2{transition-delay:.2s}
.podzone.in .s1{transition-delay:.38s}
.podzone.in .pstep{translate:0 0;opacity:1}
@media(prefers-reduced-motion:reduce){.pstep{translate:0 0;opacity:1;transition:none}}

.trophy{position:relative;display:flex;flex-direction:column;align-items:center;margin-bottom:14px;cursor:pointer;
  background:none;border:none;padding:6px 10px;filter:drop-shadow(5px 5px 0 #16151c2e)}
.trophy:hover .t-cup{rotate:-3deg}
.trophy.pop .t-cup{animation:cuppop .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes cuppop{30%{translate:0 -10px;rotate:4deg}60%{translate:0 2px}}
.t-cup{position:relative;width:74px;height:58px;background:var(--orange);border:3px solid var(--ink);
  border-radius:0 0 37px 37px;transition:rotate .25s;display:flex;align-items:center;justify-content:center}
.t-h{position:absolute;top:4px;width:22px;height:30px;border:3px solid var(--ink);border-radius:50%;z-index:-1;background:transparent}
.t-h.l{left:-19px;border-right:none}
.t-h.r{right:-19px;border-left:none}
.t-star{width:18px;height:18px;background:var(--ink);clip-path:polygon(50% 0,63% 35%,98% 35%,70% 57%,81% 91%,50% 70%,19% 91%,30% 57%,2% 35%,37% 35%)}
.t-stem{width:16px;height:14px;background:var(--orange);border:3px solid var(--ink);border-top:none}
.t-base{width:58px;height:14px;background:var(--ink);border:3px solid var(--ink)}
.confetti{position:absolute;inset:0;pointer-events:none;z-index:40;overflow:visible}
.confetti span{position:absolute;left:0;top:0;will-change:transform}

.oec{border:3px solid var(--ink);background:var(--white);box-shadow:7px 7px 0 var(--ink);padding:26px 28px 24px;align-self:center}
.oec h3{font-family:var(--disp);font-weight:400;font-size:30px;line-height:.96;letter-spacing:.005em;margin-bottom:14px}
.oec h3 em{font-style:normal;color:var(--red)}
.oec p{font-size:14.5px;line-height:1.62;font-weight:600;color:#16151ccc}
@media(max-width:980px){.podzone{grid-template-columns:1fr;gap:40px}.oec{max-width:520px;justify-self:center}}
/* Three podium columns inside ~350px leaves about 80px of text width per
   crate, which the tracked-out mono caption overshoots -- it spilled past the
   blocks on a 390px phone. Tighten the caption rather than let it bleed. */
@media(max-width:560px){
  .pcrate{padding:0 4px 12px;gap:4px;min-width:0}
  .pplace{font-size:11px;letter-spacing:.12em;padding:3px 7px}
  .pgets{font-size:9px;line-height:1.6;letter-spacing:.02em;overflow-wrap:break-word}
  .pnum{font-size:48px}
  .s1 .pnum{font-size:68px}
}

.venue-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:36px;align-items:stretch;margin-top:54px}
.venue-plate{display:flex;flex-direction:column;border:3px solid var(--ink);background:var(--white);box-shadow:10px 10px 0 var(--ink);min-height:380px}
.vp-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;background:var(--ink);color:#e7e3ef;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase}
.vp-body{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:52px 24px;
  background-image:linear-gradient(#3375d512 1px,transparent 1px),linear-gradient(90deg,#3375d512 1px,transparent 1px);
  background-size:28px 28px}
.vp-cross{position:absolute;width:18px;height:18px;
  background:linear-gradient(var(--ink),var(--ink)) center/100% 2px no-repeat,linear-gradient(var(--ink),var(--ink)) center/2px 100% no-repeat;opacity:.4}
.vp-cross.tl{left:14px;top:14px}.vp-cross.tr{right:14px;top:14px}.vp-cross.bl{left:14px;bottom:14px}.vp-cross.br{right:14px;bottom:14px}
.vp-stamp{transform:rotate(-6deg);font-family:var(--mono);font-weight:800;font-size:clamp(22px,3vw,34px);line-height:1.2;letter-spacing:.14em;
  text-transform:uppercase;text-align:center;color:var(--accent);border:4px solid var(--accent);padding:14px 26px;background:#ffffffd9}
.vp-sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);text-align:center}
.vp-titleblock{display:grid;grid-template-columns:1fr;border-top:2.5px solid var(--ink)}
.vp-titleblock>div{display:flex;flex-direction:column;gap:4px;padding:10px 14px;border-right:2px solid #16151c26}
.vp-titleblock>div:last-child{border-right:none}
.vp-titleblock b{font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft)}
.vp-titleblock span{font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.venue-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.vfact{background:var(--white);border:2.5px solid var(--ink);box-shadow:6px 6px 0 var(--ink);padding:16px 18px}
.vfact .vf-k{display:block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:7px}
.vfact .vf-v{display:block;font-size:14px;font-weight:600;line-height:1.55;color:#16151ccc}
.vaddr{display:block;border:3px solid var(--ink);background:var(--ink);color:#fff;box-shadow:6px 6px 0 #16151c40;
  padding:13px 16px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  text-decoration:none;text-align:center;transition:translate .15s,box-shadow .15s;margin-top:auto}
.vaddr:hover{translate:-2px -2px;box-shadow:8px 8px 0 #16151c40}
@media(max-width:980px){.venue-grid{grid-template-columns:1fr}}

/* ---- venue 3d model ---- */
.v3d-body{padding:0;min-height:400px;overflow:hidden;background:#efeee6}
.v3d-body canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y;cursor:grab}
.v3d-body canvas:active{cursor:grabbing}
.v3d-body .vp-cross{z-index:2;pointer-events:none}
.v3d-label{position:absolute;left:22px;top:20px;z-index:2;pointer-events:none;display:flex;flex-direction:column;gap:7px}
.v3d-label b{font-family:var(--disp);font-weight:400;font-size:clamp(26px,3vw,38px);line-height:.92;text-transform:uppercase;letter-spacing:.01em;color:var(--ink)}
.v3d-label span{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}
.v3d-hint{position:absolute;left:22px;bottom:18px;z-index:2;pointer-events:none;font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.v3d-open{position:absolute;right:18px;bottom:16px;z-index:3;border:2.5px solid var(--ink);background:var(--white);padding:9px 14px;
  font-family:var(--mono);font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;
  box-shadow:4px 4px 0 var(--ink);transition:translate .15s,box-shadow .15s,background .15s}
.v3d-open:hover{translate:-2px -2px;box-shadow:6px 6px 0 var(--ink);background:var(--paper)}
.v3d-fallback{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:1}
.v3d-body.no3d .v3d-fallback{display:flex}
.v3d-body.no3d .v3d-hint{display:none}
/* Intro copy swaps when the 3D model could not be built (see index.html). */
.v3d-nope{display:none}
.venue.no3d .v3d-only{display:none}
.venue.no3d .v3d-nope{display:inline}
@media(max-width:760px){.v3d-body{min-height:320px}.v3d-hint{display:none}}

/* ---- venue floor plan modal ---- */
.venue-modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px}
.venue-modal[hidden]{display:none}
.vm-backdrop{position:absolute;inset:0;background:#16151ccc;animation:smFade .2s ease}
.vm-card{position:relative;z-index:1;background:var(--paper);border:3px solid var(--ink);box-shadow:14px 14px 0 rgba(22,21,28,.9);
  width:min(1080px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:26px 28px 26px}
.vm-card h3{font-family:var(--disp);font-weight:400;font-size:42px;line-height:.9;letter-spacing:.005em}
.vm-card h3 em{font-style:normal;color:var(--accent)}
.vm-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);gap:22px;align-items:start}
@media(max-width:900px){.vm-grid{grid-template-columns:1fr}.vm-card h3{font-size:34px}}

.venue-map{border:3px solid var(--ink);background:#fff;box-shadow:8px 8px 0 var(--ink);padding:10px}
.venue-map svg{display:block;width:100%;height:auto}
.vshell{fill:#fff;stroke:var(--ink);stroke-width:5}
.vstreet,.vnorth text,.rlab,.pin text{font-family:var(--mono);text-transform:uppercase}
.vstreet{font-size:13px;letter-spacing:.3em;fill:#16151c59;font-weight:700}
.vnorth circle{fill:none;stroke:var(--ink);stroke-width:2.5}
.vnorth line{stroke:var(--ink);stroke-width:2.5}
.vnorth path{fill:var(--ink)}
.vnorth text{font-size:12px;font-weight:800;fill:var(--ink)}
.room{cursor:pointer;outline:none}
.room .rm{fill:#fff;stroke:var(--ink);stroke-width:2.5;transition:fill .2s}
.room .furn rect{fill:none;stroke:#16151c4d;stroke-width:1.5;stroke-dasharray:4 3}
.room .rlab{font-size:13px;letter-spacing:.16em;font-weight:700;fill:#16151c9c;pointer-events:none}
.room .pin circle{fill:var(--ink);transition:fill .2s}
.room .pin text{font-size:11px;font-weight:800;fill:#fff;pointer-events:none}
.room.act .rm,.room:focus-visible .rm{fill:url(#vhatch);stroke:var(--red);stroke-width:3.5}
.room.act .pin circle{fill:var(--red)}
.room.act .rlab{fill:var(--ink)}
.venue-list{display:flex;flex-direction:column;border:3px solid var(--ink);background:var(--white);box-shadow:7px 7px 0 var(--ink)}
.vroom{display:flex;align-items:center;gap:14px;text-align:left;background:none;border:none;border-bottom:2px solid #16151c22;
  padding:11px 16px;cursor:pointer;font-family:inherit;transition:background .15s}
.vroom:last-child{border-bottom:none}
.vroom .vr-n{flex:none;width:24px;height:24px;display:grid;place-items:center;background:var(--ink);color:#fff;
  font-family:var(--mono);font-weight:800;font-size:11px}
.vroom .vr-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.vroom .vr-name{font-weight:800;font-size:14.5px;letter-spacing:-.01em}
.vroom .vr-desc{font-size:12px;font-weight:600;color:#16151c8c;line-height:1.35}
.vroom .vr-time{margin-left:auto;flex:none;font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#16151c73}
.vroom.act{background:#bd203f12}
.vroom.act .vr-n{background:var(--red)}
.vroom.act .vr-time{color:var(--red)}

/* ---- resources page ----

   resources.html shipped with this markup but no rules for it, so the page
   rendered as raw browser defaults. The blocks follow the same plate language
   as .spon-pitch / .foot-signup: white, 3px ink border, hard offset shadow.
   Each block sets --rc inline to the accent it is keyed to. */
.res-block{position:relative;background:var(--white);border:3px solid var(--ink);
  box-shadow:10px 10px 0 var(--ink);padding:34px 38px 32px;margin-bottom:36px}
.res-block::before{content:"";position:absolute;left:-3px;top:-3px;bottom:-3px;width:10px;
  background:var(--rc,var(--accent))}
.res-k{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.2em;
  text-transform:uppercase;color:var(--rc,var(--accent));margin-bottom:13px}
.res-block h2{font-family:var(--disp);font-weight:400;font-size:clamp(29px,3.2vw,42px);
  line-height:.96;letter-spacing:.005em}
.res-block > p{font-size:15px;font-weight:600;line-height:1.6;color:#16151ccc;
  margin-top:15px;max-width:660px}
.res-links{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:12px;margin-top:26px}
.res-links.one{grid-template-columns:minmax(0,340px)}
.res-link{display:flex;align-items:center;gap:12px;padding:13px 15px;background:var(--paper);
  border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);color:var(--ink);text-decoration:none;
  transition:transform .12s,box-shadow .12s,background .12s}
.res-link:hover{background:var(--white);transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--ink)}
.res-link:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}
/* a document: white page with the block's accent as its footer band */
.rl-ic{flex:none;width:17px;height:21px;border:2px solid var(--ink);
  background:linear-gradient(var(--white) 62%,var(--rc,var(--accent)) 62%)}
.rl-tx{flex:1;font-family:var(--sans);font-weight:800;font-size:14.5px;letter-spacing:-.005em;line-height:1.25}
.rl-ar{flex:none;font-family:var(--mono);font-weight:700;font-size:14px;color:var(--ink-soft);
  transition:transform .12s,color .12s}
.res-link:hover .rl-ar{color:var(--rc,var(--accent));transform:translateX(3px)}
.res-note{font-family:var(--mono);font-size:11px;letter-spacing:.06em;line-height:1.7;
  color:var(--ink-soft);margin-top:20px}
#resources .cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}

/* ---- mobile ---- */
@media(max-width:760px){
  /* hero: drop the scaled 1280px stage, stack a readable layout */
  .hero{height:auto;min-height:0;display:block;padding:104px 18px 48px}
  .stagewrap{transform:none!important;position:static;width:100%;height:auto;
    display:flex;flex-direction:column;align-items:center;gap:20px}
  .col{position:static;left:auto;top:auto;width:100%;max-width:460px;margin:0 auto;text-align:center}
  .col .meta{margin-top:14px}
  .col h1{font-size:clamp(36px,11.5vw,54px)}
  .col p{max-width:none;margin-left:auto;margin-right:auto}
  .col .cta{flex-direction:column;align-items:stretch;max-width:340px;margin-left:auto;margin-right:auto}
  .col .cta .btn{justify-content:center}
  .hero-hint{display:none}
  .scrollcue{display:none}

  /* keep only the countdown from the stage */
  .stage{position:static;inset:auto;width:100%;height:auto;
    display:flex;flex-direction:column;align-items:center;gap:14px}
  .stage .baseplate,.stage .cornerbolt,.stage .accent,.stage .ltr,
  .stage .torq{display:none!important}
  .divider{position:static;left:auto;top:auto;width:100%;max-width:340px;margin:0 auto;
    transform:none!important;opacity:1!important}
  .clock{position:static;left:auto;top:auto;width:100%;transform:none!important;gap:3px;margin:0 auto}
  .clock .cd{transform:none!important;opacity:1!important}
  .cd .v{font-size:clamp(40px,13vw,60px)}
  .colon{font-size:clamp(30px,10vw,48px);padding-bottom:22px}

  /* typography + spacing */
  .section{padding:66px 20px}
  .crew{padding:66px 0}
  .crew .sec-head{padding:0 20px}
  .sec-head{margin-bottom:36px}
  .sec-tag{display:none}
  .sec-title{font-size:clamp(40px,12vw,62px)}
  .sec-sub{max-width:none}
  .statement{padding:96px 20px 84px}
  .cta-inner{padding:60px 20px;gap:24px}
  .cta-inner h2{font-size:clamp(40px,12vw,64px)}
  .podium{max-width:100%}
  .pgets{font-size:9.5px}
  .sitefoot{padding:0 20px 48px}
  .foot-top{grid-template-columns:1fr;gap:30px;padding:52px 0 0}
  .foot-contact p{max-width:none}

  .res-block{padding:26px 22px 24px;margin-bottom:26px;box-shadow:7px 7px 0 var(--ink)}
  .res-block > p{max-width:none}
  .res-links,.res-links.one{grid-template-columns:1fr}
  #resources .cta{flex-direction:column;align-items:stretch}
  #resources .cta .btn{justify-content:center}
}

@media(max-width:420px){
  .podium{grid-template-columns:1fr 1.1fr 1fr}
  .pplace{font-size:11px;padding:3px 8px}
  .pgets{font-size:9px;letter-spacing:.06em}
  .cd .v{font-size:clamp(34px,12vw,52px)}
  .col h1{font-size:clamp(32px,10vw,44px)}
}
