@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,700;9..144,800&display=swap";:root{color:#20222f;font-synthesis:none;text-rendering:optimizelegibility;--ink:#20222f;--muted:#75747b;--paper:#fffdf8;--cream:#f7f2e7;--navy:#242b51;--coral:#ed6a5a;--yellow:#f3c64e;--blue:#5c86c6;--green:#4e8c6f;--line:#e7e2d8;background:#e9e7e1;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}html{background:#e9e7e1}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}#root{min-height:100vh}@media (width>=720px){#root{border-radius:28px;width:430px;min-height:calc(100vh - 48px);margin:24px auto;overflow:hidden;box-shadow:0 24px 70px #26231e33}}.app-shell,.auth-page,.welcome{background:var(--paper);width:100%;max-width:430px;min-height:100vh;margin:0 auto}.app-shell{padding-bottom:86px;position:relative;overflow:hidden}.page{min-height:calc(100vh - 86px)}.eyebrow{color:var(--coral);letter-spacing:.16em;text-transform:uppercase;font-size:10px;font-weight:800;display:block}.eyebrow.light{color:#f8d29b}.button{cursor:pointer;border:0;border-radius:14px;justify-content:center;align-items:center;gap:12px;width:100%;min-height:54px;padding:0 18px;font-weight:800;display:inline-flex}.button span:last-child{margin-left:auto}.button-primary{color:#fff;background:var(--coral);box-shadow:0 9px 22px #ed6a5a45}.button-light{color:var(--navy);background:#fff9ee;box-shadow:0 12px 35px #0f122640}.button-outline{border:1px solid var(--line);color:var(--ink);background:0 0}.button-danger{color:#a4473b;background:#fae8e4;width:calc(100% - 40px);margin:22px 20px 4px}.button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}.welcome{background:var(--navy);color:#fff;flex-direction:column;display:flex;position:relative;overflow:hidden}.brand-mark{z-index:3;letter-spacing:-5px;align-items:baseline;font:800 25px Fraunces;display:flex;position:absolute;top:28px;left:24px}.brand-mark span{color:#f5cb59}.brand-mark i{color:#fff;font-style:normal}.welcome-art{background:linear-gradient(160deg,#2e375f 0%,#242b51 68%);min-height:43vh;position:relative;overflow:hidden}.welcome-art:before{content:"";border:1px solid #ffffff14;border-radius:50%;width:350px;height:350px;position:absolute;top:-115px;right:-100px}.welcome-art .sun{background:var(--yellow);border-radius:50%;width:125px;height:125px;position:absolute;top:80px;right:40px;box-shadow:0 0 0 20px #f3c64e14}.wheel,.tent,.music,.star{filter:drop-shadow(0 9px 15px #0000002e);position:absolute}.wheel{color:#f6ead5;font-size:112px;bottom:-16px;left:36px;transform:rotate(12deg)}.tent{color:var(--coral);font-size:100px;bottom:-35px;right:65px;transform:scaleX(1.35)}.music{color:#8fa9dc;font-size:45px;top:88px;left:55px;transform:rotate(-12deg)}.star{color:#fff;font-size:30px;top:66px;left:155px}.welcome-copy{z-index:2;flex:1;padding:34px 26px 28px;position:relative}.welcome-copy h1,.auth-heading h1,.page-heading h1,.home-hero h1,.detail-content>h1,.profile-hero h1{font-family:Fraunces,Georgia,serif}.welcome-copy h1{letter-spacing:-.04em;margin:12px 0 16px;font-size:clamp(41px,12vw,53px);line-height:.98}.welcome-copy p{color:#d2d2dc;max-width:340px;margin:0 0 26px;font-size:16px;line-height:1.55}.welcome-copy small{text-align:center;color:#8f94ad;letter-spacing:.06em;margin-top:22px;font-size:10px;display:block}.auth-page{background:var(--cream);padding:24px 22px}.back-button{border:1px solid var(--line);width:42px;height:42px;color:var(--ink);cursor:pointer;background:#fff;border-radius:50%;font-size:20px}.back-button.small{width:36px;height:36px;font-size:17px}.mini-brand{letter-spacing:.12em;color:var(--navy);align-items:center;gap:7px;font-size:11px;font-weight:800;display:inline-flex}.mini-brand span{color:#fff;background:var(--navy);border-radius:50%;place-items:center;width:25px;height:25px;font:800 15px Fraunces;display:grid}.auth-page>.mini-brand{pointer-events:none;justify-content:center;margin-top:-33px;display:flex}.auth-heading{margin:70px 2px 22px}.step-badge{color:var(--coral);letter-spacing:.14em;font-size:10px;font-weight:800}.auth-heading h1{color:var(--navy);margin:9px 0;font-size:36px;line-height:1.05}.auth-heading p{color:var(--muted);margin:0;line-height:1.5}.form-card{background:#fff;border-radius:20px;padding:22px;box-shadow:0 10px 30px #2a28220f}.form-card label{color:#4b4b52;margin-bottom:18px;font-size:12px;font-weight:700;display:block}.form-card input:not([type=checkbox]){border:1px solid var(--line);width:100%;height:50px;color:var(--ink);background:#fcfbf8;border-radius:11px;outline:0;margin-top:7px;padding:0 14px;display:block}.form-card input:focus{border-color:var(--coral);box-shadow:0 0 0 3px #ed6a5a1a}.form-card .check{color:var(--muted);align-items:flex-start;gap:8px;font-weight:500;line-height:1.4;display:flex}.check input{accent-color:var(--coral);margin-top:2px}.error-message{color:#b3473b;background:#fae6e1;border-radius:10px;padding:10px;font-size:12px}.privacy-note{text-align:center;color:#97938a;margin:18px 0;font-size:11px}.topbar{background:#fffdf8f5;border-bottom:1px solid #e7e2d8bf;justify-content:space-between;align-items:center;height:66px;padding:13px 20px;display:flex}.topbar>strong{font-size:14px}.topbar .avatar{width:34px;height:34px;box-shadow:0 0 0 1px var(--line);color:#8f5d3e;background:#f3dec1;border:2px solid #fff;border-radius:50%;place-items:center;font-size:9px;font-weight:800;display:grid}.bottom-nav{z-index:10;height:78px;padding:8px 9px max(8px, env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8f7;grid-template-columns:repeat(4,1fr);display:grid;position:absolute;bottom:0;left:0;right:0}.bottom-nav a{color:#99959a;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;font-weight:700;display:flex}.bottom-nav a.active{color:var(--coral)}.nav-icon{font-size:23px;line-height:1}.home-hero{background:var(--cream);min-height:176px;padding:30px 23px 58px;position:relative;overflow:hidden}.home-hero h1{color:var(--navy);margin:8px 0 3px;font-size:32px}.home-hero p{color:var(--muted);margin:0;font-size:14px}.hero-doodle{width:100px;height:100px;color:var(--yellow);opacity:.8;place-items:center;font-size:77px;display:grid;position:absolute;bottom:47px;right:15px;transform:rotate(8deg)}.hero-doodle span{color:var(--coral);font-size:23px;position:absolute}.passport-card{color:#fff;background:var(--navy);border-radius:20px;margin:-37px 20px 0;padding:20px;position:relative;overflow:hidden;box-shadow:0 14px 28px #242b5133}.passport-card:after{content:"";border:20px solid #ffffff0a;border-radius:50%;width:130px;height:130px;position:absolute;top:-70px;right:-65px}.passport-top{justify-content:space-between;align-items:flex-start;display:flex}.passport-top>div:first-child{display:grid}.passport-top span{color:#aeb4d1;letter-spacing:.15em;font-size:9px}.passport-top strong{font:800 38px/1.15 Fraunces}.passport-top small{color:#b7bbd1;font-size:10px}.passport-stamp{color:#f3c64e;border:1px dashed #9298b6;border-radius:50%;place-items:center;width:52px;height:52px;font:800 17px Fraunces;display:grid;transform:rotate(8deg)}.passport-stamp small{color:#d9dbea;font:700 8px DM Sans}.progress-row{color:#d8daea;justify-content:space-between;margin-top:18px;font-size:9px;display:flex}.progress{background:#454c70;border-radius:5px;height:5px;margin-top:6px;overflow:hidden}.progress i{background:var(--yellow);border-radius:inherit;height:100%;display:block}.card-link{color:#fff;border-top:1px solid #3d4469;justify-content:space-between;margin-top:17px;padding-top:14px;font-size:11px;font-weight:700;display:flex}.section-block{padding:27px 20px 0}.section-title{justify-content:space-between;align-items:flex-end;margin-bottom:13px;display:flex}.section-title h2{color:var(--navy);margin:3px 0 0;font:800 21px Fraunces}.section-title>a{color:var(--coral);font-size:11px;font-weight:800}.featured-place{border:1px solid var(--line);background:#fff;border-radius:17px;display:flex;overflow:hidden;box-shadow:0 7px 22px #28251f0d}.place-art{place-items:center;width:36%;min-height:150px;font-size:58px;display:grid;position:relative}.place-art.coral{background:#f6b3a9}.place-copy{flex:1;padding:17px 14px}.tag{color:var(--coral);letter-spacing:.09em;text-transform:uppercase;font-size:8px;font-weight:800;line-height:1.2}.place-copy h3{color:var(--navy);margin:7px 0 4px;font:800 18px Fraunces}.place-copy p{color:var(--muted);margin:0 0 12px;font-size:11px;line-height:1.35}.place-copy b{color:var(--navy);font-size:10px}.quick-grid{grid-template-columns:1fr 1fr;gap:11px;padding:22px 20px 0;display:grid}.quick-grid a{border:1px solid var(--line);background:#fff;border-radius:16px;flex-direction:column;align-items:flex-start;min-height:120px;padding:15px;display:flex}.quick-icon{border-radius:12px;place-items:center;width:38px;height:38px;margin-bottom:12px;font-size:20px;display:grid}.quick-icon.yellow{color:#9e7410;background:#fbefc5}.quick-icon.blue{color:#456a9e;background:#dfe8f7}.quick-grid strong{color:var(--navy);font-size:12px}.quick-grid small{color:var(--muted);margin-top:3px;font-size:9px}.draw-banner{background:#fbf0d2;border:1px solid #f1dda7;border-radius:16px;align-items:center;gap:13px;margin:22px 20px 0;padding:15px;display:flex}.draw-icon{background:var(--yellow);color:#fff;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.draw-banner>div:last-child{display:grid}.draw-banner strong{color:var(--navy);margin:2px 0;font-size:12px}.draw-banner small{color:#8a7c61;font-size:9px}.activity{padding-bottom:22px}.activity-row{border-bottom:1px solid var(--line);grid-template-columns:32px 1fr auto;align-items:center;gap:10px;padding:12px 0;display:grid}.activity-row>span{width:30px;height:30px;color:var(--green);background:#e3f0e8;border-radius:50%;place-items:center;font-weight:800;display:grid}.activity-row>div{display:grid}.activity-row strong{font-size:11px}.activity-row small{color:var(--muted);font-size:9px}.activity-row b{color:var(--green);font-size:11px}.activity-row b.negative{color:var(--coral)}.page-heading{background:var(--cream);padding:29px 21px 19px}.page-heading h1{color:var(--navy);margin:7px 0 4px;font-size:33px}.page-heading p{color:var(--muted);margin:0;font-size:13px}.filter-strip{scrollbar-width:none;border-bottom:1px solid var(--line);gap:7px;padding:14px 20px;display:flex;overflow-x:auto}.filter-strip::-webkit-scrollbar{display:none}.filter-strip button{white-space:nowrap;border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:20px;padding:8px 13px;font-size:10px;font-weight:700}.filter-strip button.active{border-color:var(--navy);background:var(--navy);color:#fff}.point-list{gap:11px;padding:16px 20px 4px;display:grid}.point-card{border:1px solid var(--line);background:#fff;border-radius:16px;grid-template-columns:58px 1fr 10px;align-items:center;gap:12px;padding:14px;display:grid;position:relative}.point-card.completed{background:#f8faf7;border-color:#dce9df}.point-icon{background:var(--cream);border-radius:12px;place-items:center;width:56px;height:70px;font-size:30px;display:grid}.point-copy>div{justify-content:space-between;align-items:center;gap:5px;display:flex}.done{color:var(--green);background:#deeee4;border-radius:8px;padding:3px 5px;font-size:7px;font-weight:800}.point-copy h2{color:var(--navy);margin:5px 0 3px;font:800 16px Fraunces}.point-copy p{-webkit-line-clamp:2;color:var(--muted);-webkit-box-orient:vertical;margin:0 0 6px;font-size:9px;line-height:1.35;display:-webkit-box;overflow:hidden}.point-copy small{color:#77747b;font-size:8px}.point-copy small b{color:var(--coral);margin-left:5px}.chevron{color:#b8b2aa;font-size:22px}.info-card{color:#536079;background:#e8eef7;border-radius:14px;gap:10px;margin:14px 20px 24px;padding:14px;display:flex}.info-card p{margin:0;font-size:10px;line-height:1.45}.info-card strong{color:var(--navy)}.detail-art{place-items:center;height:196px;display:grid;position:relative;overflow:hidden}.detail-art.coral{background:#f5b6aa}.detail-art.blue{background:#b9cce8}.detail-art>span{filter:drop-shadow(0 10px 8px #281e1921);font-size:87px}.detail-art>i{background:var(--ink);color:#fff;border:6px solid #fff;border-radius:9px;place-items:center;width:58px;height:58px;font-size:12px;font-style:normal;font-weight:800;display:grid;position:absolute;bottom:18px;right:25px;transform:rotate(5deg);box-shadow:0 5px 12px #00000026}.detail-content{padding:23px 21px 27px}.detail-tags{justify-content:space-between;align-items:center;display:flex}.points-pill{color:#a46e00;background:#faebbc;border-radius:12px;padding:5px 8px;font-size:9px;font-weight:800}.detail-content>h1{color:var(--navy);margin:10px 0 6px;font-size:31px;line-height:1.05}.detail-content>p{color:var(--muted);margin:0 0 18px;font-size:13px;line-height:1.5}.location-row{border-block:1px solid var(--line);gap:10px;padding:13px 0;display:flex}.location-row>span{color:var(--coral);font-size:22px}.location-row>div{display:grid}.location-row small{color:var(--muted);letter-spacing:.1em;font-size:8px;font-weight:800}.location-row strong{font-size:11px}.rule-box{background:var(--cream);border-radius:14px;gap:11px;margin:17px 0;padding:14px;display:flex}.rule-box>span{color:#fff;background:var(--coral);border-radius:50%;flex:0 0 32px;place-items:center;height:32px;font-weight:800;display:grid}.rule-box strong{color:var(--navy);font-size:11px}.rule-box p{color:var(--muted);margin:3px 0 0;font-size:9px;line-height:1.4}.scan-button{margin-top:18px}.qr-mini{font-size:21px}.trivia-card{margin-top:19px}.trivia-meta{color:var(--coral);letter-spacing:.1em;justify-content:space-between;font-size:9px;font-weight:800;display:flex}.trivia-meta b{color:var(--muted);letter-spacing:0}.trivia-card h2{color:var(--navy);margin:12px 0 17px;font:800 23px/1.2 Fraunces}.answers{gap:9px;margin-bottom:17px;display:grid}.answers button{text-align:left;border:1px solid var(--line);min-height:52px;color:var(--ink);background:#fff;border-radius:12px;align-items:center;gap:10px;padding:8px 11px;font-size:11px;display:flex}.answers button.selected{border-color:var(--coral);background:#fff2ef}.answers i{width:30px;height:30px;color:var(--muted);background:var(--cream);border-radius:50%;flex:0 0 30px;place-items:center;font-style:normal;font-weight:800;display:grid}.answers button.selected i{color:#fff;background:var(--coral)}.success-panel,.locked-panel{text-align:center;background:#e8f2eb;border-radius:18px;margin-top:20px;padding:25px 18px}.success-panel>span,.locked-panel>span{background:var(--green);color:#fff;border-radius:50%;place-items:center;width:54px;height:54px;margin:0 auto 11px;font-size:25px;display:grid}.success-panel small,.locked-panel small{color:var(--muted);letter-spacing:.1em;margin:7px 0 14px;font-size:8px;display:block}.success-panel h2,.locked-panel h2{color:var(--navy);margin:4px 0;font:800 23px Fraunces}.success-panel p,.locked-panel p{color:var(--muted);margin:5px 0 16px;font-size:11px}.locked-panel{background:#fbefd7}.locked-panel>span{background:var(--yellow)}.locked-panel .button{margin-top:12px}.balance-card{color:#fff;background:var(--navy);border-radius:17px;margin:0 20px 18px;padding:18px;display:grid;position:relative;overflow:hidden}.balance-card span{color:#afb4cd;letter-spacing:.13em;font-size:8px}.balance-card strong{font:800 35px Fraunces}.balance-card small{color:#c6c9d9;font-size:9px}.balance-card i{color:var(--yellow);opacity:.7;font-size:50px;position:absolute;top:13px;right:18px}.toast{color:#a4473b;background:#fae8e4;border-radius:11px;margin:0 20px 13px;padding:12px;font-size:10px;line-height:1.4}.toast.good{color:#376f56;background:#e1efe6}.reward-list{gap:11px;padding:0 20px;display:grid}.reward-card{border:1px solid var(--line);background:#fff;border-radius:16px;grid-template-columns:90px 1fr;gap:13px;padding:12px;display:grid}.reward-icon{background:var(--cream);border-radius:12px;place-items:center;min-height:118px;font-size:42px;display:grid}.reward-card h2{color:var(--navy);margin:5px 0 3px;font:800 16px Fraunces}.reward-card p{color:var(--muted);margin:0;font-size:9px;line-height:1.35}.reward-action{justify-content:space-between;align-items:center;margin-top:12px;display:flex}.reward-action strong{color:var(--coral);font-size:12px}.reward-action button{background:var(--coral);color:#fff;border:0;border-radius:9px;padding:7px 12px;font-size:9px;font-weight:800}.reward-action button:disabled{background:#ddd8cf}.empty-state{text-align:center;color:var(--muted);background:var(--cream);border-radius:14px;padding:25px;font-size:25px}.empty-state p{font-size:10px}.coupon{background:#fdf3d8;border:1px dashed #d9ad50;border-radius:12px;justify-content:space-between;margin-bottom:8px;padding:13px;font-size:10px;display:flex}.coupon strong{color:var(--navy);letter-spacing:.08em}.profile-hero{text-align:center;background:var(--cream);padding:34px 20px 23px}.profile-avatar{width:76px;height:76px;box-shadow:0 0 0 1px var(--line);color:#fff;background:var(--coral);border:4px solid #fff;border-radius:50%;place-items:center;margin:0 auto 12px;font:800 24px Fraunces;display:grid}.profile-hero h1{color:var(--navy);margin:0 0 4px;font-size:27px}.profile-hero p{color:var(--muted);margin:0;font-size:11px}.profile-stats{background:var(--navy);color:#fff;border-radius:0 0 16px 16px;grid-template-columns:repeat(3,1fr);margin:-1px 20px 20px;padding:16px;display:grid}.profile-stats div{text-align:center;border-right:1px solid #454c6d;display:grid}.profile-stats div:last-child{border:0}.profile-stats strong{font:800 22px Fraunces}.profile-stats span{color:#aeb4cc;letter-spacing:.1em;font-size:7px}.menu-card{border:1px solid var(--line);background:#fff;border-radius:16px;margin:0 20px;padding:0 15px}.menu-card>div{border-bottom:1px solid var(--line);align-items:center;gap:12px;min-height:69px;display:flex}.menu-card>div:last-child{border:0}.menu-card>div>span{background:var(--cream);border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.menu-card p{margin:0;display:grid}.menu-card strong{font-size:11px}.menu-card small{color:var(--muted);margin-top:3px;font-size:8px}.version{text-align:center;color:#aaa59c;font-size:9px}.loading{min-height:70vh;color:var(--muted);place-content:center;justify-items:center;font-size:11px;display:grid}.spinner{border:3px solid var(--line);border-top-color:var(--coral);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=720px){.app-shell,.auth-page,.welcome{min-height:calc(100vh - 48px)}.bottom-nav{position:absolute}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important}}
