@import url('https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400;1,6..72,500&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

/* ============================================================
   The Northeast Circuit  -  shared theme
   Redesign off parchment/oxblood. One locked accent (vermilion).
   Type: Newsreader (editorial serif) + Space Grotesk (UI) + JetBrains Mono (stamps).
   Radius rule: cards / images / inputs = 6px ; pills / buttons = full.
   Dual mode via CSS variables + prefers-color-scheme + [data-theme] toggle.
   ============================================================ */

:root{
  /* light (default) */
  --bg:#f4f5f3;
  --bg-tint:#eceeea;
  --surface:#fbfbfa;
  --ink:#16213a;
  --ink-soft:#535d72;
  --ink-faint:#8b93a4;
  --accent:#b31942;          /* Old Glory red - default flag accent (per-page override below) */
  --accent-ink:#a3173b;      /* darker red - link/label text, passes AA on paper */
  --accent-wash:color-mix(in srgb, var(--accent) 14%, transparent); /* auto-derives from --accent */
  --line:#d9dbd5;
  --line-soft:#e6e7e2;
  --shadow:0 1px 2px rgba(22,33,58,.05), 0 10px 30px rgba(22,33,58,.08);
  --shadow-lift:0 2px 6px rgba(22,33,58,.07), 0 18px 44px rgba(22,33,58,.13);

  --serif:'Newsreader',Georgia,'Times New Roman',serif;
  --sans:'Space Grotesk',ui-sans-serif,system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --r:6px;
  --r-pill:999px;
  --wrap:1080px;
  --turn:.5s;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0f1626;
    --bg-tint:#141d31;
    --surface:#172033;
    --ink:#e9ecf3;
    --ink-soft:#a3adc2;
    --ink-faint:#717c93;
    --accent:#ff5366;
    --accent-ink:#ff8597;
    --line:rgba(233,236,243,.14);
    --line-soft:rgba(233,236,243,.08);
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 12px 34px rgba(0,0,0,.4);
    --shadow-lift:0 2px 8px rgba(0,0,0,.35), 0 22px 50px rgba(0,0,0,.5);
  }
}
[data-theme="dark"]{
  --bg:#0f1626;
  --bg-tint:#141d31;
  --surface:#172033;
  --ink:#e9ecf3;
  --ink-soft:#a3adc2;
  --ink-faint:#717c93;
  --accent:#ff5366;
  --accent-ink:#ff8597;
  --line:rgba(233,236,243,.14);
  --line-soft:rgba(233,236,243,.08);
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 12px 34px rgba(0,0,0,.4);
  --shadow-lift:0 2px 8px rgba(0,0,0,.35), 0 22px 50px rgba(0,0,0,.5);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--serif);
  font-size:18px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
  transition:background .3s ease, color .3s ease;
}
/* subtle per-page color cast, driven by the page's --accent */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(110% 70% at 88% -8%, var(--accent-wash), transparent 62%),
    radial-gradient(90% 60% at 0% 108%, var(--accent-wash), transparent 60%);
}
img{max-width:100%;display:block}
a{color:var(--accent-ink);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:2px}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 26px}
.narrow{max-width:760px}

/* ---------- type helpers ---------- */
.serif{font-family:var(--serif)}
.sans{font-family:var(--sans)}
.mono{font-family:var(--mono)}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.04;letter-spacing:-.012em}
.lede{font-size:1.2rem;color:var(--ink-soft);max-width:64ch}
.kicker{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--accent-ink);
}

/* ---------- top nav (single line, <=72px) ---------- */
.nav{
  position:sticky;top:0;z-index:40;
  background:color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter:saturate(1.4) blur(10px);
  -webkit-backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--line);
}
.nav-in{display:flex;align-items:center;gap:18px;height:64px;max-width:var(--wrap);margin:0 auto;padding:0 26px}
.brand{font-family:var(--serif);font-weight:600;font-size:1.18rem;letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
.brand:hover{text-decoration:none}
.brand b{color:var(--accent-ink)}
.nav-spacer{flex:1}
.nav-links{display:flex;align-items:center;gap:6px}
.nav-links a{
  font-family:var(--sans);font-size:.82rem;font-weight:500;letter-spacing:.01em;
  color:var(--ink-soft);padding:7px 11px;border-radius:var(--r-pill);white-space:nowrap;
  transition:color .15s, background .15s;
}
.nav-links a:hover{color:var(--ink);background:var(--bg-tint);text-decoration:none}
.nav-links a[aria-current="page"]{color:var(--accent-ink);background:var(--accent-wash)}
.theme-toggle{
  font-family:var(--sans);font-size:.95rem;line-height:1;cursor:pointer;
  background:var(--surface);border:1px solid var(--line);color:var(--ink);
  width:38px;height:38px;border-radius:var(--r-pill);display:grid;place-items:center;
  transition:transform .15s, border-color .15s;
}
.theme-toggle:hover{transform:translateY(-1px);border-color:var(--accent)}
.theme-toggle:active{transform:translateY(0)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;
  font-size:.86rem;letter-spacing:.01em;padding:11px 20px;border-radius:var(--r-pill);
  border:1px solid transparent;cursor:pointer;transition:transform .15s, box-shadow .15s, background .15s;
  white-space:nowrap;
}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{box-shadow:var(--shadow-lift)}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent-ink)}

/* ---------- map link chip ---------- */
.maplink,.wikilink{
  display:inline-flex;align-items:center;gap:5px;font-family:var(--sans);font-weight:500;
  font-size:.74rem;letter-spacing:.02em;padding:4px 10px;border-radius:var(--r-pill);
  border:1px solid var(--line);color:var(--ink-soft);background:var(--surface);
  transition:border-color .15s, color .15s;
}
.maplink:hover,.wikilink:hover{border-color:var(--accent);color:var(--accent-ink);text-decoration:none}
.maplink svg,.wikilink svg{width:13px;height:13px;flex:none}
.linkrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}

/* ---------- pills ---------- */
.pill{
  display:inline-block;font-family:var(--mono);font-size:.6rem;letter-spacing:.08em;
  text-transform:uppercase;background:var(--ink);color:var(--bg);
  padding:3px 9px;border-radius:var(--r-pill);vertical-align:middle;
}
.pill.accent{background:var(--accent);color:#fff}
.pill.soft{background:var(--bg-tint);color:var(--ink-soft)}

/* ============================================================
   COVER (hero on home + each day)
   ============================================================ */
.cover{position:relative;overflow:hidden;padding:46px 0 30px}
.cover .wrap{position:relative;z-index:1}
.watermark{
  position:absolute;top:-26px;right:-46px;width:min(48vw,440px);
  color:var(--accent);opacity:.08;pointer-events:none;z-index:0;line-height:0;
  transform:rotate(-4deg);
}
.watermark svg{width:100%;height:auto;display:block;fill:currentColor}
@media (max-width:860px){ .watermark{width:300px;opacity:.06;top:-10px;right:-60px} }
.cover-art{
  border-radius:var(--r);overflow:hidden;border:1px solid var(--line);
  background:var(--bg-tint);box-shadow:var(--shadow);
}
.cover-art svg{width:100%;height:auto;display:block}
.cover-art{color:var(--ink-soft)}
.cover-art .ink{fill:var(--ink)}
.cover-art .soft{fill:var(--ink-soft)}
.cover-art .ac{fill:var(--accent)}
.cover-art .sky{fill:var(--bg-tint)}
.cover-art .pap{fill:var(--surface)}
.cover-art .ln{stroke:var(--line);stroke-width:1.5;fill:none}
.cover-art .acln{stroke:var(--accent);fill:none}
.daycover .cover-art{max-width:none}

.daycover{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center;padding:40px 0 14px}
.daycover .stamp{display:flex;align-items:baseline;gap:14px;margin-bottom:14px}
.daycover .dno{font-family:var(--serif);font-weight:600;font-size:clamp(3.4rem,9vw,6.2rem);line-height:.8;color:var(--accent)}
.daycover .dmeta{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);line-height:1.7}
.daycover h1{font-size:clamp(2.2rem,5.2vw,3.7rem);margin:6px 0 12px}
.daycover .tagline{font-style:italic;color:var(--accent-ink);font-size:1.3rem;margin-bottom:8px}
.daycover .city{font-family:var(--mono);font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}

/* ============================================================
   SECTIONS
   ============================================================ */
.section{padding:40px 0;border-top:1px solid var(--line-soft)}
.section.lg{padding:64px 0}
.section.tight{padding:30px 0}
.sec-head{margin-bottom:26px}
.sec-head h2{font-size:clamp(1.7rem,3.6vw,2.5rem)}
.sec-head .lede{margin-top:10px}

/* ---------- plan rows ---------- */
.plan{display:grid;gap:0}
.prow{
  display:grid;grid-template-columns:120px 1fr;gap:18px;align-items:start;
  padding:15px 0;border-top:1px solid var(--line-soft);
}
.prow:first-child{border-top:none}
.prow .lab{font-family:var(--mono);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;color:var(--accent-ink);padding-top:4px}
.prow .val{color:var(--ink);font-size:1.02rem}

.hotelcard{
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:22px;
  padding:18px 22px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--surface);box-shadow:var(--shadow);
}
.hotelcard .hn{font-family:var(--serif);font-weight:600;font-size:1.3rem}
.hotelcard .ha{color:var(--ink-soft);font-size:.95rem}
.hotelcard .hx{font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;color:var(--ink-faint);text-transform:uppercase}

/* ---------- sights ---------- */
.sights{display:grid;gap:18px}
.sight{
  border-left:3px solid var(--accent);padding:2px 0 4px 22px;position:relative;
}
.sight::before{
  content:"";position:absolute;left:-8px;top:6px;width:13px;height:13px;border-radius:50%;
  background:var(--bg);border:3px solid var(--accent);
}
.sight .sn{font-family:var(--serif);font-weight:600;font-size:1.35rem;line-height:1.15;margin-bottom:4px}
.sight .sn .star{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.04em;color:var(--accent-ink);
  background:var(--accent-wash);padding:3px 8px;border-radius:var(--r-pill);margin-left:8px;
  vertical-align:middle;text-transform:uppercase;white-space:nowrap;
}
.sight .sd{color:var(--ink-soft);font-size:1.02rem}

/* ---------- reserve a tour ---------- */
.book{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r);
  background:var(--surface);box-shadow:var(--shadow);padding:17px 20px}
.book + .book{margin-top:14px}
.book .bk-school{font-family:var(--serif);font-weight:600;font-size:1.25rem;
  display:flex;align-items:center;gap:14px}
.book .bk-go{margin-left:auto;padding:8px 18px;font-size:.78rem;flex:none}
.book .bk-note{color:var(--ink-soft);font-size:.98rem;margin-top:7px;max-width:62ch}
@media(max-width:600px){ .book .bk-school{flex-wrap:wrap;gap:8px} .book .bk-go{margin-left:0} }

/* ---------- time-locked ---------- */
.timed{
  border:1px solid var(--accent);background:var(--accent-wash);border-radius:var(--r);
  padding:20px 22px;margin-top:8px;
}
.timed .tw{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:5px}
.timed .tt{font-family:var(--serif);font-weight:600;font-size:1.3rem;margin-bottom:7px}
.timed .td{color:var(--ink);font-size:1rem}
.timed + .timed{margin-top:16px}

/* ---------- food ---------- */
.food{display:grid;gap:0}
.meal{padding:20px 0;border-top:1px solid var(--line-soft)}
.meal:first-child{border-top:none}
.meal .mn{font-family:var(--serif);font-weight:600;font-size:1.3rem;line-height:1.15}
.meal .mtag{
  font-family:var(--mono);font-size:.58rem;letter-spacing:.07em;text-transform:uppercase;
  color:#fff;background:var(--ink);padding:3px 8px;border-radius:var(--r-pill);margin-left:9px;vertical-align:middle;
}
.meal .mtag.asia{background:var(--accent)}
.meal .md{color:var(--ink-soft);font-size:1rem;margin-top:4px}
.meal .mmeta{font-family:var(--mono);font-size:.68rem;letter-spacing:.03em;color:var(--ink-faint);margin-top:6px}

/* ============================================================
   HOME: day index
   ============================================================ */
.index-list{display:grid;gap:0;border-top:1px solid var(--line)}
.ix{
  display:grid;grid-template-columns:64px 1fr auto;gap:20px;align-items:center;
  padding:18px 6px;border-bottom:1px solid var(--line-soft);
  transition:background .18s, padding .18s;color:var(--ink);
}
.ix:hover{background:var(--bg-tint);text-decoration:none;padding-left:14px}
.ix .ixn{font-family:var(--serif);font-weight:600;font-size:2rem;color:var(--accent);line-height:1}
.ix .ixd{font-family:var(--mono);font-size:.64rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-faint);margin-top:3px}
.ix .ixt{font-family:var(--serif);font-weight:600;font-size:1.3rem;line-height:1.12}
.ix .ixtag{color:var(--ink-soft);font-size:.96rem;margin-top:2px}
.ix .ixgo{font-family:var(--mono);font-size:1.1rem;color:var(--ink-faint);transition:transform .18s, color .18s}
.ix:hover .ixgo{transform:translateX(4px);color:var(--accent)}
/* the feature day (Jul 4) */
.ix.feature{background:var(--accent-wash);border-radius:var(--r);border-bottom-color:transparent;margin:6px 0}
.ix.feature .ixtag{color:var(--accent-ink)}

/* ---------- flights ---------- */
.flights{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.flight{border:1px solid var(--line);border-radius:var(--r);padding:22px 24px;background:var(--surface);box-shadow:var(--shadow)}
.flight .fdir{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:14px}
.flight .froute{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.flight .ap{font-family:var(--serif);font-weight:600;font-size:2.4rem;line-height:1}
.flight .farrow{flex:1;height:2px;background:var(--line);position:relative;border-radius:2px}
.flight .farrow::after{content:"";position:absolute;right:-1px;top:-3px;border-left:7px solid var(--ink-faint);border-top:4px solid transparent;border-bottom:4px solid transparent}
.flight .frow{display:flex;justify-content:space-between;gap:12px;font-size:.92rem;padding:6px 0;border-top:1px solid var(--line-soft)}
.flight .frow .l{font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding-top:3px}
.flight .frow .r{font-family:var(--sans);font-weight:500;text-align:right}

/* ---------- map ---------- */
#map{height:440px;width:100%;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);background:var(--bg-tint);z-index:1}
.legs{margin-top:22px;border-top:1px solid var(--line)}
.leg{display:grid;grid-template-columns:30px 1fr auto auto;gap:16px;align-items:center;padding:13px 4px;border-bottom:1px solid var(--line-soft);font-size:.98rem}
.leg .lgn{font-family:var(--mono);font-size:.8rem;color:var(--accent-ink)}
.leg .lgr{font-family:var(--serif);font-weight:500}
.leg .lgm,.leg .lgt{font-family:var(--mono);font-size:.82rem;color:var(--ink-soft);text-align:right;white-space:nowrap}
.leg.total{font-weight:600;border-bottom:none;background:var(--accent-wash);border-radius:var(--r);padding:13px 12px;margin-top:6px}
.leg.total .lgr{color:var(--accent-ink)}
.leaflet-pin{background:var(--accent);color:#fff;width:30px;height:30px;border-radius:50% 50% 50% 0;
  transform:rotate(-45deg);display:grid;place-items:center;box-shadow:0 3px 8px rgba(0,0,0,.35);border:2px solid #fff}
.leaflet-pin span{transform:rotate(45deg);font-family:var(--sans);font-weight:700;font-size:.85rem}

/* ---------- notes ---------- */
.notes{display:grid;gap:16px;counter-reset:n}
.note{display:grid;grid-template-columns:34px 1fr;gap:16px;align-items:start}
.note .ni{counter-increment:n;font-family:var(--serif);font-weight:600;color:var(--accent);font-size:1.5rem;line-height:1}
.note .ni::before{content:counter(n)}
.note .nt strong{color:var(--ink);font-weight:600}
.note .nt{color:var(--ink-soft)}

/* ============================================================
   PHOTOS + JOURNAL (giscus + empty slots)
   ============================================================ */
.album-intro{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;margin-bottom:22px}
.album-intro .who{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;color:var(--ink-faint)}
.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:26px}
.slot{
  aspect-ratio:4/3;border:1.5px dashed var(--line);border-radius:var(--r);
  display:grid;place-items:center;background:var(--bg-tint);color:var(--ink-faint);
  font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-align:center;padding:10px;
}
.slot svg{width:34px;height:34px;opacity:.5;margin-bottom:8px}
.howto{display:grid;gap:12px;margin-bottom:26px}
.howto-row{display:grid;grid-template-columns:26px 1fr;gap:14px;align-items:start;
  background:var(--bg-tint);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 18px;color:var(--ink-soft);font-size:.98rem}
.howto-row b{color:var(--ink)}
.howto-row a{font-weight:600}
.howto-n{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;
  font-family:var(--sans);font-weight:700;font-size:.78rem;display:grid;place-items:center;margin-top:1px}
.giscus-wrap{border-top:1px solid var(--line);padding-top:24px;min-height:120px}
.giscus-note{font-family:var(--sans);font-size:.86rem;color:var(--ink-soft);background:var(--bg-tint);
  border:1px solid var(--line);border-radius:var(--r);padding:14px 18px;margin-bottom:18px}
.giscus-note b{color:var(--ink)}

/* ---------- day footer nav (page turn) ---------- */
.turnnav{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;
  padding:34px 0;border-top:1px solid var(--line);margin-top:18px}
.turnnav a{display:flex;flex-direction:column;gap:3px;color:var(--ink);padding:12px 14px;border-radius:var(--r);transition:background .15s}
.turnnav a:hover{background:var(--bg-tint);text-decoration:none}
.turnnav .prev{align-items:flex-start}
.turnnav .next{align-items:flex-end;text-align:right}
.turnnav .tdir{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}
.turnnav .tlabel{font-family:var(--serif);font-weight:600;font-size:1.1rem;color:var(--accent-ink)}
.turnnav .toindex{font-family:var(--sans);font-weight:600;font-size:.8rem;color:var(--ink-soft);
  border:1px solid var(--line);border-radius:var(--r-pill);padding:9px 16px}
.turnnav .toindex:hover{border-color:var(--accent);color:var(--accent-ink)}

/* ============================================================
   FOOTER + sitemap
   ============================================================ */
.foot{border-top:2px solid var(--ink);margin-top:30px;padding:46px 0 64px;background:var(--bg-tint)}
.foot .seal{font-family:var(--serif);font-style:italic;font-size:1.3rem;color:var(--accent-ink);max-width:48ch;margin-bottom:30px}
.sitemap{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px;margin-bottom:34px}
.sitemap h4{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:12px;font-weight:500}
.sitemap ul{list-style:none;display:grid;gap:7px}
.sitemap a{font-family:var(--sans);font-size:.9rem;color:var(--ink-soft)}
.sitemap a:hover{color:var(--accent-ink)}
.sitemap .col-days ul{grid-template-columns:1fr 1fr;gap:7px 18px}
.foot .fine{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);border-top:1px solid var(--line);padding-top:20px}

/* ============================================================
   JOURNAL feed
   ============================================================ */
.feed{display:grid;gap:0;border-top:1px solid var(--line)}
.feeditem{display:grid;grid-template-columns:90px 1fr auto;gap:20px;align-items:center;padding:20px 6px;border-bottom:1px solid var(--line-soft);color:var(--ink)}
.feeditem:hover{background:var(--bg-tint);text-decoration:none}
.feeditem .fd{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}
.feeditem .ft{font-family:var(--serif);font-weight:600;font-size:1.3rem}
.feeditem .fc{font-family:var(--mono);font-size:.66rem;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}

/* ============================================================
   MOTION
   ============================================================ */
.reveal{opacity:0;transform:translateY(18px)}
.reveal.in{opacity:1;transform:none;transition:opacity .65s cubic-bezier(.16,1,.3,1), transform .65s cubic-bezier(.16,1,.3,1)}

/* cover entrance: one orchestrated moment per page */
@media (prefers-reduced-motion: no-preference){
  .enter > *{opacity:0;animation:rise .7s cubic-bezier(.16,1,.3,1) forwards}
  .enter > *:nth-child(1){animation-delay:.05s}
  .enter > *:nth-child(2){animation-delay:.14s}
  .enter > *:nth-child(3){animation-delay:.23s}
  .enter > *:nth-child(4){animation-delay:.32s}
  .enter > *:nth-child(5){animation-delay:.41s}
}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* cross-document page turn between days */
@view-transition{navigation:auto}
@media (prefers-reduced-motion: no-preference){
  ::view-transition-old(root){animation:turn-out var(--turn) cubic-bezier(.4,0,.2,1) both}
  ::view-transition-new(root){animation:turn-in var(--turn) cubic-bezier(.16,1,.3,1) both}
  /* reverse direction when going to a previous day (html[data-vt="back"]) */
  html[data-vt="back"]::view-transition-old(root){animation:turn-out-back var(--turn) cubic-bezier(.4,0,.2,1) both}
  html[data-vt="back"]::view-transition-new(root){animation:turn-in-back var(--turn) cubic-bezier(.16,1,.3,1) both}
}
@keyframes turn-out{from{opacity:1;transform:none}to{opacity:0;transform:translateX(-7%) rotateY(4deg)}}
@keyframes turn-in{from{opacity:0;transform:translateX(9%) rotateY(-5deg)}to{opacity:1;transform:none}}
@keyframes turn-out-back{from{opacity:1;transform:none}to{opacity:0;transform:translateX(7%) rotateY(-4deg)}}
@keyframes turn-in-back{from{opacity:0;transform:translateX(-9%) rotateY(5deg)}to{opacity:1;transform:none}}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important}
  ::view-transition-group(*),::view-transition-old(root),::view-transition-new(root){animation:none !important}
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:860px){
  .daycover{grid-template-columns:1fr;gap:24px}
  .flights{grid-template-columns:1fr}
  .sitemap{grid-template-columns:1fr 1fr}
  .slots{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:600px){
  body{font-size:17px}
  .wrap{padding:0 18px}
  .nav-in{padding:0 18px;gap:10px}
  .nav-links a{padding:6px 8px;font-size:.78rem}
  .prow{grid-template-columns:92px 1fr;gap:12px}
  .leg{grid-template-columns:24px 1fr;gap:8px 12px}
  .leg .lgm,.leg .lgt{grid-column:2;text-align:left}
  .sitemap{grid-template-columns:1fr}
  .sitemap .col-days ul{grid-template-columns:1fr 1fr}
  .feeditem{grid-template-columns:1fr;gap:5px}
  .feeditem .fc{display:none}
  #map{height:340px}
}
@media (max-width:380px){
  .nav-links .lbl{display:none}
  .slots{grid-template-columns:1fr}
  .daycover .dno{font-size:3rem}
}
