:root{--ink:#213229;--muted:#637069;--paper:#fffdf7;--cream:#f5efe2;--green:#285f48;--green-dark:#184734;--lime:#c9dc88;--orange:#e87a42;--yellow:#f2c65f;--line:#dcd7c9;font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;color:var(--ink);background:#e9e4d7}*{box-sizing:border-box}html,body,#app-root{width:100%;height:100%;min-height:100vh;min-height:100dvh;margin:0;overflow:hidden;overscroll-behavior:none}body{min-width:320px;background:var(--paper)}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}.app-shell{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:100vh;min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:linear-gradient(135deg,#f8f2e4,#e5efcc)}.skip-link{position:fixed;top:-4rem;left:1rem;z-index:10;padding:.65rem .9rem;color:var(--green-dark);background:white}.skip-link:focus{top:1rem}.site-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:64px;padding:.65rem clamp(1rem,4vw,3rem);border-bottom:1px solid rgba(33,50,41,.12);background:rgba(255,253,247,.9)}.brand{display:flex;align-items:center;gap:.6rem;color:inherit;text-decoration:none}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;color:white;background:var(--green);font-family:serif;font-size:1.2rem}.brand strong,.brand small{display:block}.brand strong{letter-spacing:.1em}.brand small{color:var(--muted);font-size:.67rem}.header-actions{display:flex;align-items:center;gap:.65rem}.prototype-badge{padding:.3rem .55rem;border:1px solid var(--green);border-radius:99px;color:var(--green);font-size:.72rem;font-weight:700}.cart-shortcut{display:inline-flex;gap:.4rem;align-items:center;padding:.45rem .7rem;border:1px solid var(--green);border-radius:99px;color:var(--green-dark);background:#fff;font-weight:800}.cart-shortcut span{display:grid;place-items:center;min-width:1.35rem;height:1.35rem;border-radius:50%;color:white;background:var(--orange);font-size:.75rem}.journey{padding:.55rem clamp(1rem,4vw,3rem);background:rgba(255,253,247,.72)}.journey ol{display:flex;justify-content:center;gap:clamp(.45rem,3vw,2.5rem);margin:0;padding:0;list-style:none}.journey li{display:flex;align-items:center;gap:.35rem;color:#87928a;font-size:.76rem;font-weight:800;white-space:nowrap}.journey li span{display:grid;place-items:center;width:22px;height:22px;border:1px solid currentColor;border-radius:50%;font-size:.68rem}.journey .is-current{color:var(--green)}.journey .is-done{color:var(--orange)}.journey .is-done span{color:white;background:var(--orange);border-color:var(--orange)}.game-main{min-height:0;display:grid;place-items:center;padding:clamp(.75rem,2vh,1.5rem) clamp(.8rem,4vw,3rem);overflow:hidden}.game-scene{width:min(100%,980px);max-height:100%;display:grid;grid-template-columns:minmax(190px,.85fr) minmax(0,1.15fr);align-items:stretch;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.94);box-shadow:0 16px 42px rgba(43,60,48,.12)}.game-scene[hidden]{display:none}.scene-art{position:relative;display:grid;place-items:center;min-height:300px;border-radius:17px 0 0 17px;background:linear-gradient(#dfeac7 0 62%,#d8cfbb 62%);color:white;font-family:serif;font-size:1.5rem;font-weight:800}.scene-art-town:before{content:"";position:absolute;width:58%;height:48%;bottom:20%;border:4px solid var(--ink);background:#f7e8bf;box-shadow:inset 0 34px var(--orange)}.scene-art-town:after{content:"";position:absolute;width:26%;height:26%;bottom:20%;border:4px solid var(--ink);border-bottom:0;background:#87af9d}.sun{position:absolute;top:12%;right:17%;width:45px;height:45px;border-radius:50%;background:var(--yellow)}.shop-sign{z-index:1;padding:.35rem .7rem;color:var(--ink);background:#fff9e5;border:2px solid var(--ink);transform:translateY(-45%)}.road{position:absolute;right:0;bottom:0;left:0;height:16%;border-top:3px solid var(--ink);background:#d8d0bd}.scene-art-community{background:linear-gradient(135deg,#dfeac7,#b7d3a8)}.scene-art-community:before{content:"五甲";display:grid;place-items:center;width:130px;height:130px;border:4px solid var(--ink);border-radius:50%;color:var(--green-dark);background:var(--lime)}.scene-card{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:clamp(1rem,3vw,2rem)}.scene-card-wide{width:100%;grid-column:1 / -1}.eyebrow{margin:0 0 .4rem;color:var(--green);font-size:.72rem;font-weight:800;letter-spacing:.14em}h1,h2,h3{font-family:"Iowan Old Style","Noto Serif TC",serif}h1,h2{margin:0;font-size:clamp(1.6rem,3.5vw,2.35rem);line-height:1.15}h3{margin:.6rem 0 .35rem;font-size:1.5rem}.scene-copy{margin:.65rem 0;color:var(--muted);font-size:.9rem;line-height:1.55}.tag{align-self:flex-start;margin:.65rem 0 0;padding:.22rem .5rem;border-radius:4px;color:var(--green);background:#edf3e6;font-size:.72rem;font-weight:800}fieldset{margin:.7rem 0;padding:0;border:0}.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0)}.location-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.location-option{position:relative;display:block}.location-option input{position:absolute;opacity:0}.location-option span{display:block;min-height:58px;padding:.55rem .65rem;border:1px solid var(--line);border-radius:9px;background:var(--paper)}.location-option strong,.location-option small{display:block}.location-option small{margin-top:.15rem;color:var(--muted);font-size:.74rem;line-height:1.35}.location-option input:checked+span{border-color:var(--green);outline:2px solid rgba(40,95,72,.18);background:#f3f7ec}.location-option input:focus-visible+span{outline:3px solid var(--yellow)}.consent{display:flex;gap:.45rem;align-items:flex-start;margin:.6rem 0 .8rem;color:var(--muted);font-size:.8rem;line-height:1.4}.consent input{width:17px;height:17px;accent-color:var(--green)}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:42px;padding:.6rem .95rem;border:1px solid transparent;border-radius:7px;font-size:.9rem;font-weight:800}.primary{color:white;background:var(--green)}.secondary{color:var(--green);border-color:var(--green);background:white}.confirm{color:white;background:var(--orange)}.scene-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:auto;padding-top:.5rem}.scene-title-row{display:flex;align-items:start;justify-content:space-between;gap:1rem}.menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin:.25rem 0 .6rem}.menu-item{display:flex;flex-direction:column;min-height:142px;padding:.8rem;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.menu-item h3{margin:.25rem 0;font-size:1.1rem}.menu-item p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.4}.menu-item footer{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-top:auto;padding-top:.5rem}.price-pending{color:var(--orange);font-size:.7rem;font-weight:800}.add-item{min-height:34px;padding:.4rem .6rem}.pager{display:flex;justify-content:center;align-items:center;gap:.7rem;font-size:.82rem}.cart-cta{align-self:center;margin-top:.6rem}.empty-cart{display:grid;justify-items:center;padding:1rem;color:var(--muted);text-align:center}.empty-cart span{font-family:serif;font-size:2rem}.empty-cart p{margin:.2rem 0;font-size:.85rem}.cart-lines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;margin:0;padding:0;list-style:none}.cart-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;padding:.65rem;border:1px solid var(--line);border-radius:9px}.cart-line strong{font-size:.85rem}.cart-line small{display:block;color:var(--muted);font-size:.72rem}.quantity{display:flex;align-items:center;gap:.3rem}.quantity button{width:27px;height:27px;padding:0;border:1px solid var(--line);border-radius:50%;background:white;color:var(--green-dark)}.remove{margin-top:.2rem;padding:0;border:0;color:#8b5141;background:none;font-size:.72rem;text-decoration:underline}.cart-summary{display:flex;justify-content:space-between;padding:.65rem 0;font-size:.82rem}.cart-summary strong{color:var(--orange)}.eligibility{display:flex;gap:.5rem;align-items:flex-start;margin:.4rem 0;padding:.65rem;border-radius:7px;color:var(--muted);background:var(--cream)}.eligibility p{margin:0;font-size:.78rem;line-height:1.4}.status-dot{width:8px;height:8px;flex:0 0 auto;margin-top:.25rem;border-radius:50%;background:#9ba29d}.eligibility.is-eligible{color:var(--green-dark);background:#e8f1e3}.eligibility.is-eligible .status-dot{background:#3d8b5f}.eligibility.is-blocked{color:#7a4434;background:#f8e7dd}.eligibility.is-blocked .status-dot{background:var(--orange)}.checkout-actions{justify-content:center}.fine-print{margin:.55rem 0 0;color:#7a817c;font-size:.72rem;line-height:1.35;text-align:center}.result-card{align-items:center;text-align:center}.result-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;color:white;background:var(--green);font-size:1.8rem}.result-card dl{display:flex;gap:2rem;justify-content:center;margin:.75rem 0}.result-card dt{color:var(--muted);font-size:.72rem}.result-card dd{margin:.15rem 0;font-weight:800}footer{display:flex;justify-content:space-between;gap:1rem;padding:.45rem clamp(1rem,4vw,3rem);color:#d5ded8;background:var(--ink);font-size:.68rem}.toast{position:fixed;right:1rem;bottom:max(1rem,env(safe-area-inset-bottom));z-index:8;max-width:300px;padding:.75rem .9rem;border-radius:8px;color:white;background:var(--ink);opacity:0;transform:translateY(15px);pointer-events:none}.toast.is-visible{opacity:1;transform:none}@media (max-width:680px){.prototype-badge{display:none}.journey ol{justify-content:space-between;gap:.2rem}.journey li{font-size:0}.game-main{padding:.55rem .7rem}.game-scene{grid-template-columns:1fr}.scene-art{display:none}.scene-card{padding:1rem}.location-grid,.menu-grid,.cart-lines{grid-template-columns:1fr}.menu-item{min-height:116px}.scene-copy{font-size:.84rem}.pager .button{min-height:38px;padding:.5rem .6rem}}@media (max-height:680px) and (min-width:681px){.site-header{min-height:54px;padding-block:.35rem}.journey{padding-block:.3rem}.game-main{padding-block:.45rem}.scene-art{min-height:230px}.scene-card{padding:1rem 1.25rem}.scene-copy{margin:.4rem 0}.location-option span{min-height:48px;padding:.4rem .55rem}.consent{margin:.4rem 0}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
