/*
Theme Name: ZAFOD
Theme URI: https://zafod.org.zm
Author: ZAFOD
Description: Custom WordPress theme for the Zambia Federation of Disability Organisations (ZAFOD), built to WCAG 2.1 AA. Homepage carousel, Who We Are, latest releases and publications are all managed from the dashboard. Elementor-compatible.
Version: 1.1.0
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: zafod
Tags: accessibility-ready, custom-logo, custom-menu, featured-images, translation-ready, threaded-comments
*/

/* ==========================================================================
   1. DESIGN TOKENS
   Colours sampled from the official ZAFOD logo (#D60107 red).
   White on #D60107 = 5.4:1 (passes WCAG AA for all text sizes).
   ========================================================================== */
:root{
  --zf-red:        #D60107;
  --zf-red-dark:   #970005;
  --zf-red-tint:   #FBE9E8;
  --zf-ink:        #1C1917;
  --zf-ink-soft:   #4B4340;
  --zf-paper:      #FFFFFF;
  --zf-paper-warm: #F7F2EF;
  --zf-border:     #E7DCD8;
  --zf-focus:      #970005;
  --zf-on-red:     #FFFFFF;
  --zf-footer-bg:  #1C1917;
  --zf-footer-ink: #E9E4E2;

  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;
  --shadow-sm: 0 1px 2px rgba(28,25,23,.06), 0 2px 8px rgba(28,25,23,.06);
  --shadow-md: 0 6px 24px rgba(28,25,23,.12);
  --container: 1240px;
  --gutter: clamp(1rem, 3vw, 1.5rem);
  --space-1: 0.5rem;
  --space-2: 1rem;
  --space-3: 1.5rem;
  --space-4: 2.5rem;
  --space-5: 4rem;
}

/* Accessibility toolbar modes */
/* Text size (set on <html> so all rem-based sizes scale) */
html.zf-font-small{ font-size:87.5%; }
html.zf-font-large{ font-size:112.5%; }
html.zf-font-xlarge{ font-size:125%; }
html.zf-font-xxlarge{ font-size:150%; }
.zf-a11y-bar button[aria-disabled="true"]{ opacity:.45; cursor:not-allowed; }
body.zf-dyslexia-font, body.zf-dyslexia-font *{ font-family:Verdana, Tahoma, sans-serif !important; letter-spacing:.02em; word-spacing:.08em; }
body.zf-high-contrast{
  --zf-paper:#000000; --zf-paper-warm:#000000; --zf-ink:#FFFFFF; --zf-ink-soft:#F2F2F2;
  --zf-red:#FFD400; --zf-red-dark:#FFD400; --zf-red-tint:#000000; --zf-border:#FFFFFF;
  --zf-focus:#FFD400; --zf-on-red:#000000; --zf-footer-bg:#000000; --zf-footer-ink:#FFFFFF;
}
body.zf-reduce-motion *, body.zf-reduce-motion *::before, body.zf-reduce-motion *::after{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* ==========================================================================
   2. RESET & BASE
   ========================================================================== */
*, *::before, *::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--zf-ink);
  background:var(--zf-paper);
  line-height:1.65;
  font-size:1.0625rem;
  overflow-x:hidden;
}
body.zf-nav-open{ overflow:hidden; }
img{ max-width:100%; height:auto; display:block; }
a{ color:var(--zf-red-dark); text-decoration-thickness:2px; text-underline-offset:3px; }
a:hover{ color:var(--zf-ink); }
h1,h2,h3,h4,h5,h6{ font-family:var(--font-display); line-height:1.2; color:var(--zf-ink); margin:0 0 .6em; font-weight:600; }
h1{ font-size:clamp(2rem, 4vw, 3rem); }
h2{ font-size:clamp(1.5rem, 3vw, 2.1rem); }
h3{ font-size:1.3rem; }
p{ margin:0 0 1.2em; }
figure{ margin:0; }
address{ font-style:normal; }
.zf-icon{ flex:none; vertical-align:middle; }

.zf-container{ max-width:var(--container); margin:0 auto; padding:0 var(--gutter); }
.zf-section{ padding:var(--space-5) var(--gutter); max-width:var(--container); margin-left:auto; margin-right:auto; }
.zf-section.zf-container{ padding-left:var(--gutter); padding-right:var(--gutter); }
.zf-section--warm{ background:var(--zf-paper-warm); }
.zf-narrow{ max-width:840px; }
.zf-center{ text-align:center; }
.zf-center p{ margin-left:auto; margin-right:auto; }
.zf-eyebrow{ font-weight:700; letter-spacing:.08em; text-transform:uppercase; font-size:.8rem; color:var(--zf-red-dark); margin-bottom:.5rem; }
.zf-divider{ display:flex; justify-content:center; margin:2.5rem 0; }

/* ==========================================================================
   3. ACCESSIBILITY ESSENTIALS
   ========================================================================== */
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:100000;
  background:var(--zf-red-dark); color:#fff; padding:1em 1.5em;
  font-weight:700; border-radius:0 0 var(--radius-sm) 0;
}
.skip-link:focus{ left:0; }

:focus-visible{ outline:3px solid var(--zf-focus); outline-offset:3px; }
.zf-navbar :focus-visible, .zf-footer :focus-visible, .zf-a11y-bar :focus-visible{ outline-color:#fff; }
body.zf-high-contrast .zf-navbar :focus-visible{ outline-color:var(--zf-focus); }

.screen-reader-text{
  position:absolute !important; width:1px; height:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); clip-path:inset(50%); white-space:nowrap; border:0; padding:0; margin:-1px;
}
.screen-reader-text:focus{
  position:static !important; width:auto; height:auto; clip:auto; clip-path:none; padding:1em; background:#fff; color:#000; z-index:100000;
}

/* ==========================================================================
   4. ACCESSIBILITY TOOLBAR
   ========================================================================== */
.zf-a11y-bar{ background:var(--zf-ink); color:#fff; font-size:.85rem; }
body.zf-high-contrast .zf-a11y-bar{ background:#000; border-bottom:1px solid #fff; }
.zf-a11y-bar-inner{ max-width:var(--container); margin:0 auto; padding:.4rem var(--gutter); display:flex; flex-wrap:wrap; align-items:center; gap:.35rem .75rem; }
.zf-a11y-bar button{ background:transparent; border:1px solid rgba(255,255,255,.45); color:#fff; padding:.25rem .65rem; border-radius:var(--radius-sm); font:inherit; font-size:.8rem; cursor:pointer; font-weight:600; }
.zf-a11y-bar button:hover, .zf-a11y-bar button[aria-pressed="true"]{ background:var(--zf-red); border-color:var(--zf-red); color:var(--zf-on-red); }
.zf-a11y-bar a{ color:#fff; margin-left:auto; }
.zf-a11y-label{ font-weight:700; margin-right:.25rem; }
.zf-listen{ display:inline-flex; gap:.35rem; }
.zf-listen[hidden], .zf-listen [hidden]{ display:none; }
.zf-a11y-bar .zf-listen-toggle::before{ content:"\25B6\a0"; font-size:.7em; }
.zf-a11y-bar .zf-listen-toggle[aria-pressed="true"]::before{ content:"\275A\275A\a0"; }
/* Paragraph currently being read aloud */
.zf-reading{ background:#FFF3B0; color:#1C1917; box-shadow:0 0 0 .3rem #FFF3B0; border-radius:2px; }
.zf-reading a{ color:#970005; }
body.zf-high-contrast .zf-reading{ background:#FFD400; color:#000; box-shadow:0 0 0 .3rem #FFD400; }
body.zf-high-contrast .zf-reading a{ color:#000; }
.zf-a11y-controls{ display:flex; flex-wrap:wrap; align-items:center; gap:.35rem .75rem; }
.zf-a11y-bar .zf-a11y-toggle{ display:none; align-items:center; gap:.35rem; border-color:transparent; padding-left:0; }
.zf-a11y-toggle .zf-icon{ width:14px; height:14px; transition:transform .15s; }
.zf-a11y-toggle[aria-expanded="true"] .zf-icon{ transform:rotate(180deg); }
@media (max-width:600px){
  .zf-a11y-bar .zf-a11y-toggle{ display:inline-flex; }
  .zf-a11y-bar .zf-a11y-toggle:hover{ background:transparent; color:#fff; text-decoration:underline; }
  .zf-a11y-controls{ display:none; flex-basis:100%; padding:.25rem 0 .4rem; }
  .zf-a11y-bar.is-open .zf-a11y-controls{ display:flex; }
  .zf-a11y-label{ display:none; }
}

/* ==========================================================================
   5. HEADER — brand, contact details, social icons
   ========================================================================== */
.zf-header{ background:var(--zf-paper); position:relative; z-index:100; }
.zf-header-inner{
  max-width:var(--container); margin:0 auto; padding:1rem var(--gutter);
  display:flex; align-items:center; justify-content:space-between; gap:1.25rem 2rem; flex-wrap:wrap;
}
.zf-brand{ display:flex; align-items:center; gap:1rem; min-width:0; }
.zf-brand-logo{ flex:none; display:block; }
.zf-brand-logo img{ width:auto; height:88px; max-width:200px; object-fit:contain; }
.zf-brand-text{ min-width:0; }
.zf-site-title{ margin:0; font-family:var(--font-display); font-weight:700; font-size:clamp(1.1rem, 2vw, 1.45rem); line-height:1.15; max-width:22ch; }
.zf-site-title a{ color:var(--zf-ink); text-decoration:none; }
.zf-tagline{ margin:.3rem 0 0; color:var(--zf-red-dark); font-weight:700; font-size:.85rem; letter-spacing:.06em; text-transform:uppercase; }

.zf-brand{ flex:0 1 auto; }
.zf-header-info{ flex:1 1 480px; min-width:0; display:flex; align-items:flex-start; gap:1rem 1.5rem; justify-content:flex-end; }
.zf-contact-list{ flex:0 1 auto; min-width:0; max-width:540px; list-style:none; margin:0; padding:0; display:grid; gap:.3rem; font-size:.9rem; color:var(--zf-ink-soft); }
.zf-header-social{ flex:none; }
.zf-contact-row{ display:flex; flex-wrap:wrap; gap:.3rem 1.25rem; }
.zf-contact-item{ display:flex; align-items:flex-start; gap:.5rem; }
.zf-contact-item .zf-icon{ width:16px; height:16px; margin-top:.2rem; color:var(--zf-red); }
.zf-contact-list a{ color:var(--zf-ink); text-decoration:none; }
.zf-contact-list a:hover{ color:var(--zf-red-dark); text-decoration:underline; }
.zf-sep{ color:var(--zf-border); margin:0 .25rem; }

.zf-social{ list-style:none; margin:0; padding:0; display:flex; gap:.5rem; flex-wrap:wrap; }
.zf-social a{
  display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px;
  border-radius:var(--radius-sm); border:2px solid var(--zf-border); color:var(--zf-ink); transition:background .15s, color .15s, border-color .15s;
}
.zf-social a:hover{ background:var(--zf-red); border-color:var(--zf-red); color:var(--zf-on-red); }
.zf-social .zf-icon{ width:18px; height:18px; }

@media (max-width:960px){
  .zf-header-inner{ justify-content:center; text-align:left; }
  .zf-header-info{ justify-content:space-between; flex-basis:100%; }
  .zf-contact-list{ justify-items:start; }
}
@media (max-width:600px){
  .zf-brand-logo img{ height:64px; }
  .zf-header-info{ flex-direction:column; align-items:flex-start; gap:.75rem; }
  .zf-contact-list{ font-size:.85rem; }
}

/* ==========================================================================
   6. NAVIGATION BAR, DROPDOWNS, MOBILE PANEL
   ========================================================================== */
.zf-navbar{ background:var(--zf-red); color:var(--zf-on-red); }
body.zf-high-contrast .zf-navbar{ background:#000; border-top:2px solid #fff; border-bottom:2px solid #fff; }
.zf-navbar-inner{ max-width:var(--container); margin:0 auto; padding:0 var(--gutter); display:flex; align-items:center; justify-content:flex-end; min-height:60px; }

.zf-primary-nav{ display:flex; align-items:center; gap:1rem; }
.zf-menu{ display:flex; flex-wrap:wrap; list-style:none; margin:0; padding:.55rem 0; gap:.5rem; }
.zf-menu li{ position:relative; display:flex; align-items:center; }
.zf-menu a{
  display:block; color:var(--zf-on-red); text-decoration:none; font-weight:600; font-size:.98rem;
  padding:.5rem 1.1rem; line-height:1.3;
}
body.zf-high-contrast .zf-menu a{ color:#fff; }

/* Top-level items are ovals ("pills"). The oval wraps the link and, for
   items with a dropdown, its arrow button too. */
.zf-menu > li{
  border:1.5px solid rgba(255,255,255,.55); border-radius:999px;
  transition:background .15s, border-color .15s, color .15s;
}
.zf-menu > li > a{ border-radius:999px; }
.zf-menu > li.menu-item-has-children > a{ padding-right:.35rem; }
.zf-menu > li:hover,
.zf-menu > li:focus-within{ background:#fff; border-color:#fff; }
.zf-menu > li:hover > a,
.zf-menu > li:focus-within > a,
.zf-menu > li:hover > .zf-submenu-toggle,
.zf-menu > li:focus-within > .zf-submenu-toggle{ color:var(--zf-red-dark); }
/* Current page (or a page inside this section): solid white oval. */
.zf-menu > li.current-menu-item,
.zf-menu > li.current-menu-ancestor,
.zf-menu > li.current-menu-parent,
.zf-menu > li:has(> a[aria-current="page"]){ background:#fff; border-color:#fff; box-shadow:0 2px 6px rgba(0,0,0,.18); }
.zf-menu > li.current-menu-item > a,
.zf-menu > li.current-menu-ancestor > a,
.zf-menu > li.current-menu-parent > a,
.zf-menu > li > a[aria-current="page"],
.zf-menu > li.current-menu-item > .zf-submenu-toggle,
.zf-menu > li.current-menu-ancestor > .zf-submenu-toggle{ color:var(--zf-red-dark); font-weight:700; }
.zf-navbar .zf-menu > li > a:focus-visible,
.zf-navbar .zf-menu > li > .zf-submenu-toggle:focus-visible{ outline:3px solid var(--zf-ink); outline-offset:2px; }

body.zf-high-contrast .zf-menu > li{ border-color:#fff; }
body.zf-high-contrast .zf-menu > li:hover,
body.zf-high-contrast .zf-menu > li:focus-within,
body.zf-high-contrast .zf-menu > li.current-menu-item,
body.zf-high-contrast .zf-menu > li.current-menu-ancestor{ background:var(--zf-focus); border-color:var(--zf-focus); }
body.zf-high-contrast .zf-menu > li:hover > a,
body.zf-high-contrast .zf-menu > li:focus-within > a,
body.zf-high-contrast .zf-menu > li.current-menu-item > a,
body.zf-high-contrast .zf-menu > li.current-menu-ancestor > a,
body.zf-high-contrast .zf-menu > li:hover > .zf-submenu-toggle,
body.zf-high-contrast .zf-menu > li.current-menu-item > .zf-submenu-toggle{ color:#000; }

.zf-submenu-toggle{
  display:inline-flex; align-items:center; justify-content:center; background:transparent; border:0;
  color:inherit; cursor:pointer; padding:.5rem .7rem .5rem .25rem; margin:0; border-radius:0 999px 999px 0;
}
.zf-submenu-toggle .zf-icon{ transition:transform .15s; }
.is-open > .zf-submenu-toggle .zf-icon{ transform:rotate(180deg); }

.zf-menu .sub-menu, .zf-menu .children{
  list-style:none; margin:0; padding:.4rem 0;
  position:absolute; top:calc(100% + .55rem); left:0; min-width:230px; z-index:20;
  background:var(--zf-paper); border:1px solid var(--zf-border); border-top:3px solid var(--zf-red-dark);
  border-radius:var(--radius-md); box-shadow:var(--shadow-md);
  display:none;
}
/* Invisible bridge so the dropdown stays open while the pointer crosses the gap. */
.zf-menu > li > .sub-menu::before{ content:""; position:absolute; left:0; right:0; top:calc(-.55rem - 3px); height:calc(.55rem + 3px); }
.zf-menu .sub-menu .sub-menu{ top:-.4rem; left:100%; border-top-width:1px; }
.zf-menu li:hover > .sub-menu,
.zf-menu li:focus-within > .sub-menu,
.zf-menu li.is-open > .sub-menu{ display:block; }
.zf-menu .sub-menu li{ width:100%; }
.zf-menu .sub-menu a{ color:var(--zf-ink); padding:.6rem 1rem; width:100%; font-weight:500; }
.zf-menu .sub-menu a:hover, .zf-menu .sub-menu a[aria-current="page"]{ background:var(--zf-red-tint); color:var(--zf-red-dark); }
.zf-menu .sub-menu .zf-submenu-toggle{ color:var(--zf-ink); margin-left:0; }
.zf-menu .sub-menu :focus-visible{ outline-color:var(--zf-focus); outline-offset:-3px; }

.zf-menu-toggle, .zf-menu-close{ display:none; }

@media (max-width:960px){
  .zf-navbar-inner{ justify-content:space-between; }
  .zf-menu-toggle{
    display:inline-flex; align-items:center; gap:.5rem; margin:.5rem 0; padding:.55rem 1rem;
    background:transparent; color:var(--zf-on-red); border:2px solid currentColor; border-radius:999px; padding:.55rem 1.25rem;
    font:inherit; font-weight:700; cursor:pointer;
  }
  body.zf-high-contrast .zf-menu-toggle{ color:#fff; }

  .zf-primary-nav{
    position:fixed; top:0; right:0; bottom:0; z-index:1001;
    width:min(86vw, 360px); flex-direction:column; align-items:stretch; gap:0;
    background:var(--zf-paper); color:var(--zf-ink); box-shadow:-8px 0 24px rgba(0,0,0,.2);
    padding:4.25rem 0 2rem; overflow-y:auto;
    transform:translateX(100%); visibility:hidden;
    transition:transform .25s ease, visibility 0s linear .25s;
  }
  .zf-primary-nav[data-open="true"]{ transform:translateX(0); visibility:visible; transition:transform .25s ease, visibility 0s; }
  body.zf-high-contrast .zf-primary-nav{ border-left:2px solid #fff; }
  /* Logged-in users: keep the panel (and its close button) below the WordPress admin bar. */
  .admin-bar .zf-primary-nav{ top:32px; }
  @media (max-width:782px){ .admin-bar .zf-primary-nav{ top:46px; } }

  .zf-menu-close{
    display:inline-flex; position:absolute; top:.75rem; right:.75rem; width:44px; height:44px;
    align-items:center; justify-content:center; background:transparent; border:2px solid var(--zf-border);
    border-radius:var(--radius-sm); color:var(--zf-ink); cursor:pointer;
  }
  .zf-primary-nav :focus-visible{ outline-color:var(--zf-focus); outline-offset:-3px; }

  /* Phone panel: each item is an oval stacked in a column. */
  .zf-menu{ flex-direction:column; flex-wrap:nowrap; gap:.6rem; padding:.5rem 1rem; }
  .zf-menu li{ flex-wrap:wrap; }
  .zf-menu > li{ border:1.5px solid var(--zf-border); background:var(--zf-paper); overflow:hidden; }
  .zf-menu > li.is-open{ border-radius:1.4rem; }
  .zf-menu a, body.zf-high-contrast .zf-menu a{ color:var(--zf-ink); flex:1; padding:.8rem 1.25rem; }
  .zf-menu > li:hover, .zf-menu > li:focus-within{ background:var(--zf-red-tint); border-color:var(--zf-red); }
  .zf-menu > li:hover > a, .zf-menu > li:focus-within > a{ color:var(--zf-red-dark); }
  .zf-menu > li.current-menu-item, .zf-menu > li.current-menu-ancestor, .zf-menu > li.current-menu-parent,
  .zf-menu > li:has(> a[aria-current="page"]){ background:var(--zf-red); border-color:var(--zf-red); box-shadow:none; }
  .zf-menu > li.current-menu-item > a, .zf-menu > li.current-menu-ancestor > a, .zf-menu > li.current-menu-parent > a,
  .zf-menu > li > a[aria-current="page"], .zf-menu > li.current-menu-item > .zf-submenu-toggle,
  .zf-menu > li.current-menu-ancestor > .zf-submenu-toggle{ color:#fff; }
  .zf-submenu-toggle{ color:var(--zf-ink); width:48px; height:46px; padding:0; margin:0; border-left:1px solid var(--zf-border); border-radius:0; }
  .zf-menu .sub-menu, .zf-menu .children, .zf-menu .sub-menu .sub-menu{
    position:static; width:100%; min-width:0; box-shadow:none; border:0; border-top:1px solid var(--zf-border);
    border-radius:0; padding:0; background:var(--zf-paper-warm);
  }
  .zf-menu > li > .sub-menu::before{ display:none; }
  .zf-menu .sub-menu a, .zf-menu > li.current-menu-ancestor .sub-menu a{ color:var(--zf-ink); }
  /* Mobile: submenus open only via their toggle button. */
  .zf-menu li:hover > .sub-menu, .zf-menu li:focus-within > .sub-menu{ display:none; }
  .zf-menu li.is-open > .sub-menu{ display:block; }
  .zf-menu .sub-menu a{ padding-left:2rem; }
  .zf-menu .sub-menu li:last-child{ border-bottom:0; }
  .zf-nav-cta{ margin:1.25rem; justify-content:center; }

  .zf-nav-overlay{ position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:1000; }
  .zf-nav-overlay[hidden]{ display:none; }
}

/* ==========================================================================
   7. BUTTONS, CARDS, GRIDS
   ========================================================================== */
.zf-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem; font-weight:700; font-size:1rem; line-height:1.2;
  padding:.8rem 1.4rem; border-radius:var(--radius-sm); text-decoration:none; border:2px solid transparent; cursor:pointer;
  transition:background .15s, color .15s, border-color .15s;
}
.zf-btn .zf-icon{ width:18px; height:18px; }
.zf-btn--sm{ padding:.5rem .9rem; font-size:.9rem; }
.zf-btn--primary{ background:var(--zf-red); color:var(--zf-on-red); }
.zf-btn--primary:hover{ background:var(--zf-red-dark); color:#fff; }
body.zf-high-contrast .zf-btn--primary:hover{ background:#000; color:var(--zf-focus); border-color:var(--zf-focus); }
.zf-btn--outline{ border-color:var(--zf-ink); color:var(--zf-ink); background:transparent; }
.zf-btn--outline:hover{ background:var(--zf-ink); color:var(--zf-paper); }
.zf-btn--light{ background:#fff; color:var(--zf-red-dark); }
.zf-btn--light:hover{ background:var(--zf-ink); color:#fff; }

.zf-grid{ display:grid; gap:1.75rem; }
.zf-grid--3{ grid-template-columns:repeat(3, minmax(0,1fr)); }
.zf-grid--4{ grid-template-columns:repeat(4, minmax(0,1fr)); }
@media (max-width:900px){ .zf-grid--3, .zf-grid--4{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:600px){ .zf-grid--3, .zf-grid--4{ grid-template-columns:1fr; } }

.zf-card{ background:var(--zf-paper); border:1px solid var(--zf-border); border-radius:var(--radius-md); padding:1.75rem; height:100%; }
.zf-card h3{ margin-bottom:.5rem; }

.zf-post-card{ padding:0; overflow:hidden; display:flex; flex-direction:column; position:relative; transition:box-shadow .15s, transform .15s; }
.zf-post-card:hover{ box-shadow:var(--shadow-md); }
.zf-post-card-media img{ width:100%; aspect-ratio:16/10; object-fit:cover; }
.zf-post-card-body{ padding:1.25rem 1.4rem 1.5rem; }
.zf-post-card-title{ font-size:1.2rem; margin-bottom:.5rem; }
.zf-post-card-title a{ color:var(--zf-ink); text-decoration:none; }
.zf-post-card-title a:hover{ color:var(--zf-red-dark); text-decoration:underline; }
.zf-post-card p:last-child{ margin-bottom:0; }

/* Make a whole card clickable from its heading link */
.zf-stretched-link::after{ content:""; position:absolute; inset:0; z-index:1; }

/* ==========================================================================
   8. HOMEPAGE CAROUSEL
   ========================================================================== */
.zf-carousel{ position:relative; z-index:1; background:var(--zf-ink); color:#fff; }
.zf-carousel-viewport{ position:relative; overflow:hidden; }
.zf-carousel-track{ display:grid; }
.zf-slide{
  grid-area:1 / 1; position:relative; aspect-ratio:8 / 3; min-height:320px; max-height:620px; width:100%;
  opacity:0; visibility:hidden; transition:opacity .7s ease, visibility 0s linear .7s;
}
.zf-slide.is-active{ opacity:1; visibility:visible; transition:opacity .7s ease, visibility 0s; }
.zf-slide:focus{ outline:none; }
.zf-slide-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.zf-slide-caption{
  position:absolute; inset:auto 0 0 0; padding:3.5rem max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter))) 4rem;
  background:linear-gradient(to top, rgba(0,0,0,.82) 0%, rgba(0,0,0,.55) 55%, rgba(0,0,0,0) 100%);
}
.zf-slide-caption{ transition:opacity .45s ease .25s; }
.zf-slide:not(.is-active) .zf-slide-caption{ opacity:0; transition:opacity .15s ease; }
.zf-slide-title{ color:#fff; font-size:clamp(1.4rem, 3.2vw, 2.4rem); max-width:24ch; margin-bottom:.4rem; text-shadow:0 1px 3px rgba(0,0,0,.5); }
.zf-slide-text{ max-width:60ch; font-size:clamp(.95rem, 1.5vw, 1.1rem); margin-bottom:1rem; color:#f3f3f3; text-shadow:0 1px 2px rgba(0,0,0,.5); }
.zf-slide-caption .zf-btn--primary:hover{ background:#fff; color:var(--zf-red-dark); }

.zf-carousel-controls{
  position:absolute; z-index:3; right:max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter))); bottom:1.1rem;
  display:flex; gap:.5rem;
}
.zf-carousel-btn{
  width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,.6); color:#fff; border:2px solid rgba(255,255,255,.8); border-radius:50%; cursor:pointer;
}
.zf-carousel-btn:hover{ background:var(--zf-red); border-color:var(--zf-red); color:var(--zf-on-red); }
.zf-carousel-btn:focus-visible, .zf-carousel-dot:focus-visible{ outline:3px solid #fff; outline-offset:2px; box-shadow:0 0 0 6px rgba(0,0,0,.6); }
.zf-carousel-dots{
  position:absolute; z-index:3; left:max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter))); bottom:1.6rem;
  display:flex; gap:.25rem;
}
.zf-carousel-dot{
  width:32px; height:32px; padding:0; background:transparent; border:0; cursor:pointer; display:inline-flex; align-items:center; justify-content:center;
}
.zf-carousel-dot::before{ content:""; width:12px; height:12px; border-radius:50%; background:rgba(255,255,255,.5); border:2px solid #fff; transition:width .2s, background .2s; }
.zf-carousel-dot[aria-current="true"]::before{ width:28px; border-radius:6px; background:#fff; }

.zf-carousel--empty{ background:linear-gradient(135deg, var(--zf-red-dark), var(--zf-red)); }
.zf-carousel-fallback{ max-width:var(--container); margin:0 auto; padding:clamp(3rem, 8vw, 6rem) var(--gutter); }
.zf-fallback-title{ font-family:var(--font-display); font-size:clamp(1.6rem, 4vw, 2.8rem); font-weight:700; margin:0 0 .5rem; max-width:24ch; }
.zf-fallback-tagline{ text-transform:uppercase; letter-spacing:.1em; font-weight:700; margin:0; }
body.zf-high-contrast .zf-carousel--empty{ background:#000; border-bottom:2px solid #fff; }

@media (max-width:760px){
  .zf-slide{ aspect-ratio:4 / 3; min-height:0; }
  .zf-slide-caption{ padding:2.5rem var(--gutter) 4.25rem; }
  .zf-slide-text{ display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .zf-carousel-btn{ width:40px; height:40px; }
}
@media (max-width:480px){
  .zf-slide{ aspect-ratio:1 / 1; }
}

/* ==========================================================================
   9. HOMEPAGE MAIN GRID — Who We Are | Latest Releases + Publications
   ========================================================================== */
.zf-home-grid{
  max-width:var(--container); margin:0 auto; padding:var(--space-5) var(--gutter);
  display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:2rem; align-items:start;
}
.zf-home-aside{ display:grid; gap:2rem; }
.zf-panel{ background:var(--zf-paper); border:1px solid var(--zf-border); border-radius:var(--radius-lg); padding:clamp(1.25rem, 2.5vw, 2rem); }
.zf-panel-head{ display:flex; align-items:baseline; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:1.25rem; }
.zf-panel-head .zf-panel-title{ margin-bottom:0; }
.zf-panel-title{
  font-size:clamp(1.35rem, 2.3vw, 1.75rem); text-transform:uppercase; letter-spacing:.04em; margin-bottom:1.25rem;
  padding-bottom:.6rem; border-bottom:3px solid var(--zf-red); display:inline-block;
}
.zf-panel-link{ display:inline-flex; align-items:center; gap:.35rem; font-weight:700; font-size:.92rem; text-decoration:none; }
.zf-panel-link:hover{ text-decoration:underline; }
.zf-panel-link .zf-icon{ width:16px; height:16px; }

.zf-home-main{ display:grid; grid-template-columns:minmax(0,1fr); gap:2rem; align-content:start; min-width:0; }
.zf-home-aside{ min-width:0; }
.zf-partners-panel{ min-width:0; }

/* Partners logo carousel */
.zf-partners-intro{ color:var(--zf-ink-soft); font-size:.95rem; margin-top:-.25rem; }
.zf-logo-controls{ display:flex; gap:.4rem; }
.zf-logo-btn{
  width:38px; height:38px; display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
  background:var(--zf-paper); color:var(--zf-ink); border:2px solid var(--zf-border); border-radius:50%;
}
.zf-logo-btn .zf-icon{ width:18px; height:18px; }
.zf-logo-btn:hover{ background:var(--zf-red); border-color:var(--zf-red); color:var(--zf-on-red); }
.zf-logo-track{
  list-style:none; margin:0; padding:.25rem .1rem .5rem; display:grid; grid-auto-flow:column;
  grid-auto-columns:calc((100% - 2 * 1rem) / 3); column-gap:1rem;
  overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:thin; overscroll-behavior-x:contain;
}
.zf-logo-track:focus-visible{ outline-offset:2px; }
.zf-logo-item{ scroll-snap-align:start; }
.zf-logo-link{
  display:flex; align-items:center; justify-content:center; height:96px; padding:.75rem;
  background:#fff; border:1px solid var(--zf-border); border-radius:var(--radius-md); text-decoration:none;
  transition:border-color .15s, box-shadow .15s;
}
a.zf-logo-link:hover{ border-color:var(--zf-red); box-shadow:var(--shadow-sm); }
.zf-logo-img{ max-height:68px; width:auto; max-width:100%; object-fit:contain; }
.zf-logo-name{ font-weight:700; font-size:.82rem; line-height:1.25; color:var(--zf-ink); text-align:center; }
body.zf-high-contrast .zf-logo-link{ border-color:#fff; }
@media (max-width:480px){ .zf-logo-track{ grid-auto-columns:calc((100% - 1rem) / 2); } }

/* Who We Are */
.zf-who{ background:var(--zf-paper-warm); border-color:transparent; }
body.zf-high-contrast .zf-who{ border-color:#fff; }
.zf-who-body{ display:grid; gap:1.5rem; }
.zf-who-body.has-image{ grid-template-columns:minmax(0,1fr) minmax(0, .85fr); align-items:start; }
.zf-who-text{ font-size:1.02rem; }
.zf-who-text p{ max-width:65ch; }
.zf-who-figure img{ width:100%; border-radius:var(--radius-md); aspect-ratio:32 / 38; object-fit:cover; box-shadow:var(--shadow-sm); }
.zf-who-figure figcaption{ font-size:.85rem; color:var(--zf-ink-soft); margin-top:.5rem; }

/* Latest releases — image with a caption panel overlapping its lower edge (per sketch) */
.zf-release-list{ display:grid; gap:1.75rem; }
.zf-release{ position:relative; }
.zf-release-media{ border-radius:var(--radius-md); overflow:hidden; background:var(--zf-paper-warm); }
.zf-release-media img{ width:100%; aspect-ratio:16 / 9; object-fit:cover; transition:transform .35s ease; }
.zf-release:hover .zf-release-media img{ transform:scale(1.03); }
.zf-release-noimg{ aspect-ratio:16 / 9; display:flex; align-items:center; justify-content:center; background:var(--zf-red-tint); }
.zf-release-noimg .zf-divider{ margin:0; transform:scale(1.6); }
.zf-release-body{
  position:relative; margin:-3rem 1rem 0 auto; width:min(88%, 420px);
  background:var(--zf-paper); border:1px solid var(--zf-border); border-left:4px solid var(--zf-red);
  border-radius:var(--radius-md); padding:1rem 1.15rem; box-shadow:var(--shadow-md);
}
.zf-release-date{ font-size:.8rem; font-weight:700; color:var(--zf-red-dark); text-transform:uppercase; letter-spacing:.06em; margin-bottom:.25rem; }
.zf-release-title{ font-size:1.12rem; margin-bottom:.35rem; }
.zf-release-title a{ color:var(--zf-ink); text-decoration:none; }
.zf-release-title a:hover{ color:var(--zf-red-dark); text-decoration:underline; }
.zf-release-excerpt{ font-size:.92rem; color:var(--zf-ink-soft); margin:0; }

/* Publications */
.zf-pub-grid{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1.25rem; }
.zf-pub-grid--archive{ grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:2rem 1.5rem; }
.zf-pub-card{ display:flex; flex-direction:column; background:var(--zf-paper); border:1px solid var(--zf-border); border-radius:var(--radius-md); overflow:hidden; transition:box-shadow .15s; }
.zf-pub-card:hover{ box-shadow:var(--shadow-md); }
.zf-pub-cover{ background:var(--zf-paper-warm); }
.zf-pub-cover img{ width:100%; aspect-ratio:3 / 4; object-fit:cover; }
.zf-pub-nocover{
  aspect-ratio:3 / 4; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.5rem;
  background:linear-gradient(160deg, var(--zf-red-tint), var(--zf-paper-warm)); color:var(--zf-red-dark); font-weight:700; text-transform:uppercase; letter-spacing:.06em; font-size:.8rem; text-align:center; padding:1rem;
}
.zf-pub-nocover .zf-icon{ width:40px; height:40px; }
.zf-pub-body{ padding:.9rem 1rem 1.1rem; display:flex; flex-direction:column; gap:.35rem; flex:1; }
.zf-pub-meta{ font-size:.78rem; font-weight:700; color:var(--zf-red-dark); text-transform:uppercase; letter-spacing:.05em; margin:0; }
.zf-pub-title{ font-size:1.02rem; margin:0; line-height:1.3; }
.zf-pub-card:not(.is-compact) .zf-pub-title{ font-size:1.15rem; }
.zf-pub-title a{ color:var(--zf-ink); text-decoration:none; }
.zf-pub-title a:hover{ color:var(--zf-red-dark); text-decoration:underline; }
.zf-pub-excerpt{ font-size:.88rem; color:var(--zf-ink-soft); margin:0; }
.zf-pub-download{ white-space:nowrap; margin-top:auto; padding-top:.5rem; display:inline-flex; align-items:center; gap:.4rem; font-weight:700; font-size:.9rem; }
.zf-pub-download .zf-icon{ width:16px; height:16px; }

/* Tablet (768–1024px): keep the sketch's two columns — Who We Are on the
   left, Latest Releases + Publications as the right-hand sidebar — with the
   Who We Are photo stacked above its text so both columns stay readable. */
@media (min-width:768px) and (max-width:1024px){
  .zf-home-grid{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:1.25rem; }
  .zf-who-body.has-image{ grid-template-columns:1fr; }
  .zf-who-figure{ order:-1; }
  .zf-who-figure img{ aspect-ratio:4 / 3; }
  .zf-release-body{ margin:-2.5rem .75rem 0; width:auto; }
  .zf-pub-grid{ gap:.75rem; }
  .zf-pub-body{ padding:.7rem .75rem .9rem; }
  .zf-panel-title{ font-size:1.25rem; }
}
/* Phones (below 768px): stack — Who We Are first, then the sidebar. */
@media (max-width:767px){
  .zf-home-grid{ grid-template-columns:1fr; }
}
@media (min-width:641px) and (max-width:767px){
  .zf-release-list{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:1.25rem; }
  .zf-release-body{ margin:-2.5rem .75rem 0; width:auto; }
}
@media (max-width:640px){
  .zf-home-grid{ padding-top:var(--space-4); padding-bottom:var(--space-4); }
  .zf-who-body.has-image{ grid-template-columns:1fr; }
  .zf-who-figure{ order:-1; }
  .zf-who-figure img{ aspect-ratio:4 / 3; }
  .zf-release-body{ margin:-2rem .75rem 0; width:auto; }
}
@media (max-width:340px){
  .zf-pub-grid{ grid-template-columns:1fr; }
}
@media (max-width:640px){
  .zf-pub-grid{ gap:.75rem; }
  .zf-pub-body{ padding:.7rem .75rem .9rem; }
}

.zf-home-extra{ max-width:var(--container); margin:0 auto; padding:0 var(--gutter) var(--space-5); }

/* ==========================================================================
   10. PUBLICATIONS, TRANSPARENCY, MEMBERS
   ========================================================================== */
.zf-filter ul{ list-style:none; margin:0 0 2rem; padding:0; display:flex; flex-wrap:wrap; gap:.5rem; }
.zf-filter a{ display:inline-block; padding:.45rem 1rem; border:2px solid var(--zf-border); border-radius:999px; text-decoration:none; color:var(--zf-ink); font-weight:600; font-size:.92rem; }
.zf-filter a:hover{ border-color:var(--zf-red); }
.zf-filter a[aria-current="page"]{ background:var(--zf-red); border-color:var(--zf-red); color:var(--zf-on-red); }

.zf-breadcrumb{ font-size:.9rem; margin-bottom:1.5rem; }
.zf-breadcrumb a::before{ content:"\2190\00a0"; }
.zf-pub-single{ display:grid; grid-template-columns:minmax(0, 300px) minmax(0,1fr); gap:clamp(1.5rem, 4vw, 3rem); align-items:start; }
.zf-pub-single-cover img, .zf-pub-single-cover .zf-pub-nocover{ width:100%; border-radius:var(--radius-md); box-shadow:var(--shadow-md); }
.zf-pub-details{ display:flex; flex-wrap:wrap; gap:.5rem 2rem; margin:0 0 1.5rem; }
.zf-pub-details div{ display:flex; gap:.4rem; }
.zf-pub-details dt{ font-weight:700; }
.zf-pub-details dt::after{ content:":"; }
.zf-pub-details dd{ margin:0; }
.zf-pub-actions{ display:flex; flex-wrap:wrap; gap:.75rem; margin-bottom:2rem; }
@media (max-width:700px){
  .zf-pub-single{ grid-template-columns:1fr; }
  .zf-pub-single-cover{ max-width:240px; }
}

.zf-group-title{ margin-top:2.5rem; }
.zf-doc-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--zf-border); }
.zf-doc-list li{ border-bottom:1px solid var(--zf-border); padding:1rem 0; display:flex; justify-content:space-between; gap:1rem; align-items:center; flex-wrap:wrap; }
.zf-doc-list li > span > a{ font-weight:700; font-size:1.05rem; display:block; }
.zf-doc-meta{ color:var(--zf-ink-soft); font-size:.9rem; }

.zf-member-list{ list-style:none; margin:2rem 0 0; padding:0; display:grid; gap:1rem; grid-template-columns:repeat(3, minmax(0,1fr)); }
@media (max-width:900px){ .zf-member-list{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:600px){ .zf-member-list{ grid-template-columns:1fr; } }
.zf-member-list li{ border:1px solid var(--zf-border); border-left:4px solid var(--zf-red); border-radius:var(--radius-sm); padding:1rem 1.2rem; background:var(--zf-paper); }
.zf-member-logo{ width:64px; height:64px; object-fit:contain; margin-bottom:.5rem; }
.zf-member-name{ font-size:1.1rem; margin-bottom:.25rem; }
.zf-member-focus{ margin:0 0 .25rem; }
.zf-member-list .zf-doc-meta{ margin:0; }

.zf-partners{ display:flex; flex-wrap:wrap; align-items:center; gap:2.5rem; }
.zf-partners img{ max-height:60px; width:auto; filter:grayscale(1); opacity:.8; }
.zf-partners img:hover{ filter:none; opacity:1; }

.zf-empty-state{ border:1px dashed var(--zf-border); border-radius:var(--radius-md); padding:1.5rem; color:var(--zf-ink-soft); margin:0; }

/* Section Overview (sub-page cards) */
.zf-overview-grid{ list-style:none; margin:2.5rem 0 0; padding:0; display:grid; gap:1.5rem; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); }
.zf-overview-grid .zf-post-card-body p{ color:var(--zf-ink-soft); font-size:.95rem; }
.zf-card-more{ display:inline-flex; align-items:center; gap:.35rem; font-weight:700; color:var(--zf-red-dark); margin:0; }
.zf-card-more .zf-icon{ width:16px; height:16px; }
.zf-post-card:hover .zf-card-more{ text-decoration:underline; }

/* Team members (About Us) */
.zf-content .zf-team{ gap:1.5rem; margin:1rem 0 2rem; }
.zf-content .zf-team .wp-block-image{ margin:0 0 .75rem; }
.zf-content .zf-team .wp-block-image img{ width:100%; aspect-ratio:4 / 3; object-fit:contain; object-position:center bottom; background:var(--zf-paper-warm); border-radius:var(--radius-md); border-bottom:4px solid var(--zf-red); }
.zf-content .zf-team h3{ margin:0 0 .15rem; font-size:1.1rem; }
.zf-content .zf-team p{ margin:0; color:var(--zf-ink-soft); font-size:.95rem; }

/* Contact */
.zf-contact-layout{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.2fr); gap:2rem; align-items:start; }
.zf-contact-cards{ display:grid; gap:1rem; }
.zf-contact-card{ position:relative; background:var(--zf-paper-warm); border-left:4px solid var(--zf-red); border-radius:var(--radius-md); padding:1.25rem 1.25rem 1.25rem 3.5rem; }
.zf-contact-card > .zf-icon{ position:absolute; left:1.1rem; top:1.35rem; width:22px; height:22px; color:var(--zf-red); }
.zf-contact-card h2{ font-size:1.05rem; font-family:var(--font-body); text-transform:uppercase; letter-spacing:.06em; margin-bottom:.4rem; }
.zf-contact-card ul{ list-style:none; margin:0; padding:0; }
.zf-contact-card a{ font-weight:600; }
.zf-contact-card .zf-social{ margin-top:.25rem; }
/* Contact form */
.zf-contact-form{ margin-top:2rem; padding:clamp(1.25rem, 2.5vw, 2rem); border:1px solid var(--zf-border); border-radius:var(--radius-lg); background:var(--zf-paper); }
.zf-contact-main > .zf-contact-form:first-child{ margin-top:0; }
.zf-contact-form h2{ font-size:1.5rem; }
.zf-form-hint{ color:var(--zf-ink-soft); font-size:.92rem; }
.zf-field{ margin-bottom:1.1rem; }
.zf-field input, .zf-field textarea{ margin-bottom:0; border-color:#8a7f7b; }
.zf-field textarea{ resize:vertical; min-height:9rem; }
.zf-field.has-error input, .zf-field.has-error textarea{ border-color:var(--zf-red-dark); border-width:3px; }
.zf-field .zf-form-error{ margin:0 0 .35rem; }
.zf-form-notice{ border-left:6px solid; border-radius:var(--radius-sm); padding:1rem 1.25rem; margin-bottom:1.25rem; }
.zf-form-notice strong{ display:block; }
.zf-form-notice ul{ margin:.5rem 0 0; padding-left:1.2rem; }
.zf-form-notice--success{ border-color:#1d6b34; background:#e9f6ec; color:#12401f; }
.zf-form-notice--error{ border-color:var(--zf-red-dark); background:var(--zf-red-tint); color:var(--zf-ink); }
body.zf-high-contrast .zf-form-notice{ background:#000; color:#fff; border-color:var(--zf-focus); }
/* Honeypot: off-screen for everyone (not display:none, which some bots detect). */
.zf-hp{ position:absolute !important; left:-9999px; width:1px; height:1px; overflow:hidden; }
.zf-map-title{ margin-top:3rem; font-size:1.5rem; }
.zf-map{ margin-top:1rem; border-radius:var(--radius-md); overflow:hidden; border:1px solid var(--zf-border); }
.zf-map iframe{ display:block; width:100%; height:420px; border:0; }
@media (max-width:860px){ .zf-contact-layout{ grid-template-columns:1fr; } .zf-map iframe{ height:320px; } }

/* Gallery page — styles WordPress's own Gallery block */
.zf-content.zf-content--wide{ max-width:none; }
.zf-gallery-page .wp-block-gallery{ margin:1rem 0 2.5rem; --wp--style--unstable-gallery-gap:.75rem; gap:.75rem; }
/* Default galleries: 2 / 3 / 4 columns by screen width (a column count chosen in the block is respected). */
.zf-gallery-page .wp-block-gallery.columns-default figure.wp-block-image:not(#individual-image){ width:calc(50% - .75rem * .5); flex-grow:0; }
@media (min-width:700px){ .zf-gallery-page .wp-block-gallery.columns-default figure.wp-block-image:not(#individual-image){ width:calc(33.333% - .75rem * .6667); } }
@media (min-width:1100px){ .zf-gallery-page .wp-block-gallery.columns-default figure.wp-block-image:not(#individual-image){ width:calc(25% - .75rem * .75); } }
.zf-gallery-page .wp-block-gallery .wp-block-image img{ border-radius:var(--radius-sm); }
.zf-gallery-page .wp-block-gallery.is-cropped .wp-block-image img{ aspect-ratio:4 / 3; object-fit:cover; height:auto; }
.zf-gallery-page .zf-content h2{ border-bottom:3px solid var(--zf-red); display:inline-block; padding-bottom:.35rem; }

/* ==========================================================================
   11. PAGE CONTENT, PAGINATION, COMMENTS, TABLES, FORMS
   ========================================================================== */
.zf-page-header{ margin-bottom:2rem; }
.zf-page-header h1{ margin-bottom:.4rem; }
.zf-featured-image{ margin-bottom:2rem; }
.zf-featured-image img{ border-radius:var(--radius-md); width:100%; }
.zf-content{ max-width:75ch; }
.zf-content > *:last-child{ margin-bottom:0; }
.zf-content h2{ margin-top:2rem; }
.zf-content h3{ margin-top:1.5rem; }
.zf-content ul, .zf-content ol{ padding-left:1.4rem; margin:0 0 1.2em; }
.zf-content li{ margin-bottom:.35rem; }
.zf-content blockquote{ margin:1.5rem 0; padding:.5rem 1.25rem; border-left:4px solid var(--zf-red); font-family:var(--font-display); font-size:1.15rem; }
.zf-content img{ border-radius:var(--radius-sm); }
.zf-content .alignwide{ max-width:none; }
.zf-content .alignfull{ max-width:none; }
.alignleft{ float:left; margin:0 1.5rem 1rem 0; }
.alignright{ float:right; margin:0 0 1rem 1.5rem; }
.aligncenter{ margin-left:auto; margin-right:auto; }
.wp-caption-text, .wp-element-caption{ font-size:.85rem; color:var(--zf-ink-soft); margin-top:.4rem; }
/* Elementor pages need the full width */
.elementor-page .zf-content{ max-width:none; }

.pagination, .post-navigation{ margin-top:3rem; }
.nav-links{ display:flex; flex-wrap:wrap; gap:.5rem; justify-content:center; }
.page-numbers{ display:inline-flex; min-width:44px; height:44px; padding:0 .8rem; align-items:center; justify-content:center; border:2px solid var(--zf-border); border-radius:var(--radius-sm); text-decoration:none; font-weight:700; color:var(--zf-ink); }
.page-numbers.current{ background:var(--zf-red); border-color:var(--zf-red); color:var(--zf-on-red); }
a.page-numbers:hover{ border-color:var(--zf-red); }
.post-navigation .nav-links{ justify-content:space-between; }
.post-navigation a{ display:block; max-width:22rem; text-decoration:none; font-weight:700; }
.post-navigation .zf-doc-meta{ display:block; font-weight:400; }

.zf-comments{ margin-top:3rem; }
.comment-list{ padding-left:1.25rem; }

table{ width:100%; border-collapse:collapse; margin:1.5rem 0; font-variant-numeric:tabular-nums; }
caption{ text-align:left; font-weight:700; margin-bottom:.5rem; }
th, td{ text-align:left; padding:.75rem 1rem; border-bottom:1px solid var(--zf-border); }
th{ background:var(--zf-paper-warm); font-family:var(--font-display); }

label{ display:block; font-weight:700; margin-bottom:.35rem; }
input, textarea, select{ width:100%; padding:.75rem; border:2px solid var(--zf-border); border-radius:var(--radius-sm); font-family:var(--font-body); font-size:1rem; margin-bottom:1.25rem; background:var(--zf-paper); color:var(--zf-ink); }
input[type="checkbox"], input[type="radio"]{ width:auto; margin-bottom:0; }
input:focus, textarea:focus, select:focus{ border-color:var(--zf-red-dark); }
.zf-required{ color:var(--zf-red-dark); }
.zf-form-error{ color:var(--zf-red-dark); font-weight:700; font-size:.9rem; }

.zf-search-form{ display:flex; gap:.5rem; max-width:520px; margin:1.5rem auto 0; }
.zf-search-form input{ margin:0; }
.zf-page-header .zf-search-form{ margin-left:0; }

/* ==========================================================================
   12. FOOTER
   ========================================================================== */
.zf-footer{ background:var(--zf-footer-bg); color:var(--zf-footer-ink); border-top:5px solid var(--zf-red); }
body.zf-high-contrast .zf-footer{ border-top-color:#fff; }
.zf-footer a{ color:#fff; }
.zf-footer a:hover{ color:#fff; text-decoration-color:var(--zf-red); }
.zf-footer-grid{
  max-width:var(--container); margin:0 auto; padding:var(--space-5) var(--gutter) var(--space-4);
  display:grid; grid-template-columns:1.4fr 1fr 1.2fr; gap:2.5rem;
}
.zf-footer h2{ font-family:var(--font-body); font-size:.95rem; color:#fff; text-transform:uppercase; letter-spacing:.08em; margin-bottom:1rem; }
.zf-footer .zf-footer-org{ font-family:var(--font-display); font-size:1.25rem; text-transform:none; letter-spacing:0; }
.zf-footer-about p{ max-width:42ch; }
.zf-footer .widget{ margin-top:1.5rem; }
.zf-footer .widget h2, .zf-footer .widget .wp-block-heading{ font-size:.95rem; margin-bottom:.6rem; }
.zf-footer ul{ list-style:none; margin:0; padding:0; display:grid; gap:.6rem; }
.zf-footer-menu a{ text-decoration:none; }
.zf-footer-menu a:hover{ text-decoration:underline; }
.zf-footer-contact li{ display:flex; gap:.65rem; align-items:flex-start; }
.zf-footer-contact .zf-icon{ width:18px; height:18px; margin-top:.25rem; color:var(--zf-red); }
body.zf-high-contrast .zf-footer-contact .zf-icon{ color:#fff; }
.zf-footer .zf-social{ margin-top:1.25rem; display:flex; }
.zf-footer .zf-social a{ border-color:rgba(255,255,255,.35); color:#fff; }
.zf-footer .zf-social a:hover{ background:var(--zf-red); border-color:var(--zf-red); }
.zf-footer-bottom{ border-top:1px solid rgba(255,255,255,.15); }
.zf-footer-bottom-inner{ max-width:var(--container); margin:0 auto; padding:1.1rem var(--gutter); display:flex; flex-wrap:wrap; gap:.5rem 1.5rem; justify-content:space-between; align-items:center; font-size:.88rem; color:#cfc8c5; }
body.zf-high-contrast .zf-footer-bottom-inner{ color:#fff; }
.zf-footer-bottom-inner p{ margin:0; }
.zf-legal-links{ display:flex !important; flex-wrap:wrap; gap:1.25rem !important; }
@media (max-width:860px){ .zf-footer-grid{ grid-template-columns:1fr 1fr; } .zf-footer-about{ grid-column:1 / -1; } }
@media (max-width:540px){ .zf-footer-grid{ grid-template-columns:1fr; } .zf-footer-bottom-inner{ justify-content:center; text-align:center; } }

/* ==========================================================================
   13. ADMIN-ONLY PLACEHOLDERS
   ========================================================================== */
.zf-placeholder{
  border:2px dashed #b26b00; background:#fff8e5; color:#4a3000; border-radius:var(--radius-sm);
  padding:.75rem 1rem; font-size:.88rem; margin:.75rem 0; text-align:left; font-family:var(--font-body);
}
.zf-placeholder--inline{ display:inline-block; margin:0; padding:.4rem .7rem; font-size:.78rem; max-width:320px; }
.zf-footer .zf-placeholder{ color:#4a3000; }
