/* JAKIM 2027: palet dan identitas visual 5 Abad Jakarta. */
:root{--navy:#075be8;--navy-deep:#063998;--cream:#f7f5ef;--orange:#f01820;--lime:#f1eadc;--ink:#101828}
.brand-image{display:block;width:111px;height:32px;object-fit:contain;object-position:left center}.brand-name{font-size:14px;color:var(--navy);border-left:1px solid #d8d9db;padding-left:12px}.footer-brand .brand-image{width:108px}.hero-500{width:min(410px,42vw);height:auto;max-height:176px;object-fit:contain;object-position:left center;filter:drop-shadow(0 5px 16px #07162c88);margin-top:20px}.hero h1{font-size:clamp(54px,6.2vw,94px);margin-top:15px}.hero-content>p{max-width:575px}.hero:after{background:linear-gradient(90deg,rgba(5,17,46,.96) 0%,rgba(5,17,46,.76) 42%,rgba(5,17,46,.05) 82%),linear-gradient(0deg,rgba(5,17,46,.52),transparent 40%)}.hero-label{background:#ffdf37}.about-identity{display:block;width:min(300px,78%);height:auto;margin-top:30px;mix-blend-mode:multiply}.about-section{position:relative;overflow:hidden}.about-section:after{content:"";position:absolute;right:-58px;bottom:-60px;background:url('bunga.png') center/contain no-repeat;width:240px;height:240px;opacity:.14;pointer-events:none}.category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.category-card{min-height:300px}.category-card.morning{background:#e9f8fa;color:var(--navy);border-color:#b4d9e8}.category-card.morning p{color:#3f5870}.category-card.morning.accent{background:#72d9e4}.category-card.night{background:#1a2f67;border-color:#47639e}.category-card.night.accent{background:#824fe0;border-color:#824fe0}.category-card .distance{font-size:clamp(88px,9vw,130px);margin:12px 0 0}.category-card .card-bottom{margin-top:auto}.category-card.morning .card-bottom{border-color:#15324a55}.run-group-label{display:flex;align-items:center;gap:16px;color:#fff;font:800 clamp(24px,3vw,40px)/1.2 Outfit,sans-serif;letter-spacing:-.03em;margin:35px 0 20px}.run-group-label span{display:grid;place-items:center;border-radius:50%;width:43px;height:43px;background:#ffdf37;color:var(--navy);font-size:28px}.run-group-label small{font:700 13px DM Sans,sans-serif;letter-spacing:.13em;color:#b9caea;margin-left:auto}.night-label{margin-top:70px}.night-label span{background:#824fe0;color:#fff}.performers{background:#ffdf37;position:relative;overflow:hidden}.performers:before{content:"";position:absolute;width:235px;height:220px;right:-65px;top:-45px;background:url('bunga.png') center/contain no-repeat;opacity:.26;pointer-events:none}.performers .eyebrow{color:#7a3d21}.performers h2{font-size:clamp(52px,6vw,88px);margin:18px 0 45px}.performers h2 em{color:#ff6426}.performer-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.performer-card{min-height:410px;position:relative;overflow:hidden;border-radius:15px;padding:28px;display:flex;flex-direction:column;justify-content:space-between;isolation:isolate}.performer-card:before{content:"";position:absolute;z-index:-1;width:350px;height:350px;right:-50px;top:30px;background:url('bunga.png') center/contain no-repeat;opacity:.27;transform:rotate(-18deg)}.performer-card.saturday{background:var(--orange);color:#fff}.performer-card.sunday{background:var(--navy);color:#fff}.performer-day{align-self:flex-start;border:1px solid #ffffffaa;border-radius:99px;padding:8px 17px;font-size:12px;font-weight:800;letter-spacing:.16em}.performer-copy>span{font-size:12px;letter-spacing:.2em;font-weight:800}.performer-copy h3{font-size:clamp(52px,6vw,92px);font-weight:900;margin:12px 0 0;line-height:.91;letter-spacing:-.06em}.performer-copy h3 small{font-size:.4em;color:#dafa38}.sunday .performer-copy h3{font-size:clamp(50px,5.7vw,87px)}.performer-corner{position:absolute;right:24px;bottom:18px;font-size:38px;color:#dafa38}.performer-note{font-size:14px;font-weight:700;margin:20px 0 0}.racepack-visual{background:#26bfea}.visual-caption{color:var(--navy)}.benefits{background:#dafa38}.closing:after{background:url('jakarta-500.png') center/contain no-repeat;border:0;width:540px;height:280px;top:60px;right:-160px;opacity:.12;border-radius:0}.nav-cta{background:var(--orange)}
@media(max-width:900px){.hero-500{width:min(360px,55vw)}.performer-card{min-height:350px}.performer-copy h3,.sunday .performer-copy h3{font-size:clamp(46px,6.8vw,70px)}}
@media(max-width:600px){.brand-image{width:83px;height:27px}.brand-name{font-size:12px}.hero{min-height:680px}.hero-content{padding-bottom:88px}.hero-500{width:min(285px,72vw);margin-top:16px}.hero h1{font-size:clamp(45px,11vw,62px)}.hero:after{background:linear-gradient(90deg,#07162cef,#07162c66),linear-gradient(0deg,#07162cdd,transparent 75%)}.category-grid,.performer-grid{grid-template-columns:1fr}.category-card{min-height:270px}.category-card .distance{font-size:87px}.run-group-label{font-size:25px}.run-group-label small{font-size:10px}.night-label{margin-top:55px}.performer-card{min-height:320px}.performer-copy h3,.sunday .performer-copy h3{font-size:clamp(50px,13vw,70px)}.performers h2{font-size:clamp(48px,11vw,65px)}.about-section:after{width:160px;height:160px}}

/* Hero festival: tampilkan artwork utuh pada desktop tanpa meregangkan gambar. */
.hero-image{background-image:url('hero-festival.png');background-position:center center;background-size:cover}
@media(min-width:901px){
  .hero{height:auto;min-height:0;aspect-ratio:1673/941}
  .hero-image{background-position:center top;background-size:contain;background-repeat:no-repeat}
}
@media(max-width:900px){.hero-image{background-position:56% center}}
@media(max-width:600px){.hero-image{background-position:53% center}}

/* Race pack card mengikuti artwork referensi. */
.racepack-visual{
  aspect-ratio:1/1;
  min-height:0;
  border-radius:17px;
  background:#28b9df;
  box-shadow:20px 20px 0 #101b43;
  align-items:flex-start;
  justify-content:center;
}
.racepack-visual:before{
  background:repeating-linear-gradient(45deg,transparent 0 42px,rgba(255,255,255,.24) 43px 46px,transparent 47px 88px);
  opacity:1;
}
.visual-caption{
  margin-top:20%;
  font-size:clamp(72px,7.2vw,108px);
  line-height:.82;
  letter-spacing:-.075em;
  text-align:left;
  transform:rotate(-4deg);
}
.visual-caption span{
  display:block;
  width:max-content;
  margin:24px 0 0 18px;
  font-size:.68em;
  line-height:1;
  color:var(--lime);
  transform:rotate(-5deg);
}
.visual-note{
  bottom:22px;
  left:22px;
  padding:9px 14px;
  color:#101b43;
  letter-spacing:.13em;
  font-weight:900;
}
@media(max-width:900px){
  .racepack-visual{width:min(100%,520px);justify-self:center}
  .visual-caption{font-size:clamp(68px,13vw,100px)}
}
@media(max-width:600px){
  .racepack-visual{box-shadow:11px 11px 0 #101b43}
  .visual-caption{margin-top:19%;font-size:clamp(58px,20vw,82px)}
  .visual-caption span{margin-top:18px}
  .visual-note{bottom:16px;left:16px;font-size:9px;padding:8px 10px}
}

/* Gunakan aksen paper yang sama pada komponen yang sebelumnya memakai lime literal. */
.performer-copy h3 small,
.performer-corner{color:var(--lime)}
.benefits{background:var(--lime)}

/* Identitas visual merah-biru yang mengikuti pattern referensi. */
.site-header{height:88px;border-bottom:3px solid var(--navy)}
.brand-image{width:245px;height:62px}
.footer-brand .brand-image{width:230px;height:76px}
.nav-cta{background:var(--orange)}
.site-header nav>a:not(.nav-cta):hover,
.footer a:hover{color:var(--orange)}

.hero{background:var(--navy-deep)}
.hero-label{color:var(--navy);background:var(--lime);border-left:7px solid var(--orange)}
.small-diamond{background:var(--orange)}
.hero-500{
  width:min(470px,48vw);
  max-height:154px;
  margin-top:20px;
  padding:10px 15px;
  border-radius:5px;
  background:#fff;
  filter:drop-shadow(9px 9px 0 rgba(240,24,32,.9));
}
.hero h1 em{color:#fff}
.button-lime{background:var(--orange);color:#fff}
.button-lime:hover{background:#c90d15}

.about-section:after{
  right:-20px;
  bottom:-35px;
  width:310px;
  height:310px;
  opacity:.13;
  background:
    linear-gradient(45deg,transparent 43%,var(--navy) 44% 50%,transparent 51%) 0 0/74px 74px,
    linear-gradient(-45deg,transparent 43%,var(--orange) 44% 50%,transparent 51%) 18px 21px/96px 96px;
}
.about-identity{width:min(430px,88%);mix-blend-mode:normal}

.categories{background:var(--navy)}
.category-card.morning{background:#fff;color:var(--navy);border-color:#b9cff7}
.category-card.morning p{color:#42526d}
.category-card.morning.accent{background:#eaf1ff;border-color:#fff}
.category-card.night{background:var(--navy-deep);border-color:#6c9cf0}
.category-card.night.accent{background:var(--orange);border-color:var(--orange)}
.run-group-label span{background:var(--orange);color:#fff}
.night-label span{background:#fff;color:var(--navy)}

.performers{
  background-color:var(--cream);
  background-image:
    linear-gradient(45deg,transparent 47%,rgba(7,91,232,.11) 48% 52%,transparent 53%),
    linear-gradient(-45deg,transparent 47%,rgba(240,24,32,.09) 48% 52%,transparent 53%);
  background-size:86px 86px,118px 118px;
}
.performers:before{display:none}
.performers .eyebrow{color:var(--navy)}
.performers h2 em{color:var(--orange)}
.performer-card.saturday{background:var(--orange)}
.performer-card.sunday{background:var(--navy)}
.performer-card:before{
  background:
    linear-gradient(45deg,transparent 42%,rgba(255,255,255,.2) 43% 50%,transparent 51%) 0 0/58px 58px,
    linear-gradient(-45deg,transparent 42%,rgba(255,255,255,.13) 43% 50%,transparent 51%) 20px 25px/82px 82px;
}
.performer-copy h3 small,
.performer-corner{color:#fff}

.racepack-visual{background:var(--navy);box-shadow:20px 20px 0 var(--orange)}
.racepack-visual:before{
  background:repeating-linear-gradient(45deg,transparent 0 42px,rgba(255,255,255,.25) 43px 46px,transparent 47px 87px,rgba(240,24,32,.8) 88px 92px);
}
.visual-caption{color:#fff}
.visual-caption span{color:var(--orange)}

.benefits{
  background-color:var(--cream);
  background-image:
    linear-gradient(45deg,transparent 47%,rgba(7,91,232,.08) 48% 51%,transparent 52%),
    linear-gradient(-45deg,transparent 47%,rgba(240,24,32,.07) 48% 51%,transparent 52%);
  background-size:110px 110px,150px 150px;
}
.benefits .eyebrow{color:var(--orange)}
.benefits .section-head p{color:#42526d}
.benefit-grid{border-color:rgba(7,91,232,.38)}
.benefit-grid article{border-color:rgba(7,91,232,.38)}
.benefit-symbol{color:var(--navy)}
.closing{background:var(--navy-deep)}
.closing h2 em{color:#fff}
.closing:after{
  width:560px;
  height:260px;
  right:-90px;
  top:60px;
  background:url('jakim-logo-2027.png') center/contain no-repeat;
  filter:invert(1);
  opacity:.08;
}

@media(max-width:900px){
  .site-header{height:76px}
  .brand-image{width:190px;height:52px}
  .site-header nav{top:76px}
}
@media(max-width:600px){
  .brand-image{width:158px;height:46px}
  .hero-content{width:100%;min-width:0}
  .hero-label{max-width:calc(100vw - 44px);font-size:10px;letter-spacing:.09em;white-space:normal}
  .hero-500{width:min(330px,82vw);max-height:122px;padding:8px 10px}
  .hero h1{max-width:100%;font-size:clamp(34px,9vw,40px)}
  .hero-content>p{max-width:100%}
  .racepack-visual{box-shadow:11px 11px 0 var(--orange)}
}

/* Navigasi tegas dan netral; warna hanya menjadi aksen. */
.site-header nav{
  gap:clamp(14px,1.5vw,26px);
  font-family:Outfit,'DM Sans',Arial,sans-serif;
  font-size:clamp(15px,1.05vw,17px);
  font-weight:900;
  line-height:1.15;
  letter-spacing:.015em;
}
.site-header nav>a{
  font-weight:900;
}
.site-header nav>a:not(.nav-cta){color:#101114;font-weight:900}
.site-header nav>a:not(.nav-cta):hover{color:var(--orange)}
.nav-cta{padding:15px 22px;font-size:1em;font-weight:900}
.menu-toggle span{background:#101114}
.nav-dropdown{position:relative;display:flex;align-items:center}
.nav-dropdown-toggle{display:flex;align-items:center;gap:9px;min-height:46px;padding:10px 13px;border:0;border-radius:9px;background:transparent;color:#101114;font-family:inherit;font-size:1em;font-weight:900;line-height:1.15;letter-spacing:.015em;cursor:pointer;transition:color .2s ease,background .2s ease}
.nav-dropdown-toggle:hover,.nav-dropdown.open .nav-dropdown-toggle,.nav-dropdown.active .nav-dropdown-toggle{background:#f2f5fb;color:var(--orange)}
.nav-caret{display:block;width:7px;height:7px;margin-top:-4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .22s ease}
.nav-submenu{position:absolute;top:calc(100% + 10px);left:0;z-index:30;min-width:240px;padding:9px;background:#fff;border:1px solid #e0e5ee;border-radius:12px;box-shadow:0 22px 54px rgba(16,24,40,.18);opacity:0;visibility:hidden;transform:translateY(-8px);transform-origin:0 0;transition:opacity .2s ease,transform .2s ease,visibility .2s}
.nav-submenu:before{content:"";position:absolute;left:0;right:0;top:-13px;height:13px}
.nav-submenu:after{display:none}
.nav-submenu a{position:relative;z-index:1;display:block;padding:13px 14px;border-radius:8px;color:#101114;white-space:nowrap;transition:background .18s ease,color .18s ease,transform .18s ease}
.nav-submenu a+a{margin-top:3px}
.nav-submenu a:hover{background:#f1f5fc;color:var(--navy);transform:translateX(3px)}
.nav-submenu strong,.nav-submenu small{display:block}.nav-submenu strong{font-size:15px;font-weight:900;line-height:1.2}.nav-submenu small{margin-top:4px;color:#778091;font-family:'DM Sans',Arial,sans-serif;font-size:11px;font-weight:700;letter-spacing:.02em}
.nav-dropdown:hover .nav-submenu,.nav-dropdown:focus-within .nav-submenu,.nav-dropdown.open .nav-submenu{opacity:1;visibility:visible;transform:translateY(0)}
.nav-dropdown.open .nav-caret{margin-top:3px;transform:rotate(225deg)}

/* Kurangi bidang biru besar agar komposisi lebih premium dan kontras. */
.categories{
  background-color:#101114;
  background-image:
    radial-gradient(circle at 12% 18%,rgba(240,24,32,.2) 0 3px,transparent 4px),
    radial-gradient(circle at 86% 72%,rgba(7,91,232,.24) 0 4px,transparent 5px);
  background-size:88px 88px,126px 126px;
}
.categories .eyebrow{color:#ff545b}
.categories .section-head p{color:#b8bcc5}

/* Motion hero: depth lembut, entrance bertahap, dan confetti geometris. */
.hero-image{animation:heroIn 1.1s ease-out both,heroDrift 15s ease-in-out 1.1s infinite alternate}
.hero:after{z-index:1}
.hero-content,.hero-side,.hero-bottom{z-index:3}
.hero-label{animation:riseIn .65s .12s ease-out both}
.hero-500{animation:riseIn .72s .23s ease-out both}
.hero h1{animation:riseIn .78s .34s ease-out both}
.hero-content>p{animation:riseIn .78s .44s ease-out both}
.hero-actions{animation:riseIn .78s .54s ease-out both}
.button-lime{animation:ctaPulse 2.8s 1.3s ease-in-out infinite}

.hero-sparkles{position:absolute;inset:0;z-index:2;overflow:hidden;pointer-events:none}
.hero-sparkles i{position:absolute;display:block;width:14px;height:14px;background:var(--orange);animation:confettiFloat 5.5s ease-in-out infinite alternate;box-shadow:0 0 18px rgba(240,24,32,.4)}
.hero-sparkles i:nth-child(1){top:16%;right:31%;width:11px;height:28px;transform:rotate(26deg);animation-delay:-1.2s}
.hero-sparkles i:nth-child(2){top:28%;right:9%;width:17px;height:17px;background:#fff;border-radius:50%;animation-delay:-3.4s}
.hero-sparkles i:nth-child(3){top:58%;right:28%;width:24px;height:8px;background:#075be8;animation-delay:-2.1s}
.hero-sparkles i:nth-child(4){top:72%;right:7%;width:13px;height:13px;background:#fff;transform:rotate(45deg);animation-delay:-4.3s}
.hero-sparkles i:nth-child(5){top:39%;right:43%;width:9px;height:22px;animation-delay:-.6s}
.hero-sparkles i:nth-child(6){top:82%;right:38%;width:15px;height:15px;border:3px solid #fff;background:transparent;transform:rotate(45deg);animation-delay:-2.8s}

.performers,.benefits{animation:patternDrift 24s linear infinite}
.category-card,.performer-card,.countdown-card,.racepack-visual{transition:transform .3s ease,box-shadow .3s ease}
.category-card:hover,.performer-card:hover{transform:translateY(-9px) rotate(-.5deg);box-shadow:10px 12px 0 rgba(240,24,32,.3)}
.countdown-card:hover{transform:translateY(-6px);box-shadow:0 34px 80px rgba(16,24,40,.15)}
.racepack-visual:hover{transform:translate(-5px,-5px);box-shadow:26px 26px 0 var(--orange)}

.motion-ready .reveal-item{opacity:0;transform:translateY(34px);transition:opacity .75s ease,transform .75s cubic-bezier(.2,.75,.25,1)}
.motion-ready .reveal-item.is-visible{opacity:1;transform:none}

@keyframes riseIn{
  from{opacity:0;transform:translateY(24px)}
  to{opacity:1;transform:none}
}
@keyframes heroDrift{
  from{transform:scale(1.01) translate3d(0,0,0)}
  to{transform:scale(1.045) translate3d(-.7%,.4%,0)}
}
@keyframes confettiFloat{
  from{translate:0 -8px;rotate:-8deg;opacity:.45}
  to{translate:12px 16px;rotate:32deg;opacity:1}
}
@keyframes ctaPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(240,24,32,.34)}
  50%{box-shadow:0 0 0 12px rgba(240,24,32,0)}
}
@keyframes patternDrift{
  from{background-position:0 0,0 0}
  to{background-position:86px 86px,-118px 118px}
}

@media(prefers-reduced-motion:reduce){
  .hero-image,.hero-label,.hero-500,.hero h1,.hero-content>p,.hero-actions,.button-lime,
  .hero-sparkles i,.performers,.benefits{animation:none!important}
  .motion-ready .reveal-item{opacity:1;transform:none;transition:none}
}

/* Countdown: identitas 500 tahun Jakarta sebagai elemen utama, bukan dekorasi kecil. */
.countdown-section{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 3% 15%,rgba(240,24,32,.08) 0 3px,transparent 4px) 0 0/42px 42px,
    linear-gradient(135deg,#f8f2e8 0%,#fffaf2 55%,#eef6ff 100%);
}
.countdown-section:after{
  content:"";
  position:absolute;
  right:-80px;
  bottom:-180px;
  width:390px;
  height:390px;
  border:72px solid rgba(7,91,232,.06);
  border-radius:50%;
  pointer-events:none;
}
.countdown-layout{position:relative;z-index:1;grid-template-columns:1.05fr .95fr}
.countdown-intro{min-width:0}
.jakarta-signature{
  position:relative;
  width:min(610px,100%);
  min-height:185px;
  margin-top:36px;
  padding:23px 25px;
  border:1px solid rgba(7,91,232,.15);
  border-radius:20px;
  background:rgba(255,255,255,.72);
  box-shadow:0 20px 45px rgba(7,57,152,.08);
  backdrop-filter:blur(8px);
}
.jakarta-signature img{display:block;width:100%;height:137px;object-fit:contain}
.signature-chip{position:absolute;border-radius:999px;padding:7px 12px;font:900 10px/1 DM Sans,sans-serif;letter-spacing:.13em;box-shadow:0 7px 18px rgba(16,24,40,.15)}
.monas-chip{left:24px;top:-14px;background:var(--orange);color:#fff;transform:rotate(-4deg)}
.century-chip{right:22px;bottom:-12px;background:var(--navy);color:#fff;transform:rotate(3deg)}
.hand-chip{right:-17px;top:16px;padding:8px 11px;background:#ffdf37;color:#101114;font-size:24px;letter-spacing:0;transform:rotate(10deg)}
.countdown-card{border:0;border-top:7px solid var(--orange);box-shadow:14px 16px 0 rgba(7,91,232,.12),0 28px 70px rgba(16,32,68,.09)}

/* Section panggung: gunakan artwork festival yang sudah ada sebagai foto personel. */
.performer-heading{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:44px}
.performer-heading h2{margin-bottom:0}
.performer-heading>p{max-width:370px;margin:0 0 8px;color:#4c5565;font-size:17px}
.performer-grid{grid-template-columns:1fr 1fr;gap:20px}
.performer-card{
  min-height:500px;
  padding:25px;
  background-image:linear-gradient(0deg,rgba(4,12,35,.92) 0%,rgba(4,12,35,.32) 55%,rgba(4,12,35,.08) 100%),url('hero-festival.png');
  background-repeat:no-repeat;
  background-size:auto 100%,auto 100%;
  background-color:var(--navy-deep);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:0 18px 46px rgba(16,24,40,.16);
}
.performer-card:before{display:none}
.performer-card.nassar{background-position:center,0% center}
.performer-card.hindia-feast{background-position:center,82% center}
.performer-copy{position:relative;z-index:1;text-shadow:0 2px 18px rgba(0,0,0,.46)}
.performer-copy>span{color:#ffdf37;text-shadow:0 2px 12px rgba(0,0,0,.85)}
.performer-copy h3{color:#fff;text-shadow:0 3px 18px rgba(0,0,0,.92),0 1px 2px rgba(0,0,0,1)}
.performer-copy h3,.sunday .performer-copy h3{font-size:clamp(44px,4.5vw,70px)}
.performer-card.hindia-feast .performer-copy h3{font-size:clamp(42px,4.4vw,68px)}
.performer-card.hindia-feast .performer-copy h3 small{font-size:.42em;color:#ffdf37}
.performer-day{position:relative;z-index:1;background:rgba(8,20,46,.45);backdrop-filter:blur(8px)}
.performer-corner{z-index:1;color:#ffdf37}

/* Kategori lebih ceria dengan warna senja Jakarta yang tetap nyaman dibaca. */
.categories{
  color:#101828;
  background-color:var(--cream);
  background-image:
    radial-gradient(circle at 3% 15%,rgba(240,24,32,.08) 0 3px,transparent 4px) 0 0/42px 42px,
    linear-gradient(135deg,#f8f2e8 0%,#fffaf2 55%,#eef6ff 100%);
}
.categories .eyebrow{color:#b80e15}
.categories .section-head p{color:#4c5565}
.run-group-label{color:#101828}
.run-group-label small{color:#5e6877}
.category-card{box-shadow:0 16px 36px rgba(61,52,47,.1)}
.category-card.morning{background:#fff9ed;border-color:#dec8a8}
.category-card.morning.accent{background:#ffd65a;border-color:#e9bd37}
.category-card.night{background:#325c8d;border-color:#6f91ba;color:#fff}
.category-card.night.accent{background:#c45d78;border-color:#c45d78;color:#fff}
.category-card.night p,.category-card.night.accent p{color:#f5eff4}
.category-card.night .card-bottom,.category-card.night.accent .card-bottom{border-color:rgba(255,255,255,.35)}

/* Sponsor sample dari susunan partner resmi. */
.sponsor{background:linear-gradient(180deg,#fff 0%,#f6f8fc 100%)}
.sponsor-featured{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:14px;margin-bottom:52px}
.sponsor-item{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;background:#fff}
.sponsor-featured .sponsor-item{min-height:195px;padding:28px;border:1px solid var(--line);border-radius:15px}
.sponsor-featured .sponsor-item.primary{border:2px solid rgba(240,24,32,.35);box-shadow:0 16px 38px rgba(16,24,40,.08)}
.sponsor-item span{min-height:28px;color:#697180;font-size:10px;font-weight:800;line-height:1.35;letter-spacing:.11em;text-transform:uppercase}
.sponsor-item img{display:block;max-width:82%;width:auto;height:auto;max-height:68px;object-fit:contain}
.sponsor-featured .primary img{max-height:84px}
.sponsor-partner-title{margin-bottom:18px;color:var(--navy);font-size:12px;font-weight:900;letter-spacing:.18em;text-align:center}
.sponsor-grid .sponsor-item{height:160px;padding:20px}
.sponsor-grid .sponsor-item img{max-height:58px}

@media(max-width:900px){
  .countdown-layout{grid-template-columns:1fr}
  .jakarta-signature{width:100%}
  .performer-heading{display:block}
  .performer-heading>p{margin-top:22px}
  .performer-grid{grid-template-columns:repeat(2,1fr)}
  .performer-card.nassar,.performer-card.hindia-feast{min-height:440px}
  .sponsor-featured{grid-template-columns:1fr 1fr}
  .sponsor-featured .primary{grid-column:span 2;grid-row:1}
  .site-header nav{font-size:17px;line-height:1.2;letter-spacing:.01em}
  .site-header nav>a{padding:15px 10px}
  .site-header nav .nav-cta{padding:15px 20px}
  .nav-dropdown{display:block}
  .nav-dropdown-toggle{width:100%;justify-content:space-between;padding:15px 10px}
  .nav-submenu{position:static;display:none;min-width:0;margin:2px 0 8px;padding:7px;border:0;border-left:3px solid var(--orange);border-radius:0 10px 10px 0;box-shadow:none;opacity:1;visibility:visible;transform:none;transition:none}
  .nav-submenu:before,.nav-submenu:after{display:none}
  .nav-dropdown.open .nav-submenu{display:block;transform:none}
  .nav-dropdown:hover:not(.open) .nav-submenu{display:none}
  .nav-submenu a{padding:10px 9px}
}
@media(max-width:600px){
  .jakarta-signature{min-height:145px;padding:18px 14px;margin-top:28px}
  .jakarta-signature img{height:112px}
  .hand-chip{right:-7px}
  .performer-heading{margin-bottom:30px}
  .performer-heading>p{font-size:15px}
  .performer-grid{grid-template-columns:1fr}
  .performer-card.nassar,.performer-card.hindia-feast{grid-row:auto;min-height:390px}
  .performer-card.nassar{background-position:center,2% center}
  .performer-card.hindia-feast{background-position:center,82% center}
  .performer-copy h3,.performer-card.hindia-feast .performer-copy h3{font-size:52px}
  .sponsor-featured{grid-template-columns:1fr;gap:10px;margin-bottom:38px}
  .sponsor-featured .primary{grid-column:auto;grid-row:auto}
  .sponsor-featured .sponsor-item{min-height:145px}
  .sponsor-grid .sponsor-item{height:135px;padding:14px}
  .sponsor-item span{font-size:8px}
}

/* Pointer interaction layer: halus, responsif, dan tidak mengubah layout. */
.interactive-zone{position:relative;isolation:isolate;overflow:hidden}
.interactive-zone>.pointer-glow{
  position:absolute;
  z-index:0;
  left:0;
  top:0;
  width:520px;
  height:520px;
  border-radius:50%;
  pointer-events:none;
  opacity:0;
  transform:translate(calc(var(--pointer-x,50%) - 50%),calc(var(--pointer-y,50%) - 50%));
  background:radial-gradient(circle,rgba(255,255,255,.22) 0%,rgba(255,255,255,.08) 38%,transparent 70%);
  transition:opacity .35s ease;
  mix-blend-mode:soft-light;
}
.interactive-zone.is-pointer-active>.pointer-glow{opacity:1}
.interactive-zone>.container{position:relative;z-index:1}
.hero.interactive-zone>.hero-content{z-index:3}
.pointer-tilt{
  --tilt-x:0deg;
  --tilt-y:0deg;
  --card-x:0px;
  --card-y:0px;
  transform:perspective(950px) translate3d(var(--card-x),var(--card-y),0) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));
  transform-style:preserve-3d;
  will-change:transform;
  transition:transform .18s ease-out,box-shadow .3s ease,border-color .3s ease;
}
.pointer-tilt:hover{box-shadow:0 24px 54px rgba(16,24,40,.18)}
.performer-card.pointer-tilt:hover{box-shadow:12px 15px 0 rgba(240,24,32,.24),0 24px 54px rgba(16,24,40,.22)}
.racepack-visual.pointer-tilt:hover{box-shadow:24px 24px 0 var(--orange)}
.magnetic-action{
  --magnet-x:0px;
  --magnet-y:0px;
  transform:translate3d(var(--magnet-x),var(--magnet-y),0);
  will-change:transform;
  transition:transform .18s ease-out,background-color .2s ease,color .2s ease,box-shadow .2s ease;
}
.magnetic-action:hover{transform:translate3d(var(--magnet-x),calc(var(--magnet-y) - 2px),0)}
.image-reactive{transition:transform .35s cubic-bezier(.2,.75,.25,1),filter .35s ease;will-change:transform}
.image-reactive:hover{transform:scale(1.045) rotate(-.6deg);filter:drop-shadow(0 10px 20px rgba(7,57,152,.16))}
.sponsor-item img.image-reactive:hover{transform:scale(1.09)}
@media(hover:none),(pointer:coarse){
  .pointer-glow{display:none!important}
}
@media(prefers-reduced-motion:reduce){
  .pointer-glow{display:none!important}
  .pointer-tilt,.magnetic-action,.image-reactive{transform:none!important;transition:none!important}
}

/* Participant's Benefit: susunan ikon mengikuti referensi dengan identitas JAKIM. */
.participant-benefits{
  position:relative;
  overflow:hidden;
  animation:none;
  background:
    radial-gradient(circle at 6% 8%,rgba(240,24,32,.12),transparent 25%),
    radial-gradient(circle at 94% 22%,rgba(7,91,232,.14),transparent 30%),
    radial-gradient(circle at 50% 110%,rgba(255,207,48,.17),transparent 34%),
    linear-gradient(135deg,#f8f2e8 0%,#fffaf2 52%,#eef6ff 100%);
}
.participant-benefits:after{content:"";position:absolute;right:-90px;bottom:-110px;width:310px;height:310px;border:65px solid rgba(7,91,232,.05);border-radius:50%;pointer-events:none}
.participant-benefits .eyebrow{color:var(--orange)}
.participant-benefits .section-head p{color:#536071}
.participant-benefits-head{margin-bottom:58px}
.participant-benefit-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:38px 20px;border:0}
.benefits .participant-benefit-grid article{display:flex;min-width:0;min-height:0;padding:0 6px 8px;border:0;align-items:center;flex-direction:column;text-align:center}
.participant-benefit-grid article:nth-child(7){grid-column:2}
.benefit-icon{position:relative;display:grid;place-items:center;width:clamp(112px,10vw,148px);aspect-ratio:1;border:5px solid rgba(255,255,255,.74);border-radius:50%;background:linear-gradient(145deg,#075be8 0%,#075be8 48%,#f01820 100%);box-shadow:0 13px 0 rgba(7,57,152,.09),0 22px 42px rgba(16,24,40,.14);transition:transform .3s cubic-bezier(.2,.75,.25,1),box-shadow .3s ease}
.benefit-icon:before{content:"";position:absolute;inset:8px;border:1px solid rgba(255,255,255,.22);border-radius:50%}
.benefit-icon:after{content:"";position:absolute;left:19%;top:11%;width:28%;height:15%;border-radius:50%;background:rgba(255,255,255,.14);transform:rotate(-22deg)}
.benefit-icon svg{position:relative;z-index:1;width:58%;height:58%;fill:none;stroke:#fff;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 3px 3px rgba(7,20,51,.22))}
.participant-benefit-grid article:nth-child(3n+2) .benefit-icon{background:linear-gradient(145deg,#ffb91f 0%,#ff7a19 48%,#f01820 100%)}
.participant-benefit-grid article:nth-child(3n) .benefit-icon{background:linear-gradient(145deg,#19b7e6 0%,#075be8 52%,#063998 100%)}
.participant-benefit-grid article:hover .benefit-icon{transform:translateY(-9px) rotate(-2deg) scale(1.035);box-shadow:0 17px 0 rgba(240,24,32,.1),0 28px 52px rgba(16,24,40,.2)}
.participant-benefit-grid h3{margin:22px 0 0;color:#101828;font-size:clamp(17px,1.55vw,22px);line-height:1.15;letter-spacing:-.025em}
.benefit-disclaimer{margin:48px 0 0;color:#657083;font-size:12px;text-align:center}
@media(max-width:1100px){.participant-benefit-grid{grid-template-columns:repeat(4,1fr)}.participant-benefit-grid article:nth-child(7){grid-column:auto}}
@media(max-width:780px){.participant-benefit-grid{grid-template-columns:repeat(3,1fr);gap:34px 12px}.benefit-icon{width:min(132px,30vw)}}
@media(max-width:520px){.participant-benefits-head{margin-bottom:40px}.participant-benefit-grid{grid-template-columns:repeat(2,1fr);gap:30px 8px}.benefit-icon{width:min(126px,37vw);border-width:4px}.participant-benefit-grid h3{margin-top:16px;font-size:16px}.benefit-disclaimer{margin-top:38px}}

/* Hero JAKIM sebagai festival lari dan entertainment. */
.hero:after{
  background:
    linear-gradient(90deg,rgba(3,12,35,.94) 0%,rgba(3,12,35,.8) 34%,rgba(3,12,35,.2) 68%,rgba(3,12,35,.08) 100%),
    linear-gradient(0deg,rgba(3,12,35,.88) 0%,transparent 43%);
}
.hero-content{justify-content:center;padding-top:26px;padding-bottom:72px}
.hero-500{width:min(310px,33vw);max-height:96px;margin-top:14px;padding:7px 11px;filter:drop-shadow(7px 7px 0 rgba(240,24,32,.9))}
.hero h1{max-width:720px;margin:17px 0 13px;font-size:clamp(52px,5.4vw,82px);line-height:.91}
.hero-content>p{max-width:620px;margin-bottom:0;font-size:clamp(16px,1.25vw,19px);line-height:1.45;text-shadow:0 2px 18px rgba(0,0,0,.45)}
.hero-programs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(690px,100%);gap:11px;margin-top:19px;animation:riseIn .78s .5s ease-out both}
.hero-program-card{position:relative;display:flex;min-height:88px;flex-direction:column;justify-content:center;padding:15px 18px 14px;overflow:hidden;border:1px solid rgba(255,255,255,.32);border-radius:12px;background:rgba(5,17,46,.67);box-shadow:0 14px 34px rgba(0,0,0,.2);backdrop-filter:blur(9px);transition:transform .22s ease,border-color .22s ease,background .22s ease}
.hero-program-card:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--orange)}
.hero-program-card.music-program:before{background:#ffdf37}
.hero-program-card:hover{transform:translateY(-4px);border-color:#fff;background:rgba(5,17,46,.86)}
.hero-program-card>span{color:#ffdf37;font-size:10px;font-weight:900;letter-spacing:.16em}
.hero-program-card strong{margin-top:4px;color:#fff;font:900 18px/1.1 Outfit,sans-serif;letter-spacing:-.015em}
.hero-program-card small{margin-top:4px;color:#dbe7ff;font-size:11px;font-weight:700;letter-spacing:.035em}
.hero-actions{margin-top:18px;gap:25px}
.hero-actions .button{min-height:50px;padding:14px 20px}
.hero-bottom{align-items:flex-end}
.hero-bottom>span:last-child{max-width:560px;text-align:right;line-height:1.45}

@media(min-width:901px) and (max-width:1200px){
  .hero{min-height:700px;aspect-ratio:auto}
  .hero-image{background-position:center center;background-size:cover}
}
@media(max-width:900px){
  .hero{height:auto;min-height:790px}
  .hero:after{background:linear-gradient(90deg,rgba(3,12,35,.94),rgba(3,12,35,.38)),linear-gradient(0deg,rgba(3,12,35,.93),transparent 60%)}
  .hero-content{justify-content:center;padding-top:44px;padding-bottom:78px}
  .hero-500{width:min(300px,55vw);max-height:94px}
  .hero h1{font-size:clamp(50px,7.6vw,70px)}
}
@media(max-width:600px){
  .hero{height:auto;min-height:830px;max-height:none}
  .hero-image{background-position:56% center}
  .hero:after{background:linear-gradient(90deg,rgba(3,12,35,.88),rgba(3,12,35,.48)),linear-gradient(0deg,rgba(3,12,35,.97) 0%,rgba(3,12,35,.3) 72%)}
  .hero-content{justify-content:flex-end;padding-top:36px;padding-bottom:76px}
  .hero-label{font-size:10px}
  .hero-500{width:min(265px,75vw);max-height:84px;margin-top:12px}
  .hero h1{margin:15px 0 12px;font-size:clamp(43px,12vw,58px)}
  .hero-content>p{font-size:15px;line-height:1.42}
  .hero-programs{grid-template-columns:1fr;gap:8px;margin-top:15px}
  .hero-program-card{min-height:72px;padding:11px 15px 10px}
  .hero-program-card strong{font-size:16px}
  .hero-actions{width:100%;gap:14px;margin-top:15px}
  .hero-actions .button{min-height:47px;padding:12px 17px;font-size:13px}
  .hero-actions .text-link{font-size:13px}
  .hero-bottom{bottom:18px}
}
@media(prefers-reduced-motion:reduce){.hero-programs{animation:none!important}}

/* Kategori lari: perjalanan visual dari day run menuju night run. */
.categories{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background-color:#09142f;
  background-image:
    radial-gradient(circle at 87% 9%,#fffbd1 0 34px,#ffd54a 35px 67px,rgba(255,213,74,.2) 68px 98px,transparent 99px),
    linear-gradient(180deg,#69cfff 0%,#b9ebff 34%,#f7a76f 47%,#554a91 57%,#17285d 70%,#070d25 100%);
  background-size:auto;
}
.categories:before{
  content:"";
  position:absolute;
  z-index:0;
  top:13%;
  left:5%;
  width:210px;
  height:78px;
  opacity:.72;
  background:
    radial-gradient(ellipse at 24% 68%,rgba(255,255,255,.9) 0 25%,transparent 26%),
    radial-gradient(ellipse at 49% 48%,rgba(255,255,255,.9) 0 34%,transparent 35%),
    radial-gradient(ellipse at 76% 70%,rgba(255,255,255,.9) 0 27%,transparent 28%);
  filter:drop-shadow(360px 115px 0 rgba(255,255,255,.35));
  pointer-events:none;
}
.categories:after{
  content:"";
  position:absolute;
  z-index:0;
  inset:52% 0 0;
  opacity:.72;
  background-image:
    radial-gradient(circle at 8% 15%,#fff 0 1.5px,transparent 2px),
    radial-gradient(circle at 22% 46%,#a9d5ff 0 1px,transparent 1.7px),
    radial-gradient(circle at 41% 19%,#fff 0 1px,transparent 1.8px),
    radial-gradient(circle at 57% 59%,#fff 0 1.5px,transparent 2px),
    radial-gradient(circle at 73% 28%,#ffdf78 0 1px,transparent 1.8px),
    radial-gradient(circle at 91% 67%,#fff 0 1.3px,transparent 2px);
  background-size:190px 170px,230px 210px,170px 240px,260px 190px,210px 250px,280px 220px;
  pointer-events:none;
}
.categories>.container{position:relative;z-index:1}
.categories .section-head h2{color:#10234a;text-shadow:0 2px 18px rgba(255,255,255,.26)}
.categories .section-head p{color:#18345d;font-weight:700}
.categories .eyebrow{color:#b80f1b}
.categories .run-group-label:not(.night-label){color:#10234a}
.categories .run-group-label:not(.night-label) small{color:#234e73}
.categories .night-label{color:#fff;text-shadow:0 2px 16px rgba(0,0,0,.35)}
.categories .night-label small{color:#d7e5ff}
.categories .category-card.morning{background:rgba(255,255,255,.9);border-color:rgba(255,255,255,.92);box-shadow:0 18px 50px rgba(25,87,132,.18);backdrop-filter:blur(8px)}
.categories .category-card.morning.accent{background:rgba(226,246,255,.88)}
.categories .category-card.night{background:rgba(8,17,47,.84);border-color:rgba(139,178,255,.45);box-shadow:0 22px 54px rgba(0,0,0,.3);backdrop-filter:blur(8px)}
.categories .category-card.night.accent{background:linear-gradient(145deg,rgba(240,24,32,.94),rgba(123,28,117,.9));border-color:rgba(255,255,255,.24)}

@media(max-width:600px){
  .categories{
    background-image:
      radial-gradient(circle at 84% 6%,#fffbd1 0 25px,#ffd54a 26px 50px,rgba(255,213,74,.18) 51px 73px,transparent 74px),
      linear-gradient(180deg,#69cfff 0%,#c7efff 39%,#f3a66f 49%,#4c4786 57%,#142554 68%,#070d25 100%);
  }
  .categories:before{top:9%;left:-35px;transform:scale(.72);filter:drop-shadow(310px 150px 0 rgba(255,255,255,.3))}
  .categories:after{inset:54% 0 0}
}

/* Prioritas race: HM/FM lebih dominan dan tampil sebelum 5K/10K. */
.categories{
  background-image:
    radial-gradient(circle at 86% 89%,#fffbd1 0 34px,#ffd54a 35px 67px,rgba(255,213,74,.2) 68px 98px,transparent 99px),
    linear-gradient(180deg,#070d25 0%,#17285d 31%,#554a91 43%,#f7a76f 54%,#b9ebff 69%,#69cfff 100%);
}
.categories:before{top:auto;bottom:8%;filter:drop-shadow(360px -105px 0 rgba(255,255,255,.35))}
.categories:after{inset:0 0 51%}
.categories .section-head h2{color:#fff;text-shadow:0 3px 22px rgba(0,0,0,.32)}
.categories .section-head p{color:#dce8ff}
.categories .eyebrow{color:#ff7379}
.priority-label{margin-top:32px}
.priority-tag{padding:7px 10px;border:1px solid rgba(255,255,255,.55);border-radius:999px;background:rgba(255,255,255,.12);font-size:9px;letter-spacing:.14em}
.featured-races{gap:24px}
.featured-races .category-card{min-height:430px;padding:38px}
.featured-races .category-card .distance{font-size:clamp(125px,12vw,178px);margin-top:18px}
.featured-races .category-card h3{font-size:clamp(31px,3vw,43px)}
.featured-races .category-card p{max-width:390px;font-size:16px}
.morning-label{margin-top:78px;color:#10234a!important;text-shadow:none}
.morning-label small{color:#234e73!important}
.supporting-races{width:88%;margin-left:auto}
.supporting-races .category-card{min-height:265px;padding:27px}
.supporting-races .category-card .distance{font-size:clamp(76px,7vw,104px)}

/* Preview GPX animatif di halaman utama. */
.route-showcase{position:relative;overflow:hidden;background:#081631;color:#fff}
.route-showcase:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 12% 20%,rgba(7,91,232,.35),transparent 35%),radial-gradient(circle at 90% 78%,rgba(240,24,32,.2),transparent 32%);pointer-events:none}
.route-showcase-grid{position:relative;display:grid;grid-template-columns:.75fr 1.25fr;gap:clamp(45px,7vw,100px);align-items:center}
.route-showcase .eyebrow{color:#ff7b81}
.route-showcase h2{margin:18px 0 25px;font-size:clamp(50px,5.2vw,78px);line-height:.98}
.route-showcase h2 em{color:#ffdf37}
.route-showcase-copy>p{max-width:510px;color:#c7d5ee;font-size:17px}
.route-stats{display:grid;grid-template-columns:1fr 1fr;max-width:500px;margin:38px 0 30px;border-top:1px solid rgba(255,255,255,.2);border-bottom:1px solid rgba(255,255,255,.2)}
.route-stats>div{padding:19px 12px 19px 0}
.route-stats>div+div{padding-left:24px;border-left:1px solid rgba(255,255,255,.2)}
.route-stats span{display:block;color:#8fa6ca;font-size:10px;font-weight:900;letter-spacing:.16em}
.route-stats strong{display:block;margin-top:5px;font:900 18px/1.2 Outfit,sans-serif}
.route-button{min-width:220px;background:var(--orange);color:#fff}
.gpx-map-card{position:relative;min-height:610px;overflow:hidden;border:1px solid rgba(151,189,255,.28);border-radius:24px;background:linear-gradient(145deg,#102957,#071126);box-shadow:0 35px 80px rgba(0,0,0,.35)}
.map-grid{position:absolute;inset:-15%;opacity:.24;transform:rotate(-12deg) scale(1.2);background-image:linear-gradient(rgba(132,179,255,.32) 1px,transparent 1px),linear-gradient(90deg,rgba(132,179,255,.32) 1px,transparent 1px),linear-gradient(35deg,transparent 46%,rgba(255,255,255,.16) 47% 49%,transparent 50%);background-size:54px 54px,54px 54px,145px 145px}
.gpx-route-svg{position:absolute;inset:22px;width:calc(100% - 44px);height:calc(100% - 44px);overflow:visible}
#gpx-route-shadow,#gpx-route-path{fill:none;stroke-linecap:round;stroke-linejoin:round}
#gpx-route-shadow{stroke:rgba(0,0,0,.45);stroke-width:18}
#gpx-route-path{stroke:#ffdf37;stroke-width:8;filter:drop-shadow(0 0 9px rgba(255,223,55,.72))}
#gpx-start{fill:#35d07f;stroke:#fff;stroke-width:4}
#gpx-finish{fill:var(--orange);stroke:#fff;stroke-width:4}
#gpx-runner{fill:#fff;stroke:var(--navy);stroke-width:5;filter:drop-shadow(0 0 9px #fff)}
.route-map-label{position:absolute;z-index:2;padding:7px 10px;border-radius:7px;background:#fff;color:#0b1936;font-size:9px;font-weight:900;letter-spacing:.12em;transform:translate(-50%,-135%);box-shadow:0 8px 24px rgba(0,0,0,.3)}
.map-place{position:absolute;z-index:1;color:rgba(205,222,251,.6);font-size:9px;font-weight:900;letter-spacing:.13em}.place-gbk{left:8%;bottom:13%}.place-sudirman{right:8%;top:16%}.place-semarang{right:13%;bottom:22%}
.route-progress{position:absolute;z-index:3;right:25px;bottom:22px;left:25px;height:4px;overflow:hidden;border-radius:10px;background:rgba(255,255,255,.16)}
.route-progress span{display:block;width:100%;height:100%;background:linear-gradient(90deg,#ffdf37,var(--orange));transform:scaleX(0);transform-origin:left center}

/* Dua kartu konser memakai dimensi dan skala tipografi yang sama. */
.performer-grid{grid-auto-rows:1fr;align-items:stretch}
.performer-card.nassar,.performer-card.hindia-feast{width:100%;height:520px;min-height:520px}
.performer-copy h3,.performer-card.hindia-feast .performer-copy h3{font-size:clamp(44px,4.5vw,70px)}

/* Judul benefit diberi napas antarbasis agar mudah dibaca. */
.participant-benefits-head h2{display:flex;flex-direction:column;gap:12px;margin-top:22px;font-size:clamp(46px,5vw,74px);line-height:1.08;letter-spacing:-.035em}
.participant-benefits-head h2 span,.participant-benefits-head h2 em{display:block}

/* Identitas footer ditata sebagai satu kelompok logo yang rapi. */
.footer{padding:26px 0}
.footer-identities{display:flex;align-items:center;gap:20px}
.footer-brand .brand-image{width:172px;height:54px}
.footer-500{display:block;width:125px;height:68px;padding-left:19px;border-left:1px solid #d8dee8;object-fit:contain}

@media(max-width:900px){
  .featured-races .category-card{min-height:390px;padding:30px}
  .supporting-races{width:100%}
  .route-showcase-grid{grid-template-columns:1fr}
  .gpx-map-card{min-height:560px}
  .footer-row{align-items:center}
}
@media(max-width:600px){
  .categories{background-image:radial-gradient(circle at 83% 94%,#fffbd1 0 25px,#ffd54a 26px 50px,rgba(255,213,74,.18) 51px 73px,transparent 74px),linear-gradient(180deg,#070d25 0%,#17285d 36%,#604b8c 48%,#f2a66f 57%,#c7efff 72%,#69cfff 100%)}
  .categories:before{top:auto;bottom:5%;filter:drop-shadow(310px -140px 0 rgba(255,255,255,.3))}
  .categories:after{inset:0 0 54%}
  .featured-races .category-card{min-height:360px;padding:27px}
  .featured-races .category-card .distance{font-size:112px}
  .morning-label{margin-top:58px}
  .supporting-races .category-card{min-height:250px}
  .route-showcase h2{font-size:clamp(44px,12vw,58px)}
  .route-stats{margin-top:28px}
  .gpx-map-card{min-height:470px;border-radius:17px}
  .gpx-route-svg{inset:13px;width:calc(100% - 26px);height:calc(100% - 26px)}
  .performer-card.nassar,.performer-card.hindia-feast{height:410px;min-height:410px}
  .participant-benefits-head h2{gap:8px;font-size:clamp(40px,11vw,54px);line-height:1.12}
  .footer-row{display:flex;flex-direction:column;align-items:flex-start}
  .footer-identities{width:100%;gap:12px}
  .footer-brand .brand-image{width:145px;height:48px}
  .footer-500{width:108px;height:58px;padding-left:12px}
}

/* Revisi hero: video manual dengan kategori lari sebagai fokus utama. */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;animation:heroIn 1.1s ease-out both}
.hero-city-mark{position:absolute;z-index:3;top:28px;right:55px;width:155px;height:98px;padding:8px;border:2px solid rgba(255,255,255,.75);border-radius:14px;background:rgba(255,255,255,.92);object-fit:contain;box-shadow:0 16px 38px rgba(0,0,0,.22);transform:rotate(2deg)}
.hero-programs{grid-template-columns:minmax(0,1.65fr) minmax(190px,.7fr);width:min(760px,100%)}
.hero-program-card.race-program{min-height:112px;padding:18px 22px;border:2px solid rgba(255,223,55,.8);background:linear-gradient(135deg,rgba(6,57,152,.9),rgba(7,91,232,.72))}
.hero-program-card.race-program:before{width:8px;background:#ffdf37}
.hero-program-card.race-program>span{font-size:11px}
.hero-program-card.race-program strong{font-size:clamp(25px,2.3vw,35px)}
.hero-program-card.race-program small{font-size:12px}
.hero-program-card.music-program{min-height:86px;align-self:end;background:rgba(5,17,46,.7)}
.hero-program-card.music-program strong{font-size:16px}
.hero-actions .button{font-size:16px}

/* Gigi biru di bawah hero diperbesar sebagai pemisah utama. */
.gigi-border{position:relative;z-index:5;height:72px;margin-top:-1px;background:linear-gradient(135deg,var(--navy) 25%,transparent 25%) -36px 0/72px 72px,linear-gradient(225deg,var(--navy) 25%,transparent 25%) -36px 0/72px 72px,var(--cream)}

/* Countdown naik ke area transisi hero dan CTA registrasi dibuat dominan. */
.countdown-section{position:relative;z-index:4;margin-top:-34px;padding-top:78px}
.countdown-card{overflow:hidden}
.countdown-registration{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:68px;margin-top:24px;padding:18px 24px;border-radius:11px;background:linear-gradient(90deg,var(--orange),#ff4a34);color:#fff;font:900 18px/1 Outfit,sans-serif;letter-spacing:.04em;box-shadow:0 14px 30px rgba(240,24,32,.24);transition:transform .2s ease,box-shadow .2s ease}
.countdown-registration:hover{transform:translateY(-3px);box-shadow:0 20px 38px rgba(240,24,32,.32)}
.countdown-registration span{font-size:25px}

/* Detail setiap kategori berada di kanan; bagian bawah khusus CTA. */
.category-content{display:grid;grid-template-columns:minmax(130px,.8fr) minmax(210px,1.2fr);gap:28px;align-items:center;flex:1}
.category-content .distance{margin:10px 0 0}
.category-detail{padding-left:26px;border-left:1px solid rgba(255,255,255,.3)}
.category-card.morning .category-detail{border-left-color:rgba(16,35,74,.2)}
.category-detail h3{margin-bottom:10px}
.category-detail p{margin-bottom:18px}
.category-detail dl{margin:0}
.category-detail dl>div{display:flex;justify-content:space-between;gap:20px;padding:7px 0;border-top:1px solid rgba(255,255,255,.18)}
.category-card.morning .category-detail dl>div{border-top-color:rgba(16,35,74,.14)}
.category-detail dt{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.7}
.category-detail dd{margin:0;font-size:12px;font-weight:900;text-align:right}
.category-card .card-bottom{display:block;padding-top:16px}
.category-card .card-bottom a{display:flex;align-items:center;justify-content:space-between;width:100%;font-size:12px;font-weight:900;letter-spacing:.1em}
.category-card .card-bottom a span{font-size:21px;line-height:1}
.featured-races .category-card{min-height:385px}
.supporting-races{width:94%}
.supporting-races .category-card{min-height:285px}

/* Artwork hero lama menjadi panggung visual untuk acara hiburan. */
.performers{animation:none;background-image:linear-gradient(90deg,rgba(3,12,35,.9) 0%,rgba(3,12,35,.58) 42%,rgba(3,12,35,.34) 100%),linear-gradient(0deg,rgba(3,12,35,.82),rgba(3,12,35,.08) 65%),url('hero-festival.png');background-position:center;background-size:cover;background-attachment:fixed;color:#fff}
.performers .eyebrow{color:#ffdf37}
.performers h2{color:#fff;text-shadow:0 4px 26px rgba(0,0,0,.48)}
.performers h2 em{color:#ffdf37}
.performer-heading>p{color:#eef4ff;text-shadow:0 2px 14px rgba(0,0,0,.72)}
.performer-grid{padding:14px;border:1px solid rgba(255,255,255,.3);border-radius:22px;background:rgba(5,17,46,.32);backdrop-filter:blur(7px)}
.performer-note{color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.7)}

/* Aksen perayaan lintas section. */
.categories,.performers,.route-showcase,.participant-benefits{border-top:7px solid transparent;border-image:linear-gradient(90deg,#075be8 0 34%,#ffdf37 34% 67%,#f01820 67%) 1}

@media(max-width:900px){
  .hero-city-mark{top:20px;right:24px;width:126px;height:82px}
  .hero-programs{grid-template-columns:1.45fr .8fr}
  .category-content{grid-template-columns:minmax(110px,.7fr) minmax(190px,1.3fr);gap:20px}
  .category-detail{padding-left:20px}
  .performers{background-attachment:scroll}
}
@media(max-width:600px){
  .hero-city-mark{top:14px;right:15px;width:96px;height:64px;padding:5px;border-radius:9px}
  .hero-programs{grid-template-columns:1fr}
  .hero-program-card.race-program{min-height:96px}
  .hero-program-card.music-program{min-height:66px}
  .gigi-border{height:48px;background-size:48px 48px;background-position:-24px 0}
  .countdown-section{margin-top:-22px;padding-top:62px}
  .countdown-registration{min-height:60px;padding:16px 18px;font-size:16px}
  .category-content{grid-template-columns:minmax(82px,.62fr) minmax(0,1.38fr);gap:14px}
  .category-detail{padding-left:14px}
  .category-detail p{font-size:13px;line-height:1.45}
  .category-detail dl>div{display:block;padding:5px 0}
  .category-detail dd{text-align:left}
  .featured-races .category-card .distance{font-size:82px}
  .supporting-races{width:100%}
  .supporting-races .category-card .distance{font-size:68px}
  .performer-grid{padding:8px}
}
@media(prefers-reduced-motion:reduce){.hero-video{animation:none!important}}
