@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:300;font-display:swap;src:url(../media/94c8c0191452f5f6-s.1j1ybo7xsr57y.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:300;font-display:swap;src:url(../media/2b1805501a46b427-s.p.3tc1b1_0fw97e.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:300;font-display:swap;src:url(../media/d7f6cacfc1cd4ede-s.1r02a5vd62nb7.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:300;font-display:swap;src:url(../media/18e88ebcce81fc4f-s.p.20q1iyn1271iu.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:400;font-display:swap;src:url(../media/09002b40273b9d8f-s.1ur0mtga_nw2f.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2ce526728043d90d-s.p.2ptbed-1-kdpm.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:400;font-display:swap;src:url(../media/8ab1509717e9e87c-s.3--ypm_6h6ubk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e7b79b72fa390d7f-s.p.2tolh5ep4q7js.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b681d59d845cd30f-s.3sjypkx454muu.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:500;font-display:swap;src:url(../media/86ab07388496d784-s.p.2n408wo629q49.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9a136bd85a058d4d-s.113zlkumr47ij.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ef6c596754631961-s.p.0_bzs213j-3nz.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:600;font-display:swap;src:url(../media/cbb54531d74fd499-s.2xvj854xq0ciy.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6c8bb8836b3337fa-s.p.3a_vt60w1i6n8.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:600;font-display:swap;src:url(../media/eb7142f65a4378c5-s.2o46xbzy_08kj.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:600;font-display:swap;src:url(../media/31766de0018db2b2-s.p.1jm8ogl_hurxi.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:700;font-display:swap;src:url(../media/cf1ad709f69dd255-s.3c8v7rdmtdwuh.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:700;font-display:swap;src:url(../media/21af2bb396c563be-s.p.3j-5ok7ygoh4h.woff2)format("woff2");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:700;font-display:swap;src:url(../media/eafb68cd4fa4be1e-s.41vshpd9ga5he.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Thai Looped;font-style:normal;font-weight:700;font-display:swap;src:url(../media/62a3be0567d84d33-s.p.0ortugtapf-_i.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai Looped Fallback;src:local(Arial);ascent-override:110.31%;descent-override:52.78%;line-gap-override:0.0%;size-adjust:101.17%}.ibm_plex_sans_thai_looped_b860d31f-module__-OYs2G__className{font-family:IBM Plex Sans Thai Looped,IBM Plex Sans Thai Looped Fallback;font-style:normal}.ibm_plex_sans_thai_looped_b860d31f-module__-OYs2G__variable{--font-sans:"IBM Plex Sans Thai Looped", "IBM Plex Sans Thai Looped Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6ff74e33ebd7bca3-s.352ti9pm7m6qh.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1a69062cfe6f77f8-s.0o-3_g79811ob.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9a4838fcda0d1bca-s.0ngr-xkgqz1kf.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2e95a7d252b9825a-s.15orukf5wyxb5.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/23b7a97ae3b5c134-s.p.226pwps5o-gq_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_e06d9437-module__v8ILfq__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_e06d9437-module__v8ILfq__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--ink-950:#04111f;--ink-900:#071d33;--ink-800:#0b2a47;--ink-700:#12395d;--ink-600:#1c4c77;--ink-500:#2d6591;--teal:#2dd4bf;--teal-600:#0d9488;--cyan:#38bdf8;--amber:#fbbf24;--coral:#fb7185;--paper:#f3f6fa;--paper-2:#e8eef5;--card:#fff;--line:#d7e0ea;--text:#0f2236;--muted:#5b6e82;--danger:#e11d48;--ok:#059669;--focus:#38bdf8;--radius:10px;--shadow:0 10px 30px #04111f1f;--font-sans-stack:var(--font-sans), "Sarabun", "Noto Sans Thai", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono-stack:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;--navy:var(--ink-800);--navy-2:var(--ink-700);--bg:var(--paper)}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font-sans-stack);color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased;margin:0;font-size:15px}button,input,select,textarea{font:inherit}a{color:inherit}.mono{font-family:var(--font-mono-stack);font-feature-settings:"tnum"}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.btn{border-radius:var(--radius);border:1px solid var(--ink-800);background:var(--ink-800);color:#fff;cursor:pointer;justify-content:center;align-items:center;gap:6px;min-height:40px;padding:8px 14px;font-weight:500;text-decoration:none;transition:background .15s,transform .1s,box-shadow .15s;display:inline-flex}.btn:hover{background:var(--ink-700)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{color:var(--ink-800);border-color:var(--line);background:#fff}.btn-secondary:hover{background:var(--paper-2)}.btn-danger{background:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:#be123c}.btn-teal{background:var(--teal-600);border-color:var(--teal-600)}.btn-teal:hover{background:#0f766e}.btn-amber{background:var(--amber);border-color:var(--amber);color:var(--ink-900)}.btn-amber:hover{background:#f59e0b}.btn-ghost{color:#e6f1fb;background:0 0;border-color:#ffffff38}.btn-ghost:hover{background:#ffffff14}.btn-sm{min-height:30px;padding:4px 10px;font-size:13px}.btn-block{width:100%}.btn.active{background:var(--teal-600);border-color:var(--teal-600);color:#fff}label{color:var(--muted);margin:10px 0 4px;font-size:13px;display:block}input[type=text],input[type=password],input[type=datetime-local],input[type=number],input[type=search],select,textarea{border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--text);background:#fff;padding:9px 10px}textarea{resize:vertical;min-height:70px}input[type=range]{width:100%;accent-color:var(--teal-600)}.check{color:var(--text);align-items:center;gap:8px;margin:10px 0 0;font-size:14px;display:flex}.error-text{color:var(--danger);white-space:pre-line;font-size:13px}.muted{color:var(--muted);font-size:12px}.landing{background:var(--ink-900);color:#e6f1fb;flex-direction:column;min-height:100dvh;display:flex}.hero{background:radial-gradient(1200px 300px at 70% -40%, #2dd4bf47, transparent 60%), linear-gradient(100deg, var(--ink-950) 0%, var(--ink-800) 55%, #0e3a5a 100%);border-bottom:1px solid #38bdf840;min-height:168px;position:relative;overflow:hidden}.hero-art{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero-inner{grid-template-columns:auto 1fr auto;align-items:center;gap:20px;max-width:1280px;min-height:168px;margin:0 auto;padding:22px 24px;display:grid;position:relative}.brand{align-items:center;gap:14px;display:flex}.brand-mark{filter:drop-shadow(0 6px 18px #2dd4bf59);flex:none;width:74px;height:74px}.brand-org{letter-spacing:.14em;text-transform:uppercase;color:#9ec3df;font-size:12px;line-height:1.5}.brand-org b{color:#e6f1fb;letter-spacing:.06em;font-size:14px;display:block}.hero-title{text-align:center}.hero-title h1{letter-spacing:-.01em;color:#fff;text-shadow:0 4px 30px #00000059;margin:0;font-size:clamp(34px,5.4vw,64px);font-weight:700;line-height:1}.hero-title h1 .accent{color:var(--amber)}.hero-title p{color:#a9c8e0;margin:10px 0 0;font-size:15px}.hero-meta{color:#7fb3d6;justify-content:center;gap:14px;margin-top:10px;font-size:11px;display:flex}.hero-user{flex-direction:column;align-items:flex-end;gap:6px;font-size:13px;display:flex}.chip{color:#d6e7f5;background:#ffffff14;border:1px solid #ffffff24;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex}.chip .dot{background:var(--teal);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #2dd4bf40}.chip.off .dot{box-shadow:none;background:#94a3b8}.contour path,.contour circle{fill:none;stroke:#38bdf833;stroke-width:1px}.contour path:nth-child(3n){stroke:#2dd4bf52}.contour.drift{transform-origin:50%;animation:38s linear infinite alternate drift}@keyframes drift{0%{transform:translate(-10px)}to{transform:translate(10px)}}.graticule line{stroke:#9ec3df14;stroke-width:1px}.coord-label{font-family:var(--font-mono-stack);fill:#9ec3df8c;font-size:10px}.landing-main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:40px 24px 56px}.role-tabs{justify-content:center;gap:0;max-width:560px;margin:0 auto 34px;display:flex}.role-tabs button{color:#c9dcec;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #9ec3df2e;flex:1;padding:12px 8px 14px;font-size:16px;transition:color .2s,border-color .2s}.role-tabs button:hover{color:#fff}.role-tabs button[aria-selected=true]{color:var(--teal);border-bottom-color:var(--teal);font-weight:600}.role-tabs .sub{color:#7fa4c2;letter-spacing:.05em;margin-top:2px;font-size:11px;font-weight:400;display:block}.cards{gap:22px;display:grid}.feature-card{background:var(--ink-950);color:#fff;cursor:pointer;text-align:left;isolation:isolate;border:1px solid #38bdf838;border-radius:14px;width:100%;min-height:300px;padding:0;text-decoration:none;transition:transform .25s,border-color .25s,box-shadow .25s;display:block;position:relative;overflow:hidden;box-shadow:0 18px 50px #00000059}.feature-card:hover{border-color:#2dd4bf99;transform:translateY(-3px);box-shadow:0 24px 60px #00000073,0 0 0 1px #2dd4bf40}.feature-card .art{z-index:-1;width:100%;height:100%;transition:transform 1.2s;position:absolute;inset:0}.feature-card:hover .art{transform:scale(1.04)}.feature-card .veil{z-index:-1;background:radial-gradient(46% 60%,#04111fc7,#04111f59 70%,#04111f99);transition:opacity .3s;position:absolute;inset:0}.feature-card:hover .veil{opacity:.9}.feature-card .content{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:300px;padding:28px;display:flex}.feature-card .kicker{font-family:var(--font-mono-stack);letter-spacing:.18em;color:var(--teal);text-transform:uppercase;font-size:11px}.feature-card h2{text-shadow:0 3px 20px #0009;margin:8px 0;font-size:clamp(26px,3.6vw,40px);font-weight:700}.feature-card p{color:#c3d8ea;max-width:640px;margin:0;font-size:15px;line-height:1.6}.feature-card .tags{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:16px;display:flex}.feature-card .cta{color:#e6f1fb;background:#04111fa6;border:1px solid #ffffff2e;border-radius:999px;align-items:center;gap:8px;padding:7px 12px;font-size:13px;display:inline-flex;position:absolute;bottom:16px;right:18px}.feature-card .cta.lock{color:var(--amber);border-color:#fbbf2473}.feature-card .card-coord{font-family:var(--font-mono-stack);color:#9ec3dfb3;font-size:11px;position:absolute;bottom:16px;left:18px}.info-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px;display:grid}.info-tile{background:#0b2a478c;border:1px solid #38bdf82e;border-radius:12px;padding:16px}.info-tile h3{color:#fff;margin:0 0 6px;font-size:15px}.info-tile p{color:#a9c8e0;margin:0;font-size:13px;line-height:1.55}.info-tile .n{font-family:var(--font-mono-stack);color:var(--teal);font-size:12px}.landing-foot{color:#7fa4c2;border-top:1px solid #9ec3df1f;flex-wrap:wrap;justify-content:space-between;gap:12px;width:100%;max-width:1280px;margin:0 auto;padding:16px 24px;font-size:12px;display:flex}.scan-line{animation:4.5s ease-in-out infinite scan}@keyframes scan{0%{transform:translate(-10%)}50%{transform:translate(110%)}to{transform:translate(-10%)}}.ring-pulse{transform-box:fill-box;transform-origin:50%;animation:3s ease-out infinite ring}.ring-pulse.d2{animation-delay:1s}.ring-pulse.d3{animation-delay:2s}@keyframes ring{0%{opacity:.9;transform:scale(.2)}to{opacity:0;transform:scale(1)}}.blink{animation:1.4s steps(2,start) infinite blink}@keyframes blink{to{visibility:hidden}}.modal-back{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#04111f9e;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{color:var(--text);background:#fff;border-radius:14px;width:100%;max-width:440px;max-height:88dvh;padding:20px;overflow-y:auto;box-shadow:0 30px 80px #00000059}.modal h3{margin:0 0 2px;font-size:18px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.signin-modal{max-width:460px;padding:0;overflow:hidden}.signin-head{background:linear-gradient(120deg, var(--ink-900), var(--ink-700));color:#fff;padding:22px 22px 18px;position:relative;overflow:hidden}.signin-head h3{margin:10px 0 4px;font-size:20px}.signin-head p{color:#b7d2e7;margin:0;font-size:13px}.signin-head svg.bg{opacity:.5;width:220px;height:220px;position:absolute;top:-30px;right:-30px}.signin-body{padding:18px 22px 22px}.url-box{font-family:var(--font-mono-stack);background:var(--paper);border:1px dashed var(--line);word-break:break-all;color:var(--ink-700);border-radius:8px;margin:10px 0 14px;padding:8px 10px;font-size:12px}.google-btn{color:#1f1f1f;background:#fff;border:1px solid #dadce0;min-height:46px;font-weight:600}.google-btn:hover{background:#f8fafd}.divider{color:var(--muted);align-items:center;gap:10px;margin:14px 0;font-size:12px;display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.login-wrap{background:radial-gradient(900px 500px at 80% 0%, #2dd4bf2e, transparent 60%), linear-gradient(135deg, var(--ink-950) 0 55%, var(--ink-800) 55% 100%);place-items:center;min-height:100dvh;padding:24px;display:grid}.login-card{background:#fff;border-radius:14px;width:100%;max-width:400px;padding:24px;box-shadow:0 24px 60px #00000059}.login-head{align-items:center;gap:12px;margin-bottom:16px;display:flex}.login-head h1{margin:0;font-size:20px}.login-head p{color:var(--muted);margin:2px 0 0;font-size:12px}.badge-logo{border-radius:10px;place-items:center;width:42px;height:42px;display:grid}.tabs{background:var(--paper-2);border-radius:var(--radius);gap:6px;margin-bottom:12px;padding:4px;display:flex}.tabs button{min-height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1}.tabs button[aria-selected=true]{color:var(--ink-800);background:#fff;font-weight:600;box-shadow:0 1px 3px #00000014}.sys-status{color:var(--muted);text-align:center;margin-top:12px;font-size:11px}.back-link{color:var(--muted);margin-top:14px;font-size:13px;display:inline-block}.shell{flex-direction:column;height:100dvh;display:flex}.topbar{background:linear-gradient(100deg, var(--ink-950), var(--ink-800));color:#fff;border-bottom:1px solid #38bdf838;flex:none;align-items:center;gap:14px;min-height:56px;padding:8px 14px;display:flex;position:relative;overflow:hidden}.topbar .contour-mini{opacity:.7;pointer-events:none;width:50%;height:100%;position:absolute;top:0;right:0}.topbar a.home{align-items:center;gap:10px;text-decoration:none;display:flex;position:relative}.topbar a.home img,.topbar a.home svg{width:34px;height:34px}.topbar h1{margin:0;font-size:16px;line-height:1.15;position:relative}.topbar h1 small{color:#8fb6d4;letter-spacing:.05em;font-size:11px;font-weight:400;display:block}.topbar nav{gap:4px;margin-left:12px;display:flex;position:relative}.topbar nav a{color:#b8d2e6;border-radius:8px;padding:6px 10px;font-size:13px;text-decoration:none}.topbar nav a:hover{color:#fff;background:#ffffff14}.topbar nav a[aria-current=page]{color:var(--teal);background:#2dd4bf1a}.topbar .spacer{flex:1}.topbar .who{opacity:.92;font-size:13px;position:relative}.topbar .btn{position:relative}.body-row{flex:1;min-height:0;display:flex}.side{border-right:1px solid var(--line);background:#fff;flex:0 0 330px;width:330px;padding:12px;overflow-y:auto}.side.wide{flex-basis:420px;width:420px}.side h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 8px;font-size:12px;font-weight:600}.side h2:first-child{margin-top:0}.map-area{flex:1;min-width:0;position:relative}#map,.map-el{position:absolute;inset:0}#map.picking,.map-el.picking{cursor:crosshair}.panel-tabs{background:var(--paper-2);z-index:5;border-radius:10px;gap:4px;margin-bottom:12px;padding:4px;display:flex;position:sticky;top:-12px}.panel-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:1;padding:8px 6px;font-size:13px}.panel-tabs button[aria-selected=true]{color:var(--ink-800);background:#fff;font-weight:600;box-shadow:0 1px 3px #00000014}.panel-tabs .count{font-family:var(--font-mono-stack);background:var(--paper-2);border-radius:8px;margin-left:4px;padding:0 6px;font-size:11px}.section-card{border:1px solid var(--line);background:#fff;border-radius:12px;margin-bottom:12px;padding:12px}.section-card h3{align-items:center;gap:8px;margin:0 0 4px;font-size:15px;display:flex}.section-card h3 .step{background:var(--ink-800);color:#fff;width:22px;height:22px;font-size:12px;font-family:var(--font-mono-stack);border-radius:50%;place-items:center;display:inline-grid}.filter-item{color:var(--text);align-items:center;gap:8px;margin:0 0 4px;font-size:14px;display:flex}.filter-item .count{color:var(--muted);margin-left:auto;font-size:12px}.filter-row{align-items:center;gap:4px;margin:0 0 4px;display:flex}.filter-row .filter-item{flex:1;margin:0}.filter-row .zoom-to{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:14px;line-height:1}.filter-row .zoom-to:hover:not(:disabled){color:var(--text)}.filter-row .zoom-to:disabled{opacity:.3;cursor:default}.filter-row.child{padding-left:20px}.filter-item.section-head{font-weight:600}.layer-section{border-bottom:1px dashed var(--line);margin:6px 0 8px;padding-bottom:4px}.map-nav{gap:4px;margin-left:14px;display:flex}.map-nav a{color:inherit;opacity:.8;border-radius:6px;padding:4px 8px;font-size:13px;text-decoration:none}.map-nav a:hover{opacity:1;background:#ffffff1a}.swatch{border:1px solid #0003;border-radius:50%;flex:none;width:12px;height:12px;display:inline-block}.swatch.sq{border-radius:3px}.swatch.line{border-radius:2px;width:16px;height:4px}.tool-grid{gap:6px;display:grid}.banner{z-index:500;border-radius:var(--radius);background:#fffbe6;border:1px solid #e8d07a;align-items:center;gap:8px;max-width:calc(100% - 24px);padding:8px 12px;font-size:13px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0000001f}.banner.danger{color:#9f1239;background:#fff1f2;border-color:#fda4af}.coord-bar{z-index:500;border:1px solid var(--line);color:var(--muted);font-size:12px;font-family:var(--font-mono-stack);background:#ffffffeb;border-radius:6px;padding:3px 8px;position:absolute;bottom:8px;right:52px}.result-list{margin:8px 0 0;padding:0;list-style:none}.result-list li{border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:flex-start;gap:10px;padding:8px 6px;font-size:13px;transition:background .15s;display:flex}.result-list li:hover{background:#f1f6fb}.result-list li.active{box-shadow:inset 3px 0 0 var(--teal-600);background:#e6fbf7}.seq{background:var(--ink-800);color:#fff;height:24px;font-size:12px;font-family:var(--font-mono-stack);border-radius:50%;flex:0 0 24px;place-items:center;display:grid}.kpis{grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0;display:grid}.kpi{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:8px 10px}.kpi b{font-family:var(--font-mono-stack);color:var(--ink-800);font-size:20px;line-height:1.1;display:block}.kpi span{color:var(--muted);font-size:11px}.progress{background:var(--paper-2);border-radius:999px;height:8px;margin:8px 0 4px;overflow:hidden}.progress>i{background:linear-gradient(90deg, var(--teal-600), var(--cyan));border-radius:999px;height:100%;transition:width .4s;display:block}.progress.indeterminate>i{animation:1.2s ease-in-out infinite indet;width:35%!important}@keyframes indet{0%{transform:translate(-100%)}to{transform:translate(300%)}}.seg{flex-wrap:wrap;gap:4px;display:flex}.seg button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;flex:1;min-width:64px;padding:7px 6px;font-size:13px}.seg button[aria-pressed=true]{border-color:var(--c,var(--ink-800));background:color-mix(in srgb, var(--c,var(--ink-800)) 12%, #fff);box-shadow:inset 0 0 0 1px var(--c,var(--ink-800));font-weight:600}.type-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.type-grid button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;justify-items:center;gap:2px;padding:8px 4px;font-size:12px;display:grid}.type-grid button span{font-size:20px;line-height:1.1}.type-grid button[aria-pressed=true]{border-color:var(--teal-600);box-shadow:inset 0 0 0 1px var(--teal-600);background:#effcf9;font-weight:600}.radius-readout{justify-content:space-between;align-items:baseline;margin-top:6px;display:flex}.radius-readout b{font-family:var(--font-mono-stack);color:var(--ink-800);font-size:22px}.radius-readout span{color:var(--muted);font-size:12px}.geo-results{border:1px solid var(--line);border-radius:10px;margin:6px 0 0;padding:0;list-style:none;overflow:hidden}.geo-results li button{text-align:left;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:#fff;width:100%;padding:8px 10px;font-size:13px}.geo-results li:last-child button{border-bottom:0}.geo-results li button:hover{background:#f1f6fb}.attribution{color:var(--muted);margin-top:4px;font-size:10.5px}.pill{background:var(--paper-2);color:var(--ink-700);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:11px;display:inline-flex}.pill.sev{color:#fff;background:var(--c)}.pill.risk-high{color:#be123c;background:#ffe4e6}.pill.risk-medium{color:#c2410c;background:#ffedd5}.pill.risk-low{color:#854d0e;background:#fef9c3}.pill.ok{color:#065f46;background:#d1fae5}.inc-item{grid-template-columns:38px 1fr;align-items:start;gap:10px;display:grid}.inc-glyph{background:color-mix(in srgb, var(--c) 16%, #fff);border:1px solid color-mix(in srgb, var(--c) 45%, #fff);border-radius:10px;place-items:center;width:38px;height:38px;font-size:20px;display:grid}.inc-title{font-size:14px;font-weight:600}.row-actions{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.alert-box{border-radius:12px;margin-top:10px;padding:12px;font-size:13px;line-height:1.55}.alert-box.danger{color:#881337;background:#fff1f2;border:1px solid #fecdd3}.alert-box.safe{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0}.alert-box h4{margin:0 0 4px;font-size:14px}.toast-wrap{z-index:2000;gap:6px;display:grid;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast{background:var(--ink-800);color:#fff;border-radius:20px;padding:9px 14px;font-size:13px;box-shadow:0 8px 20px #0003}.toast.err{background:var(--danger)}.toast.ok{background:var(--ok)}.popup h4{margin:0 0 4px;font-size:15px}.popup .meta{color:var(--muted);margin-bottom:4px;font-size:12px}.popup .desc{white-space:pre-line;margin-bottom:6px;font-size:13px}.popup img{background:#0b1220;border-radius:6px;max-width:220px;margin:6px 0;display:block}.tag{background:#e9eef5;border-radius:10px;padding:1px 8px;font-size:11px;display:inline-block}.tag.sensitive{color:var(--danger);background:#fdecea}.tag.off{color:#6b7280;background:#eceff3}.cctv-icon{background:0 0;border:0}.poi-icon{filter:drop-shadow(0 2px 3px #00000059);background:0 0;border:0}.poi-glyph{flex:none;display:block}.leaflet-container{font-family:var(--font-sans-stack);background:#dfe7ef}.tiles-muted{filter:saturate(.45)contrast(.96)brightness(1.04)}.tiles-dark{filter:invert()hue-rotate(185deg)brightness(.82)contrast(.92)saturate(.55)}.leaflet-container:has(.tiles-dark){background:#0b1522}.leaflet-control-layers{border-radius:10px!important}.cam-node{background:0 0;border:0}.cam-node .n{color:#99f6e4;width:26px;height:26px;font-size:10px;font-family:var(--font-mono-stack);background:#0b2a47;border:2px solid #5eead4;border-radius:50%;place-items:center;display:grid;box-shadow:0 0 0 4px #2dd4bf1f}.cam-node.dim .n{color:#8fb3cf;box-shadow:none;opacity:.75;border-color:#466683}.cam-node.hit .n{background:var(--amber);color:var(--ink-900);border-color:#fff;font-weight:700;box-shadow:0 0 0 6px #fbbf2440,0 0 18px #fbbf24b3}.cam-node.reached .n{animation:.9s ease-out camhit}@keyframes camhit{0%{box-shadow:0 0 #fbbf24e6}to{box-shadow:0 0 0 26px #fbbf2400}}.glyph-pin{background:0 0;border:0}.glyph-pin-dot{border:3px solid var(--c);width:34px;height:34px;box-shadow:0 4px 12px #00000040, 0 0 0 6px color-mix(in srgb, var(--c) 25%, transparent);background:#fff;border-radius:50%;place-items:center;font-size:17px;display:grid}.glyph-pin.pulse .glyph-pin-dot{animation:2s ease-out infinite pinpulse}@keyframes pinpulse{0%{box-shadow:0 4px 12px #00000040, 0 0 0 0 color-mix(in srgb, var(--c) 60%, transparent)}to{box-shadow:0 4px 12px #00000040,0 0 0 22px #0000}}.glyph-pin.preview .glyph-pin-dot{border-style:dashed}.radius-label{font-family:var(--font-mono-stack);color:#fff!important;background:#04111fdb!important;border:0!important;border-radius:999px!important;padding:3px 9px!important;font-size:12px!important;box-shadow:0 4px 12px #00000040!important}.radius-label:before{display:none}.dist-label{font-family:var(--font-mono-stack);border:1px solid var(--line)!important;background:#fff!important;padding:1px 6px!important;font-size:11px!important}.zone-edge{stroke-dasharray:6 6}.me-marker{background:0 0;border:0}.me-marker span{background:#2563eb;border:3px solid #fff;border-radius:50%;width:18px;height:18px;display:block;box-shadow:0 0 0 6px #2563eb40}@media (max-width:900px){.hero-inner{text-align:center;grid-template-columns:1fr;justify-items:center}.hero-user{align-items:center}.info-grid{grid-template-columns:1fr}.topbar nav{display:none}}@media (max-width:820px){.body-row{flex-direction:column}.side,.side.wide{border-right:0;border-bottom:1px solid var(--line);flex:none;width:100%;max-height:46dvh}.map-area{min-height:50dvh}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.confirm-modal{text-align:center;max-width:380px;color:var(--text);padding:26px 24px 22px}.confirm-modal h3{margin:0 0 6px;font-size:19px}.confirm-modal .muted{margin:0 0 20px;font-size:13px}.confirm-icon{color:#be123c;background:#fff1f2;border-radius:50%;place-items:center;width:58px;height:58px;margin:0 auto 12px;display:grid;box-shadow:0 0 0 8px #e11d4814}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.confirm-actions .btn{min-height:44px;font-weight:600}.panel-tabs a{text-align:center;color:var(--muted);border-radius:7px;flex:1;padding:8px 6px;font-size:13px;text-decoration:none}.panel-tabs a[aria-selected=true]{color:var(--ink-800);background:#fff;font-weight:600;box-shadow:0 1px 3px #00000014}.panel-tabs a:hover{color:var(--ink-800)}.plate-preview-wrap{grid-template-columns:auto 1fr;align-items:center;gap:12px;margin-top:12px;display:grid}.hub{background:var(--ink-900);color:#e6f1fb;flex:1;min-height:0;overflow-y:auto}.hub-inner{max-width:1180px;margin:0 auto;padding:32px 24px 48px}.hub-inner>h2{margin:0 0 4px;font-size:24px}.hub-inner>p{color:#a9c8e0;margin:0 0 22px}.hub-stats{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px;display:grid}.hub-stats .info-tile b{font-family:var(--font-mono-stack);color:var(--teal);font-size:26px;display:block}@media (max-width:900px){.hub-stats{grid-template-columns:1fr}}.feature-admin{background:#0b2a478c;border:1px dashed #fbbf2473;border-radius:14px;margin-top:22px;padding:16px 18px}.fa-row h3{color:#fff;margin:2px 0 4px;font-size:17px}.fa-row p{color:#a9c8e0;margin:0;font-size:13px}.feature-admin .modal{color:var(--text)}.fa-kicker{letter-spacing:.12em;color:var(--amber);font-size:11px;font-weight:600}.fa-meta{color:#7fb3d6!important;margin-top:6px!important;font-size:12px!important}.fa-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.fa-log{color:#c9dcec;margin-top:10px;font-size:12.5px}.fa-log summary{cursor:pointer;color:#7fb3d6}.fa-log ul{gap:4px;margin:8px 0 0;padding-left:16px;display:grid}.switch{cursor:pointer;color:#e6f1fb;background:#ffffff0f;border:1px solid #fff3;border-radius:999px;flex:none;align-items:center;gap:10px;padding:5px 14px 5px 5px;display:inline-flex;position:relative}.switch .knob{background:#475569;border-radius:999px;width:44px;height:24px;transition:background .2s;position:relative}.switch .knob:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:3px;left:3px}.switch.on .knob{background:var(--teal-600)}.switch.on .knob:after{transform:translate(20px)}.switch .lbl{min-width:52px;font-size:13px;font-weight:600}.confirm-icon{font-size:24px;font-weight:700}.feature-card.disabled{cursor:not-allowed;border-color:#94a3b859}.feature-card.disabled .art{filter:grayscale(.9)brightness(.7)}.feature-card.disabled h2,.feature-card.disabled p{opacity:.75}.feature-card.disabled:hover{transform:none;box-shadow:0 18px 50px #00000059}.feature-card .off-badge{z-index:2;color:#fff;filter:none;background:#e11d48;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;position:absolute;top:16px;left:16px}.panel-tabs .disabled-tab{text-align:center;color:#94a3b8;cursor:not-allowed;flex:1;padding:8px 6px;font-size:13px}.notice-stack{z-index:3000;gap:10px;width:min(380px,100vw - 32px);display:grid;position:fixed;top:18px;right:18px}.notice{color:var(--text);background:#fff;border-radius:14px;grid-template-columns:auto 1fr auto;align-items:start;gap:12px;padding:14px 14px 16px;animation:.32s cubic-bezier(.2,.9,.3,1.2) notice-in;display:grid;position:relative;overflow:hidden;box-shadow:0 18px 50px #04111f59,0 0 0 1px #04111f0f}.notice.leaving{animation:.22s ease-in forwards notice-out}@keyframes notice-in{0%{opacity:0;transform:translate(40px)scale(.96)}to{opacity:1;transform:none}}@keyframes notice-out{to{opacity:0;transform:translate(40px)}}.notice-icon{border-radius:50%;place-items:center;width:34px;height:34px;font-size:17px;font-weight:700;display:grid}.notice-ok .notice-icon{color:#047857;background:#d1fae5;box-shadow:0 0 0 6px #05966914}.notice-err .notice-icon{color:#be123c;background:#ffe4e6;box-shadow:0 0 0 6px #e11d4814}.notice-body{gap:2px;padding-top:2px;display:grid}.notice-body b{font-size:15px}.notice-body span{color:var(--muted);white-space:pre-line;font-size:13px;line-height:1.5}.notice-close{color:#94a3b8;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px;font-size:14px}.notice-close:hover{background:var(--paper-2);color:var(--text)}.notice-timer{transform-origin:0;width:100%;height:3px;animation-name:notice-timer;animation-timing-function:linear;animation-fill-mode:forwards;position:absolute;bottom:0;left:0}.notice-ok .notice-timer{background:linear-gradient(90deg, var(--teal-600), var(--teal))}.notice-err .notice-timer{background:#e11d48}@keyframes notice-timer{to{transform:scaleX(0)}}.users-card{background:#0b2a478c;border:1px solid #38bdf82e;border-radius:12px;margin-top:18px;padding:16px;overflow-x:auto}.users-card h3{color:#fff;align-items:center;gap:8px;margin:0 0 10px;font-size:16px;display:flex}.users-card .count{font-family:var(--font-mono-stack);color:var(--teal);font-size:12px}.users-card .muted{color:#a9c8e0}.users-table{border-collapse:collapse;width:100%;font-size:13px}.users-table th{text-align:left;color:#a9c8e0;border-bottom:1px solid #38bdf840;padding:6px 8px;font-weight:600}.users-table td{vertical-align:top;border-bottom:1px solid #38bdf81a;padding:8px}.users-table td.actions{white-space:nowrap;text-align:right}.users-table td.actions .btn+.btn{margin-left:6px}.users-table tr.inactive td{opacity:.55}.users-table select{min-width:190px}.summary-kpis{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0 0 22px}.summary-kpis small{color:#a9c8e0;font-size:14px}.place-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.place-card{background:#0b2a478c;border:1px solid #38bdf82e;border-radius:12px;padding:14px 16px}.place-card header{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.place-card h3{color:#fff;margin:0;font-size:16px}.place-card header b{font-family:var(--font-mono-stack);color:var(--teal);font-size:26px}.place-card ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.place-card li a{color:#e6f1fb;border-radius:8px;grid-template-columns:22px minmax(0,1.4fr) 1fr 44px;align-items:center;gap:8px;margin:-4px -8px;padding:4px 8px;font-size:13px;text-decoration:none;display:grid}.place-card li a:hover,.place-card li a:focus-visible{background:#2dd4bf1f;outline:none}.place-card h3 a{color:inherit;text-decoration:none}.place-card h3 a:hover{color:var(--teal);text-decoration:underline}.tile-link{color:inherit;text-decoration:none;transition:border-color .15s,background .15s;display:block}.tile-link:hover,.tile-link:focus-visible{border-color:var(--teal);background:#2dd4bf14;outline:none}.focus-banner{color:var(--ink-800);background:#effcf9;border:1px solid #99e6db;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin:0 0 10px;padding:8px 10px;font-size:13px;display:flex}.place-card .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.place-card .name .tag{margin-left:6px}.place-card .bar{background:#ffffff14;border-radius:4px;height:8px;overflow:hidden}.place-card .bar i{background:var(--teal);border-radius:0 4px 4px 0;min-width:2px;height:100%;display:block}.place-card .num{text-align:right;font-family:var(--font-mono-stack);color:#fff}.place-card .foot{color:#a9c8e0;margin:8px 0 0;font-size:12px}.summary-note{color:#7f9db8;margin-top:18px;font-size:12px}.link-teal{color:var(--teal)}@media (max-width:600px){.place-grid{grid-template-columns:1fr}}
