
:root{--ink:#414739;--green:#36574f;--muted:#817c6d;--paper:#fcf8ee;--line:#e4d7bc;--soft:#f2ebdc;--gold:#a68b59;--pink:#f3d8dd;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:#f7f0df;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,label{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0;background:none}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #bd895e;outline-offset:2px}[hidden]{display:none!important}
.masthead{height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 25px;border-bottom:1px solid #cfbc96;background:#fffbf2}
.brand{display:flex;gap:10px;align-items:center;text-decoration:none;font-family:Georgia,"Songti SC","SimSun",serif;font-size:25px;font-weight:600;letter-spacing:2px}.brand-mark{width:35px;height:35px;display:grid;place-items:center;border:1px solid #bda77b;outline:1px solid #bda77b;outline-offset:3px;color:#756946;border-radius:50%;font-size:20px;font-weight:400;letter-spacing:0}.brand-en{display:block;font-family:system-ui,sans-serif;font-size:7px;letter-spacing:1.5px;margin-top:2px;font-weight:500;color:#8a795c}.trip-date{font-family:Georgia,serif;font-size:22px;letter-spacing:2px;color:#8e7b58}.trip-date>span{margin:0 8px;color:#bfac85}.trip-date small{display:inline;font-family:system-ui,sans-serif;font-size:10px;letter-spacing:1px;color:var(--muted);margin-left:18px}.header-actions{display:flex;align-items:center;gap:15px}.offline{font-size:10px;display:flex;align-items:center;gap:6px;color:#667465}.offline i,.map-topline i{width:5px;height:5px;border-radius:50%;background:#688566;display:inline-block}.icon-button{width:34px;height:34px;border:1px solid #d1c2a7;border-radius:50%;font-family:Georgia,serif}
.workspace{display:grid;grid-template-columns:106px minmax(370px,445px) minmax(0,1fr);height:calc(100dvh - 66px)}
.day-rail{display:flex;flex-direction:column;padding:20px 9px 18px;background:#314b45;color:#f5ecd8;border-right:1px solid #a28f68}.rail-title{font-size:11px;letter-spacing:2px;padding:0 9px 17px;color:#e5d4ad}.rail-title span{display:block;font-family:Georgia,serif;font-size:9px;letter-spacing:1px;color:#bac4b6;margin-top:6px}#day-nav{display:flex;flex-direction:column;gap:7px}.day-button{position:relative;text-align:center;padding:11px 4px;border:1px solid #82918245;border-radius:4px;min-height:63px;transition:background .18s,transform .18s}.day-button:hover{background:#435e53}.day-button.active{background:#f6ebd3;color:#465442;border-color:#d2b888;box-shadow:inset 0 0 0 3px #f6ebd3,inset 0 0 0 4px #d5bf95}.day-button .day-number{font-family:Georgia,serif;font-size:12px;letter-spacing:1px}.day-button .day-date{display:none}.day-button .day-place{font-size:11px;display:block;margin-top:5px}.day-button.active:after{content:"✦";color:#ba8f66;font-size:9px;position:absolute;right:5px;top:4px}.rail-bottom{margin-top:auto;padding:22px 8px 0;text-align:center;font-family:Georgia,"Songti SC",serif;font-size:12px;line-height:1.7;letter-spacing:2px;color:#c2ccba}.rail-bottom small{font-size:10px}.mini-tree{display:block;font-size:26px;margin-bottom:4px}
.itinerary{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d3c4a4 transparent;border-right:1px solid #cbbb9b;padding:16px;background-color:#fbf5e8;background-image:linear-gradient(90deg,#d3b5800c 1px,transparent 1px),linear-gradient(#d3b5800c 1px,transparent 1px);background-size:22px 22px}.eyebrow{font-size:8px;letter-spacing:1.5px;color:var(--muted);font-weight:500}
.day-header{position:relative;isolation:isolate;overflow:hidden;border:1px solid #d5bd8e;border-radius:10px 10px 3px 3px;padding:12px 16px;background:#fff9eaf0;animation:enter .22s ease-out}.day-header:after{content:"";position:absolute;inset:4px;border:1px solid #ddc9a063;border-radius:6px 6px 0 0;pointer-events:none;z-index:-1}.chapter-scene{position:absolute;right:0;bottom:-4px;width:148px;height:106px;z-index:-1;opacity:.7;pointer-events:none}.day-meta{display:flex;align-items:center;gap:9px;position:relative}.chapter-tag{font-family:Georgia,serif;font-size:11px;letter-spacing:1px;background:#f4d8db;color:#78585b;padding:4px 9px;border-radius:12px}.weather-note{font-size:10px;color:#8a7c65}.day-header h1{font-family:Georgia,"Songti SC","SimSun",serif;font-size:26px;line-height:1.4;font-weight:500;margin:8px 0 7px;letter-spacing:.5px;color:#4b5141;text-shadow:0 1px #fff}.day-header h1 span{font-family:system-ui;font-size:17px;color:#ab976d;margin:0 8px}.day-summary{display:flex;gap:13px;align-items:center;font-size:10px;color:#747660}.day-summary b{font-weight:500;background:#fff8e5bf;padding:2px 5px;color:#6d644b}
.alert-strip{display:flex;gap:8px;align-items:baseline;margin:9px 0;padding:8px 10px;border-left:2px solid #cda374;font-size:11px;line-height:1.65;background:#f2e8d4a3;color:#856337}.alert-strip strong{flex-shrink:0;font-size:10px;font-weight:600}.stay-block{border:1px solid #dbc9a4;background:#fffcf3;border-radius:5px}.stay-block summary{display:flex;gap:9px;align-items:center;cursor:pointer;padding:8px 11px;min-height:48px;list-style:none}.stay-block summary::-webkit-details-marker{display:none}.stay-icon{font-size:26px;color:#a88d5b;width:28px;text-align:center}.stay-heading{min-width:0;flex:1}.stay-heading small{font-size:9px;color:#94856b;margin-right:9px}.stay-heading strong{font-size:12px;font-weight:500;line-height:1.7}.stay-toggle{font-size:15px;color:#a68d60;transition:transform .18s}.stay-block[open] .stay-toggle{transform:rotate(45deg)}.stay-block p{margin:0;padding:0 12px 10px 47px;font-size:11px;color:#8a7c66;line-height:1.7}.stay-map{margin:0 12px 10px 47px}
.section-title{display:flex;justify-content:space-between;align-items:center;margin:10px 1px 0}.section-title h2{font-family:Georgia,"Songti SC",serif;font-size:16px;font-weight:500;margin:0}.section-title h2 small{font-family:system-ui,sans-serif;font-size:10px;color:#958362;margin-left:8px;font-weight:400}.text-button{font-size:10px;color:#8c7655;padding:8px 0 8px 12px;min-height:36px}.text-button:hover{color:#4c6652}.progress-track{height:2px;background:#e7dac0;margin:0 0 9px}.progress-track span{height:100%;display:block;background:#cb9da5;transition:width .2s}
.timeline{display:flex;flex-direction:column;gap:6px}.event{display:grid;grid-template-columns:36px 70px minmax(0,1fr) 38px;align-items:center;min-height:53px;padding:3px 4px 3px 0;border:1px solid #dbc7a0;border-radius:5px;background:#fffcf5;transition:background .18s,border-color .18s}.event:hover{background:#fff9eb;border-color:#bdab84}.check-button{position:relative;width:36px;min-height:44px;align-self:stretch;display:grid;place-items:center;padding:0}.check-button:before{content:"";width:16px;height:16px;border:1px solid #bdb396;border-radius:50%;background:#fffcf4;transition:background .18s,transform .18s}.event.done{background:#f4ede7;border-color:#e0c8c7}.event.done .check-button:before{background:#c7919e;border-color:#c7919e}.event.done .check-button:after{content:"✓";position:absolute;color:#fff;font-size:11px}.event.done .event-title{color:#9b8e7f;text-decoration:line-through}.event-time{font-family:Georgia,serif;font-style:italic;font-size:16px;line-height:1.15;color:#95805c;font-variant-numeric:tabular-nums}.event-time small{display:block;font-family:system-ui,sans-serif;font-style:normal;font-size:9px;color:#a99a7e;line-height:1.6}.event-title{font-size:12px;line-height:1.65;padding:4px 4px 4px 0;overflow-wrap:anywhere}.event-place{justify-self:end;width:36px;height:42px;display:grid;place-items:center;color:#5c7661;font-size:22px;padding:0}.event-place:hover{color:#926e3c;background:#f5ead5;border-radius:4px}.event-empty{text-align:center;color:#cbbea5;font-size:18px}.schedule-caption{display:flex;justify-content:space-between;gap:8px;font-size:9px;line-height:1.5;color:#9c8e74;margin:11px 0 0}.desktop-packing{margin-top:12px;display:flex;justify-content:space-between;font-size:11px;border-top:1px solid #ddcba9;padding:12px 0 0;width:100%;color:#827050}
.packing-panel{grid-column:2/4;overflow:auto;padding:25px max(24px,9%);background:#fcf8ed}.packing-panel h1{font-family:Georgia,"Songti SC",serif;font-size:26px;font-weight:500;margin:10px 0}.packing-panel .intro{color:var(--muted);font-size:12px;line-height:1.7}.packing-group{margin:20px 0}.packing-group h2{font-size:14px;border-bottom:1px solid var(--line);padding-bottom:9px}.packing-item{display:flex;gap:12px;align-items:center;font-size:13px;line-height:1.8;min-height:44px;padding:7px 0;cursor:pointer}.packing-item input{accent-color:#ad798b;width:18px;height:18px;flex-shrink:0}.packing-item:has(input:checked){color:#9da493;text-decoration:line-through}.mobile-nav{display:none}
.map-panel{position:relative;min-width:0;background:#e9eddf;overflow:hidden}.map-heading{height:94px;display:flex;justify-content:space-between;align-items:center;padding:0 28px;background:#fcfbf8;position:relative;z-index:600;border-bottom:1px solid var(--line)}.map-heading h2{font-family:Georgia,"Songti SC","SimSun",serif;font-size:21px;letter-spacing:2px;font-weight:500;margin:6px 0 0}.soft-button{border:1px solid #d7ddd0;border-radius:4px;padding:10px 13px;min-height:38px;font-size:11px;background:#fcfbf8;display:inline-flex;align-items:center;justify-content:center}.soft-button:hover{background:#edf0e8}#map{position:absolute;inset:94px 0 0;background:#e8eddf;z-index:1}.leaflet-container{font-family:inherit}.leaflet-control-attribution{font-size:8px!important;background:#f8f7f3d9!important;max-width:80%}.map-topline{position:absolute;top:113px;left:22px;right:22px;z-index:500;display:flex;align-items:center;justify-content:space-between;pointer-events:none;font-size:10px;color:#68785f}.map-topline>span:first-child{background:#fafbf5ed;padding:9px 11px;border:1px solid #e0e6d7;border-radius:3px}.map-topline i{margin-right:6px}.north{font-family:Georgia,serif;font-size:16px;letter-spacing:3px}.map-tools{position:absolute;z-index:500;right:20px;bottom:107px;display:flex;flex-direction:column;background:#fcfbf8;border:1px solid #dbe1d1;border-radius:5px;box-shadow:0 3px 8px #233c2b09}.map-tools button{width:39px;height:39px;font-size:21px}.map-tools button+button{border-top:1px solid var(--line)}.map-tools button:hover{background:#eef2e8}.map-footer{position:absolute;z-index:500;bottom:26px;left:22px;right:22px;background:#fcfbf8ee;border:1px solid #dfe5d5;border-radius:4px;padding:13px 15px;pointer-events:none}.map-footer>div{display:flex;align-items:center;gap:8px;font-size:10px}.map-footer p{font-size:9px;color:#7e8875;margin:8px 0 0;line-height:1.6}.route-swatch{width:22px;border-top:2px dashed var(--green)}.map-dot{width:7px;height:7px;background:var(--green);border:2px solid #fcfbf8;outline:1px solid var(--green);border-radius:50%;margin-left:10px}.place-label{color:#778871;white-space:nowrap;font-size:10px;letter-spacing:1px;pointer-events:none;text-shadow:0 1px 2px #fff,1px 0 2px #fff,-1px 0 2px #fff}.place-label.major{font-size:13px;color:#667b5d;font-weight:500}.road-label{color:#ae9e77;font-size:9px;background:#fbf9ef;border:1px solid #d7cbb0;white-space:nowrap;border-radius:3px;padding:2px 4px;line-height:12px;pointer-events:none}.trip-pin{background:none;border:0}.pin-core{width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;border:3px solid #fff;box-shadow:0 2px 7px #213d3530;font-size:10px;font-weight:600}.pin-core.approx{background:#a7824f}.pin-label{position:absolute;left:32px;top:2px;white-space:nowrap;background:#fcfcf6ec;border:1px solid #e1e6d7;border-radius:3px;padding:4px 7px;color:#38533e;font-size:11px}.trip-pin.label-left .pin-label{left:auto;right:8px;transform:translateX(-26px)}.leaflet-marker-icon:focus-visible{outline:3px solid #b18348;outline-offset:4px}.place-detail{position:absolute;z-index:700;bottom:108px;left:22px;width:min(330px,calc(100% - 95px));background:#fcfbf8;border:1px solid #d8dfcf;border-radius:6px;padding:20px;box-shadow:0 8px 24px #26412918}.place-detail h3{font-size:14px;line-height:1.6;margin:5px 20px 10px 0}.place-detail p{font-size:11px;color:#7b8275;line-height:1.9}.place-detail .accuracy{color:#a27840;font-size:10px}.close-place{position:absolute;right:8px;top:8px;font-size:24px;width:34px;height:34px}.primary-button{background:var(--green);color:#fff;padding:11px 16px;border-radius:4px;font-size:12px;min-height:40px}
dialog{max-width:510px;width:calc(100% - 32px);max-height:85dvh;border:1px solid #d7ded1;border-radius:10px;padding:32px;background:#fcfbf8;color:var(--ink);box-shadow:0 20px 80px #12261f33}dialog::backdrop{background:#1e322b66;backdrop-filter:blur(3px)}dialog h2{font-size:24px;font-weight:500;margin:10px 0 20px}dialog h3{font-size:13px;margin-top:24px}dialog p{font-size:12px;line-height:1.9;color:#788071}dialog a{color:var(--green)}.dialog-close{position:absolute;top:10px;right:10px;width:36px;height:36px;font-size:24px}.dialog-actions{display:flex;gap:10px}.file-label{cursor:pointer}.file-label input{display:none}.toast{position:fixed;z-index:2000;bottom:28px;left:50%;transform:translate(-50%,15px);background:#244f43;color:#fff;padding:12px 20px;border-radius:5px;font-size:12px;opacity:0;pointer-events:none;transition:.2s;max-width:90vw}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes enter{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}


.map-heading{height:64px;padding:0 21px;background:#fffaf0;border-bottom:1px solid #cfc0a3}.map-heading h2{font-size:20px;margin-top:3px;letter-spacing:1px;color:#716547}#map{top:64px;background:#e8ecdf}.map-topline{top:80px}.map-tools,.map-footer,.place-detail{border-color:#cfc1a0;background:#fffaf0ed}.map-footer{bottom:25px;padding:10px 12px}.map-heading .soft-button{min-height:34px;font-size:10px}.soft-button{border-color:#d4c19b;background:#fff9ec;color:#776848}.pin-core{background:#466854}.pin-label{background:#fffaf0f5;border-color:#d8c9a5}.map-topline>span:first-child{background:#fffaf0eb;border-color:#ded0b1}.map-tools button{width:40px;height:40px}.primary-button{background:#516d5b}.leaflet-control-attribution{background:#fffaf0dd!important}
@media(min-width:1500px){.workspace{grid-template-columns:116px 470px minmax(0,1fr)}.itinerary{padding:20px}.event{min-height:56px}}
@media(max-width:1050px) and (min-width:761px){.workspace{grid-template-columns:90px 385px minmax(0,1fr)}.masthead{padding:0 20px}.trip-date small{display:none}.itinerary{padding:12px}.day-rail{padding:20px 7px}.map-heading{padding:0 15px}.map-footer{left:12px;right:12px}.day-header h1{font-size:24px}}
@media(max-width:760px){
 .masthead{height:57px;padding:0 16px;gap:10px}.brand{font-size:22px;gap:10px;letter-spacing:1px}.brand-mark{width:29px;height:29px;font-size:18px;outline-offset:2px}.brand-en{font-size:6px;letter-spacing:1px}.trip-date{display:none}.header-actions{gap:10px}.offline{font-size:9px;gap:4px}.icon-button{width:32px;height:32px;font-size:13px}
 .workspace{display:flex;flex-direction:column;height:calc(100dvh - 57px - 54px - env(safe-area-inset-bottom))}.day-rail{padding:0;background:#faf2df;color:#8a7b5c;border-right:0;border-bottom:1px solid #d6c3a1;flex-shrink:0}.rail-title,.rail-bottom{display:none}#day-nav{flex-direction:row;overflow-x:auto;scrollbar-width:none;gap:3px;padding:5px 10px}.day-button{min-width:0;min-height:46px;height:46px;padding:5px 1px;text-align:center;flex:1;border-radius:4px;border:1px solid transparent}.day-button .day-number{font-size:10px;letter-spacing:.3px}.day-button .day-place{font-size:10px;margin-top:4px;white-space:nowrap}.day-button.active{color:#6c5555;background:#f5dce0;border-color:#dfb9c0;box-shadow:none}.day-button.active:after{display:none}.day-button:hover{background:#eee0cb}
 .itinerary{flex:1;min-height:0;padding:11px 12px 15px;border-right:0}.day-header{padding:10px 13px}.day-header h1{font-size:25px;margin:6px 0 5px}.day-header h1 span{margin:0 6px;font-size:16px}.chapter-tag{font-size:10px;padding:3px 8px}.weather-note{font-size:10px}.chapter-scene{width:129px;height:92px}.day-summary{font-size:10px;gap:9px}.alert-strip{padding:7px 8px;margin:7px 0;font-size:10px;line-height:1.65;gap:6px}.alert-strip strong{font-size:10px}.stay-block summary{min-height:43px;padding:6px 9px;gap:6px}.stay-icon{font-size:23px;width:25px}.stay-heading small{font-size:9px;margin-right:6px}.stay-heading strong{font-size:11px}.stay-block p{padding-left:40px;font-size:10px}.stay-map{margin-left:40px}.section-title{margin-top:5px}.section-title h2{font-size:15px}.text-button{min-height:36px;font-size:10px}.progress-track{margin-bottom:7px}.timeline{gap:5px}.event{grid-template-columns:34px 64px minmax(0,1fr) 38px;min-height:51px;padding:2px 3px 2px 0}.check-button{width:34px;min-height:44px}.event-time{font-size:16px}.event-time small{font-size:9px}.event-title{font-size:12px;line-height:1.55;padding-right:2px}.event-place{width:38px;height:44px;font-size:23px}.schedule-caption{font-size:9px}.desktop-packing{display:none}
 .map-panel{display:none;flex:1;min-height:0}.map-heading{height:57px;padding:0 16px}.map-heading h2{font-size:18px}#map{top:57px}.map-topline{top:70px;left:12px;right:12px}.map-topline>span:first-child{font-size:9px;padding:7px}.map-footer{left:12px;right:12px;bottom:24px;padding:10px}.map-footer p{font-size:9px}.map-tools{right:12px;bottom:110px}.map-tools button{width:42px;height:42px}.place-detail{left:12px;bottom:110px}.pin-label{font-size:10px;padding:4px 6px}.leaflet-control-attribution{font-size:7px!important;max-width:100%}
 .mobile-nav{display:flex;height:calc(54px + env(safe-area-inset-bottom));padding:3px 15px env(safe-area-inset-bottom);border-top:1px solid #d2bc94;background:#fff9ed;position:fixed;bottom:0;left:0;right:0;z-index:800}.mobile-nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-size:10px;color:#9b8e72}.mobile-nav button span{font-size:20px;line-height:23px}.mobile-nav button.selected{color:#536c55;font-weight:600}.mobile-nav button.selected span{background:#efdfd7;border-radius:12px;width:40px}.packing-panel{padding:20px;flex:1;min-height:0}.packing-panel h1{font-size:25px}.toast{bottom:72px}body[data-tab=map] .itinerary{display:none}body[data-tab=map] .map-panel{display:block}body[data-tab=packing] .itinerary,body[data-tab=packing] .map-panel{display:none}body[data-tab=packing] .day-rail{display:none}
}
@media(max-width:355px){.itinerary{padding:9px}.day-header h1{font-size:22px}.event{grid-template-columns:32px 58px minmax(0,1fr) 34px}.event-title{font-size:11px}.event-place{width:34px}.stay-heading small{display:block}.schedule-caption span{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.masthead{height:60px}.workspace{display:block;height:auto}.itinerary{overflow:visible}.day-rail,.map-panel,.mobile-nav,.header-actions,.desktop-packing{display:none}.event,.alert-strip{break-inside:avoid}}
