/* Burlington News type system.
   Sans for scanning/UI. Serif only for editorial reading and selected feature moments. */

:root{
  --font-sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --font-serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,"Times New Roman",Times,serif;
  --sans:var(--font-sans);
  --serif:var(--font-serif);
  --publication-sans:var(--font-sans);
  --publication-serif:var(--font-serif);
  --editorial-serif:var(--font-serif);

  --text-xs:.72rem;
  --text-sm:.8125rem;
  --text-base:1rem;
  --text-lg:1.125rem;
  --text-xl:1.25rem;
  --text-2xl:clamp(1.35rem,3.6vw,1.7rem);
  --text-3xl:clamp(1.65rem,4.4vw,2.05rem);
  --text-4xl:clamp(1.85rem,5.2vw,2.5rem);
  --text-display:clamp(1.85rem,5.8vw,3.1rem);

  --weight-regular:400;
  --weight-medium:500;
  --weight-semibold:600;
  --weight-bold:700;

  --lh-display:1.05;
  --lh-section:1.1;
  --lh-card:1.15;
  --lh-deck:1.42;
  --lh-body:1.62;
  --lh-ui:1.28;
}

body{
  font-family:var(--font-sans);
  line-height:var(--lh-ui);
}

button,input,select,textarea{
  font-family:var(--font-sans);
}

/* --------------------------------------------------
   Function: sans is the default heading voice
   -------------------------------------------------- */
.publication-shell h1,
.publication-shell h2,
.publication-shell h3,
.publication-shell .section-title,
.publication-shell .section-head h2,
.mini-heading h2,
.section-rule h2{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-bold);
  line-height:var(--lh-section);
  letter-spacing:-.02em;
}

/* --------------------------------------------------
   Function: serif stays special
   -------------------------------------------------- */
.brand,
.news-brand-copy strong,
.footer-news-brand strong,
.top-copy h1,
.explore-band-copy h2,
.explore-heading h1,
.bn-story-page .article-head h1,
.article-head h1,
.article-body,
.bn-story-page .article-body,
.bn-story-page .article-body h2,
.article-body h2,
.bn-story-page .article-body blockquote,
.feedback-hero h1,
.work-hero h1,
.sports-heading h1,
.sports-hero-copy h2,
.traffic-page h1,
#candidates>h1,
.election-hero h1,
.profile-head h2,
.puzzles-main>h1,
.news-mast h1,
.publication-heading h1,
.simple-page h1,
.about-main h1,
.sources-main h1,
.help-main h1{
  font-family:var(--font-serif)!important;
}

/* --------------------------------------------------
   Kickers / categories
   -------------------------------------------------- */
.kicker,
.eyebrow,
.article-kicker,
.bn-story-page .article-kicker,
.bn-story-page .article-head .eyebrow,
.newest-list small,
.pick-card>.kicker,
.story-card span,
.sports-heading .kicker,
.feedback-kicker,
.now-kicker,
.now-mode-card small,
.traffic-page .traffic-kicker,
.route-ask,
.route-kicker,
.puzzles-kicker,
.explore-band-copy .kicker{
  font-family:var(--font-sans)!important;
  font-size:var(--text-xs);
  font-weight:var(--weight-bold);
  line-height:1.2;
  letter-spacing:.08em;
  text-transform:uppercase;
}

/* --------------------------------------------------
   Homepage
   -------------------------------------------------- */
.top-copy{
  padding:22px 22px 26px;
}
.top-copy h1{
  max-width:16ch;
  font-size:var(--text-display)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-display)!important;
  letter-spacing:-.03em!important;
}
.top-copy p{
  max-width:38em;
  margin-top:16px!important;
  font-family:var(--font-sans)!important;
  font-size:clamp(1rem,1.6vw,1.125rem)!important;
  font-weight:var(--weight-regular)!important;
  line-height:var(--lh-deck)!important;
  letter-spacing:0!important;
  color:var(--muted);
}

.mini-heading{
  padding-bottom:10px;
}
.mini-heading h2{
  font-size:var(--text-3xl)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-section)!important;
  letter-spacing:-.02em!important;
}
.mini-heading a{
  font-family:var(--font-sans)!important;
  font-size:var(--text-xs)!important;
  font-weight:var(--weight-bold)!important;
  letter-spacing:.08em;
  line-height:var(--lh-ui);
}

.newest-list strong,
.search-results strong{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
  letter-spacing:-.015em!important;
}
.newest-list time{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-medium);
  letter-spacing:.04em;
}

.pick-card h3{
  font-family:var(--font-sans)!important;
  font-size:var(--text-xl)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
  letter-spacing:-.015em!important;
}
.pick-card>.kicker{
  margin-bottom:8px;
}

.latest-puzzles strong,
.home-idea-title{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
  letter-spacing:-.015em!important;
}

.explore-band-copy h2{
  max-width:14ch;
  font-size:var(--text-4xl)!important;
  line-height:var(--lh-display)!important;
  letter-spacing:-.03em!important;
}
.explore-band-copy p{
  font-family:var(--font-sans)!important;
  font-size:var(--text-base);
  line-height:var(--lh-deck);
}

/* Live Local Update is utility, not editorial */
.now-card-head strong,
.now-mode-card .now-card-title,
.now-go-route,
.now-card-metrics,
.now-go-times,
.now-tab{
  font-family:var(--font-sans)!important;
  letter-spacing:0!important;
}
.now-card-head strong,
.now-mode-card .now-card-title{
  font-size:clamp(1.2rem,3.4vw,1.55rem)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
}

/* --------------------------------------------------
   Articles
   -------------------------------------------------- */
.bn-story-page .article-head h1,
.article-head h1{
  line-height:var(--lh-display)!important;
  letter-spacing:-.03em!important;
}
.bn-story-page .article-deck,
.bn-story-page .article-head .dek,
.article-deck{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-regular)!important;
  line-height:var(--lh-deck)!important;
  letter-spacing:0!important;
  color:var(--muted);
}
.bn-story-page .article-byline,
.bn-story-page .byline,
.article-byline,
.byline{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-semibold)!important;
  line-height:var(--lh-ui);
  letter-spacing:0;
}
.bn-story-page .article-byline span,
.bn-story-page .byline span{
  font-weight:var(--weight-semibold);
  letter-spacing:.06em;
}
.bn-story-page .article-layout,
.bn-story-page .article-body,
.article-body{
  max-width:720px;
}
.bn-story-page .article-body,
.article-body{
  font-size:clamp(1.125rem,.35vw + 1.05rem,1.25rem)!important;
  line-height:var(--lh-body)!important;
  letter-spacing:0!important;
}
.bn-story-page .article-body h2,
.article-body h2{
  font-size:clamp(1.35rem,2vw,1.7rem)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-section)!important;
  letter-spacing:-.02em!important;
}
.bn-story-page .article-body h3,
.article-body h3{
  font-family:var(--font-sans)!important;
  font-size:1.15rem!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
  letter-spacing:-.01em!important;
}
.bn-story-page .article-hero figcaption,
.bn-story-page .site-context-figure figcaption,
.article-hero figcaption{
  font-family:var(--font-sans)!important;
  font-style:normal!important;
}
.bn-story-page .article-related-head h2{
  font-family:var(--font-sans)!important;
}
.bn-story-page .article-related-card h3,
.article-related-card h3{
  font-family:var(--font-sans)!important;
  line-height:var(--lh-card)!important;
}

/* --------------------------------------------------
   Election
   -------------------------------------------------- */
#candidates>h1,
.election-hero h1{
  line-height:var(--lh-display)!important;
}
.profile-head h2{
  line-height:var(--lh-display)!important;
}
.profile-role,
.profile-line,
.candidate-card strong,
.candidate-card small,
.candidate-picker,
.issues-stack h3,
.experience-box h3,
.questions-box h3,
.issue-row,
.issue-explain,
.issue-toggle,
.questions-toggle,
.section-intro{
  font-family:var(--font-sans)!important;
}
.issues-stack h3,
.experience-box h3,
.questions-box h3{
  font-size:var(--text-lg)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-section)!important;
  letter-spacing:-.01em!important;
}

/* --------------------------------------------------
   Sports
   -------------------------------------------------- */
.sports-heading h1,
.sports-hero-copy h2{
  line-height:var(--lh-display)!important;
}
.sports-block-head h2,
.story-card h3,
.legacy-copy strong{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
  letter-spacing:-.015em!important;
}
.sports-block-head h2{
  font-size:var(--text-2xl)!important;
  line-height:var(--lh-section)!important;
}
.sports-hero-copy p,
.story-card p,
.story-card small,
.legacy-copy span{
  font-family:var(--font-sans)!important;
}

/* --------------------------------------------------
   Explore
   -------------------------------------------------- */
.explore-heading h1{
  line-height:var(--lh-display)!important;
  letter-spacing:-.03em!important;
}
.explore-tabs,
.calendar-card h2,
.bored-card h2,
.saved-panel h2,
.passport-panel h2,
.bored-copy strong,
.event-card h3,
.event-copy h3,
.passport-copy h3,
.saved-event strong,
.month-label{
  font-family:var(--font-sans)!important;
}
.calendar-card h2,
.saved-panel h2,
.passport-panel h2{
  font-size:var(--text-2xl)!important;
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-section)!important;
}
.bored-copy strong,
.event-card h3,
.passport-copy h3{
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
}
.explore-dialog h2{
  font-family:var(--font-serif)!important;
}

/* --------------------------------------------------
   Traffic / Skyway
   -------------------------------------------------- */
.traffic-page h1{
  line-height:var(--lh-display)!important;
  letter-spacing:-.03em!important;
}
.route-status h2,
.traffic-camera-copy strong,
.camera-other h2,
.route-chips,
.route-based,
.traffic-camera-copy span,
.traffic-camera-copy em,
.live-chip,
.map-credit,
.analysis-note{
  font-family:var(--font-sans)!important;
}
.route-status h2,
.traffic-camera-copy strong{
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
  letter-spacing:-.015em!important;
}

/* --------------------------------------------------
   Puzzles
   -------------------------------------------------- */
.puzzles-main>h1{
  line-height:var(--lh-display)!important;
}
.puzzles-lead,
.game-copy h2,
.game-option,
.game-next,
.game-progress,
.game-result,
.pick-copy h3,
.latest-row strong,
.section-rule h2{
  font-family:var(--font-sans)!important;
}
.game-copy h2,
.pick-copy h3{
  font-weight:var(--weight-bold)!important;
  line-height:var(--lh-card)!important;
}

/* --------------------------------------------------
   Feedback / Work With Us / utility pages
   -------------------------------------------------- */
.feedback-hero h1,
.work-hero h1{
  line-height:var(--lh-display)!important;
}
.feedback-lead,
.field-group,
.work-paths,
.feedback-back,
.feedback-status,
.updates-page .news-mast p,
.updates-page .section-head h2,
.updates-page .original-card h3,
.original-card strong,
.latest-card strong,
.news-story-body h3{
  font-family:var(--font-sans)!important;
}
.updates-page .section-head h2{
  font-size:var(--text-3xl)!important;
  line-height:var(--lh-section)!important;
}

/* --------------------------------------------------
   Header / drawer / footer
   -------------------------------------------------- */
.header,
.site-header,
.primary-nav,
.nav,
.menu-drawer,
.header-search,
.header-weather,
.site-footer,
.site-legal-footer,
.footer-main,
.site-footer-columns{
  font-family:var(--font-sans);
}
.site-footer-columns nav strong,
.footer-main nav strong{
  font-family:var(--font-sans)!important;
  font-weight:var(--weight-bold);
  letter-spacing:.08em;
  text-transform:uppercase;
}

/* --------------------------------------------------
   Mobile
   -------------------------------------------------- */
@media(max-width:720px){
  .top-copy{
    padding:22px 16px 24px!important;
  }
  .top-copy h1{
    font-size:clamp(1.85rem,8vw,2.35rem)!important;
    max-width:14ch;
  }
  .top-copy p{
    margin-top:14px!important;
    font-size:1rem!important;
    line-height:var(--lh-deck)!important;
  }
  .mini-heading h2{
    font-size:clamp(1.75rem,6vw,2.05rem)!important;
  }
  .newest-list>a{
    padding-top:16px!important;
    padding-bottom:16px!important;
  }
  .newest-list strong{
    font-size:1.125rem!important;
    line-height:var(--lh-card)!important;
  }
  .pick-card h3{
    font-size:1.15rem!important;
  }
  .bn-story-page .article-body,
  .article-body{
    font-size:1.1875rem!important;
    line-height:1.65!important;
  }
  .bn-story-page .article-head h1{
    font-size:clamp(1.85rem,9vw,2.45rem)!important;
  }
}

@media(min-width:1024px){
  .top-copy{
    padding:26px 28px 30px;
  }
  .top-copy h1{
    font-size:clamp(2.15rem,3.2vw,3.05rem)!important;
  }
  .mini-heading h2{
    font-size:2rem!important;
  }
  .newest-list strong{
    font-size:1.2rem!important;
  }
  .pick-card h3{
    font-size:1.2rem!important;
  }
}

@media(min-width:1440px){
  .top-copy h1{
    font-size:2.85rem!important;
  }
}

/* --------------------------------------------------
   Dark mode contrast
   -------------------------------------------------- */
html[data-theme="dark"]{
  --muted:#b7c4ce;
}
html[data-theme="dark"] .top-copy p,
html[data-theme="dark"] .article-deck,
html[data-theme="dark"] .bn-story-page .article-deck,
html[data-theme="dark"] .bn-story-page .article-head .dek,
html[data-theme="dark"] .explore-band-copy p,
html[data-theme="dark"] .feedback-lead,
html[data-theme="dark"] .profile-role,
html[data-theme="dark"] .profile-line{
  color:#c5d2da;
}
html[data-theme="dark"] .newest-list time,
html[data-theme="dark"] .story-card small,
html[data-theme="dark"] .traffic-camera-copy span{
  color:#a9b8c3;
}
