:root{--ink:#18332f;--paper:#f4f1e9;--cream:#fffdf7;--green:#153b36;--sage:#b9c8b6;--orange:#e87945;--line:#d9ddd2;--muted:#6f7d78;--shadow:0 14px 40px rgba(24,51,47,.11)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;padding-bottom:84px}.hero{min-height:590px;color:#fff;padding:22px 22px 30px;background:linear-gradient(180deg,rgba(11,38,34,.16),rgba(11,38,34,.88)),url("assets/phuket.jpg") center/cover;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center}.brand,.kicker{font-size:11px;font-weight:800;letter-spacing:.18em}.icon-button{border:1px solid rgba(255,255,255,.45);background:rgba(255,255,255,.12);color:#fff;border-radius:50%;width:42px;height:42px;font-size:22px}.hero-copy{margin:auto 0 40px}.eyebrow{font-size:13px;letter-spacing:.08em}.hero h1{font-family:Georgia,"Songti SC",serif;font-weight:500;font-size:48px;line-height:1.05;margin:14px 0 20px;letter-spacing:-.03em}.hero h1 em{color:#ebac6d;font-style:italic}.hero-copy>p:last-child{font-size:14px;line-height:1.8;color:rgba(255,255,255,.82)}.trip-glance{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid rgba(255,255,255,.3);padding-top:18px}.trip-glance div{display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.25);padding-left:12px}.trip-glance div:first-child{padding-left:0}.trip-glance div:last-child{border:0}.trip-glance strong{font-family:Georgia,serif;font-size:22px}.trip-glance span{font-size:10px;color:rgba(255,255,255,.7);margin-top:3px}.section{padding:46px 20px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:25px}.section-heading h2{font-family:Georgia,"Songti SC",serif;font-size:29px;font-weight:500;margin:5px 0 0}.kicker{color:var(--orange)}.filter-button,.status-pill{border:0;background:#e2e8df;color:var(--green);padding:8px 12px;border-radius:999px;font-size:11px;font-weight:700}.route-strip{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);margin:0 4px 28px}.route-strip i{height:1px;background:#bdc7bc;flex:1;margin:0 7px;position:relative}.route-strip i:after{content:"";position:absolute;right:-1px;top:-2px;width:5px;height:5px;border-radius:50%;background:var(--orange)}.itinerary-list{display:grid;gap:22px}.day-card{background:var(--cream);border-radius:5px;overflow:hidden;box-shadow:var(--shadow);cursor:pointer}.day-image{height:180px;background-size:cover;background-position:center;position:relative}.day-badge{position:absolute;top:14px;left:14px;background:var(--orange);color:#fff;padding:7px 10px;font-family:Georgia,serif;font-size:12px;letter-spacing:.08em}.day-weather{position:absolute;right:14px;bottom:12px;background:rgba(20,45,41,.82);color:#fff;padding:6px 10px;border-radius:20px;font-size:11px}.day-body{padding:19px 18px 20px}.day-meta{font-size:11px;color:var(--orange);font-weight:800;letter-spacing:.08em}.day-body h3{font-family:Georgia,"Songti SC",serif;font-size:23px;margin:7px 0 8px;font-weight:500}.day-body p{font-size:13px;color:var(--muted);line-height:1.7;margin:0}.day-footer{display:flex;justify-content:space-between;border-top:1px solid #ebece6;margin-top:15px;padding-top:13px;font-size:11px;color:var(--muted)}.budget{background:var(--green);color:#fff}.section-heading.light .kicker{color:#e8a66a}.section-heading.light h2{color:#fff}.status-pill{background:rgba(255,255,255,.12);color:#fff}.status-pill.dark{background:#d8e2d8;color:var(--green)}.budget-total{border:1px solid rgba(255,255,255,.16);padding:20px;margin-bottom:16px}.budget-total span,.budget-total small{display:block;color:rgba(255,255,255,.62);font-size:11px}.budget-total strong{display:block;font-family:Georgia,serif;color:#efb27b;font-size:29px;margin:7px 0}.budget-list{display:grid;gap:1px;background:rgba(255,255,255,.12)}.budget-row{display:grid;grid-template-columns:1fr auto;background:var(--green);padding:15px 4px}.budget-row span{font-size:13px}.budget-row strong{font-family:Georgia,serif;font-weight:500;color:#f2d1b4}.task-list{display:grid;gap:10px}.task{display:flex;gap:12px;align-items:center;background:var(--cream);padding:15px;border-radius:4px}.task input{appearance:none;width:21px;height:21px;border:1px solid #9bab9d;border-radius:50%;flex:0 0 auto}.task input:checked{border:6px solid var(--orange);background:#fff}.task span{font-size:13px;line-height:1.5}.task.done span{text-decoration:line-through;color:#9aa49f}.progress-text{font-size:12px;color:var(--muted)}.notes{background:#dfe6dc}.note-form{background:var(--cream);padding:16px;box-shadow:var(--shadow)}.note-form select,.note-form textarea,.note-form input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;padding:12px 4px;font:inherit;color:var(--ink);outline:none}.note-form textarea{resize:vertical}.form-row{display:flex;gap:12px;align-items:end}.form-row input{flex:1}.form-row button{border:0;background:var(--orange);color:#fff;padding:12px 18px;border-radius:2px;font-weight:700;white-space:nowrap}.note-list{display:grid;gap:10px;margin-top:16px}.note{background:rgba(255,255,255,.7);padding:14px}.note-head{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:7px}.note p{font-size:13px;line-height:1.6;margin:0}.bottom-nav{position:fixed;z-index:10;bottom:0;left:0;right:0;height:68px;padding-bottom:env(safe-area-inset-bottom);background:rgba(255,253,247,.94);backdrop-filter:blur(14px);display:flex;justify-content:space-around;border-top:1px solid #e3e4dd}.bottom-nav a{color:#8a948f;text-decoration:none;font-size:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:58px}.bottom-nav a span{font-size:18px}.bottom-nav a.active{color:var(--orange)}dialog{width:min(92vw,560px);max-height:86vh;border:0;padding:0;background:var(--cream);color:var(--ink);box-shadow:0 30px 90px rgba(0,0,0,.3)}dialog::backdrop{background:rgba(8,27,24,.72);backdrop-filter:blur(4px)}.dialog-close{position:absolute;z-index:2;right:13px;top:13px;width:36px;height:36px;border:0;border-radius:50%;background:rgba(255,255,255,.92);font-size:25px}.detail-image{height:230px;background-size:cover;background-position:center}.detail-body{padding:23px}.detail-body h2{font-family:Georgia,"Songti SC",serif;font-weight:500;font-size:28px;margin:8px 0}.detail-body>p{font-size:13px;color:var(--muted);line-height:1.8}.timeline{margin-top:22px;border-left:1px solid var(--sage);padding-left:19px}.timeline-item{position:relative;margin:0 0 20px}.timeline-item:before{content:"";position:absolute;left:-24px;top:4px;width:9px;height:9px;border-radius:50%;background:var(--orange);border:2px solid var(--cream)}.timeline-item time{font-size:11px;color:var(--orange);font-weight:800}.timeline-item h4{font-size:14px;margin:4px 0}.timeline-item p{font-size:12px;color:var(--muted);line-height:1.6;margin:0}.safety{background:#edf1e9;padding:14px;font-size:12px;line-height:1.7;margin-top:18px}.toast{position:fixed;z-index:30;bottom:90px;left:50%;transform:translate(-50%,20px);background:#152b28;color:#fff;padding:10px 17px;border-radius:30px;font-size:12px;opacity:0;transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:720px){body{max-width:1100px;margin:auto;box-shadow:0 0 60px rgba(0,0,0,.08)}.hero{min-height:680px;padding:28px 50px}.hero h1{font-size:68px}.section{padding:64px 50px}.itinerary-list{grid-template-columns:repeat(2,1fr)}.day-image{height:230px}.bottom-nav{left:50%;transform:translateX(-50%);max-width:1100px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.friend-note{border-left:3px solid var(--sage)}.friend-note.caution{background:#fff2e8;color:#7b442d;border-left-color:var(--orange)}

/* 多人旅行记账 */
.bottom-nav{padding-left:4px;padding-right:4px}.bottom-nav a{flex:1;min-width:0;padding:5px 2px}.bottom-nav a span{font-family:Georgia,"Times New Roman","Songti SC",serif;font-size:18px;font-weight:500;line-height:1;color:inherit;font-variant-emoji:text}.food-page .bottom-nav a,.ledger-page .bottom-nav a{min-width:0}
.bottom-nav a .nav-icon{width:20px;height:20px;display:grid;place-items:center}.bottom-nav a .nav-icon svg{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.ledger-page{background:#e9eee8;padding-bottom:92px}.ledger-header{min-height:250px;padding:22px 20px 38px;color:#fff;background:linear-gradient(145deg,#0d2d29,#1f5b50);display:flex;flex-direction:column;justify-content:space-between}.ledger-header .topbar a{color:#fff;text-decoration:none;font-size:13px}.ledger-header .brand{color:rgba(255,255,255,.78)}.ledger-header h1{font-family:Georgia,"Songti SC",serif;font-size:43px;font-weight:500;margin:8px 0 6px}.ledger-header p{margin:0;color:rgba(255,255,255,.72);font-size:14px}.ledger-main{padding:0 20px 44px;margin-top:-24px;position:relative}.ledger-summary{display:grid;grid-template-columns:1fr 1fr;background:var(--cream);box-shadow:var(--shadow);border-radius:8px;overflow:hidden;margin-bottom:18px}.ledger-summary div{padding:18px;border-bottom:1px solid var(--line)}.ledger-summary div:nth-child(odd){border-right:1px solid var(--line)}.ledger-summary div:last-child{grid-column:1/-1;border-bottom:0;border-right:0}.ledger-summary span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.ledger-summary strong{font-family:Georgia,serif;font-size:24px;font-weight:500}.ledger-panel{background:var(--cream);padding:20px;margin-top:16px;border-radius:8px;box-shadow:0 8px 24px rgba(24,51,47,.08)}.ledger-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.ledger-title h2{font-family:Georgia,"Songti SC",serif;font-size:25px;font-weight:500;margin:4px 0 0}.expense-form{display:grid;gap:15px}.expense-form label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:700}.expense-form input,.expense-form select{width:100%;border:1px solid var(--line);background:#faf9f4;color:var(--ink);border-radius:5px;padding:12px;font:inherit;outline:none}.expense-form input:focus,.expense-form select:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(232,121,69,.12)}.money-input{display:grid;grid-template-columns:115px 1fr}.money-input select{border-radius:5px 0 0 5px;border-right:0}.money-input input{border-radius:0 5px 5px 0;font-size:19px;font-weight:700}.expense-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.expense-submit{border:0;border-radius:5px;background:var(--orange);color:#fff;padding:14px;font-size:14px;font-weight:800}.expense-submit:disabled{opacity:.55}.category-summary{display:grid;gap:1px;background:var(--line)}.category-summary>div{display:flex;justify-content:space-between;align-items:center;background:var(--cream);padding:12px 4px}.category-summary span{font-size:14px}.category-summary small{margin-left:8px;color:var(--muted);font-size:10px}.category-summary strong{font-family:Georgia,serif;font-size:16px}.expense-list{display:grid;gap:1px;background:var(--line)}.expense-item{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;align-items:center;background:var(--cream);padding:13px 2px}.expense-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e4ebe2;color:var(--green);font-size:16px}.expense-detail{min-width:0}.expense-detail strong,.expense-detail span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expense-detail strong{font-size:14px}.expense-detail span{font-size:11px;color:var(--muted);margin-top:4px}.expense-value{text-align:right}.expense-value strong{display:block;font-family:Georgia,serif;font-size:16px}.expense-value button{border:0;background:none;color:#a26047;padding:5px 0 0;font-size:10px}.empty-expenses{background:var(--cream);color:var(--muted);font-size:13px;line-height:1.7;margin:0;padding:18px 4px}.ledger-page .bottom-nav a{min-width:44px}@media(min-width:720px){.ledger-header{padding:28px 50px 48px;min-height:300px}.ledger-main{padding-left:50px;padding-right:50px}.ledger-summary{grid-template-columns:repeat(3,1fr)}.ledger-summary div,.ledger-summary div:last-child{grid-column:auto;border-bottom:0;border-right:1px solid var(--line)}.ledger-summary div:last-child{border-right:0}.expense-form{grid-template-columns:1fr 1fr}.expense-form>label:first-child,.expense-form>label:last-of-type,.expense-submit{grid-column:1/-1}}
.attraction-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px}.attraction-chips span,.detail-attractions span{background:#edf1e9;color:var(--green);padding:5px 8px;border-radius:20px;font-size:10px}.detail-attractions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:16px 0 4px}.detail-attractions strong{width:100%;font-size:11px;color:var(--orange);letter-spacing:.08em}.budget-extra{background:rgba(255,255,255,.08);padding:14px 16px;margin:-6px 0 18px}.budget-extra span,.budget-extra small{display:block;color:rgba(255,255,255,.62);font-size:11px}.budget-extra strong{display:block;color:#fff;font-size:18px;margin:5px 0}.budget-row{grid-template-columns:minmax(0,1fr) auto;gap:14px}.budget-row small{display:block;color:rgba(255,255,255,.52);font-size:10px;line-height:1.55;margin-top:5px}.budget-row strong{white-space:nowrap}.task{display:block;align-items:initial}.task label{display:flex;gap:12px;align-items:center}.task span{font-weight:700;font-size:14px}.task>p{margin:10px 0 0 33px;color:var(--muted);font-size:12px;line-height:1.7}.task a{color:var(--orange);font-weight:700;text-decoration:none}.task.done label span{text-decoration:line-through;color:#9aa49f}.task.done>p{text-decoration:none;color:var(--muted)}

/* 独立美食页 */
.food-page{padding-bottom:92px}.food-hero{min-height:310px;padding:22px 20px 34px;color:#fff;background:linear-gradient(180deg,rgba(10,35,31,.25),rgba(10,35,31,.92)),url("assets/phuket.jpg") center/cover;display:flex;flex-direction:column}.food-hero .topbar a{color:#fff;text-decoration:none;font-size:13px}.food-hero-copy{margin:auto 0 0}.food-hero h1{font-family:Georgia,"Songti SC",serif;font-size:44px;line-height:1.08;font-weight:500;margin:12px 0}.food-hero p{font-size:13px;line-height:1.7;color:rgba(255,255,255,.78);margin:0}.city-tabs{position:sticky;top:0;z-index:5;display:flex;gap:8px;overflow-x:auto;padding:13px 20px;background:rgba(244,241,233,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);scrollbar-width:none}.city-tabs::-webkit-scrollbar{display:none}.city-tabs a{flex:0 0 auto;color:var(--muted);text-decoration:none;font-size:12px;font-weight:700;padding:8px 13px;border-radius:999px;background:var(--cream)}.city-tabs a:hover,.city-tabs a:focus{color:#fff;background:var(--orange)}.food-city{padding:38px 20px 6px;scroll-margin-top:66px}.food-city-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.food-city-head h2{font-family:Georgia,"Songti SC",serif;font-size:28px;font-weight:500;margin:5px 0 0}.food-city-head span:last-child{font-size:11px;color:var(--muted)}.food-grid{display:grid;gap:18px}.food-card{overflow:hidden;background:var(--cream);box-shadow:var(--shadow);border-radius:6px}.food-photo{position:relative;height:190px;overflow:hidden;background:#d8dfd4}.food-photo img{width:100%;height:100%;object-fit:cover;display:block}.food-photo small{position:absolute;right:10px;bottom:9px;background:rgba(21,59,54,.82);color:#fff;padding:5px 8px;border-radius:20px;font-size:9px}.food-card-body{padding:18px}.food-label{color:var(--orange);font-size:10px;font-weight:800;letter-spacing:.12em}.food-card h3{font-family:Georgia,"Songti SC",serif;font-size:22px;font-weight:500;margin:7px 0}.food-card p{color:var(--muted);font-size:12px;line-height:1.7;margin:0 0 14px}.food-address{display:flex;align-items:flex-start;gap:9px;padding-top:13px;border-top:1px solid #ebece6;color:var(--ink);font-size:12px;line-height:1.5}.food-address a{color:inherit;text-decoration:none}.food-address a:hover{text-decoration:underline}.friend-note{margin-top:11px;padding:10px 12px;background:#edf1e9;color:var(--green);font-size:11px;line-height:1.6}.food-disclaimer{margin:34px 20px 0;padding:16px;border:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.7}.food-page .bottom-nav a{min-width:48px}@media(min-width:720px){.food-hero{min-height:430px;padding:28px 50px 46px}.food-hero h1{font-size:62px}.city-tabs{padding-left:50px;padding-right:50px}.food-city{padding:54px 50px 8px}.food-grid{grid-template-columns:repeat(2,1fr)}.food-photo{height:240px}.food-disclaimer{margin:40px 50px 0}}

/* Mobile viewport containment: long shared links must never widen the page. */
html,body{max-width:100%;overflow-x:hidden}.hero,main,.section,.itinerary-list,.budget-list,.task-list,.note-list,.note,.task,.budget-row{min-width:0;max-width:100%}.note p,.note a,.task p,.task a,.budget-row div{overflow-wrap:anywhere;word-break:break-word}.note-source{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px}.note-source a{color:var(--orange);font-size:12px;font-weight:700;text-decoration:none}.note-source-status{display:inline-flex;padding:4px 8px;border-radius:999px;background:#dce8dd;color:var(--green);font-size:10px;font-weight:700}.note-source-status.pending{background:#fff0e7;color:#94502f}@media(max-width:719px){.budget-row strong{white-space:normal;text-align:right}.section-heading{min-width:0;gap:12px}.section-heading>div{min-width:0}.bottom-nav{width:100%;max-width:100vw}}

.hero{min-height:350px}.hero-copy{margin:35px 0}.hero h1{font-size:48px}.trip-glance{grid-template-columns:repeat(3,1fr)}.day-card{cursor:default}.day-body p,.food-card p,.expense-form label,.expense-form input,.expense-form select{font-size:16px}.bottom-nav a,.city-tabs a,.day-meta,.day-footer,.food-label,.food-address,.ledger-summary span,.expense-detail span{font-size:14px}.food-hero{min-height:300px}.day-edit{border:0;background:transparent;color:var(--orange);font:inherit;cursor:pointer}.plan-form{padding:28px;display:grid;gap:16px}.plan-form input,.plan-form textarea{width:100%;padding:12px;font:inherit;border:1px solid var(--line)}.plan-form label{display:grid;gap:8px}.plan-form button{padding:12px;font:inherit}.local-note{color:var(--muted);font-size:14px;line-height:1.7}.food-card h3,.expense-detail strong{overflow-wrap:anywhere}.expense-detail strong,.expense-detail span{white-space:normal}.expense-value button{font-size:14px}.brand{font-size:12px}.day-body{min-height:200px}button,a,input,select{touch-action:manipulation}button:focus-visible,a:focus-visible{outline:3px solid var(--orange);outline-offset:3px}@media(min-width:720px){.hero{min-height:380px}.hero h1{font-size:58px}}

.recommendation-group{margin:24px 0}.recommendation-group summary{font-size:20px;font-weight:600;cursor:pointer;padding:16px 0;border-bottom:1px solid var(--line);margin-bottom:18px}.recommendation-group summary small{font-size:14px;font-weight:400;color:var(--muted)}.restaurant-names{display:flex;gap:10px;flex-wrap:wrap}.restaurant-names span{padding:8px 12px;background:var(--cream);border:1px solid var(--line);font-size:15px}.recommendation-group p{line-height:1.8}.local-note a,.recommendation-group a{color:var(--green)}

.split-field{grid-column:1/-1;border:1px solid var(--line);border-radius:8px;padding:16px;min-width:0}.split-field legend{font-size:16px;font-weight:700}.people-choices{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}.people-choices label,.split-row label{display:flex;align-items:center;gap:8px;font-size:16px}.people-choices input,.split-row input{width:20px!important;height:20px;accent-color:var(--green)}.split-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:16px}.split-summary{font-weight:700;color:var(--green);margin:12px 0}.bill-shares{grid-column:1/-1;padding:8px 12px;background:#f0f3ed;border-radius:6px}.expense-item{margin-bottom:12px}.paid-label{color:var(--green)}.unpaid-label{color:#95501d}.member-form{margin-top:16px}.member-form #memberNames{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:15px}.member-form label{display:grid;gap:7px;font-size:14px}.member-form input{width:100%;min-width:0;padding:10px;font:inherit;border:1px solid var(--line)}.ledger-panel summary{cursor:pointer;font-size:16px}.legacy-button{font:inherit;border:1px solid var(--green);padding:9px;background:transparent;border-radius:6px;color:var(--green)}.plan-form select{font:inherit;padding:10px}.plan-form input[type=checkbox]{width:20px}.collection-state{font-size:14px}.expense-list{background:transparent}
