:root{--bg-gradient:linear-gradient(170deg,#c9f3ff,#e8fbff 40%,#fffdf3);--accent:#16b8c4;--accent-soft:rgba(22,184,196,0.16);--glass:rgba(255,255,255,0.52);--glass-strong:rgba(255,255,255,0.72);--glass-border:rgba(255,255,255,0.8);--text:#0f4a52;--text-soft:rgba(15,74,82,0.6);--radius:22px;--radius-sm:14px;--shadow:0 12px 40px rgba(15,30,60,0.18);--shadow-sm:0 6px 20px rgba(15,30,60,0.14);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;height:100%;overscroll-behavior:none}body{font-family:var(--font);color:var(--text);background:#0d1430;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.app-bg{position:fixed;inset:0;z-index:0;background:var(--bg-gradient);transition:background 1.4s ease;pointer-events:none}#app-root{position:relative;z-index:1;height:100dvh;width:100vw;overflow:hidden}.glass{background:var(--glass);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.5);color:var(--text)}.glass-strong{background:var(--glass-strong);backdrop-filter:blur(26px) saturate(170%);-webkit-backdrop-filter:blur(26px) saturate(170%)}button{font-family:inherit;color:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--glass-border);background:var(--glass-strong);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);color:var(--text);padding:12px 18px;border-radius:999px;font-size:15px;font-weight:600;box-shadow:var(--shadow-sm),inset 0 1px 0 rgba(255,255,255,.45);transition:transform .12s ease,box-shadow .18s ease,background .2s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn:active{transform:scale(.95)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-accent{background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 78%,#000 5%));color:#fff;border-color:color-mix(in srgb,var(--accent) 60%,#fff 40%);text-shadow:0 1px 1px rgba(0,0,0,.18)}.btn-block{width:100%}.icon-btn{width:44px;height:44px;border-radius:999px;padding:0;font-size:18px}input,select,textarea{font-family:inherit;font-size:16px;color:var(--text);background:rgba(255,255,255,.55);border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:12px 14px;width:100%;outline:none;transition:border-color .18s ease,box-shadow .18s ease}[data-part=evening] input,[data-part=evening] select,[data-part=evening] textarea,[data-part=night] input,[data-part=night] select,[data-part=night] textarea{background:rgba(255,255,255,.08);color:var(--text)}input::placeholder,textarea::placeholder{color:var(--text-soft)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;font-size:13px;font-weight:600;background:rgba(255,255,255,.4);border:1px solid var(--glass-border);color:var(--text);white-space:nowrap;transition:transform .12s ease,background .2s ease}.chip:active{transform:scale(.94)}.chip.active,.chip[aria-pressed=true]{background:var(--accent);color:#fff;border-color:transparent}.stack{flex-direction:column}.row,.stack{display:flex}.row{align-items:center}.muted{color:var(--text-soft)}.scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.scroll::-webkit-scrollbar{width:8px}.scroll::-webkit-scrollbar-thumb{background:rgba(120,120,120,.35);border-radius:999px}.sheet-backdrop{position:fixed;inset:0;z-index:40;background:rgba(10,16,32,.28);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:fade-in .2s ease}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;margin:0 auto;max-width:560px;max-height:88dvh;border-radius:28px 28px 0 0;padding:10px 20px calc(22px + var(--safe-bottom));display:flex;flex-direction:column;animation:sheet-up .34s cubic-bezier(.22,1,.36,1)}.sheet-grabber{width:40px;height:5px;border-radius:999px;background:var(--text-soft);opacity:.5;margin:6px auto 12px;flex:none}.modal-center{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:calc(20px + var(--safe-top)) 20px calc(20px + var(--safe-bottom))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pop-in{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.ambient-layer{position:fixed;inset:0;z-index:2;pointer-events:none;overflow:hidden}.creature{position:absolute;left:-10%;font-size:30px;opacity:.5;filter:drop-shadow(0 4px 8px rgba(0,0,0,.12));will-change:transform;animation-name:drift;animation-timing-function:ease-in-out;animation-iteration-count:infinite}@keyframes drift{0%{transform:translateX(0) translateY(0) rotate(0deg)}25%{transform:translateX(30vw) translateY(-14px) rotate(4deg)}50%{transform:translateX(60vw) translateY(10px) rotate(-3deg)}75%{transform:translateX(90vw) translateY(-8px) rotate(3deg)}to{transform:translateX(124vw) translateY(0) rotate(0deg)}}.user-dot{width:18px;height:18px;border-radius:50%;background:#2f9be0;border:3px solid #fff;box-shadow:0 0 0 2px rgba(47,155,224,.4),0 2px 8px rgba(0,0,0,.3);position:relative}.user-dot:after{content:"";position:absolute;inset:-8px;border-radius:50%;background:rgba(47,155,224,.28);animation:user-pulse 2.4s ease-out infinite}@keyframes user-pulse{0%{transform:scale(.6);opacity:.8}to{transform:scale(2.2);opacity:0}}@media (prefers-reduced-motion:reduce){.user-dot:after{animation:none;opacity:0}}.toast{position:fixed;left:50%;bottom:calc(92px + var(--safe-bottom));transform:translateX(-50%);z-index:45;padding:12px 18px;border-radius:999px;font-size:14px;font-weight:600;max-width:calc(100vw - 32px);text-align:center;animation:toast-in .3s cubic-bezier(.22,1,.36,1)}@keyframes toast-in{0%{transform:translate(-50%,16px);opacity:0}to{transform:translate(-50%);opacity:1}}.maplibregl-map{font-family:var(--font)}.maplibregl-ctrl-attrib{font-size:10px;border-radius:8px 0 0 0}.maplibregl-ctrl-group{border-radius:14px!important;overflow:hidden;box-shadow:var(--shadow-sm)!important}.maplibregl-ctrl-top-right{top:calc(84px + var(--safe-top));right:calc(2px + var(--safe-right))}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right{bottom:calc(2px + var(--safe-bottom))}@media (prefers-reduced-motion:reduce){.creature{display:none}.app-bg{transition:none}.sheet,.sheet-backdrop{animation:none}*{scroll-behavior:auto!important}}.landing{position:relative;z-index:1;min-height:100dvh;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;gap:28px;text-align:center;padding:calc(48px + var(--safe-top)) 20px calc(40px + var(--safe-bottom))}.landing,.landing-hero{display:flex;flex-direction:column;align-items:center}.landing-hero{max-width:620px;padding-top:clamp(10px,6vh,60px)}.landing-features{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:14px;gap:14px;width:100%;max-width:720px}@media (max-width:520px){.landing-features{grid-template-columns:1fr}}.legal-page{position:relative;z-index:1;min-height:100dvh;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;justify-content:center;padding:calc(20px + var(--safe-top)) 16px calc(40px + var(--safe-bottom))}.legal{width:100%;max-width:760px;padding:clamp(20px,5vw,40px);line-height:1.6;font-size:15px}.legal-back{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:700;text-decoration:none;margin-bottom:14px}.legal h1{font-size:28px;font-weight:800;margin:0 0 4px}.legal-updated{color:var(--text-soft);font-size:13px;margin:0 0 24px}.legal h2{font-size:19px;font-weight:700;margin:28px 0 8px}.legal h3{font-size:16px;font-weight:700;margin:18px 0 6px}.legal li,.legal p{color:var(--text)}.legal a{color:var(--accent)}.legal ul{padding-left:20px;margin:8px 0}.legal li{margin:4px 0}.legal strong{font-weight:700}.legal-note{background:var(--accent-soft);border-radius:14px;padding:14px;font-size:14px;margin:16px 0}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap}