:root{--paper:#F7F4EB;--ink:#354137;--muted:#7B8178;--line:#E7E7DA;--sage:#668168;--deep:#445E48;--terra:#BD7E62;--sand:#E9D9BD;--white:#fff;--sky:#D7E4E1;--sh:0 10px 34px rgba(65,80,58,.065);--serif:'Noto Serif TC','Songti TC','STSong',Georgia,serif;--sans:'Noto Sans TC','PingFang TC','Microsoft JhengHei',system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{margin:0;background:#e7e7dd;color:var(--ink);font-family:var(--sans)}body{min-height:100svh}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}a:focus-visible,button:focus-visible{outline:3px solid #B88F67;outline-offset:3px}.app{min-height:100svh;max-width:480px;margin:auto;position:relative;background:var(--paper);box-shadow:0 0 54px rgba(24,39,24,.12);overflow:hidden;padding-bottom:calc(92px + env(safe-area-inset-bottom))}.app:before{content:'';pointer-events:none;position:absolute;inset:0;background-image:radial-gradient(#8b967b19 .65px,transparent .65px);background-size:13px 13px;opacity:.42}.app>*{position:relative}.top{padding:31px 22px 13px;display:flex;justify-content:space-between;align-items:center;gap:12px}.kicker{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--sage);font-weight:800}.top h1{font-family:var(--serif);font-size:28px;letter-spacing:.065em;font-weight:750;margin:6px 0 5px;line-height:1.35}.subline{font-size:11px;color:var(--muted);letter-spacing:.02em}.circle-logo{flex:none;width:51px;height:51px;display:grid;place-items:center;border-radius:17px;background:#e9eddf;color:var(--deep);border:1px solid #dde6d7}.icon{width:20px;height:20px;display:inline-block;flex:none;vertical-align:middle;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}.icon.small{width:16px;height:16px}.icon.tiny{width:13px;height:13px}.icon.large{width:25px;height:25px}.main{padding:0 20px 24px;animation:fadein .22s ease both}@keyframes fadein{from{opacity:.5;transform:translateY(5px)}to{opacity:1;transform:none}}.hero{border-radius:23px;background:linear-gradient(140deg,#678477 1%,#294842 85%);height:226px;position:relative;overflow:hidden;box-shadow:var(--sh);color:white}.hero-photo{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;opacity:0;transition:opacity .5s}.hero.has-photo .hero-photo{opacity:.77}.hero:before{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(24,48,39,.87),transparent 70%);z-index:2}.hero-wave{position:absolute;left:-4%;right:-4%;bottom:0;fill:#c4d4c2;opacity:.3;width:108%;height:135px}.hero-skyline{position:absolute;bottom:0;left:0;width:100%;height:126px;opacity:.38;fill:#173a33}.hero.has-photo .hero-wave,.hero.has-photo .hero-skyline{opacity:0}.hero-info{position:absolute;bottom:20px;left:21px;right:21px;z-index:3}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.2em;opacity:.87}.hero-title{font-family:var(--serif);font-size:27px;letter-spacing:.03em;line-height:1.3;font-weight:800;margin:8px 0 8px;text-shadow:0 2px 20px #253b3170}.hero-caption{font-size:12px;line-height:1.65;color:#f8f8efeb}.hero-corner{position:absolute;right:16px;top:15px;z-index:3;border:1px solid #ffffff69;border-radius:50px;background:#00000022;padding:7px 11px;font-size:10px;backdrop-filter:blur(8px)}.section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;margin:22px 2px 12px}.section-title{font-family:var(--serif);font-size:19px;letter-spacing:.04em;font-weight:800;margin:0}.overline{font-size:9px;letter-spacing:.17em;color:var(--sage);font-weight:750;text-transform:uppercase;margin-bottom:5px}.micro{font-size:11px;color:var(--muted)}.daystrip{display:flex;gap:9px;overflow-x:auto;scrollbar-width:none;margin:17px -20px 0;padding:0 20px 5px}.daystrip::-webkit-scrollbar{display:none}.daybtn{border:1px solid var(--line);background:#fffcf7;min-width:66px;padding:11px 8px;border-radius:15px;text-align:center;box-shadow:0 3px 8px #676e5a08;flex-shrink:0}.daybtn .num{font-size:17px;font-weight:750;line-height:1.1;display:block}.daybtn .day{font-size:10px;color:var(--muted);margin-top:6px;display:block}.daybtn.active{background:var(--deep);color:#fff;border-color:var(--deep)}.daybtn.active .day{color:#e2eee0}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.minicard{background:#fff;border:1px solid #eff0e7;border-radius:19px;padding:15px 15px;box-shadow:var(--sh);min-height:97px}.mini-label{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:5px}.mini-strong{font-weight:750;font-size:16px;margin:9px 0 3px}.mini-sub{font-size:10px;color:var(--muted);line-height:1.4}.daypanel{background:white;border:1px solid #eef0e7;border-radius:23px;padding:17px;box-shadow:var(--sh);margin-top:14px}.daytitle{font-family:var(--serif);font-size:19px;font-weight:780;margin:5px 0 3px}.daynote{font-size:11px;color:var(--muted);line-height:1.7;margin:10px 0 6px;padding:10px 11px;background:#f8f7f1;border-left:3px solid #d4be9f;border-radius:0 9px 9px 0}.event{display:grid;grid-template-columns:48px 19px 1fr;gap:7px;align-items:start;padding:13px 0;position:relative}.event:not(:last-child):before{content:'';position:absolute;top:28px;bottom:-13px;left:57px;width:1px;background:#dce5da}.event-time{font-size:11px;font-weight:800;color:var(--deep);padding-top:4px;font-variant-numeric:tabular-nums}.event-dot{width:11px;height:11px;border-radius:50%;border:3px solid var(--sage);background:white;margin:5px 0 0 2px;z-index:1}.event-dot.meal{border-color:var(--terra)}.event-dot.booking{border-color:#C3A34F}.event-title{font-size:13px;font-weight:750;line-height:1.5}.event-titleline{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.event-desc{font-size:11px;line-height:1.6;color:var(--muted);margin:6px 0 0}.cat{font-size:9px;border-radius:7px;padding:3px 6px;display:inline-flex;align-items:center;gap:3px;background:#e8eee5;color:var(--deep);font-weight:800}.cat.meal{background:#f6ebe1;color:#ad7357}.cat.booking{background:#f5efd6;color:#997b35}.cat.hotel{background:#e7edf3;color:#597483}.actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.action{border:1px solid #e3e8df;background:#fbfcf8;color:var(--deep);border-radius:8px;padding:6px 9px;display:inline-flex;gap:5px;align-items:center;font-size:10px;font-weight:750;text-decoration:none}.action:active,.btn:active,.tab:active,.daybtn:active{transform:scale(.97)}.action.primary{background:#e8f0e7;border-color:#d4e3d1}.infohint{font-size:10px;line-height:1.7;color:#89734F;background:#faf4e5;border-radius:10px;padding:10px 12px;margin:12px 0}.toolcall{display:flex;align-items:center;gap:12px;padding:15px 16px;border-radius:19px;background:linear-gradient(120deg,#e7ede2,#f2f1e5);border:1px solid #dfe7d8;margin-top:13px;text-align:left}.toolcall strong{font-size:13px}.toolcall p{font-size:10px;line-height:1.5;color:var(--muted);margin:3px 0 0}.toolcall .icon{color:var(--sage)}.fullbtn{border:0;color:white;background:var(--deep);border-radius:13px;padding:12px 14px;font-weight:800;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.subbtn{border:1px solid #dce3da;background:white;color:var(--deep);border-radius:12px;padding:11px 13px;font-weight:750;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.row{display:flex;align-items:center;justify-content:space-between;gap:8px}.flex{display:flex;gap:9px;align-items:center}.smallmuted{font-size:11px;line-height:1.65;color:var(--muted)}.pill{display:inline-block;font-size:10px;line-height:1.2;background:#e9f0e7;color:#527052;border-radius:50px;font-weight:750;padding:7px 10px}.pill.pending{background:#f5eddd;color:#986c35}.card{padding:16px;border-radius:20px;background:white;border:1px solid #eeefe6;box-shadow:var(--sh);margin:10px 0}.card h3{font-size:15px;font-weight:800;line-height:1.5;margin:0 0 6px}.card p{font-size:11px;line-height:1.75;color:var(--muted);margin:6px 0}.storygrid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:10px}.storytile{padding:0;display:grid;grid-template-columns:106px 1fr;border:1px solid #ebece2;border-radius:18px;background:white;box-shadow:var(--sh);text-align:left;overflow:hidden;min-height:121px;width:100%;color:var(--ink)}.thumb{position:relative;background:linear-gradient(135deg,#b5c5ae,#617d68);overflow:hidden;min-height:115px}.thumb svg{position:absolute;width:70px;height:70px;opacity:.7;left:22px;top:21px}.thumb img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;opacity:0;transition:opacity .3s}.thumb.ready img{opacity:1}.tilecopy{padding:13px 11px}.tilecopy .ey{font-size:9px;letter-spacing:.13em;color:var(--sage);font-weight:800}.tilecopy strong{font-size:14px;line-height:1.48;display:block;margin:7px 0 3px}.tilecopy p{color:var(--muted);font-size:10px;line-height:1.6;margin:0}.progress-label{font-size:10px;font-weight:800;color:var(--sage);margin-top:6px}.back{border:0;background:none;color:var(--deep);font-weight:800;display:flex;align-items:center;gap:5px;padding:8px 0 15px}.storyhero{height:215px;background:linear-gradient(130deg,#819a81,#3c5b4c);border-radius:21px;overflow:hidden;position:relative;color:white}.storyhero img{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s}.storyhero:after{content:'';inset:0;position:absolute;background:linear-gradient(0deg,#24483d95,transparent)}.storyhero .shotlabel{position:absolute;bottom:17px;left:17px;z-index:1;font-size:11px;color:white}.storyhero.nophoto{display:grid;align-items:center;justify-items:center;padding:25px;text-align:center}.storyhero.nophoto .nopic{z-index:1;font-family:var(--serif);letter-spacing:.06em;font-size:15px;color:#f4f2e6}.storyinfo{text-align:left;padding:20px 3px 3px}.storyinfo h2{font-family:var(--serif);font-size:25px;line-height:1.5;letter-spacing:.02em;margin:6px 0 9px}.storyinfo .lead{font-size:13px;line-height:1.85;color:#6e776b;margin:0}.story-chapter{margin:26px 3px 0}.story-chapter h3{font-family:var(--serif);font-size:19px;line-height:1.65;color:#3b5542;letter-spacing:.01em;margin:0 0 14px;padding-left:11px;border-left:3px solid #bca584}.story-chapter p{font-size:14px;line-height:2.15;letter-spacing:.025em;margin:0 0 15px;color:#43483f;text-align:justify;font-family:var(--serif)}.story-sources{background:#f1f1e9;border-radius:17px;padding:18px 17px;margin-top:25px}.source-link{display:block;font-size:11px;line-height:1.5;margin:9px 0;color:#426c53;text-decoration:underline;text-underline-offset:3px}.photo-credit{font-size:10px;line-height:1.7;color:var(--muted);padding:6px 2px}.booking-top{background:linear-gradient(125deg,#4e6c55,#6e8770);color:#fff;border-radius:20px 20px 0 0;padding:16px;display:flex;justify-content:space-between;align-items:center}.booking-top strong{font-family:var(--serif);font-size:17px}.booking-bottom{background:white;border:1px solid #e8ece5;border-radius:0 0 20px 20px;padding:17px;margin-bottom:14px}.detail-row{display:flex;gap:10px;align-items:start;padding:7px 0;font-size:12px;line-height:1.6}.detail-row .icon{color:var(--sage);width:17px;height:17px;margin-top:1px}.stat{font-size:22px;font-weight:850;color:var(--deep)}.input,textarea,select{width:100%;padding:12px 13px;border:1px solid #dfe6dd;background:#fff;border-radius:12px;color:var(--ink);outline:none}.input:focus,textarea:focus,select:focus{border-color:var(--sage);box-shadow:0 0 0 3px #6681681a}textarea{resize:vertical;min-height:98px;line-height:1.6}label{font-size:11px;color:var(--muted);font-weight:800;display:block;margin:9px 0 6px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.expenseitem{display:flex;align-items:center;gap:9px;border-bottom:1px solid #edf0e8;padding:10px 0}.expenseitem:last-child{border-bottom:0}.expenseitem .icon{color:var(--terra)}.exp-am{font-size:13px;font-weight:800;margin-left:auto}.delete{border:0;background:#f7eeeb;color:#ae6d5c;padding:5px;border-radius:7px}.check{display:flex;align-items:center;gap:10px;padding:13px 3px;border-bottom:1px solid #edf0e9;font-size:12px;line-height:1.5;cursor:pointer}.check input{width:18px;height:18px;accent-color:#668168;flex:none}.check.done{color:#a3a79f;text-decoration:line-through}.formactions{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0 0}.empty{font-size:12px;color:var(--muted);line-height:1.85;padding:12px;text-align:center}.bottom{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,480px);z-index:15;display:flex;align-items:stretch;justify-content:space-between;padding:11px 10px calc(8px + env(safe-area-inset-bottom));background:#fffcf6f2;box-shadow:0 -8px 28px rgba(54,68,46,.065);border-top:1px solid #e7e9dc;backdrop-filter:blur(16px)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:0;background:none;color:#97a099;flex:1;min-width:0;padding:4px 0;font-size:10px;font-weight:750;transition:transform .15s}.tab.current{color:var(--deep)}.tab.current .icon{stroke-width:2.5}.tab .icon{width:21px;height:21px}.footnote{font-size:10px;color:#94978d;line-height:1.6;text-align:center;margin:19px 14px}.banner{background:#fff9e9;border:1px solid #f1e7c5;border-radius:15px;padding:12px 14px;font-size:11px;line-height:1.7;color:#836c3c;margin:15px 0}.divider{height:1px;background:#e9eadf;margin:16px 0}.banner.success{background:#ecf4e9;border-color:#d6e9d1;color:#4d7453}.search{padding:12px 14px 12px 41px;background:#fff;border:1px solid #e1e7dd;border-radius:12px;width:100%;font:inherit;font-size:12px}.searchwrap{position:relative}.searchwrap .icon{position:absolute;left:13px;top:11px;color:#91a092}.hidden{display:none!important}.note-area{font-family:var(--sans);font-size:12px}.sup-link{display:inline-flex;gap:5px;align-items:center;color:var(--sage);font-size:11px;text-decoration:none;font-weight:800}.btnrow{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}@media(min-width:700px){body{padding:20px 0}.app{border-radius:29px;min-height:900px}.bottom{bottom:10px;border-radius:0 0 24px 24px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.storyhero.ready img { opacity:1; }

.storyhero.noactual{display:grid;place-items:center;padding:28px;text-align:center}
.storyhero.noactual .nopic{z-index:1;position:relative;color:#f5f4ed;font-family:var(--serif);font-size:15px;line-height:1.8}
.storyhero.noactual .nopic .icon{width:33px;height:33px;display:block;margin:0 auto 13px;opacity:.85}
.storyhero.noactual .nopic p{margin:5px 0;font-weight:700}
.storyhero.noactual .nopic small{font-family:var(--sans);font-size:10px;opacity:.8}
.storyhero.noactual:after{display:none}
.photo-credit strong,.photo-credit span,.photo-credit a{display:block}
.photo-credit a{color:#426c53;text-decoration:underline;text-underline-offset:2px}
