/* PULS34 FINAL VISUAL SYSTEM · © portal owner · no external CSS/JS trackers
   Design tokens and public Django/Wagtail templates. No change to editorial permissions.
   Figma reference: pCvkU2yG8lzGsFrNlcQ6C5. */
:root, html[data-theme='light'] {
  --ink:#172638;--ink2:#425369;--dim:#64748b;--accent:#B83345;
  --border:#DFE5EB;--soft:#EDF2F7;--paper:#F7F8F7;--white:#fff;
  --u-ink:#172638;--u-ink-secondary:#425369;--u-muted:#64748b;
  --u-brand:#B83345;--u-brand-hover:#96253A;--u-teal:#13866B;
  --u-surface:#fff;--u-paper:#F7F8F7;--u-soft:#EDF2F7;--u-line:#DFE5EB;
  --p-navy:#1B3043;--p-accent:#B83345;--p-paper:#F7F8F7;
  --p-green:#13866B;--p-contrast:#172638;--p-muted:#64748b;
  --p-shadow:0 22px 70px rgba(19,40,63,.075);
  --w:1320px;
}
html[data-theme='dark']{
  --ink:#F4F7FB;--ink2:#CFDBE8;--dim:#ABBCCC;--border:#405467;
  --soft:#233B4D;--paper:#0E1D29;--white:#162B3A;
  --p-paper:#0E1D29;--p-contrast:#F4F7FB;--p-muted:#ABBCCC;
}
html{scroll-padding-top:80px}
body{font-family:Manrope,system-ui,-apple-system,'Segoe UI',Arial,sans-serif!important;
  background:var(--u-paper)!important;color:var(--u-ink)!important;
  font-size:16px;line-height:1.5;text-rendering:optimizeLegibility}
::selection{background:#B8334540}
.wrap{width:min(1320px,calc(100% - 60px))!important;max-width:100%}
a,button,input,select,textarea{font-family:inherit!important}
a:hover{color:var(--p-accent)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
 outline:3px solid #F08D9B!important;outline-offset:3px!important}
/* Single, dark editorial masthead across desktop and mobile */
.utility{background:#101F2E!important}
.utility-inner{min-height:32px!important;gap:12px}
.utility-links a{font-size:10px;white-space:nowrap}
.site-header{background:var(--p-navy)!important;color:#FFF!important;
 border-bottom:1px solid #FFFFFF20!important;box-shadow:0 8px 35px #10253818}
.site-header .masthead{min-height:80px!important;display:flex;justify-content:space-between;
 gap:22px;padding:12px 0}
.logo{display:inline-flex;align-items:center;gap:13px!important;color:#fff!important;
 flex-shrink:0;min-width:0}
.logo:hover,.logo:focus-visible{color:#fff!important}
.logo-monogram{display:grid;place-items:center;background:#112537!important;color:#FFF!important;
 border:1px solid #FFFFFF30!important;border-radius:12px!important;width:57px!important;height:57px!important;
 font-family:Manrope,Arial,sans-serif!important;font-size:24px!important;letter-spacing:-.08em!important}
.logo-monogram>span{color:#EF8496!important;font-size:20px!important;transform:translateY(4px)}
.logo-wordmark strong{font-size:27px!important;letter-spacing:-.035em!important;
 font-weight:900!important;line-height:1.05;color:#fff!important}
.logo-wordmark>span{font-size:9px!important;letter-spacing:.135em!important;
 color:#C1D0DE!important;font-weight:600!important;margin-top:5px!important}
.masthead-actions{align-items:center;gap:12px!important}
.masthead-link{font-weight:750!important;color:#D7E4F0!important;font-size:13px!important}
.theme-toggle{background:#FFFFFF12!important;color:#FFF!important;border:1px solid #FFFFFF3A!important;
 border-radius:9px!important;min-height:43px!important}
.theme-toggle:hover{background:#FFFFFF25!important}
.submit-tip,.btn-primary{background:var(--p-accent)!important;border-color:var(--p-accent)!important;
 border-radius:9px!important;color:#fff!important;font-weight:800!important;
 min-height:44px;transition:background-color .15s,transform .15s,box-shadow .15s}
.submit-tip:hover,.btn-primary:hover{background:#94283D!important;box-shadow:0 8px 24px #B8334530}
.navigation-line{background:#1B3043!important;border-top:1px solid #FFFFFF25!important;
 border-bottom:1px solid #FFFFFF20!important}
.navigation-inner{min-height:58px!important;gap:20px}
.top-nav{display:flex!important;gap:clamp(14px,1.7vw,28px)!important}
.top-nav a{color:#DEEAF4!important;font-size:13px!important;line-height:1.15;
 height:58px!important;display:inline-flex;align-items:center;padding:0 1px;
 border-bottom:3px solid transparent!important}
.top-nav a:first-child{color:#DEEAF4!important}
.top-nav a:hover,.top-nav a[aria-current='page']{color:#fff!important;
 border-bottom-color:#F16A7E!important}
.header-search{background:#FFFFFF11!important;border:1px solid #FFFFFF40!important;
 height:40px!important;border-radius:9px!important;min-width:205px!important}
.header-search input{color:white!important;font-size:13px!important}
.header-search input::placeholder{color:#D8E5F2!important;opacity:.85!important}
.header-search button{color:#fff!important}
.mobile-menu-btn{color:white!important;border-color:#FFFFFF55!important;background:#FFFFFF12!important}
/* Above-the-fold hierarchy */
.portal-home{padding-bottom:85px!important}
.home-kicker{min-height:40px!important;border-color:var(--u-line)!important}
.home-kicker-label{font-size:11px!important;color:var(--p-accent)!important;letter-spacing:.12em}
.home-kicker-date{color:var(--u-muted)!important}
.home-kicker>a{color:var(--u-ink-secondary)!important;text-decoration:underline;text-decoration-color:#CED9E2;text-underline-offset:4px}
.city-morning-bar{margin-top:10px!important;background:#FFF1F2!important;
 border:1px solid #F2D5DB!important;border-radius:11px!important;
 padding:10px 20px!important;min-height:54px!important}
.city-morning-bar .pulse-caption{color:#A1253B!important}
.city-morning-bar .pulse-live{background:#B83345!important}
.city-morning-bar .pulse-links a{color:#4F3440!important;font-weight:750!important}
.home-heading{display:flex;align-items:end;justify-content:space-between;gap:34px;
 padding:38px 0 33px!important}
.home-heading h1{font-size:clamp(36px,4.5vw,58px)!important;line-height:1.08!important;
 letter-spacing:-.055em!important;font-weight:850;color:var(--u-ink)!important;
 max-width:920px;text-wrap:balance}
.home-heading h1 em{color:var(--p-accent)!important;font-style:normal!important;font-family:inherit!important}
.home-heading>p{max-width:320px!important;color:var(--u-muted)!important;font-size:14px!important;
 line-height:1.65!important}
.eyebrow{color:var(--p-accent)!important;font-size:11px!important;
 font-weight:800!important;letter-spacing:.125em!important}
.home-section-line{padding-bottom:17px!important;margin-bottom:22px!important;
 border-color:var(--u-line)!important}
.home-section-line h2,.city-tools-heading h2{font-size:clamp(25px,2.65vw,34px)!important;
 letter-spacing:-.04em!important;font-weight:850!important}
.section-more{color:var(--u-ink-secondary)!important;border-radius:9px!important;font-weight:750}
.portal-hero-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(290px,.92fr)!important;gap:22px!important}
.portal-feature,.portal-brief{min-width:0}
.portal-feature .news-card.featured{border:0!important;border-radius:19px!important;
 box-shadow:var(--p-shadow)!important;overflow:hidden;background:var(--u-surface)!important}
.portal-feature .news-card.featured .card-media{height:235px!important}
.portal-feature .news-card.featured .card-body{padding:28px!important}
.portal-feature .news-card.featured h3{font-size:clamp(30px,3.3vw,43px)!important;
 line-height:1.16!important;letter-spacing:-.04em!important}
.portal-feature .news-card.featured:not(.has-image) .card-body{
 background:linear-gradient(132deg,#24425A,#13283B)!important;min-height:325px!important}
.portal-feature .news-card.featured:not(.has-image) h3{color:white!important}
.portal-feature .news-card.featured:not(.has-image) p{color:#D2E0ED!important}
.portal-feature .news-card.featured .card-kicker{color:#D65B6A!important}
.portal-brief{background:var(--u-surface)!important;border:1px solid var(--u-line)!important;
 border-radius:18px!important;padding:24px!important;box-shadow:var(--p-shadow)}
.brief-heading strong{font-size:20px!important;font-weight:850}
.brief-item{min-height:96px!important}
.brief-item strong{font-size:16px!important}
/* No fictional headline, but still an attractive and informative launch state */
.portal-empty{border:0!important;border-radius:18px!important;min-height:350px!important;
 background:linear-gradient(113deg,#19324A 0%,#24485E 62%,#2A5269 100%)!important;
 color:#fff!important;padding:42px 54px!important;
 box-shadow:var(--p-shadow)!important;position:relative;isolation:isolate;overflow:hidden}
.portal-empty:after{content:"34";position:absolute;right:35px;bottom:-78px;
 font-family:Manrope,Arial,sans-serif;font-weight:900;line-height:1;
 font-size:clamp(155px,22vw,350px);letter-spacing:-.13em;color:#FFFFFF09;
 pointer-events:none;z-index:-1}
.portal-empty .eyebrow{color:#F39CAC!important}
.portal-empty h3{font-size:clamp(29px,3.4vw,47px)!important;max-width:740px;
 line-height:1.13;font-weight:850;letter-spacing:-.045em;color:white!important}
.portal-empty p{color:#D7E3ED!important;max-width:670px;font-size:15px!important;line-height:1.75!important}
.portal-empty .btn-primary{width:max-content;max-width:100%;margin-top:9px}
/* The map promo deliberately contains only a decorative scheme, NOT fabricated pins/events */
.puls-map-promo{display:grid;grid-template-columns:1fr 1fr;background:var(--u-surface);
 border:1px solid var(--u-line);border-radius:19px;overflow:hidden;margin:32px 0 38px;
 min-height:275px;box-shadow:var(--p-shadow)}
.puls-map-graphic{position:relative;overflow:hidden;background:#E0EAE5;min-height:275px;isolation:isolate}
.map-scheme-river{position:absolute;right:0;top:-30%;height:165%;width:28%;background:#A9D0E3;
 transform:rotate(13deg);border-radius:50% 0 0 50%;filter:blur(.2px)}
.map-scheme-grid{position:absolute;inset:-25%;background:
 repeating-linear-gradient(20deg,transparent 0,transparent 48px,#FFFFFFCE 49px,#FFFFFFCE 56px,transparent 57px,transparent 87px),
 repeating-linear-gradient(104deg,transparent 0,transparent 88px,#FFFFFFDD 90px,#FFFFFFDD 97px,transparent 98px,transparent 145px);
 opacity:.85;transform:rotate(-5deg)}
.map-scheme-label{position:absolute;left:24px;bottom:22px;padding:9px 12px;
 font-size:12px;letter-spacing:.09em;font-weight:800;border-radius:8px;
 background:#FFFFFFE8;color:#36586B}
.puls-map-promo-content{padding:38px 43px;display:flex;flex-direction:column;justify-content:center}
.puls-map-promo h2{font-size:clamp(25px,2.6vw,37px);letter-spacing:-.045em;
 line-height:1.17;margin:4px 0 12px;font-weight:850;color:var(--u-ink)}
.puls-map-promo-content>p:not(.eyebrow){font-size:14px;line-height:1.75;
 color:var(--u-ink-secondary);margin:0 0 21px}
.puls-map-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.puls-map-secondary{font-size:13px;font-weight:800;color:var(--u-ink-secondary);
 min-height:44px;display:inline-flex;align-items:center;padding:0 10px}
/* Service dashboard, district filter and content cards */
.home-services{border-radius:17px!important;box-shadow:var(--p-shadow)!important}
.home-services>a{min-height:110px!important}
.home-services strong{font-weight:850!important;font-size:16px!important}
.home-services small{font-size:12px!important;color:var(--u-muted)!important}
.home-services .service-icon{border-radius:11px!important;color:var(--p-accent)!important}
.district-module{background:var(--u-surface)!important;border:1px solid var(--u-line)!important;
 border-radius:15px!important;padding:22px!important;margin:27px 0!important;
 display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.district-module-caption strong{font-size:18px!important}
.district-module-caption small{color:var(--u-muted)!important}
.district-picker select{min-height:48px!important;border-radius:8px!important;font-size:14px!important}
.district-picker button{min-height:48px!important;background:var(--p-navy)!important;
 color:#fff!important;border-radius:9px!important}
.portal-news-grid,.news-grid{gap:19px!important}
.news-card{border:1px solid var(--u-line)!important;border-radius:15px!important;
 background:var(--u-surface)!important;overflow:hidden;
 box-shadow:0 7px 22px #1225380A!important}
.news-card:hover{box-shadow:0 17px 44px #12253818!important}
.news-card h3{font-size:21px!important;font-weight:820;line-height:1.34!important}
.news-card .card-meta{font-size:12px!important;color:var(--u-muted)!important}
.news-card .card-media{background:#1B3043}
.news-card .card-media img{display:block;width:100%;height:100%;object-fit:cover}
.puls-v30-illustration{background:linear-gradient(135deg,#28465A,#132B3E)!important}
.reader-cta{border-radius:18px!important;background:var(--p-navy)!important;
 padding:38px 42px!important}
.reader-cta h2{font-weight:850!important}
/* Article: readable and trust-centric. */
.article-layout{grid-template-columns:minmax(0,845px) minmax(245px,1fr)!important;
 gap:clamp(22px,4.4vw,70px)!important;align-items:start}
.story{min-width:0}.story h1{font-size:clamp(35px,4.5vw,59px)!important;font-weight:850!important;line-height:1.15!important}
.story-lead{font-size:clamp(17px,1.7vw,21px)!important;line-height:1.65!important}
.story-content{font-size:var(--reader-font-size,19px)!important;line-height:1.87!important;max-width:75ch}
.story-content p{line-height:inherit}
.story-content h2{font-size:clamp(24px,2.5vw,32px)!important;font-weight:800}
.story-meta{font-size:12px!important;gap:12px 20px!important}
.cover img{border-radius:14px!important}
.source-note,.evidence,.timeline,.comments-section{border-radius:12px}
.puls-article-subscribe{margin-top:20px;border:1px solid var(--u-line)}
.puls-article-subscribe a{font-weight:800;color:var(--p-accent)}
/* Reader forms, management dashboards, ad / SEO center */
.reader-form,.reader-platform,.ad-cabinet,.seo-dashboard{font-family:inherit}
.reader-form input,.reader-form select,.reader-form textarea,
.ad-cabinet input,.ad-cabinet select,.ad-cabinet textarea{
 border:1px solid var(--u-line);border-radius:9px;padding:12px 14px;
 background:var(--u-surface);color:var(--u-ink);min-height:44px}
.reader-form textarea,.ad-cabinet textarea{min-height:110px}
.ad-cabinet form{background:var(--u-surface);border:1px solid var(--u-line);border-radius:16px}
.ad-cabinet form button{background:var(--p-navy);border-radius:9px}
.ad-kpi div,.ad-campaign-grid section{background:var(--u-surface);border:1px solid var(--u-line);
 border-radius:14px;padding:22px}
.puls34-ad{background:var(--u-surface);border-color:var(--u-line);border-radius:14px}
.puls34-ad-label{color:var(--u-muted)}
/* Editorial trust and site footer */
.site-footer{background:#122435!important;color:#E5EDF6!important;margin-top:0!important}
.footer-brand{font-weight:900!important;letter-spacing:-.045em!important}
.footer-navigation{display:grid!important;grid-template-columns:repeat(2,minmax(160px,1fr));
 gap:11px 24px!important}
.footer-navigation a{font-size:12px!important;line-height:1.45}
.footer-small{color:#AABCCC!important}
/* Fixed nav only on narrow viewports: always visible, safe areas, no tracking */
.mobile-bottom-nav{display:none}
@media (min-width:981px){.mobile-menu-btn{display:none!important}}
@media(max-width:1100px){
 .top-nav{gap:12px!important}
 .top-nav a{font-size:12px!important}
 .header-search{min-width:150px!important;width:170px!important}
 .home-heading{align-items:start}
 .home-heading h1{font-size:clamp(35px,5vw,54px)!important}
}
@media(max-width:980px){
 .wrap{width:min(100% - 40px,1320px)!important}
 .masthead-actions{margin-left:auto}
 .mobile-menu-btn{display:inline-flex!important;color:#fff!important}
 .navigation-line{position:relative!important}
 .top-nav{display:none!important;position:absolute;left:0;right:0;top:100%;
  padding:12px 20px 18px;background:#1B3043;border-top:1px solid #FFFFFF36;
  box-shadow:0 16px 36px #10253835;z-index:30;flex-wrap:wrap}
 .top-nav.open{display:flex!important}
 .top-nav a{height:44px!important;padding:0 14px;background:#FFFFFF0D;border-radius:8px}
 .portal-hero-grid{grid-template-columns:minmax(0,1fr)!important}
 .portal-brief{padding:20px!important}
 .portal-brief .brief-item{min-height:70px!important}
 .puls-map-promo{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
 html{scroll-padding-top:25px}
 .wrap{width:calc(100% - 32px)!important}
 .utility{display:none!important}
 .site-header .masthead{min-height:69px!important;padding:10px 0!important}
 .logo-monogram{width:43px!important;height:43px!important;border-radius:10px!important;font-size:18px!important}
 .logo-wordmark strong{font-size:20px!important}
 .logo-wordmark>span{font-size:7px!important;letter-spacing:.1em!important}
 .masthead-actions{gap:8px!important}
 .masthead-link,.theme-toggle .theme-text{display:none!important}
 .theme-toggle{min-width:40px!important;min-height:40px!important;padding:0!important}
 .submit-tip{display:none!important}
 .mobile-menu-btn{min-height:40px!important;border-radius:9px!important;font-size:12px}
 .navigation-inner{min-height:0!important;display:block!important}
 .header-search{height:40px!important;min-width:100%!important;width:100%!important;
   margin:0 0 10px!important}
 .home-kicker{margin-top:10px!important;flex-wrap:wrap;row-gap:5px!important}
 .home-kicker-date{font-size:11px!important}
 .city-morning-bar{flex-wrap:wrap!important;padding:12px!important;gap:7px!important}
 .pulse-links{width:100%;display:flex;flex-wrap:wrap;gap:6px!important}
 .pulse-links a{min-height:36px;padding:3px 6px;font-size:11px!important}
 .home-heading{display:block!important;padding:30px 0 17px!important}
 .home-heading h1{font-size:clamp(32px,8.8vw,43px)!important}
 .home-heading>p{margin:14px 0 0!important;max-width:100%!important;
   padding:0!important;border:0!important}
 .home-section-line{gap:8px!important}
 .home-section-line h2{font-size:26px!important}
 .section-more{font-size:12px!important;padding:8px 2px!important}
 .portal-empty{padding:27px 23px!important;min-height:338px!important}
 .portal-empty h3{font-size:32px!important}
 .portal-empty p{font-size:13px!important}
 .portal-feature .news-card.featured .card-body{padding:20px!important}
 .portal-feature .news-card.featured h3{font-size:30px!important}
 .portal-feature .news-card.featured .card-media{height:205px!important}
 .puls-map-promo{grid-template-columns:minmax(0,1fr);margin:24px 0 32px}
 .puls-map-graphic{min-height:175px!important}
 .puls-map-promo-content{padding:26px 24px 30px}
 .puls-map-promo h2{font-size:28px}
 .puls-map-actions .btn-primary{min-width:170px}
 .home-services{grid-template-columns:minmax(0,1fr)!important}
 .home-services>a{min-height:79px!important;padding:14px!important}
 .home-services .service-icon{width:40px!important;height:40px!important}
 .district-module{padding:16px!important;display:block!important}
 .district-module-caption{margin-bottom:12px!important}
 .district-picker{display:grid!important;grid-template-columns:minmax(0,1fr) auto;width:100%;gap:8px}
 .district-picker select{width:100%;max-width:100%}
 .news-grid{grid-template-columns:1fr!important}
 .reader-cta{display:block!important;padding:30px 22px!important}
 .reader-cta .btn-primary{margin-top:20px}
 .article-layout{display:block!important;padding-top:32px!important}
 .story h1{font-size:clamp(33px,8.5vw,45px)!important}
 .story-content{font-size:var(--reader-font-size,18px)!important}
 .story-sidebar{margin-top:24px}
 .footer-inner{display:block!important}
 .footer-navigation{margin-top:25px;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px!important}
 .site-footer{padding-bottom:calc(96px + env(safe-area-inset-bottom))!important}
 body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}
 .mobile-bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);
  bottom:0;left:0;right:0;height:calc(64px + env(safe-area-inset-bottom));
  background:#FFF;border-top:1px solid #DFE5EB;box-shadow:0 -9px 28px #14263A15;
  padding:3px 6px env(safe-area-inset-bottom);z-index:100;color:#1B3043}
 .mobile-bottom-nav a{min-width:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:1px;color:#415369;font-size:10px;font-weight:700;
  min-height:54px;line-height:1.2}
 .mobile-bottom-nav a span{font-size:25px;line-height:1.14;color:#B83345}
 .mobile-bottom-nav a:focus-visible{outline-offset:-3px!important}
 html[data-theme='dark'] .mobile-bottom-nav{background:#122435;border-color:#355064}
 html[data-theme='dark'] .mobile-bottom-nav a{color:#E5EDF6}
}
@media(max-width:380px){
 .logo-wordmark strong{font-size:18px!important}
 .logo-monogram{width:40px!important;height:40px!important}
 .header-search input{font-size:13px!important}
 .puls-map-promo h2{font-size:25px}
 .mobile-bottom-nav a{font-size:9px}
}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto!important}
 *,*::before,*::after{transition-duration:0s!important;animation-duration:0s!important}
}
