/*
Theme Name:   Animost
Theme URI:    https://animost.com
Description:  Standalone WordPress theme for Animost Studio. Motion capture positioning, Customizer-driven throughout. Manrope only, dark surfaces, teal accent, mocap walker signature. No page builder required.
Author:       Animost Studio
Author URI:   https://animost.com
Version:      2.12.0
Requires PHP: 7.4
License:      GNU General Public License v2 or later
License URI:  http://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  animost
Tags:         dark, motion-capture, animation, studio
*/

:root{
  /* palette */
  --ground:#222831;
  --panel:#282E37;
  --panel-2:#393E46;
  --line:rgba(238,238,238,.12);
  --line-2:rgba(238,238,238,.26);
  --text:#EEEEEE;
  --text-dim:#92959A;
  --text-mute:#6C7078;
  --accent:#53A9AC;
  --accent-dim:rgba(83,169,172,.14);

  /* type */
  --font:'Manrope',system-ui,sans-serif;
  --weight-heading:500;
  --weight-body:300;

  --logo-size:96px;
  --max:1280px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
/* WordPress prints width/height attributes on attachment images. A used
   height makes aspect-ratio a no-op, so images stretch. Reset it here and
   let each rule set the ratio it wants. */
img{max-width:100%;height:auto}
body{
  background:var(--ground);color:var(--text);
  font-family:var(--font);font-weight:var(--weight-body);font-size:17px;line-height:1.68;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
body::after{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}
::selection{background:var(--accent);color:var(--ground)}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 40px}
.eyebrow{
  font-family:var(--font);font-size:12px;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:12px;
}
.eyebrow::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}
h1,h2,h3{font-weight:var(--weight-heading);letter-spacing:-.015em;line-height:1.04;text-wrap:balance}
h1{font-size:clamp(2.6rem,5.6vw,4.6rem)}
h2{font-size:clamp(2rem,4.4vw,3.3rem);margin:22px 0 0}
.lede{color:var(--text-dim);max-width:60ch;text-wrap:pretty}
.voice{color:var(--accent)}
section{padding:110px 0}

/* media placeholders */
.ph{
  position:relative;overflow:hidden;border:1px solid var(--line);border-radius:4px;
  background:
    repeating-linear-gradient(45deg,transparent 0 16px,rgba(230,233,237,.028) 16px 17px),
    var(--panel);
}
.ph::after{
  content:attr(data-label);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-family:var(--font);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--text-mute);white-space:nowrap;border:1px solid var(--line-2);
  padding:8px 14px;border-radius:2px;background:rgba(10,12,16,.7);max-width:88%;
  overflow:hidden;text-overflow:ellipsis;
}

/* nav */
/* Scoped to .site-nav, never bare "nav". A bare selector pins every <nav>
   on the page, including the one Easy Table of Contents wraps its list in
   and the one WordPress emits for pagination. */
.site-nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  background:rgba(10,12,16,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.nav-in{max-width:var(--max);margin:0 auto;padding:0 40px;height:66px;display:flex;align-items:center;gap:40px}
.logo{font-weight:700;font-size:20px;letter-spacing:.02em}
.logo em{font-style:normal;color:var(--accent)}
.nav-links{display:flex;gap:32px;margin-left:auto}
/* :not(.btn) — the mobile CTA is an <a class="btn btn-solid"> inside
   .nav-links, and ".nav-links a" (0,1,1) outranks ".btn-solid" (0,1,0),
   so without this it loses its dark button text to the grey link colour. */
.nav-links a:not(.btn){font-size:14px;color:var(--text-dim);transition:color .2s;padding:4px 0;border-bottom:1px solid transparent}
.nav-links a:not(.btn):hover{color:var(--text)}
.nav-links a.on{color:var(--text);border-bottom-color:var(--accent)}
.btn{
  display:inline-flex;align-items:center;gap:10px;font-family:var(--font);font-size:13px;
  font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:13px 24px;
  border:1px solid var(--accent);border-radius:2px;transition:background .2s,color .2s,transform .15s;
  cursor:pointer;background:transparent;color:var(--text);
}
.btn:active{transform:translateY(1px)}
.btn-solid{background:var(--accent);color:var(--ground)}
.nav-links a.btn-solid{color:var(--ground)}
.btn-solid:hover{background:#6FBFC2;border-color:#6FBFC2}
.btn-ghost{border-color:var(--line-2);color:var(--text-dim)}
.btn-ghost:hover{border-color:var(--text-dim);color:var(--text)}
.nav-cta{padding:10px 18px}

/* page head */
.page-head{padding:180px 0 84px;border-bottom:1px solid var(--line)}
.page-head h1{margin-top:24px;max-width:18ch}
.page-head .lede{margin-top:26px;font-size:18px}
.crumb{font-family:var(--font);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);margin-bottom:22px;display:block}
.crumb a:hover{color:var(--text-dim)}
.kind{font-family:var(--font);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}

/* case cards (work index) */
.case{
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:center;
  padding:64px 0;border-bottom:1px solid var(--line);
}
.case:nth-of-type(even) .case-media{order:2}
.case-media{aspect-ratio:16/9;display:block}
.case-meta h5{
  font-family:var(--font);font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--text-mute);font-weight:500;margin:26px 0 6px;
}
.case-meta h5:first-child{margin-top:0}
.case-meta h3{font-size:clamp(1.7rem,3vw,2.4rem)}
.case-meta p{color:var(--text-dim);font-size:15.5px}
.case-meta ul{list-style:none;color:var(--text-dim);font-size:15px}
.case-meta li{padding:3px 0 3px 18px;position:relative}
.case-meta li::before{content:'';position:absolute;left:0;top:12px;width:6px;height:6px;border-radius:50%;background:var(--accent-dim);border:1px solid var(--accent)}
.case-link{
  display:inline-flex;gap:10px;margin-top:30px;font-family:var(--font);font-size:12.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text);border-bottom:1px solid var(--line-2);
  padding-bottom:6px;transition:border-color .2s,color .2s;
}
.case-link:hover{border-color:var(--accent);color:var(--accent)}
.redact{display:inline-block;background:var(--line-2);color:transparent;border-radius:2px;user-select:none}

/* mini tiles */
.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:56px}
.mini{display:block}
.mini .ph{aspect-ratio:16/10}
.mini h4{font-weight:600;font-size:18px;margin:16px 0 3px;letter-spacing:-.01em}
.mini span{font-family:var(--font);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute)}
.mini:hover .ph{border-color:var(--line-2)}

/* case study page */
/* case study: featured image as header background */
.cover-head{position:relative;overflow:hidden;border-bottom:0}
.cover-head.has-cover{min-height:76vh;padding:200px 0 52px;display:flex;align-items:flex-end}
.cover-head.has-cover > .wrap{width:100%}
.art-head.has-cover{min-height:58vh;padding:180px 0 48px}
.cover-lede{max-width:54ch}
/* over a photo the meta grid drops its panel and sits on the scrim */
.cover-head.has-cover .meta-grid{background:none;border:0;border-radius:0;gap:0 34px;overflow:visible;margin-top:52px}
.cover-head.has-cover .meta-cell{background:none;padding:0}
.cover-head.has-cover .meta-cell span{margin-bottom:6px}
.cover-media{position:absolute;inset:0;z-index:0}
.cover-media img{
  width:100%;height:100%;
  min-width:100%;min-height:100%;
  max-width:none;max-height:none;
  object-fit:cover;object-position:center;
  display:block;border:0;border-radius:0;aspect-ratio:auto;
}
.cover-head .hero-scrim{z-index:1}
.cover-head-in{position:relative;z-index:2}
/* case study: media credit + video */
.media-credit{margin-top:28px;font-size:13px;color:var(--text-mute);letter-spacing:.02em}
.case-video-section{padding-top:0}
.case-video{position:relative;aspect-ratio:16/9;margin-top:20px;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:var(--panel)}
.case-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.meta-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:24px}
.meta-cell{background:var(--panel);padding:22px 26px}
.meta-cell span{font-family:var(--font);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);display:block;margin-bottom:8px}
.meta-cell b{font-weight:600;font-size:16px}
.prose{max-width:72ch}
.prose h2{font-size:clamp(1.5rem,2.6vw,2rem);margin:64px 0 18px}
.prose p{color:var(--text-dim);margin-top:14px}
.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:64px}
.strip .ph{aspect-ratio:4/3}
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:56px}
.fact{background:var(--panel);padding:28px 28px 30px}
.fact b{display:block;font-weight:600;font-size:26px;letter-spacing:-.01em}
.fact b em{font-style:normal;color:var(--text-mute);font-size:15px}
.fact span{font-family:var(--font);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute)}
.next-band{border-top:1px solid var(--line);background:var(--panel)}
.next-band .wrap{display:flex;align-items:center;justify-content:space-between;gap:32px;padding-top:56px;padding-bottom:56px;flex-wrap:wrap}
.next-band h3{font-size:clamp(1.5rem,2.6vw,2.1rem)}
.next-band span{font-family:var(--font);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);display:block;margin-bottom:10px}

/* services page */
.svc-block{
  display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:64px;align-items:center;
  padding:84px 0;border-bottom:1px solid var(--line);
}
.svc-block:nth-of-type(even) .svc-media{order:2}
.svc-media{aspect-ratio:4/3;display:block}
.svc-block .num{font-family:var(--font);font-size:12px;letter-spacing:.14em;color:var(--text-mute);display:block;margin-bottom:14px}
.svc-block h2{font-size:clamp(1.7rem,3vw,2.4rem);margin:0}
.svc-block .lede{margin-top:20px;font-size:16px}
.deliv{margin-top:26px}
.deliv h5{font-family:var(--font);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--text-mute);font-weight:500;margin-bottom:8px}
.deliv ul{list-style:none;color:var(--text-dim);font-size:15px}
.deliv li{padding:3px 0 3px 18px;position:relative}
.deliv li::before{content:'';position:absolute;left:0;top:12px;width:6px;height:6px;border-radius:50%;background:var(--accent-dim);border:1px solid var(--accent)}
.spec-mini{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:28px}
.spec-mini .meta-cell{padding:16px 20px}
.spec-mini .meta-cell b{font-size:14.5px}

/* stage page */
.spec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:56px}
.spec{background:var(--panel-2);padding:30px 30px 32px}
.spec span{font-family:var(--font);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);display:block;margin-bottom:10px}
.spec b{font-weight:600;font-size:21px;letter-spacing:-.01em}
.spec b em{font-style:normal;color:var(--text-mute);font-size:15px}
.tl{counter-reset:tl;margin-top:56px;border-top:1px solid var(--line)}
.tl-row{
  display:grid;grid-template-columns:64px 220px 1fr;gap:32px;align-items:baseline;
  padding:30px 8px;border-bottom:1px solid var(--line);counter-increment:tl;
}
.tl-row::before{content:'0' counter(tl);font-family:var(--font);font-size:12px;color:var(--text-mute);letter-spacing:.1em}
.tl-row h4{font-weight:600;font-size:17px}
.tl-row p{color:var(--text-dim);font-size:15px}
.split{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:72px;align-items:center}
.split .lede{margin-top:26px}
.stage-visual{
  position:relative;aspect-ratio:5/5.4;border:1px solid var(--line);background:var(--ground);
  border-radius:4px;overflow:hidden;
}
.stage-visual canvas{position:absolute;inset:0;width:100%;height:100%}
/* The image must fill the framed box. WordPress prints width/height
   attributes, the base img reset sets height:auto, and lazy-load plugins
   add their own sizing, so pin every dimension rather than relying on
   width alone. */
.stage-visual img{
  position:absolute;inset:0;
  width:100%;height:100%;
  min-width:100%;min-height:100%;
  max-width:none;max-height:none;
  object-fit:cover;object-position:center;
  display:block;border:0;border-radius:0;
}
.stage-visual figcaption{
  position:absolute;left:18px;bottom:14px;font-family:var(--font);font-size:11px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);z-index:2;
}
/* Over a photo the muted caption disappears into the image, so lay a
   gradient behind it and lift the text to full contrast. */
.stage-visual.has-photo::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:42%;z-index:1;
  background:linear-gradient(to top,rgba(10,12,16,.92) 0%,rgba(10,12,16,.55) 45%,rgba(10,12,16,0) 100%);
  pointer-events:none;
}
.stage-visual.has-photo figcaption{color:var(--text)}
.rate-band{border:1px solid var(--line);border-radius:4px;background:var(--panel);padding:48px 44px;margin-top:64px;display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.rate-band p{font-family:var(--font);font-weight:300;font-size:clamp(1.2rem,2.2vw,1.55rem);max-width:34ch;line-height:1.45}
.rate-band p b{color:var(--accent);font-weight:500}

/* studio page */
.team{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:56px}
.member .ph{aspect-ratio:3/4}
.member h4{font-weight:600;font-size:17px;margin:16px 0 2px}
.member span{font-family:var(--font);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute)}
.member p{color:var(--text-dim);font-size:14px;margin-top:8px}
/* studio: group photo */
.group-photo{margin-top:76px}
.group-photo img{width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:4px}
.group-photo figcaption{margin-top:14px;font-size:13px;color:var(--text-mute);letter-spacing:.02em}

/* studio: performer & crew roster */
.roster{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:48px}
.roster-item .ph{aspect-ratio:3/4}
.roster-item h4{font-weight:600;font-size:16px;margin:14px 0 3px}
.roster-item .disc{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--accent)}
.roster-item p{color:var(--text-dim);font-size:13.5px;margin-top:8px}
.event-row{
  display:grid;grid-template-columns:200px 1fr auto;gap:32px;align-items:center;
  padding:30px 8px;border-bottom:1px solid var(--line);
}
.event-row:first-of-type{border-top:1px solid var(--line);margin-top:48px}
.event-row .when{font-family:var(--font);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-mute)}
.event-row h4{font-weight:600;font-size:18px}
.event-row p{color:var(--text-dim);font-size:14.5px}

/* insights */
.feature-post{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:center;padding:64px 0;border-bottom:1px solid var(--line)}
.feature-post .ph{aspect-ratio:16/9}
.post-row{
  display:grid;grid-template-columns:150px 1fr 60px;gap:36px;align-items:baseline;
  padding:36px 8px;border-bottom:1px solid var(--line);transition:background .25s;
}
.post-row:hover{background:var(--panel)}
.post-row .tag{font-family:var(--font);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute)}
.post-row h3{font-size:clamp(1.2rem,2.2vw,1.6rem);font-weight:600}
.post-row p{color:var(--text-dim);font-size:15px;margin-top:8px}
.post-row .svc-arrow{font-family:var(--font);font-size:20px;color:var(--text-mute);text-align:right;transition:color .25s,transform .25s}
.post-row:hover .svc-arrow{color:var(--text);transform:translateX(6px)}

/* quotes */
.quote{border:1px solid var(--line);border-radius:4px;background:var(--panel);padding:38px 36px;margin-top:64px}
.quote .mark{font-family:var(--font);font-weight:600;font-size:44px;line-height:0;color:var(--accent);display:block;margin-bottom:22px}
.quote p{font-family:var(--font);font-weight:300;font-size:19px;line-height:1.55;color:var(--text)}
.quote cite{display:block;margin-top:24px;font-style:normal;font-family:var(--font);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-mute)}

/* contact */
.contact-grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:72px;align-items:start}
.contact-side p.small{font-family:var(--font);font-size:12.5px;color:var(--text-dim);letter-spacing:.04em;margin-top:36px;line-height:2}
.contact-side p.small b{color:var(--text);font-weight:500}
form{display:grid;gap:16px}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
label{font-family:var(--font);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);display:block;margin-bottom:8px}
input,select,textarea{
  width:100%;background:var(--panel);border:1px solid var(--line);border-radius:2px;
  color:var(--text);font-family:var(--font);font-size:15px;padding:14px 16px;transition:border-color .2s;
}
input:hover,select:hover,textarea:hover{border-color:var(--line-2)}
textarea{min-height:130px;resize:vertical}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238C939E' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center}

/* cta band */
.cta{padding:110px 0}
.cta h2{max-width:18ch}
.cta .lede{margin:26px 0 42px}

/* footer */
footer{border-top:1px solid var(--line);padding:64px 0 44px;color:var(--text-dim);font-size:14px}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:48px}
.foot-grid h4{font-family:var(--font);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-mute);margin-bottom:16px;font-weight:500}
.foot-grid a{display:block;padding:5px 0;transition:color .2s}
.foot-grid a:hover{color:var(--text)}
.foot-bottom{margin-top:56px;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;font-family:var(--font);font-size:11.5px;letter-spacing:.08em;color:var(--text-mute)}

/* reveal */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}

/* responsive */
@media (max-width:1024px){
  .split,.contact-grid,.svc-block,.feature-post{grid-template-columns:1fr;gap:44px}
  .case{grid-template-columns:1fr;gap:32px}
  .case:nth-of-type(even) .case-media,.svc-block:nth-of-type(even) .svc-media{order:0}
  .mini-grid,.strip,.spec-grid{grid-template-columns:repeat(2,1fr)}
  .facts{grid-template-columns:repeat(2,1fr)}
  .team{grid-template-columns:repeat(2,1fr)}
  .cover-head.has-cover{min-height:0;padding:150px 0 44px;display:block}
  .cover-head.has-cover .meta-grid{gap:0 20px;margin-top:38px}
  .roster{grid-template-columns:repeat(3,1fr)}
  .gallery{grid-template-columns:repeat(3,1fr)}
  .meta-grid{grid-template-columns:1fr}
  .tl-row{grid-template-columns:44px 1fr;gap:18px}
  .tl-row p{grid-column:2}
  .post-row{grid-template-columns:1fr;gap:8px}
  .post-row .svc-arrow{display:none}
  .event-row{grid-template-columns:1fr;gap:8px}
  .stage-visual{max-width:560px}
}
/* mobile nav behavior is defined in the responsive block near the end */
@media (max-width:640px){
  .wrap,.nav-in{padding-left:22px;padding-right:22px}
  section{padding:80px 0}
  .page-head{padding:150px 0 64px}
  .mini-grid,.strip,.spec-grid{grid-template-columns:1fr}
  .team{grid-template-columns:1fr}
  .roster{grid-template-columns:repeat(2,1fr)}
  .gallery{grid-template-columns:repeat(2,1fr)}
  .gallery-nav{width:44px;height:44px;font-size:17px}
  .gallery-prev{left:8px}
  .gallery-next{right:8px}
  .f-row{grid-template-columns:1fr}
}

/* article */
.art-meta{display:flex;gap:26px;flex-wrap:wrap;font-family:var(--font);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);margin-top:26px}
.has-cover .art-meta{color:var(--text-dim)}
.has-cover .crumb{color:var(--text-dim)}
.article{max-width:720px;margin:0 auto}
.article p{color:var(--text-dim);margin-top:22px}
.article p.lead{font-size:19px;color:var(--text);font-weight:400}
.article h2{font-size:clamp(1.35rem,2.3vw,1.75rem);margin:60px 0 4px}
.article a{border-bottom:1px solid var(--line-2);transition:border-color .2s,color .2s}

/* ============================================================
   Easy Table of Contents plugin
   The plugin injects its box inside .article, so the prose rules
   above give its links an underline and its items a teal bullet
   next to the plugin's own "1.2." counter. Reset both, drop the
   light-theme box, and restyle to the dark palette.
   ============================================================ */
/* The plugin injects an inline "div#ez-toc-container{width:75%}" from its
   own settings, which outranks a bare #id selector. Scoping to .article
   raises specificity above it so the box fills the column. */
.article #ez-toc-container,
.case-body #ez-toc-container,
#ez-toc-container{
  display:block;width:auto;box-sizing:border-box;
  background:var(--panel);border:1px solid var(--line);border-radius:4px;
  box-shadow:none;padding:22px 24px;margin:36px 0;
}
#ez-toc-container .ez-toc-title-container{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
#ez-toc-container p.ez-toc-title{
  font-family:var(--font);font-size:11px;font-weight:500;letter-spacing:.15em;
  text-transform:uppercase;color:var(--text-mute);margin:0;
}
#ez-toc-container .ez-toc-title-toggle{display:inline-flex;align-items:center}
#ez-toc-container a.ez-toc-toggle{
  background:none;border:0;padding:0;line-height:0;color:var(--text-dim);transition:color .2s;
}
#ez-toc-container a.ez-toc-toggle:hover{color:var(--accent)}
#ez-toc-container a.ez-toc-toggle svg{width:16px;height:16px;fill:currentColor}
#ez-toc-container nav{margin-top:16px}
#ez-toc-container ul,#ez-toc-container ul.ez-toc-list{list-style:none;margin:0;padding:0}
#ez-toc-container ul ul{margin:4px 0 4px 20px}
#ez-toc-container li{padding:3px 0;position:static}
/* the prose bullet would double up with the plugin's numbering */
#ez-toc-container li::before{content:none}
#ez-toc-container a.ez-toc-link{
  color:var(--text-dim);font-size:14.5px;line-height:1.55;
  border-bottom:0;text-decoration:none;transition:color .2s;
}
/* the "1.2." counter, printed on the link's ::before by the plugin */
#ez-toc-container a.ez-toc-link::before{color:var(--text-mute)}
#ez-toc-container a.ez-toc-link:hover,
#ez-toc-container a.ez-toc-link:focus,
#ez-toc-container a.ez-toc-link.active{color:var(--accent);border-bottom:0}

/* Links to posts that moved to Trau Studios open in a new tab (see
   inc/sister-links.php). A small arrow tells the reader before they click. */
.article a.is-sister-link::after{content:"\2197";font-size:.78em;margin-left:.2em;color:var(--text-mute)}
.article a.is-sister-link:hover::after{color:var(--accent)}

/* nav is fixed, so anchor jumps land under it without this */
.article h2,.article h3,.article h4,.article h5,
.case-body h2,.case-body h3{scroll-margin-top:96px}
.article a:hover{border-color:var(--accent);color:var(--accent)}
.article ul{color:var(--text-dim);margin-top:18px;list-style:none}
.article li{padding:4px 0 4px 18px;position:relative}
.article li::before{content:'';position:absolute;left:0;top:14px;width:6px;height:6px;border-radius:50%;background:var(--accent-dim);border:1px solid var(--accent)}
.article figure{margin:48px 0}
.article figure .ph{aspect-ratio:16/9}
.article figcaption{font-family:var(--font);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute);margin-top:12px}
.pullq{font-family:var(--font);font-weight:300;font-size:clamp(1.25rem,2.2vw,1.55rem);line-height:1.5;color:var(--text);border-left:2px solid var(--accent);border-radius:0;padding-left:26px;margin:52px 0}
.callout{border:1px solid var(--line);background:var(--panel);border-radius:4px;padding:26px 28px;margin:48px 0}
.callout h5{font-family:var(--font);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:14px}
.callout p{font-family:var(--font);font-size:13px;color:var(--text-dim);margin:0;line-height:2.1;letter-spacing:.02em}
.callout p b{color:var(--text);font-weight:500}
.author{display:flex;gap:20px;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:28px 0;margin-top:76px}
.author .ph{width:60px;height:60px;border-radius:50%;flex:none}
.author .ph::after{display:none}
.author b{display:block;font-weight:600;font-size:15.5px}
.author span{font-family:var(--font);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute)}
.more{margin-top:90px}
.tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:44px}
.tag-pill{font-family:var(--font);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);border:1px solid var(--line);border-radius:2px;padding:8px 14px;transition:color .2s,border-color .2s}
.tag-pill:hover{color:var(--text);border-color:var(--line-2)}
.tag-pill.on{color:var(--accent);border-color:var(--accent)}

/* ============================================================
   WordPress integration extras
   ============================================================ */

/* admin bar offset for the fixed nav */
body.admin-bar .site-nav{top:32px}
@media (max-width:782px){body.admin-bar .site-nav{top:46px}}

/* wp_nav_menu markup inside .nav-links */
.nav-links ul{display:flex;gap:32px;list-style:none;margin:0;padding:0}
.nav-links li{margin:0;padding:0}
.nav-links li.current-menu-item > a,
.nav-links li.current_page_item > a,
.nav-links li.current-menu-ancestor > a{color:var(--text);border-bottom:1px solid var(--accent)}
.nav-links li a{padding:4px 0;border-bottom:1px solid transparent}

/* real media inside preview placeholder slots */
.case-media img,.feature-post img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:4px;border:1px solid var(--line);display:block}
.mini img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;border-radius:4px;border:1px solid var(--line);display:block;transition:border-color .25s}
.mini:hover img{border-color:var(--line-2)}
.hero-media video,.hero-media img{
  position:absolute;inset:0;
  width:100%;height:100%;
  min-width:100%;min-height:100%;
  max-width:none;max-height:none;
  object-fit:cover;object-position:center;
}
/* the image sits under the video, so it covers the gap while the video
   loads and stays visible if the video fails or is removed */
.hero-media img{z-index:0}
.hero-media video{z-index:1}
.hero-media video[hidden]{display:none}
.member img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;border-radius:4px;display:block}
.roster-item img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;border-radius:4px;display:block;border:1px solid var(--line)}
.author img{width:60px;height:60px;border-radius:50%;flex:none}
.svc-media img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px;border:1px solid var(--line);display:block}

/* post content basics inside .article and .case-body */
.article img,.case-body img{max-width:100%;height:auto;border-radius:4px;border:1px solid var(--line)}
.case-body{margin-top:64px}
.article .wp-block-image{margin:48px 0}
.alignleft{float:left;margin:6px 24px 12px 0}
.alignright{float:right;margin:6px 0 12px 24px}
.aligncenter{display:block;margin:24px auto}
.screen-reader-text{position:absolute!important;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}

/* Contact Form 7 */
.contact-grid .wpcf7 p{margin:0 0 16px}
.wpcf7-submit{
  display:inline-flex;font-family:var(--font);font-size:13px;font-weight:500;letter-spacing:.06em;
  text-transform:uppercase;padding:13px 24px;border:1px solid var(--accent);border-radius:2px;
  background:var(--accent);color:var(--ground);cursor:pointer;transition:background .2s;
}
.wpcf7-submit:hover{background:#6FBFC2}
.wpcf7-not-valid-tip{color:#E24B4A;font-family:var(--font);font-size:12px;margin-top:6px}
.wpcf7-response-output{border:1px solid var(--line-2);border-radius:2px;font-family:var(--font);font-size:12.5px;color:var(--text-dim);padding:14px 16px;margin:16px 0 0}
.wpcf7-spinner{filter:invert(1)}

/* pagination */
.pagination{display:flex;gap:10px;margin-top:56px;font-family:var(--font);font-size:12.5px}
.pagination .page-numbers{border:1px solid var(--line);border-radius:2px;padding:8px 14px;color:var(--text-dim)}
.pagination .page-numbers.current,.pagination .page-numbers:hover{color:var(--accent);border-color:var(--accent)}


/* ============================================================
   Homepage (front-page) sections — added to fix missing hero/landing styles
   ============================================================ */
/* ---------- Hero ---------- */
/* column, not row: .hero-in and .hero-foot are both flex children, and as
   a row they split the width, which squeezed the heading to half measure */
.hero{position:relative;min-height:100dvh;display:flex;flex-direction:column;justify-content:flex-end;padding:140px 0 90px}
/* z-index:0 makes this a stacking context, so the video's z-index:1 stays
   contained here instead of painting through .hero-overlay above it */
.hero-media{position:absolute;inset:0;z-index:0;border:0;border-radius:0}
.hero-media::after{top:24%;}
/* Flat dim over the hero media. Sits above the video and below the scrim,
   so the bottom gradient still does the work of making text legible while
   this one just takes the brightness out of the footage as a whole. */
.hero-overlay{position:absolute;inset:0;background:#0A0C10;opacity:var(--hero-dim,.45);pointer-events:none}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(to top,rgba(10,12,16,.96) 0%,rgba(10,12,16,.55) 45%,rgba(10,12,16,.25) 100%)}
.hero-in{position:relative;z-index:2}
.hero h1{font-size:clamp(2.8rem,6.4vw,5.8rem);max-width:15ch}
.hero h1 .voice{color:var(--accent)}
.hero .lede{margin:30px 0 42px;font-size:18px;max-width:54ch}
.hero-ctas{display:flex;gap:16px;flex-wrap:wrap}
.hero-foot{
  position:relative;z-index:2;margin-top:64px;display:flex;gap:28px;flex-wrap:wrap;
  font-family:var(--font);font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);
}
.hero-foot span{display:flex;align-items:center;gap:10px}
.hero-foot i{width:5px;height:5px;border-radius:50%;background:var(--text-mute);font-style:normal}

/* ---------- Partner wall ---------- */
.partners{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel)}
.partners-in{max-width:var(--max);margin:0 auto;padding:56px 40px}
.partners-in .eyebrow{margin-bottom:34px}
.logo-wall{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.logo-slot{
  background:var(--panel);padding:30px 24px;display:flex;flex-direction:column;
  align-items:flex-start;gap:22px;transition:background .25s;
}
.logo-slot:hover{background:var(--panel-2)}
.logo-mark{
  width:var(--logo-size);height:var(--logo-size);
  display:flex;align-items:center;justify-content:center;flex:none;
  opacity:.7;filter:grayscale(1);transition:opacity .25s,filter .25s;
}
.logo-slot:hover .logo-mark{opacity:1;filter:none}
.logo-mark img{width:var(--logo-size);height:var(--logo-size);object-fit:contain;display:block}
.logo-none{
  display:flex;align-items:center;justify-content:center;
  width:var(--logo-size);height:var(--logo-size);
  border:1px dashed var(--line-2);border-radius:2px;
  font-size:10px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--text-mute);
}
.logo-client{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--text);line-height:1.4}
.logo-project{font-size:13.5px;color:var(--text-dim);margin-top:-8px;line-height:1.5}

/* ---------- Pull line ---------- */
.pull{padding:150px 0 130px;text-align:center}
.pull p.big{font-family:var(--font);font-weight:300;font-size:clamp(1.7rem,3.6vw,2.9rem);line-height:1.3;max-width:26ch;margin:0 auto;text-wrap:balance}
.pull p.big b{color:var(--accent);font-weight:400}
.pull .lede{margin:34px auto 0;text-align:center}

/* ---------- Services ---------- */
.svc-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:58px;flex-wrap:wrap}
.svc{border-top:1px solid var(--line)}
.svc-row{
  display:grid;grid-template-columns:64px minmax(0,1fr) minmax(0,1.45fr) 60px;gap:36px;
  align-items:baseline;padding:44px 8px;border-bottom:1px solid var(--line);
  transition:background .25s;
}
.svc-row:hover{background:var(--panel)}
.svc-tag{font-family:var(--font);font-size:12px;letter-spacing:.14em;color:var(--text-mute);transition:color .25s}
.svc-row:hover .svc-tag{color:var(--accent)}
.svc-row h3{font-size:clamp(1.4rem,2.4vw,1.85rem);font-weight:700}
.svc-row p{color:var(--text-dim);font-size:15.5px}
.svc-arrow{font-family:var(--font);font-size:20px;color:var(--text-mute);text-align:right;transition:color .25s,transform .25s}
.svc-row:hover .svc-arrow{color:var(--text);transform:translateX(6px)}

/* ---------- Work / cases ---------- */
.case{
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:center;
  padding:64px 0;border-bottom:1px solid var(--line);
}
.case:first-of-type{border-top:1px solid var(--line);margin-top:60px}
.case:nth-of-type(even) .case-media{order:2}
.case-media{aspect-ratio:16/9;display:block}
.case-meta h5{
  font-family:var(--font);font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--text-mute);font-weight:500;margin:26px 0 6px;
}
.case-meta h5:first-child{margin-top:0}
.case-meta h3{font-size:clamp(1.7rem,3vw,2.4rem)}
.case-meta p{color:var(--text-dim);font-size:15.5px}
.case-meta ul{list-style:none;color:var(--text-dim);font-size:15px}
.case-meta li{padding:3px 0 3px 18px;position:relative}
.case-meta li::before{content:'';position:absolute;left:0;top:12px;width:6px;height:6px;border-radius:50%;background:var(--accent-dim);border:1px solid var(--accent)}
.case-link{
  display:inline-flex;gap:10px;margin-top:30px;font-family:var(--font);font-size:12.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text);border-bottom:1px solid var(--line-2);
  padding-bottom:6px;transition:border-color .2s,color .2s;
}
.case-link:hover{border-color:var(--accent);color:var(--accent)}
.redact{display:inline-block;background:var(--line-2);color:transparent;border-radius:2px;user-select:none}
.work-cta{margin-top:54px}

/* ---------- One stage ---------- */
.onestage{background:var(--panel);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.split{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:72px;align-items:center}
.split .lede{margin-top:26px}
.pipe-track{position:relative;padding-left:22px;margin-top:40px}
.pipe-track::before{content:'';position:absolute;left:5px;top:10px;bottom:10px;width:1px;background:var(--line-2)}
.step{position:relative;padding:0 0 26px}
.step:last-child{padding-bottom:0}
.step::before{
  content:'';position:absolute;left:-22px;top:7px;width:11px;height:11px;border-radius:50%;
  background:var(--panel);border:2px solid var(--text-mute);
}
.step.hot::before{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 5px var(--accent-dim)}
.step h3{font-size:18px;font-weight:640;letter-spacing:0}
.step p{font-family:var(--font);font-size:12.5px;color:var(--text-dim);margin-top:4px;letter-spacing:.02em}


/* ---------- Practical ---------- */
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-top:56px}
.fact{background:var(--panel);padding:28px 28px 30px}
.fact b{display:block;font-weight:600;font-size:26px;letter-spacing:-.01em}
.fact span{font-family:var(--font);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-mute)}
.tz{margin-top:24px;border:1px solid var(--line);border-radius:4px;background:var(--panel);padding:40px}
.tz-row{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center;padding:14px 0}
.tz-row + .tz-row{border-top:1px solid var(--line)}
.tz-city{font-family:var(--font);font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}
.tz-city b{display:block;color:var(--text);font-weight:500;font-size:13px}
.tz-bar{position:relative;height:26px;background:var(--ground);border-radius:2px;border:1px solid var(--line)}
.tz-fill{position:absolute;top:4px;bottom:4px;border-radius:2px;background:var(--line-2)}
.tz-fill.me{background:var(--accent)}
.tz-scale{display:grid;grid-template-columns:180px 1fr;gap:24px;margin-top:14px}
.tz-scale div{display:flex;justify-content:space-between;font-family:var(--font);font-size:10.5px;color:var(--text-mute);letter-spacing:.08em}
.tz-note{margin-top:26px;font-family:var(--font);font-size:12.5px;color:var(--text-dim);letter-spacing:.03em}
.tz-note b{color:var(--accent);font-weight:500}


/* ---------- homepage responsive ---------- */
@media (max-width:1024px){
  .logo-wall{grid-template-columns:repeat(2,1fr)}
  .svc-row{grid-template-columns:1fr;gap:12px;padding:36px 8px}
  .svc-row .svc-arrow{display:none}
}
@media (max-width:640px){
  .partners-in{padding-left:22px;padding-right:22px}
  .pull{padding:110px 0 90px}
  .logo-wall{grid-template-columns:1fr}
  .tz-row,.tz-scale{grid-template-columns:1fr;gap:10px}
  .tz{padding:26px 20px}
}

/* ============================================================
   Fixes and responsive: logo image, mobile nav, pagination scope
   ============================================================ */

/* (the pagination un-fix that lived here is gone: scoping .site-nav
   removed the cause, so WP's nav elements are never pinned) */
.pagination{justify-content:flex-start;flex-wrap:wrap;margin-top:64px}
.pagination .nav-links{display:flex;gap:10px;flex-wrap:wrap;margin-left:0}
.pagination .screen-reader-text{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}

/* --- Uploaded logo image --- */
.logo-img{display:inline-flex;align-items:center;line-height:0}
.logo-img img{max-height:40px;width:auto;height:auto;display:block}
/* footer wordmark and logo sit slightly smaller than the header */
.logo-foot{font-size:18px}
.logo-foot.logo-img img{max-height:32px}

/* --- Mobile menu toggle (hamburger) --- */
.nav-toggle{
  display:none;margin-left:auto;width:44px;height:44px;padding:11px;
  background:none;border:0;cursor:pointer;flex-direction:column;justify-content:space-between;
}
.nav-toggle span{display:block;height:2px;width:100%;background:var(--text);border-radius:2px;transition:transform .25s,opacity .2s}
.nav-open .nav-toggle span:nth-child(1){transform:translateY(9px) rotate(45deg)}
.nav-open .nav-toggle span:nth-child(2){opacity:0}
.nav-open .nav-toggle span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}
.nav-cta-mobile{display:none}

/* ============================================================
   Tablet / mobile layout
   ============================================================ */
@media (max-width:900px){
  .nav-toggle{display:flex}
  .nav-cta{display:none}
  .nav-in{gap:20px}
  /* slide-down panel */
  .nav-links{
    position:fixed;left:0;right:0;top:66px;margin-left:0;
    flex-direction:column;align-items:flex-start;gap:0;
    background:rgba(10,12,16,.98);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    border-bottom:1px solid var(--line);
    padding:12px 22px 26px;
    transform:translateY(-120%);opacity:0;pointer-events:none;
    transition:transform .3s ease,opacity .25s ease;
    max-height:calc(100dvh - 66px);overflow-y:auto;
  }
  body.admin-bar .nav-links{top:112px}
  .nav-open .nav-links{transform:translateY(0);opacity:1;pointer-events:auto}
  .nav-links a:not(.btn){width:100%;font-size:18px;padding:14px 0;border-bottom:1px solid var(--line)}
  .nav-links ul{flex-direction:column;gap:0;width:100%}
  .nav-links li{width:100%}
  .nav-links li a{width:100%;font-size:18px;padding:14px 0;border-bottom:1px solid var(--line)}
  .nav-cta-mobile{display:inline-flex;margin-top:20px;width:100%;justify-content:center}
  /* stop body scroll when menu is open */
  body.nav-open{overflow:hidden}
}

@media (max-width:768px){
  .foot-grid{grid-template-columns:1fr;gap:36px}
  .svc-head{flex-direction:column;align-items:flex-start;gap:16px}
  .meta-grid{grid-template-columns:1fr 1fr}
  .next-band .wrap{flex-direction:column;align-items:flex-start;gap:20px}
  .facts{grid-template-columns:repeat(2,1fr)}
  .hero-foot{gap:16px 20px}
}

@media (max-width:560px){
  .facts{grid-template-columns:1fr}
  .meta-grid{grid-template-columns:1fr}
  .foot-bottom{flex-direction:column;gap:10px}
  .hero .lede,.lede{font-size:16px}
  .page-head h1{font-size:clamp(2rem,8vw,2.6rem)}
  /* these must live after the base .hero rule above, not in an earlier
     media block, or the unprefixed rule wins on source order */
  .hero{padding:120px 0 56px}
  .hero h1{max-width:none}
  .hero .lede{margin:22px 0 32px}
  .hero-foot{margin-top:36px;font-size:10.5px}
  .hero-ctas{gap:12px}
  .hero-ctas .btn{flex:1 1 100%;justify-content:center}
}

/* ============================================================
   Showreel lightbox
   ============================================================ */
.js-reel{cursor:pointer;display:inline-flex;align-items:center;gap:10px}
.reel-play{
  width:0;height:0;border-style:solid;border-width:5px 0 5px 8px;
  /* Longhands, and a literal colour rather than a variable or
     currentColor: SiteGround's CSS optimizer rewrote the shorthand
     "transparent transparent transparent currentColor" into
     "... initial" and lost the colour. This triangle only ever sits
     inside .btn-solid, whose text is --ground (#222831), so it is
     pinned to that value. */
  border-top-color:transparent;border-right-color:transparent;
  border-bottom-color:transparent;border-left-color:#222831;
  display:inline-block;
}

.reel-lb{
  position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:5vmin;background:rgba(6,7,10,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;transition:opacity .28s ease;
}
.reel-lb[hidden]{display:none}
.reel-lb.open{opacity:1}

.reel-frame{
  width:100%;max-width:1200px;
  transform:scale(.97);transition:transform .28s ease;
}
.reel-lb.open .reel-frame{transform:scale(1)}

.reel-ratio{
  position:relative;aspect-ratio:16/9;width:100%;
  background:var(--ground);border:1px solid var(--line-2);border-radius:4px;overflow:hidden;
  box-shadow:0 30px 80px rgba(0,0,0,.6);
}
.reel-ratio iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}

.reel-close{
  position:absolute;top:18px;right:22px;width:44px;height:44px;
  background:none;border:1px solid var(--line-2);border-radius:2px;
  color:var(--text);font-size:26px;line-height:1;cursor:pointer;
  transition:border-color .2s,color .2s;
}
.reel-close:hover{border-color:var(--accent);color:var(--accent)}

body.reel-open{overflow:hidden}

/* "Gallery from the stage": a WP Gallery block from the page content */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:48px}
.gallery-item{
  position:relative;aspect-ratio:4/3;padding:0;border:1px solid var(--line);border-radius:4px;
  overflow:hidden;cursor:pointer;background:var(--panel);
}
.gallery-item img{width:100%;height:100%;min-width:100%;min-height:100%;max-width:none;max-height:none;object-fit:cover;object-position:center;display:block}
.gallery-item::after{
  content:'';position:absolute;inset:0;background:rgba(10,12,16,0);transition:background .2s;
}
.gallery-item:hover::after{background:rgba(10,12,16,.25)}

.gallery-lb{
  position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:5vmin;background:rgba(6,7,10,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;transition:opacity .28s ease;
}
.gallery-lb[hidden]{display:none}
.gallery-lb.open{opacity:1}
.gallery-full{
  max-width:min(1200px,90vw);max-height:85vh;width:auto;height:auto;
  display:block;border-radius:4px;box-shadow:0 30px 80px rgba(0,0,0,.6);
  transform:scale(.97);transition:transform .28s ease;
}
.gallery-lb.open .gallery-full{transform:scale(1)}
.gallery-close{
  position:absolute;top:18px;right:22px;width:44px;height:44px;
  background:none;border:1px solid var(--line-2);border-radius:2px;
  color:var(--text);font-size:26px;line-height:1;cursor:pointer;
  transition:border-color .2s,color .2s;
}
.gallery-close:hover{border-color:var(--accent);color:var(--accent)}
.gallery-nav{
  position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;
  background:none;border:1px solid var(--line-2);border-radius:2px;
  color:var(--text);font-size:20px;cursor:pointer;transition:border-color .2s,color .2s;
}
.gallery-nav:hover{border-color:var(--accent);color:var(--accent)}
.gallery-prev{left:18px}
.gallery-next{right:18px}

@media (max-width:640px){
  .reel-lb{padding:16px}
  .reel-close{top:10px;right:12px;width:38px;height:38px;font-size:22px}
}

/* ============================================================
   Header search (2.12.0)
   Magnifier in .nav-in opens #search-overlay. Results come from the
   normal ?s= query, which Relevanssi takes over when active.
   ============================================================ */
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.nav-search{
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:40px;height:40px;margin-right:-16px;padding:0;
  background:none;border:1px solid transparent;border-radius:2px;
  color:var(--text-dim);cursor:pointer;transition:color .2s,border-color .2s;
}
.nav-search:hover,.nav-search:focus-visible{color:var(--text);border-color:var(--line-2)}
.nav-search svg{display:block}

.search-lb{
  position:fixed;inset:0;z-index:210;display:flex;align-items:flex-start;justify-content:center;
  padding:22vh 40px 40px;background:rgba(6,7,10,.94);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  opacity:0;transition:opacity .25s ease;
}
.search-lb[hidden]{display:none}
.search-lb.open{opacity:1}
.search-panel{
  width:100%;max-width:860px;
  transform:translateY(-10px);transition:transform .25s ease;
}
.search-lb.open .search-panel{transform:translateY(0)}
.search-close{
  position:absolute;top:18px;right:22px;width:44px;height:44px;
  background:none;border:1px solid var(--line-2);border-radius:2px;
  color:var(--text);font-size:26px;line-height:1;cursor:pointer;
  transition:border-color .2s,color .2s;
}
.search-close:hover{border-color:var(--accent);color:var(--accent)}

.search-form{
  display:flex;align-items:center;gap:12px;margin-top:22px;
  border-bottom:1px solid var(--line-2);transition:border-color .2s;
}
.search-form:focus-within{border-bottom-color:var(--accent)}
.search-field{
  flex:1;min-width:0;padding:10px 0 16px;background:none;border:0;border-radius:0;outline:0;
  font-family:var(--font);font-weight:300;font-size:clamp(1.8rem,4.6vw,3.2rem);
  letter-spacing:-.01em;color:var(--text);
  -webkit-appearance:none;appearance:none;
}
/* the underline turns teal via :focus-within, so the boxed outline is redundant */
.search-field:focus,.search-field:focus-visible{outline:none;box-shadow:none}
.search-field::placeholder{color:var(--text-mute);opacity:1}
.search-field::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.search-submit{
  flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:48px;height:48px;padding:0;background:none;border:1px solid var(--line-2);border-radius:2px;
  color:var(--text-dim);cursor:pointer;transition:color .2s,border-color .2s,background .2s;
}
.search-submit:hover{color:var(--ground);background:var(--accent);border-color:var(--accent)}
.search-submit svg{display:block}
.search-hint{margin-top:18px;font-size:14px;color:var(--text-mute)}

/* results page */
.search-inline{max-width:720px;margin-top:36px}
.search-inline .search-field{font-size:clamp(1.3rem,2.6vw,1.8rem);padding:8px 0 12px}
.search-head h1 .voice{word-break:break-word}
/* Relevanssi highlights matches; emphasis is colour only, per the type rules */
.search-row p mark,.search-row p strong,.search-row p .highlight{
  background:none;color:var(--accent);font-weight:inherit;
}
.search-empty{padding:64px 0 28px}

@media (max-width:900px){
  /* logo left, then search, then hamburger; .nav-links is a fixed drawer here */
  .nav-search{order:1;margin-left:auto;margin-right:-8px}
  .nav-toggle{order:2;margin-left:0}
}
@media (max-width:640px){
  .search-lb{padding:96px 22px 22px}
  .search-close{top:12px;right:14px;width:40px;height:40px;font-size:22px}
  .search-submit{width:42px;height:42px}
}
