:root{--brand:#176b70;--brand2:#0f8b8d;--ink:#17343a;--muted:#6b7d80;--bg:#f4faf8;--card:#fff;--line:#dbe9e6;--warm:#fff7e7;--danger:#a53b3b;--shadow:0 10px 30px rgba(23,107,112,.10);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(180deg,#eaf8f5 0,#f8fbfa 34%,#f4faf8 100%)}button,input,textarea,select{font:inherit}.boot{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.shell{max-width:980px;margin:auto;min-height:100vh;padding-bottom:84px}.topbar{position:sticky;top:0;z-index:10;padding:calc(14px + env(safe-area-inset-top)) 18px 14px;background:rgba(244,250,248,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:10px;align-items:center}.brand-mark{width:40px;height:40px;border-radius:14px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:22px}.brand h1{font-size:18px;margin:0}.brand small{color:var(--muted)}.main{padding:18px}.hero{padding:22px;border-radius:24px;background:linear-gradient(135deg,#176b70,#25999a);color:white;box-shadow:var(--shadow);margin-bottom:16px}.hero h2{margin:0 0 8px;font-size:25px}.hero p{margin:0;opacity:.9;line-height:1.65}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px;box-shadow:0 4px 16px rgba(23,52,58,.04)}.card h3{margin:0 0 8px;font-size:17px}.muted{color:var(--muted)}.empty{text-align:center;padding:36px 18px}.empty .emoji{font-size:40px}.btn{border:0;border-radius:14px;padding:12px 16px;background:var(--brand);color:white;font-weight:700;cursor:pointer}.btn.secondary{background:#e5f3f1;color:var(--brand)}.btn.ghost{background:white;color:var(--brand);border:1px solid var(--line)}.btn.danger{background:#fff0f0;color:var(--danger)}.btn:disabled{opacity:.5}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.section-title{display:flex;justify-content:space-between;align-items:center;margin:22px 2px 10px}.section-title h2{margin:0;font-size:19px}.trip-card{display:block;color:inherit;text-decoration:none}.trip-card .cover{height:120px;border-radius:16px;background:linear-gradient(135deg,#d8f0e8,#f9e8c7);display:flex;align-items:end;padding:14px;margin-bottom:12px}.trip-card .cover strong{font-size:21px}.badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#e7f5f3;color:var(--brand);font-size:12px}.stats{display:flex;gap:16px;color:var(--muted);font-size:13px;margin-top:8px}.field{margin-bottom:14px}.field label{display:block;font-weight:700;margin-bottom:7px}.field input,.field textarea,.field select{width:100%;border:1px solid var(--line);background:white;border-radius:14px;padding:12px;color:var(--ink);outline:none}.field textarea{min-height:110px;resize:vertical}.field input:focus,.field textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(15,139,141,.12)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.day{border-left:4px solid var(--brand2);padding-left:14px;margin:14px 0}.day h4{margin:0 0 7px}.timeline-item{display:grid;grid-template-columns:70px 1fr;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line)}.timeline-item:last-child{border:0}.time{font-weight:700;color:var(--brand)}.chat{display:flex;flex-direction:column;gap:10px;max-height:380px;overflow:auto;padding:8px}.bubble{max-width:86%;padding:12px 14px;border-radius:16px;line-height:1.6;white-space:pre-wrap}.bubble.user{align-self:flex-end;background:var(--brand);color:white;border-bottom-right-radius:4px}.bubble.ai{align-self:flex-start;background:#edf6f4;border-bottom-left-radius:4px}.chatbox{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:10px}.chatbox input{border:1px solid var(--line);border-radius:14px;padding:12px}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.photo{aspect-ratio:1;border-radius:12px;object-fit:cover;width:100%;background:#eef5f4}.memory-card{border-radius:24px;padding:26px;background:linear-gradient(150deg,#fff7dd,#e0f3ef);min-height:340px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid #eadfbd}.memory-card h2{font-size:28px;margin:0}.memory-card blockquote{font-size:18px;line-height:1.8;margin:20px 0}.report{line-height:1.8}.report h3{color:var(--brand)}.nav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:rgba(255,255,255,.96);border-top:1px solid var(--line);padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom));display:flex;justify-content:center}.nav-inner{width:min(980px,100%);display:grid;grid-template-columns:repeat(4,1fr)}.nav a{text-decoration:none;color:var(--muted);text-align:center;padding:7px 2px;font-size:12px}.nav a span{display:block;font-size:21px;margin-bottom:2px}.nav a.active{color:var(--brand);font-weight:700}.toast{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);background:#17343a;color:white;padding:10px 16px;border-radius:999px;z-index:99}.install{font-size:12px;padding:8px 10px}.warning{padding:12px;border-radius:14px;background:var(--warm);color:#6f561b;font-size:13px;line-height:1.6}.hidden{display:none!important}@media(max-width:680px){.main{padding:14px}.grid{grid-template-columns:1fr}.hero{padding:20px}.form-row{grid-template-columns:1fr}.topbar{padding-left:14px;padding-right:14px}.brand small{display:none}}@media(min-width:681px){.nav{left:50%;transform:translateX(-50%);max-width:980px;border-left:1px solid var(--line);border-right:1px solid var(--line);border-radius:18px 18px 0 0}}
.timeline-board{display:grid;gap:16px}.day-card{padding:0;overflow:hidden}.day-head{padding:18px 18px 12px;border-bottom:1px solid var(--line,#e8ece8);display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.day-head h3{margin:0 0 4px}.day-head p{margin:0;color:#60706b}.day-guide{font-size:12px;background:#edf6f3;padding:7px 10px;border-radius:999px;max-width:44%}.timeline-row{display:grid;grid-template-columns:78px 1fr;gap:14px;padding:16px 18px;border-bottom:1px solid #edf0ee}.timeline-row:last-child{border-bottom:0}.time-block{display:flex;flex-direction:column;font-variant-numeric:tabular-nums}.time-block strong{font-size:16px}.time-block span{font-size:12px;color:#87908d}.timeline-title{display:flex;justify-content:space-between;gap:12px;font-weight:700}.timeline-title em{font-style:normal;font-size:11px;font-weight:600;background:#f3f5f4;padding:4px 7px;border-radius:99px}.timeline-content p{margin:7px 0}.verify{font-size:12px;color:#9a6415;background:#fff8e8;padding:7px 9px;border-radius:8px}.item-actions{display:flex;gap:8px;margin-top:10px}.mini{border:1px solid #cfd8d4;background:#fff;border-radius:9px;padding:7px 10px;font:inherit;cursor:pointer}.mini:disabled{opacity:.6}.chat{max-height:55vh;overflow:auto}.bubble{white-space:pre-wrap}
@media(max-width:640px){.day-head{display:block}.day-guide{display:inline-block;max-width:none;margin-top:8px}.timeline-row{grid-template-columns:64px 1fr;padding:14px}.item-actions{flex-wrap:wrap}}
.period-row{display:grid;grid-template-columns:86px 1fr;gap:14px;padding:16px 18px;border-bottom:1px solid #edf0ee}.period-row:last-child{border-bottom:0}.period-label{font-size:18px;font-weight:800;color:var(--brand);padding-top:4px}.period-main{min-width:0}.period-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.time-edit{display:flex;align-items:center;gap:10px;margin:10px 0}.time-edit label{font-size:12px;color:var(--muted);white-space:nowrap}.time-edit input{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:#fbfefd}.primary-mini{background:#e7f5f3;color:var(--brand);font-weight:700;text-decoration:none}.guide-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px}.guide-head h2{margin:4px 0 0}.period-kicker{font-size:12px;color:var(--muted)}.guide-summary{margin-bottom:14px}.guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.guide-field{padding:14px}.guide-field-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.guide-field-head h3{margin:0}.confirm-check{font-size:12px;color:var(--muted);white-space:nowrap}.guide-field textarea{width:100%;min-height:92px;border:1px solid var(--line);border-radius:12px;padding:10px;resize:vertical;line-height:1.55}.guide-chat-card{margin-top:14px}.sticky-save{position:sticky;bottom:76px;display:flex;justify-content:center;padding:16px 0 4px;z-index:8}.sticky-save .btn{box-shadow:0 10px 28px rgba(23,107,112,.25)}
@media(max-width:680px){.period-row{grid-template-columns:1fr;padding:14px}.period-label{font-size:20px}.guide-grid{grid-template-columns:1fr}.guide-head{align-items:center}.guide-head .btn{padding:9px 11px}.time-edit{align-items:flex-start;flex-direction:column;gap:5px}.sticky-save .btn{width:100%}}
/* M2.2 information architecture */
.trip-hub{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:0 0 18px}.hub{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--line,#dce7e5);border-radius:16px;background:#fff;text-decoration:none;color:inherit;font-size:22px}.hub b{font-size:15px}.hub small{font-size:12px;color:#718082}.hub:hover,.hub.active{border-color:#176b70;background:#eef8f6}.hero.compact{padding:22px}.progress{height:8px;background:#e6efed;border-radius:99px;overflow:hidden;margin-top:14px}.progress i{display:block;height:100%;background:#176b70}.prep-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.prep-group summary{display:flex;justify-content:space-between;cursor:pointer;font-size:17px}.check-list{margin:14px 0}.check-list label{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f0}.check-list em{font-style:normal;font-size:12px;color:#72817f}.explore-search{display:flex;margin:12px 0 16px}.explore-search input{flex:1;border:1px solid #ccd9d7;border-radius:14px 0 0 14px;padding:15px;font-size:16px}.explore-search .btn{border-radius:0 14px 14px 0}.filter-panel{background:#fff;border:1px solid #e0e8e6;border-radius:18px;padding:18px;margin-bottom:18px}.filter-panel>div{display:grid;grid-template-columns:70px 1fr;gap:12px;padding:10px 0}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:0;border-radius:9px;padding:9px 12px;background:#f3f6f6;cursor:pointer}.chip.on{background:#e5f2ff;color:#0874dc}.resource-card{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}@media(max-width:760px){.trip-hub{grid-template-columns:repeat(3,1fr)}.prep-grid{grid-template-columns:1fr}.hub{padding:11px}.filter-panel>div{grid-template-columns:1fr}.explore-search{position:sticky;top:0;z-index:3}.trip-hub small{display:none}}

/* M2.3 user-led planning */
.pretrip-entry{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}
.planning-hints{display:flex;flex-wrap:wrap;gap:8px;padding:14px 24px;border-bottom:1px solid var(--line,#dce7e5)}
.planning-hints span{font-size:13px;padding:6px 10px;border-radius:999px;background:#f2f7f6;color:#55706d}
.dayThemeInput,.periodNameInput,.periodTitleInput,.periodSummaryInput{width:100%;box-sizing:border-box}
.dayThemeInput,.periodNameInput,.periodTitleInput{border:0;background:transparent;font:inherit;color:inherit}
.dayThemeInput{margin-top:6px;color:#607774}
.periodNameInput{font-weight:700;color:#176e72;min-width:70px}
.periodTitleInput{font-weight:700;font-size:17px}
.periodSummaryInput{margin-top:12px;min-height:70px;border:1px solid #d6e3e1;border-radius:12px;padding:12px;resize:vertical}
@media(max-width:720px){.pretrip-entry{align-items:flex-start;flex-direction:column}.pretrip-entry .btn{width:100%;text-align:center}}

/* M2.4 行前规划任务单元 */
.prep-plan-list{display:flex;flex-direction:column}.prepPlanItem{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:16px 8px;border:0;border-bottom:1px solid #e2ecea;background:transparent;text-align:left;color:inherit;cursor:pointer}.prepPlanItem span{display:flex;flex-direction:column;gap:5px;min-width:0}.prepPlanItem small{color:#78908d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:430px}.prepPlanItem em{font-style:normal;color:#67817e;white-space:nowrap}.prepPlanItem:hover{background:#f6faf9}

/* M2.4.2: 行前规划工作台固定全屏弹层 */
.guide-modal{position:fixed;inset:0;z-index:1000;background:rgba(12,40,42,.46);display:flex;align-items:flex-end;justify-content:center;padding:18px;backdrop-filter:blur(4px)}
.guide-sheet{position:relative;width:min(760px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:24px 24px 18px 18px;padding:24px;box-shadow:0 24px 70px rgba(10,45,48,.28)}
.guide-close{position:sticky;top:0;float:right;z-index:2;width:38px;height:38px;border:0;border-radius:50%;background:#eef6f4;color:#176b70;font-size:25px;line-height:1;cursor:pointer}
.guide-header{padding-right:46px;margin-bottom:18px}.guide-header h2{margin:8px 0}.guide-field{margin:14px 0;padding:0}.guide-field label{display:block;font-weight:800;margin-bottom:8px}.guide-field textarea{width:100%;min-height:110px;border:1px solid #dbe9e6;border-radius:14px;padding:13px;resize:vertical;background:#fbfefd}.guide-chat-card{margin-top:22px;padding-top:18px;border-top:1px solid #dbe9e6}.prep-row-action{font-style:normal;color:#176b70;font-weight:700;white-space:nowrap}.prepPlanItem{border-radius:10px}.prepPlanItem:hover,.prepPlanItem:focus{background:#eef8f6;outline:2px solid rgba(23,107,112,.15);outline-offset:1px}
@media(min-width:760px){.guide-modal{align-items:center}.guide-sheet{border-radius:24px}}

/* M2.4.3 AI send feedback */
.guide-chat-card .chat{max-height:320px;overflow:auto}.bubble.pending{opacity:.72;font-style:italic}.bubble.error{background:#fff1ef;color:#9b2c23;border:1px solid #f1c7c2}.chatbox button:disabled{opacity:.65;cursor:wait}

/* M2.5 AI full-chain diagnostics */
.diagnostic-card{margin-bottom:18px}.diagnose-result{margin-top:16px;display:grid;gap:9px}.diagnose-empty{padding:14px;border-radius:12px;background:#f4f7f6;color:var(--muted)}.diagnose-row{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;padding:12px;border-radius:12px;border:1px solid}.diagnose-row>span{font-size:20px;font-weight:900}.diagnose-row div{display:flex;flex-direction:column;gap:4px}.diagnose-row small{line-height:1.5;word-break:break-word}.diagnose-row.ok{background:#eef8f3;border-color:#bfe2cf;color:#226445}.diagnose-row.fail{background:#fff2f0;border-color:#efc4bf;color:#9b2c23}.diagnose-summary{padding:12px 14px;border-radius:12px;font-weight:800}.diagnose-summary.ok{background:#e8f6ee;color:#226445}.diagnose-summary.fail{background:#fff0ed;color:#9b2c23}

/* M2.5.1 AI chat experience */
.chatbox textarea{width:100%;min-height:48px;max-height:140px;border:1px solid var(--line);border-radius:14px;padding:12px;resize:vertical;line-height:1.5;outline:none}.chatbox textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px rgba(15,139,141,.12)}.input-tip{display:block;margin:6px 4px 0;color:var(--muted);font-size:12px}.message-row{display:flex;align-items:flex-end;gap:8px;max-width:92%}.message-row.user{align-self:flex-end;flex-direction:row-reverse}.message-row.ai,.message-row.error,.message-row.pending{align-self:flex-start}.avatar{flex:0 0 30px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#dcefeb;color:var(--brand);font-size:12px;font-weight:800}.message-row.user .avatar{background:var(--brand);color:#fff}.message-row.error .avatar{background:#fff1ef;color:#9b2c23}.message-wrap{min-width:0}.message-meta{display:flex;gap:8px;align-items:center;margin:0 4px 4px;color:var(--muted);font-size:11px}.message-row.user .message-meta{justify-content:flex-end}.message-row .bubble{max-width:100%}.bubble h2,.bubble h3,.bubble h4{margin:.35em 0}.bubble ul{margin:.35em 0;padding-left:1.25em}.bubble blockquote{margin:.45em 0;padding-left:.8em;border-left:3px solid currentColor;opacity:.85}.bubble code{padding:.1em .35em;border-radius:5px;background:rgba(0,0,0,.07)}.thinking-dots{display:inline-flex;gap:3px;vertical-align:middle}.thinking-dots i{width:5px;height:5px;border-radius:50%;background:currentColor;animation:thinking 1s infinite ease-in-out}.thinking-dots i:nth-child(2){animation-delay:.15s}.thinking-dots i:nth-child(3){animation-delay:.3s}@keyframes thinking{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
