/* =====================================================================
   NTAC PUBLIC SITE — stylesheet
   Extracted verbatim from the approved review files in ntac_template/.
   The comment blocks below came with it; they document non-obvious
   decisions. Values here are client-approved: do not adjust colors,
   spacing, type sizes, borders, or radii.
   ===================================================================== */

/* Self-hosted type, per build brief §7. State agency: no Google Fonts
   request. Weights in use: Merriweather 400/700/900, Public Sans
   400/500/600/700. woff2 with woff fallback, font-display: swap. */
@font-face{font-family:"Merriweather";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/merriweather-latin-400-normal.woff2") format("woff2"),url("../fonts/merriweather-latin-400-normal.woff") format("woff")}
@font-face{font-family:"Merriweather";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/merriweather-latin-700-normal.woff2") format("woff2"),url("../fonts/merriweather-latin-700-normal.woff") format("woff")}
@font-face{font-family:"Merriweather";font-style:normal;font-weight:900;font-display:swap;src:url("../fonts/merriweather-latin-900-normal.woff2") format("woff2"),url("../fonts/merriweather-latin-900-normal.woff") format("woff")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/public-sans-latin-400-normal.woff2") format("woff2"),url("../fonts/public-sans-latin-400-normal.woff") format("woff")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/public-sans-latin-500-normal.woff2") format("woff2"),url("../fonts/public-sans-latin-500-normal.woff") format("woff")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/public-sans-latin-600-normal.woff2") format("woff2"),url("../fonts/public-sans-latin-600-normal.woff") format("woff")}
@font-face{font-family:"Public Sans";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/public-sans-latin-700-normal.woff2") format("woff2"),url("../fonts/public-sans-latin-700-normal.woff") format("woff")}

:root{
  --navy-900:#0A1433;--navy-800:#111E45;--navy-700:#1B2C5E;--navy-500:#3A4E86;
  --silver-300:#C9CEDB;--silver-100:#E6E9F0;--paper:#F5F6F8;--white:#fff;
  --gold:#C6A250;--gold-dark:#9A7B33;--ink:#16192A;--ink-muted:#4B516B;--alert:#A32B22;
  --wrap:1180px;--gutter:clamp(1.25rem,4vw,2.5rem);--rule:1px solid var(--silver-100);--radius:2px;
  --font-head:"Merriweather",Georgia,serif;--font-ui:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:#fff;color:var(--ink);font-family:var(--font-ui);line-height:1.6}
h1,h2,h3{font-family:var(--font-head);line-height:1.2;margin:0 0 .5em}
h1{font-size:clamp(2rem,4.6vw,3.15rem);font-weight:900;letter-spacing:-.01em}
h2{font-size:clamp(1.5rem,2.6vw,2rem);font-weight:700}
h3{font-size:1.125rem;font-weight:700;font-family:var(--font-ui)}
p{margin:0 0 1rem;max-width:68ch}
a{color:var(--navy-700)}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.skip{position:absolute;left:-9999px;background:var(--gold);color:var(--navy-900);padding:.75rem 1.25rem;font-weight:700;text-decoration:none;z-index:99}
.skip:focus{left:0;top:0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.btn{display:inline-block;font-weight:700;font-size:.95rem;line-height:1.2;padding:.85rem 1.4rem;border-radius:var(--radius);text-decoration:none;border:2px solid transparent;cursor:pointer;font-family:var(--font-ui);transition:background-color .15s,color .15s}
.btn--primary{background:var(--gold);color:var(--navy-900);border-color:var(--gold)}
.btn--primary:hover{background:var(--gold-dark);border-color:var(--gold-dark);color:#fff}
.btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}
.btn--ghost:hover{background:rgba(255,255,255,.12);border-color:#fff}
.btn--block{display:block;width:100%;text-align:center}

/* utility + header */
.utility{background:var(--navy-900);color:var(--silver-300);font-size:.875rem;border-bottom:1px solid rgba(255,255,255,.12)}
.utility__inner{display:flex;flex-wrap:wrap;gap:.5rem 1.75rem;align-items:center;justify-content:space-between;padding-block:.6rem}
.utility p{margin:0;max-width:none}
.utility__emergency{display:flex;align-items:center;gap:.6rem}
.utility__dot{width:.6rem;height:.6rem;border-radius:50%;background:var(--alert);flex:none}
.utility strong{color:#fff}
.utility a{color:var(--gold);text-decoration:none;font-weight:600}
.header{background:#fff;border-bottom:var(--rule);position:relative;z-index:20}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-block:.85rem}
.brand{display:flex;align-items:center;gap:.9rem;text-decoration:none;color:inherit}
.brand__mark{height:84px;width:auto;flex:none}
.brand__name{font-family:var(--font-head);font-weight:700;font-size:1.05rem;line-height:1.25;color:var(--navy-900);max-width:15ch}
.brand__tag{display:block;font-family:var(--font-ui);font-weight:500;font-size:.8rem;color:var(--ink-muted);margin-top:.15rem}
.nav{display:flex;align-items:center;gap:1.5rem}
.nav__list{display:flex;list-style:none;margin:0;padding:0;gap:1.5rem}
.nav__link{text-decoration:none;color:var(--navy-900);font-weight:600;font-size:.94rem;padding-block:.4rem;border-bottom:3px solid transparent}
.nav__link:hover,.nav__link[aria-current="page"]{border-bottom-color:var(--gold)}
.nav__login{background:var(--navy-900);color:#fff;padding:.7rem 1.1rem;border-radius:var(--radius);text-decoration:none;font-weight:700;font-size:.9rem}
.nav__toggle{display:none;background:none;border:2px solid var(--silver-300);border-radius:var(--radius);padding:.55rem .8rem;font:inherit;font-weight:700;color:var(--navy-900)}

/* hero */
.hero{position:relative;background:var(--navy-900);color:#fff;overflow:hidden}
.hero__field{position:absolute;inset:0;background:radial-gradient(120% 90% at 74% 10%,rgba(58,78,134,.5) 0%,rgba(10,20,51,0) 62%),linear-gradient(180deg,#0A1433 0%,#101E48 55%,#0A1433 100%)}
/* Capitol: anchored to the bottom-right, cropped by the section edge so
   it reads as architecture behind the page, not a floating clip-art. */
.hero__art{position:absolute;left:50%;transform:translateX(-50%);bottom:-5%;width:min(112%,1480px);color:var(--silver-300);opacity:.09;pointer-events:none}
/* HERO GRAPHIC — client asked for a graphic in place of flat navy, and
   suggested the Great Seal centred. It sits as a large low-opacity
   emblem behind the copy, with the Capitol drawing dropped to a faint
   horizon along the bottom so the two don't compete.
   [ASSET] Seal supplied at 300x300 only. It is being scaled past its
   native size here — ask NTAC for a vector or a 1000px+ raster.
   To use a photograph instead, swap .hero__seal for an <img> and keep
   the navy overlay; contrast on the headline must stay at 4.5:1. */
.hero__seal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(44%,470px);opacity:.13;pointer-events:none}
.hero__slogan{margin:1.75rem 0 0;padding-left:1rem;border-left:3px solid var(--gold);font-weight:600;color:#fff;max-width:48ch;font-size:1.02rem}

.hero__inner{position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr);gap:clamp(2rem,5vw,4rem);align-items:start;padding-block:clamp(3rem,7vw,5.5rem)}
.hero__rule{width:64px;height:4px;background:var(--gold);margin-bottom:1.5rem}
.hero h1{color:#fff;margin-bottom:1rem}
.hero__lede{font-size:1.15rem;color:var(--silver-300);max-width:50ch}
.hero__actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2rem}
.hero__jurisdiction{margin-top:2.25rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.18);font-size:.9rem;color:var(--silver-300);max-width:56ch}
.hero__jurisdiction a{color:var(--gold)}
.login{background:#fff;color:var(--ink);border-radius:var(--radius);border-top:4px solid var(--gold);padding:1.75rem;box-shadow:0 18px 40px rgba(4,9,26,.35)}
.login h2{font-size:1.25rem;font-family:var(--font-ui);font-weight:700;margin-bottom:.25rem}
.login__note{font-size:.875rem;color:var(--ink-muted);margin-bottom:1.25rem}
.field{margin-bottom:1rem}
.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.35rem}
.field input{width:100%;padding:.7rem .75rem;font:inherit;font-size:.95rem;border:1px solid var(--silver-300);border-radius:var(--radius)}
.login__row{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.85rem;margin-bottom:1.25rem}
.login__foot{margin:1.25rem 0 0;padding-top:1.1rem;border-top:var(--rule);font-size:.85rem;color:var(--ink-muted)}

/* actions */
.actions{background:var(--paper);border-bottom:var(--rule);padding-block:clamp(2.5rem,5vw,3.5rem)}
.actions__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem;margin:0;padding:0;list-style:none}
.action{background:#fff;border:var(--rule);border-left:4px solid var(--gold);border-radius:var(--radius);padding:1.4rem;display:block;text-decoration:none;color:inherit;transition:background-color .15s,border-color .15s}
.action:hover{background:var(--navy-900);color:#fff;border-left-color:#fff}
.action:hover .action__desc{color:var(--silver-300)}
.action h3{margin-bottom:.4rem}
.action__desc{margin:0;font-size:.92rem;color:var(--ink-muted)}

/* about */
.about{padding-block:clamp(3rem,6vw,4.5rem)}
.about__grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(2rem,5vw,4rem)}
.about__meta{margin-top:2rem;border-top:var(--rule);padding-top:1.25rem;font-size:.9rem;color:var(--ink-muted)}
.about__meta dl{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1.25rem;margin:0}
.about__meta dt{font-weight:700;color:var(--navy-900)}
.about__meta dd{margin:0}
.indicators{background:var(--navy-900);color:#fff;border-radius:var(--radius);padding:1.75rem}
.indicators h2{color:#fff;font-size:1.3rem;font-family:var(--font-ui);font-weight:700}
.indicators p{color:var(--silver-300);font-size:.92rem}
.indicators ul{list-style:none;margin:1.25rem 0 1.5rem;padding:0}
.indicators li{padding:.6rem 0;border-bottom:1px solid rgba(255,255,255,.14);font-size:.95rem}
.indicators li:last-child{border-bottom:0}
.indicators__caveat{font-size:.82rem;margin:0 0 1.25rem}


/* ==================================================================
   BEHAVIORAL INDICATORS — built from the client's mockup.
   Full-bleed navy band, 4x4 tiles, gold rules and headings.
   [SHARED] This block appears on the home page AND on the Report
   Suspicious Activity page. In Django make it one include
   (templates/includes/behavioral-indicators.html) rendered in both
   places — do not maintain two copies of sixteen tiles.
   Icons are inline SVG on a 48x48 grid, stroke-only, currentColor.
   ================================================================== */
.signs{background:var(--navy-900);color:#fff;padding-block:clamp(2.75rem,5vw,4rem);position:relative}
.signs__head{text-align:center;margin-bottom:2rem}
.signs__head h2{color:#fff;margin:0 0 .5rem;font-size:clamp(1.5rem,2.8vw,2.1rem)}
.signs__sub{margin:0 auto;color:var(--silver-300);max-width:62ch}
.signs__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;list-style:none;margin:0;padding:0}
.sign{border:1px solid rgba(198,162,80,.45);border-radius:var(--radius);background:rgba(255,255,255,.035);
  padding:1.35rem 1.1rem;text-align:center;display:flex;flex-direction:column;align-items:center}
.sign__icon{width:44px;height:44px;color:var(--gold);stroke:var(--gold);margin-bottom:.85rem;flex:none}
.sign__title{font-family:var(--font-ui);font-size:.8rem;font-weight:700;letter-spacing:.055em;
  text-transform:uppercase;color:var(--gold);margin:0 0 .45rem;line-height:1.3}
.sign__desc{margin:0;font-size:.86rem;line-height:1.5;color:var(--silver-100);max-width:none}
.signs__foot{margin:2rem auto 0;text-align:center;font-size:.86rem;color:var(--silver-300);max-width:78ch}
@media (max-width:1040px){.signs__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.signs__grid{grid-template-columns:1fr}}

/* ==================================================================
   INTERIOR PAGE HEADER — About and Report Suspicious Activity
   ================================================================== */
.pagehead{background:var(--navy-900);color:#fff;padding-block:clamp(2.25rem,4vw,3.25rem);position:relative;overflow:hidden}
.pagehead__seal{position:absolute;right:2%;top:50%;transform:translateY(-50%);width:min(24%,240px);opacity:.12;pointer-events:none}
.pagehead__inner{position:relative}
.pagehead__rule{width:64px;height:4px;background:var(--gold);margin-bottom:1.25rem}
.pagehead h1{color:#fff;margin-bottom:.6rem;font-size:clamp(1.8rem,3.6vw,2.6rem)}
.pagehead p{color:var(--silver-300);font-size:1.08rem;max-width:58ch;margin:0}
.prose{padding-block:clamp(2.5rem,5vw,3.5rem)}
.prose__grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(2rem,5vw,4rem);align-items:start}
.prose h2{margin-top:2rem}
.prose h2:first-child{margin-top:0}
.sidebox{background:var(--paper);border:var(--rule);border-top:4px solid var(--gold);border-radius:var(--radius);padding:1.5rem}
.sidebox h2{font-family:var(--font-ui);font-size:1.1rem;margin:0 0 .6rem}
.sidebox p{font-size:.92rem;color:var(--ink-muted)}
.sidebox dl{display:grid;grid-template-columns:auto 1fr;gap:.45rem 1.1rem;margin:0;font-size:.9rem}
.sidebox dt{font-weight:700;color:var(--navy-900)}
.sidebox dd{margin:0;color:var(--ink-muted)}
@media (max-width:1040px){.prose__grid{grid-template-columns:1fr}}

/* footer */
.footer{background:var(--navy-900);color:var(--silver-300);padding-block:3rem 1.5rem;font-size:.92rem}
.footer__grid{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(2,minmax(0,1fr));gap:2.5rem}
.footer__brand{display:flex;gap:.9rem;align-items:flex-start}
.footer__brand .brand__mark{height:66px;width:auto;flex:none}
.footer__name{font-family:var(--font-head);font-weight:700;color:#fff;font-size:1rem;line-height:1.3;margin:0}
.footer h2{font-size:.95rem;font-family:var(--font-ui);color:#fff;margin-bottom:.75rem}
.footer ul{list-style:none;margin:0;padding:0}
.footer li{margin-bottom:.5rem}
.footer a{color:var(--silver-300);text-decoration:none}
.footer a:hover{color:#fff;text-decoration:underline}
.footer__dhs{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.18);font-size:.88rem;font-style:normal;line-height:1.7;max-width:34ch}
.footer__bar{margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.18);display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;justify-content:space-between;align-items:center;font-size:.85rem}
.footer__legal{display:flex;flex-wrap:wrap;gap:1.25rem;margin:0;padding:0;list-style:none}
.footer__bar p{margin:0}

@media (max-width:1040px){
  .hero__inner{grid-template-columns:1fr}
  .login{max-width:480px}
  .hero__art{opacity:.1}
  .actions__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .about__grid,}
@media (max-width:760px){
  .nav__toggle{display:block}
  .nav{display:none;position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:var(--rule);flex-direction:column;align-items:stretch;gap:0;padding:.5rem var(--gutter) 1.25rem;box-shadow:0 12px 24px rgba(4,9,26,.12)}
  .nav.is-open{display:flex}
  .nav__list{flex-direction:column;gap:0}
  .nav__link{display:block;padding:.85rem 0;border-bottom:1px solid var(--silver-100)}
  .nav__login{margin-top:1rem;text-align:center}
  .actions__grid{grid-template-columns:1fr}
}

/* ==================================================================
   CMS INTEGRATION — additive only.
   Nothing above this line was changed. These rules exist because the
   review files carried three inline styles and no error states; the
   values are lifted from those inline styles and from the tokens in
   section 5 of the build brief, so the rendered result is identical
   to the approved files.
   ================================================================== */

/* Inline styles from the review files, moved to classes so the markup
   can be generated from CMS fields. Values unchanged. */
.footer__name-tag{font-family:var(--font-ui);font-weight:400;font-size:.9rem;color:var(--silver-300)}
.footer__attribution{color:var(--silver-300);text-decoration:none}
.footer__attribution strong{color:#fff}
.sidebox__lede{margin-bottom:1.1rem}
.sidebox__foot{margin:1.25rem 0 0;padding-top:1.1rem;border-top:var(--rule)}
.login__remember{font-weight:500}

/* Form errors — not visible in a static mockup. Field-level message sits
   above the input in --alert, linked to the field with aria-describedby. */
.field__error{margin:0 0 .35rem;font-size:.85rem;font-weight:600;color:var(--alert)}
.field__error p{margin:0 0 .35rem;max-width:none}
.field__error p:last-child{margin-bottom:0}
.field input[aria-invalid="true"]{border-color:var(--alert)}

/* Rich text fields render block children; keep their spacing inside the
   panels and bands that the approved markup styles directly. */
.prose .rich-text > *:first-child{margin-top:0}
.prose .rich-text > *:last-child{margin-bottom:0}

/* Public form snippets load Bootstrap after this sheet. Their .nav reboot
   and list defaults wrap Partner Login onto a second row; these selectors
   are more specific so chrome stays as designed. */
header.header .nav{display:flex;flex-wrap:nowrap;align-items:center;gap:1.5rem;padding-left:0;margin-bottom:0}
header.header .nav__list{display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:0;gap:1.5rem}
header.header .nav__login{flex:none;white-space:nowrap;color:#fff}
header.header .nav__link{color:var(--navy-900)}
@media (max-width:760px){
  header.header .nav{display:none;flex-wrap:wrap;flex-direction:column;align-items:stretch;gap:0}
  header.header .nav.is-open{display:flex}
  header.header .nav__list{flex-direction:column;flex-wrap:wrap;gap:0}
}
