:root{--night:#031d27;--night2:#082f39;--paper:#f6f2ea;--card:#fffdf8;--ink:#0c2230;--muted:#70777b;--mint:#62daca;--mint-deep:#087a73;--coral:#ff534d;--line:rgba(12,34,48,.13);--shadow:0 18px 55px rgba(8,31,40,.1);--radius:26px;--max:1120px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;overflow-x:clip;color:var(--ink);background:var(--paper);font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}.skip-link{position:fixed;z-index:1000;left:12px;top:-80px;padding:10px 14px;background:#fff;border-radius:10px}.skip-link:focus{top:12px}
.companion{color:#f7fbfa;background:radial-gradient(circle at 78% 25%,rgba(60,205,194,.11),transparent 30%),linear-gradient(150deg,#011923,#052631 70%,#062a34)}.companion-bar,.companion-grid,.next-steps,.section{width:min(calc(100% - 40px),var(--max));margin-inline:auto}.companion-bar{display:flex;align-items:center;justify-content:space-between;padding:30px 0}.wordmark{color:var(--mint);font-size:18px;font-weight:800;letter-spacing:.12em;text-decoration:none}.date-chip{display:flex;align-items:center;gap:10px;min-height:44px;padding:0;color:#fff;background:transparent;border:0;cursor:pointer;font-size:17px;font-weight:750}.date-chip i:first-child{font-size:23px}.date-chip i:last-child{font-size:17px}
.companion-grid{display:grid;grid-template-columns:minmax(330px,.82fr) minmax(460px,1.18fr);gap:26px;padding:48px 0 56px}.next-step{align-self:center}.next-label{display:flex;align-items:center;gap:16px;margin:0 0 18px;color:var(--mint);font-size:25px;font-weight:800}.next-label span{display:grid;place-items:center;width:56px;height:56px;background:linear-gradient(145deg,#008d83,#08716f);border-radius:18px}.next-label i{font-size:30px;color:#fff}.next-step h1{margin:0;font-size:clamp(47px,6vw,76px);line-height:1.08;letter-spacing:-.045em}.next-step h1 time{font-variant-numeric:tabular-nums}.next-place{margin:18px 0 26px;font-size:clamp(22px,3vw,33px);font-weight:750;line-height:1.35}.next-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;color:rgba(255,255,255,.7);font-size:14px}.next-meta span{display:inline-flex;align-items:center;gap:7px}.next-meta i{font-size:18px}.next-meta .mint{color:var(--mint)}.next-meta .buffer{padding:8px 13px;color:var(--mint);background:rgba(23,136,126,.35);border-radius:99px}
.next-map-card{align-self:end;overflow:hidden;background:#fff;border-radius:22px;box-shadow:0 24px 70px rgba(0,0,0,.22)}#next-map{height:330px;background:#e5eee9}.mini-map-legend{display:flex;align-items:center;gap:22px;padding:16px 20px;color:#263941;font-size:13px}.mini-map-legend span{display:flex;align-items:center;gap:8px}.mini-map-legend>span i{width:31px;height:5px;border-radius:6px}.mini-map-legend .done{background:#08786f}.mini-map-legend .later{background:var(--coral)}.mini-map-legend a{margin-left:auto;text-decoration:none;font-weight:700}.navigate-primary{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;min-height:92px;padding:20px 32px;color:#fff;background:linear-gradient(100deg,#ff6758,var(--coral),#ff3d55);border-radius:22px;box-shadow:0 14px 40px rgba(255,83,77,.24);font-size:30px;font-weight:800;text-align:center;text-decoration:none}.navigate-primary i:first-child{font-size:34px}.navigate-primary i:last-child{font-size:25px}.next-steps{padding:0 0 28px}.next-row{display:grid;grid-template-columns:50px 100px 1fr auto;align-items:center;gap:18px;min-height:104px;color:#fff;border-top:1px solid rgba(255,255,255,.15);text-decoration:none}.next-row>b{display:grid;place-items:center;width:42px;height:42px;background:var(--coral);border-radius:50%;font-size:17px}.next-row>time{color:var(--coral);font-size:28px;font-weight:800;font-variant-numeric:tabular-nums}.next-row div{display:grid;gap:5px}.next-row strong{font-size:21px}.next-row span{color:rgba(255,255,255,.58);font-size:13px}.next-row>i{font-size:22px;color:rgba(255,255,255,.65)}.full-plan-button{display:none}
.section{padding:96px 0}.section-heading{max-width:720px;margin-bottom:38px}.kicker{margin:0 0 10px;color:var(--mint-deep);font-size:11px;font-weight:850;letter-spacing:.18em}.section-heading h2{margin:0 0 14px;font-size:clamp(32px,5vw,54px);line-height:1.14;letter-spacing:-.04em}.section-heading>p:not(.kicker){margin:0;color:var(--muted);font-size:16px}.snapshot-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.snapshot article{padding:32px;border-radius:var(--radius);box-shadow:var(--shadow)}.concert-card{background:var(--card)}.meeting-card{color:#fff;background:var(--night)}.tag{display:inline-block;padding:6px 11px;color:var(--night);background:var(--mint);border-radius:99px;font-size:12px;font-weight:800}.snapshot h3{margin:17px 0 9px;font-size:clamp(23px,3vw,34px);line-height:1.25}.snapshot article>p{margin:0;color:var(--muted)}.meeting-card>p{color:var(--mint)!important;font-weight:800}.concert-card dl{display:flex;gap:20px;margin:24px 0}.concert-card dl div{display:grid}.concert-card dt{color:var(--muted);font-size:11px}.concert-card dd{margin:0;font-weight:750}.outline-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 15px;color:var(--mint-deep);border:1px solid currentColor;border-radius:99px;text-decoration:none;font-size:13px;font-weight:750}.meeting-card ul{display:grid;gap:12px;margin:24px 0 0;padding:0;list-style:none}.meeting-card li{display:grid;grid-template-columns:54px 1fr;gap:10px;padding-top:12px;border-top:1px solid rgba(255,255,255,.12)}.meeting-card li b{color:var(--mint)}.meeting-card li span{color:rgba(255,255,255,.68)}
.route-map{padding-top:60px}.map-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(330px,.75fr);gap:18px}.map-shell{min-width:0;padding:12px;background:linear-gradient(145deg,#061923,#0a3440);border-radius:28px;box-shadow:0 24px 70px rgba(6,25,35,.2)}.map-toolbar{display:flex;gap:8px;padding:2px 2px 12px;overflow-x:auto;scrollbar-width:none}.map-toolbar::-webkit-scrollbar{display:none}.map-toolbar button{flex:0 0 auto;min-height:43px;padding:8px 14px;color:rgba(255,255,255,.7);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:12px;cursor:pointer;font-size:13px;font-weight:750}.map-toolbar button.is-active{color:var(--night);background:var(--mint);border-color:var(--mint)}.map-stage{position:relative;overflow:hidden;border-radius:20px}#trip-map{height:590px;background:#dce8e5}.route-metrics{position:absolute;z-index:500;left:14px;bottom:14px;display:flex;padding:5px;color:#fff;background:rgba(6,25,35,.88);border-radius:14px;backdrop-filter:blur(14px)}.route-metrics span{min-width:105px;padding:8px 12px}.route-metrics span+span{border-left:1px solid rgba(255,255,255,.14)}.route-metrics small,.route-metrics b{display:block}.route-metrics small{color:rgba(255,255,255,.55);font-size:10px}.route-metrics b{font-size:15px}.map-legend{display:flex;gap:16px;padding:11px 6px 1px;color:rgba(255,255,255,.65);font-size:11px}.map-legend span{display:flex;align-items:center;gap:7px}.map-legend i{width:10px;height:10px;border-radius:50%}.map-legend .source{background:var(--coral)}.map-legend .added{background:var(--mint)}.map-legend .route{width:20px;height:4px;background:#ffc76d}.route-planner{display:flex;flex-direction:column;padding:25px;background:var(--card);border-radius:26px;box-shadow:var(--shadow)}.planner-head{display:flex;justify-content:space-between;gap:10px}.planner-head h3{margin:0;font-size:25px;line-height:1.25}.planner-head>span{align-self:start;padding:5px 9px;color:#17645f;background:#e3f7f2;border-radius:99px;font-size:11px;font-weight:800}.route-intro{margin:15px 0;padding:12px;color:#35545b;background:#edf5f2;border-radius:12px;font-size:12px}.route-steps{position:relative;display:grid;margin:0;padding:0;list-style:none}.route-steps:before{content:"";position:absolute;left:15px;top:25px;bottom:27px;width:2px;background:linear-gradient(var(--mint-deep),var(--coral));opacity:.35}.route-steps li{position:relative;display:grid;grid-template-columns:32px 1fr 32px;gap:10px;padding:9px 0}.route-steps li>span{z-index:1;display:grid;place-items:center;width:31px;height:31px;color:#fff;background:var(--night2);border:4px solid var(--card);border-radius:50%;font-size:11px;font-weight:800}.route-steps small,.route-steps strong,.route-steps p{display:block}.route-steps small{color:var(--coral);font-size:10px;font-weight:800}.route-steps strong{font-size:14px}.route-steps p{margin:2px 0 0;color:var(--muted);font-size:11px;line-height:1.4}.route-steps a{align-self:center;display:grid;place-items:center;width:32px;height:32px;color:var(--mint-deep);background:#e7f7f3;border-radius:9px;text-decoration:none}.planner-actions{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:15px}.planner-actions a,.planner-actions button{display:grid;place-items:center;min-height:44px;padding:9px 12px;border:0;border-radius:11px;font-size:12px;font-weight:800;text-align:center;text-decoration:none}.planner-actions a{color:#fff;background:var(--night)}.planner-actions button{color:var(--mint-deep);background:#e7f7f3;cursor:pointer}.source-check{margin-top:auto;padding-top:17px;border-top:1px solid var(--line)}details summary{padding-top:12px;color:var(--mint-deep);cursor:pointer;font-size:12px;font-weight:800}.source-check p{color:var(--muted);font-size:11px}
.trip-map-marker-wrap{background:transparent;border:0}.trip-map-marker{display:grid;place-items:center;width:34px;height:34px;color:#fff;border:3px solid #fff;border-radius:11px 11px 11px 2px;box-shadow:0 5px 16px rgba(6,25,35,.34);transform:rotate(-45deg)}.trip-map-marker b{font-size:12px;transform:rotate(45deg)}.trip-map-marker.is-source{background:var(--coral)}.trip-map-marker.is-added{background:var(--mint-deep)}.trip-map-marker-wrap em{position:absolute;left:39px;top:3px;max-width:130px;padding:4px 7px;overflow:hidden;color:var(--ink);background:rgba(255,253,248,.95);border-radius:7px;box-shadow:0 3px 12px rgba(6,25,35,.12);font-size:11px;font-style:normal;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.leaflet-popup-content-wrapper{border-radius:15px}.leaflet-popup-content{min-width:210px;color:var(--ink);font-family:inherit;line-height:1.5}.leaflet-popup-content strong{display:block;font-size:15px}.leaflet-popup-content p{margin:4px 0 9px;color:var(--muted)}.leaflet-popup-content a{color:var(--mint-deep);font-weight:700}
.stay{width:100%;padding-inline:max(20px,calc((100% - var(--max))/2));color:#effaf7;background:var(--night)}.stay .section-heading{margin-inline:0}.stay .kicker{color:var(--mint)}.stay .section-heading>p:not(.kicker){color:rgba(255,255,255,.62)}.hotel-feature{display:grid;grid-template-columns:1fr 1fr;gap:35px;padding:36px;background:linear-gradient(135deg,rgba(98,218,202,.13),rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.12);border-radius:var(--radius)}.hotel-feature h3{margin:18px 0 10px;font-size:clamp(27px,4vw,42px);line-height:1.2}.hotel-feature p{color:rgba(255,255,255,.62)}.hotel-actions{display:flex;flex-wrap:wrap;gap:9px}.stay .outline-button{color:var(--mint)}.hotel-route{display:flex;align-items:center;justify-content:center;min-height:170px}.hotel-route span,.hotel-route b{padding:8px 10px;white-space:nowrap;border-radius:9px;font-size:13px}.hotel-route span{background:rgba(255,255,255,.08)}.hotel-route b{color:var(--night);background:var(--mint)}.hotel-route i{flex:1;max-width:45px;height:1px;background:rgba(98,218,202,.42)}.hotel-verdict{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}.hotel-verdict article{padding:20px;background:rgba(255,255,255,.06);border-radius:16px}.hotel-verdict strong{color:var(--mint)}.hotel-verdict p{margin:6px 0 0;color:rgba(255,255,255,.6);font-size:13px}
.day-tabs{display:flex;gap:8px;margin-bottom:20px;padding:6px;background:#e8e3da;border-radius:16px}.day-tabs button{flex:1;min-height:55px;padding:9px 13px;color:var(--muted);background:transparent;border:0;border-radius:12px;cursor:pointer;font-weight:700}.day-tabs small{display:block;font-size:10px}.day-tabs button[aria-selected=true]{color:var(--ink);background:var(--card);box-shadow:0 5px 20px rgba(20,30,30,.08)}.day-panel{padding:36px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow)}.panel-intro{display:grid;grid-template-columns:92px 1fr;gap:0 20px;margin-bottom:36px}.panel-intro span{grid-row:1/3;align-self:start;padding:7px 10px;color:var(--mint-deep);background:rgba(98,218,202,.18);border-radius:99px;text-align:center;font-size:12px;font-weight:800}.panel-intro h3{margin:0;font-size:24px}.panel-intro p{margin:4px 0 0;color:var(--muted)}.timeline{display:grid;grid-template-columns:repeat(5,1fr)}.timeline article{position:relative;padding:27px 20px 0 0;border-top:2px solid #d8dfdc}.timeline article:before{content:"";position:absolute;top:-6px;left:0;width:10px;height:10px;background:var(--mint-deep);border:2px solid var(--card);border-radius:50%;box-shadow:0 0 0 1px var(--mint-deep)}.timeline time{color:var(--coral);font-size:13px;font-weight:800}.timeline h4{margin:5px 0}.timeline p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.original-list{padding-top:38px}.source-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.source-grid article{padding:25px;background:var(--card);border-radius:20px;box-shadow:var(--shadow)}.source-grid h3{margin:0 0 9px}.source-grid p{margin:0;color:var(--muted);font-size:14px}.checklist{padding-top:40px}.checklist ul{display:grid;grid-template-columns:repeat(5,1fr);margin:0;padding:0;border-top:1px solid var(--line);list-style:none}.checklist li{padding:20px 15px 0 0;font-size:13px;font-weight:700}.checklist li span{display:block;margin-bottom:7px;color:var(--coral);font-size:11px}.privacy{width:min(calc(100% - 40px),var(--max));margin:0 auto 80px;padding:20px 22px;background:#e9e4db;border-radius:15px}.privacy p{display:inline;margin-left:8px;color:var(--muted);font-size:13px}.mobile-dock{display:none}footer{display:grid;grid-template-columns:1fr auto;gap:24px;width:100%;padding:48px max(20px,calc((100% - var(--max))/2));color:#fff;background:var(--night)}footer strong{font-size:20px}footer p{margin:4px 0 0;color:rgba(255,255,255,.5);font-size:13px}footer a{color:var(--mint)}footer small{grid-column:1/-1;color:rgba(255,255,255,.32)}[hidden]{display:none!important}:focus-visible{outline:3px solid #ffc76d;outline-offset:3px}
@media(max-width:850px){.companion-grid{grid-template-columns:1fr;padding-top:24px}.next-map-card{grid-row:auto}.navigate-primary{grid-column:auto}.snapshot-grid,.map-layout,.hotel-feature{grid-template-columns:1fr}.hotel-verdict,.source-grid{grid-template-columns:1fr}.timeline{grid-template-columns:repeat(3,1fr);row-gap:32px}#trip-map{height:430px}.next-steps{padding-bottom:48px}}
@media(max-width:560px){html{scroll-padding-top:16px}.companion-bar,.companion-grid,.next-steps,.section{width:min(calc(100% - 28px),var(--max))}.companion-bar{padding:17px 0}.wordmark{font-size:14px}.date-chip{gap:7px;font-size:15px}.companion-grid{gap:14px;padding:12px 0 18px}.next-label{gap:10px;margin-bottom:10px;font-size:20px}.next-label span{width:44px;height:44px;border-radius:15px}.next-label i{font-size:25px}.next-step h1{font-size:41px}.next-place{margin:8px 0 13px;font-size:21px;white-space:nowrap}.next-meta{gap:6px 11px;font-size:11px}.next-meta i{font-size:15px}.next-meta .buffer{padding:5px 9px}.next-map-card{border-radius:18px}#next-map{height:165px}.mini-map-legend{gap:10px;padding:10px 13px;font-size:10px}.mini-map-legend>span i{width:21px;height:4px}.mini-map-legend a{font-size:0}.mini-map-legend a i{font-size:16px}.navigate-primary{min-height:66px;padding:12px 20px;border-radius:17px;font-size:23px}.navigate-primary i:first-child{font-size:27px}.next-steps{padding-bottom:17px}.next-row{grid-template-columns:36px 67px 1fr auto;gap:7px;min-height:72px}.next-row>b{width:33px;height:33px;font-size:14px}.next-row>time{font-size:21px}.next-row strong{font-size:16px}.next-row span{font-size:10px}.full-plan-button{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:52px;margin-top:8px;padding:9px 18px;color:var(--mint-deep);border:1px solid var(--mint-deep);border-radius:14px;text-align:center;text-decoration:none;font-size:16px;font-weight:800}.section{padding:68px 0}.section-heading{margin-bottom:27px}.section-heading h2{font-size:34px}.snapshot article,.day-panel{padding:22px}.concert-card dl{flex-wrap:wrap;gap:13px 20px}.route-map{padding-top:48px}.map-shell{margin-inline:-4px;padding:8px;border-radius:22px}.map-toolbar{padding-bottom:9px}.map-toolbar button{min-width:104px;min-height:44px}#trip-map{height:min(49svh,370px);min-height:330px}.route-metrics{left:10px;bottom:10px}.route-metrics span{min-width:95px;padding:7px 9px}.route-planner{padding:20px}.planner-head h3{font-size:21px}.hotel-feature{padding:24px}.hotel-route{display:grid;grid-template-columns:1fr;gap:6px;min-height:0;text-align:center}.hotel-route i{width:1px;height:13px;margin:auto}.day-tabs{gap:2px}.day-tabs button{padding:8px 5px;font-size:12px}.panel-intro{display:block}.panel-intro span{display:inline-block;margin-bottom:12px}.panel-intro h3{font-size:20px}.timeline{grid-template-columns:1fr;row-gap:0}.timeline article{padding:16px 0 16px 65px;border-top:0;border-left:2px solid #d8dfdc}.timeline article:before{top:22px;left:-6px}.timeline time{position:absolute;left:14px;top:16px}.source-grid article{padding:20px}.checklist ul{grid-template-columns:1fr}.privacy{width:calc(100% - 28px);margin-bottom:96px}.privacy p{display:block;margin:3px 0 0}.mobile-dock{position:fixed;z-index:900;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);padding:7px 10px max(7px,env(safe-area-inset-bottom));color:#fff;background:rgba(3,29,39,.97);border-radius:22px 22px 0 0;box-shadow:0 -10px 30px rgba(3,29,39,.18);backdrop-filter:blur(16px)}.mobile-dock a{display:grid;justify-items:center;gap:1px;min-height:44px;color:rgba(255,255,255,.72);text-decoration:none;font-size:11px}.mobile-dock a i{font-size:20px}.mobile-dock a.is-active{color:var(--mint)}footer{grid-template-columns:1fr;padding-bottom:100px}footer small{grid-column:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
.next-step h1{font-size:clamp(47px,5vw,64px);white-space:nowrap}
@media(max-width:560px){.next-step h1{font-size:41px}}
@media(max-width:560px){.next-steps{width:100%;padding:12px 14px 17px;color:var(--ink);background:var(--paper)}.next-row{color:var(--ink);border-color:var(--line)}.next-row span,.next-row>i{color:var(--muted)}}
