/*
Theme Name: North Idaho Young Republicans
Theme URI: https://niyr.org
Author: North Idaho Young Republicans
Author URI: https://niyr.org
Description: Official one-page theme for the North Idaho Young Republicans (NIYR.org). Federal-style design — Public Sans and Libre Caslon, navy/crimson/gold palette. SEO-optimized with structured data, FAQ schema, Open Graph tags, and semantic markup.
Version: 1.2.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: niyr
Tags: one-column, custom-menu, blog
*/

:root{
    color-scheme: light only;
    --navy:#1A2740;
    --navy-deep:#111C30;
    --crimson:#9E1B32;
    --gold:#B08D3E;
    --ink:#1A2740;
    --rule:#DDE1E8;
    --pad:64px;
  }
  @media (min-width:760px){ :root{ --pad:96px; } }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;background:#FFFFFF;}
  @media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto;} }
  body{
    background:#FFFFFF;
    color:var(--ink);
    font-family:"Public Sans", -apple-system, "Segoe UI", sans-serif;
    font-size:18px;
    line-height:1.65;
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%;display:block;}
  a{color:var(--crimson);}
  a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible{
    outline:3px solid var(--gold); outline-offset:2px;
  }

  /* ---- sticky nav ---- */
  .topnav{
    position:sticky;top:0;z-index:60;
    background:var(--navy-deep);
    border-bottom:1px solid #0A1322;
  }
  .topnav ul{
    list-style:none;
    display:flex;justify-content:center;flex-wrap:wrap;
  }
  .topnav a{
    display:block;
    padding:14px 13px;
    font-size:11.5px;font-weight:600;
    letter-spacing:.22em;text-transform:uppercase;
    color:#DDE2EC;text-decoration:none;
  }
  .topnav a:hover{color:#fff;background:#1A2740;}
  @media (max-width:420px){ .topnav a{padding:13px 9px;letter-spacing:.16em;} }

  /* ---- hero / masthead ---- */
  .hero{
    background:#FFFFFF;
    border-bottom:1px solid var(--rule);
    text-align:center;
    padding:56px 24px 68px;
  }
  .seal{
    width:132px;height:132px;border-radius:50%;
    margin:0 auto 18px;
    box-shadow:0 0 0 1px var(--rule);
  }
  .org-eyebrow{
    font-size:11.5px;letter-spacing:.32em;text-transform:uppercase;
    color:var(--gold);font-weight:600;margin-bottom:8px;
  }
  .org-name{
    font-family:"Libre Caslon Display", serif;
    font-weight:400;
    font-size:clamp(34px, 6vw, 52px);
    color:var(--navy);
    line-height:1.1;
  }
  .star-rule{
    display:flex;align-items:center;justify-content:center;
    gap:18px;margin:26px auto 22px;max-width:320px;
  }
  .star-rule::before,.star-rule::after{
    content:"";flex:1;height:1px;background:var(--gold);
  }
  .star-rule svg{width:15px;height:15px;fill:var(--crimson);flex:none;}
  .motto{
    font-family:"Libre Caslon Display", serif;
    font-size:clamp(26px, 4.6vw, 40px);
    color:var(--navy);
    line-height:1.2;
    margin-bottom:18px;
  }
  .motto em{font-style:normal;color:var(--crimson);}
  .hero .lede{
    font-family:"Libre Caslon Text", serif;
    font-size:clamp(18px, 2.4vw, 21px);
    line-height:1.6;
    max-width:600px;margin:0 auto 30px;
    text-align:left;
  }
  @media (max-width:560px){ .hero .lede{text-align:center;} }
  .cta-btn{
    display:inline-block;
    background:var(--crimson);color:#fff;text-decoration:none;
    border:none;border-radius:999px;
    padding:16px 42px;
    font-family:"Public Sans",sans-serif;
    font-size:13.5px;font-weight:700;
    letter-spacing:.26em;text-transform:uppercase;
    cursor:pointer;
  }
  .cta-btn:hover{background:#B32340;}

  /* ---- shared section chrome ---- */
  .wrap{max-width:860px;margin:0 auto;padding:0 24px;}
  section{padding:var(--pad) 0;background:#FFFFFF;}
  .eyebrow{
    text-align:center;
    font-size:12px;letter-spacing:.3em;text-transform:uppercase;
    color:var(--crimson);font-weight:600;margin-bottom:12px;
  }
  h2{
    font-family:"Libre Caslon Display", serif;
    font-weight:400;
    font-size:clamp(28px, 4.4vw, 40px);
    color:var(--navy);
    text-align:center;
    line-height:1.2;
    margin-bottom:22px;
  }
  .lede{
    font-size:18px;
    line-height:1.7;
    color:var(--ink);
    max-width:640px;margin:0 auto;
  }

  /* ---- what we do ---- */
  #work{background:#F4F6F9;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);}
  .pillars{
    display:grid;grid-template-columns:repeat(3,1fr);
    gap:0;margin-top:40px;
  }
  .pillar{padding:6px 30px;border-left:1px solid var(--rule);}
  .pillar:first-child{border-left:none;}
  .pillar h3{
    font-family:"Libre Caslon Display", serif;
    font-weight:400;font-size:23px;color:var(--navy);
    margin-bottom:10px;
  }
  .pillar h3::after{
    content:"";display:block;width:34px;height:2px;
    background:var(--crimson);margin-top:10px;
  }
  .pillar p{font-size:16px;color:#33405A;}
  @media (max-width:720px){
    .pillars{grid-template-columns:1fr;}
    .pillar{border-left:none;border-top:1px solid var(--rule);padding:26px 4px;}
    .pillar:first-child{border-top:none;padding-top:0;}
  }

  /* ---- who's invited ---- */
  #invited .lede{margin-bottom:22px;}
  .invite-list{
    list-style:none;
    max-width:640px;margin:0 auto;
    columns:2;column-gap:40px;
  }
  @media (max-width:480px){ .invite-list{columns:1;} }
  .invite-list li{
    padding:7px 0 7px 26px;
    position:relative;
    font-size:17px;font-weight:500;color:var(--navy);
    break-inside:avoid;
  }
  .invite-list li::before{
    content:"★";
    position:absolute;left:0;top:7px;
    color:var(--gold);font-size:13px;
  }

  /* ---- FAQ ---- */
  #faq{background:#F4F6F9;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);}
  .faq-list{max-width:640px;margin:34px auto 0;}
  .faq-list details{
    border-top:1px solid var(--rule);
    padding:4px 0;
  }
  .faq-list details:last-child{border-bottom:1px solid var(--rule);}
  .faq-list summary{
    cursor:pointer;
    list-style:none;
    padding:16px 34px 16px 2px;
    font-weight:600;font-size:17px;color:var(--navy);
    position:relative;
  }
  .faq-list summary::-webkit-details-marker{display:none;}
  .faq-list summary::after{
    content:"+";
    position:absolute;right:6px;top:50%;transform:translateY(-50%);
    color:var(--crimson);font-size:22px;font-weight:400;
  }
  .faq-list details[open] summary::after{content:"–";}
  .faq-list .a{padding:0 2px 18px;font-size:16.5px;color:#33405A;}

  /* ---- join form ---- */
  #join{background:var(--navy);color:#EDF0F5;}
  #join .eyebrow{color:var(--gold);}
  #join h2{color:#fff;}
  #join .lede{color:#C9CFDC;text-align:center;font-size:17.5px;}
  #join .lede b{color:#fff;font-weight:600;}
  form{max-width:620px;margin:38px auto 0;}
  .field{margin-bottom:18px;}
  .row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
  .row .field{margin-bottom:18px;}
  @media (max-width:560px){.row{grid-template-columns:1fr;gap:0;}}
  label{
    display:block;
    font-size:11.5px;font-weight:600;
    letter-spacing:.2em;text-transform:uppercase;
    color:#AEB8CC;margin-bottom:6px;
  }
  label .req{color:var(--gold);}
  input[type=text],input[type=email],input[type=tel],select{
    width:100%;
    background:#FFFFFF;
    border:1px solid #0C1524;
    border-radius:2px;
    padding:15px 14px;
    font-family:"Public Sans",sans-serif;
    font-size:16px;color:var(--ink);
  }
  select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%231A2740' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;}
  .checks{display:grid;grid-template-columns:1fr 1fr;gap:11px 18px;margin-top:4px;}
  @media (max-width:560px){.checks{grid-template-columns:1fr;}}
  .checks label{
    display:flex;align-items:center;gap:10px;
    font-size:15px;font-weight:500;letter-spacing:.02em;text-transform:none;
    color:#EDF0F5;margin:0;cursor:pointer;
  }
  .checks input{width:17px;height:17px;accent-color:var(--crimson);flex:none;}
  .consent{margin-top:24px;}
  .consent-label{
    display:flex;align-items:flex-start;gap:12px;
    font-size:14px;font-weight:400;letter-spacing:.01em;text-transform:none;
    color:#C9CFDC;line-height:1.6;cursor:pointer;
  }
  .consent-label input{width:18px;height:18px;accent-color:var(--crimson);flex:none;margin-top:3px;}
  .consent-label a{color:#fff;}
  .join-btn{
    display:block;width:100%;
    margin-top:28px;
    background:var(--crimson);
    color:#fff;border:none;border-radius:999px;
    padding:17px 20px;
    font-family:"Public Sans",sans-serif;
    font-size:14px;font-weight:700;
    letter-spacing:.28em;text-transform:uppercase;
    cursor:pointer;
  }
  .join-btn:hover{background:#B32340;}
  .fine-print{margin-top:18px;font-size:13px;line-height:1.7;color:#AEB8CC;text-align:center;}
  .form-note{margin-top:14px;text-align:center;font-size:14px;color:#C9CFDC;}
  .form-note a{color:#fff;}
  .confirm{display:none;margin-top:24px;text-align:center;font-family:"Libre Caslon Text",serif;font-size:18px;color:var(--gold);}

  /* ---- footer ---- */
  footer{
    background:var(--navy-deep);
    color:#8D99B0;
    text-align:center;
    padding:44px 24px 40px;
    font-size:13.5px;
  }
  footer .seal{width:64px;height:64px;box-shadow:0 0 0 1px #2A3852;margin-bottom:16px;}
  footer .fname{
    font-family:"Libre Caslon Display",serif;
    color:#DDE2EC;font-size:17px;letter-spacing:.04em;margin-bottom:6px;
  }
  footer .tagline{color:#AEB8CC;margin-bottom:4px;}
  footer .contact a{color:#DDE2EC;}
  footer .site{margin-top:6px;letter-spacing:.14em;text-transform:uppercase;font-size:11.5px;color:#AEB8CC;}
  footer .disclaimer{max-width:560px;margin:14px auto 0;line-height:1.7;}

  /* ---- floating join pill ---- */
  .float-join{
    position:fixed;left:16px;bottom:16px;z-index:50;
    background:var(--crimson);color:#fff;text-decoration:none;
    border-radius:999px;padding:10px 18px;
    font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
    box-shadow:0 4px 14px rgba(17,28,48,.35);
    display:none;
  }
  .float-join.show{display:block;}

/* ---- legal page ---- */
.legal h2{font-size:23px;text-align:left;margin:38px 0 10px;}
.legal h2:first-child{margin-top:0;}
.legal p,.legal ul{margin-bottom:14px;font-size:17px;}
.legal ul{padding-left:22px;}
.legal li{margin-bottom:6px;}
.legal strong{color:var(--navy);}
