/* 嘉義親子旅 V2「嘉義親子護照」— 共用樣式 */
:root{
  --paper:#F5F5F2; --surf:#E8E6E0; --surf2:#DCD8CF; --surf3:#CFCAC0;
  --ink:#14213D; --ink2:#4D5668; --dim:#A9B0BD;
  --orange:#F36A1E; --gold:#B68A54; --dgold:#8A6430; --lgold:#D9B47A; --label:#6E4F24;
  --pp:#FAF8F3; --postcard:#FBF9F4; --sticker:#F2EADB;
  --f-tc:"Noto Sans TC",system-ui,sans-serif;
  --f-en:"Schibsted Grotesk","Noto Sans TC",sans-serif;
  --f-mono:"Roboto Mono",ui-monospace,monospace;
  --wrap:1312px; --gut:64px;
  --r-lg:20px; --r-md:16px; --r-sm:12px;
  --ease-out:cubic-bezier(.2,.8,.2,1); --ease-back:cubic-bezier(.34,1.56,.64,1);
}
*{box-sizing:border-box}
html{scroll-behavior:auto;-webkit-text-size-adjust:100%}
html{overflow-x:clip}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-tc);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
input,select{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--orange);outline-offset:3px;border-radius:6px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{width:min(var(--wrap),100% - 2*var(--gut));margin-inline:auto}
.mono{font-family:var(--f-mono)}
.en{font-family:var(--f-en)}
.sparkle{display:inline-block;width:1em;height:1em;flex:none}
.sparkle path{fill:currentColor}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;padding:0 28px;border-radius:999px;font-weight:700;font-size:16px;transition:transform .2s var(--ease-out),background-color .2s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--orange);color:var(--ink)}
.btn-primary:hover{background:#ff7a2e}
.btn-dark{background:var(--ink);color:var(--paper)}
.btn-light{background:var(--paper);color:var(--ink)}
.btn-line{border:1.5px solid var(--ink);color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--paper)}
.btn-block{width:100%}
.pill{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:700;background:var(--pp);color:var(--ink);white-space:nowrap;transition:background-color .2s,color .2s,transform .2s}
.pill.is-on{background:var(--ink);color:var(--paper)}
.pill:active{transform:scale(.95)}
.chip{display:inline-flex;align-items:center;height:40px;padding:0 20px;border-radius:999px;background:var(--surf);font-weight:700;font-size:14px;white-space:nowrap}
.chip.is-on{background:var(--ink);color:var(--paper)}
.code-tag{display:inline-flex;align-items:center;height:22px;padding:0 6px;border:1px solid var(--dgold);border-radius:4px;font-family:var(--f-mono);font-weight:700;font-size:12px;color:var(--dgold);letter-spacing:.04em}

/* ---------- header ---------- */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;background:var(--paper);height:88px}
.site-header .wrap{height:100%;display:flex;align-items:center;gap:24px}
.logo{color:var(--gold);display:block;width:230px;flex:none}
.logo svg{width:100%;height:auto;display:block}
.logo path{fill:currentColor}
.nav{margin-left:auto;display:flex;gap:28px;font-weight:500;font-size:16px}
.nav a{position:relative;padding:6px 0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:3px;border-radius:2px;background:var(--orange);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease-out)}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.lang{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:999px;background:var(--surf);font-weight:500;font-size:15px}
.my-btn{display:inline-flex;align-items:center;gap:12px;height:44px;padding:0 10px 0 20px;border-radius:999px;background:var(--ink);color:var(--paper);font-weight:700;font-size:15px}
.my-btn .count{display:grid;place-items:center;min-width:26px;height:26px;padding:0 6px;border-radius:999px;background:var(--orange);color:var(--ink);font-family:var(--f-en);font-size:13px}
.my-btn.bump .count{animation:bump .5s var(--ease-back)}
@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.45)}100%{transform:scale(1)}}
.menu-btn{display:none}

/* ---------- section heads ---------- */
.sec{padding:120px 0}
.h2{font-weight:900;font-size:64px;line-height:1.15;letter-spacing:.01em;margin:0;display:flex;align-items:flex-start;gap:16px}
.h2 .spk{display:inline-flex;gap:4px;color:var(--orange);font-size:34px;margin-top:6px}
.h2 .spk .s2{font-size:18px;margin-top:-10px}
.lead{font-size:20px;color:var(--ink2);margin:16px 0 0}
.eyebrow-code{font-family:var(--f-en);font-weight:700;font-size:13px;letter-spacing:.08em;color:var(--dgold)}

/* ---------- glass ---------- */
.glass{background:rgba(245,245,242,.45);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);border:1px solid rgba(255,255,255,.55)}
.glass-dark{background:rgba(20,33,61,.4);-webkit-backdrop-filter:blur(22px) saturate(1.2);backdrop-filter:blur(22px) saturate(1.2)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.glass{background:var(--paper)}.glass-dark{background:var(--ink)}}

/* ---------- hero ---------- */
.hero{position:relative;height:min(872px,calc(100svh - 88px));min-height:680px;overflow:hidden;background:var(--ink)}
.hero-slides{position:absolute;inset:0;z-index:0}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.4s ease}
.hero-slide.is-on{opacity:1;z-index:2}
.hero-slide.was-on{opacity:1;z-index:1;transition:none}
.hero-slide img{width:100%;height:100%;object-fit:cover}
.hero-slide.is-on img{animation:kenburns 9s ease-out both}
@keyframes kenburns{from{transform:scale(1.08)}to{transform:scale(1)}}
.hero-scrim{position:absolute;inset:0;background:rgba(20,33,61,.12)}
.hero-inner{position:relative;height:100%;width:min(var(--wrap),100% - 2*var(--gut));margin-inline:auto}
.hero-passport{position:absolute;left:40px;top:50%;transform:translateY(-50%);height:min(700px,calc(100% - 120px));aspect-ratio:5/7;width:auto}
.hero-passport .float{width:100%;height:100%;animation:float 6s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.hero-spark{position:absolute;color:var(--orange)}
.hero-spark.b{color:var(--lgold)}
.hero-tag{position:absolute;right:0;top:64px;width:420px;border-radius:var(--r-lg);padding:28px 32px;transition:opacity .6s,transform .6s var(--ease-out)}
.hero-tag h1{font-size:28px;font-weight:900;line-height:1.3;margin:0}
.hero-tag p{margin:8px 0 0;color:var(--ink2);font-size:15px}
.hero-event{position:absolute;right:0;bottom:120px;width:460px;border-radius:var(--r-lg);padding:28px 32px;opacity:0;transform:translateY(16px);pointer-events:none;transition:opacity .6s,transform .6s var(--ease-out)}
.hero-event .k{font-weight:700;font-size:14px;color:var(--label)}
.hero-event h2{font-family:var(--f-en);font-weight:800;font-size:34px;line-height:1.2;margin:6px 0 8px}
.hero-event p{margin:0 0 20px;color:var(--ink2);font-size:15px}
.hero.is-event .hero-tag{opacity:0;transform:translateY(-12px);pointer-events:none}
.hero.is-event .hero-event{opacity:1;transform:none;pointer-events:auto}
.hero-caption{position:absolute;right:0;bottom:48px;display:flex;align-items:center;gap:16px;height:52px;padding:0 24px;border-radius:999px;font-weight:700;font-size:15px}
.hero-caption .sep{width:1px;height:16px;background:var(--ink2);opacity:.5}
.dots{display:flex;gap:8px;margin-left:12px}
.dots button{width:10px;height:10px;border-radius:999px;background:#fff;opacity:.9;transition:width .4s var(--ease-out),background-color .4s}
.dots button.is-on{width:28px;background:var(--orange)}

/* ---------- passport cover ---------- */
.cover{position:relative;width:100%;height:100%;border-radius:4.4cqw;background:var(--ink);color:var(--gold);display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:11.2cqw 8cqw 8cqw;overflow:hidden;text-align:center}
.cover::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5.6cqw;background:#0f1a31}
.cover .t1{font-weight:900;font-size:8cqw;letter-spacing:.08em;line-height:1.2;color:var(--lgold);margin:0}
.cover .t2{font-family:var(--f-en);font-weight:700;font-size:3.2cqw;letter-spacing:.22em;color:var(--lgold);margin-top:2.4cqw}
.cover .mark{width:62%;color:var(--gold);margin:2.4cqw 0}
.cover .mark path{fill:currentColor}
.cover .t3{font-family:var(--f-en);font-weight:700;font-size:2.8cqw;letter-spacing:.14em;color:var(--gold)}
.cover .t4{font-size:3cqw;color:var(--paper);margin-top:2.4cqw}
.cover .chip-icon{width:12.4cqw;height:8cqw;color:var(--gold);margin:3.2cqw auto 0}
.cover .cta{width:100%;height:10.4cqw;font-size:3.2cqw}

/* ---------- official events (home) ---------- */
.ev-grid{display:grid;grid-template-columns:547fr 717fr;gap:48px;margin-top:64px;align-items:stretch}
.poster{position:relative;border-radius:18px;overflow:hidden;min-height:620px;display:flex;flex-direction:column;justify-content:flex-end;color:var(--paper);isolation:isolate}
.poster>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;transition:transform 1.2s var(--ease-out)}
.poster:hover>img{transform:scale(1.03)}
.poster .panel{padding:32px}
.poster .yr{font-family:var(--f-en);font-weight:800;font-size:36px;color:var(--lgold);line-height:1}
.poster .nm{font-weight:900;font-size:58px;line-height:1.15;color:var(--lgold);margin:6px 0 12px}
.poster .when{font-weight:700;font-size:16px}
.poster .what{color:var(--dim);font-size:15px;margin:6px 0 24px}
.poster .btn{border-radius:0;width:100%}
.ev-side{display:flex;flex-direction:column}
.ev-side h3{font-size:30px;font-weight:900;margin:0 0 24px;line-height:1.3}
.ev-list{display:flex;flex-direction:column;gap:16px;flex:1}
.ev-more{margin-top:auto;padding-top:22px;font-weight:700;font-size:16px;display:inline-flex;gap:6px;align-items:center}
.ev-more:hover{color:var(--orange)}
.stack{position:relative}
.stack::before,.stack::after{content:"";position:absolute;left:14px;right:14px;height:100%;bottom:-12px;border-radius:var(--r-md);background:var(--surf2);z-index:-1}
.stack::after{left:28px;right:28px;bottom:-24px;background:var(--surf3);z-index:-2}
.stack-wrap{position:relative;z-index:0;margin-bottom:24px}
.upcoming{margin-top:72px}
.upcoming h4{font-size:22px;font-weight:700;margin:0 0 20px}
.up-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.up-card{display:grid;grid-template-columns:240px 1fr;background:var(--ink);color:var(--paper);min-height:160px;overflow:hidden}
.up-card img{width:100%;height:100%;object-fit:cover}
.up-card div{padding:28px 30px;display:flex;flex-direction:column;justify-content:center}
.up-card b{font-size:26px;color:var(--lgold);font-weight:900}
.up-card span{font-size:15px;margin-top:6px}

/* ---------- horizontal ticket ---------- */
.ticket{position:relative;display:grid;grid-template-columns:var(--tw,200px) 1fr;background:var(--surf);border-radius:var(--r-md);overflow:hidden;min-height:var(--th,200px);transition:transform .35s var(--ease-out)}
.ticket:hover{transform:translateY(-3px)}
.ticket .ph{position:relative;overflow:hidden}
.ticket .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.ticket:hover .ph img{transform:scale(1.05)}
.ticket .perf{position:absolute;top:0;bottom:0;left:var(--tw,200px);width:6px;transform:translateX(-50%);background:radial-gradient(circle,var(--paper) 2.4px,transparent 2.8px) 0 6px/6px 14px repeat-y;z-index:2}
.ticket .nt{position:absolute;left:var(--tw,200px);width:30px;height:30px;border-radius:50%;background:var(--bg,var(--paper));transform:translateX(-50%);z-index:3}
.ticket .nt.t{top:-15px}.ticket .nt.b{bottom:-15px}
.ticket .bd{padding:24px 28px 22px 32px;display:flex;flex-direction:column;min-width:0}
.ticket .pl{font-weight:700;font-size:13px;color:var(--dgold);padding-right:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ticket .tt{font-weight:900;font-size:26px;line-height:1.3;margin:4px 0 0}
.ticket .tt a::after{content:"";position:absolute;inset:0;z-index:1}
.ticket .meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:auto;padding-top:18px}
.ticket .meta small{display:block;font-size:12px;color:var(--ink2)}
.ticket .meta b{font-size:17px}
.ticket .save{position:absolute;top:18px;right:18px;z-index:4}
.ticket .no{font-family:var(--f-en);font-weight:700;font-size:13px;color:var(--ink2);margin-top:12px}
.ticket.small{--tw:200px;--th:200px}
.ticket.big{--tw:291px;--th:291px}
.ticket.big .tt{font-size:30px}
.ticket .meta.two{grid-template-columns:repeat(2,1fr)}

/* vertical ticket (explore grid) */
.vt{position:relative;background:var(--surf);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column;transition:transform .35s var(--ease-out)}
.vt:hover{transform:translateY(-4px)}
.vt .ph{position:relative;aspect-ratio:16/10;overflow:hidden}
.vt .ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.vt:hover .ph img{transform:scale(1.05)}
.vt .perf{position:absolute;left:0;right:0;top:-3px;height:6px;background:radial-gradient(circle,var(--paper) 2.4px,transparent 2.8px) 8px 0/14px 6px repeat-x;z-index:2}
.vt .nt{position:absolute;top:-14px;width:28px;height:28px;border-radius:50%;background:var(--paper);z-index:3}
.vt .nt.l{left:-14px}.vt .nt.r{right:-14px}
.vt .bd{position:relative;padding:20px 20px 22px;display:flex;flex-direction:column;flex:1}
.vt .top{display:flex;align-items:center;gap:8px;min-width:0}
.vt .pl{font-weight:500;font-size:13px;color:var(--dgold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vt .tt{font-weight:700;font-size:21px;line-height:1.35;margin:10px 0 0}
.vt .tt a::after{content:"";position:absolute;inset:0;z-index:1}
.vt .sub{font-size:14px;color:var(--ink2);margin-top:2px}
.vt .meta{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:auto;padding-top:16px}
.vt .meta small{display:block;font-size:12px;color:var(--ink2)}
.vt .meta b{font-size:15px}
.vt .save{position:absolute;top:14px;right:14px;z-index:4}

/* ---------- townships (passport spread) ---------- */
.towns{background:var(--gold);padding:120px 0 140px;position:relative}
.towns .h2 .spk{margin-left:auto}
.towns .lead{color:var(--ink)}
.stage{position:relative;margin-top:72px;height:max(860px,calc((min(1312px,100vw - 128px) - 16px)/2*1.4));perspective:2600px}
.spread{position:absolute;inset:0;display:grid;grid-template-columns:1fr 16px 1fr}
.spread .edge{position:absolute;inset:10px -6px -10px 6px;border-radius:24px;background:var(--dgold);z-index:-1}
.page{position:relative;background:var(--pp);overflow:hidden}
.page-l{border-radius:20px 0 0 20px}
.page-r{border-radius:0 20px 20px 0;padding:44px 48px;display:flex;flex-direction:column}
.gutter{background:var(--surf)}
.pattern{position:absolute;inset:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='110' height='110'%3E%3Cpath fill='%23EEEAE1' d='M18 10C19 16 23 20 28 21C23 22 19 26 18 32C17 26 13 22 8 21C13 20 17 16 18 10Z M73 65C74 71 78 75 83 76C78 77 74 81 73 87C72 81 68 77 63 76C68 75 72 71 73 65Z'/%3E%3C/svg%3E")}
.page-l .inner{position:relative;padding:40px 54px 36px;height:100%;display:flex;flex-direction:column}
.pg-label{font-family:var(--f-en);font-weight:700;font-size:13px;letter-spacing:.08em;color:var(--dgold)}
.tw-photo{margin-top:20px;aspect-ratio:617/336;overflow:hidden;border-radius:4px}
.tw-photo img{width:100%;height:100%;object-fit:cover}
.tw-name{font-weight:900;font-size:52px;line-height:1.1;margin:28px 0 6px}
.tw-meta{font-family:var(--f-en);font-weight:500;font-size:16px;color:var(--ink2)}
.tw-list{display:flex;flex-direction:column;gap:8px;margin-top:22px}
.tw-list a{display:block;padding:12px 20px;background:var(--paper);border-radius:8px;transition:background-color .2s}
.tw-list a:hover{background:var(--surf)}
.tw-list b{display:block;font-weight:500;font-size:16px}
.tw-list span{font-size:13px;color:var(--ink2)}
.tw-cta{margin-top:20px}
.mrz{margin-top:auto;font-family:var(--f-mono);font-size:14px;line-height:1.9;color:var(--ink2);white-space:pre;overflow:hidden}
.page-r h3{font-size:30px;font-weight:900;margin:0 0 28px}
.region{margin-bottom:30px}
.region h4{font-size:15px;font-weight:700;color:var(--dgold);margin:0 0 12px}
.tw-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.tw-btn{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;height:76px;padding:0 20px;border-radius:999px;background:var(--paper);text-align:left;transition:background-color .25s,transform .2s}
.tw-btn:hover{background:var(--surf)}
.tw-btn:active{transform:scale(.97)}
.tw-btn b{font-size:22px;font-weight:900;line-height:1.2}
.tw-btn span{font-size:14px;font-weight:700;color:var(--ink2)}
.tw-btn.is-on{background:var(--orange)}
.tw-btn.is-on span{color:var(--ink)}
.tw-btn[disabled]{background:transparent;cursor:default}
.tw-btn[disabled] b,.tw-btn[disabled] span{color:var(--dim)}
.tw-note{position:relative;margin-top:auto;font-size:13px;color:var(--ink2)}
.stamp{position:absolute;width:300px;height:190px;color:var(--orange);pointer-events:none;opacity:0}
.stamp .ring{position:absolute;inset:0;border:5px solid currentColor;border-radius:40px}
.stamp .ring2{position:absolute;inset:12px;border:2px solid currentColor;border-radius:30px;background:rgba(251,233,220,.55)}
.stamp .s1{position:absolute;top:28px;left:0;right:0;text-align:center;font-family:var(--f-en);font-weight:800;font-size:20px;letter-spacing:.12em}
.stamp .s2{position:absolute;top:58px;left:0;right:0;text-align:center;font-weight:900;font-size:48px;line-height:1}
.stamp .s3{position:absolute;top:124px;left:0;right:0;text-align:center;font-family:var(--f-en);font-weight:700;font-size:18px;letter-spacing:.04em}
/* the moving cover leaf */
.leaf{position:absolute;top:0;bottom:0;left:calc(50% + 8px);width:calc(50% - 8px);transform-origin:left center;transform-style:preserve-3d;z-index:5}
.leaf .face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}

.leaf .back{transform:rotateY(180deg);background:var(--pp);border-radius:20px 0 0 20px}
.stage.is-closed .page-l{visibility:hidden}
.stage.is-closed .spread .edge{left:calc(50% + 14px)}
.stage.is-open .leaf{display:none}
.stage.is-hidden .spread,.stage.is-hidden .leaf{opacity:0}
.flip-leaf{position:absolute;top:0;bottom:0;left:calc(50% + 8px);width:calc(50% - 8px);transform-origin:left center;transform-style:preserve-3d;z-index:6;pointer-events:none}
.flip-leaf .face{position:absolute;inset:0;background:var(--pp);backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:0 20px 20px 0;box-shadow:inset 6px 0 0 var(--surf)}
.flip-leaf .back{transform:rotateY(180deg);border-radius:20px 0 0 20px;box-shadow:inset -6px 0 0 var(--surf)}
.flyer{position:fixed;z-index:80;pointer-events:none;transform-origin:top left}
.flyer .cover{border-radius:22px}

/* ---------- this week tickets ---------- */
.week .h2{font-size:56px}
.week-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:64px}
.week-more{display:flex;justify-content:center;margin-top:56px}

/* ---------- categories (visa) ---------- */
.visa-wrap{display:grid;grid-template-columns:440px 1fr;gap:40px;margin-top:64px;align-items:start}
.classes .lab{display:flex;justify-content:space-between;font-family:var(--f-en);font-weight:700;font-size:14px;letter-spacing:.08em;color:var(--dgold);margin-bottom:12px}
.cls{display:flex;align-items:center;gap:16px;width:100%;height:80px;padding:0 28px 0 10px;border-radius:999px;text-align:left;margin-bottom:9px;transition:background-color .25s}
.cls:hover{background:var(--surf)}
.cls.is-on{background:var(--orange)}
.cls .ring{position:relative;flex:none;width:60px;height:60px;border-radius:50%;border:1.5px dashed var(--dgold);display:grid;place-items:center}
.cls.is-on .ring{border-color:var(--ink)}
.cls .ring img{width:48px;height:48px;border-radius:50%;object-fit:cover}
.cls .code{font-family:var(--f-mono);font-weight:700;font-size:22px;color:var(--dgold);letter-spacing:.04em}
.cls.is-on .code{color:var(--ink)}
.cls .nm{font-weight:700;font-size:22px}
.cls .lead-dots{flex:1;align-self:center;height:2px;margin-top:14px;background:radial-gradient(circle,var(--dim) 1px,transparent 1.4px) 0 0/7px 2px repeat-x}
.cls.is-on .lead-dots{background-image:radial-gradient(circle,rgba(20,33,61,.5) 1px,transparent 1.4px)}
.cls .n{font-family:var(--f-en);font-weight:800;font-size:22px}
.cls .n small{font-family:var(--f-tc);font-weight:500;font-size:14px;margin-left:3px}
.visa-page{position:relative;background:var(--pp);border-radius:20px;padding:34px 40px 40px}
.visa-page{box-shadow:8px 10px 0 var(--ink)}
.vp-head{display:flex;justify-content:space-between;font-family:var(--f-en);font-weight:700;font-size:13px;letter-spacing:.06em;color:var(--dgold)}
.vp-head .mono{letter-spacing:0}
.sticker{position:relative;margin-top:18px;border:1px solid rgba(182,138,84,.7);border-radius:12px;background:var(--sticker);overflow:hidden}
.sticker .guil{position:absolute;inset:0;opacity:.28;pointer-events:none}
.sticker .band{position:relative;display:flex;justify-content:space-between;align-items:center;height:44px;padding:0 20px;background:var(--dgold);color:var(--paper)}
.sticker .band b{font-size:15px;font-weight:700}
.sticker .band span{font-family:var(--f-en);font-weight:800;font-size:16px;letter-spacing:.1em}
.sticker .body{position:relative;display:grid;grid-template-columns:220px 1fr;gap:28px;padding:20px 20px 20px}
.sticker .body img{width:100%;height:256px;object-fit:cover;border-radius:8px}
.sticker .fields{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;align-content:start;gap:12px 16px;min-width:0}
.sticker .f small{display:block;font-family:var(--f-en);font-weight:700;font-size:11px;letter-spacing:.06em;color:var(--label)}
.sticker .f b{font-size:18px;font-weight:700}
.sticker .f.big{grid-column:1/-1}
.sticker .f.big b{font-size:44px;font-weight:900;line-height:1.15}
.sticker .f.w2{grid-column:span 2}
.sticker .f .mono{font-weight:700}
.sticker .mrz{grid-column:1/-1;font-size:12.5px;line-height:1.6;margin-top:6px}
.seal{position:absolute;left:190px;top:64px;width:104px;height:104px;border:3px solid var(--orange);border-radius:50%;color:var(--orange);text-align:center;display:flex;flex-direction:column;justify-content:center}
.seal::after{content:"";position:absolute;inset:6px;border:1px solid var(--orange);border-radius:50%}
.seal small{font-family:var(--f-en);font-weight:800;font-size:12px;letter-spacing:.1em}
.seal b{font-weight:900;font-size:24px;line-height:1.1}
.seal span{font-family:var(--f-en);font-weight:700;font-size:12px;letter-spacing:.06em}
.vp-desc{font-size:17px;color:var(--ink2);margin:22px 0 0}
.vp-label{font-weight:700;font-size:14px;color:var(--dgold);margin:22px 0 4px}
.entry{position:relative;display:grid;grid-template-columns:40px 1fr auto auto;align-items:center;gap:16px;min-height:62px;padding:8px 0;border-top:1.5px dotted var(--dim)}
.entry .no{font-family:var(--f-mono);font-weight:500;font-size:13px;color:var(--dgold)}
.entry .pl{font-size:12px;color:var(--dgold);font-weight:500}
.entry .tt{font-weight:700;font-size:16px;line-height:1.35}
.entry .m{font-size:13px;color:var(--ink2);white-space:nowrap}
.entry .view{height:36px;padding:0 18px;border-radius:999px;background:var(--surf);font-weight:700;font-size:14px;white-space:nowrap}
.entry .view:hover{background:var(--ink);color:var(--paper)}
.vp-cta{margin-top:24px}
.vp-num{text-align:center;font-family:var(--f-en);font-weight:700;font-size:13px;color:var(--dim);margin-top:24px}

/* ---------- LINE CTA ---------- */
.line-cta{background:var(--orange);padding:150px 0}
.line-cta .wrap{display:grid;grid-template-columns:1fr 634px;gap:64px;align-items:stretch}
.line-cta .l{display:flex;flex-direction:column;justify-content:space-between}
.line-cta h2{font-weight:900;font-size:64px;line-height:1.15;margin:0}
.line-cta p{font-size:20px;margin:0;max-width:480px}
.line-card{background:var(--paper);padding:54px 54px 54px;display:grid;grid-template-columns:1fr 196px;gap:28px 40px}
.line-card .logo2{width:170px;color:var(--gold)}
.line-card .logo2 path{fill:currentColor}
.line-card h3{font-size:30px;font-weight:900;margin:18px 0 8px}
.line-card .qr{grid-row:1/3;grid-column:2;background:var(--surf);aspect-ratio:1;display:grid;place-items:center;font-weight:700;font-size:15px;color:var(--ink2)}
.line-card .btn{grid-column:1/-1;border-radius:0;height:62px;font-size:17px}

/* ---------- postcard footer ---------- */
.site-footer{background:var(--ink);color:var(--paper);padding:120px 0 48px}
.postcard-area{position:relative;max-width:1180px;margin:0 auto}
.pc-back{position:absolute;inset:-26px 30px 26px -30px;border-radius:14px;overflow:hidden;background:var(--paper);padding:10px}
.pc-back img{width:100%;height:100%;object-fit:cover;border-radius:8px}
.postcard{position:relative;background:var(--postcard);color:var(--ink);border-radius:14px;padding:60px 64px 54px;display:grid;grid-template-columns:1fr 1px 1fr;gap:0 60px;transition:transform .6s var(--ease-out)}
.postcard-area:hover .postcard{transform:translate(6px,-4px)}
.postcard .div{background:radial-gradient(circle,var(--lgold) 1.6px,transparent 2px) 0 0/2px 10px repeat-y}
.pc-l{display:flex;flex-direction:column}
.pc-kicker{font-family:var(--f-en);font-weight:800;font-size:18px;letter-spacing:.16em;color:var(--dgold)}
.pc-kicker span{font-family:var(--f-tc);letter-spacing:.06em;font-size:16px;margin-left:12px;font-weight:700}
.pc-l h3{font-size:44px;font-weight:900;margin:56px 0 18px;line-height:1.2}
.pc-l .msg{font-size:18px;line-height:1.8;margin:0}
.pc-l .note{font-size:14px;color:var(--ink2);margin:28px 0 0}
.pc-l .logo3{width:240px;color:var(--gold);margin-top:auto;padding-top:44px}
.pc-l .logo3 path{fill:currentColor}
.pc-r{position:relative;display:flex;flex-direction:column}
.pc-stamp{align-self:flex-end;width:132px;height:160px;background:#fff;padding:10px;position:relative;
  -webkit-mask:radial-gradient(circle 5px at 50% 0,transparent 98%,#000) 0 0/14px 100% repeat-x, radial-gradient(circle 5px at 0 50%,transparent 98%,#000) 0 0/100% 14px repeat-y;
}
.pc-stamp{-webkit-mask:none;mask:none;border:6px dotted var(--postcard);outline:2px solid #fff}
.pc-stamp img{width:100%;height:110px;object-fit:cover}
.pc-stamp small{display:block;text-align:center;font-size:11px;font-weight:700;margin-top:6px;color:var(--ink2)}
.postmark{position:absolute;right:100px;top:40px;width:120px;height:120px;border:3px solid var(--orange);border-radius:50%;color:var(--orange);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--f-en);font-weight:800;font-size:13px;line-height:1.3;opacity:.92}
.postmark b{font-size:15px}
.waves{position:absolute;right:210px;top:62px;width:150px;color:var(--orange);opacity:.9}
.addr{margin-top:56px}
.addr div{padding:14px 0;border-bottom:2px dotted var(--lgold);font-size:18px}
.addr div:first-child{font-weight:700;font-size:20px}
.zip{display:flex;align-items:center;gap:10px;margin-top:28px;font-size:14px;color:var(--ink2)}
.zip i{display:grid;place-items:center;width:40px;height:48px;border:2px solid var(--orange);border-radius:4px;color:var(--orange);font-family:var(--f-en);font-weight:800;font-style:normal;font-size:20px}
.foot-meta{text-align:center;color:var(--dim);font-size:14px;margin-top:64px;line-height:2}

/* ---------- drawer (我的票卡) ---------- */
.scrim{position:fixed;inset:0;background:rgba(20,33,61,.5);opacity:0;pointer-events:none;transition:opacity .35s;z-index:90}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(540px,100%);background:var(--paper);z-index:91;transform:translateX(100%);transition:transform .45s var(--ease-out),visibility 0s .45s;visibility:hidden;display:flex;flex-direction:column}
.drawer.is-open{visibility:visible;transition:transform .45s var(--ease-out)}
.drawer-open .scrim{opacity:1;pointer-events:auto}
.drawer-open .drawer.is-open{transform:none}
.dr-head{display:flex;align-items:center;gap:12px;padding:32px 36px 8px}
.dr-head h2{font-size:32px;font-weight:900;margin:0}
.dr-head .count{display:grid;place-items:center;min-width:30px;height:30px;border-radius:999px;background:var(--orange);font-family:var(--f-en);font-weight:800}
.dr-head .x{margin-left:auto;height:40px;padding:0 18px;border-radius:999px;background:var(--surf);font-weight:700;font-size:14px}
.dr-note{padding:0 36px;color:var(--ink2);font-size:14px;margin:6px 0 18px}
.dr-body{flex:1;overflow:auto;padding:0 36px 24px}
.dr-group{font-weight:700;color:var(--dgold);font-size:14px;margin:18px 0 10px}
.mt{position:relative;display:grid;grid-template-columns:92px 1fr auto;background:var(--surf);border-radius:14px;overflow:hidden;margin-bottom:10px;min-height:92px;animation:in .4s var(--ease-out)}
@keyframes in{from{opacity:0;transform:translateX(20px)}}
.mt img{width:100%;height:100%;object-fit:cover}
.mt .bd{padding:14px 16px;min-width:0}
.mt .tt{font-weight:700;font-size:16px;line-height:1.35}
.mt .tt a::after{content:"";position:absolute;inset:0}
.mt .m{font-size:13px;color:var(--ink2);margin-top:4px}
.mt .rm{position:relative;z-index:2;align-self:center;margin-right:12px;height:32px;padding:0 12px;border-radius:999px;background:var(--paper);font-size:13px;font-weight:700}
.dr-foot{padding:18px 36px 28px;border-top:1px solid var(--surf);display:flex;gap:12px}
.dr-foot .btn{flex:1;height:50px}
.dr-empty{text-align:center;padding:80px 20px;color:var(--ink2)}
.dr-empty .ill{width:140px;height:92px;margin:0 auto 22px;border:2px dashed var(--dim);border-radius:14px;position:relative}
.dr-empty b{display:block;color:var(--ink);font-size:20px;margin-bottom:6px}
.toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%,20px);background:var(--ink);color:var(--paper);padding:14px 22px;border-radius:999px;font-weight:700;font-size:15px;opacity:0;transition:opacity .3s,transform .3s var(--ease-out);z-index:95;pointer-events:none}
.toast.on{opacity:1;transform:translate(-50%,0)}
.fly-chip{position:fixed;z-index:96;width:46px;height:30px;border-radius:6px;background:var(--orange);pointer-events:none}

/* ---------- inner pages ---------- */
.crumb{font-weight:500;font-size:15px;padding:40px 0 32px}
.crumb a:hover{color:var(--orange)}
.crumb i{font-style:normal;margin:0 12px;opacity:.6}
.goldbg{background:var(--gold)}
/* boarding pass */
.bp{position:relative;display:grid;grid-template-columns:534px 1fr 346px;background:var(--paper);border-radius:18px;overflow:hidden;min-height:560px}
.bp .ph img{width:100%;height:100%;object-fit:cover}
.bp .perf-v{position:absolute;top:0;bottom:0;width:6px;transform:translateX(-50%);background:radial-gradient(circle,var(--gold) 2.4px,transparent 2.8px) 0 6px/6px 14px repeat-y;z-index:2}
.bp .nt{position:absolute;width:36px;height:36px;border-radius:50%;background:var(--gold);transform:translateX(-50%);z-index:3}
.bp .main{padding:44px 40px 36px 38px;display:flex;flex-direction:column}
.bp .pl{font-weight:700;font-size:15px;color:var(--dgold)}
.bp h1{font-weight:900;font-size:52px;line-height:1.2;margin:8px 0 6px}
.bp .sub{font-size:22px;color:var(--ink2)}
.bp .grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 24px;margin-top:36px}
.bp .grid small{display:block;font-size:14px;color:var(--ink2)}
.bp .grid b{font-size:20px;line-height:1.4}
.bp .no{margin-top:auto;padding-top:28px;font-family:var(--f-en);font-weight:700;font-size:14px;color:var(--ink2)}
.bp .stub{padding:44px 40px 36px 40px;display:flex;flex-direction:column;gap:14px}
.bp .price{font-family:var(--f-en);font-weight:800;font-size:56px;line-height:1}
.bp .price-note{font-size:14px;color:var(--ink2);margin-bottom:auto}
.bp .stub .btn{height:58px}
.cards2{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;margin-top:64px}
.ccard{background:var(--paper);border-radius:var(--r-md);padding:48px}
.ccard h2{font-size:32px;font-weight:900;margin:0 0 18px}
.ccard h2:not(:first-child){margin-top:48px}
.ccard p{font-size:18px;line-height:1.85;margin:0}
.bullets{list-style:none;margin:0;padding:0}
.bullets li{position:relative;padding-left:24px;font-size:17px;margin:8px 0}
.bullets li::before{content:"";position:absolute;left:0;top:.72em;width:8px;height:8px;border-radius:50%;background:var(--orange)}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.facts div{background:var(--surf);padding:16px 18px}
.facts small{display:block;font-size:14px;color:var(--ink2)}
.facts b{font-size:17px}
.mapbox{display:flex;align-items:center;justify-content:center;gap:12px;height:180px;background:#DFE3EA;margin-top:24px;font-weight:700;transition:background-color .2s}
.mapbox:hover{background:#d3d8e2}
.mapbox i{width:28px;height:28px;border-radius:50%;background:var(--orange)}
.next{padding:80px 0 120px}
.next h2{font-size:40px;font-weight:900;margin:0 0 32px}
.next-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}

/* event page */
.ev-page{display:grid;grid-template-columns:711fr 577fr;gap:24px;padding-bottom:80px}
.ev-page .poster{min-height:1040px}
.ev-page .poster .nm{font-size:92px}
.ev-page .poster .yr{font-size:64px}
.ev-page .poster .actions{display:flex;gap:16px}
.ev-page .poster .actions .btn{width:auto;flex:1}
.sheet{position:relative;background:var(--paper);padding:52px 40px 40px;display:flex;flex-direction:column}
.sheet .scallop{position:absolute;left:8px;right:8px;top:-20px;height:40px;background:radial-gradient(circle 20px at 20px 20px,var(--gold) 98%,transparent) 0 0/57.5px 40px repeat-x}
.sheet h2{text-align:center;font-size:48px;font-weight:900;margin:0}
.sheet .lead{text-align:center;font-size:17px;margin-top:6px}
.sheet .chips{display:flex;justify-content:center;gap:8px;margin:24px 0 34px}
.nb{position:relative;display:grid;grid-template-columns:108px 1fr auto;align-items:center;background:var(--surf);border-radius:14px;overflow:hidden;min-height:104px;margin-bottom:16px}
.nb img{width:100%;height:100%;object-fit:cover}
.nb .perf{position:absolute;top:0;bottom:0;left:108px;width:5px;transform:translateX(-50%);background:radial-gradient(circle,var(--paper) 2.2px,transparent 2.6px) 0 4px/5px 16px repeat-y}
.nb .bd{padding:12px 16px}
.nb .pl{font-size:13px;font-weight:700;color:var(--dgold)}
.nb .tt{font-weight:700;font-size:17px}
.nb .tt a::after{content:"";position:absolute;inset:0}
.nb .m{font-size:13px;color:var(--ink2)}
.nb .view{position:relative;margin-right:16px;height:36px;padding:0 16px;border-radius:999px;background:var(--paper);font-weight:700;font-size:14px;display:inline-flex;align-items:center}
.sheet .btn{margin-top:auto}
.sheet .fine{text-align:center;font-size:13px;color:var(--ink2);margin-top:20px}
.nb-empty{text-align:center;color:var(--ink2);padding:40px 0}

/* explore */
.ex-head{background:var(--gold);padding:56px 0 52px}
.ex-head h1{font-weight:900;font-size:64px;margin:0;line-height:1.15;display:flex;gap:14px}
.ex-head .lead{color:var(--ink)}
.search{position:relative;display:grid;grid-template-columns:560px 300px 1fr 168px;align-items:center;height:96px;margin-top:32px;background:var(--pp);border-radius:20px}
.search .fld{position:relative;height:100%;display:flex;flex-direction:column;justify-content:center;padding:0 32px}
.search .fld+.fld{border-left:0}
.search .fld:not(:first-child)::before{content:"";position:absolute;left:-2px;top:14px;bottom:14px;width:4px;background:radial-gradient(circle,var(--gold) 2px,transparent 2.4px) 0 0/4px 10px repeat-y}
.search .fld:not(:first-child)::after{content:"";position:absolute;left:-12px;top:-12px;width:24px;height:24px;border-radius:50%;background:var(--gold);box-shadow:0 96px 0 var(--gold)}
.search label{font-family:var(--f-en);font-weight:700;font-size:12px;letter-spacing:.06em;color:var(--dgold)}
.search input,.search select{border:0;background:transparent;font-size:18px;font-weight:700;padding:2px 0;outline:none;width:100%;appearance:none;-webkit-appearance:none}
.search input{font-weight:400}
.search input::placeholder{color:var(--ink2)}
.search .kw{padding-left:72px}
.search .kw svg{position:absolute;left:30px;top:36px;width:24px;height:24px}
.search .go{margin:0 16px 0 20px;height:64px;border-radius:32px;font-size:18px}
.search .sel-wrap{position:relative}
.search .sel-wrap::after{content:"▾";position:absolute;right:0;top:2px;font-size:14px;color:var(--ink2);pointer-events:none}
.ctabs{display:grid;grid-template-columns:repeat(10,1fr);gap:8px;margin-top:20px}
.ctab{position:relative;height:76px;border-radius:14px;background:var(--pp);text-align:left;padding:12px 14px;transition:background-color .2s,transform .2s}
.ctab:hover{transform:translateY(-2px)}
.ctab .c{display:block;font-family:var(--f-mono);font-weight:700;font-size:22px;color:var(--dgold);line-height:1.2}
.ctab .n{display:block;font-size:13px;font-weight:500;margin-top:4px}
.ctab .k{position:absolute;right:14px;top:16px;font-family:var(--f-mono);font-size:12px;color:var(--ink2)}
.ctab.is-on{background:var(--ink);color:var(--paper)}
.ctab.is-on .c,.ctab.is-on .k{color:var(--lgold)}
.ex-body{display:grid;grid-template-columns:280px 1fr;gap:32px;padding:52px 0 120px}
.rail h2{display:flex;justify-content:space-between;align-items:baseline;font-size:24px;font-weight:900;margin:0 0 18px}
.rail h2 button{font-size:14px;font-weight:700;color:var(--dgold);text-decoration:underline}
.fgroup{border-top:1.5px dotted var(--dim);padding:20px 0 12px}
.fgroup h3{display:flex;justify-content:space-between;font-size:16px;font-weight:700;margin:0 0 10px}
.fgroup h3 small{font-family:var(--f-mono);font-weight:500;font-size:11px;letter-spacing:.06em;color:var(--dgold)}
.check{display:flex;align-items:center;gap:12px;padding:6px 0;cursor:pointer;font-size:15px}
.check input{appearance:none;-webkit-appearance:none;width:20px;height:20px;border:1.5px solid var(--ink);border-radius:4px;margin:0;display:grid;place-items:center;flex:none;transition:background-color .15s}
.check input:checked{background:var(--ink)}
.check input:checked::after{content:"";width:10px;height:6px;border:2px solid var(--paper);border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}
.res-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.res-head h2{font-size:28px;font-weight:900;margin:0;margin-right:auto}
.sort{height:40px;padding:0 36px 0 18px;border:1.5px solid var(--ink);border-radius:999px;background:transparent;font-weight:700;font-size:14px;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) 17px,calc(100% - 13px) 17px;background-size:5px 5px;background-repeat:no-repeat}
.active-f{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0;min-height:34px}
.active-f button{height:34px;padding:0 14px;border-radius:999px;background:var(--pp);border:1px solid var(--surf);font-size:14px;font-weight:500}
.active-f button:hover{border-color:var(--ink)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:20px}
.load{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:40px}
.load small{font-family:var(--f-mono);font-size:13px;color:var(--ink2)}
.empty{grid-column:1/-1;text-align:center;padding:80px 0;color:var(--ink2)}
.empty b{display:block;font-size:22px;color:var(--ink);margin-bottom:8px}
.mob-filter{display:none}
.sheet-panel{display:contents}
.sheet-foot{display:none}
.grip{display:none}

/* reveal on scroll */
.rv{transition:transform .8s var(--ease-out)}
.rv.pre{transform:translateY(24px)}
.rv.in{transform:none}

/* ---------- responsive ---------- */
@media (max-width:1280px){
  .nav{gap:18px;font-size:15px}
  .logo{width:190px}
  .search{grid-template-columns:1.6fr 1fr 1fr 150px}
  .visa-wrap{grid-template-columns:380px 1fr}
}
@media (max-width:1100px){
  :root{--gut:32px}
  .nav,.lang{display:none}
  .menu-btn{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--surf)}
  .site-header .my-btn{margin-left:0}
  .h2{font-size:48px}
  .ev-grid,.visa-wrap,.line-cta .wrap,.cards2,.ev-page{grid-template-columns:1fr}
  .week-grid,.next-grid{grid-template-columns:1fr}
  .bp{grid-template-columns:1fr}
  .bp .ph{height:360px}
  .bp .perf-v,.bp .nt{display:none}
  .ctabs{grid-template-columns:repeat(5,1fr)}
  .ex-body{grid-template-columns:1fr}
  .grid3{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:760px){
  :root{--gut:16px}
  body{font-size:15px}
  .site-header{height:64px}
  .logo{width:150px}
  .my-btn{height:40px;padding:0 6px 0 14px;font-size:14px}
  .sec{padding:72px 0}
  .h2{font-size:32px;gap:8px}
  .h2 .spk{font-size:22px}
  .lead{font-size:15px}
  .hero{height:calc(100svh - 64px);min-height:620px}
  .hero-passport{left:50%;top:24px;transform:translateX(-50%);width:min(300px,78vw);height:auto;aspect-ratio:5/6.4}
  .cover{padding:32px 22px 24px}
  .cover .t4,.cover .chip-icon,.hero-passport .cta{display:none}
  .hero-tag{left:0;right:0;top:auto;bottom:28px;width:auto;padding:22px 20px 20px}
  .hero-tag h1{font-size:22px}
  .hero-tag .btn{display:flex;margin-top:16px}
  .hero-event{left:0;right:0;bottom:28px;width:auto;padding:22px 20px}
  .hero-event h2{font-size:26px}
  .hero-caption{display:none}
  .hero .mob-dots{display:flex}
  .poster{min-height:440px}
  .poster .nm{font-size:40px}
  .poster .panel{padding:22px 20px}
  .ev-grid{gap:28px;margin-top:32px}
  .ev-side h3{font-size:20px;margin-bottom:14px}
  .ev-list{flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gut);margin-inline:calc(-1*var(--gut));padding:0 var(--gut) 20px;gap:12px}
  .ev-list>*{flex:0 0 86%;scroll-snap-align:start}
  .stack::before,.stack::after{display:none}
  .stack-wrap{margin-bottom:0}
  .ticket{--tw:110px!important;--th:132px!important}
  .ticket .bd{padding:14px 14px 14px 18px}
  .ticket .tt{font-size:17px!important}
  .ticket .meta{padding-top:8px}
  .ticket .meta b{font-size:14px}
  .ticket .save{top:8px;right:auto;left:8px;height:30px;width:30px;padding:0;justify-content:center}
  .ticket .save .lbl{display:none}
  .ticket .no{display:none}
  .up-row{grid-template-columns:1fr}
  .up-card{grid-template-columns:120px 1fr}
  .up-card b{font-size:19px}
  .up-card div{padding:16px}
  .towns{padding:72px 0 80px}
  .stage{height:auto;margin-top:24px;perspective:1600px}
  .spread{position:relative;display:flex;flex-direction:column}
  .page-r{order:-1}
  .spread .edge,.gutter{display:none}
  .page-r{border-radius:0;background:transparent;padding:0}
  .page-r h3,.page-r .tw-note{display:none}
  .region{margin-bottom:16px}
  .region h4{color:var(--ink);font-size:13px;margin-bottom:8px}
  .tw-grid{grid-template-columns:repeat(4,1fr);gap:8px}
  .tw-btn{height:52px;padding:0 10px;border-radius:14px}
  .tw-btn b{font-size:15px}
  .tw-btn span{font-size:11px}
  .page-l{border-radius:20px;margin-top:22px}
  .page-l .inner{padding:24px 20px}
  .tw-name{font-size:36px;margin-top:22px}
  .mrz{font-size:11px}
  .stamp{transform-origin:center;scale:.7}
  .leaf{left:0;width:100%;top:auto;height:100%}
  .stage.is-closed .page-l{visibility:visible}
  .stage.is-closed .leaf{position:absolute;inset:auto 0 0 0}
  .flip-leaf{display:none!important}
  .week .h2{font-size:30px}
  .week-grid{gap:16px;margin-top:28px}
  .visa-wrap{margin-top:28px;gap:24px}
  .classes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .classes .lab{grid-column:1/-1;margin:0}
  .cls{flex-direction:column;justify-content:center;height:86px;padding:6px;border-radius:14px;gap:2px;margin:0;background:var(--pp)}
  .cls .ring,.cls .lead-dots{display:none}
  .cls .code{font-size:17px}
  .cls .nm{font-size:13px}
  .cls .n{font-size:12px;font-family:var(--f-mono);font-weight:500}
  .cls .n small{font-size:11px}
  .visa-page{padding:22px 16px 24px}
  .visa-page{box-shadow:none}
  .ticket .pl{padding-right:0}
  .vp-head{font-size:11px}
  .sticker .body{grid-template-columns:1fr;padding:14px}
  .sticker .body img{height:170px}
  .sticker .fields{grid-template-columns:1fr 1fr}
  .sticker .f.big b{font-size:32px}
  .sticker .mrz{font-size:9.5px}
  .seal{left:auto;right:26px;top:140px;width:84px;height:84px}
  .seal b{font-size:18px}
  .entry{grid-template-columns:28px 1fr auto;gap:10px}
  .entry .m{grid-column:2;font-size:12px;white-space:normal}
  .entry .view{grid-row:1/3;grid-column:3}
  .line-cta{padding:64px 0}
  .line-cta h2{font-size:32px}
  .line-cta p{font-size:15px;margin-top:16px}
  .line-cta .wrap{gap:28px}
  .line-card{grid-template-columns:1fr;padding:24px}
  .line-card .qr{display:none}
  .line-card h3{font-size:22px}
  .site-footer{padding:72px 0 40px}
  .pc-back{display:none}
  .postcard{grid-template-columns:1fr;padding:28px 24px;gap:0}
  .postcard .div{height:2px;background:radial-gradient(circle,var(--lgold) 1.6px,transparent 2px) 0 0/10px 2px repeat-x;margin:24px 0}
  .pc-l h3{font-size:28px;margin:28px 0 10px}
  .pc-l .msg{font-size:15px}
  .pc-l .logo3{width:180px;padding-top:24px}
  .pc-r{order:-1}
  .pc-stamp{width:96px;height:118px;padding:6px}
  .pc-stamp img{height:80px}
  .postmark{right:110px;top:20px;width:92px;height:92px;font-size:11px}
  .waves{display:none}
  .addr{margin-top:20px}
  .addr div{font-size:15px}
  .postcard .div{order:0}
  .pc-r{display:contents}
  .pc-r .pc-top{order:-1;position:relative;display:flex;justify-content:flex-end;height:130px}
  .pc-r .addr,.pc-r .zip{order:3}
  .drawer{width:100%}
  .dr-head,.dr-note,.dr-body,.dr-foot{padding-left:20px;padding-right:20px}
  .crumb{padding:20px 0 16px;font-size:13px}
  .bp .ph{height:220px}
  .bp .main,.bp .stub{padding:24px 20px}
  .bp h1{font-size:34px}
  .bp .sub{font-size:17px}
  .bp .price{font-size:40px}
  .cards2{gap:16px;margin-top:16px}
  .ccard{padding:28px 20px}
  .ccard h2{font-size:24px}
  .ccard p{font-size:16px}
  .facts{grid-template-columns:1fr}
  .next{padding:48px 0 72px}
  .next h2{font-size:26px}
  .ev-page .poster{min-height:520px}
  .ev-page .poster .nm{font-size:40px}
  .ev-page .poster .yr{font-size:20px}
  .ev-page .poster .actions{flex-direction:column}
  .sheet{padding:40px 16px 28px}
  .sheet h2{font-size:30px}
  .nb{grid-template-columns:88px 1fr;min-height:96px}
  .nb .perf{left:88px}
  .nb .view{grid-column:2;justify-self:start;margin:0 0 12px 16px;height:32px}
  .ex-head{padding:28px 0 24px}
  .ex-head h1{font-size:40px}
  .search{grid-template-columns:1fr 1fr;height:auto;border-radius:18px}
  .search .fld{height:76px;padding:0 20px}
  .search .kw{grid-column:1/-1;padding-left:54px}
  .search .kw svg{left:20px;top:26px;width:22px}
  .search .fld:not(:first-child)::before{display:none}
  .search .fld:not(:first-child)::after{display:none}
  .search .fld.tw{border-top:2px dotted var(--gold)}
  .search .fld.age{border-top:2px dotted var(--gold);border-left:2px dotted var(--gold)}
  .search .go{grid-column:1/-1;margin:0 0 0;border-radius:0 0 18px 18px;height:56px}
  .ctabs{grid-template-columns:repeat(5,1fr);gap:6px}
  .ctab{height:60px;padding:8px 4px;text-align:center}
  .ctab .c{font-size:15px}
  .ctab .n{font-size:10.5px}
  .ctab .k{display:none}
  .ex-body{padding:24px 0 72px;gap:0}
  .mob-filter{display:inline-flex;height:38px;padding:0 18px;border-radius:999px;background:var(--ink);color:var(--paper);font-weight:700;font-size:14px;align-items:center}
  .res-head h2{font-size:20px}
  .sort{height:34px;font-size:13px}
  .rail{position:fixed;left:0;right:0;bottom:0;top:84px;z-index:92;background:var(--pp);border-radius:24px 24px 0 0;padding:28px 20px 100px;overflow:auto;transform:translateY(105%);visibility:hidden;transition:transform .45s var(--ease-out),visibility 0s .45s}
  .filter-open .rail{transform:none;visibility:visible;transition:transform .45s var(--ease-out)}
  .filter-open .scrim{opacity:1;pointer-events:auto}
  .grip{display:block;width:44px;height:5px;border-radius:3px;background:var(--dim);margin:-14px auto 14px}
  .sheet-foot{display:block;position:fixed;left:0;right:0;bottom:0;padding:16px;background:var(--pp);border-top:1px solid var(--surf);z-index:93;transform:translateY(110%);visibility:hidden;transition:transform .45s var(--ease-out),visibility 0s .45s}
  .filter-open .sheet-foot{transform:none;visibility:visible;transition:transform .45s var(--ease-out)}
  .grid3{grid-template-columns:1fr;gap:16px}
  .toast{bottom:20px;font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .rv{opacity:1;transform:none}
}

.mob-only{display:none}
.menu-list{display:flex;flex-direction:column}
.menu-list a{font-size:22px;font-weight:700;padding:16px 0;border-bottom:1.5px dotted var(--dim)}
.menu-list span{margin-top:24px;color:var(--ink2);font-size:14px}
.m-cover{display:none}
@media (max-width:760px){
  .mob-only{display:flex}
  .m-cover{display:block;position:absolute;inset:0;z-index:5;transform-origin:left center;backface-visibility:hidden}
  .m-cover .cover{border-radius:20px}
  .stage.is-open .m-cover{display:none}
  .leaf{display:none!important}
}
.stage.is-opening .page-l{visibility:hidden}

.stage.is-closed .spread .edge,.stage.is-opening .spread .edge{left:calc(50% + 14px)}
.stage.is-open .page-l .inner{animation:fadein .35s ease both}
@keyframes fadein{from{opacity:0}}
@media (max-width:760px){
  .stage.is-opening .page-l{visibility:visible}
  .stage.is-closed .m-cover,.stage.is-opening .m-cover{display:block}
}

.logo img,.cover .mark img,.line-card .logo2 img,.pc-l .logo3 img{width:100%;height:auto;display:block}
.ev-grid>*,.visa-wrap>*,.cards2>*,.ev-page>*,.ex-body>*,.line-cta .wrap>*{min-width:0}
.share-box{display:block;font-size:13px;font-weight:700;color:var(--ink2);margin:6px 0 14px}
.share-box input{display:block;width:100%;margin-top:6px;height:42px;border:1.5px solid var(--ink);border-radius:10px;padding:0 12px;background:var(--pp);font-size:13px}

/* 護照封面在各處維持同一比例（5:7），飛行時只等比縮放 */
.leaf .front .cover{height:auto;aspect-ratio:5/7}
.cover .cta-ph{visibility:hidden}
.flyer{transform-origin:0 0;will-change:transform}
.page-r>:not(.pattern),.page-l>.inner{position:relative;z-index:1}
@media (max-width:760px){ .cover .cta-ph{display:none} }

/* 封面以容器寬度為基準（cqw），首頁、飛行中、金色區三處的文字比例完全一致 */
.hero-passport .float,.leaf .front,.flyer,.m-cover{container-type:inline-size}
.stage.is-closed .gutter,.stage.is-opening .gutter{visibility:hidden}

/* 封面闔起時右頁先藏起來（避免圓角處露出白色內頁）；書脊側為直角，與內頁貼齊 */
.stage.is-closed .page-r{visibility:hidden}
.leaf .front .cover{border-top-left-radius:0;border-bottom-left-radius:0}
.page-l>.stamp{z-index:3}
.nb-stack{position:relative;isolation:isolate;margin-bottom:40px}
.nb-stack .nb{margin-bottom:0}
.nb-stack::before,.nb-stack::after{content:"";position:absolute;left:14px;right:14px;top:0;bottom:-12px;border-radius:14px;background:var(--surf2);z-index:-1}
.nb-stack::after{left:28px;right:28px;bottom:-24px;background:var(--surf3);z-index:-2}

/* three.js 立體護照圖層 */
.p3d-layer{position:fixed;left:0;top:0;z-index:40;pointer-events:none}
body.p3d .hero-passport{z-index:41}
body.p3d .hero-passport .float{animation:none}
body.p3d .hero-passport .cover{background:transparent}
body.p3d .hero-passport .cover::before{display:none}
body.p3d .hero-passport .cover>:not(.cta){visibility:hidden}

/* 主要 CTA：找體驗（膠囊搜尋鈕，延續原網站「探索活動」的入口） */
.find-pill{display:inline-flex;align-items:center;justify-content:space-between;gap:28px;height:52px;padding:0 20px 0 26px;margin-left:8px;min-width:200px;border-radius:999px;background:rgba(182,138,84,.16);border:1.5px solid rgba(182,138,84,.55);color:var(--dgold);font-weight:700;font-size:17px;transition:background-color .25s,color .25s,border-color .25s,transform .2s}
.find-pill svg{flex:none;color:var(--orange);transition:transform .3s var(--ease-out)}
.find-pill:hover{background:var(--gold);border-color:var(--gold);color:var(--paper)}
.find-pill:hover svg{color:var(--paper);transform:scale(1.12) rotate(-8deg)}
.find-pill:active{transform:scale(.97)}
.find-pill.is-on{background:var(--gold);border-color:var(--gold);color:var(--paper)}
.find-pill.is-on svg{color:var(--paper)}
@media (max-width:1280px){.find-pill{min-width:0;gap:14px;font-size:16px;height:48px;padding:0 16px 0 20px}}
@media (max-width:1100px){.site-header .find-pill{margin-left:auto}.site-header .find-pill+.nav+.lang+.my-btn{margin-left:0}}
@media (max-width:760px){.find-pill{height:40px;padding:0 12px 0 14px;gap:8px;font-size:14px;margin-left:auto}.find-pill svg{width:18px;height:18px}.site-header .wrap{gap:10px}.logo{width:128px}}

.find-pill,.my-btn{white-space:nowrap}
@media (max-width:760px){.m-hide{display:none}.my-btn{padding:0 5px 0 12px;gap:8px}.menu-btn{width:40px;height:40px}}


/* 平板（≤1000px）也改用上下排列的護照：上方選鄉鎮市、下方入境頁 */
@media (max-width:1000px){
  .towns{padding:72px 0 80px}
  .stage{height:auto;margin-top:24px;perspective:1600px}
  .spread{position:relative;display:flex;flex-direction:column}
  .page-r{order:-1}
  .spread .edge,.gutter{display:none}
  .page-r{border-radius:0;background:transparent;padding:0}
  .page-r h3,.page-r .tw-note{display:none}
  .region{margin-bottom:16px}
  .region h4{color:var(--ink);font-size:13px;margin-bottom:8px}
  .tw-grid{grid-template-columns:repeat(4,1fr);gap:8px}
  .tw-btn{height:52px;padding:0 10px;border-radius:14px}
  .tw-btn b{font-size:15px}
  .tw-btn span{font-size:11px}
  .page-l{border-radius:20px;margin-top:22px}
  .page-l .inner{padding:24px 20px}
  .tw-name{font-size:36px;margin-top:22px}
  .leaf{left:0;width:100%;top:auto;height:100%}
  .stage.is-closed .page-l{visibility:visible}
  .stage.is-closed .leaf{position:absolute;inset:auto 0 0 0}
  .flip-leaf{display:none!important}
  .tw-grid{grid-template-columns:repeat(6,1fr)}
  .m-cover{display:block;position:absolute;inset:0;z-index:5;transform-origin:left center;backface-visibility:hidden}
  .m-cover .cover{border-radius:20px}
  .stage.is-open .m-cover{display:none}
  .stage.is-opening .page-l{visibility:visible}
  .stage.is-closed .m-cover,.stage.is-opening .m-cover{display:block}
  .leaf{display:none!important}

}
@media (max-width:760px){ .tw-grid{grid-template-columns:repeat(4,1fr)} }
/* 入境章永遠在最上層：左頁不裁切，印章可壓過頁緣與書脊 */
.page-l{overflow:visible;z-index:3}
.page-l .pattern{border-radius:inherit;overflow:hidden}
.page-l>.stamp{z-index:10}
/* 手機版首頁護照：5:7、靠大圖下緣 */
@media (max-width:760px){
  .hero-passport{top:auto;bottom:max(32px, env(safe-area-inset-bottom));transform:translateX(-50%);height:min(66%, calc(100% - 140px), 128vw);width:auto;aspect-ratio:5/7}
  .cover .t4,.cover .chip-icon{display:block}
  .cover .chip-icon{margin-left:auto;margin-right:auto}
}
/* 活動周邊體驗：照片固定 1:1，卡片高度一致；文字單行截斷 */
.nb{grid-template-columns:108px minmax(0,1fr) auto;height:108px;min-height:0}
.nb img{width:108px;height:108px;aspect-ratio:1/1;object-fit:cover}
.nb .bd{min-width:0}
.nb .pl,.nb .tt,.nb .m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:760px){
  .nb{grid-template-columns:96px minmax(0,1fr);height:96px}
  .nb img{width:96px;height:96px}
  .nb .perf{left:96px}
  .nb .view{display:none}
}
/* 票卡缺口改為真正鏤空（mask），在任何底色上都看得到背景 */
.ticket,.vt{background:transparent}
.ticket .bd,.vt .bd{background:var(--surf)}
.ticket .nt,.vt .nt{display:none}
.ticket .ph{
  -webkit-mask:radial-gradient(circle 15px at 100% 0,#0000 97%,#000) top/100% 51% no-repeat,radial-gradient(circle 15px at 100% 100%,#0000 97%,#000) bottom/100% 51% no-repeat;
          mask:radial-gradient(circle 15px at 100% 0,#0000 97%,#000) top/100% 51% no-repeat,radial-gradient(circle 15px at 100% 100%,#0000 97%,#000) bottom/100% 51% no-repeat}
.ticket .bd{
  -webkit-mask:radial-gradient(circle 15px at 0 0,#0000 97%,#000) top/100% 51% no-repeat,radial-gradient(circle 15px at 0 100%,#0000 97%,#000) bottom/100% 51% no-repeat;
          mask:radial-gradient(circle 15px at 0 0,#0000 97%,#000) top/100% 51% no-repeat,radial-gradient(circle 15px at 0 100%,#0000 97%,#000) bottom/100% 51% no-repeat}
.vt .ph{
  -webkit-mask:radial-gradient(circle 14px at 0 100%,#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 100%,#0000 97%,#000) right/51% 100% no-repeat;
          mask:radial-gradient(circle 14px at 0 100%,#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 100%,#0000 97%,#000) right/51% 100% no-repeat}
.vt .bd{
  -webkit-mask:radial-gradient(circle 14px at 0 0,#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 0,#0000 97%,#000) right/51% 100% no-repeat;
          mask:radial-gradient(circle 14px at 0 0,#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 0,#0000 97%,#000) right/51% 100% no-repeat}
/* 活動周邊清單固定 5 格高度（含疊卡），按鈕位置不因項目數量變動 */
[data-nb-list]{height:calc(5 * 108px + 4 * 16px + 40px);display:flex;flex-direction:column}
[data-nb-list] .nb-empty{margin:auto 0}
.sheet>.btn{margin-top:28px}
@media (max-width:760px){[data-nb-list]{height:calc(5 * 96px + 4 * 16px + 40px)}}
/* 明信片：郵票靠右上，郵戳壓在郵票左側，波浪線接在郵戳左邊 */
.pc-top{position:relative;display:flex;justify-content:flex-end;height:180px}
.pc-top .pc-stamp{align-self:flex-start}
.pc-top .postmark{right:92px;top:30px;z-index:2;background:transparent}
.pc-top .waves{right:200px;top:54px}
@media (max-width:760px){.pc-r .pc-top{height:130px}.pc-top .postmark{right:70px;top:18px}}

/* 翻頁：紙張兩面＋明暗＋投影 */
.flip-leaf{transform-origin:-8px center;will-change:transform}
.flip-leaf .face{overflow:hidden;box-shadow:none}
.flip-leaf .front{border-radius:0 20px 20px 0}
.flip-leaf .back{border-radius:20px 0 0 20px}
.flip-leaf .back .inner{position:relative;padding:40px 54px 36px;height:100%;display:flex;flex-direction:column}
.flip-leaf .shade,.peel-leaf .shade{position:absolute;inset:0;pointer-events:none;opacity:0;z-index:5}
.flip-leaf .front .shade{background:linear-gradient(90deg,rgba(20,33,61,.55),rgba(20,33,61,.12) 40%,rgba(20,33,61,0))}
.flip-leaf .back .shade{background:linear-gradient(270deg,rgba(20,33,61,.5),rgba(20,33,61,.1) 40%,rgba(20,33,61,0))}
.cast{position:absolute;top:0;bottom:0;right:0;width:0;z-index:4;pointer-events:none;opacity:0;border-radius:inherit;background:linear-gradient(270deg,rgba(20,33,61,.32),rgba(20,33,61,0))}
.peel-leaf{position:absolute;inset:0;z-index:6;transform-origin:left center;transform-style:preserve-3d;pointer-events:none;will-change:transform}
.peel-leaf .face{position:absolute;inset:0;background:var(--pp);border-radius:20px;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.peel-leaf .back{transform:rotateY(180deg)}
.peel-leaf .front .shade{background:linear-gradient(90deg,rgba(20,33,61,.5),rgba(20,33,61,0) 70%)}
.peel-leaf .back .shade{background:linear-gradient(270deg,rgba(20,33,61,.45),rgba(20,33,61,0) 70%)}

/* 入境頁內容高度固定：三筆體驗各一行，換鄉鎮市時版面不跳動；機讀碼移到右頁底部 */
.tw-list{flex:none;height:214px}
.tw-list a{height:66px;display:flex;flex-direction:column;justify-content:center}
.tw-list b,.tw-list span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.page-r .mrz.tw-note{margin-top:auto;font-family:var(--f-mono);font-size:14px;line-height:1.9;color:var(--ink2);white-space:pre;overflow:hidden}
@media (max-width:1000px){.page-r .mrz.tw-note{display:none}}
/* 入境頁照片固定 16:9，不受內容或寬度影響而壓縮；鄉鎮市名不換行 */
.tw-photo{flex:none;position:relative;width:100%;aspect-ratio:16/9;height:auto}
.tw-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tw-btn{padding:0 clamp(12px,1.4vw,20px)}
.tw-btn b,.tw-btn span{white-space:nowrap}
/* 左右頁固定各半：長標題不再把左頁撐寬 */
.spread{grid-template-columns:minmax(0,1fr) 16px minmax(0,1fr)}
.spread>.page{min-width:0}

/* visa seal: lower-right, larger, may overhang the sticker edge */
.sticker{overflow:visible}
.sticker .band{border-radius:11px 11px 0 0}
.sticker .guil{border-radius:12px;overflow:hidden}
.seal{z-index:3;transform:rotate(-8deg);border-width:calc(3px * var(--k,1))}
.seal::after{inset:calc(6px * var(--k,1))}
.seal small{font-size:calc(12px * var(--k,1))}
.seal b{font-size:calc(24px * var(--k,1))}
.seal span{font-size:calc(12px * var(--k,1))}
@media (max-width:760px){ .seal b{font-size:calc(24px * var(--k,1))} }

/* 首頁大圖：移除標語方塊；輪播導覽下緣切齊護照下緣 */
@media (min-width:761px){
  .hero-tag{display:none}
  .hero-caption{bottom:calc((100% - min(700px, 100% - 120px)) / 2)}
  .hero-event{bottom:calc((100% - min(700px, 100% - 120px)) / 2 + 68px)}
}
@media (max-width:760px){
  .hero-tag{background:none;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;padding:0 4px}
  .hero-tag .btn{margin-top:0}
}

/* 手機版：「翻開護照」按鈕放回封面上 */
@media (max-width:760px){
  .hero-passport .cta,.cover .cta-ph{display:flex}
  .cover .cta{height:max(38px,13cqw);font-size:max(14px,4.6cqw)}
}
/* 票卡虛線只在兩個半圓缺口之間，頭尾的點不進入缺口 */
.ticket .perf{top:19px;bottom:19px;background-position:0 0;background-repeat:no-repeat space}
.vt .perf{left:18px;right:18px;background-position:0 0;background-repeat:space no-repeat}
.bp .perf-v{top:22px;bottom:22px;background-size:6px 14px;background-position:0 0;background-repeat:no-repeat space}
.nb .perf{top:8px;bottom:8px;background-size:5px 14px;background-position:0 0;background-repeat:no-repeat space}
/* 體驗內頁票卡：照片與資訊兩欄等寬、右側存根略窄；價格與標題共用較小字級 */
.bp{--stub:300px}
@media (min-width:1101px){ .bp{grid-template-columns:minmax(0,1fr) minmax(0,1fr) var(--stub)} }
.bp .pv-l,.bp .nt-l{left:calc((100% - var(--stub)) / 2)}
.bp .pv-r{right:var(--stub);transform:translateX(50%)}
.bp .nt-r{right:var(--stub);transform:translateX(50%)}
.bp h1,.bp .price{font-size:40px;line-height:1.2}
.bp .stub{padding:44px 32px 36px}
@media (max-width:760px){ .bp h1,.bp .price{font-size:32px} }
/* 活動頁側欄頂部半圓：直徑縮小 50%，頭尾不出現被裁切的半個圓 */
.sheet .scallop{left:12px;right:12px;top:-10px;height:20px;background:radial-gradient(circle 10px at 10px 10px,var(--gold) 98%,transparent) 0 0/29px 20px;background-repeat:space no-repeat}
/* 票卡照片也是連結 */
a.ph{display:block;cursor:pointer}
/* 體驗內頁：價格上緣對齊活動標題上緣 */
.bp .pl{line-height:22px}
.bp h1{margin-top:8px}
@media (min-width:1101px){ .bp .stub{padding-top:calc(44px + 22px + 8px)} }

/* ======================= 新聞中心 ======================= */
.nmark{position:absolute;width:76px;height:76px;border:2px solid var(--orange);border-radius:50%;color:var(--orange);background:rgba(250,248,243,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--f-en);line-height:1.15;transform:rotate(-10deg);box-shadow:inset 0 0 0 4px rgba(250,248,243,.9),inset 0 0 0 5px var(--orange)}
.nmark small{font-size:10px;font-weight:700;letter-spacing:.08em}
.nmark b{font-size:17px;font-weight:800}
.nmark.big{width:112px;height:112px}
.nmark.big small{font-size:12px}.nmark.big b{font-size:25px}
.ntag{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:6px;border:1.5px solid var(--dgold);color:var(--dgold);font-weight:700;font-size:13px}

.nr-head{padding:72px 0 36px}
.nr-kicker{font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--label);margin-bottom:12px}
.nr-filter{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-top:36px;padding-top:24px;border-top:2px dotted var(--surf3)}
.nr-filter .chips{display:flex;gap:8px;flex-wrap:wrap}
.chip .n{font-family:var(--f-en);font-weight:500;opacity:.6;margin-left:6px}
.chip.ghost{background:transparent;border:1.5px solid var(--surf3)}
.chip.ghost.is-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}

.nr-feature-wrap{padding-bottom:48px}
.nr-feature{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);background:var(--pp);border-radius:var(--r-lg);overflow:hidden;box-shadow:8px 10px 0 var(--ink);transition:transform .35s var(--ease-out)}
.nr-feature:hover{transform:translateY(-4px)}
.nr-feature .ph{min-height:460px;position:relative;overflow:hidden}
.nr-feature .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.nr-feature:hover .ph img{transform:scale(1.03)}
.nr-feature .bd{padding:48px 48px 44px;display:flex;flex-direction:column;align-items:flex-start;gap:16px}
.nr-feature .top{display:flex;align-items:center;gap:12px}
.nr-feature .headline{font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--orange)}
.nr-feature h2{font-size:34px;font-weight:900;line-height:1.3;margin:0}
.nr-feature p{font-size:17px;line-height:1.8;color:var(--ink2);margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.nr-feature .btn{margin-top:auto}
.nr-feature .nmark{right:28px;bottom:28px}
.vchips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.vchips .lab{font-size:13px;font-weight:700;color:var(--label);width:100%}
.vchip{font-size:14px;font-weight:500;background:var(--surf);border-radius:999px;padding:6px 14px}

.nr-list{padding-bottom:120px}
.nr-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
.ncard{display:flex;flex-direction:column;background:var(--surf);border-radius:var(--r-md);overflow:hidden;transition:transform .35s var(--ease-out)}
.ncard:hover{transform:translateY(-4px)}
.ncard .ph{position:relative;aspect-ratio:16/10;overflow:hidden}
.ncard .ph img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.ncard:hover .ph img{transform:scale(1.04)}
.ncard .nmark{right:14px;bottom:-0px;top:auto;width:68px;height:68px;bottom:12px}
.ncard .nmark b{font-size:15px}
.ncard .bd{padding:22px 24px 22px;display:flex;flex-direction:column;gap:10px;flex:1}
.ncard .top{display:flex;align-items:center;gap:10px}
.ncard .ntowns{font-size:13px;color:var(--ink2)}
.ncard h3{font-size:20px;font-weight:700;line-height:1.45;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ncard p{font-size:15px;color:var(--ink2);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ncard .foot{margin-top:auto;padding-top:12px;border-top:2px dotted var(--surf3);display:flex;justify-content:space-between;font-family:var(--f-en);font-size:14px;color:var(--ink2)}
.ncard .foot .vc{font-family:var(--f-tc);font-weight:700;color:var(--ink)}
.nr-more{display:flex;justify-content:center;margin-top:48px}
.nr-empty{text-align:center;padding:60px 0;color:var(--ink2)}

/* 內頁 */
.na .crumb{padding-top:40px}
.na-head{display:flex;gap:32px;align-items:flex-start;max-width:1040px}
.na-head .nmark{position:relative;flex:none;margin-top:6px}
.na-head .top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.na-head .meta{font-size:15px;color:var(--ink2)}
.na-head h1{font-size:46px;font-weight:900;line-height:1.3;margin:14px 0 0}
.na-hero{margin:40px 0 0;position:relative}
.na-hero img{width:100%;aspect-ratio:21/9;object-fit:cover;border-radius:var(--r-lg)}
.na-hero figcaption{position:absolute;left:20px;bottom:18px;background:rgba(20,33,61,.72);color:var(--paper);font-size:14px;font-weight:500;padding:6px 14px;border-radius:999px}
.na-body{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:72px;padding:56px 0 80px}
.na-text p{font-size:18px;line-height:1.95;margin:0 0 28px}
.na-quote{margin:0 0 36px;padding:8px 0 8px 28px;border-left:6px solid var(--orange);font-size:24px;font-weight:700;line-height:1.6;color:var(--ink)}
.na-gallery{display:grid;gap:12px;margin:8px 0 36px}
.na-gallery.g2{grid-template-columns:1fr 1fr}.na-gallery.g3{grid-template-columns:2fr 1fr 1fr}
.na-gallery img{width:100%;height:260px;object-fit:cover;border-radius:var(--r-sm)}
.na-share{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:28px;border-top:2px dotted var(--surf3)}
.na-share span{font-weight:700;margin-right:8px}
.na-side{display:flex;flex-direction:column;gap:20px;position:sticky;top:100px;align-self:start}
.na-toc{background:var(--pp);border-radius:var(--r-md);padding:28px 28px 20px;box-shadow:6px 8px 0 var(--ink)}
.na-toc .lab{font-size:12px;font-weight:700;letter-spacing:.12em;color:var(--label)}
.na-toc h2{font-size:22px;font-weight:900;margin:4px 0 12px}
.na-toc ol{list-style:none;margin:0;padding:0}
.na-toc li a{display:flex;gap:14px;align-items:flex-start;padding:12px 0;border-top:2px dotted var(--surf3)}
.na-toc li a:hover b{color:var(--orange)}
.na-toc .no{font-size:13px;font-weight:700;color:var(--orange);padding-top:3px}
.na-toc b{display:block;font-size:16px;line-height:1.4}
.na-toc small{font-size:13px;color:var(--ink2)}
.na-line{background:var(--surf);border-radius:var(--r-md);padding:24px 28px}
.na-line b{font-size:17px}
.na-line p{font-size:14px;color:var(--ink2);margin:4px 0 16px}

.na-venues{background:var(--gold);padding:96px 0 104px}
.na-venues .lead{color:var(--ink)}
.vlist{display:flex;flex-direction:column;gap:28px;margin-top:44px}
.venue{background:var(--pp);border-radius:var(--r-lg);padding:32px 36px 36px;scroll-margin-top:100px}
.venue .vh{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:24px;align-items:start}
.venue .no{font-size:28px;font-weight:700;color:var(--orange);line-height:1.2}
.venue .vt-town{font-size:14px;font-weight:700;color:var(--dgold)}
.venue h3{font-size:26px;font-weight:900;margin:2px 0 6px;line-height:1.35}
.venue .vinfo p{font-size:16px;color:var(--ink2);margin:0;max-width:760px}
.venue .vmore{height:44px;padding:0 20px;font-size:15px;white-space:nowrap}
.vtickets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:24px}
.vtickets .ticket{--bg:var(--pp)}
.vempty{margin-top:20px;padding:18px 20px;border-radius:var(--r-sm);background:var(--surf);font-size:15px;color:var(--ink2)}
.na-nav{padding:72px 0 120px}
.na-nav .pn{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.na-nav .pn a{display:block;padding:24px 28px;border-radius:var(--r-md);background:var(--surf);transition:background-color .2s}
.na-nav .pn a:hover{background:var(--surf2)}
.na-nav .pn .nx{text-align:right}
.na-nav .pn small{display:block;font-weight:700;color:var(--dgold);font-size:14px}
.na-nav .pn b{display:block;font-size:17px;margin-top:4px;line-height:1.45}
.na-more-h{font-size:32px;font-weight:900;margin:72px 0 28px}

@media (max-width:1100px){
  .nr-feature{grid-template-columns:1fr}
  .nr-feature .ph{min-height:0;aspect-ratio:16/9}
  .nr-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .na-body{grid-template-columns:1fr;gap:40px}
  .na-side{position:static}
  .vtickets{grid-template-columns:1fr}
}
@media (max-width:760px){
  .nr-head{padding:36px 0 20px}
  .nr-filter{margin-top:24px}
  .nr-filter .chips{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:4px}
  .nr-feature{box-shadow:none}
  .nr-feature .bd{padding:24px 20px 28px}
  .nr-feature h2{font-size:24px}
  .nr-feature .nmark{width:80px;height:80px;right:16px;bottom:16px}
  .nr-feature .nmark b{font-size:18px}
  .nr-grid{grid-template-columns:1fr;gap:20px}
  .na-head{flex-direction:column;gap:16px}
  .na-head .nmark{width:84px;height:84px}
  .na-head .nmark b{font-size:19px}
  .na-head h1{font-size:28px}
  .na-hero{margin-top:24px}
  .na-hero img{aspect-ratio:4/3}
  .na-body{padding:32px 0 48px}
  .na-text p{font-size:17px}
  .na-quote{font-size:19px;padding-left:18px}
  .na-gallery.g2,.na-gallery.g3{grid-template-columns:1fr 1fr}
  .na-gallery.g3 img:first-child{grid-column:1/-1}
  .na-gallery img{height:160px}
  .na-venues{padding:56px 0 64px}
  .venue{padding:22px 18px 22px}
  .venue .vh{grid-template-columns:auto minmax(0,1fr);gap:12px 14px}
  .venue .vmore{grid-column:1/-1;justify-self:start}
  .venue h3{font-size:21px}
  .na-nav{padding:48px 0 72px}
  .na-nav .pn{grid-template-columns:1fr}
  .na-more-h{font-size:24px;margin-top:48px}
}
/* 找體驗：分類標題的英文名 */
[data-count-text] .ct-en{font-family:var(--f-en);font-weight:800;letter-spacing:.06em;color:var(--dgold)}
/* LINE QR Code */
.line-card .qr{background:#fff;padding:10px}
.line-card .qr img{width:100%;height:100%;display:block}
.na-line .ln-row{display:flex;gap:16px;align-items:flex-start}
.na-line .ln-qr{flex:none;width:104px;height:104px;background:#fff;padding:6px;border-radius:8px}
.na-line p{margin-bottom:16px}
@media (max-width:1100px){ .na-line .ln-qr{display:none} }
/* 首頁：新聞中心最新三則 */
.home-news{padding:110px 0 120px}
.hn-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:48px}
.home-news .nr-grid{margin-top:0}
@media (max-width:760px){ .home-news{padding:56px 0 64px} .hn-head{flex-direction:column;align-items:flex-start;margin-bottom:28px} .home-news .h2{font-size:30px} }
/* 明信片郵票：齒孔外加淺灰線與陰影，呈現立體感 */
/* 真正鏤空的齒孔＋沿齒孔外緣的淺灰線與陰影 */
.pc-stamp{width:140px;height:170px;padding:14px;border:0;outline:none;box-shadow:none;
  background:radial-gradient(circle at 5px 5px,transparent 3.2px,#fff 3.8px) -5px -5px/10px 10px;
  filter:drop-shadow(0 0 .6px rgba(20,33,61,.45)) drop-shadow(1px 3px 4px rgba(20,33,61,.18))}
.pc-stamp::before{content:"";position:absolute;inset:5px;background:#fff;box-shadow:inset 0 0 0 1px #E4E0D7}
.pc-stamp>*{position:relative}
@media (max-width:760px){ .pc-stamp{width:100px;height:120px;padding:10px} .pc-stamp img{height:76px} }

/* ======================= 體驗內頁：擴充資訊 ======================= */
.xd{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:32px;align-items:start;margin-top:64px}
.xd-main{display:flex;flex-direction:column;gap:32px;min-width:0}
.xd-sec h2 .n{font-family:var(--f-en);font-size:20px;font-weight:700;color:var(--dgold);margin-left:6px}
.xd-sec .sub{font-size:16px;color:var(--ink2);margin:-8px 0 20px}
.xd-intro p{font-size:18px;line-height:1.9;margin:0 0 18px;white-space:pre-line}
.xd-intro p:last-child{margin-bottom:0}
.xd-intro h3{font-size:19px;font-weight:900;color:var(--dgold);margin:26px 0 8px}
.xd-intro h3:first-child{margin-top:0}
.xd-gallery{display:grid;gap:10px;grid-template-columns:repeat(4,1fr);grid-auto-rows:150px}
.xd-gallery .gi{position:relative;overflow:hidden;border-radius:var(--r-sm);background:var(--surf);padding:0}
.xd-gallery .gi img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease-out)}
.xd-gallery .gi:hover img{transform:scale(1.05)}
.xd-gallery .gi:first-child{grid-column:span 2;grid-row:span 2}
.xd-gallery .gi.more{display:none}
.xd-gallery.n1{grid-template-columns:1fr;grid-auto-rows:380px}
.xd-gallery.n1 .gi:first-child{grid-column:auto;grid-row:auto}
.xd-gallery.n2{grid-template-columns:1fr 1fr;grid-auto-rows:300px}
.xd-gallery.n2 .gi:first-child{grid-column:auto;grid-row:auto}
.xd-gallery.n3{grid-template-columns:2fr 1fr;grid-auto-rows:150px}
.xd-gallery.n3 .gi:first-child{grid-column:1;grid-row:span 2}
.xd-gallery.n4{grid-template-columns:2fr 1fr 1fr}
.xd-gallery.n4 .gi:first-child{grid-column:1;grid-row:span 2}
.xd-gallery.n4 .gi:nth-child(4){grid-column:span 2}
.xd-gallery .plus{position:absolute;inset:0;display:grid;place-items:center;background:rgba(20,33,61,.55);color:#fff;font-family:var(--f-en);font-weight:800;font-size:28px}
.xd-plans{display:grid;gap:16px}
.plan{background:var(--surf);border-radius:var(--r-md);padding:22px 24px}
.plan .ph{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding-bottom:12px;margin-bottom:12px;border-bottom:2px dotted var(--surf3)}
.plan .ph b{font-size:20px;font-weight:900}
.plan .pr{font-family:var(--f-en);font-weight:800;font-size:24px;color:var(--orange);white-space:nowrap}
.slots{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}
.slots small{font-size:14px;font-weight:700;color:var(--label);margin-right:4px;width:100%}
.slot{display:inline-flex;align-items:center;height:38px;padding:0 16px;border-radius:999px;background:var(--paper);border:1.5px solid var(--ink);font-family:var(--f-en);font-weight:700;font-size:16px}
.slot.wide{font-family:var(--f-tc)}
.slots em{font-style:normal;font-size:14px;color:var(--ink2)}
.plan .bullets li{font-size:16px;margin:6px 0}
.fine{font-size:14px;color:var(--ink2);margin:14px 0 0}
.xd-tix{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.tix{position:relative;background:var(--sticker);border:1.5px dashed var(--lgold);border-radius:var(--r-sm);padding:18px 20px}
.tix .tl{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.tix .tl b{font-size:17px}
.tix .tl span{font-family:var(--f-en);font-weight:800;font-size:22px;color:var(--dgold)}
.tix ul{list-style:none;margin:10px 0 0;padding:0}
.tix li{font-size:14px;color:var(--ink2);padding:3px 0}
.tix-note{font-size:15px;margin:14px 0 0;color:var(--ink2)}
.xd-side{display:flex;flex-direction:column;gap:20px;position:sticky;top:96px}
.sc{background:var(--paper);border-radius:var(--r-md);padding:28px 28px}
.sc h2{font-size:22px;font-weight:900;margin:0 0 14px}
.hours{margin:0}
.hours div{display:grid;grid-template-columns:72px 1fr;gap:12px;padding:12px 0;border-top:2px dotted var(--surf3)}
.hours div:first-child{border-top:0;padding-top:0}
.hours dt{font-weight:700;color:var(--dgold)}
.hours dd{margin:0;font-size:16px;font-family:var(--f-tc)}
.sc .vname{font-size:18px;font-weight:700}
.sc .addr{font-size:15px;color:var(--ink2);margin:4px 0 16px}
.sc .btn{margin-top:10px;height:50px}
.mapbox.sm{height:110px;margin-top:12px;border-radius:var(--r-sm)}
.fac{display:flex;flex-direction:column;gap:14px}
.fg .fk{display:flex;align-items:center;gap:8px;font-weight:900;font-size:16px}
.fg .ic{width:30px;height:30px;border-radius:50%;background:var(--surf);display:grid;place-items:center;font-size:15px}
.fg ul{list-style:none;margin:6px 0 0 38px;padding:0}
.fg li{font-size:15px;padding:2px 0}
.fg li b{font-weight:500}
.fg li span{display:block;font-size:13px;color:var(--ink2)}
.lightbox{border:0;padding:0;background:transparent;max-width:100vw;max-height:100vh;width:100vw;height:100vh;overflow:hidden}
.lightbox::backdrop{background:rgba(10,16,30,.88)}
.lightbox[open]{display:grid;place-items:center}
.lightbox img{max-width:min(1100px,88vw);max-height:82vh;object-fit:contain;border-radius:8px}
.lb-x{position:absolute;top:20px;right:24px;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:20px}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:34px;line-height:1}
.lb-nav.lb-p{left:24px}.lb-nav.lb-n{right:24px}
.lb-count{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);color:#fff;font-size:14px}
@media (max-width:1100px){ .xd{grid-template-columns:1fr} .xd-side{position:static;display:grid;grid-template-columns:1fr 1fr} }
@media (max-width:760px){
  .xd{margin-top:28px;gap:20px} .xd-main{gap:20px}
  .xd-side{grid-template-columns:1fr}
  .xd-intro p{font-size:16px}
  .xd-gallery,.xd-gallery.n3,.xd-gallery.n4{grid-template-columns:1fr 1fr;grid-auto-rows:120px}
  .xd-gallery .gi:first-child{grid-column:span 2;grid-row:span 2}
  .xd-gallery.n4 .gi:nth-child(4){grid-column:auto}
  .xd-gallery.n1,.xd-gallery.n2{grid-auto-rows:220px}
  .sc{padding:22px 20px}
  .lb-nav{width:44px;height:44px;font-size:28px} .lb-nav.lb-p{left:8px}.lb-nav.lb-n{right:8px}
}
/* 線框圖示：金色標準色 */
.fg .ic{background:transparent;border:1.5px solid var(--lgold);color:var(--dgold)}
.fg .ic svg{display:block}
.ic-phone{display:inline-flex;margin-right:8px}
.ic-phone svg{width:18px;height:18px}
.ic-inline{display:inline-flex;vertical-align:-3px;margin:0 3px;color:var(--orange)}
/* 門票資訊：與體驗方案卡片同一風格 */
.xd-tix{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.tix{border:0;background:var(--surf);border-radius:var(--r-md);padding:22px 24px}
.tix .ph{margin-bottom:10px}
.tix .bullets li{font-size:16px;padding:0 0 0 24px;margin:6px 0;color:var(--ink)}
.tix .bullets{margin:0}
/* 業者名稱連到找體驗關鍵字搜尋 */
.sc a.vname{display:inline-flex;align-items:center;gap:6px;border-bottom:1.5px solid transparent;transition:color .2s,border-color .2s}
.sc a.vname span{color:var(--orange);font-size:15px;transition:transform .2s}
.sc a.vname:hover{color:var(--orange);border-color:var(--orange)}
.sc a.vname:hover span{transform:translateX(3px)}
.bp .pl a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(138,100,48,.4)}
.bp .pl a:hover{color:var(--orange);text-decoration-color:var(--orange)}
/* 官方活動海報（首頁、活動頁）：海報固定 A 系列比例 1414×2000 完整顯示不裁切；毛玻璃面板疊在海報下方 40%（海報圖此區不放文字），面板文字以容器寬度（cqi）等比縮放。
   首頁：≥1201px 海報固定 547×774，下緣切齊右側票卡（不含「查看全部」連結），寬度不足時只縮票卡；≤1200px 改平板（左海報＋右面板並排）。
   活動頁：≥1101px 疊圖；600–1100px 並排。≤599px 兩頁面板都疊住下方 40% 並往下延伸 */
.poster{min-height:0;justify-content:flex-start;align-self:start;background:var(--ink);container-type:inline-size}
.poster>img{position:static;display:block;width:100%;height:auto;aspect-ratio:1414/2000;z-index:auto}
.poster .panel{position:relative;z-index:1}
.ev-page .poster{min-height:0}
@media (min-width:1201px){
  .ev-grid{grid-template-columns:547px minmax(0,1fr);align-items:start}
  .ev-side h3{white-space:nowrap;line-height:39px;margin:0 0 24px}
  .ev-grid .ev-list{flex:none;height:calc(547px * 2000 / 1414 - 63px)}
  .ev-grid .ev-list>*{flex:1 1 0;min-height:0;display:flex;flex-direction:column}
  .ev-grid .ev-list .stack{flex:1;display:flex;flex-direction:column}
  .ev-grid .ev-list .ticket{flex:1;min-height:0}
  .ev-grid .poster .panel{position:absolute;left:0;right:0;bottom:0;height:40%;display:flex;flex-direction:column;justify-content:flex-end;padding:5.1cqi}
  .ev-grid .poster .yr{font-size:3.6cqi}
  .ev-grid .poster .nm{font-size:8.6cqi;margin:1.1cqi 0 2.2cqi;white-space:nowrap}
  .ev-grid .poster .when{font-size:max(13px,2.9cqi)}
  .ev-grid .poster .what{font-size:max(12px,2.75cqi);margin:1.1cqi 0 4cqi}
  .ev-grid .poster .btn{height:9cqi;font-size:2.9cqi;padding:0 4cqi}
}
@media (min-width:1101px){
  .ev-page .poster .panel{position:absolute;left:0;right:0;bottom:0;height:40%;display:flex;flex-direction:column;justify-content:flex-end;padding:4cqi}
  .ev-page .poster .yr{font-size:3.4cqi}
  .ev-page .poster .nm{font-size:8.2cqi;margin:1cqi 0 2cqi;white-space:nowrap}
  .ev-page .poster .when{font-size:3cqi}
  .ev-page .poster .what{font-size:max(13px,2.5cqi);margin:.8cqi 0 3.4cqi}
  .ev-page .poster .actions{gap:2.25cqi}
  .ev-page .poster .btn{height:7cqi;font-size:2.25cqi}
}
/* 首頁 1101–1200px：寬度不足以並排海報與票卡，提早切換為平板排法 */
@media (min-width:1101px) and (max-width:1200px){
  .ev-grid{grid-template-columns:1fr}
}
@media (max-width:1200px){
  .ev-grid .poster .panel{background:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none}
  .ev-grid .poster .yr{font-size:20px}   /* 上標比白字略大即可 */
}
@media (max-width:1100px){
  .ev-page .poster .panel{background:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none}
}
/* 手機（≤599px）：毛玻璃面板往上疊住海報下方 40%（海報寬 × 1.4144 × 40% ≈ 56.57cqi），內容較多時往海報下方延伸 */
@media (max-width:599px){
  .poster .panel,.ev-grid .poster .panel,.ev-page .poster .panel{margin-top:-56.57cqi;background:rgba(20,33,61,.4);-webkit-backdrop-filter:blur(22px) saturate(1.2);backdrop-filter:blur(22px) saturate(1.2)}
}
@media (min-width:600px) and (max-width:1200px){
  .ev-grid .poster{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr)}
  .ev-grid .poster .panel{display:flex;flex-direction:column;justify-content:flex-end}
  .ev-grid .poster .nm{font-size:clamp(40px,5.4vw,58px)}
}
@media (min-width:600px) and (max-width:1100px){
  .ev-page .poster{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr)}
  .ev-page .poster .panel{display:flex;flex-direction:column;justify-content:flex-end}
  .ev-page .poster .nm{font-size:clamp(40px,5.4vw,58px)}
  .ev-page .poster .yr{font-size:20px}
  .ev-page .poster .when{font-size:18px}
  .ev-page .poster .what{font-size:16px}
  .ev-page .poster .actions{flex-direction:column}
}
.nw{white-space:nowrap}
/* 頁尾明信片 3D 翻轉：正面為照片（疊在背景卡上），捲到頁尾時沿垂直軸左右翻轉到內頁。
   .is-ready 由 JS 加上才翻到正面，無 JS 或「減少動態效果」時直接顯示內頁 */
.postcard-area{perspective:2400px}
.pc-flip{position:relative;transform-style:preserve-3d;transition:transform 1.4s cubic-bezier(.45,.05,.2,1)}
.pc-flip.is-ready:not(.is-open){transform:rotateY(-180deg)}
.pc-flip .postcard{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.pc-front{position:absolute;inset:0;border-radius:14px;overflow:hidden;background:var(--paper);padding:10px;transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:0 18px 40px rgba(0,0,0,.28)}
.pc-front img{width:100%;height:100%;object-fit:cover;border-radius:8px;display:block}
.pc-flip:not(.is-ready) .pc-front{display:none}
/* 明信片標題：依欄寬（cqi）縮小字級，手機固定一行 */
.postcard .pc-l{container-type:inline-size}
.postcard .pc-l h3{font-size:clamp(24px,7.3cqi,44px)}   /* 761px 以上：最小 24px，仍放不下時在兩段之間換行 */
@media (max-width:760px){.postcard .pc-l h3{white-space:nowrap;font-size:min(28px,7.3cqi)}}
/* 明信片社群連結 */
.addr .sns a{border-bottom:1.5px solid transparent;transition:color .2s,border-color .2s}
.addr .sns a:hover{color:var(--orange);border-color:var(--orange)}
/* ---------- 多語系 ---------- */
/* 語言選單（頁首）：details 下拉 */
details.lang{position:relative;padding:0;display:inline-block}
details.lang summary{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:999px;cursor:pointer;list-style:none}
details.lang summary::-webkit-details-marker{display:none}
details.lang[open] summary{background:var(--surf2)}
.lang-list{position:absolute;right:0;top:calc(100% + 8px);min-width:160px;background:#fff;border-radius:16px;box-shadow:0 12px 32px rgba(20,33,61,.16);padding:8px;display:flex;flex-direction:column;z-index:50}
.lang-list a{padding:10px 14px;border-radius:10px;font-weight:500}
.lang-list a:hover{background:var(--surf)}
.lang-list a.is-on{color:var(--orange);font-weight:700}
/* 頁尾語言列與 AI 翻譯聲明 */
.foot-langs a,.menu-langs a{color:inherit}
.foot-langs a+a::before,.menu-langs a+a::before{content:" · ";color:var(--dim)}
.foot-langs a:hover,.menu-langs a:hover{color:var(--paper);text-decoration:underline;text-underline-offset:3px}
.foot-langs a.is-on,.menu-langs a.is-on{color:var(--paper);font-weight:700}
.ai-note{display:inline;margin-left:12px;font-size:13px}
.menu-langs a{font-size:15px!important;padding:0!important;border:0!important;display:inline}
.menu-langs a.is-on{color:var(--orange)}
@media (max-width:760px){.ai-note{display:block;margin:6px 0 0}}
/* 外文版體驗內頁：中文原名與地址 */
.sc .zh-name{font-size:14px;color:var(--ink2);margin:-4px 0 6px}
/* 各語言字型 */
html[lang="ja"]{--f-tc:"Noto Sans JP","Noto Sans TC",system-ui,sans-serif;--f-en:"Schibsted Grotesk","Noto Sans JP",sans-serif}
html[lang="ko"]{--f-tc:"Noto Sans KR","Noto Sans TC",system-ui,sans-serif;--f-en:"Schibsted Grotesk","Noto Sans KR",sans-serif}
html[lang="th"]{--f-tc:"Noto Sans Thai","Noto Sans TC",system-ui,sans-serif;--f-en:"Schibsted Grotesk","Noto Sans Thai",sans-serif}
html[lang="en"]{--f-tc:"Schibsted Grotesk","Noto Sans TC",system-ui,sans-serif}
html:not([lang^="zh"]) body{line-height:1.55}
/* 外文版版面：外文字串較長，取消中文用的不換行、長標題縮小字級 */
html:not([lang^="zh"]) .nw{white-space:normal}
html:not([lang^="zh"]) .nav{gap:22px}
html:not([lang^="zh"]) .nav a{white-space:nowrap;font-size:14px}
html:not([lang^="zh"]) .find-pill{flex-shrink:0;white-space:nowrap}
html:not([lang^="zh"]) .cover .t1{font-size:6cqw;letter-spacing:.02em}
html:not([lang^="zh"]) .seal b{font-size:15px}
html:not([lang^="zh"]) .postcard .pc-l h3{white-space:normal}
@media (min-width:1201px){html:not([lang^="zh"]) .ev-grid .poster .nm{white-space:normal;font-size:6.4cqi;line-height:1.12}}
@media (min-width:1101px){html:not([lang^="zh"]) .ev-page .poster .nm{white-space:normal;font-size:6.2cqi!important;line-height:1.12}}
@media (max-width:760px){
  html:not([lang^="zh"]) .find-pill span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  html:not([lang^="zh"]) .find-pill{gap:0;padding:0 11px}
  html:not([lang^="zh"]) .postcard .pc-l h3{white-space:normal;font-size:24px}
}
html:not([lang^="zh"]) .my-btn{flex-shrink:0;white-space:nowrap}
html:not([lang^="zh"]) .nb .m{white-space:normal}
@media (max-width:1366px){
  html:not([lang^="zh"]) .nav{gap:16px}
  html:not([lang^="zh"]) .nav a{font-size:13.5px}
  html:not([lang^="zh"]) .find-pill{min-width:0;gap:10px;padding:0 14px 0 18px;font-size:15px}
}
@media (max-width:760px){
  html:not([lang^="zh"]) .my-btn{padding:0 5px 0 10px;gap:6px;font-size:14px}
  html:not([lang^="zh"]) .logo{width:112px}
}
@media (max-width:1100px){details.lang{display:none}}   /* 平板與手機：語言改在手機選單內切換 */
@media (max-width:1366px){html:not([lang^="zh"]) .my-btn .m-hide{display:none}}
@media (max-width:1280px) and (min-width:761px){
  html:not([lang^="zh"]) .find-pill span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  html:not([lang^="zh"]) .find-pill{gap:0;padding:0 13px}
}
@media (max-width:1200px) and (min-width:1101px){
  html:not([lang^="zh"]) .nav{gap:12px}
  html:not([lang^="zh"]) .nav a{font-size:13px}
  html:not([lang^="zh"]) .logo{width:170px}
}
html:not([lang^="zh"]) .ticket.big{--tw:clamp(150px,36%,291px)}
html:not([lang^="zh"]) .ticket .tt{overflow-wrap:anywhere}
html:not([lang^="zh"]) .sticker .f b{font-size:.86em;line-height:1.2;overflow-wrap:anywhere}
/* 手機版找體驗：分類改下拉選單（外文名稱較長，不擠在格子裡） */
.ctab-sel{display:none}
@media (max-width:760px){
  .ctabs{display:none}
  .ex-head .ctab-sel{display:block;height:auto;margin-top:12px;border-radius:18px}
  .ctab-sel .fld{height:68px;padding:0 20px;display:flex;flex-direction:column;justify-content:center}
  .ctab-sel .sel-wrap{width:100%}
}
.ct-wrap{display:flex;align-items:center;min-height:36px}
.ct-wrap select{position:absolute;inset:0;opacity:0;cursor:pointer}
.ct-show{display:flex;align-items:center;gap:12px;min-width:0;padding-right:20px;font-size:18px;font-weight:700}
.ct-show b{flex:none;min-width:52px;padding:2px 8px;border:2px solid var(--dgold);border-radius:8px;font-family:var(--f-mono);font-size:16px;line-height:1.4;color:var(--dgold);text-align:center;letter-spacing:.04em}
.ct-show span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 手機版護照：鄉鎮市改下拉選單（依海岸線／平原／山區分組），放在入境頁上方 */
.tw-sel{display:none}
@media (max-width:760px){
  .page-r .region{display:none}
  .page-r .tw-sel{display:block;height:auto;margin:0;border-radius:18px}
  .tw-sel .fld{height:68px;padding:0 20px;display:flex;flex-direction:column;justify-content:center}
  .tw-sel .sel-wrap{width:100%}
}
/* 簽證區：淺色色塊加淺灰外框，和頁面底色區隔 */
.visa-page{border:1px solid #DEDBD3}
@media (max-width:760px){
  .cls{border:1px solid #DEDBD3}
  .cls.is-on{border-color:var(--orange)}
}
/* 活動頁海報按鈕直排時維持與首頁相同高度（flex:1 在直排會把按鈕壓扁） */
@media (max-width:1100px){
  .ev-page .poster .actions .btn{flex:none;width:100%;height:52px}
  .ev-page .poster .actions{gap:12px}
}
/* 活動周邊體驗：手機與平板照片改為 16:9（依卡片高度換算寬度） */
@media (max-width:1100px){
  .ev-page .nb{grid-template-columns:192px minmax(0,1fr) auto}
  .ev-page .nb img{width:192px;aspect-ratio:16/9}
  .ev-page .nb .perf{left:192px}
}
@media (max-width:760px){
  .ev-page .nb{grid-template-columns:171px minmax(0,1fr)}
  .ev-page .nb img{width:171px}
  .ev-page .nb .perf{left:171px}
  .ev-page .nb .bd{padding:10px 12px}
}
/* 平板：鄉鎮市選單加淺色底板，與入境頁同樣是一張紙 */
@media (min-width:761px) and (max-width:1000px){
  .page-r{background:var(--pp);border-radius:20px;padding:28px 28px 12px}
  .page-r .tw-btn{background:var(--paper);border:1px solid #DEDBD3}
  .page-r .tw-btn.is-on{background:var(--orange);border-color:var(--orange)}
  .page-r .tw-btn[disabled]{background:transparent;border-color:transparent}
}
/* 平板：大圖輪播導覽會被護照壓住，隱藏（手機原本就隱藏） */
@media (max-width:1100px){ .hero-caption{display:none} }
/* 手機與平板：橫式票卡照片改為 4:3（照片寬 = 票卡高 × 4/3） */
@media (min-width:761px) and (max-width:1100px){
  .ticket.small{--tw:267px;--th:200px}
  .ticket.big,html:not([lang^="zh"]) .ticket.big{--tw:388px;--th:291px}
}
@media (max-width:760px){
  .ticket{--tw:144px!important;--th:108px!important;height:108px}
  .ticket .bd{padding:9px 10px 9px 16px;min-width:0;display:flex;flex-direction:column}
  .ticket .pl{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ticket .tt{font-size:15.5px!important;line-height:1.35;margin:1px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ticket .meta{gap:4px;padding-top:4px;margin-top:auto}
  .ticket .meta>*{min-width:0}
  .ticket .meta small{font-size:11px}
  .ticket .meta b{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
}
@media (max-width:760px){ .ev-list>*{flex-basis:calc(100% - 28px)} }
/* 「我的票卡」：flex 間距只留給數字圓點，「我的」與「票卡」之間不空格（外文保留一個字距） */
.my-btn .m-hide{margin-right:-12px}
@media (max-width:760px){ .my-btn .m-hide{margin-right:-8px} }
html:not([lang^="zh"]) .my-btn .m-hide{margin-right:calc(.3em - 12px)}
/* 外文版新聞頁：提示新聞內文只有中文（中文版不顯示） */
.nr-zh-note{display:none}
html:not([lang^="zh"]) .nr-zh-note{display:block;margin:8px 0 0;font-size:14px;color:var(--ink2)}
/* 找體驗分類（平板、電腦）：未選的按鈕只顯示代碼與數量，選中的按鈕變寬、名稱一行完整顯示，其餘自動縮窄 */
@media (min-width:761px){
  .ctabs{display:flex;gap:8px}
  .ctab{flex:1 1 0;min-width:0;padding:12px 14px;transition:background-color .2s,transform .2s}
  .ctab .n{display:none}
  .ctab .k{position:static;display:block;margin-top:4px}
  .ctab.is-on{flex:0 0 auto}
  .ctab.is-on .n{display:block;white-space:nowrap}
  .ctab.is-on .c{display:flex;align-items:baseline;gap:10px}
  .ctab.is-on .k{position:absolute;right:14px;top:16px;margin:0}
  .ctab.is-on .c{padding-right:34px}
}
@media (min-width:761px) and (max-width:1100px){
  .ctabs{gap:6px}
  .ctab{padding:12px 8px;text-align:center}
  .ctab .c{font-size:17px}
  .ctab.is-on{padding:12px 14px;text-align:left}
}
