/* Self-hosted webfonts — Fraunces and Inter, latin + latin-ext.
   Previously an @import of fonts.googleapis.com at the top of this file, which
   forced four serialised round trips across three hosts before text could render
   in the right face. Served from our own domain with a one-year immutable cache
   (see public/_headers). Regenerate with rebuild/tool/selfhost-fonts.mjs. */
@font-face{
  font-family:'Fraunces'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/fraunces-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Fraunces'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/fraunces-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Fraunces'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/fraunces-500-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Fraunces'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/fraunces-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/inter-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/inter-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/inter-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/inter-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:600; font-display:swap;
  src:url('/fonts/inter-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:600; font-display:swap;
  src:url('/fonts/inter-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/inter-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Inter'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/inter-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* ============================================================================
   WEFI site stylesheet — workshop-efi.com
   Theme: "next up" — Slate & Teal, Fraunces + Inter.

   This is the whole design. There is no other stylesheet, and nothing here
   compensates for a CMS. Every class is ours.

   Vocabulary
     page scopes   body.w-talk | body.w-page | body.w-listing | body.w-home
     layout        .w-main  .w-prose  .w-section  .w-container
     content       .w-heading  .w-text  .w-divider  .w-btn
     post parts    .w-meta  .w-postnav  .w-navlinks
     cards         .w-cards  .w-card
     home          .w-hero  .w-hero-left  .w-hero-right  .w-next  .w-upcoming  .w-past
     chrome        .wefi-header .wefi-announce .wefi-nav .wefi-menu .wefi-footer
                   (hand-written markup in sites/workshop-efi/partials/ —
                    run `node build-partials.mjs` after editing those)

   Sections
     1 tokens · 2 base · 3 header · 4 footer · 5 layout · 6 content blocks
     7 talk pages · 8 cards · 9 home · 10 search · 11 signup
   ========================================================================= */

/* ------------------------------------------------------------- 1. tokens */
:root{
  --w-ground:#ffffff; --w-panel:#eef2f3; --w-ink:#202733; --w-muted:#5f6b76;
  --w-accent:#2f6e6a; --w-accent2:#c08a2d; --w-rule:#dde3e5; --w-dark:#202733;
  --w-head:Fraunces, Georgia, serif;
  --w-body:Inter, system-ui, -apple-system, sans-serif;
  --w-radius:14px;
  --w-content:1440px;   /* full-width band cap */
  --w-column:860px;     /* reading column */
  --w-measure:680px;    /* text measure inside the reading column */
  --w-gutter:40px;      /* space either side */
}

/* --------------------------------------------------------- 2. base type */
*, *::before, *::after{ box-sizing:border-box; }
html, body{ background:var(--w-ground); color:var(--w-ink); }
body{ font-family:var(--w-body); font-size:18px; line-height:1.65; margin:0; }

h1, h2, h3, h4, h5, h6{
  font-family:var(--w-head); color:var(--w-ink);
  text-transform:none; letter-spacing:0; font-weight:700; line-height:1.15;
  margin:0 0 .5em;
}
p{ margin:0 0 1.1em; }
ul, ol{ margin:1em 0; padding-left:40px; }
li{ margin:.2em 0; }
img, video{ max-width:100%; height:auto; }

a{ color:var(--w-accent); text-decoration:underline;
   text-decoration-color:var(--w-rule); text-underline-offset:3px; }
a:hover, a:focus{ text-decoration-color:var(--w-accent); }
/* A heading wrapping a link is still a heading. */
h1 > a, h2 > a, h3 > a, h4 > a, h5 > a, h6 > a{ color:inherit; text-decoration:none; }
h1 > a:hover, h2 > a:hover, h3 > a:hover, h4 > a:hover{ color:var(--w-accent); }

/* Visually hidden, but kept for screen readers. Without this they render as
   stray visible text, since no theme stylesheet supplies it any more. */
.screen-reader-text, .says, .skip-link{
  position:absolute !important; width:1px; height:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); clip-path:inset(50%); white-space:nowrap;
}
.skip-link:focus{
  position:static !important; width:auto; height:auto; clip:auto; clip-path:none;
  padding:10px 16px; background:var(--w-dark); color:#fff;
}

/* The one full-width band rule. Everything that should line up uses this. */
.wefi-bar, .w-hero, .w-past, .w-upcoming, .w-container, .wefi-search-wrap{
  width:100%; max-width:var(--w-content); margin-inline:auto;
  padding-inline:var(--w-gutter);
}

/* ----------------------------------------------------------- 3. header */
.wefi-header{ font-family:var(--w-body); }

.wefi-announce{ background:var(--w-accent); color:#fff; }
.wefi-announce .wefi-bar{
  display:flex; align-items:center; justify-content:center; gap:18px;
  padding-block:10px; flex-wrap:wrap;
}
.wefi-announce-text{ margin:0; color:#fff; font-size:16px; }
.wefi-announce-btn{
  background:#fff; color:var(--w-dark); text-decoration:none;
  border-radius:var(--w-radius); padding:8px 18px; font-weight:600; font-size:15px;
  white-space:nowrap; transition:background .15s ease, color .15s ease;
}
.wefi-announce-btn:hover, .wefi-announce-btn:focus{ background:var(--w-dark); color:#fff; }

.wefi-nav{ background:var(--w-dark); }
.wefi-nav .wefi-bar{
  display:flex; align-items:center; justify-content:space-between;
  gap:24px; min-height:72px;
}
.wefi-wordmark{
  font-family:var(--w-head); font-weight:700; font-size:26px; letter-spacing:.02em;
  color:#fff; text-decoration:none; line-height:1; flex:0 0 auto;
}
.wefi-wordmark:hover{ color:#fff; }

.wefi-menu{
  display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap;
  gap:4px 26px; list-style:none; margin:0; padding:0;
}
.wefi-menu > li{ position:relative; }
.wefi-menu a{
  display:inline-block; color:#fff; text-decoration:none;
  font-size:15px; font-weight:500; padding:6px 0; line-height:1.3;
  transition:color .15s ease, box-shadow .15s ease;
}
.wefi-menu a:hover, .wefi-menu a:focus{
  color:var(--w-accent2); box-shadow:inset 0 -2px 0 var(--w-accent2);
}
.wefi-menu a[aria-current="page"]{ color:#fff; box-shadow:inset 0 -2px 0 #fff; }

.wefi-submenu{
  position:absolute; left:0; top:100%; z-index:40; min-width:280px;
  background:var(--w-dark); border:1px solid rgba(255,255,255,.18);
  list-style:none; margin:0; padding:6px 0;
  opacity:0; visibility:hidden; transform:translateY(-4px);
  transition:opacity .15s ease, transform .15s ease, visibility .15s;
}
.wefi-has-sub:hover > .wefi-submenu,
.wefi-has-sub:focus-within > .wefi-submenu{ opacity:1; visibility:visible; transform:none; }
.wefi-submenu a{ display:block; padding:9px 16px; font-size:14px; box-shadow:none !important; }
.wefi-submenu a:hover, .wefi-submenu a:focus{
  background:rgba(255,255,255,.08); color:var(--w-accent2);
}

/* mobile menu button — drawn in CSS; the icon font was never migrated */
.wefi-menu-checkbox{ position:absolute; opacity:0; pointer-events:none; }
.wefi-menu-button{ display:none; cursor:pointer; padding:10px 0; }
.wefi-menu-button span,
.wefi-menu-button span::before,
.wefi-menu-button span::after{
  display:block; width:24px; height:2px; background:#fff; border-radius:2px; content:'';
}
.wefi-menu-button span{ position:relative; }
.wefi-menu-button span::before{ position:absolute; top:-8px; }
.wefi-menu-button span::after{ position:absolute; top:8px; }

@media (max-width:900px){
  .wefi-nav .wefi-bar{ flex-wrap:wrap; padding-block:12px; }
  .wefi-menu-button{ display:block; }
  .wefi-menu{
    flex-basis:100%; display:none; flex-direction:column;
    align-items:flex-start; gap:0; padding-bottom:8px;
  }
  .wefi-menu-checkbox:checked ~ .wefi-menu{ display:flex; }
  .wefi-menu > li{ width:100%; }
  .wefi-menu a{ display:block; padding:10px 0; width:100%; }
  .wefi-submenu{
    position:static; opacity:1; visibility:visible; transform:none;
    border:0; border-left:2px solid rgba(255,255,255,.2);
    margin:0 0 6px 10px; padding:0 0 0 12px; min-width:0;
  }
}

/* ----------------------------------------------------------- 4. footer */
.wefi-footer{ background:var(--w-dark); border-top:4px solid var(--w-accent); margin-top:40px; }
.wefi-footer .wefi-bar{
  display:flex; align-items:center; gap:14px 30px; flex-wrap:wrap; min-height:72px;
}
.wefi-footer .wefi-wordmark{ margin-right:14px; }
.wefi-footer-links{
  display:flex; align-items:center; gap:10px 28px; flex-wrap:wrap;
  list-style:none; margin:0; padding:0;
}
.wefi-footer-links a{
  color:#fff; text-decoration:none; font-size:15px; font-weight:500;
  padding:4px 0; transition:color .15s ease, box-shadow .15s ease;
}
.wefi-footer-links a:hover, .wefi-footer-links a:focus{
  color:var(--w-accent2); box-shadow:inset 0 -2px 0 var(--w-accent2);
}

/* ----------------------------------------------------------- 5. layout */
/* ONE content column for every page.
   The capture had two, for no reason anyone would defend: talk pages sat in an
   860px column while the Elementor-built pages ran the full 1180px band — about
   131 characters per line, roughly double a comfortable measure. Both now use
   the same column, which is the single biggest readability change here. */
.w-main{
  width:100%; max-width:var(--w-column); margin-inline:auto;
  padding:44px var(--w-gutter) 40px;
}
.w-prose{ font-size:18px; line-height:1.7; max-width:100%; }

/* Built pages are a vertical stack of sections inside that column. */
.w-section + .w-section{ margin-top:34px; }
.w-col{ max-width:100%; }
.w-row{ display:grid; grid-template-columns:1fr 1fr; gap:40px; }
@media (max-width:768px){ .w-row{ grid-template-columns:1fr; gap:24px; } }

/* Section headings. Left-aligned and on the site's own scale — the 60px centred
   treatment came from Elementor's per-page CSS and sat oddly above left-aligned
   body copy. */
.w-heading-title{
  font-size:clamp(24px,2.6vw,30px); font-weight:700; text-align:left;
  line-height:1.2; margin:0 0 14px;
}
.w-section + .w-section .w-heading-title{ margin-top:0; }

/* 404. Served by Cloudflare Pages for any missing route, so it keeps the site
   header — a dead end with no way back is worse than the error itself. */
.w-404{ text-align:center; padding-block:14vh 16vh; }
.w-404 h1{ font-size:clamp(30px,5vw,46px); margin:0 0 14px; }
.w-404 p{ color:var(--w-muted); }
.w-404 .w-btn{ margin-top:12px; }

.w-spacer{ height:28px; }
.w-video{ margin:26px 0; }
.w-video iframe{
  width:100%; aspect-ratio:16/9; height:auto; border:0;
  border-radius:var(--w-radius);
}

/* Click-to-load video. A YouTube embed pulls ~1.7MB before it plays, and some
   pages carry four; the thumbnail is 16KB. The first click swaps in the real
   player with autoplay, so it is still one click to watch. */
.w-facade{ position:relative; }
.w-video-play{
  display:block; width:100%; padding:0; border:0; background:none; cursor:pointer;
  border-radius:var(--w-radius); overflow:hidden; line-height:0; position:relative;
}
.w-video-play img{
  width:100%; aspect-ratio:16/9; height:auto; object-fit:cover; display:block;
  background:var(--w-panel);
}
.w-video-icon{
  position:absolute; inset:0; margin:auto; width:68px; height:48px;
  border-radius:12px; background:rgba(32,39,51,.78);
  transition:background .15s ease;
}
.w-video-icon::after{
  content:''; position:absolute; inset:0; margin:auto; width:0; height:0;
  border-style:solid; border-width:11px 0 11px 19px;
  border-color:transparent transparent transparent #fff;
}
.w-video-play:hover .w-video-icon,
.w-video-play:focus-visible .w-video-icon{ background:var(--w-accent); }
.w-video-play:focus-visible{ outline:3px solid var(--w-accent); outline-offset:3px; }
.w-facade noscript a{ display:inline-block; margin-top:8px; font-size:15px; }

/* ---------------------------------------------------- 6. content blocks */
.w-heading{ text-align:left; }
.w-heading h1{ font-size:38px; }
.w-heading h2{ font-size:32px; }
.w-heading h3{ font-size:28px; }

.w-text{ font-family:var(--w-body); }
.w-text p{ color:var(--w-ink); font-size:18px; line-height:1.65; }
.w-text a{ color:var(--w-accent); }
.w-text h2{ font-size:32px; }
.w-text h3{ font-size:28px; }
.w-text h4{ font-size:22px; }

.w-divider{ border:0; border-top:1px solid var(--w-rule); width:100%; margin:30px 0; }

.w-btn{
  display:inline-block; padding:8px 18px;
  font-size:14px; font-weight:600; text-decoration:none; white-space:nowrap;
  background:transparent; color:var(--w-accent);
  border:1.5px solid var(--w-accent); border-radius:var(--w-radius);
  font-family:var(--w-body);
  transition:background .2s ease, color .2s ease;
}
.w-btn:hover, .w-btn:focus{ background:var(--w-accent); color:#fff; }

/* ------------------------------------------------------- 7. talk pages */
/* The paper title, as the page's own heading. Plain text, never a link.
   Sits inside .w-main, so it takes the column's padding rather than its own. */
.w-title{
  font-size:clamp(28px,3.2vw,40px); line-height:1.15;
  margin:0 0 26px;
}

.w-meta{
  display:flex; flex-wrap:wrap; align-items:center; gap:6px 20px; margin:0 0 8px;
  font-size:14px; color:var(--w-muted);
}
.w-meta a{ color:var(--w-muted); text-decoration:none; }
.w-meta a:hover, .w-meta a:focus{ text-decoration:underline; }
.w-meta .byline, .w-meta .posted-on{ display:inline-flex; align-items:center; gap:6px; }
.w-meta svg{ width:16px; height:16px; fill:currentColor; flex:0 0 auto; }

.w-prose h2{ font-size:26px; margin:1.6em 0 .5em; }
.w-prose h3{ font-size:21px; margin:1.5em 0 .5em; }
.w-prose p{ margin:0 0 1.1em; }
.w-prose iframe, .w-prose img{ max-width:100%; height:auto; border-radius:var(--w-radius); }
/* No width:100% — the embeds carry their own width attribute (640px on talk
   pages) and forcing full width makes every video wider than it was. */
.w-prose iframe{ aspect-ratio:16/9; }
.w-prose blockquote{
  border-left:3px solid var(--w-accent); margin:1.4em 0; padding:.2em 0 .2em 18px;
  color:var(--w-muted);
}
.w-prose ul, .w-prose ol{ margin:18px 0; padding-left:40px; }

/* Sits inside .w-main, so it inherits the column rather than setting its own
   max-width. The 40px inline padding is the capture's own: measured 700px wide
   at left 290 inside a 780px column. */
.w-postnav{ padding:0 var(--w-gutter) 50px; }
.w-navlinks{
  border-top:1px solid var(--w-rule); padding-top:18px;
  display:flex; gap:24px; flex-wrap:wrap;
}
.w-navlinks a{ font-weight:600; color:var(--w-accent); text-decoration:none; }
.w-navlinks a:hover{ text-decoration:underline; }
.w-navlinks .nav-previous, .w-navlinks .nav-next{ flex:1 1 260px; min-width:0; }

/* ------------------------------------------------- 8. schedule cards */
.w-cards{ display:flex; flex-wrap:wrap; align-items:stretch; gap:30px; margin:0 0 30px; }
.w-card{
  flex:1 1 320px; min-width:0; margin:0; padding:0;
  background:#fff; border:1px solid var(--w-rule); border-radius:var(--w-radius);
  overflow:hidden; display:flex; flex-direction:column;
  transition:box-shadow .2s ease;
}
.w-card:hover{ box-shadow:0 6px 18px rgba(0,0,0,.08); }
.w-card > p{
  margin:0; padding:5px 20px; line-height:1.5; color:var(--w-muted); font-size:16px;
}
.w-card > p:first-child{
  background:var(--w-accent); color:#fff; padding:12px 20px;
  font-weight:600; font-size:15px; letter-spacing:.06em; text-transform:uppercase;
}
.w-card > p:nth-child(2){ padding-top:16px; }
.w-card > p:last-child{ padding-bottom:18px; }
.w-card b{ color:var(--w-ink); }
/* The card is a column flex box, so the button would stretch full width. */
.w-card .w-btn{ align-self:center; width:auto; margin:10px 20px 20px; }

@media (max-width:768px){
  .w-cards{ gap:16px; margin-bottom:16px; }
  .w-card{ flex-basis:100%; }
}

/* -------------------------------------------- 9. home: the "next up" hero */
.w-hero{
  padding-block:48px 40px;
  display:grid; grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);
  gap:56px; align-items:start;
}
.w-hero-left h1{
  font-size:clamp(30px,3.4vw,44px); line-height:1.1; text-align:left; margin:0 0 22px;
}
.w-eyebrow{
  font-size:15px; margin:26px 0 8px;
  text-transform:uppercase; letter-spacing:.08em;
  font-family:var(--w-body); color:var(--w-muted); font-weight:600;
}
.w-hero-left ul{ margin:0 0 0 18px; padding:0; }
.w-hero-left p, .w-hero-left li{ font-size:18px; }

.w-hero-right{
  position:sticky; top:24px; background:var(--w-panel);
  border:1px solid var(--w-rule); border-radius:var(--w-radius);
  padding:26px 28px 28px;
}
.w-next-label{
  font-size:13px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color:var(--w-accent); margin-bottom:12px;
}
.w-next{ display:block; background:transparent; border:0; padding:0; margin:0; width:100%; }
.w-next > p{
  display:block; width:100%; margin:0; padding:4px 0;
  font-size:16px; line-height:1.5; color:var(--w-muted);
}
.w-next > p:first-child{
  font-family:var(--w-head); font-size:clamp(22px,2.1vw,30px); font-weight:700;
  color:var(--w-ink); background:transparent; letter-spacing:0; text-transform:none;
  padding:0 0 10px; border:0;
}
.w-next > p:nth-child(2){
  padding-top:10px; border-top:1px solid var(--w-rule);
  font-size:17px; color:var(--w-ink);
}
.w-next b{ color:var(--w-ink); }
.w-hero-right .w-btn{ margin:18px 0 0; }

/* the remaining sessions, as a ruled list (home page only) */
.w-upcoming{
  background:transparent; border-top:1px solid var(--w-rule);
  padding-block:20px 10px;
}
.w-upcoming h2{
  text-align:left; font-size:22px;
  text-transform:uppercase; letter-spacing:.08em;
  font-family:var(--w-body); color:var(--w-muted); font-weight:600;
}
.w-upcoming .w-cards{ display:block; margin:0; }
.w-upcoming .w-card{
  background:transparent; border:0; border-top:1px solid var(--w-rule); border-radius:0;
  box-shadow:none; margin:0; padding:18px 0 16px; overflow:visible;
  display:grid; grid-template-columns:190px 1fr; column-gap:28px;
}
.w-upcoming .w-card:hover{ box-shadow:none; }
.w-upcoming .w-card > p:first-child{
  grid-row:1 / span 8; background:transparent; color:var(--w-ink);
  font-family:var(--w-head); font-weight:700; font-size:18px;
  letter-spacing:0; text-transform:none; padding:0;
}
.w-upcoming .w-card > p{ padding:2px 0; font-size:17px; }
.w-upcoming .w-btn{ grid-column:2; justify-self:start; align-self:start; margin:10px 0 0; }

/* ------------------------------------------------ Fellows roster (design B)
   A ruled list rather than boxes: least visual weight for the most people, and
   it stays readable as the roster grows. Current Fellows are one line each;
   graduates carry a placement sentence beneath. */
.w-roster{ list-style:none; margin:0 0 6px; padding:0; }
.w-roster li{ padding:12px 0; border-bottom:1px solid var(--w-rule); }
.w-roster-name{ font-family:var(--w-head); font-weight:700; font-size:17px; }
.w-roster-name a{ color:var(--w-ink); text-decoration:none; }
.w-roster-name a:hover, .w-roster-name a:focus{ color:var(--w-accent); text-decoration:underline; }
.w-roster-meta{ color:var(--w-muted); font-size:14px; margin-left:10px; }
.w-roster-place{ margin:4px 0 0; font-size:15px; line-height:1.5; color:var(--w-ink); }

/* Current Fellows: one line each, institution and year to the right. */
.w-roster-compact li{
  padding:8px 0; display:flex; justify-content:space-between; gap:16px; align-items:baseline;
}
.w-roster-compact .w-roster-meta{ margin-left:0; text-align:right; white-space:nowrap; }

.w-roster-head{
  font-size:15px; text-transform:uppercase; letter-spacing:.08em; color:var(--w-muted);
  font-family:var(--w-body); font-weight:600; margin:30px 0 10px;
}

@media (max-width:700px){
  .w-roster-compact li{ display:block; }
  .w-roster-compact .w-roster-meta{ display:block; margin-left:0; text-align:left; white-space:normal; }
}

/* past seminars — a grid of recorded talks.
   The capture laid these out as a 2x2 of 560px embeds using Elementor columns.
   With those gone the videos would each stretch the full content width, so the
   grid is ours now: title and embed travel together in .w-pastitem. */
.w-past{ padding-block:10px 30px; }
.w-pastgrid{
  display:grid; grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:30px 40px; margin-top:14px;
}
.w-pastitem{ min-width:0; }
.w-pastitem p{
  margin:0 0 10px; font-family:var(--w-head); font-size:17px; line-height:1.35;
}
.w-pastitem p a{ color:var(--w-accent); text-decoration:none; }
.w-pastitem p a:hover, .w-pastitem p a:focus{ text-decoration:underline; }
.w-pastitem .w-video{ margin:0; }
@media (max-width:900px){
  .w-pastgrid{ grid-template-columns:1fr; gap:24px; }
}
.w-past h2{
  text-align:left; font-size:22px;
  text-transform:uppercase; letter-spacing:.08em;
  font-family:var(--w-body); color:var(--w-muted); font-weight:600;
}
.w-past .w-talklist{ list-style:none; margin:0; padding:0; }
.w-past .w-talklist a{
  font-size:17px; line-height:1.35;
  color:var(--w-accent); font-family:var(--w-head); text-decoration:none;
}
.w-past .w-talklist a:hover{ text-decoration:underline; }

@media (max-width:900px){
  .w-hero{ grid-template-columns:1fr; gap:28px; }
  .w-hero-right{ position:static; }
  .w-upcoming .w-card{ grid-template-columns:1fr; }
  .w-upcoming .w-card > p:first-child{ grid-row:auto; }
  .w-upcoming .w-btn{ grid-column:1; }
}

/* ------------------------------------------------------------ 10. search */
.wefi-search-wrap{ max-width:var(--w-column); padding-block:44px 60px; }
.wefi-search-wrap h3{ font-family:var(--w-head); font-size:34px; margin:0 0 20px; }
#wefi-search-input{
  width:100%; padding:14px 16px; font-size:18px;
  font-family:var(--w-body); border:1.5px solid var(--w-rule);
  border-radius:var(--w-radius); outline:none; color:var(--w-ink);
}
#wefi-search-input:focus{ border-color:var(--w-accent); }
#wefi-search-status{ color:var(--w-muted); font-size:15px; margin:16px 2px; }
#wefi-search-results{ list-style:none; margin:0; padding:0; }
#wefi-search-results li{ padding:16px 0; border-bottom:1px solid var(--w-rule); }
#wefi-search-results a{
  font-family:var(--w-head); font-size:20px; font-weight:700;
  color:var(--w-accent); text-decoration:none;
}
#wefi-search-results a:hover{ text-decoration:underline; }
#wefi-search-results .wefi-snippet{ color:var(--w-ink); font-size:16px; margin:6px 0 0; line-height:1.55; }
#wefi-search-results .wefi-url{ color:var(--w-muted); font-size:13px; margin:4px 0 0; }
#wefi-search-results mark{ background:#fdf0d0; padding:0 2px; }

/* ------------------------------------------------------- 11. signup form */
/* Mailchimp's own markup — its ids are fixed, so these selectors are too. */
#mc_embed_signup{ background:transparent; font-family:var(--w-body); }
#mc_embed_signup h2{ font-family:var(--w-head); font-size:26px; color:var(--w-ink); }
#mc_embed_signup .indicates-required,
#mc_embed_signup label{ font-family:var(--w-body); color:var(--w-muted); font-size:14px; }
#mc_embed_signup input[type="text"],
#mc_embed_signup input[type="email"]{
  font-family:var(--w-body); font-size:16px; color:var(--w-ink);
  padding:10px 12px; border:1.5px solid var(--w-rule); border-radius:var(--w-radius);
  background:#fff; width:100%; max-width:420px;
}
#mc_embed_signup input[type="text"]:focus,
#mc_embed_signup input[type="email"]:focus{ border-color:var(--w-accent); outline:none; }
#mc_embed_signup .button, #mc_embed_signup input[type="submit"]{
  background:var(--w-accent); color:#fff;
  border:1.5px solid var(--w-accent); border-radius:var(--w-radius);
  font-family:var(--w-body); font-weight:600; font-size:15px;
  padding:10px 22px; height:auto; cursor:pointer;
}
#mc_embed_signup .button:hover, #mc_embed_signup input[type="submit"]:hover{
  background:var(--w-dark); border-color:var(--w-dark);
}
