/* demo 1 — the living coordinate plane
   the whole site sits on graph paper; the hero is a real cartesian plane,
   headings are set in STIX Two (the typeface family of math typesetting) */

:root{
  --paper:#1f3070;
  --sheet:#27397e;
  --ink:#f6f3e8;
  --muted:#ccd5ef;
  --grid:rgba(143,132,255,.14);
  --grid2:rgba(143,132,255,.28);
  --violet:#8f84ff;
  --coral:#ff6b5b;
  --gold:#ffc857;
  --mint:#54d7b7;
  --line:rgba(196,205,240,.22);
  --deep:#182864;
  --panel:#233472;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
section,footer{scroll-margin-top:56px}

body{
  overflow-x:hidden;
  background:
    linear-gradient(145deg,rgba(84,215,183,.12),transparent 28%),
    linear-gradient(28deg,transparent 0 58%,rgba(255,200,87,.08) 58% 62%,transparent 62%),
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px),
    var(--paper);
  background-size:auto,auto,26px 26px,26px 26px,auto;
  color:var(--ink);
  font:16.5px/1.65 "Public Sans",system-ui,sans-serif;
}

a{color:var(--violet)}
a:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
img{max-width:100%}

h1,h2,h3{font-family:"STIX Two Text",Georgia,serif;font-weight:600}
.mono,.eyebrow,.coords,.hint,.story .date,.sessions span,.tier-label,
.ruler-strip{font-family:"IBM Plex Mono",ui-monospace,monospace}

/* ------------------------------------------------- nav */
body>nav{
  position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;
  flex-wrap:wrap;padding:7px clamp(16px,5vw,64px);
  background:rgba(30,45,104,.9);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  box-shadow:0 12px 30px rgba(0,0,0,.18);
}
body>nav .links{margin-left:auto;display:flex;gap:4px 18px;flex-wrap:wrap;align-items:center}
body>nav .links a{color:#dfe5ff;text-decoration:none;font-weight:600;font-size:14px;position:relative}
body>nav .links a::after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:2px;
  background:var(--coral);transition:right .18s}
body>nav .links a:hover{color:var(--gold)}
body>nav .links a:hover::after{right:0}
body>nav .join{background:var(--gold);color:#171c33 !important;padding:7px 16px;border-radius:4px}
body>nav .join::after{display:none}
body>nav .join:hover{background:var(--mint)}

/* ------------------------------------------------- hero: the plane */
header{
  position:relative;overflow:hidden;
  padding:28px clamp(18px,4vw,58px) 30px;
  background:
    linear-gradient(115deg,transparent 0 14%,rgba(84,215,183,.13) 14% 19%,transparent 19% 46%,rgba(255,200,87,.12) 46% 50%,transparent 50%),
    linear-gradient(rgba(143,132,255,.12) 1px,transparent 1px),
    linear-gradient(90deg,rgba(143,132,255,.12) 1px,transparent 1px),
    linear-gradient(180deg,#26397f 0%,#1f3070 78%,#253a7c 100%);
  background-size:auto,26px 26px,26px 26px,auto;
  border-bottom:1px solid var(--line);
}
header::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(72deg,transparent 0 12%,rgba(143,132,255,.18) 12.3% 12.8%,transparent 13.1% 48%,
      rgba(84,215,183,.18) 48.3% 48.9%,transparent 49.2%),
    linear-gradient(0deg,rgba(255,255,255,.05),transparent 38%);
  mix-blend-mode:screen;
}

.hero-shell{
  position:relative;z-index:1;display:grid;grid-template-columns:1fr;
  gap:8px;justify-items:center;max-width:1120px;margin:0 auto;
}
.hero-in{position:relative;max-width:820px;min-width:0;padding-top:6px;text-align:center}
.hero-brand{display:flex;align-items:center;justify-content:center;gap:20px;
  margin-bottom:14px;text-align:left}
.hero-brand img{width:148px;height:148px;object-fit:contain;
  filter:drop-shadow(0 0 22px rgba(255,200,87,.5))}
.hero-brand strong{display:block;font:600 clamp(30px,3.6vw,46px)/1.05 "STIX Two Text",Georgia,serif;color:#fff}
.hero-brand small{display:block;margin-top:8px;font:600 14px/1 "IBM Plex Mono",ui-monospace,monospace;
  letter-spacing:.1em;text-transform:lowercase;color:var(--mint)}
.eyebrow{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:13px;font-weight:600;letter-spacing:.04em;color:var(--mint);
  margin-bottom:18px;overflow-wrap:anywhere;
}
.formula-badge{
  width:min(620px,100%);display:grid;grid-template-columns:auto 1fr;align-items:center;
  gap:7px 10px;padding:10px 13px 11px;border-radius:8px;margin:0 auto 14px;
  background:
    linear-gradient(90deg,rgba(84,215,183,.42) 0 2px,transparent 2px),
    linear-gradient(135deg,rgba(45,66,142,.82),rgba(35,52,118,.54));
  border:1px solid rgba(139,235,214,.34);
  box-shadow:0 18px 34px rgba(0,0,0,.22),inset 0 1px rgba(255,255,255,.07);
  backdrop-filter:blur(9px);
}
.badge-dot{
  grid-row:1/3;width:13px;height:13px;border-radius:50%;background:var(--mint);
  box-shadow:0 0 0 5px rgba(84,215,183,.15),0 0 20px rgba(84,215,183,.62);
}
.formula-core{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;line-height:1.08}
.formula-badge .calc-integral{
  color:var(--coral);font-family:"STIX Two Text",Georgia,serif;font-size:34px;line-height:.8;
  filter:drop-shadow(0 0 10px rgba(255,107,91,.35));
}
.limit-stack{display:inline-grid;grid-template-rows:auto auto;gap:1px;margin-left:-5px;margin-right:2px;
  font:600 9px/1 "IBM Plex Mono",ui-monospace,monospace;color:#d9e1ff;text-transform:uppercase}
.limit-stack sup,.limit-stack sub{position:static;font-size:9px;line-height:1;letter-spacing:.05em}
.formula-sum{color:#f8fbff;font-size:13px;letter-spacing:0}
.formula-dx{color:var(--mint);font-size:13px;letter-spacing:0}
.formula-eq{color:var(--gold);font-size:16px}
.formula-domain{
  color:#101a33;background:var(--gold);border-radius:999px;padding:4px 9px;
  font-size:12px;letter-spacing:.01em;box-shadow:0 0 18px rgba(255,200,87,.22);
}
.formula-joke{
  grid-column:2;font-size:10.5px;line-height:1.1;letter-spacing:.08em;text-transform:uppercase;
  color:#9ff0dc;
}
.calc-frac{
  display:inline-grid;place-items:center;line-height:1;color:#fff;
  font-family:"STIX Two Text",Georgia,serif;font-size:17px;margin-right:1px;
}
.calc-frac span:first-child{border-bottom:1.5px solid currentColor;padding:0 4px 2px}
.calc-frac span:last-child{padding-top:2px}
.calc-name{color:#fff;font-family:"STIX Two Text",Georgia,serif;font-size:18px;font-weight:600}
.calc-arg{color:var(--gold);font-family:"IBM Plex Mono",ui-monospace,monospace}
.calc-integral{color:var(--coral);font-family:"STIX Two Text",Georgia,serif;font-size:24px;line-height:0}
.eyebrow sub,.eyebrow sup{font-size:10px;letter-spacing:0;color:#cbd3ff}
h1{font-size:clamp(36px,5.1vw,68px);line-height:1.04;letter-spacing:0;color:var(--ink)}
h1 em{font-style:italic;color:var(--violet);
  background:linear-gradient(transparent 78%,rgba(143,132,255,.26) 78%)}
h1 em:last-of-type{color:var(--coral);
  background:linear-gradient(transparent 78%,rgba(255,107,91,.25) 78%)}
.lede{margin:14px auto 0;max-width:64ch;color:var(--muted);overflow-wrap:anywhere}

.cta-row{margin-top:18px;display:flex;gap:14px;flex-wrap:wrap;justify-content:center}
.btn{
  display:inline-block;background:var(--gold);color:#171c33;text-decoration:none;
  font-weight:600;font-size:15.5px;padding:12px 26px;border-radius:4px;
  border:2px solid var(--gold);transition:background .15s,transform .15s,border-color .15s;
}
.btn:hover{background:var(--mint);border-color:var(--mint);transform:translateY(-2px)}
.btn.ghost{background:rgba(255,255,255,.04);color:#f7f9ff;border-color:rgba(196,205,240,.36)}
.btn.ghost:hover{color:var(--gold);border-color:var(--gold);background:rgba(255,200,87,.08)}
header .btn{background:var(--gold);border-color:var(--gold)}
header .btn:hover{background:var(--mint);border-color:var(--mint)}
header .btn.ghost{background:rgba(26,40,94,.36);color:#e9edff;border-color:rgba(196,205,240,.38)}
header .btn.ghost:hover{color:var(--gold);border-color:var(--gold);background:rgba(255,200,87,.08)}

.hero-foot{display:flex;flex-direction:column;align-items:center;gap:22px;
  max-width:1240px;margin:26px auto 0}
.stats{margin:0;display:grid;grid-template-columns:repeat(4,auto);list-style:none;
  border-top:1px dashed rgba(196,205,240,.32);border-bottom:1px dashed rgba(196,205,240,.18);
  padding:18px 0 15px}
.stats b{font-family:"STIX Two Text",serif;font-size:clamp(34px,3.4vw,48px);font-weight:600;
  color:var(--violet);display:block;margin-bottom:6px;line-height:1;
  text-shadow:0 0 30px rgba(143,132,255,.55)}
.stats li:nth-child(even) b{color:var(--gold);text-shadow:0 0 30px rgba(255,200,87,.5)}
.stats li{font:600 11.5px/1.35 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.09em;
  text-transform:uppercase;color:#cdd6f2;text-align:center;padding:0 clamp(16px,3vw,44px)}
.stats li+li{border-left:1px solid rgba(196,205,240,.2)}

.sky-stage{
  position:relative;isolation:isolate;overflow:hidden;justify-self:center;width:100%;
  max-width:1060px;min-width:0;height:clamp(400px,38vw,500px);cursor:crosshair;
  border-radius:14px;border:1px solid rgba(196,205,240,.24);
  background:radial-gradient(130% 100% at 50% 0,#24397f 0%,#182a5f 80%);
  box-shadow:0 26px 60px rgba(0,0,0,.38),inset 0 1px rgba(255,255,255,.06);
  margin-top:14px;
}
.sky-stage::before{
  content:"";position:absolute;inset:0;z-index:3;pointer-events:none;
  background:
    linear-gradient(90deg,transparent 0 49.8%,rgba(84,215,183,.24) 49.8% 50.2%,transparent 50.2%),
    linear-gradient(0deg,transparent 0 49.8%,rgba(255,200,87,.18) 49.8% 50.2%,transparent 50.2%);
  opacity:.42;
}
.sky-stage:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.star{position:absolute;z-index:0;border-radius:50%;background:#fff;pointer-events:none;
  box-shadow:0 0 6px 1px rgba(220,232,255,.28);
  animation:twinkle 3s ease-in-out infinite}
@keyframes twinkle{
  0%,100%{opacity:.9;transform:scale(1)}
  22%{opacity:.35;transform:scale(.86)}
  38%{opacity:.75;transform:scale(.97)}
  60%{opacity:.12;transform:scale(.8)}
  74%{opacity:.6;transform:scale(.94)}
  88%{opacity:.28;transform:scale(.88)}
}
.meteor{
  position:absolute;z-index:2;left:0;top:0;width:340px;height:3px;pointer-events:none;border-radius:999px;
  background:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(170,195,255,.14) 30%,
    rgba(205,220,255,.5) 70%,rgba(255,255,255,.95));
  filter:drop-shadow(0 0 10px rgba(190,210,255,.8));
  offset-rotate:auto;
  animation:meteor var(--dur,5.5s) cubic-bezier(.3,.1,.35,1) both;
}
.meteor::after{content:"";position:absolute;right:-4px;top:-3px;width:9px;height:9px;
  border-radius:50%;background:radial-gradient(circle,#fff 0 38%,rgba(255,255,255,.4) 62%,transparent 72%);
  animation:cometHead .5s ease-in-out infinite alternate}
@keyframes cometHead{
  from{box-shadow:0 0 12px 3px rgba(255,255,255,.55)}
  to{box-shadow:0 0 24px 8px rgba(255,255,255,.95)}
}
@keyframes meteor{
  from{offset-distance:0%;opacity:0}
  10%{opacity:1}
  86%{opacity:1}
  to{offset-distance:100%;opacity:0}
}
@media (max-width:640px){.meteor{width:210px}}
.plane{position:absolute;inset:0;z-index:1;width:100%;height:100%;pointer-events:none}
.constellations{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none}
.constellations line{
  stroke:var(--gold);stroke-width:.48;stroke-linecap:round;
  filter:drop-shadow(0 0 7px rgba(255,200,87,.65));
  transition:opacity .35s ease,stroke-width .35s ease;
}
.constellations line:nth-last-child(1){opacity:.78;stroke-width:.62}
.constellations line:nth-last-child(2){opacity:.52}
.constellations line:nth-last-child(3){opacity:.34}
.constellations line:nth-last-child(4){opacity:.20}
.constellations line:nth-last-child(n+5){opacity:.11}
.axis{stroke:#cdd4f7;stroke-width:2;opacity:.36}
.axis polygon{fill:#cdd4f7;stroke:none}
.curve{fill:none;stroke-width:3;stroke-linecap:round;opacity:.72;
  filter:drop-shadow(0 6px 8px rgba(0,0,0,.45))}
.c1{stroke:#8f84ff}
.c2{stroke:#ff8a73;stroke-width:2.5}
.area{stroke:none;opacity:.5}
.cdepth{fill:none;stroke-width:3;stroke-linecap:round;opacity:.3}
.d1{stroke:#4a3fb8}
.d2{stroke:#b04a38}

.coords{
  position:absolute;z-index:6;top:14px;right:14px;
  font-size:12.5px;font-weight:600;color:#b0a8ff;
  background:rgba(41,60,128,.82);border:1px solid #5a66b8;border-radius:4px;
  padding:5px 10px;pointer-events:none;
}
.sky-invite{
  position:absolute;z-index:6;left:28px;top:24px;display:grid;grid-template-columns:auto 1fr;
  gap:2px 10px;align-items:center;max-width:270px;padding:10px 13px;border-radius:6px;
  color:#f8fbff;background:rgba(30,45,104,.62);border:1px solid rgba(84,215,183,.42);
  box-shadow:0 18px 34px rgba(0,0,0,.22),0 0 24px rgba(84,215,183,.12);
  backdrop-filter:blur(8px);pointer-events:none;
}
.sky-invite span{
  grid-row:1/3;width:12px;height:12px;border-radius:50%;background:var(--mint);
  box-shadow:0 0 0 5px rgba(84,215,183,.16),0 0 20px rgba(84,215,183,.70);
  animation:invitePulse 1.45s ease-in-out infinite;
}
.sky-invite b{font:600 12px/1.1 "IBM Plex Mono",monospace;letter-spacing:.09em;text-transform:uppercase}
.sky-invite small{font:600 11px/1.25 "Public Sans",system-ui,sans-serif;color:#bfc9ef}
@keyframes invitePulse{
  0%,100%{transform:scale(.86);opacity:.72}
  50%{transform:scale(1.12);opacity:1}
}
.dot{position:absolute;z-index:4;pointer-events:none;transform:translate(-50%,-50%)}
.dot i{display:block;width:11px;height:11px;border-radius:50%;
  background:var(--gold);border:2.5px solid #fff;
  box-shadow:0 0 0 1.5px var(--gold),0 0 18px rgba(255,200,87,.9);
  animation:plop .35s cubic-bezier(.2,1.6,.4,1)}
.dot span{position:absolute;left:12px;top:-6px;white-space:nowrap;
  font:600 11.5px "IBM Plex Mono",monospace;color:#e8eaff}
@keyframes plop{from{scale:.2;opacity:0}}

.discovery-card{
  position:absolute;z-index:5;left:var(--tag-x,calc(100% - 392px));top:var(--tag-y,68%);
  width:min(330px,calc(100% - 54px));min-height:0;padding:9px 12px 10px 14px;
  color:#eef2ff;pointer-events:none;transform:translateY(-50%);
  background:
    linear-gradient(90deg,rgba(84,215,183,.62) 0 2px,transparent 2px),
    linear-gradient(180deg,rgba(255,255,255,.08) 0 1px,transparent 1px),
    linear-gradient(135deg,rgba(8,13,31,.36),rgba(14,22,50,.18));
  border:1px solid rgba(205,212,247,.16);border-right-color:rgba(205,212,247,.05);
  border-bottom-color:rgba(205,212,247,.05);border-radius:0 8px 8px 0;
  box-shadow:0 10px 28px rgba(0,0,0,.16),inset 0 1px rgba(255,255,255,.05);
  backdrop-filter:blur(6px);
}
.discovery-card[data-side="left"]{
  transform:translate(-100%,-50%);border-radius:8px 0 0 8px;
  background:
    linear-gradient(270deg,rgba(84,215,183,.62) 0 2px,transparent 2px),
    linear-gradient(180deg,rgba(255,255,255,.08) 0 1px,transparent 1px),
    linear-gradient(225deg,rgba(8,13,31,.36),rgba(14,22,50,.18));
  border-left-color:rgba(205,212,247,.05);border-right-color:rgba(205,212,247,.16);
}
.discovery-card::before{
  content:"";position:absolute;left:-54px;top:50%;width:54px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(84,215,183,.72));
  box-shadow:0 0 10px rgba(84,215,183,.42);
}
.discovery-card::after{
  content:"";position:absolute;left:-58px;top:calc(50% - 4px);width:8px;height:8px;border-radius:50%;
  background:var(--mint);box-shadow:0 0 0 5px rgba(84,215,183,.12),0 0 18px rgba(84,215,183,.72);
}
.discovery-card[data-side="left"]::before{
  left:auto;right:-54px;background:linear-gradient(90deg,rgba(84,215,183,.72),transparent);
}
.discovery-card[data-side="left"]::after{left:auto;right:-58px}
.discovery-card.pulse{
  animation:tagTrace .42s ease;
}
.discovery-kicker{font:600 11px/1 "IBM Plex Mono",monospace;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mint);margin-bottom:6px;padding-right:22px}
.discovery-card h3{font-size:19px;line-height:1.08;margin-bottom:5px;color:#fff;padding-right:18px}
.discovery-card p{color:#c7ceef;font-size:12px;line-height:1.36}
.discovery-card .formula{
  font:600 clamp(16px,1.55vw,22px)/1.22 "STIX Two Text",Georgia,serif;
  color:#fff;margin:3px 0 6px;overflow-wrap:anywhere;letter-spacing:0;
}
.discovery-person{display:grid;grid-template-columns:48px 1fr;gap:10px;align-items:center}
.discovery-person img{width:48px;height:48px;object-fit:cover;border-radius:50%;
  border:2px solid var(--gold);box-shadow:0 0 0 3px rgba(255,200,87,.15)}
.sky-caption{
  position:absolute;z-index:6;left:16px;right:16px;bottom:13px;
  font:600 11px/1 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase;
  color:#8ff0d7;text-align:center;pointer-events:none;
}
.spark-burst,.portrait-burst{position:absolute;z-index:7;pointer-events:none;
  transform:translate(-50%,-50%)}
.spark-burst{display:grid;justify-items:center;gap:8px;animation:burstFloat 5.4s ease forwards}
.spark-star{
  position:relative;
  width:50px;height:50px;border-radius:50%;
  background:radial-gradient(circle,#fff 0 13%,var(--gold) 14% 30%,rgba(255,200,87,.18) 31% 58%,transparent 59%);
  filter:drop-shadow(0 0 12px rgba(255,255,255,.9)) drop-shadow(0 0 26px rgba(255,200,87,.8));
  animation:flashStar .62s ease-in-out 8 alternate;
}
.spark-star::before,.spark-star::after{
  content:"";position:absolute;left:50%;top:50%;width:78px;height:2px;border-radius:999px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent);
  transform:translate(-50%,-50%);
}
.spark-star::after{width:2px;height:78px}
.spark-formula{
  width:min(245px,78vw);padding:9px 12px;border-radius:6px;text-align:center;color:#fff;
  background:rgba(33,49,110,.86);border:1px solid rgba(255,200,87,.42);
  box-shadow:0 12px 24px rgba(0,0,0,.28);backdrop-filter:blur(8px);
}
.spark-formula b{display:block;font:600 11px/1.1 "IBM Plex Mono",monospace;
  letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:5px}
.spark-formula em{display:block;font:600 19px/1.35 "STIX Two Text",Georgia,serif;
  font-style:normal;overflow-wrap:anywhere;letter-spacing:0}
.math-display sup,.math-display sub,.spark-formula sup,.spark-formula sub{
  font-size:.62em;line-height:0;position:relative;vertical-align:baseline;
}
.math-display sup,.spark-formula sup{top:-.48em}
.math-display sub,.spark-formula sub{top:.18em}
.math-frac{
  display:inline-grid;grid-template-rows:auto auto;place-items:center;
  vertical-align:middle;line-height:1.05;margin:0 .12em;
}
.math-frac span:first-child{border-bottom:1.5px solid currentColor;padding:0 .22em .08em}
.math-frac span:last-child{padding-top:.08em}
.binom{
  display:inline-grid;grid-template-rows:auto auto;place-items:center;
  position:relative;vertical-align:middle;line-height:1.02;margin:0 .18em;padding:0 .34em;
  font-size:.86em;
}
.binom::before,.binom::after{
  position:absolute;top:-.08em;font-size:2.25em;line-height:1;color:currentColor;
}
.binom::before{content:"(";left:-.05em}
.binom::after{content:")";right:-.05em}
.sigma{font-size:1.1em}
.mod{font-size:.78em;color:#dce4ff}
.piecewise{
  display:inline-grid;grid-template-rows:auto auto;gap:.04em;margin:0 .18em;vertical-align:middle;
  font-size:.72em;line-height:1.05;text-align:left;position:relative;padding-left:.55em;
}
.piecewise::before{
  content:"{";position:absolute;left:0;top:-.08em;font-size:2.15em;line-height:1;
}
.portrait-burst{
  display:grid;justify-items:center;gap:8px;width:216px;color:#fff;text-align:center;
  animation:portraitPop 7.4s ease forwards;
}
.portrait-burst img{
  width:126px;height:126px;object-fit:cover;display:block;border-radius:50%;
  border:3px solid var(--mint);background:#1f3070;
  box-shadow:0 18px 34px rgba(0,0,0,.34),0 0 0 7px rgba(84,215,183,.12),0 0 34px rgba(84,215,183,.34);
  filter:saturate(1.04) contrast(1.03);
}
.portrait-burst b{
  display:block;width:max-content;max-width:210px;padding:5px 12px;border-radius:999px;
  background:rgba(33,49,110,.9);border:1px solid rgba(143,240,215,.38);
  box-shadow:0 12px 24px rgba(0,0,0,.28);
  font-size:13px;line-height:1.2;
}
.portrait-burst span{
  display:block;padding:7px 11px;border-radius:6px;font-size:11.5px;line-height:1.4;color:#d3daf5;
  background:rgba(33,49,110,.86);border:1px solid rgba(143,240,215,.24);
  box-shadow:0 12px 24px rgba(0,0,0,.28);
}
@keyframes flashStar{from{scale:.9;opacity:.62}to{scale:1.18;opacity:1}}
@keyframes burstFloat{
  0%{opacity:0;transform:translate(-50%,-38%) scale(.72)}
  14%,78%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-74%) scale(.92)}
}
@keyframes portraitPop{
  0%{opacity:0;transform:translate(-50%,-42%) rotate(-2deg) scale(.7)}
  12%,80%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-64%) rotate(1deg) scale(.94)}
}
@keyframes cardPulse{
  0%{box-shadow:0 18px 38px rgba(0,0,0,.26),0 0 0 rgba(255,200,87,0)}
  50%{box-shadow:0 18px 38px rgba(0,0,0,.26),0 0 34px rgba(255,200,87,.42)}
  100%{box-shadow:0 18px 38px rgba(0,0,0,.26),0 0 0 rgba(255,200,87,0)}
}
@keyframes tagTrace{
  0%{opacity:.28;filter:blur(2px);translate:0 5px}
  100%{opacity:1;filter:blur(0);translate:0 0}
}

/* the explore axis: site sections plotted as points on a number line */
.plotmap{position:relative;width:100%;max-width:960px;
  display:flex;justify-content:space-between;flex-wrap:nowrap;gap:10px}
.plotmap::before{content:"";position:absolute;left:4px;right:4px;top:7px;height:2px;
  background:linear-gradient(90deg,transparent,var(--mint),var(--gold),transparent);opacity:.75}
.stop{display:flex;flex-direction:column;align-items:center;gap:9px;
  text-decoration:none;position:relative}
.stop i{width:15px;height:15px;border-radius:50%;background:var(--violet);
  border:3px solid #0b1025;box-shadow:0 0 0 1.5px var(--violet),0 0 20px rgba(143,132,255,.5);transition:transform .15s}
.stop:nth-child(even) i{background:var(--coral);box-shadow:0 0 0 1.5px var(--coral)}
.stop span{font:600 11.5px "IBM Plex Mono",monospace;color:#c5d0f7;
  transition:color .15s;background:rgba(30,45,104,.78);border:1px solid rgba(196,205,240,.18);
  padding:1px 4px;border-radius:3px}
.stop:hover i,.stop:focus-visible i{transform:scale(1.5)}
.stop:hover span,.stop:focus-visible span{color:var(--violet)}
.stop:nth-child(even):hover span{color:var(--coral)}
@media (max-width:1120px){
  header{padding-top:28px}
  .hero-shell{grid-template-columns:1fr;width:100%;max-width:100%}
  .hero-in{text-align:center;margin:0 auto;width:100%;max-width:680px;padding-top:0}
  .cta-row,.stats{justify-content:center}
  .sky-stage{justify-self:center;max-width:100%;height:400px;margin-top:10px}
}
@media (max-width:720px){
  .plotmap{justify-content:center;flex-wrap:wrap}
  .plotmap::before{display:none}
  .stats b{font-size:26px}
  .stats li{font-size:9.5px;padding:0 10px}
}

/* ------------------------------------------------- contest ruler strip */
.ruler-strip{
  overflow:hidden;background:#27407f;border-top:1px solid var(--line);border-bottom:1px solid rgba(255,255,255,.18);
  padding:12px 0 16px;font-size:12.5px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink);
  box-shadow:inset 0 -16px 26px rgba(84,215,183,.08);
  background-image:
    linear-gradient(90deg,rgba(84,215,183,.16),transparent 28%,rgba(255,200,87,.12) 56%,transparent 80%),
    repeating-linear-gradient(90deg,transparent 0 25px,rgba(255,255,255,.18) 25px 26px);
  background-position:center,bottom;background-size:auto,100% 7px;background-repeat:no-repeat,repeat-x;
}
.ruler-strip div{display:inline-flex;white-space:nowrap;width:max-content;
  animation:tick 40s linear infinite}
.ruler-strip span{padding:0 30px}
.ruler-strip span:nth-child(even){color:var(--coral)}
@keyframes tick{to{transform:translateX(-50%)}}

/* ------------------------------------------------- scroll ruler (y-axis) */
.yaxis{
  position:fixed;left:14px;top:120px;bottom:60px;width:22px;z-index:15;
  border-left:2px solid var(--grid2);
  background-image:repeating-linear-gradient(180deg,
    var(--grid2) 0 1px,transparent 1px 26px);
  background-position:left top;background-size:9px 26px;background-repeat:repeat-y;
}
.yaxis .marker{
  position:absolute;left:-7px;top:0;width:12px;height:12px;border-radius:50%;
  background:var(--coral);border:2.5px solid #1f3070;box-shadow:0 0 0 1.5px var(--coral),0 0 18px rgba(255,107,91,.65);
  font-size:0;
}
.yaxis .marker::after{
  content:attr(data-v);position:absolute;left:16px;top:-3px;
  font:600 11px "IBM Plex Mono",monospace;color:var(--coral);
}
@media (max-width:1100px){.yaxis{display:none}}

/* ------------------------------------------------- sections */
main{
  position:relative;overflow:hidden;color:#f7fbff;
  background:
    linear-gradient(118deg,transparent 0 14%,rgba(255,200,87,.11) 14.2% 18.5%,transparent 18.7% 62%,
      rgba(84,215,183,.10) 62.2% 66.5%,transparent 66.7%),
    linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.10) 1px,transparent 1px),
    linear-gradient(180deg,#375cba 0%,#3253a8 28%,#2d4a99 64%,#263e83 100%);
  background-size:auto,26px 26px,26px 26px,auto;
}
main::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(90deg,transparent 0 7%,rgba(255,107,91,.16) 7.05% 7.28%,transparent 7.33%),
    repeating-linear-gradient(0deg,transparent 0 92px,rgba(255,255,255,.055) 92px 93px);
  opacity:.86;
}
main::after{
  content:"";position:absolute;left:0;right:0;top:0;height:150px;pointer-events:none;
  background:linear-gradient(180deg,rgba(84,215,183,.18),transparent 72%);
}
main section{padding:64px clamp(48px,8vw,110px) 26px;max-width:1240px;margin:0 auto;
  counter-increment:fig;position:relative;z-index:1}
h2{font-size:clamp(28px,4vw,42px);margin-bottom:20px;position:relative;
  display:inline-block;padding-bottom:14px}
h2::before{
  content:"fig. " counter(fig,decimal-leading-zero);
  display:block;font:600 12px/1 "IBM Plex Mono",monospace;letter-spacing:.18em;
  text-transform:uppercase;color:var(--coral);margin-bottom:12px;
}
h2::after{
  content:"";position:absolute;left:0;right:-28px;bottom:0;height:6px;
  background:
    linear-gradient(var(--ink) 0 0) left bottom/100% 2px no-repeat,
    repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 26px) left bottom/100% 6px no-repeat;
}
.section-lede{max-width:66ch;margin-bottom:22px;color:var(--muted)}
section p+p{margin-top:12px}
#about p{max-width:70ch}

.note{font-style:italic;font-family:"STIX Two Text",serif;color:var(--coral);font-size:17px}
.note.center{display:block;text-align:center;margin-top:24px}

blockquote{
  margin-top:26px;padding:20px 26px;background:rgba(38,60,132,.88);
  border:1px solid rgba(218,225,255,.34);border-left:4px solid var(--gold);border-radius:6px;
  font-family:"STIX Two Text",serif;font-size:21px;max-width:58ch;
  box-shadow:0 20px 46px rgba(7,12,32,.24),inset 0 1px rgba(255,255,255,.08);
}
blockquote .note{display:block;margin-top:6px;font-size:15px;color:var(--muted)}

/* cards are cream index cards pinned on the dark blue: light paper, faint graph lines */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}
.cards article,.story,.member,.faq,.sponsor{
  color:#242b49;
  background:
    linear-gradient(90deg,rgba(74,104,200,.12) 1px,transparent 1px),
    linear-gradient(rgba(74,104,200,.11) 1px,transparent 1px),
    radial-gradient(260px 140px at 18% 0,rgba(84,215,183,.14),transparent 72%),
    linear-gradient(180deg,#dce2f0,#c9d2e6);
  background-size:22px 22px,22px 22px,auto,auto;
  border:1px solid rgba(223,230,255,.42);border-radius:6px;
  position:relative;transition:transform .15s,box-shadow .15s,border-color .15s;
  box-shadow:0 18px 42px rgba(5,10,30,.3),inset 0 1px rgba(255,255,255,.55);
}
.cards article:hover,.story:hover,.member:hover,.sponsor:hover{
  transform:translateY(-4px);border-color:rgba(255,200,87,.58);
  box-shadow:0 28px 58px rgba(5,10,30,.36),0 0 0 1px rgba(255,200,87,.18),inset 0 1px rgba(255,255,255,.12);
}
.cards article{padding:22px 24px}
.cards article::before,.member::before{
  content:"";position:absolute;left:-5px;top:-5px;width:9px;height:9px;border-radius:50%;
  background:var(--coral);border:2px solid #0b1025;box-shadow:0 0 0 1px var(--coral),0 0 16px rgba(255,107,91,.55);
}
.cards article:nth-child(even)::before{background:var(--violet);box-shadow:0 0 0 1px var(--violet)}
.cards article::after,.story::before,.member .face::after,.faq::before,.sponsor::after{
  content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--mint),var(--gold),var(--coral));
  opacity:.78;z-index:1;pointer-events:none;
}
.cards h3{font-size:19px;margin-bottom:8px}
.cards p{color:#525c7e;font-size:15px;margin-bottom:10px}
.cards a{font-weight:600;text-decoration:none;color:#a2770e}
.cards a:hover{text-decoration:underline}

.live-points{list-style:none;counter-reset:pt;max-width:66ch;margin:24px 0}
.live-points li{counter-increment:pt;position:relative;margin:16px 0;
  padding-left:58px;min-height:38px;display:flex;flex-direction:column;justify-content:center}
.live-points li::before{
  content:"(" counter(pt) ")";position:absolute;left:0;top:50%;transform:translateY(-50%);
  font:600 15px/34px "IBM Plex Mono",monospace;color:var(--violet);
  width:42px;height:38px;text-align:center;background:#203a80;
  border:1.5px solid var(--violet);border-radius:50%;
  box-shadow:0 0 22px rgba(143,132,255,.22);
}
.live-points li:nth-child(even)::before{color:var(--coral);border-color:var(--coral)}
h3.sub{margin:30px 0 12px;font-size:23px}
.sessions{list-style:none;max-width:78ch;border-top:2px solid rgba(255,255,255,.82)}
.sessions li{padding:10px 2px;border-bottom:1px solid rgba(218,225,255,.24)}
.sessions span{font-size:11.5px;font-weight:600;letter-spacing:.06em;color:var(--gold);
  background:rgba(255,200,87,.16);border:1px solid rgba(255,200,87,.32);
  border-radius:3px;padding:3px 8px;margin-right:10px;white-space:nowrap}

.news-grid,.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.story{overflow:hidden}
.story img{
  width:100%;height:170px;object-fit:cover;border-bottom:1px solid rgba(202,213,255,.24);
  filter:saturate(1.05) contrast(1.04);
}
.story-dialog img.poster-contain{
  object-fit:contain;background:#f4f6fc;height:auto;
  aspect-ratio:var(--poster-ratio,1290/1589);max-height:70vh;
}
/* a card with room to spare shows its whole flyer, QR code and all, rather than a crop */
.story img.poster-full{
  object-fit:contain;background:#f4f6fc;height:auto;
  aspect-ratio:var(--poster-ratio,1290/1589);
}
.story h3{font-size:18px;padding:14px 18px 2px}
.story .date{font-size:11px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:#c9432f;padding:4px 18px 8px}
.story>p{padding:0 18px 16px;font-size:15px;color:#525c7e}
.story details{padding:0 18px 16px}
.story summary,.member summary{cursor:pointer;font-weight:600;color:#a2770e;
  font-size:14.5px;list-style:none}
.story summary::before,.member summary::before{content:"+ "}
details[open]>summary::before{content:"− "}
.story details p{font-size:15px;color:#525c7e;margin-top:10px}
/* watch/read links sitting directly on a card, styled like the summary they replace */
.story>p a{font-weight:600;color:#a2770e;text-decoration:none}
.story>p a:hover{text-decoration:underline}

/* story reading overlay */
.story-dialog{
  width:min(680px,92vw);max-height:84vh;margin:auto;padding:0;overflow:hidden;
  border:1px solid rgba(223,230,255,.5);border-radius:10px;color:#242b49;
  background:linear-gradient(180deg,#eef1f8,#dde3f1);
  box-shadow:0 40px 90px rgba(0,0,0,.5);
}
.story-dialog::backdrop{background:rgba(5,8,20,.68);backdrop-filter:blur(3px)}
.dlg-body{max-height:84vh;overflow-y:auto;padding:0 0 26px}
.story-dialog img{width:100%;height:250px;object-fit:cover;display:block}
.story-dialog h3{font-size:25px;margin:18px 26px 0;line-height:1.15}
.story-dialog .date{font:600 11px "IBM Plex Mono",monospace;letter-spacing:.1em;
  text-transform:uppercase;color:#c9432f;margin:6px 26px 0}
.story-dialog p{margin:12px 26px 0;font-size:15.5px;line-height:1.62;color:#3c4568}
.story-dialog a{color:#5b4ed0;font-weight:600}
.dlg-close{
  position:absolute;top:12px;right:14px;z-index:1;width:34px;height:34px;border-radius:50%;
  border:none;cursor:pointer;font-size:20px;line-height:1;color:#fff;
  background:rgba(8,13,27,.62);backdrop-filter:blur(4px);
}
.dlg-close:hover{background:rgba(8,13,27,.85)}

/* team org chart */
.team-grid{grid-template-columns:repeat(auto-fit,minmax(250px,310px));justify-content:center}
.tier{text-align:center}
.tier+.tier{margin-top:34px}
.tier-label{display:inline-block;font-size:13px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink);border:1.5px solid var(--ink);border-radius:999px;
  padding:7px 20px;margin:14px 0 18px;background:var(--sheet)}
.tier:first-of-type .tier-label{background:var(--gold);border-color:var(--gold);color:#151a2f}
/* member cards flip in 3D: fixed height so nothing resizes on click */
.member{
  background:none;border:none;box-shadow:none;padding:0;text-align:center;
  height:330px;perspective:1100px;cursor:pointer;
}
.member .flip{position:relative;width:100%;height:100%;
  transform-style:preserve-3d;transition:transform .65s cubic-bezier(.3,.1,.2,1)}
.member.flipped .flip{transform:rotateY(180deg)}
.member .face{
  position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  border:1px solid rgba(223,230,255,.42);border-radius:6px;color:#242b49;
  padding:24px 18px;
  background:
    linear-gradient(90deg,rgba(74,104,200,.12) 1px,transparent 1px),
    linear-gradient(rgba(74,104,200,.11) 1px,transparent 1px),
    radial-gradient(180px 120px at 50% 0,rgba(255,200,87,.16),transparent 70%),
    linear-gradient(180deg,#dce2f0,#c9d2e6);
  background-size:22px 22px,22px 22px,auto,auto;
  box-shadow:0 18px 42px rgba(5,10,30,.3),inset 0 1px rgba(255,255,255,.55);
}
.member .front{display:flex;flex-direction:column;justify-content:center;align-items:center}
.member .back{transform:rotateY(180deg);text-align:left;overflow-y:auto;padding:18px 17px}
.member .back h3{font-size:17px;margin-bottom:8px}
.member .back p{font-size:13.5px;line-height:1.5;color:#3c4568;margin-top:8px}
.member img{width:158px;height:158px;object-fit:cover;border-radius:50%;
  border:3px solid var(--violet);margin-bottom:12px;
  box-shadow:0 0 0 5px rgba(143,132,255,.12),0 14px 28px rgba(0,0,0,.28)}
.member:nth-child(even) img{border-color:var(--coral)}
.member h3{font-size:19px}
.member .role{font-size:13px;color:#525c7e;margin-bottom:8px}
.flip-hint{margin-top:12px;font:600 10.5px "IBM Plex Mono",monospace;
  letter-spacing:.14em;text-transform:uppercase;color:#5b4ed0}

#involved{
  background:
    linear-gradient(115deg,rgba(84,215,183,.18),transparent 34%,rgba(255,200,87,.14)),
    linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px),
    #20366f;
  background-size:auto,26px 26px,26px 26px,auto;
  max-width:none;border-top:1px solid rgba(255,255,255,.22);
  border-bottom:1px solid rgba(255,255,255,.18);padding-bottom:58px;margin-top:58px}
#involved p{max-width:66ch}
#involved .cta-row{justify-content:flex-start}

.faq{padding:15px 20px;max-width:760px}
.faq+.faq{margin-top:10px}
.faq summary{cursor:pointer;font-family:"STIX Two Text",serif;font-weight:600;font-size:17.5px}
.faq[open]{border-color:var(--violet)}
.faq p{margin-top:8px;color:#525c7e}

/* ------------------------------------------------- supporters */
/* current page in the nav */
body>nav .links a.here{color:var(--gold)}
body>nav .links a.here::after{right:0}

/* homepage teaser strip */
#support .cta-row,#join .cta-row{justify-content:flex-start}
.support-strip{
  display:flex;align-items:center;gap:clamp(16px,3.4vw,36px);flex-wrap:wrap;
  margin:26px 0 6px;padding:18px 22px;border-radius:6px;text-decoration:none;
  background:
    linear-gradient(120deg,rgba(84,215,183,.14),transparent 46%,rgba(255,200,87,.12)),
    rgba(24,40,100,.5);
  border:1px solid rgba(218,225,255,.3);
  box-shadow:0 18px 40px rgba(5,10,30,.22),inset 0 1px rgba(255,255,255,.08);
  transition:transform .15s,border-color .15s,box-shadow .15s;
}
.support-strip:hover{transform:translateY(-3px);border-color:rgba(255,200,87,.58);
  box-shadow:0 26px 54px rgba(5,10,30,.32),0 0 0 1px rgba(255,200,87,.18)}
.support-strip .mark{height:54px;width:auto;display:block;border-radius:5px}
.support-strip .plated{background:#fdfdff;padding:8px 12px;
  box-shadow:0 8px 20px rgba(5,10,30,.26)}
.support-strip .ttmath{box-shadow:0 8px 20px rgba(5,10,30,.32)}
.support-strip span{
  margin-left:auto;font:600 12px "IBM Plex Mono",ui-monospace,monospace;
  letter-spacing:.14em;text-transform:uppercase;color:var(--gold);
}
.support-strip:hover span{color:var(--mint)}

/* the supporters page: one card per organization, whole card is the link */
.sponsor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:24px;max-width:1000px}
.sponsor{display:flex;flex-direction:column;overflow:hidden;text-decoration:none;color:#242b49}
.sponsor .plate{
  display:flex;align-items:center;justify-content:center;
  min-height:186px;padding:26px 24px;
  background:linear-gradient(180deg,#fdfdff,#eaeef7);
  border-bottom:1px solid rgba(202,213,255,.5);
}
.sponsor .plate img{max-width:100%;max-height:118px;width:auto;display:block}
.sponsor .plate.ttmath img{border-radius:7px;box-shadow:0 12px 26px rgba(19,26,60,.3)}
.sponsor .body{display:block;padding:18px 22px 22px}
.sponsor .rank{display:block;font:600 11px "IBM Plex Mono",ui-monospace,monospace;
  letter-spacing:.18em;text-transform:uppercase;color:#c9432f;margin-bottom:9px}
.sponsor h3{font-size:22px}
.sponsor .role{display:block;font-size:13px;color:#525c7e;margin:3px 0 11px}
.sponsor p{font-size:15px;color:#525c7e}
.sponsor .go{display:inline-block;margin-top:15px;font-weight:600;font-size:15px;color:#a2770e}
.sponsor:hover .go{text-decoration:underline}

@media (max-width:640px){
  .support-strip{gap:16px;padding:15px 16px}
  .support-strip .mark{height:42px}
  .support-strip span{margin-left:0;width:100%;font-size:11px}
  .sponsor-grid{grid-template-columns:1fr}
  .sponsor .plate{min-height:150px;padding:20px 18px}
}

/* ------------------------------------------------- footer */
footer{
  margin-top:64px;padding:50px clamp(22px,7vw,96px) 56px;text-align:center;
  background:
    linear-gradient(115deg,rgba(255,200,87,.11),transparent 34%,rgba(84,215,183,.12)),
    linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px),
    #253a7c;
  background-size:26px 26px;color:#fff;
}
footer .big{font-family:"STIX Two Text",serif;font-size:clamp(26px,4vw,40px)}
footer .big .note{display:block;color:var(--coral);font-size:19px}
footer p+p{margin-top:18px}
footer .btn{background:var(--coral);border-color:var(--coral)}
footer .btn:hover{background:var(--violet);border-color:var(--violet)}
.social a{color:#b9c2f2}
.fine{font-size:13px;color:#8a92bd}

/* scroll reveal (class added by app.js) */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .55s,transform .55s}
.reveal.in{opacity:1;transform:none}

@media (max-width:640px){
  body>nav{justify-content:center;padding:8px 16px}
  body>nav .links{width:100%;min-width:0;max-width:354px;margin-left:0;justify-content:center;gap:8px 14px}
  .hero-brand{gap:14px}
  .hero-brand img{width:88px;height:88px}
  .hero-brand strong{font-size:25px}
  body>nav .links a{font-size:13.5px;white-space:nowrap}
  body>nav .links a[href="#involved"],body>nav .links a[href="#faq"]{display:none}
  header{padding:24px 18px 28px}
  .hero-in{max-width:354px;margin-left:0;margin-right:0;text-align:left}
  .eyebrow{max-width:310px;margin-left:0;margin-right:0;font-size:12px;line-height:1.45}
  .formula-badge{max-width:354px;grid-template-columns:auto minmax(0,1fr);padding:9px 11px 10px}
  .formula-core{flex-wrap:wrap;white-space:normal;gap:5px}
  .formula-badge .calc-integral{font-size:30px}
  .formula-sum,.formula-dx{font-size:12px}
  .formula-domain{font-size:11px;padding:3px 8px}
  .formula-joke{font-size:9.5px}
  h1{max-width:320px;margin-left:0;margin-right:0;font-size:clamp(27px,7.2vw,32px);overflow-wrap:break-word}
  h1 br{display:none}
  .lede{max-width:330px;margin-left:0;margin-right:0;font-size:15px;line-height:1.58}
  .cta-row{justify-content:flex-start}
  .btn{font-size:14px;padding:10px 18px}
  .stats b{font-size:17px}
  .stats li{font-size:10px;padding:0 5px}
  .sky-stage{width:100%;max-width:354px;height:410px;justify-self:start;margin-top:4px;margin-right:0}
  .discovery-card{
    left:var(--tag-x,26px);right:auto;top:var(--tag-y,73%);bottom:auto;
    width:min(292px,calc(100% - 52px));min-height:0;padding:9px 11px 10px 12px;
  }
  .sky-invite{left:12px;right:12px;top:14px;max-width:none;padding:9px 11px}
  .sky-invite b{font-size:10.5px}
  .sky-invite small{font-size:10.5px}
  .discovery-card h3{font-size:18px}
  .discovery-card p{font-size:12px}
  .discovery-card .formula{font-size:14.5px}
  .discovery-person{grid-template-columns:46px 1fr;gap:10px}
  .discovery-person img{width:46px;height:46px}
  .sky-caption{font-size:10px;letter-spacing:.05em}
  .portrait-burst{width:136px}
  .portrait-burst img{width:104px;height:104px}
  main section{padding-left:20px;padding-right:20px}
  .coords{display:none}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none !important;transition:none !important}
  .reveal{opacity:1;transform:none}
}
