/* =============================================================================
   HAWAII ADVENTURE ATLAS / FONT SYSTEM V3

   Desktop and mobile share one cohesive role system: Brand Slab display,
   IBM Plex Mono interface + metadata, Spectral body, and DM Mono numeric.

   The export's one-off Inter body assignment on Today's Top Rankings is
   normalized to Spectral so repeated reading roles stay symmetric.
   ============================================================================= */

@font-face{
  font-family:"Brand Slab";
  src:url("../assets/atlas/fonts/BrandSlab.ttf") format("truetype");
  font-style:normal;
  font-weight:400;
  font-display:swap;
}
@font-face{
  font-family:"IBM Plex Mono";
  src:url("../assets/atlas/fonts/IBMPlexMono-Regular.ttf") format("truetype");
  font-style:normal;
  font-weight:400;
  font-display:swap;
}
@font-face{
  font-family:"IBM Plex Mono";
  src:url("../assets/atlas/fonts/IBMPlexMono-Medium.ttf") format("truetype");
  font-style:normal;
  font-weight:500;
  font-display:swap;
}
@font-face{
  font-family:"IBM Plex Mono";
  src:url("../assets/atlas/fonts/IBMPlexMono-SemiBold.ttf") format("truetype");
  font-style:normal;
  font-weight:600;
  font-display:swap;
}
@font-face{
  font-family:"Spectral";
  src:url("../assets/atlas/fonts/Spectral-Regular.ttf") format("truetype");
  font-style:normal;
  font-weight:400;
  font-display:swap;
}
@font-face{
  font-family:"Spectral";
  src:url("../assets/atlas/fonts/Spectral-SemiBold.ttf") format("truetype");
  font-style:normal;
  font-weight:600;
  font-display:swap;
}
@font-face{
  font-family:"DM Mono";
  src:url("../assets/atlas/fonts/DMMono.woff2") format("woff2");
  font-style:normal;
  font-weight:400;
  font-display:swap;
}

:root{
  --font-display:"Brand Slab","Spectral",Georgia,serif;
  --font-interface:"IBM Plex Mono",ui-monospace,monospace;
  --font-body:"Spectral",Georgia,serif;
  --font-metadata:"IBM Plex Mono",ui-monospace,monospace;
  --font-numeric:"DM Mono",ui-monospace,monospace;

  /* Compatibility aliases used by the production-derived styles. */
  --font:var(--font-interface);
  --mono:var(--font-metadata);
  --font-h2:var(--font-interface);
  --font-h3:var(--font-interface);
  --font-num:var(--font-numeric);
}

body{
  font-family:var(--font-interface);
  font-synthesis-weight:none;
}

/* Display: page, collection, location and named-object titles. */
#detailBody h2,
.detailOverviewCopy h1,
.dHead h1,
.colHead h1,
.bcard .nm,
.empty h3,
.wreckPop h3,
.atlas-legal-pop__name,
.flyover__titleText{
  font-family:var(--font-display);
  font-weight:400;
  text-transform:none;
}

/* Interface: controls, tabs, item names and working section labels. */
button,
select,
option,
nav#rail,
.hero h3,
.rrow .nm,
.fpanel h5,
.card h5,
.secH,
.detailPanelIntro h2,
.detailTabs>[role="tab"],
.detailSubTabs>[role="tab"],
.subRow b,
.linkRow .t,
.accessGroup h6,
.entry .nm,
.setList .si b,
.logf-title,
.atlas-cov-drop-title{
  font-family:var(--font-interface);
  text-transform:uppercase;
}

/* Reading copy: standard case, generous leading and a bounded measure. */
#coach p,
#detailBody .desc,
.detailOverviewCopy .desc,
.detailPanelIntro p,
.card li,
.detailEmptyCopy,
.subLead,
.researchLead,
.pageSub .subDesc,
.wreckStory,
.wreckNote p,
.empty p,
.setList .si span,
#aboutBox,
.field textarea,
.wxAlert span,
.wxNoAlert,
.wxStale,
.wreckPop p,
.atlas-legal-pop__text,
.flyover__note,
.coachBody{
  font-family:var(--font-body);
  font-weight:400;
  text-transform:none;
}
#detailBody .desc,
.detailOverviewCopy .desc,
.detailPanelIntro p,
.detailEmptyCopy,
.subLead,
.researchLead,
.wreckStory,
.wreckNote p,
.empty p,
.setList .si span,
#aboutBox{
  max-width:72ch;
}

/* Metadata: compact context, labels, provenance and classification. */
.chip,
.detailPageEyebrow,
.detailContext,
#detailBody .loc,
.detailOverviewCopy .loc,
.dHead .loc,
.scoreBadge .t,
.statRow .t,
.statBar .t,
.detailFactRows span,
.cond .r>span,
.cond .upd,
.wxWhere,
.wxkv .t,
.wxh,
.wxUpdated,
.field label,
.autoNote,
.bcard .meta,
.collectionScoreLabel,
.entry .date,
.entry .meta,
.tl .month,
.colHead>span,
.subRow .k,
.linkRow .ch,
.linkRow .pl,
.detailLocationHint,
.wreckNote>span,
.wreckFacts .t,
.wreckPop__eyebrow,
.wreckPop__coord,
.atlas-legal-pop__type,
.atlas-legal-pop__cite,
.atlas-legal-pop__label,
.atlas-legal-pop__src,
.atlas-legal-pop__disclaimer,
.flyover__eyebrow,
.flyover__subtitle,
#footBar,
.dFoot,
.atlas-frame-label{
  font-family:var(--font-metadata);
  font-weight:400;
  text-transform:uppercase;
}

/* Numeric: every decision value uses the dedicated tabular face. */
.score,
.hero .big,
.rrow .sc,
.scoreBadge .v,
.statRow .v,
.statBar .v,
.cond .r>b,
.wxkv .v,
.detailContextScore .v,
.detailFactRows b,
.wreckFacts .v,
.collectionScore,
.setList .ctl,
.elev-stat b,
.flyover__progress,
#footBar .right span,
.dFoot .right span,
input[type="date"],
input[type="time"],
input[type="number"]{
  font-family:var(--font-numeric);
  font-variant-numeric:tabular-nums lining-nums;
  font-weight:400;
}

/* IBM Plex Mono is wider than the previous Cutive cascade. */
button,
.chip,
.fpanel h5,
.card h5,
.secH,
.detailTabs>[role="tab"],
.detailSubTabs>[role="tab"],
.statRow .t,
.statBar .t,
.wxkv .t,
.field label{
  letter-spacing:min(.07em,1px);
}

@media (prefers-contrast:more){
  #detailBody .desc,
  .detailOverviewCopy .desc,
  .detailPanelIntro p,
  .detailEmptyCopy,
  .subLead,
  .researchLead,
  .setList .si span{
    color:var(--text);
  }
}
