:root{--purple:#464b98;--lime:#cdda59;--ink:#151515;--muted:#727379;--paper:#f7f7f2;--nav:#f6f7f8;--line:#29292d;--radius:12px;--nav-height:88px;--safe-bottom:env(safe-area-inset-bottom,0px);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit;border:0;background:none;padding:0}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--purple);outline-offset:4px}img{display:block;max-width:100%}.icon{width:24px;height:24px;display:inline-block;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}h1,h2,h3,p{margin:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;left:16px;top:-100px;z-index:100;background:var(--lime);padding:14px}.skip-link:focus{top:16px}[hidden]{display:none!important}
.app-shell{max-width:1240px;margin:0 auto;padding:0 40px}.statusbar{display:none}.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;height:110px}.brand{width:208px;flex:none}.brand img{width:100%;height:auto}.desktop-nav{display:flex;gap:34px;align-items:center;font-weight:600}.desktop-nav a,.desktop-nav button{min-height:44px;display:flex;align-items:center;position:relative}.desktop-nav [aria-current]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--purple)}.header-tools{display:flex;align-items:center;gap:20px}.city-button{display:flex;align-items:center;gap:6px;min-height:44px}.city-button>.icon:first-child{width:20px}.city-button>.icon:last-child{width:16px}.message-button{position:relative;width:44px;height:44px;display:grid;place-items:center}.message-button .icon{width:28px;height:28px}.message-button i{position:absolute;width:9px;height:9px;background:var(--lime);border-radius:50%;right:5px;top:5px}
.searchbar{display:flex;align-items:center;gap:12px;border:1.2px solid var(--line);border-radius:14px;height:54px;padding:0 18px;margin:6px 0 24px}.searchbar input{min-width:0;flex:1;background:transparent;border:0;outline:none;color:var(--ink);font-size:16px}.searchbar input::placeholder{color:#818181}.search-submit{height:40px;padding:0 12px;color:var(--purple);font-size:14px}.hero{height:360px;position:relative;isolation:isolate;border-radius:18px;overflow:hidden;background:#141513;display:flex;align-items:center}.hero-photo{position:absolute;right:0;top:0;width:65%;height:100%;object-fit:cover;object-position:center 40%;z-index:-2}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#111 8%,rgba(17,17,17,.93) 26%,rgba(17,17,17,.07) 70%,rgba(17,17,17,.35));z-index:-1}.hero-copy{padding:40px 46px;color:#fff}.eyebrow{font-size:12px;letter-spacing:1.4px;color:var(--lime)}.hero h1{font-family:"Songti SC","STSong","SimSun",serif;font-size:54px;line-height:1.24;font-weight:600;letter-spacing:-2px;margin:18px 0 24px}.text-link{color:var(--lime);display:inline-flex;align-items:center;gap:10px;border-bottom:1px solid;padding:0 0 6px;min-height:40px}.text-link .icon{width:19px;height:19px}.hero-aside{position:absolute;right:24px;top:28px;bottom:26px;display:flex;flex-direction:column;justify-content:space-between;color:#fff;font-size:11px;line-height:1.55;letter-spacing:1.6px}.hero-aside p{font-size:12px;letter-spacing:0;line-height:1.65}.hero-aside p:before{content:"";display:block;width:18px;border-top:1px solid;margin-bottom:8px}
.filter-row{display:flex;gap:12px;margin:20px 0 32px}.filter{min-height:44px;border:1px solid var(--line);border-radius:8px;padding:8px 28px;font-size:15px;transition:background .15s,color .15s}.filter.active{background:var(--purple);color:var(--lime);border-color:var(--purple)}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 18px}.section-heading>div{display:flex;align-items:baseline;gap:12px}.section-heading h2{font-size:28px;font-weight:800;letter-spacing:-.8px;white-space:nowrap}.section-heading>div>span{font-size:12px;color:var(--muted)}.more-link{display:inline-flex;align-items:center;gap:5px;color:#55585e;font-size:14px;min-height:44px;white-space:nowrap}.more-link .icon{width:15px;height:15px}.story-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:22px;align-items:stretch}
.ticket-shadow{filter:drop-shadow(0 5px 6px #00000013);min-width:0}.ticket{--notch:11px;--split:75%;--edge-y:40%;position:relative;display:grid;grid-template-columns:75% 25%;border-radius:12px;overflow:hidden;mask-image:radial-gradient(circle var(--notch) at 0 var(--edge-y),#0000 98%,#000 101%),radial-gradient(circle var(--notch) at 100% var(--edge-y),#0000 98%,#000 101%),radial-gradient(circle var(--notch) at var(--split) 0,#0000 98%,#000 101%),radial-gradient(circle var(--notch) at var(--split) 100%,#0000 98%,#000 101%);mask-composite:intersect;-webkit-mask-composite:source-in;isolation:isolate}.ticket:after{content:"";position:absolute;left:75%;top:11px;bottom:11px;border-left:2px dotted #f7f7f2b3;z-index:2;pointer-events:none}.ticket-main{background:var(--paper);min-width:0}.ticket-photo{height:216px;position:relative;overflow:hidden}.ticket-photo:after{content:"";position:absolute;inset:40% 0 0;background:linear-gradient(transparent,#0007)}.ticket-photo img{width:100%;height:100%;object-fit:cover}.ticket-photo p{position:absolute;bottom:13px;left:18px;font-family:"SimSun",serif;font-size:15px;line-height:1.4;color:#fff;z-index:1}.ticket-info{min-height:103px;padding:16px 16px 18px 18px;display:flex;align-items:flex-end;justify-content:space-between;gap:5px}.ticket-info h3{font-family:"Songti SC","SimSun",serif;font-size:25px;line-height:1.2;white-space:nowrap;font-weight:700;margin-bottom:6px}.ticket-info p{font-size:14px;margin-bottom:3px}.ticket-info>div>span{font-size:11px;color:var(--muted)}.ticket-code{font-size:9px;letter-spacing:1px;color:#888;white-space:nowrap;align-self:center}.ticket-code:before{content:"";display:block;width:14px;border-top:1px solid;margin-bottom:5px}.ticket-stub{background:var(--purple);color:var(--lime);display:flex;flex-direction:column;align-items:flex-start;padding:28px 18px 18px;gap:16px}.ticket-stub strong{font-size:40px;font-weight:800;letter-spacing:-2px;white-space:nowrap}.ticket-stub p{font-size:13px;line-height:1.5}.round-button{display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;border-radius:50%;background:var(--lime);color:var(--ink);transition:transform .15s,background .15s}.round-button:hover{background:#deeb6b}.round-button:active{transform:scale(.95)}.round-button .icon{width:24px;height:24px}.ticket-stub .round-button{margin-top:auto}.ticket-stub>span{font-size:8px;letter-spacing:2px;color:#c8cbea}
.ticket--night{height:100%;background:#151515;--edge-y:50%}.night-main{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:318px;padding:26px;color:#fff}.night-main>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.night-main:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 15%,#111 95%);z-index:-1}.night-main h3{font-family:"Songti SC","SimSun",serif;font-size:32px;margin-bottom:5px;white-space:nowrap}.night-main p{font-size:14px;color:var(--lime)}.night-main span{font-size:12px;line-height:1.5;color:#aaa;display:block;margin-top:18px}.night-main span:before{content:"";display:block;width:14px;border-top:1px solid;margin-bottom:8px}.night-stub{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px}.night-stub>span{font-size:9px;letter-spacing:2px;line-height:1.5;color:#aaa}.ticket--night:after{border-left:1px dashed #aaa8}
.destinations{margin-top:34px}.destination-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.destination-card{position:relative;min-width:0;height:220px;overflow:hidden;border-radius:12px;text-align:left;color:white;background:#171717}.destination-card>img{position:absolute;width:100%;height:100%;object-fit:cover;transition:transform .4s}.destination-card:after{content:"";position:absolute;inset:0;background:linear-gradient(#0001,#0009)}.destination-card:hover>img{transform:scale(1.035)}.destination-card>span{position:absolute;left:22px;bottom:22px;z-index:1}.destination-card strong{font-family:"Songti SC","SimSun",serif;font-size:28px;display:block}.destination-card small{font-size:10px;letter-spacing:2px}.destination-card>.icon{position:absolute;right:22px;bottom:22px;z-index:1}.page-footer{display:flex;align-items:center;gap:18px;margin-top:50px;border-top:1px solid #deded8;padding:24px 0 30px;color:#787982;font-size:11px;flex-wrap:wrap}.page-footer>span{font-weight:800;color:var(--purple);letter-spacing:3px}.page-footer>a{margin-left:auto;text-decoration:underline;text-underline-offset:3px}.bottom-nav{display:none}.search-empty,.filter-note{padding:16px;background:#edeee3;border-radius:10px;color:#565863;font-size:14px}
.demo-dialog{width:min(90vw,420px);border:0;border-radius:18px;padding:32px;background:var(--paper);box-shadow:0 18px 80px #0003}.demo-dialog::backdrop{background:#13132680;backdrop-filter:blur(4px)}.demo-dialog .eyebrow{color:var(--purple);font-size:10px}.demo-dialog h2{font-size:25px;margin:18px 0 12px}.demo-dialog p{font-size:14px;line-height:1.8;color:#60616a;margin-bottom:26px}.dialog-close{position:absolute;right:9px;top:9px;width:44px;height:44px;display:grid;place-items:center}.primary-button{display:flex;align-items:center;justify-content:center;gap:14px;width:100%;min-height:48px;border-radius:12px;background:var(--purple);color:var(--lime);padding:12px 16px}.primary-button:active{background:#30346f}
@media(min-width:701px){body.app-mode{background:#e7e8e2}.app-mode .app-shell{box-shadow:0 0 0 1px #ddd,0 15px 60px #0001}}
/* Phone layout is also used by mobile.html at every viewport width. */
@media(max-width:700px){.app-shell{max-width:480px;padding:0 12px}.site-header{height:66px;gap:10px}.brand{width:156px}.desktop-nav{display:none}.header-tools{gap:9px}.city-button{font-size:13px;gap:2px}.city-button>.icon:first-child{width:15px;height:20px}.city-button>.icon:last-child{width:13px}.message-button{width:36px}.message-button .icon{width:24px}.searchbar{height:38px;border-radius:11px;padding:0 13px;gap:10px;margin:3px 0 10px}.searchbar .icon{width:21px;height:21px}.searchbar input{font-size:13px}.search-submit{display:none}.hero{height:auto;aspect-ratio:2.47;border-radius:9px}.hero-photo{width:64%;object-position:center}.hero-copy{padding:18px 15px}.hero .eyebrow{font-size:10px;letter-spacing:.5px}.hero h1{font-size:27px;line-height:1.16;letter-spacing:-.8px;margin:9px 0 9px}.text-link{font-size:13px;gap:5px;min-height:30px;padding-bottom:3px}.text-link .icon{width:15px;height:15px}.hero-aside{right:11px;top:24px;bottom:11px;font-size:6px;letter-spacing:1px}.hero-aside p{font-size:8px}.hero-aside p:before{width:13px;margin-bottom:5px}.filter-row{gap:7px;margin:10px 0 12px}.filter{flex:1;min-width:0;min-height:34px;padding:5px 2px;border-radius:7px;font-size:13px;position:relative}.filter:before{content:"";position:absolute;inset:-5px 0}.section-heading{margin-bottom:8px}.section-heading h2{font-size:25px;letter-spacing:-.7px}.section-heading>div{gap:8px}.section-heading>div>span{font-size:11px}.more-link{font-size:12px;gap:3px}.more-link .icon{width:13px;height:13px}.story-grid{display:flex;flex-direction:column;gap:10px}.ticket{--notch:11px;border-radius:11px}.ticket-photo{height:auto;aspect-ratio:2.16}.ticket-photo p{bottom:10px;left:13px;font-size:11px}.ticket-info{min-height:67px;padding:8px 10px 9px 13px}.ticket-info h3{font-size:19px;letter-spacing:-.6px;margin-bottom:3px}.ticket-info p{font-size:11px;margin-bottom:2px}.ticket-info>div>span{font-size:9px}.ticket-code{font-size:7px;letter-spacing:.6px}.ticket-stub{padding:13px 12px 12px 15px;gap:9px}.ticket-stub strong{font-size:36px;letter-spacing:-2px}.ticket-stub p{font-size:10px;line-height:1.4}.ticket-stub>span{font-size:6px;letter-spacing:1.5px}.ticket-stub .round-button{width:34px;height:34px;min-width:34px;min-height:34px;position:relative}.ticket-stub .round-button:before{content:"";position:absolute;inset:-6px;border-radius:50%}.ticket-stub .round-button .icon{width:20px;height:20px}.ticket--night{height:auto;min-height:110px;--edge-y:44%}.night-main{padding:16px 4px 12px 44%;min-height:110px}.night-main>img{width:62%;object-position:40% center}.night-main:after{background:linear-gradient(90deg,#1110 27%,#111 65%)}.night-main h3{font-size:23px;margin-bottom:3px}.night-main p{font-size:11px;white-space:nowrap}.night-main span{font-size:9px;margin-top:8px}.night-main span:before{margin-bottom:5px;width:12px}.night-stub{gap:10px}.night-stub .round-button{width:36px;height:36px;min-width:36px;min-height:36px;position:relative}.night-stub .round-button:before{content:"";position:absolute;inset:-4px}.night-stub .round-button .icon{width:20px;height:20px}.night-stub>span{font-size:7px;letter-spacing:1.5px}.destinations{margin-top:16px}.destinations h2{font-size:23px}.destination-grid{gap:9px}.destination-card{height:135px;border-radius:10px}.destination-card>span{left:12px;bottom:14px}.destination-card strong{font-size:22px}.destination-card small{font-size:8px}.destination-card>.icon{width:17px;right:12px;bottom:16px}.page-footer{margin:26px 0 0;padding:20px 0 calc(135px + var(--safe-bottom));gap:8px;font-size:10px;flex-direction:column;align-items:flex-start}.page-footer>a{margin:5px 0 0}.bottom-nav{display:block;position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;background:var(--nav);z-index:10;padding:0 5px calc(8px + var(--safe-bottom));filter:drop-shadow(0 -2px 8px #00000005)}.nav-contour{position:absolute;left:0;top:-35px;width:100%;height:36px;fill:var(--nav);overflow:visible;pointer-events:none}.nav-items{position:relative;display:grid;grid-template-columns:repeat(5,1fr);height:72px;align-items:start}.nav-item{display:flex;align-items:center;justify-content:flex-start;flex-direction:column;min-width:0;color:var(--purple);font-weight:700;font-size:14px;gap:3px;min-height:66px;position:relative;padding-top:4px}.nav-item>.icon{width:31px;height:31px;stroke-width:1;transition:transform .15s}.nav-item:active>.icon{transform:scale(.93)}.nav-item.is-active:after{content:"";position:absolute;bottom:0;width:4px;height:4px;border-radius:50%;background:var(--purple)}.nav-item--planet{padding-top:0;gap:0}.nav-item--planet>img{width:88px;height:61px;max-width:none;margin-top:-26px;margin-bottom:3px}.home-indicator{width:78px;height:6px;border-radius:10px;background:#251c18;margin:1px auto 0}}
/* The dedicated APP page remains a phone layout on desktop. The build duplicates
   the responsive block under .app-mode, keeping a single authoritative source. */
@media(max-width:359px){.brand{width:139px}.header-tools{gap:1px}.hero h1{font-size:24px}.hero .eyebrow{font-size:9px}.ticket-info h3{font-size:16px}.ticket-stub{padding-left:10px;padding-right:8px}.ticket-stub strong{font-size:30px}.ticket-code{display:none}.section-heading h2{font-size:23px}.section-heading>div>span{font-size:9px}.night-main h3{font-size:20px}.night-main p{font-size:10px}}
/* Layout refinements: keep images anchored and ticket geometry configurable. */
.destination-card>img{inset:0}
.desktop-nav,.city-button{white-space:nowrap}
.ticket{grid-template-columns:var(--split) calc(100% - var(--split))}
.ticket:after{left:var(--split)}
@media(min-width:701px) and (max-width:1000px){
  .app-shell{padding:0 24px}
  .site-header{gap:16px;height:94px}
  .brand{width:170px}
  .desktop-nav{gap:18px;font-size:14px}
  .header-tools{gap:8px}
  .story-grid{grid-template-columns:1fr}
  .hero{height:300px}
  .ticket--night{min-height:220px}
  .night-main{min-height:220px;padding:24px 24px 24px 45%}
  .night-main>img{width:70%}
  .night-main:after{background:linear-gradient(90deg,#1110 15%,#111 80%)}
}
@media(max-width:700px){
  .site-header{height:60px}
  .filter-row{margin-bottom:8px}
  .section-heading .more-link{min-height:36px}
  .ticket-photo{aspect-ratio:2.3}
  .ticket-info{min-height:62px}
  .night-main{padding-left:50%}
  .nav-item--planet>img{width:clamp(76px,22.5vw,100px)}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
