/* FIFI Website — styles. Style variants are applied via body class. */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--fb);color:var(--c2);background:var(--c3);line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5{font-family:var(--fh);color:var(--c2);line-height:1.2;margin:0 0 .5em}
h1{font-size:clamp(2rem,5vw,3.5rem);font-weight:800}
h2{font-size:clamp(1.6rem,3.5vw,2.4rem);font-weight:700}
h3{font-size:1.35rem;font-weight:700}
a{color:var(--c1);text-decoration:none}
img{max-width:100%;display:block;height:auto}
.container{width:100%;max-width:1200px;margin:0 auto;padding:0 1.25rem}
.container.narrow{max-width:820px}
.section{padding:4rem 0}
.section-alt{background:var(--c4)}
.section-head{text-align:center;margin-bottom:2.5rem}
.eyebrow{display:inline-flex;gap:.5rem;align-items:center;text-transform:uppercase;letter-spacing:.15em;font-size:.75rem;color:var(--c1);font-weight:600;margin-bottom:.5rem}
.grid{display:grid;gap:1.5rem}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.grid-4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.btn{display:inline-flex;gap:.6rem;align-items:center;padding:.85rem 1.5rem;border-radius:8px;font-weight:600;border:0;cursor:pointer;font-size:1rem;transition:transform .15s,box-shadow .15s}
.btn-primary{background:var(--btn-bg,var(--c1));color:var(--btn-fg,#fff)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 30px -10px var(--btn-bg,var(--c1))}
.btn-ghost{background:transparent;border:1px solid currentColor}
/* Header */
.site-header{position:sticky;top:0;z-index:50;background:var(--header-bg,color-mix(in oklab,var(--c3) 92%,transparent));backdrop-filter:blur(12px);border-bottom:1px solid color-mix(in oklab,var(--c2) 8%,transparent);color:var(--header-fg,var(--c2))}
.nav{display:flex;justify-content:space-between;align-items:center;padding:.9rem 1.25rem;gap:1rem}
.brand{display:flex;align-items:center;gap:.6rem;color:var(--header-fg,var(--c2))}
.brand .logo{max-height:var(--logo-size,44px);max-width:calc(var(--logo-size,44px) * 4);width:auto;object-fit:contain}
.brand-text{font-family:var(--fh);font-weight:800;font-size:1.15rem;color:var(--header-fg,var(--c2))}
.main-nav{display:flex;gap:1.25rem;align-items:center}
.main-nav a{color:var(--header-fg,var(--c2));font-weight:500;padding:.5rem 0;position:relative;display:inline-flex;align-items:center;gap:.5rem}
.main-nav a i{font-size:.95rem;opacity:.85}
.main-nav a.active,.main-nav a:hover{color:var(--header-link-active,var(--c1))}
.main-nav a.active::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--header-link-active,var(--c1))}
.nav-brand-mobile,.nav-close{display:none}
.nav-backdrop{display:none}
.hamburger{display:none;background:transparent;border:0;color:var(--c2);font-size:1.5rem;padding:.4rem;cursor:pointer}
@media(max-width:768px){
  .hamburger{display:block}
  .nav-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .25s;z-index:98}
  .nav-open .nav-backdrop{opacity:1;pointer-events:auto}
  .main-nav{position:fixed;top:0;right:-100%;bottom:0;width:82%;max-width:320px;background:#0f1116;color:#e6e6ea;flex-direction:column;padding:1rem;gap:.15rem;box-shadow:-8px 0 40px rgba(0,0,0,.5);transition:right .28s ease;align-items:stretch;z-index:99;overflow-y:auto}
  .nav-open .main-nav{right:0}
  .nav-brand-mobile{display:flex;align-items:center;justify-content:space-between;padding:.5rem .5rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:1rem}
  .nav-brand-mobile img{max-height:40px;max-width:160px;object-fit:contain}
  .nav-brand-mobile span{color:#fff;font-weight:800;font-family:var(--fh)}
  .nav-close{display:grid;place-items:center;background:transparent;border:0;color:#c9cbd1;font-size:1.3rem;width:36px;height:36px;border-radius:8px;cursor:pointer}
  .nav-close:hover{background:rgba(255,255,255,.08);color:#fff}
  .main-nav a{color:#CC5500;font-weight:600;padding:.85rem 1rem;border-radius:10px;border:0;display:flex;align-items:center;gap:.85rem;font-size:1rem;transition:background .15s,color .15s}
  .main-nav a i{font-size:1.05rem;width:22px;text-align:center;opacity:1}
  .main-nav a:hover,.main-nav a.active{background:rgba(204,85,0,.15);color:#ff7a1a}
  .main-nav a.active::after{display:none}
}
/* Hero */
.hero{position:relative;overflow:hidden;min-height:70vh;display:flex;align-items:center;color:#fff;background:linear-gradient(135deg,var(--c1),var(--c2));background-size:cover;background-position:center}
.hero[style*="--hero-bg"]{background:var(--hero-bg) center/cover no-repeat}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in oklab,var(--c2) calc(var(--overlay)*100%),transparent),color-mix(in oklab,var(--c1) calc(var(--overlay)*70%),transparent))}
.hero-inner{position:relative;display:grid;gap:2rem;grid-template-columns:1fr;padding:5rem 1.25rem;align-items:center;width:100%}
.hero-content h1{color:#fff}
.hero-content .lead{font-size:1.2rem;opacity:.95;margin-bottom:1.5rem}
.hero-content .eyebrow{color:#fff;opacity:.85}
.hero-visual img,.hero-placeholder{width:100%;border-radius:16px;aspect-ratio:4/3;object-fit:cover;box-shadow:0 30px 60px -20px rgba(0,0,0,.5)}
.hero-placeholder{background:rgba(255,255,255,.1);display:grid;place-items:center;font-size:5rem;color:rgba(255,255,255,.3)}
@media(min-width:900px){
  .hero-split .hero-inner,.hero-bento .hero-inner,.hero-magazine .hero-inner{grid-template-columns:1.1fr 1fr}
}
.hero-video{background:#000}
.hero-gradient{background:radial-gradient(1200px 600px at 20% 30%,var(--c1),transparent),radial-gradient(1000px 500px at 80% 70%,color-mix(in oklab,var(--c1) 60%,var(--c2)),transparent),var(--c2)}
.hero-scroll .hero-content{transform:translateY(-10px)}
.hero-editorial h1{font-size:clamp(2.5rem,7vw,5rem);letter-spacing:-.02em}
/* Cards */
.card{background:var(--c3);border-radius:14px;overflow:hidden;box-shadow:0 6px 18px -6px rgba(0,0,0,.08);border:1px solid color-mix(in oklab,var(--c2) 6%,transparent);transition:transform .2s,box-shadow .2s}
.card:hover{transform:translateY(-4px);box-shadow:0 20px 40px -20px rgba(0,0,0,.15)}
.card-media{aspect-ratio:16/10;overflow:hidden;background:var(--c4)}
.card-media img{width:100%;height:100%;object-fit:cover}
.card-media.placeholder{display:grid;place-items:center;font-size:3rem;color:color-mix(in oklab,var(--c2) 30%,transparent)}
.card-body{padding:1.5rem}
.p-lg{padding:2rem}
.icon-badge{width:52px;height:52px;border-radius:14px;background:color-mix(in oklab,var(--c1) 12%,transparent);color:var(--c1);display:grid;place-items:center;font-size:1.4rem;margin-bottom:.75rem}
.feature h4{margin:.5rem 0 .3rem}
.director-card .role{color:var(--c1);font-weight:600;margin:.1rem 0 .5rem}
/* Clients */
.clients-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1.5rem;align-items:center}
.client-logo{background:var(--c3);border-radius:12px;padding:1.25rem;display:grid;place-items:center;aspect-ratio:3/2;border:1px solid color-mix(in oklab,var(--c2) 6%,transparent)}
.client-logo img{max-height:80px;max-width:100%;object-fit:contain;filter:grayscale(.3);transition:filter .2s}
.client-logo:hover img{filter:none}
/* Page hero */
.page-hero{padding:5rem 0 3rem;background:linear-gradient(135deg,var(--c4),var(--c3))}
.page-hero .lead{font-size:1.15rem;max-width:720px;color:color-mix(in oklab,var(--c2) 70%,transparent)}
/* Contact */
.contact-wrap{align-items:start}
.info-row{display:flex;gap:1rem;margin-bottom:1.25rem}
.info-row h4{margin:0 0 .2rem}
.contact-form label{display:block;margin-bottom:1rem;font-weight:500;font-size:.9rem}
.contact-form input,.contact-form textarea{width:100%;padding:.8rem 1rem;border-radius:8px;border:1px solid color-mix(in oklab,var(--c2) 15%,transparent);font:inherit;background:var(--c3);color:var(--c2);margin-top:.35rem}
.contact-form input:focus,.contact-form textarea:focus{outline:2px solid var(--c1);border-color:transparent}
.msg{padding:.85rem 1rem;border-radius:8px;margin-bottom:1rem;font-size:.95rem}
.msg.success{background:#e6f7ec;color:#0a6b2c;border:1px solid #b7e6c5}
.msg.error{background:#fde8e8;color:#a11313;border:1px solid #f5b5b5}
.msg.info{background:#e8f0fe;color:#164a99;border:1px solid #b5cef5}
/* Footer */
.site-footer{background:var(--c2);color:#fff;padding:3rem 0 1rem;margin-top:3rem}
.site-footer h4,.site-footer h5{color:#fff}
.footer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:2rem}
.site-footer .logo{max-height:56px;max-width:200px;object-fit:contain;background:#fff;padding:.5rem;border-radius:8px;margin-bottom:.75rem}
.socials{display:flex;gap:.6rem}
.socials a{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#fff;transition:background .2s,transform .2s}
.socials a:hover{background:var(--c1);transform:translateY(-2px)}
.footer-bottom{border-top:1px solid rgba(255,255,255,.1);margin-top:2rem;padding-top:1rem;display:flex;flex-direction:column;align-items:center;gap:.35rem;font-size:.85rem;text-align:center}
.footer-bottom .powered{margin:0;color:var(--c1);font-weight:600;opacity:1}
.footer-bottom .powered a{color:var(--c1)}
.footer-bottom .copyright{margin:0;opacity:.85;border:0;padding:0;display:block}
.footer-bottom .copyright p{margin:0}
/* === Style variants === */
.style-glassmorphism .card,.style-glassmorphism .site-header{background:color-mix(in oklab,var(--c3) 55%,transparent);backdrop-filter:blur(20px);border:1px solid color-mix(in oklab,#fff 30%,transparent)}
.style-glassmorphism .btn-primary{background:color-mix(in oklab,var(--c1) 85%,transparent);backdrop-filter:blur(10px)}
.style-neumorphism{background:var(--c4)}
.style-neumorphism .card,.style-neumorphism .btn-primary{background:var(--c4);box-shadow:8px 8px 20px rgba(0,0,0,.12),-8px -8px 20px rgba(255,255,255,.9);border:0}
.style-neumorphism .icon-badge{box-shadow:inset 4px 4px 10px rgba(0,0,0,.08),inset -4px -4px 10px rgba(255,255,255,.8)}
.style-flat .card{box-shadow:none;border:2px solid var(--c2)}
.style-flat .btn-primary{border-radius:2px;box-shadow:none}
.style-brutalism{font-family:var(--fb)}
.style-brutalism .card,.style-brutalism .btn-primary{border:3px solid var(--c2);border-radius:0;box-shadow:6px 6px 0 var(--c2)}
.style-brutalism h1,.style-brutalism h2{text-transform:uppercase;letter-spacing:-.02em}
.style-skeuomorphism .card{background:linear-gradient(180deg,#fff,var(--c4));box-shadow:0 2px 4px rgba(0,0,0,.1),inset 0 1px 0 #fff,0 10px 25px -5px rgba(0,0,0,.15);border-radius:12px}
.style-skeuomorphism .btn-primary{background:linear-gradient(180deg,color-mix(in oklab,var(--c1) 120%,#fff),var(--c1));box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 2px 6px rgba(0,0,0,.25)}
.style-gradient body,.style-gradient{background:linear-gradient(135deg,var(--c3),color-mix(in oklab,var(--c1) 20%,var(--c3)))}
.style-gradient .hero{background:radial-gradient(1200px 600px at 20% 20%,var(--c1),transparent),radial-gradient(1000px 500px at 80% 60%,color-mix(in oklab,var(--c1) 50%,var(--c2)),transparent),var(--c2)}
.style-dark{background:#0b0b0d;color:#e6e6ea}
.style-dark h1,.style-dark h2,.style-dark h3,.style-dark h4,.style-dark h5{color:#fff}
.style-dark .site-header{background:rgba(15,15,20,.85);border-bottom-color:rgba(255,255,255,.08)}
.style-dark .main-nav a{color:#e6e6ea}
.style-dark .card,.style-dark .section-alt,.style-dark .page-hero{background:#15161b;border-color:rgba(255,255,255,.06)}
.style-dark .contact-form input,.style-dark .contact-form textarea{background:#0b0b0d;color:#fff;border-color:rgba(255,255,255,.1)}
.style-claymorphism .card,.style-claymorphism .btn-primary{border-radius:24px;box-shadow:inset 0 -8px 0 rgba(0,0,0,.06),0 12px 30px -8px color-mix(in oklab,var(--c1) 30%,transparent)}
.style-claymorphism .icon-badge{border-radius:18px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.08)}
.style-bauhaus{font-family:var(--fb)}
.style-bauhaus h1,.style-bauhaus h2{font-weight:800;letter-spacing:-.03em}
.style-bauhaus .icon-badge{border-radius:50%;background:var(--c1);color:#fff}
.style-bauhaus .card{border-radius:0;border:1px solid var(--c2);box-shadow:none}
.style-maximalism{background:var(--c4)}
.style-maximalism .hero{background:conic-gradient(from 210deg,var(--c1),var(--c2),var(--c1))}
.style-maximalism .card{border:2px dashed var(--c1)}
.style-maximalism h2{text-shadow:3px 3px 0 var(--c1)}

/* ===== Scroll reveal & micro-interactions (v1.0.2) ===== */
[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0ms);will-change:opacity,transform}
[data-reveal].is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){
  [data-reveal]{opacity:1;transform:none;transition:none}
}

/* Header shrink on scroll */
.site-header{transition:box-shadow .3s ease, background-color .3s ease, padding .3s ease}
.site-header.scrolled{box-shadow:0 6px 22px rgba(0,0,0,.08);backdrop-filter:saturate(1.2) blur(6px)}

/* Button micro-interactions */
.btn{position:relative;overflow:hidden;transition:transform .2s ease, box-shadow .2s ease, background-color .2s ease}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.12)}
.btn:active{transform:translateY(0)}
.btn.is-loading{opacity:.85;cursor:progress}
.btn .ripple{position:absolute;border-radius:50%;transform:translate(-50%,-50%) scale(0);width:220px;height:220px;background:rgba(255,255,255,.35);pointer-events:none;animation:ripple .6s ease-out forwards}
@keyframes ripple{to{transform:translate(-50%,-50%) scale(1);opacity:0}}

/* Card/info hover lift */
.card,.info-row,.service-card,.feature{transition:transform .25s ease, box-shadow .25s ease}
.card:hover,.service-card:hover,.feature:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(0,0,0,.10)}

/* Contact form field feedback */
.contact-form label{display:block;margin-bottom:.85rem}
.contact-form .has-error input,
.contact-form .has-error textarea{border-color:#e14b4b !important;box-shadow:0 0 0 3px rgba(225,75,75,.15)}
.contact-form input,.contact-form textarea{transition:border-color .2s ease, box-shadow .2s ease}
.contact-form input:focus,.contact-form textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(0,120,255,.18)}
.field-error{display:block;margin-top:.25rem;color:#c0392b;font-size:.85rem}

/* Message pill */
.msg{padding:.6rem .85rem;border-radius:.5rem;margin:.5rem 0;font-size:.95rem}
.msg.info{background:#eef4ff;color:#1e3a8a}
.msg.success{background:#e7f7ee;color:#136c3a}
.msg.error{background:#fdecec;color:#a02525}


/* Nav link underline */
.main-nav a{position:relative}
.main-nav a::after{content:"";position:absolute;left:12px;right:12px;bottom:6px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .3s ease}
.main-nav a:hover::after,.main-nav a.active::after{transform:scaleX(1);transform-origin:left}

/* Mobile bottom floating nav */
.bottom-nav{display:none}
@media(max-width:768px){
  .hamburger{display:none !important}
  .site-header .main-nav,.site-header .nav-backdrop,.site-header .nav-brand-mobile,.site-header .nav-close{display:none !important}
  .bottom-nav{display:flex;position:fixed;left:50%;transform:translateX(-50%);bottom:16px;z-index:100;background:var(--bottom-bg,#0f1116);border:1px solid rgba(255,255,255,.08);border-radius:999px;padding:.4rem;gap:.25rem;box-shadow:0 20px 50px -10px rgba(0,0,0,.55);backdrop-filter:blur(12px);width:calc(100% - 24px);max-width:360px;justify-content:space-between}
  .bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;color:var(--bottom-fg,#c9cbd1);font-size:.7rem;font-weight:600;padding:.55rem .4rem;border-radius:999px;text-decoration:none;transition:background .2s,color .2s}
  .bottom-nav a i{font-size:1.05rem}
  .bottom-nav a.active,.bottom-nav a:hover{background:var(--bottom-active-bg,#CC5500);color:var(--bottom-active-fg,#fff);box-shadow:0 8px 20px -6px color-mix(in oklab,var(--bottom-active-bg,#CC5500) 60%,transparent)}
  main{padding-bottom:90px}
}

/* ===================================================================
   v1.2.0 — custom theme colours, client logo grid, footer / floating
   menu spacing.
   =================================================================== */

/* --- Admin-controlled colour tokens (fall back to the base palette) --- */
h1,h2,h3,h4,h5{color:var(--heading-color,var(--c2))}
a{color:var(--link-color,var(--c1))}
.section-alt{background:var(--section-alt-bg,var(--c4))}
.site-footer{background:var(--footer-bg,var(--c2));color:var(--footer-fg,#fff)}
.site-footer h4,.site-footer h5{color:var(--footer-fg,#fff)}
.site-footer a{color:var(--footer-fg,#fff)}
.eyebrow{color:var(--c1)}
.site-header h1,.site-header .brand-text{color:var(--header-fg,var(--c2))}

/* --- Clients: modern responsive logo grid --- */
#clients .clients-strip{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:1rem;
  align-items:stretch;
}
.client-logo{
  position:relative;
  background:var(--c3);
  border:1px solid color-mix(in oklab,var(--c2) 8%,transparent);
  border-radius:16px;
  padding:1rem;
  aspect-ratio:1/1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  overflow:hidden;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.client-logo::after{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,transparent 55%,color-mix(in oklab,var(--c1) 7%,transparent));
  opacity:0;transition:opacity .25s ease;
}
.client-logo:hover{transform:translateY(-4px);border-color:color-mix(in oklab,var(--c1) 35%,transparent);box-shadow:0 18px 36px -22px rgba(0,0,0,.45)}
.client-logo:hover::after{opacity:1}
.client-logo img{
  width:100%;height:auto;max-height:64px;object-fit:contain;
  filter:grayscale(1);opacity:.78;transition:filter .25s ease,opacity .25s ease;
}
.client-logo:hover img{filter:none;opacity:1}
.client-name{
  font-size:.72rem;line-height:1.25;font-weight:600;text-align:center;
  color:color-mix(in oklab,var(--c2) 62%,transparent);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
@media(min-width:1024px){
  #clients .clients-strip{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.25rem}
  .client-logo img{max-height:76px}
}
@media(max-width:520px){
  #clients .clients-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
  .client-logo{padding:.85rem;border-radius:14px}
  .client-logo img{max-height:52px}
}

/* --- Footer: keep "Powered by TECHANDTAG" visible on every screen --- */
.footer-bottom{
  display:flex;flex-direction:column;align-items:center;gap:.4rem;
  text-align:center;
}
.footer-bottom .powered{
  order:-1;margin:0;font-weight:700;letter-spacing:.02em;
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.35rem .8rem;border-radius:999px;
  background:color-mix(in oklab,var(--c1) 16%,transparent);
  color:var(--c1);
}
.footer-bottom .powered a{color:var(--c1);text-decoration:none}
.footer-bottom .powered a:hover{text-decoration:underline}
@media(min-width:769px){
  .footer-bottom{flex-direction:row;justify-content:space-between;text-align:left}
  /* keep clear of the floating back-to-top button */
  .footer-bottom .powered{order:2;margin-right:3.5rem}
}
@media(max-width:768px){
  /* The floating menu is fixed at bottom:16px — reserve space under the
     footer so the "Powered by" line is never hidden behind it. */
  main{padding-bottom:1rem}
  body:has(.bottom-nav) .site-footer{padding-bottom:calc(104px + env(safe-area-inset-bottom,0px))}
  .site-footer{padding-bottom:1.5rem}
}

/* --- Floating menu: adapt to the number of admin-defined items --- */
@media(max-width:768px){
  .bottom-nav{max-width:min(440px,calc(100% - 24px));padding-bottom:calc(.4rem + env(safe-area-inset-bottom,0px)/2)}
  .bottom-nav a{min-width:0;padding:.55rem .35rem}
  .bottom-nav a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem}
}
@media(max-width:360px){
  .bottom-nav a i{font-size:.98rem}
  .bottom-nav a span{font-size:.62rem}
}

/* ===================================================================
   v1.3.0 — parallax hero backgrounds, gradient section fades,
   footer contact icons, tighter mobile client grid.
   =================================================================== */

/* --- Hero / page-hero image background with parallax --- */
.hero.has-bg,.page-hero.has-bg{background:var(--c2);position:relative;overflow:hidden;isolation:isolate}
.hero .hero-bg,.page-hero .hero-bg{
  position:absolute;inset:-14% 0;z-index:0;
  background-image:var(--hero-bg);background-size:cover;background-position:center;
  background-repeat:no-repeat;transform:translate3d(0,0,0);will-change:transform;
}
.hero .hero-overlay,.page-hero .hero-overlay{z-index:1}
.hero .hero-inner,.page-hero > .container{position:relative;z-index:2}

/* No hard edge: fade the hero into the next section colour */
.hero.has-bg::after,.page-hero.has-bg::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;z-index:3;pointer-events:none;
  height:clamp(90px,22%,220px);
  background:linear-gradient(to bottom,
    color-mix(in oklab,var(--c3) 0%,transparent),
    color-mix(in oklab,var(--c3) 55%,transparent) 55%,
    var(--c3));
}

/* About / inner page hero with a background image */
.page-hero.has-bg{padding:6rem 0 5rem;color:#fff;min-height:46vh;display:flex;align-items:center}
.page-hero.has-bg h1,.page-hero.has-bg .eyebrow{color:#fff}
.page-hero.has-bg .lead{color:rgba(255,255,255,.92)}
.page-hero.has-bg .hero-overlay{
  position:absolute;inset:0;
  background:linear-gradient(135deg,
    color-mix(in oklab,var(--c2) calc(var(--overlay)*100%),transparent),
    color-mix(in oklab,var(--c1) calc(var(--overlay)*70%),transparent));
}

/* --- Clients: tighter vertical rhythm on phones (layout unchanged) --- */
@media(max-width:768px){
  #clients.section{padding:1.75rem 0 2rem}
  #clients .section-head{margin-bottom:1.1rem}
  #clients .section-head h2{margin-bottom:.15rem}
  #clients .clients-strip{gap:.7rem}
}

/* --- Footer contact list with icon chips --- */
.footer-contact{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}
.footer-contact li{display:flex;align-items:flex-start;gap:.7rem;font-size:.95rem}
.footer-contact .fc-icon{
  flex:0 0 34px;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:color-mix(in oklab,var(--c1) 22%,transparent);color:var(--c1);font-size:.9rem;
}
.footer-contact a,.footer-contact span.fc-text{color:var(--footer-fg,#fff);opacity:.92;line-height:1.35}
.footer-contact a:hover{opacity:1;text-decoration:underline}
.footer-about{opacity:.85;font-size:.95rem}

/* ===================================================================
   v1.4.0 — admin-controlled parallax, hard hero edge, mobile header
   icon, continuous client-logo slider.
   =================================================================== */

/* --- Hero bottom edge: admin can choose a traditional hard cut --- */
.hero.hero-edge-hard.has-bg::after,
.page-hero.hero-edge-hard.has-bg::after{display:none;content:none}
.hero.hero-edge-hard{border-bottom:0}

/* --- Parallax off: keep the image perfectly still --- */
.hero[data-parallax-mode="off"] .hero-bg,
.page-hero[data-parallax-mode="off"] .hero-bg{inset:0;transform:none !important}

/* --- Mobile-only icon on the right of the top menu bar --- */
.header-mobile-icon{display:none}
@media(max-width:768px){
  .header-mobile-icon{
    display:inline-grid;place-items:center;margin-left:auto;
    width:calc(var(--mobile-icon-size,24px) + 18px);
    height:calc(var(--mobile-icon-size,24px) + 18px);
    border-radius:999px;
    background:var(--mobile-icon-bg,color-mix(in oklab,var(--c1) 12%,transparent));
    color:var(--mobile-icon-color,var(--c1));
    font-size:var(--mobile-icon-size,24px);
    line-height:1;flex:0 0 auto;
    transition:transform .18s ease,background .18s ease;
  }
  .header-mobile-icon:active{transform:scale(.93)}
  .header-mobile-icon i{font-size:inherit}
}

/* --- Clients: continuous logo slider --- */
.clients-slider{
  position:relative;overflow:hidden;width:100%;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);
}
.clients-track{
  display:flex;align-items:center;gap:2.5rem;width:max-content;
  animation:clients-marquee var(--clients-speed,30s) linear infinite;
}
.clients-slider:hover .clients-track{animation-play-state:paused}
.clients-track .client-logo{
  flex:0 0 auto;width:auto;aspect-ratio:auto;background:transparent;border:0;
  padding:.25rem .35rem;border-radius:0;box-shadow:none;gap:.35rem;
}
.clients-track .client-logo::after{content:none}
.clients-track .client-logo:hover{transform:none;box-shadow:none;border:0}
.clients-track .client-logo img{width:auto;height:auto;max-height:72px;max-width:190px}
@keyframes clients-marquee{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
@media(prefers-reduced-motion:reduce){
  .clients-track{animation:none;flex-wrap:wrap;justify-content:center;width:100%}
}

/* Original logo colours by default (admin can switch to greyscale) */
.logos-original .client-logo img{filter:none;opacity:1}
.logos-grayscale .client-logo img{filter:grayscale(1);opacity:.8}
.logos-grayscale .client-logo:hover img{filter:none;opacity:1}

/* Tighter client section on phones — no oversized padding */
@media(max-width:768px){
  #clients.section{padding:1.25rem 0 1.5rem}
  #clients .container{padding-left:.75rem;padding-right:.75rem}
  #clients .section-head{margin-bottom:.85rem}
  .clients-track{gap:1.5rem}
  .clients-track .client-logo{padding:.15rem .2rem}
  .clients-track .client-logo img{max-height:46px;max-width:130px}
  .clients-track .client-name{font-size:.65rem}
}

/* ===================================================================
   v1.4.1 — uploadable mobile menu icon (right-aligned), larger mobile
   client logos with tighter spacing, better hero image framing.
   =================================================================== */

/* --- Mobile header icon: always hard-right, supports uploaded image --- */
@media(max-width:768px){
  .site-header .nav{justify-content:flex-start;gap:.6rem;padding-right:1rem}
  .site-header .brand{flex:1 1 auto;min-width:0}
  .site-header .brand-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .header-mobile-icon{
    margin-left:auto;margin-right:0;order:99;
    overflow:hidden;padding:0;
  }
  .header-mobile-icon.has-image{
    background:var(--mobile-icon-bg,transparent);
    width:calc(var(--mobile-icon-size,24px) + 14px);
    height:calc(var(--mobile-icon-size,24px) + 14px);
  }
  .header-mobile-icon img{
    width:100%;height:100%;object-fit:contain;display:block;
  }
}

/* --- Clients: slightly larger logos, tighter space beneath them --- */
@media(max-width:768px){
  #clients.section{padding:1.25rem 0 .6rem}
  .clients-track{gap:1.15rem}
  .clients-track .client-logo{padding:.1rem .15rem}
  .clients-track .client-logo img{max-height:62px;max-width:168px}
  #clients .clients-slider{margin-bottom:0}
  #clients .clients-strip{gap:.6rem}
  .client-logo img{max-height:64px}
}
@media(max-width:520px){
  #clients .clients-strip{gap:.55rem}
  .client-logo{padding:.7rem}
  .client-logo img{max-height:60px}
}

/* --- Hero background: show more of the image, crop less --- */
.hero .hero-bg,.page-hero .hero-bg{background-position:center 40%}
@media(min-width:769px){
  .hero.has-bg{min-height:72vh}
  .hero .hero-bg{background-position:center 35%}
}
@media(max-width:768px){
  /* A shorter hero on phones means a landscape photo keeps far more of
     its width visible instead of being cropped to a narrow slice. */
  .hero.has-bg{min-height:min(58vh,430px)}
  .hero.has-bg .hero-bg,.page-hero.has-bg .hero-bg{
    inset:0;transform:none !important;background-position:center center;
  }
  .hero.has-bg .hero-inner{padding:3rem 1.1rem}
  .page-hero.has-bg{min-height:34vh;padding:3.5rem 0 3rem}
  .hero.has-bg::after,.page-hero.has-bg::after{height:clamp(60px,16%,120px)}
}

/* ===================================================================
   v1.4.2 — admin-controlled hero background framing (less cropping)
   and multiple mobile header icons.
   =================================================================== */

/* --- Hero background: respect the admin fit / focal point / height --- */
.hero.has-bg{min-height:var(--hero-h,70vh)}
.page-hero.has-bg{min-height:calc(var(--hero-h,70vh) * .66)}
.hero .hero-bg,.page-hero .hero-bg{
  background-size:var(--hero-bg-size,cover);
  background-position:var(--hero-bg-pos,center center);
  background-repeat:no-repeat;
}
/* "Show the whole image": never crop — no parallax overscan, letterbox on the brand colour */
.hero-fit-contain.has-bg,.hero-fit-fill.has-bg{background:var(--c2)}
.hero-fit-contain .hero-bg,.hero-fit-fill .hero-bg{
  inset:0 !important;transform:none !important;height:100% !important;
}
.hero-fit-contain .hero-overlay,.hero-fit-fill .hero-overlay{opacity:.72}

@media(max-width:768px){
  .hero.has-bg{min-height:var(--hero-h-mobile,58vh)}
  .page-hero.has-bg{min-height:calc(var(--hero-h-mobile,58vh) * .62)}
  /* On phones a portrait screen crops landscape photos hardest — keep the
     admin focal point instead of forcing a fixed offset. */
  .hero.has-bg .hero-bg,.page-hero.has-bg .hero-bg{
    background-position:var(--hero-bg-pos,center center);
    background-size:var(--hero-bg-size,cover);
  }
}
@media(max-width:520px){
  .hero-fit-contain.has-bg .hero-inner{padding:2.5rem 1.1rem}
}

/* --- Multiple mobile header icons --- */
.header-mobile-icons{display:none}
@media(max-width:768px){
  .header-mobile-icons{
    display:flex;align-items:center;gap:.4rem;margin-left:auto;order:99;
  }
  .header-mobile-icons .header-mobile-icon{display:inline-flex;margin:0}
}
@media(max-width:380px){
  .header-mobile-icons{gap:.28rem}
  .header-mobile-icons .header-mobile-icon{
    width:calc(var(--mobile-icon-size,24px) + 12px);
    height:calc(var(--mobile-icon-size,24px) + 12px);
    font-size:calc(var(--mobile-icon-size,24px) * .85);
  }
}
