/* =====================================================================
   KEVIN D. JONES — BEPCO Core Stylesheet
   Paste into: Appearance → Customize → Additional CSS
   Theme: highway / libre-2 (same as wired-for-purpose.com).

   This is the PORTABLE BEPCO design system — palette, type, spine,
   header/nav, classification banner, footer, nav-active, search —
   shared with wired-for-purpose so the two sites read as siblings.
   Portfolio-specific page styling is layered ON TOP of this later.

   PREREQ: load fonts via Appearance → Fonts:
           Libre Baskerville · IBM Plex Sans · IBM Plex Mono
   Banner: inject the banner HTML via WPCode (Site Wide Footer),
           same mechanism as wired-for-purpose. See separate HTML file.
   =====================================================================

   NOTE ON EXISTING CSS: if kevin-d-jones.com already has custom CSS in
   the Additional CSS box, paste this ABOVE or BELOW it deliberately —
   check for conflicts first (esp. any image/quote rules).
*/

/* ---------- 1. PALETTE (Operational era, 1958) ------------------- */
:root{
  --amber:#C8860A;        /* primary accent */
  --olive:#4A5240;        /* secondary accent + spine */
  --olive-mid:#636B56;    /* mid tone */
  --sage:#8C9678;         /* light field / muted */
  --manila:#C8B98A;       /* document ground (accents/strip) */
  --manila-lt:#EEE8D8;    /* page ground */
  --near-black:#1E201A;   /* type + dark surfaces */
  --rust:#8B3A0F;         /* warning / hover pop */
  --amber-dk:#8B4A08;     /* darker amber for button hover */
  --rule:#D8CFB4;         /* warm hairline */
}

/* ---------- 2. GLOBAL GROUND + TYPE ------------------------------ */
body{
  background:var(--manila-lt) !important;
  color:var(--near-black);
  font-family:'Libre Baskerville', Georgia, serif;
  font-size:17px;
  line-height:1.8;
}
.site-content,
#content{ background:var(--manila-lt); }

/* signature: the persistent OLIVE spine — fixed to the viewport's
   left edge, above all theme layers, never clipped by containers.    */
body::before{
  content:"";
  position:fixed !important;
  top:0; left:0; bottom:0;
  width:8px;
  background:var(--olive);
  z-index:2147483647;   /* max — sits above header, admin bar shift below */
  pointer-events:none;
}
.admin-bar body::before{ top:32px; }
@media screen and (max-width:782px){ .admin-bar body::before{ top:46px; } }

h1,h2,h3,h4,h5,h6{
  font-family:'Libre Baskerville', Georgia, serif;
  color:var(--near-black);
  line-height:1.25;
  letter-spacing:-0.01em;
}
a{ color:var(--olive); text-decoration-color:var(--amber); text-underline-offset:2px; }
a:hover{ color:var(--rust); }

/* ---------- 3. HEADER — LIGHT BEPCO NAV ------------------------- */
/* Remove the theme's reserved gap above the header so it sits flush
   on ALL pages. (Content spacing on inner pages is handled separately
   below via #content padding, so this won't jam the post title.)      */
#page,
.site{ margin-top:0 !important; padding-top:0 !important; }
body{ margin-top:0 !important; }

/* Light parchment nav bar, full-bleed background, content centered.  */
.site-header{
  background:#EEE8D8 !important;   /* FULLY opaque — no content bleed-through */
  border-bottom:1px solid rgba(30,32,26,0.12) !important;
  width:100vw !important;
  max-width:100vw !important;
  position:relative !important;    /* relative (NOT sticky) — scrolls with page */
  left:auto !important;
  margin-left:calc(50% - 50vw) !important;
  margin-right:calc(50% - 50vw) !important;
  box-sizing:border-box;
  padding:0 max(28px, calc((100vw - 1120px) / 2)) !important;
  min-height:56px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:nowrap;
  margin-bottom:0 !important;
  z-index:10;
}
/* neutralize theme backgrounds on inner header containers */
.site-header .site-branding,
.site-header .nav-wrapper,
.site-header .main-navigation,
.site-header .menu-primary-container{
  background:transparent !important;
}
/* collapse any theme margin/padding on the header's inner containers
   that adds height BELOW the nav row (the real source of the gap that
   appears inside #masthead above the intro).                          */
.site-header .site-branding,
.site-header .nav-wrapper,
.site-header .main-navigation,
.site-header .menu-primary-container,
.site-header .menu,
.site-header #primary-menu{
  margin-top:0 !important;
  margin-bottom:0 !important;
  padding-top:0 !important;
  padding-bottom:0 !important;
}
.site-header .site-branding{ display:flex; align-items:center; }
/* the site title is a <p> — kill its default paragraph margins that
   inflate the header height and create the gap.                       */
.site-header .site-branding .site-title,
.site-header p.site-title{
  margin:0 !important;
  padding:0 !important;
  line-height:1.1 !important;
}

/* logo — amber serif, BEPCO-style */
.site-branding .site-title{ margin:0; }
.site-title a{
  font-family:'Libre Baskerville', serif !important;
  color:var(--amber) !important;
  font-size:18px;
  font-weight:700;
  letter-spacing:0.05em;
}
.site-title a:hover{ color:var(--rust) !important; }

/* nav links — mono, uppercase, with vertical dividers (ledger look) */
.main-navigation .menu{ display:flex; align-items:center; }
.main-navigation .menu > li{ margin:0; }
.main-navigation .menu > li > a{
  font-family:'IBM Plex Mono', monospace;
  font-size:11px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:rgba(30,32,26,0.55);
  padding:0 16px;
  height:56px;
  display:flex;
  align-items:center;
  border-right:1px solid rgba(30,32,26,0.09);
  position:relative;
  /* the amber ::after rule below IS the underline — kill the browser's
     default one, which otherwise shows as a black line on hover once
     the text darkens                                                 */
  text-decoration:none !important;
  /* colour/background ease in at 0.2s — slightly ahead of the 0.3s
     underline below, so the two changes stagger rather than move as
     one block (this is the BEPCO nav feel).                        */
  transition:color 0.2s cubic-bezier(0.22,0.61,0.36,1),
             background 0.2s cubic-bezier(0.22,0.61,0.36,1);
}
/* the amber rule that DRAWS itself left-to-right beneath the label.
   scaleX(0) at rest + transform-origin:left is what makes it wipe in
   from the left rather than fade or grow from the centre.          */
.main-navigation .menu > li > a::after{
  content:'';
  position:absolute;
  left:16px; right:16px;
  bottom:14px;
  height:1px;
  background:var(--amber);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 0.3s cubic-bezier(0.22,0.61,0.36,1);
  pointer-events:none;
}
.main-navigation .menu > li:first-child > a{
  border-left:1px solid rgba(30,32,26,0.09);
}
.main-navigation .menu > li > a:hover{
  color:var(--near-black);
  background:rgba(30,32,26,0.04);
}
.main-navigation .menu > li > a:hover::after{
  transform:scaleX(1);
}
/* ACTIVE (current page) — persistent, and distinct from hover.
   WordPress marks the exact page with .current-menu-item and the
   section parent with .current-menu-ancestor / -parent, so the nav
   shows both "which section" and "which page".                     */
.main-navigation .menu > li.current-menu-item > a,
.main-navigation .menu > li.current_page_item > a,
.main-navigation .menu > li.current-menu-ancestor > a,
.main-navigation .menu > li.current-menu-parent > a{
  color:var(--amber);
  background:rgba(200,134,10,0.06);
}
.main-navigation .menu > li.current-menu-item > a::after,
.main-navigation .menu > li.current_page_item > a::after,
.main-navigation .menu > li.current-menu-ancestor > a::after,
.main-navigation .menu > li.current-menu-parent > a::after{
  transform:scaleX(1);
  background:var(--amber);
}
/* the search item in the menu */
.main-navigation .astm-search-menu > a{ border-right:none; }
.main-navigation .search-icon-path,
.main-navigation .search-icon{ fill:rgba(30,32,26,0.5); }
.main-navigation .menu-toggle{
  color:var(--near-black);
  background:transparent;
  border:1px solid rgba(30,32,26,0.2);
}

/* ---------- V1 GRAMMAR: CLASSIFICATION BANNER ------------------- */
/* Injected via WPCode at "Site Wide Footer" (this theme does NOT fire
   wp_body_open, so Site Wide Body renders nothing). Because it's placed
   at the bottom of the DOM, we pin it to the TOP with position:fixed.  */
.kdj-banner{
  position:fixed;
  top:0;
  left:0;
  right:0;
  width:100%;
  z-index:9998;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  gap:18px;
  padding:6px max(28px, calc((100vw - 1120px) / 2));
  background:rgba(30,32,26,0.06);
  border-bottom:1px solid rgba(30,32,26,0.10);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
/* when logged in, sit below the WP admin bar */
.admin-bar .kdj-banner{ top:32px; }
@media screen and (max-width:782px){ .admin-bar .kdj-banner{ top:46px; } }

/* Push the HEADER (and thus everything below it) down by the banner's
   height so the header sits BELOW the fixed banner, not under it.
   Banner ≈ 30px tall. We offset the site wrapper, not the body, so the
   parchment ground still fills behind the banner cleanly.             */
.site-header{ margin-top:30px !important; }
/* remove any stray body padding from earlier approach */
body{ padding-top:0 !important; }

/* Restore breathing room between header and content on INNER pages
   (posts, pages, blog index). The homepage stays flush; everything
   else gets a clean top gap so the eyebrow/title isn't jammed under
   the header.                                                         */
body:not(.home) #content.site-content{ padding-top:48px !important; }

.kdj-banner .cb-item{
  font-family:'IBM Plex Mono', monospace;
  font-size:9px;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:rgba(30,32,26,0.42);
  white-space:nowrap;
}
.kdj-banner .cb-dot{
  display:block;              /* a bare span is inline and would ignore w/h */
  width:3px; height:3px;
  min-width:3px; min-height:3px;
  border-radius:50%;
  background:rgba(30,32,26,0.20);
  flex-shrink:0;
  flex-grow:0;
}
.kdj-banner .cb-right{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:12px;                 /* spacing between status, dot, and readout */
  font-family:'IBM Plex Mono', monospace;
  font-size:9px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:rgba(200,134,10,0.65);
  white-space:nowrap;
}
/* "System Nominal" sits in the right cluster but reads as a label */
.kdj-banner .cb-status{
  color:rgba(200,134,10,0.65);
}
/* the separator dot inside the amber cluster picks up amber, not the
   dark tone used by the left-hand dots                                */
.kdj-banner .cb-right .cb-dot{
  display:block;
  width:3px; height:3px;
  min-width:3px; min-height:3px;
  border-radius:50%;
  background:rgba(200,134,10,0.55);
  flex-shrink:0;
  flex-grow:0;
}
/* the live frequency readout: lock digit widths so the number doesn't
   jitter sideways as it walks                                        */
.kdj-banner #kdj-freq{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
  display:inline-block;
  min-width:3.4em;
  text-align:right;
}
@media (max-width:640px){
  .kdj-banner{ gap:10px; padding:5px 18px; }
  .kdj-banner .cb-item:nth-child(n+3){ display:none; }
}


/* ---------- 5. ARTICLE BODY (.entry-content) -------------------- */
/* Let the theme center the column; just set a comfortable reading
   measure and center it within whatever container the theme provides. */
.entry-content,
.entry-header{
  max-width:42rem;
  margin-left:auto;
  margin-right:auto;
}
.entry-content{ font-size:17px; }
.entry-content p{ margin:0 0 1.4em; }

/* in-post section headings → IBM Plex Mono */
.entry-content h2,
.entry-content h3,
.entry-content h4,
.entry-content h5,
.entry-content h6{
  font-family:'IBM Plex Mono', monospace;
  color:var(--olive);
  letter-spacing:0;
}
.entry-content h2{
  font-size:22px;
  font-weight:500;
  margin:1.9em 0 0.6em;
  padding-bottom:0.35em;
  border-bottom:1px solid var(--rule);
}
.entry-content h3,
.entry-content h4{
  font-size:14px;
  font-weight:500;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--olive-mid);
  margin:1.7em 0 0.5em;
}

/* quote appearance only — width controlled by Part A */
.entry-content blockquote,
.entry-content .wp-block-quote{
  border-left:3px solid var(--amber);
  background:#E4DCC4;
  padding:0.8em 1.2em;
  font-style:italic;
  color:var(--near-black);
}

/* ---------- 6. FOOTERS, NAV, WIDGETS --------------------------- */
.entry-footer,
.post-navigation{
  margin-top:2.5em;
  padding-top:1.4em;
  border-top:1px solid var(--rule);
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
}
.post-navigation .nav-links a{ font-family:'Libre Baskerville',serif; font-size:15px; }

.widget-title{
  font-family:'IBM Plex Sans Condensed',sans-serif;
  font-size:13px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--olive-mid);
  border-bottom:1px solid var(--rule);
  padding-bottom:8px;
  margin-bottom:12px;
}
.widget a{ color:var(--olive); }
.widget a:hover{ color:var(--rust); }

/* Themes tag cloud → mono chips */
.tagcloud a,
.wp-block-tag-cloud a{
  font-family:'IBM Plex Mono',monospace !important;
  font-size:11px !important;
  letter-spacing:0.03em;
  border:1px solid var(--rule);
  padding:3px 8px;
  margin:0 4px 6px 0;
  display:inline-block;
  color:var(--olive-mid) !important;
}
.tagcloud a:hover,
.wp-block-tag-cloud a:hover{ border-color:var(--amber); color:var(--near-black) !important; }

/* ---------- 7. SITE FOOTER + V1 ISSUED COLOPHON ---------------- */
/* FULL-BLEED footer to match the header, content held to same column */
.site-footer{
  background:var(--near-black);
  color:var(--sage);
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  letter-spacing:0.05em;
  border-top:3px solid var(--amber);
  width:100vw !important;
  max-width:100vw !important;
  position:relative;
  left:50%;
  margin-left:-50vw !important;
  margin-right:-50vw !important;
  box-sizing:border-box;
  padding:28px max(28px, calc((100vw - 1120px) / 2)) !important;
}
.site-footer a{ color:var(--amber); }
.site-info{ color:var(--olive-mid); text-align:center; }
/* V1 GRAMMAR: issued colophon appended to the footer */
.site-info::after{
  content:"Kevin D. Jones, Ph.D.\A Richmond VA";
  white-space:pre;
  display:block;
  margin-top:8px;
  color:var(--sage);
  letter-spacing:0.12em;
  text-transform:uppercase;
  font-size:9.5px;
  text-align:center;
  line-height:1.8;
}


/* ================================================================
   PREV / NEXT POST NAVIGATION — archive .pagination-nav style
   ================================================================ */
.post-navigation{
  margin-top:2.5em;
  padding-top:1.6em;
  border-top:1px solid var(--rule);
}
.post-navigation .nav-links{
  display:flex;
  justify-content:space-between;
  gap:24px;
}
.post-navigation .nav-previous,
.post-navigation .nav-next{ max-width:48%; }
.post-navigation .nav-next{ text-align:right; margin-left:auto; }
/* the small "Previous Post" / "Next Post" label — mono uppercase */
.post-navigation .meta-nav{
  display:block;
  font-family:'IBM Plex Mono', monospace;
  font-size:10px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:rgba(30,32,26,0.5);
  margin-bottom:6px;
}
.post-navigation .nav-previous .meta-nav::before{ content:"\2190  "; }  /* ← */
.post-navigation .nav-next .meta-nav::after{ content:"  \2192"; }       /* → */
/* the post title link — boxed like an activated button */
.post-navigation .nav-links a{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:16px;
  color:var(--near-black) !important;
  text-decoration:none;
  display:inline-block;
  border:1px solid rgba(200,134,10,0.55);
  background:rgba(200,134,10,0.05);
  padding:12px 18px;
  transition:all 0.2s ease;
}
.post-navigation .nav-next .nav-links a{ text-align:right; }
.post-navigation .nav-links a:hover{
  color:var(--amber) !important;
  border-color:var(--amber);
  background:rgba(200,134,10,0.12);
}
.post-navigation .nav-links a:hover .meta-nav{ color:var(--amber); }
.main-navigation .menu > li.current-menu-item > a,
.main-navigation .menu > li.current_page_item > a,
.main-navigation .menu > li.current-menu-parent > a{
  color:var(--amber) !important;
  background:rgba(200,134,10,0.07);
  box-shadow:inset 0 -2px 0 var(--amber);
}


/* ================================================================
   NAV SEARCH (Ivory Search) — BEPCO institutional styling
   Icon in the nav, revealing a squared mono search field.
   ================================================================ */

/* the search icon in the nav — match nav link color, amber on hover */
.main-navigation .astm-search-menu > a{
  display:flex;
  align-items:center;
  height:56px;
  padding:0 4px 0 12px;
  border-right:none !important;
}
.main-navigation .search-icon-path{ fill:rgba(30,32,26,0.55) !important; transition:fill 0.2s ease; }
.main-navigation .astm-search-menu > a:hover .search-icon-path{ fill:var(--amber) !important; }

/* the revealed search form — light, restrained, archive-style box.
   IMPORTANT: don't force display here, or the plugin can't hide it.   */
.astm-search-menu .is-search-form{
  background:#FCFAF4 !important;
  border:1px solid rgba(30,32,26,0.18) !important;
  border-bottom:1px solid rgba(30,32,26,0.18) !important;  /* kill the plugin's black underline */
  border-radius:0 !important;
  padding:5px !important;
  box-shadow:0 6px 18px rgba(30,32,26,0.10) !important;
  align-items:center;
  gap:0;
}
/* when the plugin opens the search, lay it out as a flex row */
.astm-search-menu.astm-search-open .is-search-form,
.astm-search-menu .is-search-form.is-form-open,
.astm-search-menu a[aria-expanded="true"] + .is-search-form{
  display:flex !important;
}
/* the input — mono, light, amber caret */
.astm-search-menu .is-search-input{
  background:#FEFDFA !important;
  border:1px solid rgba(30,32,26,0.12) !important;
  border-bottom:1px solid rgba(30,32,26,0.12) !important;  /* override plugin underline */
  border-radius:0 !important;
  box-shadow:none !important;
  font-family:'IBM Plex Mono', monospace !important;
  font-size:11px !important;
  letter-spacing:0.10em !important;
  text-transform:uppercase;
  color:var(--near-black) !important;
  padding:9px 12px !important;
  caret-color:var(--amber);
  min-width:200px;
}
.astm-search-menu .is-search-input:focus{
  outline:none !important;
  border-color:var(--amber) !important;
  box-shadow:none !important;
}
.astm-search-menu .is-search-input::placeholder{
  color:rgba(30,32,26,0.38);
  font-style:normal;
  letter-spacing:0.10em;
  text-transform:uppercase;
}
/* the submit button — bordered box, amber icon, archive hover */
.astm-search-menu .is-search-submit{
  background:transparent !important;
  border:1px solid rgba(30,32,26,0.15) !important;
  border-radius:0 !important;
  padding:7px 11px !important;
  cursor:pointer;
  transition:all 0.2s ease;
}
.astm-search-menu .is-search-submit:hover{
  background:rgba(200,134,10,0.06) !important;
  border-color:var(--amber) !important;
}
.astm-search-menu .is-search-submit svg path{ fill:rgba(30,32,26,0.5) !important; transition:fill 0.2s ease; }
.astm-search-menu .is-search-submit:hover svg path{ fill:var(--amber) !important; }

/* ================================================================
   PORTFOLIO — BIO PAGE + NAV SUBMENUS + DOWNLOAD BUTTONS
   ================================================================ */

/* ---- voice-bio: quotable bio copy block ---- */
.entry-content .voice-bio{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:15px !important;
  line-height:1.75 !important;
  font-style:italic;
  color:#2A2620;
  background:#F7F2E7;
  border-left:3px solid var(--amber);
  border-radius:2px;
  padding:22px 26px;
  margin:1.4em 0;
  position:relative;
}
.entry-content .voice-bio strong{ font-weight:700; font-style:normal; color:var(--near-black); }
/* the copy button injected by the WPCode snippet */
.bio-copy-btn{
  position:absolute;
  bottom:16px; right:18px;
  font-family:'IBM Plex Mono', monospace;
  font-size:9px;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color:rgba(30,32,26,0.55);
  background:transparent;
  border:1px solid rgba(30,32,26,0.2);
  border-radius:0;
  padding:5px 10px;
  cursor:pointer;
  transition:all 0.18s ease;
  z-index:2;
}
.bio-copy-btn:hover{ color:var(--amber); border-color:var(--amber); background:rgba(200,134,10,0.05); }
.bio-copy-btn.copied{ color:var(--olive); border-color:var(--olive); }
/* room for the button in the bottom-right, and normal top padding */
.entry-content .voice-bio{ padding:22px 26px 48px; }

/* ---- DOWNLOAD BUTTONS → BEPCO archive-button style ---- */

/* ---- NAV SUBMENUS (History / Portfolio dropdowns) ---- */
.main-navigation .menu li.menu-item-has-children{ position:relative; }
/* suppress the theme's own default dropdown arrow / caret glyphs.
   NOTE: this deliberately targets ::before only. The ::after on parent
   items is used by the drawing amber underline — killing it here is
   what previously stopped History/Portfolio from animating.          */
.main-navigation .menu li.menu-item-has-children > a::before,
.main-navigation .dropdown-toggle,
.main-navigation .menu-item-has-children > .dropdown-toggle{
  content:none !important;
  display:none !important;
}
/* re-assert the drawing underline on parent items, at a specificity
   that beats the suppressor above.
   NOTE: the anchor MUST be position:relative here — its parent
   li.menu-item-has-children is position:relative for the dropdown, so
   otherwise this ::after resolves against the LI and the rule lands
   above the text instead of beneath it.                              */
.main-navigation .menu li.menu-item-has-children > a{
  position:relative !important;
}
.main-navigation .menu li.menu-item-has-children > a::after{
  content:'' !important;
  display:block !important;
  position:absolute !important;
  left:16px; right:16px;
  top:auto !important;
  bottom:14px !important;
  height:1px;
  background:var(--amber);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 0.3s cubic-bezier(0.22,0.61,0.36,1);
  pointer-events:none;
}
.main-navigation .menu li.menu-item-has-children > a:hover::after{
  transform:scaleX(1);
}
/* remove the extra right padding the theme reserves for the arrow so
   parent items align exactly like plain items.
   position:relative is essential — li.menu-item-has-children is itself
   position:relative (for the dropdown), so without this the underline's
   ::after would resolve against the LI box and sit above the text.   */
.main-navigation .menu li.menu-item-has-children > a{
  padding-right:16px !important;
  position:relative !important;
}
/* the real culprit (confirmed via inspector): the theme adds
   margin-right:.875em to parent <li>s to reserve arrow space.        */
.main-navigation ul > li.menu-item-has-children,
.main-navigation ul > li.page_item_has_children,
.main-navigation .menu li.menu-item-has-children{
  margin-right:0 !important;
}
/* collapse any toggle/arrow element that still reserves layout width */
.main-navigation .menu li.menu-item-has-children .dropdown-toggle,
.main-navigation .menu li.menu-item-has-children > a > .toggle,
.main-navigation .menu li.menu-item-has-children > .toggle,
.main-navigation .menu li.menu-item-has-children > button{
  display:none !important;
  width:0 !important;
  margin:0 !important;
  padding:0 !important;
}
/* hide submenus by default; reveal on hover (desktop) */
.main-navigation .menu .sub-menu{
  display:none;
  position:absolute;
  top:100%;
  left:0;
  min-width:200px;
  background:var(--manila-lt);
  border:1px solid rgba(30,32,26,0.15);
  box-shadow:0 8px 24px rgba(30,32,26,0.15);
  padding:4px 0;
  margin:0;
  list-style:none;
  z-index:100;
}
/* tight submenu items — kill the theme's vertical margins that spread
   them apart (theme applies margin to .main-navigation li broadly).   */
.main-navigation ul.sub-menu > li,
.main-navigation .menu .sub-menu li,
.main-navigation li .sub-menu li{
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
  display:block !important;
  float:none !important;
}
@media (min-width:783px){
  .main-navigation .menu li.menu-item-has-children:hover > .sub-menu{
    display:block;
  }
}
.main-navigation .menu .sub-menu li{ width:100%; margin:0 !important; }
.main-navigation .menu .sub-menu li > a{
  display:block !important;
  height:auto !important;
  margin:0 !important;
  padding:11px 18px !important;
  font-family:'IBM Plex Mono', monospace !important;
  font-size:11px !important;
  letter-spacing:0.10em;
  text-transform:uppercase;
  color:rgba(30,32,26,0.65) !important;
  border:none !important;
  border-bottom:1px solid rgba(30,32,26,0.07) !important;
  white-space:nowrap;
}
.main-navigation .menu .sub-menu li:last-child > a{ border-bottom:none !important; }
.main-navigation .menu .sub-menu li > a:hover{
  color:var(--amber) !important;
  background:rgba(200,134,10,0.06) !important;
}

/* ================================================================
   DOWNLOAD TABLE → ARCHIVE RECORD LIST
   The bio downloads table (Asset | Year | Download) styled as a
   dense archive record list: serif asset name, mono year, amber
   Download affordance, hairline rows, amber hover-spine.
   ================================================================ */
.entry-content .wp-block-table{ margin:1.6em 0; }
.entry-content .wp-block-table table,
.entry-content .wp-block-table.has-fixed-layout table{
  border-collapse:collapse;
  width:100%;
  border:none;
  table-layout:auto;
}
.entry-content .wp-block-table td{
  border:none !important;
  border-bottom:1px solid rgba(30,32,26,0.10) !important;
  padding:16px 12px 16px 0 !important;
  vertical-align:middle;
  background:transparent !important;
}
/* each ROW is a record — amber hover-spine + slide */
.entry-content .wp-block-table tr{
  position:relative;
  transition:background 0.2s ease;
}
.entry-content .wp-block-table tbody tr:hover td{
  background:rgba(200,134,10,0.04) !important;
}
/* col 1 — asset name: serif title */
.entry-content .wp-block-table td:first-child{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:16px;
  font-weight:700;
  color:var(--near-black);
  width:auto;
  padding-left:20px !important;
  position:relative;
}
/* era-diamond marker on the first cell */
.entry-content .wp-block-table td:first-child::before{
  content:"";
  position:absolute;
  left:0; top:50%;
  transform:translateY(-50%) rotate(45deg);
  width:6px; height:6px;
  background:var(--amber);
}
/* col 2 — year: mono date-stamp */
.entry-content .wp-block-table td:nth-child(2){
  font-family:'IBM Plex Mono', monospace !important;
  font-size:11px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:var(--amber);
  white-space:nowrap;
  width:120px;
}
/* col 3 — the Download link: amber archive affordance */
.entry-content .wp-block-table td:last-child{
  text-align:right;
  width:130px;
}
.entry-content .wp-block-table td:last-child a,
.entry-content .wp-block-table td a.pretty-link{
  font-family:'IBM Plex Mono', monospace !important;
  font-size:10px !important;
  letter-spacing:0.14em !important;
  text-transform:uppercase !important;
  color:var(--amber) !important;
  text-decoration:none !important;
  border:1px solid rgba(200,134,10,0.5) !important;
  padding:8px 16px !important;
  display:inline-block;
  transition:all 0.18s ease;
}
.entry-content .wp-block-table td:last-child a:hover,
.entry-content .wp-block-table td a.pretty-link:hover{
  background:rgba(200,134,10,0.12) !important;
  border-color:var(--amber) !important;
}

/* ================================================================
   COOL TIMELINE PRO → BEPCO OPERATIONAL SKIN
   Maps the plugin's teal/maroon timeline (Education page) to the
   Operational palette: olive connector line, soot/amber icon badges,
   manila content cards with amber spine, serif titles, mono dates.
   Plugin uses heavy inline !important CSS, so overrides match its
   specificity + !important.
   ================================================================ */

/* --- the vertical connector line --- */
.cool-timeline.white-timeline:before,
.cool-timeline.white-timeline.one-sided:before,
.cool-timeline .ctl_center_line_filling,
.cool-timeline:not(.light-timeline) .center-line.BeforeViewPort:before,
.cool-timeline:not(.light-timeline) .center-line.AfterViewPort:after{
  background:var(--olive) !important;
  background-color:var(--olive) !important;
  background-image:none !important;
}

/* --- the start/end caps on the line --- */
.cool-timeline.white-timeline .cool_timeline_start,
.cool-timeline.white-timeline .cool_timeline_end,
.cool-timeline .cool_timeline_start.innerViewPort,
.cool-timeline .cool_timeline_end.innerViewPort{
  background:var(--olive) !important;
  background-color:var(--olive) !important;
  background-image:none !important;
}

/* --- the icon badges (circular medallions) — PER PAGE ---
   Education → rust (Virginia Tech); Experience → sage.               */
.cool-timeline .timeline-post .timeline-icon,
.cool-timeline.white-timeline .timeline-icon,
.cool-timeline .timeline-icon.icon-larger,
.cool-timeline .timeline-icon[class*="iconbg-"]{
  color:var(--manila-lt) !important;
  box-shadow:0 0 0 4px var(--manila-lt) !important;  /* ring against page */
}
/* Education medallions → rust */
#timeline-education .timeline-icon,
#timeline-education .timeline-icon.icon-larger,
#timeline-education .timeline-icon[class*="iconbg-"],
#timeline-education .timeline-post.innerViewPort .timeline-icon{
  background:var(--rust) !important;
  border-color:var(--rust) !important;
}
/* Experience medallions → field olive */
#timeline-experience .timeline-icon,
#timeline-experience .timeline-icon.icon-larger,
#timeline-experience .timeline-icon[class*="iconbg-"],
#timeline-experience .timeline-post.innerViewPort .timeline-icon{
  background:var(--olive) !important;
  border-color:var(--olive) !important;
}
.cool-timeline .timeline-icon i,
.cool-timeline .timeline-icon svg,
.cool-timeline .timeline-icon [class*="fa-"]{
  color:var(--manila-lt) !important;
}

/* --- content cards (the boxed entries) ---
   Guaranteed override via the container ID #timeline-education (an ID
   selector beats the plugin's class chains).                         */
#timeline-education .timeline-content,
#timeline-education .timeline-content.design-5-content,
.cool-timeline .timeline-content,
.cool-timeline .timeline-content.design-5-content{
  background:#F4EEDF !important;
  background-color:#F4EEDF !important;
  border:1px solid rgba(30,32,26,0.16) !important;
  border-radius:2px !important;
  box-shadow:0 2px 8px rgba(30,32,26,0.06) !important;
}
#timeline-education .timeline-content:after,
.cool-timeline .timeline-content:after{
  border-right-color:#F4EEDF !important;
  border-left-color:#F4EEDF !important;
}
/* kill the inline white background on the "Bradley Fellow" link */
#timeline-education .timeline-content .content-details a[style*="background"],
.cool-timeline .timeline-content .content-details a[style*="background"]{
  background:transparent !important;
  background-color:transparent !important;
}

/* --- TWO-TONE CARD: soot title header + cream details body --- */
/* title block — SOOT (near-black) header strip, parchment text.
   This is the DEFAULT (Education uses it).                            */
#timeline-education .timeline-content h2.content-title,
.cool-timeline .timeline-content h2.content-title,
#timeline-education .timeline-content .content-title,
.cool-timeline .timeline-content .content-title{
  background:var(--near-black) !important;
  color:var(--manila-lt) !important;
  margin:-1px -1px 0 -1px !important;   /* bleed to card edges */
  padding:16px 20px !important;
  border-radius:2px 2px 0 0 !important;
}
/* Experience → CONTROL ROOM BLUE (Contemporary era #1F3243) header */
#timeline-experience .timeline-content h2.content-title,
#timeline-experience .timeline-content .content-title{
  background:#1F3243 !important;
  color:var(--manila-lt) !important;
}
#timeline-experience .timeline-content h2.content-title a{
  color:var(--manila-lt) !important;
}
#timeline-education .timeline-content h2.content-title a,
.cool-timeline .timeline-content h2.content-title a{
  color:var(--manila-lt) !important;
}
/* details block — cream body with tighter padding */
#timeline-education .timeline-content .ctl_info,
.cool-timeline .timeline-content .ctl_info{
  background:#F4EEDF !important;
  padding:12px 16px !important;
  margin:0 !important;
}
/* inner content-details: no extra padding (parent .ctl_info handles it) */
#timeline-education .timeline-content .content-details,
.cool-timeline .timeline-content .content-details{
  background:transparent !important;
  padding:0 !important;
  margin:0 !important;
}
/* remove the card's own padding so the two bands fill it edge-to-edge */
#timeline-education .timeline-content,
.cool-timeline .timeline-content.design-5-content{
  padding:0 !important;
  overflow:hidden;
}

/* --- content title (degree name) → serif --- */
.cool-timeline .timeline-post .timeline-content h2.content-title,
.cool-timeline .timeline-post .timeline-content h2.content-title-2,
.cool-timeline .timeline-post .timeline-content h2.content-title-simple,
.cool-timeline.compact .timeline-post .timeline-content h2.compact-content-title,
.cool-timeline .timeline-post .timeline-content .content-title a{
  font-family:'Libre Baskerville', Georgia, serif !important;
  color:var(--near-black) !important;
  font-weight:700 !important;
}

/* --- the date labels → mono amber date-stamp --- */
.cool-timeline .timeline-post .timeline-meta .meta-details,
.cool-timeline .timeline-year span,
.cool-timeline .timeline-post .timeline-content .story-date.clt-meta-date,
.cool-timeline.compact .timeline-post .timeline-content .clt-compact-date{
  font-family:'IBM Plex Mono', monospace !important;
  color:var(--amber) !important;
  letter-spacing:0.08em !important;
  text-transform:uppercase !important;
}

/* --- the year separator badges --- */
.cool-timeline .timeline-year,
.cool-timeline .timeline-year.innerViewPort{
  background:var(--near-black) !important;
}
.cool-timeline .timeline-year span{ color:var(--amber) !important; }

/* --- body / details text --- */
.cool-timeline .timeline-post .timeline-content .content-details,
.cool-timeline .timeline-post .timeline-content .content-details p{
  font-family:'Libre Baskerville', Georgia, serif !important;
  color:rgba(30,32,26,0.75) !important;
}
/* breathing room between the degree title and the body details */
.cool-timeline .timeline-post .timeline-content .content-details{
  margin-top:14px !important;
}
/* separate the thesis/dissertation link (in <em>) from the university
   text above it — the plugin only uses <br> so add top spacing.       */
.cool-timeline .timeline-post .timeline-content .content-details em{
  display:inline-block;
  margin-top:12px;
}
/* also space the trailing "Fellow" link from the thesis line */
.cool-timeline .timeline-post .timeline-content .content-details em + br + a{
  display:inline-block;
  margin-top:8px;
}
/* links inside details (thesis titles etc.) → amber */
.cool-timeline .timeline-post .timeline-content .content-details a{
  color:var(--amber) !important;
}

/* ================================================================
   PRESENTATIONS PAGE (page-id-23) → ARCHIVE CATALOG
   Restyles the year-grouped talk list into a dense archive index:
   catalog-control year nav, mono year bands, record rows with amber
   era-diamonds and hover-spine. Scoped to .page-id-23.
   ================================================================ */

/* --- YEAR NAV (two paragraph blocks, one per decade) ---
   Linked years = amber buttons; placeholder years (bare text like
   2025, 2021, 2012) = muted inline text.                             */
.page-id-23 .entry-content > .wp-block-group:first-of-type p.wp-block-paragraph:has(a[href^="#20"]),
.page-id-248 .entry-content p.wp-block-paragraph.has-black-color:has(a[href^="#20"]){
  display:flex !important;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:8px;
  margin:0 auto 6px !important;
  line-height:1;
  color:rgba(30,32,26,0.32) !important;   /* placeholder grey for plain (unlinked) years */
  font-family:'IBM Plex Mono', monospace !important;
  font-size:13px !important;
  letter-spacing:0.08em;
}
/* Publications nav rows carry the theme's has-black-color class, which
   forces plain-year text to black. Neutralize it so unlinked years read
   as the muted grey placeholder (linked years keep their amber via the
   more-specific a[href] rule below).                                    */
.page-id-248 .entry-content p.wp-block-paragraph.has-black-color:has(a[href^="#20"]){
  color:rgba(30,32,26,0.32) !important;
}
/* linked years → amber buttons */
.page-id-23 p.wp-block-paragraph a[href^="#20"],
.page-id-248 p.wp-block-paragraph a[href^="#20"]{
  font-family:'IBM Plex Mono', monospace !important;
  font-size:13px !important;
  letter-spacing:0.08em;
  color:var(--amber) !important;
  text-decoration:none !important;
  border:1px solid rgba(200,134,10,0.5) !important;
  background:rgba(200,134,10,0.06) !important;
  padding:10px 16px !important;
  transition:all 0.18s ease;
}
.page-id-23 p.wp-block-paragraph a[href^="#20"]:hover,
.page-id-248 p.wp-block-paragraph a[href^="#20"]:hover{
  background:rgba(200,134,10,0.16) !important;
  border-color:var(--amber) !important;
}
/* kill the theme's link underline / border-bottom so the border box
   is uniform on all four sides                                        */
.page-id-23 p.wp-block-paragraph a[href^="#20"],
.page-id-23 p.wp-block-paragraph a[href^="#20"]:hover,
.page-id-248 p.wp-block-paragraph a[href^="#20"],
.page-id-248 p.wp-block-paragraph a[href^="#20"]:hover{
  text-decoration:none !important;
  border-bottom:1px solid rgba(200,134,10,0.5) !important;
  box-shadow:none !important;
  background-image:none !important;
}
.page-id-23 p.wp-block-paragraph a[href^="#20"]:hover,
.page-id-248 p.wp-block-paragraph a[href^="#20"]:hover{
  border-bottom-color:var(--amber) !important;
}

/* --- ALTERNATING YEAR GROUP BACKGROUNDS ---
   Each year is a <div id="YEAR" class="wp-block-group">. Alternate
   their grounds so adjacent years are visually distinct.             */
.page-id-23 .wp-block-group[id^="20"]{
  padding:0 20px 20px !important;
  margin:0 !important;
  width:100vw;
  position:relative;
  left:50%;
  margin-left:-50vw !important;
  box-sizing:border-box;
}
.page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container{
  max-width:800px;
  margin:0 auto;
}
.page-id-23 .wp-block-group[id^="20"]:nth-of-type(odd){ background:#F4EEDF; }
.page-id-23 .wp-block-group[id^="20"]:nth-of-type(even){ background:#EDE4D0; }

/* ORNAMENTAL year separator: small grey italic "Delivered", a larger
   transparent-amber diamond, then the big amber year — all inline at
   the top of each year group.                                         */
.page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container{
  position:relative;
}
/* big amber year, padded left to clear the "Delivered ◆" zone.
   A trailing hairline extends to the right of the year.               */
.page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container::before{
  display:flex;
  align-items:center;
  gap:16px;
  padding:44px 0 22px 100px;
  font-family:'Libre Baskerville', Georgia, serif;
  font-size:30px;
  font-weight:400;
  color:var(--amber);
  letter-spacing:-0.02em;
  line-height:1;
}
/* trailing hairline after the year */
.page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container::before{
  content:"";
}
/* small grey italic "Delivered" label, vertically centered on the
   year's line (top tuned to the flex baseline).                       */
.page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container::after{
  content:"Delivered";
  position:absolute;
  left:0;
  width:84px;                           /* right edge lands ~16px before the year (year starts at 100px) */
  text-align:right;
  top:44px; height:30px;                /* span the exact numeral box */
  display:flex; align-items:center; justify-content:flex-end;  /* vertically centered, hug right */
  font-family:'Libre Baskerville', Georgia, serif;
  font-style:italic;
  font-size:14px;
  color:rgba(30,32,26,0.45);
  letter-spacing:0.02em;
  line-height:1;
}
/* the amber diamond — rotated box, vertically centered, with a small
   gap after the "Delivered" label.                                    */
.page-id-23 .wp-block-group[id^="20"]{ position:relative; }
/* (diamond removed) */
/* flanking hairline: extends from just right of the year outward */
.page-id-23 .wp-block-group[id^="20"]::after{
  content:"";
  position:absolute;
  top:44px; height:30px;                  /* span the exact numeral box */
  left:calc((100% - 800px)/2 + 200px);   /* starts right of the year */
  right:calc((100% - 800px)/2);
  /* a 1px rule centered vertically in that box via background positioning */
  background:linear-gradient(rgba(30,32,26,0.14),rgba(30,32,26,0.14)) left center / 100% 1px no-repeat;
  z-index:1;
}
.page-id-23 .wp-block-group[id="2026"] > .wp-block-group__inner-container::before{ content:"2026"; }
.page-id-23 .wp-block-group[id="2024"] > .wp-block-group__inner-container::before{ content:"2024"; }
.page-id-23 .wp-block-group[id="2023"] > .wp-block-group__inner-container::before{ content:"2023"; }
.page-id-23 .wp-block-group[id="2022"] > .wp-block-group__inner-container::before{ content:"2022"; }
.page-id-23 .wp-block-group[id="2020"] > .wp-block-group__inner-container::before{ content:"2020"; }
.page-id-23 .wp-block-group[id="2019"] > .wp-block-group__inner-container::before{ content:"2019"; }
.page-id-23 .wp-block-group[id="2018"] > .wp-block-group__inner-container::before{ content:"2018"; }
.page-id-23 .wp-block-group[id="2017"] > .wp-block-group__inner-container::before{ content:"2017"; }
.page-id-23 .wp-block-group[id="2016"] > .wp-block-group__inner-container::before{ content:"2016"; }
.page-id-23 .wp-block-group[id="2015"] > .wp-block-group__inner-container::before{ content:"2015"; }
.page-id-23 .wp-block-group[id="2014"] > .wp-block-group__inner-container::before{ content:"2014"; }
.page-id-23 .wp-block-group[id="2013"] > .wp-block-group__inner-container::before{ content:"2013"; }

/* hide any leftover dotted separators inside year groups */
.page-id-23 .wp-block-group[id^="20"] hr.wp-block-separator{ display:none !important; }
/* remove the border-bottom on the last entry of each year (fixes the
   awkward gap between last row and the next year band)               */
.page-id-23 .wp-block-group[id^="20"] .wp-block-columns:last-child{
  border-bottom:none !important;
}

/* (Year labels now live on the year GROUPS, not the old hr separators —
   see the .wp-block-group[id] rules below.) */


/* --- RECORD ROWS (each presentation = columns row) --- */
.page-id-23 .wp-block-columns{
  position:relative;
  gap:24px !important;
  padding:16px 0 16px 22px !important;
  margin:0 !important;
  border-bottom:1px solid rgba(30,32,26,0.09);
  transition:padding-left 0.25s ease, background 0.2s ease;
  align-items:baseline;
}
/* amber era-diamond REMOVED from presentation rows per request —
   (the year-band diamond is the only ornament now).                   */
.page-id-23 .wp-block-columns::before{
  display:none !important;
}
/* amber hover-spine + slide */
.page-id-23 .wp-block-columns::after{
  content:"";
  position:absolute;
  left:0; top:0; bottom:0;
  width:0;
  background:var(--amber);
  transition:width 0.22s ease;
}
.page-id-23 .wp-block-columns:hover{
  padding-left:38px !important;
  background:rgba(200,134,10,0.03);
}
.page-id-23 .wp-block-columns:hover::after{ width:4px; }
/* on hover, push the diamond right so it clears the spine */
.page-id-23 .wp-block-columns:hover::before{ left:20px; }

/* date column → mono amber date-stamp */
.page-id-23 .wp-block-columns .wp-block-column:first-child p{
  font-family:'IBM Plex Mono', monospace !important;
  font-size:11px !important;
  letter-spacing:0.06em;
  color:var(--amber) !important;
  white-space:nowrap;
  margin:0 !important;
}
/* content column: title serif, venue/location mono meta */
.page-id-23 .wp-block-columns .wp-block-column:last-child p{
  margin:0 !important;
  line-height:1.5;
}
.page-id-23 .wp-block-columns .wp-block-column:last-child strong a{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:16px !important;
  font-weight:700;
  color:var(--near-black) !important;
  text-decoration:none !important;
  line-height:1.25;
}
.page-id-23 .wp-block-columns:hover .wp-block-column:last-child strong a{
  color:var(--amber) !important;
}
/* venue (em) + location → mono meta */
.page-id-23 .wp-block-columns .wp-block-column:last-child em,
.page-id-23 .wp-block-columns .wp-block-column:last-child em a{
  font-family:'IBM Plex Mono', monospace !important;
  font-size:10px !important;
  letter-spacing:0.05em;
  text-transform:uppercase;
  color:var(--olive-mid) !important;
  font-style:normal !important;
  text-decoration:none !important;
}

/* ============================================================
   PUBLICATIONS PAGE (page-id-248) → ARCHIVE CATALOG
   Shares the Presentations visual language, but adapted for
   this page's structure: single-column entries (no month/date
   column) and two extra years (2021, 2025). Big amber year +
   italic "Delivered" + hairline are drawn per year GROUP.
   ============================================================ */

/* year bands: full-bleed alternating warm cream, content constrained */
.page-id-248 .wp-block-group[id^="20"]{
  padding:0 20px 20px !important;
  margin:0 !important;
  width:100vw;
  position:relative;
  left:50%;
  margin-left:-50vw !important;
  box-sizing:border-box;
}
.page-id-248 .wp-block-group[id^="20"]:nth-of-type(odd){ background:#F4EEDF; }
.page-id-248 .wp-block-group[id^="20"]:nth-of-type(even){ background:#EDE4D0; }
.page-id-248 .wp-block-group[id^="20"] > .wp-block-group__inner-container{
  max-width:800px;
  margin:0 auto;
  position:relative;
}

/* big amber year numeral (content set per-year below) */
.page-id-248 .wp-block-group[id^="20"] > .wp-block-group__inner-container::before{
  display:flex;
  align-items:center;
  gap:16px;
  padding:44px 0 22px 100px;
  font-family:'Libre Baskerville', Georgia, serif;
  font-size:30px;
  font-weight:400;
  color:var(--amber);
  letter-spacing:-0.02em;
  line-height:1;
  content:"";
}

/* italic grey "Delivered" → here it reads "Published" */
.page-id-248 .wp-block-group[id^="20"] > .wp-block-group__inner-container::after{
  content:"Published";
  position:absolute;
  left:0;
  width:84px;
  text-align:right;
  top:44px; height:30px;
  display:flex; align-items:center; justify-content:flex-end;
  font-family:'Libre Baskerville', Georgia, serif;
  font-style:italic;
  font-size:14px;
  color:rgba(30,32,26,0.45);
  letter-spacing:0.02em;
  line-height:1;
}

/* flanking hairline right of the year */
.page-id-248 .wp-block-group[id^="20"]::after{
  content:"";
  position:absolute;
  top:44px; height:30px;
  left:calc((100% - 800px)/2 + 200px);
  right:calc((100% - 800px)/2);
  background:linear-gradient(rgba(30,32,26,0.14),rgba(30,32,26,0.14)) left center / 100% 1px no-repeat;
  z-index:1;
}

/* per-year numeral content (includes 2021 + 2025 that Presentations lacks) */
.page-id-248 .wp-block-group[id="2026"] > .wp-block-group__inner-container::before{ content:"2026"; }
.page-id-248 .wp-block-group[id="2025"] > .wp-block-group__inner-container::before{ content:"2025"; }
.page-id-248 .wp-block-group[id="2024"] > .wp-block-group__inner-container::before{ content:"2024"; }
.page-id-248 .wp-block-group[id="2023"] > .wp-block-group__inner-container::before{ content:"2023"; }
.page-id-248 .wp-block-group[id="2022"] > .wp-block-group__inner-container::before{ content:"2022"; }
.page-id-248 .wp-block-group[id="2021"] > .wp-block-group__inner-container::before{ content:"2021"; }
.page-id-248 .wp-block-group[id="2020"] > .wp-block-group__inner-container::before{ content:"2020"; }
.page-id-248 .wp-block-group[id="2019"] > .wp-block-group__inner-container::before{ content:"2019"; }
.page-id-248 .wp-block-group[id="2018"] > .wp-block-group__inner-container::before{ content:"2018"; }
.page-id-248 .wp-block-group[id="2017"] > .wp-block-group__inner-container::before{ content:"2017"; }
.page-id-248 .wp-block-group[id="2015"] > .wp-block-group__inner-container::before{ content:"2015"; }
.page-id-248 .wp-block-group[id="2013"] > .wp-block-group__inner-container::before{ content:"2013"; }

/* --- RECORD ROWS (each publication = a single-column row) --- */
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns{
  position:relative;
  margin:0 !important;
  padding:16px 0 16px 22px !important;    /* matches Presentations row rhythm */
  border-bottom:1px solid rgba(30,32,26,0.09);
  transition:padding-left 0.25s ease, background 0.2s ease;
}
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:last-child{
  border-bottom:none !important;
}
/* amber hover-spine + slide */
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns::after{
  content:"";
  position:absolute;
  left:0; top:0; bottom:0;
  width:0;
  background:var(--amber);
  transition:width 0.22s ease;
}
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:hover{
  padding-left:38px !important;
  background:rgba(200,134,10,0.03);
}
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:hover::after{ width:4px; }

/* citation column (single column → target it directly) */
.page-id-248 .wp-block-group[id^="20"] .wp-block-column p{
  margin:0 !important;
  line-height:1.5;
  font-family:'IBM Plex Sans', sans-serif;
  font-size:13px;
  color:var(--near-black);
}
/* title → serif. Entries were authored three ways: <a><strong>,
   <strong><a>, and bare <strong> (no link) — target all so every
   title is uniform serif regardless of link presence.               */
.page-id-248 .wp-block-group[id^="20"] .wp-block-column strong,
.page-id-248 .wp-block-group[id^="20"] .wp-block-column strong a,
.page-id-248 .wp-block-group[id^="20"] .wp-block-column a strong,
.page-id-248 .wp-block-group[id^="20"] .wp-block-column a:has(strong){
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:16px !important;
  font-weight:700;
  color:var(--near-black) !important;
  text-decoration:none !important;
  line-height:1.25;
}
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:hover .wp-block-column strong,
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:hover .wp-block-column strong a,
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:hover .wp-block-column a strong,
.page-id-248 .wp-block-group[id^="20"] .wp-block-columns:hover .wp-block-column a:has(strong){
  color:var(--amber) !important;
}
/* venue (em) → mono meta */
.page-id-248 .wp-block-group[id^="20"] .wp-block-column em{
  font-family:'IBM Plex Mono', monospace !important;
  font-size:10px !important;
  letter-spacing:0.05em;
  text-transform:uppercase;
  color:var(--olive-mid) !important;
  font-style:normal !important;
}


/* ============================================================
   AUTHOR NAME HIGHLIGHT  →  "Jones, K. D."
   Authored as <mark class="has-vivid-cyan-blue-color">. Override
   the blue to Control Room Blue (Contemporary-era slate) so the
   author's name reads as an on-brand highlight everywhere it
   appears, without editing 41 blocks.
   ============================================================ */
.page-id-23 mark.has-vivid-cyan-blue-color,
.page-id-248 mark.has-vivid-cyan-blue-color{
  color:var(--rust) !important;   /* rust #8B3A0F */
  background-color:transparent !important;
  font-weight:700;
}


/* ============================================================
   CONTACT PAGE (page-id-20) → WPForms Submit button
   Matches the wired-for-purpose.com contact button: dark
   near-black ground, faint-amber border, amber mono uppercase
   label, faint-amber hover. Same institutional button set.
   ============================================================ */
.page-id-20 .wpforms-submit,
.page-id-20 .wpforms-container button[type="submit"]{
  border-radius:0 !important;
  background:var(--near-black) !important;
  color:var(--amber) !important;
  font-family:'IBM Plex Mono', monospace !important;
  font-size:11px !important;
  letter-spacing:0.16em !important;
  text-transform:uppercase !important;
  padding:12px 22px !important;
  border:1px solid rgba(200,134,10,0.55) !important;
  transition:all 0.2s ease !important;
}
.page-id-20 .wpforms-submit:hover,
.page-id-20 .wpforms-container button[type="submit"]:hover{
  background:rgba(200,134,10,0.12) !important;
  border-color:var(--amber) !important;
  color:var(--amber) !important;
}


/* ============================================================
   HOMEPAGE (page-id-53 / .home) → ARCHIVE INDEX
   Three anchored section groups (#history, #portfolio, #Mocs)
   become numbered divisions with full-bleed alternating bands,
   mono eyebrow headings, catalog cards with hover-spines, and
   featured "most recent" records. Tier 1 (no hero).
   ============================================================ */

/* --- full-bleed alternating bands per division --- */
.home #history,
.home #portfolio,
.home #Mocs{
  width:100vw;
  position:relative;
  left:50%;
  margin-left:-50vw !important;
  padding:52px 20px !important;
  box-sizing:border-box;
  overflow:hidden;                 /* clip the ghost letters to the band */
}
.home #history{ background:#F4EEDF; }
.home #portfolio{ background:#FCFAF4; }   /* lightest tone for the Portfolio band */
.home #Mocs{ background:#382A1E; }   /* Founding-era Dark Brown */
/* Portfolio: no bottom padding (panels reach the section edge → no
   colored strip below) and a tighter top so the title sits closer
   to the panels                                                     */
.home #portfolio{
  padding-top:32px !important;
  padding-bottom:0 !important;
}
.home #history > .wp-block-group__inner-container,
.home #portfolio > .wp-block-group__inner-container,
.home #Mocs > .wp-block-group__inner-container{
  max-width:960px;
  margin:0 auto;
  position:relative;
  z-index:2;                       /* keep content above the ghost */
}

/* --- GHOST ARCHIVE-CODE letters (HST / MOC) ---
   Portfolio is excluded here — its two panels carry their own
   PRES/PUBS ghosts, so a band-level PRT would compete.            */
.home #history::after,
.home #Mocs::after{
  position:absolute;
  bottom:-70px;
  right:2vw;
  font-family:'Libre Baskerville', Georgia, serif;
  font-weight:700;
  font-size:230px;
  line-height:1;
  letter-spacing:-0.04em;
  color:rgba(200,134,10,0.06);
  user-select:none;
  pointer-events:none;
  z-index:1;
  transition:transform .8s cubic-bezier(0.22,0.61,0.36,1), color .6s ease;
}
.home #history::after{ content:"HST"; }
.home #Mocs::after{ content:"MOC"; }
.home #history:hover::after,
.home #Mocs:hover::after{
  transform:translate(-12px,-12px);
  color:rgba(200,134,10,0.10);
}

/* --- division heading: numbered, mono eyebrow, hairline --- */
.home #history > .wp-block-group__inner-container > h2.wp-block-heading,
.home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading,
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-weight:700 !important;
  font-size:32px !important;
  letter-spacing:-0.01em;
  color:var(--near-black) !important;
  position:relative;
  padding-left:52px;
  margin:0 0 34px !important;
  display:flex;
  align-items:center;
  gap:18px;
}
/* the "01 / 02 / 03" division number */
.home #history > .wp-block-group__inner-container > h2.wp-block-heading::before{ content:"01"; }
.home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading::before{ content:"02"; }
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading::before{ content:"03"; }
.home #history > .wp-block-group__inner-container > h2.wp-block-heading::before,
.home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading::before,
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading::before{
  position:absolute;
  left:0;
  font-family:'IBM Plex Mono', monospace;
  font-size:13px;
  letter-spacing:0.14em;
  color:var(--amber);
  font-weight:400;
}
/* trailing hairline beside the title (fills space to the right) */
.home #history > .wp-block-group__inner-container > h2.wp-block-heading::after,
.home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading::after,
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading::after{
  content:"";
  flex:1;
  height:1px;
  background:var(--rule);
}
/* suppress any full-width border UNDER the heading (theme default) */
.home #history > .wp-block-group__inner-container > h2.wp-block-heading,
.home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading,
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading{
  border-bottom:none !important;
  box-shadow:none !important;
}

/* --- CATALOG CARDS (each top-level column = a card) ---
   Scoped to the FIRST columns row in each division so the nested
   "most recent" columns (title + image) are NOT carded.            */
.home #history > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column,
.home #portfolio > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column,
.home #Mocs > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column{
  position:relative;
  padding:24px 26px 26px !important;
  background:rgba(255,255,255,0.16);
  border:1px solid var(--rule);
  transition:background .2s ease;
}
/* the MOC section's single full-width card: no border/tint, it's a
   header block, not a card                                          */
.home #Mocs > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column{
  border:none !important;
  background:transparent !important;
  padding:0 !important;
}
.home #history > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column::before,
.home #portfolio > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column::before{
  content:"";
  position:absolute;left:0;top:0;bottom:0;width:0;
  background:var(--amber);transition:width .22s ease;
}
.home #history > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column:hover,
.home #portfolio > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column:hover{
  background:rgba(200,134,10,0.05);
}
.home #history > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column:hover::before,
.home #portfolio > .wp-block-group__inner-container > .wp-block-columns > .wp-block-column:hover::before{
  width:3px;
}

/* card title (plain h3, no longer a link) → serif, title-case */
.home #history .wp-block-column h3.wp-block-heading,
.home #portfolio .wp-block-column h3.wp-block-heading,
.home #Mocs .wp-block-column h3.wp-block-heading{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:19px !important;
  font-weight:700 !important;
  color:var(--near-black) !important;
  text-transform:none !important;
  letter-spacing:-0.01em;
  margin:0 0 8px !important;
}
/* card body copy */
.home #history .wp-block-column p.wp-block-paragraph,
.home #portfolio .wp-block-column > p.wp-block-paragraph,
.home #Mocs .wp-block-column p.wp-block-paragraph{
  font-family:'IBM Plex Sans', sans-serif;
  font-size:14px;
  line-height:1.55;
  color:#4a4a3f;
}

/* --- "Most recent" featured records --- */
.home #portfolio .wp-block-column em,
.home #Mocs .wp-block-column em{
  font-family:'IBM Plex Mono', monospace !important;
  font-style:normal !important;
  font-size:10px !important;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--amber) !important;
}
/* the nested most-recent block → clean, no separator here
   (the separator now sits ABOVE the "Most recent" label below)     */
.home #portfolio .wp-block-column .wp-block-columns,
.home #Mocs .wp-block-column .wp-block-columns{
  margin-top:14px !important;
  padding:0 !important;
  background:transparent !important;
  border-left:none !important;
  border-top:none !important;
  align-items:flex-start;
}
/* the "Most recent …:" label carries the top-border separator */
.home #portfolio .wp-block-column > p.wp-block-paragraph:has(> em:only-child){
  border-top:1px solid rgba(200,134,10,0.22);
  padding-top:20px !important;
  margin-top:22px !important;
}
/* MOC most-recent: image + title side by side, no inner borders */
.home #Mocs .wp-block-column .wp-block-columns .wp-block-column{
  border:none !important;
  background:transparent !important;
  padding:0 !important;
}
.home #Mocs .wp-block-column .wp-block-columns .wp-block-image img{
  border:1px solid var(--rule);
  display:block;
}
/* record title inside the panel */
.home #portfolio .wp-block-column .wp-block-columns strong a,
.home #Mocs .wp-block-column .wp-block-columns strong a,
.home #Mocs .wp-block-column .wp-block-columns .wp-block-column > p a{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:16px !important;
  font-weight:700 !important;
  color:var(--near-black) !important;
  text-decoration:none !important;
  border-bottom:none !important;
  line-height:1.3;
}
/* record venue (em link) inside panel → mono meta */
.home #portfolio .wp-block-column .wp-block-columns em a,
.home #portfolio .wp-block-column .wp-block-columns em{
  font-family:'IBM Plex Mono', monospace !important;
  font-style:normal !important;
  font-size:10px !important;
  letter-spacing:0.05em;
  text-transform:uppercase;
  color:var(--olive-mid) !important;
  text-decoration:none !important;
}
/* author-name highlight in the publication record → rust */
.home #portfolio mark.has-vivid-cyan-blue-color,
.home #Mocs mark.has-vivid-cyan-blue-color{
  color:var(--rust) !important;
  background-color:transparent !important;
  font-weight:700;
}

/* --- section-level h2 headings that are NOT the anchored divisions
   (belt-and-suspenders: the old plain History/Portfolio labels) --- */


/* ============================================================
   HOMEPAGE CTA BUTTONS
   The section CTAs are paragraph-links: <p><a>...</a></p> where
   the anchor is the paragraph's only child. Style them as amber
   archive-buttons (BEPCO grammar) — distinct from body links.
   ============================================================ */
.home #history .wp-block-column p.wp-block-paragraph:has(> a:only-child),
.home #portfolio .wp-block-column > p.wp-block-paragraph:has(> a:only-child),
.home #Mocs .wp-block-column > p.wp-block-paragraph:has(> a:only-child){
  margin:18px 0 0 !important;
}
.home #history .wp-block-column p.wp-block-paragraph:has(> a:only-child) > a,
.home #portfolio .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a,
.home #Mocs .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a{
  display:inline-flex;
  align-items:center;
  gap:9px;
  font-family:'IBM Plex Mono', monospace !important;
  font-size:10px !important;
  letter-spacing:0.16em !important;
  text-transform:uppercase !important;
  color:var(--amber) !important;
  background:transparent !important;
  border:1px solid rgba(200,134,10,0.55) !important;
  border-bottom:1px solid rgba(200,134,10,0.55) !important;  /* override theme underline */
  padding:11px 20px !important;
  text-decoration:none !important;
  box-shadow:none !important;
  transition:all .2s ease !important;
}
/* arrow glyph appended after the label */
.home #history .wp-block-column p.wp-block-paragraph:has(> a:only-child) > a::after,
.home #portfolio .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a::after,
.home #Mocs .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a::after{
  content:"\2192";
  font-size:13px;
  transition:transform .18s ease;
}
/* hover: fill faint amber, solid border, nudge arrow */
.home #history .wp-block-column p.wp-block-paragraph:has(> a:only-child) > a:hover,
.home #portfolio .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a:hover,
.home #Mocs .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a:hover{
  background:rgba(200,134,10,0.12) !important;
  border-color:var(--amber) !important;
  border-bottom-color:var(--amber) !important;
}
.home #history .wp-block-column p.wp-block-paragraph:has(> a:only-child) > a:hover::after,
.home #portfolio .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a:hover::after,
.home #Mocs .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a:hover::after{
  transform:translateX(3px);
}

/* --- SOLID amber fill: ONLY the Portfolio split panel buttons
   (Browse Presentations / Browse Publications) --- */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a{
  color:#1A1612 !important;
  background:var(--amber) !important;
  border:1px solid var(--amber) !important;
  border-bottom:1px solid var(--amber) !important;
  padding:13px 22px !important;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a:hover{
  background:var(--amber-lt,#E09820) !important;
  border-color:var(--amber-lt,#E09820) !important;
  border-bottom-color:var(--amber-lt,#E09820) !important;
  transform:translateX(2px);
}


/* ============================================================
   PORTFOLIO VERTICAL SPLIT (page-id-53 / .home #portfolio)
   NOTE: the columns sit inside an intermediate
   .wp-block-group.is-vertical wrapper, so the path is:
   inner-container > .wp-block-group > .wp-block-columns > .wp-block-column
   ============================================================ */

/* shorthand base path used throughout: define the split scope */
.home #portfolio > .wp-block-group__inner-container{
  max-width:none !important;
  padding:0 !important;
}
/* keep the heading in the constrained 960px rhythm */
.home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading{
  max-width:960px;
  margin-left:auto !important;
  margin-right:auto !important;
  margin-bottom:0 !important;      /* close the gap below "Portfolio" */
  padding-left:52px;
  box-sizing:border-box;
}
/* the intermediate vertical group must go FULL viewport width so the
   panels bleed edge to edge (theme constrains it by default)         */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group{
  max-width:none !important;
  width:100vw !important;
  margin-left:calc(50% - 50vw) !important;
  margin-right:calc(50% - 50vw) !important;
}

/* the split row: two panels flush, no gap */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns{
  gap:0 !important;
  margin:12px 0 0 !important;
  align-items:stretch !important;
  max-width:none !important;
}
/* each 50% column becomes a full panel — content aligned to the
   centered 960px column so titles line up under "Portfolio"        */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column{
  flex-basis:50% !important;
  max-width:50% !important;
  border:none !important;
  position:relative;
  overflow:hidden;
  padding-top:48px !important;
  padding-bottom:52px !important;
}
/* LEFT panel: content starts at the content-column's left edge.
   Content col is max 960px centered → left inset = max(52px, (100vw-960px)/2 + 52px) */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:first-child{
  background:#EDE4D0 !important;   /* warm vellum — darker than the light band, per the screenshot */
  color:var(--near-black) !important;
  padding-left:max(20px, calc((100vw - 960px)/2)) !important;   /* aligns with the "02" (content-column left edge) */
  padding-right:48px !important;
}
/* RIGHT panel: content ends at the content-column's right edge (mirror) */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child{
  background:#1A1612 !important;
  color:#F5F0E8 !important;
  padding-left:48px !important;
  padding-right:max(20px, calc((100vw - 960px)/2)) !important;   /* mirrors the Presentations left edge */
}

/* ghost letters */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column::after{
  position:absolute;
  bottom:-48px; right:-8px;
  font-family:'Libre Baskerville', Georgia, serif;
  font-weight:700; font-size:210px; line-height:1; letter-spacing:-0.04em;
  user-select:none; pointer-events:none; z-index:1;
  transition:transform .8s cubic-bezier(0.22,0.61,0.36,1), color .6s ease;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:first-child::after{
  content:"PRS"; color:rgba(200,134,10,0.06);
  right:auto; left:-8px;         /* left-align, mirroring Publications' right-align */
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child::after{
  content:"PUB"; color:rgba(200,134,10,0.08);
}
/* Presentations ghost drifts up-right on hover (mirror of the right panel) */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:first-child:hover::after{
  transform:translate(10px,-10px);
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:hover::after{
  transform:translate(-10px,-10px);
}
/* content above the ghost */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > *{
  position:relative; z-index:2;
}

/* panel title */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > h3.wp-block-heading{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-weight:400 !important; font-size:36px !important; letter-spacing:-0.01em;
  margin:0 0 18px !important;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:first-child > h3{ color:var(--near-black) !important; }
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child > h3{ color:#F5F0E8 !important; }

/* panel body */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:15px !important; line-height:1.7 !important; max-width:400px;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:first-child > p.wp-block-paragraph{ color:rgba(30,32,26,0.65) !important; }
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child > p.wp-block-paragraph{ color:rgba(245,240,232,0.62) !important; }

/* mono diamond-bullet list */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > ul.wp-block-list{
  list-style:none !important; margin:0 0 30px !important; padding:0 !important;
  display:flex; flex-direction:column; gap:9px;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > ul.wp-block-list > li{
  font-family:'IBM Plex Mono', monospace !important;
  font-size:10px !important; letter-spacing:0.14em; text-transform:uppercase;
  padding-left:16px; position:relative; margin:0 !important;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:first-child > ul.wp-block-list > li{ color:rgba(30,32,26,0.55) !important; }
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child > ul.wp-block-list > li{ color:rgba(255,255,255,0.55) !important; }
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > ul.wp-block-list > li::before{
  content:""; position:absolute; left:0; top:5px; width:4px; height:4px;
  background:var(--amber); transform:rotate(45deg);
}

/* most-recent record on the DARK panel → flip text light;
   separator sits above the "Most recent" label, tuned for dark      */
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child > p.wp-block-paragraph:has(> em:only-child){
  border-top-color:rgba(200,134,10,0.3) !important;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child .wp-block-columns strong a{
  color:#F5F0E8 !important;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child .wp-block-columns p.wp-block-paragraph{
  color:rgba(245,240,232,0.62) !important;
}
.home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:last-child mark.has-vivid-cyan-blue-color{
  color:#E09820 !important;
}


/* ============================================================
   LEGO MOCs → FOUNDING-ERA DARK BROWN SECTION
   Band is #382A1E (Founding Dark Brown), so all content in this
   division flips to light. Appended last so it wins the cascade.
   ============================================================ */

/* division title + number */
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading{
  color:#F5F0E8 !important;
}
.home #Mocs > .wp-block-group__inner-container > h2.wp-block-heading::after{
  background:rgba(200,134,10,0.3) !important;   /* hairline brighter on dark */
}
/* ghost letter: lift so it reads on the brown */
.home #Mocs::after{
  color:rgba(200,134,10,0.09) !important;
}
.home #Mocs:hover::after{
  color:rgba(200,134,10,0.14) !important;
}

/* card title */
.home #Mocs .wp-block-column h3.wp-block-heading{
  color:#F5F0E8 !important;
}
/* body copy */
.home #Mocs .wp-block-column p.wp-block-paragraph{
  color:rgba(245,240,232,0.62) !important;
}
/* "Most recent MOC:" label */
.home #Mocs .wp-block-column em{
  color:var(--amber) !important;
}
/* separator above the Most Recent label */
.home #Mocs .wp-block-column > p.wp-block-paragraph:has(> em:only-child){
  border-top-color:rgba(200,134,10,0.3) !important;
}
/* record title link */
.home #Mocs .wp-block-column .wp-block-columns strong a,
.home #Mocs .wp-block-column .wp-block-columns .wp-block-column > p a{
  color:#F5F0E8 !important;
}
/* the transformer render: soften its border on the dark ground */
.home #Mocs .wp-block-column .wp-block-columns .wp-block-image img{
  border-color:rgba(200,134,10,0.25) !important;
}


/* ============================================================
   HISTORY CARDS → FIELD NOTES CARD GRAMMAR
   Parchment panels, hairline left border that thickens to amber
   on hover, serif title, serif excerpt, mono link that expands
   its letter-spacing on hover. Path routes through the
   intermediate .wp-block-group wrapper.
   ============================================================ */
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns{
  gap:32px !important;
  margin-top:8px !important;
}
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column{
  background:#F5F0E8 !important;                     /* parchment panel */
  padding:28px !important;
  border:none !important;
  border-left:1px solid rgba(26,22,18,0.12) !important;
  transition:border-left-color .3s cubic-bezier(0.22,0.61,0.36,1),
             border-left-width .3s cubic-bezier(0.22,0.61,0.36,1),
             padding-left .3s cubic-bezier(0.22,0.61,0.36,1),
             background-color .25s ease !important;
}
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column:hover{
  border-left-color:var(--amber) !important;
  border-left-width:4.5px !important;                /* 50% thicker than 3px */
  padding-left:24.5px !important;                    /* compensate so text doesn't shift */
  background:rgba(245,240,232,0.55) !important;      /* background only goes semi-transparent */
}
/* kill the old card hover-spine pseudo-element */
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column::before{
  content:none !important;
}

/* card title → serif, 20px, regular weight (per Field Notes) */
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column h3.wp-block-heading{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:20px !important;
  font-weight:400 !important;
  line-height:1.3 !important;
  color:#1A1612 !important;
  margin:0 0 14px !important;
  letter-spacing:0;
}
/* excerpt → serif 13px */
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph{
  font-family:'Libre Baskerville', Georgia, serif !important;
  font-size:13px !important;
  line-height:1.75 !important;
  color:rgba(26,22,18,0.65) !important;
  margin:0 0 18px !important;
}

/* CTA → solid amber button (matching the Portfolio split panels) */
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph:has(> a:only-child){
  margin:0 !important;
}
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a{
  display:inline-flex !important;
  align-items:center;
  gap:9px;
  font-family:'IBM Plex Mono', monospace !important;
  font-size:10px !important;
  letter-spacing:0.16em !important;
  text-transform:uppercase !important;
  color:#1A1612 !important;
  background:var(--amber) !important;
  border:1px solid var(--amber) !important;
  border-bottom:1px solid var(--amber) !important;
  border-radius:0 !important;
  padding:13px 22px !important;
  text-decoration:none !important;
  box-shadow:none !important;
  transition:all .2s ease !important;
}
.home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > p.wp-block-paragraph:has(> a:only-child) > a:hover{
  background:var(--amber-lt,#E09820) !important;
  border-color:var(--amber-lt,#E09820) !important;
  border-bottom-color:var(--amber-lt,#E09820) !important;
  transform:translateX(2px);
}


/* ============================================================
   HOMEPAGE → close the gap between the last section and the
   site footer. The band is the theme's .entry-footer (which
   holds the logged-in "Edit" link) plus content padding below
   the final full-bleed section.
   ============================================================ */
.home .entry-footer{
  display:none !important;      /* fully collapse: it only held the Edit link */
}
/* remove trailing space under the content area itself */
.home .entry-content{
  margin-bottom:0 !important;
  padding-bottom:0 !important;
}
.home .entry-content > *:last-child{
  margin-bottom:0 !important;
}
/* and any padding on the article/main wrappers below the content.
   Target by ID — the theme sets padding on #content and #primary,
   and IDs outrank class selectors.                                  */
.home #content.site-content,
.home #primary.content-area,
.home #main.site-main,
.home .site-main,
.home .site-content,
.home article.page{
  padding-bottom:0 !important;
  margin-bottom:0 !important;
}

/* stronger sweep: nothing between the last section and the footer
   may contribute bottom space on the homepage                       */
.home #page.site > #content.site-content{
  padding-bottom:0 !important;
  margin-bottom:0 !important;
}
.home #content.site-content > #primary.content-area,
.home #primary.content-area > #main.site-main,
.home #main.site-main > article,
.home article > .entry-content{
  padding-bottom:0 !important;
  margin-bottom:0 !important;
}
/* the last child inside the content (the Portfolio section) */
.home .entry-content > #portfolio{
  margin-bottom:0 !important;
}

/* THE ACTUAL FIX: the gap is a ~58px TOP MARGIN on the site footer
   itself (confirmed via inspector box model), not padding on any
   content wrapper. Zero it so the footer butts the last section.   */
.home footer#colophon.site-footer{
  margin-top:0 !important;
}


/* ============================================================
   BACK-TO-INDEX BUTTON (Presentations + Publications)
   A floating amber archive-button that returns the reader to the
   year navigation. Hidden until you scroll past the year picker.
   Markup injected via WPCode (.kdj-totop).
   ============================================================ */
.kdj-totop{
  position:fixed;
  /* pin to the RIGHT EDGE OF THE CONTENT COLUMN (800px, centered),
     not the viewport corner — so it reads as belonging to the year
     band you're reading. Falls back to a 20px gutter on narrow screens. */
  left:auto;
  right:max(20px, calc((100vw - 800px) / 2));
  bottom:28px;
  z-index:9997;
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:'IBM Plex Mono', monospace;
  font-size:10px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:var(--amber) !important;
  background:rgba(30,32,26,0.92);
  border:1px solid rgba(200,134,10,0.55);
  padding:11px 16px;
  text-decoration:none !important;
  box-shadow:0 2px 10px rgba(30,32,26,0.18);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  /* hidden by default; JS adds .is-visible past the year nav */
  opacity:0;
  visibility:hidden;
  transform:translateY(6px);
  transition:opacity .25s ease, transform .25s ease, visibility .25s ease,
             background .2s ease, border-color .2s ease;
}
.kdj-totop.is-visible{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.kdj-totop:hover{
  background:rgba(30,32,26,0.98);
  border-color:var(--amber);
}
.kdj-totop .kdj-totop-arrow{
  font-size:12px;
  line-height:1;
  transition:transform .2s ease;
}
.kdj-totop:hover .kdj-totop-arrow{
  transform:translateY(-2px);
}
@media (max-width:600px){
  .kdj-totop{ right:16px; bottom:16px; padding:10px 13px; }
  .kdj-totop .kdj-totop-label{ display:none; }   /* arrow only on small screens */
}


/* ================================================================
   MOBILE OPTIMIZATION  (≤782px)
   Mirrors the fix proven out on wired-for-purpose:
   1. Hide the crammed desktop nav; show only the ☰ toggle.
   2. Reveal the menu as a full-width stacked list when tapped.
   3. Kill horizontal scroll caused by the 100vw full-bleed bands.
   4. Tighten the banner, split panels, and section padding.
   Specificity is deliberately high — the desktop nav rules above
   set display:flex on .main-navigation .menu and will otherwise win.
   ================================================================ */
@media screen and (max-width:782px){

  /* --- 3. no sideways rubber-banding from the 100vw elements --- */
  html, body{ overflow-x:hidden !important; max-width:100% !important; }

  /* --- 1. collapse the desktop nav ---
     Libre 2 structure:
       <nav class="main-navigation">
         <button class="menu-toggle" aria-expanded="false">
         <div class="menu-primary-container">
           <ul id="primary-menu" class="menu">
     The container div is the element that must collapse — hiding only
     the <ul> leaves the wrapper occupying space.                        */
  .main-navigation .menu-primary-container,
  .site-header .main-navigation ul#primary-menu,
  .site-header .main-navigation .menu,
  .main-navigation ul.menu{
    display:none !important;
  }
  /* show the theme's toggle, styled to match wired-for-purpose:
     borderless mono text, lifted OUT OF FLOW so it can never push or
     cover the nav items (this was overlapping History before).       */
  .site-header{ position:relative !important; }
  .main-navigation .menu-toggle{
    display:block !important;
    position:absolute !important;
    top:16px;
    right:16px;
    flex:0 0 auto;
    font-family:'IBM Plex Mono', monospace !important;
    font-size:11px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:rgba(30,32,26,0.6) !important;
    background:transparent !important;
    border:none !important;
    padding:6px 4px !important;
    border-radius:0;
    z-index:5;
  }
  .main-navigation .menu-toggle:hover{
    background:transparent !important;
    color:var(--amber) !important;
  }

  /* --- 2. when toggled open → full-width stacked list ---
     NOTE: in Libre 2 aria-expanded lives on the BUTTON, not the nav,
     and the links sit inside .menu-primary-container.                  */
  .main-navigation.toggled .menu-primary-container,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu-primary-container{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    margin-top:10px !important;
    padding:0 !important;
    float:none !important;
    position:static !important;
    text-align:left !important;
    background:transparent;
  }
  /* the list itself: column flex with stretch guarantees every row
     spans the full width (WFP's proven approach)                    */
  .main-navigation.toggled ul#primary-menu,
  .main-navigation.toggled .menu,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) ul#primary-menu,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    width:100% !important;
    max-width:100% !important;
    float:none !important;
    position:static !important;
    text-align:left !important;
    margin:0 !important;
    padding:0 !important;
    background:transparent !important;
    border-top:none !important;
  }
  /* the <ul> nested inside .menu-primary-container shouldn't repeat the
     panel's background/border — the container already provides them    */
  .main-navigation.toggled .menu-primary-container ul#primary-menu,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu-primary-container ul#primary-menu{
    background:transparent !important;
    border-top:none !important;
    margin:0 !important;
  }
  .main-navigation.toggled .menu > li,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu > li{
    width:100% !important;
    max-width:100% !important;
    margin:0 !important;
    float:none !important;
    text-align:left !important;
    display:block !important;
  }
  /* each link becomes a full-width row — no cramped dividers */
  .main-navigation.toggled .menu li > a,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu li > a{
    display:block !important;
    width:100%;
    height:auto !important;
    padding:14px 20px !important;
    border-right:none !important;
    border-left:none !important;
    border-bottom:1px solid rgba(30,32,26,0.09) !important;
    font-size:12px;
  }

  /* the desktop drawing-underline has no place in the stacked mobile
     list — rows use their own bottom borders instead                 */
  .main-navigation .menu > li > a::after{
    display:none !important;
  }

  /* PARENTS (History, Portfolio) are section LABELS, not destinations —
     they only hold a placeholder href. Render them as flush-left
     headers with a rule beneath: no panel, no diamond, no tap target. */
  .main-navigation.toggled .menu > li.menu-item-has-children > a,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu > li.menu-item-has-children > a{
    font-family:'IBM Plex Mono', monospace !important;
    font-size:8px !important;
    letter-spacing:0.30em !important;
    text-transform:uppercase !important;
    color:rgba(30,32,26,0.32) !important;
    background:transparent !important;
    padding:22px 0 7px 0 !important;
    margin:0 20px !important;
    border-bottom:1px solid rgba(30,32,26,0.12) !important;
    width:auto !important;
    cursor:default !important;
    pointer-events:none;              /* it goes nowhere — don't pretend */
  }

  /* CHILDREN are the real destinations — panelled, indented rows */
  .main-navigation.toggled .menu .sub-menu li > a,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu .sub-menu li > a{
    font-family:'IBM Plex Mono', monospace !important;
    font-size:12px !important;
    letter-spacing:0.10em !important;
    color:var(--near-black) !important;
    background:rgba(30,32,26,0.035) !important;
    padding:15px 20px 15px 34px !important;
    border-bottom:1px solid rgba(30,32,26,0.07) !important;
    pointer-events:auto;
  }
  /* an amber leader marks each real link */
  .main-navigation.toggled .menu .sub-menu li > a::before,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu .sub-menu li > a::before{
    content:"";
    display:inline-block;
    width:4px; height:4px;
    margin-right:10px;
    vertical-align:middle;
    background:var(--amber);
    transform:rotate(45deg);
  }
  .main-navigation.toggled .menu .sub-menu li > a:active,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu .sub-menu li > a:active{
    background:rgba(200,134,10,0.10) !important;
  }

  /* top-level items that ARE real links (Blog, Contact) keep the
     tappable treatment, but sit flush — no indent, no panel — so
     they read as top-level rather than nested children             */
  .main-navigation.toggled .menu > li:not(.menu-item-has-children) > a,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu > li:not(.menu-item-has-children) > a{
    font-family:'IBM Plex Mono', monospace !important;
    font-size:12px !important;
    letter-spacing:0.10em !important;
    color:var(--near-black) !important;
    background:transparent !important;
    padding:15px 20px !important;
    border-bottom:1px solid rgba(30,32,26,0.07) !important;
  }
  .main-navigation.toggled .menu > li:not(.menu-item-has-children) > a::before,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu > li:not(.menu-item-has-children) > a::before{
    content:"";
    display:inline-block;
    width:4px; height:4px;
    margin-right:10px;
    vertical-align:middle;
    background:var(--amber);
    transform:rotate(45deg);
  }
  .main-navigation.toggled .menu > li:not(.menu-item-has-children) > a:active,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu > li:not(.menu-item-has-children) > a:active{
    background:rgba(200,134,10,0.10) !important;
  }
  /* sub-menus (History → Bio/Education/Experience) stack inline and
     nest visually beneath their section label                          */
  .main-navigation.toggled .menu .sub-menu,
  .main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu .sub-menu{
    display:block !important;
    position:static !important;
    float:none !important;
    width:auto !important;
    margin:0 20px 6px !important;      /* inset panel — reads as nested */
    background:transparent !important;
    box-shadow:none !important;
    border:none !important;
  }

  /* header: let branding breathe, don't cram. The nav becomes a full
     -width block below the title so the opened menu can't overlap it. */
  .site-header{
    flex-wrap:wrap !important;
    padding:14px 20px !important;
    position:relative !important;
  }
  .site-title{ font-size:17px !important; }
  /* when TOGGLED, drop the whole nav to a full-width row below the
     branding. flex-basis:100% is the load-bearing part — without it
     the flex container sizes the nav by content, leaving the stack
     floating right and inset from the left edge.                    */
  .site-header .main-navigation.toggled,
  .site-header .main-navigation:has(.menu-toggle[aria-expanded="true"]){
    flex-basis:100% !important;
    width:100% !important;
    max-width:100% !important;
    order:3;
    text-align:left !important;
  }

  /* --- 4a. banner: keep the first item only, hide dots + readout ---
     (nth-child math fails here because the dots are children too, so
     .cb-item:nth-child(n+3) hid the wrong things and orphaned dots.) */
  .kdj-banner{
    gap:8px;
    padding:5px 16px;
    font-size:8px;
    justify-content:flex-start;
  }
  .kdj-banner .cb-item ~ .cb-item{ display:none; }
  .kdj-banner .cb-dot{ display:none !important; }
  .kdj-banner .cb-right{ display:none !important; }

  /* --- 4b. the Portfolio split stacks vertically --- */
  .home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns{
    display:block !important;
    margin-top:18px !important;
  }
  .home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column{
    flex-basis:100% !important;
    max-width:100% !important;
    padding:36px 22px 40px !important;
  }
  /* ghost letters shrink so they don't swamp a narrow panel */
  .home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column::after{
    font-size:120px;
    bottom:-28px;
  }
  .home #portfolio > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column > h3.wp-block-heading{
    font-size:26px !important;
  }

  /* --- 4c. History cards stack --- */
  .home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns{
    display:block !important;
  }
  .home #history > .wp-block-group__inner-container > .wp-block-group > .wp-block-columns > .wp-block-column{
    width:100% !important;
    margin-bottom:16px !important;
    padding:22px !important;
  }

  /* --- 4d. section bands + headings tighten --- */
  .home #history,
  .home #portfolio{
    padding-left:16px !important;
    padding-right:16px !important;
  }
  .home #history > .wp-block-group__inner-container > h2.wp-block-heading,
  .home #portfolio > .wp-block-group__inner-container > h2.wp-block-heading{
    font-size:24px !important;
    padding-left:34px !important;
  }
  /* the big section ghost letters shrink too */
  .home #history::after{ font-size:130px; }

  /* --- 4e. archive pages (Presentations / Publications) --- */
  .page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container::before,
  .page-id-248 .wp-block-group[id^="20"] > .wp-block-group__inner-container::before{
    font-size:24px;
    padding:30px 0 16px 62px;
  }
  .page-id-23 .wp-block-group[id^="20"] > .wp-block-group__inner-container::after,
  .page-id-248 .wp-block-group[id^="20"] > .wp-block-group__inner-container::after{
    width:56px;
    font-size:11px;
  }
  /* hide the flanking hairline — no room for it on a phone */
  .page-id-23 .wp-block-group[id^="20"]::after,
  .page-id-248 .wp-block-group[id^="20"]::after{
    display:none;
  }
  /* year-nav pills wrap comfortably */
  .page-id-23 p.wp-block-paragraph a[href^="#20"],
  .page-id-248 p.wp-block-paragraph a[href^="#20"]{
    padding:8px 12px !important;
    font-size:11px !important;
  }

  /* the search field can't overflow the narrow header */
  .astm-search-menu input[type="search"]{ max-width:100% !important; }
}


/* ============================================================
   WORDMARK HOVER DIAMOND
   Mirrors the BEPCO .nav-logo behaviour: a small amber diamond
   scales in to the right of the wordmark on hover.
   Targets the <a> inside .site-title (not the <p>, which is
   full-width — the diamond must sit beside the TEXT).
   ============================================================ */
.site-title a{
  position:relative;
  display:inline-block;
  text-decoration:none;
}
.site-title a::after{
  content:'';
  position:absolute;
  right:-14px;
  top:50%;
  width:5px;
  height:5px;
  background:var(--amber);
  transform:translateY(-50%) rotate(45deg) scale(0);
  transition:transform 0.3s cubic-bezier(0.22,0.61,0.36,1);
  pointer-events:none;
}
.site-title a:hover::after{
  transform:translateY(-50%) rotate(45deg) scale(1);
}


/* ============================================================
   SUB-MENU LINKS → same drawing amber underline
   The top-level rule uses .menu > li > a (direct child), so it
   never reached the dropdown items. These are stacked rows in an
   absolutely-positioned panel, so the rule sits tighter to the
   text baseline than on the 56px-tall top bar.
   ============================================================ */
@media (min-width:783px){
  .main-navigation .menu .sub-menu li > a{
    position:relative;
    transition:color 0.2s cubic-bezier(0.22,0.61,0.36,1),
               background 0.2s cubic-bezier(0.22,0.61,0.36,1);
  }
  .main-navigation .menu .sub-menu li > a::after{
    content:'';
    position:absolute;
    left:16px; right:16px;
    bottom:6px;
    height:1px;
    background:var(--amber);
    transform:scaleX(0);
    transform-origin:left;
    transition:transform 0.3s cubic-bezier(0.22,0.61,0.36,1);
    pointer-events:none;
  }
  .main-navigation .menu .sub-menu li > a:hover::after{
    transform:scaleX(1);
  }
  /* active (current page) submenu item holds its underline */
  .main-navigation .menu .sub-menu li.current-menu-item > a::after,
  .main-navigation .menu .sub-menu li.current_page_item > a::after{
    transform:scaleX(1);
  }
  .main-navigation .menu .sub-menu li.current-menu-item > a,
  .main-navigation .menu .sub-menu li.current_page_item > a{
    color:var(--amber) !important;
    background:rgba(200,134,10,0.06);
  }
}


/* ============================================================
   NAV LINKS: no default underline anywhere.
   The global `a{}` rule (line ~67) sets text-decoration-color but
   never text-decoration:none, so nav links keep the browser's
   default underline. It's invisible against the muted grey text at
   rest, but shows as a black line once the text darkens on hover —
   competing with the amber rule that IS the intended underline.
   ============================================================ */
.main-navigation a,
.main-navigation .menu li > a,
.main-navigation .menu > li > a,
.main-navigation .menu li.menu-item-has-children > a,
.main-navigation .menu .sub-menu li > a,
.main-navigation a:hover,
.main-navigation .menu li > a:hover,
.main-navigation .menu > li > a:hover,
.main-navigation .menu li.menu-item-has-children > a:hover,
.main-navigation .menu .sub-menu li > a:hover,
.main-navigation a:focus,
.main-navigation .menu li > a:focus{
  text-decoration:none !important;
  text-decoration-line:none !important;
  box-shadow:none !important;
  background-image:none !important;
}
/* border-bottom removal is DESKTOP-ONLY — the mobile stacked menu uses
   border-bottom for its row dividers and must keep them.             */
@media (min-width:783px){
  .main-navigation a,
  .main-navigation .menu li > a,
  .main-navigation .menu li.menu-item-has-children > a,
  .main-navigation .menu .sub-menu li > a,
  .main-navigation .menu li > a:hover{
    border-bottom:none !important;
  }
}


/* ================================================================
   MOBILE MENU — OPEN STATE, SELECTOR NET  (≤782px)
   The toggle demonstrably works (the menu opens), but the opened
   panel was still rendering right-aligned and content-width, which
   means the open-state selectors weren't matching. Libre's toggled
   class convention is unconfirmed, so this covers every plausible
   one at once, plus the aria-expanded state on the button.

   Whichever matches, the result is identical: the nav becomes a
   full-width row (flex-basis:100% is the load-bearing property in a
   flex header — width alone loses) and the list stacks flush left.
   ================================================================ */
@media screen and (max-width:782px){

  /* --- the nav itself goes full-width when open --- */
  .site-header .main-navigation.toggled,
  .site-header .main-navigation.is-open,
  .site-header .main-navigation.active,
  .site-header .main-navigation.open,
  .site-header .main-navigation.nav-open,
  .site-header .main-navigation.menu-open,
  .site-header nav.main-navigation:has(.menu-toggle[aria-expanded="true"]),
  .site-header nav.main-navigation:has(ul#primary-menu:not([hidden])) {
    flex-basis:100% !important;
    width:100% !important;
    max-width:100% !important;
    order:3 !important;
    text-align:left !important;
  }

  /* --- the container + list: full width, flush left, stacked --- */
  .site-header .main-navigation.toggled .menu-primary-container,
  .site-header .main-navigation.is-open .menu-primary-container,
  .site-header .main-navigation.active .menu-primary-container,
  .site-header .main-navigation.open .menu-primary-container,
  .site-header .main-navigation.nav-open .menu-primary-container,
  .site-header .main-navigation.menu-open .menu-primary-container,
  .site-header nav.main-navigation:has(.menu-toggle[aria-expanded="true"]) .menu-primary-container{
    display:block !important;
    width:100% !important;
    max-width:100% !important;
    float:none !important;
    position:static !important;
    text-align:left !important;
    margin:10px 0 0 !important;
    padding:0 !important;
  }

  .site-header .main-navigation.toggled ul#primary-menu,
  .site-header .main-navigation.is-open ul#primary-menu,
  .site-header .main-navigation.active ul#primary-menu,
  .site-header .main-navigation.open ul#primary-menu,
  .site-header .main-navigation.nav-open ul#primary-menu,
  .site-header .main-navigation.menu-open ul#primary-menu,
  .site-header nav.main-navigation:has(.menu-toggle[aria-expanded="true"]) ul#primary-menu{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    width:100% !important;
    max-width:100% !important;
    float:none !important;
    position:static !important;
    text-align:left !important;
    margin:0 !important;
    padding:0 !important;
  }

  /* --- every row spans the full width, flush left --- */
  .site-header .main-navigation ul#primary-menu > li{
    width:100% !important;
    max-width:100% !important;
    float:none !important;
    display:block !important;
    text-align:left !important;
    margin:0 !important;
  }
}


/* ================================================================
   MOBILE MENU — DEFEAT THE THEME'S 240px NAV WIDTH  (≤782px)
   Confirmed via inspector: when .main-navigation is .toggled, Libre
   gives the nav a fixed width of 240px (its own slide-out panel
   width). That fixed width is why the open menu rendered as a narrow
   right-floating column no matter what flex-basis was set — the flex
   algorithm was sizing a 240px item, not a full-width one.

   Everything below simply forces that width back to 100%.
   ================================================================ */
@media screen and (max-width:782px){
  #site-navigation.main-navigation.toggled,
  nav#site-navigation.main-navigation.toggled,
  .site-header nav#site-navigation.main-navigation.toggled,
  .site-header .main-navigation.toggled{
    width:100% !important;
    min-width:100% !important;
    max-width:100% !important;
    flex-basis:100% !important;
    flex-grow:1 !important;
    flex-shrink:0 !important;
    left:auto !important;
    right:auto !important;
    position:static !important;
    transform:none !important;
    order:3 !important;
    text-align:left !important;
  }
  /* and the container/list inside it */
  #site-navigation.main-navigation.toggled .menu-primary-container,
  #site-navigation.main-navigation.toggled ul#primary-menu{
    width:100% !important;
    min-width:100% !important;
    max-width:100% !important;
    float:none !important;
    position:static !important;
    transform:none !important;
    text-align:left !important;
  }
}


/* ================================================================
   MOBILE MENU — THE ACTUAL FIX: .nav-wrapper  (≤782px)
   Found by mapping the real header structure:

     header.site-header
       └ div.site-branding
       └ div.nav-wrapper          ← the 240px lives HERE
           └ nav#site-navigation.main-navigation
               └ button.menu-toggle
               └ div.menu-primary-container
                   └ ul#primary-menu

   Every previous override forced the NAV to width:100% — but 100%
   resolves against its parent, and that parent (.nav-wrapper) is
   240px. So the nav was correctly becoming 100% of 240px. The
   wrapper is also the header's actual flex child, which is why
   flex-wrap on .site-header never moved the nav either.
   ================================================================ */
@media screen and (max-width:782px){
  /* WHEN OPEN the wrapper becomes a full-width row.
     This MUST be scoped to .toggled — applying it unconditionally
     makes the wrapper claim a full-width row even while closed, and
     since the toggle is absolutely positioned out of it, that row
     renders as an empty band under the wordmark (the mystery gap).  */
  .site-header:has(.main-navigation.toggled) .nav-wrapper{
    width:100% !important;
    min-width:100% !important;
    max-width:100% !important;
    flex-basis:100% !important;
    flex-grow:1 !important;
    flex-shrink:0 !important;
    position:static !important;
    float:none !important;
    text-align:left !important;
    order:3 !important;
  }
  /* WHEN CLOSED the wrapper takes no space at all — the absolutely
     positioned MENU button is the only thing in it.                 */
  .site-header:not(:has(.main-navigation.toggled)) .nav-wrapper{
    flex-basis:auto !important;
    width:auto !important;
    min-width:0 !important;
    flex-grow:0 !important;
    min-height:0 !important;
    height:0 !important;
    margin:0 !important;
    padding:0 !important;
  }
}


/* ================================================================
   MOBILE MENU — kill the stray dark rule under the nav  (≤782px)
   Now that .nav-wrapper / .main-navigation run full width, the
   theme's own bottom border on the nav (previously hidden inside a
   240px box) spans the screen as a dark line. Remove it from the
   wrapper, the nav, the container and the list, and let the row
   dividers we define be the only lines in the menu.
   ================================================================ */
@media screen and (max-width:782px){
  /* strip the theme's full-width dark rule from the wrapper/nav/list —
     it was hidden inside the old 240px box and now spans the screen  */
  .site-header .nav-wrapper,
  .site-header .main-navigation,
  .site-header .main-navigation.toggled,
  .site-header .main-navigation .menu-primary-container,
  .site-header .main-navigation ul#primary-menu,
  .site-header .main-navigation ul#primary-menu > li:last-child,
  .site-header .main-navigation ul#primary-menu > li:last-child > a{
    border-bottom:none !important;
    box-shadow:none !important;
    margin-bottom:0 !important;
    padding-bottom:0 !important;
  }
  /* ...but the MENU button keeps its own short underline (this is the
     line WFP shows — it reads as the toggle's baseline, not a divider
     across the whole header).                                        */
  .site-header .main-navigation .menu-toggle{
    border:none !important;
    border-bottom:1px solid rgba(30,32,26,0.55) !important;
    box-shadow:none !important;
  }
}

/* close the gap between the nav and the content below it (mobile) */
@media screen and (max-width:782px){
  .site-header{
    padding-bottom:0 !important;
  }
  .site-header .nav-wrapper{
    margin-bottom:0 !important;
    padding-bottom:0 !important;
  }
  /* when CLOSED the wrapper shouldn't reserve a full row of height —
     the absolutely-positioned toggle is the only thing in it         */
  .site-header:not(:has(.main-navigation.toggled)) .nav-wrapper{
    min-height:0 !important;
    height:auto !important;
  }
}


/* ================================================================
   MOBILE — close the gap below the nav  (≤782px)
   Confirmed via inspector: the space belongs to #masthead.site-header.

   Every header rule in this file targets the CLASS (.site-header),
   but the element also carries the ID #masthead — and an ID rule in
   the theme outranks all of them. That's why zeroing padding on
   .site-header did nothing. Targeting by ID here so it actually wins,
   and covering padding / margin / min-height / row-gap since the
   space could be any of them.
   ================================================================ */
@media screen and (max-width:782px){
  #masthead.site-header,
  header#masthead{
    padding-bottom:0 !important;
    margin-bottom:0 !important;
    min-height:0 !important;
    row-gap:0 !important;
    gap:0 !important;
    align-content:flex-start !important;
  }
  /* the wrapper is the header's flex child — make sure it isn't
     stretching to a taller line box                                 */
  #masthead.site-header .nav-wrapper{
    margin-bottom:0 !important;
    padding-bottom:0 !important;
    min-height:0 !important;
    align-self:flex-start !important;
  }
}


/* ================================================================
   MOBILE — header height  (≤782px)
   Box model (inspector) on #masthead.site-header showed:
     height 78.42px · padding ~14 top/bottom · margin-top 30
   The 30px margin is intentional (it clears the fixed banner).
   The excess height came from the header being a WRAPPING flex
   container: even with the nav-wrapper collapsed, flex-wrap:wrap
   let it start a second line. When the menu is CLOSED there is only
   one row to show, so don't allow wrapping at all.
   ================================================================ */
@media screen and (max-width:782px){
  /* CLOSED: single row, no wrap, tight padding */
  #masthead.site-header:not(:has(.main-navigation.toggled)){
    flex-wrap:nowrap !important;
    align-items:center !important;
    min-height:0 !important;
    height:auto !important;
    padding-top:10px !important;
    padding-bottom:10px !important;
  }
  /* OPEN: allow the wrap so the menu can take its own full row */
  #masthead.site-header:has(.main-navigation.toggled){
    flex-wrap:wrap !important;
    padding-top:10px !important;
    padding-bottom:0 !important;
  }
  /* the branding row shouldn't add its own height */
  #masthead.site-header .site-branding{
    min-height:0 !important;
    margin:0 !important;
    padding:0 !important;
  }
  #masthead.site-header .site-title{
    margin:0 !important;
    line-height:1.2 !important;
  }
}


/* ================================================================
   iOS FIXES  (≤782px) — found by testing on an actual iPhone rather
   than a narrowed desktop window; the two environments differ.

   1. MENU underline wasn't amber on device.
   2. The open menu's last item (CONTACT) was clipped.
      Cause: `html, body { overflow-x:hidden }` (added earlier to stop
      the 100vw bands rubber-banding sideways). On iOS Safari that
      creates a clipping context that crops descendants. Scope the
      clip to the x-axis on a wrapper instead of the root elements,
      and let the header/menu overflow freely.
   ================================================================ */
@media screen and (max-width:782px){

  /* --- 2. let the open menu overflow the header without being cropped */
  #masthead.site-header,
  #masthead.site-header .nav-wrapper,
  #masthead.site-header .main-navigation,
  #masthead.site-header .main-navigation .menu-primary-container,
  #masthead.site-header .main-navigation ul#primary-menu{
    overflow:visible !important;
    max-height:none !important;
  }
  /* when open, the header must be free to grow to fit the whole list */
  #masthead.site-header:has(.main-navigation.toggled){
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
  }

  /* --- 1. the MENU toggle's underline: grey at rest, amber when the
     menu is actually open --- */
  #masthead.site-header .main-navigation .menu-toggle{
    border:none !important;
    border-bottom:1px solid rgba(30,32,26,0.45) !important;
    box-shadow:none !important;
    color:rgba(30,32,26,0.6) !important;
  }
  #masthead.site-header .main-navigation.toggled .menu-toggle{
    color:var(--amber) !important;
    border-bottom-color:var(--amber) !important;
  }
}

/* keep the wordmark in the SAME position whether the menu is open or
   closed. Opening the menu makes the header wrap, which was shifting
   the branding vertically as the flex line box changed height.       */
@media screen and (max-width:782px){
  #masthead.site-header .site-branding{
    align-self:center !important;
    flex:0 1 auto !important;
    min-height:0 !important;
  }
  #masthead.site-header:has(.main-navigation.toggled) .site-branding{
    align-self:center !important;
  }
  /* the toggle is absolutely positioned, so anchor it to the branding
     row's vertical centre in BOTH states rather than the header box  */
  #masthead.site-header .main-navigation .menu-toggle{
    top:50% !important;
    transform:translateY(-50%) !important;
    margin-top:0 !important;
  }
  #masthead.site-header:has(.main-navigation.toggled) .main-navigation .menu-toggle{
    top:22px !important;
    transform:none !important;
  }
}