/* LARRY LESTER 42 — Modern edition */
:root{
  --navy:#0B1B3A;--navy-2:#13295A;--cream:#FAF6EE;--sand:#F1EADB;--white:#FFFFFF;
  --coral:#E4533F;--gold:#F2B233;--sky:#4F8DF7;--ink:#101828;--muted:#5B6478;
  --font-display:"Bricolage Grotesque","Syne","Helvetica Neue",Arial,sans-serif;
  --font-body:"DM Sans","Inter",system-ui,sans-serif;--font-mono:"DM Mono","SF Mono",monospace;
  --max:1200px;--r:24px;--r-sm:14px;--r-pill:999px;
  --shadow:0 20px 60px -20px rgba(11,27,58,.35);--shadow-sm:0 8px 24px -10px rgba(11,27,58,.25);
}
*{box-sizing:border-box}
/* The hidden attribute must beat any display rule set on a component.
   Filtering marks items hidden; without this a `display:flex` card stays
   on screen even though the script has excluded it. */
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font-body);color:var(--ink);background:var(--cream);line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
a:focus-visible,button:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:6px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
h1,h2,h3{font-family:var(--font-display);font-weight:800;line-height:1.02;margin:0;letter-spacing:-.025em}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--coral);font-weight:500}
.eyebrow::before{content:"";width:22px;height:2px;background:currentColor;border-radius:2px}
.section{padding:110px 0}
.section-head{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:end;margin-bottom:56px}
.section-head h2{font-size:clamp(34px,4.6vw,58px);margin-top:14px}
.section-head .lead{margin:0;color:var(--muted);font-size:18px;max-width:46ch}
@media(max-width:800px){.section-head{grid-template-columns:1fr;gap:16px}}
.btn{display:inline-flex;align-items:center;gap:10px;padding:16px 26px;border-radius:var(--r-pill);font-family:var(--font-body);font-weight:600;font-size:15px;text-decoration:none;border:2px solid transparent;background:var(--navy);color:var(--white);transition:transform .2s,box-shadow .2s,background .2s;cursor:pointer;box-shadow:0 8px 20px -10px rgba(11,27,58,.5)}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 30px -12px rgba(11,27,58,.55)}
.btn-coral{background:var(--coral)}
.btn-gold{background:var(--gold);color:var(--navy)}
.btn-ghost{background:transparent;border-color:rgba(16,24,40,.2);color:var(--ink);box-shadow:none}
.on-dark .btn-ghost{border-color:rgba(255,255,255,.35);color:var(--white)}
.btn .arrow{transition:transform .2s}.btn:hover .arrow{transform:translateX(4px)}

/* header */
.site-header{position:sticky;top:0;z-index:50;padding:16px 0;transition:background .3s}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;position:relative}
.header-inner{background:rgba(11,27,58,.75);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-pill);padding:10px 12px 10px 20px;display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%;color:var(--white)}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--white)}
.brand-num{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--coral),#f27c3d);display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:17px;color:var(--white);box-shadow:0 6px 14px -4px rgba(228,83,63,.7)}
.brand-name{display:block;font-family:var(--font-display);font-weight:800;font-size:18px;letter-spacing:-.01em;line-height:1}
.brand-sub{display:block;font-size:11px;color:rgba(255,255,255,.6);margin-top:3px}
.nav ul{list-style:none;margin:0;padding:0;display:flex;gap:4px;align-items:center}
.nav a{text-decoration:none;font-size:14px;font-weight:500;padding:10px 14px;border-radius:var(--r-pill);transition:background .2s;white-space:nowrap}
.nav a:hover,.nav .current-menu-item>a{background:rgba(255,255,255,.12)}
.nav .btn{padding:11px 20px;font-size:14px;margin-left:8px;background:var(--gold);color:var(--navy)}
.nav-toggle{display:none;background:none;border:1px solid rgba(255,255,255,.3);color:var(--white);padding:8px 14px;border-radius:var(--r-pill);cursor:pointer;font-weight:600}
.topbar{display:none}
@media(max-width:1000px){
  .nav-toggle{display:block}
  .nav{display:none;position:absolute;left:28px;right:28px;top:calc(100% + 8px);background:var(--navy);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
  .nav.open{display:block}
  .nav ul{flex-direction:column;align-items:stretch;gap:2px}
  .nav li{width:100%}
  .nav a{display:block;padding:13px 16px}
  .nav .nav-cta{margin-top:10px}
  .nav .nav-cta .btn{display:flex;width:100%;margin:0;justify-content:center;padding:14px 20px}
}

/* hero */
.hero{background:var(--navy);color:var(--white);position:relative;margin-top:-90px;padding-top:90px;overflow:hidden;border-radius:0 0 var(--r) var(--r)}
.hero .blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.55;pointer-events:none}
.hero .b1{width:600px;height:600px;background:var(--sky);top:-200px;right:-100px}
.hero .b2{width:500px;height:500px;background:var(--coral);bottom:-250px;left:-150px;opacity:.4}
.hero .wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;padding-top:110px;padding-bottom:120px}
.hero h1{font-size:clamp(44px,6.2vw,84px);margin:22px 0 24px;max-width:13ch}
.hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--gold),#ffd27a);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{font-size:19px;max-width:50ch;color:rgba(255,255,255,.78);margin:0 0 34px}
.hero .eyebrow{color:var(--gold)}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.hero .hero-ctas .btn-ghost,.on-dark .hero-ctas .btn-ghost{border-color:rgba(255,255,255,.35);color:var(--white)}
.hero-num{position:absolute;right:-30px;top:40%;font-family:var(--font-display);font-weight:800;font-size:480px;line-height:1;color:rgba(255,255,255,.035);pointer-events:none;user-select:none;letter-spacing:-.06em}
/* stat cluster */
.stats{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:16px;transform:rotate(-2deg)}
.stat{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(10px);border-radius:var(--r);padding:26px 24px;transition:transform .3s}
.stat:hover{transform:translateY(-6px)}
.stat.pop{background:var(--gold);color:var(--navy);border-color:transparent;transform:rotate(3deg) scale(1.04)}
.stat.pop:hover{transform:rotate(3deg) translateY(-6px) scale(1.04)}
.stat.pop2{background:var(--coral);border-color:transparent}
.stat .n{font-family:var(--font-display);font-weight:800;font-size:56px;line-height:1;letter-spacing:-.04em}
.stat .l{font-size:14px;opacity:.8;margin-top:8px;line-height:1.3}
.stat:nth-child(2){margin-top:32px}.stat:nth-child(3){margin-top:-32px}
@media(max-width:900px){.hero .wrap{grid-template-columns:1fr;padding-top:70px;padding-bottom:90px}.hero-num{font-size:260px;top:auto;bottom:-40px}.stats{transform:none}.stat:nth-child(2),.stat:nth-child(3){margin-top:0}}

/* ticker */
.ticker{background:var(--gold);color:var(--navy);padding:16px 0;overflow:hidden;font-family:var(--font-display);font-weight:800;font-size:18px;letter-spacing:-.01em;transform:rotate(-1.2deg) scale(1.03);margin:-26px 0 20px}
.ticker-track{display:flex;gap:48px;white-space:nowrap;animation:tick 40s linear infinite;width:max-content}
.ticker span::after{content:"✦";margin-left:48px;color:var(--coral)}
@keyframes tick{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.ticker-track{animation:none}*{transition:none!important}}

/* feature */
.feature .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:72px;align-items:center}
.feature-img{border-radius:var(--r);aspect-ratio:4/5;background:linear-gradient(160deg,var(--navy-2),var(--navy));box-shadow:var(--shadow);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.5);font-size:13px;text-align:center;padding:20px;transform:rotate(-2deg)}
.feature-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feature-img .badge{position:absolute;top:20px;left:20px;background:var(--coral);color:#fff;border-radius:var(--r-pill);padding:8px 14px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.feature h2{font-size:clamp(32px,4.4vw,54px);margin:14px 0 20px}
.feature p{margin:0 0 22px;font-size:18px;color:var(--muted)}
.feature blockquote{margin:0 0 28px;padding:22px 26px;background:var(--white);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);font-family:var(--font-display);font-weight:600;font-size:19px;line-height:1.35;position:relative}
.feature blockquote::before{content:"“";position:absolute;top:-18px;left:18px;font-size:64px;color:var(--gold);font-family:Georgia,serif;line-height:1}
.feature blockquote cite{display:block;font-family:var(--font-mono);font-weight:400;font-style:normal;font-size:12px;color:var(--muted);margin-top:10px;letter-spacing:.08em}
@media(max-width:900px){.feature .wrap{grid-template-columns:1fr;gap:40px}.feature-img{transform:none}}

/* books — fanned shelf */
.books{background:var(--sand);border-radius:var(--r);margin:0 16px}
.book-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px 28px}
.book{text-decoration:none;display:block;color:var(--ink);perspective:900px}
.cover{aspect-ratio:2/3;border-radius:14px;background:linear-gradient(160deg,var(--navy-2),var(--navy));color:var(--white);position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:20px;overflow:hidden;box-shadow:0 30px 40px -24px rgba(11,27,58,.55);transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s}
.cover::after{content:"";position:absolute;left:0;top:0;bottom:0;width:10px;background:linear-gradient(90deg,rgba(0,0,0,.25),transparent)}
.cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.book:nth-child(odd) .cover{transform:rotate(-2deg)}.book:nth-child(even) .cover{transform:rotate(2deg) translateY(12px)}
.book:hover .cover{transform:rotate(0) translateY(-14px) rotateY(-6deg);box-shadow:0 40px 50px -20px rgba(11,27,58,.6)}
.cover-tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.cover-title{font-family:var(--font-display);font-weight:800;font-size:22px;line-height:1.05;letter-spacing:-.02em}
.cover.alt{background:linear-gradient(160deg,#f2704f,var(--coral))}.cover.alt .cover-tag{color:#fff}
.cover.alt2{background:linear-gradient(160deg,#ffd27a,var(--gold));color:var(--navy)}.cover.alt2 .cover-tag{color:var(--navy)}
.book-meta{padding-top:22px;text-align:center}
.book-meta h3{font-family:var(--font-body);font-weight:600;font-size:15px;line-height:1.3;letter-spacing:0}
.book-meta span{font-size:12px;color:var(--muted)}
@media(max-width:900px){.book-grid{grid-template-columns:repeat(2,1fr)}}

/* services */
.services{background:var(--navy);color:var(--white);border-radius:var(--r);margin:24px 16px;position:relative;overflow:hidden}
.services .section-head .lead{color:rgba(255,255,255,.7)}
.services .eyebrow{color:var(--gold)}
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.svc{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:var(--r);padding:36px 32px;transition:transform .3s,background .3s}
.svc:hover{transform:translateY(-8px);background:rgba(255,255,255,.1)}
.svc .inning{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:24px;margin-bottom:22px;background:var(--gold)}
.svc:nth-child(2) .inning{background:var(--coral)}.svc:nth-child(3) .inning{background:var(--sky)}
.svc h3{font-size:24px;margin-bottom:12px;letter-spacing:-.02em}
.svc p{margin:0;color:rgba(255,255,255,.72);font-size:16px}
.svc ul{margin:20px 0 0;padding:0;list-style:none;font-size:14px}
.svc li{padding:9px 0;border-top:1px solid rgba(255,255,255,.1)}
.svc li::before{content:"→ ";color:var(--gold)}
@media(max-width:900px){.svc-grid{grid-template-columns:1fr}}

/* exhibits — horizontal scroll cards */
/* Horizontal strip. A hidden scrollbar with no arrows leaves desktop mouse
   users with no way to move it at all, so the bar stays visible and the
   arrows, dragging and the keyboard all work. */
.ex-strip{position:relative}
/* No scroll-behavior or scroll-snap in the base rule: both fight the direct
   scrollLeft assignment a drag performs, leaving the strip stuck. Smooth
   motion is applied explicitly by the arrow buttons instead, and snapping is
   left to touch devices, where it helps and nothing competes with it. */
.ex-grid{display:flex;gap:20px;overflow-x:auto;padding:12px 4px 18px;
 scrollbar-width:thin;scrollbar-color:rgba(16,24,40,.35) transparent;
 cursor:grab;-webkit-overflow-scrolling:touch}
@media (hover:none){.ex-grid{scroll-snap-type:x proximity}}
.ex-grid.pressing{cursor:grabbing}
/* Links and images are natively draggable, which hijacks the gesture and stops
   the strip moving. Turn that off so pointer events reach our handler. */
.ex-grid .ex,.ex-grid .ex img{-webkit-user-drag:none;user-select:none}
.ex-grid.dragging{cursor:grabbing;scroll-snap-type:none}
/* Applied only after the pointer has actually moved — applying it on mouse-down
   stops a plain click ever reaching the link underneath. */
.ex-grid.dragging .ex{pointer-events:none}
.ex-grid:focus-visible{outline:3px solid var(--gold);outline-offset:4px;border-radius:var(--r-sm)}
.ex-grid::-webkit-scrollbar{height:8px}
.ex-grid::-webkit-scrollbar-track{background:transparent}
.ex-grid::-webkit-scrollbar-thumb{background:rgba(16,24,40,.28);border-radius:99px}
.ex-grid::-webkit-scrollbar-thumb:hover{background:rgba(16,24,40,.45)}
.on-dark .ex-grid,.bg-invert .ex-grid{scrollbar-color:rgba(255,255,255,.4) transparent}
.on-dark .ex-grid::-webkit-scrollbar-thumb,.bg-invert .ex-grid::-webkit-scrollbar-thumb{background:rgba(255,255,255,.35)}
.ex-nav{position:absolute;top:calc(50% - 15px);transform:translateY(-50%);z-index:3;
 width:46px;height:46px;border-radius:50%;border:1px solid rgba(16,24,40,.12);background:var(--white);
 color:var(--ink);font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;
 justify-content:center;box-shadow:var(--shadow-sm);transition:transform .2s,background .2s,opacity .2s}
.ex-nav:hover{transform:translateY(-50%) scale(1.08);background:var(--gold)}
.ex-nav[hidden]{display:none!important}
.ex-nav.prev{left:-10px}
.ex-nav.next{right:-10px}
@media(max-width:760px){.ex-nav{display:none!important}}
.ex{flex:0 0 280px;scroll-snap-align:start;background:linear-gradient(160deg,var(--navy-2),var(--navy));color:var(--white);aspect-ratio:3/4;border-radius:var(--r);padding:24px;display:flex;flex-direction:column;justify-content:flex-end;text-decoration:none;position:relative;overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .3s}
.ex:hover{transform:translateY(-8px) rotate(-1deg)}
.ex img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.6}
.ex::before{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,27,58,.9),transparent 60%)}
.ex h3{position:relative;font-size:24px;letter-spacing:-.02em}
.ex span{position:relative;font-size:12px;color:var(--gold);margin-bottom:10px;font-weight:600}

/* 42 */
.forty-two{background:linear-gradient(135deg,var(--coral),#f27c3d);color:var(--white);border-radius:var(--r);margin:0 16px;overflow:hidden;position:relative}
.forty-two .wrap{display:grid;grid-template-columns:auto 1fr;gap:56px;align-items:center}
.forty-two .big{font-family:var(--font-display);font-weight:800;font-size:clamp(160px,24vw,300px);line-height:.85;letter-spacing:-.06em;color:var(--white);text-shadow:0 20px 40px rgba(0,0,0,.2);transform:rotate(-6deg)}
.forty-two h2{font-size:clamp(30px,4vw,50px);margin:12px 0 18px}
.forty-two p{max-width:52ch;margin:0 0 26px;color:rgba(255,255,255,.9);font-size:18px}
.forty-two .eyebrow{color:var(--white)}
.forty-two .btn{background:var(--navy)}
.pill-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:28px}
.pill{font-size:13px;font-weight:500;border-radius:var(--r-pill);padding:8px 16px;text-decoration:none;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);transition:background .2s}
.pill:hover{background:rgba(255,255,255,.32)}
@media(max-width:900px){.forty-two .wrap{grid-template-columns:1fr}.forty-two .big{transform:none}}

/* markers */
.markers .wrap{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.markers-card{background:var(--white);border-radius:var(--r);padding:40px;box-shadow:var(--shadow-sm);border-left:8px solid var(--gold)}
.markers-card h3{font-size:24px;margin-bottom:8px}
.markers-card p{margin:0 0 20px;color:var(--muted)}
@media(max-width:900px){.markers .wrap{grid-template-columns:1fr}}

/* speaking */
.speak{background:var(--navy);color:var(--white);border-radius:var(--r);margin:0 16px 20px;position:relative;overflow:hidden}
.speak .blob{position:absolute;width:500px;height:500px;border-radius:50%;background:var(--sky);filter:blur(100px);opacity:.35;right:-150px;top:-150px}
.speak .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;position:relative}
.speak .eyebrow{color:var(--gold)}
.speak h2{font-size:clamp(34px,4.8vw,60px);margin:14px 0 20px}
.speak p{font-size:18px;color:rgba(255,255,255,.75)}
.contact-card{background:var(--white);color:var(--ink);border-radius:var(--r);padding:36px;box-shadow:var(--shadow)}
.contact-card dt{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--coral);margin-top:18px}
.contact-card dt:first-child{margin-top:0}
.contact-card dd{margin:4px 0 0;font-weight:500}
.contact-card dl{margin:0 0 28px}
.contact-card a{text-decoration:none}
.contact-card .pill{background:var(--sand);border:0;color:var(--ink)}
@media(max-width:900px){.speak .wrap{grid-template-columns:1fr}}

/* footer */
/* Distinctly darker than the Speaking block above it, with its own rounded
   shape and a gold rule, so the two read as separate pieces rather than one
   continuous slab of navy. */
.site-footer{background:#060E1F;color:var(--white);border-top:3px solid var(--gold);
 padding:52px 0 30px;margin:0 16px 16px;border-radius:var(--r)}
.site-footer .wrap{padding-top:0}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px}
.site-footer h4{font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin:0 0 16px;font-weight:500}
.site-footer ul{list-style:none;margin:0;padding:0}.site-footer li{padding:5px 0}
.site-footer a{text-decoration:none;color:rgba(255,255,255,.8);transition:color .2s}.site-footer a:hover{color:var(--gold)}
.site-footer p{margin:0;color:rgba(255,255,255,.65);max-width:36ch}
.foot-bottom{border-top:1px solid rgba(255,255,255,.1);padding-top:22px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:13px;color:rgba(255,255,255,.5)}
@media(max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.foot-grid{grid-template-columns:1fr}}

/* reveal */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* inner pages */
.page-hero{background:var(--navy);color:var(--white);padding:150px 0 70px;margin-top:-90px;border-radius:0 0 var(--r) var(--r)}
.page-hero .eyebrow{color:var(--gold)}
.page-hero h1{font-size:clamp(38px,5.6vw,68px);margin-top:14px}
.entry{max-width:760px;padding:72px 28px;margin:0 auto;font-size:18px}
.entry h2,.entry h3{margin:40px 0 14px}.entry h2{font-size:34px}.entry h3{font-size:24px}
.entry img{border-radius:var(--r);box-shadow:var(--shadow);margin:28px 0}
.entry blockquote{background:var(--white);border-radius:var(--r-sm);padding:22px 26px;margin:28px 0;box-shadow:var(--shadow-sm);font-family:var(--font-display);font-weight:600;font-size:20px}
.entry a{color:var(--coral)}
/* Namespaced: WordPress puts `single-book` on <body> for any single book post,
   so an unprefixed .single-book rule turns the entire page into this grid. */
.ll42-book-layout{display:grid;grid-template-columns:340px 1fr;gap:64px;max-width:var(--max);margin:0 auto;padding:72px 28px}
@media(max-width:800px){.ll42-book-layout{grid-template-columns:1fr}}
.post-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;padding:72px 0}
.post-card{background:var(--white);border-radius:var(--r);padding:30px;box-shadow:var(--shadow-sm)}
.post-card h3{font-size:22px;margin:12px 0}.post-card a{text-decoration:none}
.wp-block-button__link{border-radius:var(--r-pill)!important}

/* ===== Added sections (same visual language) ===== */
/* media logos bar */
.logos{background:var(--navy);color:var(--white);padding:0 0 64px;margin-top:-1px}
.logos .wrap{border-top:1px solid rgba(255,255,255,.12);padding-top:34px;display:flex;align-items:center;gap:38px;flex-wrap:wrap;justify-content:center}
.logos .label{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.45);width:100%;text-align:center;margin-bottom:-8px}
.logos span.o{font-family:var(--font-display);font-weight:800;font-size:21px;color:rgba(255,255,255,.55);letter-spacing:-.02em;transition:color .2s}
.logos span.o:hover{color:var(--gold)}

/* record / milestone band */
.record{background:var(--navy);color:var(--white);border-radius:var(--r);margin:0 16px;position:relative;overflow:hidden}
.record .blob{position:absolute;width:520px;height:520px;border-radius:50%;background:var(--sky);filter:blur(110px);opacity:.32;left:-160px;bottom:-200px;pointer-events:none}
.record .wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center}
.record .eyebrow{color:var(--gold)}
.record h2{font-size:clamp(32px,4.4vw,54px);margin:14px 0 20px}
.record p{color:rgba(255,255,255,.78);font-size:18px;margin:0 0 24px}
.milestones{display:grid;gap:14px}
.ms{display:grid;grid-template-columns:104px 1fr;gap:22px;align-items:start;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-sm);padding:20px 24px;transition:transform .3s,background .3s}
.ms:hover{transform:translateX(6px);background:rgba(255,255,255,.1)}
.ms .yr{font-family:var(--font-display);font-weight:800;font-size:26px;color:var(--gold);letter-spacing:-.03em;line-height:1.1}
.ms .tx{font-size:15px;color:rgba(255,255,255,.82);line-height:1.5}
@media(max-width:900px){.record .wrap{grid-template-columns:1fr;gap:40px}.ms{grid-template-columns:76px 1fr;gap:16px;padding:16px 18px}}

/* testimonials */
.quotes-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.qt{background:var(--white);border-radius:var(--r);padding:36px 34px;box-shadow:var(--shadow-sm);position:relative;transition:transform .3s}
.qt:hover{transform:translateY(-6px)}
.qt::before{content:"“";position:absolute;top:6px;left:24px;font-family:Georgia,serif;font-size:78px;line-height:1;color:var(--gold);opacity:.55}
.qt p{position:relative;font-family:var(--font-display);font-weight:600;font-size:21px;line-height:1.32;letter-spacing:-.015em;margin:0 0 20px}
.qt .who{font-size:14px;font-weight:600}
.qt .role{font-size:13px;color:var(--muted)}
.qt:nth-child(2){background:var(--navy);color:var(--white)}
.qt:nth-child(2) .role{color:rgba(255,255,255,.6)}
@media(max-width:800px){.quotes-grid{grid-template-columns:1fr}}

/* press / downloads */
.press{background:var(--sand);border-radius:var(--r);margin:24px 16px}
.press-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.dl{background:var(--white);border-radius:var(--r-sm);padding:26px 26px 24px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-sm);transition:transform .25s,box-shadow .25s;border-top:4px solid var(--gold)}
.dl:nth-child(3n+2){border-top-color:var(--coral)}
.dl:nth-child(3n+3){border-top-color:var(--sky)}
.dl:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.dl .kind{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.dl h3{font-size:19px;letter-spacing:-.02em}
.dl .go{margin-top:auto;padding-top:12px;font-size:14px;font-weight:600;color:var(--coral)}
@media(max-width:900px){.press-grid{grid-template-columns:1fr}}

/* bio strip */
.bio .wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:64px;align-items:center}
.bio-photo{border-radius:var(--r);aspect-ratio:4/5;overflow:hidden;box-shadow:var(--shadow);background:linear-gradient(160deg,var(--navy-2),var(--navy));display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.5);font-size:13px;text-align:center;padding:20px;transform:rotate(2deg);position:relative}
.bio-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bio h2{font-size:clamp(32px,4.4vw,54px);margin:14px 0 20px}
.bio p{font-size:18px;color:var(--muted);margin:0 0 20px}
.bio-tags{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:26px}
.bio-tags .pill{background:var(--white);border:1px solid rgba(16,24,40,.1);color:var(--ink)}
@media(max-width:900px){.bio .wrap{grid-template-columns:1fr;gap:40px}.bio-photo{transform:none}}

.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link:focus{position:fixed;top:12px;left:12px;width:auto;height:auto;clip:auto;background:var(--gold);color:var(--navy);padding:12px 18px;border-radius:var(--r-pill);z-index:999;font-weight:600}

/* ===== Research & Media hub ===== */
.hub{padding:56px 0 96px}
.hub-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:32px;border-bottom:1px solid rgba(16,24,40,.12);padding-bottom:16px}
.hub-tab{background:transparent;border:1px solid rgba(16,24,40,.14);border-radius:var(--r-pill);padding:11px 20px;font-family:var(--font-body);font-size:15px;font-weight:600;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:9px;transition:background .2s,color .2s,border-color .2s}
.hub-tab:hover{border-color:var(--navy);color:var(--ink)}
.hub-tab.on{background:var(--navy);border-color:var(--navy);color:var(--white)}
.hub-tab .n{font-family:var(--font-mono);font-size:12px;opacity:.7}
.hub-tab.on .n{opacity:.85}
.hub-panel{display:none}
.hub-panel.on{display:block}
.hub-blurb{color:var(--muted);font-size:17px;max-width:62ch;margin:0 0 26px}
.hub-controls{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;flex-wrap:wrap;margin-bottom:20px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{background:var(--white);border:1px solid rgba(16,24,40,.12);border-radius:var(--r-pill);padding:8px 15px;font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--ink);cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.chip span{font-family:var(--font-mono);font-size:11px;color:var(--muted);margin-left:5px}
.chip:hover{border-color:var(--coral)}
.chip.on{background:var(--coral);border-color:var(--coral);color:var(--white)}
.chip.on span{color:rgba(255,255,255,.75)}
.hub-tools{display:flex;gap:10px;flex-wrap:wrap}
.hub-year,.hub-search{font-family:var(--font-body);font-size:14px;padding:10px 14px;border-radius:var(--r-pill);border:1px solid rgba(16,24,40,.14);background:var(--white);color:var(--ink)}
.hub-search{min-width:230px}
.hub-year:focus,.hub-search:focus{outline:2px solid var(--gold);outline-offset:1px}
.hub-count{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 20px}
.hub-empty{background:var(--sand);border-radius:var(--r-sm);padding:26px;text-align:center;color:var(--muted)}

/* card view — media & advisory */
.rec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.rec-grid .rec{background:var(--white);border-radius:var(--r-sm);padding:24px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:9px;text-decoration:none;color:var(--ink);transition:transform .25s,box-shadow .25s}
.rec-grid .rec.has-link:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.rec-grid .rec-title{font-size:19px;line-height:1.2;letter-spacing:-.02em;margin:0}
.rec-grid .rec-meta{margin:0;font-size:14px;color:var(--muted);line-height:1.45}
.rec-top{display:flex;align-items:center;gap:10px}
.rec-year{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--coral)}
.rec-type{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--sand);border-radius:var(--r-pill);padding:4px 10px}
.rec-go{margin-top:auto;padding-top:8px;font-size:14px;font-weight:600;color:var(--coral)}
@media(max-width:1000px){.rec-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:660px){.rec-grid{grid-template-columns:1fr}}

/* dense list view — publications & clients */
.rec-list{display:flex;flex-direction:column;border-top:1px solid rgba(16,24,40,.1)}
.rec-list .rec{display:grid;grid-template-columns:78px 1fr auto;gap:20px;align-items:baseline;padding:15px 8px;border-bottom:1px solid rgba(16,24,40,.08);text-decoration:none;color:var(--ink);transition:background .18s}
.rec-list .rec:hover{background:var(--white)}
.rec-list .rec-top{display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.rec-list .rec-type{background:none;padding:0;font-size:10px;letter-spacing:.05em;color:rgba(91,100,120,.8);line-height:1.25}
.rec-list .rec-title{font-family:var(--font-body);font-weight:600;font-size:16px;line-height:1.4;letter-spacing:0;margin:0}
.rec-list .rec-meta{margin:3px 0 0;font-size:14px;color:var(--muted)}
.rec-list .rec-go{margin:0;padding:0;font-size:13px;white-space:nowrap}
.rec-list .rec[data-year=""] .rec-year{display:none}
@media(max-width:660px){.rec-list .rec{grid-template-columns:60px 1fr;gap:12px}.rec-list .rec-go{grid-column:2}}

/* homepage proof strip + selected work */
.proof{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.12);border-radius:var(--r);overflow:hidden;margin-top:24px}
.proof a,.proof div{background:var(--navy);padding:26px 24px;text-decoration:none;color:var(--white);transition:background .25s}
.proof a:hover{background:var(--navy-2)}
.proof .n{font-family:var(--font-display);font-weight:800;font-size:38px;line-height:1;letter-spacing:-.03em;color:var(--gold)}
.proof .l{font-size:14px;color:rgba(255,255,255,.72);margin-top:7px}
@media(max-width:800px){.proof{grid-template-columns:1fr 1fr}}

.selected-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.sel{background:var(--white);border-radius:var(--r-sm);padding:26px;box-shadow:var(--shadow-sm);text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:8px;border-left:4px solid var(--coral);transition:transform .25s,box-shadow .25s}
.sel:nth-child(3n+2){border-left-color:var(--gold)}
.sel:nth-child(3n+3){border-left-color:var(--sky)}
.sel:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.sel h3{font-size:20px;letter-spacing:-.02em;line-height:1.2}
.sel .meta{font-size:14px;color:var(--muted)}
@media(max-width:900px){.selected-grid{grid-template-columns:1fr}}

/* ===== Single-page navigation ===== */
/* Stop the floating header covering a section when you jump to it. */
section[id], div[id].hub, .page-hero[id]{scroll-margin-top:104px}
@media(max-width:1000px){section[id]{scroll-margin-top:88px}}
/* Highlight whichever homepage section is in view. */
.nav a.here{background:rgba(255,255,255,.16);color:var(--white)}

/* ===== Section backgrounds ===== */
.section,.hero,.page-hero{position:relative}
.sec-bg{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none;border-radius:inherit}
.sec-fill{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat}
.sec-scrim{position:absolute;inset:0}
.sec-video{position:absolute;inset:0;background-size:cover;background-position:center}
.sec-video video,.sec-video iframe{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
 width:100%;height:100%;object-fit:cover;border:0}
.sec-video.is-embed iframe{width:100vw;height:56.25vw;min-height:100%;min-width:177.77vh}
/* Lift content above the background layer. Only .wrap needs a position here —
   the blobs and the big numeral are already absolutely positioned, and forcing
   them to relative dropped them into the flow and stretched the section. */
.has-bg>.wrap{position:relative;z-index:1}
.has-bg>.blob,.has-bg>.hero-num{z-index:1}
.has-bg .wrap{position:relative;z-index:1}
/* text on a photographic background */
.bg-invert,.bg-invert h1,.bg-invert h2,.bg-invert h3{color:var(--white)}
.bg-invert p,.bg-invert .lead,.bg-invert .hub-blurb{color:rgba(255,255,255,.82)}
.bg-invert .eyebrow{color:var(--gold)}
.bg-invert .btn-ghost{border-color:rgba(255,255,255,.4);color:var(--white)}
.bg-light,.bg-light h2{color:var(--ink)}
@media (prefers-reduced-motion:reduce){.sec-video{display:none}}
@media (max-width:760px){.sec-video{display:none}}

/* ===== Click-to-play video ===== */
.vplayer{position:relative;width:100%;aspect-ratio:16/9;background:var(--navy);background-size:cover;
 background-position:center;border-radius:var(--r-sm);overflow:hidden}
.vplayer video,.vplayer iframe{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:cover}
.vplay{position:absolute;inset:0;width:100%;height:100%;border:0;cursor:pointer;background:rgba(8,15,30,.35);
 display:flex;align-items:center;justify-content:center;transition:background .2s}
.vplay:hover{background:rgba(8,15,30,.2)}
.vplay-icon{width:72px;height:72px;border-radius:50%;background:var(--coral);color:#fff;font-size:26px;
 display:flex;align-items:center;justify-content:center;padding-left:5px;box-shadow:0 10px 30px -8px rgba(0,0,0,.6);
 transition:transform .2s}
.vplay:hover .vplay-icon{transform:scale(1.08)}
/* feature block in video mode keeps the tilted frame */
.feature-video{border-radius:var(--r);box-shadow:var(--shadow);transform:rotate(-2deg);overflow:hidden;position:relative}
.feature-video .badge{position:absolute;top:18px;left:18px;z-index:3;background:var(--coral);color:#fff;
 border-radius:var(--r-pill);padding:8px 14px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.feature-video .vplayer{aspect-ratio:4/5;border-radius:0}
@media(max-width:900px){.feature-video{transform:none}}

/* ===== Archives ===== */
.arch{padding:44px 0 100px}
.arch-colls{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:20px;margin-bottom:22px;
 border-bottom:1px solid rgba(16,24,40,.12)}
.arch-colls .chip{text-decoration:none}
.arch-tools{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:18px}
.arch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:22px}
.arch-card{display:flex;flex-direction:column;text-align:left;background:var(--white);border:0;padding:0;
 border-radius:var(--r-sm);overflow:hidden;cursor:pointer;font:inherit;color:inherit;
 box-shadow:var(--shadow-sm);transition:transform .25s,box-shadow .25s}
.arch-card:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.arch-thumb{position:relative;display:block;aspect-ratio:4/3;background:var(--navy);overflow:hidden}
.arch-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.arch-card:hover .arch-thumb img{transform:scale(1.04)}
.arch-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:42px;opacity:.5}
.arch-thumb img{position:relative;z-index:1}
.arch-kind{position:absolute;left:10px;bottom:10px;background:rgba(8,15,30,.78);color:#fff;font-size:11px;
 padding:5px 10px;border-radius:var(--r-pill);backdrop-filter:blur(4px)}
.arch-body{display:block;padding:16px 18px 20px}
.arch-era{display:block;font-family:var(--font-mono);font-size:11.5px;color:var(--coral);margin-bottom:5px}
.arch-title{display:block;font-family:var(--font-display);font-weight:800;font-size:17px;line-height:1.2;letter-spacing:-.02em}
.arch-cap{display:block;font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.45}
@media(max-width:600px){.arch-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}}

/* ===== Viewer ===== */
.viewer{position:fixed;inset:0;z-index:4000;background:rgba(6,11,22,.975);backdrop-filter:blur(6px);display:flex;
 align-items:center;justify-content:center;padding:28px}
.viewer[hidden]{display:none}
.viewer-inner{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.95fr);gap:30px;
 max-width:1280px;width:100%;max-height:88vh}
.viewer-stage{background:#0a1020;border-radius:var(--r-sm);overflow:auto;display:flex;
 align-items:center;justify-content:center;min-height:320px;max-height:88vh;position:relative}
.viewer-stage img{max-width:100%;max-height:88vh;display:block;object-fit:contain}
.viewer-stage .vplayer{aspect-ratio:16/9;width:100%}
.viewer-stage audio{width:90%;margin:auto}
.viewer-meta{color:#fff;overflow-y:auto;max-height:88vh;padding-right:6px}
.viewer-meta h2{font-size:27px;margin:8px 0 14px;color:#fff}
.viewer-meta .eyebrow{color:var(--gold)}
.viewer-meta p{color:rgba(255,255,255,.8);font-size:15.5px}
.viewer-credit{margin-top:20px;padding-top:14px;border-top:1px solid rgba(255,255,255,.18);
 font-family:var(--font-mono);font-size:12px;color:rgba(255,255,255,.55)}
.viewer-close,.viewer-nav{position:absolute;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);
 color:#fff;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s}
.viewer-close{top:18px;right:20px;width:44px;height:44px;font-size:28px;line-height:1}
.viewer-nav{top:50%;transform:translateY(-50%);width:50px;height:50px;font-size:30px;line-height:1}
.viewer-nav.prev{left:16px}.viewer-nav.next{right:16px}
.viewer-close:hover,.viewer-nav:hover{background:rgba(255,255,255,.24)}
@media(max-width:900px){
 .viewer{padding:14px}
 .viewer-inner{grid-template-columns:1fr;max-height:92vh;overflow-y:auto}
 .viewer-stage{max-height:50vh}.viewer-meta{max-height:none}
 .viewer-nav{width:40px;height:40px;font-size:24px}
}
/* PDF page-turner */
.pdfwrap{display:flex;flex-direction:column;width:100%;height:100%}
.pdfcanvas{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:14px}
.pdfcanvas canvas{max-width:100%;height:auto;box-shadow:0 10px 40px -12px rgba(0,0,0,.7);background:#fff}
.pdfbar{display:flex;align-items:center;justify-content:center;gap:14px;padding:10px;
 background:rgba(255,255,255,.07);border-top:1px solid rgba(255,255,255,.14);color:#fff;font-size:13.5px}
.pdfbar button{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#fff;
 border-radius:var(--r-pill);padding:6px 14px;cursor:pointer;font:inherit}
.pdfbar button:disabled{opacity:.35;cursor:default}
.pdfnote{color:rgba(255,255,255,.55);font-size:12px;text-align:center;padding:8px}

/* homepage archives block */
.archblock{background:var(--navy);color:var(--white);border-radius:var(--r);margin:24px 16px;overflow:hidden;position:relative}
.archblock .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;position:relative;z-index:1}
.archblock h2{font-size:clamp(30px,4vw,48px);margin:14px 0 18px}
.archblock p{color:rgba(255,255,255,.78);font-size:18px;margin:0 0 26px;max-width:48ch}
.archblock .eyebrow{color:var(--gold)}
.arch-peek{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.arch-peek span{aspect-ratio:3/4;border-radius:var(--r-sm);background:var(--navy-2) center/cover;display:block;
 box-shadow:var(--shadow-sm)}
.arch-peek span:nth-child(2){transform:translateY(16px)}
.arch-peek span:nth-child(3){transform:translateY(-10px)}
@media(max-width:900px){.archblock .wrap{grid-template-columns:1fr;gap:30px}}

/* ===== Image lightbox (book and exhibit pages) ===== */
.entry img,.ll42-book-layout .entry img,.zoomable{cursor:zoom-in}
.lb{position:fixed;inset:0;z-index:4500;background:rgba(6,11,22,.975);backdrop-filter:blur(6px);
 display:flex;align-items:center;justify-content:center;padding:34px}
.lb[hidden]{display:none!important}
.lb-img{max-width:92vw;max-height:84vh;object-fit:contain;border-radius:var(--r-sm);
 box-shadow:0 30px 80px -20px rgba(0,0,0,.8)}
.lb-cap{position:absolute;left:0;right:0;bottom:22px;text-align:center;color:rgba(255,255,255,.82);
 font-size:14.5px;padding:0 60px;line-height:1.5}
.lb-count{position:absolute;top:24px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.55);
 font-family:var(--font-mono);font-size:12px;letter-spacing:.08em}
.lb-btn{position:absolute;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);
 color:#fff;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;
 transition:background .2s}
.lb-btn:hover{background:rgba(255,255,255,.25)}
.lb-close{top:18px;right:20px;width:44px;height:44px;font-size:28px;line-height:1}
.lb-prev,.lb-next{top:50%;transform:translateY(-50%);width:50px;height:50px;font-size:30px;line-height:1}
.lb-prev{left:16px}.lb-next{right:16px}
.lb-btn[hidden]{display:none!important}
@media(max-width:700px){.lb{padding:14px}.lb-prev,.lb-next{width:40px;height:40px;font-size:24px}
 .lb-cap{font-size:13px;padding:0 16px;bottom:14px}}

/* Image layers can be zoomed, blurred and masked, so give them somewhere to
   move without bleeding outside the section. */
.sec-bg{overflow:hidden}
.sec-fill{transform-origin:center center;will-change:transform}

/* A background layer is decoration: it must never be able to change the height
   of the section it sits behind, whatever image is dropped into it. */
.sec-bg{position:absolute!important;inset:0;height:100%;max-height:100%;overflow:hidden;contain:paint}
.sec-fill,.sec-video,.sec-scrim{position:absolute;inset:0;max-width:100%;max-height:100%}

/* Pills in About Larry are links now, not labels. */
.bio-tags{gap:9px}
.bio-tags .pill{text-decoration:none;transition:background .2s,border-color .2s,transform .2s}
.bio-tags a.pill:hover{background:var(--gold);border-color:var(--gold);color:var(--navy);transform:translateY(-2px)}

/* Research & Media controls: type, year and search on one line. */
.hub-controls{display:block}
.hub-controls .hub-tools{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.hub-type{font-family:var(--font-body);font-size:14px;padding:10px 14px;border-radius:var(--r-pill);
 border:1px solid rgba(16,24,40,.14);background:var(--white);color:var(--ink);min-width:230px;cursor:pointer}
.hub-type:focus{outline:2px solid var(--gold);outline-offset:1px}
.hub-tools .hub-search{flex:1;min-width:230px}
@media(max-width:700px){
 .hub-controls .hub-tools{flex-direction:column;align-items:stretch}
 .hub-type,.hub-year,.hub-tools .hub-search{width:100%;min-width:0}
}

/* Contact form */
.cform .wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;align-items:start}
.cform h2{font-size:clamp(30px,4vw,48px);margin:14px 0 18px}
.cform p{color:var(--muted);font-size:18px}
.cform-box{background:var(--white);border-radius:var(--r);padding:34px;box-shadow:var(--shadow-sm)}
.cform-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}
.cform-grid p{margin:0}
.cform-grid p.wide{grid-column:1/-1}
.cform label{display:block;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:6px}
.cform label span{color:var(--coral)}
.cform input,.cform select,.cform textarea{width:100%;font-family:var(--font-body);font-size:15px;
 padding:12px 14px;border:1px solid rgba(16,24,40,.16);border-radius:var(--r-sm);background:var(--cream);color:var(--ink)}
.cform textarea{resize:vertical;min-height:130px}
.cform input:focus,.cform select:focus,.cform textarea:focus{outline:2px solid var(--gold);outline-offset:1px;background:#fff}
.cform .btn{margin-top:22px;border:0;cursor:pointer;font-size:15px}
.cform-fine{font-size:13px;color:var(--muted);margin:14px 0 0}
.cform-note{border-radius:var(--r-sm);padding:14px 18px;margin-bottom:20px;font-size:15px}
.cform-note.ok{background:#eaf6ee;border-left:4px solid #2f6b4f;color:#14351f}
.cform-note.bad{background:#fdeceb;border-left:4px solid var(--coral);color:#6b1b14}
.ll42-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
@media(max-width:900px){.cform .wrap{grid-template-columns:1fr;gap:30px}.cform-grid{grid-template-columns:1fr}
 .cform-box{padding:24px}}
/* footer credit */
.foot-credit{margin-left:14px;padding-left:14px;border-left:1px solid rgba(255,255,255,.2)}
.foot-credit a{color:rgba(255,255,255,.62);text-decoration:none;border-bottom:1px solid transparent;transition:.2s}
.foot-credit a:hover{color:var(--gold);border-bottom-color:var(--gold)}

/* ===== Research & Media / Archives filter design =====
   Soft rectangles rather than full pills, description above the tabs, and a
   search field sized to its purpose instead of stretching across the row. */
.hub-blurb-top{margin:0 0 20px;max-width:70ch;font-size:17px;color:var(--muted)}
.hub-tabs{gap:10px;padding-bottom:18px;margin-bottom:22px}
.hub-tab{border-radius:10px;padding:12px 20px}
.hub-tab .n{font-family:var(--font-mono);font-size:11.5px}
.hub-type,.hub-year,.hub-search,.arch-colls .chip,.chips .chip{border-radius:10px}
.hub-type{min-width:210px}
.hub-year{min-width:130px}
.hub-tools .hub-search{flex:0 1 320px;min-width:200px;max-width:320px}
.arch-colls{gap:10px}
.arch-colls .chip{padding:11px 18px}
@media(max-width:700px){
  .hub-tools .hub-search{flex:1 1 auto;max-width:none}
}

/* Archives filters: match the Research & Media page exactly — collection
   buttons styled as tabs, and type + search on a single row. */
.arch-colls{display:flex;gap:10px;flex-wrap:wrap;padding-bottom:18px;margin-bottom:22px;
 border-bottom:1px solid rgba(16,24,40,.12)}
.arch-colls .chip{background:transparent;border:1px solid rgba(16,24,40,.14);border-radius:10px;
 padding:12px 20px;font-family:var(--font-body);font-size:15px;font-weight:600;color:var(--muted);
 display:inline-flex;align-items:center;gap:9px;text-decoration:none;
 transition:background .2s,color .2s,border-color .2s}
.arch-colls .chip:hover{border-color:var(--navy);color:var(--ink);background:transparent}
.arch-colls .chip.on{background:var(--navy);border-color:var(--navy);color:var(--white)}
.arch-colls .chip span{font-family:var(--font-mono);font-size:11.5px;opacity:.7}
.arch-colls .chip.on span{opacity:.85}

.arch-tools{display:block;margin-bottom:18px}
.arch-tools .hub-tools{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
#arch-kind{min-width:210px}
#arch-search{flex:0 1 320px;min-width:200px;max-width:320px}
@media(max-width:700px){
  .arch-tools .hub-tools{flex-direction:column;align-items:stretch}
  #arch-kind,#arch-search{width:100%;max-width:none}
}

/* =====================================================================
   DESIGN REVIEW — September 2026 (Erica's notes)
   Kept as one block at the end so every change is easy to find, and
   reversible by deleting this section. Layout and structure unchanged.
   ===================================================================== */

/* Lighter, neutral shadows everywhere */
:root{
  --shadow:0 14px 34px -18px rgba(40,44,52,.28);
  --shadow-sm:0 6px 18px -10px rgba(99,99,99,.30);
}
.btn{box-shadow:0 4px 12px -6px rgba(11,27,58,.28)}
.btn:hover{box-shadow:0 10px 20px -10px rgba(11,27,58,.38)}
.on-dark .btn,.bg-invert .btn{box-shadow:0 3px 8px -5px rgba(0,0,0,.25)}

/* Accessibility: small red labels failed contrast (3.74:1). Navy on light
   backgrounds; dark sections keep their gold/white labels. */
.eyebrow,.contact-card dt{color:var(--navy)}
.cform .eyebrow{color:var(--navy)}
.on-dark .eyebrow,.bg-invert .eyebrow{color:var(--gold)}
/* Eyebrow marker: a small baseball (circle + seams) instead of a dash.
   Drawn as a mask so it always takes the label's own colour. */
.eyebrow::before{content:"";flex:none;width:14px;height:14px;border-radius:0;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10' stroke-width='2.2'/%3E%3Cpath d='M6.4 4.6c2.3 2 3.5 4.5 3.5 7.4s-1.2 5.4-3.5 7.4M17.6 4.6c-2.3 2-3.5 4.5-3.5 7.4s1.2 5.4 3.5 7.4' stroke-width='1.7'/%3E%3Cpath d='M8.3 7.4l1.3-.6M9.4 10.1l1.4-.2M9.4 13.9l1.4.2M8.3 16.6l1.3.6M15.7 7.4l-1.3-.6M14.6 10.1l-1.4-.2M14.6 13.9l-1.4.2M15.7 16.6l-1.3.6' stroke-width='1.2'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10' stroke-width='2.2'/%3E%3Cpath d='M6.4 4.6c2.3 2 3.5 4.5 3.5 7.4s-1.2 5.4-3.5 7.4M17.6 4.6c-2.3 2-3.5 4.5-3.5 7.4s1.2 5.4 3.5 7.4' stroke-width='1.7'/%3E%3Cpath d='M8.3 7.4l1.3-.6M9.4 10.1l1.4-.2M9.4 13.9l1.4.2M8.3 16.6l1.3.6M15.7 7.4l-1.3-.6M14.6 10.1l-1.4-.2M14.6 13.9l-1.4.2M15.7 16.6l-1.3.6' stroke-width='1.2'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}

/* Hero: sharper corners, softer colour spotlights, white CTA + callout */
.hero{border-radius:0}
.hero .blob{filter:blur(120px)}
.hero .b1{opacity:.38;width:760px;height:760px}
.hero .b2{opacity:.26;width:680px;height:680px}
.hero .eyebrow{color:var(--white)}
.hero .hero-ctas .btn-coral{background:var(--white);color:var(--navy)}
.stat.pop2{background:var(--white);color:var(--navy)}

/* Quick links read as buttons, not tags */
.bio-tags .pill{font-size:14px;font-weight:600;padding:10px 18px;background:var(--white);
  border:1px solid rgba(11,27,58,.18);box-shadow:0 2px 6px -3px rgba(11,27,58,.2)}
.bio-tags .pill:hover{border-color:var(--navy);transform:translateY(-2px)}

/* The Record Rewritten: white text, year and description closer together */
.record p{color:var(--white)}
.ms{grid-template-columns:70px 1fr;gap:14px}
.ms .tx{color:var(--white)}
@media(max-width:900px){.ms{grid-template-columns:62px 1fr;gap:12px}}

/* Books: slightly deeper section background so it stands apart */
.books{background:#EAE1CD;background:color-mix(in srgb,var(--sand) 88%,var(--navy) 7%)}

/* Services: readable text, dots instead of arrows on non-link lists */
.services .section-head .lead,.svc p{color:rgba(255,255,255,.92)}
.svc li::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--gold);margin-right:10px;vertical-align:middle}
/* Stat strip: ONE box with thin dividers (no box-inside-a-box). Each
   figure keeps an arrow so it reads as a link. */
.proof{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.18);border-radius:var(--r);overflow:hidden;margin-top:24px}
.proof>a,.proof>div{background:transparent;border:0;border-radius:0;padding:26px 24px 28px;position:relative;
  color:var(--white);text-decoration:none;transition:background .2s}
.proof>a:not(:first-child),.proof>div:not(:first-child){border-left:1px solid rgba(255,255,255,.16)}
.proof>a:hover{background:rgba(255,255,255,.07)}
.proof .n,.proof .l{background:none;border:0;padding:0;border-radius:0}
.proof .l{color:var(--white);margin-top:4px;padding-right:22px}
.proof .go{position:absolute;right:20px;bottom:22px;color:var(--gold);font-size:18px;transition:transform .2s}
.proof a:hover .go{transform:translateX(4px)}
@media(max-width:800px){
  .proof{grid-template-columns:repeat(2,minmax(0,1fr))}
  .proof>a,.proof>div{padding:22px 18px 40px}
  .proof>a:nth-child(3),.proof>div:nth-child(3){border-left:0}
  .proof>a:nth-child(n+3),.proof>div:nth-child(n+3){border-top:1px solid rgba(255,255,255,.16)}
  .proof .l{padding-right:0}
  .proof .go{right:18px;bottom:14px}
}

/* Selected Work: plain cards, equal height, 24px corners, visible button */
.selected-grid{align-items:stretch}
.sel{border-left:0;border-radius:24px;box-shadow:var(--shadow-sm);height:100%}
.sel .go{margin-top:auto;padding-top:14px;display:inline-flex;align-items:center;gap:6px;
  font-size:14px;font-weight:600;color:var(--navy)}
.sel:hover .go{text-decoration:underline}
.ext{flex:none}

/* Selected Writing: tinted section, quote no longer looks like a button */
.feature:not(.has-bg){background:var(--sand);border-radius:var(--r);margin:24px 16px}
.feature blockquote{background:rgba(255,255,255,.55);box-shadow:none;border-radius:4px var(--r-sm) var(--r-sm) 4px;
  border-left:3px solid var(--gold);padding:22px 26px 22px 58px}
.feature blockquote::before{top:12px;left:18px;font-size:52px;color:var(--coral)}
.feature blockquote cite{font-family:var(--font-body);font-size:14px;font-weight:600;letter-spacing:0;color:var(--ink);margin-top:12px}

/* Testimonials: tinted section, matching flat cards */
#testimonials:not(.has-bg){background:var(--sand);border-radius:var(--r);margin:24px 16px}
.qt,.qt:nth-child(2){background:var(--cream);color:var(--ink);box-shadow:none;border:1px solid rgba(16,24,40,.06)}
.qt:nth-child(2) .role{color:var(--muted)}
.qt::before{color:var(--coral);opacity:1;font-size:56px;top:14px}
.qt p{padding-top:26px}

/* Number 42: true red, no muddy orange */
.forty-two{background:var(--coral)}
.forty-two .btn{box-shadow:0 4px 10px -6px rgba(0,0,0,.3)}

/* Grave markers: card lines up with the text, one shadow, secondary button */
.markers .wrap{align-items:end}
.markers-card{border-left:0;box-shadow:var(--shadow-sm)}

/* Press kit: 24px corners, no coloured top rules, round download icon */
.dl,.dl:nth-child(3n+2),.dl:nth-child(3n+3){border-top:0;border-radius:24px}
.dl .go{margin-top:auto;align-self:flex-end;width:30px;height:30px;padding:0;border-radius:50%;
  background:var(--coral);color:var(--white);display:grid;place-items:center}

/* Contact card: navy social buttons so they aren't scrolled past */
.contact-card .pill{background:var(--navy);color:var(--white)}
.contact-card .pill:hover{background:var(--navy-2)}

/* Contact form: navy panel, white fields, 16px labels and inputs */
.cform-box{background:var(--navy);box-shadow:var(--shadow-sm)}
.cform label{color:var(--white);font-size:16px}
.cform label span{color:var(--gold)}
.cform input,.cform select,.cform textarea{font-size:16px;background:var(--white);color:var(--ink)}
.cform .btn{background:var(--white);color:var(--navy)}
.cform .cform-fine{color:rgba(255,255,255,.8)}

/* Footer: navy to match the page, no yellow rule, links fully opaque */
.site-footer{background:var(--navy);border-top:0}
.site-footer a{color:var(--white)}
.site-footer p{color:rgba(255,255,255,.88)}
.foot-bottom{color:rgba(255,255,255,.75)}

/* =====================================================================
   v2.1.3 — About Larry + Quick links band + service icons
   ===================================================================== */

/* About: portrait sits on the page — no dark panel, no tilt */
.bio .wrap{grid-template-columns:.8fr 1.2fr;gap:56px;align-items:center}
.bio-photo:has(img){background:transparent;aspect-ratio:auto;padding:0;transform:none;
  border-radius:24px;box-shadow:0 34px 44px -34px rgba(40,44,52,.45);position:relative;overflow:hidden}
.bio-photo:has(img) img{position:static;display:block;width:100%;height:auto;object-fit:contain}
.bio-photo{transform:none}
.bio h2{margin:12px 0 18px}
.bio p{font-size:17px;line-height:1.7;margin:0 0 26px}
.bio .hero-ctas{margin-top:0}

/* Quick links: gold band under the About section */
.bio .wrap.ql-wrap{display:block}
.ql-section{padding:0 0 64px}
.bio.section+.ql-section{margin-top:-48px}
.ql-band{margin-top:0;background:var(--gold);border-radius:24px;padding:24px 36px;
  display:flex;align-items:center;gap:28px}
.ql-title{margin:0;font-size:clamp(26px,2.4vw,32px);line-height:1.05;color:var(--navy);flex:none}
.ql-links{display:flex;flex-wrap:wrap;gap:10px;flex:1;min-width:0}
.ql-links .pill{background:var(--white);color:var(--navy);border:0;text-decoration:none;
  font-size:13px;font-weight:600;padding:10px 16px;border-radius:var(--r-pill);
  box-shadow:0 4px 10px -6px rgba(11,27,58,.35);transition:transform .2s,box-shadow .2s,background .2s}
.ql-links .pill:hover{transform:translateY(-2px);box-shadow:0 10px 18px -10px rgba(11,27,58,.45)}
.ql-links .pill:focus-visible{outline:3px solid var(--navy);outline-offset:2px}
@media(max-width:900px){
  .bio .wrap{grid-template-columns:1fr;gap:36px}
  .bio-photo:has(img){max-width:420px}
  .ql-section{padding-bottom:44px}
  .ql-band{margin-top:0;padding:24px;flex-direction:column;align-items:flex-start;gap:16px}
}

/* NoirTech service icons: uploaded image, emoji or built-in line icon */
.svc .inning{color:var(--navy);overflow:hidden}
.svc .inning .ico-line{width:26px;height:26px}
.svc .inning img{width:100%;height:100%;object-fit:contain;padding:9px}
.svc .inning .ico-emoji{font-size:24px;line-height:1}
.svc:nth-child(2) .inning{color:var(--white)}

/* =====================================================================
   v2.1.4 — Video in the About Larry photo spot
   ===================================================================== */
.bio-video{margin:0;position:relative}
.bio-video .vplayer{aspect-ratio:4/5;border-radius:24px;background-color:#E9E4DA;
  box-shadow:0 34px 44px -34px rgba(40,44,52,.45);transition:aspect-ratio .35s ease}
.bio-video .vplayer video{object-fit:cover}
.bio-video .vplayer.is-playing video{object-fit:contain;background:#000}
.bio-video .vplayer.is-embed.is-playing{aspect-ratio:16/9;background-image:none!important;background-color:#000}
.bio-video .vplay{background:linear-gradient(180deg,rgba(8,15,30,0) 45%,rgba(8,15,30,.45))}
.bio-video .vplay:hover{background:linear-gradient(180deg,rgba(8,15,30,0) 35%,rgba(8,15,30,.3))}
.bio-video .vplay-icon{width:78px;height:78px}
.bio-video figcaption{margin-top:14px;font-size:14px;font-weight:600;color:var(--navy);display:flex;align-items:center;gap:8px}
.bio-video figcaption::before{content:"\25B6";font-size:10px;color:var(--coral)}
@media(max-width:900px){.bio-video{max-width:420px}}

/* =====================================================================
   v2.1.5 — Photos placed inside exhibit pages (and other pages)
   The featured image is only the cover on cards now, so photos added in
   the editor keep the size and alignment chosen there.
   ===================================================================== */
.entry img{max-width:100%;height:auto}
.entry figure{margin:28px 0;max-width:100%}
.entry figure img{margin:0}
.entry figcaption{margin-top:10px;font-size:14px;color:var(--muted);text-align:center}
.entry .aligncenter,.entry .aligncenter img{margin-left:auto;margin-right:auto;display:block}
.entry .alignleft{float:left;margin:6px 28px 18px 0;max-width:50%}
.entry .alignright{float:right;margin:6px 0 18px 28px;max-width:50%}
.entry::after{content:"";display:table;clear:both}
@media(max-width:700px){.entry .alignleft,.entry .alignright{float:none;margin:24px auto;max-width:100%}}

/* =====================================================================
   v2.1.7 — Bold letters (*stars*) in the hero intro and About text,
   up to six peer quotes, pencil shortcuts in the Customizer preview
   ===================================================================== */
.hero p .sb{font-weight:700;color:var(--white)}
.bio p .sb{font-weight:700;color:var(--navy)}
.sb{font-weight:700}
.customize-partial-edit-shortcut button{z-index:6}
[data-ll42-section]>.customize-partial-edit-shortcut{left:22px;top:22px}

/* =====================================================================
   v2.1.8 — Article links row under Selected Writing
   Up to 12 pills (name + link) from Customize > 4 · Selected Writing.
   ===================================================================== */
.feature .wrap.feature-more{display:block;margin-top:56px}
.fm-title{font-size:15px;font-family:var(--font-mono);font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);margin:0 0 16px}
.fm-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}
.fm-pill{display:flex;align-items:center;gap:9px;height:100%;min-height:62px;padding:12px 14px;background:var(--white);color:var(--navy);
  border:1px solid rgba(11,27,58,.12);border-radius:20px;text-decoration:none;font-size:13.5px;font-weight:600;line-height:1.25;
  box-shadow:0 4px 12px -8px rgba(11,27,58,.35);transition:transform .2s,box-shadow .2s,border-color .2s}
.fm-pill:hover{transform:translateY(-3px);border-color:var(--navy);box-shadow:0 12px 20px -12px rgba(11,27,58,.45)}
.fm-pill:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.fm-ico{flex:none;color:var(--coral)}
.fm-name{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:1100px){.fm-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.fm-list{grid-template-columns:1fr;gap:10px}.fm-pill{min-height:52px}.feature .wrap.feature-more{margin-top:40px}}

/* v2.1.9 — More Writing: preview-only hints */
.feature-more-slot{display:block}
.fm-incomplete{border:2px dashed var(--coral);background:rgba(255,255,255,.6);flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;cursor:default}
.fm-incomplete:hover{transform:none}
.fm-miss{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--coral)}
.fm-empty{margin:0;padding:16px 20px;border:2px dashed rgba(11,27,58,.25);border-radius:20px;color:var(--muted);font-size:14px;text-align:center}
