/*!
 * ps-system.css — Powhatan Shores HOA design system
 * Single source of truth for the WordPress + Astra child theme.
 * Enqueue AFTER the Fraunces/Outfit fonts (see functions.php snippet in the
 * design-direction doc). Apply classes via the block "Additional CSS class(es)"
 * field. Tokens match the approved home-page mockup pixel-for-pixel.
 *
 * SECTIONS
 *   1. Tokens (:root)
 *   2. Base / typography
 *   3. Layout (wrap, section, alternating backgrounds)
 *   4. Components (eyebrow, card, button, photo-scrim)
 *   5. Navigation
 *   6. Hero + inner-page hero
 *   7. Weather / marine / tides feature card
 *   8. Intro split, amenity grid, events, news, resources, CTA, footer
 *   9. Plugin overrides (The Events Calendar, WPForms, forms)
 *  10. Motion + accessibility
 */

/* ============================================================
   1. TOKENS
   ============================================================ */
:root{
  /* Brand */
  --ps-ink:#071620;        /* near-black navy — primary text, dark sections */
  --ps-navy:#12384f;        /* mid navy — pills, solid buttons, secondary surfaces */
  --ps-blue:#1e6f99;        /* heron-blue — links, active states, accents */
  --ps-blue-soft:#dbeafc;   /* pill / icon-tile background tint */
  --ps-butter:#f6d955;      /* primary CTA yellow */
  --ps-butter-ink:#071620;  /* text on yellow */

  /* Neutrals */
  --ps-paper:#ffffff;
  --ps-cream:#fbf9f2;       /* warm page background — NOT pure white */
  --ps-mist:#eef4f8;        /* soft blue alternating-section background */
  --ps-line:rgba(7,22,32,.10);
  --ps-muted:#4a5a66;       /* secondary text */

  /* Card system (measured from live landing page) */
  --ps-card-bg:rgba(255,255,255,.88);
  --ps-radius:24px;
  --ps-radius-sm:14px;
  --ps-shadow:0 18px 45px rgba(7,22,32,.16);
  --ps-shadow-sm:0 6px 18px rgba(7,22,32,.10);

  /* Buttons */
  --ps-btn-radius:999px;
  --ps-btn-shadow:0 14px 28px rgba(246,217,85,.28);

  /* Type */
  --ps-display:"Fraunces",Georgia,"Times New Roman",serif;
  --ps-body:"Outfit","Segoe UI",system-ui,-apple-system,sans-serif;

  /* Rhythm */
  --ps-section-y:clamp(48px,7vw,92px);
  --ps-maxw:1180px;
}

/* ============================================================
   2. BASE / TYPOGRAPHY
   Scope global element styles under .ps-scope if you do NOT want
   them affecting wp-admin or plugin chrome. For a full-site brand,
   applying to body is fine — shown here site-wide.
   ============================================================ */
body{
  font-family:var(--ps-body);
  background:var(--ps-cream);
  color:var(--ps-ink);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.ps-scope h1,.ps-scope h2,.ps-scope h3,.ps-scope h4,
h1.ps-display,h2.ps-display,.ps-display,
.entry-content h1,.entry-content h2,.entry-content h3{
  font-family:var(--ps-display);
  font-weight:600;
  letter-spacing:-.01em;
  line-height:1.1;
  color:var(--ps-ink);
}
h1,.ps-h1{font-size:clamp(2.1rem,4vw,3.4rem);line-height:1.08}
h2,.ps-h2{font-size:clamp(1.7rem,3vw,2.5rem)}
h3,.ps-h3{font-size:clamp(1.2rem,2vw,1.5rem)}
p,li{color:var(--ps-muted);line-height:1.65}
a{color:var(--ps-blue);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;height:auto;display:block}

/* ============================================================
   3. LAYOUT
   ============================================================ */
.ps-wrap{max-width:var(--ps-maxw);margin-inline:auto;padding-inline:clamp(20px,4vw,40px)}
.ps-section{padding-block:var(--ps-section-y)}
.ps-section--mist{background:var(--ps-mist)}
.ps-section--ink{background:var(--ps-ink)}
.ps-section--cream{background:var(--ps-cream)}
/* Alternate cream/mist down the page for rhythm; ink for CTA bands. */

.ps-head{max-width:62ch}
.ps-head h2{margin:0}
.ps-head p{margin-top:.7rem}

/* ============================================================
   4. COMPONENTS
   ============================================================ */
/* Eyebrow / section label pill — standardize EVERY label to this */
.ps-eyebrow{
  display:inline-block;font-family:var(--ps-body);font-weight:700;
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ps-navy);background:var(--ps-blue-soft);
  padding:.45em .9em;border-radius:999px;margin-bottom:1rem;
}

/* Card */
.ps-card{
  background:var(--ps-card-bg);border-radius:var(--ps-radius);
  box-shadow:var(--ps-shadow);padding:clamp(24px,3vw,34px);
  border:1px solid rgba(255,255,255,.6);
}
.ps-card--flat{box-shadow:var(--ps-shadow-sm)}

/* Buttons */
.ps-btn{
  display:inline-flex;align-items:center;gap:.5em;
  font-family:var(--ps-body);font-weight:700;font-size:1rem;line-height:1;
  padding:.72em 1.3em;border-radius:var(--ps-btn-radius);
  border:0;cursor:pointer;text-decoration:none;
  transition:transform .15s ease,box-shadow .15s ease;
}
.ps-btn:hover{transform:translateY(-2px);text-decoration:none}
.ps-btn--primary{background:var(--ps-butter);color:var(--ps-butter-ink);box-shadow:var(--ps-btn-shadow)}
.ps-btn--ghost{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.55);backdrop-filter:blur(6px)}
.ps-btn--solid{background:var(--ps-navy);color:#fff}
.ps-btn--sm{padding:.45em .9em;font-size:.85rem}

/* Text-on-photo scrim — use on ANY band with text over an image.
   Fixes the landing-page "Board Meetings" invisible-heading bug. */
.ps-photo-band{position:relative}
.ps-photo-band::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(7,22,32,.45),rgba(7,22,32,.65));
}
.ps-photo-band>*{position:relative}
.ps-photo-band,.ps-photo-band h1,.ps-photo-band h2,
.ps-photo-band h3,.ps-photo-band p{color:#f8fafc}
.ps-photo-band .ps-eyebrow{background:rgba(219,234,252,.22);color:#eaf2f7;backdrop-filter:blur(4px)}

/* Generic icon tile — replaces emoji on inner pages */
.ps-icon{
  width:56px;height:56px;border-radius:16px;background:var(--ps-blue-soft);
  color:var(--ps-blue);display:grid;place-items:center;font-size:1.6rem;margin-bottom:1.1rem;
}

/* ============================================================
   5. NAVIGATION  (Astra header; adapt selectors to the live markup)
   ============================================================ */
.ps-nav{
  position:sticky;top:0;z-index:50;
  background:rgba(251,249,242,.82);backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid var(--ps-line);
}
.ps-nav__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:14px}
.ps-nav__brand{
  display:flex;align-items:center;gap:12px;font-family:var(--ps-display);
  font-weight:600;font-size:1rem;line-height:1.15;color:var(--ps-ink);max-width:340px;
}
.ps-nav__brand:hover{text-decoration:none}
.ps-nav__links{display:flex;gap:26px;align-items:center;font-weight:500;font-size:.95rem}
.ps-nav__links a{color:var(--ps-ink)}
.ps-nav__links a:hover,.ps-nav__links a.active{color:var(--ps-blue);text-decoration:none}
@media(max-width:900px){.ps-nav__links{display:none}}
/* In Astra, prefer setting the logo + menu via Customizer and only
   layering these accent rules on top — don't rebuild the whole header. */

/* ============================================================
   6. HERO + INNER-PAGE HERO
   ============================================================ */
.ps-hero{
  min-height:min(80vh,660px);display:flex;align-items:center;
  background:#0a2230 center 60%/cover no-repeat; /* set image inline per page */
}
.ps-hero__inner{max-width:64ch}
.ps-hero h1{text-shadow:0 2px 24px rgba(0,0,0,.25)}
.ps-hero__sub{font-size:clamp(1.05rem,1.7vw,1.32rem);max-width:52ch;margin-top:1.1rem}
.ps-hero__cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1.9rem}

/* Slim hero for inner pages (About, News, etc.) */
.ps-pagehero{padding-block:clamp(56px,8vw,110px);background:var(--ps-navy) center/cover no-repeat}
.ps-pagehero h1{margin:0}

/* ============================================================
   7. WEATHER / MARINE / TIDES FEATURE CARD
   The signature, return-for-value element. Lives directly under
   the hero and overlaps up into it.
   ============================================================ */
.ps-weather{margin-top:clamp(-70px,-6vw,-56px);position:relative;z-index:5}
.ps-weather__card{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:0}
.ps-weather__col{padding:clamp(18px,2vw,26px) clamp(20px,2.4vw,32px)}
.ps-weather__col + .ps-weather__col{border-left:1px solid var(--ps-line)}
.ps-weather__label{
  display:flex;align-items:center;gap:8px;font-weight:700;font-size:.72rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ps-blue);margin-bottom:.7rem;
}
.ps-weather__now{display:flex;align-items:flex-start;gap:14px}
.ps-weather__temp{font-family:var(--ps-display);font-size:3.2rem;line-height:.9;color:var(--ps-ink)}
.ps-weather__cond{font-weight:600;color:var(--ps-ink);font-size:1rem}
.ps-weather__meta{color:var(--ps-muted);font-size:.86rem;line-height:1.5;margin-top:.2rem}

/* tide + marine line items share a layout */
.ps-tide,.ps-marine{
  display:flex;align-items:center;justify-content:space-between;
  font-size:.92rem;padding:.32rem 0;border-bottom:1px dashed var(--ps-line);
}
.ps-tide:last-child,.ps-marine:last-child{border-bottom:0}
.ps-tide__t{color:var(--ps-ink);font-weight:500}
.ps-tide__v,.ps-marine span:first-child{color:var(--ps-muted)}
.ps-marine span:last-child{color:var(--ps-ink);font-weight:500}
.ps-tide .up{color:var(--ps-blue)}
.ps-tide .dn{color:#b4814b}

/* sunrise / sunset / daylight strip — full width under the 3 columns */
.ps-weather__sun{
  grid-column:1/-1;display:flex;justify-content:center;gap:32px;flex-wrap:wrap;
  padding:12px 0 0;margin-top:4px;border-top:1px solid var(--ps-line);
}
.ps-weather__sun span{display:inline-flex;align-items:center;gap:7px;font-size:.9rem;color:var(--ps-ink);font-weight:500}
.ps-weather__sun small{color:var(--ps-muted);font-weight:400}
.ps-weather__foot{
  grid-column:1/-1;text-align:center;color:var(--ps-muted);font-size:.78rem;
  padding:10px 0 0;margin-top:6px;border-top:1px solid var(--ps-line);
}
@media(max-width:820px){
  .ps-weather{margin-top:-40px}
  .ps-weather__card{grid-template-columns:1fr}
  .ps-weather__col + .ps-weather__col{border-left:0;border-top:1px solid var(--ps-line)}
}

/* ============================================================
   8. CONTENT SECTIONS
   ============================================================ */
/* Intro split (text + photo) */
.ps-intro{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,4vw,56px);align-items:center}
.ps-intro__photo{
  border-radius:var(--ps-radius);overflow:hidden;box-shadow:var(--ps-shadow);
  aspect-ratio:5/4;background:#26506a center/cover no-repeat;
}
.ps-intro h2{margin-bottom:1rem}
.ps-intro p + p{margin-top:1rem}
@media(max-width:820px){
  .ps-intro{grid-template-columns:1fr}
  .ps-intro__photo{order:-1;aspect-ratio:16/10}
}

/* 3-up grids (amenities, etc.) */
.ps-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.4vw,30px);margin-top:2.4rem}
@media(max-width:860px){.ps-grid3{grid-template-columns:1fr}}
.ps-amen h3{margin-bottom:.5rem}
.ps-amen p{font-size:.96rem}

/* Events row */
.ps-ev-row{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.2vw,28px);margin-top:2.2rem}
@media(max-width:860px){.ps-ev-row{grid-template-columns:1fr}}
.ps-ev{display:flex;gap:16px;align-items:flex-start;text-decoration:none}
.ps-ev:hover{text-decoration:none}
.ps-ev__date{flex:none;width:64px;text-align:center;background:var(--ps-navy);color:#fff;border-radius:14px;padding:10px 6px;line-height:1.05}
.ps-ev__mo{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;opacity:.85}
.ps-ev__day{font-family:var(--ps-display);font-size:1.7rem}
.ps-ev__t{font-family:var(--ps-display);font-weight:600;color:var(--ps-ink);font-size:1.08rem;line-height:1.2}
.ps-ev__time{color:var(--ps-muted);font-size:.86rem;margin-top:.25rem}
.ps-link{display:inline-flex;align-items:center;gap:.4em;margin-top:2rem;font-weight:600;color:var(--ps-blue)}

/* News grid */
.ps-news-row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,2.4vw,30px);margin-top:2.2rem}
@media(max-width:760px){.ps-news-row{grid-template-columns:1fr}}
.ps-news__thumb{aspect-ratio:16/9;border-radius:var(--ps-radius-sm);background:var(--ps-mist) center/cover no-repeat;margin-bottom:1rem}
.ps-news__cat{font-weight:700;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ps-navy);background:var(--ps-blue-soft);padding:.35em .8em;border-radius:999px;display:inline-block;margin-bottom:.8rem}
.ps-news h3{margin-bottom:.4rem}
.ps-news time{color:var(--ps-muted);font-size:.85rem}
.ps-news p{margin-top:.7rem;font-size:.95rem}

/* Resources teaser grid (home) + can be reused on the Resources page */
.ps-res-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.8vw,22px);margin-top:2.2rem}
@media(max-width:760px){.ps-res-grid{grid-template-columns:1fr 1fr}}
.ps-res__item{display:flex;flex-direction:column;gap:8px;text-decoration:none;padding:18px;border-radius:var(--ps-radius-sm);background:var(--ps-card-bg);box-shadow:var(--ps-shadow-sm);border:1px solid rgba(255,255,255,.6);transition:transform .15s ease}
.ps-res__item:hover{transform:translateY(-3px);text-decoration:none}
.ps-res__item b{font-family:var(--ps-display);font-weight:600;color:var(--ps-ink);font-size:1.05rem}
.ps-res__item span{color:var(--ps-muted);font-size:.85rem;line-height:1.45}

/* Board roster (About) — two-card "name … role" pattern */
.ps-roster{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,2.4vw,30px)}
@media(max-width:760px){.ps-roster{grid-template-columns:1fr}}
.ps-roster h3{margin-bottom:.6rem}
.ps-roster__row{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--ps-line)}
.ps-roster__row:last-child{border-bottom:0}
.ps-roster__row b{color:var(--ps-ink);font-weight:600}
.ps-roster__row span{color:var(--ps-muted);text-align:right}

/* Documents rows */
.ps-doc-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--ps-line)}
.ps-doc-row:last-child{border-bottom:0}
.ps-doc-row__name{display:flex;align-items:center;gap:12px;font-weight:600;color:var(--ps-ink)}
.ps-chip-soon{font-size:.8rem;color:var(--ps-muted);background:var(--ps-mist);padding:.35em .8em;border-radius:999px;white-space:nowrap}

/* CTA band (ink) */
.ps-cta{text-align:center}
.ps-cta h2{color:#fff}
.ps-cta p{color:#c4d4de;max-width:46ch;margin:1rem auto 0}
.ps-cta__btns{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;margin-top:1.9rem}

/* Footer (replaces "Powered by Astra") */
.ps-foot{background:var(--ps-ink);color:#cdd9e1;padding-block:46px;text-align:center}
.ps-foot__brand{display:flex;align-items:center;justify-content:center;gap:12px;font-family:var(--ps-display);color:#fff;font-size:1.15rem;margin-bottom:.6rem}
.ps-foot a{color:var(--ps-butter)}
.ps-foot__small{font-size:.85rem;opacity:.7;margin-top:.4rem}

/* ============================================================
   9. PLUGIN OVERRIDES
   ============================================================ */
/* --- The Events Calendar: bring on-palette. Scope to calendar page. --- */
.tribe-events .tribe-events-c-btn,
.tribe-events button[type="submit"],
.tribe-common .tribe-common-c-btn{
  background:var(--ps-navy)!important;border-radius:var(--ps-btn-radius)!important;
  border:0!important;box-shadow:none!important;
}
.tribe-events .tribe-events-calendar-list__event-row{
  background:var(--ps-card-bg);border-radius:var(--ps-radius-sm);
  box-shadow:var(--ps-shadow-sm);padding:18px 22px;margin-bottom:14px;border:0;
}
.tribe-events .tribe-events-calendar-list__month-separator{font-family:var(--ps-display);color:var(--ps-ink)}
.tribe-events-calendar-list__event-date-tag{background:var(--ps-blue-soft);border-radius:12px;color:var(--ps-navy)}
.tribe-events a,.tribe-events .tribe-event-url{color:var(--ps-blue)}
.tribe-events-c-view-selector__list-item-link--active{box-shadow:inset 0 -2px 0 var(--ps-butter)}

/* --- Forms (WPForms or the custom PHP plugin form). Keep field
       names/handlers intact — style only. --- */
.ps-form input,.ps-form select,.ps-form textarea,
.wpforms-field input,.wpforms-field select,.wpforms-field textarea{
  width:100%;padding:.8em 1em;border-radius:var(--ps-radius-sm);
  border:1px solid var(--ps-line);background:#fff;font-family:var(--ps-body);font-size:1rem;
}
.ps-form input:focus,.ps-form select:focus,.ps-form textarea:focus,
.wpforms-field input:focus,.wpforms-field textarea:focus{
  outline:none;border-color:var(--ps-blue);box-shadow:0 0 0 3px rgba(30,111,153,.15);
}
.ps-form label,.wpforms-field-label{font-weight:600;color:var(--ps-ink);display:block;margin:.9rem 0 .35rem}
.wpforms-submit{background:var(--ps-butter)!important;color:var(--ps-butter-ink)!important;
  border:0!important;border-radius:var(--ps-btn-radius)!important;
  padding:.72em 1.3em!important;font-weight:700!important;box-shadow:var(--ps-btn-shadow)!important}

/* ============================================================
   10. MOTION + ACCESSIBILITY
   ============================================================ */
.ps-reveal{opacity:0;transform:translateY(14px);animation:ps-fade-up .6s ease forwards}
.ps-reveal:nth-child(2){animation-delay:.08s}
.ps-reveal:nth-child(3){animation-delay:.16s}
@keyframes ps-fade-up{to{opacity:1;transform:none}}

:focus-visible{outline:2px solid var(--ps-blue);outline-offset:2px}

@media(prefers-reduced-motion:reduce){
  .ps-btn,.ps-res__item,.ps-card{transition:none!important}
  .ps-btn:hover,.ps-res__item:hover{transform:none!important}
  .ps-reveal{opacity:1;transform:none;animation:none}
  html{scroll-behavior:auto}
}
