/*
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}
.logo-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule)}
.logo-cell{background:var(--bg-2);aspect-ratio:3/2;display:grid;place-items:center;font-size:.62rem;
  letter-spacing:.13em;text-transform:uppercase;color:var(--fg-3);font-weight:500;transition:background .25s,color .25s}
.logo-cell:hover{background:var(--bg-3);color:var(--gold-text)}
.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}

/* real partner logos, once uploaded */
.logo-cell img{max-width:72%;height:auto;opacity:.72;transition:opacity .25s}
.logo-cell:hover img{opacity:1}
.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)}

/* sponsor names, until logos arrive — typographic rather than broken */
.logo-cell{font-family:var(--display);font-size:clamp(.82rem,1.4vw,1.02rem);letter-spacing:.01em;
  text-transform:none;font-weight:400;color:var(--fg-2);text-align:center;padding:.9rem;line-height:1.25;
  hyphens:auto}
.logo-cell:hover{color:var(--gold-text)}
.logo-cell img{max-width:74%;height:auto}

/* ==================== 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}
.logo-cell{padding:1rem}
.logo-cell img{max-height:56px;width:auto;object-fit:contain}
.principal-logo img{max-height:80px;width:auto;object-fit:contain}
/* most firm logos are dark on transparent, so give them a light plate to sit on */
.logo-cell:has(img),.principal-logo:has(img){background:#f4f3ef}
.logo-cell:has(img):hover{background:#fff}

/* 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}
