:root{--sea: #0e7490;--sea-deep: #0c4a6e;--sea-soft: #e0f2f7;--sand: #fff7e6;--coral: #f97316;--bg: #eef6f9;--ink: #0f172a;--muted: #5b7280;--line: #d5e5ec;--card: #ffffff;--radius: 16px;--shadow: 0 1px 2px rgba(12, 74, 110, .06), 0 10px 24px -16px rgba(12, 74, 110, .45)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,PingFang TC,Microsoft JhengHei,Hiragino Sans,sans-serif;line-height:1.65;font-size:15px}h1,h2,h3,h4{margin:0;line-height:1.35}a{color:var(--sea)}img{display:block;max-width:100%}.page{max-width:940px;margin:0 auto;padding:0 16px 72px}.hero{background:linear-gradient(135deg,var(--sea-deep) 0%,var(--sea) 55%,#22a3b8 100%);color:#fff;border-radius:0 0 26px 26px;padding:28px 22px 26px;margin:0 -16px 4px;box-shadow:0 18px 34px -24px #0c4a6ee6}.hero__badge{display:inline-block;font-size:12px;letter-spacing:.08em;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:3px 12px;margin-bottom:12px}.hero h1{font-size:clamp(20px,5.4vw,28px);font-weight:800;letter-spacing:.01em}.hero__dates{margin:8px 0 0;font-size:14px;opacity:.9}.hero__status-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}.hero__status{margin:0;font-size:14px;font-weight:600}.hero__status--live{display:inline-block;background:var(--coral);border-radius:999px;padding:4px 14px}.hero__link,.hero__btn{font:inherit;font-size:12.5px;font-weight:700;text-decoration:none;color:#fff;background:#ffffff2e;border:1px solid rgba(255,255,255,.45);border-radius:999px;padding:4px 13px;white-space:nowrap}.hero__link{margin-left:auto}.hero__link:hover,.hero__btn:hover{background:#ffffff52}.hero__btn{cursor:pointer}.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.hero__actions .hero__link{margin-left:0}.progress{margin-top:14px}.progress__bar{height:8px;border-radius:999px;background:#ffffff40;overflow:hidden}.progress__bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7dd3fc,#fbbf24);transition:width .25s ease}.progress__text{margin:7px 0 0;font-size:12.5px;opacity:.95}.tabs{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:10px 0;background:#eef6f9e6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tab{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:9px 4px 8px;border:1px solid var(--line);border-radius:13px;background:var(--card);color:var(--muted);font:inherit;cursor:pointer;transition:transform .12s ease,background .15s ease,color .15s ease}.tab:hover{transform:translateY(-1px)}.tab__day{font-size:13px;font-weight:800;letter-spacing:.02em}.tab__date{font-size:11.5px;white-space:nowrap}.tab.is-active{background:linear-gradient(160deg,var(--sea) 0%,var(--sea-deep) 100%);border-color:var(--sea-deep);color:#fff;box-shadow:0 10px 20px -12px #0c4a6ef2}.tab__today{position:absolute;top:-7px;right:-4px;background:var(--coral);color:#fff;font-size:10px;font-weight:800;border-radius:999px;padding:1px 7px;box-shadow:0 2px 6px #f9731680}.tab--info{background:linear-gradient(160deg,#fff,#e6f4fa);border-color:#bfe3ee;color:var(--sea)}.content{padding-top:14px}.day-head h2{font-size:clamp(18px,4.6vw,23px);font-weight:800}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.chip{background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:12.5px;color:var(--sea-deep)}.day-nav{display:flex;gap:8px;margin-top:14px}.day-nav button{flex:1;padding:9px 10px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--sea-deep);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.day-nav button:disabled{opacity:.38;cursor:not-allowed}.day-nav__today{background:var(--coral)!important;border-color:var(--coral)!important;color:#fff!important}.section-title{margin:26px 0 12px;font-size:13px;font-weight:800;letter-spacing:.12em;color:var(--muted);display:flex;align-items:center;gap:10px}.section-title:after{content:"";flex:1;height:1px;background:var(--line)}.timeline{list-style:none;margin:0;padding:0}.tl-item{--kind: var(--sea);display:grid;grid-template-columns:62px 34px minmax(0,1fr);gap:0 8px}.tl-time{padding-top:15px;text-align:right;font-size:13px;font-weight:800;color:var(--sea-deep);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.tl-rail{position:relative;display:flex;justify-content:center}.tl-rail:before{content:"";position:absolute;left:50%;transform:translate(-50%);top:0;bottom:0;width:2px;background:var(--line)}.tl-item:first-child .tl-rail:before{top:22px}.tl-item:last-child .tl-rail:before{bottom:auto;height:22px}.tl-dot{position:relative;z-index:1;margin-top:15px;width:28px;height:28px;border-radius:50%;background:#fff;border:2px solid var(--kind);display:grid;place-items:center;font-size:13px;box-shadow:0 2px 6px #0f172a14}.tl-body{background:var(--card);border-radius:14px;border-left:3px solid var(--kind);box-shadow:var(--shadow);padding:11px 14px 13px;margin:8px 0 14px}.tl-body h4{font-size:15.5px;font-weight:700}.tl-detail{margin:5px 0 0;font-size:13.5px;color:var(--muted)}.tl-item[data-kind=flight]{--kind: #6366f1}.tl-item[data-kind=transport]{--kind: #0891b2}.tl-item[data-kind=hotel]{--kind: #8b5cf6}.tl-item[data-kind=food]{--kind: #f59e0b}.tl-item[data-kind=sight]{--kind: #10b981}.tl-item[data-kind=shopping]{--kind: #ec4899}.tl-item[data-kind=note]{--kind: #94a3b8}.links{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}.links a{font-size:12.5px;font-weight:600;text-decoration:none;background:var(--sea-soft);border:1px solid #bfe3ee;border-radius:999px;padding:3px 11px}.links a:hover{background:#cfeaf4}.photos{display:grid;gap:12px;margin-top:12px}.photo{margin:0}.photo img{width:100%;max-height:340px;object-fit:contain;background:#f8fbfc;border:1px solid var(--line);border-radius:12px;cursor:zoom-in}.photo figcaption{font-size:12px;color:var(--muted);margin-top:5px}.refs{display:grid;gap:10px}.ref{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.ref>summary{cursor:pointer;padding:13px 16px;font-weight:700;font-size:14.5px;color:var(--sea-deep);list-style:none;display:flex;align-items:center;gap:8px}.ref>summary::-webkit-details-marker{display:none}.ref>summary:before{content:"\25b8";color:var(--sea);transition:transform .15s ease}.ref[open]>summary:before{transform:rotate(90deg)}.ref__body{padding:14px 16px 16px;border-top:1px solid var(--line)}.ref--plain>.ref__body{border-top:0;padding-top:4px;padding-bottom:10px}.kv{margin:0}.kv__row{display:grid;grid-template-columns:34% minmax(0,1fr);gap:10px;padding:7px 0;border-bottom:1px dashed var(--line)}.kv__row:last-child{border-bottom:0}.kv dt{font-weight:700;font-size:13px;color:var(--sea-deep)}.kv dd{margin:0;font-size:13.5px;color:var(--ink)}.bullets{margin:12px 0 0;padding-left:20px;font-size:13.5px;color:var(--ink)}.bullets li{margin-bottom:7px}.bullets li:last-child{margin-bottom:0}.transit{list-style:none;margin:0;padding:0;display:grid;gap:8px}.transit__item{--role: var(--sea);display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:start;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--role);border-radius:12px;box-shadow:var(--shadow);padding:10px 13px}.transit__role{font-size:11.5px;font-weight:800;color:var(--role);background:#f2f8fa;border-radius:7px;padding:3px 0;text-align:center;letter-spacing:.02em}.transit__body strong{display:block;font-size:14.5px;line-height:1.45}.transit__detail{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}.transit__map{display:inline-block;margin-top:7px;font-size:12px;font-weight:600;text-decoration:none;background:var(--sea-soft);border:1px solid #bfe3ee;border-radius:999px;padding:2px 11px}.transit__item[data-role=\51fa\767c]{--role: #6366f1}.transit__item[data-role=\62b5\9054]{--role: #0e7490}.transit__item[data-role=\4e0a\8eca]{--role: #10b981}.transit__item[data-role=\4e0b\8eca]{--role: #f97316}.transit__item[data-role=\56de\7a0b]{--role: #ec4899}.transit__item[data-role=\8f49\4e58]{--role: #0891b2}.transit__item[data-role=\6b65\884c]{--role: #94a3b8}.transit__item[data-role=\55ae\8ecc]{--role: #8b5cf6}.transit__item[data-role=\8a08\7a0b\8eca]{--role: #f59e0b}.pack{list-style:none;margin:0;padding:0;display:grid;gap:6px}.pack__item{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);transition:background .15s ease,border-color .15s ease}.pack__item label{display:flex;align-items:flex-start;gap:10px;padding:10px 13px;cursor:pointer}.pack__item input{flex:0 0 auto;width:19px;height:19px;margin:2px 0 0;accent-color:var(--sea);cursor:pointer}.pack__text{display:flex;flex-direction:column;gap:2px;min-width:0}.pack__label{font-size:14.5px;line-height:1.5}.pack__note{font-size:12px;color:var(--muted)}.pack__item.is-done{background:#f2faf6;border-color:#cdeadf}.pack__item.is-done .pack__label{text-decoration:line-through;color:var(--muted)}.footer{margin-top:34px;text-align:center;font-size:12px;color:var(--muted)}.footer code{background:#fff;border:1px solid var(--line);border-radius:6px;padding:1px 6px}.footer__links{margin-top:8px}.footer__links a{font-weight:700;text-decoration:none}.lightbox{position:fixed;inset:0;z-index:100;background:#061e2ae6;display:grid;place-content:center;justify-items:center;gap:12px;padding:20px;cursor:zoom-out;animation:fade .15s ease}.lightbox img{max-width:94vw;max-height:80vh;border-radius:10px;background:#fff}.lightbox p{margin:0;color:#fff;font-size:13px;text-align:center;max-width:90vw}@keyframes fade{0%{opacity:0}}@media(max-width:420px){.tabs{gap:4px}.tab{padding:7px 2px 6px;border-radius:11px}.tab__day{font-size:12px}.tab__date{font-size:10.5px}.tl-item{grid-template-columns:54px 30px minmax(0,1fr)}.kv__row{grid-template-columns:minmax(0,1fr);gap:2px}.kv dt{color:var(--sea-deep)}}@media(max-width:360px){.tabs{gap:3px}.tab{padding:6px 1px 5px}.tab__day{font-size:11px}.tab__date{font-size:9.5px}.tab__today{font-size:9px;padding:0 5px}}
