:root{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Noto Sans TC","PingFang TC",sans-serif;color:#20392e;background:#e9ebe2;--ink:#20392e;--muted:#6c786d;--paper:#f8f7ef;--green:#284d3a;--lime:#d9ef9a;--line:#dce0d1}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;color:inherit}button:disabled{opacity:.55;cursor:not-allowed}button,input,select{min-height:44px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #89ad54;outline-offset:3px}a{color:inherit}[hidden]{display:none!important}.app-shell{max-width:540px;min-height:100svh;margin:auto;background:var(--paper);padding:0 24px 104px;box-shadow:0 0 60px #233f2910}.staff-shell{max-width:680px;margin:auto;padding:0 24px 40px}.topbar{height:96px;display:flex;align-items:center;justify-content:space-between}.brand{text-decoration:none;display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;letter-spacing:1px}.brand small{font-size:8px;letter-spacing:1.5px;display:block;margin-top:4px}.brand-mark{border:1.5px solid var(--green);border-radius:50%;width:41px;height:41px;display:grid;place-items:center;transform:rotate(-9deg);font-size:23px}.avatar{border:1px solid var(--line);background:transparent;border-radius:50%;width:36px;min-height:36px;font-size:16px}.demo-banner{font-size:11px;border:1px dashed #bac8ab;border-radius:7px;padding:8px 11px;margin-bottom:22px;color:#52634d;background:#edf1df}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;text-transform:uppercase}.hero{position:relative;padding:5px 0 28px;overflow:hidden}.hero h1{font-size:36px;letter-spacing:-1.5px;line-height:1.35;margin:13px 0 10px;font-weight:850}.hero h1 em{font-style:normal;background:linear-gradient(transparent 64%,var(--lime) 64%)}.hero p,.intro{font-size:13px;line-height:1.8;color:var(--muted);margin:0}.hero-art{width:138px;height:139px;position:absolute;right:-7px;bottom:32px;transform:rotate(-5deg)}.hero-art .sun{position:absolute;right:18px;top:1px;width:39px;height:39px;border-radius:50%;background:#e7c65e}.hero-art .house{position:absolute;bottom:10px;width:57px;height:65px;background:#d8e4c7;border:1px solid #64846b}.hero-art .house:before{content:"";position:absolute;left:-5px;top:-19px;width:65px;height:23px;background:#617d5a;clip-path:polygon(16% 0,84% 0,100% 100%,0 100%)}.hero-art .house:after{content:"";position:absolute;width:13px;height:28px;background:var(--paper);bottom:0;left:11px;border:1px solid #64846b}.hero-art .house.second{left:60px;height:46px;bottom:10px;background:#e9bb91;width:58px;transform:rotate(7deg)}.hero-art .house.second:before{background:#c2856c}.hero-art .ground{position:absolute;bottom:8px;left:-12px;width:154px;height:1px;background:#64846b}.hero-art .tree{position:absolute;width:30px;height:45px;right:0;bottom:6px;border-radius:50%;background:#95ad72;border:1px solid #64846b}.hero-art .tree:after{content:"";position:absolute;height:29px;width:1px;background:#64846b;bottom:-7px;left:14px}.passport-card{background:var(--green);color:#fffdf2;border-radius:20px;padding:24px;position:relative;overflow:hidden}.passport-card:after{content:"HOMEI";position:absolute;right:-5px;bottom:27px;font-size:77px;letter-spacing:-4px;opacity:.04;font-weight:900}.card-top,.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.card-top .eyebrow{color:#c9d7b9}.tag{border:1px solid #ffffff50;font-size:10px;border-radius:99px;padding:5px 9px;white-space:nowrap}.passport-count{display:flex;align-items:baseline;gap:8px;margin:14px 0 5px}.passport-count strong{font-size:57px;line-height:1.15;letter-spacing:-2px;font-weight:600}.passport-count span,.progress-caption{color:#cad6c7;font-size:13px}.progress-track{height:4px;border-radius:8px;background:#ffffff20;margin-top:17px;overflow:hidden}.progress-track progress{display:block;width:100%;height:4px;border:0;appearance:none}.progress-track progress::-webkit-progress-value,.progress-track progress::-moz-progress-bar{background:var(--lime)}.progress-caption{font-size:11px;display:flex;justify-content:space-between;margin-top:10px}.primary{background:var(--lime);color:var(--ink);font-weight:750;padding:14px 19px;border-radius:12px;min-height:50px;display:flex;align-items:center;justify-content:center;text-decoration:none}.passport-card .primary,.full{width:100%}.passport-card .primary{margin-top:22px}.secondary{display:block;border:1px solid #c7cebc;background:transparent;border-radius:10px;padding:10px 16px;font-size:13px;font-weight:650;text-align:center;text-decoration:none}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:27px 0 16px}.section-heading h2{font-size:19px;margin:0}.section-heading span,.note{font-size:11px;color:var(--muted);line-height:1.8}.stamp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stamp-slot{border:1px dashed #c3c9b6;border-radius:12px;text-align:center;padding:16px 5px 12px;background:#f2f1e7}.stamp-slot .stamp-icon{width:54px;height:54px;border:1px solid #cad1bd;border-radius:50%;display:grid;place-items:center;margin:0 auto 10px;font-size:24px;color:#9aa68c}.stamp-slot.collected{border-style:solid;background:#e9efdb;border-color:#a4b48d}.stamp-slot.collected .stamp-icon{color:var(--green);border:2px solid var(--green);outline:1px solid #63835b;outline-offset:3px;transform:rotate(-10deg);background:#dbe8bd}.stamp-slot strong{font-size:11px;display:block}.stamp-slot small{font-size:9px;color:var(--muted);display:block;margin-top:5px}.text-button{background:transparent;text-decoration:underline;text-underline-offset:4px;padding:0;color:var(--green);font-size:12px;min-height:34px}.shop-card{border:1px solid var(--line);border-radius:15px;padding:16px;background:#fffdf6;margin:12px 0;display:flex;align-items:center;gap:15px;text-align:left;width:100%}.shop-art{width:68px;height:74px;flex:0 0 68px;border-radius:11px;display:grid;place-items:center;font-size:31px}.peach{background:#efd5be}.sage{background:#dfe8c9}.yellow{background:#f2e6b8}.shop-copy{flex:1}.shop-copy .category{color:var(--muted);font-size:9px;letter-spacing:.5px}.shop-copy h3{margin:5px 0;font-size:16px}.shop-copy p{font-size:11px;line-height:1.5;color:var(--muted);margin:0}.shop-arrow{font-size:21px;color:#6e8160}.page-title{font-size:29px;margin:8px 0}.page-footer{text-align:center;font-size:9px;letter-spacing:.6px;color:#939b87;line-height:1.9;padding-top:30px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,540px);background:#f9f9f1ed;backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;z-index:5;padding:10px 16px max(10px,env(safe-area-inset-bottom))}.bottom-nav button{flex:1;background:transparent;color:#8d9681;font-size:10px;display:flex;align-items:center;flex-direction:column;gap:4px;padding:4px}.bottom-nav button span{font-size:24px;height:27px}.bottom-nav button.selected{color:var(--green);font-weight:800}.bottom-nav button.selected span{background:#e3eccd;border-radius:8px;width:47px}.coupon-teaser{display:flex;gap:12px;align-items:center;background:#eaf0dc;border-radius:13px;padding:15px;margin-top:20px}.coupon-teaser>span{font-size:24px;background:#d4e3b4;border-radius:10px;padding:9px}.coupon-teaser div{flex:1}.coupon-teaser strong{font-size:12px}.coupon-teaser p{font-size:11px;color:var(--muted);margin:3px 0}.wheel-panel{margin-top:28px;border:1px solid #d2ddbd;border-radius:18px;background:#fffdf5;padding:26px;text-align:center}.wheel{width:220px;height:220px;border-radius:50%;margin:0 auto 25px;display:grid;place-items:center;background:conic-gradient(#e9bc8f 0 60deg,#d8eab8 60deg 120deg,#e7cf83 120deg 180deg,#b8d9c0 180deg 240deg,#eec9cf 240deg 300deg,#b9d5e8 300deg);border:8px solid #fffdf5;box-shadow:0 0 0 1px #9eaf8d,0 8px 20px #20392e20;position:relative;color:#284d3a;font-weight:900;font-size:45px}.wheel:after{content:"";position:absolute;top:-17px;left:calc(50% - 14px);border-left:14px solid transparent;border-right:14px solid transparent;border-top:29px solid var(--green)}.wheel span{width:77px;height:77px;display:grid;place-items:center;border-radius:50%;background:#fffdf5;border:1px solid #c8d3b6}.wheel.spinning{animation:wheel-spin 1s cubic-bezier(.22,.72,.15,1) forwards}@keyframes wheel-spin{to{transform:rotate(1080deg)}}.wheel-panel.locked{opacity:.64}.coupon-card{border:2px dashed #94aa78;border-radius:18px;background:#fffdf4;padding:23px;margin-top:24px;position:relative;overflow:hidden}.coupon-card:before{content:"DIGITAL COUPON";position:absolute;right:-23px;top:25px;transform:rotate(90deg);font-size:10px;letter-spacing:2px;color:#94a486}.coupon-card h2{font-size:25px;margin:10px 0}.coupon-card p{font-size:13px;line-height:1.8;color:var(--muted);max-width:86%}.coupon-card.used{opacity:.7;filter:grayscale(.3)}.qr{width:100%;max-width:300px;display:block;margin:18px auto;border-radius:12px}.coupon-qr{background:white;border:8px solid white;box-shadow:0 0 0 1px #d3ddc2}.code-display{display:block;font-size:14px;letter-spacing:.5px;background:#e5edce;border-radius:10px;padding:14px 10px;word-break:break-all;text-align:center;font-family:ui-monospace,monospace;font-weight:800}.staff-shell .panel{border:1px solid var(--line);border-radius:17px;background:var(--paper);padding:24px;margin:20px 0;box-shadow:0 8px 30px #20392e0b}.staff-shell .panel h2{margin-top:0;font-size:20px}.staff-shell p{font-size:13px;line-height:1.8}.coupon-check{border-top:1px solid var(--line);margin-top:22px;padding-top:20px}.coupon-check h3{font-size:21px;margin:8px 0}.success{background:#dfebc8;padding:14px;border-radius:10px;font-size:13px}.toast{position:fixed;bottom:105px;left:50%;transform:translateX(-50%);background:#20392ef2;color:#fff;border-radius:12px;padding:13px 19px;font-size:13px;z-index:30;max-width:calc(100% - 40px);width:max-content;line-height:1.7}.loading{padding:70px 0;text-align:center;color:var(--muted);font-size:13px}.error-panel{padding:25px;background:#f5e5d9;border-radius:15px;font-size:13px;line-height:1.8}.source-banner{background:#e5ecd8;padding:12px;border-radius:10px;font-size:12px;margin-bottom:16px}dialog{border:1px solid var(--line);border-radius:20px;background:var(--paper);color:var(--ink);padding:24px;width:calc(100% - 32px);max-width:480px;max-height:85svh;box-shadow:0 20px 80px #10221944}dialog::backdrop{background:#142e2866;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.dialog-head h2{margin:0;font-size:21px}.close-button{background:#e7ebdd;border-radius:50%;font-size:24px;min-height:35px;width:35px;flex-shrink:0}dialog p{font-size:13px;line-height:1.9}label{display:block;font-size:12px;font-weight:700;margin:17px 0 8px}input,select{width:100%;background:#fffef8;border:1px solid #bec9b0;border-radius:9px;padding:12px;color:var(--ink);margin-bottom:12px}@media(max-width:370px){.app-shell{padding-left:18px;padding-right:18px}.hero h1{font-size:31px}.hero-art{width:117px;right:-22px;transform:scale(.9)}.passport-card{padding:20px}.stamp-grid{gap:8px}.stamp-slot strong{font-size:10px}}@media(min-width:760px){.app-shell{margin-top:24px;margin-bottom:24px;border-radius:25px}.bottom-nav{border-radius:20px 20px 0 0}.hero{padding-top:14px}}
