/* ═══════════════════════════════════════════
   XSAVE LLC  ·  Black & White Design System
   ═══════════════════════════════════════════ */

:root {
  --black:     #0A0A0A;
  --ink:       #1C1C1C;
  --mid:       #555555;
  --muted:     #999999;
  --rule:      #E2E2E2;
  --rule-dk:   #2A2A2A;
  --paper:     #F6F6F4;
  --white:     #FFFFFF;
  --err:       #C0392B;
  --ok:        #1A5C3A;

  --sans:   'Inter', system-ui, sans-serif;
  --serif:  'DM Serif Display', Georgia, serif;
  --disp:   'Bebas Neue', Impact, sans-serif;

  --max:  1120px;
  --gutter: clamp(1.25rem, 5vw, 3.5rem);
  --r: 3px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px}
body{font-family:var(--sans);background:var(--white);color:var(--ink);line-height:1.7;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}

/* ── TYPE ── */
h1{font-family:var(--serif);font-size:clamp(3rem,6.5vw,5.5rem);line-height:1.07;letter-spacing:-0.025em;color:var(--black)}
h2{font-family:var(--serif);font-size:clamp(2rem,3.8vw,3.2rem);line-height:1.1;letter-spacing:-0.02em;color:var(--black)}
h3{font-family:var(--sans);font-size:1rem;font-weight:600;color:var(--black);letter-spacing:0.01em}
h4{font-family:var(--sans);font-size:.875rem;font-weight:600;color:var(--black)}
p{font-size:.9375rem;color:var(--mid);line-height:1.85}
.eyebrow{font-size:.68rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.75rem 1.625rem;font-family:var(--sans);font-size:.85rem;font-weight:600;letter-spacing:.01em;border-radius:var(--r);border:1.5px solid transparent;cursor:pointer;transition:all .18s ease;text-decoration:none}
.btn-black{background:var(--black);color:var(--white);border-color:var(--black)}
.btn-black:hover{background:var(--ink);border-color:var(--ink);transform:translateY(-1px)}
.btn-ghost{background:transparent;color:var(--black);border-color:var(--rule)}
.btn-ghost:hover{border-color:var(--black);transform:translateY(-1px)}

/* ── FOCUS RING (keyboard nav accessibility) ── */
:focus-visible{outline:2px solid var(--black);outline-offset:3px}

/* ── REVEAL ── */
.r{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}
.r.on{opacity:1;transform:none}
.r.d1{transition-delay:.08s}.r.d2{transition-delay:.16s}.r.d3{transition-delay:.24s}

/* ═══════════════════════════════════════════
   NAV
   ═══════════════════════════════════════════ */
#nav{
  position:fixed;top:0;left:0;right:0;z-index:200;
  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--rule);
  transition:box-shadow .2s;
}
#nav.scrolled{box-shadow:0 1px 12px rgba(0,0,0,.06)}
.nav-wrap{
  max-width:var(--max);margin:0 auto;padding:0 var(--gutter);
  height:64px;display:flex;align-items:center;justify-content:space-between;
}
.logo{display:flex;align-items:center;flex-shrink:0}
.nav-logo{height:32px;width:auto;display:block}

.nav-links{display:flex;align-items:center;gap:2rem;list-style:none}
.nav-links a{font-size:.82rem;font-weight:500;color:var(--mid);transition:color .2s;position:relative;padding-bottom:2px}
.nav-links a::after{content:'';position:absolute;bottom:-2px;left:0;right:0;height:1px;background:var(--black);transform:scaleX(0);transform-origin:left;transition:transform .22s ease}
.nav-links a:hover,.nav-links a.active{color:var(--black)}
.nav-links a:hover::after,.nav-links a.active::after{transform:scaleX(1)}
.nav-cta{background:var(--black)!important;color:var(--white)!important;padding:.45rem 1.1rem!important;border-radius:var(--r)!important;font-weight:600!important;transition:opacity .2s!important}
.nav-cta:hover{opacity:.8!important}
.nav-cta::after{display:none!important}

.hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:none;padding:4px}
.hamburger span{display:block;width:22px;height:1.5px;background:var(--black);transition:all .25s;border-radius:1px}
.hamburger.open span:nth-child(1){transform:rotate(45deg) translate(4.5px,4.5px)}
.hamburger.open span:nth-child(2){opacity:0}
.hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(4.5px,-4.5px)}

@media(max-width:768px){
  .hamburger{display:flex}
  .nav-links{
    display:none;position:absolute;top:64px;left:0;right:0;
    background:var(--white);border-bottom:1px solid var(--rule);
    flex-direction:column;align-items:flex-start;
    padding:1.5rem var(--gutter);gap:1.25rem;
  }
  .nav-links.open{display:flex}
}

/* ═══════════════════════════════════════════
   HERO  (#home)
   ═══════════════════════════════════════════ */
#home{padding:140px var(--gutter) 96px;max-width:var(--max);margin:0 auto}

.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:4rem;align-items:end}
@media(max-width:820px){.hero-grid{grid-template-columns:1fr;gap:2.5rem}.hero-right{display:none}}

.hero-badge{display:inline-block;font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border:1px solid var(--rule);padding:.3rem .85rem;border-radius:2px;margin-bottom:1.75rem}

#home h1{margin-bottom:1.375rem}
#home h1 em{font-style:italic;color:var(--muted)}
.hero-sub{font-size:1rem;color:var(--mid);max-width:480px;margin-bottom:2.25rem;line-height:1.85}
.hero-ctas{display:flex;gap:.875rem;flex-wrap:wrap}

.hero-right{border-left:1px solid var(--rule);padding-left:2.75rem}
.h-stat{padding:1.5rem 0;border-bottom:1px solid var(--rule)}
.h-stat:first-child{padding-top:0}
.h-stat:last-child{border-bottom:none;padding-bottom:0}
.h-num{font-family:var(--disp);font-size:2.75rem;letter-spacing:.02em;color:var(--black);line-height:1;margin-bottom:.25rem}
.h-lbl{font-size:.75rem;font-weight:500;color:var(--muted);letter-spacing:.04em}

hr.rule{border:none;border-top:1px solid var(--rule);margin:0}

/* ═══════════════════════════════════════════
   SERVICES  (#services)
   ═══════════════════════════════════════════ */
#services{padding:96px var(--gutter);max-width:var(--max);margin:0 auto}

.sec-head{margin-bottom:3.5rem}
.sec-head h2{margin:.5rem 0 .875rem}
.sec-head p{max-width:480px}

.svc-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  border-top:1px solid var(--rule);
  border-left:1px solid var(--rule);
}
@media(max-width:640px){.svc-grid{grid-template-columns:1fr}}

.svc-card{
  padding:3rem 2.5rem;
  border-right:1px solid var(--rule);
  border-bottom:1px solid var(--rule);
  display:flex;flex-direction:column;gap:.875rem;
  position:relative;overflow:hidden;
  transition:background .2s;
}
.svc-card:hover{background:var(--paper)}
.svc-card::after{
  content:'';position:absolute;top:0;left:0;
  width:2px;height:100%;
  background:var(--black);transform:scaleY(0);transform-origin:top;
  transition:transform .3s ease;
}
.svc-card:hover::after{transform:scaleY(1)}

.svc-icon{
  width:46px;height:46px;border:1px solid var(--rule);border-radius:var(--r);
  display:flex;align-items:center;justify-content:center;
  transition:background .2s,border-color .2s;
}
.svc-card:hover .svc-icon{background:var(--black);border-color:var(--black)}
.svc-card:hover .svc-icon svg{stroke:var(--white)}
.svc-icon svg{width:20px;height:20px;stroke:var(--ink);fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;transition:stroke .2s}

.svc-idx{font-family:var(--disp);font-size:2.25rem;color:var(--rule);line-height:1;letter-spacing:.03em}
.svc-card h3{font-size:1.0625rem;margin-bottom:.25rem}
.svc-card p{font-size:.875rem;flex:1}

.svc-cta{
  display:inline-flex;align-items:center;gap:.3rem;
  font-size:.8rem;font-weight:600;color:var(--black);
  margin-top:.375rem;border-bottom:1px solid currentColor;padding-bottom:1px;
  transition:opacity .2s;width:fit-content;
}
.svc-cta:hover{opacity:.5}

/* ═══════════════════════════════════════════
   SERVICE DETAILS (#service-details)
   ═══════════════════════════════════════════ */
#service-details{border-top:1px solid var(--rule)}

.svcdet-block{padding:96px var(--gutter);border-bottom:1px solid var(--rule)}
.svcdet-block.alt{background:var(--paper)}

.svcdet-head{
  max-width:var(--max);margin:0 auto 3.5rem;
  display:grid;grid-template-columns:1fr 1.5fr;gap:3rem;align-items:end;
}
@media(max-width:660px){.svcdet-head{grid-template-columns:1fr;gap:1rem}}
.svcdet-head h2{margin:.5rem 0}
.svcdet-head>.svcdet-intro{font-size:.9375rem;color:var(--mid);line-height:1.85}

.svcdet-steps{
  max-width:var(--max);margin:0 auto;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--rule);
}
.svcdet-steps.cols-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:760px){
  .svcdet-steps,.svcdet-steps.cols-3{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:400px){
  .svcdet-steps,.svcdet-steps.cols-3{grid-template-columns:1fr}
}

.svcdet-step{
  padding:2.5rem 2rem 2.5rem 0;
  border-right:1px solid var(--rule);
}
.svcdet-step:last-child{border-right:none}
@media(max-width:760px){
  .svcdet-step:nth-child(even){border-right:none}
  .svcdet-step{border-bottom:1px solid var(--rule)}
  .svcdet-step:nth-last-child(-n+2){border-bottom:none}
  .svcdet-steps.cols-3 .svcdet-step:nth-child(2){border-right:none}
  .svcdet-steps.cols-3 .svcdet-step:last-child{border-bottom:none}
}
@media(max-width:400px){
  .svcdet-step{border-right:none;border-bottom:1px solid var(--rule)}
  .svcdet-step:last-child{border-bottom:none}
}

.svcdet-n{font-family:var(--disp);font-size:.9rem;letter-spacing:.12em;color:var(--muted);margin-bottom:1.5rem}
.svcdet-step h3{color:var(--black);margin-bottom:.5rem}
.svcdet-step p{font-size:.845rem;color:var(--mid);line-height:1.75}

/* ═══════════════════════════════════════════
   PORTFOLIO  (#portfolio)
   ═══════════════════════════════════════════ */
#portfolio{background:var(--paper);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:96px var(--gutter)}

.port-wrap{max-width:var(--max);margin:0 auto}

.port-head{
  display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:end;margin-bottom:3.5rem;
}
@media(max-width:660px){.port-head{grid-template-columns:1fr;gap:1rem}}
.port-head h2{margin:.5rem 0}

.port-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
@media(max-width:860px){.port-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){.port-grid{grid-template-columns:1fr}}

.port-card{
  background:var(--white);border:1px solid var(--rule);border-radius:4px;
  overflow:hidden;display:flex;flex-direction:column;
  cursor:pointer;transition:box-shadow .2s,transform .2s;
}
.port-card:hover{box-shadow:0 8px 32px rgba(0,0,0,.08);transform:translateY(-3px)}
.port-card:focus{outline:2px solid var(--black);outline-offset:2px}

.port-thumb{
  height:180px;background:var(--paper);border-bottom:1px solid var(--rule);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--disp);font-size:3.5rem;letter-spacing:.05em;color:var(--rule);
  position:relative;overflow:hidden;
}
.port-thumb::after{
  content:'View project';
  position:absolute;inset:0;background:rgba(10,10,10,.85);
  color:var(--white);font-family:var(--sans);font-size:.8rem;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;
  display:flex;align-items:center;justify-content:center;
  opacity:0;transition:opacity .2s;
}
.port-card:hover .port-thumb::after{opacity:1}

.port-body{padding:1.625rem;flex:1;display:flex;flex-direction:column;gap:.625rem}
.port-industry{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.port-body h3{font-size:1rem;margin:.1rem 0}
.port-body p{font-size:.845rem;color:var(--mid);flex:1}

.port-stack{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.875rem}
.port-tech{font-size:.7rem;font-weight:500;padding:.2rem .6rem;border:1px solid var(--rule);border-radius:2px;color:var(--mid);background:var(--paper)}

.port-client{font-size:.78rem;font-weight:600;color:var(--black);margin-top:.625rem;padding-top:.625rem;border-top:1px solid var(--rule)}

/* ── Project Modal ── */
.modal-overlay{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);
  z-index:500;align-items:center;justify-content:center;padding:1.5rem;
}
.modal-overlay.open{display:flex}
.modal{
  background:var(--white);border-radius:4px;max-width:680px;width:100%;
  max-height:90vh;overflow-y:auto;padding:2.5rem;position:relative;
}
.modal-close{
  position:absolute;top:1.25rem;right:1.25rem;
  background:none;border:none;cursor:pointer;font-size:1.25rem;
  color:var(--mid);transition:color .2s;line-height:1;
}
.modal-close:hover{color:var(--black)}
.modal-industry{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem}
.modal h2{font-size:1.75rem;margin-bottom:1rem}
.modal p{font-size:.9rem;margin-bottom:1rem}
.modal-meta{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
.modal-meta-label{font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.3rem}
.modal-meta-val{font-size:.875rem;font-weight:500;color:var(--black)}

/* ═══════════════════════════════════════════
   ABOUT  (#about)
   ═══════════════════════════════════════════ */
#about{padding:96px var(--gutter);max-width:var(--max);margin:0 auto}

.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:start}
@media(max-width:760px){.about-grid{grid-template-columns:1fr;gap:3rem}}

.about-left h2{margin:.5rem 0 1.25rem}
.about-left p{margin-bottom:1rem}

.about-values{margin-top:2rem;display:flex;flex-direction:column;gap:0;border-top:1px solid var(--rule)}
.about-val{padding:1.125rem 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:2rem 1fr;gap:.875rem;align-items:start}
.about-val-n{font-family:var(--disp);font-size:1rem;letter-spacing:.08em;color:var(--muted);padding-top:.1rem}
.about-val h4{margin-bottom:.2rem}
.about-val p{font-size:.845rem}

/* team */
.about-right h3{font-size:1.0625rem;margin-bottom:1.5rem}
.team-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-bottom:2.5rem}
@media(max-width:420px){.team-grid{grid-template-columns:1fr}}

.team-card{padding:1.375rem;border:1px solid var(--rule);border-radius:var(--r)}
.team-avatar{
  width:44px;height:44px;border-radius:50%;
  background:var(--ink);color:var(--white);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--disp);font-size:1rem;letter-spacing:.04em;
  margin-bottom:.875rem;
}
.team-card h4{font-size:.9rem;margin-bottom:.15rem}
.team-role{font-size:.78rem;color:var(--muted)}

/* testimonials */
.testi-section h3{font-size:1.0625rem;margin-bottom:1.5rem}
.testi-list{display:flex;flex-direction:column;gap:1.25rem}
.testi-card{padding:1.5rem;border:1px solid var(--rule);border-radius:var(--r);background:var(--paper)}
.testi-stars{display:flex;gap:2px;margin-bottom:.875rem}
.testi-stars svg{width:12px;height:12px;fill:var(--ink)}
.testi-quote{font-family:var(--serif);font-style:italic;font-size:1rem;line-height:1.6;color:var(--ink);margin-bottom:1rem}
.testi-attr{display:flex;align-items:center;gap:.75rem;padding-top:.875rem;border-top:1px solid var(--rule)}
.testi-ava{width:32px;height:32px;border-radius:50%;background:var(--ink);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;flex-shrink:0}
.testi-name{font-size:.82rem;font-weight:600;color:var(--black)}
.testi-co{font-size:.75rem;color:var(--muted)}

/* ═══════════════════════════════════════════
   PROCESS BAND (black bg)
   ═══════════════════════════════════════════ */
#process{background:var(--black);padding:80px var(--gutter)}
.proc-wrap{max-width:var(--max);margin:0 auto}
.proc-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:3.5rem;flex-wrap:wrap;gap:2rem}
.proc-head h2{color:var(--white);margin-top:.5rem}
.proc-head p{color:#666;max-width:320px;font-size:.875rem}
.proc-head .eyebrow{color:#444}

.proc-steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--rule-dk)}
@media(max-width:760px){.proc-steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:400px){.proc-steps{grid-template-columns:1fr}}

.proc-step{padding:2rem 1.5rem 2rem 0;border-right:1px solid var(--rule-dk)}
.proc-step:last-child{border-right:none}
@media(max-width:760px){
  .proc-step:nth-child(2){border-right:none}
  .proc-step{border-bottom:1px solid var(--rule-dk)}
  .proc-step:nth-last-child(-n+2){border-bottom:none}
}
.proc-n{font-family:var(--disp);font-size:.9rem;letter-spacing:.12em;color:#333;margin-bottom:1.5rem}
.proc-step h3{color:var(--white);margin-bottom:.5rem}
.proc-step p{font-size:.845rem;color:#666;line-height:1.75}

/* ═══════════════════════════════════════════
   TECH CAROUSEL
   ═══════════════════════════════════════════ */
#tech{background:var(--paper);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:52px 0}
.tech-head{max-width:var(--max);margin:0 auto;padding:0 var(--gutter);margin-bottom:2rem}

.carousel-track-wrap{
  overflow:hidden;
  -webkit-mask:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);
  mask:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);
}
.carousel-track{
  display:flex;gap:1.25rem;
  width:max-content;
  animation:carousel-scroll 28s linear infinite;
}
.carousel-track:hover{animation-play-state:paused}
@keyframes carousel-scroll{
  0%{transform:translateX(0)}
  100%{transform:translateX(-50%)}
}

.carousel-item{
  display:flex;align-items:center;gap:.75rem;
  padding:.875rem 1.5rem;
  background:var(--white);border:1px solid var(--rule);border-radius:4px;
  white-space:nowrap;flex-shrink:0;
  transition:border-color .2s,box-shadow .2s;
  cursor:default;
}
.carousel-item:hover{border-color:var(--black);box-shadow:0 4px 16px rgba(0,0,0,.06)}
.carousel-logo{
  width:32px;height:32px;border-radius:var(--r);
  background:var(--black);color:var(--white);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--disp);font-size:.75rem;letter-spacing:.04em;flex-shrink:0;
}
.carousel-logo-img{width:32px;height:32px;object-fit:contain;flex-shrink:0;}
.carousel-name{font-size:.875rem;font-weight:600;color:var(--black)}

/* ═══════════════════════════════════════════
   CONTACT  (#contact)
   ═══════════════════════════════════════════ */
#contact{padding:96px var(--gutter);max-width:var(--max);margin:0 auto}

.contact-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:5rem;align-items:start}
@media(max-width:860px){.contact-grid{grid-template-columns:1fr;gap:3rem}}

.contact-left h2{margin:.5rem 0 1.125rem}
.contact-left p{margin-bottom:2rem}

.contact-detail{display:flex;flex-direction:column;gap:1.25rem}
.c-detail-item{display:flex;flex-direction:column;gap:.15rem}
.c-detail-label{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.c-detail-val{font-size:.9rem;font-weight:500;color:var(--black)}
.c-detail-val a{color:var(--black);border-bottom:1px solid var(--rule);transition:border-color .2s}
.c-detail-val a:hover{border-color:var(--black)}

/* form */
.form-grid{display:flex;flex-direction:column;gap:1.25rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
@media(max-width:540px){.form-row{grid-template-columns:1fr}}

.field{display:flex;flex-direction:column;gap:.45rem}
.field label{font-size:.78rem;font-weight:600;color:var(--black);letter-spacing:.01em}
.field label .req{color:var(--mid);margin-left:2px;font-weight:400}

.field input,
.field select,
.field textarea{
  font-family:var(--sans);font-size:.9rem;color:var(--ink);
  background:var(--white);border:1px solid var(--rule);border-radius:var(--r);
  padding:.7rem 1rem;width:100%;transition:border-color .2s,box-shadow .2s;
  -webkit-appearance:none;appearance:none;
}
.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--black);box-shadow:0 0 0 3px rgba(10,10,10,.08)}
.field textarea{resize:vertical;min-height:130px;line-height:1.65}

.field-label{font-size:.78rem;font-weight:600;color:var(--black);letter-spacing:.01em}

.checkbox-group{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem;margin-top:.1rem}
@media(max-width:480px){.checkbox-group{grid-template-columns:1fr}}

.checkbox-option{
  display:flex;align-items:center;gap:.6rem;
  font-size:.875rem;color:var(--ink);cursor:pointer;
  padding:.55rem .75rem;border:1px solid var(--rule);border-radius:var(--r);
  transition:border-color .18s,background .18s;user-select:none;
}
.checkbox-option:hover{border-color:var(--black);background:var(--paper)}
.checkbox-option input[type="checkbox"]{position:absolute;opacity:0;width:0;height:0}
.checkbox-option input[type="checkbox"]:focus-visible~.checkbox-box{outline:2px solid var(--black);outline-offset:2px}
.checkbox-box{
  flex-shrink:0;width:16px;height:16px;border:1.5px solid var(--rule);border-radius:2px;
  background:var(--white);transition:background .15s,border-color .15s;
  display:flex;align-items:center;justify-content:center;
}
.checkbox-option input[type="checkbox"]:checked~.checkbox-box{background:var(--black);border-color:var(--black)}
.checkbox-option input[type="checkbox"]:checked~.checkbox-box::after{
  content:'';display:block;width:4px;height:8px;
  border:1.5px solid var(--white);border-top:none;border-left:none;
  transform:rotate(45deg) translate(-1px,-1px);
}
.checkbox-option:has(input:checked){border-color:var(--black);background:var(--paper)}

.field-error{display:none;font-size:.75rem;color:var(--err);font-weight:500;margin-top:-.2rem}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--err)}
.field.invalid .field-error{display:block}

.form-submit{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-top:.5rem}
.form-note{font-size:.78rem;color:var(--muted)}

.form-message{
  display:none;padding:1rem 1.25rem;border-radius:var(--r);margin-top:1rem;font-size:.875rem;font-weight:500;
}
.form-message.success{background:#F0FBF5;border:1px solid #C3E8D1;color:var(--ok)}
.form-message.error{background:#FDF0F0;border:1px solid #F5C6C2;color:var(--err)}
.form-message.show{display:block}

/* spinner */
.spinner{display:none;width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:var(--white);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.btn.loading .btn-label{display:none}
.btn.loading .spinner{display:block}

/* ═══════════════════════════════════════════
   FOOTER
   ═══════════════════════════════════════════ */
footer{background:var(--black);padding:56px var(--gutter) 36px}
.ft-wrap{max-width:var(--max);margin:0 auto}
.ft-top{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:3rem;padding-bottom:3rem;border-bottom:1px solid var(--rule-dk)}
@media(max-width:760px){.ft-top{grid-template-columns:1fr 1fr}}
@media(max-width:440px){.ft-top{grid-template-columns:1fr}}

.ft-logo{font-family:var(--disp);font-size:1.45rem;letter-spacing:.06em;color:var(--white);display:block;margin-bottom:.875rem}
.ft-logo-img{height:24px;width:auto;display:block;margin-bottom:.875rem}
.ft-tagline{font-size:.82rem;color:#555;line-height:1.75;max-width:220px}
.ft-col-title{font-size:.62rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#444;margin-bottom:.875rem}
.ft-col ul{list-style:none;display:flex;flex-direction:column;gap:.5rem}
.ft-col a{font-size:.82rem;color:#555;transition:color .2s}
.ft-col a:hover{color:var(--white)}
.ft-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:2rem;flex-wrap:wrap;gap:1rem;font-size:.75rem;color:#444}
.ft-social{display:flex;gap:1.25rem;align-items:center}
.ft-social a{font-size:.75rem;color:#444;transition:color .2s}
.ft-social a:hover{color:var(--white)}

/* ── LinkedIn logo ── */
.linkedin-link{display:inline-flex;align-items:center;gap:.5rem;transition:opacity .2s}
.linkedin-link:hover{opacity:.7}
.linkedin-logo{width:28px;height:28px;object-fit:contain;display:inline-block;border-bottom:none!important}
.ft-social-linkedin{display:inline-flex;align-items:center;opacity:.7;transition:opacity .2s}
.ft-social-linkedin:hover{opacity:1}
.linkedin-logo-ft{width:20px;height:20px;object-fit:contain;filter:brightness(0) invert(1)}
