:root{
  --bg:#fbf6f1; --card:#fffdfa; --ink:#3e3557; --soft:#776d92; --line:#ecdff3;
  --pink:#f7cfe0; --pink-d:#e88db4; --lilac:#ddd0f6; --lilac-d:#9a7fd6;
  --ice:#d3ecfa; --ice-d:#5fa8d6; --cream:#fff6e6;
  --tbd-bg:#fff0c4; --tbd-ink:#8a5a00; --tbd-line:#e9c56a;
  --shadow:0 6px 20px rgba(154,127,214,.16);
  --hero1:#f9d6e6; --hero2:#e3d6fa; --hero3:#d6eefc;
  --snow:#ffffff;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#1e1a2b; --card:#2a2440; --ink:#f2ecff; --soft:#bfb3dc; --line:#3c3459;
    --pink:#5a3550; --pink-d:#f3a2c6; --lilac:#43386a; --lilac-d:#c4adf5;
    --ice:#2b4258; --ice-d:#8fcaf0; --cream:#332b45;
    --tbd-bg:#4a3a12; --tbd-ink:#ffd879; --tbd-line:#8a6d22;
    --shadow:0 6px 20px rgba(0,0,0,.35);
    --hero1:#4a2e48; --hero2:#3a3165; --hero3:#264259; --snow:#e8e4ff;
  }
}
:root[data-theme="dark"]{
  --bg:#1e1a2b; --card:#2a2440; --ink:#f2ecff; --soft:#bfb3dc; --line:#3c3459;
  --pink:#5a3550; --pink-d:#f3a2c6; --lilac:#43386a; --lilac-d:#c4adf5;
  --ice:#2b4258; --ice-d:#8fcaf0; --cream:#332b45;
  --tbd-bg:#4a3a12; --tbd-ink:#ffd879; --tbd-line:#8a6d22;
  --shadow:0 6px 20px rgba(0,0,0,.35);
  --hero1:#4a2e48; --hero2:#3a3165; --hero3:#264259; --snow:#e8e4ff;
}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 70px);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:"Zen Maru Gothic","PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;
  font-size:16px;line-height:1.7}
img,svg{max-width:100%}
a{color:var(--lilac-d)}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--ice-d);outline-offset:2px;border-radius:10px}

/* snow */
.snow{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.snow i{position:absolute;top:-20px;color:var(--snow);opacity:.8;font-style:normal;
  animation:fall linear infinite;text-shadow:0 0 4px rgba(154,127,214,.4)}
@keyframes fall{to{transform:translateY(110vh) rotate(200deg)}}
@media (prefers-reduced-motion:reduce){.snow{display:none}}

/* top bar */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);
  border-bottom:2px dashed var(--line)}
.top-in{max-width:1120px;margin:0 auto;padding:8px 14px;display:flex;align-items:center;gap:10px}
.brand{font-weight:900;white-space:nowrap;font-size:15px;border:0;background:none;padding:4px 2px}
.nav{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;flex:1;padding:2px}
.nav::-webkit-scrollbar{display:none}
.chip{border:2px solid var(--line);background:var(--card);border-radius:999px;padding:4px 12px;
  white-space:nowrap;font-size:14px;font-weight:700}
.chip[aria-current="page"]{background:var(--lilac);border-color:var(--lilac-d)}

.wrap{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:16px 14px 60px}

/* hero */
.hero{position:relative;border-radius:32px;overflow:hidden;
  background:linear-gradient(135deg,var(--hero1),var(--hero2) 55%,var(--hero3));
  padding:28px 22px 0;box-shadow:var(--shadow)}
.hero h1{margin:0;font-size:clamp(28px,6vw,52px);line-height:1.15;font-weight:900;letter-spacing:.02em}
.hero .en{font-family:Caveat,cursive;font-size:clamp(22px,4vw,34px);color:var(--lilac-d);display:block;margin-top:4px}
.dates{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0 6px;
  background:var(--card);border-radius:18px;padding:8px 14px;font-weight:900;font-size:clamp(17px,3.4vw,22px);
  border:2px solid var(--pink-d)}
.dates small{font-weight:500;font-size:14px;color:var(--soft)}
.hero-art{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:6px}
.hero-art .mtn{flex:1;min-width:0}
.hero-art .kids{width:min(230px,42%);flex:none}

/* text bits */
.hand{font-family:Caveat,"Zen Maru Gothic",cursive;font-weight:700}
.tag{display:inline-block;font-family:Caveat,"Zen Maru Gothic",cursive;font-weight:700;font-size:20px;
  background:var(--pink);padding:0 12px;border-radius:12px;transform:rotate(-2deg)}
.tag.ice{background:var(--ice)} .tag.lilac{background:var(--lilac)}
h2.sec{display:flex;align-items:center;gap:10px;font-size:clamp(22px,4vw,30px);margin:34px 0 12px;font-weight:900}
h2.sec .no{font-family:Caveat,cursive;font-size:1.3em;color:var(--pink-d)}
h3{margin:0 0 6px;font-size:18px}
.muted{color:var(--soft);font-size:14px}
.tbd{display:inline-block;background:var(--tbd-bg);color:var(--tbd-ink);border:1.5px dashed var(--tbd-line);
  border-radius:999px;padding:0 9px;font-size:.86em;font-weight:700;white-space:nowrap;line-height:1.6}
.tbd::before{content:"⏳ "}
.ok{display:inline-block;background:var(--ice);border-radius:999px;padding:0 9px;font-size:.86em;font-weight:700}

/* cards */
.card{background:var(--card);border:2px solid var(--line);border-radius:24px;padding:16px 18px;box-shadow:var(--shadow)}
.card.pink{border-color:var(--pink-d)} .card.ice{border-color:var(--ice-d)} .card.lilac{border-color:var(--lilac-d)}
/* 果凍玻璃：霧面透底＋霓虹漸層框＋邊緣光暈 */
.card,details.fold,.toc button,.tbl{
  --rim:linear-gradient(135deg,#8fd0ff,#b9a4ff 30%,#ff9fd6 55%,#a98bff 78%,#8fd0ff);
  --glow:rgba(185,150,255,.35);
  background:linear-gradient(160deg,color-mix(in srgb,var(--card) 74%,transparent),color-mix(in srgb,var(--card) 50%,transparent));
  -webkit-backdrop-filter:blur(6px) saturate(1.4);backdrop-filter:blur(6px) saturate(1.4);
  border-color:color-mix(in srgb,#b9a4ff 55%,transparent);
  box-shadow:var(--shadow),0 0 14px var(--glow),inset 0 0 18px color-mix(in srgb,#b9a4ff 18%,transparent),inset 0 1px 0 color-mix(in srgb,#fff 70%,transparent)}
:root[data-theme="dark"] :is(.card,details.fold,.toc button,.tbl){
  --glow:rgba(190,140,255,.55);
  box-shadow:var(--shadow),0 0 6px rgba(255,170,230,.45),0 0 22px var(--glow),inset 0 0 26px rgba(170,140,255,.22),inset 0 0 3px rgba(255,255,255,.35)}
:root[data-theme="dark"] :is(.card,details.fold,.toc button)::after{filter:brightness(1.25) saturate(1.2)}
:is(.card,details.fold,.toc button){position:relative;border-color:transparent}
:is(.card,details.fold,.toc button)::after{content:"";position:absolute;inset:-2px;border-radius:inherit;padding:2px;pointer-events:none;
  background:var(--rim);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.toc button:hover{--glow:rgba(255,140,210,.55)}
/* 果凍感：上緣糖果反光＋底部厚度＋按壓 Q 彈 */
:is(.card,details.fold,.toc button){isolation:isolate}
:is(.card,details.fold,.toc button)::before{content:"";position:absolute;z-index:-1;left:14px;right:32%;top:4px;height:min(34%,24px);
  border-radius:999px;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(255,255,255,0));
  -webkit-mask:linear-gradient(90deg,transparent,#000 12%,#000 55%,transparent);mask:linear-gradient(90deg,transparent,#000 12%,#000 55%,transparent)}
:root[data-theme="dark"] :is(.card,details.fold,.toc button)::before{background:linear-gradient(180deg,rgba(255,255,255,.3),rgba(255,255,255,0))}
.card,details.fold,.toc button{box-shadow:var(--shadow),0 0 14px var(--glow),inset 0 0 18px color-mix(in srgb,#b9a4ff 18%,transparent),inset 0 1px 0 color-mix(in srgb,#fff 70%,transparent),inset 0 -16px 26px -10px rgba(169,139,255,.42),inset 0 10px 18px -10px rgba(255,255,255,.9)}
:root[data-theme="dark"] :is(.card,details.fold,.toc button){box-shadow:var(--shadow),0 0 6px rgba(255,170,230,.45),0 0 22px var(--glow),inset 0 0 26px rgba(170,140,255,.22),inset 0 0 3px rgba(255,255,255,.35),inset 0 -16px 26px -10px rgba(255,150,220,.32)}
@keyframes jelly{0%{transform:scale(1)}30%{transform:scale(1.04,.95)}50%{transform:scale(.97,1.03)}70%{transform:scale(1.015,.99)}100%{transform:scale(1)}}
@keyframes jellyS{0%{transform:scale(1)}30%{transform:scale(1.012,.985)}55%{transform:scale(.995,1.008)}100%{transform:scale(1)}}
.toc button:active{transform:scale(.95,.92);transition:transform .08s}
@media (hover:hover){.toc button:hover{animation:jelly .55s ease}}
details.fold:has(>summary:active){animation:jellyS .45s ease}
@media (prefers-reduced-motion:reduce){.toc button,details.fold{animation:none!important;transform:none!important}}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.grid2{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
dl.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0 0;align-items:baseline}
dl.kv dt{color:var(--soft);font-size:14px;white-space:nowrap}
dl.kv dd{margin:0;font-weight:700;min-width:0;overflow-wrap:anywhere}
.big{font-size:20px;font-weight:900}

/* day strip */
.strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:thin}
.daybtn{flex:none;min-width:84px;border:2px solid var(--line);background:var(--card);border-radius:18px;padding:8px 10px;text-align:center}
.daybtn b{display:block;font-size:18px}
.daybtn span{font-size:12px;color:var(--soft)}
.daybtn.move{border-color:var(--pink-d);background:var(--pink)}
.daybtn[aria-pressed="true"]{outline:3px solid var(--lilac-d);background:var(--lilac)}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:13px;color:var(--soft)}
.legend i{display:inline-block;width:12px;height:12px;border-radius:4px;vertical-align:-1px;margin-right:4px}

/* map */
.mapbox{display:grid;gap:14px;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
@media (max-width:760px){.mapbox{grid-template-columns:1fr}}
.map svg{width:100%;height:auto;display:block}
.pt{cursor:pointer}
.pt circle.dot{transition:r .15s}
.pt:hover circle.dot,.pt.on circle.dot{r:11}
.pt text{font-family:"Zen Maru Gothic",sans-serif;font-weight:900;font-size:14px;fill:var(--ink);paint-order:stroke;stroke:var(--card);stroke-width:4px}

/* swap (change hotel) */
.swap{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}
.swap .arrow{align-self:center;font-size:26px;color:var(--pink-d);font-weight:900}
@media (max-width:620px){.swap{grid-template-columns:1fr}.swap .arrow{transform:rotate(90deg);justify-self:center}}
.out{background:var(--pink)!important} .in{background:var(--ice)!important}
.flag{display:inline-block;background:var(--pink-d);color:#fff;border-radius:10px;padding:0 10px;font-weight:900;font-size:14px}

/* contents */
.toc{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.toc button{text-align:left;border:2px solid var(--line);background:var(--card);border-radius:22px;padding:14px 16px;
  display:flex;gap:12px;align-items:center;box-shadow:var(--shadow)}
.toc button:hover{border-color:var(--lilac-d)}
.toc .n{font-family:Caveat,cursive;font-size:34px;line-height:1;color:var(--pink-d);font-weight:700;min-width:36px}
.toc .t{font-weight:700;font-size:15px;line-height:1.4}

/* table */
/* 表格會橫向捲動，::after 畫框會被裁掉，改用雙層背景畫同款漸層框（底色需不透明） */
.tbl{overflow-x:auto;border-radius:24px;border:2px solid transparent;
  background:linear-gradient(160deg,var(--card),color-mix(in srgb,var(--card) 82%,var(--bg))) padding-box,var(--rim) border-box;
  box-shadow:var(--shadow),0 0 14px var(--glow),inset 0 0 18px color-mix(in srgb,#b9a4ff 18%,transparent),inset 0 -16px 26px -10px rgba(169,139,255,.42)}
:root[data-theme="dark"] .tbl{
  --rim:linear-gradient(135deg,#a6dbff,#cdbcff 30%,#ffb6e2 55%,#bfa6ff 78%,#a6dbff);
  box-shadow:var(--shadow),0 0 6px rgba(255,170,230,.45),0 0 22px var(--glow),inset 0 0 26px rgba(170,140,255,.22),inset 0 -16px 26px -10px rgba(255,150,220,.32)}
table{border-collapse:collapse;width:100%;min-width:560px;font-size:15px}
th,td{padding:10px 12px;text-align:left;border-bottom:1px dashed var(--line);vertical-align:top}
th{background:var(--lilac);font-weight:900;white-space:nowrap}
tr:last-child td{border-bottom:0}

/* forms */
input[type=number],input[type=text],input[type=tel]{font:inherit;color:var(--ink);background:var(--bg);border:2px solid var(--line);border-radius:12px;padding:6px 10px;width:100%}
.btn{border:2px solid var(--lilac-d);background:var(--lilac);border-radius:999px;padding:6px 16px;font-weight:700}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn.ghost{background:var(--card)}
a.btn{display:inline-block;color:var(--ink);text-decoration:none;text-align:center}
.check{display:flex;gap:10px;align-items:flex-start;padding:8px 4px;border-bottom:1px dashed var(--line)}
.check input{width:20px;height:20px;margin-top:4px;accent-color:var(--pink-d);flex:none}
.check.done span{text-decoration:line-through;color:var(--soft)}
.bar{height:12px;border-radius:999px;background:var(--line);overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--pink-d),var(--lilac-d))}

.note{background:var(--cream);border:2px dashed var(--tbd-line);border-radius:18px;padding:12px 14px;font-size:15px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.pager{display:flex;justify-content:space-between;gap:10px;margin-top:16px}
ul.clean{margin:6px 0 0;padding-left:20px}
footer{position:relative;z-index:1;text-align:center;color:var(--soft);font-size:13px;padding:10px 14px 30px}
.theme-t{border:2px solid var(--line);background:var(--card);border-radius:999px;width:36px;height:36px;flex:none}

/* v2 cover */
.cover{margin:0;border-radius:28px;overflow:hidden;box-shadow:var(--shadow);background:var(--hero2)}
.cover img{display:block;width:100%;height:auto}
@media (max-width:699px){.cover{max-width:560px;margin:0 auto}}
.summary{margin-top:16px}
.summary dl.kv{grid-template-columns:auto 1fr;gap:8px 14px}
.route{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.route b{background:var(--ice);border-radius:10px;padding:0 8px;font-weight:700;white-space:nowrap}
.route i{font-style:normal;color:var(--pink-d);font-weight:900}
.icons{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.icons button{border:2px solid var(--line);background:var(--card);border-radius:16px;padding:4px 12px;font-size:14px;font-weight:700}
.icons button:hover{border-color:var(--pink-d)}
.warn{background:var(--tbd-bg);color:var(--tbd-ink);border:1.5px dashed var(--tbd-line);border-radius:14px;padding:8px 12px;font-size:14px;margin-top:10px}
.perk{background:var(--cream);border-radius:14px;padding:8px 12px;margin-top:10px;font-size:14px}
.perk ul{margin:2px 0 0;padding-left:18px}
.pk-tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.pk-tags span{background:var(--lilac);border-radius:999px;padding:0 10px;font-size:13px;font-weight:700}
textarea{font:inherit;color:var(--ink);background:var(--bg);border:2px solid var(--line);border-radius:12px;padding:6px 10px;width:100%;min-height:64px;resize:vertical}
.mine{margin-top:10px;font-size:14px}
.mine summary{cursor:pointer;font-weight:700;color:var(--lilac-d)}
.cand{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line)}
.plan{margin:6px 0 0;padding-left:20px}
.plan li{margin:2px 0}
.cat-h{display:flex;align-items:center;gap:8px;margin:22px 0 10px;font-size:20px;font-weight:900}


/* v4 chapter 03 layout */
.stay-tl{overflow-x:auto;margin:0 0 16px}
.stay-tl .tl{display:grid;grid-template-columns:repeat(9,minmax(52px,1fr));gap:4px;min-width:500px}
.tl button{border:0;border-radius:12px;padding:6px 8px;font-weight:700;font-size:13px;text-align:left;line-height:1.35}
.tl .x{background:transparent;border:2px dashed var(--pink-d);font-size:12px;padding:3px 8px}
.tl small{font-size:11px;color:var(--soft);text-align:center}
.c1{background:var(--pink)} .c2{background:var(--ice)} .c3{background:var(--lilac)} .c4{background:var(--cream);outline:2px solid var(--line)}
.hwide{display:grid;gap:18px;grid-template-columns:minmax(0,1fr) minmax(0,1.75fr);align-items:start}
@media (max-width:860px){.hwide{grid-template-columns:1fr}}
.hw-books{display:grid;gap:12px;grid-template-columns:1fr 1fr}
@media (max-width:560px){.hw-books{grid-template-columns:1fr}}
.tix{border:2px dashed var(--pink-d);border-radius:18px;padding:12px 14px;background:var(--bg)}
.tix.b2{border-color:var(--ice-d)}
.tix .lb{font-weight:900;font-size:15px}
.hrow{display:grid;gap:14px;grid-template-columns:1fr;margin-top:14px}
@media (min-width:760px){.hrow{grid-template-columns:repeat(3,minmax(0,1fr))}}
.hcard{display:flex;flex-direction:column}
.hcard .mapgo{margin-top:auto;padding-top:12px}
.htop{display:flex;justify-content:space-between;align-items:center;gap:8px}
.nights{background:var(--card);border:2px solid var(--line);border-radius:999px;padding:0 10px;font-weight:900;font-size:14px;white-space:nowrap}
.hdates{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;align-items:center;margin:10px 0 0;background:var(--bg);border-radius:14px;padding:8px 10px}
.hdates div{display:flex;flex-direction:column;line-height:1.35}
.hdates small{font-size:12px;color:var(--soft)} .hdates b{font-size:17px} .hdates span{font-size:13px}
.hdates .ar{color:var(--pink-d);font-weight:900;font-size:18px}
.stats{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1.1fr);gap:6px;margin-top:8px}
.stats div{background:var(--bg);border-radius:12px;padding:6px 8px;line-height:1.3;min-width:0}
.stats small{display:block;font-size:12px;color:var(--soft)} .stats b{font-size:15px}
.addr{font-size:14px;margin:10px 0 0;overflow-wrap:anywhere}
.caution{background:var(--ice);border:1.5px dashed var(--ice-d);border-radius:14px;padding:8px 12px;font-size:14px;margin-top:10px;font-weight:700}
.hbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.hbtns .btn{padding:6px 8px;font-size:14px;white-space:nowrap;text-align:center}
.hcard .mapgo .hbtns{margin-top:0}
.stats .cur{font-style:normal;font-size:12px;font-weight:700;color:var(--soft)}
.tix .hdates,.tix .stats div{background:var(--card)}
.tl .xb{white-space:nowrap}
@media (max-width:600px){.tl .x{font-size:11px;line-height:1.3}.tl .xb{display:block}}
@media (min-width:861px){.hwide{align-items:stretch}.hwide>div:first-child{display:flex;flex-direction:column}.hwide>div:first-child .hbtns{margin-top:auto;padding-top:12px}
  .hw-books{grid-template-columns:1fr;grid-auto-rows:1fr}
  .hw-books .tix{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);column-gap:10px;align-content:center}
  .hw-books .tix .lb{grid-column:1/-1}.hw-books .tix .stats{margin-top:10px}}
/* 04 租車卡：金額格撐滿整列、LINE 區塊填滿左欄下方 */
.stats.rent-st{grid-template-columns:1fr 1fr}
.stats .sub{display:block;font-style:normal;font-size:11px;color:var(--soft);font-weight:700}
@media (min-width:861px){.rent>div:first-child .line-box{flex:1;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-top:12px}.hw-books .tix .rent-st{grid-column:1/-1}}

#toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);opacity:0;pointer-events:none;
  background:var(--ink);color:var(--bg);padding:8px 16px;border-radius:999px;font-weight:700;font-size:14px;transition:.25s;z-index:50}
#toast.show{opacity:1;transform:translate(-50%,0)}
.pk-form{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:10px}
.pk-form label{display:flex;flex-direction:column;gap:4px;font-size:14px;font-weight:700}
.pk-form .full{grid-column:1/-1}
@media (max-width:640px){.pk-form{grid-template-columns:1fr}}
select{font:inherit;color:var(--ink);background:var(--bg);border:2px solid var(--line);border-radius:12px;padding:6px 10px;width:100%}
.pk-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}

.pk-sub{font-weight:900;font-size:15px;margin-top:4px}
.pk-tr{border:2px dashed var(--line);border-radius:14px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:6px 12px;margin:0}
.pk-tr legend{font-weight:700;font-size:14px;padding:0 6px}
.pk-tr label{flex-direction:row!important;align-items:center;gap:4px!important;font-weight:500!important}
.pk-tr input{accent-color:var(--lilac-d);width:auto}
.pk-extra-row{display:grid;grid-template-columns:1fr 1.6fr auto;gap:6px;margin-top:6px}
@media (max-width:560px){.pk-extra-row{grid-template-columns:1fr auto}.pk-extra-row [data-xv]{grid-column:1/2}}
.tag{white-space:nowrap}
.htop{flex-wrap:wrap}

.wrap{padding-bottom:24px}
footer{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
.today-card{margin-top:16px}
.today-big{font-size:clamp(22px,5vw,30px);font-weight:900;margin:8px 0 4px}
.today-big b{color:var(--pink-d);font-size:1.4em}
.preview-sel{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:14px;font-size:13px;color:var(--soft)}
.preview-sel select{width:auto;font-size:13px;padding:2px 8px}
.daybtn{position:relative}
.daybtn.is-today{border-color:var(--lilac-d);box-shadow:0 0 0 3px var(--lilac)}
.tdy{position:absolute;top:-9px;left:50%;transform:translateX(-50%);background:var(--lilac-d);color:#fff;font-style:normal;font-size:11px;font-weight:900;border-radius:999px;padding:0 8px;white-space:nowrap}
.today-chip{background:var(--pink);border-color:var(--pink-d)}
.fx-fab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:40;width:54px;height:54px;border-radius:50%;
  border:3px solid #fff;background:linear-gradient(135deg,#f3a2c6,#9a7fd6);font-size:24px;box-shadow:0 4px 16px rgba(0,0,0,.35),0 0 0 2px #9a7fd6}
.fx-panel{position:fixed;right:16px;bottom:calc(80px + env(safe-area-inset-bottom,0px));z-index:41;width:min(340px,calc(100vw - 32px));
  max-height:calc(100vh - 140px);overflow:auto;background:var(--card);border:2px solid var(--lilac-d);border-radius:22px;padding:14px 16px;box-shadow:0 10px 30px rgba(0,0,0,.2)}
.fx-panel[hidden]{display:none}
.fx-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;font-weight:700;font-size:14px;margin-top:8px}
.fx-row input{font-size:18px}
.fx-quick{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:12px}
.fx-quick button{border:2px solid var(--line);background:var(--bg);border-radius:12px;padding:6px;font-size:13px;line-height:1.35}
.fx-quick b{color:var(--pink-d)}
.fx-quick p{grid-column:1/-1}
.fx-note{margin:4px 0 8px;line-height:1.55;font-size:13px}
.fx-act{display:inline-block;margin:6px 0 2px;border:0;border-radius:999px;padding:5px 14px;font:inherit;font-size:13px;font-weight:800;color:#fff;cursor:pointer;
  background:linear-gradient(135deg,#f08ab8,#9a7fd6);box-shadow:0 2px 8px rgba(154,127,214,.45)}
.fx-act:hover{filter:brightness(1.08)}

.imap{position:relative;border-radius:18px;overflow:hidden;line-height:0}
.imap img{display:block;width:100%;height:auto}
.imap svg{position:absolute;inset:0;width:100%;height:100%}
.rt{fill:none;stroke:#9a7fd6;stroke-width:9;stroke-linecap:round;stroke-dasharray:22 18;animation:flow 1.6s linear infinite;filter:drop-shadow(0 0 3px #fff)}
.rt-tbd{stroke:#e9b44a}
@keyframes flow{to{stroke-dashoffset:-40}}
.rt-n{font:900 30px "Zen Maru Gothic",sans-serif;fill:#3e3557}
.pt .pill-t{stroke:none;font:900 40px "Zen Maru Gothic","PingFang TC",sans-serif;fill:#3e3557}
.pt .tdy-t{stroke:none;font:900 28px "Zen Maru Gothic",sans-serif;fill:#fff}
.pt{cursor:pointer}
.pt .dot{transition:r .15s}
.pt:hover .dot,.pt.on .dot{r:28}
.pt.on .pill{stroke-width:9}
.pulse{animation:pulse 1.6s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes pulse{0%{opacity:1;transform:scale(.8)}100%{opacity:0;transform:scale(2)}}
@media (prefers-reduced-motion:reduce){.rt,.pulse{animation:none}}
.pt:focus{outline:none}
.pt:focus-visible .pill{stroke:#3e3557;stroke-width:9}
.split{font-size:13px;color:var(--soft);margin-top:3px}
.split-box{margin-top:10px;background:var(--cream);border-radius:14px;padding:8px 12px;font-weight:700;font-size:14px;display:grid;gap:4px}
.pk-tags .pk-city{background:var(--pink);color:var(--ink)}
.pk-tags .pk-venue{background:var(--cream);border:1.5px solid var(--line)}
.pk-tags .v-室內{background:var(--ice)} .pk-tags .v-戶外{background:#dff3e4} .pk-tags .v-園區{background:var(--lilac)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pk-tags .v-戶外{background:#2f4a38}}
:root[data-theme="dark"] .pk-tags .v-戶外{background:#2f4a38}
.h-head{display:flex;align-items:center;gap:12px;margin-top:8px}
.hotel-pic{width:92px;height:92px;flex:none;border-radius:20px;object-fit:cover;background:#fbf6f1;border:2px solid var(--line);box-shadow:var(--shadow)}
.hotel-pic.big{width:120px;height:120px;border-radius:24px}
.hotel-pic.sm{width:60px;height:60px;border-radius:14px}
.line-box{display:flex;gap:12px;align-items:flex-start}
.line-qr{width:110px;height:auto;flex:none;border-radius:10px;background:#fff;padding:6px;border:2px solid var(--line);cursor:zoom-in;transition:width .2s}
.line-qr.zoom{width:240px;cursor:zoom-out}
@media (max-width:480px){.line-box{flex-direction:column}.line-qr.zoom{width:100%;max-width:280px}}
.cp{border:1.5px solid var(--lilac-d);background:var(--card);color:var(--lilac-d);border-radius:999px;font-size:12px;font-weight:700;padding:0 8px;margin-left:4px;vertical-align:middle}
.vjw td{vertical-align:middle}
.vjw-kv{gap:8px 12px}
.vjw-kv dt{padding-top:2px}
@media (max-width:600px){
  .tbl.stack table{min-width:0}
  .tbl.stack thead{display:none}
  .tbl.stack tr{display:block;padding:10px 12px;border-bottom:1px dashed var(--line)}
  .tbl.stack tr:last-child{border-bottom:0}
  .tbl.stack td,.tbl.stack tbody th{display:flex;align-items:baseline;gap:10px;padding:2px 0;border:0;background:none;text-align:left;white-space:normal}
  .tbl.stack td::before,.tbl.stack tbody th::before{content:attr(data-label);flex:none;width:72px;color:var(--soft);font-size:13px;font-weight:500}
  .tbl.stack td:first-child,.tbl.stack tbody th:first-child{font-weight:900;font-size:15px;padding-bottom:4px}
  .tbl.stack td:first-child::before,.tbl.stack tbody th:first-child::before{display:none}
  .tbl.stack td:empty,.tbl.stack tbody th:empty{display:none}
  .tbl.stack tbody tr:has(th){background:var(--lilac)}
  .fx-fab{width:46px;height:46px;font-size:20px;opacity:.92}
}
.sec-ic{width:52px;height:52px;border-radius:14px;object-fit:cover;flex:none;box-shadow:var(--shadow)}
.toc-ic{width:58px;height:58px;border-radius:16px;object-fit:cover;flex:none}
.toc button{padding:10px 14px}
.toc .n{min-width:30px;font-size:30px}
.today-wrap{display:flex;gap:16px;align-items:flex-start}
.today-body{flex:1;min-width:0}
.mascot{width:170px;height:170px;flex:none;border-radius:24px;object-fit:cover;order:2;box-shadow:var(--shadow)}
@media (max-width:640px){.today-wrap{flex-direction:column;align-items:center}.mascot{order:0;width:190px;height:190px}.today-body{width:100%}}
.pk-note{margin:8px 0 0;white-space:pre-line}
.pk-note.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
.pk-more{padding:6px 12px}
.pk-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pk-acts .btn{display:flex;align-items:center;justify-content:center;gap:4px;padding:7px 10px;text-align:center;white-space:nowrap;text-decoration:none}
.pk-acts [data-pkadd]{grid-column:1/-1;border-style:dashed}
.pk-acts [data-pkadd][aria-expanded="true"]{border-style:solid;background:var(--lilac)}
details.fold{margin-top:12px;background:var(--card);border:2px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}
details.fold>summary{list-style:none;cursor:pointer;padding:14px 18px;font-weight:900;font-size:17px;display:flex;justify-content:space-between;align-items:center;gap:10px}
details.fold>summary::-webkit-details-marker{display:none}
.fold-ar{color:var(--lilac-d);transition:transform .2s}
details.fold[open] .fold-ar{transform:rotate(180deg)}
.fold-fb .fold-ar{display:inline-block}
details.fold:not([open])>summary .fold-fb::before{content:"展開"}
details.fold>summary:hover .fold-fb{background:rgba(170,140,230,.26)}
details.fold[open]>summary{border-bottom:2px dashed var(--line)}
.fold-body{padding:14px}
/* 04 交通：大眾交通卡電腦版每列 3 張；移動建議卡按鈕置底 */
.grid2.rt>.card{display:flex;flex-direction:column}
.rt-go{margin-top:auto;padding-top:10px}
@media (min-width:861px){.grid.tr3{grid-template-columns:repeat(3,1fr)}}

.drv-btn{background:var(--pink);border-color:var(--pink-d)}
#drvOverlay{position:fixed;inset:0;z-index:100;background:#fffdf8;display:flex;align-items:center;justify-content:center;padding:calc(20px + env(safe-area-inset-top,0px)) 16px calc(20px + env(safe-area-inset-bottom,0px));overflow:auto}
#drvOverlay[hidden]{display:none}
.drv-card{width:min(720px,100%);color:#1d1830;text-align:center;font-family:"Hiragino Sans","Yu Gothic","Noto Sans JP","Zen Maru Gothic",sans-serif}
.drv-zh{font-size:14px;color:#776d92;margin-bottom:14px}
.drv-ask{font-size:clamp(22px,5vw,30px);font-weight:700;margin-bottom:14px}
.drv-name{font-size:clamp(30px,8vw,52px);font-weight:900;line-height:1.25;margin-bottom:8px;word-break:keep-all;overflow-wrap:anywhere}
.drv-sub{font-size:clamp(16px,4vw,22px);color:#5a5070;margin-bottom:16px}
.drv-addr{font-size:clamp(24px,6.5vw,40px);font-weight:900;line-height:1.4;background:#fff3d6;border:3px solid #e9b44a;border-radius:20px;padding:14px 16px;margin:0 auto 14px}
.drv-tel{font-size:clamp(22px,5.5vw,32px);font-weight:900;letter-spacing:.03em}
.drv-tel span{display:block;font-size:14px;font-weight:500;color:#776d92;letter-spacing:0}
.drv-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px}
.drv-actions .btn{color:#3e3557}
.wx-now{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.wx-big{font-size:46px;line-height:1}
.wx-temp{font-size:30px;font-weight:900}
.wx-sun{margin-left:auto;font-size:14px}
.wx-strip{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 4px}
.wx-day{flex:none;min-width:86px;background:var(--bg);border:2px solid var(--line);border-radius:16px;padding:8px;text-align:center;display:flex;flex-direction:column;gap:2px;font-size:13px}
.wx-ic{font-size:26px}
.nw{white-space:nowrap}
.pax{font-weight:700;display:grid;gap:2px}
@media (min-width:601px){.ttl{white-space:nowrap}}
@media (min-width:700px){.daybtn,.wx-day{flex:1 0 0;min-width:max-content}}
@media (max-width:420px){.wx-tabs{gap:6px;flex-wrap:nowrap}.wx-tabs .chip{padding:4px 9px;font-size:13px}}
.wx-t .hi{color:#e05a7a;font-weight:900} .wx-t .lo{color:var(--ice-d);font-weight:900}
#netBar{position:fixed;left:0;right:0;top:0;z-index:60;background:#3e3557;color:#fff;text-align:center;font-size:13px;font-weight:700;padding:calc(6px + env(safe-area-inset-top,0px)) 10px 6px}
#netBar[hidden]{display:none}
#drvOverlay{--bg:#fbf6f1;--card:#fffdfa;--ink:#3e3557;--soft:#776d92;--line:#ecdff3;--lilac:#ddd0f6;--lilac-d:#9a7fd6;--pink:#f7cfe0;--pink-d:#e88db4;color:#3e3557;color-scheme:light}
#drvOverlay .btn{color:#3e3557;background:#ddd0f6;border-color:#9a7fd6;font-size:17px;padding:10px 20px}
#drvOverlay .btn.ghost{background:#fff}
.nobr{white-space:nowrap}

/* v2：通關碼視窗、帶按鈕的提示 */
#edDialog{border:2px solid var(--lilac-d);border-radius:18px;background:var(--card);color:var(--ink);padding:18px 20px;width:min(92vw,360px);box-shadow:var(--shadow)}
#edDialog::backdrop{background:rgba(30,26,43,.45)}
.ed-form h3{margin:0 0 4px}
.ed-form label{display:flex;flex-direction:column;gap:4px;font-size:14px;font-weight:700;margin-top:10px}
.ed-form input{font:inherit;color:var(--ink);background:var(--bg);border:2px solid var(--line);border-radius:12px;padding:8px 10px}
.ed-form .row{margin-top:12px}
.ed-msg{color:var(--pink-d);font-weight:700;min-height:1.2em;margin:8px 0 0;font-size:14px}
/* 通關碼狀態列：玻璃感，電腦版一行（說明在左、狀態在右），手機自動換成兩行 */
.ed-status{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin-top:10px;padding:10px 14px;
  border-radius:16px;font-size:14px;font-weight:700;
  background:linear-gradient(135deg,color-mix(in srgb,var(--lilac) 45%,transparent),color-mix(in srgb,var(--ice) 45%,transparent));
  border:1px solid color-mix(in srgb,var(--card) 70%,transparent);
  box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 55%,transparent),0 4px 14px color-mix(in srgb,var(--lilac-d) 14%,transparent);
  -webkit-backdrop-filter:blur(10px) saturate(1.3);backdrop-filter:blur(10px) saturate(1.3)}
.ed-desc{flex:1 1 240px;color:var(--soft)}
.ed-line{display:flex;flex-wrap:wrap;gap:10px;align-items:center;flex:none}
.ed-who{background:color-mix(in srgb,var(--card) 75%,transparent);border:1px solid color-mix(in srgb,var(--lilac-d) 35%,transparent);border-radius:999px;padding:3px 12px}
.ed-who.off{color:var(--soft)}
.ed-login{padding:4px 12px;font-size:13px}
.linkbtn{background:none;border:0;padding:0;color:var(--lilac-d);text-decoration:underline;font:inherit;font-size:13px;cursor:pointer}
#toastA{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);opacity:0;pointer-events:none;
  display:flex;gap:12px;align-items:center;background:var(--ink);color:var(--bg);padding:8px 10px 8px 16px;border-radius:999px;font-weight:700;font-size:14px;transition:.25s;z-index:51}
#toastA.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
#toastA button{background:var(--lilac);color:#3e3557;border:0;border-radius:999px;padding:4px 12px;font-weight:900}

/* 05 章行程規劃板 */
.bd{display:grid;gap:12px;margin-top:10px}
.bd-slot>b{display:block;font-size:15px;color:var(--lilac-d);border-bottom:2px dashed var(--lilac);padding-bottom:2px}
.bd-list{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
.bd-item{padding:8px 10px;border-radius:12px;background:var(--cream);border:1px solid var(--lilac)}
.bd-head{display:flex;gap:8px;align-items:baseline}
.bd-meta{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.bd-item.locked{border-style:dashed}
.bd-time{font-weight:700;font-variant-numeric:tabular-nums}
.bd-name{flex:1}
.bd-time{white-space:nowrap}
.bd-grp.lock{background:var(--lilac)}
.bd-grp{background:var(--ice);border-radius:999px;padding:0 8px;font-size:.82em}
.bd-note{margin-top:4px}
.bd-empty{margin:6px 0 0}
/* 05 章今日安排：時間固定寬度靠左，內容對齊 */
.pl-time{flex:0 0 4.6em}
.pl-meta{margin-left:calc(4.6em + 8px)}
.bd-more{margin-left:auto;background:none;border:0;padding:0 6px;font-size:20px;line-height:1;color:var(--lilac-d);cursor:pointer}
.bd-acts{margin-top:8px}
/* 地點跟地區、停留時間一樣用膠囊，太長就省略號，點了開 Google Maps */
.bd-map{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;border:1px solid var(--lilac);color:var(--lilac-d);text-decoration:none}
.bd-map:hover{border-color:var(--lilac-d)}
.bd-drag{margin-left:auto;margin-right:2px;background:var(--lilac);border:0;border-radius:8px;width:32px;height:28px;padding:0;font-size:17px;font-weight:700;line-height:1;color:var(--lilac-d);cursor:grab;touch-action:none}
.bd-drag+.bd-more{margin-left:0}
.bd-list:empty{display:none}
.bd-list:not(:empty)+.bd-empty{display:none}
.bd.dragging{user-select:none;-webkit-user-select:none}
.bd.dragging .bd-drag{cursor:grabbing}
.bd-item.dragging{border-style:solid;border-color:var(--lilac-d);box-shadow:0 14px 28px rgba(0,0,0,.45);transform:scale(1.03) rotate(-1deg);pointer-events:none}
.bd-ph{border:2px dashed var(--lilac-d);border-radius:12px;background:transparent;opacity:.6}
.bd-pickgrp{margin-top:12px}
.bd-pickgrp>b{display:block;font-size:14px;color:var(--lilac-d)}
.bd-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin-top:6px}
.bd-pick{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:8px 10px;border-radius:12px;border:1px solid var(--lilac);background:var(--cream);color:inherit;font:inherit;cursor:pointer}
.bd-pick:hover{border-color:var(--lilac-d)}
.bd-pick:disabled{opacity:.5}
.bd-pick small{font-size:12px}
.pk-add{margin-top:10px;padding-top:10px;border-top:1px dashed var(--lilac)}
.pk-add .pk-form{grid-template-columns:1fr 1fr}
.bd-grp.area{background:none;border:1px solid var(--ice)}
.today-bd{margin:8px 0 0;font-weight:700}
.bd-warn{margin-top:6px;width:fit-content;background:var(--tbd-bg);color:var(--tbd-ink);border:1px dashed var(--tbd-line);border-radius:10px;padding:2px 8px;font-size:.85em}
.bd-hint{margin:6px 0 0;font-size:13px}
@media (max-width:600px){.bd-head{gap:4px}.bd-drag{width:26px;height:24px;font-size:15px;margin-right:0}.bd-more{padding:0 0 0 2px;font-size:18px}.bd-time{margin-right:2px}}
/* 05 章：住宿卡按鈕兩顆等寬並排置底；電腦版今晚住宿與航班卡各半 */
.hbtns>.btn:only-child{grid-column:1/-1}
.d5>.card{display:flex;flex-direction:column}
.d5>.card>.hbtns{margin-top:auto;padding-top:12px}
.d5 .swap>.card{display:flex;flex-direction:column}
.d5 .swap>.card>.hbtns{margin-top:auto;padding-top:10px}
.d5>.card>.tag,.d5 .swap>.card>.tag{align-self:flex-start}   /* 標題膠囊不要被 flex 拉成整排長 */
@media (min-width:861px){.grid2.d5{grid-template-columns:repeat(2,1fr)}}
/* 05 章頁尾：前一天／後一天按鈕，中間放前後章小文字連結 */
.d5pg{align-items:center}
.d5pg>.btn{flex:0 0 auto;white-space:nowrap}
@media (max-width:600px){.d5pg{gap:6px}.d5pg>.btn{padding-left:12px;padding-right:12px}.pg-ch{font-size:12px}}
.pg-ch{display:flex;gap:4px 14px;flex-wrap:wrap;justify-content:center;font-size:13px}
.pg-ch button{background:none;border:0;padding:2px 0;color:var(--lilac-d);cursor:pointer;white-space:nowrap}
.pg-ch button:hover{text-decoration:underline}
/* 08 章旅行成員 */
.mb-grp{margin-top:12px}
.mb-grp>b{display:block;font-size:14px;color:var(--ice-d)}
.mb-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}
.mb-row{display:flex;align-items:center;gap:8px;padding:5px 12px 5px 5px;border-radius:999px;
  background:color-mix(in srgb,var(--ice) 45%,var(--card));border:1px solid color-mix(in srgb,var(--ice-d) 35%,transparent)}
.mb-dot{width:28px;height:28px;flex:none;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:900;font-size:14px}
.mb-name{font-weight:700}
.mb-me{margin-left:6px;background:var(--lilac);border-radius:999px;padding:0 7px;font-size:11px;vertical-align:1px}
.mb-ops{display:flex;gap:8px;margin-left:4px}
.mb-row.editing{flex-basis:100%;flex-wrap:wrap;border-radius:16px;padding:10px 12px}
.mb-edit{display:grid;grid-template-columns:1fr 1fr;gap:10px;flex:1 1 100%;max-width:560px}
.mb-edit label,.mb-add label{display:flex;flex-direction:column;gap:4px;font-size:14px;font-weight:700}
.mb-btns{flex:1 1 100%}
.mb-add{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:10px;align-items:end;margin-top:14px;padding-top:12px;border-top:1px dashed var(--ice-d)}
.mb-msg{margin:6px 0 0;min-height:1em}
.mb-msg:empty{display:none}
.mb-hidden,.mb-empty{margin:10px 0 0}
@media (max-width:640px){.mb-add{grid-template-columns:1fr 1fr}.mb-add .btn{grid-column:1/-1}.mb-edit{grid-template-columns:1fr}}
#mb-count:empty{display:none}
/* 08 章記帳表單 */
#ex-count:empty{display:none}
.ex-open,.ex-save{margin-top:12px;border:0;color:#fff;font-weight:800;background:linear-gradient(135deg,#f08ab8,#9a7fd6);box-shadow:0 2px 10px rgba(154,127,214,.4)}
.ex-open:hover,.ex-save:hover{filter:brightness(1.08)}
.ex-save:disabled{opacity:.6}
.ex-form{margin-top:12px;padding:14px;border-radius:18px;background:color-mix(in srgb,var(--pink) 22%,transparent);border:1px solid color-mix(in srgb,var(--pink-d) 35%,transparent);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;flex-direction:column;gap:12px}
.ex-form label{display:flex;flex-direction:column;gap:4px;font-size:14px;font-weight:700}
.ex-form input[type=date]{font:inherit;color:var(--ink);background:var(--bg);border:2px solid var(--line);border-radius:12px;padding:5px 10px;width:100%;min-height:38px}
.ex-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:10px}
.ex-grid:has(#exPlace){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ex-grid:has(#exAmt){grid-template-columns:repeat(3,minmax(0,1fr))}
.ex-sub{font-size:14px;font-weight:700;margin-bottom:-6px}
.ex-cats,.ex-chips,.ex-quick{display:flex;flex-wrap:wrap;gap:6px}
.ex-cats button,.ex-q,.ex-chip,.ex-seg button{font:inherit;font-size:14px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:999px;border:2px solid var(--line);background:var(--card);padding:4px 12px}
.ex-cats button[aria-pressed="true"],.ex-seg button[aria-pressed="true"]{background:var(--lilac);border-color:var(--lilac-d)}
.ex-q{font-size:13px;padding:2px 10px;border-style:dashed;border-color:var(--lilac-d);color:var(--lilac-d)}
.ex-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 12px 3px 3px;opacity:.55}
.ex-chip .mb-dot{width:24px;height:24px;font-size:12px}
.ex-chip[aria-pressed="true"]{opacity:1;border-color:var(--pink-d);background:color-mix(in srgb,var(--pink) 50%,var(--card))}
.ex-seg{display:inline-flex;gap:0;margin-top:10px;border-radius:999px;overflow:hidden;border:2px solid var(--lilac-d);width:fit-content}
.ex-seg button{border:0;border-radius:0;padding:4px 14px}
.ex-seg button+button{border-left:1px solid var(--lilac-d)}
.ex-detail{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px}
.ex-detail li{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:12px;background:color-mix(in srgb,var(--card) 70%,transparent);border:1px solid var(--line)}
.ex-detail .ex-who{flex:1;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-detail b{color:var(--pink-d)}
.ex-detail .ex-n{width:84px;flex:none;padding:3px 8px}
.ex-rate{flex-direction:row!important;align-items:center;flex-wrap:wrap}
.ex-rate input{width:110px!important}
.ex-hint{margin:4px 0 0;font-size:13px;line-height:1.55}
.ex-conv{display:inline-block;margin-left:6px;color:var(--pink-d);font-size:14px}
.ex-warn{margin:6px 0 0;color:#d4537a;font-weight:700;font-size:14px}
.ex-warn:empty{display:none}
.ex-ok{margin:6px 0 0;color:#3f9e74;font-weight:700;font-size:14px}
#exRateBox:empty{display:none}
.ex-editing{margin:0;font-weight:800;color:var(--lilac-d)}
.ex-listh{margin:18px 0 8px}
.ex-filter{display:flex;gap:8px;flex-wrap:wrap}
.ex-filter select{flex:1 1 140px;max-width:220px}
.ex-sum{margin:10px 0 0;font-size:14px;line-height:1.6}
.ex-sum b{color:var(--pink-d)}
.ex-empty{margin:12px 0 0}
.ex-day{margin-top:12px}
.ex-dayh{display:flex;justify-content:space-between;gap:8px;font-size:13px;font-weight:800;color:var(--lilac-d);padding:0 4px 4px;border-bottom:1px dashed color-mix(in srgb,var(--lilac-d) 45%,transparent)}
.ex-items{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.ex-item{border-radius:14px;background:color-mix(in srgb,var(--card) 72%,transparent);border:1px solid var(--line);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ex-item.open{border-color:color-mix(in srgb,var(--pink-d) 50%,transparent)}
.ex-row{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;gap:10px;padding:6px 12px}
.ex-row:focus-visible{outline:2px solid var(--lilac-d);border-radius:14px}
.ex-ic{font-size:20px;flex:none}
.ex-main{flex:1;min-width:0;display:flex;flex-direction:column}
.ex-main b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-main small,.ex-amt small{font-size:12px;color:var(--soft)}
.ex-amt{flex:none;display:flex;flex-direction:column;align-items:flex-end;text-align:right}
.ex-amt b{color:var(--pink-d)}
.ex-more{padding:0 12px 10px}
.ex-more .ex-detail{margin-top:0;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.ex-more .ex-detail small{font-size:12px;color:var(--soft);margin-left:4px}
.ex-more .row{margin-top:8px}
.ex-del{color:#d4537a}
@media (max-width:640px){.ex-grid,.ex-grid:has(#exPlace){grid-template-columns:1fr}.ex-grid:has(#exAmt){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ex-payer{grid-column:1/-1}.ex-detail,.ex-more .ex-detail{grid-template-columns:1fr}}
/* 結算：電腦版表格和轉帳左右並排，手機版上下排；表格每人一行 */
.ex-stbar{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.ex-stbar .ex-seg{margin-top:0}
.ex-stbar .ex-seg button{font-size:13px;padding:3px 10px}
.ex-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.ex-acts .btn{font:inherit;font-size:13px;font-weight:700;color:var(--ink);padding:5px 14px;cursor:pointer}
.ex-stbox{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:10px 16px;align-items:start;margin-top:10px}
table.ex-st{min-width:0;width:100%;border-collapse:separate;border-spacing:0;font-size:14px;border-radius:14px;overflow:hidden;background:color-mix(in srgb,var(--card) 72%,transparent);border:1px solid var(--line);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ex-st th,.ex-st td{padding:5px 10px;text-align:right;white-space:nowrap;vertical-align:middle;border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent);background:none;font-variant-numeric:tabular-nums}
.ex-st tr:last-child>*{border-bottom:0}
.ex-st thead th{font-size:12px;font-weight:600;color:var(--soft);padding-top:6px;padding-bottom:4px}
.ex-st th:first-child{text-align:left}
.ex-st td:last-child{font-weight:800}
.ex-st .ex-who{display:flex;align-items:center;gap:6px;font-weight:800}
.ex-st .ex-who .mb-dot{width:20px;height:20px;font-size:11px}
.ex-st .ex-who small{font-size:11px;font-weight:500;color:var(--soft)}
.ex-zero{color:var(--soft)}
.ex-pos{color:#3f9e74} .ex-neg{color:#d4537a}
:root[data-theme="dark"] .ex-pos{color:#7fd6ad}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .ex-pos{color:#7fd6ad}}
.ex-tfh{font-size:14px;font-weight:800}
.ex-tf{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px}
.ex-tf li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:5px 12px;border-radius:999px;font-size:14px;background:color-mix(in srgb,var(--lilac) 45%,transparent);border:1px solid color-mix(in srgb,var(--lilac-d) 50%,transparent)}
.ex-tf li>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-tfamt{color:var(--pink-d);white-space:nowrap}
.ex-tfbox .ex-ok{margin-top:4px}
.ex-stcur{margin-top:12px}
@media (max-width:640px){.ex-stbox{grid-template-columns:1fr}.ex-st th,.ex-st td{padding:5px 7px}.ex-tf{grid-template-columns:1fr}}
/* 收合：整張卡片、結算、帳目清單 */
.ex-top{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px}
.ex-top:focus-visible,.ex-fold:focus-visible{outline:2px solid var(--lilac-d);border-radius:12px}
.ex-topr{display:flex;align-items:center;gap:8px}
.ex-top .fold-ar,.ex-fold .fold-ar{display:inline-block;transition:transform .2s}
.ex-top[aria-expanded="true"] .fold-ar,.ex-fold[aria-expanded="true"] .fold-ar{transform:rotate(180deg)}
.ex-shut .ex-body{display:none}
.ex-fold{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:baseline;gap:8px;margin:16px 0 0;padding:2px 0;font-size:14px;font-weight:800}
.ex-fold small{font-size:12px;font-weight:600;color:var(--soft)}
.ex-fb{display:inline-flex;align-items:center;gap:4px;flex:none;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:800;line-height:1.4;color:var(--lilac-d);background:rgba(170,140,230,.14);border:1px solid rgba(170,140,230,.4)}
.ex-fb::before{content:"收合"}
[aria-expanded="false"]>.ex-fb::before,[aria-expanded="false"] .ex-fb::before{content:"展開"}
.ex-fb .fold-ar{font-size:13px}
.ex-fold .ex-fb{margin-left:auto;align-self:center}
.ex-top:hover .ex-fb,.ex-fold:hover .ex-fb{background:rgba(170,140,230,.26)}
.ex-fold+.ex-filter{margin-top:6px}
/* 帳目清單：電腦版每天的帳兩欄排 */
@media (min-width:900px){.ex-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}
/* 05 規劃板、07 口袋名單通關碼提示：手機版省略「共用規劃板：」「共用清單：」等前綴，維持一行 */
@media (max-width:600px){#bd-ed .ed-pre,#pk-status .ed-pre{display:none}}
/* 06 章：兩張卡按鈕置底對齊；滑雪場小檔案移到卡片下方整列；kv 裡的電話不加底線 */
.d6>.card{display:flex;flex-direction:column}
.d6>.card>.hbtns{margin-top:auto;padding-top:12px}
.hbtns.b3{grid-template-columns:repeat(3,1fr)}
@media (max-width:600px){.hbtns.b3{grid-template-columns:1fr 1fr}.hbtns.b3>:last-child{grid-column:1/-1}}
.d6-perk{margin-top:14px;padding:10px 16px}
dl.kv a[href^="tel:"]{text-decoration:none}
/* 07 口袋名單：手機版分類一排、地區＋展開／收合膠囊一排；電腦版三者合成一排；電腦版展開資料改上下排；手機版三顆按鈕一排 */
.pk-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:16px}
.pk-ctl>.pk-cats{flex:0 0 100%}
.pk-ctl>.pk-areas{flex:1 1 0;min-width:0}
.pk-sm{display:none}
@media (max-width:600px){.pk-areas .pk-lg{display:none}.pk-areas .pk-sm{display:inline}}
@media (min-width:861px){
  .pk-ctl{gap:10px 14px}
  .pk-ctl>.pk-cats{flex:none}
  .pk-ctl>.pk-areas{border-left:1px solid var(--line);padding-left:14px}
}
.pk-allfb{flex:none;background:none;border:0;padding:0;cursor:pointer}
.pk-allfb .ex-fb{font-size:13px;padding:4px 12px}
.pk-allfb .fold-ar{display:inline-block;transition:transform .2s}
.pk-allfb[aria-expanded="true"] .fold-ar{transform:rotate(180deg)}
.pk-allfb:hover .ex-fb{background:rgba(170,140,230,.26)}
@media (min-width:601px){.pk-grid dl.kv{grid-template-columns:1fr;gap:0}.pk-grid dl.kv dt{font-size:13px;margin-top:8px}.pk-grid dl.kv dt:first-child{margin-top:0}}
@media (max-width:600px){.pk-acts.pk-live{grid-template-columns:repeat(6,minmax(0,1fr))}.pk-acts.pk-live .btn{grid-column:span 2;padding:7px 4px;font-size:14px}.pk-acts.pk-live [data-editpk],.pk-acts.pk-live [data-delpk]{grid-column:span 3}}
/* 08 預算 */
.d8g>.card{display:flex;flex-direction:column}
.d8g .d8-sum{margin-top:auto;padding-top:12px}
.grid.d8s{grid-template-columns:1fr 1fr}
@media (min-width:601px){.d8t td:nth-child(n+3),.d8t th:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums}}
@media (max-width:600px){
  #mb-ed .ed-pre,#ex-ed .ed-pre{display:none}
  .tbl.stack.d8t tbody tr:not(:has(th)){display:grid;grid-template-columns:3em 1fr 1fr;gap:4px 12px}
  .tbl.stack.d8t tbody tr:not(:has(th)) td:first-child{grid-column:1/-1}
  .tbl.stack.d8t tbody tr:not(:has(th)) td{display:block;font-variant-numeric:tabular-nums}
  .tbl.stack.d8t tbody tr:not(:has(th)) td:not(:first-child)::before{display:block;width:auto;font-size:12px;margin-bottom:1px}
  .tbl.stack.d8t tbody tr:has(th){display:flex;justify-content:space-between;align-items:baseline;gap:10px}
  .tbl.stack.d8t tbody th::before{display:none}
  .tbl.stack.d8t tbody th:first-child{padding-bottom:2px}
  .tbl.stack.d8t .d8-dash{display:none}
}
/* 09 出發前 */
@media (min-width:861px){dl.kv.vjw-c{grid-template-columns:auto 1fr auto 1fr;column-gap:14px}}
@media (max-width:600px){dl.kv.vjw-f{grid-template-columns:1fr;gap:0}dl.kv.vjw-f dt{font-size:13px;color:var(--soft);margin-top:8px;padding-top:0}dl.kv.vjw-f dt:first-child{margin-top:0}}
.ck-prog{display:flex;align-items:center;gap:12px}
.ck-prog .bar{flex:1;min-width:60px}
.ck-prog .btn{flex:none}
.check:last-child{border-bottom:0}
.check input{appearance:none;-webkit-appearance:none;border:2px solid var(--lilac-d);border-radius:6px;background:var(--card);cursor:pointer;transition:background .15s}
.check input:checked{border-color:transparent;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat,linear-gradient(135deg,var(--pink-d),var(--lilac-d))}
:root[data-theme="dark"] .check input:not(:checked){background:rgba(196,173,245,.14)}
.check input:focus-visible{outline:2px solid var(--lilac-d);outline-offset:2px}
.ck-top{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:0;text-align:left;pointer-events:none}
.ck-grid{margin-top:14px}
.ck-top .fold-ar{display:inline-block;transition:transform .2s}
.ck-top[aria-expanded="true"] .fold-ar{transform:rotate(180deg)}
.ck-n{font-size:13px;font-weight:800;color:var(--soft)}
.ck-top .ex-fb,.ck-ctl{display:none}
@media (max-width:600px){
  .ck-top{pointer-events:auto;cursor:pointer}
  .ck-top .ex-fb{display:inline-flex;margin-left:auto}
  .ck-top:hover .ex-fb{background:rgba(170,140,230,.26)}
  .ck-shut .check{display:none}
  .ck-ctl{display:flex;justify-content:flex-end;margin-top:12px}
  .ck-grid{margin-top:8px}
  .ck-prog{gap:10px}
}
