:root {
  --bg: #061310;
  --bg-2: #0a1e19;
  --card: rgba(13, 36, 30, .72);
  --card-strong: rgba(16, 43, 36, .92);
  --line: rgba(205, 240, 220, .11);
  --line-strong: rgba(205, 240, 220, .2);
  --text: #f0f6ef;
  --muted: #9eb6aa;
  --accent: #9fe0b7;
  --accent-2: #b8f0d0;
  --warm: #e8d39a;
  --warning: #f2bf73;
  --danger: #f08d83;
  --good: #9fe0b7;
  --radius: 24px;
  --shadow: 0 24px 80px rgba(0, 0, 0, .22);
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  background: var(--bg);
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--text);
  background:
    radial-gradient(circle at 18% -4%, rgba(79, 135, 111, .22), transparent 34rem),
    radial-gradient(circle at 94% 20%, rgba(31, 85, 73, .24), transparent 30rem),
    linear-gradient(180deg, #071815 0%, #06110f 54%, #040c0b 100%);
  overflow-x: hidden;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(255,255,255,.012) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.012) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: linear-gradient(to bottom, black, transparent 75%);
  z-index: -1;
}

button, input { font: inherit; }

button {
  color: inherit;
  -webkit-tap-highlight-color: transparent;
}

button:focus-visible, select:focus-visible, textarea:focus-visible, input:focus-visible, a:focus-visible, summary:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  top: 10px;
  left: 12px;
  z-index: 2000;
  padding: 10px 14px;
  border-radius: 10px;
  background: var(--accent);
  color: #071815;
  font-size: 13px;
  font-weight: 850;
  text-decoration: none;
  transform: translateY(-160%);
  transition: transform .16s ease;
}

.skip-link:focus { transform: translateY(0); }

.shell {
  width: min(1160px, calc(100% - 32px));
  margin-inline: auto;
}

.ambient {
  position: fixed;
  pointer-events: none;
  filter: blur(1px);
  opacity: .5;
  z-index: -2;
}

.ambient-a {
  width: 60vw;
  height: 60vw;
  left: -18vw;
  top: 28vh;
  border: 1px solid rgba(159, 224, 183, .08);
  border-radius: 50%;
}

.ambient-b {
  width: 46vw;
  height: 46vw;
  right: -22vw;
  top: 54vh;
  border: 1px solid rgba(159, 224, 183, .08);
  border-radius: 50%;
}

.site-header {
  min-height: 84px;
  padding: 18px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: inherit;
  text-decoration: none;
}

.brand-mark {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  color: #0b211b;
  background: linear-gradient(145deg, var(--accent-2), #79b996);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.45), 0 12px 30px rgba(114, 185, 143, .14);
}

.brand-mark svg { width: 29px; }

.brand strong {
  font: 800 18px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.03em;
  display: block;
}

.brand small {
  color: var(--muted);
  display: block;
  font-size: 11px;
  margin-top: 5px;
}

.header-actions {
  display: flex;
  gap: 8px;
}

.icon-button, .ghost-button {
  border: 1px solid var(--line);
  background: rgba(255,255,255,.035);
  backdrop-filter: blur(16px);
  cursor: pointer;
  transition: .2s ease;
}

.icon-button:hover, .ghost-button:hover {
  border-color: var(--line-strong);
  background: rgba(255,255,255,.065);
  transform: translateY(-1px);
}

.icon-button {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 21px;
}

.ghost-button {
  height: 44px;
  border-radius: 999px;
  padding: 0 17px;
  font-weight: 700;
}

.main-grid {
  display: grid;
  gap: 18px;
  padding-bottom: 40px;
}

.card {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(145deg, rgba(16, 43, 36, .83), rgba(8, 27, 23, .72));
  box-shadow: var(--shadow);
  backdrop-filter: blur(18px);
}

.card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(120deg, rgba(255,255,255,.04), transparent 22%);
}

.hero {
  padding: clamp(24px, 4vw, 46px);
  min-height: 430px;
  background:
    radial-gradient(circle at 75% 5%, rgba(158, 224, 183, .16), transparent 21rem),
    radial-gradient(circle at 15% 110%, rgba(56, 116, 94, .24), transparent 24rem),
    linear-gradient(145deg, rgba(18, 49, 40, .95), rgba(7, 28, 23, .92));
}

.hero::before {
  content: "";
  position: absolute;
  width: 420px;
  height: 190px;
  right: -70px;
  bottom: -90px;
  border-radius: 50%;
  border: 1px solid rgba(173, 231, 196, .12);
  box-shadow:
    0 -28px 0 -27px rgba(173, 231, 196, .12),
    0 -58px 0 -57px rgba(173, 231, 196, .09);
  transform: rotate(-7deg);
}

.local-hero {
  min-height: 510px;
  isolation: isolate;
}

.local-hero > *:not(.hero-art) {
  position: relative;
  z-index: 1;
}

.hero-art {
  position: absolute;
  inset: 0 0 0 auto;
  width: 58%;
  pointer-events: none;
  opacity: .82;
  z-index: 0;
}

.hero-art::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, var(--card-strong) 0%, rgba(8, 28, 23, .58) 33%, transparent 82%);
}

.hero-art img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: .78;
}

.local-story {
  max-width: 470px;
  margin-top: 28px;
  padding: 15px 17px;
  border-left: 2px solid var(--warm);
  background: rgba(4, 19, 16, .42);
  border-radius: 0 16px 16px 0;
}

.local-story p {
  max-width: 360px;
  margin: 8px 0 13px;
  color: #c5d6cd;
  line-height: 1.5;
}

.hero-link, .inline-link {
  color: var(--warm);
  font-size: 12px;
  font-weight: 800;
  text-underline-offset: 4px;
}

.hero-link { text-decoration: none; }
.hero-link span { margin-left: 5px; }

.local-quicknav {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  padding: 0;
}

.local-quicknav a {
  min-height: 88px;
  display: grid;
  grid-template-columns: 36px 1fr;
  grid-template-rows: auto auto;
  column-gap: 11px;
  align-content: center;
  padding: 16px 20px;
  color: inherit;
  text-decoration: none;
  border-right: 1px solid var(--line);
  transition: background .2s ease, transform .2s ease;
}

.local-quicknav a:last-child { border-right: 0; }
.local-quicknav a:hover { background: rgba(159,224,183,.06); transform: translateY(-1px); }
.local-quicknav strong { font-size: 13px; align-self: end; }
.local-quicknav small { grid-column: 2; color: var(--muted); font-size: 10px; margin-top: 4px; }

.quick-icon {
  grid-row: 1 / -1;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  color: #0a2019;
  background: linear-gradient(145deg, var(--warm), #b79b61);
  font-size: 20px;
}

.map-section, .species-section, .season-section { padding: clamp(22px, 3.4vw, 34px); }
.section-lead { max-width: 650px; color: var(--muted); font-size: 13px; line-height: 1.5; margin: 10px 0 0; }

.map-note {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  margin: 20px 0 14px;
  padding: 11px 13px;
  border: 1px solid rgba(232,211,154,.18);
  border-radius: 14px;
  background: rgba(232,211,154,.055);
  color: #c7c8af;
}

.map-note > span {
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #081b15;
  background: var(--warm);
  font-size: 11px;
  font-weight: 900;
  flex: 0 0 auto;
}

.map-note p { margin: 0; font-size: 11px; line-height: 1.45; }

.fishing-map {
  position: relative;
  min-height: 430px;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: 20px;
  background: #b2c7af;
  z-index: 1;
}

.map-loading, .map-fallback {
  min-height: 430px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  color: #21493d;
  text-align: center;
  padding: 24px;
}

.map-fallback { background: linear-gradient(145deg, #b2c7af, #71968c); }
.map-fallback strong { font-size: 18px; }
.map-fallback span { max-width: 340px; font-size: 12px; }

.fishing-map .leaflet-container { min-height: 430px; font-family: inherit; background: #a7c6b2; }
.fishing-map .leaflet-control-layers,
.fishing-map .leaflet-bar a {
  border: 1px solid rgba(7, 24, 20, .22);
  background: rgba(7, 24, 20, .92);
  color: #edf7ef;
}

.fishing-map .leaflet-control-layers label { color: #edf7ef; font-size: 11px; }
.fishing-map .leaflet-control-layers-separator { border-top-color: rgba(255,255,255,.12); }
.fishing-map .leaflet-control-attribution { background: rgba(7, 24, 20, .78); color: #e9f5ed; }
.fishing-map .leaflet-control-attribution a { color: #b8f0d0; }

.spot-marker-wrap { background: transparent; border: 0; }
.spot-marker, .place-number {
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #081b15;
  border: 3px solid rgba(255,255,255,.8);
  box-shadow: 0 4px 15px rgba(0,0,0,.35);
  font-size: 12px;
  font-weight: 900;
}

.spot-marker { width: 34px; height: 34px; }
.spot-marker.harbor, .place-number.harbor { background: #e8d39a; }
.spot-marker.river, .place-number.river { background: #9fe0b7; }
.spot-marker.fjord, .place-number.fjord { background: #8ac6d2; }
.spot-marker.service, .place-number.service { background: #e8d39a; }
.spot-marker.context, .place-number.context { color: #18334b; background: #b7cce0; }
.spot-marker.closed, .place-number.closed { background: #f08d83; color: #32110d; }

.map-popup { min-width: 220px; color: #18352b; }
.map-popup h3 { color: #163a2e; margin: 5px 0 6px; }
.map-popup p { font-size: 11px; line-height: 1.45; margin: 6px 0; }
.map-popup .eyebrow { color: #417563; }
.map-species-list, .map-service-list { display: flex; flex-wrap: wrap; gap: 4px; margin: 8px 0; }
.map-species-tag { padding: 4px 7px; border-radius: 999px; background: #e5f2e7; color: #225440; font-size: 10px; font-weight: 800; }
.map-service-tag { padding: 4px 7px; border-radius: 999px; background: #f4ead0; color: #684d18; font-size: 10px; font-weight: 800; }
.map-status { padding: 7px 9px; border-radius: 9px; background: #eef5ed; font-weight: 850; }
.map-status.is-closed { background: #fbe1de; color: #8b2d25; }
.map-purpose { padding: 8px 9px; border-radius: 9px; font-size: 11px; }
.map-purpose.is-context { color: #23455e; background: #e7f0f6; }
.map-purpose.is-service { color: #66511c; background: #f8f0d8; }
.map-service-note, .map-contact { color: #4d695e; }
.map-popup-best { border-top: 1px solid #d8e6dd; padding-top: 7px; }
.map-popup-access { color: #587368; }
.map-position-note { padding-top: 7px; border-top: 1px solid #d8e6dd; color: #587368; }
.map-popup .inline-link { color: #27634b; }
.map-source-link { display: block; margin-top: 5px; }

.place-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
  margin-top: 12px;
}

.place-card {
  display: grid;
  grid-template-columns: 30px 1fr auto;
  gap: 10px;
  align-items: start;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(255,255,255,.025);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: .2s ease;
}

.place-card:hover { border-color: rgba(159,224,183,.35); background: rgba(159,224,183,.07); transform: translateY(-1px); }
.place-card.context { border-color: rgba(183,204,224,.22); background: rgba(183,204,224,.045); }
.place-card.service { border-color: rgba(232,211,154,.18); }
.place-number { width: 30px; height: 30px; font-size: 11px; }
.place-card-body { min-width: 0; }
.place-card-body > * { display: block; }
.place-card-body .eyebrow { font-size: 8px; }
.place-card-body strong { font-size: 12px; margin: 5px 0; }
.place-card-body small { color: var(--muted); font-size: 10px; line-height: 1.4; }
.place-card-body .place-status { margin-bottom: 5px; color: var(--danger); font-weight: 850; }
.place-card-body em { color: var(--warm); font-size: 10px; line-height: 1.4; margin-top: 6px; font-style: normal; }
.place-arrow { color: var(--accent); font-size: 18px; }

.species-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 22px;
}

.species-card {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 132px 1fr;
  min-height: 280px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: rgba(255,255,255,.025);
}

.species-card.is-active { border-color: rgba(159,224,183,.32); background: linear-gradient(135deg, rgba(159,224,183,.08), rgba(255,255,255,.025)); }
.species-card.is-caution { border-color: rgba(240,141,131,.24); }

.species-art {
  position: relative;
  min-height: 100%;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 40% 32%, rgba(159,224,183,.22), transparent 48%), linear-gradient(145deg, #173c35, #0c251f);
}

.species-art svg { width: 118px; filter: drop-shadow(0 12px 14px rgba(0,0,0,.22)); transform: rotate(-4deg); }
.species-art span { position: absolute; right: 12px; bottom: 12px; font-size: 21px; filter: drop-shadow(0 2px 3px rgba(0,0,0,.35)); }
.species-body { padding: 17px 16px 14px; min-width: 0; }
.species-topline { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.species-topline h3 { margin: 6px 0 0; }
.species-months { color: var(--warm); font-size: 10px; font-weight: 800; text-align: right; }
.species-tip { color: #b9cbc1; font-size: 11px; line-height: 1.45; margin: 12px 0; }
.species-facts { display: grid; gap: 7px; margin: 0; }
.species-facts div { display: grid; grid-template-columns: 64px 1fr; gap: 6px; }
.species-facts dt { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.species-facts dd { margin: 0; color: #d6e3dc; font-size: 10px; line-height: 1.35; }
.species-place-row { margin-top: 12px; padding-top: 9px; border-top: 1px solid var(--line); }
.species-place-row span, .species-place-row strong { display: block; }
.species-place-row span { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.species-place-row strong { color: #c8dbd1; font-size: 10px; line-height: 1.4; margin-top: 3px; }
.species-body .inline-link { display: inline-block; margin-top: 10px; font-size: 10px; }

.season-calendar {
  display: grid;
  grid-template-columns: repeat(12, minmax(62px, 1fr));
  gap: 6px;
  overflow-x: auto;
  padding: 3px 1px 9px;
  margin-top: 18px;
}

.month-choice {
  min-height: 57px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 3px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.025);
  color: var(--muted);
  cursor: pointer;
}

.month-choice span { font-weight: 800; text-transform: capitalize; }
.month-choice small { font-size: 9px; }
.month-choice.active { color: #071b15; background: var(--warm); border-color: var(--warm); }
.season-detail { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: center; padding: 18px; border-radius: 17px; background: rgba(159,224,183,.055); border: 1px solid rgba(159,224,183,.12); }
.season-detail h3 { margin: 7px 0 4px; }
.season-detail p { margin: 0; font-size: 12px; }
.season-rule-note { padding: 13px 15px; border-left: 2px solid var(--warning); background: rgba(242,191,115,.055); color: #bdc9b7; font-size: 11px; line-height: 1.5; }
.season-rule-note strong { color: var(--warm); }

.hero-topline, .section-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.eyebrow {
  color: var(--accent);
  font: 700 10px/1.2 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.hero .eyebrow {
  display: flex;
  align-items: center;
  gap: 8px;
}

.live-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 6px rgba(159,224,183,.08);
}

.live-dot.error { background: var(--danger); }

h1, h2, h3, p { margin-top: 0; }

h1 {
  font: 800 clamp(38px, 7vw, 72px)/.98 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.055em;
  margin: 12px 0 10px;
}

h2 {
  font: 750 clamp(22px, 3vw, 30px)/1.05 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.035em;
  margin: 8px 0;
}

h3 {
  font: 700 18px/1.1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.025em;
  margin: 7px 0 8px;
}

.muted { color: var(--muted); }
.compact { font-size: 13px; }

.refresh {
  flex: 0 0 auto;
}

.refresh.loading {
  animation: spin 1s linear infinite;
}

@keyframes spin { to { transform: rotate(360deg); } }

.hero-weather {
  margin-top: clamp(32px, 5vw, 58px);
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
}

.temperature-block {
  display: flex;
  align-items: flex-end;
  gap: 18px;
}

.temperature {
  font: 700 clamp(64px, 10vw, 108px)/.72 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.075em;
}

.weather-label {
  font-weight: 700;
  font-size: 17px;
  margin-bottom: 5px;
}

.wind-dial-wrap {
  display: flex;
  align-items: center;
  gap: 13px;
}

.wind-dial {
  width: 64px;
  height: 64px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid var(--line-strong);
  background:
    radial-gradient(circle, rgba(159,224,183,.07) 0 35%, transparent 36%),
    linear-gradient(rgba(255,255,255,.04), transparent);
}

.wind-arrow {
  font-size: 27px;
  transform: rotate(0deg);
  transition: transform .5s ease;
  color: var(--accent);
}

.wind-copy strong, .wind-copy small { display: block; }
.wind-copy strong { font-size: 17px; }
.wind-copy small { color: var(--muted); margin-top: 2px; }

.recommendation {
  margin-top: clamp(34px, 5vw, 54px);
  display: grid;
  grid-template-columns: 54px 1fr;
  gap: 16px;
  padding: 18px;
  border-radius: 18px;
  border: 1px solid rgba(159,224,183,.13);
  background: rgba(5, 23, 19, .44);
}

.recommendation-icon {
  width: 54px;
  height: 54px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  color: #0c241d;
  background: linear-gradient(145deg, var(--accent-2), #75b58e);
  font-size: 26px;
}

.recommendation h2 {
  font-size: clamp(20px, 3vw, 27px);
  margin-bottom: 5px;
}

.recommendation p {
  margin-bottom: 0;
  color: #b7c9c0;
  max-width: 760px;
}

.official-alerts {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  margin-top: 12px;
  padding: 13px 14px;
  border: 1px solid rgba(159,224,183,.2);
  border-radius: 16px;
  background: rgba(6,31,24,.62);
}

.official-alerts[hidden] { display: none; }
.official-alerts[data-state="clear"] { border-color: rgba(159,224,183,.28); background: rgba(84,151,105,.10); }
.official-alerts[data-state="unavailable"] { border-color: rgba(232,211,154,.32); background: rgba(232,211,154,.08); }
.official-alerts[data-state="yellow"] { border-color: rgba(232,211,154,.42); background: rgba(232,211,154,.09); }
.official-alerts[data-state="orange"] { border-color: rgba(242,171,104,.52); background: rgba(242,171,104,.10); }
.official-alerts[data-state="red"] { border-color: rgba(240,141,131,.58); background: rgba(240,141,131,.11); }
.official-alert-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; color: #082217; background: var(--accent); font-size: 16px; font-weight: 900; }
.official-alerts[data-state="unavailable"] .official-alert-icon,
.official-alerts[data-state="yellow"] .official-alert-icon { background: var(--warm); }
.official-alerts[data-state="orange"] .official-alert-icon { color: #251506; background: #f2ab68; }
.official-alerts[data-state="red"] .official-alert-icon { color: #fff7f4; background: #d95d53; }
.official-alerts strong { display: block; color: #eff8f1; font-size: 12px; }
.official-alerts p { margin: 4px 0 0; color: #b5c9be; font-size: 10px; line-height: 1.46; }
.official-alert-link { align-self: center; color: var(--warm); font-size: 10px; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.official-alert-list { display: grid; gap: 7px; margin-top: 8px; }
.official-alert-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px; align-items: start; padding: 9px 10px; border: 1px solid rgba(159,224,183,.13); border-radius: 11px; background: rgba(2,15,11,.22); }
.official-alert-level { display: inline-flex; width: fit-content; padding: 4px 6px; border-radius: 999px; color: #152018; background: #e8d39a; font-size: 8px; font-weight: 850; line-height: 1.05; white-space: nowrap; }
.official-alert-item.is-orange .official-alert-level { color: #2d1705; background: #f2ab68; }
.official-alert-item.is-red .official-alert-level { color: #fff9f6; background: #d95d53; }
.official-alert-item h3 { margin: 0; color: #f0f7f1; font-size: 11px; line-height: 1.25; }
.official-alert-item p { margin-top: 3px; }
.official-alert-item small { display: block; margin-top: 4px; color: #c8d8cf; font-size: 9px; }
.official-alert-item a { color: var(--warm); font-size: 9px; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.official-alert-footnote { margin-top: 8px !important; }

.score-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.score-card {
  padding: 24px;
  min-height: 180px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 18px;
  align-items: center;
}

.score-ring {
  --ring-color: var(--accent);
  width: 112px;
  height: 112px;
  flex: 0 0 auto;
  border-radius: 50%;
  display: grid;
  place-items: center;
  position: relative;
  background: conic-gradient(var(--ring-color) calc(var(--score) * 1%), rgba(255,255,255,.08) 0);
}

.score-ring::before {
  content: "";
  position: absolute;
  inset: 8px;
  border-radius: inherit;
  background: #0b221c;
  box-shadow: inset 0 0 24px rgba(0,0,0,.16);
}

.score-ring span, .score-ring small {
  position: relative;
  z-index: 1;
}

.score-ring span {
  font: 750 34px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.05em;
  margin-top: 3px;
}

.score-ring small {
  font-size: 10px;
  color: var(--muted);
  position: absolute;
  bottom: 27px;
}

.score-ring.warn { --ring-color: var(--warning); }
.score-ring.bad { --ring-color: var(--danger); }

.text-button {
  justify-self: start;
  grid-column: 1 / -1;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--accent);
  cursor: pointer;
  font-weight: 700;
  font-size: 12px;
}

.timeline-card, .tide-card, .sea-card, .planner-card, .details-card {
  padding: clamp(22px, 3.4vw, 34px);
}

.status-badge, .trend-chip {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 0 12px;
  border-radius: 999px;
  border: 1px solid rgba(159,224,183,.14);
  background: rgba(159,224,183,.08);
  color: var(--accent);
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}

.status-badge.subtle {
  color: var(--muted);
  background: rgba(255,255,255,.035);
  border-color: var(--line);
}

.hourly-timeline {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(104px, 1fr);
  gap: 10px;
  overflow-x: auto;
  padding: 12px 1px 6px;
  margin-top: 22px;
  scrollbar-width: thin;
  scrollbar-color: rgba(159,224,183,.26) transparent;
}

.hour-card {
  min-height: 143px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255,255,255,.025);
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 9px;
  transition: .2s ease;
}

.hour-card.best {
  border-color: rgba(159,224,183,.34);
  background: linear-gradient(180deg, rgba(159,224,183,.11), rgba(255,255,255,.025));
  box-shadow: inset 0 0 0 1px rgba(159,224,183,.05);
}

.hour-time {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.hour-symbol { font-size: 22px; }

.hour-temp {
  font: 700 22px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  margin-top: auto;
}

.hour-meta {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.35;
}

.timeline-skeleton {
  height: 143px;
  border-radius: 18px;
  background: linear-gradient(90deg, rgba(255,255,255,.025), rgba(255,255,255,.07), rgba(255,255,255,.025));
  background-size: 220% 100%;
  animation: shimmer 1.5s linear infinite;
}

@keyframes shimmer { to { background-position: -220% 0; } }

.two-column {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.tide-main {
  display: flex;
  align-items: center;
  gap: 20px;
  margin: 28px 0 22px;
}

.tide-orbit {
  width: 92px;
  height: 92px;
  position: relative;
  overflow: hidden;
  flex: 0 0 auto;
  border-radius: 50%;
  border: 1px solid var(--line-strong);
  background: rgba(255,255,255,.025);
}

.tide-water {
  position: absolute;
  width: 130%;
  height: 54%;
  left: -15%;
  bottom: 7%;
  border-radius: 48% 48% 0 0;
  background: linear-gradient(180deg, rgba(159,224,183,.72), rgba(67,131,106,.42));
  transform: rotate(-4deg);
}

.tide-marker {
  position: absolute;
  left: 50%;
  top: 13px;
  bottom: 13px;
  width: 1px;
  background: linear-gradient(transparent, rgba(255,255,255,.3), transparent);
}

.tide-time {
  font: 750 35px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.04em;
  margin: 4px 0 7px;
}

.tide-list {
  display: grid;
  gap: 8px;
}

.tide-row {
  display: grid;
  grid-template-columns: 26px 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 11px 0;
  border-top: 1px solid var(--line);
}

.tide-row:first-child { border-top: 0; }

.tide-kind {
  width: 25px;
  height: 25px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: rgba(159,224,183,.08);
  color: var(--accent);
  font-size: 12px;
}

.tide-row strong { font-size: 13px; }
.tide-row small { color: var(--muted); }

.source-note {
  color: #728c80;
  font-size: 10px;
  margin: 18px 0 0;
}

.metric-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 25px 0 19px;
}

.metric {
  min-height: 108px;
  padding: 15px;
  border-radius: 17px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.025);
}

.metric span, .metric small, .metric strong { display: block; }
.metric span { color: var(--muted); font-size: 11px; }
.metric strong {
  font: 700 24px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.035em;
  margin: 13px 0 4px;
}
.metric small { color: #839d91; font-size: 10px; }

.safety-box {
  border-left: 2px solid var(--warning);
  border-radius: 0 14px 14px 0;
  background: rgba(242, 191, 115, .055);
  padding: 14px 16px;
}

.safety-box.danger {
  border-color: var(--danger);
  background: rgba(240, 141, 131, .06);
}

.safety-box strong { font-size: 12px; }
.safety-box p {
  margin: 5px 0 0;
  color: #b5c3bc;
  font-size: 11px;
  line-height: 1.5;
}

.planner-controls {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-top: 21px;
}

fieldset {
  border: 0;
  margin: 0;
  padding: 0;
  min-width: 0;
}

legend {
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
  margin-bottom: 10px;
}

.choice-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.choice {
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.025);
  padding: 9px 13px;
  cursor: pointer;
  color: #bacbc2;
  font-size: 12px;
  font-weight: 700;
  transition: background-color .16s ease, border-color .16s ease, color .16s ease, transform .16s ease;
}

.choice:hover { transform: translateY(-1px); }

.choice.active {
  background: var(--accent);
  color: #0a2019;
  border-color: var(--accent);
}

.planner-result {
  margin-top: 24px;
  padding: 18px;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 17px;
  border-radius: 18px;
  border: 1px solid rgba(159,224,183,.14);
  background: linear-gradient(100deg, rgba(159,224,183,.085), rgba(255,255,255,.015));
}

.planner-time {
  min-width: 92px;
  font: 750 22px/1 ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.03em;
}

.planner-result p { margin: 4px 0 0; font-size: 12px; }

.details-card details { position: relative; z-index: 2; }

.details-card summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.details-card summary::-webkit-details-marker { display: none; }
.details-card summary strong { display: block; margin-top: 5px; }

.details-content {
  max-width: 760px;
  padding-top: 20px;
  color: #adbbb4;
  line-height: 1.65;
  font-size: 13px;
}

.details-content p:last-child { margin-bottom: 0; }

.footer {
  display: flex;
  justify-content: space-between;
  gap: 30px;
  color: #667f74;
  font-size: 10px;
  padding: 22px 5px 10px;
}

.footer strong { color: #879c92; }
.footer p { margin: 4px 0 0; }

.explain-dialog {
  width: min(580px, calc(100% - 28px));
  border: 1px solid var(--line-strong);
  border-radius: 24px;
  color: var(--text);
  background: #0b211b;
  box-shadow: 0 30px 100px rgba(0,0,0,.55);
  padding: 0;
}

.explain-dialog::backdrop {
  background: rgba(0, 7, 6, .72);
  backdrop-filter: blur(8px);
}

.explain-dialog form { padding: 30px; }
.explain-dialog h2 { margin: 9px 0 18px; }

.dialog-close {
  float: right;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.04);
  color: var(--muted);
  cursor: pointer;
  font-size: 20px;
}

.factor-list {
  display: grid;
  gap: 10px;
  margin: 18px 0 24px;
}

.factor {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
}

.factor strong { font-size: 13px; }
.factor p { margin: 3px 0 0; color: var(--muted); font-size: 11px; }
.factor-score { font-weight: 800; color: var(--accent); }

.primary-button {
  width: 100%;
  min-height: 46px;
  border: 0;
  border-radius: 14px;
  background: var(--accent);
  color: #071b15;
  font-weight: 800;
  cursor: pointer;
}

.toast {
  position: fixed;
  left: 50%;
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: 20;
  transform: translate(-50%, 20px);
  max-width: calc(100% - 30px);
  padding: 11px 16px;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  background: #102d25;
  color: #dce8e2;
  font-size: 12px;
  box-shadow: var(--shadow);
  opacity: 0;
  pointer-events: none;
  transition: .25s ease;
}

.toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
}

@media (max-width: 760px) {
  .shell { width: min(100% - 20px, 640px); }
  .site-header { min-height: 72px; padding: 12px 0; }
  .brand small { display: none; }
  .hero { min-height: 0; padding: 24px 20px; }
  .local-hero { min-height: 560px; }
  .hero-art { width: 100%; height: 50%; inset: auto 0 0; opacity: .72; }
  .hero-art::after { background: linear-gradient(180deg, var(--card-strong) 0%, rgba(8,28,23,.28) 55%, transparent 100%); }
  .local-story { margin-top: 24px; }
  .official-alerts { grid-template-columns: 30px minmax(0, 1fr); gap: 10px; padding: 12px; }
  .official-alert-link { grid-column: 2; justify-self: start; }
  .official-alert-item { grid-template-columns: 1fr; gap: 6px; }
  .official-alert-item a { width: fit-content; }
  .local-quicknav { grid-template-columns: 1fr; }
  .local-quicknav a { min-height: 67px; border-right: 0; border-bottom: 1px solid var(--line); }
  .local-quicknav a:last-child { border-bottom: 0; }
  .fishing-map, .fishing-map .leaflet-container, .map-loading, .map-fallback { min-height: 390px; }
  .place-list, .species-grid { grid-template-columns: 1fr; }
  .species-card { grid-template-columns: 112px 1fr; min-height: 250px; }
  .species-art svg { width: 100px; }
  .season-calendar { grid-template-columns: repeat(12, 62px); }
  .season-detail { grid-template-columns: 1fr; gap: 10px; }
  .hero-weather { align-items: center; }
  .temperature-block { display: block; }
  .temperature { margin-bottom: 15px; }
  .wind-dial-wrap { align-self: flex-end; }
  .recommendation { grid-template-columns: 44px 1fr; padding: 15px; }
  .recommendation-icon { width: 44px; height: 44px; border-radius: 13px; }
  .score-grid, .two-column, .planner-controls { grid-template-columns: 1fr; }
  .score-card { min-height: 155px; padding: 20px; }
  .score-ring { width: 94px; height: 94px; }
  .score-ring::before { inset: 7px; }
  .score-ring span { font-size: 29px; }
  .score-ring small { bottom: 22px; }
  .section-heading { align-items: center; }
  .metric { min-height: 98px; }
  .footer { display: block; }
  .footer > p { margin-top: 14px; }
}

@media (max-width: 410px) {
  .temperature { font-size: 64px; }
  .wind-dial { width: 54px; height: 54px; }
  .wind-copy strong { font-size: 14px; }
  .wind-copy small { font-size: 10px; }
  .score-ring { width: 86px; height: 86px; }
  .planner-result { grid-template-columns: 1fr; }
  .species-card { grid-template-columns: 1fr; }
  .species-art { min-height: 130px; }
  .species-art svg { width: 135px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .001ms !important;
    transition-duration: .001ms !important;
  }
}

.footer a {
  color: #8da79b;
  text-decoration-color: rgba(159,224,183,.35);
  text-underline-offset: 3px;
}
.footer a:hover { color: var(--accent); }

/* v0.2.0: regions, permits, sources and nature guide */
.context-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.select-control {
  min-height: 44px;
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: 7px;
  padding: 0 9px 0 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.035);
  color: var(--muted);
}

.select-control > span {
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.select-control select {
  max-width: 145px;
  border: 0;
  outline: 0;
  color: var(--text);
  background: transparent;
  font-family: inherit;
  font-size: 11px;
  font-weight: 750;
  cursor: pointer;
}

.select-control option { color: #10251e; background: #f0f6ef; }
.select-control select:disabled { cursor: progress; opacity: .62; }

.translation-notice {
  margin-bottom: -5px;
  padding: 10px 14px;
  border: 1px solid rgba(232,211,154,.2);
  border-radius: 14px;
  background: rgba(232,211,154,.06);
  color: #c9c6a9;
  font-size: 11px;
  line-height: 1.5;
}

.local-quicknav { grid-template-columns: repeat(4, 1fr); }

.region-intro {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: 20px;
  margin-top: 20px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: linear-gradient(115deg, rgba(159,224,183,.075), rgba(255,255,255,.015));
}

.region-intro h3 { margin: 5px 0 8px; }
.region-intro p { margin: 0; color: #b4c5bc; font-size: 12px; line-height: 1.55; }
.region-fishing { padding-left: 20px; border-left: 1px solid var(--line); }
.region-fishing strong { display: block; margin-bottom: 5px; font-size: 12px; }
.region-fishing .inline-link { display: inline-block; margin-top: 9px; }

.empty-content {
  grid-column: 1 / -1;
  min-height: 110px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 6px;
  padding: 20px;
  border: 1px dashed var(--line-strong);
  border-radius: 16px;
  color: var(--muted);
  text-align: center;
}
.empty-content strong { color: var(--text); font-size: 13px; }
.empty-content span { max-width: 560px; font-size: 11px; line-height: 1.5; }
.map-license-link { display: block; margin-top: 6px; }

.license-section,
.nature-section,
.journal-section { padding: clamp(22px, 3.4vw, 34px); }

.state-fee-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 22px;
  margin: 22px 0 14px;
  padding: 18px 20px;
  border: 1px solid rgba(159,224,183,.17);
  border-radius: 18px;
  background: linear-gradient(110deg, rgba(159,224,183,.09), rgba(255,255,255,.018));
}
.state-fee-card h3 { margin: 5px 0 7px; font-size: 21px; }
.state-fee-card h3 small { color: var(--muted); font-size: 10px; font-weight: 650; }
.state-fee-card p { max-width: 700px; margin: 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
.state-fee-card p + p { margin-top: 8px; color: #c4d3cc; }
.primary-link {
  flex: 0 0 auto;
  padding: 11px 14px;
  border-radius: 12px;
  background: var(--accent);
  color: #092018;
  font-size: 11px;
  font-weight: 850;
  text-decoration: none;
}

.license-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.license-card {
  scroll-margin-top: 18px;
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 19px;
  border: 1px solid var(--line);
  border-radius: 19px;
  background: rgba(4,19,16,.33);
}
.license-card:target { border-color: rgba(159,224,183,.55); box-shadow: 0 0 0 3px rgba(159,224,183,.08); }
.license-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.license-card h3 { margin: 5px 0 0; font-size: 16px; line-height: 1.2; }
.source-chip {
  flex: 0 0 auto;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--warm);
  font-size: 9px;
  font-weight: 800;
  text-decoration: none;
}
.license-season { min-height: 47px; margin: 13px 0; color: var(--muted); font-size: 11px; line-height: 1.45; }
.license-notice { margin: -3px 0 12px; padding: 9px 10px; border-left: 2px solid var(--warm); border-radius: 0 10px 10px 0; background: rgba(232,211,154,.06); color: #d5cba9; font-size: 10px; line-height: 1.5; }
.price-list { display: grid; gap: 0; margin: 0; }
.price-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; padding: 8px 0; border-top: 1px solid var(--line); }
.price-row dt { color: #b6c6be; font-size: 10px; line-height: 1.35; }
.price-row dd { margin: 0; color: var(--accent); font-size: 10px; font-weight: 850; white-space: nowrap; }
.license-details { margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--line); }
.license-details summary { display: flex; justify-content: space-between; gap: 8px; color: #cfdbd5; cursor: pointer; font-size: 10px; font-weight: 800; }
.license-details ul { margin: 12px 0; padding-left: 17px; color: var(--muted); font-size: 10px; line-height: 1.5; }
.equipment-note { color: #bdc9c3; font-size: 10px; line-height: 1.5; }
.contact-list { display: grid; gap: 7px; margin-top: auto; padding-top: 16px; }
.contact-list > .eyebrow { margin-bottom: 1px; }
.contact-card { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 10px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 12px; background: rgba(255,255,255,.02); }
.contact-card strong, .contact-card span { display: block; }
.contact-card strong { font-size: 10px; }
.contact-card span { margin-top: 3px; color: var(--muted); font-size: 9px; }
.contact-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.contact-actions a { padding: 5px 7px; border-radius: 8px; background: rgba(159,224,183,.1); color: var(--accent); font-size: 9px; font-weight: 800; text-decoration: none; }

.nature-filters { display: flex; flex-wrap: wrap; gap: 6px; }
.nature-safety {
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 13px;
  margin: 21px 0 14px;
  padding: 16px;
  border: 1px solid rgba(240,141,131,.26);
  border-radius: 17px;
  background: rgba(240,141,131,.055);
}
.nature-safety-icon { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 12px; background: var(--danger); color: #2b0d0a; font-weight: 950; }
.nature-safety strong { font-size: 13px; }
.nature-safety p, .nature-safety li { color: #c8b8b4; font-size: 10px; line-height: 1.5; }
.nature-safety p { margin: 5px 0; }
.nature-safety ul { margin: 8px 0; padding-left: 17px; }
.nature-source-links, .nature-card-links { display: flex; flex-wrap: wrap; gap: 8px 14px; }

.nature-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.nature-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 19px; background: rgba(4,19,16,.34); }
.nature-card.is-active { border-color: rgba(159,224,183,.27); }
.nature-media { position: relative; min-height: 210px; overflow: hidden; background: #142a23; }
.nature-media img { width: 100%; height: 230px; display: block; object-fit: cover; }
.nature-media > span { position: absolute; inset: auto 8px 8px; padding: 5px 7px; border-radius: 8px; background: rgba(4,16,13,.84); color: #d7e1dc; font-size: 8px; line-height: 1.3; }
.nature-media > span a { color: var(--accent); }
.nature-placeholder { display: grid; place-items: center; align-content: center; gap: 8px; padding: 25px; text-align: center; background: radial-gradient(circle, rgba(232,211,154,.1), transparent 60%), #0b211b; }
.nature-placeholder > span { position: static; padding: 0; background: transparent; color: var(--warm); font-size: 46px; }
.nature-placeholder strong { max-width: 220px; color: var(--muted); font-size: 10px; line-height: 1.45; }
.nature-body { padding: 18px; }
.nature-card-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.nature-card h3 { margin: 4px 0 0; font-size: 18px; }
.nature-card-heading em { max-width: 48%; color: var(--muted); font-family: ui-serif, Georgia, serif; font-size: 10px; text-align: right; }
.species-scientific { display: block; margin-top: 3px; color: var(--muted); font-family: ui-serif, Georgia, serif; font-size: 9px; font-weight: 400; }
.nature-season { color: var(--warm); font-size: 10px; line-height: 1.45; }
.nature-facts { display: grid; gap: 9px; margin: 13px 0; }
.nature-facts div { padding-top: 9px; border-top: 1px solid var(--line); }
.nature-facts dt { color: var(--muted); font-size: 8px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.nature-facts dd { margin: 4px 0 0; color: #c4d0ca; font-size: 10px; line-height: 1.55; }
.nature-caution { padding: 9px 10px; border-left: 2px solid var(--warning); border-radius: 0 9px 9px 0; background: rgba(242,191,115,.05); color: #cfbea3; font-size: 9px; line-height: 1.5; }

.species-photo-art { overflow: hidden; }
.species-photo-art img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(.82) contrast(.98) brightness(.82);
}
.species-photo-art::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(4,18,14,.06), rgba(4,18,14,.25) 60%, rgba(4,18,14,.82));
  pointer-events: none;
}
.species-photo-art > span { top: 10px; right: 10px; bottom: auto; z-index: 1; }
.media-credit {
  position: absolute;
  left: 8px;
  right: 8px;
  bottom: 8px;
  z-index: 2;
  color: rgba(239,247,241,.86);
  font-size: 7px;
  line-height: 1.25;
  text-shadow: 0 1px 3px rgba(0,0,0,.75);
}
.media-credit a { color: #d4f0dd; text-decoration-color: rgba(212,240,221,.5); }

.field-card { margin-top: 12px; padding-top: 9px; border-top: 1px solid var(--line); }
.field-card summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--warm); font-size: 10px; font-weight: 850; cursor: pointer; list-style: none; }
.field-card summary::-webkit-details-marker { display: none; }
.field-card summary::after { content: "+"; color: var(--accent); font-size: 16px; }
.field-card[open] summary::after { content: "−"; }
.field-details { display: grid; gap: 7px; margin-top: 10px; }
.field-details div { padding: 8px 9px; border-radius: 10px; background: rgba(255,255,255,.025); }
.field-details strong { display: block; margin-bottom: 3px; color: var(--muted); font-size: 8px; letter-spacing: .08em; text-transform: uppercase; }
.field-details span { color: #cbd9d1; font-size: 10px; line-height: 1.45; }

.fishing-map:fullscreen { width: 100vw; height: 100vh; min-height: 100vh; border-radius: 0; z-index: 2000; }
.fishing-map:fullscreen .leaflet-container,
.fishing-map:fullscreen .map-loading,
.fishing-map:fullscreen .map-fallback { min-height: 100vh; height: 100%; }
.map-toolbar { position: absolute; z-index: 1001; top: 10px; left: 10px; display: flex; flex-wrap: wrap; gap: 6px; max-width: calc(100% - 184px); }
.map-tool-button { padding: 8px 10px; border: 1px solid rgba(7,24,20,.24); border-radius: 10px; color: #edf7ef; background: rgba(7,24,20,.92); font-size: 11px; font-weight: 800; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.16); }
.map-tool-button:hover { background: #163b30; }
.map-legend { position: absolute; z-index: 1001; bottom: 26px; left: 10px; display: flex; flex-wrap: wrap; gap: 7px 11px; max-width: calc(100% - 20px); padding: 7px 9px; border: 1px solid rgba(7,24,20,.2); border-radius: 10px; color: #edf7ef; background: rgba(7,24,20,.88); box-shadow: 0 4px 14px rgba(0,0,0,.14); font-size: 10px; font-weight: 750; }
.map-legend span { display: inline-flex; align-items: center; gap: 5px; }
.map-legend i { width: 9px; height: 9px; display: inline-block; border: 1px solid rgba(255,255,255,.62); border-radius: 50%; }
.map-legend .river { background: #9fe0b7; }
.map-legend .service { background: #e8d39a; }
.map-legend .context { background: #b7cce0; }

.partners-section { isolation: isolate; }
.partners-section::before { content: ""; position: absolute; inset: 0; z-index: 0; opacity: .1; background: linear-gradient(90deg, #071815 10%, transparent 75%), url('/assets/photos/vefsnfjorden-clean.webp') center 54% / cover; filter: saturate(.7); }
.partners-section > * { position: relative; z-index: 1; }
.partner-groups { display: grid; gap: 25px; margin-top: 17px; }
.partner-group { display: grid; gap: 11px; }
.partner-group-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; padding: 0 2px 10px; border-bottom: 1px solid var(--line); }
.partner-group-heading h3 { margin: 0; color: var(--accent-2); font-size: 14px; letter-spacing: -.015em; }
.partner-group-heading p { margin: 4px 0 0; color: var(--muted); font-size: 11px; }
.partner-group-count { flex: 0 0 auto; color: #b8cfbf; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.partner-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.partner-card { display: flex; min-height: 164px; flex-direction: column; padding: 17px; border: 1px solid var(--line); border-radius: 17px; background: rgba(5,22,18,.84); transition: border-color .18s ease, background .18s ease, transform .18s ease; }
.partner-card:hover { border-color: rgba(159,224,183,.3); background: rgba(12,35,28,.94); transform: translateY(-2px); }
.partner-type { color: var(--accent); font-size: 9px; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.partner-card h4 { margin: 8px 0 7px; color: #f0f6ef; font-size: 16px; letter-spacing: -.02em; line-height: 1.18; }
.partner-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.partner-link { display: inline-flex; align-items: center; gap: 5px; width: fit-content; margin-top: auto; padding-top: 14px; color: var(--warm); font-size: 12px; font-weight: 850; text-decoration: underline; text-underline-offset: 4px; }
.partner-link:hover { color: #ffeca8; }

.sources-section { padding: clamp(22px, 3.4vw, 34px); }
.api-status { display: grid; grid-template-columns: 25px 1fr; gap: 11px; align-items: start; margin: 20px 0 23px; padding: 13px 14px; border: 1px solid rgba(159,224,183,.17); border-radius: 15px; background: rgba(159,224,183,.045); }
.api-status[data-state="error"] { border-color: rgba(240,141,131,.24); background: rgba(240,141,131,.045); }
.api-status strong { display: block; color: #deebe3; font-size: 12px; }
.api-status p { margin: 4px 0 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
.api-pulse { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; color: var(--accent); background: rgba(159,224,183,.2); font-size: 12px; font-weight: 900; }
.api-status[data-state="loading"] .api-pulse { animation: apiPulse 1.4s ease-in-out infinite; }
@keyframes apiPulse { 0%, 100% { transform: scale(.82); opacity: .55; } 50% { transform: scale(1); opacity: 1; } }
.source-groups { display: grid; gap: 23px; }
.source-group-heading { display: flex; align-items: center; gap: 11px; margin-bottom: 10px; }
.source-group-line { height: 1px; flex: 1; background: var(--line); }
.source-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.source-card { min-width: 0; padding: 13px 14px 14px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.022); }
.source-card-topline { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.source-state { display: inline-flex; width: fit-content; padding: 5px 7px; border-radius: 999px; color: #cfe4d6; background: rgba(159,224,183,.1); font-size: 8px; font-weight: 800; line-height: 1.1; }
.source-state.is-live { color: #071b15; background: var(--accent); }
.source-state.is-asset { color: #2a2111; background: #e8d39a; }
.source-state.is-next { color: #f3d3a3; background: rgba(242,191,115,.12); }
.source-arrow { color: var(--accent); font-size: 17px; text-decoration: none; }
.source-card h3 { margin: 11px 0 5px; font-size: 13px; line-height: 1.15; }
.source-card p { min-height: 39px; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
.source-link { display: inline-block; margin-top: 10px; color: #a6d6b6; font-size: 10px; text-underline-offset: 3px; }

.community-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 20px; }
.community-form { position: relative; display: flex; flex-direction: column; min-width: 0; padding: 18px; border: 1px solid var(--line); border-radius: 18px; background: rgba(255,255,255,.025); }
.community-form > label { display: grid; gap: 5px; }
.community-form > label strong, .vote-form legend { color: #e4eee8; font-size: 13px; font-weight: 800; }
.community-form > label span { color: var(--muted); font-size: 10px; line-height: 1.45; }
.community-form textarea { width: 100%; min-height: 118px; margin: 12px 0 9px; padding: 12px; resize: vertical; border: 1px solid var(--line); border-radius: 13px; color: var(--text); background: rgba(3,15,12,.58); font: inherit; font-size: 12px; line-height: 1.5; }
.community-form textarea::placeholder { color: #6f8b7e; }
.community-form .primary-button { width: auto; min-width: 120px; padding-inline: 17px; }
.form-bottom { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.form-bottom small { color: var(--muted); font-size: 9px; }
.form-status { min-height: 18px; margin: 10px 0 0; color: var(--accent); font-size: 10px; line-height: 1.4; }
.form-status.is-error { color: var(--danger); }
.honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.vote-form fieldset { display: grid; gap: 8px; margin: 0 0 15px; padding: 0; border: 0; }
.vote-form legend { margin-bottom: 9px; }
.vote-form fieldset label { display: grid; grid-template-columns: 18px 1fr; align-items: start; gap: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 12px; color: #cbd9d2; background: rgba(255,255,255,.02); font-size: 11px; line-height: 1.35; cursor: pointer; }
.vote-form input { margin-top: 1px; accent-color: var(--accent); }

.journal-grid { display: grid; grid-template-columns: 1.35fr .85fr .8fr; gap: 12px; margin-top: 22px; }
.journal-grid figure { position: relative; min-height: 290px; overflow: hidden; margin: 0; border: 1px solid var(--line); border-radius: 19px; background: #0b211b; }
.journal-grid img { width: 100%; height: 100%; min-height: 290px; display: block; object-fit: cover; }
.journal-grid figcaption { position: absolute; inset: auto 0 0; display: grid; gap: 4px; padding: 45px 16px 15px; background: linear-gradient(transparent, rgba(3,14,12,.92)); }
.journal-grid figcaption strong { font-size: 12px; }
.journal-grid figcaption span { color: #b4c3bb; font-size: 9px; line-height: 1.4; }
.fjord-note { min-height: 290px; display: flex; flex-direction: column; justify-content: flex-end; padding: 22px; border: 1px solid rgba(232,211,154,.2); border-radius: 19px; background: radial-gradient(circle at 100% 0, rgba(232,211,154,.12), transparent 60%), rgba(4,19,16,.36); }
.fjord-note h3 { margin: 7px 0 10px; font: 700 24px/1.1 ui-serif, Georgia, serif; }
.fjord-note p { color: #b9c5bf; font-size: 10px; line-height: 1.55; }
.fjord-note .inline-link { margin-top: 8px; }

html[dir="rtl"] .region-fishing { padding-left: 0; padding-right: 20px; border-left: 0; border-right: 1px solid var(--line); }
html[dir="rtl"] .nature-card-heading em { text-align: left; }
html[dir="rtl"] .local-story { border-left: 0; border-right: 2px solid var(--warm); border-radius: 16px 0 0 16px; }
html[dir="rtl"] .contact-actions a,
html[dir="rtl"] a[href^="tel:"],
html[dir="rtl"] a[href^="mailto:"] { direction: ltr; unicode-bidi: isolate; }

@media (max-width: 980px) {
  .site-header { flex-wrap: wrap; }
  .context-controls { order: 3; width: 100%; margin-left: 0; }
  .select-control { flex: 1; }
  .select-control select { max-width: none; width: 100%; }
  .local-quicknav { grid-template-columns: repeat(3, 1fr); }
  .local-quicknav a:nth-child(3) { border-right: 0; }
  .local-quicknav a:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
  .license-grid { grid-template-columns: 1fr; }
  .license-season { min-height: 0; }
  .journal-grid { grid-template-columns: 1.2fr .8fr; }
  .partner-grid, .source-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fjord-note { grid-column: 1 / -1; min-height: 220px; }
}

@media (max-width: 760px) {
  .context-controls { gap: 6px; }
  .select-control { min-width: 0; padding-inline: 9px; }
  .select-control > span { display: none; }
  .local-quicknav { grid-template-columns: 1fr; }
  .local-quicknav a, .local-quicknav a:nth-child(3) { border-right: 0; border-bottom: 1px solid var(--line); }
  .local-quicknav a:last-child { border-bottom: 0; }
  .region-intro, .nature-grid, .journal-grid, .partner-grid, .source-list, .community-grid { grid-template-columns: 1fr; }
  .partner-group-heading { align-items: start; flex-direction: column; gap: 5px; }
  .map-toolbar { max-width: calc(100% - 20px); padding-right: 36px; }
  .map-legend { bottom: 28px; }
  .region-fishing { padding: 15px 0 0; border-left: 0; border-top: 1px solid var(--line); }
  html[dir="rtl"] .region-fishing { padding: 15px 0 0; border-right: 0; border-top: 1px solid var(--line); }
  .state-fee-card { display: grid; }
  .primary-link { justify-self: start; }
  .nature-media img { height: 220px; }
  .journal-grid figure, .journal-grid img { min-height: 250px; }
  .fjord-note { grid-column: auto; min-height: 240px; }
}

@media (max-width: 430px) {
  .brand-mark { width: 39px; height: 39px; }
  .header-actions .ghost-button { display: none; }
  .price-row { grid-template-columns: 1fr; gap: 3px; }
  .price-row dd { white-space: normal; }
  .contact-card { grid-template-columns: 1fr; }
  .contact-actions { justify-content: flex-start; }
}

/* v0.2.1: more balanced media cards and a readable content scale */
body { line-height: 1.5; }
.section-lead { font-size: 14px; line-height: 1.6; }
.local-quicknav strong { font-size: 14px; }
.local-quicknav small { font-size: 11px; line-height: 1.4; }

.species-grid { gap: 16px; }
.species-card {
  grid-template-columns: 176px minmax(0, 1fr);
  min-height: 304px;
  border-radius: 22px;
}
.species-body { padding: 21px 20px 19px; }
.species-topline { gap: 14px; }
.species-topline h3 { font-size: 21px; line-height: 1.08; }
.species-months { flex: 0 1 150px; font-size: 11px; line-height: 1.4; }
.species-tip { margin: 14px 0; font-size: 12px; line-height: 1.55; }
.species-facts { gap: 9px; }
.species-facts div { grid-template-columns: 78px minmax(0, 1fr); gap: 9px; }
.species-facts dt, .species-place-row span { font-size: 10px; }
.species-facts dd, .species-place-row strong { font-size: 11px; line-height: 1.5; }
.species-place-row { margin-top: 14px; padding-top: 11px; }
.species-body .inline-link, .field-card summary { font-size: 11px; }
.field-details strong { font-size: 9px; }
.field-details span { font-size: 11px; line-height: 1.5; }
.species-image-contain img { object-fit: contain; padding: 16px; }
.species-image-contain::after { background: linear-gradient(180deg, rgba(4,18,14,.22), rgba(4,18,14,.56)); }

.nature-grid { gap: 16px; }
.nature-card { border-radius: 21px; }
.nature-media { min-height: 244px; }
.nature-media img { height: 244px; }
.nature-body { padding: 20px; }
.nature-card h3 { font-size: 20px; line-height: 1.12; }
.nature-card-heading em { font-size: 11px; line-height: 1.35; }
.nature-season { font-size: 11px; line-height: 1.55; }
.nature-facts { gap: 11px; margin: 15px 0; }
.nature-facts dt { font-size: 9px; }
.nature-facts dd { font-size: 11px; line-height: 1.6; }
.nature-caution { font-size: 10px; line-height: 1.55; }
.nature-safety p, .nature-safety li { font-size: 11px; line-height: 1.55; }
.media-credit { font-size: 8px; line-height: 1.35; }

@media (max-width: 900px) {
  .species-card { grid-template-columns: 148px minmax(0, 1fr); }
  .species-topline { display: block; }
  .species-months { display: block; max-width: none; margin-top: 7px; text-align: left; }
}

@media (max-width: 760px) {
  .species-card { grid-template-columns: 134px minmax(0, 1fr); min-height: 272px; }
  .species-body { padding: 18px 16px 16px; }
  .species-topline h3 { font-size: 20px; }
  .species-facts div { grid-template-columns: 1fr; gap: 2px; }
  .nature-media, .nature-media img { min-height: 232px; height: 232px; }
}

@media (max-width: 480px) {
  .species-card { grid-template-columns: 1fr; }
  .species-art { min-height: 172px; }
  .species-photo-art img { object-position: center 45%; }
  .species-body { padding: 19px 18px 18px; }
}

/* v0.2.2: cohesive species artwork and repaired desktop rhythm */
@media (min-width: 1120px) {
  .shell { width: min(1380px, calc(100% - 72px)); }
}

@media (min-width: 1680px) {
  .shell { width: min(1440px, calc(100% - 96px)); }
}

.species-grid { gap: 18px; }
.species-card {
  grid-template-columns: 1fr;
  grid-template-rows: 198px auto;
  min-height: 0;
}
.species-art { min-height: 198px; }
.species-photo-art img {
  object-position: center 51%;
  filter: saturate(.78) contrast(.98) brightness(.78);
}
.species-photo-art::after {
  background: linear-gradient(180deg, rgba(4,18,14,.08), rgba(4,18,14,.12) 58%, rgba(4,18,14,.6));
}
.species-body { padding: 22px 23px 24px; }
.species-topline { gap: 18px; }
.species-topline h3 { font-size: 22px; }
.species-months { max-width: 175px; font-size: 12px; }
.species-tip { margin: 15px 0; font-size: 13px; line-height: 1.6; }
.species-facts { gap: 10px; }
.species-facts div { grid-template-columns: 92px minmax(0, 1fr); gap: 11px; }
.species-facts dt, .species-place-row span { font-size: 10px; }
.species-facts dd, .species-place-row strong { font-size: 12px; line-height: 1.52; }
.species-place-row { margin-top: 15px; padding-top: 12px; }
.species-body .inline-link { margin-top: 11px; font-size: 12px; }
.media-credit { font-size: 9px; }

.community-section { padding: clamp(24px, 3.4vw, 34px); }
.community-grid { gap: 16px; margin-top: 22px; }
.community-form { padding: 20px; }
.community-form > label strong, .vote-form legend { font-size: 14px; }
.community-form > label span, .form-bottom small, .form-status { font-size: 11px; line-height: 1.5; }
.community-form textarea { min-height: 126px; font-size: 13px; }
.vote-form fieldset label { font-size: 12px; line-height: 1.45; }
.community-section > .source-note {
  margin: 16px 2px 0;
  font-size: 11px;
  line-height: 1.55;
}

.source-note { font-size: 11px; line-height: 1.5; }
.footer { font-size: 11px; line-height: 1.55; padding: 26px 5px 12px; }
.footer strong { font-size: 12px; }

@media (min-width: 1120px) {
  .species-card { grid-template-rows: 220px auto; }
  .species-art { min-height: 220px; }
  .species-body { padding: 24px 25px 25px; }
}

@media (max-width: 760px) {
  .species-card { grid-template-rows: 176px auto; }
  .species-art { min-height: 176px; }
  .species-body { padding: 20px 18px 20px; }
  .species-facts div { grid-template-columns: 82px minmax(0, 1fr); gap: 9px; }
  .community-section { padding: 22px 20px; }
}

@media (max-width: 480px) {
  .species-card { grid-template-rows: 164px auto; }
  .species-art { min-height: 164px; }
  .species-topline { display: block; }
  .species-months { display: block; max-width: none; margin-top: 8px; text-align: left; }
  .species-facts div { grid-template-columns: 1fr; gap: 2px; }
}

/* v0.2.7: crawlable local-guide links, sharing, search-entry cards, complete nature-card media and official alert UI */
.guide-hub { padding: clamp(22px, 3.4vw, 34px); }
.guide-hub-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-top: 22px;
}
.guide-hub-grid a {
  min-height: 144px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 10px;
  padding: 17px;
  border: 1px solid var(--line);
  border-radius: 18px;
  color: var(--text);
  background: rgba(4, 18, 15, .29);
  text-decoration: none;
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.guide-hub-grid a:hover {
  border-color: rgba(159, 224, 183, .35);
  background: rgba(159, 224, 183, .075);
  transform: translateY(-2px);
}
.guide-hub-grid .guide-hub-featured {
  border-color: rgba(232, 211, 154, .36);
  background:
    radial-gradient(circle at 90% 10%, rgba(232, 211, 154, .16), transparent 46%),
    rgba(20, 48, 38, .56);
}
.guide-hub-grid .guide-hub-featured:hover {
  border-color: rgba(232, 211, 154, .68);
  background:
    radial-gradient(circle at 90% 10%, rgba(232, 211, 154, .23), transparent 48%),
    rgba(24, 55, 43, .7);
}
.guide-hub-grid span {
  color: var(--accent);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.guide-hub-grid strong { font-size: 15px; line-height: 1.24; }
.guide-hub-grid small { color: var(--warm); font-size: 11px; font-weight: 750; line-height: 1.4; }

@media (min-width: 1120px) {
  .guide-hub-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 980px) {
  .guide-hub-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 680px) {
  .guide-hub { padding: 22px 20px; }
  .guide-hub-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .guide-hub-grid a { min-height: 132px; padding: 15px; }
}

@media (max-width: 430px) {
  .guide-hub-grid { grid-template-columns: 1fr; }
  .guide-hub-grid a { min-height: 112px; }
}
