:root{color-scheme:light;--c-bg: #F4EFE6;--c-card: #FBF8F2;--c-ink: #1C1B19;--c-graphite: #6B665E;--c-faint: #9C968B;--c-rule: #E3DCCF;--c-red: #C8452F;--c-moss: #5E7F4F;--c-ochre: #D39B3A;--c-blue: #2F5D8C;--c-shadow: rgba(28, 27, 25, .14);--color-accent: var(--c-red);--font-display: "Fraunces", Georgia, "Times New Roman", serif;--font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;background:var(--c-bg);color:var(--c-ink);font-family:var(--font-ui)}button{font:inherit}h1{font-family:var(--font-display)}.hero-scene,.hero-map,.hero-backdrop{position:absolute;top:0;right:0;bottom:0;left:0}.hero-poster,.hero-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.hero-video{opacity:0;transition:opacity .6s ease}.hero-video.is-playing{opacity:1}.hero-scene{overflow:hidden;background:#f1eadc}.hero-map{opacity:0;transition:opacity 1.2s ease;background:#f1eadc}.hero-map.is-live{opacity:1}.hero-backdrop{pointer-events:none;z-index:1}.hero-map .hero-map-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.hero-map .maplibregl-canvas{outline:none}.hero-map-grain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:.28;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .45  0 0 0 0 .4  0 0 0 0 .32  0 0 0 .5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.hero-map-clouds{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;overflow:hidden;--t: 0;opacity:var(--t)}.hero-map-clouds.off{display:none}.hero-map-clouds:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.9;background:radial-gradient(ellipse calc(var(--sw) * .75) calc(var(--sh) * .6) at var(--cx) var(--cy),transparent 55%,var(--paper) 100%)}.hero-map-cloud-stage{position:absolute}.hero-map-cloud-stage.narrow .fz-cloud:nth-child(9){display:none}.hero-backdrop .fz-cloud{position:absolute;will-change:transform;transform:translate(calc(var(--dx) * (1 - var(--t))),calc(var(--dy) * (1 - var(--t))))}.hero-backdrop .fz-cloud-in svg{display:block;width:100%;height:auto;overflow:visible;animation:fz-drift var(--drift) ease-in-out infinite alternate}.hero-backdrop .fz-cloud.flip .fz-cloud-in{transform:scaleX(-1)}@keyframes fz-drift{0%{transform:translate(-7px)}to{transform:translate(7px)}}.hero-map .maplibregl-marker{z-index:2}.hero-map .fz-wrap{width:56px;height:56px;pointer-events:none;transition:opacity .6s ease}.hero-map .fz-wrap.fz-out{opacity:0!important}.hero-map .fz-in{position:relative;width:56px;height:56px}.hero-map .fz-marker{width:56px;height:56px;border-radius:50%;border:3px solid var(--card);background:#2f5d8c;box-shadow:0 0 0 1.25px var(--level-color, var(--ink)),0 6px 14px -6px #0000008c;display:flex;align-items:center;justify-content:center;color:#fff;font:600 18px Fraunces,Georgia,serif;overflow:hidden}.hero-map .fz-marker img{width:100%;height:100%;object-fit:cover;display:block}.hero-map .fz-pop .fz-in{animation:fz-pop .5s cubic-bezier(.2,1.6,.4,1) both}@keyframes fz-pop{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.22)}to{transform:scale(1)}}.hero-map .fz-pop-ring{position:absolute;left:0;top:0;width:100%;height:100%;border-radius:50%;pointer-events:none;border:2px solid var(--level-color, var(--red));opacity:0;animation:fz-pop-ring .75s ease-out both}@keyframes fz-pop-ring{0%{transform:scale(.6);opacity:.9}to{transform:scale(2.2);opacity:0}}.hero-map .fz-mini,.hero-map .fz-mini .fz-in,.hero-map .fz-mini .fz-marker{width:34px;height:34px}.hero-map .fz-mini .fz-marker{border-width:2px;font-size:12px}.hero-map .fz-demo .fz-marker{animation:fz-doodle 3.4s ease-in-out infinite alternate;animation-delay:var(--doodle-delay, 0s)}.hero-map .fz-demo .fz-marker img{transform:scale(1.12) translateY(4%)}@keyframes fz-doodle{0%{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(2deg) translateY(-2px)}to{transform:rotate(4deg) translateY(0)}}.hero-map .fz-tag{position:absolute;top:58px;left:50%;transform:translate(-50%) rotate(-3deg);background:var(--card);color:var(--ink);border:1px solid var(--rule);border-radius:4px;padding:0 7px 1px;font:700 16px/1.15 Caveat,cursive;white-space:nowrap;box-shadow:0 2px 4px -2px #0000004d}@media(prefers-reduced-motion:reduce){.hero-backdrop .fz-cloud-in svg,.hero-map .fz-pop .fz-in,.hero-map .fz-pop-ring,.hero-map .fz-demo .fz-marker{animation:none}}.landing{--map-paper: #F1EADC;--map-park: #DCE3C9;--map-water: #CFDCDD;--map-water-edge: #7F9AA3;--map-road: #B3A58E;--map-label: #8A7A62;position:relative;isolation:isolate;min-height:100vh;min-height:100dvh;overflow:hidden;background:var(--c-bg)}.landing-map,.landing-wash{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.landing-map{overflow:hidden;z-index:0}.landing-map-art{width:100%;height:100%;display:block}.map-paper{fill:var(--map-paper)}.map-street-grid{fill:none;stroke:var(--map-road);stroke-width:1.2;opacity:.44}.map-street-second{fill:none;stroke:var(--map-road);stroke-width:.7;opacity:.2}.map-park{fill:var(--map-park);stroke:var(--c-moss);stroke-width:1.3;stroke-dasharray:4 6;stroke-opacity:.38}.map-water-edge,.map-water{fill:none;stroke-linecap:round;stroke-linejoin:round}.map-water-edge{stroke:var(--map-water-edge);stroke-width:56;opacity:.42}.map-water{stroke:var(--map-water);stroke-width:51}.map-canal{fill:none;stroke:var(--map-water);stroke-width:12;stroke-linecap:round;opacity:.9}.map-avenues path,.map-avenues-inner path{fill:none;stroke-linecap:round;stroke-linejoin:round}.map-avenues path{stroke:var(--map-road);stroke-width:11;opacity:.45}.map-avenues-inner path{stroke:var(--map-paper);stroke-width:8;opacity:.95}.map-place-names{fill:var(--map-label);font:500 16px var(--font-display);letter-spacing:.12em;opacity:.68}.map-place-names .map-water-name{fill:var(--map-water-edge);font:italic 13px var(--font-display);letter-spacing:.15em}.map-grain-dot{fill:var(--map-road);opacity:.15}.map-friend--red{color:var(--c-red)}.map-friend--ochre{color:var(--c-ochre)}.map-friend--moss{color:var(--c-moss)}.map-fuzz{fill:currentColor;fill-opacity:.11;stroke:currentColor;stroke-opacity:.68;stroke-width:2;stroke-dasharray:5 8;animation:fuzz-breathe 5s ease-in-out infinite}.map-fuzz-inner{fill:none;stroke:currentColor;stroke-opacity:.25;stroke-width:1.4;stroke-dasharray:2 6}.map-friend-motion{animation:friend-drift-one 12s ease-in-out infinite alternate}.map-friend-motion--two{animation-name:friend-drift-two;animation-duration:15s;animation-delay:-5s}.map-friend-motion--three{animation-name:friend-drift-three;animation-duration:17s;animation-delay:-8s}.map-friend-halo{fill:var(--c-card);opacity:.85}.map-friend-avatar{fill:currentColor;stroke:var(--c-card);stroke-width:3}.map-friend-initials{fill:#fff;font:600 16px var(--font-display)}.map-friend-label-bg{fill:var(--c-card);stroke:var(--c-rule);stroke-width:1}.map-friend-label{fill:var(--c-ink);font:600 13px var(--font-ui)}@keyframes friend-drift-one{0%{transform:translate(-23px,9px)}to{transform:translate(26px,-17px)}}@keyframes friend-drift-two{0%{transform:translate(35px,-24px)}to{transform:translate(-37px,18px)}}@keyframes friend-drift-three{0%{transform:translate(-28px,-21px)}to{transform:translate(44px,25px)}}@keyframes fuzz-breathe{50%{stroke-opacity:.35;fill-opacity:.07}}.landing-wash{background:linear-gradient(90deg,var(--c-bg) 0%,color-mix(in srgb,var(--c-bg) 94%,transparent) 20%,color-mix(in srgb,var(--c-bg) 55%,transparent) 36%,transparent 52%),linear-gradient(0deg,color-mix(in srgb,var(--c-bg) 85%,transparent) 0%,transparent 18%,transparent 84%,color-mix(in srgb,var(--c-bg) 45%,transparent) 100%)}.landing-content{position:relative;z-index:1;min-height:100vh;min-height:100dvh;max-width:1440px;margin:0 auto;padding:clamp(28px,5vw,64px) clamp(26px,7vw,112px) 64px;display:flex;flex-direction:column;align-items:flex-start}.landing-brand{display:flex;align-items:center;gap:12px;color:var(--c-ink);font:600 23px var(--font-display);letter-spacing:.22em}.landing-brand svg{flex:none}.landing-message{margin:auto 0;padding:72px 0 55px}.landing-message h1{font-size:clamp(60px,7.6vw,116px);line-height:1.02;font-weight:500;letter-spacing:-.055em;color:var(--c-ink)}.landing-message h1 em{color:var(--c-red);font-weight:400;font-size:.78em}.landing-rule{width:44px;height:2px;margin:38px 0 18px;background:var(--c-red)}.landing-stores{display:flex;flex-wrap:wrap;gap:12px}.landing-stores button{min-width:170px;height:65px;padding:9px 18px;display:flex;align-items:center;gap:12px;border:1px solid var(--c-rule);border-radius:10px;background:color-mix(in srgb,var(--c-card) 82%,transparent);color:var(--c-faint);box-shadow:0 4px 18px color-mix(in srgb,var(--c-shadow) 35%,transparent);text-align:left;cursor:not-allowed;opacity:.78}.landing-stores svg{width:26px;height:26px;flex:none}.landing-stores span{display:flex;flex-direction:column}.landing-stores small{font-size:9px;font-weight:700;letter-spacing:.12em}.landing-stores strong{color:var(--c-graphite);font:600 18px var(--font-display);line-height:1.25}.landing-legal{display:flex;flex-wrap:wrap;gap:6px 0;margin-top:22px;font-size:13px}.landing-legal a{color:var(--c-graphite);text-decoration:none;transition:color .15s}.landing-legal a:hover,.landing-legal a:focus-visible{color:var(--c-red);text-decoration:underline;text-underline-offset:3px}.landing-legal a:not(:last-child):after{content:"·";margin:0 10px;color:var(--c-faint);display:inline-block;text-decoration:none}.landing-attribution{position:absolute;z-index:1;right:12px;bottom:8px;font-size:10.5px;color:var(--c-faint)}.landing-attribution a{color:inherit;text-decoration:none}.landing-attribution a:hover{color:var(--c-graphite);text-decoration:underline}@media(max-width:700px){.landing-wash{background:linear-gradient(180deg,color-mix(in srgb,var(--c-bg) 92%,transparent) 0%,color-mix(in srgb,var(--c-bg) 40%,transparent) 17%,transparent 26%,transparent 60%,color-mix(in srgb,var(--c-bg) 80%,transparent) 72%,var(--c-bg) 84%)}.landing-attribution{left:0;right:0;bottom:6px;text-align:center}.landing-content{align-items:center;text-align:center;padding:35px 22px 52px}.landing-brand{font-size:19px;gap:8px}.landing-brand svg{width:40px;height:40px}.landing-message{padding:80px 0 30px;margin:auto 0 18px}.landing-message h1{font-size:clamp(44px,10vw,64px)}.landing-message h1 em{white-space:nowrap}.landing-rule{margin:26px auto 14px}.landing-downloads{width:100%}.landing-stores{justify-content:center}.landing-legal{justify-content:center;margin-top:18px;font-size:12px}.landing-stores button{flex:1 1 150px;min-width:0;max-width:190px;padding:9px 11px}}@media(max-width:370px){.landing-stores{gap:8px}.landing-stores button{gap:6px;padding:8px}.landing-stores svg{width:22px;height:22px}.landing-stores strong{font-size:15px}.landing-stores small{font-size:8px}}@media(prefers-reduced-motion:reduce){.map-fuzz,.map-friend-motion{animation:none}}.public-page{max-width:940px;margin:0 auto;padding:24px 20px 64px;color:var(--c-ink)}.public-page header{display:flex;align-items:center;justify-content:space-between;padding:8px 0 24px;border-bottom:1px solid var(--c-rule)}.public-brand{font-family:var(--font-display);font-size:30px;font-weight:600;letter-spacing:.14em;color:var(--c-red);text-decoration:none}.public-page select,.public-form input{padding:10px 12px;border:1px solid var(--c-rule);border-radius:8px;background:var(--c-card);color:var(--c-ink);font:inherit}.public-page nav{display:flex;gap:18px;flex-wrap:wrap;padding:20px 0}.public-page a{color:var(--c-red)}.public-page nav a{font-size:13px;text-decoration:none}.public-page nav a[aria-current]{font-weight:700;text-decoration:underline}.public-page article{max-width:720px;margin:32px auto;background:var(--c-card);border:1px solid var(--c-rule);border-radius:16px;padding:clamp(22px,5vw,54px);box-shadow:0 8px 24px var(--c-shadow)}.public-page h1{font-family:var(--font-display);font-size:clamp(32px,5vw,48px);font-weight:500;margin:0 0 8px}.public-page small{color:var(--c-faint)}.public-page section{margin-top:30px}.public-page h2{font-family:var(--font-display);font-weight:500;font-size:23px;margin-bottom:10px}.public-page p{font-size:15px;line-height:1.72;color:var(--c-graphite);margin:20px 0}.public-page footer{border-top:1px solid var(--c-rule);padding-top:20px;margin-top:40px;font-size:13px;line-height:1.6;color:var(--c-faint)}.public-page footer p{margin:0 0 4px;font-size:13px;line-height:1.6;color:inherit}.public-page footer a{color:inherit}.public-form{display:grid;gap:18px;margin:26px 0}.public-form label{display:grid;gap:7px;font-size:14px}.public-form button{background:var(--c-red);color:#fff;border:0;border-radius:8px;padding:14px;cursor:pointer;font-weight:600}.public-form button:disabled{opacity:.6}.invite-page article{text-align:left}.invite-head{display:flex;align-items:center;gap:18px}.invite-head h1{margin:0}.invite-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;border:2px solid var(--c-ink);flex:none}.invite-initials{display:flex;align-items:center;justify-content:center;background:var(--c-bg2,var(--c-card));font-family:var(--font-display);font-size:26px;color:var(--c-blue,var(--c-ink))}.invite-actions{display:flex;flex-wrap:wrap;gap:12px;margin:26px 0}.invite-btn{display:inline-block;background:var(--c-red);color:#fff!important;text-decoration:none;border-radius:10px;padding:14px 20px;font-weight:600}.invite-btn.secondary{background:transparent;color:var(--c-ink)!important;border:1px solid var(--c-rule)}.invite-code{border-top:1px dashed var(--c-rule);padding-top:20px}.invite-code strong{display:block;font-family:var(--font-display);font-size:34px;letter-spacing:.12em;color:var(--c-ink);margin:6px 0}.invite-code p{margin:6px 0 0}.place-art{position:relative;display:flex;justify-content:center;margin:-8px 0 10px;height:196px}.place-house{animation:place-stamp .7s cubic-bezier(.2,1.4,.4,1) both;transform-origin:50% 90%}.place-pin{position:absolute;top:0;left:50%;width:22px;height:22px;margin-left:-11px;background:var(--c-red);border:2px solid var(--c-ink);border-radius:50% 50% 50% 0;transform:rotate(-45deg);animation:place-pin 2.6s ease-in-out .8s infinite,place-drop .5s ease-out .45s both}.place-eyebrow{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:var(--c-graphite)!important;text-align:center}.place-page h1{text-align:center}.place-sharer{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--c-graphite);font-size:15px}.place-sharer-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;border:1.5px solid var(--c-ink);flex:none;font-size:13px}.place-page .invite-actions{justify-content:center}@keyframes place-stamp{0%{opacity:0;transform:translateY(-24px) scale(1.25) rotate(-4deg)}60%{opacity:1}to{transform:none}}@keyframes place-drop{0%{opacity:0;translate:0 -18px}to{opacity:1;translate:0 0}}@keyframes place-pin{0%,to{translate:0 0}50%{translate:0 -6px}}@media(prefers-reduced-motion:reduce){.place-house,.place-pin{animation:none}}.passport-page{position:relative;min-height:100vh;min-height:100dvh;overflow-x:hidden}.passport-page .hero-scene{position:fixed}.passport-veil{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,#f4efe626,#f4efe68c 55%,#f4efe6d9)}.passport-content{position:relative;z-index:1}.passport-content header{border-bottom-color:transparent}.passport-card.passport-card{background:color-mix(in srgb,var(--c-card) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:passport-in .6s cubic-bezier(.2,1.2,.4,1) both}.passport-eyebrow{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:12px;color:var(--c-red)!important;margin-bottom:14px}.passport-count{font-family:var(--font-display);font-size:clamp(44px,9vw,64px);line-height:1;color:var(--c-red);font-variant-numeric:tabular-nums}.passport-page h1{font-size:clamp(24px,4vw,34px);margin:4px 0 2px}.passport-stamps{list-style:none;display:flex;flex-wrap:wrap;gap:10px 12px;padding:0;margin:26px 0 6px}.passport-stamp{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 6px;border:1.5px dashed var(--ink);border-radius:6px;color:var(--ink);font:600 13px/1.2 var(--font-ui);text-transform:uppercase;letter-spacing:.06em;background:color-mix(in srgb,var(--ink) 7%,transparent);transform:rotate(var(--rot));animation:passport-stamp .45s cubic-bezier(.2,1.6,.4,1) var(--delay) both}.passport-flag{font-size:16px;letter-spacing:0}.passport-more{align-self:center;font-size:13px;color:var(--c-graphite);animation:passport-fade .4s ease 2.6s both}.passport-join{font-family:var(--font-display);font-size:19px!important;color:var(--c-ink)!important}@keyframes passport-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes passport-stamp{0%{opacity:0;transform:rotate(var(--rot)) scale(1.9)}70%{opacity:1;transform:rotate(var(--rot)) scale(.94)}to{opacity:1;transform:rotate(var(--rot)) scale(1)}}@keyframes passport-fade{0%{opacity:0}to{opacity:1}}@media(max-width:560px){.passport-page .invite-head{align-items:flex-start}.passport-page .invite-avatar{width:56px;height:56px}}@media(prefers-reduced-motion:reduce){.passport-card.passport-card,.passport-stamp,.passport-more{animation:none}}
