:root{
  --cream:#FFF7FB;
  --card:#FFFFFF;
  --ink:#171321;
  --ink-soft:#5C5568;
  --navy:#004080;
  --navy-deep:#003060;
  --navy-tint:#EAF1FA;
  --pink:#FF0080;
  --pink-deep:#D9006E;
  --pink-tint:#FFE6F3;
  --teal:#0F9C88;
  --teal-tint:#E4F6F1;
  --red:#D6483F;
  --red-tint:#FBE8E6;
  --gold:#F2B705;
  --line: rgba(0,64,128,0.16);
  --radius: 18px;
  --shadow: 0 10px 30px -14px rgba(23,19,33,0.28);
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Work Sans', system-ui, sans-serif;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{
  font-family:'Fredoka', sans-serif;
  color:var(--navy-deep);
  margin:0 0 .4em;
  letter-spacing:.2px;
}
a{ color:var(--pink-deep); }
img{ max-width:100%; display:block; border-radius:14px; }
.wrap{ max-width:760px; margin:0 auto; padding:0 20px; }

/* ---------- Sticky quick nav ---------- */
.quicknav{
  position:sticky; top:0; z-index:50;
  background:rgba(255,247,251,0.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.quicknav .wrap{
  display:flex; align-items:center; gap:8px; overflow-x:auto;
  padding:10px 20px; scrollbar-width:none;
}
.quicknav .wrap::-webkit-scrollbar{ display:none; }
.quicknav .brand{
  display:flex; align-items:center; gap:8px;
  flex:0 0 auto; margin-right:6px;
  text-decoration:none;
}
.quicknav .brand img{ width:26px; height:26px; object-fit:contain; border-radius:0; }
.quicknav .brand span{
  font-family:'Fredoka', sans-serif;
  font-weight:600; font-size:.85rem;
  color:var(--navy-deep);
  white-space:nowrap;
}
.quicknav a.link{
  flex:0 0 auto;
  text-decoration:none;
  font-family:'Fredoka', sans-serif;
  font-weight:600;
  font-size:.82rem;
  color:var(--navy);
  background:var(--navy-tint);
  padding:7px 14px;
  border-radius:999px;
  white-space:nowrap;
}
.quicknav a.link.future{
  color:#fff;
  background:var(--pink);
}

/* ---------- Looking-ahead banner ---------- */
.lookahead{
  background:var(--gold);
  color:#3A2900;
  font-size:.9rem;
  padding:10px 0;
  text-align:center;
}
.lookahead .wrap{ display:flex; flex-wrap:wrap; gap:8px; justify-content:center; align-items:center; }
.lookahead a{ color:#3A2900; font-weight:600; text-decoration:underline; }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  overflow:hidden;
  background:linear-gradient(135deg,var(--navy) 0%, var(--navy-deep) 55%, #001C3D 100%);
  color:#fff;
  padding:56px 0 70px;
}
.hero::before{
  content:'';
  position:absolute; inset:0;
  background-image:
    radial-gradient(circle at 15% 25%, rgba(255,255,255,0.10) 0 6px, transparent 7px),
    radial-gradient(circle at 85% 15%, rgba(255,255,255,0.08) 0 5px, transparent 6px),
    radial-gradient(circle at 75% 80%, rgba(255,0,128,0.22) 0 8px, transparent 9px),
    radial-gradient(circle at 8% 78%, rgba(242,183,5,0.16) 0 6px, transparent 7px);
}
.hero-track{
  position:absolute; right:-90px; top:-40px; width:340px; height:340px;
  border:6px dashed rgba(255,255,255,0.16);
  border-radius:50%;
  transform:rotate(-12deg);
}
.hero-track.inner{
  right:-40px; top:10px; width:220px; height:220px;
  border-color:rgba(255,0,128,0.32);
}
.hero-content{ position:relative; }
.eyebrow{
  font-family:'Fredoka', sans-serif;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:2px;
  font-size:.78rem;
  color:var(--gold);
  margin-bottom:10px;
}
.hero h1{
  color:#fff;
  font-size:clamp(2.1rem, 7.4vw, 3.2rem);
  line-height:1.05;
  margin-bottom:6px;
}
.hero .datewrap{
  color:rgba(255,255,255,0.78);
  font-family:'Fredoka', sans-serif;
  font-weight:500;
  margin-bottom:16px;
}
.hero p.lede{
  max-width:46ch;
  color:rgba(255,255,255,0.82);
  font-size:1.02rem;
  margin-bottom:24px;
}
.ribbon{
  display:inline-block;
  font-family:'Fredoka', sans-serif;
  font-weight:600;
  font-size:.85rem;
  padding:8px 16px;
  border-radius:999px;
  margin-bottom:18px;
}
.ribbon.ongoing{ background:var(--gold); color:#3A2900; }
.ribbon.completed{ background:rgba(255,255,255,0.16); color:#fff; }
.facts{ display:flex; flex-wrap:wrap; gap:10px; }
.fact{
  background:rgba(255,255,255,0.1);
  border:1px solid rgba(255,255,255,0.18);
  border-radius:14px;
  padding:10px 16px;
  font-size:.86rem;
}
.fact b{
  display:block;
  font-family:'Fredoka', sans-serif;
  font-size:1rem;
  color:#fff;
}
.fact.today{
  background:var(--gold);
  border-color:var(--gold);
  color:#3A2900;
}
.fact.today b{ color:#3A2900; }

/* ---------- Flow / timeline ---------- */
.day-flow{ margin:0 auto; padding:50px 20px 10px; max-width:760px; }
.stop{
  position:relative;
  padding-left:34px;
  border-left:3px dashed var(--line);
  padding-bottom:56px;
}
.stop:last-of-type{ border-left-color:transparent; }
.stop::before{
  content:attr(data-icon);
  position:absolute; left:-24px; top:-2px;
  width:44px; height:44px;
  border-radius:50%;
  background:var(--pink);
  color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:1.2rem;
  box-shadow:0 6px 16px -6px rgba(255,0,128,0.55);
}
.stop .stop-label{
  font-family:'Fredoka', sans-serif;
  font-weight:600;
  font-size:.76rem;
  text-transform:uppercase;
  letter-spacing:1.5px;
  color:var(--pink-deep);
  margin-bottom:6px;
}
.stop h2{ font-size:1.5rem; }
.stop > .stop-body{ margin-top:14px; }

/* ---------- Cards / callouts ---------- */
.card{ background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow); padding:20px 22px; }
.callout{ background:var(--navy-tint); border-radius:var(--radius); padding:16px 20px; font-size:.95rem; margin:14px 0; }
.callout.warn{ background:var(--red-tint); }
.callout.good{ background:var(--teal-tint); }
.callout b{ color:var(--navy-deep); }

/* ---------- Schedule ---------- */
.schedule-list{ display:grid; gap:12px; margin-top:16px; }
.schedule-day{
  background:var(--card); border-radius:14px; padding:14px 18px;
  box-shadow:var(--shadow); border-left:4px solid var(--navy-tint);
}
.schedule-day.is-today{ border-left-color:var(--gold); background:#FFFBEF; }
.sd-top{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.sd-label{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.02rem; color:var(--navy-deep); }
.today-badge{ background:var(--gold); color:#3A2900; font-family:'Fredoka',sans-serif; font-weight:600; font-size:.72rem; padding:3px 10px; border-radius:999px; white-space:nowrap; }
.sd-date{ font-size:.85rem; color:var(--ink-soft); margin-top:2px; }
.sd-time{ font-family:'Fredoka',sans-serif; font-weight:600; color:var(--pink-deep); margin-top:6px; font-size:.95rem; }
.sd-note{ font-size:.88rem; color:var(--ink-soft); margin-top:6px; }

/* ---------- Parking ---------- */
.gallery{ display:grid; grid-template-columns:1fr; gap:16px; margin:18px 0; }
@media(min-width:640px){ .gallery{ grid-template-columns:1fr 1fr; } }
figure{ margin:0; }
figcaption{ font-size:.84rem; color:var(--ink-soft); padding:8px 4px 0; }

/* ---------- Prep cards ---------- */
.prep-grid{ display:grid; grid-template-columns:1fr; gap:16px; }
@media(min-width:640px){ .prep-grid{ grid-template-columns:repeat(3,1fr); } }
.prep-card{ background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow); padding:20px; border-top:5px solid var(--pink); }
.prep-card.mental{ border-top-color:var(--gold); }
.prep-card.emotional{ border-top-color:var(--teal); }
.prep-card h3{ font-size:1.05rem; }
.prep-card ul{ padding-left:20px; margin:10px 0 0; font-size:.92rem; }
.prep-card li{ margin-bottom:8px; }

/* ---------- Music ---------- */
.music-grid{ display:grid; gap:12px; }
.track{ display:flex; flex-direction:column; gap:8px; background:var(--card); border-radius:16px; padding:14px 18px; box-shadow:var(--shadow); }
.track-top{ display:flex; align-items:center; gap:14px; }
.track .note-icon{ flex:0 0 auto; width:42px; height:42px; border-radius:50%; background:var(--navy-tint); color:var(--navy); display:flex; align-items:center; justify-content:center; font-size:1.2rem; }
.track .ttext{ flex:1; min-width:0; }
.track .ttext b{ display:block; font-family:'Fredoka',sans-serif; }
.track .ttext span{ font-size:.85rem; color:var(--ink-soft); }
.track .status{ flex:0 0 auto; font-size:.76rem; font-family:'Fredoka', sans-serif; font-weight:600; color:var(--ink-soft); background:var(--navy-tint); padding:5px 10px; border-radius:999px; white-space:nowrap; }
.track audio{ width:100%; height:36px; }

/* ---------- Checklist ---------- */
.checklist{ list-style:none; padding:0; margin:0; display:grid; gap:10px; }
.checklist li{ display:flex; gap:10px; align-items:flex-start; background:var(--card); border-radius:12px; padding:12px 14px; box-shadow:var(--shadow); font-size:.93rem; }
.checklist li::before{ content:'○'; color:var(--pink); font-size:1.1rem; line-height:1.2; }

/* ---------- Extra info ---------- */
.info-grid{ display:grid; gap:14px; }
.info-card{ background:var(--card); border-radius:16px; padding:16px 18px; box-shadow:var(--shadow); }
.info-card h3{ font-size:1rem; margin-bottom:8px; }
.info-card .row{ display:flex; justify-content:space-between; gap:12px; padding:6px 0; border-bottom:1px solid var(--line); font-size:.92rem; }
.info-card .row:last-child{ border-bottom:none; }
.info-card .row b{ color:var(--navy-deep); font-family:'Fredoka',sans-serif; font-weight:600; }

/* ---------- Footer ---------- */
footer{ background:var(--navy-deep); color:rgba(255,255,255,0.85); padding:46px 0 34px; margin-top:20px; text-align:center; }
footer .quote{ font-family:'Fredoka', sans-serif; color:#fff; font-size:1.25rem; max-width:34ch; margin:0 auto 14px; }
footer .sub{ font-size:.9rem; color:rgba(255,255,255,0.6); }
footer .fam{ color:var(--gold); font-family:'Fredoka',sans-serif; font-weight:600; margin-top:18px; }
footer .admin-link{ display:inline-block; margin-top:22px; font-size:.76rem; color:rgba(255,255,255,0.35); text-decoration:none; }

/* ---------- Empty state ---------- */
.empty-wrap{ max-width:520px; margin:0 auto; padding:80px 20px; text-align:center; }
.empty-wrap img{ width:80px; margin:0 auto 20px; }

/* ---------- Future comps page ---------- */
.future-wrap{ padding:40px 0 80px; }
.back-link{ display:inline-block; margin-bottom:18px; font-family:'Fredoka',sans-serif; font-weight:600; font-size:.9rem; text-decoration:none; }
.future-lede{ color:var(--ink-soft); max-width:52ch; }
.future-list{ display:grid; gap:14px; margin-top:24px; }
.future-card{
  display:flex; flex-direction:column; gap:6px;
  background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow);
  padding:18px 20px; text-decoration:none; color:inherit;
  border-left:5px solid var(--pink);
}
.fc-top{ display:flex; justify-content:space-between; align-items:center; gap:10px; }
.fc-name{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.1rem; color:var(--navy-deep); }
.fc-date{ font-size:.9rem; color:var(--ink-soft); }
.fc-address{ font-size:.88rem; color:var(--ink-soft); }
.fc-quote{ font-size:.86rem; font-style:italic; color:var(--pink-deep); }
.fc-cta{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:.85rem; color:var(--pink-deep); margin-top:4px; }

.badge{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:.7rem; padding:4px 10px; border-radius:999px; white-space:nowrap; }
.badge.ongoing{ background:#FCEFC7; color:#7A5B00; }
.badge.upcoming{ background:var(--navy-tint); color:var(--navy-deep); }
.badge.completed{ background:#EDEAF1; color:var(--ink-soft); }

@media print{
  .quicknav, .hero-track, .lookahead{ display:none; }
  .hero{ background:var(--navy); }
}
