/*
Theme Name: LSESU Law Society
Theme URI: https://lsesulawsoc.com
Author: LSESU Law Society
Description: Custom theme for the LSESU Law Society. Midnight navy and antique gold, derived from the society crest. Events, committee members and partners are managed as custom post types so the site can be maintained without editing code.
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lsesulawsoc
*/

/* ============================================================
   Single shared stylesheet, loaded once and cached.

   IMPORTANT: every page's rules live in this one file, so a class
   name used on two different pages will collide. Section markers
   below show which page each block belongs to. Before adding a
   class, check it is not already defined in another block.
   ============================================================ */

/* ==================== tokens, base, header, footer, motion, 3D crest ==================== */
:root{
  --crest-src:url(assets/crest.png);
  --gold:#a88d5e;
  --gold-lift:#c9ae7e;
  --gold-pale:#e6d3a8;
  --gold-deep:#6f5a32;

  --bg:#111a2e;
  --bg-2:#172239;
  --bg-3:#1e2c47;
  --bg-deep:#0a1020;
  --fg:#e8ebf1;
  --fg-2:#a3aec2;
  --fg-3:#737f95;
  --rule:#26334c;
  --rule-2:#354563;
  --gold-text:#c2a77e;

  --display:"Cormorant Garamond",Georgia,serif;
  --body:"Manrope",system-ui,-apple-system,sans-serif;

  --gut:clamp(1.15rem,4.5vw,4.5rem);
  --maxw:1280px;
  --step:clamp(3.25rem,8vw,6.5rem);
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);
  font-size:16.5px;line-height:1.62;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:400;line-height:1.04;letter-spacing:-.012em}
p{margin:0}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:1rem;top:1rem;z-index:200;background:var(--gold);color:#0d1526;padding:.7rem 1.1rem}

.caps{font-size:.68rem;font-weight:600;letter-spacing:.19em;text-transform:uppercase}
.caps--gold{color:var(--gold-text)}
.caps--mute{color:var(--fg-3)}

.crest{background-color:var(--gold);
  -webkit-mask:var(--crest-src) center/contain no-repeat;
          mask:var(--crest-src) center/contain no-repeat;flex:0 0 auto}

/* ---------------- util bar ---------------- */
.utilbar{border-bottom:1px solid var(--rule)}
.utilbar .wrap{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-block:.6rem;flex-wrap:wrap}
.utilbar .caps{color:var(--fg-3)}
.social{display:flex;align-items:center;gap:1.35rem}
.social a{display:flex;align-items:center;gap:.4rem;color:var(--fg-2);transition:color .2s}
.social a:hover{color:var(--gold-text)}
.social svg{width:14px;height:14px;fill:currentColor}
.social span{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500}
@media (max-width:640px){.social span{display:none}.social{gap:1.15rem}}

/* ---------------- header ---------------- */
.site-head{position:sticky;top:0;z-index:100;background:rgba(17,26,46,.92);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
.site-head .wrap{display:flex;align-items:center;gap:1.5rem;padding-block:.95rem}
.mark{display:flex;align-items:center;gap:.8rem}
.mark .crest{width:38px;height:44px}
.mark b{font-family:var(--display);font-size:1.16rem;font-weight:500;
  letter-spacing:.045em;text-transform:uppercase;color:var(--fg)}
.mainnav{margin-left:auto;display:flex;align-items:center;gap:.3rem}
.mainnav>a,.drop>button{display:block;padding:.5rem .78rem;font-size:.82rem;font-weight:500;
  letter-spacing:.03em;color:var(--fg-2);transition:color .2s,background .2s}
.mainnav>a[aria-current="page"]{color:var(--fg)}
.mainnav>a:hover,.drop>button:hover{color:var(--fg);background:var(--bg-2)}
.drop{position:relative}
.drop>button{display:flex;align-items:center;gap:.4rem}
.drop>button::after{content:"";width:5px;height:5px;border-right:1.4px solid currentColor;
  border-bottom:1.4px solid currentColor;transform:rotate(45deg) translateY(-1px);transition:transform .2s}
.drop[data-open="true"]>button::after{transform:rotate(225deg) translateY(-2px)}
.drop-panel{position:absolute;top:calc(100% + .5rem);right:0;min-width:232px;background:var(--bg-2);
  border:1px solid var(--rule-2);padding:.4rem;display:none;box-shadow:0 18px 44px rgba(0,0,0,.4)}
.drop[data-open="true"] .drop-panel{display:block}
.drop-panel a{display:block;padding:.6rem .8rem;font-size:.84rem;color:var(--fg-2);transition:color .2s,background .2s}
.drop-panel a:hover{color:var(--fg);background:var(--bg-3)}
.drop-panel .sep{height:1px;background:var(--rule);margin:.35rem .4rem}
.drop-panel .flag{color:var(--gold-text);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;
  display:block;margin-top:.2rem;font-weight:600}

.btn{display:inline-flex;align-items:center;gap:.5rem;font-size:.8rem;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;padding:.72rem 1.3rem;
  border:1px solid var(--gold);background:var(--gold);color:#0d1526;
  transition:background .22s,color .22s,border-color .22s}
.btn:hover{background:var(--gold-lift);border-color:var(--gold-lift)}
.btn--ghost{background:transparent;color:var(--fg);border-color:var(--rule-2)}
.btn--ghost:hover{border-color:var(--gold);color:var(--gold-text);background:transparent}
.btn--lg{padding:.9rem 1.7rem;font-size:.82rem}
.nav-join{margin-left:.7rem}
.burger{display:none;margin-left:auto;width:42px;height:42px;align-items:center;justify-content:center;border:1px solid var(--rule-2)}
.burger i{display:block;width:17px;height:1.4px;background:var(--fg);position:relative}
.burger i::before,.burger i::after{content:"";position:absolute;left:0;width:17px;height:1.4px;background:var(--fg)}
.burger i::before{top:-5px}.burger i::after{top:5px}
.mobnav{display:none;border-top:1px solid var(--rule);background:var(--bg-2)}
.mobnav[data-open="true"]{display:block}
.mobnav ul{list-style:none;margin:0;padding:.5rem var(--gut) 0}
.mobnav li{border-bottom:1px solid var(--rule)}
.mobnav a{display:block;padding:.95rem 0;font-size:1rem;color:var(--fg-2)}
.mobnav .mob-cta{padding:1.3rem var(--gut) 1.5rem}
.mobnav .btn{width:100%;justify-content:center}
@media (max-width:1080px){.mainnav{display:none}.burger{display:flex}}

/* ---------------- sections ---------------- */
.sec{padding-block:var(--step)}
.sec--alt{background:var(--bg-2)}
.sec--rule{border-top:1px solid var(--rule)}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;
  flex-wrap:wrap;margin-bottom:clamp(2.2rem,5vw,3.4rem)}
.sec-head h2{font-size:clamp(2rem,4.4vw,3.1rem);font-weight:300;max-width:24ch}
.sec-head .caps{margin-bottom:1.1rem;display:block}
.sec-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--gold-text);
  border-bottom:1px solid var(--rule-2);padding-bottom:.3rem;white-space:nowrap;transition:border-color .2s}
.sec-link:hover{border-color:var(--gold)}

/* ---------------- footer ---------------- */
.site-foot{background:var(--bg-2);border-top:1px solid var(--rule);padding-top:var(--step)}
.foot-grid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(4,minmax(0,1fr));gap:2.5rem}
.foot-mark .crest{width:44px;height:50px;margin-bottom:1.1rem}
.foot-mark b{font-family:var(--display);font-size:1.22rem;font-weight:500;
  letter-spacing:.04em;text-transform:uppercase;display:block}
.foot-mark p{color:var(--fg-3);font-size:.85rem;margin-top:.9rem;max-width:34ch}
.site-foot h4{font-family:var(--body);font-size:.66rem;font-weight:700;letter-spacing:.19em;
  text-transform:uppercase;color:var(--fg-3);margin-bottom:1.1rem}
.site-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:.62rem}
.site-foot li a{font-size:.88rem;color:var(--fg-2);transition:color .2s}
.site-foot li a:hover{color:var(--gold-text)}
.foot-bottom{margin-top:var(--step);border-top:1px solid var(--rule);padding-block:1.4rem;
  display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;color:var(--fg-3)}
@media (max-width:980px){.foot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.foot-mark{grid-column:1/-1}}
@media (max-width:520px){.foot-grid{grid-template-columns:1fr}}

/* ============================================================
   Headline reveal. Only opacity / transform animate, so nothing
   reflows and no layout shift occurs. Words hold their space from
   the first paint.
   ============================================================ */
h1 em{font-style:italic;color:var(--gold-text);font-weight:400}
.w{display:inline-block}
.js .armed .w{opacity:0;transform:translateY(.36em)}
.js .armed #eyebrow,.js .armed .lede,.js .armed .hero-cta,.js .armed .phero-cta,
.js .armed .hero-meta,.js .armed .bhero-seal{opacity:0}

/* the lead word runs its own entrance, so it sits out the cascade */
h1 em{display:inline-block}
.js .flipping .w--lead,.js .run .w--lead{opacity:1;transform:none;animation:none}
.js .flipping .w--lead{position:relative;z-index:120}
.hero.unclip{overflow:visible}

/* homepage entrance timings */
.entrance.run .w:not(.w--lead):nth-child(2){animation-delay:0ms}
.entrance.run .w:not(.w--lead):nth-child(3){animation-delay:70ms}
.entrance.run .w:not(.w--lead):nth-child(4){animation-delay:140ms}
.entrance.run .w:not(.w--lead):nth-child(5){animation-delay:210ms}
.entrance.run .w:not(.w--lead):nth-child(6){animation-delay:280ms}
.entrance.run #eyebrow{--d:0ms}
.entrance.run .lede{--d:300ms}
.entrance.run .hero-cta{--d:420ms}
.entrance.run .hero-meta{--d:520ms}
.run .w{animation:hlRise .62s var(--ease) forwards}
.run #eyebrow,.run .lede,.run .hero-cta,.run .phero-cta,.run .hero-meta,
.run .bhero-seal{animation:hlFade .7s var(--ease) forwards;animation-delay:var(--d,0ms)}
.run .lede{--d:760ms}
.run .hero-cta,.run .phero-cta{--d:880ms}
.run .hero-meta,.run .bhero-seal{--d:980ms}
.m5.run .w:nth-child(1){animation-duration:.78s;animation-delay:40ms}
.m5.run .w:not(:nth-child(1)){animation-delay:520ms}
@keyframes hlRise{from{opacity:0;transform:translateY(.36em)}to{opacity:1;transform:none}}
@keyframes hlFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* per-page choreography: the emphasised word should lead or land last,
   never an article like "The" */
.phero-inner.m5.run .w:nth-child(1){animation-delay:60ms;animation-duration:.62s}
.phero-inner.m5.run .w:nth-child(2){animation-delay:150ms;animation-duration:.62s}
.phero-inner.m5.run .w:nth-child(3){animation-delay:240ms;animation-duration:.62s}
.bhero-inner.m5.run .w:nth-child(1){animation-delay:60ms;animation-duration:.62s}
.bhero-inner.m5.run .w:nth-child(2){animation-delay:150ms;animation-duration:.62s}
.bhero-inner.m5.run .w:nth-child(3){animation-delay:660ms;animation-duration:.9s}

/* Gold sheen through the emphasised word.
   background-position stays within 0%-100%: outside that range an
   oversized image no longer covers the box, and because the text fill
   is transparent the letters would disappear entirely.
   The gradient keeps solid gold across 0-42% and 58-100% so both ends
   of the sweep resolve to flat gold. */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  h1 em.sheen-go{
    background-image:linear-gradient(100deg,
      var(--gold-text) 0 42%, var(--gold-pale) 47%, #fff6e2 50%,
      var(--gold-pale) 53%, var(--gold-text) 58% 100%);
    background-size:280% 100%;background-repeat:no-repeat;
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;
    animation:hlSheen var(--sheen,1500ms) var(--ease) forwards;
  }
  @keyframes hlSheen{from{background-position:0% 0}to{background-position:100% 0}}
}
@media (prefers-reduced-motion:reduce){
  .armed .w,.armed #eyebrow,.armed .lede,.armed .hero-cta,.armed .phero-cta,
  .armed .hero-meta,.armed .bhero-seal{opacity:1;transform:none}
  .run .w,.run #eyebrow,.run .lede,.run .hero-cta,.run .phero-cta,
  .run .hero-meta,.run .bhero-seal{animation:none}
  h1 em.sheen-go{background-image:none;-webkit-text-fill-color:currentColor;animation:none}
}

/* ---------------- reveal ---------------- */
.rv{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  .rv{opacity:1;transform:none}
}

/* ============================================================
   3D CREST — layered masks, no WebGL.
   Depth comes from stacked translateZ copies; texture from a
   brushed-metal gradient plus engraved hairlines; the specular
   sweep and rotation are driven by scroll position.
   ============================================================ */
.crest3d{position:absolute;pointer-events:none;perspective:1000px;
  width:min(58vw,640px);aspect-ratio:377/433}
.crest3d-stage{position:absolute;inset:0;transform-style:preserve-3d;
  transform:rotateY(calc(var(--spin,0)*1deg)) rotateX(calc(var(--tilt,0)*1deg));
  will-change:transform}
.crest3d-layer{position:absolute;inset:0;
  -webkit-mask:var(--crest-src) center/contain no-repeat;
          mask:var(--crest-src) center/contain no-repeat}
/* extruded body layers, painted flat and dark for thickness */
.crest3d-layer--body{background-color:#5d4c2c}
/* the face: brushed gold + engraving + travelling highlight */
.crest3d-layer--face{
  background-image:
    repeating-linear-gradient(112deg,rgba(255,255,255,.055) 0 1px,rgba(0,0,0,.05) 1px 3px),
    linear-gradient(135deg,#6b5730 0%,#a88d5e 24%,var(--gold-pale) 44%,#a88d5e 62%,#7d663a 82%,#5f4d2b 100%);
  background-size:auto, 260% 260%;
  background-position:0 0, calc(var(--sheen,50%)) 50%;
}

/* ==================== page hero (shared by all interior pages) ==================== */
.phero{position:relative;overflow:hidden;border-bottom:1px solid var(--rule);padding-block:clamp(2.6rem,7vw,5rem)}
.phero .crest3d{top:50%;right:-10%;transform:translateY(-50%);opacity:.13}
.phero .wrap{position:relative}
.phero-inner{max-width:58ch}
.phero h1{font-size:clamp(2.4rem,6.4vw,4.4rem);font-weight:300;margin-block:1.3rem 0;letter-spacing:-.02em}
.phero .lede{color:var(--fg-2);max-width:52ch;margin-top:1.4rem;font-size:clamp(1rem,1.4vw,1.12rem)}
.phero-cta{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2.1rem}
@media (max-width:900px){.phero .crest3d{opacity:.07;right:-28%}}

/* ==================== homepage ==================== */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--rule)}
.hero .crest3d{top:50%;right:-7%;transform:translateY(-50%);opacity:.17}
.hero .wrap{position:relative;padding-block:clamp(3.5rem,9vw,7rem)}
.hero-inner{max-width:56ch;position:relative}
.hero h1{font-size:clamp(2.7rem,7.4vw,5.4rem);font-weight:300;letter-spacing:-.02em;margin-top:1.5rem}
.hero h1 em{font-style:italic;color:var(--gold-text);font-weight:400}
.hero .lede{font-size:clamp(1.02rem,1.5vw,1.14rem);color:var(--fg-2);max-width:46ch;margin-top:1.75rem}
.hero-cta{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2.4rem}

}
.hero-meta{display:flex;gap:1.6rem;flex-wrap:wrap;margin-top:2.6rem;padding-top:1.4rem;border-top:1px solid var(--rule)}
.hero-meta span{color:var(--fg-3)}
.hero-meta b{color:var(--gold-text);font-weight:600}
@media (max-width:900px){.hero .crest3d{opacity:.09;right:-24%}}

.awards{background:var(--bg-2);border-bottom:1px solid var(--rule)}
.awards .wrap{display:flex;align-items:center;gap:clamp(1.25rem,4vw,3.5rem);padding-block:1.15rem;flex-wrap:wrap}
.award{display:flex;align-items:baseline;gap:.6rem}
.award b{font-family:var(--display);font-size:1.06rem;font-weight:500}
.award span{font-size:.72rem;color:var(--fg-3)}

/* signature: next event as an engraved invitation */
.summons{position:relative;display:block;max-width:760px;margin:0 auto;background:var(--bg-2);
  border:1px solid var(--gold);padding:clamp(2rem,5vw,3.2rem) clamp(1.35rem,5vw,3.6rem) clamp(1.85rem,4vw,2.6rem);
  text-align:center;transition:background .3s,transform .3s var(--ease)}
.summons::after{content:"";position:absolute;inset:7px;border:1px solid var(--rule-2);pointer-events:none}
.summons:hover{transform:translateY(-3px)}
.summons .crest{width:46px;height:53px;margin:0 auto 1.5rem}
.summons-label{display:block;color:var(--gold-text);margin-bottom:1.6rem}
.summons-date{display:block;font-size:.8rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--fg-2)}
.summons h3{font-size:clamp(1.9rem,4.6vw,3rem);font-weight:300;margin-block:1rem 1.1rem}
.summons-sub{color:var(--fg-2);max-width:48ch;margin-inline:auto;font-size:.97rem}
.summons-rule{display:block;width:44px;height:1px;background:var(--gold);margin:1.7rem auto;opacity:.7}
.summons-foot{display:flex;justify-content:center;gap:clamp(.9rem,3vw,2.2rem);flex-wrap:wrap;color:var(--fg-3)}
.summons-foot b{color:var(--gold-text);font-weight:600}
.summons-go{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.9rem;color:var(--gold-text);
  border-bottom:1px solid transparent;padding-bottom:.25rem}
.summons:hover .summons-go{border-bottom-color:var(--gold)}
.next-aside{text-align:center;margin-top:1.6rem;color:var(--fg-3);font-size:.85rem}
.next-aside a{color:var(--gold-text);border-bottom:1px solid var(--rule-2)}

/* headline events — deliberate contrast: one legible, one withheld */
.head-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--rule);
  border:1px solid var(--rule)}
.hcard{position:relative;overflow:hidden;padding:clamp(1.7rem,3vw,2.4rem);display:flex;flex-direction:column;
  min-height:370px;transition:background .3s}
.hcard--summit{background:var(--bg-2)}
.hcard--summit:hover{background:var(--bg-3)}
.hcard--ball{background:var(--bg-deep)}
.hcard--ball:hover{background:#0c1426}
.hcard--trip{background:var(--bg-3)}
.hcard--trip:hover{background:#24334f}
.hcard--trip::after{content:"";position:absolute;inset:10px;border:1px dashed var(--rule-2);pointer-events:none}
.hcard--trip .hcard-fact{border-top-style:dashed}
.hcard-no{color:var(--fg-3);margin-bottom:1.4rem;display:block}
.hcard h3{font-size:clamp(1.8rem,3.2vw,2.35rem);font-weight:300;margin-bottom:.9rem}
.hcard--ball h3{font-style:italic;color:var(--gold-text)}
.hcard p{color:var(--fg-2);font-size:.95rem;max-width:40ch}
.hcard-facts{margin-top:auto;padding-top:1.8rem;display:grid;gap:.6rem}
.hcard-fact{display:flex;gap:.9rem;align-items:baseline;border-top:1px solid var(--rule);padding-top:.6rem}
.hcard-fact .k{color:var(--fg-3);min-width:6.2rem;flex:0 0 auto}
.hcard-fact .v{font-size:.9rem;font-weight:500}
.hcard-go{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.7rem;color:var(--gold-text);
  border-bottom:1px solid transparent;padding-bottom:.25rem;align-self:flex-start}
.hcard:hover .hcard-go{border-bottom-color:var(--gold)}
.hcard--ball .ghost{position:absolute;right:-18%;top:50%;transform:translateY(-50%);width:70%;aspect-ratio:377/433;
  background-color:var(--gold);opacity:.07;pointer-events:none;
  -webkit-mask:var(--crest-src) center/contain no-repeat;mask:var(--crest-src) center/contain no-repeat}
/* redaction bar */
.redact{display:inline-block;height:.95em;min-width:5.5rem;vertical-align:-.12em;position:relative;
  background:linear-gradient(90deg,#050912,#0e1526);border:1px solid #223353}
.redact::after{content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 35%,rgba(226,205,160,.16) 50%,transparent 65%);
  background-size:280% 100%;animation:sweep 5.5s var(--ease) infinite}
@keyframes sweep{0%{background-position:120% 0}55%,100%{background-position:-60% 0}}
@media (max-width:1080px){.head-grid{grid-template-columns:1fr}.hcard{min-height:0}}

.div-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.dcard{background:var(--bg-2);padding:1.9rem 1.7rem 1.6rem;display:flex;flex-direction:column;gap:.65rem;
  position:relative;transition:background .25s}
.dcard::before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:var(--gold);
  transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.dcard:hover::before{transform:scaleX(1)}
.dcard:hover{background:var(--bg-3)}
.dcard h3{font-size:1.32rem;font-weight:500}
.dcard p{font-size:.9rem;color:var(--fg-2)}
.dcard-lead{color:var(--fg-3);margin-top:.5rem;letter-spacing:.12em}
.dcard-go{margin-top:auto;padding-top:1.3rem;color:var(--gold-text)}

.member{border-block:1px solid var(--rule);background:var(--bg-2)}
.member-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(2rem,6vw,5rem);align-items:center}
.member h2{font-size:clamp(2rem,4.4vw,3rem);font-weight:300;max-width:20ch;margin-top:1.1rem}
.member h2 em{font-style:italic;color:var(--gold-text)}
.member p{color:var(--fg-2);max-width:44ch;margin-top:1.3rem}
.member .btn{margin-top:2rem}
.tiers{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.tier{background:var(--bg);padding:1.5rem 1.6rem;display:flex;align-items:baseline;gap:1.2rem}
.tier-price{font-family:var(--display);font-size:2.35rem;font-weight:400;line-height:1;color:var(--gold-text);
  flex:0 0 auto;min-width:3.6ch}
.tier-body b{display:block;font-size:.95rem;font-weight:600;margin-bottom:.3rem}
.tier-body p{font-size:.84rem;color:var(--fg-3);margin:0;max-width:38ch}

.spotlight{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:clamp(1.5rem,4vw,3.25rem);
  align-items:center;border:1px solid var(--rule-2);background:var(--bg-2);padding:clamp(1.5rem,4vw,2.75rem)}
.spot-logo{aspect-ratio:16/9;background:var(--bg-3);border:1px solid var(--rule);display:grid;place-items:center;
  text-align:center;padding:1rem}
.spot-logo .caps{color:var(--fg-3);line-height:1.7}
.spot-tier{display:block;color:var(--gold-text);margin-bottom:1rem}
.spot-body h3{font-size:clamp(1.6rem,3.4vw,2.3rem);font-weight:400}
.spot-practice{color:var(--fg-3);margin-top:.55rem;font-size:.82rem;letter-spacing:.04em}
.spot-note{color:var(--fg-2);margin-top:1.25rem;max-width:52ch;font-size:.96rem}
.spot-with{margin-top:1.5rem;padding-top:1.2rem;border-top:1px solid var(--rule);display:flex;gap:.7rem;
  align-items:baseline;flex-wrap:wrap}
.spot-with b{font-weight:600;font-size:.92rem}
.spot-controls{display:flex;align-items:center;gap:1.15rem;margin-top:2rem}
.dots{display:flex;gap:.55rem}
.dot{width:26px;height:2px;background:var(--rule-2);transition:background .3s}
.dot[aria-current="true"]{background:var(--gold)}
.spot-count{color:var(--fg-3);margin-left:auto}
.spot-arrows{display:flex;gap:.4rem}
.spot-arrows button{width:36px;height:36px;border:1px solid var(--rule-2);display:grid;place-items:center;
  color:var(--fg-2);transition:border-color .2s,color .2s}
.spot-arrows button:hover{border-color:var(--gold);color:var(--gold-text)}
.spot-arrows svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.6}
.wall-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;
  margin:clamp(2.5rem,6vw,4rem) 0 1.4rem}
.wall-foot{margin-top:1.5rem;color:var(--fg-3);font-size:.86rem}
.wall-foot a{color:var(--gold-text);border-bottom:1px solid var(--rule-2)}

.prez-grid{display:grid;grid-template-columns:minmax(0,.62fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);align-items:start}
.prez-photo{aspect-ratio:3/4;background:var(--bg-3);border:1px solid var(--rule);position:relative;
  display:grid;place-items:end center;padding:1rem}
.prez-photo::before{content:"";position:absolute;inset:0;background-color:var(--gold);opacity:.08;
  -webkit-mask:var(--crest-src) center/62% no-repeat;mask:var(--crest-src) center/62% no-repeat}
.prez-photo span{position:relative;color:var(--fg-3);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;text-align:center}
.prez blockquote{margin:0}
.prez h2{font-size:clamp(1.75rem,3.6vw,2.6rem);font-weight:300;margin-block:1.1rem 1.6rem;max-width:26ch}
.prez p{color:var(--fg-2);max-width:56ch}
.prez p+p{margin-top:1rem}
.prez-sig{margin-top:2.2rem;padding-top:1.3rem;border-top:1px solid var(--rule)}
.prez-sig b{display:block;font-family:var(--display);font-size:1.4rem;font-weight:500}
.prez-sig span{color:var(--fg-3)}
.prez-sig a{color:var(--gold-text)}
@media (max-width:900px){.member-grid,.spotlight,.prez-grid{grid-template-columns:1fr}}

/* ==================== law summit ==================== */

.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;
  background:var(--rule);border-bottom:1px solid var(--rule)}
.fact{background:var(--bg-2);padding:1.6rem 1.4rem}
.fact b{display:block;font-family:var(--display);font-size:1.55rem;font-weight:400;margin-top:.55rem}
.fact .caps{color:var(--fg-3)}

.two-col{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2rem,6vw,5rem)}
.two-col h2{font-size:clamp(1.9rem,4vw,2.7rem);font-weight:300;max-width:20ch}
.two-col p{color:var(--fg-2)}
.two-col p+p{margin-top:1.1rem}
@media (max-width:820px){.two-col{grid-template-columns:1fr;gap:1.6rem}}

.prog{border:1px solid var(--rule)}
.prog-row{display:grid;grid-template-columns:9rem minmax(0,1fr) 12rem;gap:1.5rem;
  padding:1.4rem 1.5rem;border-bottom:1px solid var(--rule);align-items:baseline}
.prog-row:last-child{border-bottom:0}
.prog-row:nth-child(odd){background:var(--bg-2)}
.prog-time{color:var(--gold-text);font-weight:600;font-size:.78rem;letter-spacing:.1em}
.prog-body h3{font-size:1.22rem;font-weight:500}
.prog-body p{color:var(--fg-3);font-size:.88rem;margin-top:.35rem}
.prog-track{color:var(--fg-3);justify-self:start}
@media (max-width:820px){.prog-row{grid-template-columns:1fr;gap:.5rem}.prog-track{justify-self:start}}

.spk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.spk{background:var(--bg-2);padding:0}
.spk-img{aspect-ratio:1;background:var(--bg-3);position:relative}
.spk-img::before{content:"";position:absolute;inset:0;background-color:var(--gold);opacity:.07;
  -webkit-mask:var(--crest-src) center/54% no-repeat;mask:var(--crest-src) center/54% no-repeat}
.spk-img span{position:absolute;inset:auto 0 .8rem;text-align:center;color:var(--fg-3);font-size:.58rem;
  letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.spk-body{padding:1.2rem 1.3rem 1.4rem}
.spk-body b{font-family:var(--display);font-size:1.16rem;font-weight:500;display:block}
.spk-body span{color:var(--fg-3);font-size:.82rem;display:block;margin-top:.3rem}

.cta-band{background:var(--bg-2);border-block:1px solid var(--rule);text-align:center}
.cta-band h2{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:300;max-width:26ch;margin-inline:auto}
.cta-band p{color:var(--fg-2);max-width:46ch;margin:1.2rem auto 2rem}

/* ==================== law ball ==================== */
body.ball{background:var(--bg-deep)}
.ball .site-head{background:rgba(10,16,32,.9)}
.ball .site-foot{background:#0d1424}
.bhero{position:relative;overflow:hidden;min-height:min(86vh,760px);display:flex;align-items:center;
  border-bottom:1px solid var(--rule)}
.bhero-veil{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 62% 45%,rgba(168,141,94,.16),transparent 62%),
             radial-gradient(ellipse at 50% 120%,rgba(10,16,32,.9),transparent 70%)}
.bhero .crest3d{top:50%;right:-4%;transform:translateY(-50%);opacity:.3;width:min(64vw,700px)}
.bhero .wrap{position:relative;padding-block:clamp(3.5rem,10vw,7rem)}
.bhero-inner{max-width:44ch}
.bhero h1{font-size:clamp(3rem,9vw,6.4rem);font-weight:300;font-style:italic;letter-spacing:-.03em;
  margin-block:1.5rem;line-height:.98}
.bhero h1 .line{display:block}
.bhero h1 em{font-style:normal;color:var(--gold-text)}
.bhero p{color:var(--fg-2);max-width:40ch;font-size:clamp(1rem,1.5vw,1.14rem)}
.bhero-seal{display:flex;align-items:center;gap:1rem;margin-top:2.6rem;padding-top:1.6rem;
  border-top:1px solid var(--rule)}
.bhero-seal .crest{width:40px;height:46px;opacity:.9}
.bhero-seal span{color:var(--fg-3)}
@media (max-width:900px){.bhero .crest3d{opacity:.16;right:-30%}}

/* the withheld dossier */
.dossier{max-width:840px;margin-inline:auto;border:1px solid var(--rule-2);background:var(--bg)}
.dossier-head{padding:1.5rem 1.8rem;border-bottom:1px solid var(--rule-2);display:flex;
  justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center}
.dossier-head b{font-family:var(--display);font-size:1.3rem;font-weight:500}
.dossier-row{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:1.5rem;padding:1.25rem 1.8rem;
  border-bottom:1px solid var(--rule);align-items:center}
.dossier-row:last-child{border-bottom:0}
.dossier-row .k{color:var(--fg-3)}
.dossier-row .v{font-size:1.02rem}
.dossier-row .v--known{font-family:var(--display);font-size:1.3rem;color:var(--gold-text)}
.bar{display:block;height:1.15rem;border:1px solid #22334f;position:relative;overflow:hidden;
  background:linear-gradient(90deg,#060a14,#0f1729)}
.bar::after{content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 34%,rgba(226,205,160,.2) 50%,transparent 66%);
  background-size:300% 100%;animation:sweep 6s var(--ease) infinite}
@keyframes sweep{0%{background-position:130% 0}58%,100%{background-position:-70% 0}}
@media (max-width:640px){.dossier-row{grid-template-columns:1fr;gap:.5rem}}

.tell{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.tell-cell{background:var(--bg);padding:1.9rem 1.7rem}
.tell-cell b{display:block;font-family:var(--display);font-size:2.2rem;font-weight:400;color:var(--gold-text)}
.tell-cell span{display:block;margin-top:.7rem;color:var(--fg-3)}
.tell-cell p{margin-top:.9rem;font-size:.9rem;color:var(--fg-2)}

.countdown{text-align:center}
.countdown-grid{display:flex;justify-content:center;gap:clamp(1.2rem,5vw,3.5rem);margin-top:2.2rem;flex-wrap:wrap}
.countdown-unit b{display:block;font-family:var(--display);font-size:clamp(2.6rem,7vw,4.4rem);font-weight:300;line-height:1}
.countdown-unit span{display:block;color:var(--fg-3);margin-top:.5rem}

.notify{max-width:520px;margin:2.6rem auto 0;display:flex;gap:.6rem;flex-wrap:wrap}
.notify input{flex:1 1 240px;background:var(--bg);border:1px solid var(--rule-2);color:var(--fg);
  padding:.85rem 1rem;font:inherit;font-size:.95rem}
.notify input::placeholder{color:var(--fg-3)}
.notify input:focus{outline:2px solid var(--gold);outline-offset:2px}
.notify-note{text-align:center;color:var(--fg-3);font-size:.8rem;margin-top:1rem}
.notify-done{text-align:center;color:var(--gold-text);margin-top:1rem;font-size:.9rem}

/* ==================== events ==================== */
.controls{border-bottom:1px solid var(--rule);background:var(--bg-2);position:sticky;top:0;z-index:40}
.controls .wrap{display:flex;gap:1.5rem;align-items:center;flex-wrap:wrap;padding-block:.9rem}
.terms{display:flex;gap:1px;background:var(--rule-2);border:1px solid var(--rule-2)}
.term{padding:.55rem 1.1rem;background:var(--bg-2);color:var(--fg-3);font-size:.72rem;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;transition:background .2s,color .2s}
.term:hover{color:var(--fg)}
.term[aria-pressed="true"]{background:var(--gold);color:#0d1526}
.chips{display:flex;gap:.4rem;flex-wrap:wrap;margin-left:auto}
.chip{padding:.42rem .8rem;border:1px solid var(--rule-2);color:var(--fg-3);font-size:.66rem;
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;transition:border-color .2s,color .2s}
.chip:hover{color:var(--fg);border-color:var(--fg-3)}
.chip[aria-pressed="true"]{border-color:var(--gold);color:var(--gold-text)}
@media (max-width:900px){.chips{margin-left:0}.controls{position:static}}

.list-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;
  margin-bottom:.4rem;padding-bottom:1rem;border-bottom:1px solid var(--rule-2)}
.list-head h2{font-size:clamp(1.6rem,3.2vw,2.3rem);font-weight:300}
.count{color:var(--fg-3)}

/* the cause list */
.cause{border-bottom:1px solid var(--rule)}
.ev{display:grid;grid-template-columns:5.5rem 8.5rem minmax(0,1fr) 11rem;gap:1.6rem;
  padding:1.5rem .2rem;border-top:1px solid var(--rule);align-items:baseline;transition:background .2s}
.ev:hover{background:var(--bg-2)}
.ev[hidden]{display:none}
.ev-no{color:var(--fg-3);font-size:.74rem;letter-spacing:.08em;font-variant-numeric:tabular-nums}
.ev-when b{display:block;font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold-text)}
.ev-when span{display:block;color:var(--fg-3);font-size:.74rem;margin-top:.3rem}
.ev-body h3{font-family:var(--display);font-size:clamp(1.2rem,2vw,1.5rem);font-weight:400}
.ev-body p{color:var(--fg-2);font-size:.9rem;margin-top:.4rem;max-width:62ch}
.ev-body .where{color:var(--fg-3);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;
  font-weight:600;margin-top:.7rem;display:block}
.ev-tag{justify-self:start;padding:.32rem .6rem;border:1px solid var(--rule-2);color:var(--fg-3);
  font-size:.62rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
.ev--flag{background:var(--bg-2)}
.ev--flag .ev-tag{border-color:var(--gold);color:var(--gold-text)}
.ev--flag h3{color:var(--gold-text);font-style:italic}
.ev-link{color:var(--gold-text);font-size:.72rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;margin-top:.8rem;display:inline-block;border-bottom:1px solid transparent}
.ev:hover .ev-link{border-bottom-color:var(--gold)}
.empty{padding:3.5rem .2rem;color:var(--fg-3);text-align:center;border-top:1px solid var(--rule)}
@media (max-width:900px){
  .ev{grid-template-columns:3.4rem minmax(0,1fr);gap:.5rem 1.1rem}
  .ev-when,.ev-body,.ev-tag{grid-column:2}
  .ev-when{display:flex;gap:.8rem;align-items:baseline}
  .ev-when span{margin-top:0}
  .ev-tag{margin-top:.8rem}
}
.sub-band{background:var(--bg-2);border-top:1px solid var(--rule);text-align:center}
.sub-band h2{font-size:clamp(1.7rem,3.4vw,2.4rem);font-weight:300;max-width:26ch;margin-inline:auto}
.sub-band p{color:var(--fg-2);max-width:46ch;margin:1.1rem auto 1.9rem}

/* ==================== committee ==================== */
.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.person{background:var(--bg-2);display:flex;flex-direction:column}
.person-img{aspect-ratio:3/4;background:var(--bg-3);position:relative}
.person-img::before{content:"";position:absolute;inset:0;background-color:var(--gold);opacity:.07;
  -webkit-mask:var(--crest-src) center/52% no-repeat;mask:var(--crest-src) center/52% no-repeat}
.person-img span{position:absolute;inset:auto 0 .9rem;text-align:center;color:var(--fg-3);
  font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.person-body{padding:1.15rem 1.25rem 1.4rem;display:flex;flex-direction:column;gap:.3rem;flex:1}
.person-body b{font-family:var(--display);font-size:1.16rem;font-weight:500}
.person-role{color:var(--gold-text);font-size:.64rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.person-body p{color:var(--fg-2);font-size:.84rem;margin-top:.35rem}
.person-mail{margin-top:auto;padding-top:.9rem;color:var(--fg-3);font-size:.7rem;
  word-break:break-all;transition:color .2s}
.person-mail:hover{color:var(--gold-text)}
.person--open{background:var(--bg);border:1px dashed var(--rule-2)}
.person--open .person-body{padding-top:1.5rem}
.person--open p{color:var(--fg-2);font-size:.84rem;margin-top:.4rem}
.person-role--open{color:var(--gold-text)}
.join-band{background:var(--bg-2);border-block:1px solid var(--rule)}
.join-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,6vw,4.5rem);align-items:center}
.join-grid h2{font-size:clamp(1.8rem,3.8vw,2.7rem);font-weight:300;max-width:22ch}
.join-grid p{color:var(--fg-2);margin-top:1.2rem;max-width:46ch}
.roles{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.role{background:var(--bg);padding:1.15rem 1.35rem}
.role b{display:block;font-size:.92rem;font-weight:600}
.role span{color:var(--fg-3);font-size:.8rem;display:block;margin-top:.25rem}
@media (max-width:900px){.join-grid{grid-template-columns:1fr}}

/* ==================== divisions ==================== */
.drow{border-top:1px solid var(--rule);padding-block:clamp(2.2rem,5vw,3.4rem)}
.drow-grid{display:grid;grid-template-columns:4rem minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(1.2rem,4vw,3rem);align-items:start}
.dnum{font-family:var(--display);font-size:2.2rem;color:var(--gold-text);line-height:.9}
.dmain h2{font-size:clamp(1.7rem,3.4vw,2.4rem);font-weight:400}
.dkind{color:var(--fg-3);margin-top:.7rem;display:block}
.dmain p{color:var(--fg-2);margin-top:1.1rem;max-width:44ch}
.dmain .btn{margin-top:1.7rem}
.dwhat{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.dwhat-h{background:var(--bg-2);padding:.85rem 1.2rem;color:var(--fg-3)}
.dwhat-i{background:var(--bg);padding:.95rem 1.2rem;display:flex;gap:.9rem;align-items:baseline}
.dwhat-i b{color:var(--gold-text);font-size:.7rem;font-weight:600;letter-spacing:.1em;
  min-width:4.6rem;flex:0 0 auto;text-transform:uppercase}
.dwhat-i span{font-size:.9rem}
.dwhat-i span a{color:var(--gold-text)}
@media (max-width:900px){.drow-grid{grid-template-columns:1fr;gap:1.4rem}.dnum{font-size:1.7rem}}

/* ==================== partners ==================== */
.tier-band{border-top:1px solid var(--rule)}
.tier-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;
  margin-bottom:1.6rem;padding-bottom:1rem;border-bottom:1px solid var(--rule-2)}
.tier-head h2{font-size:clamp(1.6rem,3.2vw,2.3rem);font-weight:300}
.principals{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.principal{background:var(--bg-2);padding:1.7rem 1.6rem;display:flex;flex-direction:column;gap:.55rem}
.principal-logo{aspect-ratio:16/8;background:var(--bg-3);border:1px solid var(--rule);display:grid;
  place-items:center;margin-bottom:1.1rem;color:var(--fg-3);font-size:.6rem;letter-spacing:.13em;
  text-transform:uppercase;font-weight:600}
.principal h3{font-size:1.35rem;font-weight:500}
.principal .pr{color:var(--fg-3);font-size:.68rem;font-weight:600;letter-spacing:.11em;text-transform:uppercase}
.principal p{color:var(--fg-2);font-size:.88rem;margin-top:.4rem}
.principal .with{margin-top:auto;padding-top:1.1rem;border-top:1px solid var(--rule);
  color:var(--gold-text);font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase}
.why{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.why-cell{background:var(--bg-2);padding:1.7rem 1.5rem}
.why-cell b{display:block;font-family:var(--display);font-size:2.4rem;font-weight:300;color:var(--gold-text);line-height:1}
.why-cell span{display:block;color:var(--fg-3);margin-top:.6rem}
.why-cell p{color:var(--fg-2);font-size:.86rem;margin-top:.8rem}
.pack{background:var(--bg-2);border-block:1px solid var(--rule);text-align:center}
.pack h2{font-size:clamp(1.8rem,3.8vw,2.7rem);font-weight:300;max-width:28ch;margin-inline:auto}
.pack p{color:var(--fg-2);max-width:48ch;margin:1.2rem auto 2rem}
.pack-row{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}

/* ==================== careers ==================== */
.routes{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.route{background:var(--bg-2);padding:1.8rem 1.6rem;display:flex;flex-direction:column;gap:.6rem}
.route h3{font-size:1.4rem;font-weight:500}
.route .k{color:var(--gold-text)}
.route p{color:var(--fg-2);font-size:.9rem}
.route ul{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.5rem}
.route li{font-size:.86rem;color:var(--fg-2);padding-left:1rem;position:relative}
.route li::before{content:"";position:absolute;left:0;top:.6em;width:5px;height:1px;background:var(--gold)}
.route .go{margin-top:auto;padding-top:1.3rem;color:var(--gold-text)}

/* the cycle — a year of deadlines, which is what students actually need */
.cycle{border:1px solid var(--rule);margin-top:1rem}
.cyc{display:grid;grid-template-columns:8.5rem minmax(0,1fr) 9rem;gap:1.5rem;padding:1.35rem 1.5rem;
  border-bottom:1px solid var(--rule);align-items:baseline}
.cyc:last-child{border-bottom:0}
.cyc:nth-child(odd){background:var(--bg-2)}
.cyc-when{color:var(--gold-text);font-size:.74rem;font-weight:600;letter-spacing:.11em;text-transform:uppercase}
.cyc-body b{display:block;font-family:var(--display);font-size:1.18rem;font-weight:500}
.cyc-body p{color:var(--fg-2);font-size:.87rem;margin-top:.35rem;max-width:58ch}
.cyc-who{justify-self:start;color:var(--fg-3);font-size:.62rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;border:1px solid var(--rule-2);padding:.3rem .55rem;white-space:nowrap}
@media (max-width:860px){.cyc{grid-template-columns:1fr;gap:.5rem}.cyc-who{margin-top:.7rem}}

.res{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.res-i{background:var(--bg-2);padding:1.5rem 1.45rem;transition:background .2s;display:block}
.res-i:hover{background:var(--bg-3)}
.res-i b{display:block;font-family:var(--display);font-size:1.18rem;font-weight:500}
.res-i span{display:block;color:var(--fg-3);font-size:.82rem;margin-top:.45rem}
.res-i em{display:block;font-style:normal;color:var(--gold-text);font-size:.64rem;font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;margin-top:1rem}
.callout{border-left:2px solid var(--gold);padding:1.2rem 0 1.2rem 1.5rem;margin-top:2rem;
  color:var(--fg-2);max-width:56ch}

/* ==================== about ==================== */
.stack{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,5rem);align-items:start}
.stack h2{font-size:clamp(1.8rem,3.8vw,2.6rem);font-weight:300;max-width:20ch}
.stack p{color:var(--fg-2)}
.stack p+p{margin-top:1.1rem}
.acc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:2rem 2.4rem;margin-top:2.4rem}
.acc{border-top:2px solid var(--gold);padding-top:1.1rem}
.acc b{font-family:var(--display);font-size:1.24rem;font-weight:400;display:block;line-height:1.2}
.acc span{color:var(--fg-3);display:block;margin-top:.6rem}
.gov{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:1rem}
.gov-i{background:var(--bg-2);padding:1.3rem 1.5rem;display:grid;grid-template-columns:11rem minmax(0,1fr);gap:1.4rem}
.gov-i b{color:var(--fg-3);font-size:.68rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase}
.gov-i span{font-size:.92rem;color:var(--fg-2)}
@media (max-width:900px){.stack{grid-template-columns:1fr}.gov-i{grid-template-columns:1fr;gap:.4rem}}

/* ==================== contact ==================== */
.who{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.who-i{background:var(--bg-2);padding:1.7rem 1.6rem;display:flex;flex-direction:column;gap:.5rem}
.who-i b{font-family:var(--display);font-size:1.24rem;font-weight:500}
.who-i p{color:var(--fg-2);font-size:.88rem}
.who-i a{margin-top:auto;padding-top:1.2rem;color:var(--gold-text);font-size:.8rem;font-weight:600;
  letter-spacing:.04em;word-break:break-all}
.find{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,6vw,4rem);align-items:center}
.find h2{font-size:clamp(1.8rem,3.6vw,2.5rem);font-weight:300;max-width:22ch}
.find p{color:var(--fg-2);margin-top:1.2rem;max-width:44ch}
.socials{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.soc{background:var(--bg-2);padding:1.2rem 1.4rem;display:flex;align-items:center;gap:1rem;transition:background .2s}
.soc:hover{background:var(--bg-3)}
.soc b{font-size:.94rem;font-weight:600}
.soc span{color:var(--fg-3);font-size:.82rem;margin-left:auto}
@media (max-width:900px){.find{grid-template-columns:1fr}}

/* ==================== 404 ==================== */
.nf{min-height:min(70vh,640px);display:flex;align-items:center;position:relative;overflow:hidden;
  border-bottom:1px solid var(--rule)}
.nf .crest3d{top:50%;right:-8%;transform:translateY(-50%);opacity:.14}
.nf .wrap{position:relative}
.nf-inner{max-width:46ch}
.nf h1{font-size:clamp(2.4rem,6.4vw,4.4rem);font-weight:300;margin-block:1.3rem 0}
.nf p{color:var(--fg-2);margin-top:1.4rem}
.nf-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);margin-top:2.4rem}
.nf-links a{background:var(--bg-2);padding:1.1rem 1.3rem;transition:background .2s}
.nf-links a:hover{background:var(--bg-3)}
.nf-links b{display:block;font-size:.92rem;font-weight:600}
.nf-links span{display:block;color:var(--fg-3);font-size:.8rem;margin-top:.25rem}

/* ==================== international trip ==================== */
.trip-hero .crest3d{opacity:.15}
/* dashed = provisional, the same grammar as the open committee roles */
.status{max-width:860px;margin-inline:auto;border:1px dashed var(--rule-2);background:var(--bg-2)}
.status-head{padding:1.4rem 1.7rem;border-bottom:1px dashed var(--rule-2);display:flex;
  justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center}
.status-head b{font-family:var(--display);font-size:1.3rem;font-weight:500}
.srow{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:1.5rem;padding:1.2rem 1.7rem;
  border-bottom:1px dashed var(--rule);align-items:center}
.srow:last-child{border-bottom:0}
.srow .k{color:var(--fg-3)}
.srow .v{font-size:1rem;color:var(--fg-2)}
.srow .v--open{color:var(--gold-text);font-family:var(--display);font-size:1.25rem}
.srow .v a{color:var(--gold-text)}
@media (max-width:640px){.srow{grid-template-columns:1fr;gap:.4rem}}

.pitch{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2rem,6vw,5rem);align-items:start}
.pitch h2{font-size:clamp(1.8rem,3.8vw,2.6rem);font-weight:300;max-width:20ch}
.pitch p{color:var(--fg-2)}
.pitch p+p{margin-top:1.1rem}

.role-card{border:1px solid var(--gold);background:var(--bg-2);padding:clamp(1.6rem,4vw,2.4rem);
  max-width:760px;margin-inline:auto;position:relative}
.role-card::after{content:"";position:absolute;inset:8px;border:1px solid var(--rule-2);pointer-events:none}
.role-card .caps--gold{display:block;margin-bottom:1rem}
.role-card h2{font-size:clamp(1.7rem,3.6vw,2.4rem);font-weight:300}
.role-card p{color:var(--fg-2);margin-top:1.1rem;max-width:56ch}
.role-list{list-style:none;margin:1.6rem 0 0;padding:0;display:grid;gap:.6rem}
.role-list li{color:var(--fg-2);font-size:.92rem;padding-left:1.1rem;position:relative}
.role-list li::before{content:"";position:absolute;left:0;top:.65em;width:6px;height:1px;background:var(--gold)}
.role-card .btn{margin-top:1.9rem}

.past{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule)}
.past-i{position:relative;aspect-ratio:4/3;background:var(--bg-3);display:flex;flex-direction:column;
  justify-content:flex-end;padding:1.1rem;overflow:hidden}
.past-i::before{content:"";position:absolute;inset:0;background-color:var(--gold);opacity:.06;
  -webkit-mask:var(--crest-src) center/50% no-repeat;mask:var(--crest-src) center/50% no-repeat}
.past-i span{position:relative;color:var(--fg-3);font-size:.58rem;letter-spacing:.14em;
  text-transform:uppercase;font-weight:600}
.past-i em{position:relative;font-style:normal;font-family:var(--display);font-size:1.05rem;
  color:var(--fg-2);margin-top:.3rem}
@media (max-width:760px){.past{grid-template-columns:repeat(2,1fr)}}


/* ==================== WordPress admin & editor integration ==================== */
.page-body{max-width:70ch;color:var(--fg-2)}
.page-body h2{font-size:clamp(1.7rem,3.4vw,2.4rem);font-weight:300;margin:2.2rem 0 1rem;color:var(--fg)}
.page-body h3{font-size:1.35rem;font-weight:500;margin:1.8rem 0 .8rem;color:var(--fg)}
.page-body p{margin-bottom:1.1rem}
.page-body a{color:var(--gold-text);border-bottom:1px solid var(--rule-2)}
.page-body ul,.page-body ol{margin:0 0 1.2rem 1.2rem;padding:0}
.page-body li{margin-bottom:.5rem}
.page-body blockquote{border-left:2px solid var(--gold);padding-left:1.4rem;margin:1.6rem 0;font-style:italic}
.page-body img{margin:1.6rem 0}
.page-body figcaption{color:var(--fg-3);font-size:.84rem;margin-top:.6rem}

.spot-logo img{max-width:78%;height:auto}
.person-img img,.prez-photo img,.spot-logo img{display:block}
.person-img img{width:100%;height:100%;object-fit:cover}

/* WordPress alignment classes */
.alignleft{float:left;margin:.4rem 1.6rem 1rem 0}
.alignright{float:right;margin:.4rem 0 1rem 1.6rem}
.aligncenter{margin-inline:auto}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}

/* uploaded logo, if one is set under Appearance -> Customise -> Logo */
.mark--logo img{max-height:52px;width:auto;display:block}
.mark--logo .custom-logo-link{display:block}

/* ==================== additions: sponsor band, fund, summit days, calendar ==================== */

/* sitewide sponsor band, sits above the footer */
.sponsor-band{border-top:1px solid var(--rule);padding-block:clamp(2rem,4vw,3rem);background:var(--bg)}
.sponsor-band-label{display:block;margin-bottom:1.2rem;text-align:center}
.sponsor-band-empty{text-align:center;color:var(--fg-3);font-size:.88rem}
.sponsor-band-empty a{color:var(--gold-text);border-bottom:1px solid var(--rule-2);margin-left:.4rem}

/* social mobility fund */
.fund-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(2rem,6vw,4.5rem);align-items:center}
.fund-grid h2{font-size:clamp(1.8rem,3.8vw,2.7rem);font-weight:300;max-width:22ch;margin-top:1.1rem}
.fund-grid p{color:var(--fg-2);margin-top:1.2rem;max-width:46ch}
.fund-note{color:var(--fg-3)!important;font-size:.88rem}
.fund-grid .btn{margin-top:1.9rem}
.fund-cards{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.fund-card{background:var(--bg-2);padding:1.3rem 1.5rem;display:flex;justify-content:space-between;
  align-items:baseline;gap:1rem;flex-wrap:wrap}
.fund-card b{font-family:var(--display);font-size:1.25rem;font-weight:500}
.fund-card span{color:var(--gold-text);font-size:.66rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase}
@media (max-width:900px){.fund-grid{grid-template-columns:1fr}}

/* summit: three days */
.days{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--rule);
  border:1px solid var(--rule)}
.day{background:var(--bg);padding:1.9rem 1.7rem}
.sec--alt .day{background:var(--bg-2)}
.day-no{display:block;color:var(--gold-text);margin-bottom:1rem}
.day h3{font-size:clamp(1.3rem,2.4vw,1.7rem);font-weight:400;margin-bottom:.9rem}
.day p{color:var(--fg-2);font-size:.92rem}
@media (max-width:900px){.days{grid-template-columns:1fr}}

/* calendar controls when placed inline rather than stuck to the top */
.controls--inline{position:static;background:transparent;border-bottom:0;margin-bottom:1.4rem}
.controls--inline .wrap{padding-inline:0}
.controls--inline .term{background:var(--bg-2)}
.list-title{font-size:clamp(1.4rem,2.8vw,2rem);font-weight:300}
.ev-body h4{font-family:var(--display);font-size:clamp(1.15rem,2vw,1.45rem);font-weight:400;margin:0}
.ev-body h4 a{transition:color .2s}
.ev:hover .ev-body h4 a{color:var(--gold-text)}

/* countdown, now with seconds */
.countdown-unit b{font-variant-numeric:tabular-nums}
.countdown-note{color:var(--fg-3);font-size:.88rem;margin-top:1.6rem}
.countdown .pack-row{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}

/* ==================== presidents' letter ==================== */
.letter-inner{max-width:760px;margin-inline:auto;text-align:center}
.letter-inner .crest{width:44px;height:50px;margin:0 auto 1.4rem}
.letter-body{text-align:left;margin-top:2rem;padding-top:2rem;border-top:1px solid var(--rule)}
.letter-body p{color:var(--fg-2);font-size:clamp(1rem,1.35vw,1.08rem);line-height:1.72;max-width:64ch}
.letter-body p + p{margin-top:1.2rem}
.letter-salut{font-family:var(--display);font-size:clamp(1.5rem,3vw,2.1rem);color:var(--fg)!important;
  font-weight:300;line-height:1.2}
.letter-signoff{margin-top:1.6rem!important;color:var(--fg-3)!important}
.letter-sign{display:flex;align-items:center;gap:1.4rem;margin-top:1.8rem;padding-top:1.6rem;
  border-top:1px solid var(--rule);text-align:left;flex-wrap:wrap}
.letter-people{display:flex}
.letter-face{display:block;width:64px;height:64px;border-radius:50%;overflow:hidden;
  border:1px solid var(--rule-2);background:var(--bg-3)}
.letter-face + .letter-face{margin-left:-14px}
.letter-face img{width:100%;height:100%;object-fit:cover;display:block}
.letter-sign b{display:block;font-family:var(--display);font-size:1.45rem;font-weight:500}
.letter-sign span{color:var(--fg-3)}
.letter-sign a{color:var(--gold-text)}


/* ==================== photography ==================== */
/* homepage society-life band */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:transparent;border:0}
.shot{position:relative;aspect-ratio:4/5;margin:0;overflow:hidden;background:transparent}
.shot img{width:100%;height:100%;object-fit:cover;display:block;
  filter:saturate(.82) contrast(1.03);transition:transform .8s var(--ease),filter .5s}
.shot:hover img{transform:scale(1.04);filter:saturate(1) contrast(1.05)}
.shot figcaption{position:absolute;inset:auto 0 0;padding:2.6rem 1.1rem .95rem;
  background:linear-gradient(to top,rgba(10,16,32,.88),transparent);
  color:var(--fg);font-family:var(--display);font-size:1.05rem;letter-spacing:.01em}
@media (max-width:820px){.gallery{grid-template-columns:repeat(2,1fr)}}

/* the co-presidents, beside the signature */
.letter-photo{margin:0;width:clamp(160px,26vw,220px);flex:0 0 auto}
.letter-photo img{width:100%;height:auto;display:block;border:0;filter:saturate(.9)}

/* a photo set into a text column */
.side-photo{margin:1.8rem 0 0}
.side-photo img{width:100%;height:auto;display:block;border:0;
  filter:saturate(.85) contrast(1.03)}

/* Law Ball: atmosphere behind the hero, heavily suppressed */
.bhero-photo{position:absolute;inset:0;background-size:cover;background-position:center 40%;
  opacity:.3;filter:saturate(.55) contrast(1.05);pointer-events:none}
.bhero-photo::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to right,rgba(10,16,32,.96) 0%,rgba(10,16,32,.72) 55%,rgba(10,16,32,.9) 100%)}

/* borrowed logos: normalise wildly different aspect ratios into the cells */
.logo-external{max-width:78%;max-height:60px;width:auto;height:auto;object-fit:contain}
.principal-logo .logo-external{max-height:76px}

/* Once a real image is present the placeholder plate and its crest watermark
   are just a grey edge behind the photo — suppress both. */
.person-img:has(img),.prez-photo:has(img),.spk-img:has(img),.past-i:has(img){
  background:transparent;border:0}
.person-img:has(img)::before,.prez-photo:has(img)::before,
.spk-img:has(img)::before,.past-i:has(img)::before{content:none}
.prez-photo:has(img) img{width:100%;height:100%;object-fit:cover;display:block}

/* ==================== sponsor wall (single source of truth) ====================
   Wider cells so logos read at a usable size, and a pure white plate so the
   firms whose files still carry a white background blend in rather than
   showing as a paler rectangle. */
.logo-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));
  gap:1px;background:var(--rule);border:1px solid var(--rule)}
.logo-cell{aspect-ratio:16/9;display:grid;place-items:center;padding:1.1rem;
  background:var(--bg-2);transition:background .25s,color .25s;
  /* name-only fallback, until a logo file arrives */
  font-family:var(--display);font-size:clamp(.86rem,1.3vw,1.05rem);font-weight:400;
  letter-spacing:.01em;text-transform:none;color:var(--fg-2);text-align:center;
  line-height:1.25;hyphens:auto}
.logo-cell:hover{color:var(--gold-text)}
.logo-cell:has(img){background:#fff}
.logo-cell img{max-height:74px;max-width:84%;width:auto;height:auto;object-fit:contain;opacity:1}
.principal-logo{background:#fff}
.principal-logo img,.principal-logo .logo-external{max-height:88px;max-width:84%;
  width:auto;height:auto;object-fit:contain}
@media (max-width:640px){
  .logo-wall{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .logo-cell img{max-height:56px}
}

/* ==================== presidents' letter, evened out ==================== */
/* the greeting and the sign-off now read as part of the letter, not as display */
.letter-salut{font-family:var(--body)!important;font-size:inherit!important;
  color:var(--fg-2)!important;font-weight:400!important;line-height:inherit!important}
.letter-signoff{color:var(--fg-2)!important;margin-top:1.2rem!important}

/* ==================== social mobility fund ==================== */
.fund-grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:center}
.fund-grid--rev{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}
.fund-mark{display:flex;flex-direction:column;align-items:center;gap:1.4rem;
  padding:clamp(1.5rem,4vw,2.5rem);border:1px solid var(--rule);background:var(--bg)}
.sec--alt .fund-mark{background:var(--bg-2)}
.fund-mark svg{width:min(190px,60%);height:auto;color:var(--gold);display:block}
.fund-mark b{font-family:var(--body);font-size:.7rem;font-weight:600;letter-spacing:.2em;
  text-transform:uppercase;color:var(--gold-text);text-align:center;line-height:1.7}
.fund-covers{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1.6rem}
.fund-covers span{border:1px solid var(--rule-2);color:var(--fg-3);padding:.35rem .7rem;
  font-size:.66rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
@media (max-width:900px){.fund-grid{grid-template-columns:1fr}}
