:root{
  --ink:#251813;
  --muted:#705e55;
  --paper:#fffaf3;
  --cream:#f6eadc;
  --red:#9f2b1f;
  --red-2:#c34b35;
  --green:#355c4a;
  --gold:#c59247;
  --line:rgba(65,38,27,.13);
  --dark:#211713;
  --white:#fff;
  --shadow:0 18px 60px rgba(74,38,25,.10);
  --radius:24px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);line-height:1.65}
a{color:inherit;text-decoration:none}
button{font:inherit}
.shell{width:min(1160px,calc(100% - 40px));margin:0 auto}
.site-header{height:72px;position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:26px;padding:0 max(20px,calc((100vw - 1160px)/2));background:rgba(255,250,243,.88);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;white-space:nowrap}.brand-mark{width:34px;height:34px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-family:serif}
.top-nav{display:flex;gap:22px;margin-left:auto}.top-nav a{font-size:14px;color:var(--muted)}.top-nav a:hover{color:var(--red)}
.concert-toggle{border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 14px;display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--ink);box-shadow:0 4px 20px rgba(40,20,10,.04)}.concert-toggle .dot{width:8px;height:8px;border-radius:50%;background:#d93c33;box-shadow:0 0 0 4px rgba(217,60,51,.12)}
.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:54px;align-items:center;padding:78px 0 54px}.eyebrow,.kicker{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--red);font-weight:800}.hero h1{font-family:"Songti SC","STSong",serif;font-size:clamp(54px,7.2vw,92px);line-height:.98;letter-spacing:-.05em;margin:18px 0 24px}.hero h1 span{color:var(--red)}.hero-lede{font-size:18px;color:var(--muted);max-width:650px;margin:0 0 28px}.hero-meta{display:flex;gap:34px;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:28px}.hero-meta div{display:flex;align-items:baseline;gap:6px}.hero-meta strong{font-size:30px}.hero-meta span{font-size:13px;color:var(--muted)}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:12px 19px;border:1px solid transparent;font-weight:700;cursor:pointer}.btn.primary{background:var(--red);color:white}.btn.ghost{border-color:var(--line);background:white}.btn.ghost-dark{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:white}.micro-note{font-size:12px;color:#8f7b71;margin-top:14px}
.hero-visual{position:relative;min-height:520px;display:grid;place-items:center}.hero-visual>img{width:100%;height:auto;filter:drop-shadow(0 25px 60px rgba(83,47,25,.16))}
.overview-strip{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:22px;background:white;overflow:hidden;box-shadow:var(--shadow)}.overview-item{display:flex;gap:13px;padding:22px 24px}.overview-item+.overview-item{border-left:1px solid var(--line)}.overview-item .icon{font-size:24px}.overview-item b{font-size:14px}.overview-item p{margin:3px 0 0;color:var(--muted);font-size:13px;line-height:1.4}
.section{padding:92px 0}.section-warm{background:var(--cream)}.section-dark{background:var(--dark);color:white}.section-head{display:flex;align-items:end;justify-content:space-between;gap:50px;margin-bottom:34px}.section-head h2{font-family:"Songti SC","STSong",serif;font-size:44px;line-height:1.15;margin:8px 0 0}.section-head>p{max-width:560px;color:var(--muted);margin:0}.section-head.compact{margin-bottom:22px}
.day-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:26px}.day-tab{text-align:left;padding:15px 17px;border:1px solid var(--line);border-radius:16px;background:#fff;cursor:pointer;transition:.2s}.day-tab span{display:block;font-weight:800;font-size:14px}.day-tab small{display:block;color:var(--muted);margin-top:3px}.day-tab.active{background:var(--red);color:white;border-color:var(--red);transform:translateY(-2px);box-shadow:0 12px 28px rgba(159,43,31,.18)}.day-tab.active small{color:rgba(255,255,255,.75)}
.timeline{max-width:930px;margin:0 auto}.timeline-item{display:grid;grid-template-columns:112px 1fr;gap:18px;position:relative}.timeline-item:not(:last-child) .time-col:after{content:"";position:absolute;left:72px;top:36px;bottom:-16px;width:1px;background:var(--line)}.time-col{position:relative;text-align:right;padding-top:25px}.time-col span{font-size:13px;font-weight:800;color:var(--muted)}.time-col i{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--red);right:-25px;top:30px;box-shadow:0 0 0 6px var(--paper);z-index:2}.event-card{display:flex;gap:16px;background:white;border:1px solid var(--line);border-radius:20px;padding:20px 22px;margin-bottom:16px;box-shadow:0 8px 30px rgba(60,30,15,.05)}.event-icon{width:42px;height:42px;border-radius:14px;background:#f4eee8;display:grid;place-items:center;font-size:20px;flex:0 0 auto}.event-main{flex:1}.event-top{display:flex;justify-content:space-between;gap:16px;align-items:start}.event-top h3{margin:0;font-size:18px}.event-tag{font-size:11px;border-radius:999px;background:#f6ece6;padding:4px 9px;color:var(--red);white-space:nowrap}.event-main p{margin:7px 0 7px;color:var(--muted);font-size:14px}.map-link{font-size:12px;font-weight:700;color:var(--red)}.type-concert .event-card{border-color:rgba(159,43,31,.35);background:linear-gradient(135deg,#fff 0,#fff7f4 100%)}.type-sight .time-col i{background:var(--green)}
.food-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.food-card{background:#fff;border:1px solid rgba(72,44,28,.09);border-radius:22px;padding:22px;position:relative;overflow:hidden}.food-icon{position:absolute;right:16px;top:10px;font-family:"STKaiti",serif;font-size:56px;color:rgba(159,43,31,.09);font-weight:900}.food-card-head{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.food-card h3{font-size:22px;margin:18px 0 5px}.food-role{font-size:13px;color:var(--muted);margin:0 0 16px}.food-card dl{margin:0}.food-card dl>div{display:grid;grid-template-columns:44px 1fr;gap:8px;padding:8px 0;border-top:1px solid var(--line);font-size:12px}.food-card dt{color:#978175}.food-card dd{margin:0}.food-map{display:inline-block;margin-top:14px;color:var(--red);font-weight:700;font-size:12px}
.route-layout{display:grid;grid-template-columns:1.12fr .88fr;gap:20px}.route-map-card{background:white;border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:var(--shadow)}.route-map-card img{width:100%;display:block;border-radius:16px}.map-legend{display:flex;gap:18px;font-size:12px;color:var(--muted);padding:12px 4px 2px}.pin{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.pin-red{background:var(--red)}.pin-green{background:var(--green)}.route-notes{display:grid;gap:12px}.route-notes article{display:grid;grid-template-columns:42px 1fr;gap:14px;background:white;border:1px solid var(--line);border-radius:20px;padding:20px}.route-num{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#f2e7db;color:var(--red);font-weight:900}.route-notes h3{margin:0 0 6px;font-size:17px}.route-notes p{margin:0;color:var(--muted);font-size:13px}
@media (max-width:900px){.top-nav{display:none}.site-header{padding:0 18px}.concert-toggle{margin-left:auto;font-size:12px}.hero{grid-template-columns:1fr;padding-top:52px}.hero-visual{min-height:430px}.overview-strip{grid-template-columns:1fr}.overview-item+.overview-item{border-left:0;border-top:1px solid var(--line)}.section-head{display:block}.section-head>p{margin-top:12px}.day-tabs{grid-template-columns:repeat(2,1fr)}.food-grid{grid-template-columns:repeat(2,1fr)}.route-layout{grid-template-columns:1fr}}
@media (max-width:620px){.shell{width:min(100% - 24px,1160px)}.site-header{height:64px}.brand span:last-child{display:none}.concert-toggle{padding:8px 10px}.hero{padding-top:38px}.hero h1{font-size:52px}.hero-lede{font-size:15px}.hero-meta{gap:17px}.hero-meta strong{font-size:24px}.hero-visual{min-height:340px}.section{padding:68px 0}.section-head h2{font-size:34px}.day-tabs{grid-template-columns:1fr 1fr}.day-tab{padding:12px}.day-tab small{display:none}.timeline-item{grid-template-columns:72px 1fr;gap:12px}.timeline-item:not(:last-child) .time-col:after{left:44px}.time-col i{right:-21px}.time-col span{font-size:11px}.event-card{padding:16px}.event-icon{display:none}.event-top{display:block}.event-tag{display:inline-block;margin-top:5px}.food-grid{grid-template-columns:1fr}.route-map-card{padding:10px}}

/* Fixed section switcher, with room for mobile safe areas. */
body{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
#top,.section{scroll-margin-top:88px}
.floating-nav{position:fixed;z-index:60;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:min(360px,calc(100% - 32px));display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:6px;background:rgba(255,255,255,.95);border:1px solid #e3eaf0;border-radius:24px;box-shadow:0 8px 32px rgba(44,62,80,.13);backdrop-filter:blur(16px)}
.floating-nav a{min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid transparent;border-radius:18px;color:var(--nav-color);transition:background .18s,border-color .18s}
.floating-nav svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.floating-nav span{font-size:10px;line-height:1.3;font-weight:600}
.floating-nav a:hover{background:#f5f8fb}
.floating-nav a[aria-current="location"]{background:#f2f8ff;border-color:#bedfff}
.floating-nav a:focus-visible{outline:2px solid var(--nav-color);outline-offset:2px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.floating-nav a{transition:none}}
