@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Noto+Sans+TC:wght@400;500;700&family=Noto+Serif+TC:wght@500;600;700&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@500;600;700&family=Noto+Sans+KR:wght@400;500;700&family=Noto+Serif+KR:wght@500;600;700&display=swap');
:root{--paper:#f7f4ec;--green:#5e8c4a;--ink:#1f3a2b;--brick:#b5533c;--line:#d7d9c8;--muted:#62705e;--teal:#4e9a8a}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.8 'Noto Sans TC','Noto Sans JP','Noto Sans KR',sans-serif}a{color:inherit;text-decoration:none}button,a{touch-action:manipulation}button,input,select{font:inherit}button,.button{border:1px solid var(--ink);background:var(--ink);color:white;border-radius:30px;padding:11px 23px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px}button:hover,.button:hover{background:#35553a;color:white}button:disabled{background:#e4e5da;color:#687063;border-color:#d2d6c9;cursor:not-allowed}.button.secondary{background:transparent;color:var(--ink)}:focus-visible{outline:3px solid var(--brick);outline-offset:4px}.skip{position:fixed;top:-100px;background:white;z-index:2000}.skip:focus{top:0}header{border-bottom:1px solid var(--line);padding:20px 5%;display:flex;align-items:center;justify-content:space-between;gap:20px}header .brand{font-weight:700;display:flex;gap:12px;align-items:center;line-height:1.4}.brand img{width:43px}.brand small{display:block;font:10px/1.6 'DM Sans',sans-serif;letter-spacing:2px}nav{display:flex;gap:28px;font-size:14px}nav a{padding:8px 0}nav a[aria-current]{border-bottom:2px solid var(--green);color:#496e36}main{max-width:1240px;margin:auto;padding:0 5% 70px;min-height:70vh}h1,h2,h3{font-family:'Noto Serif TC','Noto Serif JP','Noto Serif KR',serif;line-height:1.5;font-weight:600}h1{font-size:clamp(34px,5vw,64px);margin:15px 0 22px;letter-spacing:.05em}h2{font-size:29px;margin:8px 0 28px}h3{font-size:21px;margin:10px 0}p{margin:10px 0 22px}small,.muted{color:var(--muted)}.eyebrow{font:12px/1.8 'DM Sans',sans-serif;letter-spacing:3px;color:var(--green);text-transform:uppercase}.intro{padding:56px 0 25px}.intro p{max-width:680px;color:var(--muted)}.hero{display:grid;grid-template-columns:1fr 1.1fr;gap:65px;align-items:center;padding:55px 0 60px}.hero h1{font-size:clamp(45px,6vw,78px);line-height:1.45}.hero p{white-space:pre-line;color:var(--muted)}.hero-art{position:relative;padding:18px 18px 0;border:1px solid #9ba98c;border-radius:180px 180px 6px 6px}.hero-art img{width:100%;display:block;border-radius:170px 170px 0 0;min-height:400px;object-fit:cover}.wordmark{font:italic 700 37px/1 'Georgia',serif;letter-spacing:-2px;position:absolute;bottom:33px;right:-15px;color:#fff6dc;transform:rotate(-8deg);text-shadow:1px 2px #35553a}.caption{font-size:11px;color:var(--muted);margin:8px 0}.actions{display:flex;gap:12px;flex-wrap:wrap}.section{padding:45px 0;border-top:1px solid var(--line)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.card{background:#fffdf6;border:1px solid var(--line);border-radius:8px;overflow:hidden}.card-body{padding:23px}.card img{width:100%;aspect-ratio:1.55;object-fit:cover;display:block}.beat{padding:26px 0}.number{font:italic 34px Georgia;color:var(--brick)}.info-panel{display:grid;grid-template-columns:1fr 1.5fr;gap:45px;padding:35px;background:#e9edde;border-radius:8px}.info-list{display:grid;grid-template-columns:1fr 1fr;gap:14px}.info-list p{margin:0}.timeline{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.timeline article{border-top:3px solid var(--green);padding-top:18px}.timeline strong{font:40px Georgia;color:var(--green)}.rules{grid-template-columns:repeat(4,1fr)}details{padding:20px 0;border-bottom:1px solid var(--line)}summary{cursor:pointer;font-weight:500}.tag{display:inline-block;font-size:12px;padding:3px 10px;border-radius:20px;background:#e9edde;color:#435e37}.tag.warn{background:#f5e5cb;color:#795119}.tag.verified{background:#dceee7;color:#245e50}.tag.disabled{background:#ecebe6;color:#686a60}.progress-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:20px 0 10px}.bamboo-progress{display:flex;gap:4px;height:13px;margin-bottom:25px}.bamboo-progress span{flex:1;background:#e0e4d4;border-radius:2px}.bamboo-progress .filled{background:var(--green)}.warning{border-left:3px solid #c98a3d;background:#f5ecd9;padding:15px 20px;font-size:14px;margin:20px 0}.map-wrap{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden}#map{height:400px;background:#e3e9da;z-index:0}.map-toolbar{background:#fffdf6;padding:18px;display:flex;align-items:center;justify-content:space-between;gap:20px}.map-toolbar p{margin:0}.legend{display:flex;gap:20px;flex-wrap:wrap;margin:15px 0;font-size:13px}.map-group{margin:38px 0 20px}.spot-grid{grid-template-columns:repeat(2,1fr)}.spot-card{display:grid;grid-template-columns:160px 1fr}.spot-card img{height:100%;aspect-ratio:auto;object-fit:cover}.spot-card .card-body{padding:18px}.spot-card h3{font-size:19px}.spot-card p{font-size:14px;margin-bottom:12px}.text-button{background:none;border:0;border-radius:0;color:var(--ink);padding:0;min-height:44px;text-decoration:underline}.card button.text-button:hover{background:none;color:var(--green)}.methods .card{width:100%;padding:0;text-align:left;display:block;color:var(--ink);border-radius:8px;background:#fffdf6}.methods .card:hover{border-color:var(--green);transform:translateY(-3px)}.method-visual{height:180px;background:#e9edde;display:flex;justify-content:center;align-items:center;font-size:65px}.method-visual img{height:100%;width:100%;object-fit:contain}.methods .card p{font-size:14px}.passport-layout{display:grid;grid-template-columns:1.6fr 1fr;gap:40px;align-items:start}.stamp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.stamp-cell{text-align:center;padding:12px 6px;border:1px dashed #bcc6ab;border-radius:60px 60px 8px 8px;font-size:12px}.stamp-cell img{width:65px;height:65px;opacity:.25;filter:grayscale(1)}.stamp-cell.collected{background:#e5ecdc;border-style:solid}.stamp-cell.collected img{opacity:1;filter:none}.qr-card{background:#fffdf6;border:1px solid var(--line);border-radius:12px;text-align:center;padding:28px}.qr svg{width:220px;max-width:100%;height:auto;display:block;margin:20px auto}.token{font:11px monospace;overflow-wrap:anywhere}.status{font-weight:700;color:#486e36}.method-icon{font-size:50px}.leaflet-div-icon{background:none;border:0}.pin{background:var(--ink);border:2px solid white;color:white;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;box-shadow:0 2px 6px #0003}.pin.estimate{background:#c98a3d}.pin.pending{background:var(--brick)}.pin.collected{background:var(--teal)}dialog{border:1px solid var(--line);border-radius:16px;padding:28px;max-width:580px;width:calc(100% - 30px);max-height:90dvh;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#17271ec0}dialog img{width:100%;border-radius:6px;max-height:340px;object-fit:contain}.dialog-top{display:flex;justify-content:space-between;align-items:center;gap:20px}.dialog-top button{padding:8px 16px}.dialog-top h2{margin:0;font-size:25px}dialog .actions{margin-top:20px}#notice{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);max-width:90%;width:max-content;background:var(--ink);color:white;padding:15px 25px;border-radius:8px;z-index:1500;display:none}#notice.show{display:block}footer{border-top:1px solid var(--line);padding:30px 5%;display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.error{padding:70px 0;color:var(--brick)}@media(max-width:760px){header{padding:15px 5%;display:block}header .brand{font-size:16px}nav{gap:0;justify-content:space-between;font-size:12px;margin-top:17px}main{padding-bottom:45px}.hero{grid-template-columns:1fr;gap:32px;padding:35px 0}.hero h1{font-size:52px}.hero-art{max-width:500px;width:100%;margin:auto}.hero-art img{min-height:280px}.wordmark{right:0}.grid{grid-template-columns:1fr}.beat{padding:12px 0}.section{padding:32px 0}.info-panel{grid-template-columns:1fr;gap:15px;padding:24px}.info-list{font-size:14px}.timeline{gap:15px}.timeline strong{font-size:30px}.timeline p{font-size:13px}.rules{grid-template-columns:1fr 1fr}.intro{padding:30px 0 15px}.intro h1{font-size:34px}.map-toolbar{display:block}.map-toolbar button{margin-top:12px;width:100%}#map{height:330px}.spot-card{grid-template-columns:110px 1fr}.spot-card .card-body{padding:15px}.methods{grid-template-columns:1fr 1fr;gap:12px}.method-visual{height:145px}.methods .card-body{padding:15px}.methods h3{font-size:17px}.methods .card p{font-size:12px}.passport-layout{grid-template-columns:1fr;gap:30px}.stamp-grid{gap:10px;grid-template-columns:repeat(3,1fr)}.progress-head{font-size:14px}footer{display:block}dialog{padding:22px}.legend{gap:10px}h2{font-size:25px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* AA text colours and controls; decorative illustrations retain the original palette. */
:root{--green:#426934;--brick:#9b402c;--muted:#52614f}
html{scroll-padding-block:1rem}body{overflow-wrap:anywhere}a:not(.button):not(.brand){text-underline-offset:.22em}main a:not(.button),footer a{text-decoration:underline}
:focus-visible{outline:3px solid #9b402c;outline-offset:4px;box-shadow:0 0 0 2px var(--paper)}
button:focus-visible,.button:focus-visible{outline-color:#9b402c}
header{flex-wrap:wrap}header nav{flex-wrap:wrap;gap:10px 24px}header nav a{display:inline-flex;align-items:center;min-height:44px}
#language-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}
#language-form label{font-weight:700}select{min-height:44px;padding:6px 10px;color:var(--ink);background:#fffdf6;border:1px solid #52614f;border-radius:6px;max-width:100%}
#language-form button{font-size:14px;padding:8px 16px}button,.button,select,summary{scroll-margin:24px}summary{min-height:44px}
.grid>*{min-width:0}.hero>*{min-width:0}.timeline{grid-template-columns:repeat(3,minmax(0,1fr))}
.eyebrow{letter-spacing:.12em}.timeline strong{color:var(--green)}.status{color:#426934}
.list-link{display:inline-flex;align-items:center;min-height:44px;margin-bottom:12px}
#notice{position:static;transform:none;max-width:90%;width:auto;margin:16px auto;padding:12px 20px;background:var(--ink);color:white;border-radius:8px;display:block}
#notice:empty{margin:0;padding:0}#notice.show{display:block}#bootstrap-error{margin:20px 5%;border:2px solid var(--brick);padding:20px}#bootstrap-error[hidden]{display:none}
dialog{scroll-padding:20px}.dialog-top{align-items:flex-start}.dialog-top h2{min-width:0}.dialog-top button{flex-shrink:0}#animation-frame img{display:block;width:100%}.pin.estimate{background:#795119}.pin.collected{background:#245e50}.leaflet-control-zoom a{min-width:44px;min-height:44px;line-height:44px}.leaflet-container a{color:#174d3c}.leaflet-control-attribution{color:#222}
@media(max-width:1000px){header{align-items:flex-start}header nav{order:3;width:100%;justify-content:space-between}.hero{gap:28px}.rules{grid-template-columns:repeat(2,minmax(0,1fr))}.spot-card{grid-template-columns:110px minmax(0,1fr)}}
@media(max-width:760px){header{display:flex}header .brand{width:100%}header nav{gap:4px 12px;justify-content:flex-start;font-size:14px;margin-top:0}.hero h1{font-size:clamp(32px,9vw,52px)}.timeline{grid-template-columns:1fr}.timeline p{font-size:16px}.methods{grid-template-columns:1fr}.methods h3{font-size:20px}.methods .card p{font-size:16px}.progress-head{flex-wrap:wrap}.info-list{grid-template-columns:1fr}.spot-card{grid-template-columns:1fr}.spot-card img{height:auto;aspect-ratio:2}.rules{grid-template-columns:1fr}footer a{display:inline-flex;min-height:44px;align-items:center}.dialog-top{flex-wrap:wrap}.stamp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.methods .card:hover{transform:none}*{scroll-behavior:auto!important}}
@media(forced-colors:active){:focus-visible{outline:3px solid Highlight;box-shadow:none}.tag,.pin,.stamp-cell,.bamboo-progress span{border:1px solid CanvasText}.bamboo-progress .filled{background:Highlight}}
.methods .method-title{font-size:21px;margin:10px 0}
.method-diagram{display:block;width:100%;max-height:340px;font-family:inherit}.method-visual .method-diagram{height:100%;width:100%}
@keyframes approach{from{transform:translateX(0)}to{transform:translateX(90px)}}
@keyframes scan{from{transform:translateY(-70px)}to{transform:translateY(70px)}}
@keyframes dispense{from{transform:translateY(0)}to{transform:translateY(65px)}}
.playing .moving{animation:approach 3s ease-in-out infinite alternate}.playing .scan-line{animation:scan 3s linear infinite alternate}.playing .gift{animation:dispense 3s ease-in-out infinite alternate}
@media(max-width:760px){footer>span{display:block}}

html[lang="ja"] body{font-family:'Noto Sans JP','Noto Sans TC',sans-serif}html[lang="ja"] h1,html[lang="ja"] h2,html[lang="ja"] h3{font-family:'Noto Serif JP','Noto Serif TC',serif}html[lang="ko"] body{font-family:'Noto Sans KR','Noto Sans TC',sans-serif}html[lang="ko"] h1,html[lang="ko"] h2,html[lang="ko"] h3{font-family:'Noto Serif KR','Noto Serif TC',serif}
