/* =========================================================
   BROOKS MEDIA - Design System
   Website Redesign + SEO - brooksmedia.com.au
   ========================================================= */

/* ---------- Tokens ---------- */
:root{
  --black:#060608;
  --charcoal:#101014;
  --charcoal-2:#16161c;
  --charcoal-3:#1d1d24;
  --white:#ffffff;
  --ink:#0a0a0c;
  --blue:#2952ff;
  --blue-dim:#1b3ac4;
  --blue-bright:#4d70ff;
  --grey-100:#f4f5f7;
  --grey-200:#e4e5ea;
  --grey-300:#c7c9d4;
  --grey-400:#9498a8;
  --grey-500:#6b6f80;
  --grey-600:#4a4d5a;
  --border-dark: rgba(255,255,255,0.09);
  --border-dark-strong: rgba(255,255,255,0.16);
  --border-light: rgba(10,10,12,0.10);

  --font-head: 'Space Grotesk', 'Arial Narrow', Arial, sans-serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --container: 1200px;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;

  --space-1: 8px;
  --space-2: 16px;
  --space-3: 24px;
  --space-4: 32px;
  --space-5: 48px;
  --space-6: 64px;
  --space-7: 96px;
  --space-8: 140px;

  --ease: cubic-bezier(.2,.7,.2,1);
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{margin:0;background:var(--black);color:var(--white);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul,ol{margin:0;padding:0;list-style:none;}
h1,h2,h3,h4,p,figure{margin:0;}
button{font:inherit;cursor:pointer;}
input,textarea,select{font:inherit;}
svg{display:block;}

h1,h2,h3,h4{font-family:var(--font-head);font-weight:700;line-height:1.12;letter-spacing:-0.01em;color:var(--white);}
.on-light h1,.on-light h2,.on-light h3,.on-light h4{color:var(--ink);}

h1{font-size:clamp(2.4rem,5vw + 1rem,4.6rem);letter-spacing:-0.02em;}
h2{font-size:clamp(1.9rem,3vw + 1rem,3rem);}
h3{font-size:clamp(1.25rem,1.4vw + 1rem,1.6rem);}
h4{font-size:1.05rem;}

p{color:var(--grey-300);}
.on-light p{color:var(--grey-600);}

/* ---------- Layout helpers ---------- */
.container{max-width:var(--container);margin:0 auto;padding:0 24px;}
.section{padding:var(--space-7) 0;}
@media (max-width:900px){ .section{padding:var(--space-6) 0;} }
.section-tight{padding:var(--space-5) 0;}
.bg-black{background:var(--black);}
.bg-charcoal{background:var(--charcoal);}
.bg-white{background:var(--white);color:var(--ink);}
.bg-blue{background:var(--blue);color:var(--white);}
.grid{display:grid;gap:var(--space-3);}
.g2{grid-template-columns:repeat(2,1fr);}
/* Wide-gap 2-up split (text + device mockup) used on the services page.
   A responsive class rather than an inline style, so mobile always gets
   the single-column collapse, since inline styles can't be overridden by a
   @media rule and previously caused horizontal overflow on phones. */
.split-2{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:var(--space-6);}
@media (max-width:900px){ .split-2{grid-template-columns:1fr;gap:var(--space-4);} }
.g3{grid-template-columns:repeat(3,1fr);}
.g4{grid-template-columns:repeat(4,1fr);}
.g5{grid-template-columns:repeat(5,1fr);}
@media (max-width:900px){ .g3,.g4,.g5{grid-template-columns:repeat(2,1fr);} }
@media (max-width:640px){ .g2,.g3,.g4,.g5{grid-template-columns:1fr;} }
.flex{display:flex;align-items:center;}
.between{justify-content:space-between;}
.center-col{display:flex;flex-direction:column;align-items:center;text-align:center;}
.gap-1{gap:8px;} .gap-2{gap:16px;} .gap-3{gap:24px;}

.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-head);font-size:.78rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin-bottom:var(--space-2);}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--blue);display:inline-block;}

.section-head{max-width:680px;margin-bottom:var(--space-5);}
.section-head.center{margin-left:auto;margin-right:auto;text-align:center;}
.section-head p{margin-top:var(--space-2);font-size:1.08rem;}

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--blue);color:#fff;padding:12px 18px;z-index:1000;}
.skip-link:focus{left:12px;top:12px;}

/* Branded focus ring for keyboard navigation, layered on top of whatever
   the browser default would otherwise show. */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--blue-bright);outline-offset:2px;border-radius:2px;}
.btn:focus-visible{outline-offset:3px;}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 26px;font-family:var(--font-head);font-weight:700;font-size:.95rem;letter-spacing:.01em;border-radius:var(--radius-sm);border:1.5px solid transparent;transition:transform .18s var(--ease),background .18s var(--ease),border-color .18s var(--ease),color .18s var(--ease);white-space:nowrap;}
.btn-primary{background:var(--blue);color:#fff;}
.btn-primary:hover{background:var(--blue-bright);transform:translateY(-2px);}
.btn-outline{background:transparent;color:var(--white);border-color:var(--border-dark-strong);}
.btn-outline:hover{border-color:var(--blue);color:var(--blue-bright);transform:translateY(-2px);}
.on-light .btn-outline{color:var(--ink);border-color:var(--border-light);}
.on-light .btn-outline:hover{border-color:var(--blue);color:var(--blue);}
.btn-white{background:#fff;color:var(--ink);}
.btn-white:hover{background:var(--grey-100);transform:translateY(-2px);}
.btn-block{width:100%;}
.btn-sm{padding:11px 18px;font-size:.85rem;}
.btn svg{width:16px;height:16px;flex:none;}

/* ---------- Header ---------- */
.site-header{position:sticky;top:0;z-index:200;background:rgba(6,6,8,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-dark);}
.site-header .container{display:flex;align-items:center;justify-content:space-between;height:82px;}
.brand{display:flex;align-items:center;gap:12px;font-family:var(--font-head);font-weight:700;font-size:1.05rem;letter-spacing:.03em;}
.brand img{height:30px;width:auto;}
.brand .word-brooks{color:#fff;}
.brand .word-media{color:var(--blue);}
.main-nav{display:flex;align-items:center;gap:var(--space-5);}
.main-nav ul{display:flex;gap:var(--space-4);}
.main-nav ul a{font-family:var(--font-head);font-size:.86rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--grey-300);transition:color .15s var(--ease);position:relative;padding:6px 0;}
.main-nav ul a:hover,.main-nav ul a[aria-current="page"]{color:#fff;}
.main-nav ul a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--blue);}
/* The nav's own CTA is only for the mobile slide-down panel; desktop uses the
   header-level CTA instead, so this stays hidden until the mobile breakpoint. */
.main-nav > .header-cta{display:none;}
.header-cta{display:flex;align-items:center;gap:var(--space-3);}
.nav-toggle{display:none;background:none;border:1px solid var(--border-dark-strong);border-radius:var(--radius-sm);width:44px;height:44px;align-items:center;justify-content:center;color:#fff;}
.nav-toggle svg{width:20px;height:20px;}

@media (max-width:900px){
  /* NOTE: .site-header uses backdrop-filter, which makes it the containing block
     for fixed-position descendants, so this panel is sized/positioned relative
     to the 82px-tall header, not the viewport. top:100% + explicit vh height
     sidesteps that (vh units still resolve against the real viewport). */
  .main-nav{position:fixed;top:100%;left:0;right:0;height:calc(100vh - 82px);background:var(--black);flex-direction:column;align-items:stretch;padding:var(--space-4) 24px;transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .2s var(--ease),transform .2s var(--ease);overflow-y:auto;}
  .main-nav.open{opacity:1;transform:translateY(0);pointer-events:auto;}
  .main-nav ul{flex-direction:column;gap:0;}
  .main-nav ul li{border-bottom:1px solid var(--border-dark);}
  .main-nav ul a{display:block;padding:18px 4px;font-size:1rem;}
  .main-nav > .header-cta{display:flex;margin-top:var(--space-3);}
  .header-cta .btn-outline-nav{display:none;}
  .nav-toggle{display:flex;}
}

/* ---------- Hero ---------- */
.hero{position:relative;padding:var(--space-8) 0 var(--space-7);overflow:hidden;border-bottom:1px solid var(--border-dark);}
.hero::before{content:"";position:absolute;top:-30%;right:-10%;width:640px;height:640px;background:radial-gradient(circle,rgba(41,82,255,.18),transparent 70%);pointer-events:none;}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:var(--space-6);align-items:center;position:relative;}
.hero h1{margin-bottom:var(--space-3);}
.hero h1 em{font-style:normal;color:var(--blue);}
.hero .lead{font-size:1.2rem;max-width:520px;margin-bottom:var(--space-4);}
.hero-ctas{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-4);}
.hero-trust{display:flex;gap:var(--space-4);flex-wrap:wrap;font-family:var(--font-head);font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;color:var(--grey-400);}
.hero-trust strong{color:#fff;}

@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;}
}

/* Browser mockup */
.browser-frame{background:var(--charcoal);border:1px solid var(--border-dark-strong);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 40px 80px -20px rgba(0,0,0,.6);}
.browser-frame .chrome{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--charcoal-2);border-bottom:1px solid var(--border-dark);}
.browser-frame .dot{width:9px;height:9px;border-radius:50%;background:var(--grey-600);}
.browser-frame .chrome .url{margin-left:10px;flex:1;background:var(--charcoal-3);border-radius:5px;padding:5px 10px;font-size:.72rem;color:var(--grey-400);font-family:var(--font-body);}
.browser-frame .screen{aspect-ratio:16/11;background:linear-gradient(160deg,#15161c,#0b0b0f);position:relative;}
.browser-frame .screen .skeleton{position:absolute;inset:0;padding:22px;display:flex;flex-direction:column;gap:12px;}
.skeleton .bar{height:10px;border-radius:3px;background:rgba(255,255,255,.08);}
.skeleton .bar.blue{background:var(--blue);width:auto;max-width:78%;height:32px;border-radius:6px;margin-top:8px;display:flex;align-items:center;padding:0 14px;color:#fff;font-family:var(--font-head);font-weight:700;font-size:.68rem;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.skeleton .row{display:flex;gap:12px;}
.skeleton .card{flex:1;height:70px;border-radius:6px;background:rgba(255,255,255,.05);border:1px solid var(--border-dark);}

/* Phone mockup */
.phone-frame{width:220px;max-width:100%;background:var(--charcoal);border:1px solid var(--border-dark-strong);border-radius:26px;padding:10px;box-shadow:0 30px 60px -15px rgba(0,0,0,.6);}
.phone-frame .phone-screen{background:#0b0b0f;border-radius:18px;aspect-ratio:9/18.5;position:relative;overflow:hidden;}
.phone-frame .notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:46%;height:18px;background:var(--charcoal);border-bottom-left-radius:12px;border-bottom-right-radius:12px;}

/* ---------- Problem section ---------- */
.problem-grid{grid-template-columns:repeat(4,1fr);}
.problem-item{padding:var(--space-3);border:1px solid var(--border-dark);border-radius:var(--radius-md);background:var(--charcoal);transition:border-color .18s var(--ease),transform .18s var(--ease);}
.problem-item:hover{border-color:var(--border-dark-strong);transform:translateY(-3px);}
.problem-item .x{width:34px;height:34px;border-radius:50%;background:rgba(230,57,70,.12);color:#ff5a67;display:flex;align-items:center;justify-content:center;margin-bottom:14px;font-weight:700;}
.problem-item h3{margin-bottom:6px;font-size:1.05rem;}
.problem-item p{font-size:.92rem;margin:0;}
.problem-turn{margin-top:var(--space-5);text-align:center;}
.problem-turn p{font-family:var(--font-head);font-size:1.3rem;color:#fff;font-weight:700;}
@media (max-width:900px){ .problem-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:640px){ .problem-grid{grid-template-columns:1fr;} }

/* ---------- Before/After component ---------- */
.ba-project{border:1px solid var(--border-dark);border-radius:var(--radius-lg);background:var(--charcoal);overflow:hidden;margin-bottom:var(--space-4);}
.ba-project-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-4) 0;flex-wrap:wrap;}
.ba-project-head h3{margin-bottom:4px;}
.ba-project-head .industry{font-family:var(--font-head);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);}
.ba-project-head .actions{display:flex;gap:10px;flex-wrap:wrap;}

/* Small honesty label under concept-example project names, distinct from real client credits. */
.example-note{font-size:.78rem;color:var(--grey-400);margin:2px 0 0;}

.ba-slider{position:relative;margin:var(--space-3) var(--space-4) 0;aspect-ratio:16/10;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-dark);background:#000;touch-action:pan-y;}
.ba-slider .ba-pane{position:absolute;inset:0;display:flex;flex-direction:column;}
.ba-slider .ba-after{}
.ba-slider .ba-before{overflow:hidden;}
.ba-slider .ba-before .ba-pane-inner{position:absolute;inset:0;}
.ba-label{position:absolute;top:14px;z-index:5;font-family:var(--font-head);font-size:.72rem;font-weight:700;letter-spacing:.1em;padding:6px 12px;border-radius:3px;text-transform:uppercase;}
.ba-label.before{left:14px;background:rgba(0,0,0,.55);color:#fff;border:1px solid rgba(255,255,255,.3);}
.ba-label.after{right:14px;background:var(--blue);color:#fff;}
.ba-handle{position:absolute;top:0;bottom:0;width:0;left:50%;z-index:6;}
.ba-handle .line{position:absolute;top:0;bottom:0;left:0;width:2px;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.4);}
.ba-handle .grip{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.4);cursor:ew-resize;}
.ba-handle .grip svg{width:18px;height:18px;color:var(--ink);}
.ba-range{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0;}
.ba-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--grey-400);font-family:var(--font-head);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;text-align:center;padding:20px;}
.ba-placeholder svg{width:30px;height:30px;opacity:.5;}
.ba-before .ba-placeholder{background:repeating-linear-gradient(135deg,#141419,#141419 10px,#191920 10px,#191920 20px);}
.ba-after .ba-placeholder{background:linear-gradient(160deg,#12151f,#0a0a10);}

.ba-improvements{display:flex;flex-wrap:wrap;gap:10px;padding:var(--space-4);}
.ba-tag{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;font-weight:600;color:var(--grey-200);background:var(--charcoal-2);border:1px solid var(--border-dark);padding:8px 13px;border-radius:20px;}
.ba-tag svg{width:14px;height:14px;color:var(--blue);flex:none;}
.ba-summary{padding:0 var(--space-4) var(--space-4);color:var(--grey-300);}
.ba-project-foot{display:flex;justify-content:space-between;align-items:center;padding:0 var(--space-4) var(--space-4);flex-wrap:wrap;gap:12px;}

/* ---------- Mobile before/after preview ---------- */
.mobile-compare-head{font-family:var(--font-head);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-400);padding:0 var(--space-4);margin-bottom:10px;}
.mobile-compare{display:flex;gap:14px;padding:0 var(--space-4) var(--space-4);}
.mobile-compare .mp{flex:1;max-width:220px;}
.mobile-compare .mp-frame{position:relative;aspect-ratio:9/16;border-radius:14px;overflow:hidden;border:1px solid var(--border-dark-strong);background:#000;}
.mobile-compare .mp-frame img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;}
.mobile-compare .mp-caption{display:block;text-align:center;font-family:var(--font-head);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-400);margin-top:8px;}
@media (max-width:480px){ .mobile-compare{gap:10px;} }

/* ---------- Services ---------- */
.service-card{padding:var(--space-4);border:1px solid var(--border-dark);border-radius:var(--radius-md);background:var(--charcoal);height:100%;transition:transform .18s var(--ease),border-color .18s var(--ease);}
.service-card:hover{transform:translateY(-4px);border-color:var(--blue);}
.service-card .num{font-family:var(--font-head);color:var(--blue);font-weight:700;font-size:.85rem;letter-spacing:.08em;margin-bottom:var(--space-2);}
.service-card h3{margin-bottom:10px;}
.service-card p{font-size:.95rem;margin-bottom:var(--space-2);}
.service-card a{font-family:var(--font-head);font-weight:700;font-size:.85rem;color:#fff;display:inline-flex;align-items:center;gap:6px;}
.service-card a svg{width:14px;height:14px;transition:transform .15s var(--ease);}
.service-card a:hover svg{transform:translateX(3px);}

/* ---------- Process ---------- */
.process{grid-template-columns:repeat(5,1fr);position:relative;}
.process::before{content:"";position:absolute;top:34px;left:0;right:0;height:1px;background:var(--border-dark);z-index:0;}
.process-step{position:relative;z-index:1;padding:0 var(--space-2);}
.process-step .step-num{width:70px;height:70px;border-radius:50%;background:var(--charcoal);border:1px solid var(--border-dark-strong);display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-weight:700;font-size:1.3rem;color:var(--blue);margin-bottom:var(--space-3);}
.process-step h3{margin-bottom:8px;font-size:1.05rem;}
.process-step p{font-size:.9rem;}
@media (max-width:900px){ .process{grid-template-columns:repeat(2,1fr);gap:var(--space-4);} .process::before{display:none;} }
@media (max-width:640px){ .process{grid-template-columns:1fr;} }

/* ---------- Review / Contact forms ---------- */
.review-panel{display:grid;grid-template-columns:.9fr 1.1fr;gap:0;border:1px solid var(--border-dark);border-radius:var(--radius-lg);overflow:hidden;background:var(--charcoal);}
.review-info{padding:var(--space-5);background:var(--charcoal-2);}
.review-info ul{margin-top:var(--space-3);display:flex;flex-direction:column;gap:14px;}
.review-info li{display:flex;gap:12px;align-items:flex-start;font-size:.95rem;color:var(--grey-200);}
.review-info li svg{width:20px;height:20px;color:var(--blue);flex:none;margin-top:2px;}
.review-form{padding:var(--space-5);}
@media (max-width:900px){ .review-panel{grid-template-columns:1fr;} }

.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-bottom:var(--space-2);}
@media (max-width:640px){ .form-row{grid-template-columns:1fr;} }
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-2);}
.field label{font-size:.82rem;font-weight:600;color:var(--grey-300);}
.field .opt{color:var(--grey-400);font-weight:400;}
.field input,.field textarea,.field select{background:var(--charcoal-3);border:1.5px solid var(--border-dark-strong);border-radius:var(--radius-sm);padding:13px 14px;color:#fff;width:100%;transition:border-color .15s var(--ease);}
.field input::placeholder,.field textarea::placeholder{color:var(--grey-400);}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--blue);}
.field textarea{resize:vertical;min-height:110px;}
.form-note{font-size:.8rem;color:var(--grey-400);margin-top:var(--space-2);}
.form-success{display:none;padding:var(--space-3);border:1px solid var(--blue);border-radius:var(--radius-md);background:rgba(41,82,255,.08);}
.form-success.show{display:block;}
.form-success h4{color:var(--blue);margin-bottom:6px;}

/* ---------- Social proof ----------
   NOTE: layout comes from the shared .g4 utility class (already responsive:
   4 cols -> 2 cols at 900px -> 1 col at 640px). Deliberately not redefining
   grid-template-columns here: an earlier unconditional override on this
   class outranked .g4's mobile breakpoints and forced 4 cramped columns on
   phones, causing horizontal scroll. */
.proof-stat{text-align:center;padding:var(--space-4) var(--space-2);border:1px dashed var(--border-dark-strong);border-radius:var(--radius-md);}
.proof-stat .num{font-family:var(--font-head);font-size:2.2rem;font-weight:700;color:var(--blue);}
.proof-stat .label{font-size:.82rem;color:var(--grey-400);margin-top:6px;}
.placeholder-tag{display:inline-block;font-family:var(--font-head);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-400);border:1px solid var(--border-dark-strong);border-radius:12px;padding:3px 10px;margin-top:8px;}
/* Real (non-placeholder) single stat: solid border + blue accent, not the
   dashed "TBC" placeholder treatment above. Add more .proof-single-inner
   siblings inside .proof-single (it's a flex row) if more real stats land. */
.proof-single{display:flex;justify-content:center;margin-top:var(--space-3);}
.proof-single-inner{display:flex;align-items:baseline;gap:14px;padding:var(--space-3) var(--space-5);background:var(--charcoal-3);border:1px solid var(--border-dark-strong);border-left:4px solid var(--blue);border-radius:var(--radius-md);}
.proof-single-inner .num{font-family:var(--font-head);font-size:2.6rem;font-weight:700;color:var(--blue);line-height:1;}
.proof-single-inner .label{font-size:.95rem;color:var(--grey-300);}
@media (max-width:640px){ .proof-single-inner{flex-direction:column;gap:4px;padding:var(--space-3) var(--space-4);text-align:center;} }
.testimonial-card{padding:var(--space-4);border:1px dashed var(--border-dark-strong);border-radius:var(--radius-md);background:var(--charcoal);}
.testimonial-card .stars{color:var(--blue);letter-spacing:2px;margin-bottom:10px;}
.testimonial-card p{font-style:italic;}
.logo-strip{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;justify-content:center;opacity:.6;}
.logo-strip .logo-slot{width:140px;height:56px;border:1px dashed var(--border-dark-strong);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-family:var(--font-head);font-size:.7rem;letter-spacing:.06em;color:var(--grey-400);text-transform:uppercase;}

/* ---------- CTA band ---------- */
.cta-band{position:relative;border-top:1px solid var(--border-dark);border-bottom:1px solid var(--border-dark);text-align:center;overflow:hidden;}
.cta-band::after{content:"";position:absolute;bottom:-40%;left:50%;transform:translateX(-50%);width:900px;height:400px;background:radial-gradient(ellipse,rgba(41,82,255,.16),transparent 70%);pointer-events:none;}
.cta-band h2{margin-bottom:var(--space-2);position:relative;}
.cta-band p{max-width:560px;margin:0 auto var(--space-4);font-size:1.08rem;position:relative;}
.cta-band .btn{position:relative;}

/* ---------- Footer ---------- */
.site-footer{background:var(--charcoal);border-top:1px solid var(--border-dark);padding:var(--space-6) 0 var(--space-3);}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-4);padding-bottom:var(--space-5);border-bottom:1px solid var(--border-dark);}
.footer-brand .brand{margin-bottom:var(--space-2);}
.footer-brand p{font-size:.92rem;max-width:280px;}
.footer-col h4{font-family:var(--font-head);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--grey-400);margin-bottom:var(--space-2);}
.footer-col ul{display:flex;flex-direction:column;gap:10px;}
.footer-col a{font-size:.92rem;color:var(--grey-300);transition:color .15s var(--ease);}
.footer-col a:hover{color:var(--blue-bright);}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space-3);flex-wrap:wrap;gap:10px;}
.footer-bottom p{font-size:.82rem;color:var(--grey-400);}
.footer-socials{display:flex;gap:10px;}
.footer-socials a{width:36px;height:36px;border:1px solid var(--border-dark-strong);border-radius:50%;display:flex;align-items:center;justify-content:center;}
.footer-socials svg{width:16px;height:16px;}
@media (max-width:900px){ .footer-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:640px){ .footer-grid{grid-template-columns:1fr;} }

/* ---------- Page hero (inner pages) ---------- */
.page-hero{padding:var(--space-7) 0 var(--space-6);border-bottom:1px solid var(--border-dark);position:relative;overflow:hidden;}
.page-hero::before{content:"";position:absolute;top:-40%;right:-8%;width:520px;height:520px;background:radial-gradient(circle,rgba(41,82,255,.14),transparent 70%);pointer-events:none;}
.page-hero .lead{font-size:1.1rem;max-width:640px;margin-top:var(--space-2);}
.breadcrumbs{display:flex;gap:8px;font-size:.82rem;color:var(--grey-400);margin-bottom:var(--space-3);}
.breadcrumbs a{color:var(--grey-400);}
.breadcrumbs a:hover{color:var(--blue-bright);}

/* ---------- Portfolio index cards ---------- */
.portfolio-card{border:1px solid var(--border-dark);border-radius:var(--radius-lg);overflow:hidden;background:var(--charcoal);display:flex;flex-direction:column;transition:transform .18s var(--ease),border-color .18s var(--ease);}
.portfolio-card:hover{transform:translateY(-4px);border-color:var(--border-dark-strong);}
.portfolio-thumb{aspect-ratio:16/10;position:relative;background:linear-gradient(160deg,#15161c,#0b0b0f);}
.portfolio-card .body{padding:var(--space-3);display:flex;flex-direction:column;gap:10px;flex:1;}
.portfolio-card .industry{font-family:var(--font-head);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);}
.portfolio-card p{font-size:.9rem;}
.portfolio-card .body .btn{margin-top:auto;align-self:flex-start;}

/* ---------- Case study page ---------- */
.case-meta{grid-template-columns:repeat(4,1fr);border:1px solid var(--border-dark);border-radius:var(--radius-md);overflow:hidden;}
.case-meta div{padding:var(--space-3);border-right:1px solid var(--border-dark);}
.case-meta div:last-child{border-right:none;}
.case-meta .k{font-family:var(--font-head);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-400);margin-bottom:6px;}
.case-meta .v{font-weight:600;}
@media (max-width:900px){ .case-meta{grid-template-columns:repeat(2,1fr);} .case-meta div{border-bottom:1px solid var(--border-dark);} }

.improve-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
.improve-list li{display:flex;gap:10px;align-items:flex-start;font-size:.98rem;color:var(--grey-200);}
.improve-list svg{width:20px;height:20px;color:var(--blue);flex:none;margin-top:2px;}
@media (max-width:640px){ .improve-list{grid-template-columns:1fr;} }

/* ---------- About ---------- */
/* Brand panel used in place of a team photo: the BM mark on a dark,
   dot-grid textured panel with a soft blue glow. Deliberately not a stock
   or fake team photo; swap for a real team/office photo later if wanted. */
.about-brand-panel{aspect-ratio:4/3;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:32px;border:1px solid var(--border-dark);border-radius:var(--radius-lg);background-image:radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px),linear-gradient(160deg,#15161c,#0b0b0f);background-size:22px 22px, 100% 100%;}
.about-brand-panel .abp-glow{position:absolute;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle, rgba(41,82,255,.35), transparent 70%);filter:blur(10px);}
.about-brand-panel .abp-mark{position:relative;width:104px;height:104px;border-radius:22px;box-shadow:0 30px 60px -20px rgba(41,82,255,.55);}
.about-brand-panel .abp-caption{position:relative;font-family:var(--font-head);font-weight:600;font-size:.92rem;color:var(--grey-300);text-align:center;line-height:1.5;max-width:220px;margin:0;}

/* ---------- Utility reveal ----------
   Content is visible by default (no-JS / crawlers / reduced-motion always see it).
   Only once JS confirms it's running (html.js-ready) do elements start hidden,
   ready to animate in on scroll, with a JS-side safety timer that force-reveals
   anything left hidden, so nothing can get permanently stuck at opacity:0. */
.reveal{opacity:1;transform:none;}
html.js-ready .reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease);}
html.js-ready .reveal.in{opacity:1;transform:translateY(0);}
@media (prefers-reduced-motion: reduce){
  html.js-ready .reveal{opacity:1;transform:none;transition:none;}
}

/* ---------- Misc ---------- */
hr.rule{border:none;border-top:1px solid var(--border-dark);margin:var(--space-5) 0;}
.tag-list{display:flex;flex-wrap:wrap;gap:8px;}
.mt-0{margin-top:0;}
.center-text{text-align:center;}

/* Before/after photo fills the pane exactly like the placeholder it replaces. */
.ba-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.portfolio-thumb .ba-photo{position:static;}
