@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700&family=Noto+Serif+JP:wght@500;600;700&display=swap');
:root{--paper:#fbf8f2;--ink:#49483e;--muted:#747168;--rose:#a85864;--pink:#f3dfe0;--line:#e7e1d7;--sage:#e6eade}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans JP',sans-serif;font-size:14px;line-height:1.9}a{color:inherit;text-underline-offset:4px}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--rose);outline-offset:5px}header,main,footer{max-width:1240px;margin:auto}header{height:100px;padding:0 50px;display:flex;justify-content:space-between;align-items:center}.brand{text-decoration:none;font-family:'Noto Serif JP',serif;font-size:22px;font-weight:600;display:flex;align-items:center;gap:10px}.flower{color:var(--rose);font-size:32px}.brand-small{font:10px 'Noto Sans JP',sans-serif;letter-spacing:1px;padding-left:14px;color:var(--muted)}nav{display:flex;gap:30px;font-size:12px}nav a{text-decoration:none}nav a:hover{color:var(--rose)}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;align-items:center;padding:45px 50px 65px}.eyebrow{font-size:10px;font-weight:600;letter-spacing:2.4px;color:var(--rose);margin:0 0 20px}h1,h2,h3{font-family:'Noto Serif JP',serif;font-weight:600}h1{font-size:clamp(30px,3.4vw,44px);line-height:1.8;letter-spacing:.04em;margin:0 0 24px}h1 span{position:relative;white-space:nowrap}h1 span:after{content:'';position:absolute;bottom:2px;left:0;right:0;background:#edc9ce;height:9px;z-index:-1;border-radius:50%}.intro{color:var(--muted);line-height:2.2;font-size:13px}.primary{display:inline-flex;gap:34px;align-items:center;border-radius:7px;background:var(--rose);color:white;padding:13px 22px;text-decoration:none;margin-top:18px;font-size:12px}.primary:hover{background:#884550}.hero-foot{font-size:10px;letter-spacing:1.5px;margin-top:24px;color:var(--muted)}.hero-art{position:relative}.hero-art img{width:100%;display:block}.art-note{position:absolute;bottom:14%;right:2%;font-family:serif;transform:rotate(-7deg);font-size:15px;color:var(--rose)}.ribbon{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 50px;display:flex;justify-content:space-between;font-size:11px;letter-spacing:1px;color:var(--muted)}.ribbon span:last-child{font-size:9px}.section{padding:70px 50px;scroll-margin-top:20px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px}h2{font-size:28px;margin:0 0 12px;letter-spacing:.04em}.section-head p:not(.eyebrow),.tips>div>p:not(.eyebrow){color:var(--muted);font-size:12px;margin:0}.section .eyebrow{margin-bottom:12px}.tabs{display:flex;border:1px solid var(--line);padding:5px;border-radius:12px;gap:4px;background:#fffdf9}.tabs button{border:0;background:transparent;min-width:108px;padding:10px 14px;border-radius:8px;font-size:19px;font-family:'Noto Serif JP',serif}.tabs button span{display:block;font-size:9px;font-family:'Noto Sans JP',sans-serif;margin-top:3px}.tabs button[aria-pressed=true]{background:var(--rose);color:white}.plan-note{display:flex;gap:14px;background:#f0ede5;border-radius:8px;padding:15px 20px;margin-bottom:27px;font-size:11px;color:var(--muted)}.plan-note>span{font-size:25px}.plan-note p{margin:0}.plan-note strong{color:var(--ink);font-weight:500}.day{border:1px solid var(--line);border-radius:12px;background:#fffdf9;display:grid;grid-template-columns:250px 1fr;overflow:hidden;margin:18px 0}.day-intro{padding:25px;background:var(--day-bg)}.day-number{font-size:10px;letter-spacing:2px;font-weight:600;color:var(--rose)}.day-icon{font-size:31px;line-height:1.5;margin:13px 0 8px}.day-intro h3{font-size:23px;margin:0 0 4px}.day-sub{font-size:11px;margin:0 0 15px}.day-meta{font-size:10px;color:var(--muted);line-height:2}.day-body{padding:25px 30px}.route{font-size:11px;color:var(--rose);letter-spacing:.04em;margin:0 0 17px}.stop{display:grid;grid-template-columns:58px 1fr;gap:14px;position:relative;padding-bottom:16px}.stop:not(:last-child):before{content:'';position:absolute;left:51px;top:20px;bottom:0;border-left:1px dashed #d9c5c2}.time{font-size:10px;color:var(--muted);padding-top:3px}.stop h4{font-weight:600;font-size:13px;margin:0 0 3px}.stop p{font-size:11px;color:var(--muted);margin:0}.map-link{font-size:10px;white-space:nowrap;color:var(--rose);display:inline-block;margin-top:4px;text-decoration:none}.map-link:hover{text-decoration:underline}.day-details{border-top:1px dashed var(--line);padding-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.day-details p{font-size:10px;margin:0;color:var(--muted)}.day-details b{font-weight:500;color:var(--ink)}.transport{margin:12px 0 0;font-size:10px;color:var(--muted)}.transport a{color:var(--rose)}.print-row{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted);margin-top:26px}.text-button{border:0;border-bottom:1px solid #ba9699;background:none;font-size:11px;padding:5px 0;color:var(--rose)}.taste{border-top:1px solid var(--line);background:#f4f0e8}.handwritten{font-family:serif;font-size:18px;transform:rotate(-5deg);color:var(--rose)}.food-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}.food-art{height:115px;border-radius:50% 50% 42% 42%;display:flex;align-items:center;justify-content:center;font-family:serif;font-size:64px;color:#876e5e;margin:12px 15px 22px}.peach{background:#eedfcd}.lavender{background:#e5dfeb}.sage{background:#dfe6d6}.butter{background:#eee4c9}.food-grid small{font-size:8px;letter-spacing:1.5px;color:var(--muted)}.food-grid h3{font-size:18px;margin:6px 0}.food-grid p{font-size:11px;color:var(--muted)}.food-tag{font-size:9px;border:1px solid #ddd5c8;border-radius:30px;padding:4px 10px}.fine{font-size:10px;color:var(--muted);margin:25px 0 0}.tips-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:30px}.tips-grid article>span{font-family:serif;font-size:25px;color:#b98a8c}.tips-grid h3{font-size:14px}.tips-grid p{font-size:11px;color:var(--muted)}.tips-grid b{font-weight:500;color:var(--ink)}.closing{text-align:center;background:#f3e8e5;margin:0 50px 45px;padding:32px 20px;border-radius:60% 60% 12px 12px / 15% 15% 12px 12px}.closing h2{font-size:20px;margin-top:10px}.closing p{font-size:12px;color:var(--muted)}.sources{margin:0 50px 40px;font-size:10px;color:var(--muted)}summary{cursor:pointer}.sources div{display:flex;gap:20px;flex-wrap:wrap}footer{padding:25px 50px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px}footer .brand{font-size:16px}footer>span{font-size:8px;letter-spacing:1.6px}footer>a:last-child{font-size:10px;text-decoration:none}@media(max-width:900px){header{padding:0 26px}.brand-small{display:none}.hero{padding:25px 26px 45px}.section{padding:50px 26px}.ribbon{padding:15px 26px}.section-head{align-items:flex-start;flex-direction:column}.tabs{width:100%}.tabs button{flex:1}.day{grid-template-columns:210px 1fr}.day-body{padding:22px}.food-grid{gap:15px}.tips-grid{grid-template-columns:1fr 1fr}.closing{margin-left:26px;margin-right:26px}.sources{margin-left:26px;margin-right:26px}}@media(max-width:600px){header{height:75px;padding:0 20px}.brand{font-size:18px}.flower{font-size:25px}nav{gap:15px;font-size:10px}nav a:last-child{display:none}.hero{grid-template-columns:1fr;padding:30px 24px 18px;gap:5px}.hero h1{font-size:31px}.hero .eyebrow{font-size:9px}.intro{font-size:12px}.hero-art{max-width:360px;width:100%;margin:-10px auto 0}.hero-foot{margin-bottom:0}.ribbon{padding:13px 20px;justify-content:center}.ribbon span:not(:first-child){display:none}.section{padding:40px 20px}h2{font-size:24px}.day{grid-template-columns:1fr}.day-intro{padding:18px 22px;display:grid;grid-template-columns:1fr auto}.day-number{grid-column:1}.day-icon{grid-column:2;grid-row:1/4;margin:3px 0;align-self:center;font-size:38px}.day-intro h3{font-size:22px}.day-sub{margin-bottom:6px}.day-meta{grid-column:1/3}.day-body{padding:22px 18px}.day-details{grid-template-columns:1fr}.print-row{display:block}.food-grid{grid-template-columns:1fr 1fr;gap:28px 18px}.food-art{height:100px;margin:5px 8px 16px}.handwritten{display:none}.tips-grid{gap:16px}.closing{margin:0 20px 30px;padding:28px 18px}.closing h2{font-size:17px}.sources{margin:0 20px 30px}footer{padding:20px;flex-wrap:wrap}footer>span{display:none}.tabs button{min-width:0;padding:9px}.plan-note{padding:13px;font-size:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{@page{margin:13mm}body{background:white;font-size:11px}header,nav,.hero,.ribbon,.tabs,.print-row,.taste,.tips,.closing,footer,.sources{display:none}.section{padding:0}.plan .section-head{margin-bottom:15px}.day{break-inside:avoid;grid-template-columns:170px 1fr;box-shadow:none}.day-intro,.day-body{padding:15px}.day-meta,.stop p,.day-details p,.transport{font-size:10px}.plan-note{background:none;border:1px solid #ddd}.map-link{color:#555}h2{font-size:22px}.eyebrow{display:none}}

/* A brief sakura welcome, drawn with lightweight vector petals. */
.welcome{position:fixed;inset:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:0;border:0;overflow:hidden;background:#fbf8f2;color:var(--ink);opacity:1;transition:opacity .65s ease}.welcome::backdrop{background:var(--paper)}.welcome[open]{display:grid;place-items:center}.welcome.is-leaving{opacity:0;pointer-events:none}.welcome-paper{position:absolute;inset:0;background:radial-gradient(ellipse at 20% 20%,#f4e2e3 0,transparent 48%),radial-gradient(ellipse at 85% 85%,#efe6d9 0,transparent 50%)}.welcome-paper:after{content:'';position:absolute;inset:22px;border:1px solid #b58c7c33;border-radius:2px}.welcome-content{position:relative;text-align:center;padding:30px 24px 95px;animation:welcome-reveal 1.1s ease both}.welcome-kicker{font-size:9px;letter-spacing:.3em;color:var(--rose)}.welcome-flower{width:135px;height:135px;margin:22px auto 10px;display:block;animation:flower-bloom 1.6s cubic-bezier(.2,.6,.3,1) both}.welcome-dedication{font-size:11px;letter-spacing:.15em;color:var(--muted);margin:12px 0 18px}.welcome h2{font-size:clamp(26px,4vw,42px);font-weight:500;letter-spacing:.1em;margin:0 0 12px}.welcome #welcome-description{font-family:'Noto Serif JP',serif;color:#87766f;font-size:13px;letter-spacing:.12em}.welcome-line{display:flex;align-items:center;justify-content:center;gap:15px;color:#bd8894;margin:28px 0 15px}.welcome-line span{width:42px;height:1px;background:#d9beb7}.welcome-caption{font-size:9px;letter-spacing:.2em;color:#87766f}.welcome-skip{position:absolute;bottom:max(40px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);border:1px solid #b98d94;border-radius:40px;background:#fbf8f2b8;padding:10px 23px;font-size:12px;color:#88525d;white-space:nowrap}.welcome-skip span{margin-left:20px}.welcome-skip small{display:block;font-size:8px;letter-spacing:.15em;color:var(--muted)}.welcome-skip:hover{background:#f1dcdf}.petals{position:absolute;inset:0;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-12%;left:var(--left);width:var(--size);height:calc(var(--size)*1.4);background:linear-gradient(135deg,#edbcc8,#d89eac99);border-radius:85% 0 85% 35%;opacity:0;animation:petal-fall var(--duration) linear var(--delay) infinite;will-change:transform}.petal:nth-child(3n){background:linear-gradient(135deg,#f7d9df,#e9b5bf88)}body.welcome-open{overflow:hidden}@keyframes petal-fall{0%{transform:translate3d(-25px,-4vh,0) rotate(0);opacity:0}12%{opacity:.7}85%{opacity:.55}100%{transform:translate3d(100px,116vh,0) rotate(320deg);opacity:0}}@keyframes welcome-reveal{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes flower-bloom{from{opacity:0;transform:scale(.65) rotate(-22deg)}to{opacity:1;transform:scale(1) rotate(0)}}@media(max-width:600px){.welcome-paper:after{inset:14px}.welcome-flower{width:115px;height:115px}.welcome-content{padding-bottom:90px}.welcome-kicker{font-size:8px}.welcome h2{font-size:27px}.welcome-skip{bottom:32px}#welcome-replay{flex-basis:100%;text-align:left;border:0}}@media(prefers-reduced-motion:reduce){.welcome,.welcome-content,.welcome-flower{animation:none;transition:none}.petal{animation:none;display:none}}@media print{.welcome,.welcome[open]{display:none!important}body.welcome-open{overflow:visible}}

/* Traditional Chinese reads as a quiet second line, below the Japanese. */
.zh-note{display:block;font-family:system-ui,-apple-system,"PingFang TC","Microsoft JhengHei",sans-serif;font-size:11px;font-weight:400;line-height:1.8;letter-spacing:.025em;color:#80766e;margin-top:5px}h2 .zh-note{font-size:12px;margin-top:6px;letter-spacing:.06em}.hero-zh{font-size:13px;margin:-12px 0 22px}.intro .zh-note{max-width:400px;margin-top:12px}.day-sub .zh-note{font-size:10px}.stop h4 .zh-note{font-size:11px;margin-top:2px;margin-bottom:7px}.stop p .zh-note{font-size:10px;margin-top:5px}.welcome h2 .zh-note{font-size:13px;letter-spacing:.13em}.welcome #welcome-description .zh-note{font-size:11px}.welcome-content{padding-bottom:95px}.welcome-flower{margin-top:14px;margin-bottom:6px}.welcome-line{margin-top:20px}.closing .zh-note{margin-top:9px}@media(max-width:600px){.hero-zh{font-size:12px}.welcome h2 .zh-note{font-size:12px}.welcome-flower{width:100px;height:100px}.welcome-dedication{margin-bottom:12px}.welcome-line{margin:16px 0 10px}.welcome-content{padding-top:20px}.stop{padding-bottom:21px}}@media(max-height:650px){.welcome-flower{width:70px;height:70px;margin:5px auto}.welcome-kicker{margin:0}.welcome-dedication{margin:5px 0}.welcome-line{margin:8px 0}.welcome-content{padding:12px 20px 90px}.welcome h2{font-size:26px}.welcome-skip{bottom:24px}}@media print{.zh-note{color:#666;font-size:9px}.stop h4 .zh-note{font-size:10px}}

.winter-note{padding-top:30px;padding-bottom:30px;background:#f4ebe6}.winter-note p,.map-section>p,.stay-note{font-size:12px;color:var(--muted)}.area-choice{display:flex;justify-content:space-between;align-items:center;gap:20px;border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:20px}.area-choice label{font-size:13px}.area-choice select{font:inherit;font-size:12px;padding:12px;background:#fffdf9;border:1px solid #cbbeb3;border-radius:7px;color:var(--ink);max-width:100%}.recommendation{border-top:1px solid #d9cec1;padding-top:14px}.food-grid{grid-template-columns:repeat(3,1fr)}.map-section img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--line);margin-top:25px}.map-section{border-bottom:1px solid var(--line)}@media(max-width:600px){.area-choice{flex-direction:column;align-items:stretch}.food-grid{grid-template-columns:1fr 1fr}.recommendation h3{font-size:16px}}@media print{.winter-note,.map-section,.area-choice{display:none}}
