:root{--ink:#10253f;--ink2:#1b3855;--paper:#f6f2e9;--white:#fff;--line:#d8d4c9;--muted:#647184;--red:#e6533d;--red2:#b9382d;--jade:#4f827b;--gold:#d3ad6b;--shadow:0 22px 70px rgba(16,37,63,.16);font-family:"DM Sans","Noto Sans TC",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:linear-gradient(180deg,#fbfaf6,#f1ede4);font-size:16px;line-height:1.55}button,input,textarea{font:inherit;color:inherit}button,a,label{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}[hidden]{display:none!important}h1,h2,h3,h4,p{margin-top:0}.eyebrow{margin:0 0 10px;color:var(--red);font-size:.74rem;letter-spacing:.2em;font-weight:700}.site-header{height:76px;padding:0 clamp(18px,4vw,68px);display:flex;align-items:center;gap:30px;position:sticky;top:0;z-index:30;border-bottom:1px solid rgba(16,37,63,.12);background:rgba(250,248,242,.9);backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:10px;line-height:1}.brand img{width:48px;height:48px}.brand span{display:grid;gap:3px}.brand strong{font-size:.8rem;letter-spacing:.13em}.brand small{font-size:.66rem;letter-spacing:.35em;color:var(--red)}.site-header nav{margin-left:auto;display:flex;gap:28px}.site-header nav a{font-weight:600;font-size:.86rem}.site-header nav a:hover{color:var(--red)}.header-actions{display:flex;align-items:center;gap:12px}.version{font-size:.68rem;letter-spacing:.14em;border:1px solid var(--line);border-radius:99px;padding:6px 9px}.language-switch{display:flex;padding:3px;background:#e9e7e0;border:1px solid var(--line);border-radius:99px}.language-switch button{border:0;background:transparent;padding:6px 9px;border-radius:99px;font-size:.72rem;font-weight:700}.language-switch button.active{background:var(--ink);color:white}main{width:min(1500px,100%);margin:auto;padding:0 clamp(15px,4vw,64px) 100px}
.destination-workspace{min-height:650px;display:grid;grid-template-columns:.85fr 1.15fr;gap:55px;align-items:center;padding:54px 0 38px;scroll-margin-top:88px}.destination-copy h1{font-family:"Playfair Display","Noto Sans TC",serif;font-size:clamp(3.8rem,7vw,7.8rem);line-height:.87;letter-spacing:-.05em;margin:0 0 24px;max-width:680px}.destination-copy>p:not(.eyebrow){font-size:1.08rem;color:var(--muted);max-width:560px}.city-search{height:58px;margin:28px 0 10px;display:flex;align-items:center;gap:11px;border:1px solid var(--line);border-radius:15px;background:white;padding:0 15px;box-shadow:0 12px 35px rgba(16,37,63,.07)}.city-search input{border:0;outline:0;background:transparent;width:100%;font-size:.94rem}.city-search kbd{font-size:.72rem;border:1px solid var(--line);border-radius:5px;padding:2px 7px;color:var(--muted)}.search-results{display:grid;gap:7px}.search-results>button{min-height:63px;padding:10px 13px;border:1px solid var(--line);background:rgba(255,255,255,.68);border-radius:12px;display:grid;grid-template-columns:1fr auto auto;gap:15px;align-items:center;text-align:left}.search-results>button:hover{border-color:var(--red);transform:translateX(3px)}.search-results span{display:flex;flex-direction:column}.search-results b{font-size:.94rem}.search-results small{color:var(--muted)}.search-results em{font-style:normal;color:var(--red);font-weight:700}.search-results i{font-style:normal;font-size:1.2rem}.search-results>p{padding:14px;color:var(--muted)}.route-map{position:relative;min-height:550px;border-radius:27px;background:linear-gradient(145deg,#dce9e6,#bcd0cc 48%,#9eb8bd);overflow:hidden;box-shadow:var(--shadow)}.route-map:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,255,255,.25),transparent 50%);pointer-events:none}.route-map svg{width:100%;height:100%;position:absolute;inset:20px 0 0}.map-label{position:absolute;top:23px;left:28px;z-index:2;display:flex;flex-direction:column}.map-label strong{font-size:.75rem;letter-spacing:.16em}.map-label span{font-size:.68rem;color:var(--muted)}.route-map>p{position:absolute;bottom:15px;right:22px;margin:0;font-size:.64rem;color:rgba(16,37,63,.65);z-index:2}.land{fill:url(#land);opacity:.86}.coast{fill:none;stroke:#fff;stroke-width:4}.route{fill:none;stroke:var(--red);stroke-width:4;stroke-dasharray:7 9}.wave{fill:none;stroke:#fff;stroke-width:2;opacity:.45}.map-city{cursor:pointer;transition:.2s}.map-city>circle:first-child{fill:var(--ink);stroke:white;stroke-width:5}.map-city .pulse{fill:none;stroke:white;stroke-width:1.5;opacity:.65}.map-city text{font-size:18px;font-weight:700;fill:var(--ink)}.map-city text:last-child{font-size:13px;font-weight:500}.map-city:hover .pulse,.map-city:focus .pulse{stroke:var(--red);stroke-width:5}.map-city.muted{opacity:.22}
.city-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.city-card{height:520px;position:relative;overflow:hidden;border-radius:23px;background:var(--ink)}.city-card>img{width:100%;height:100%;object-fit:cover;transition:.6s}.city-card:hover>img{transform:scale(1.03)}.city-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,20,35,.18),rgba(5,20,35,.08) 35%,rgba(5,20,35,.9))}.city-card-top{position:absolute;top:22px;left:22px;right:22px;display:flex;justify-content:space-between;color:white}.city-card-top span{width:43px;height:43px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.6);border-radius:50%;font-weight:700}.city-card-top small{padding:7px 10px;border-radius:99px;background:rgba(8,30,45,.75);font-size:.67rem;font-weight:700;letter-spacing:.11em}.city-card-copy{position:absolute;left:25px;right:25px;bottom:86px;color:white}.city-card-copy>p:first-child{font-size:.68rem;letter-spacing:.12em;font-weight:700;margin-bottom:8px}.city-card-copy h2{font-family:"Playfair Display",serif;font-size:clamp(2.5rem,4vw,4.5rem);line-height:.9;margin:0 0 5px}.city-card-copy>span{font-size:.78rem;letter-spacing:.11em}.city-card-copy>p:last-child{font-size:.82rem;color:rgba(255,255,255,.82);margin:13px 0 0}.city-action{position:absolute;bottom:18px;left:18px;right:18px;height:50px;border:0;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-weight:700}.city-action:hover{color:var(--red)}.city-progress{position:absolute;left:0;right:0;bottom:0;height:4px;background:rgba(255,255,255,.18)}.city-progress span{display:block;height:100%;background:var(--red)}.local-notice{margin:22px 0 90px;padding:18px 22px;display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.55)}.local-notice>span{color:var(--jade);font-size:1.5rem}.local-notice strong{font-size:.86rem}.local-notice p{font-size:.78rem;color:var(--muted);margin:2px 0 0}
.passport-dashboard,.journey-atlas{scroll-margin-top:90px}.section-heading{display:grid;grid-template-columns:1fr minmax(280px,480px);gap:40px;align-items:end;margin-bottom:28px}.section-heading h2{font-family:"Playfair Display","Noto Sans TC",serif;font-size:clamp(2.8rem,5vw,5.4rem);line-height:.95;margin:0}.section-heading>p{margin:0 0 6px;color:var(--muted)}.passport-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.empty-passports{grid-column:1/-1;min-height:200px;border:1px dashed #aaa69b;border-radius:21px;padding:36px;display:grid;grid-template-columns:auto 1fr auto;gap:22px;align-items:center}.empty-passports>span{width:68px;height:68px;border:2px solid var(--red);color:var(--red);border-radius:50%;display:grid;place-items:center;font-size:1.8rem;transform:rotate(-7deg)}.empty-passports h3{margin-bottom:4px}.empty-passports p{color:var(--muted);margin:0}.empty-passports a{color:var(--red);font-weight:700}.passport-card{border:1px solid rgba(16,37,63,.1);background:white;border-radius:20px;overflow:hidden;box-shadow:0 8px 28px rgba(16,37,63,.07)}.passport-cover-button{width:100%;height:300px;padding:0;border:0;position:relative;background:var(--ink);text-align:left}.passport-cover-button>img{width:100%;height:100%;object-fit:cover}.passport-cover-shade{position:absolute;inset:0;background:linear-gradient(145deg,rgba(7,26,40,.1),rgba(7,26,40,.86))}.mini-logo{position:absolute;top:20px;left:20px;color:white;display:flex;align-items:center;gap:8px;font-size:.61rem;letter-spacing:.12em;font-weight:700;line-height:1.3}.mini-logo img{width:38px}.passport-city{position:absolute;left:23px;bottom:22px;color:white;font-family:"Playfair Display",serif;font-size:2.5rem;font-weight:700;line-height:1}.passport-city small{display:block;font:500 .8rem "Noto Sans TC";letter-spacing:.12em;margin-top:7px}.open-corner{position:absolute;right:22px;bottom:22px;color:white;font-size:1.4rem}.passport-card-body{display:flex;justify-content:space-between;align-items:center;padding:18px 21px 12px}.passport-card-body p{margin:0;color:var(--muted);font-size:.74rem}.passport-card-body h3{font-size:.9rem;margin:2px 0 0}.passport-card-body>strong{color:var(--red);font-size:1.7rem}.passport-progress{height:5px;margin:0 21px;background:#ece8df;border-radius:6px;overflow:hidden}.passport-progress span{display:block;height:100%;background:var(--red)}.passport-actions{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:17px 21px 21px}.primary-button,.secondary-button,.whatsapp-button{min-height:45px;padding:0 17px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;border:1px solid}.primary-button{background:var(--red);border-color:var(--red);color:white}.primary-button:hover{background:var(--red2)}.secondary-button{background:white;border-color:var(--line)}.whatsapp-button{background:#1fae5d;color:white;border-color:#1fae5d}.small{min-height:39px;font-size:.78rem}.icon-text{border:0;background:transparent;font-size:.75rem;font-weight:700}.icon-text.danger{color:var(--red)}
.journey-atlas{margin-top:100px}.atlas-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:15px}.atlas-metrics>div{min-height:105px;padding:18px;border-radius:15px;background:var(--ink);color:white;display:flex;flex-direction:column;justify-content:space-between}.atlas-metrics span{font-size:.72rem;color:rgba(255,255,255,.65)}.atlas-metrics strong{font-size:2rem}.atlas-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:15px}.atlas-grid>section{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.74);padding:24px;min-height:250px}.atlas-grid h3{font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:20px}.fujian-score{display:grid;place-items:center}.score-ring{width:170px;height:170px;border-radius:50%;background:conic-gradient(var(--red) var(--progress),#e2dfd6 0);display:grid;place-items:center;position:relative}.score-ring:after{content:"";position:absolute;inset:12px;border-radius:50%;background:#fff}.score-ring>span{position:relative;z-index:1;text-align:center}.score-ring strong{display:block;font-size:2.4rem}.score-ring small{font-size:.68rem;color:var(--muted)}.fujian-score>p{font-size:.78rem;color:var(--muted);margin:10px 0 0}.atlas-route{position:relative}.mini-route{height:175px;position:relative}.route-line{position:absolute;left:12%;right:12%;top:70px;height:2px;background:repeating-linear-gradient(90deg,var(--red) 0 8px,transparent 8px 15px)}.route-node{position:absolute;top:36px;border:0;background:transparent;text-align:center}.route-node:before{content:"";display:block;width:66px;height:66px;margin:auto;border-radius:50%;background:conic-gradient(var(--red) calc(var(--p)*3.6deg),#ddd8cc 0);border:8px solid white;box-shadow:0 0 0 1px var(--line)}.route-node i{position:absolute;top:23px;left:0;right:0;font-style:normal;font-size:.69rem;font-weight:700}.route-node b,.route-node small{display:block}.route-node b{font-size:.75rem;margin-top:6px}.route-node small{font-size:.66rem;color:var(--muted)}.node-1{left:7%}.node-2{left:calc(50% - 33px)}.node-3{right:7%}.category-stats{display:grid;align-content:start}.category-bar{display:grid;grid-template-columns:140px 1fr 42px;align-items:center;gap:12px;margin:9px 0}.category-bar>span,.category-bar>b{font-size:.76rem}.category-bar>div{height:8px;background:#e7e3da;border-radius:9px;overflow:hidden}.category-bar i{display:block;height:100%;background:var(--jade)}.milestones>div{display:flex;justify-content:space-between;gap:8px}.milestones>div>span{flex:1;text-align:center;color:#aaa;padding:12px 5px;border-radius:12px;border:1px dashed var(--line)}.milestones>div>span.unlocked{color:var(--red);background:#fff6f2;border-style:solid;border-color:#f0b2a8}.milestones i{width:30px;height:30px;margin:auto;display:grid;place-items:center;border-radius:50%;background:#e6e2d9;font-style:normal}.milestones .unlocked i{background:var(--red);color:white}.milestones strong,.milestones small{display:block}.milestones strong{font-size:1.2rem;margin-top:4px}.milestones small{font-size:.61rem}
dialog{border:0;padding:0;background:transparent;max-width:none;max-height:none}dialog::backdrop{background:rgba(5,18,31,.76);backdrop-filter:blur(8px)}.builder-dialog{width:min(1100px,calc(100vw - 30px));height:min(880px,calc(100vh - 30px));border-radius:23px;overflow:hidden}.dialog-shell{height:100%;display:grid;grid-template-rows:auto auto 1fr auto;background:var(--paper)}.dialog-header{padding:23px 29px 16px;background:white;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.dialog-header h2{font-family:"Playfair Display","Noto Sans TC",serif;font-size:2.1rem;margin:0}.icon-button{width:43px;height:43px;border-radius:50%;border:1px solid var(--line);background:white;font-size:1.55rem}.builder-steps{display:grid;grid-template-columns:repeat(3,1fr);padding:0 28px;background:white;border-bottom:1px solid var(--line)}.builder-steps button{height:58px;border:0;border-bottom:3px solid transparent;background:transparent;display:flex;gap:8px;align-items:center;justify-content:center;font-size:.78rem;font-weight:700}.builder-steps button span{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line)}.builder-steps button.active{color:var(--red);border-color:var(--red)}.builder-steps button.active span,.builder-steps button.complete span{background:var(--red);border-color:var(--red);color:white}.builder-body{overflow:auto;padding:28px}.builder-footer{padding:15px 28px;border-top:1px solid var(--line);background:white;display:grid;grid-template-columns:auto 1fr auto;gap:15px;align-items:center}.builder-footer>span{text-align:center;color:var(--red);font-weight:700;font-size:.8rem}.step-copy{max-width:800px;margin-bottom:22px}.step-copy h3{font-family:"Playfair Display","Noto Sans TC",serif;font-size:2rem;margin-bottom:5px}.step-copy p{color:var(--muted);margin:0}.pref-group{border:0;padding:0;margin:0 0 24px}.pref-group legend{font-weight:700;margin-bottom:10px}.pref-group legend small{font-weight:400;color:var(--muted);margin-left:8px}.diet-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.diet-card{min-height:95px;padding:15px;border:1px solid var(--line);border-radius:13px;background:white;position:relative;display:flex;flex-direction:column;justify-content:flex-end}.diet-card input,.pref-chip input,.allergen-grid input,.segmented input,.tag-picker input,.star-rating input,.photo-upload input{position:absolute;opacity:0;pointer-events:none}.choice-dot{position:absolute;top:13px;right:13px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line)}.diet-card:has(input:checked){border:2px solid var(--red);padding:14px;background:#fff7f3}.diet-card:has(input:checked) .choice-dot{border:6px solid var(--red)}.diet-card strong{font-size:.91rem}.diet-card small{font-size:.62rem;color:var(--muted)}.preference-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.pref-chip{min-height:68px;padding:12px;border:1px solid var(--line);border-radius:12px;background:white;position:relative;display:grid;align-content:center}.pref-chip>span{position:absolute;right:10px;top:9px;color:transparent}.pref-chip:has(input:checked){background:var(--ink);color:white;border-color:var(--ink)}.pref-chip:has(input:checked)>span{color:white}.pref-chip b{font-size:.81rem}.pref-chip small{font-size:.58rem;color:var(--muted)}.pref-chip:has(input:checked) small{color:rgba(255,255,255,.6)}.segmented{display:inline-flex;padding:3px;border-radius:99px;background:#e5e2d9}.segmented label span{display:block;padding:8px 18px;border-radius:99px;font-size:.8rem;font-weight:700}.segmented label:has(input:checked) span{background:var(--ink);color:white}.allergen-grid{display:flex;flex-wrap:wrap;gap:7px}.allergen-grid label span{display:block;padding:8px 12px;border-radius:99px;border:1px solid var(--line);background:white;font-size:.76rem;font-weight:600}.allergen-grid label:has(input:checked) span{background:var(--red);border-color:var(--red);color:white}.safety-note{padding:14px 16px;border-radius:12px;background:#fff0dd;color:#6f4b22;display:flex;gap:12px;align-items:center}.safety-note b{width:27px;height:27px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center}.safety-note p{margin:0;font-size:.78rem}.plan-head{max-width:none;display:flex;justify-content:space-between}.selected-count{text-align:right}.selected-count strong{display:block;color:var(--red);font-size:2rem;line-height:1}.selected-count span{font-size:.7rem}.selected-tray{position:sticky;top:-28px;z-index:3;margin:0 -28px 14px;padding:13px 28px;background:rgba(246,242,233,.96);backdrop-filter:blur(12px);border-top:1px solid transparent;border-bottom:1px solid var(--line)}.selected-tray>div:first-child{display:flex;justify-content:space-between;font-size:.76rem;margin-bottom:8px}.selected-tray>div:last-child{display:flex;gap:6px;overflow-x:auto;padding-bottom:3px}.selected-tray button{flex:0 0 auto;display:flex;gap:9px;align-items:center;border:1px solid #efb1a7;background:#fff5f2;border-radius:99px;padding:6px 9px 6px 11px;font-size:.7rem}.selected-tray button b{color:var(--red)}.tray-empty{font-size:.76rem;color:var(--muted);margin:0}.plan-controls>label{height:48px;border:1px solid var(--line);border-radius:12px;background:white;display:flex;align-items:center;gap:8px;padding:0 14px}.plan-controls input{border:0;outline:0;width:100%}.plan-controls>div{display:flex;gap:6px;overflow:auto;margin:10px 0}.plan-controls button,.workspace-filters button{white-space:nowrap;border:1px solid var(--line);background:white;border-radius:99px;padding:8px 12px;font-size:.76rem;font-weight:600}.plan-controls button.active,.workspace-filters button.active{background:var(--ink);color:white;border-color:var(--ink)}.ranking-note{font-size:.72rem;color:var(--muted);margin:0 0 14px}.plan-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.plan-row{min-height:72px;padding:9px 11px;display:grid;grid-template-columns:43px 1fr auto auto;gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;background:white}.plan-row>input{position:absolute;opacity:0}.plan-row.selected{border-color:var(--red);background:#fff7f3}.plan-rank{font-size:.75rem;font-weight:700;color:var(--red)}.plan-name{display:flex;flex-direction:column;min-width:0}.plan-name strong,.plan-name small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-name strong{font-size:.84rem}.plan-name small{font-size:.66rem;color:var(--muted)}.warning-tag{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#fff0c8;color:#9a6614;font-size:.7rem;font-weight:700}.add-check{width:25px;height:25px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center}.plan-row.selected .add-check{background:var(--red);border-color:var(--red);color:white}.cover-maker{display:grid;grid-template-columns:1.1fr 1fr;gap:27px}.cover-preview{height:430px;border-radius:20px;overflow:hidden;position:relative;box-shadow:var(--shadow)}.cover-preview>img{width:100%;height:100%;object-fit:cover}.cover-preview>span{position:absolute;inset:0;background:linear-gradient(155deg,transparent,rgba(4,20,34,.86))}.cover-brand{position:absolute;top:22px;left:22px;color:white;display:flex;align-items:center;gap:9px;font-size:.67rem;letter-spacing:.1em}.cover-brand img{width:43px}.cover-city-name{position:absolute;left:27px;bottom:27px;color:white}.cover-city-name strong{display:block;font:700 3rem "Playfair Display"}.cover-city-name small{letter-spacing:.13em}.cover-options{display:grid;gap:10px;align-content:start}.cover-option,.upload-option{min-height:91px;padding:15px;border:1px solid var(--line);border-radius:14px;background:white;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.cover-option.active{border:2px solid var(--red)}.cover-option small,.upload-option small{font-size:.72rem;color:var(--muted)}.upload-option{position:relative;padding-left:72px}.upload-option>span{position:absolute;left:17px;width:40px;height:40px;border-radius:50%;background:var(--ink);color:white;display:grid;place-items:center}.upload-option input{position:absolute;opacity:0}
.workspace-dialog{width:min(1250px,calc(100vw - 24px));height:min(930px,calc(100vh - 24px));border-radius:24px;overflow:hidden}.workspace-shell{height:100%;background:var(--paper);overflow:auto}.workspace-hero{height:360px;position:relative;color:white}.workspace-hero>img{width:100%;height:100%;object-fit:cover}.workspace-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,21,35,.84),rgba(5,21,35,.1),rgba(5,21,35,.45))}.workspace-close{position:absolute;right:22px;top:22px}.workspace-title{position:absolute;left:36px;bottom:32px}.workspace-title p{font-size:.7rem;letter-spacing:.16em;font-weight:700}.workspace-title h2{font:700 clamp(3.8rem,8vw,7rem)/.85 "Playfair Display";margin:0 0 10px}.workspace-title>span{font-size:.8rem;letter-spacing:.1em}.workspace-score{position:absolute;right:40px;bottom:32px;text-align:right}.workspace-score strong{display:block;font-size:3rem}.workspace-score span{font-size:.78rem}.workspace-body{padding:32px}.workspace-toolbar{display:flex;justify-content:space-between;gap:20px}.workspace-filters{display:flex;gap:6px}.workspace-toolbar>div:last-child{display:flex;gap:8px}.planned-foods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.food-card{min-height:222px;padding:18px;border:1px solid var(--line);border-radius:15px;background:white;display:grid;grid-template-columns:53px 1fr;gap:14px}.food-card.is-stamped{background:#f1f8f5;border-color:#94b9b1}.rank-badge{width:49px;height:49px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-weight:700}.food-card-copy>p:first-child{font-size:.64rem;color:var(--red);letter-spacing:.1em;text-transform:uppercase;font-weight:700;margin-bottom:4px}.food-card-copy h3{font:700 1.3rem/1.1 "Playfair Display","Noto Sans TC";margin:0}.food-card-copy>span{font-size:.71rem;color:var(--muted)}.food-card-copy>p:last-of-type{font-size:.77rem;color:var(--muted);margin:8px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-rating{font-size:.7rem;color:var(--gold);margin-top:8px}.food-card-actions{grid-column:2;display:flex;gap:7px;align-self:end}.stamp-button,.detail-button{height:37px;padding:0 11px;border-radius:9px;font-size:.73rem;font-weight:700}.stamp-button{border:1px solid var(--red);background:var(--red);color:white}.stamp-button.done{background:var(--jade);border-color:var(--jade)}.detail-button{border:1px solid var(--line);background:white}
.food-dialog{width:min(930px,calc(100vw - 26px));height:min(930px,calc(100vh - 26px));border-radius:22px;overflow:hidden}.food-sheet{height:100%;overflow:auto;background:var(--paper);padding:32px}.food-sheet-head{display:grid;grid-template-columns:74px 1fr auto;gap:19px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:23px}.rank-seal{width:66px;height:66px;border:2px dashed var(--red);border-radius:50%;display:grid;place-items:center;align-content:center;color:var(--red);transform:rotate(-7deg)}.rank-seal small{font-size:.6rem}.rank-seal strong{font-size:1.5rem;line-height:1}.food-sheet-head p{font-size:.66rem;letter-spacing:.13em;color:var(--red);font-weight:700;margin-bottom:3px}.food-sheet-head h2{font:700 clamp(2.1rem,5vw,3.8rem)/1 "Playfair Display","Noto Sans TC";margin:0}.food-sheet-head>div>span{font-size:.77rem;color:var(--muted)}.food-lead{font-size:1.05rem;padding:22px 0 13px;margin:0}.food-share-row{display:flex;justify-content:flex-end;gap:8px;margin-bottom:15px}.fact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.fact-grid section{padding:16px;border:1px solid var(--line);border-radius:12px;background:white}.fact-grid h3{font-size:.66rem;color:var(--red);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px}.fact-grid p{font-size:.82rem;color:#435166;margin:0}.fact-grid details{margin-top:8px;padding-top:7px;border-top:1px dashed var(--line)}.fact-grid summary{font-size:.68rem;font-weight:700}.fact-grid details p{margin-top:7px}.staff-card{margin:13px 0;padding:18px;background:var(--ink);color:white;border-radius:13px;display:flex;gap:14px}.staff-card>span{width:42px;height:42px;flex:0 0 auto;border:1px solid rgba(255,255,255,.5);border-radius:50%;display:grid;place-items:center}.staff-card strong{font-size:.74rem;letter-spacing:.08em}.staff-card p{font-size:.84rem;color:rgba(255,255,255,.82);margin:3px 0 0}.memory-editor{margin-top:13px;padding:22px;border:1px solid #d7c39c;border-radius:15px;background:#fffdf6}.memory-editor.locked{text-align:center;color:var(--muted)}.memory-editor.locked h3{color:var(--ink)}.memory-heading{display:flex;justify-content:space-between}.memory-heading h3{font:700 1.8rem "Playfair Display","Noto Sans TC";margin:0}.memory-heading img{width:96px;height:72px;object-fit:cover;border-radius:9px}.memory-editor fieldset{border:0;padding:0;margin:17px 0}.memory-editor legend,.comment-field>span{font-size:.76rem;font-weight:700;margin-bottom:7px}.star-rating{display:flex;flex-direction:row-reverse;justify-content:flex-end}.star-rating span{font-size:2rem;color:#d8d4cb}.star-rating label:has(input:checked) span,.star-rating label:has(input:checked)~label span,.star-rating label:hover span,.star-rating label:hover~label span{color:var(--gold)}.comment-field{display:grid}.comment-field textarea{min-height:90px;resize:vertical;padding:11px;border:1px solid var(--line);border-radius:10px;background:white}.public-note{display:flex;align-items:center;gap:8px;font-size:.76rem}.public-note input{position:absolute;opacity:0}.public-note>span{width:22px;height:22px;border:1px solid var(--line);border-radius:6px;display:grid;place-items:center;color:transparent}.public-note:has(input:checked)>span{background:var(--jade);border-color:var(--jade);color:white}.tag-picker{display:flex;flex-wrap:wrap;gap:6px}.tag-picker span{display:block;padding:7px 10px;border:1px solid var(--line);border-radius:99px;background:white;font-size:.7rem}.tag-picker label:has(input:checked) span{background:var(--ink);color:white}.memory-actions{display:flex;justify-content:space-between;align-items:center}.photo-upload{position:relative;display:flex;align-items:center;gap:7px;font-size:.76rem;font-weight:700}.photo-upload>span{width:32px;height:32px;border-radius:50%;background:var(--ink);color:white;display:grid;place-items:center}.sheet-actions{display:flex;justify-content:flex-end;padding-top:15px}
.share-dialog{width:min(560px,calc(100vw - 28px));max-height:calc(100vh - 28px);border-radius:22px;overflow:hidden}.share-sheet{position:relative;background:var(--paper);padding:32px;text-align:center;max-height:calc(100vh - 28px);overflow:auto}.share-close{position:absolute;right:18px;top:18px}.share-stamp{width:66px;height:66px;margin:0 auto 15px;border:2px dashed var(--red);border-radius:50%;display:grid;place-items:center;color:var(--red);font-size:1.8rem;transform:rotate(-7deg)}.share-sheet h2{font:700 2.2rem "Playfair Display","Noto Sans TC";margin-bottom:8px}.share-sheet>p{color:var(--muted)}.share-preview{padding:16px;border:1px solid var(--line);border-radius:12px;background:white;display:grid;text-align:left;margin:18px 0}.share-preview span{font-size:.76rem;color:var(--muted)}.share-actions{display:grid;gap:8px}.share-sheet>input{margin-top:10px;width:100%;border:1px solid var(--line);border-radius:9px;background:white;padding:10px;font-size:.66rem}.shared-foods{display:grid;gap:7px;text-align:left;margin:18px 0;max-height:420px;overflow:auto}.shared-foods article{display:grid;grid-template-columns:45px 1fr;gap:10px;padding:11px;background:white;border:1px solid var(--line);border-radius:10px}.shared-foods article>span{color:var(--red);font-weight:700}.shared-foods small{display:block;color:var(--gold)}.shared-foods p{margin:4px 0 0;color:var(--muted);font-size:.74rem}.toast{position:fixed;left:50%;bottom:24px;z-index:100;transform:translate(-50%,18px);opacity:0;padding:11px 17px;border-radius:99px;background:var(--ink);color:white;font-size:.79rem;font-weight:700;transition:.2s;pointer-events:none}.toast.visible{opacity:1;transform:translate(-50%,0)}footer{padding:32px clamp(20px,4vw,68px);background:var(--ink);color:white;display:flex;align-items:center;justify-content:space-between;gap:25px}footer p{margin:0;color:rgba(255,255,255,.7)}footer>span{font-size:.65rem;letter-spacing:.12em;color:rgba(255,255,255,.5)}.footer-brand strong{color:white}.footer-brand img{width:43px}
@media(max-width:1030px){.destination-workspace{grid-template-columns:1fr 1fr;gap:25px}.destination-copy h1{font-size:5.2rem}.city-gallery{grid-template-columns:repeat(2,1fr)}.city-card:last-child{grid-column:1/-1}.passport-grid{grid-template-columns:repeat(2,1fr)}.atlas-metrics{grid-template-columns:repeat(3,1fr)}.atlas-grid{grid-template-columns:1fr}.preference-grid{grid-template-columns:repeat(2,1fr)}.planned-foods{grid-template-columns:1fr}}
@media(max-width:720px){.site-header{height:66px;padding:0 13px}.site-header nav,.version,.brand span{display:none}.brand img{width:42px}.header-actions{margin-left:auto}.language-switch button{padding:6px 8px}main{padding:0 12px 70px}.destination-workspace{grid-template-columns:1fr;padding:40px 0 25px;gap:22px}.destination-copy h1{font-size:3.7rem}.destination-copy>p:not(.eyebrow){font-size:.95rem}.route-map{min-height:410px}.route-map svg{top:5px}.map-city text{font-size:15px}.map-city text:last-child{font-size:11px}.city-gallery{grid-template-columns:1fr}.city-card,.city-card:last-child{grid-column:auto;height:510px}.section-heading{grid-template-columns:1fr;gap:10px}.section-heading h2{font-size:3.1rem}.passport-grid{grid-template-columns:1fr}.empty-passports{grid-template-columns:auto 1fr;padding:23px}.empty-passports a{grid-column:2}.journey-atlas{margin-top:75px}.atlas-metrics{grid-template-columns:repeat(2,1fr)}.atlas-metrics>div:last-child{grid-column:1/-1}.atlas-grid{grid-template-columns:minmax(0,1fr);min-width:0;overflow:hidden}.atlas-grid>section{padding:19px;min-width:0;width:100%;overflow:hidden}.category-bar{grid-template-columns:110px minmax(0,1fr) 36px}.milestones>div{overflow:auto;justify-content:flex-start}.milestones>div>span{min-width:78px}.builder-dialog,.workspace-dialog,.food-dialog{width:100vw;height:100dvh;border-radius:0}.dialog-header{padding:17px}.dialog-header h2{font-size:1.5rem}.builder-steps{padding:0 8px}.builder-steps button{font-size:.66rem}.builder-body{padding:18px 14px}.builder-footer{padding:11px 13px}.diet-grid{grid-template-columns:repeat(2,1fr)}.preference-grid{grid-template-columns:1fr 1fr}.pref-chip{min-height:65px}.selected-tray{top:-18px;margin:0 -14px;padding:11px 14px}.plan-list{grid-template-columns:1fr}.cover-maker{grid-template-columns:1fr}.cover-preview{height:390px}.workspace-hero{height:330px}.workspace-title{left:20px;bottom:23px}.workspace-title h2{font-size:4rem}.workspace-score{right:20px;bottom:26px}.workspace-score strong{font-size:2.3rem}.workspace-body{padding:20px 14px}.workspace-toolbar{align-items:flex-start;flex-direction:column}.workspace-toolbar>div:last-child{width:100%}.workspace-toolbar>div:last-child button{flex:1}.workspace-filters{overflow:auto;width:100%}.food-card{grid-template-columns:47px 1fr;padding:15px}.food-sheet{padding:21px 15px}.food-sheet-head{grid-template-columns:58px 1fr auto;gap:10px}.rank-seal{width:55px;height:55px}.fact-grid{grid-template-columns:1fr}.food-share-row{justify-content:stretch}.food-share-row>*{flex:1}.memory-editor{padding:17px}.share-sheet{padding:26px 18px}footer{flex-direction:column;align-items:flex-start;padding:28px 20px}footer>p{order:2}}
@media(max-width:390px){.route-map{min-height:380px}.map-city text{display:none}.city-card{height:480px}.passport-cover-button{height:280px}.food-card-actions{grid-column:1/-1}.workspace-score span{display:none}.workspace-title h2{font-size:3.4rem}.pref-group legend small{display:block;margin:2px 0 0}.preference-grid{grid-template-columns:1fr}.segmented label span{padding:8px 14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* V0.4 national discovery */
.national-map .china-field{opacity:.96}.map-grid{fill:none;stroke:rgba(16,37,63,.12);stroke-width:1;stroke-dasharray:3 8}.city-gallery{grid-template-columns:repeat(4,minmax(0,1fr))}.city-card,.city-card:last-child{grid-column:auto;height:560px}.city-card-actions{position:absolute;left:18px;right:18px;bottom:18px;display:grid;grid-template-columns:1fr auto;gap:8px;z-index:2}.city-card-actions .city-action{position:static}.city-build{min-width:118px;border:1px solid rgba(255,255,255,.56);border-radius:11px;background:rgba(8,26,43,.68);color:white;font-weight:700;backdrop-filter:blur(10px)}
.food-discovery{margin-top:100px;scroll-margin-top:90px}.discovery-hero{height:460px;border-radius:24px;overflow:hidden;position:relative;color:white;box-shadow:var(--shadow)}.discovery-hero>img{width:100%;height:100%;object-fit:cover}.discovery-hero>span{position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,26,43,.9) 0%,rgba(7,26,43,.56) 46%,rgba(7,26,43,.12) 78%)}.discovery-hero>div{position:absolute;left:clamp(25px,5vw,70px);bottom:clamp(28px,6vw,70px);max-width:630px}.discovery-hero h2{font:700 clamp(3.4rem,7vw,7rem)/.86 "Playfair Display","Noto Sans TC";margin:4px 0 17px}.discovery-hero>div>p:not(.eyebrow){max-width:530px;color:rgba(255,255,255,.82)}.discovery-hero>div>div{display:flex;align-items:center;gap:14px;margin-top:23px}.discovery-hero>div>div>span{font-size:.72rem;color:rgba(255,255,255,.7)}.discovery-heading{display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:40px;margin:58px 0 24px}.discovery-heading h2{font:700 clamp(2.8rem,5vw,5.5rem)/.95 "Playfair Display","Noto Sans TC";margin:0}.discovery-heading>p{color:var(--muted);max-width:550px;justify-self:end}.discovery-foods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.discovery-food{min-height:245px;border:1px solid var(--line);border-radius:17px;background:white;overflow:hidden;display:grid;grid-template-columns:180px minmax(0,1fr);position:relative}.discovery-image{border:0;padding:0;position:relative;overflow:hidden;background:var(--ink)}.discovery-image img{width:100%;height:100%;object-fit:cover;filter:saturate(.82);transition:transform .35s}.discovery-image:hover img{transform:scale(1.04)}.discovery-image:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(5,23,39,.5),transparent 65%)}.discovery-image>span{position:absolute;z-index:1;left:14px;bottom:13px;color:white;font-weight:800;font-size:1.2rem}.discovery-copy{padding:21px 20px 68px}.discovery-copy>p:first-child{margin:0 0 5px;color:var(--red);font-size:.66rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.discovery-copy h3{font:700 1.45rem/1.1 "Playfair Display","Noto Sans TC";margin:0}.discovery-copy>small{color:var(--muted)}.discovery-copy>p:last-of-type{font-size:.8rem;color:#4b5868;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.text-detail{border:0;background:transparent;color:var(--red);font-weight:700;padding:0}.discovery-actions{position:absolute;left:200px;right:18px;bottom:16px;display:flex;gap:7px}.discovery-actions button{height:38px;border-radius:9px;padding:0 11px;font-size:.72rem;font-weight:700}.save-food{border:1px solid var(--red);background:var(--red);color:white}.save-food.selected{background:var(--jade);border-color:var(--jade)}.share-food{border:1px solid var(--line);background:white}.discovery-more{text-align:center;margin-top:22px}
.compact-group{display:grid;grid-template-columns:190px 1fr;align-items:start;gap:18px;margin-bottom:17px}.compact-group legend{grid-column:1;float:left}.compact-group>div{grid-column:2}.compact-diets{grid-template-columns:repeat(4,1fr)}.compact-diets .diet-card{min-height:70px}.compact-preferences{grid-template-columns:repeat(5,1fr)}.compact-preferences .pref-chip{min-height:62px}.allergy-details{margin:6px 0 18px;padding:14px 16px;border:1px solid var(--line);border-radius:13px;background:white}.allergy-details summary{font-weight:800;cursor:pointer;display:flex;justify-content:space-between}.allergy-details summary small,.allergy-details>p{color:var(--muted);font-size:.72rem}.allergy-details>p{margin:8px 0 12px}.plan-row{font:inherit;text-align:left;cursor:pointer}.plan-row:focus-visible{outline:3px solid rgba(206,61,45,.25);outline-offset:2px}
.back-button{position:absolute;right:22px;top:22px;min-width:96px;height:43px;border:1px solid rgba(255,255,255,.55);border-radius:99px;background:white;color:var(--ink);font-weight:800;padding:0 17px}.star-rating{flex-direction:row;gap:2px}.star-rating button{border:0;background:transparent;padding:2px;line-height:1}.star-rating button span{font-size:2rem;color:#d8d4cb}.star-rating button[aria-pressed="true"] span,.star-rating button:hover span{color:var(--gold)}
.china-score{display:grid;place-items:center}.china-score>p{font-size:.78rem;color:var(--muted);margin:10px 0 0}.mini-route{height:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.route-line{display:none}.route-node{position:relative!important;inset:auto!important;top:auto!important;border:1px solid var(--line);border-radius:13px;background:white;padding:12px 5px}.route-node:before{width:58px;height:58px;border-width:7px}.route-node i{top:33px}.milestones .badge-explainer{color:var(--muted);font-size:.78rem;margin:-10px 0 15px}.milestones>div{display:grid;grid-template-columns:repeat(5,1fr)}.milestones strong{font-size:.76rem;min-height:35px;display:flex;align-items:center;justify-content:center}.milestones small{font-size:.58rem}
@media(max-width:1100px){.city-gallery{grid-template-columns:repeat(2,1fr)}.compact-group{grid-template-columns:1fr}.compact-group legend,.compact-group>div{grid-column:1}.compact-preferences{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.city-gallery{grid-template-columns:1fr}.city-card,.city-card:last-child{height:510px}.city-card-actions{grid-template-columns:1fr}.city-build{height:43px}.food-discovery{margin-top:72px}.discovery-hero{height:510px}.discovery-hero>span{background:linear-gradient(0deg,rgba(7,26,43,.92),rgba(7,26,43,.08) 80%)}.discovery-hero>div{left:22px;right:22px;bottom:25px}.discovery-hero h2{font-size:3.6rem}.discovery-hero>div>div{align-items:flex-start;flex-direction:column}.discovery-heading{grid-template-columns:1fr;gap:6px;margin-top:42px}.discovery-heading>p{justify-self:start}.discovery-foods{grid-template-columns:1fr}.discovery-food{grid-template-columns:115px minmax(0,1fr);min-height:240px}.discovery-copy{padding:17px 14px 72px}.discovery-copy h3{font-size:1.22rem}.discovery-actions{left:129px;right:12px}.discovery-actions button{padding:0 8px}.compact-diets{grid-template-columns:repeat(2,1fr)}.compact-preferences{grid-template-columns:repeat(2,1fr)}.back-button{right:14px;top:14px}.mini-route{grid-template-columns:repeat(2,1fr)}.milestones>div{display:flex}.milestones>div>span{min-width:112px}.food-share-row{flex-wrap:wrap}}

/* V0.5 · Passport-led product shell */
.brand-button{border:0;background:transparent;padding:0}.brand-button img{width:224px;height:52px}.site-header nav button{border:0;background:transparent;padding:12px 2px;font-weight:700;font-size:.84rem;color:var(--ink);position:relative}.site-header nav button:after{content:"";position:absolute;left:0;right:0;bottom:4px;height:2px;background:var(--red);transform:scaleX(0);transition:.2s}.site-header nav button.active:after,.site-header nav button:hover:after{transform:scaleX(1)}.scan-header{height:38px;border:1px solid var(--ink);border-radius:99px;background:var(--ink);color:white;padding:0 13px;font-size:.75rem;font-weight:800}.module-page{min-height:calc(100vh - 76px);padding:86px 0 90px;margin:0!important}.module-page .section-heading{margin-top:0}.places-page .section-heading h2{font:700 clamp(3.2rem,6vw,6.5rem)/.9 "Playfair Display","Noto Sans TC",serif;margin:0}.place-city-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:38px 0 22px}.place-city-tabs button{min-height:82px;padding:14px;border:1px solid var(--line);border-radius:14px;background:white;text-align:left;display:grid;gap:2px}.place-city-tabs b{font-size:1rem}.place-city-tabs small{font-size:.65rem;letter-spacing:.08em;color:var(--muted)}.place-city-tabs button.active{border-color:var(--red);box-shadow:inset 0 0 0 1px var(--red)}.place-city-tabs button.coming{background:#eceae4;color:#777}.place-dish-strip{display:flex;gap:8px;overflow:auto;padding:2px 1px 14px;scrollbar-width:thin}.place-dish-strip button{flex:0 0 174px;border:1px solid var(--line);border-radius:12px;background:white;padding:11px;text-align:left;display:grid}.place-dish-strip button>span{color:var(--red);font-size:.66rem;font-weight:800}.place-dish-strip b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.place-dish-strip small{color:var(--muted)}.place-dish-strip button.active{background:var(--ink);color:white}.place-dish-strip button.active small{color:rgba(255,255,255,.65)}.places-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:28px 0 18px}.places-heading h3{font:700 2.7rem/1 "Playfair Display","Noto Sans TC",serif;margin:0}.places-heading span{color:var(--muted)}.restaurant-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.restaurant-card{min-height:310px;padding:25px;border:1px solid var(--line);border-radius:17px;background:white;display:flex;flex-direction:column}.restaurant-card>span{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--red);border-radius:50%;color:var(--red);font-weight:800}.restaurant-card>div:nth-child(2){margin:28px 0 auto}.restaurant-card h4{font:700 1.55rem/1.15 "Playfair Display","Noto Sans TC",serif;margin:5px 0}.restaurant-card address{font-style:normal;color:var(--red);font-size:.77rem}.restaurant-card p{color:var(--muted);font-size:.8rem}.restaurant-card>div:last-child{display:flex;gap:7px}.restaurant-card a{flex:1;border:1px solid var(--line);border-radius:9px;padding:10px 8px;text-align:center;font-size:.72rem;font-weight:800}.restaurant-card a:first-child{background:var(--ink);color:white}.place-disclaimer{margin-top:14px;color:var(--muted);font-size:.68rem}.places-coming{height:440px;border-radius:22px;overflow:hidden;position:relative;color:white}.places-coming img{width:100%;height:100%;object-fit:cover;filter:grayscale(.6)}.places-coming:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,28,46,.92),rgba(8,28,46,.3))}.places-coming>div{position:absolute;z-index:1;left:clamp(25px,6vw,80px);top:50%;transform:translateY(-50%);max-width:520px}.places-coming span{letter-spacing:.18em;font-size:.7rem;color:var(--gold)}.places-coming h3{font:700 3.6rem/1 "Playfair Display","Noto Sans TC",serif;margin:8px 0}.places-coming p{color:rgba(255,255,255,.75)}.food-dialog{width:min(920px,94vw);height:min(900px,92dvh)}.food-sheet{padding-top:0}.food-hero-image{height:315px;margin:0 -30px 26px;position:relative;overflow:hidden}.food-hero-image img{width:100%;height:100%;object-fit:cover}.food-hero-image>span{position:absolute;inset:0;background:linear-gradient(0deg,rgba(8,27,44,.48),transparent 58%)}.food-hero-image a{position:absolute;right:15px;bottom:12px;border-radius:99px;background:rgba(8,27,44,.72);color:white;padding:7px 10px;font-size:.6rem}.nearby-places{border:1px solid #b8d0c9;background:#eef5f2;border-radius:15px;padding:17px;margin:18px 0;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px;align-items:stretch}.nearby-places>div{display:flex;flex-direction:column;align-items:flex-start}.nearby-places>div button{border:0;background:transparent;color:var(--red);font-weight:800;padding:0}.nearby-places article{background:white;border-radius:10px;padding:12px;display:grid}.nearby-places article span{font-size:.67rem;color:var(--muted)}.order-dialog,.scanner-dialog{border:0;border-radius:21px;padding:0;box-shadow:var(--shadow);background:var(--paper)}.order-dialog{width:min(700px,94vw)}.order-sheet{padding:34px;position:relative}.order-sheet h2,.scanner-sheet h2{font:700 3rem/1 "Playfair Display","Noto Sans TC",serif}.order-close,.scanner-close{position:absolute;right:18px;top:18px}.order-language{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:22px 0}.order-language section{border:1px solid var(--line);border-radius:14px;background:white;padding:18px;position:relative}.order-language section:last-child{background:var(--ink);color:white;border-color:var(--ink)}.order-language section>span{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--red);color:white;font-weight:800}.order-language small{display:block;margin:12px 0 6px;color:var(--muted);font-weight:800}.order-language section:last-child small{color:var(--gold)}.order-language p{white-space:pre-line;margin:0;font-size:1rem}.order-tip{color:var(--muted);font-size:.76rem}.scanner-dialog{width:min(720px,94vw)}.scanner-sheet{padding:34px;position:relative}.scanner-sheet>p{color:var(--muted)}.scan-drop{min-height:170px;border:2px dashed #aab5b7;border-radius:16px;background:white;display:flex;align-items:center;justify-content:center;flex-direction:column;cursor:pointer}.scan-drop input{position:absolute;opacity:0;pointer-events:none}.scan-drop>span{font-size:2.2rem;color:var(--red)}.scan-drop small{color:var(--muted)}#scanResults{display:grid;gap:8px;margin-top:14px}.scan-status,.scan-match{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;background:white;padding:10px}.scan-status>span{color:white;background:var(--jade);border-radius:50%;width:30px;height:30px;display:grid;place-items:center}.scan-status div,.scan-match div{display:grid}.scan-status small,.scan-match small{color:var(--muted)}.scan-match{position:relative}.scan-match img{width:70px;height:58px;object-fit:cover;border-radius:8px}.scan-match>span{position:absolute;right:10px;top:10px;color:var(--jade);font-weight:800}.scan-match button{border:0;background:transparent;color:var(--red);font-weight:800;padding:4px 0;text-align:left}.scan-note{font-size:.65rem!important}.memory-studio{grid-column:1/-1;margin-top:14px;border-radius:20px;background:var(--ink);color:white;padding:30px;display:grid;grid-template-columns:1fr auto 320px;gap:25px;align-items:center}.memory-studio h3{font:700 2.8rem/1 "Playfair Display","Noto Sans TC",serif;margin:0}.memory-studio p:not(.eyebrow){color:rgba(255,255,255,.7);margin:8px 0 0}.memoir-preview{min-height:130px;border:1px solid rgba(255,255,255,.25);border-radius:14px;padding:18px;background:linear-gradient(135deg,#23425c,#10253f);display:grid}.memoir-preview>span{font:700 2.5rem/1 Georgia,serif;color:var(--gold)}.memoir-preview small{letter-spacing:.14em}.memoir-preview div{margin-top:14px;display:flex;gap:7px;flex-wrap:wrap}.memoir-preview i{font-style:normal;font-size:.62rem;border:1px solid rgba(255,255,255,.25);border-radius:99px;padding:4px 7px}#mobileNav{display:none}.footer-brand img{width:210px;height:auto}.footer-brand{filter:brightness(0) invert(1)}
@media(max-width:1030px){.brand-button img{width:185px}.restaurant-grid{grid-template-columns:1fr}.memory-studio{grid-template-columns:1fr auto}.memoir-preview{grid-column:1/-1}}
@media(max-width:720px){body{padding-bottom:74px}.site-header{position:sticky}.brand-button{width:48px;height:48px;background:url("./assets/logo-mark.svg") center/44px no-repeat}.brand-button img{display:none}.scan-header span{display:none}.scan-header{width:38px;padding:0}.module-page{padding:40px 0 70px;min-height:calc(100vh - 66px)}.place-city-tabs{grid-template-columns:repeat(2,1fr)}.places-heading{align-items:flex-start;flex-direction:column}.places-heading h3{font-size:2.2rem}.restaurant-grid{grid-template-columns:1fr}.restaurant-card{min-height:280px}.places-coming{height:520px}.places-coming h3{font-size:3rem}.food-dialog{width:100vw;height:100dvh}.food-hero-image{height:240px;margin:0 -15px 22px}.nearby-places{grid-template-columns:1fr}.order-dialog,.scanner-dialog{width:100vw;max-width:none;height:100dvh;border-radius:0}.order-sheet,.scanner-sheet{padding:28px 18px}.order-language{grid-template-columns:1fr}.order-sheet h2,.scanner-sheet h2{font-size:2.5rem}.memory-studio{grid-template-columns:1fr;padding:22px}.memory-studio .primary-button{width:100%}.memoir-preview{grid-column:auto}.footer-brand img{width:190px}#mobileNav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;height:72px;z-index:80;background:rgba(250,248,242,.96);border-top:1px solid var(--line);backdrop-filter:blur(16px);padding:6px 4px max(6px,env(safe-area-inset-bottom))}#mobileNav button{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--muted);font-size:1.05rem}#mobileNav button small{font-size:.58rem;font-weight:800}#mobileNav button.active{color:var(--red)}#mobileNav .mobile-scan{width:58px;height:58px;margin:-17px auto 0;border-radius:50%;background:var(--red);color:white;box-shadow:0 8px 20px rgba(190,56,45,.3)}.toast{bottom:88px}input,textarea{font-size:16px}}
.footer-brand{filter:none}

/* V0.6 · public demo clarity and stable Passport editing */
.national-map .china-field{opacity:.92;filter:drop-shadow(0 18px 24px rgba(16,37,63,.12))}.future-cities text{font:700 10px Arial,sans-serif;letter-spacing:.08em;fill:#7d8788;opacity:.62}.map-city{cursor:pointer}.map-city:focus-visible{outline:none}.map-city:focus-visible circle:first-child{stroke:#fff;stroke-width:5px}
.place-plan-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin:28px 0 14px}.place-plan-head h3{font:700 2rem/1 "Playfair Display","Noto Sans TC",serif;margin:3px 0 0}.place-plan-head>span{color:var(--muted);font-size:.76rem}.place-dish-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.place-dish-list button{min-width:0;border:1px solid var(--line);border-radius:12px;background:white;padding:12px;text-align:left;display:grid;gap:3px}.place-dish-list button>span{color:var(--red);font-size:.66rem;font-weight:800}.place-dish-list b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.place-dish-list small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.place-dish-list button.active{background:var(--ink);border-color:var(--ink);color:white}.place-dish-list button.active small{color:rgba(255,255,255,.7)}
.food-card-actions{align-content:center}.remove-plan-button{border:0;background:transparent;color:#9c3e37;font-size:.68rem;font-weight:800;padding:6px}.remove-plan-button:hover{text-decoration:underline}.memory-editor{scroll-margin-top:16px;border-width:2px}.memory-editor:not(.locked){box-shadow:0 12px 34px rgba(16,37,63,.08)}
@media(max-width:1030px){.place-dish-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.future-cities text{font-size:12px}.place-plan-head{align-items:flex-start;flex-direction:column;gap:4px}.place-dish-list{grid-template-columns:repeat(2,minmax(0,1fr))}.place-dish-list button{padding:11px}.food-card-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.remove-plan-button{grid-column:1/-1}.memory-heading{align-items:flex-start;gap:10px}.memory-actions{align-items:stretch;gap:12px;flex-direction:column}.memory-actions .primary-button{width:100%}}
@media(max-width:390px){.national-map .map-city text:first-of-type{display:block;font-size:15px}.national-map .map-city text:last-of-type{display:none}.future-cities text{font-size:9px}}

/* V0.7 · living route, city food search and explainable profile matching */
.skip-link{position:fixed;left:16px;top:8px;z-index:120;transform:translateY(-160%);padding:10px 14px;border-radius:8px;background:var(--ink);color:#fff;font-weight:800}.skip-link:focus{transform:translateY(0)}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #1e6f83;outline-offset:3px}.discovery-search-bar label>div:focus-within,.city-search:focus-within,.plan-controls>label:focus-within{border-color:#1e6f83;box-shadow:0 0 0 3px rgba(30,111,131,.18)}dialog{overscroll-behavior:contain}
.route-map{--map-x:62%;--map-y:38%;isolation:isolate;background:#b8d0cc}.route-map:before{content:"";position:absolute;inset:0;z-index:0;background:radial-gradient(circle 180px at var(--map-x) var(--map-y),rgba(255,255,255,.46),transparent 72%),repeating-radial-gradient(circle at 20% 20%,transparent 0 22px,rgba(16,37,63,.035) 23px 24px),linear-gradient(145deg,#dce9e6,#bcd0cc 48%,#9eb8bd);pointer-events:none}.route-map svg{z-index:1}.route-map .map-label,.route-map>p{z-index:3}.route-map svg>path,.route-map svg>.future-cities,.route-map svg>.route-traveller{pointer-events:none}.route{stroke-dasharray:7 9;animation:route-flow 2.2s linear infinite}.route-traveller{fill:#fff;stroke:var(--red);stroke-width:4;filter:drop-shadow(0 4px 6px rgba(16,37,63,.28))}.map-city{transform-box:fill-box;transform-origin:center;transition:transform .18s ease-out,opacity .18s ease-out}.map-hit{fill:rgba(255,255,255,.001);stroke:none}.map-city:hover,.map-city:focus-visible{transform:translateY(-4px)}.map-city>circle:not(.pulse){fill:var(--ink);stroke:#fff;stroke-width:5;transition:fill .18s ease-out,stroke .18s ease-out}.map-city .pulse{pointer-events:none;animation:city-beacon 2.8s ease-out infinite}.map-city[data-map-city="quanzhou"] .pulse{animation-delay:.45s}.map-city[data-map-city="xiamen"] .pulse{animation-delay:.9s}.map-city[data-map-city="zhangzhou"] .pulse{animation-delay:1.35s}.route-map.is-paused .route,.route-map.is-paused .pulse{animation-play-state:paused}.future-cities text{font-family:inherit}.map-city text{pointer-events:none;paint-order:stroke;stroke:rgba(255,255,255,.7);stroke-width:3px;stroke-linejoin:round}.map-city text:last-child{stroke-width:2px}.map-city:hover>circle:not(.pulse),.map-city:focus-visible>circle:not(.pulse){fill:var(--red);stroke:#fff}.route-map:has(.map-city:hover) .map-city:not(:hover){opacity:.58}@keyframes route-flow{to{stroke-dashoffset:-32}}@keyframes city-beacon{0%,100%{opacity:.72}50%{opacity:.18}}

.discovery-search-bar{margin:0 0 22px;padding:18px 20px;border:1px solid var(--line);border-radius:16px;background:#fff;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:end;box-shadow:0 10px 28px rgba(16,37,63,.05)}.discovery-search-bar label>span{display:block;margin-bottom:8px;font-size:.76rem;font-weight:800;color:var(--ink)}.discovery-search-bar label>div{height:52px;border:1px solid #b9c1c5;border-radius:12px;display:flex;align-items:center;gap:10px;padding:0 13px;background:#fbfcfa}.discovery-search-bar input{min-width:0;flex:1;border:0;outline:0;background:transparent;font:inherit;color:var(--ink)}.discovery-search-bar input::placeholder{color:#66717b}.discovery-search-bar button{min-height:40px;border:0;border-left:1px solid var(--line);padding:0 3px 0 12px;background:transparent;color:var(--red);font-weight:800}.discovery-search-bar>p{margin:0 0 14px;color:var(--muted);font-size:.76rem;font-weight:700;white-space:nowrap}.discovery-empty{grid-column:1/-1;min-height:300px;border:1px dashed #abb7b8;border-radius:18px;display:grid;place-items:center;align-content:center;text-align:center;padding:32px;background:rgba(255,255,255,.6)}.discovery-empty>span{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-size:1.4rem}.discovery-empty h3{margin:14px 0 2px;font:700 1.5rem "Playfair Display","Noto Sans TC",serif}.discovery-empty p{margin:0 0 16px;color:var(--muted)}

.plan-profile-summary{margin:-8px 0 14px;padding:12px 15px;border:1px solid #bed2ca;border-radius:12px;background:#edf6f1;display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:.76rem}.plan-profile-summary strong{color:#245446}.plan-profile-summary span{color:#4b5b58}.plan-profile-summary b{font-size:.92rem;color:var(--ink)}.plan-row{grid-template-columns:43px minmax(0,1fr) auto auto;min-height:82px}.plan-row.compatibility-conflict{border-left:4px solid #b83b32}.plan-row.compatibility-ask{border-left:4px solid #c68b24}.compatibility-reasons{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}.compatibility-reason{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:3px 6px;border-radius:6px;font-size:.58rem;font-weight:800;line-height:1.25;white-space:normal}.compatibility-reason.ask{background:#fff1cf;color:#7b5412}.compatibility-reason.conflict{background:#fde3df;color:#942b25}.compatibility-status{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.7rem;font-weight:900}.compatibility-status.match{background:#dbeee5;color:#216345}.compatibility-status.ask{background:#fff1cf;color:#7b5412}.compatibility-status.conflict{background:#fde3df;color:#942b25}

.food-profile-panel{margin:22px 0;padding:18px 20px;border-radius:15px;border:1px solid #bed2ca;background:#edf6f1}.food-profile-panel>div{display:flex;align-items:center;gap:12px}.food-profile-panel>div>span{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#245446;color:white;font-weight:900}.food-profile-panel small{display:block;color:var(--muted);font-size:.68rem;font-weight:800;text-transform:uppercase}.food-profile-panel h3{margin:1px 0 0;font-size:1.1rem}.food-profile-panel ul{display:flex;flex-wrap:wrap;gap:6px;margin:13px 0 8px;padding:0;list-style:none}.food-profile-panel li{padding:5px 8px;border-radius:7px;background:rgba(255,255,255,.8);font-size:.72rem;font-weight:700}.food-profile-panel>p{max-width:680px;margin:8px 0 13px;color:#52625d;font-size:.75rem}.food-profile-panel>button{min-height:42px;border:0;border-radius:9px;background:var(--ink);color:white;padding:0 14px;font-weight:800}.food-profile-panel.compatibility-ask{border-color:#e2c27f;background:#fff7e5}.food-profile-panel.compatibility-ask>div>span{background:#9b6d18}.food-profile-panel.compatibility-conflict{border-color:#e8aaa3;background:#fff1ef}.food-profile-panel.compatibility-conflict>div>span{background:#a6322a}

@media(max-width:720px){.route-map:before{background:radial-gradient(circle 130px at var(--map-x) var(--map-y),rgba(255,255,255,.38),transparent 72%),repeating-radial-gradient(circle at 20% 20%,transparent 0 22px,rgba(16,37,63,.035) 23px 24px),linear-gradient(145deg,#dce9e6,#bcd0cc 48%,#9eb8bd)}.discovery-search-bar{grid-template-columns:1fr;padding:14px;margin-bottom:16px;gap:7px}.discovery-search-bar>p{margin:0}.plan-profile-summary{align-items:flex-start;flex-direction:column}.plan-row{min-height:92px}.compatibility-reasons{padding-right:2px}}

@media(prefers-reduced-motion:reduce){.route,.map-city .pulse{animation:none}.route-traveller{display:none}.map-city,.map-city>circle:first-child{transition:none}.route-map:has(.map-city:hover) .map-city:not(:hover){opacity:1}.discovery-image img{transition:none}}

/* V0.8 · Starter Passport, experience tags and living culinary atlas */
.route-map{background:#b5cbc5;border:1px solid rgba(16,37,63,.08);box-shadow:0 24px 60px rgba(22,55,61,.18)}.route-map:before{background:radial-gradient(circle 210px at var(--map-x) var(--map-y),rgba(255,251,235,.63),transparent 68%),linear-gradient(135deg,#dbeae5 0%,#bfd4ce 48%,#96b2b0 100%)}.route-map:after{background:linear-gradient(115deg,rgba(255,255,255,.28),transparent 48%),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 4px);mix-blend-mode:soft-light}.land-shadow{fill:url(#land-shadow);opacity:.34;transform:translate(0,10px)}.national-map .china-field{opacity:1;filter:none}.map-contours{pointer-events:none}.map-contours path{fill:none;stroke:rgba(56,89,88,.22);stroke-width:1.35;stroke-linecap:round}.map-steam{pointer-events:none;opacity:.42;animation:map-steam 7s ease-in-out infinite}.map-steam path{fill:none;stroke:#fff9e9;stroke-width:4;stroke-linecap:round}.map-steam circle{fill:#fff9e9}.coast{stroke:rgba(255,255,255,.65);stroke-width:3}.map-city>circle:not(.pulse){fill:#16394a;stroke:#fff8e7;stroke-width:5;filter:drop-shadow(0 6px 8px rgba(18,50,58,.22))}.map-city .pulse{stroke:#c64a35;stroke-width:2;opacity:.25;animation:ink-bloom 4.4s ease-in-out infinite}.map-city text{stroke:rgba(246,235,210,.82);stroke-width:4px}.map-city text:last-child{stroke-width:3px}.future-cities text{fill:#566f71;opacity:.55}.route-map:has(.map-city:hover) .map-city:not(:hover){opacity:.66}.route-map.is-paused .map-steam,.route-map.is-paused .pulse{animation-play-state:paused}@keyframes ink-bloom{0%,100%{opacity:.16}50%{opacity:.46}}@keyframes map-steam{0%,100%{opacity:.28;transform:translateY(2px)}50%{opacity:.52;transform:translateY(-6px)}}

.food-tags{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 8px}.food-tag{display:inline-flex;align-items:center;min-height:24px;padding:4px 8px;border-radius:99px;background:#edf3ef;color:#31534e;font-size:.57rem;font-weight:850;letter-spacing:.035em;line-height:1.2}.tag-essential{background:#f8dfd8;color:#8b2e27}.tag-everyday{background:#e4eee9;color:#25584c}.tag-heritage{background:#efe5cf;color:#765721}.tag-coastal{background:#dcebf0;color:#28586a}.tag-sweet{background:#f6e4ea;color:#87415a}.tag-adventurous{background:#e9e1ef;color:#604477}.discovery-copy .food-category{margin:0 0 5px;color:var(--red);font-size:.64rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.discovery-copy{padding-top:17px}.discovery-tag-filters{display:flex;align-items:center;gap:7px;overflow-x:auto;padding:0 1px 18px;scrollbar-width:thin}.discovery-tag-filters>span{flex:0 0 auto;margin-right:5px;font-size:.68rem;font-weight:850;color:var(--muted);letter-spacing:.07em;text-transform:uppercase}.discovery-tag-filters button{flex:0 0 auto;min-height:38px;padding:7px 11px;border:1px solid var(--line);border-radius:99px;background:#fff;font:700 .68rem/1.1 inherit;color:var(--ink)}.discovery-tag-filters button b{margin-left:4px;color:var(--muted)}.discovery-tag-filters button.active{background:var(--ink);border-color:var(--ink);color:#fff}.discovery-tag-filters button.active b{color:var(--gold)}

.selected-tray>div:last-child{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:166px;overflow:auto;padding:1px}.selected-plan-item{min-width:0;display:grid;grid-template-columns:29px minmax(0,1fr) auto;gap:7px;align-items:center;border:1px solid #e6b7ae;background:#fff8f5;border-radius:10px;padding:6px 7px}.selected-plan-item>span{width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:var(--red);color:#fff;font-size:.62rem;font-weight:900}.selected-plan-item>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.7rem}.selected-plan-item>div{display:flex;gap:3px}.selected-plan-item button{width:28px;height:28px;padding:0;border:1px solid var(--line);border-radius:7px;background:#fff;display:grid;place-items:center;color:var(--ink);font-size:.68rem}.selected-plan-item button:last-child{color:var(--red)}.selected-plan-item button:disabled{opacity:.28}.plan-tag{max-width:92px;font-size:.58rem;font-weight:850;color:var(--red);line-height:1.15}.plan-row{grid-template-columns:92px minmax(0,1fr) auto auto}.discovery-seal{transform:none;width:72px;height:72px;padding:5px;text-align:center}.discovery-seal small{letter-spacing:.08em}.discovery-seal strong{max-width:58px;font-size:.82rem;line-height:1.05;text-transform:uppercase}.food-sheet-head .food-tags{margin-top:9px}.food-card-copy>.food-tags{margin-bottom:5px}.food-card-copy>.food-tags+.food-category,.food-card-copy>.food-tags+p{margin-top:0}.rank-badge{font-variant-numeric:tabular-nums}.place-dish-list .tag-dot{white-space:normal;color:#7d5630;line-height:1.15}.place-dish-list button.active .tag-dot{color:var(--gold)}

.order-dialog{width:min(820px,94vw)}.order-editor-intro{color:var(--muted);max-width:610px}.order-editor section{display:grid;grid-template-columns:38px 1fr;column-gap:10px;align-items:center}.order-editor label{font-size:.72rem;font-weight:850;color:var(--muted)}.order-editor section:last-child label{color:var(--gold)}.order-editor textarea{grid-column:1/-1;width:100%;min-height:260px;margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fbfcfa;color:var(--ink);font:500 .9rem/1.65 inherit;resize:vertical}.order-editor section:last-child textarea{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;resize:none}.order-editor textarea:focus{outline:3px solid rgba(30,111,131,.28);outline-offset:2px}.order-tip{padding:10px 12px;border-left:3px solid var(--gold);background:#fffaf0}

@media(max-width:720px){.route-map:before{background:radial-gradient(circle 150px at var(--map-x) var(--map-y),rgba(255,251,235,.55),transparent 70%),linear-gradient(135deg,#dbeae5,#bad0ca 55%,#95b0af)}.map-steam{animation:none}.discovery-tag-filters{margin-right:-12px;padding-right:12px}.food-tags{gap:4px}.food-tag{font-size:.53rem}.selected-tray>div:last-child{grid-template-columns:1fr;max-height:190px}.plan-row{grid-template-columns:78px minmax(0,1fr) auto auto}.plan-tag{max-width:78px}.order-editor textarea{min-height:210px}.discovery-seal{width:55px;height:55px}.discovery-seal strong{font-size:.66rem}.food-sheet-head .food-tags{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){.map-steam,.map-city .pulse{animation:none}.map-city{transition:none}}

/* V0.9 · explicit translation, dining party and place-efficient food stops */
.order-dialog{width:min(980px,94vw);max-height:92dvh;overflow:hidden}.order-sheet{max-height:92dvh;overflow:auto}.order-editor section{align-content:start}.translation-action{grid-column:1/-1;margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.translation-action button{min-height:42px;border:0;border-radius:9px;padding:0 14px;background:var(--ink);color:#fff;font-weight:850}.translation-action button.stale{background:var(--red);box-shadow:0 8px 18px rgba(190,56,45,.2)}.translation-status{font-size:.65rem!important;font-weight:800;color:#2e6654!important}.translation-status:before{content:"✓ ";}.translation-status.stale{color:#a33b32!important}.translation-status.stale:before{content:"● ";}.staff-hint{grid-column:1/-1;margin-top:10px!important;color:var(--gold)!important;font-size:.65rem!important;letter-spacing:.04em}.dining-party{margin:22px 0;padding:20px;border:1px solid var(--line);border-radius:16px;background:#f5f1e8}.party-heading{display:flex;align-items:start;justify-content:space-between;gap:18px}.party-heading h3{margin:2px 0;font:700 1.65rem/1.1 "Playfair Display","Noto Sans TC",serif}.party-heading p:not(.eyebrow){margin:5px 0 0;max-width:590px;color:var(--muted);font-size:.76rem}.party-heading .secondary-button{flex:0 0 auto}.party-empty{margin-top:15px;border:1px dashed #b7bbb3;border-radius:12px;padding:14px;display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.55)}.party-empty>span{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center}.party-empty p{margin:0;color:var(--muted);font-size:.76rem}.diner-list{margin-top:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.diner-card{min-width:0;border:1px solid var(--line);border-radius:13px;background:#fff;padding:14px}.diner-name{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.diner-card label>span,.diner-card legend{display:block;margin-bottom:5px;color:var(--muted);font-size:.62rem;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.diner-card input[type="text"],.diner-card input:not([type]),.diner-card select{width:100%;height:40px;border:1px solid var(--line);border-radius:8px;padding:0 10px;background:#fbfcfa;color:var(--ink)}.diner-name>button{width:40px;height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--red);font-size:1.15rem}.diner-diet{display:block;margin-top:10px}.diner-card fieldset{border:0;padding:0;margin:12px 0 0}.party-chips{display:flex;flex-wrap:wrap;gap:5px}.party-chips input{position:absolute;opacity:0;pointer-events:none}.party-chips span{display:block;padding:6px 8px;border:1px solid var(--line);border-radius:99px;background:#fff;font-size:.62rem;font-weight:750}.party-chips label:has(input:checked) span{border-color:var(--red);background:#fff0ed;color:#9c3028}.party-chips.allergen label:has(input:checked) span{background:#a6322a;color:#fff}.party-apply{width:100%;min-height:45px;margin-top:12px;border:0;border-radius:10px;background:var(--ink);color:#fff;font-weight:850}.party-apply:hover,.translation-action button:hover{filter:brightness(1.12)}

.place-stop-empty{margin:30px 0;padding:22px;border:1px solid #bed2ca;border-radius:17px;background:#edf6f1;display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center}.place-stop-empty>span{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-size:1.3rem}.place-stop-empty h3{margin:3px 0;font:700 1.25rem "Playfair Display","Noto Sans TC",serif}.place-stop-empty p:not(.eyebrow){margin:0;color:var(--muted);font-size:.75rem}.place-stop-planner{margin:34px 0 44px}.place-stop-planner>header{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:15px}.place-stop-planner>header h3{margin:3px 0 0;font:700 clamp(2.1rem,4vw,3.5rem)/1 "Playfair Display","Noto Sans TC",serif}.place-stop-planner>header>p{max-width:490px;margin:0;color:var(--muted);font-size:.76rem}.stop-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.stop-plan-card{min-width:0;border:1px solid var(--line);border-radius:17px;background:#fff;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 28px rgba(16,37,63,.05)}.stop-card-head{padding:18px;display:grid;grid-template-columns:auto 1fr;gap:12px;background:linear-gradient(135deg,#f8f2e5,#eef3ef)}.stop-card-head>span{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--red);color:#fff;font:800 1.2rem Georgia,serif}.stop-card-head small{display:block;color:var(--red);font-size:.55rem;font-weight:900;letter-spacing:.07em}.stop-card-head h4{margin:4px 0 2px;font:700 1.25rem/1.05 "Playfair Display","Noto Sans TC",serif}.stop-card-head p{margin:0;color:var(--muted);font-size:.66rem}.stop-foods{padding:13px 18px;display:grid;gap:8px}.stop-foods>div{display:grid;grid-template-columns:auto 1fr;column-gap:7px;align-items:center}.stop-foods>div b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.73rem}.stop-foods>div small{grid-column:2;color:var(--muted);font-size:.61rem}.stop-match{grid-row:1/3;width:9px;height:9px;border-radius:50%;overflow:hidden;text-indent:14px;white-space:nowrap;font-size:0}.stop-match.strong{background:var(--jade)}.stop-match.addon{background:var(--gold)}.stop-foods>p{margin:0;color:var(--muted);font-size:.65rem}.stop-plan-card footer{margin-top:auto;border-top:1px solid var(--line);padding:12px 18px;display:flex;align-items:center;justify-content:space-between;gap:8px}.stop-plan-card footer>span{font-size:.62rem;color:var(--muted)}.stop-plan-card footer>button{border:0;background:transparent;color:var(--red);font-size:.68rem;font-weight:900;text-align:right}

.stop-dialog{width:min(650px,94vw);border-radius:21px;background:var(--paper);box-shadow:var(--shadow)}.stop-sheet{max-height:90dvh;overflow:auto;padding:32px;position:relative}.stop-close{position:absolute;right:17px;top:17px}.stop-sheet h2{max-width:520px;margin:4px 0;font:700 clamp(2.2rem,5vw,3.5rem)/1 "Playfair Display","Noto Sans TC",serif}.stop-location{margin:8px 0 0;color:var(--red);font-size:.78rem;font-weight:800}.stop-intro{color:var(--muted);font-size:.78rem}.stop-checklist{display:grid;gap:7px;margin:20px 0}.stop-checklist label{position:relative;border:1px solid var(--line);border-radius:11px;background:#fff;padding:12px;display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center}.stop-checklist input{position:absolute;opacity:0;pointer-events:none}.stop-checklist label>span{width:28px;height:28px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:transparent}.stop-checklist label:has(input:checked){border-color:var(--red);background:#fff7f3}.stop-checklist label:has(input:checked)>span{border-color:var(--red);background:var(--red);color:#fff}.stop-checklist label div{display:grid}.stop-checklist label b{font-size:.82rem}.stop-checklist label small{color:var(--muted);font-size:.64rem}.stop-dialog-actions{display:flex;justify-content:flex-end;gap:8px}.stop-dialog-actions .primary-button{min-width:210px}

@media(max-width:1030px){.stop-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.order-dialog{height:100dvh;max-height:100dvh}.order-sheet{height:100dvh;max-height:100dvh;padding-bottom:90px}.translation-action{align-items:stretch;flex-direction:column}.translation-action button{width:100%}.dining-party{padding:15px;margin:18px 0}.party-heading{align-items:stretch;flex-direction:column}.party-heading .secondary-button{width:100%}.diner-list{grid-template-columns:1fr}.place-stop-empty{grid-template-columns:auto 1fr}.place-stop-empty .primary-button{grid-column:1/-1}.place-stop-planner>header{align-items:flex-start;flex-direction:column;gap:8px}.stop-plan-grid{grid-template-columns:1fr}.stop-plan-card footer>button{min-height:42px}.stop-dialog{width:100vw;height:100dvh;border-radius:0}.stop-sheet{height:100dvh;max-height:100dvh;padding:28px 18px 92px}.stop-dialog-actions{position:sticky;bottom:-1px;margin:0 -18px;padding:12px 18px;background:rgba(246,242,233,.96);backdrop-filter:blur(12px)}.stop-dialog-actions>*{flex:1;min-width:0!important}.order-editor textarea{min-height:190px}}

/* V1.0 · passport-led field guide */
:root{--ink:#102a43;--ink2:#193b55;--paper:#f7f3ea;--red:#d94b35;--red2:#b53a2b;--jade:#2f6f63;--gold:#d7a84a;--line:#d8d1c3;--muted:#607080;font-family:"Avenir Next","Noto Sans TC","Segoe UI",sans-serif}
body{background:linear-gradient(180deg,#fbfaf5 0,#f3eee3 55%,#eee8db 100%);color:var(--ink)}
h1,h2,.section-heading h2,.step-copy h3,.passport-city,.place-stop-planner>header h3{font-family:"Iowan Old Style","Source Han Serif TC",Georgia,serif}
:where(button,a,input,textarea,select,summary,[tabindex]):focus-visible{outline:3px solid #16708a;outline-offset:3px}
dialog{overscroll-behavior:contain}h1,h2,h3{text-wrap:balance}
.site-header{height:72px;background:rgba(247,243,234,.92);border-color:rgba(16,42,67,.13)}
.site-header nav{gap:6px;padding:4px;border:1px solid rgba(16,42,67,.12);border-radius:999px;background:rgba(255,255,255,.68)}
.site-header nav button{min-height:38px;border:0;border-radius:999px;padding:0 15px;background:transparent;font-size:.78rem;font-weight:800;color:var(--ink)}
.site-header nav button:hover,.site-header nav button.active{background:var(--ink);color:#fff}
.brand-button img{width:174px;height:42px;object-fit:contain;object-position:left center}
.destination-workspace{grid-template-columns:minmax(400px,.82fr) minmax(560px,1.18fr);gap:44px;min-height:720px;padding-top:42px}
.destination-copy h1{font-size:clamp(3.7rem,6.3vw,7.2rem);max-width:610px}
.home-action-panel{display:grid;gap:8px;margin-top:18px}
.home-action-card{width:100%;min-height:72px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.7);display:grid;grid-template-columns:38px 1fr 30px;gap:10px;align-items:center;text-align:left;transition:transform .18s ease,border-color .18s ease,background .18s ease}
.home-action-card:hover{transform:translateX(4px);border-color:var(--jade);background:#fff}
.home-action-card>span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e9eee9;color:var(--jade);font:800 .66rem Georgia,serif}
.home-action-card.is-primary>span{background:var(--red);color:#fff}
.home-action-card div{display:grid;gap:2px}.home-action-card strong{font-size:.82rem}.home-action-card small{color:var(--muted);font-size:.68rem;line-height:1.35}.home-action-card i{font-style:normal;text-align:center;color:var(--red);font-size:1rem}
.route-map{min-height:620px;background:#b9cec7;border-radius:32px}.route-map:before{background:radial-gradient(circle 190px at var(--map-x) var(--map-y),rgba(255,252,235,.66),transparent 70%),linear-gradient(145deg,#dceae4,#b8cdc5 55%,#91aaa9)}
.map-steam,.map-city .pulse{animation:none}.map-steam{opacity:.26}.map-city .pulse{opacity:.2}.map-city:hover{transform:translateY(-3px)}
.passport-dashboard,.journey-atlas,.places-page{padding-top:76px}
.next-bite-panel,.next-bite-empty{margin:0 0 30px;border:1px solid rgba(16,42,67,.12);border-radius:22px;background:#fff;box-shadow:0 16px 44px rgba(16,42,67,.08)}
.next-bite-panel>header{padding:22px 24px 18px;display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid var(--line)}
.next-bite-panel>header h3{margin:2px 0 0;font:700 clamp(1.55rem,3vw,2.45rem)/1.05 "Iowan Old Style",Georgia,serif}.next-bite-panel>header>span{color:var(--muted);font-size:.72rem;font-weight:800}
.next-bite-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.next-bite-card{min-width:0;padding:21px 22px;display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;border-right:1px solid var(--line);position:relative}.next-bite-card:last-child{border-right:0}.next-bite-card.adventure{background:linear-gradient(135deg,#fffaf0,#f7ecd1)}
.next-bite-icon{width:42px;height:42px;border:1px solid var(--jade);border-radius:50%;display:grid;place-items:center;color:var(--jade);font:800 .72rem Georgia,serif}.next-bite-card.adventure .next-bite-icon{border-color:var(--gold);background:var(--gold);color:#35270e;font-size:1rem}
.next-bite-card p{margin:0;color:var(--red);font-size:.62rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.next-bite-card h4{margin:4px 0 3px;font-size:1rem;line-height:1.15}.next-bite-card small{display:block;min-height:42px;color:var(--muted);font-size:.67rem;line-height:1.4}.next-bite-card>button{grid-column:2;margin-top:10px;width:max-content;min-height:36px;border:0;border-radius:9px;background:var(--ink);color:#fff;padding:0 11px;font-size:.68rem;font-weight:850}
.next-bite-empty{padding:24px;display:flex;justify-content:space-between;align-items:center}.next-bite-empty h3{margin:2px 0;font-family:"Iowan Old Style",Georgia,serif;font-size:1.6rem}.next-bite-empty p:not(.eyebrow){margin:0;color:var(--muted);font-size:.78rem}
.next-bite-panel.is-compact{margin-bottom:24px;box-shadow:none;background:#fbfaf6}.next-bite-panel.is-compact>header{padding:18px 20px}.next-bite-panel.is-compact>header h3{font-size:1.55rem}.next-bite-panel.is-compact .next-bite-card{padding:17px}
.allergy-gate{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:760px;margin:0 0 14px}.allergy-gate button{min-height:76px;padding:13px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;display:grid;text-align:left}.allergy-gate button span{font-size:1rem;font-weight:850}.allergy-gate button small{color:var(--muted)}.allergy-gate button.active{border:2px solid var(--red);padding:12px 15px;background:#fff5f1}.allergen-gate-panel{max-width:860px;margin:0 0 16px;padding:18px;border:1px solid #e9b7ae;border-radius:14px;background:#fff8f5}.allergen-gate-panel>p{margin:0 0 11px;color:#8d3e34;font-size:.75rem}.advanced-preferences{max-width:960px;margin:18px 0;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.68);overflow:hidden}.advanced-preferences>summary{padding:15px 17px;cursor:pointer;display:flex;justify-content:space-between;font-weight:850}.advanced-preferences>summary small{color:var(--muted);font-weight:600}.advanced-preferences[open]>summary{border-bottom:1px solid var(--line)}.advanced-preferences>.pref-group{padding:18px 18px 0}
.adventure-panel{margin:0 0 18px;padding:15px 17px;border:1px solid #dfc37f;border-radius:14px;background:linear-gradient(135deg,#fffaf0,#f6e8c7);display:flex;gap:13px;align-items:center}.adventure-panel>span{width:46px;height:46px;border:2px solid #9b7625;border-radius:50%;display:grid;place-items:center;color:#8a6517;font:800 1.2rem Georgia,serif;transform:rotate(-5deg)}.adventure-panel p{margin:0;color:#85651f;font-size:.62rem;font-weight:900;letter-spacing:.08em}.adventure-panel h3{margin:2px 0;font-size:1rem}.adventure-panel small{color:#6d6042}
.place-facts{margin:13px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden}.place-facts>div{padding:9px 10px;background:#fbfaf6}.place-facts dt{color:var(--muted);font-size:.55rem;font-weight:900;text-transform:uppercase}.place-facts dd{margin:2px 0 0;font-size:.66rem;font-weight:700}
.scan-group{margin-top:12px;border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}.scan-group>header{padding:12px 14px;display:flex;gap:10px;align-items:center;background:#f4f1e9}.scan-group>header>span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--jade);color:#fff;font-size:.66rem;font-weight:900}.scan-group h3{margin:0;font-size:.82rem}.scan-group header p{margin:1px 0 0;color:var(--muted);font-size:.65rem}.scan-group .scan-match{margin:0;border:0;border-radius:0}.scan-group.needs-ask>header>span{background:#a56f17}.scan-group.needs-ask>header{background:#fff5df}
.courage-dialog{width:min(560px,calc(100vw - 28px));border-radius:26px;overflow:hidden;background:#122e42;color:#fff;box-shadow:0 34px 100px rgba(0,0,0,.35)}.courage-sheet{min-height:560px;padding:48px 40px 36px;text-align:center;position:relative;overflow:hidden;background:radial-gradient(circle at 50% 25%,rgba(215,168,74,.3),transparent 32%),linear-gradient(160deg,#183d51,#0d2639)}.courage-close{position:absolute;right:17px;top:17px;z-index:3;border-color:rgba(255,255,255,.24);background:rgba(255,255,255,.08);color:#fff}.courage-rays{position:absolute;left:50%;top:135px;width:360px;height:360px;transform:translate(-50%,-50%);background:repeating-conic-gradient(from 0deg,rgba(215,168,74,.12) 0 4deg,transparent 4deg 14deg);border-radius:50%;animation:courage-arrive .9s cubic-bezier(.2,.8,.2,1) both}.courage-mark{position:relative;width:142px;height:142px;margin:15px auto 28px;border:3px double var(--gold);border-radius:50%;display:grid;place-items:center;align-content:center;color:var(--gold);transform:rotate(-6deg);animation:courage-stamp .8s cubic-bezier(.2,.95,.3,1.25) both}.courage-mark span{font:800 4.1rem/1 Georgia,serif}.courage-mark small{font-size:.56rem;letter-spacing:.2em}.courage-sheet .eyebrow{color:#e7c878}.courage-sheet h2{margin:0;font:700 clamp(2.6rem,7vw,4.3rem)/.95 "Iowan Old Style",Georgia,serif}.courage-sheet h3{margin:13px 0 8px;color:#f4d994;font-size:1.1rem}.courage-sheet>p:not(.eyebrow){max-width:390px;margin:0 auto 17px;color:rgba(255,255,255,.72)}.courage-meta{display:flex;justify-content:center;gap:8px}.courage-meta span{padding:5px 9px;border:1px solid rgba(255,255,255,.2);border-radius:99px;font-size:.62rem}.courage-actions{display:flex;justify-content:center;gap:8px;margin-top:25px}.courage-actions .primary-button{background:var(--gold);border-color:var(--gold);color:#2d220d}
.courage-actions .secondary-button{color:var(--ink)}
@keyframes courage-stamp{0%{opacity:0;transform:scale(1.7) rotate(-18deg)}65%{opacity:1;transform:scale(.92) rotate(-6deg)}100%{transform:scale(1) rotate(-6deg)}}@keyframes courage-arrive{from{opacity:0;transform:translate(-50%,-50%) scale(.5) rotate(-25deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}
@media(max-width:1050px){.destination-workspace{grid-template-columns:1fr;min-height:auto}.route-map{min-height:540px}.next-bite-grid{grid-template-columns:1fr}.next-bite-card{border-right:0;border-bottom:1px solid var(--line)}.next-bite-card:last-child{border-bottom:0}.next-bite-card small{min-height:0}.site-header nav{margin-left:auto}}
@media(max-width:720px){body{padding-bottom:74px}.site-header nav{display:none}.site-header{height:62px;padding:0 14px}.brand-button img{width:150px}.version{display:none}.header-actions{margin-left:auto}.destination-workspace{padding:27px 0 24px;gap:24px}.destination-copy h1{font-size:clamp(3rem,15vw,4.7rem);margin-bottom:17px}.city-search{margin-top:20px}.home-action-card{min-height:68px}.route-map{min-height:430px;border-radius:21px}.map-label{top:15px;left:17px}.section-heading{grid-template-columns:1fr}.passport-dashboard,.journey-atlas,.places-page{padding-top:40px}.next-bite-panel>header{align-items:flex-start;flex-direction:column;gap:8px}.next-bite-card{grid-template-columns:38px 1fr;padding:16px}.next-bite-icon{width:36px;height:36px}.next-bite-empty{align-items:stretch;flex-direction:column;gap:14px}.allergy-gate{grid-template-columns:1fr}.advanced-preferences>summary{align-items:flex-start;flex-direction:column;gap:2px}.diet-grid,.preference-grid{grid-template-columns:repeat(2,1fr)}.place-facts{grid-template-columns:1fr}.courage-dialog{width:100vw;height:100dvh;border-radius:0}.courage-sheet{height:100dvh;padding:70px 22px 96px;display:flex;flex-direction:column;justify-content:center}.courage-mark{width:126px;height:126px}.courage-actions{flex-direction:column}.courage-actions>*{width:100%}#mobileNav{grid-template-columns:repeat(4,1fr)}}
@media(prefers-reduced-motion:reduce){.home-action-card,.map-city{transition:none}.courage-rays,.courage-mark{animation:none}}
@media(max-width:760px){#mobileNav{grid-template-columns:repeat(4,1fr)}}
