/* SeaTrack v97.78k — Normal locked 1.27 (body ≈22.9px); step 21% (XS×0.62 · S×0.79 · L×1.21 · XL×1.46).
   CONTENT uses --ts + --ts-icon; CHROME uses --ts-chrome (capped 1.35).
   FIT FIRST: L/XL reflow (wrap/stack), never quiet-cap content. Credits soft-grow. */

html {
  --type-ratio: 1.2;
  /* Fit-first capped body at Normal (was ~20.8 at old XL 16×1.3 — clipped on iPhone) */
  --fs-base: 18px;
  --ts: 1.27;           /* set by display.js; Normal locked */
  --ts-chrome: 1.3317;  /* header/tabs/map — capped 1.35 at L/XL */
  --ts-icon: 1.3317;    /* content icons at Normal */

  /* v97.78i legibility floor ≈11px; steps xl > l > n > s > xs */
  --fs-caption: max(11px, calc(var(--fs-base) / var(--type-ratio) / var(--type-ratio) * var(--ts)));
  --fs-small:   max(11px, calc(var(--fs-base) / var(--type-ratio) * var(--ts)));
  --fs-body:    max(13px, calc(var(--fs-base) * var(--ts)));
  --fs-label:   max(13px, calc(var(--fs-base) * var(--ts)));
  --fs-title:   max(14px, calc(var(--fs-base) * var(--type-ratio) * var(--ts)));
  --fs-heading: max(15px, calc(var(--fs-base) * var(--type-ratio) * var(--type-ratio) * var(--ts)));

  /* Line-heights + weights */
  --lh-caption: 1.3;
  --lh-small: 1.35;
  --lh-body: 1.45;
  --lh-label: 1.2;
  --lh-title: 1.25;
  --lh-heading: 1.2;
  --fw-caption: 600;
  --fw-small: 500;
  --fw-body: 450;
  --fw-label: 650;
  --fw-title: 700;
  --fw-heading: 800;

  /* Chrome: scales with --ts-icon except credit/Approximate (FIXED) */
  --fs-chrome-label: max(10px, calc(11px * var(--ts-chrome, 1))); /* tab labels ≥10px; chrome scale */
  --fs-chrome-meta: max(9px, calc(10px * var(--ts-chrome, 1)));
  --fs-chrome-credit: max(9px, calc(9px * min(1.15, var(--ts-chrome, 1)))); /* soft-grow */
  --fs-chrome-head: max(12px, calc(15px * var(--ts-chrome, 1)));
  --fs-chrome-ctrl: max(11px, calc(13px * var(--ts-chrome, 1)));
  --icon-chrome: calc(22px * var(--ts-chrome, 1));
  --icon-tab: calc(22px * var(--ts-chrome, 1));
  --icon-brand: calc(28px * var(--ts-chrome, 1));
  --tap-chrome: max(36px, calc(40px * var(--ts-chrome, 1)));

  /* rem CONTENT follows --ts; floor so Extra small stays ≥11px-ish */
  font-size: max(13.75px, calc(16px * var(--ts, 1.27)));
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  font-size: var(--fs-body);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* Utility roles */
.st-caption { font-size: var(--fs-caption) !important; font-weight: var(--fw-caption) !important; line-height: var(--lh-caption) !important; }
.st-small   { font-size: var(--fs-small) !important;   font-weight: var(--fw-small) !important;   line-height: var(--lh-small) !important; }
.st-body    { font-size: var(--fs-body) !important;    font-weight: var(--fw-body) !important;    line-height: var(--lh-body) !important; }
.st-label   { font-size: var(--fs-label) !important;   font-weight: var(--fw-label) !important;   line-height: var(--lh-label) !important; }
.st-title   { font-size: var(--fs-title) !important;   font-weight: var(--fw-title) !important;   line-height: var(--lh-title) !important; }
.st-heading { font-size: var(--fs-heading) !important; font-weight: var(--fw-heading) !important; line-height: var(--lh-heading) !important; }

/* ═══════════ CHROME (capped / fixed) — fit first, never clip ═══════════ */

/* Tab bar: labels hard-capped; icons grow only a little */
.tab-bar-v13 .tab .tab-label,
.tab-bar-5 .tab .tab-label {
  font-size: var(--fs-chrome-label) !important;
  font-weight: var(--fw-label) !important;
  line-height: 1.1 !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none;
}
.tab-fab .tab-label.fab-lbl {
  font-size: var(--fs-chrome-label) !important;
  line-height: 1.1 !important;
  white-space: nowrap !important;
  overflow: visible !important;
}
.tab-fab .fab-lbl > span { white-space: nowrap; }
.tab-bar-v13 .tab-svg {
  width: var(--icon-tab) !important;
  height: var(--icon-tab) !important;
}
.tab-bar-v13 .tab .tab-icon {
  width: calc(48px * var(--ts-chrome, 1)) !important;
  height: calc(28px * var(--ts-chrome, 1)) !important;
  border-radius: calc(14px * var(--ts-chrome, 1)) !important;
}
.tab-bar-v13 {
  min-height: 58px !important;
}
.tab-bar-v13 .tab {
  min-height: 48px !important;
  padding: 4px 1px 3px !important;
  gap: 2px !important;
  overflow: visible;
}

/* Header chrome */
.hdr-clock, #hdr-clock-t {
  font-size: var(--fs-chrome-meta) !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.app-header .brand h1 {
  font-size: 15px !important;
  font-weight: var(--fw-title) !important;
  white-space: nowrap;
  overflow: visible;
  text-overflow: clip;
  display: block !important;
}
#spot-search,
#spot-search::placeholder {
  font-size: var(--fs-body) !important;
  line-height: 1.25 !important;
  opacity: 1;
}
#spot-search::placeholder {
  color: rgba(226, 232, 240, 0.72);
  -webkit-text-fill-color: rgba(226, 232, 240, 0.72);
}

/* Map legal — FIXED small, one line each, never scale with --ts */
html body #nav-disclaimer.nav-disclaimer,
html body .nav-disclaimer {
  font: 800 10px/1.25 system-ui, -apple-system, sans-serif !important;
  letter-spacing: 0 !important;
  padding: 2px 6px !important;
  border-radius: 4px !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none !important;
  width: max-content !important;
  box-sizing: border-box !important;
  bottom: calc(36px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 8500 !important;
  pointer-events: none !important;
}
html body:has(.st-mt-attr:not([hidden])) #nav-disclaimer.nav-disclaimer,
html body #map.st-mt-on ~ #nav-disclaimer.nav-disclaimer {
  bottom: calc(36px + env(safe-area-inset-bottom, 0px)) !important;
  left: 8px !important;
  max-width: calc(100% - 132px) !important;
}
html body:has(.st-mt-attr:not([hidden]) .st-mt-logo:not([hidden])) #nav-disclaimer.nav-disclaimer {
  bottom: calc(42px + env(safe-area-inset-bottom, 0px)) !important;
}
#map .st-mt-attr,
html body .st-mt-attr {
  font: 600 var(--fs-chrome-credit)/1.25 system-ui, -apple-system, sans-serif !important;
  max-width: calc(100% - 120px) !important;
  gap: 2px !important;
  bottom: 5px !important;
  z-index: 8500 !important;
}
html body .st-mt-attr .st-mt-txt {
  font: 700 10px/1.25 system-ui, -apple-system, sans-serif !important;
  padding: 2px 5px !important;
  border-radius: 4px !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: min(280px, 72vw);
  box-sizing: border-box;
}
html body .st-mt-attr .st-mt-logo img {
  height: 12px !important;
  width: auto !important;
}
.maplibregl-ctrl-attrib {
  font-size: var(--fs-chrome-credit) !important;
  line-height: 1.25 !important;
}

/* Map controls — chrome */
.al-bell, .fav-btn {
  width: 40px !important;
  height: 40px !important;
}
.al-bell-svg, .fav-btn svg {
  width: var(--icon-chrome) !important;
  height: var(--icon-chrome) !important;
}
.al-bell-count {
  font: 800 10px/1 system-ui, sans-serif !important;
  min-width: 16px !important;
  height: 16px !important;
  line-height: 16px !important;
}
.fav-btn { font-size: 16px !important; }
.mo-fab, .lm-btn {
  width: 40px !important;
  height: 40px !important;
}
.mo-fab .mo-ic { font-size: 14px !important; }
.mo-fab .mo-l { font-size: 9px !important; }
.mo-b .mo-l { font-size: calc(10px * var(--ts, 1)) !important; white-space: normal !important; }
.lm-btn svg { width: var(--icon-chrome); height: var(--icon-chrome); }
.maplibregl-ctrl-group button,
.leaflet-control-zoom a {
  width: 40px !important;
  height: 40px !important;
  font-size: 20px !important;
  line-height: 40px !important;
}

/* Side menu / drawer CHROME (header, close, back) — capped */
.side-menu { font-size: var(--fs-body) !important; } /* content inherits */
.sm-head b {
  font-size: var(--fs-chrome-head) !important;
  font-weight: var(--fw-title) !important;
}
.sm-x, .sm-head .sm-x {
  font-size: calc(18px * var(--ts-chrome, 1)) !important;
  width: max(36px, calc(40px * var(--ts-chrome, 1))) !important;
  height: max(36px, calc(40px * var(--ts-chrome, 1))) !important;
  min-width: 36px !important;
  min-height: 36px !important;
  line-height: 1 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: none !important;
}
.sm-head img {
  width: calc(28px * var(--ts-chrome, 1)) !important;
  height: calc(28px * var(--ts-chrome, 1)) !important;
  border-radius: calc(7px * var(--ts-chrome, 1)) !important;
}
.sm-head b {
  font-size: max(12px, calc(17px * var(--ts-chrome, 1))) !important;
}
.sm-back {
  font-size: var(--fs-chrome-ctrl) !important;
}
.drawer-head h2 {
  font-size: var(--fs-chrome-head) !important;
  font-weight: var(--fw-title) !important;
}
.drawer-head .drawer-x,
.drawer .drawer-x,
button.drawer-x {
  font-size: 18px !important;
  width: 36px !important;
  height: 36px !important;
}

/* Text-size control — one row, 4× A glyphs growing XS→Normal */
.sm-disp .sm-seg-size {
  display: flex !important;
  flex-direction: row !important;
  align-items: stretch;
  gap: 0;
  border: 1px solid rgba(148,163,184,.35);
  border-radius: 10px;
  overflow: hidden;
}
.sm-disp .sm-seg-size button {
  flex: 1 1 0 !important;
  font-weight: 700 !important;
  padding: 8px 4px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  border-right: 1px solid rgba(148,163,184,.25);
  border-bottom: 0 !important;
  min-height: 44px;
}
.sm-disp .sm-seg-size button:last-child { border-right: 0; }
.sm-disp .sm-seg-size button:nth-child(1) { font-size: 11px !important; } /* Extra small */
.sm-disp .sm-seg-size button:nth-child(2) { font-size: 13px !important; } /* Small */
.sm-disp .sm-seg-size button:nth-child(3) { font-size: 16px !important; } /* Normal */
.sm-disp .sm-seg-size button:nth-child(4) { font-size: 19px !important; } /* Large */
.sm-disp .sm-seg-size button:nth-child(5) { font-size: 22px !important; } /* XL */
/* Font Standard/Easy-read can stay 1-row but capped */
.sm-disp .sm-seg:not(.sm-seg-size) button {
  font-size: var(--fs-chrome-ctrl) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  padding: 9px 4px !important;
}
.sm-disp h3 {
  font-size: var(--fs-chrome-head) !important;
  font-weight: var(--fw-title) !important;
}
.sm-disp .sm-unit-l {
  font-size: var(--fs-chrome-meta) !important;
  font-weight: 600 !important;
}
.sm-disp-prev {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
}
.sm-disp-prev b {
  display: block !important;
  font-size: var(--fs-title) !important;
  font-weight: var(--fw-title) !important;
  line-height: var(--lh-title) !important;
}
.sm-disp-prev span {
  display: block !important;
  font-size: var(--fs-small) !important;
  line-height: var(--lh-small) !important;
}

/* Rules chip chrome */
.sr-map-chip-t {
  font-size: var(--fs-chrome-meta) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* ═══════════ CONTENT (scales with --ts) ═══════════ */

/* Flashes / ack — content-ish but keep readable without blowing chrome */
.cf-flash { font-size: var(--fs-small) !important; }
.cf-flash .cf-ic { font-size: calc(14px * min(var(--ts-icon), 1.1)) !important; }
.cf-flash .cf-t small { font-size: var(--fs-caption) !important; }
.st-ack-card p { font: var(--fw-body) var(--fs-body)/var(--lh-body) system-ui, sans-serif !important; }
.st-ack-actions button { font-size: var(--fs-label) !important; }

/* Alerts list — content */
.al-unread-pill { font: 700 var(--fs-small)/1.25 system-ui, sans-serif !important; }
.al-sheet, .al-row-t b { font-size: var(--fs-title) !important; font-weight: var(--fw-title) !important; }
.al-row-t small, .al-empty, .al-actions .btn { font-size: var(--fs-small) !important; }
.al-row-t b, .al-row-t small {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
}

/* Side menu CONTENT rows — every row title same size/weight (Alerts = Diary = …) */
.side-menu .sm-item, #side-body .sm-item {
  font-size: var(--fs-label) !important;
  font-weight: 650 !important;
}
#side-body .sm-tx,
#side-body .sm-balab,
.side-menu .sm-tx,
.side-menu .sm-balab {
  font-size: var(--fs-label) !important;
  font-weight: 650 !important;
  line-height: 1.25 !important;
  color: inherit !important;
  opacity: 1 !important;
}
#side-body .sm-item .sm-st,
#side-body .sm-item small,
.side-menu .sm-item .sm-st,
.side-menu .sm-item small {
  font-size: var(--fs-caption) !important;
  font-weight: 400 !important;
  opacity: 0.65 !important;
}
.side-menu .sm-note, #side-body .sm-note,
.side-menu .sm-row small {
  font-size: var(--fs-small) !important;
}
.side-menu .sm-sec {
  font-size: var(--fs-caption) !important;
}
.side-menu .sm-row span {
  font-size: var(--fs-body) !important;
}
.side-menu .sm-body h3 {
  font-size: var(--fs-title) !important;
  font-weight: var(--fw-title) !important;
}

/* Drawer content */
.drawer .disclaimer, .drawer .hint,
.drawer .about-attr {
  font-size: var(--fs-small) !important;
  line-height: var(--lh-small) !important;
}
.drawer .card h3, .drawer .card .card-title,
.wdv-card h3, .wt-card h3, .w16-card h3 {
  font-size: var(--fs-title) !important;
  font-weight: var(--fw-title) !important;
  line-height: var(--lh-title) !important;
}
.drawer p, .drawer li, .drawer .card p,
.wdv-card, .wt-card, .w16-card {
  font-size: var(--fs-body) !important;
  line-height: var(--lh-body) !important;
}
.drawer .subhead, .drawer .section-h, .mo-extra-h,
.st-subhead {
  font-size: var(--fs-caption) !important;
  font-weight: var(--fw-caption) !important;
  letter-spacing: 0.04em;
}

/* Diary content */
.cd-head h2 { font-size: var(--fs-heading) !important; font-weight: var(--fw-heading) !important; }
.cd-addbig b, .cd-quickbite b, .la-big b { font-size: var(--fs-title) !important; }
.cd-addbig small, .cd-quickbite small, .la-big small { font-size: var(--fs-small) !important; }
.cd-day, .cd-sum, .cd-hint, .cd-tools .cd-mini { font-size: var(--fs-small) !important; }
.cd-fixban-in, .la-need.cd-fixban-in { font-size: var(--fs-label) !important; }
.cd-entry, .cd-one, .cd-body { font-size: var(--fs-body) !important; }
.cd-oc, .cd-meta { font-size: var(--fs-caption) !important; }

/* Wind / tides / weather content numbers stay on body/title */
.w16-now, .wdv-now, .wt-now {
  font-size: var(--fs-title) !important;
  font-weight: var(--fw-title) !important;
}
.w16-attr, .wt-attr, .wa-attr, .tide-solunar-note {
  font-size: var(--fs-caption) !important;
}

/* Header layout: keep controls on-screen (fit first) */
.app-header {
  align-items: center;
  justify-content: flex-start !important;
  gap: 0.35rem;
}
.app-header .brand { min-width: 0; flex: 1 1 auto; gap: 6px; }
.app-header .brand > div { min-width: 72px; overflow: visible; }
.header-right {
  flex-shrink: 0 !important;
  margin-left: auto !important;
  z-index: 2;
}
.header-right .al-bell,
.header-right .fav-btn,
.header-right .menu-btn {
  flex-shrink: 0 !important;
}

/* v97.77e: keep SeaTrack title + date on real iPhones (393pt). Only hide at extreme widths. */
@media (max-width: 330px) {
  .hdr-clock { display: none !important; }
}
@media (max-width: 280px) {
  .app-header .brand h1 { display: none !important; }
}

#map.maplibregl-map, #map { isolation: isolate; z-index: 1; }
.map-stage > .st-mt-attr,
.map-stage > #nav-disclaimer.nav-disclaimer { z-index: 8500 !important; }


/* v97.77b fit-first: zero scroll clips on chrome */
.al-bell, .fav-btn, .mo-fab, .lm-btn {
  overflow: visible !important;
  box-sizing: border-box !important;
}
.al-bell-count, .mo-badge {
  position: absolute !important;
  /* keep badge out of scrollWidth math via transform */
  pointer-events: none;
}
/* Credit: full OSM required @ 10px — wrap to 2 lines if needed, never abbreviate */
html body .st-mt-attr .st-mt-txt {
  font-size: 10px !important;
  line-height: 1.25 !important;
  max-width: min(280px, 72vw) !important;
  white-space: normal !important;
  overflow: visible !important;
  letter-spacing: 0;
}
@media (max-width: 360px) {
  html body .st-mt-attr .st-mt-txt {
    font-size: 9px !important;
    max-width: min(200px, 70vw) !important;
  }
  html body #nav-disclaimer.nav-disclaimer {
    font-size: 10px !important;
    max-width: none !important;
  }
}
/* Bell count: ensure absolute so it does not expand scrollWidth */
#al-bell { position: relative !important; }
.al-bell-count {
  top: 0 !important;
  right: 0 !important;
  transform: translate(35%, -25%) !important;
}

/* v97.77c: bell/credit hard fit */
#al-bell.al-bell, .al-bell {
  width: 40px !important;
  height: 40px !important;
  min-width: 40px !important;
  max-width: 40px !important;
  font-size: 10px !important;
  line-height: 1 !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}
#al-bell .al-bell-count, .al-bell-count {
  position: absolute !important;
  top: 2px !important;
  right: 2px !important;
  left: auto !important;
  bottom: auto !important;
  transform: none !important;
  min-width: 14px !important;
  height: 14px !important;
  line-height: 14px !important;
  font: 800 9px/14px system-ui, sans-serif !important;
  padding: 0 3px !important;
}
html body .st-mt-attr .st-mt-txt {
  font-size: 9px !important;
  line-height: 1.25 !important;
  max-width: min(200px, 58vw) !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  display: block !important;
}


/* v97.77d: menu above ack / map legal — hide under open menu */
body:has(#side-menu.open) .st-ack-scrim,
body:has(.side-menu.open) .st-ack-scrim,
body:has(#side-menu.open) #nav-disclaimer.nav-disclaimer,
body:has(.side-menu.open) #nav-disclaimer.nav-disclaimer,
body:has(#side-menu.open) .st-mt-attr,
body:has(.side-menu.open) .st-mt-attr {
  visibility: hidden !important;
  pointer-events: none !important;
}
html body .side-scrim { z-index: 20000 !important; }
html body .side-menu,
html body #side-menu.side-menu { z-index: 20001 !important; }


/* ═══════════ v97.78h: content icons + buttons scale with --ts ═══════════
   Chrome (header/tabs/credits/map FABs) stays hard-px in ios-chrome-fix.
   Content controls in drawers, log, lists, sheets follow --ts / --ts-icon. */
html body .drawer .btn,
html body .drawer button.primary,
html body .drawer .myloc-btn,
html body .mk-btn,
html body .mk-cat,
html body .mk-acts button,
html body .mk-a,
html body .add-kind-seg button,
html body #spot-seg button,
html body .cd-addbig,
html body .cd-quickbite,
html body .cd-tools .cd-mini,
html body .link-btn,
html body .wdv-retry,
html body .wdv-myloc,
html body .tdv-tools .myloc-btn {
  min-height: max(36px, calc(40px * var(--ts, 1)));
}
/* .la-big sizing owned by tabfab.css */
html body .mk-cat {
  min-width: calc(64px * var(--ts, 1));
  min-height: calc(56px * var(--ts, 1));
  font-size: max(11px, calc(11px * var(--ts, 1))) !important;
}
html body .mk-btn {
  font-size: max(11px, calc(12.5px * var(--ts, 1))) !important;
  min-height: calc(36px * var(--ts, 1));
  padding: calc(6px * var(--ts, 1)) calc(10px * var(--ts, 1));
}
html body .tdv-calbtn {
  width: calc(48px * var(--ts, 1)) !important;
  height: calc(44px * var(--ts, 1)) !important;
}
html body .tdv-calbtn svg,
html body .tdv-calbtn i svg {
  width: calc(20px * var(--ts-icon, 1)) !important;
  height: calc(20px * var(--ts-icon, 1)) !important;
}
/* content SVGs / emoji icons inside drawers + log + sheets */
html body .drawer svg.icon,
html body .drawer .card svg,
html body .cd-log svg,
html body .cd-addbig svg,
html body .la-big svg,
html body .wdv-now svg:not(#wdv-svg),
html body .spk-chev svg,
html body .weather-card svg,
html body .wx-ic,
html body .w16-cell svg {
  width: calc(1.25em * var(--ts-icon, 1));
  height: calc(1.25em * var(--ts-icon, 1));
}
/* Wind/Weather fan glyph (in-tab) scales with content */
html body .wdv-fan,
html body .wx-fan,
html body .st-fan,
html body #wdv .fan,
html body .wdv-now .fan-ic,
html body .w16-fan {
  width: calc(28px * var(--ts-icon, 1)) !important;
  height: calc(28px * var(--ts-icon, 1)) !important;
  font-size: calc(22px * var(--ts, 1)) !important;
}
/* Log big actions — base layout in tabfab.css / diary.css; tokens only */
html body .cd-addbig b,
html body .cd-quickbite b,
html body .la-big b {
  font-size: var(--fs-title) !important;
}
html body .cd-addbig small,
html body .cd-quickbite small,
html body .la-big small {
  font-size: var(--fs-small) !important;
}
/* Spot / mark list text (styles.css rem now scales; keep readable floors via tokens on titles) */
html body .spot-name {
  font-size: max(11px, 0.82rem, calc(13px * var(--ts, 1))) !important;
}
html body .spot-meta,
html body .spot-dist {
  font-size: max(11px, 0.65rem, calc(11px * var(--ts, 1))) !important;
}
html body .w-value {
  font-size: max(13px, 0.95rem, calc(15px * var(--ts, 1))) !important;
}
html body .w-label,
html body .w-sub,
html body .disclaimer,
html body .hint,
html body .scope-note,
html body .subhead,
html body .section-head h3,
html body .badge,
html body .mk-tag,
html body .mk-count,
html body .mk-empty,
html body .w16-hz,
html body .w16-attr,
html body .w16-beyond,
html body .w16-models,
html body .tdv-hint,
html body .tdv-cap,
html body .tdv-dim,
html body .tdv-foot,
html body .cd-hint,
html body .cd-meta,
html body .cd-oc {
  font-size: max(11px, var(--fs-caption)) !important;
  line-height: var(--lh-caption) !important;
}

/* v97.78h: chart/day hints on the type scale (were tiny calc or inherited body) */
.tdv-hint, .wdv-hint, .w16-hz, .w16-attr, .tide-solunar-note,
.cd-hint, .drawer .hint, .drawer .disclaimer {
  font-size: var(--fs-caption) !important;
  line-height: var(--lh-caption) !important;
  font-weight: 400 !important;
}
.tdv-legend, .wdv-legend, .w16-legend {
  font-size: var(--fs-caption) !important;
  line-height: var(--lh-caption) !important;
}


/* ═══ v97.78h icon scale reinforce (content + menu + FAB) ═══ */
html body .tab-fab .fab-fishsvg,
html body .tab-fab .fab-disc.fab-fishbtn {
  width: max(58px, calc(84px * var(--ts-chrome, 1))) !important;
  height: max(36px, calc(52px * var(--ts-chrome, 1))) !important;
}
html body .drawer svg.icon,
html body .cd-log svg,
html body .cd-addbig svg,
html body .la-big svg,
html body .mk-btn svg,
html body .mk-cat svg,
html body .spot-list svg,
html body .spot-row .ic,
html body .w16-cell svg,
html body .side-menu svg,
html body #side-body svg:not(.brand-mark) {
  max-width: calc(28px * var(--ts-icon, 1));
  max-height: calc(28px * var(--ts-icon, 1));
}
