:root{
  --cobalt:#1D4BA8;
  --blue-mid:#3F73D1;
  --blue-light:#8FB1EC;
  --bg-pale:#EEF3FC;
  --bg-deep:#0F2C6B;
  --ink:#14213D;
  --ink-soft:#3B4A66;
  --white:#FFFFFF;
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --pad:clamp(20px,5vw,56px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:104px}
body{font:400 16px/1.5 var(--serif);color:var(--ink);background:var(--white);-webkit-font-smoothing:antialiased;
  cursor:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2232%22%20height%3D%2232%22%20viewBox%3D%220%200%2032%2032%22%3E%0A%3Cellipse%20cx%3D%2212%22%20cy%3D%2223%22%20rx%3D%224.6%22%20ry%3D%223.3%22%20transform%3D%22rotate%28-20%2012%2023%29%22%20fill%3D%22%231D4BA8%22%20stroke%3D%22%23fff%22%20stroke-width%3D%221%22%2F%3E%0A%3Cellipse%20cx%3D%2218%22%20cy%3D%2217.5%22%20rx%3D%225.8%22%20ry%3D%224%22%20transform%3D%22rotate%2826%2018%2017.5%29%22%20fill%3D%22%231D4BA8%22%20stroke%3D%22%23fff%22%20stroke-width%3D%221%22%2F%3E%0A%3Ccircle%20cx%3D%2222%22%20cy%3D%229%22%20r%3D%221.5%22%20fill%3D%22%231D4BA8%22%20stroke%3D%22%23fff%22%20stroke-width%3D%22.6%22%2F%3E%0A%3Cpath%20d%3D%22M7%202%20C12%207%2011.5%2014%208.3%2016.8%20C7.4%2017.6%205.9%2017.4%205.2%2016.3%20C2.8%2012.5%202.6%206.3%207%202%20Z%22%20fill%3D%22%231D4BA8%22%20stroke%3D%22%23fff%22%20stroke-width%3D%221.1%22%2F%3E%0A%3C%2Fsvg%3E") 7 3,auto}
img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
[hidden]{display:none!important}

/* ── nav ───────────────────────────────────────────────────────────────── */
.nav{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:16px;padding:14px var(--pad);background:rgba(255,255,255,.9);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(20,33,61,.07);font-family:var(--sans)}
.nav-sheet{font-family:var(--sans)}

.brand{display:flex;align-items:center;gap:14px;justify-self:start}
.brand .mark{width:78px;height:auto}
.wordmark{font-family:var(--serif);font-weight:600;font-size:31px;letter-spacing:.05em;color:var(--cobalt);
  display:flex;flex-direction:column;line-height:1}
.wordmark small{font-family:var(--sans);font-weight:500;font-size:11.5px;letter-spacing:.44em;color:var(--blue-mid);margin-top:6px}

.nav-pill{justify-self:center;display:flex;align-items:center;gap:4px;background:var(--white);
  border:1px solid rgba(20,33,61,.08);border-radius:999px;padding:6px;
  box-shadow:0 14px 34px -20px rgba(20,33,61,.25),inset 0 1px 0 rgba(255,255,255,.9)}
.nav-pill a{font:500 13.5px var(--sans);color:var(--ink-soft);padding:9px 16px;border-radius:999px;
  transition:background .25s,color .25s,transform .3s var(--ease);white-space:nowrap;display:inline-block}
.nav-pill a:hover{background:var(--bg-pale);color:var(--cobalt);transform:scale(1.1)}

.socials{justify-self:end;display:flex;align-items:center;gap:14px}
.socials a{display:inline-flex;width:18px;height:18px;color:var(--ink-soft);transition:color .25s,transform .3s var(--ease)}
.socials a svg{width:100%;height:100%;fill:currentColor}
.socials a:hover{color:var(--cobalt);transform:scale(1.22)}

.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:22px;height:22px;justify-self:end}
.nav-toggle span{height:2px;background:var(--ink);border-radius:2px}

.nav-sheet{position:fixed;inset:76px 16px auto;z-index:49;display:flex;flex-direction:column;gap:2px;
  background:var(--white);border-radius:16px;padding:14px;box-shadow:0 24px 60px -20px rgba(20,33,61,.3);
  border:1px solid rgba(20,33,61,.08)}
.nav-sheet a{padding:13px 12px;font:500 15px var(--sans);color:var(--ink);border-radius:10px}
.nav-sheet a:hover{background:var(--bg-pale)}
.nav-sheet-socials{display:flex;gap:18px;padding:14px 12px 4px}
.nav-sheet-socials a{display:inline-flex;width:20px;height:20px;padding:0;color:var(--ink-soft)}
.nav-sheet-socials a svg{width:100%;height:100%;fill:currentColor}

@media (max-width:860px){
  .nav-pill,.socials{display:none}
  .nav-toggle{display:flex}
  .nav{grid-template-columns:1fr auto}
}

/* ── hero: scroll-drawn gzhel ornament ───────────────────────────────────── */
.hero-wrap{position:relative;height:340svh}
.hero-stage{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--white);
  display:flex;align-items:center;justify-content:center}
.hero-text{position:relative;z-index:1;text-align:center;padding:0 24px;opacity:0}
.hero-text h1{font-family:var(--serif);font-weight:600;color:var(--cobalt);
  font-size:clamp(32px,5.6vw,72px);line-height:1.2;max-width:28ch;margin:0 auto}

.scroll-hint{position:fixed;left:50%;bottom:36px;transform:translateX(-50%);z-index:45;
  display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--cobalt);
  pointer-events:none;transition:opacity .4s ease}
.scroll-hint span{font:600 11px var(--serif);letter-spacing:.24em;text-transform:uppercase}
.scroll-hint svg{width:14px;height:21px;animation:scroll-hint-bob 1.8s ease-in-out infinite}
@keyframes scroll-hint-bob{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(7px)}
}

/* ── hero flowers: painted gzhel frames, crossfaded by scroll ───────────── */
.flower-field{position:absolute;inset:0;z-index:0}
.flower-slot{position:absolute;top:0;left:0;width:200px}
.f-frame{position:absolute;top:0;left:0;width:100%;height:auto;display:block;opacity:0}
.f-petal{position:absolute;top:0;left:0;width:60px;height:auto;opacity:0;pointer-events:none}

/* ── hero-bud: a big interactive gzhel rose head, centered, real layered
   depth (not one flat tilting photo) - drag/rotate it, shake it and
   petals fly off ───────────────────────────────────────────────────── */
.hero-bud{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(34vw,380px);z-index:2;perspective:1400px;cursor:grab;
  touch-action:none;-webkit-user-select:none;user-select:none}
.hero-bud:active{cursor:grabbing}
.hero-bud-3d{position:relative;width:100%;aspect-ratio:375/344;
  transform-style:preserve-3d;will-change:transform}
.hero-bud-img{position:absolute;inset:0;width:100%;height:100%;display:block;
  pointer-events:none;object-fit:contain;backface-visibility:hidden}
/* three copies of the same painting at different depths/treatments - under
   perspective, rotating the group shifts them against each other, reading
   as a solid object with volume instead of a card being tilted */
.hero-bud-layer-back{transform:translateZ(-42px) scale(1.09);
  filter:brightness(.62) saturate(1.1) blur(2.5px)}
.hero-bud-layer-mid{transform:translateZ(-16px) scale(1.035);
  filter:brightness(.82) blur(.5px)}
.hero-bud-layer-front{transform:translateZ(0);
  filter:drop-shadow(0 4px 10px rgba(20,33,61,.25))}
.hero-bud-layer-front::after{content:'';position:absolute;inset:0;
  background:radial-gradient(circle at var(--hl-x,32%) var(--hl-y,24%),
    rgba(255,255,255,.55),rgba(255,255,255,0) 42%);
  mix-blend-mode:overlay;pointer-events:none}
.hero-bud-petals{position:absolute;inset:0;pointer-events:none;overflow:visible}
.hero-bud-petal{position:absolute;top:40%;left:50%;width:54px;height:auto;
  opacity:0;will-change:transform,opacity}

/* ground cues: a soft contact shadow that shifts opposite the tilt (like a
   real object under light) and a dashed turntable ring, so the whole thing
   reads as "an object sitting here, nudge it" before anyone touches it */
.hero-bud-shadow{position:absolute;left:50%;bottom:-6%;width:72%;height:16%;
  transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(ellipse at center,rgba(20,33,61,.32),rgba(20,33,61,0) 72%);
  filter:blur(2px);will-change:transform;transition:transform .12s linear}
.hero-bud-ring{position:absolute;left:50%;bottom:-8%;width:88%;height:20%;
  transform:translateX(-50%) rotateX(72deg);border-radius:50%;
  border:1.5px dashed rgba(29,75,168,.28);pointer-events:none}
.hero-bud-hint{position:absolute;left:50%;bottom:-17%;transform:translateX(-50%);
  font:600 11.5px var(--serif);letter-spacing:.14em;text-transform:uppercase;
  color:var(--cobalt);opacity:.6;white-space:nowrap;pointer-events:none;
  transition:opacity .5s ease}
.hero-bud-hint.is-hidden{opacity:0}

@media (max-width:860px){
  .hero-wrap{height:300svh}
  .scroll-hint{bottom:24px}
  .hero-bud{width:min(52vw,280px)}
  .hero-bud-hint{font-size:10.5px}
}

/* ── falling petals: fixed overlay, bridges hero → problem, above everything ── */
.fallen-overlay{position:fixed;inset:0;z-index:40;pointer-events:none;opacity:0}
.fallen-motif{position:absolute;top:0;left:0;width:200px;height:auto;display:block}

/* ── problem: gzhel plate with cycling text ──────────────────────────────── */
.problem-wrap{position:relative;height:480svh}
.problem-stage{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--white);
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:clamp(14px,3svh,28px);
  padding-top:112px;box-sizing:border-box}
.problem-heading{position:relative;text-align:center;z-index:2;flex:none;
  font-family:var(--serif);font-weight:600;font-style:italic;letter-spacing:.01em;
  font-size:clamp(28px,4vw,44px);color:var(--ink)}
.plate-3d{position:relative;flex:none;width:min(94vw,calc(86svh - 100px),960px);height:min(94vw,calc(86svh - 100px),960px);perspective:1700px}
.plate{position:relative;width:100%;height:100%;transform-style:preserve-3d;
  display:flex;align-items:center;justify-content:center}
.plate-photo{position:absolute;inset:3%;width:94%;height:94%;border-radius:50%;
  object-fit:cover;transform:translateZ(16px);
  box-shadow:0 46px 100px -34px rgba(20,33,61,.45),0 0 0 1px rgba(20,33,61,.07),
    0 3px 16px rgba(255,255,255,.6) inset}
.plate-inner{position:relative;z-index:1;width:60%;transform:translateZ(30px)}
.problem-slide{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;opacity:0;padding:0 6px}
.p-eyebrow{position:relative;display:inline-flex;align-items:center;gap:8px;
  font:800 13.5px var(--serif);letter-spacing:.16em;text-transform:uppercase;color:var(--cobalt)}
.problem-slide h3{font-family:var(--serif);font-weight:700;font-style:italic;color:var(--ink);
  font-size:clamp(23px,3.1vw,36px);line-height:1.22;margin:6px 0 14px}
.problem-slide ul{display:grid;gap:10px;text-align:left;font-size:16px;font-weight:700;line-height:1.42;
  color:var(--ink);list-style:none}
.problem-slide li{position:relative;padding-left:22px}
.problem-slide li::before{content:"";position:absolute;left:0;top:3px;width:15px;height:20px;
  background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2214%22%20height%3D%2219%22%20viewBox%3D%220%200%2014%2019%22%3E%0A%3Cpath%20d%3D%22M7%201c4.2%200%206.3%207.3%204.1%2012.4-1.1%202.3-4.4%202.3-5.5%200C3.4%2010.3%203.3%201%207%201z%22%20fill%3D%22%231D4BA8%22%2F%3E%0A%3C%2Fsvg%3E") center/contain no-repeat}

@media (max-width:860px){
  .problem-wrap{height:460svh}
  .problem-stage{justify-content:center;padding-top:96px}
  .plate-3d{width:min(94vw,calc(80svh - 70px),620px);height:min(94vw,calc(80svh - 70px),620px)}
  /* the plate takes up almost the full width here, leaving no room to pack
     these beside it without overlapping - simplest to drop them on mobile */
  .fallen-overlay{display:none}
  /* the clean (border-free) disc inside the plate art measures ~61% of
     this box's width at its vertical middle, and less the further a line
     sits above/below that - the heading is the line furthest from center,
     so it needs the most conservative width of anything in here */
  .plate-inner{width:48%}
  .p-eyebrow{font-size:11px}
  .problem-slide h3{font-size:clamp(13px,3.4vw,16px);margin:4px 0 10px;max-width:94%;margin-left:auto;margin-right:auto}
  .problem-slide ul{font-size:12px;line-height:1.36;gap:6px}
  .problem-slide li{padding-left:18px}
  .problem-slide li::before{width:12px;height:16px}
}

/* ── solution: a gzhel vine winds down the section, text blooms along it ── */
.solution-wrap{position:relative;background:var(--white);padding-bottom:60px}
.solution-head{max-width:640px;margin:0 auto;padding:96px 24px 0;text-align:center}
.solution-head .eyebrow{font:600 11.5px var(--serif);letter-spacing:.2em;text-transform:uppercase;color:var(--blue-mid)}
.solution-head h2{font-family:var(--serif);font-weight:600;font-style:italic;color:var(--cobalt);
  font-size:clamp(36px,6.4vw,68px);line-height:1.12;letter-spacing:.005em;margin:12px 0 16px}
.solution-head .lead{font-size:18px;font-weight:600;color:var(--ink);line-height:1.5;margin-bottom:8px}
.solution-head .why{font-size:15.5px;font-weight:500;color:var(--ink-soft);opacity:1;max-width:52ch;margin:0 auto}

.vine-wrap{position:relative;max-width:860px;margin:40px auto 0;padding:0 var(--pad)}
.vine-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.vine-path{stroke:var(--cobalt);stroke-width:3;fill:none;stroke-linecap:round;opacity:.5}
.vine-point{position:relative;display:flex;align-items:center;gap:30px;min-height:230px}
.vine-point[data-side="right"]{flex-direction:row-reverse;text-align:right}
.vine-accent{width:92px;height:auto;flex:none;color:var(--cobalt)}
.vine-accent use{fill:currentColor}
.vine-text{max-width:280px}
.vine-text b{display:block;font-family:var(--serif);font-weight:700;font-style:italic;color:var(--cobalt);
  font-size:25px;margin-bottom:8px}
.vine-text span{display:block;font-size:15.5px;font-weight:600;line-height:1.48;color:var(--ink)}

@media (max-width:860px){
  .solution-head{padding-top:88px}
  .solution-head h2{font-size:clamp(26px,7vw,36px)}
  .solution-head .lead{font-size:13.5px;margin-bottom:0}
  .solution-head .why{display:none}
  .vine-wrap{margin-top:24px;padding:0 20px}
  .vine-point,.vine-point[data-side="right"]{flex-direction:column;text-align:center;gap:14px;min-height:190px}
  .vine-accent{width:68px}
  .vine-text{max-width:300px}
  .vine-text b{font-size:20px}
  .vine-text span{font-size:14px}
}

/* ── shared section header, used by portfolio/team/services/faq ───────── */
.section-head{max-width:640px;margin:0 auto;padding:96px var(--pad) 48px;text-align:center}
.section-head .eyebrow{font:600 11.5px var(--serif);letter-spacing:.2em;text-transform:uppercase;color:var(--blue-mid)}
.section-head h2{font-family:var(--serif);font-weight:600;font-style:italic;color:var(--cobalt);
  font-size:clamp(36px,6vw,64px);line-height:1.12;letter-spacing:.005em;margin:12px 0 16px}
.section-head .lead{font-size:17.5px;font-weight:600;color:var(--ink);line-height:1.5}

/* ── portfolio ───────────────────────────────────────────────────────── */
.portfolio-wrap{background:var(--white)}
.port-filters{max-width:1240px;margin:0 auto;padding:0 var(--pad) 24px;
  display:flex;flex-wrap:wrap;align-items:center;gap:18px}
.port-filters label{display:flex;flex-direction:column;gap:6px;font:700 11.5px var(--serif);
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.port-filters select{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;overflow:hidden}
.cs-wrap{position:relative}
.cs-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
  font:700 14.5px var(--serif);color:var(--ink);padding:10px 13px;border-radius:5px;
  border:1.5px solid rgba(29,75,168,.28);background:var(--white);min-width:170px;
  cursor:pointer;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.cs-trigger:hover{border-color:var(--cobalt)}
.cs-trigger.is-open{border-color:var(--cobalt);box-shadow:0 0 0 3px rgba(29,75,168,.12)}
.cs-trigger svg{width:10px;height:6px;flex:none;color:var(--cobalt);transition:transform .2s var(--ease)}
.cs-trigger.is-open svg{transform:rotate(180deg)}
.cs-options{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:20;
  background:var(--white);border:1px solid rgba(29,75,168,.18);border-radius:8px;
  box-shadow:0 20px 44px -18px rgba(20,33,61,.35);padding:6px;max-height:260px;overflow-y:auto}
.cs-options[hidden]{display:none}
.cs-option{font:600 14px var(--serif);color:var(--ink);padding:9px 11px;border-radius:5px;cursor:pointer;
  transition:background .15s var(--ease),color .15s var(--ease)}
.cs-option:hover,.cs-option.is-active{background:var(--bg-pale);color:var(--cobalt)}
.port-count{margin-left:auto;font-size:13.5px;font-weight:600;color:var(--blue-mid);align-self:flex-end;padding-bottom:4px}
.portfolio-grid{max-width:1240px;margin:0 auto;padding:0 var(--pad) 40px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:22px}
.port-card.is-hidden{display:none}
.port-more-wrap{text-align:center;padding:0 var(--pad) 96px}
.port-more{font:600 13.5px var(--serif);color:var(--cobalt);background:var(--bg-pale);
  border:1px solid rgba(29,75,168,.2);border-radius:999px;padding:11px 26px;cursor:pointer;
  transition:background .25s var(--ease),color .25s var(--ease)}
.port-more:hover{background:var(--cobalt);color:var(--white)}
.port-more[hidden]{display:none}
.port-card{background:var(--white);border:1px solid rgba(29,75,168,.16);border-radius:4px;
  padding:10px;display:flex;flex-direction:column;position:relative;overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.port-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--cobalt),var(--blue-light),var(--cobalt));opacity:.6}
.port-card:hover{transform:translateY(-4px);box-shadow:0 20px 40px -24px rgba(20,33,61,.35)}
.port-avatar{display:block;aspect-ratio:1.1/1;border-radius:3px;overflow:hidden;background:var(--bg-pale);
  margin-bottom:12px;cursor:pointer}
.port-avatar.no-link{cursor:default}
.port-avatar img{width:100%;height:100%;object-fit:contain;padding:14px;background:var(--white)}
.port-mono{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,var(--cobalt),var(--bg-deep))}
.port-mono span{font-family:var(--serif);font-weight:600;font-style:italic;color:var(--white);font-size:42px}
.port-body{padding:2px 6px 8px}
.port-cat{display:block;font:600 10px var(--serif);letter-spacing:.1em;text-transform:uppercase;color:var(--blue-mid)}
.port-body h3{font-family:var(--serif);font-weight:600;color:var(--ink);font-size:18px;margin:4px 0 6px}
.port-body p{font-size:13.5px;font-weight:500;line-height:1.48;color:var(--ink-soft)}

/* ── team ────────────────────────────────────────────────────────────── */
.team-wrap{background:var(--white)}
.team-grid{max-width:1100px;margin:0 auto;padding:0 var(--pad) 100px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:30px;text-align:center}
.team-card{display:flex;flex-direction:column;align-items:center}
.team-photo{width:140px;height:140px;border-radius:50%;overflow:hidden;margin-bottom:16px;
  border:3px solid var(--white);box-shadow:0 0 0 2px var(--cobalt),0 16px 32px -18px rgba(20,33,61,.4);
  position:relative}
.team-photo img{width:100%;height:100%;object-fit:cover;transition:filter .45s var(--ease);
  filter:grayscale(.85) sepia(.25) hue-rotate(175deg) saturate(2.6) brightness(1.03) contrast(1.02)}
.team-photo:hover img{filter:none}
.team-card h3{font-family:var(--serif);font-weight:600;font-style:italic;color:var(--ink);font-size:18px}
.team-role{display:block;font:600 10.5px var(--serif);letter-spacing:.08em;text-transform:uppercase;
  color:var(--blue-mid);margin:4px 0 8px}
.team-card p{font-size:13.5px;font-weight:500;line-height:1.5;color:var(--ink-soft);max-width:28ch}

/* ── team: verification widget ──────────────────────────────────────── */
.verify-box{position:relative;overflow:hidden;max-width:620px;margin:16px auto 100px;padding:38px var(--pad);
  background:var(--bg-pale);border-radius:10px;text-align:center;
  box-shadow:inset 0 0 0 1px rgba(29,75,168,.16),inset 0 0 0 6px var(--white),inset 0 0 0 7px rgba(29,75,168,.12)}
.verify-box>*{position:relative;z-index:1}
.verify-sprig{position:absolute;width:110px;height:auto;color:var(--cobalt);opacity:.12;
  pointer-events:none;z-index:0}
.verify-sprig use{fill:currentColor}
.verify-sprig.tl{top:-6px;left:-10px}
.verify-sprig.br{bottom:-6px;right:-10px;transform:scale(-1,-1)}
.verify-eyebrow{display:inline-flex;align-items:center;gap:7px;
  font:600 11px var(--serif);letter-spacing:.2em;text-transform:uppercase;color:var(--blue-mid)}
.verify-eyebrow svg{width:13px;height:13px;flex:none}
.verify-box h3{font-family:var(--serif);font-weight:600;font-style:italic;color:var(--cobalt);
  font-size:clamp(20px,2.6vw,26px);margin:8px 0 10px}
.verify-flourish{width:28px;height:10px;margin:0 auto 14px;color:var(--blue-light)}
.verify-flourish svg{width:100%;height:100%;display:block}
.verify-lead{font-size:14.5px;font-weight:500;color:var(--ink-soft);line-height:1.5;max-width:48ch;margin:0 auto 20px}
.verify-tabs{display:flex;gap:8px;justify-content:center;margin-bottom:14px}
.verify-tab{font:600 12.5px var(--serif);color:var(--ink-soft);background:var(--white);
  border:1px solid rgba(29,75,168,.2);border-radius:999px;padding:8px 18px;cursor:pointer;
  transition:background .25s var(--ease),color .25s var(--ease)}
.verify-tab.active{background:var(--cobalt);color:var(--white);border-color:var(--cobalt)}
.verify-row{display:flex;gap:10px;max-width:420px;margin:0 auto}
.verify-row input{flex:1;font:400 14px var(--serif);color:var(--ink);padding:10px 12px;
  border:1px solid rgba(29,75,168,.22);border-radius:6px;background:var(--white)}
.verify-row button{font:600 13.5px var(--serif);color:var(--white);background:var(--cobalt);
  border:none;border-radius:6px;padding:10px 18px;cursor:pointer;transition:background .25s var(--ease)}
.verify-row button:hover{background:var(--bg-deep)}
.verify-result{margin-top:18px;min-height:0}
.verify-result:empty{margin-top:0}
.verify-card{display:flex;align-items:center;gap:14px;background:var(--white);border-radius:8px;
  padding:14px 16px;text-align:left}
.verify-card img{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none}
.verify-card .vc-name{font-family:var(--serif);font-weight:600;font-style:italic;color:var(--ink);font-size:15px}
.verify-card .vc-handle{font-size:12px;color:var(--blue-mid);margin-top:2px}
.verify-not-found{font-size:13px;color:#B0472E;background:var(--white);border-radius:8px;padding:14px 16px}

/* ── services / what's included ─────────────────────────────────────── */
.services-wrap{background:var(--white)}
.services-grid{max-width:1180px;margin:0 auto;padding:0 var(--pad) 40px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}
@media (min-width:861px){
  .services-grid{grid-template-columns:repeat(3,1fr)}
}
.svc-last-row{grid-column:1/-1;display:flex;justify-content:center;gap:20px}
.svc-last-row .svc-card{flex:1 1 0;max-width:calc((100% - 40px) / 3)}
.svc-card{background:var(--white);border-radius:4px;padding:30px 26px 26px;position:relative;
  overflow:hidden;border:1px solid rgba(29,75,168,.16);
  box-shadow:inset 0 0 0 1px rgba(29,75,168,.05);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.svc-card:hover{transform:translateY(-4px);box-shadow:0 20px 40px -24px rgba(20,33,61,.3)}
.svc-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--cobalt),var(--blue-light),var(--cobalt));opacity:.55}
.svc-card>*{position:relative;z-index:1}
.svc-sprig{position:absolute;width:58px;height:auto;color:var(--cobalt);opacity:.2;
  pointer-events:none;z-index:0}
.svc-sprig use{fill:currentColor}
.svc-sprig.tl{top:-10px;left:-16px}
.svc-sprig.br{bottom:-10px;right:-16px;transform:scale(-1,-1)}
.svc-flourish{width:26px;height:10px;margin-bottom:10px;color:var(--blue-light)}
.svc-flourish svg{width:100%;height:100%;display:block}
.svc-card h3{font-family:var(--serif);font-weight:600;color:var(--cobalt);font-size:19px;margin:6px 0 12px;
  padding-bottom:10px;border-bottom:1px solid rgba(29,75,168,.12)}
.svc-card ul{display:grid;gap:8px;font-size:14.5px;font-weight:600;line-height:1.48;color:var(--ink);list-style:none}
.svc-card li{padding-left:14px;position:relative}
.svc-card li::before{content:"";position:absolute;left:0;top:7px;width:5px;height:5px;border-radius:50%;
  background:var(--cobalt)}
.free-stage{position:relative;overflow:hidden;max-width:1180px;margin:16px auto 96px;padding:36px var(--pad);
  background:linear-gradient(155deg,var(--cobalt),var(--bg-deep));border-radius:6px;color:var(--white);
  text-align:center;box-shadow:0 30px 60px -30px rgba(15,44,107,.5)}
.free-stage>*{position:relative;z-index:1}
.free-sprig{position:absolute;width:150px;height:auto;color:var(--white);opacity:.1;pointer-events:none;z-index:0}
.free-sprig use{fill:currentColor}
.free-sprig.tl{top:-24px;left:-20px}
.free-sprig.br{bottom:-24px;right:-20px;transform:scale(-1,-1)}
.free-flourish{width:30px;height:11px;margin:0 auto 12px;color:var(--blue-light)}
.free-flourish svg{width:100%;height:100%;display:block}
.free-stage h3{font-family:var(--serif);font-weight:600;font-style:italic;font-size:22px;margin-bottom:10px}
.free-stage p{font-size:15.5px;font-weight:500;line-height:1.5;opacity:.95;max-width:62ch;margin:0 auto}

/* ── faq ─────────────────────────────────────────────────────────────── */
.faq-wrap{background:var(--white)}
.faq-layout{max-width:1100px;margin:0 auto;padding:0 var(--pad) 110px;
  display:grid;grid-template-columns:1.3fr 1fr;gap:56px;align-items:start}
.faq-item{border-bottom:1px solid rgba(29,75,168,.14);padding:16px 0}
.faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  font:600 15px var(--serif);color:var(--ink);gap:12px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-chev{width:9px;height:9px;border-right:1.5px solid var(--cobalt);border-bottom:1.5px solid var(--cobalt);
  transform:rotate(45deg);transition:transform .25s var(--ease);flex:none}
.faq-item[open] .faq-chev{transform:rotate(-135deg)}
.faq-item p{font-size:14.5px;font-weight:500;line-height:1.55;color:var(--ink-soft);margin-top:12px;max-width:62ch}
.faq-item p a{color:var(--cobalt);text-decoration:underline}
.faq-apply{background:var(--bg-pale);border-radius:8px;padding:28px 26px;position:sticky;top:120px}
.faq-apply h3{font-family:var(--serif);font-weight:600;font-size:21px;color:var(--cobalt);margin-bottom:6px}
.faq-apply>p{font-size:14px;font-weight:500;color:var(--ink-soft);margin-bottom:16px}
.apply-form{display:grid;gap:12px}
.apply-form label{display:grid;gap:5px;font:600 11px var(--serif);letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink-soft)}
.apply-form input,.apply-form textarea{font:400 14px var(--serif);color:var(--ink);
  border:1px solid rgba(29,75,168,.22);border-radius:5px;padding:9px 11px;background:var(--white);
  resize:vertical}
.apply-form input:focus,.apply-form textarea:focus{outline:2px solid var(--blue-light);outline-offset:1px}
.apply-form button{margin-top:4px;background:var(--cobalt);color:var(--white);border:none;border-radius:5px;
  padding:12px;font:600 14px var(--serif);cursor:pointer;transition:background .25s var(--ease)}
.apply-form button:hover{background:var(--bg-deep)}
.form-note{font-size:12px;color:var(--blue-mid);min-height:14px}

/* ── form result banner + field errors ─────────────────────────────────── */
.apply-form .field-error{display:flex;align-items:center;gap:7px;font:italic 600 15px/1.2 var(--serif);letter-spacing:0;text-transform:none;color:#A8323A}
.apply-form .field-error::before{content:"";flex:none;width:13px;height:13px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='%23A8323A'%3E%3Ccircle cx='12' cy='7.2' r='3.1'/%3E%3Ccircle cx='16.8' cy='10' r='3.1'/%3E%3Ccircle cx='15' cy='15.6' r='3.1'/%3E%3Ccircle cx='9' cy='15.6' r='3.1'/%3E%3Ccircle cx='7.2' cy='10' r='3.1'/%3E%3C/g%3E%3Ccircle cx='12' cy='11.3' r='2.3' fill='%23fff'/%3E%3Ccircle cx='12' cy='11.3' r='1' fill='%23A8323A'/%3E%3C/svg%3E") center/contain no-repeat}
.apply-form .checkbox-field + .field-error{margin-top:-6px}
.apply-form input[aria-invalid="true"],.apply-form textarea[aria-invalid="true"],.apply-form select[aria-invalid="true"]{border-color:#A8323A!important;box-shadow:0 0 0 3px rgba(168,50,58,.12)}
.apply-form input[type="checkbox"][aria-invalid="true"]{outline:2px solid #A8323A;outline-offset:1px;box-shadow:none}
.apply-form .req{font-style:normal;font-weight:600;color:var(--cobalt);margin-left:2px}
.apply-form .opt{text-transform:none;font-weight:500;letter-spacing:0;color:var(--ink-soft)}
.fm-overlay{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(15,44,107,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity .22s var(--ease)}
.fm-overlay.is-open{opacity:1}
.fm-card{position:relative;overflow:hidden;width:min(440px,100%);padding:44px 32px 30px;text-align:center;background:var(--white);
  border:1px solid rgba(29,75,168,.22);border-radius:22px;box-shadow:0 30px 70px -24px rgba(15,44,107,.55);
  transform:translateY(14px) scale(.97);transition:transform .3s var(--ease)}
.fm-overlay.is-open .fm-card{transform:none}
.fm-flower{position:absolute;left:-26px;top:-22px;transform:scaleX(-1);width:130px;opacity:.16;pointer-events:none}
.fm-close{position:absolute;right:14px;top:10px;z-index:1;width:34px;height:34px;font:400 28px/1 var(--serif);color:var(--ink-soft);border-radius:50%}
.fm-close:hover{background:var(--bg-pale);color:var(--cobalt)}
.fm-icon{position:relative;z-index:1;width:92px;height:92px;margin:0 auto 14px;filter:drop-shadow(0 8px 14px rgba(29,75,168,.18))}
.fm-icon svg{width:100%;height:100%}
.fm-card[data-kind="error"] .fm-icon{filter:drop-shadow(0 8px 14px rgba(168,50,58,.16))}
.fm-card h3{position:relative;z-index:1;font:600 clamp(26px,4vw,32px)/1.15 var(--serif);color:var(--cobalt);margin-bottom:10px}
.fm-card[data-kind="error"] h3{color:var(--ink)}
.fm-card p{position:relative;z-index:1;font:500 17px/1.45 var(--serif);color:var(--ink-soft)}
.fm-actions{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:24px}
.fm-btn{min-width:150px;padding:12px 28px;background:var(--cobalt);color:var(--white);border-radius:5px;font:600 15px var(--serif);letter-spacing:.03em;transition:background .2s}
.fm-btn:hover{background:var(--bg-deep)}
.fm-link{font:600 15px var(--serif);color:var(--cobalt);text-decoration:underline;text-underline-offset:3px}
.fm-link[hidden]{display:none}
@media (prefers-reduced-motion:reduce){.fm-overlay,.fm-card{transition:none}}
/* honeypot: off-screen (not display:none, so simple bots still fill it in) */
.hp-field{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}

/* ── footer ──────────────────────────────────────────────────────────── */
.site-footer{position:relative;overflow:hidden;background:var(--bg-deep);color:var(--white);padding:72px var(--pad) 0;
  font-family:var(--sans)}
.footer-top{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;
  padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.14)}
.site-footer .wordmark{color:var(--white)}
.site-footer .wordmark small{color:var(--blue-light)}
.footer-tag{font-size:13px;color:var(--blue-light);margin-top:10px;max-width:34ch;line-height:1.5}
.footer-brand-row{display:flex;align-items:center;gap:11px}
.footer-mark{width:30px;height:auto;filter:brightness(0) invert(1);opacity:.92}
.footer-socials{margin-top:16px;gap:14px}
.footer-socials a{color:var(--blue-light);width:18px;height:18px}
.footer-socials a:hover{color:var(--white)}
.footer-col h4{font:600 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--blue-light);
  margin-bottom:14px}
.footer-col a{display:block;font-size:13.5px;color:rgba(255,255,255,.82);padding:5px 0}
.footer-col a:hover{color:var(--white)}
.footer-col--two-col .footer-col-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.newsletter-form{display:flex;gap:8px;margin-top:4px}
.newsletter-form input{flex:1;font:400 13.5px var(--sans);padding:9px 11px;border-radius:5px;border:1px solid rgba(255,255,255,.25);
  background:rgba(255,255,255,.06);color:var(--white)}
.newsletter-form input::placeholder{color:rgba(255,255,255,.45)}
.newsletter-form button{width:38px;border:none;border-radius:5px;background:var(--blue-mid);color:var(--white);
  font-size:16px;cursor:pointer;transition:background .25s var(--ease)}
.newsletter-form button:hover{background:var(--blue-light)}
.legal-block{max-width:1180px;margin:0 auto;padding:28px 0;border-bottom:1px solid rgba(255,255,255,.14)}
.legal-block summary{cursor:pointer;font:600 13px var(--sans);letter-spacing:.06em;text-transform:uppercase;
  color:var(--blue-light);list-style:none}
.legal-block summary::-webkit-details-marker{display:none}
.legal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:22px}
.legal-grid h4{font:600 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--blue-light);
  margin-bottom:8px}
.legal-grid p{font-size:12px;line-height:1.6;color:rgba(255,255,255,.72)}
.legal-grid a{color:var(--white);text-decoration:underline}
.footer-bottom{max-width:1180px;margin:0 auto;padding:22px 0;font-size:12px;color:rgba(255,255,255,.5)}

/* ── cookie consent ──────────────────────────────────────────────────── */
.cookie-banner{position:fixed;left:20px;right:20px;bottom:20px;max-width:560px;z-index:80;
  background:var(--white);border-radius:10px;padding:18px 20px;
  box-shadow:0 24px 60px -20px rgba(20,33,61,.4);display:flex;flex-wrap:wrap;gap:14px;align-items:center;
  transform:translateY(0);transition:transform .4s var(--ease),opacity .4s var(--ease)}
.cookie-banner[hidden]{display:none}
.cookie-banner p{font-size:14px;font-weight:500;color:var(--ink-soft);flex:1;min-width:220px}
.cookie-actions{display:flex;gap:10px}
.cookie-btn{font:600 13px var(--serif);padding:9px 16px;border-radius:6px;border:none;cursor:pointer;
  background:var(--cobalt);color:var(--white);transition:background .25s var(--ease)}
.cookie-btn:hover{background:var(--bg-deep)}
.cookie-btn.ghost{background:transparent;color:var(--ink-soft);border:1px solid rgba(29,75,168,.25)}

@media (max-width:860px){
  .faq-layout{grid-template-columns:1fr}
  .faq-apply{position:static}
  .footer-top{grid-template-columns:1fr;gap:32px}
  .legal-grid{grid-template-columns:1fr;gap:20px}
  .team-photo{width:112px;height:112px}
  .port-filters{gap:12px}
  .port-count{margin-left:0;align-self:flex-start}
  .verify-row{flex-direction:column}
  /* display:contents drops the wrapper's own box, but the descendant
     selector below still matched its cards and kept squeezing them to a
     third of the row width meant for the desktop 3-column grid */
  .svc-last-row{display:contents}
  .svc-last-row .svc-card{max-width:none;flex:none}
}

/* ── custom form controls, used everywhere an <input>/<textarea>/button appears ─ */
.apply-form input,
.apply-form textarea,
.verify-row input{
  appearance:none;-webkit-appearance:none;background:var(--bg-pale);
  border:1.5px solid rgba(29,75,168,.24);border-radius:7px;
  padding:11px 13px;font:600 15px var(--serif);color:var(--ink);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease)}
.apply-form input::placeholder,
.apply-form textarea::placeholder,
.verify-row input::placeholder{color:var(--ink-soft);opacity:.75;font-weight:500}
.apply-form input:focus,
.apply-form textarea:focus,
.verify-row input:focus{
  outline:none;border-color:var(--cobalt);background:var(--white);
  box-shadow:0 0 0 3px rgba(29,75,168,.14)}
.apply-form textarea{resize:vertical}
.apply-form select{
  appearance:none;-webkit-appearance:none;background:var(--bg-pale)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%231d4ba8' stroke-width='2'%3E%3Cpath d='M5 8l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 12px center;
  background-size:16px;border:1.5px solid rgba(29,75,168,.24);border-radius:7px;
  padding:11px 36px 11px 13px;font:600 15px var(--serif);color:var(--ink);cursor:pointer;
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease),background-color .25s var(--ease)}
.apply-form select:focus{outline:none;border-color:var(--cobalt);background-color:var(--white);
  box-shadow:0 0 0 3px rgba(29,75,168,.14)}
.apply-form .checkbox-field{display:flex;flex-direction:row;align-items:flex-start;gap:9px;
  font:500 16px/1.3 var(--serif);letter-spacing:0;text-transform:none;color:var(--ink)}
.apply-form .checkbox-field input[type="checkbox"]{appearance:auto;-webkit-appearance:auto;
  width:18px;height:18px;flex:none;margin-top:1px;padding:0;background:none;border:1.5px solid rgba(29,75,168,.4);
  accent-color:var(--cobalt);cursor:pointer}
.newsletter-form input{border:1px solid rgba(255,255,255,.3);border-bottom:1px solid rgba(255,255,255,.3);
  border-radius:5px;padding:9px 11px;background:rgba(255,255,255,.06);color:var(--white);
  font-family:var(--sans);font-weight:500}
.newsletter-form input:focus{border-color:var(--blue-light);box-shadow:none}

.apply-form button,
.newsletter-form button,
.verify-row button,
.port-more,
.cookie-btn{
  position:relative;letter-spacing:.03em;transition:transform .25s var(--ease),background .25s var(--ease),
    box-shadow .25s var(--ease)}
.apply-form button:hover,
.verify-row button:hover{transform:translateY(-1px);box-shadow:0 10px 20px -10px rgba(29,75,168,.5)}
.port-more:hover{transform:translateY(-1px)}

/* ── gzhel branch decor, scattered sitewide so flat sections don't read as
   generic cards-on-a-page — low-opacity corner flourishes behind the
   content, reusing the same traced motifs as the hero/problem/solution ── */
.portfolio-wrap,.team-wrap,.faq-wrap{position:relative;overflow:hidden}
.section-decor{position:absolute;width:150px;height:auto;opacity:.1;color:var(--cobalt);
  pointer-events:none;z-index:0}
.section-decor svg{width:100%;height:100%;display:block}
.section-decor use{fill:currentColor}
.section-decor.tl{top:10px;left:-20px}
.section-decor.tr{top:10px;right:-20px;transform:scaleX(-1)}
.section-decor.bl{bottom:10px;left:-20px;transform:scaleY(-1)}
.section-decor.br{bottom:10px;right:-20px;transform:scale(-1,-1)}
.section-head,.port-filters,.portfolio-grid,.port-more-wrap,
.team-grid,.verify-box,.faq-layout{position:relative;z-index:1}
.footer-decor{position:absolute;width:220px;height:auto;opacity:.14;color:var(--blue-light);
  pointer-events:none;z-index:0;bottom:-20px;right:0}
.footer-decor svg{width:100%;height:100%;display:block}
.footer-decor use{fill:currentColor}
.footer-top,.legal-block,.footer-bottom{position:relative;z-index:1}

@media (max-width:860px){
  .section-decor{width:86px}
  .footer-decor{width:130px}
}

/* ── reveal-on-scroll: fade/rise in once an element enters the viewport,
   used sitewide on cards and blocks that otherwise just pop in statically ── */
.reveal{opacity:0;transform:translateY(22px);
  transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.is-visible{opacity:1;transform:translateY(0)}
/* opacity-only variant for cards that already use transform on :hover
   (translateY would otherwise fight the hover lift at equal specificity) */
.reveal-fade{opacity:0;transition:opacity .7s var(--ease)}
.reveal-fade.is-visible{opacity:1}
@media (prefers-reduced-motion:reduce){
  .reveal,.reveal-fade{opacity:1;transform:none;transition:none}
}

/* .port-filters and .portfolio-grid both get position:relative;z-index:1
   from the shared decor-lifting rule above, which - being equal z-index
   siblings - puts whichever is later in the DOM (.portfolio-grid) on top;
   the custom filter dropdown needs to paint above the card grid below it */
.port-filters{z-index:5}

