:root{
  --tarmac:#121316;
  --panel:#191B1F;
  --paper:#EDEEE9;
  --kerb:#E23B2E;
  --smoke:#9BA0A8;
  --line:#2B2E34;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--tarmac);
  background-image:repeating-linear-gradient(-45deg,rgba(255,255,255,.016) 0 2px,transparent 2px 14px);
  color:var(--paper);
  font-family:'Barlow',system-ui,sans-serif;
  font-size:17px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
::selection{background:var(--kerb);color:#fff}

/* ---------- startljus-overlay ---------- */
#lights{
  position:fixed;inset:0;z-index:50;
  background:#0C0D0F;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:opacity .45s ease, visibility .45s;
}
#lights[hidden]{display:none}
#lights.out{opacity:0;visibility:hidden}
.gantry{display:flex;gap:clamp(10px,2.5vw,22px)}
.lamp{
  width:clamp(34px,7vw,64px);height:clamp(34px,7vw,64px);
  border-radius:50%;
  background:#1E2023;
  border:2px solid #2C2E32;
  transition:background .12s, box-shadow .12s;
}
.lamp.on{
  background:var(--kerb);
  border-color:#F0655A;
  box-shadow:0 0 26px 4px rgba(226,59,46,.55);
}
#lights .skip{
  position:absolute;bottom:28px;left:0;right:0;
  text-align:center;
  font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.18em;
  color:#6E7178;text-transform:uppercase;
}

/* ---------- kerb ---------- */
.kerb{
  height:14px;
  background:repeating-linear-gradient(-45deg,var(--kerb) 0 26px,#fff 26px 52px);
}

/* ---------- header + ticker ---------- */
header{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:18px clamp(20px,5vw,64px);
  border-bottom:1px solid var(--line);
}
.brand{
  font-family:'Barlow Condensed',sans-serif;
  font-weight:700;font-size:20px;letter-spacing:.06em;
}
.brand a{text-decoration:none}
.brand em{font-style:italic;color:var(--kerb)}
.race-control{
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;letter-spacing:.16em;color:var(--smoke);
  text-transform:uppercase;
}
a.race-control{text-decoration:none}
a.race-control:hover{color:var(--paper)}
.ticker{
  overflow:hidden;white-space:nowrap;
  background:var(--panel);
  border-bottom:1px solid var(--line);
}
.ticker-inner{
  display:inline-block;padding:9px 0;
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--smoke);
}
.ticker .dot{color:var(--kerb)}
@media(prefers-reduced-motion:no-preference){
  .ticker-inner{animation:tick 30s linear infinite}
}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- hero ---------- */
.hero{padding:clamp(44px,7vw,80px) clamp(20px,5vw,64px) clamp(32px,4vw,48px)}
.eyebrow{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--kerb);margin-bottom:16px;
}
h1{
  font-family:'Barlow Condensed',sans-serif;
  font-style:italic;font-weight:800;
  font-size:clamp(64px,14vw,180px);
  line-height:.88;letter-spacing:-.01em;
  text-transform:uppercase;
}
h1.trip{font-size:clamp(52px,11vw,140px)}
h1 .outline{
  color:transparent;
  -webkit-text-stroke:2.5px var(--paper);
  text-stroke:2.5px var(--paper);
}
@supports not ((-webkit-text-stroke:1px #000) or (text-stroke:1px #000)){
  h1 .outline{color:var(--paper)}
}
h1 .stop{color:var(--kerb);-webkit-text-stroke:0;text-stroke:0}
.hero p{
  max-width:34em;margin-top:24px;
  font-size:clamp(17px,2vw,20px);color:var(--smoke);
}
.hero p strong{color:var(--paper);font-weight:500}
.hero p a{color:var(--paper);text-decoration:underline;text-decoration-color:var(--kerb);text-underline-offset:3px}
.hero-split{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(220px,380px);
  gap:clamp(28px,5vw,72px);
  align-items:center;
}
.hero-side img{
  width:100%;height:auto;display:block;
  border:1px solid var(--line);
  box-shadow:10px 10px 0 var(--kerb);
}
@media(max-width:820px){
  .hero-split{grid-template-columns:1fr}
  .hero-side{max-width:380px}
}

/* ---------- inga ursäkter-checklista ---------- */
.checks{
  list-style:none;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:10px;margin-top:26px;max-width:56em;
}
.checks li{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--paper);
  background:var(--panel);border:1px solid var(--line);
  padding:13px 15px;
}
.checks li::before{content:"✓ ";color:var(--kerb);font-weight:700}

/* ---------- foton ---------- */
figure{margin:0}
.hero-photo{padding:clamp(16px,3vw,32px) clamp(20px,5vw,64px) clamp(44px,6vw,72px)}
.hero-photo img{
  width:100%;height:auto;
  display:block;
  border:1px solid var(--line);
  box-shadow:12px 12px 0 var(--kerb);
}
.photo-cap{
  font-family:'IBM Plex Mono',monospace;
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--smoke);margin-top:14px;
}
.photos{
  grid-column:2/-1;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:20px;margin-top:16px;
}
.photos img{
  width:100%;height:280px;object-fit:cover;
  display:block;
  border:1px solid var(--line);
  box-shadow:8px 8px 0 var(--kerb);
}
@media(max-width:640px){
  .photos{grid-column:1/-1}
  .photos img{height:220px}
  .hero-photo img{box-shadow:8px 8px 0 var(--kerb)}
}

/* ---------- timing tower ---------- */
.tower{padding:0 clamp(20px,5vw,64px) clamp(44px,6vw,72px)}
.tower-head{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:14px 0;border-bottom:2px solid var(--paper);
}
.tower-head h2{
  font-family:'Barlow Condensed',sans-serif;
  font-weight:700;font-size:15px;letter-spacing:.2em;text-transform:uppercase;
}
.tower-head span{
  font-family:'IBM Plex Mono',monospace;font-size:11px;
  letter-spacing:.14em;color:var(--smoke);text-transform:uppercase;
}
.row{
  display:grid;
  grid-template-columns:3.2em 1fr minmax(9em,.5fr);
  gap:clamp(14px,3vw,36px);
  align-items:baseline;
  padding:24px clamp(6px,1vw,14px) 28px;
  border-bottom:1px solid var(--line);
  transition:background .2s;
}
.row:hover{background:var(--panel)}
.pos{
  font-family:'Barlow Condensed',sans-serif;
  font-style:italic;font-weight:800;font-size:clamp(30px,4vw,44px);
  line-height:1;color:var(--kerb);
}
.row h3{
  font-family:'Barlow Condensed',sans-serif;
  font-weight:700;font-size:clamp(24px,3.4vw,36px);
  letter-spacing:.015em;line-height:1.05;text-transform:uppercase;
}
.row .desc{margin-top:6px;color:var(--smoke);max-width:36em}
.desc a{color:var(--paper);text-decoration:underline;text-decoration-color:var(--kerb);text-underline-offset:3px}
.prog{list-style:none;margin-top:8px;color:var(--smoke);max-width:36em}
.prog li{padding:3px 0}
.prog li::before{content:"▸ ";color:var(--kerb)}
.sector{
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;letter-spacing:.14em;color:var(--paper);
  text-transform:uppercase;text-align:right;
  justify-self:end;
}
@media(max-width:640px){
  .row{grid-template-columns:2.4em 1fr}
  .sector{grid-column:2;text-align:left;justify-self:start;margin-top:8px;color:var(--smoke)}
}

/* ---------- höjdpunktskort ---------- */
.cards{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:14px;padding-top:24px;
}
.card{
  background:var(--panel);border:1px solid var(--line);
  padding:20px 18px;
  transition:border-color .2s, transform .2s;
}
.card:hover{border-color:var(--kerb);transform:translateY(-2px)}
.card .ico{font-size:26px;line-height:1;display:block;margin-bottom:12px}
.card h3{
  font-family:'Barlow Condensed',sans-serif;
  font-weight:700;font-size:22px;letter-spacing:.02em;
  text-transform:uppercase;
}
.card p{margin-top:6px;color:var(--smoke);font-size:15px}

/* ---------- liten outro-bild ---------- */
.outro{padding:0 clamp(20px,5vw,64px) clamp(44px,6vw,72px)}
.outro img{
  width:min(400px,100%);height:auto;display:block;
  border:1px solid var(--line);
  box-shadow:8px 8px 0 var(--kerb);
}

/* ---------- status ---------- */
.status{
  background:var(--kerb);color:#1A0B08;
  padding:clamp(44px,6vw,72px) clamp(20px,5vw,64px);
}
.status .flag{
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;letter-spacing:.22em;text-transform:uppercase;
  color:#fff;margin-bottom:16px;
}
.status h2{
  font-family:'Barlow Condensed',sans-serif;
  font-style:italic;font-weight:800;
  font-size:clamp(34px,6vw,64px);line-height:1;
  text-transform:uppercase;max-width:14em;
}
.status p{margin-top:18px;color:rgba(255,255,255,.88);max-width:36em}
.status a{color:#fff;font-weight:500;text-underline-offset:3px}

/* ---------- footer ---------- */
footer{
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:24px clamp(20px,5vw,64px);
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--smoke);
}

/* ---------- reveal ---------- */
@media(prefers-reduced-motion:no-preference){
  body.staged .reveal{opacity:0;transform:translateY(14px)}
  body.go .reveal{
    opacity:1;transform:none;
    transition:opacity .6s ease,transform .6s ease;
  }
  body.go .reveal.d1{transition-delay:.08s}
  body.go .reveal.d2{transition-delay:.16s}
}
