@import url("https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&display=swap");@tailwind base;@tailwind components;@tailwind utilities;:root{--font-body:"Geist",system-ui,-apple-system,sans-serif;--font-display:"Geist",system-ui,-apple-system,sans-serif;--accent:#2d7a55;--accent-hover:#1a4a35;--accent-light:#e6f4ee;--accent-text:#2d7a55;--bg:#ffffff;--surface:#f7f7f7;--surface-2:#efefef;--border:rgba(0,0,0,0.08);--border-strong:rgba(0,0,0,0.14);--text:#111111;--text-2:#555555;--text-3:#999999;--text-4:#bbbbbb;--open:#16a34a;--open-bg:#dcfce7;--closed:#dc2626;--closed-bg:#fef2f2;--amber:#c47c2b;--amber-pale:#fdf3e3;--coral:#d94f3d;--coral-pale:#fdecea;--s0:none;--s1:0 1px 4px rgba(0,0,0,0.06);--s2:0 2px 12px rgba(0,0,0,0.08);--s3:0 4px 24px rgba(0,0,0,0.1);--s4:0 8px 40px rgba(0,0,0,0.12);--s-accent:0 4px 20px rgba(45,122,85,0.2);--s-focus:0 0 0 3px rgba(45,122,85,0.25);--ease-spring:cubic-bezier(0.175,0.885,0.32,1.1);--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--t1:100ms;--t2:180ms;--t3:280ms;--t4:420ms;--r-xs:4px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:16px;--r-2xl:20px;--r-pill:999px;--white:var(--bg);--off-white:var(--surface);--cream:var(--surface-2);--bone:#e5e5e5;--stone:#cccccc;--forest:var(--accent-hover);--forest-mid:var(--accent);--forest-bright:#3da672;--forest-pale:var(--accent-light);--ink:var(--text);--ink-80:#333333;--ink-60:var(--text-2);--ink-40:var(--text-3);--ink-20:var(--text-4);--ink-10:var(--border);--b1:rgba(0,0,0,0.06);--b2:rgba(0,0,0,0.1);--b3:rgba(0,0,0,0.16);--state-open:var(--open);--state-open-bg:var(--open-bg);--state-closed:var(--closed);--state-closed-bg:var(--closed-bg);--rating-high:#1b7f4f;--rating-mid:var(--accent);--rating-low:#c53030;--sky:#2459a8;--sky-pale:#deeeff;--sky-border:#b3d1ff;--s-forest:var(--s-accent);--green:var(--open);--accent-light:var(--accent-light)}*,:after,:before{box-sizing:border-box}body,html{height:100%;width:100%;background:var(--white);color:var(--ink);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.005em}body,h1,h2,h3,html{font-family:var(--font-body)}h1,h2,h3{font-weight:600;letter-spacing:-.03em;line-height:1.2}.leaflet-container{background:#eef1ec!important;font-family:var(--font-body)!important;cursor:default!important}.leaflet-control-zoom{border:none!important;border-radius:var(--r-lg)!important;box-shadow:var(--s3)!important;overflow:hidden;margin-right:16px!important;margin-bottom:16px!important}.leaflet-control-zoom a{background:var(--white)!important;color:var(--ink-60)!important;border-bottom:1px solid var(--b1)!important;width:38px!important;height:38px!important;line-height:38px!important;font-size:18px!important;font-weight:300!important;transition:background var(--t1) ease!important}.leaflet-control-zoom a:hover{background:var(--cream)!important;color:var(--forest-mid)!important}.leaflet-tooltip{background:var(--white)!important;border:1px solid var(--b2)!important;color:var(--ink)!important;font-family:var(--font-body)!important;font-size:12px!important;font-weight:500!important;padding:5px 10px!important;border-radius:var(--r-sm)!important;box-shadow:var(--s2)!important;white-space:nowrap;pointer-events:none}.leaflet-attribution-flag,.leaflet-tooltip:before{display:none!important}.leaflet-control-attribution{background:rgba(255,255,255,.88)!important;color:var(--ink-20)!important;font-size:9px!important;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--r-sm) 0 0 0!important;padding:3px 8px!important;border:none!important}.leaflet-control-attribution a{color:var(--ink-20)!important;text-decoration:none}.leaflet-control-attribution a:hover{color:var(--ink-40)!important}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bone);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--ink-20)}.skeleton{background:linear-gradient(90deg,var(--bone) 0,var(--cream) 40%,var(--bone) 80%);background-size:300% 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:var(--r-sm)}@keyframes shimmer-slide{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.shimmer-bar{background:linear-gradient(90deg,transparent,rgba(255,255,255,.6) 50%,transparent);animation:shimmer-slide 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes cardIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(16px)}to{opacity:1;transform:translateX(0)}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes markerPop{0%{transform:translateY(6px) scale(.7);opacity:0}60%{transform:translateY(-2px) scale(1.05)}to{transform:translateY(0) scale(1);opacity:1}}@keyframes pulse-ring{0%{transform:scale(1);opacity:.8}to{transform:scale(2.6);opacity:0}}@keyframes heartBeat{0%{transform:scale(1)}15%{transform:scale(1.35)}30%{transform:scale(.9)}45%{transform:scale(1.2)}60%{transform:scale(1)}}@keyframes heartUnbeat{0%{transform:scale(1)}40%{transform:scale(.75)}70%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes heartParticle{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--tx),var(--ty)) scale(0);opacity:0}}@keyframes toastIn{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toastOut{0%{transform:translateY(0);opacity:1}to{transform:translateY(8px);opacity:0}}@keyframes modalIn{0%{opacity:0;transform:scale(.96) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes enrichSweep{0%{transform:translateX(-200%)}to{transform:translateX(300%)}}.anim-fade-up{animation:fadeUp var(--t3) var(--ease-out) both}.anim-slide-right{animation:slideInRight var(--t3) var(--ease-out) both}.input-field{width:100%;padding:10px 14px;border-radius:var(--r-md);border:1.5px solid var(--b2);background:var(--off-white);color:var(--ink);font-size:13px;font-weight:400;font-family:var(--font-body);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.input-field:focus{border-color:var(--forest-mid);background:var(--white);box-shadow:var(--s-focus)}.input-field::placeholder{color:var(--ink-20)}.btn-primary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px 16px;border-radius:var(--r-md);border:none;cursor:pointer;font-size:13px;font-weight:600;font-family:var(--font-body);background:var(--forest-mid);color:white;box-shadow:var(--s-forest);transition:background .12s ease,transform 80ms ease,box-shadow .12s ease;letter-spacing:-.01em}.btn-primary:hover{background:var(--forest)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:10px 16px;border-radius:var(--r-md);cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font-body);background:var(--white);color:var(--ink-80);border:1.5px solid var(--b2);transition:background .12s ease,border-color .12s ease}.btn-secondary:hover{background:var(--cream);border-color:var(--b3)}.eyebrow{font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--forest-mid);display:flex;align-items:center;gap:10px}.eyebrow:before{content:"";display:block;width:20px;height:1.5px;background:var(--forest-mid)}@supports (padding:max(0px)){.safe-bottom{padding-bottom:max(12px,env(safe-area-inset-bottom))}.safe-top{padding-top:max(0px,env(safe-area-inset-top))}}@media (max-width:767px){body,html{overscroll-behavior-x:none}}.page-shell{position:fixed;top:0;right:0;bottom:0;left:0}@media (min-width:768px){.page-shell{left:52px}}@media (max-width:767px){.page-shell{bottom:56px}}.anim-fade-in{animation:fadeIn var(--t2) var(--ease-out) both}.anim-slide-up{animation:slideUp var(--t3) var(--ease-out) both}.anim-scale-in{animation:scaleIn var(--t2) var(--ease-spring) both}.anim-card-in{animation:cardIn var(--t3) var(--ease-out) both}:focus-visible{outline:2px solid var(--forest-mid);outline-offset:2px}a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:none}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.truncate-1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.truncate-2{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}