@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");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}:root{--bg:#f3faff;--ink:#10283a;--muted:#4a6273;--link:#0f6aa6;--card:#fffffff0;--card-border:#ffffffe6;--line:#10283a14;--track:#10283a14;--sea:#1d8fd1;--sea-soft:#e3f4fd;--sun:#ffc93c;--coral:#ff7a6b;--good:#1fb57a;--good-soft:#e3f8ef;--warn:#f09a00;--warn-soft:#fff3dc;--bad:#e5484d;--bad-soft:#fde8e8;--shadow:0 10px 30px #145a8c1f, 0 2px 6px #145a8c0f;--radius:22px;--font:"Nunito Variable", ui-rounded, "SF Pro Rounded", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}input{font:inherit;color:inherit}h1,h2,h3,p{margin:0}.app{max-width:480px;min-height:100dvh;padding-bottom:calc(92px + env(safe-area-inset-bottom));margin:0 auto;position:relative}.hero{border-radius:0 0 32px 32px;height:270px;position:relative;overflow:hidden}.hero.tall{height:46dvh;min-height:300px}.sky-stop{transition:stop-color 1.2s}.scene{width:100%;height:100%;display:block;position:absolute;inset:0}.hero-bar{top:calc(12px + env(safe-area-inset-top));align-items:center;gap:8px;display:flex;position:absolute;left:12px;right:12px}.beach-name,.glass-btn{background:#fffc;border:1px solid #fffc;box-shadow:0 4px 16px #0a3c641f}.beach-name{text-align:left;border-radius:999px;flex:1;align-items:center;gap:8px;min-width:0;padding:8px 14px;display:flex}.beach-name span{flex-direction:column;min-width:0;line-height:1.15;display:flex}.beach-name strong{white-space:nowrap;text-overflow:ellipsis;font-size:16px;overflow:hidden}.beach-name small{color:#3d5566;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.glass-btn{border-radius:50%;flex:none;place-items:center;width:44px;height:44px;display:grid}.content{margin-top:-40px;padding:0 16px;position:relative}.welcome .content,.welcome-search .content{margin-top:-60px}.welcome-search .content{padding-top:calc(20px + env(safe-area-inset-top));margin-top:0}.stack{flex-direction:column;gap:12px;display:flex}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card-head{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.card h2{font-size:17px;font-weight:800}.screen-title{letter-spacing:-.02em;margin:56px 4px 2px;font-size:26px;font-weight:900}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:10px 4px 6px;font-size:13px;font-weight:800}.muted{color:var(--muted)}.small{font-size:13px;line-height:1.4}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:12px;font-weight:800}.empty{text-align:center;color:var(--muted);padding:20px;list-style:none}.answer{border-width:2px;align-items:center;gap:12px;padding:18px;display:flex}.answer-text{flex-direction:column;flex:1;gap:4px;display:flex}.answer h1{letter-spacing:-.02em;font-size:30px;font-weight:900;line-height:1.05}.answer p{color:#2c4659;font-size:15px;line-height:1.4}.answer.tone-good{border-color:#1fb57a59}.answer.tone-good h1{color:#0f8a5a}.answer.tone-warn{border-color:#f09a0059}.answer.tone-warn h1{color:#b76f00}.answer.tone-bad{border-color:#e5484d4d}.answer.tone-bad h1{color:#c0343a}.ring{flex:none}.ring-text{fill:var(--ink);font-size:18px;font-weight:900}.pill{border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:9px 14px;font-size:15px;display:flex}.pill.best{color:#7a5300;background:#fff6d6;box-shadow:0 4px 14px #f0aa002e}.chips{grid-template-columns:1fr 1fr;gap:10px;display:grid}.chip{background:var(--card);border:1px solid var(--card-border);box-shadow:var(--shadow);color:var(--sea);border-radius:18px;align-items:center;gap:10px;padding:12px;display:flex}.chip>div{min-width:0;color:var(--ink);flex-direction:column;display:flex}.chip strong{font-size:17px;font-weight:900}.chip span{color:var(--muted);font-size:12.5px;line-height:1.25}.chip.tone-good{background:var(--good-soft);color:var(--good)}.chip.tone-warn{background:var(--warn-soft);color:var(--warn)}.chip.tone-bad{background:var(--bad-soft);color:var(--bad)}.tips{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tips li{background:var(--sea-soft);color:#164d70;border-radius:14px;padding:10px 14px;font-size:14px;line-height:1.35}.link-card{text-align:left;width:100%;color:var(--sea);align-items:center;gap:12px;display:flex}.link-card>div{color:var(--ink);flex-direction:column;flex:1;display:flex}.link-card strong{font-size:16px}.tide-chart{width:100%;height:auto;margin:4px 0;display:block;overflow:visible}.tide-label{fill:#1b5c86;font-size:10.5px;font-weight:800}.axis-label{fill:var(--muted);font-size:10px}.day{padding:0;position:relative;overflow:hidden}.day.is-best{border:2px solid #ffc93ce6;box-shadow:0 10px 30px #f0aa0038}.ribbon{background:var(--sun);color:#6b4700;text-transform:uppercase;letter-spacing:.06em;padding:3px 34px;font-size:10px;font-weight:900;animation:3s ease-in-out infinite wiggle;position:absolute;top:10px;right:-30px;transform:rotate(35deg)}.day.is-best .day-row{padding-right:36px}.day-row{text-align:left;align-items:center;gap:12px;width:100%;padding:14px 16px;display:flex}.day-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.day-main strong{font-size:16px}.bar{background:var(--track);border-radius:99px;height:7px;margin-top:4px;overflow:hidden}.bar i{border-radius:99px;height:100%;display:block}.tone-good .bar i{background:linear-gradient(90deg, #5fd6a4, var(--good))}.tone-warn .bar i{background:linear-gradient(90deg, #ffd166, var(--warn))}.tone-bad .bar i{background:linear-gradient(90deg, #ff9a9d, var(--bad))}.score{text-align:right;width:34px;font-size:20px;font-weight:900}.chev{color:var(--muted);flex:none;transition:transform .25s}.chev.open{transform:rotate(90deg)}.day-more{flex-direction:column;gap:10px;padding:0 16px 14px;display:flex;overflow:hidden}.day-more>p{font-size:14.5px}.hours{align-items:flex-end;gap:4px;height:64px;display:flex}.hour{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:3px;height:100%;display:flex}.hour i{border-radius:6px;width:100%;display:block}.hour i.good{background:var(--good)}.hour i.warn{background:var(--warn)}.hour i.bad{background:#f3a3a5}.hour span{color:var(--muted);font-size:10px}.inline-badge{border-radius:12px;align-items:center;gap:6px;padding:8px 12px;font-size:14px;display:flex}.inline-badge.tone-good{background:var(--good-soft);color:#0f7a50}.inline-badge.tone-warn{background:var(--warn-soft);color:#9a5f00}.inline-badge.tone-bad{background:var(--bad-soft);color:#b12f34}.search{box-shadow:var(--shadow);color:var(--muted);background:#fff;border-radius:16px;align-items:center;gap:10px;padding:12px 16px;display:flex}.search input{background:0 0;border:0;outline:none;flex:1;min-width:0;min-height:28px;font-size:16px}.search:focus-within{box-shadow:0 0 0 3px #0f6aa673, var(--shadow)}.list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.beach-row{background:var(--card);border:1px solid var(--card-border);box-shadow:var(--shadow);border-radius:16px;align-items:center;display:flex}.beach-row.is-current{border-color:#1d8fd180}.beach-pick{text-align:left;min-width:0;color:var(--sea);flex:1;align-items:center;gap:10px;padding:12px 14px;display:flex}.beach-pick>div{min-width:0;color:var(--ink);flex-direction:column;display:flex}.beach-pick strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.star{width:48px;height:48px;color:var(--muted);flex:none;place-items:center;display:grid}.btn{border-radius:16px;justify-content:center;align-items:center;gap:8px;padding:14px 18px;font-size:16px;font-weight:800;display:inline-flex}.btn.wide{width:100%}.btn.primary{color:#fff;background:linear-gradient(#1673ad,#11689f);box-shadow:0 8px 20px #11689f52}.btn.primary:active{transform:translateY(1px)}.btn.primary:disabled{opacity:.7}.btn.ghost{color:var(--link);box-shadow:var(--shadow);background:#fff}.welcome-card{flex-direction:column;gap:12px;padding:22px;display:flex}.welcome-card h1{letter-spacing:-.02em;font-size:34px;font-weight:900}.welcome-card p{color:#2c4659;margin-bottom:6px;line-height:1.45}.banner{background:var(--warn-soft);color:#7a4c00;border-radius:14px;margin-bottom:12px;padding:10px 14px;font-size:14px}.error{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.ad-slot{height:56px;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;border:1.5px dashed #10283a2e;border-radius:12px;place-items:center;font-size:12px;display:grid}.skeleton{background:linear-gradient(90deg,#e6f1f8 25%,#f4f9fc 50%,#e6f1f8 75%) 0 0/200% 100%;border-radius:10px;margin:6px 0;animation:1.3s infinite shimmer}.tabbar{bottom:calc(12px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(20px)saturate(1.5);z-index:10;background:#ffffffb8;border:1px solid #ffffffe6;border-radius:26px;width:min(448px,100% - 32px);padding:6px;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 12px 34px #0a3c642e}.tabbar button{color:var(--muted);border-radius:20px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 0;font-size:12px;font-weight:800;display:flex;position:relative}.tabbar button>*{z-index:1;position:relative}.tabbar button.active{color:var(--link)}.tab-pill{background:var(--sea-soft);border-radius:20px;inset:0;z-index:0!important;position:absolute!important}.sheet-backdrop{z-index:20;background:#0a1e2d59;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:480px;padding:12px 20px calc(20px + env(safe-area-inset-bottom));background:#fff;border-radius:28px 28px 0 0;flex-direction:column;gap:12px;display:flex}.grabber{background:#d5e0e8;border-radius:9px;align-self:center;width:40px;height:5px}.sources{flex-direction:column;gap:8px;margin:0;padding-left:18px;font-size:14.5px;line-height:1.4;display:flex}.spin{animation:40s linear infinite spin}.drift{animation:45s linear infinite drift}.waves{animation:7s linear infinite waves}.waves.slow{animation-duration:12s}.waves.fast{animation-duration:4.5s;animation-direction:reverse}.rain{animation:.8s linear infinite rain}.flash{opacity:0;animation:6s infinite flash}.twinkle{animation:2.4s ease-in-out infinite twinkle}.blink{transform-box:fill-box;transform-origin:50%;animation:5s infinite blink}.sway{transform-origin:0 0;animation:4s ease-in-out infinite sway}.crab{animation:6s ease-in-out infinite crab}.pulse{transform-box:fill-box;transform-origin:50%;animation:1.8s ease-out infinite pulse}.draw{stroke-dasharray:900;stroke-dashoffset:900px;animation:1.4s ease-out forwards draw}.tide-arrow.up{animation:1.6s ease-in-out infinite bob-up}.tide-arrow.down{animation:1.6s ease-in-out infinite bob-down}.wave-bob{animation:2.4s ease-in-out infinite bob-x}@keyframes spin{to{transform:rotate(360deg)}}@keyframes drift{0%{transform:translate(-160px)}to{transform:translate(460px)}}@keyframes waves{0%{transform:translate(0)}to{transform:translate(-400px)}}@keyframes rain{0%{transform:translateY(0)}to{transform:translateY(270px)}}@keyframes flash{0%,91%,95%,to{opacity:0}92%,94%{opacity:.65}}@keyframes twinkle{50%{opacity:.25}}@keyframes blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes sway{50%{transform:rotate(3deg)}}@keyframes crab{0%,to{transform:translate(0)}25%{transform:translate(-18px)}50%{transform:translate(-18px)translateY(-2px)}75%{transform:translate(10px)}}@keyframes pulse{0%{opacity:.6;transform:scale(.6)}to{opacity:0;transform:scale(2)}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes bob-up{50%{transform:translateY(-3px)}}@keyframes bob-down{50%{transform:translateY(3px)}}@keyframes bob-x{50%{transform:translate(3px)}}@keyframes wiggle{0%,90%,to{transform:rotate(35deg)}94%{transform:rotate(31deg)}97%{transform:rotate(38deg)}}@keyframes shimmer{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.draw{stroke-dashoffset:0}}.pills{flex-wrap:wrap;gap:8px;display:flex}.pills .pill{align-self:auto}.pill.sun{color:#8a4a12;background:#fff0e6}.btn.share{color:#fff;background:linear-gradient(#13875a,#0f7a50);box-shadow:0 8px 20px #0f7a5047}.btn.share:disabled{opacity:.75}.card-head h2{align-items:center;gap:6px;display:flex}.weekend-verdict{margin:2px 0 10px;font-size:16px;font-weight:800}.weekend-days{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:10px;display:grid}.weekend-day{text-align:center;background:#f4f9fc;border:2px solid #0000;border-radius:18px;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;display:flex}.weekend-day .score{text-align:center;width:auto;font-size:26px}.weekend-day.is-winner{background:#fffaf0;border-color:#ffc93ce6;animation:.6s ease-out .4s both pop}.weekend-day.tone-good .score{color:#0f7a50}.weekend-day.tone-warn .score{color:#9a5d00}.weekend-day.tone-bad .score{color:#c0343a}.pools{background:linear-gradient(#effaff,#fff)}.pool-name{text-align:left;flex-direction:column;margin-bottom:8px;display:flex}.pool-name strong{font-size:16px}.pool-windows{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.pool-windows li{background:var(--sea-soft);color:#164d70;border-radius:14px;grid-template-columns:76px 1fr;column-gap:8px;padding:9px 12px;display:grid}.pool-windows li .muted{grid-column:2}.region-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.region-list button{text-align:left;border-radius:14px;align-items:center;gap:10px;width:100%;padding:8px 4px;display:flex}.region-list button.is-current{background:var(--sea-soft);cursor:default}.region-name{flex-direction:column;flex:1;min-width:0;display:flex}.region-name strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.rank{background:var(--track);border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:13px;font-weight:900;display:grid}.rank.gold{background:var(--sun);color:#6b4700}.region-list .score{width:30px;font-size:18px}.region-list .score.tone-good{color:#0f7a50}.region-list .score.tone-warn{color:#9a5d00}.region-list .score.tone-bad{color:#c0343a}@keyframes pop{0%{transform:scale(.94)}60%{transform:scale(1.04)}to{transform:scale(1)}}.directions .map{background:#e3eef5;border-radius:16px;place-items:center;height:210px;margin:4px 0 10px;display:grid;position:relative;overflow:hidden}.directions .map .maplibregl-canvas{outline:none}.map-pin.beach{background:var(--coral);border:3px solid #fff;border-radius:50% 50% 50% 0;width:30px;height:30px;transform:rotate(-45deg);box-shadow:0 4px 10px #00000040}.map-pin.beach:after{content:"";background:#fff;border-radius:50%;position:absolute;inset:8px}.map-pin.user{background:#1d8fd1;border:3px solid #fff;border-radius:50%;width:18px;height:18px;box-shadow:0 0 0 6px #1d8fd140}.link-btn{color:var(--link);align-items:center;gap:6px;min-height:44px;margin-bottom:6px;font-size:14px;font-weight:800;display:flex}.nav-buttons{grid-template-columns:1fr 1fr;gap:10px;display:grid}.btn.nav{padding:12px;font-size:15px;text-decoration:none}.btn.nav.google{color:#1a73e8;background:#fff;border:1.5px solid #d6e4f5}.btn.nav.waze{color:#0b2a3a;background:#3cf}.about-list{flex-direction:column;gap:10px;margin:0 0 6px;padding:0;list-style:none;display:flex}.about-item{align-items:flex-start;gap:12px;display:flex}.about-item>div{flex-direction:column;display:flex}.about-icon{background:var(--sea-soft);width:36px;height:36px;color:var(--sea);border-radius:12px;flex:none;place-items:center;display:grid}.about-item.blue-flag .about-icon{background:#e6efff}.about-icon.crowd-0{background:var(--good-soft);color:var(--good)}.about-icon.crowd-1{background:var(--warn-soft);color:var(--warn)}.about-icon.crowd-2{background:var(--bad-soft);color:var(--bad)}.facility-chips{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.facility{color:#2c4659;background:#f1f6f9;border-radius:999px;padding:6px 10px;font-size:13px;font-weight:700}.directions .maplibregl-ctrl-attrib{font-size:10px}.directions .maplibregl-ctrl-attrib.maplibregl-compact-show{max-width:85%}.badge-blue{color:#1d5fc1;background:#e6efff;border-radius:999px;align-self:flex-start;margin-top:3px;padding:2px 8px;font-size:11px;font-weight:800}.about-item.bathing.tone-good .about-icon{background:var(--good-soft)}.about-item.bathing.tone-good strong{color:#0f8a5a}.about-item.bathing.tone-bad .about-icon{background:var(--bad-soft)}.about-item.bathing.tone-bad strong{color:#c0343a}.about-item a{color:var(--link);margin:-12px 0;padding:12px 0;font-weight:800;display:inline-block}button:focus-visible,a:focus-visible{outline:3px solid var(--link);outline-offset:2px;border-radius:12px}.tab-panel:not([hidden]){animation:.22s ease-out tab-in}@keyframes tab-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
