:root{color-scheme:only light;--bg: #f7f2ea;--card: #fffcf7;--text: #1f2a44;--muted: #5f6b85;--border: #dbe3f0;--accent: #0e7fa6;--low: #11a579;--medium: #f39c3d;--high: #e55454;--nodata: #94a3b8}*{box-sizing:border-box}body{margin:0;font-family:Avenir Next,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(circle at 14% 8%,#ffd7bd 0%,transparent 33%),radial-gradient(circle at 88% 10%,#c5f0ff 0%,transparent 36%),linear-gradient(180deg,#fffdf8 0%,var(--bg) 100%);min-height:100vh}.layout{width:min(1220px,100% - 2rem);margin:0 auto;padding:1.25rem 0 2rem;display:grid;gap:1.25rem}.hero,.card,.resort-card{border:1px solid var(--border);border-radius:18px;background:var(--card)}.hero{padding:1.2rem;background:linear-gradient(180deg,#fffefb,#f8fcff),radial-gradient(circle at 88% 12%,#dff4ff 0%,transparent 45%)}.brand{display:inline-flex;align-items:center;gap:.6rem}.brand img{width:38px;height:38px;display:block}.brand p{margin:0;color:var(--accent);font-size:.9rem;letter-spacing:.03em;font-weight:700}.badge{margin:0;display:inline-block;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:700}h1{margin:.55rem 0 0;line-height:1.1;font-size:clamp(1.6rem,2.8vw,2.6rem)}h2{margin:0;font-size:1.2rem}.subtitle{margin:.55rem 0 0;color:var(--muted)}.hero-meta{margin-top:.72rem;display:flex;flex-wrap:wrap;gap:.45rem}.hero-meta span{display:inline-flex;align-items:center;gap:.3rem;border:1px solid #d4e6f7;background:#f2f8ff;border-radius:999px;padding:.26rem .58rem;font-size:.8rem;color:#2a5578;font-weight:700}.season-banner{margin-top:.6rem;border-radius:12px;border:1px solid;padding:.58rem .68rem;position:relative;overflow:hidden}.season-banner>*{position:relative;z-index:1}.season-banner.best{border-color:#ccead8;background:#eefaf3}.season-banner.mixed{border-color:#eddcac;background:#fff9eb}.season-banner.rainy{border-color:#cde1f6;background:#eef5fd}.season-banner-title{margin:0;font-size:.87rem;font-weight:800}.season-banner-copy{margin:.25rem 0 0;font-size:.81rem;color:var(--muted);line-height:1.35}.back-link{margin:.5rem 0 0}.back-link a{color:var(--accent);text-decoration:none;font-weight:700}.back-link a:hover{text-decoration:underline}.stats{margin-top:1rem;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.stats article{border:1px solid var(--border);border-radius:12px;padding:.72rem .78rem;background:linear-gradient(180deg,#fff,#f6faff),radial-gradient(circle at top right,#e4f4ff 0%,transparent 55%);display:grid;gap:.3rem}.stat-label{margin:0;color:var(--muted);font-size:.82rem;display:inline-flex;align-items:center;gap:.35rem;font-weight:700}.stat-icon{width:1.12rem;height:1.12rem;display:inline-grid;place-items:center;border-radius:999px;background:#e7f3ff;font-size:.72rem}.stats strong{font-size:1.05rem;line-height:1.25}.stat-description{margin:0;color:var(--muted);font-size:.77rem;line-height:1.35}.resorts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.sort-wrap{justify-self:end;display:inline-grid;gap:.35rem}.sort-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.6rem}.sort-controls-home{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end}.sort-controls-resort{grid-template-columns:repeat(2,minmax(220px,1fr));align-items:end}.sort-controls-home .sort-select{min-width:0;width:100%}.sort-wrap label{font-size:.82rem;color:var(--muted);font-weight:700;display:block;margin-bottom:.2rem}.sort-select{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:10px;padding:.45rem .6rem;font-size:.9rem;min-width:280px}.resort-card{position:relative;overflow:hidden;padding:1rem;display:grid;gap:.82rem;background:linear-gradient(150deg,#f5f9ff,#edf6ff 52%,#f8fbff);text-decoration:none;color:inherit;border-color:#adc6e29e;box-shadow:0 14px 30px #16426a1a,inset 0 1px #ffffff7a;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.resort-card:before{content:"";position:absolute;inset:0;background-image:var(--resort-bg-image, radial-gradient(circle at 80% 15%, #cae7ff 0%, #e9f5ff 42%, #f7fbff 100%));background-size:cover;background-position:center;opacity:.92;transform:scale(1.03);pointer-events:none;transition:transform .5s ease}.resort-card:after{content:"";position:absolute;inset:0;background:linear-gradient(162deg,#081a2b52,#1c527f33 28%,#f5fbffb3,#fafcffe0),radial-gradient(circle at 92% 12%,rgba(150,229,255,.34) 0%,transparent 42%);pointer-events:none}.resort-card>*{position:relative;z-index:1}.resort-card:hover{transform:translateY(-4px);box-shadow:0 22px 38px #10385c29,inset 0 1px #ffffff9e;border-color:#8ab7ddd1}.resort-card:hover:before{transform:scale(1.06)}.resort-card header p,.status-text{margin:.2rem 0 0;color:var(--muted);font-size:.84rem}.resort-title{margin:0}.status-chip{display:inline-block;width:fit-content;padding:.24rem .55rem;border-radius:999px;background:#f0fcf5d1;border:1px solid rgba(173,226,199,.8);color:#1c6648;font-weight:700;backdrop-filter:blur(4px)}.season-chip{margin:.34rem 0 0;display:inline-block;width:fit-content;padding:.18rem .5rem;border-radius:999px;border:1px solid;font-size:.77rem;font-weight:700}.season-chip.best{color:#1f6c4f;border-color:#ccead8;background:#edf9f2}.season-chip.mixed{color:#7c651a;border-color:#eddcac;background:#fff8e8}.season-chip.rainy{color:#375f84;border-color:#cde1f6;background:#eef5fd}.season-copy{margin:.28rem 0 0;font-size:.82rem;color:var(--muted);line-height:1.35}.season-card{margin-top:.36rem;border-radius:12px;border:1px solid rgba(189,213,235,.84);padding:.52rem .58rem;position:relative;overflow:hidden;background:#f8fcff94;backdrop-filter:blur(7px)}.season-card>*{position:relative;z-index:1}.season-card.best{border-color:#ccead8;background:#eefaf3}.season-card.mixed{border-color:#eddcac;background:#fff9eb}.season-card.rainy{border-color:#cde1f6;background:#eef5fd}.country-pill{margin:0;justify-self:start;color:#204f72;background:#e8f5ffbd;border:1px solid rgba(190,220,244,.9);border-radius:999px;padding:.2rem .5rem;font-size:.78rem;font-weight:700;backdrop-filter:blur(4px)}.resort-beaches-pill{margin:0;color:#2d5a79;background:#eff6fdbd;border:1px solid rgba(202,221,240,.9);border-radius:999px;padding:.2rem .5rem;font-size:.76rem;font-weight:700;backdrop-filter:blur(4px)}.metrics{border:1px solid var(--border);border-radius:12px;background:#f8fbff;padding:.6rem .7rem;display:grid;gap:.35rem}.metrics p{margin:0;font-size:.92rem;display:inline-flex;align-items:center;gap:.45rem}.metrics-compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem .75rem}.metrics.metrics-compact{border:0;background:transparent;padding:0;border-radius:0;align-items:start}.metrics-compact p{display:grid;grid-template-columns:1.55rem 1fr;column-gap:.42rem;row-gap:.12rem;align-items:start;margin:0;border:1px solid rgba(184,210,235,.66);border-radius:12px;background:#fcffff8c;backdrop-filter:blur(7px)}.metrics.metrics-compact p{border:1px solid rgba(184,210,235,.66);background:#fcffff8c;padding:.36rem .42rem .34rem;border-radius:12px}.metrics-compact p strong{grid-column:2;font-size:1.04rem;line-height:1.15;color:var(--text);letter-spacing:.01em;font-weight:800}.metric-label{grid-column:2;margin-top:.03rem;font-weight:700;color:#2e4b69;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}.metric-sub{grid-column:2;font-size:.74rem;color:var(--muted);line-height:1.3}.metric-icon{grid-column:1;grid-row:1 / span 3;width:1.45rem;height:1.45rem;border-radius:999px;display:inline-grid;place-items:center;font-size:.82rem;background:#ffffffbd;border:1px solid rgba(180,206,230,.86);box-shadow:0 4px 10px #164a761f}.metrics.metrics-compact .metric-item:nth-child(odd){border-right:1px dashed rgba(157,187,216,.58);padding-right:.7rem}.metrics.metrics-compact .metric-item:nth-child(2n){padding-left:.05rem}.dot{width:.65rem;height:.65rem;border-radius:999px;display:inline-block}.dot.algae{background:#11a579;box-shadow:0 0 0 3px #d4f1e8}.dot.weather{background:#2b7cd6;box-shadow:0 0 0 3px #d4e5fa}.dot.marine{background:#00a9c8;box-shadow:0 0 0 3px #d3f2f8}.dot.live{background:#ff6b5c;box-shadow:0 0 0 3px #ffe1dd}.summary{border:1px dashed var(--border);border-radius:12px;padding:.55rem .65rem;display:grid;gap:.3rem}.summary p{margin:0;font-size:.86rem;color:var(--muted)}.summary strong{color:var(--text);font-size:.95rem}.availability-line{display:grid;gap:.32rem;color:var(--muted);font-size:.82rem}.availability-chip{display:inline-flex;align-items:center;width:fit-content;max-width:100%;border-radius:999px;background:#fff9;border:1px solid rgba(182,205,229,.76);padding:.24rem .5rem;color:#2f516f;white-space:normal;line-height:1.3;backdrop-filter:blur(5px)}.updated-at{margin:0;color:var(--muted);font-size:.83rem}.open-link{justify-self:start;display:inline-flex;align-items:center;gap:.48rem;color:#fff;text-decoration:none;font-weight:800;font-size:.86rem;letter-spacing:.01em;background:linear-gradient(135deg,#127ea4,#0b5d99);border:1px solid color-mix(in oklab,#0b5d99 72%,black);padding:.5rem .78rem;border-radius:999px;box-shadow:0 8px 18px #0b5d993d;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.resort-card:hover .open-link{transform:translateY(-1px);box-shadow:0 12px 22px #0b5d994d;filter:saturate(1.07)}.open-link-icon{width:1.2rem;height:1.2rem;display:inline-grid;place-items:center;border-radius:999px;background:#fff3;font-size:.76rem;line-height:1;transform:translate(0);transition:transform .18s ease,background-color .18s ease}.resort-card:hover .open-link-icon{transform:translate(2px);background:#ffffff47}.live-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.level.low{color:var(--low);border-color:color-mix(in oklab,var(--low) 45%,white);background:color-mix(in oklab,var(--low) 10%,white)}.level.medium{color:#8d6411;border-color:color-mix(in oklab,var(--medium) 55%,white);background:color-mix(in oklab,var(--medium) 14%,white)}.level.high{color:#8f2a2a;border-color:color-mix(in oklab,var(--high) 45%,white);background:color-mix(in oklab,var(--high) 12%,white)}.level.nodata{color:#5b6870;border-color:color-mix(in oklab,var(--nodata) 45%,white);background:color-mix(in oklab,var(--nodata) 14%,white)}.live-chip.photo{background:#175646c7}.data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;align-items:start}.data-label{margin:0;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.02em;font-weight:700}.hint-tooltip{margin-left:.12rem;display:inline-grid;place-items:center;width:1.15rem;height:1.15rem;border-radius:999px;border:1px solid #9fc4e3;background:linear-gradient(180deg,#f4fbff,#dff1ff);color:#1d567f;font-size:.72rem;font-weight:900;line-height:1;box-shadow:0 2px 8px #245b842e;cursor:help;position:relative;text-transform:none}.hint-tooltip:after{content:attr(data-tooltip);position:absolute;left:50%;top:auto;bottom:calc(100% + .45rem);transform:translate(-84%);min-width:220px;max-width:280px;padding:.5rem .55rem;border-radius:10px;border:1px solid #d2e1f0;background:#fff;color:var(--text);font-size:.74rem;line-height:1.35;box-shadow:0 10px 22px #1f2a4429;opacity:0;visibility:hidden;pointer-events:none;z-index:3}.hint-tooltip:hover:after,.hint-tooltip:focus-visible:after{opacity:1;visibility:visible}.data-sub{margin:0;font-size:.76rem;color:var(--muted);line-height:1.28}.meta-line{margin:.28rem 0 0;color:var(--muted);font-size:.78rem}.species-name{flex:1 1 150px;min-width:0;word-break:break-word}.data-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.data-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.weather-line{display:inline-flex;align-items:center;gap:.4rem}.weather-icon{width:.75rem;height:.75rem;border-radius:999px;display:inline-block}.weather-icon.sun{background:#ffb14a;box-shadow:0 0 0 3px #ffe3b7}.weather-icon.cloud{background:#7f93a1;box-shadow:0 0 0 3px #d9e1e6}.weather-icon.rain{background:#2b7cd6;box-shadow:0 0 0 3px #d4e5fa}.weather-icon.storm{background:#3b5f8a;box-shadow:0 0 0 3px #d7e4f3}.weather-icon.fog{background:#9ea7ae;box-shadow:0 0 0 3px #e3e7ea}.weather-icon.snow{background:#7cb7d9;box-shadow:0 0 0 3px #daedf8}.weather-icon.na{background:#adb7bf;box-shadow:0 0 0 3px #e5eaee}.flag-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.18rem .52rem;font-size:.78rem;font-weight:700;border:1px solid}.flag-pill.green{color:#1f6c4f;border-color:#b8e4d2;background:#e8f6ef}.flag-pill.yellow{color:#8a640f;border-color:#f1d9a7;background:#fff6df}.flag-pill.red{color:#8f2a2a;border-color:#efc0c0;background:#fdeaea}.flag-pill.na{color:#5b6870;border-color:#d5dde4;background:#f1f5f8}.card-foot{display:grid;gap:.3rem}.hint{margin:0;color:#7a5a1c;font-size:.79rem}.card-foot a{color:var(--accent);text-decoration:none;font-weight:600;font-size:.86rem}.card-foot a:hover{text-decoration:underline}@media(max-width:980px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.resorts-grid,.live-grid{grid-template-columns:1fr}.sort-wrap{justify-self:stretch}.sort-controls{grid-template-columns:1fr}.sort-controls-resort{grid-template-columns:repeat(2,minmax(220px,1fr));overflow-x:auto}.sort-select{min-width:0;width:100%}.metrics-compact{grid-template-columns:1fr}.metrics.metrics-compact .metric-item:nth-child(odd){border-right:0;padding-right:0}.metrics.metrics-compact .metric-item:nth-child(2n){padding-left:0}.data-grid-3,.data-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.stats,.data-grid,.data-grid-3,.data-grid-4{grid-template-columns:1fr}}.card{position:relative;overflow:visible;padding:.95rem;display:grid;gap:.82rem;background:linear-gradient(148deg,#f8fbff,#eff7ff 58%,#fdfefe);border-color:#b0cce8b3;box-shadow:0 14px 26px #15446c1a,inset 0 1px #ffffff8c;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 88% 10%,rgba(136,228,255,.3) 0%,transparent 40%),linear-gradient(170deg,#ffffff6b,#f5fbff14 55%,#eff7ff5c);pointer-events:none}.card>*{position:relative;z-index:1}.card:hover{transform:translateY(-3px);border-color:#90bbdfe6;box-shadow:0 22px 34px #123a5f26,inset 0 1px #ffffffad}.card.no-photo{background:linear-gradient(146deg,#f9fcff,#eef7ff 58%,#fbfefc),radial-gradient(circle at 88% 12%,#d5f2ff 0%,transparent 45%)}.card-head{display:flex;justify-content:space-between;gap:.7rem;align-items:start;padding:.15rem .1rem 0}.level{padding:.28rem .62rem;border-radius:999px;font-size:.8rem;font-weight:700;border:1px solid;white-space:nowrap;backdrop-filter:blur(4px)}.shot-wrap{border:1px solid rgba(173,202,230,.84);border-radius:12px;overflow:hidden;background:#eef6ff;aspect-ratio:16/9;position:relative;box-shadow:0 8px 20px #133d601f}.shot-wrap img{width:100%;height:100%;object-fit:cover;display:block}.live-chip{position:absolute;left:.55rem;top:.55rem;padding:.18rem .42rem;border-radius:999px;font-size:.72rem;font-weight:700;background:#14233ebd;color:#f2f8ff;border:1px solid rgba(255,255,255,.25)}.card .data-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.62rem;align-items:start}.card .data-grid-3,.card .data-grid-4{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.data-item{border:1px solid rgba(183,208,232,.78);border-radius:12px;padding:.55rem .64rem;background:#fafeffb8;backdrop-filter:blur(8px);display:grid;gap:.24rem;align-content:start;min-height:100%;box-shadow:inset 0 1px #ffffffb8}.data-value{margin:0;font-size:1.02rem;font-weight:800;line-height:1.25}.data-sub-species{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.22rem}.species-label{font-weight:700;color:#4d6a86}.species-name{flex:1 1 180px;min-width:0;word-break:break-word}.jellyfish-item .hint-tooltip{margin-left:-.14rem}@media(max-width:980px){.card .data-grid-3,.card .data-grid-4,.card .data-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}}@media(max-width:640px){.card .data-grid-3,.card .data-grid-4,.card .data-grid{grid-template-columns:1fr}}.resort-card{position:relative;overflow:hidden;padding:1rem;display:grid;gap:.82rem}.resort-head{display:grid;gap:.42rem}.resort-topline{display:flex;flex-wrap:wrap;gap:.38rem;align-items:center}.resort-title{margin:0;color:#fff;text-shadow:0 2px 12px rgba(6,24,42,.62),0 1px 2px rgba(6,24,42,.45);letter-spacing:.01em}.metrics.metrics-compact{align-items:start}.resort-card .country-pill,.resort-card .resort-beaches-pill{background:#edf7ffd6;border-color:#b8d4eeeb}
