@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{color:#402f38;font-synthesis:none;--cream:#fff8ee;--paper:#fffdf8;--coral:#df6d73;--coral-dark:#b94e59;--lilac:#d8c7ec;--plum:#49343f;--sage:#adbea6;--ink-soft:#75616b;--shadow:0 18px 50px #5b374629;background:#fff8ee;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}html{background:var(--cream)}body{min-width:320px;min-height:100vh;margin:0}button,a,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #7d5aa1}h1,h2,p{margin-top:0}h1,h2{color:var(--plum);font-family:Fraunces,Georgia,serif}h1{letter-spacing:-.045em;font-size:clamp(2.3rem,10vw,4.8rem);line-height:.96}p{line-height:1.65}.centered-shell,.welcome,.finale{min-height:100svh;padding:calc(28px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom));place-items:center;display:grid;position:relative;overflow:hidden}.centered-shell:before,.welcome:before,.finale:before{content:"";z-index:-1;background:radial-gradient(circle at 22% 20%,#df6d732e 0 12%,#0000 13%),radial-gradient(circle at 82% 75%,#d8c7ec99 0 16%,#0000 17%),linear-gradient(145deg,#fffaf1,#fff5e7 55%,#f8ecf2);position:absolute;inset:-20%}.paper-card{background:var(--paper);width:min(100%,560px);box-shadow:var(--shadow);border:1px solid #49343f1a;border-radius:7px;padding:clamp(28px,7vw,52px);position:relative;transform:rotate(-.6deg)}.paper-card:after{content:"";background:#d8c7eca6;width:90px;height:28px;position:absolute;top:-12px;left:50%;transform:translate(-50%)rotate(2deg)}.eyebrow{color:var(--coral-dark);letter-spacing:.15em;text-transform:uppercase;margin-bottom:14px;font-size:.75rem;font-weight:700;display:block}.button{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;min-height:54px;padding:14px 24px;font-weight:700;text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button:disabled{cursor:not-allowed;opacity:.48;transform:none}.button.primary{color:#fff;background:var(--coral);box-shadow:0 10px 24px #b94e5940}.button.primary:hover{background:var(--coral-dark)}.button.secondary{color:var(--plum);background:#efe6f7}.button.small{background:var(--plum);color:#fff;min-height:42px;padding:9px 17px}.text-button,.pause-link{color:var(--coral-dark);cursor:pointer;text-underline-offset:4px;background:0 0;border:0;font-weight:700;text-decoration:underline}.fine-print,.safety-note{color:var(--ink-soft);font-size:.84rem}.welcome{text-align:center}.welcome-copy{max-width:650px}.welcome-copy h1{max-width:570px;margin:18px auto 24px}.welcome-copy>p:not(.safety-note){max-width:540px;margin:0 auto 28px;font-size:1.08rem}.welcome-copy .safety-note{max-width:440px;margin:22px auto 0}.welcome-doodles{color:var(--coral);font-size:clamp(2rem,9vw,4.5rem);position:absolute;top:10%;left:5%;transform:rotate(-12deg)}.welcome-doodles span{color:#8b6cad}.demo-banner{color:#654b7d;letter-spacing:.1em;background:#f1e8fb;border:1px solid #b69bd1;border-radius:999px;padding:8px 12px;font-size:.68rem;display:inline-block}.missions-shell{min-height:100svh;padding:calc(34px + env(safe-area-inset-top)) 18px calc(36px + env(safe-area-inset-bottom));background:var(--cream)}.missions-header{max-width:650px;margin:0 auto 26px}.missions-header h1{margin-bottom:16px;font-size:clamp(2.5rem,12vw,4.4rem)}.missions-header p{color:var(--ink-soft)}.missions-header .demo-banner{margin-bottom:26px}.mission-list{gap:14px;max-width:650px;margin:auto;display:grid}.mission-card{background:var(--paper);border:1px solid #49343f1a;border-radius:22px;grid-template-columns:44px 1fr auto;align-items:center;gap:14px;min-height:126px;padding:18px;display:grid;box-shadow:0 8px 26px #5b374614}.mission-card.complete{background:#f3f5ec}.mission-card.locked{box-shadow:none;opacity:.58}.mission-number{color:var(--coral-dark);background:#f6d8d4;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;font-family:Fraunces,serif;font-size:1.25rem;display:flex}.complete .mission-number{color:#52694d;background:#d8e2d3}.mission-copy>span{color:var(--coral-dark);letter-spacing:.12em;text-transform:uppercase;font-size:.68rem;font-weight:700}.mission-copy h2{margin:3px 0 5px;font-size:1.28rem}.mission-copy p{color:var(--ink-soft);margin:0;font-size:.84rem;line-height:1.4}.mission-copy .setup-warning{color:#9b5b2f;margin-top:7px;font-weight:700}.lock{color:#8f719e;font-size:1.3rem}.missions-shell>.safety-note,.missions-shell>.error-message{text-align:center;max-width:650px;margin:22px auto 0}.navigation-shell{background:#e8e2db;min-height:100svh;position:relative}.map-header{padding:calc(10px + env(safe-area-inset-top)) 14px 10px;z-index:5;grid-template-columns:42px 1fr 52px;align-items:center;gap:12px;display:grid;position:absolute;top:0;left:0;right:0}.map-header>div{background:#fffdf8eb;border-radius:16px;padding:8px 14px;box-shadow:0 5px 18px #402f3821}.map-header span{letter-spacing:.08em;text-transform:uppercase;font-size:.66rem;display:block}.map-header strong{font-family:Fraunces,serif;display:block}.icon-button,.mystery-mark,.demo-pill{background:#fffdf8f0;border:0;border-radius:50%;justify-content:center;align-items:center;height:42px;display:flex;box-shadow:0 5px 18px #402f3821}.icon-button{cursor:pointer;font-size:1.25rem}.mystery-mark{width:42px;font-family:Fraunces,serif}.demo-pill{color:#654b7d;border-radius:14px;width:52px;font-size:.64rem;font-weight:700}.demo-map,.live-map-wrap{height:58svh;min-height:410px;position:relative;overflow:hidden}.demo-map{background:#e7dfd5}.demo-map:before{content:"";background-image:linear-gradient(#ffffff40 1px,#0000 1px),linear-gradient(90deg,#ffffff40 1px,#0000 1px);background-size:34px 34px;position:absolute;inset:0}.demo-map svg{width:100%;height:100%}.map-road{fill:none;stroke:#fffaf1;stroke-linecap:round;stroke-width:34px}.map-road.wide{stroke-width:48px}.map-route{fill:none;stroke:var(--coral);stroke-dasharray:8 9;stroke-linecap:round;stroke-width:7px}.current-dot{fill:#715289;stroke:#fff;stroke-width:5px}.mystery-pin path{fill:var(--coral);stroke:#fff;stroke-width:4px}.mystery-pin text{fill:#fff;font:700 20px DM Sans}.map-label{background:var(--paper);border-radius:999px;padding:5px 9px;font-size:.7rem;font-weight:700;position:absolute;box-shadow:0 4px 12px #402f3824}.map-label.current{bottom:11%;left:10%}.map-label.mystery{top:18%;right:5%}.live-map{width:100%;height:100%}.map-waiting,.map-error{text-align:center;background:#fffdf8f0;border-radius:14px;width:min(82%,340px);padding:12px 15px;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.map-error{color:#9d3745}.navigation-card{background:var(--paper);min-height:calc(42svh + 28px);padding:14px 22px calc(26px + env(safe-area-inset-bottom));z-index:4;border-radius:28px 28px 0 0;margin-top:-28px;position:relative;box-shadow:0 -8px 35px #402f3824}.drag-handle{background:#d8cdd2;border-radius:99px;width:44px;height:4px;margin:0 auto 18px}.navigation-card h1{margin-bottom:16px;font-size:clamp(2rem,9vw,3.3rem)}.location-status{color:#624c6e;background:#f5eff9;border-radius:15px;align-items:flex-start;gap:10px;margin-bottom:15px;padding:12px;font-size:.85rem;line-height:1.4;display:flex}.pulse{background:#8c70a0;border-radius:50%;flex:none;width:9px;height:9px;margin-top:3px}.navigation-actions{gap:10px;display:grid}.demo-scenarios{color:#654b7d;background:#f7f1fa;border-radius:14px;padding:10px 12px;font-size:.78rem}.demo-scenarios summary{cursor:pointer;font-weight:700}.demo-scenarios button{color:#654b7d;cursor:pointer;background:#fff;border:1px solid #d8c7e5;border-radius:999px;margin:10px 6px 0 0;padding:7px 10px}.error-message{color:#9d3745;background:#fff0ef;border-radius:12px;padding:10px 12px;font-size:.84rem}.parked-panel{background:#fff6e3;border:1px solid #ead6aa;border-radius:18px;margin-top:16px;padding:18px}.parked-panel h2{margin-bottom:5px;font-size:1.35rem}.parked-panel p{color:var(--ink-soft);margin-bottom:14px;font-size:.84rem;line-height:1.45}.parked-check{cursor:pointer;align-items:center;gap:10px;font-size:.9rem;font-weight:700;display:flex}.parked-check input{accent-color:var(--coral);width:23px;height:23px}.gift-button{background:var(--coral);color:#fff;width:100%;margin-top:15px}.pause-link{margin:18px auto 0;font-size:.76rem;display:block}.reveal-shell{text-align:center}.reveal-card{transform:rotate(.5deg)}.gift-icon{margin-bottom:14px;font-size:4rem;display:block}.reveal-card h1{font-size:clamp(2.3rem,10vw,3.8rem)}.reveal-card h2{color:var(--coral-dark);font-size:1.5rem}.reveal-card .button{margin-top:10px}.finale{text-align:center}.finale-card{transform:rotate(-.4deg)}.finale-card h1{font-size:clamp(2.6rem,11vw,4.5rem)}.gift-row{flex-wrap:wrap;justify-content:center;gap:8px;margin:25px 0;display:flex}.gift-row span{color:#654b7d;background:#f2e9f7;border-radius:999px;padding:8px 12px;font-size:.78rem;font-weight:700}.signature{color:var(--coral-dark);font-family:Fraunces,serif;font-size:1.15rem}.confetti{color:var(--coral);word-spacing:4vw;font-size:clamp(2rem,8vw,4rem);position:absolute;top:8%;left:0;right:0}.sticker{background:var(--lilac);color:#5e466d;text-transform:uppercase;border-radius:50%;padding:13px 8px;font-size:.7rem;font-weight:700;position:absolute;top:18px;right:18px;transform:rotate(9deg)}.update-toast{background:var(--plum);bottom:calc(16px + env(safe-area-inset-bottom));box-shadow:var(--shadow);color:#fff;cursor:pointer;z-index:20;border:0;border-radius:14px;width:min(90%,420px);padding:13px 18px;position:fixed;left:50%;transform:translate(-50%)}.loading{color:var(--coral-dark);font-family:Fraunces,serif;font-size:1.3rem}@media (width>=720px){.navigation-shell{max-width:560px;box-shadow:var(--shadow);margin:0 auto}.missions-shell{padding-left:28px;padding-right:28px}}@media (prefers-reduced-motion:no-preference){.welcome-doodles{animation:5s ease-in-out infinite alternate drift}.pulse{animation:1.8s ease-out infinite pulse}.gift-icon{animation:1s ease-in-out both gift}@keyframes drift{to{transform:rotate(-7deg)translateY(9px)}}@keyframes pulse{0%{box-shadow:0 0 #8c70a073}75%,to{box-shadow:0 0 0 8px #0000}}@keyframes gift{0%{opacity:0;transform:scale(.65)rotate(-8deg)}70%{transform:scale(1.08)rotate(3deg)}to{opacity:1;transform:scale(1)}}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
