:root{--bg:#FAFAF7;--ink:#111;--lime:#C6F432;--lav:#E9E3FF;--line:#EAEAEA;--mute:#8a8a85;--navy:#141B2D;--navy2:#0E1424;--surf:#1E2740;--moon:#FFE8A3;--ntext:#F1F0EA;--nmute:#A9B0C6}
*{-webkit-tap-highlight-color:transparent}
body{margin:0;background:#ecebe4;font-family:'Bricolage Grotesque',sans-serif;color:var(--ink)}
.mono{font-family:'JetBrains Mono',monospace}
.phone{max-width:480px;margin:0 auto;min-height:100vh;background:var(--bg);position:relative;
 background-image:radial-gradient(circle at 1px 1px,#e4e4dc 1px,transparent 0);background-size:22px 22px;padding-bottom:110px;transition:background .5s,color .5s}
.phone.night{background:linear-gradient(180deg,var(--navy),var(--navy2));color:var(--ntext);background-attachment:fixed}
.card{background:#fff;border:1px solid var(--line);border-radius:20px}
.pill{border-radius:999px}
.btn{transition:transform .12s}
.btn:active{transform:scale(.94)}
.lime{background:var(--lime);color:#111}
.lav{background:var(--lav);color:#111}
.moon{background:var(--moon);color:var(--navy)}
.navy{background:var(--surf);color:var(--ntext)}
.chip{border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;white-space:nowrap;background:#fff;color:#111}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.night .card,.dark .card{background:var(--surf);border-color:rgba(255,255,255,.08);color:var(--ntext)}
.night .chip,.dark .chip{background:var(--surf);border-color:rgba(255,255,255,.14);color:var(--ntext)}
.night .chip.on,.dark .chip.on{background:var(--moon);color:var(--navy);border-color:var(--moon)}
.night .text-gray-500,.dark .text-gray-500,.night .text-gray-600,.dark .text-gray-600,.dark .text-gray-700,.nmute{color:var(--nmute)!important}
.night input,.night select,.night textarea,.dark input,.dark select,.dark textarea{background:var(--surf);color:var(--ntext);border-color:rgba(255,255,255,.14)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 0 rgba(198,244,50,.8);animation:pulse 1.4s infinite;display:inline-block}
.dot.m{background:var(--moon)}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(198,244,50,0)}100%{box-shadow:0 0 0 0 rgba(198,244,50,0)}}
.rise{animation:rise .4s both}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.sheet{position:fixed;inset:0;background:rgba(17,17,17,.45);z-index:1000;display:flex;align-items:flex-end;justify-content:center}
.sheet>div{width:100%;max-width:480px;background:var(--bg);border-radius:24px 24px 0 0;max-height:92vh;overflow:auto;animation:up .25s}
.sheet.dark>div{background:linear-gradient(180deg,var(--navy),var(--navy2));color:var(--ntext)}
@keyframes up{from{transform:translateY(100%)}}
.noscroll::-webkit-scrollbar{display:none}
input,textarea,select{border:1px solid var(--line);border-radius:14px;padding:10px 12px;width:100%;background:#fff;outline:none;font-family:inherit;color:inherit}
input:focus,textarea:focus{border-color:var(--ink)}
.confetti{position:fixed;top:-10px;width:8px;height:14px;z-index:2000;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}
.leaflet-container{font-family:inherit}
.emk{font-size:22px;background:#fff;border:2px solid #111;border-radius:50%;width:38px;height:38px;display:flex;align-items:center;justify-content:center}
.emk.pin{width:50px;height:50px;font-size:28px;background:var(--lav)}
.emk.nm{background:var(--surf);border-color:var(--moon);position:relative}
.emk.nm::after{content:"🌙";position:absolute;font-size:11px;top:-6px;right:-6px}
.emk.glow{box-shadow:0 0 14px 4px var(--moon)}
.starfield{position:fixed;top:0;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;pointer-events:none;z-index:0;overflow:hidden}
.star{position:absolute;background:#fff;border-radius:50%;animation:tw 3s ease-in-out infinite}
@keyframes tw{0%,100%{opacity:.15}50%{opacity:.9}}
.z1{position:relative;z-index:1}
.shoot{position:fixed;height:2px;width:140px;background:linear-gradient(90deg,var(--moon),transparent);z-index:2500;animation:shoot 1.3s ease-out forwards;border-radius:2px}
@keyframes shoot{from{transform:translate(0,0) rotate(-25deg);opacity:1}to{transform:translate(-70vw,35vh) rotate(-25deg);opacity:0}}
.moonglyph{position:absolute;top:14px;right:18px;width:54px;height:54px;border-radius:50%;box-shadow:-12px 6px 0 0 var(--moon);transform:rotate(-15deg);opacity:.9}
.fadein{animation:fadein .5s}
@keyframes fadein{from{opacity:0}}