:root{--navy:#0b1f3a;--navy2:#13315c;--gold:#c9a227;--goldTint:#f5edd6;--bg:#f4f2ed;--surface:#fff;--ink:#1c2b3a;--ink2:#56636f;--ink3:#8b95a0;--border:#1c2b3a1a;--shadowFloat:0 16px 40px #0b1f3a2e;--spring:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box}body{background:var(--navy);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:Noto Sans TC,-apple-system,sans-serif;line-height:1.7}#root{background:var(--bg);max-width:480px;min-height:100vh;margin:0 auto;position:relative;box-shadow:0 0 48px #0000004d}button,input,textarea{font-family:inherit}.pressable{transition:transform .25s var(--spring)}.pressable:active{transform:scale(.97)}@keyframes cardIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card-in{animation:cardIn .45s var(--spring) both}@keyframes sheetIn{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes celebOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes celebContentIn{0%{opacity:0;transform:scale(.85)translateY(24px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fabItemIn{0%{opacity:0;transform:translateY(10px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.masonry{column-count:2;column-gap:12px}.masonry>*{break-inside:avoid;margin-bottom:12px}
