/*
Theme Name: Andy's Briefing
Theme URI: https://andyparrish.org
Author: Andy Parrish
Author URI: https://andyparrish.org
Description: Wisconsin's citizen intelligence platform — Andy's Briefing + Action Center. Fully Elementor-editable from install: run Setup once, import your content, and every page (including Home) is visually editable. Built-in briefing DB, MailPoet bridge, SMTP, statewide county pages, petitions, contact campaigns, and open-records generator.
Version: 1.2.6
Requires PHP: 7.4
Text Domain: andys-briefing
*/

:root{
  --navy:#081224;--navy-2:#0d1d36;--paper:#ffffff;--paper-2:#f5f4f0;
  --ink:#0b1322;--muted:#5b6577;--accent:#d9ab6f;--accent-deep:#b8853f;
  --red:#8f2d2d;--line:rgba(8,18,36,.12);--wrap:1120px;--radius:8px;
  --display:Georgia,"Times New Roman",serif;
  --body:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.6}
img{max-width:100%;height:auto}
a{color:var(--accent-deep)}
h1,h2,h3,h4{font-family:var(--display);line-height:1.15;color:inherit}

/* Masthead */
.ab-header{background:var(--navy);color:var(--paper);position:sticky;top:0;z-index:50;border-bottom:3px solid var(--accent)}
.ab-header__in{max-width:var(--wrap);margin:0 auto;display:flex;align-items:center;gap:24px;padding:14px 20px}
.ab-logo{display:flex;flex-direction:column;text-decoration:none;color:var(--paper)}
.ab-logo b{font-family:var(--display);font-size:1.25rem;letter-spacing:.02em}
.ab-logo span{font-family:var(--mono);font-size:.58rem;letter-spacing:.28em;color:var(--accent);text-transform:uppercase}
.ab-nav{margin-left:auto}
.ab-nav ul{list-style:none;display:flex;gap:4px;margin:0;padding:0;flex-wrap:wrap}
.ab-nav a{display:block;padding:8px 12px;color:rgba(255,255,255,.85);text-decoration:none;font-weight:600;font-size:.92rem;border-radius:4px}
.ab-nav a:hover,.ab-nav .current-menu-item a{color:var(--accent);background:rgba(255,255,255,.06)}
.ab-cta{background:var(--accent);color:var(--navy)!important;font-weight:700}
.ab-cta:hover{background:var(--accent-deep);color:var(--paper)!important}
.ab-burger{display:none;margin-left:auto;background:none;border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:4px;padding:8px 12px;font-size:1rem}
@media(max-width:860px){
  .ab-burger{display:block}
  .ab-nav{display:none;width:100%}
  .ab-nav.open{display:block}
  .ab-nav ul{flex-direction:column}
  .ab-header__in{flex-wrap:wrap}
}

/* Content shells */
.ab-content{min-height:60vh}
.ab-prose{max-width:760px;margin:0 auto;padding:48px 20px}
.ab-prose h1{font-size:2.1rem}

/* Footer */
.ab-footer{background:var(--navy);color:rgba(255,255,255,.75);margin-top:0}
.ab-footer__in{max-width:var(--wrap);margin:0 auto;padding:48px 20px 32px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:32px}
@media(max-width:760px){.ab-footer__in{grid-template-columns:1fr}}
.ab-footer h4{color:var(--paper);margin:0 0 12px;font-size:1rem}
.ab-footer a{color:var(--accent);text-decoration:none}
.ab-footer ul{list-style:none;margin:0;padding:0}
.ab-footer li{margin:6px 0}
.ab-footer__tag{font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.ab-footer__base{border-top:1px solid rgba(255,255,255,.12);text-align:center;padding:16px;font-size:.8rem;color:rgba(255,255,255,.5)}

/* Posts (briefings/articles) */
.ab-post-list{max-width:820px;margin:0 auto;padding:48px 20px}
.ab-post-card{padding:24px 0;border-bottom:1px solid var(--line)}
.ab-post-card h2{margin:0 0 6px;font-size:1.35rem}
.ab-post-card h2 a{color:var(--ink);text-decoration:none}
.ab-post-card h2 a:hover{color:var(--accent-deep)}
.ab-meta{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-deep)}


/* =====================================================================
   VISUAL OVERHAUL - CONVERSION PASS   (added 2026-07-29)
   ---------------------------------------------------------------------
   Purely additive. Delete everything below this banner to revert.
   Rule: brass gold (--ap-accent) now means 'this is clickable' and
   nothing else. Removed from eyebrows, labels, feed chrome, active nav.
   ===================================================================== */

:root{
  --ap-shadow-btn:   0 6px 18px rgba(217,171,111,.30);
  --ap-shadow-btn-h: 0 10px 28px rgba(217,171,111,.44);
  --ap-shadow-card:  0 18px 44px rgba(3,8,18,.34);
  --ap-slate:        #101d33;
  --ap-hair:         rgba(255,255,255,.10);
}

/* 1 . Reclaim gold from decorative text */
.elementor-widget-heading h6.elementor-heading-title{
  color: inherit !important; opacity: .58; font-size: .74rem;
  font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
}
.ap-preview__label{ color: inherit !important; opacity: .58; }
.ab-logo span{ color: rgba(255,255,255,.52) !important; }
.ab-nav .current-menu-item > a{ color: #fff !important; }

/* 2 . Button hierarchy */
.elementor-button[href*='/subscribe'], .ab-cta > a, .ap-btn{
  background: var(--ap-accent) !important; color: var(--ap-navy) !important;
  border: 2px solid var(--ap-accent) !important; border-radius: 8px !important;
  font-weight: 800 !important; box-shadow: var(--ap-shadow-btn);
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.elementor-button[href*='/subscribe']{ padding: 14px 26px !important; font-size: 1rem !important; }
.elementor-button[href*='/subscribe']:hover, .ab-cta > a:hover, .ap-btn:hover{
  background: var(--ap-accent-deep) !important; border-color: var(--ap-accent-deep) !important;
  transform: translateY(-2px); box-shadow: var(--ap-shadow-btn-h);
}
.elementor-button:not([href*='/subscribe']){
  background: transparent !important; color: var(--ap-accent) !important;
  border: 2px solid rgba(217,171,111,.50) !important; border-radius: 8px !important;
  font-weight: 700 !important; transition: background .16s ease, border-color .16s ease;
}
.elementor-button:not([href*='/subscribe']):hover{
  background: rgba(217,171,111,.12) !important; border-color: var(--ap-accent) !important;
}

/* 3 . Sticky header polish */
.ab-header{
  background: rgba(8,18,36,.94) !important;
  -webkit-backdrop-filter: saturate(150%) blur(10px);
  backdrop-filter: saturate(150%) blur(10px);
  border-bottom: 1px solid var(--ap-hair);
  box-shadow: 0 6px 24px rgba(0,0,0,.30);
}
.ab-cta > a{ padding: 9px 18px !important; }
@media (max-width: 900px){
  .ab-header__in{ flex-wrap: wrap; }
  li.ab-cta{ display: block !important; }
}

/* 4 . Intelligence feed as dashboard */
.ap-preview{
  background: var(--ap-slate); border: 1px solid var(--ap-hair);
  border-radius: 12px; overflow: hidden; box-shadow: var(--ap-shadow-card);
}
.ap-preview__bar{
  background: rgba(255,255,255,.04); border-bottom: 1px solid var(--ap-hair);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .72rem; letter-spacing: .14em; text-transform: uppercase;
}
.ap-preview__item{ border-bottom: 1px solid rgba(255,255,255,.06); transition: background .14s ease; }
.ap-preview__item:last-child{ border-bottom: 0; }
.ap-preview__item:hover{ background: rgba(255,255,255,.035); }
.ap-preview__item small{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .08em; text-transform: uppercase; font-size: .68rem; opacity: .55;
}

/* 5 . Action Center cards */
.ap-ac-card{
  position: relative;
  background: linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015));
  border: 1px solid var(--ap-hair); border-radius: 14px;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.ap-ac-card:hover{
  transform: translateY(-4px); border-color: rgba(217,171,111,.55);
  box-shadow: var(--ap-shadow-card);
}
.ap-ac-card[href*='alpr-records-request']{
  border-color: rgba(217,171,111,.60);
  background: linear-gradient(180deg, rgba(217,171,111,.14), rgba(217,171,111,.04));
  box-shadow: 0 14px 38px rgba(217,171,111,.16);
}
.ap-ac-card[href*='alpr-records-request']::before{
  content: 'FEATURED ACTION';
  position: absolute; top: 12px; right: 12px;
  background: var(--ap-accent); color: var(--ap-navy);
  font-size: .60rem; font-weight: 800; letter-spacing: .12em;
  padding: 4px 9px; border-radius: 999px;
}

/* 6 . Signup card lift */
.ap-card.ap-signup{
  border-radius: 14px; border: 1px solid var(--ap-hair);
  box-shadow: var(--ap-shadow-card);
}

/* -- 7 . SPECIFICITY FIX -------------------------------------------
   ap-platform.css targets a.ap-ac-card (0,1,1) which outranks a bare
   .ap-ac-card (0,1,0), so the card surface rules below are raised to
   match and marked !important only where platform CSS competes.      */
a.ap-ac-card{
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.015)) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 14px !important;
}
a.ap-ac-card:hover{
  border-color: rgba(217,171,111,.55) !important;
  box-shadow: var(--ap-shadow-card) !important;
}
a.ap-ac-card[href*='alpr-records-request']{
  background: linear-gradient(180deg, rgba(217,171,111,.16), rgba(217,171,111,.05)) !important;
  border-color: rgba(217,171,111,.60) !important;
  box-shadow: 0 14px 38px rgba(217,171,111,.16) !important;
}
a.ap-ac-card[href*='alpr-records-request']:hover{
  box-shadow: 0 20px 48px rgba(217,171,111,.26) !important;
}

/* -- 8 . Cards adapt to light or dark sections ----------------------
   The Action Center renders on white on some pages and navy on others,
   so surfaces are derived from currentColor rather than hard-coded.  */
a.ap-ac-card{
  background: color-mix(in srgb, currentColor 4%, transparent) !important;
  border: 1px solid color-mix(in srgb, currentColor 18%, transparent) !important;
  box-shadow: 0 2px 10px color-mix(in srgb, currentColor 7%, transparent) !important;
  padding: 22px !important;
}
a.ap-ac-card:hover{
  border-color: rgba(217,171,111,.65) !important;
  box-shadow: 0 16px 38px color-mix(in srgb, currentColor 16%, transparent) !important;
}

/* The in-card CTA reads as a control, not a text link */
.ap-ac-card .ap-cta{
  display: inline-block;
  margin-top: 6px;
  padding: 9px 18px;
  border-radius: 999px;
  background: var(--ap-accent);
  color: var(--ap-navy) !important;
  font-weight: 800;
  transition: background .16s ease;
}
.ap-ac-card:hover .ap-cta{ background: var(--ap-accent-deep); }

/* Featured action earns real estate, not just a tint */
@media (min-width: 900px){
  a.ap-ac-card[href*='alpr-records-request']{ grid-column: span 2; order: -1; }
  a.ap-ac-card[href*='alpr-records-request'] h3{ font-size: 1.5rem; }
}

/* -- 9 . CONTRAST FIX for eyebrows and feed label -------------------
   'color: inherit' failed here: the theme sets text colour per element,
   not per section, so eyebrows inherited dark ink even on navy and went
   invisible. A fixed neutral holds contrast on BOTH surfaces:
     #7c8697 on #ffffff  = 4.0:1     #7c8697 on #081224 = 4.6:1        */
.elementor-widget-heading h6.elementor-heading-title{
  color: #7c8697 !important;
  opacity: 1 !important;
}
.ap-preview__label{
  color: #7c8697 !important;
  opacity: 1 !important;
}
.ap-preview__item small{ color: #7c8697 !important; opacity: 1 !important; }

/* -- 10 . Footer conversion band (the last net) ---------------------- */
.ab-lastcall{
  background: linear-gradient(180deg, var(--ap-navy-2), var(--ap-navy));
  border-top: 1px solid rgba(217,171,111,.28);
  padding: 68px 20px;
  text-align: center;
}
.ab-lastcall__in{ max-width: 620px; margin: 0 auto; }
.ab-lastcall__eyebrow{
  color: #7c8697; font-size: .74rem; font-weight: 700;
  letter-spacing: .18em; text-transform: uppercase; margin: 0 0 10px;
}
.ab-lastcall__h{
  color: #fff; margin: 0 0 12px;
  font-size: clamp(1.7rem, 4vw, 2.6rem); line-height: 1.15;
}
.ab-lastcall__sub{
  color: rgba(255,255,255,.72); margin: 0 auto 26px;
  max-width: 46ch; line-height: 1.55;
}
.ab-lastcall__form .ap-card,
.ab-lastcall__form .ap-signup{
  background: rgba(255,255,255,.05) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  border-radius: 14px !important;
  box-shadow: var(--ap-shadow-card) !important;
}
.ab-lastcall__form input[type='email'],
.ab-lastcall__form input[type='text']{
  border-radius: 8px;
}
@media (max-width: 640px){
  .ab-lastcall{ padding: 48px 16px; }
}

/* -- 11 . Remaining non-clickable gold ------------------------------
   Platform eyebrows and the footer tagline are labels, not controls,
   so they follow the same rule as the Elementor kickers.            */
.ap-eyebrow{ color: #7c8697 !important; }
.ab-footer__tag{ color: #7c8697 !important; }

/* -- 12 . Three pillars --------------------------------------------
   Icons are drawn with CSS (inline SVG masks) rather than an icon
   library, so the section stays light and does not pull Font Awesome. */
.ap-pillars__intro{
  text-align: center; max-width: 60ch; margin: 0 auto 8px;
  color: var(--ap-muted); font-size: 1.05rem; line-height: 1.6;
}
.ap-pillar{ padding: 4px 6px 0; }
.ap-pillar::before{
  content: ''; display: block;
  width: 34px; height: 34px; margin-bottom: 14px;
  background: var(--ap-accent-deep);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-size: contain;  mask-size: contain;
}
.ap-pillar--privacy::before{
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 1 3 5v6c0 5.6 3.8 10.7 9 12 5.2-1.3 9-6.4 9-12V5l-9-4Zm0 6a2.5 2.5 0 0 1 2.5 2.5c0 1-.6 1.9-1.5 2.3V15h-2v-3.2c-.9-.4-1.5-1.3-1.5-2.3A2.5 2.5 0 0 1 12 7Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 1 3 5v6c0 5.6 3.8 10.7 9 12 5.2-1.3 9-6.4 9-12V5l-9-4Zm0 6a2.5 2.5 0 0 1 2.5 2.5c0 1-.6 1.9-1.5 2.3V15h-2v-3.2c-.9-.4-1.5-1.3-1.5-2.3A2.5 2.5 0 0 1 12 7Z'/%3E%3C/svg%3E");
}
.ap-pillar--property::before{
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 3 2 11h3v10h6v-6h2v6h6V11h3L12 3Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 3 2 11h3v10h6v-6h2v6h6V11h3L12 3Z'/%3E%3C/svg%3E");
}
.ap-pillar--pocketbook::before{
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M3 6a2 2 0 0 1 2-2h12v2H5v12h14v-4h-5a2 2 0 0 1 0-4h5a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6Zm11 6h6v0h-6Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M3 6a2 2 0 0 1 2-2h12v2H5v12h14v-4h-5a2 2 0 0 1 0-4h5a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6Zm11 6h6v0h-6Z'/%3E%3C/svg%3E");
}
.ap-pillar h3{
  margin: 0 0 8px; font-size: 1.3rem; line-height: 1.2;
  color: var(--ap-ink);
}
.ap-pillar p{ margin: 0 0 12px; color: var(--ap-muted); line-height: 1.6; }
.ap-pillar__link a{
  color: var(--ap-accent-deep); font-weight: 700; text-decoration: none;
  border-bottom: 2px solid transparent; transition: border-color .16s ease;
}
.ap-pillar__link a:hover{ border-bottom-color: var(--ap-accent-deep); }
@media (max-width: 880px){
  .ap-pillar{ padding-bottom: 8px; }
}

/* -- 13 . PILLAR HEADING FIX ----------------------------------------
   The Elementor kit paints h2/h3 a light blue that vanishes on the
   paper background, so headings in this section are pinned to ink.  */
.e-con:has(.ap-pillar) h2,
.e-con:has(.ap-pillar) .elementor-heading-title{
  color: var(--ap-ink) !important;
}
.ap-pillar h3{ color: var(--ap-ink) !important; }

/* -- 14 . HERO SPLIT -------------------------------------------------
   Elementor's per-container width setting would not survive CSS
   regeneration on this host, so the 50/50 is pinned here instead.
   NOTE: these are Elementor element ids. If the hero is ever rebuilt
   from scratch the ids change - update them here, or delete this block
   and set the widths in the editor once the host is behaving.       */
@media (min-width: 1025px){
  .elementor-element-01a9021 > .e-con-inner{
    flex-wrap: nowrap !important;
    align-items: center;
    gap: 44px;
  }
  .elementor-element-13b754c{ width: 54% !important; max-width: 54% !important; }
  .elementor-element-c6c15ab{ width: 42% !important; max-width: 42% !important; }
}
/* the hero capture card earns a lift so it reads as the primary action */
.elementor-element-c6c15ab .ap-card,
.elementor-element-c6c15ab .ap-signup{
  box-shadow: 0 22px 54px rgba(3,8,18,.46) !important;
  border: 1px solid rgba(217,171,111,.30) !important;
  border-radius: 14px !important;
}

/* -- 15 . BROADCAST BLOCK -------------------------------------------
   The two child columns inherited row direction on creation, which
   squeezed the copy into slivers. Pinned to column here.           */
.elementor-element-4df8cc5 .e-con-inner > .e-con{
  align-items: center;
  gap: 40px;
}
.elementor-element-4df8cc5 .e-con-inner > .e-con > .e-con{
  flex-direction: column !important;
  justify-content: center;
}
/* dark section: headings go light, kicker stays neutral */
.elementor-element-4df8cc5 h2.elementor-heading-title{ color: #ffffff !important; }
.elementor-element-4df8cc5 h6.elementor-heading-title{ color: #7c8697 !important; }
.ap-broadcast__intro{ color: rgba(255,255,255,.72); line-height: 1.6; }
.elementor-element-4df8cc5 .ap-live-frame{
  border-radius: 12px; overflow: hidden;
  box-shadow: 0 22px 54px rgba(3,8,18,.5);
  border: 1px solid rgba(255,255,255,.12);
}
.elementor-element-4df8cc5 .ap-hint{ color: rgba(255,255,255,.55); font-size: .9rem; }
@media (max-width: 1024px){
  .elementor-element-4df8cc5 .e-con-inner > .e-con{ flex-wrap: wrap; }
}

/* -- 16 . PILLAR GRID + MOBILE CTA ---------------------------------- */
.ap-pillars{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 38px;
  margin-top: 34px;
  text-align: left;
}
@media (max-width: 880px){
  .ap-pillars{ grid-template-columns: 1fr; gap: 30px; }
}

/* The header nav collapses to a burger under 900px, which hid the only
   persistent Subscribe control. This standalone button fills that gap. */
.ab-cta-mobile{ display: none; }
@media (max-width: 900px){
  .ab-cta-mobile{
    display: inline-block;
    margin-left: auto;
    margin-right: 10px;
    padding: 9px 16px;
    border-radius: 8px;
    background: var(--ap-accent);
    color: var(--ap-navy) !important;
    font-weight: 800;
    font-size: .92rem;
    text-decoration: none;
    white-space: nowrap;
    box-shadow: var(--ap-shadow-btn);
  }
  .ab-cta-mobile:hover{ background: var(--ap-accent-deep); }
}
