:root{color-scheme:dark;--bg:#101124;--panel:#1d203b;--panel2:#222640;--border:rgba(255,255,255,.095);--ink:#f9f6ff;--muted:#a6a9c3;--mint:#7de8cc;--gold:#ffdf9c;--violet:#a799f4;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang TC","Noto Sans TC",sans-serif;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;min-height:100dvh;overflow-x:hidden}button{font:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed}.ambience{pointer-events:none;position:fixed;z-index:-1;border-radius:50%;filter:blur(85px);opacity:.25}.a1{background:#6a55cb;width:350px;height:350px;left:-210px;top:-110px}.a2{background:#237b80;width:320px;height:320px;right:-225px;top:330px}.app{max-width:510px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 22px) 19px calc(env(safe-area-inset-bottom) + 50px)}.masthead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:21px}.brand{display:flex;align-items:center;gap:11px}.brand-mark{display:grid;place-items:center;width:43px;height:43px;background:linear-gradient(135deg,#b6a2ff,#62e5cb);border-radius:15px;font-size:30px;color:#152233;box-shadow:0 7px 26px #615eaf45}.eyebrow{font-size:10px;font-weight:850;letter-spacing:2.1px;color:#aaa5db;margin-bottom:4px}.masthead h1{font-size:22px;letter-spacing:-.65px;margin:0;font-weight:850}.masthead h1 span{color:var(--gold);font-size:20px}.top-pill,.shop-count{font-size:11px;color:var(--mint);border:1px solid rgba(125,232,204,.27);background:rgba(125,232,204,.07);padding:8px 10px;border-radius:99px;white-space:nowrap;font-weight:750}.overview{display:grid;grid-template-columns:1.23fr 1fr;gap:11px;margin-bottom:15px}.tile{background:linear-gradient(155deg,#272b4a,#1e213b);border:1px solid var(--border);border-radius:20px;padding:17px 15px 15px;min-width:0;box-shadow:0 9px 20px #00000016}.tile-label{font-size:12px;font-weight:700;color:#c3c4da;white-space:nowrap}.tiny-icon{color:var(--gold)}.balance{display:flex;align-items:baseline;gap:3px;margin-top:12px;font-weight:850;font-size:clamp(27px,8vw,38px);letter-spacing:-1.5px;color:#f8f7ff;white-space:nowrap}.balance small{font-size:12px;letter-spacing:0;color:var(--gold)}.tile-sub{color:var(--muted);font-size:10px;margin-top:8px;line-height:1.5}.count-line{font-weight:850;font-size:36px;margin-top:8px;letter-spacing:-1.5px;color:var(--mint)}.count-line small{font-weight:650;font-size:15px;color:#afb3ce;letter-spacing:0}.mini-progress{height:5px;background:#42465f;border-radius:10px;overflow:hidden;margin-top:5px}.mini-progress>div{height:100%;width:0%;border-radius:10px;background:linear-gradient(90deg,#5cdbca,#c3f5ad);transition:width .28s}.count-tile .tile-sub{margin-top:6px}.goal-card{position:relative;text-align:center;overflow:hidden;background:radial-gradient(circle at 50% 40%,#30335b 0,#20233f 48%,#1b1d37 100%);border:1px solid rgba(187,171,255,.22);border-radius:28px;padding:18px 17px 23px;box-shadow:0 14px 42px #07081645}.goal-card:after{content:"";position:absolute;pointer-events:none;inset:0;border-radius:28px;background:linear-gradient(160deg,#ffffff08,transparent 40%,#6b63c70c)}.card-top{display:flex;justify-content:space-between;align-items:center}.section-tag,.rank{font-size:10px;color:#beb9e7;letter-spacing:1.4px;font-weight:850}.section-tag{display:flex;align-items:center;gap:7px}.glow-dot{height:7px;width:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 14px #87e6cf}.rank{color:#989aba}.prize-icon{width:78px;height:78px;display:grid;place-items:center;margin:6px auto 5px;font-size:49px;filter:drop-shadow(0 8px 15px #a0808444);background:radial-gradient(circle,#ffffff18,transparent 70%);border-radius:50%}.goal-card h2{font-size:25px;font-weight:880;margin:0 0 7px;letter-spacing:-.3px}.goal-price{font-size:12px;color:#bdb9dc}.gauge-wrap{width:100%;max-width:344px;margin:-7px auto -6px}.gauge-wrap svg{width:100%;height:auto;overflow:visible}.gauge-track,.gauge-progress{fill:none;stroke-width:13;stroke-linecap:round}.gauge-track{stroke:#454764}.gauge-progress{stroke:url(#gaugeGradient);stroke-dasharray:0 100;transition:stroke-dasharray .55s cubic-bezier(.22,1,.36,1)}.tick-major{stroke:#d5d0e8;stroke-opacity:.6;stroke-width:2.4}.tick-minor{stroke:#a9a5c1;stroke-opacity:.24;stroke-width:1.3}.needle{stroke:#f6e5b3;stroke-width:4.2;stroke-linecap:round;filter:url(#needleGlow);transform-origin:160px 153px;transform:rotate(-90deg);transition:transform .55s cubic-bezier(.22,1,.36,1)}.hub-outer{fill:#ffdda2}.hub-inner{fill:#a18a7a}.gauge-percent{fill:#fff;font-size:27px;font-weight:850}.gauge-scale{fill:#a4a7c5;font-size:11px;font-weight:700}.remaining{font-size:23px;font-weight:900;color:var(--mint);letter-spacing:-.4px;margin-top:-16px}.sparkle{color:var(--gold);font-size:18px}.goal-footer{font-size:12px;color:#b4b4cf;margin-top:6px}.action-zone{padding:17px 1px 24px;text-align:center}.save-button{width:100%;min-height:77px;border:0;border-radius:23px;color:#152432;background:linear-gradient(105deg,#85e6c7,#dcf8ae);font-size:23px;font-weight:900;box-shadow:0 8px 0 #418e81,0 13px 26px #133a373e;display:flex;align-items:center;justify-content:center;gap:16px;transition:transform .12s,box-shadow .12s;user-select:none}.save-button:active:not(:disabled){transform:translateY(5px);box-shadow:0 3px 0 #418e81,0 7px 12px #133a373e}.save-button:disabled{background:#565b72;color:#bfc0cf;box-shadow:0 5px 0 #36394b;opacity:.9}.save-symbol{color:#368f81;font-size:20px}.save-note{font-size:11px;color:#9b9eba;margin-top:17px}.shop{border-top:1px solid var(--border);padding-top:22px}.shop-head{display:flex;justify-content:space-between;align-items:end;gap:7px}.shop-head h2{font-size:22px;font-weight:860;margin:0}.shop-head h2 span{font-size:19px}.shop-intro{color:#a4a7c0;font-size:12px;line-height:1.65;margin:13px 0 18px}.shop-list{display:grid;gap:9px}.item{display:flex;align-items:center;gap:11px;background:#1c1f39;border:1px solid rgba(255,255,255,.075);border-radius:17px;padding:11px;position:relative;min-height:76px}.item.available{border-color:rgba(125,232,204,.33);background:#20283c}.item.redeemed{background:#1b2035;opacity:.77}.item-icon{background:#343754;flex:0 0 49px;width:49px;height:49px;border-radius:13px;display:grid;place-items:center;font-size:27px}.item-copy{flex:1;min-width:0}.item-price{color:var(--gold);font-size:11px;font-weight:850;margin-bottom:4px;letter-spacing:.3px}.item-name{font-size:14px;font-weight:750}.item-action{border-radius:11px;padding:10px 12px;border:0;min-width:66px;font-size:12px;font-weight:800;background:#7de8cc;color:#15352e}.item-action:disabled{background:#373b54;color:#8b8ea7}.stamp{color:#b5f4c8;border:2px solid #90deb2;border-radius:7px;padding:5px 6px;font-size:11px;font-weight:900;transform:rotate(-8deg);white-space:nowrap}.footer{text-align:center;color:#a29cc5;font-size:12px;line-height:1.8;margin-top:28px}.footer span{font-size:10px;color:#7f829b}.modal-backdrop,.celebration{position:fixed;inset:0;z-index:10;background:#080b1bc9;display:grid;place-items:center;padding:22px;backdrop-filter:blur(8px)}[hidden]{display:none!important}.modal,.celebrate-card{position:relative;background:linear-gradient(150deg,#33365b,#20233e);border:1px solid #ffffff2a;border-radius:26px;max-width:370px;width:100%;padding:29px 24px;text-align:center;box-shadow:0 28px 95px #0008}.modal-emoji,.celebrate-emoji{font-size:65px}.modal h2,.celebrate-card h2{font-size:24px;margin:10px 0 8px}.modal p,.celebrate-card p{color:#c4c6db;font-size:14px;line-height:1.7}.modal-actions{display:flex;gap:10px;margin-top:24px}.modal-actions button,.celebrate-card button{border:0;border-radius:14px;padding:13px;flex:1;font-size:14px;font-weight:800}.cancel{background:#454861;color:white}.confirm,.celebrate-card button{background:var(--mint);color:#18352e}.celebrate-card{z-index:1;animation:pop .45s cubic-bezier(.2,1.5,.3,1)}.celebrate-star{font-size:13px;font-weight:900;letter-spacing:2px;color:var(--gold)}.celebrate-emoji{margin-top:20px}.celebrate-card button{width:100%;margin-top:20px}.confetti-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti{position:absolute;top:-20px;width:10px;height:16px;opacity:.9;animation:fall var(--dur) linear forwards;transform:rotate(var(--spin))}.toast{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 22px);left:50%;transform:translateX(-50%) translateY(40px);opacity:0;z-index:20;color:#172e2a;background:#b9f2db;padding:12px 18px;border-radius:14px;font-weight:750;font-size:13px;box-shadow:0 9px 27px #0008;white-space:nowrap;transition:transform .2s,opacity .2s;pointer-events:none}.toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}@keyframes fall{from{transform:translateY(-5vh) rotate(0deg)}to{transform:translateY(110vh) rotate(780deg)}}@keyframes pop{from{transform:scale(.75);opacity:0}to{transform:scale(1);opacity:1}}@media(max-width:365px){.app{padding-left:13px;padding-right:13px}.overview{gap:7px}.tile{padding:13px 11px}.balance{font-size:27px}.masthead h1{font-size:19px}.top-pill{font-size:10px}.goal-card{padding-left:12px;padding-right:12px}.remaining{font-size:21px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
