:root{--bg:#f5f3ee;--ink:#14262b;--mute:#66777d;--ac:#0e5a63;--ac2:#0a444b;--gold:#e0a030;--line:#e1ddd2;--card:#fff;--r:16px;
--font:"Noto Sans TC","PingFang TC","Microsoft JhengHei","Heiti TC",system-ui,-apple-system,"Segoe UI",sans-serif;--sh:0 1px 2px #0a2a3010,0 8px 24px -12px #0a2a3030}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--font);padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);-webkit-font-smoothing:antialiased}
h1,h2,h3{line-height:1.25;letter-spacing:-.005em;margin:0}h1{font-size:1.7rem;font-weight:700}
a{color:var(--ac)}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{width:100%;padding:.6em .8em;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--ac);outline-offset:0;border-color:var(--ac)}
button{background:var(--ac);color:#fff;border:0;border-radius:12px;padding:.55em 1.1em;cursor:pointer;font-weight:500;white-space:nowrap}
button:hover{background:var(--ac2)}button:disabled{opacity:.35;cursor:default}
button.ghost{background:transparent;color:var(--ac)}button.ghost:hover{background:#0e5a6314}
button.danger{background:transparent;color:#b3261e}button.danger:hover{background:#b3261e14}
button.sm{padding:.25em .65em;font-size:.88rem;border-radius:10px}
button.primary{background:var(--ac);color:#fff}
:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.hint{color:var(--mute);font-size:.88rem}.sub{color:var(--mute);margin:.2rem 0 0}.err{color:#b3261e;margin:.6rem 0 0;min-height:0}
.err:empty{display:none}

/* 頂欄 */
.top{position:sticky;top:0;z-index:500;background:#f5f3eecc;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .in{max-width:1180px;margin:0 auto;padding:.55rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.8rem}
.top .right{display:flex;align-items:center;gap:.5rem}.top form{margin:0}
.logo{display:inline-flex;align-items:center;gap:.55rem;font-weight:700;font-size:1.1rem;color:var(--ac);text-decoration:none}
.mark{width:28px;height:28px;border-radius:9px;background:var(--ac) radial-gradient(circle at 70% 30%,var(--gold) 0 18%,transparent 19%);position:relative;display:inline-block}
.mark::after{content:"";position:absolute;left:6px;right:6px;bottom:7px;height:8px;border-bottom:2px dashed #fff;border-radius:0 0 50% 50%;opacity:.9}
.back{color:var(--ac);text-decoration:none;font-weight:500;background:none;padding:.3em .2em}
.pill{font-size:.78rem;padding:.15em .7em;border-radius:99px;background:#e3eef0;color:var(--ac);white-space:nowrap}
.pill.off{background:#f6e6d0;color:#8a5a12}.pill.sav{background:#e8eaee;color:var(--mute)}

/* 頁面容器 */
.page{max-width:1180px;margin:0 auto;padding:1.5rem 1rem 3rem}.page.narrow{max-width:680px}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.3rem;flex-wrap:wrap}
.head h1{font-size:clamp(1.7rem,4vw,2.4rem)}
.sec{font-size:1.05rem;color:var(--mute);margin:2rem 0 .8rem;font-weight:500}
.foot{margin-top:3rem;font-size:.85rem;color:var(--mute);text-align:center}.foot a{color:var(--mute)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}

/* 旅行卡片 */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1rem}
a.card{text-decoration:none;color:inherit;overflow:hidden;display:block;transition:transform .15s,box-shadow .15s}
a.card:hover{transform:translateY(-3px);box-shadow:0 14px 30px -14px #0a2a3055}
.cov{height:116px;padding:.9rem 1rem;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;color:#fff;
background:linear-gradient(135deg,hsl(var(--h) 45% 32%),hsl(calc(var(--h) + 40) 50% 22%));position:relative;overflow:hidden}
.cov::after{content:"";position:absolute;right:-30px;bottom:-50px;width:160px;height:160px;border-radius:50%;border:2px dashed #fff3}
.cov .dest{font-size:1.35rem;font-weight:700;z-index:1}
.bdg{font-size:.78rem;background:#ffffff26;padding:.1em .7em;border-radius:99px;z-index:1}
.card .body{padding:.8rem 1rem 1rem}.card .body b{font-size:1.05rem}.meta{color:var(--mute);font-size:.9rem;margin:.1rem 0 0}
.empty{text-align:center;padding:3.5rem 1rem;border:1.5px dashed #cfc9ba;border-radius:20px;background:#ffffff70}
.empty h2{margin:1rem 0 .3rem}.empty p{color:var(--mute);margin:0 0 1.2rem}
.ill{display:flex;justify-content:center;gap:.5rem}.ill span{width:14px;height:14px;border-radius:50%;background:var(--gold)}.ill span:nth-child(2){background:var(--ac)}.ill span:nth-child(3){background:#9bc4c8}

/* 表單 */
.form{padding:1.4rem 1.2rem 1.2rem}.form h1{font-size:1.6rem}
.fld{display:block;margin-top:1rem}.fld>span{display:block;font-size:.86rem;color:var(--mute);margin-bottom:.25rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.grid2 .full{grid-column:1/-1}.fld .grid2{margin-bottom:.1rem}
.chip{margin:.6rem 0;padding:.5em .8em;border-radius:12px;background:#f0efe9;color:var(--mute);font-size:.92rem}.chip.ok{background:#e3f0f1;color:var(--ac2);font-weight:500}
details{margin-top:1.1rem;border-top:1px solid var(--line);padding-top:.7rem}summary{cursor:pointer;color:var(--ac);font-weight:500}
.actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.4rem}.actions .primary{padding:.6em 1.6em}
.dz{margin-top:1.2rem;padding-top:.8rem;border-top:1px solid var(--line)}

/* 搜尋結果 */
.res{list-style:none;padding:0;margin:.4rem 0}
.res li{display:flex;align-items:center;gap:.6rem;justify-content:space-between;padding:.55rem .6rem;border-bottom:1px solid var(--line);cursor:pointer;font-size:.92rem;border-radius:8px}
.res li:hover{background:#0e5a630d}.res li .txt{min-width:0;display:flex;flex-direction:column}.res li small,.place small,.pop small{color:var(--mute);font-size:.8rem;display:block;overflow:hidden;text-overflow:ellipsis}
.res li.attr{cursor:default;color:var(--mute);font-size:.78rem;border:0;background:none}

/* 行程頁 */
.tp{display:flex;flex-direction:column;height:100dvh}.tp .top{position:relative}
.split{flex:1;min-height:0;display:flex;flex-direction:column}
#map{height:38%;min-height:220px;flex:none;cursor:crosshair;background:#dde6e7}
.panel{flex:1;overflow:auto;padding:1rem;background:var(--bg);-webkit-overflow-scrolling:touch}
.nomap{padding:1rem;color:var(--mute)}
.sum{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem}.sum h1{font-size:1.45rem}
.days{display:flex;gap:.4rem;overflow-x:auto;padding:.7rem 0 .5rem;scrollbar-width:none}.days::-webkit-scrollbar{display:none}
.tab{background:#fff;color:var(--ink);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;line-height:1.25;padding:.35em .9em;flex:none}
.tab small{font-size:.74rem;color:var(--mute)}.tab:hover{background:#fff;border-color:var(--ac)}.tab.on,.tab.on:hover{background:var(--ac);color:#fff;border-color:var(--ac)}.tab.on small{color:#ffffffc0}
.search{display:flex;gap:.5rem;margin-top:.3rem}.search input{flex:1}
.place{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:.6rem .7rem;display:grid;grid-template-columns:auto 1fr auto;gap:.2rem .6rem;align-items:center;cursor:pointer;margin-top:.2rem}
.place.hl{border-color:var(--ac);box-shadow:0 0 0 3px #0e5a6322}
.no{width:1.7rem;height:1.7rem;border-radius:50%;background:var(--ac);color:#fff;display:grid;place-items:center;font-size:.82rem;cursor:grab;font-weight:700}
.nm{min-width:0}.nm b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acts{display:flex}
.place .t{grid-column:2/4;display:flex;gap:.5rem;flex-wrap:wrap}.tm{display:flex;align-items:center;gap:.35rem;font-size:.82rem;color:var(--mute)}.tm input{width:auto;padding:.2em .4em;border-radius:8px}
.tr{margin:.1rem 0 .1rem 1.35rem;padding:.25rem 0 .25rem .9rem;border-left:2px dashed #c9d3d4;font-size:.9rem;display:flex;gap:.4rem;flex-wrap:wrap}
.tr>button{padding:.2em .7em;background:#e3eef0;color:var(--ac);font-weight:400}.tr select{width:auto}.tr input{flex:1;min-width:8rem}
.hint-box{margin-top:.8rem;padding:1.2rem;text-align:center;color:var(--mute);border:1.5px dashed #cfc9ba;border-radius:14px}
.pin{background:var(--ac);color:#fff;border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font-size:13px;font-weight:700;border:2px solid #fff;box-shadow:0 1px 5px #0006}.pin.hl{background:var(--gold);color:#14262b;transform:scale(1.2)}
.pop{display:flex;flex-direction:column;gap:.35rem;min-width:150px;font-family:var(--font)}.pop button{align-self:flex-start;margin-top:.2rem}
.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 1.5rem);transform:translateX(-50%);background:var(--ink);color:#fff;padding:.6em 1.1em;border-radius:99px;z-index:2000;font-size:.9rem;max-width:90vw}
@media(min-width:900px){
 .split{flex-direction:row}#map{height:auto;flex:1}.panel{order:-1;flex:none;width:470px;border-right:1px solid var(--line);padding:1.2rem 1.3rem}
 .page{padding:2.2rem 1.5rem 4rem}.form{padding:2rem 2rem 1.6rem}
}

/* 登入首頁 */
.landing .nav{position:sticky;top:0;z-index:50;background:#f5f3eecc;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.in{max-width:1180px;margin:0 auto;padding:0 1.25rem}
.nav .in{display:flex;align-items:center;justify-content:space-between;height:60px}
.landing .logo{cursor:default}
.nav .btn{background:var(--ac);color:#fff;text-decoration:none;padding:.45em 1.1em;border-radius:99px;font-weight:500;font-size:.95rem}
.hero2 .in{display:grid;gap:2rem;padding-top:1.5rem;padding-bottom:2.5rem}
.eyebrow{display:inline-block;background:#e3f0f1;color:var(--ac2);font-weight:500;font-size:.85rem;padding:.2em .9em;border-radius:99px;margin:0 0 1rem}
.hero2 h1{font-size:clamp(2.3rem,8vw,4rem);line-height:1.12;letter-spacing:-.02em;font-weight:700}
.hero2 h1 em{font-style:normal;color:var(--ac);background:linear-gradient(transparent 62%,#e0a03055 0)}
.lead{font-size:1.1rem;color:#44585e;margin:1.1rem 0 1.6rem;max-width:30em}
.gbtn{display:inline-flex;align-items:center;gap:.7rem;background:#fff;color:#1f2a2e;border:1px solid #d3d9d8;border-radius:14px;padding:.85em 1.5em;font-weight:600;text-decoration:none;box-shadow:var(--sh);transition:transform .15s,border-color .15s}
.gbtn:hover{border-color:var(--ac);transform:translateY(-1px)}
.cta-note{font-size:.88rem;color:var(--mute);margin:.9rem 0 0}
.hero{margin:0;background:var(--ac);border-radius:28px;box-shadow:0 30px 60px -30px #0a3d44aa;overflow:hidden;max-width:460px;width:100%;justify-self:center}
.hero svg{display:block;width:100%;height:auto}
.hero text{font-family:var(--font)}
.hero .n{font-weight:700;font-size:11px;fill:#0a2a30}.hero .pl{font-weight:700;font-size:16px;fill:#fff}.hero .tm{font-weight:500;font-size:12px;fill:#bcdadd}
.hero .route{stroke-dashoffset:1;animation:draw 2.4s .3s cubic-bezier(.5,0,.3,1) forwards}.hero .stop{opacity:0;animation:pop .45s ease-out forwards}
@keyframes draw{to{stroke-dashoffset:0}}@keyframes pop{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.hero .route{animation:none;stroke-dashoffset:0}.hero .stop{animation:none;opacity:1}}
.feat{display:grid;gap:1rem;padding-top:1rem;padding-bottom:1rem}
.fc{background:#fff;border:1px solid var(--line);border-radius:20px;padding:1.4rem;box-shadow:var(--sh)}
.fc .ic{width:44px;height:44px;border-radius:14px;background:#e3f0f1;color:var(--ac);display:grid;place-items:center;margin-bottom:.9rem}
.fc h3{font-size:1.1rem;margin-bottom:.35rem}.fc p{margin:0;color:#4a5e64;font-size:.96rem}
.how{padding-top:3rem;padding-bottom:1rem}.how h2{font-size:clamp(1.5rem,4vw,2.1rem);margin-bottom:1.4rem}
.steps{display:grid;gap:1rem;list-style:none;padding:0;margin:0;counter-reset:s}
.steps li{counter-increment:s;position:relative;padding:1.2rem 1.2rem 1.2rem 4rem;background:#ffffff90;border:1px solid var(--line);border-radius:18px}
.steps li::before{content:counter(s);position:absolute;left:1.1rem;top:1.1rem;width:2.1rem;height:2.1rem;border-radius:50%;background:var(--gold);color:#14262b;font-weight:700;display:grid;place-items:center}
.steps b{display:block}.steps span{color:#4a5e64;font-size:.95rem}
.band{margin:3rem auto 0;max-width:1180px;padding:0 1.25rem}.band .box{background:var(--ac);color:#fff;border-radius:28px;padding:2.2rem 1.5rem;text-align:center}
.band h2{font-size:clamp(1.5rem,4vw,2.2rem);margin-bottom:1.2rem}
.landing footer{max-width:1180px;margin:0 auto;padding:2rem 1.25rem 2.5rem;color:var(--mute);font-size:.85rem;display:flex;gap:1rem;flex-wrap:wrap;justify-content:space-between}.landing footer a{color:var(--mute)}
@media(min-width:760px){.feat{grid-template-columns:repeat(2,1fr)}.steps{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1000px){
 .hero2 .in{grid-template-columns:1.1fr .9fr;align-items:center;gap:4rem;padding-top:3.5rem;padding-bottom:4rem}
 .feat{grid-template-columns:repeat(4,1fr)}.hero{justify-self:end}
}
.doc{font-family:var(--font)}
.tp .top .in{max-width:none}
.empty p,.lead,.fc p{text-wrap:pretty}
