:root{color:#eef7f5;background:#08121c;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;overflow-x:hidden}button{min-height:44px;color:inherit;border:1px solid #ffffff33;border-radius:999px;background:#102431e8;padding:0 16px}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:2px solid #ffc05c;outline-offset:2px}.app-shell{position:relative;width:min(100vw,720px);min-height:100dvh;margin:0 auto;overflow:hidden;background:#08121c}.map-stage{position:relative;height:74dvh;min-height:560px;background:radial-gradient(circle at 60% 45%,#164148 0,#0d2430 28%,#08121c 68%)}.map-canvas{position:absolute;inset:0;overflow:hidden}.map-canvas [data-layer=surface]{position:absolute;inset:24% 9% 15% 20%;opacity:.78;clip-path:polygon(8% 30%,25% 16%,48% 20%,61% 8%,76% 25%,94% 31%,86% 50%,96% 62%,74% 69%,65% 91%,43% 83%,30% 68%,8% 62%,17% 47%);background-color:#123541;background-image:radial-gradient(circle,#61e4d3 1px,transparent 1.5px),linear-gradient(135deg,#123541cc,#0a1d28);background-size:14px 14px,100% 100%;box-shadow:0 0 64px #2fc8b833}.fake-map-unit{position:absolute;z-index:2;translate:-50% -50%;margin:0;color:#b8fff4;background:#0b202be8;box-shadow:0 0 30px #35cbbb77}.fake-map-unit--heat{border-color:#ff8d70;box-shadow:0 0 38px #ff6f5e88}.fake-map-unit--mood{border-color:#58e4d1;box-shadow:0 0 38px #36d3be88}.fake-map-unit--lit{color:#ffd19a;border-color:#ffc05c88;box-shadow:0 0 24px #ffc05c55}.fake-map-unit--private{border-color:#79b8ff;box-shadow:0 0 28px #4c9dff66}.map-controls{position:absolute;z-index:3;right:12px;bottom:22px;display:grid;gap:6px}.map-controls button{width:44px;padding:0}.own-pulse,.delta-marker{display:inline-flex;min-height:34px;align-items:center;border-radius:999px;padding:6px 10px;color:#fff4ef;background:#e95f50f2;box-shadow:0 0 32px #ff6f5eaa;font-weight:800;white-space:nowrap}.map-canvas>.own-pulse{position:absolute;z-index:3;left:62%;top:43%;translate:-50% -50%}.map-canvas>.delta-marker{position:absolute;z-index:3;translate:-50% -50%}.region-marker{border-color:#67dacb;color:#d5fffa;box-shadow:0 0 24px #35cbbb66}.hud{position:absolute;inset:max(12px,env(safe-area-inset-top)) 12px auto;display:grid;gap:6px;pointer-events:none}.hud>*{pointer-events:auto;margin:0}.hud>button{width:fit-content}.hud>div:first-child,.hud>p{width:fit-content;border:1px solid #ffffff1c;border-radius:12px;background:#08121ccc;padding:7px 10px}.hud small{display:block;color:#a8bbb9}.toggle-row{display:flex;width:fit-content;gap:4px;padding:3px;border-radius:999px;background:#08121ccc}.toggle-row button[aria-pressed=true]{border-color:#ff8068;background:#e95f50}.map-error{position:absolute;inset:auto 16px 110px;padding:12px;border-radius:12px;background:#102431ee}.checkin-cta{position:fixed;z-index:4;left:50%;bottom:calc(67px + env(safe-area-inset-bottom));transform:translate(-50%);min-width:180px;border-color:#ff9b87;background:#e95f50;font-weight:700}.checkin-status{position:fixed;z-index:5;left:50%;bottom:calc(124px + env(safe-area-inset-bottom));transform:translate(-50%);width:max-content;max-width:calc(100vw - 32px);padding:9px 12px;border-radius:12px;background:#102431ee}.bottom-nav{position:fixed;z-index:3;left:50%;bottom:0;transform:translate(-50%);width:min(100vw,720px);height:calc(60px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(3,1fr);padding-bottom:env(safe-area-inset-bottom);background:#08121cf5}.bottom-nav button{border:0;border-radius:0;background:transparent}.sheet{position:fixed;z-index:6;left:50%;bottom:0;transform:translate(-50%);width:min(100vw,720px);max-height:58dvh;overflow:auto;border:1px solid #ffffff24;border-radius:24px 24px 0 0;background:#102431;padding:22px 18px calc(22px + env(safe-area-inset-bottom))}.sheet fieldset{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;border:0;padding:0}.sheet label{min-height:44px;display:inline-flex;align-items:center;gap:6px}@media(prefers-reduced-motion:no-preference){.own-pulse:not(.own-pulse--reduced){animation:pulse .8s ease-out}@keyframes pulse{0%{opacity:1;transform:scale(.7)}to{opacity:1;transform:scale(1)}}}
