:root{--bg:#f7f3ec;--card:#fffdf9;--ink:#24322e;--muted:#68746e;--line:#dfd8cc;--accent:#df6554;--accent2:#377a85;--gold:#cc9b45;--shadow:0 12px 36px rgba(55,45,28,.10)}
    @media (prefers-color-scheme:dark){:root{--bg:#17211f;--card:#21302c;--ink:#f5efe4;--muted:#b8c2bb;--line:#3b4a45;--accent:#ff8d7d;--accent2:#80c7cf;--gold:#f0c56c;--shadow:0 12px 36px rgba(0,0,0,.22)}}
    *{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;line-height:1.55}.wrap{max-width:920px;margin:auto;padding:18px 16px 50px}a{color:inherit}.maplink{color:inherit;text-decoration:none;border-bottom:1px dashed currentColor}.maplink:hover{color:var(--accent2)}
    .hero{padding:26px 5px 18px}.eyebrow{letter-spacing:.15em;text-transform:uppercase;font-size:.72rem;color:var(--accent);font-weight:800}.hero h1{font-family:Georgia,"Songti SC",serif;font-size:clamp(2.2rem,8vw,4.9rem);margin:.12em 0;letter-spacing:-.06em;line-height:.94}.subtitle{color:var(--muted);margin:0;font-size:.98rem}.subtitle b{color:var(--ink)}
    .card{background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:20px;margin:16px 0}.now{background:linear-gradient(130deg,var(--card),color-mix(in srgb,var(--accent) 10%,var(--card)))}.card h2{font-family:Georgia,"Songti SC",serif;letter-spacing:-.03em;font-size:1.5rem;margin:0 0 10px}.label{font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.next{font-weight:800;font-size:1.15rem;margin:4px 0}.countdown{display:flex;gap:10px;margin-top:14px}.unit{min-width:75px;background:color-mix(in srgb,var(--ink) 6%,transparent);border-radius:14px;padding:8px;text-align:center}.unit strong{display:block;font-size:1.65rem;line-height:1}.unit span{font-size:.7rem;color:var(--muted)}
    .note{font-size:.88rem;color:var(--muted);margin:.5rem 0 0}.warning{border-left:4px solid var(--accent);padding:8px 0 8px 12px;background:color-mix(in srgb,var(--accent) 7%,transparent);border-radius:0 10px 10px 0}.good{border-left-color:var(--accent2)}
    .overview{overflow:hidden;padding:0}.overview h2{padding:20px 20px 0}.legend{display:flex;gap:8px;flex-wrap:wrap;padding:0 20px 10px}.legend span{font-size:.76rem;white-space:nowrap}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.svgmap{display:block;width:100%;height:auto;background:#e9e2d5}.svgmap text{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;fill:#37433e}.svgmap .street{stroke:#c9c0b3;stroke-width:2;fill:none}.svgmap .river{stroke:#86c9dc;stroke-width:13;fill:none;stroke-linecap:round}.svgmap .route{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2 7}.svgmap .pin{stroke:#fff9ef;stroke-width:3}.svgmap .home{fill:#263b36}.svgmap .tiny{font-size:10px;font-weight:700}.svgmap .small{font-size:9px}
    .confirmed{display:grid;gap:12px}.booking{border:1px solid var(--line);border-radius:15px;padding:14px}.booking h3{margin:0 0 4px;font-size:1rem}.booking p{margin:3px 0;font-size:.9rem;color:var(--muted)}.tag{display:inline-block;background:color-mix(in srgb,var(--accent2) 14%,transparent);color:var(--accent2);font-size:.72rem;font-weight:800;border-radius:999px;padding:2px 8px;margin-right:4px}.tag.pending{background:color-mix(in srgb,var(--gold) 16%,transparent);color:#926b23}.tag.risk{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
    details.day{background:var(--card);border:1px solid var(--line);border-radius:20px;margin:15px 0;overflow:hidden;box-shadow:0 8px 22px rgba(55,45,28,.05)}details.day[open]{box-shadow:var(--shadow)}summary{cursor:pointer;list-style:none;padding:18px 18px 16px;display:flex;gap:13px;align-items:center}summary::-webkit-details-marker{display:none}.date{border-radius:13px;width:56px;min-width:56px;padding:7px 3px;background:var(--day,#377a85);color:#fff;text-align:center;line-height:1.05;font-weight:800}.date small{display:block;font-size:.66rem;opacity:.83;margin-bottom:3px}.date b{font-size:1.35rem}.sumcopy{flex:1}.sumcopy h2{font-size:1.2rem;margin:0;font-family:Georgia,"Songti SC",serif}.sumcopy p{margin:1px 0 0;font-size:.84rem;color:var(--muted)}.chev{font-size:1.2rem;color:var(--muted)}details[open] .chev{transform:rotate(180deg)}.daybody{border-top:1px solid var(--line);padding:0 18px 18px}.weather{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:15px 0;padding:11px 12px;border-radius:13px;background:color-mix(in srgb,var(--day) 10%,transparent);font-size:.87rem}.weather a{font-weight:800;color:var(--accent2);text-decoration:none}.routebox{border:1px dashed var(--line);border-radius:14px;padding:12px;margin:12px 0}.routebox p{font-size:.84rem;color:var(--muted);margin:5px 0}.routebox a{font-size:.86rem;font-weight:800;color:var(--accent2)}
    .timeline{position:relative;margin:18px 0 0}.timeline:before{content:"";position:absolute;left:52px;top:5px;bottom:6px;border-left:2px dashed var(--line)}.stop{position:relative;display:grid;grid-template-columns:68px 1fr;gap:14px;padding:0 0 17px}.time{font-size:.79rem;text-align:right;font-weight:800;color:var(--muted);padding-top:3px}.item{position:relative;padding-left:16px}.item:before{content:"";position:absolute;left:-5px;top:8px;width:10px;height:10px;border-radius:50%;background:var(--day);border:3px solid var(--card)}.item h3{font-size:1rem;margin:0}.item p{font-size:.88rem;color:var(--muted);margin:3px 0}.item .tag{margin-top:4px}.place{font-weight:800}.divider{height:1px;background:var(--line);margin:18px 0}.todo{padding-left:21px;margin:8px 0}.todo li{margin:10px 0;padding-left:3px}.tipgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.tip{padding:13px;border:1px solid var(--line);border-radius:14px}.tip h3{font-size:.95rem;margin:0 0 4px}.tip p{margin:0;color:var(--muted);font-size:.86rem}
    table{width:100%;border-collapse:collapse;font-size:.86rem}th,td{padding:9px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.money{text-align:right;white-space:nowrap}.total{font-size:1.06rem;font-weight:800}.footer{text-align:center;font-size:.78rem;color:var(--muted);padding:18px 8px}.pill{font-size:.72rem;border:1px solid var(--line);border-radius:999px;padding:4px 9px;color:var(--muted);display:inline-block}
    @media (max-width:540px){.wrap{padding:10px 11px 42px}.card{padding:16px;border-radius:17px}.hero{padding:21px 4px 12px}.unit{min-width:0;flex:1}.timeline:before{left:46px}.stop{grid-template-columns:60px 1fr;gap:10px}.weather{align-items:flex-start;flex-direction:column}.booking{padding:12px}th,td{padding:8px 3px}.confirmed{gap:9px}}

/* Multi-file maintenance version: keep layout responsive on small phones. */
@media (max-width:540px){
  .wrap{padding:10px 11px 42px}
  .card{padding:16px;border-radius:17px}
  .hero{padding:21px 4px 12px}
  .unit{min-width:0;flex:1}
  .timeline:before{left:46px}
  .stop{grid-template-columns:60px 1fr;gap:10px}
  .weather{align-items:flex-start;flex-direction:column}
  .booking{padding:12px}
  th,td{padding:8px 3px}
  .confirmed{gap:9px}
}


/* Daily real-map overview */
.daymap-wrap{margin:15px 0 14px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--card)}
.daymap{width:100%;height:330px;background:#e9e2d5}
.daymap .leaflet-control-zoom a{color:#24322e}
.daymap-caption{display:flex;gap:10px;justify-content:space-between;align-items:flex-start;padding:9px 12px;font-size:.76rem;color:var(--muted);background:var(--card)}
.daymap-caption span:first-child{font-weight:800;white-space:nowrap}
.daymap.unavailable{display:flex;align-items:center;justify-content:center;padding:30px;text-align:center;color:var(--muted)}
.overview-map-wrap{margin:0 20px 0;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#e9e2d5}
.overview-google-map{display:block;width:100%;height:390px;border:0}
.overview-legend{padding:14px 20px 8px}
.overview-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:4px 20px 12px}
.map-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;background:#24322e;color:#fff;border-radius:999px;padding:9px 14px;font-weight:800;font-size:.78rem}
.map-button.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.overview-note{padding:0 20px 20px}
.official-event{margin:0 0 15px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--soft)}
.official-event>div:first-child{margin-bottom:10px}
.official-event>div:first-child span{color:var(--muted);font-weight:500}
.official-route{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.official-route-title{font-weight:800;font-size:.88rem;margin-bottom:10px}
.official-route img{display:block;width:min(100%,520px);max-height:720px;object-fit:contain;object-position:top left;border-radius:12px;border:1px solid var(--line);background:#fff}
.official-route p{font-size:.76rem;line-height:1.6;color:var(--muted);margin:9px 0 0}

.map-popup{font-size:.88rem;line-height:1.45}
.map-popup a{color:#377a85;font-weight:800;text-decoration:none}
.leaflet-container{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
@media (max-width:540px){
  .daymap{height:260px}
  .overview-google-map{height:300px}
  .overview-map-wrap{margin:0 12px}
  .overview-actions,.overview-legend,.overview-note{padding-left:12px;padding-right:12px}
  .daymap-caption{display:block}
  .daymap-caption span{display:block}
  .daymap-caption span + span{margin-top:4px}
}
