/* ============================================================
   VERNER ESTATE — premium landing (production)
   Type: Spectral (display serif) + Hanken Grotesk (UI/sans)
   Brand: #002774 / #001C53 / #B79A5B
   ============================================================ */

:root{
  --blue:#002774;
  --blue-dark:#001C53;
  --brass:#B79A5B;
  --brass-soft:#C9B27E;
  --bg:#F4F6F8;
  --surface:#FFFFFF;
  --ink:#1E1E1E;
  --muted:#64748B;
  --line:#E4E8EE;
  --on-dark:#FFFFFF;
  --on-dark-muted:#9CA8C1;

  --sans:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --serif:"Spectral",Georgia,"Times New Roman",serif;

  --maxw:1240px;
  --gutter:clamp(20px,5vw,72px);
  --radius:4px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:clip;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}

body{
  font-family:var(--sans);
  color:var(--ink);
  background:var(--surface);
  line-height:1.6;
  font-size:17px;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:clip;
}
img,svg{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
ul,ol{list-style:none;}

/* scroll offset so sticky header doesn't cover anchors */
section[id], main[id]{scroll-margin-top:96px;}

.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter);}

/* a11y helpers */
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.skip-link{position:absolute;left:-9999px;top:0;z-index:300;background:var(--blue);color:#fff;
  padding:12px 18px;border-radius:0 0 5px 0;font-weight:600;}
.skip-link:focus{left:0;}
:focus-visible{outline:3px solid var(--brass);outline-offset:2px;}

/* ---------- Typography ---------- */
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.06;letter-spacing:-.01em;color:var(--blue);}
.display{font-size:clamp(2.6rem,6.2vw,5.4rem);line-height:1.02;letter-spacing:-.02em;font-weight:400;}
h2.section-title{font-size:clamp(2rem,3.8vw,3.3rem);}
.section-title--md{font-size:clamp(1.7rem,3vw,2.6rem);}
h3{font-size:clamp(1.3rem,2vw,1.7rem);}
.eyebrow{
  font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--brass);display:inline-flex;align-items:center;gap:.7em;
}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--brass);display:inline-block;}
.lead{font-size:clamp(1.05rem,1.5vw,1.32rem);color:var(--muted);line-height:1.62;font-weight:400;}
.muted{color:var(--muted);}

/* ---------- Buttons ---------- */
.btn{
  --b:var(--blue);
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  font-family:var(--sans);font-weight:600;font-size:.98rem;letter-spacing:.01em;
  padding:.92em 1.6em;border-radius:var(--radius);border:1px solid transparent;
  background:var(--b);color:#fff;cursor:pointer;
  transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),transform .25s var(--ease);
  min-height:52px;white-space:nowrap;position:relative;
}
/* gold underline reveal — overlay spans the border-box and carries its own
   radius, so the line IS the bottom border and follows the rounded corners.
   Reveal via clip-path (not scaleX): the box stays full-width, so the line
   sits flat on the bottom edge throughout the sweep instead of riding up the
   corner radius of a squeezed box. */
.btn::after{
  content:"";position:absolute;inset:-1px;
  border-radius:inherit;
  border-bottom:2px solid var(--brass);
  clip-path:inset(0 100% 0 0);
  transition:clip-path .55s var(--ease);pointer-events:none;
}
.btn:hover::after{clip-path:inset(0 0 0 0);}
.btn:hover{background:var(--blue-dark);}
.btn:active{transform:translateY(1px);}
.btn .arr{transition:transform .35s var(--ease);}
.btn:hover .arr{transform:translateX(4px);}
.btn--on-dark{background:#fff;color:var(--blue);}
.btn--on-dark:hover{background:var(--brass);color:#fff;}
.btn--ghost-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,.32);}
.btn--ghost-dark:hover{background:rgba(255,255,255,.1);border-color:#fff;}
.btn--lg{padding:1.08em 2em;font-size:1.05rem;min-height:60px;}
.btn--block{width:100%;}

/* ============================================================
   HEADER
   ============================================================ */
.header{
  position:fixed;top:0;left:0;right:0;z-index:60;
  transition:background .4s var(--ease),box-shadow .4s var(--ease),border-color .4s var(--ease);
  border-bottom:1px solid transparent;
}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;
  height:76px;max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter);}
.brand{display:flex;align-items:center;gap:12px;}
.brand img{height:30px;width:auto;transition:filter .4s var(--ease);}
.header__right{display:flex;align-items:center;gap:clamp(12px,2vw,28px);}

.langs{display:flex;align-items:center;gap:2px;font-size:.84rem;font-weight:600;letter-spacing:.04em;}
.langs a{
  color:inherit;padding:.35em .55em;border-radius:3px;opacity:.62;
  transition:opacity .25s,color .25s,background .25s;
}
.langs a:hover{opacity:1;}
.langs a[aria-current="page"]{opacity:1;color:var(--brass);}
.langs .sep{opacity:.3;}

/* states: transparent over hero, solid after scroll */
.header.is-top{color:#fff;}
.header.is-top .brand img{filter:brightness(0) invert(1);}
.header.is-top .langs a[aria-current="page"]{color:var(--brass-soft);}
.header.is-top:not(.is-scrolled) .btn--header{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.34);color:#fff;backdrop-filter:blur(6px);}
.header.is-top:not(.is-scrolled) .btn--header:hover{background:#fff;color:var(--blue);border-color:#fff;}

.header.is-scrolled{background:rgba(255,255,255,.92);backdrop-filter:saturate(160%) blur(14px);
  border-bottom-color:var(--line);box-shadow:0 8px 30px -18px rgba(0,39,116,.28);color:var(--ink);}
.header.is-scrolled .brand img{filter:none;}
.btn--header{min-height:44px;padding:.6em 1.2em;font-size:.9rem;}

.menu-toggle{display:none;}

/* ============================================================
   HERO
   ============================================================ */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;
  color:#fff;overflow:hidden;padding-top:120px;}
.hero__media{position:absolute;inset:0;z-index:0;}
.hero__img{width:100%;height:100%;object-fit:cover;object-position:50% 55%;}
.hero__scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(0,28,83,.62) 0%,rgba(0,28,83,.28) 32%,rgba(0,28,83,.55) 70%,rgba(0,16,48,.92) 100%);}
.hero__scrim::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(0,20,60,.65) 0%,rgba(0,20,60,.12) 135%,transparent 100%);}
/* premium animated gradient sheen over the hero (GPU transform, light) */
.hero__sheen{position:absolute;top:0;bottom:0;left:-50%;width:200%;z-index:1;pointer-events:none;
  background:linear-gradient(115deg,transparent 40%,rgba(183,154,91,.09) 47%,rgba(150,175,220,.12) 50%,
    rgba(183,154,91,.09) 53%,transparent 60%);
  transform:translate3d(-12%,0,0);will-change:transform;
  animation:heroSheen 16s ease-in-out infinite;}
@keyframes heroSheen{0%{transform:translate3d(-12%,0,0);}50%{transform:translate3d(12%,0,0);}100%{transform:translate3d(-12%,0,0);}}
.hero .wrap{position:relative;z-index:2;width:100%;padding-bottom:clamp(40px,6vw,76px);}
.hero__grid{display:grid;gap:clamp(28px,4vw,48px);}

.hero h1{color:#fff;max-width:20ch;margin-top:0;}
.hero__sub{color:var(--brass-soft);max-width:54ch;margin-top:26px;font-size:clamp(1.02rem,1.4vw,1.22rem);line-height:1.6;}
.hero__cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px;align-items:center;}

.badges{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:30px;
  padding-top:26px;border-top:1px solid rgba(255,255,255,.16);}
.badge{display:flex;align-items:center;gap:10px;font-size:.92rem;color:#fff;font-weight:500;}
.badge svg{flex:none;color:var(--brass-soft);}

/* ---------- direction cards ---------- */
.directions{background:var(--blue-dark);color:#fff;padding-block:clamp(40px,5vw,64px);position:relative;}
.directions__head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:30px;}
.directions__head h2{color:#fff;font-size:clamp(1.5rem,2.5vw,2.1rem);}
.directions__lead{color:var(--on-dark-muted);max-width:34ch;}
.dir-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:18px;}
.dir-card{
  position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:18px;
  background:var(--blue);border:1px solid rgba(255,255,255,.12);border-radius:5px;
  padding:28px 28px 24px;min-height:260px;overflow:hidden;isolation:isolate;
  transition:border-color .4s var(--ease),transform .4s var(--ease),box-shadow .4s var(--ease);
}
.dir-card__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;
  transition:transform 1.1s var(--ease);}
.dir-card::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(0,28,83,.35) 0%,rgba(0,24,72,.62) 48%,rgba(0,16,48,.92) 100%);
  transition:background .4s var(--ease);}
.dir-card:hover{border-color:rgba(183,154,91,.6);transform:translateY(-4px);
  box-shadow:0 30px 60px -34px rgba(0,16,48,.8);}
.dir-card:hover .dir-card__img{transform:scale(1.05);}
.dir-card:hover::before{background:linear-gradient(180deg,rgba(0,28,83,.3) 0%,rgba(0,24,72,.55) 48%,rgba(0,14,42,.9) 100%);}
.dir-card__tag{font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--brass-soft);}
.dir-card h3{color:#fff;font-size:1.32rem;line-height:1.18;max-width:18ch;}
.dir-card__go{display:inline-flex;align-items:center;gap:.6em;font-weight:600;font-size:.92rem;color:#fff;}
.dir-card__go .arr{transition:transform .35s var(--ease);}
.dir-card:hover .dir-card__go .arr{transform:translateX(5px);}
.dir-card--primary{border-color:rgba(183,154,91,.5);}
.dir-card--primary::before{background:linear-gradient(155deg,rgba(0,28,83,.55) 0%,rgba(0,22,66,.72) 55%,rgba(0,14,42,.94) 100%);}
.dir-card--primary h3{font-size:clamp(1.5rem,2vw,1.95rem);}
.dir-card--primary .dir-card__tag{color:var(--brass);}

/* ============================================================
   SLOGAN scroll-fill
   ============================================================ */
.slogan{padding-block:clamp(90px,16vw,200px);background:var(--blue);text-align:left;}
.slogan__text{font-family:var(--serif);font-weight:400;font-size:clamp(2.77rem,4.44vw,5.3rem);line-height:1.18;
  letter-spacing:-.01em;max-width:40ch;color:#fff;}
/* Russian slogan only — slightly smaller to fit the longer words */
html[lang="ru"] .slogan__text{font-size:clamp(2.3rem,4.3vw,5.1rem);}
.fill-word{transition:color .4s var(--ease);}
.fill-word.brass{color:var(--brass);}
/* with JS: faint then light up on scroll (tref-style fill). Without JS: fully readable. */
.js .slogan .fill-word{color:rgba(255,255,255,.12);}
.js .slogan .fill-word.brass{color:rgba(201,178,126,.20);}
.js .slogan .fill-word.lit{color:#fff;}
.js .slogan .fill-word.brass.lit{color:var(--brass);}

/* ============================================================
   SECTION shells
   ============================================================ */
.section{padding-block:clamp(72px,10vw,128px);}
.section--bg{background:var(--bg);}
.section__head{max-width:62ch;margin-bottom:clamp(36px,5vw,60px);}
.section__head .lead{margin-top:20px;}
.section__head .section-title{margin-top:18px;}
.section__head--tight{margin-bottom:30px;}
.section__head--wide{max-width:none;}

/* ---------- kiirost options grid ---------- */
.opts{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}
.opt{
  background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:32px 30px;
  transition:border-color .35s var(--ease),box-shadow .35s var(--ease),transform .35s var(--ease);
}
.opt:hover{border-color:var(--brass);box-shadow:0 24px 50px -34px rgba(0,39,116,.4);transform:translateY(-3px);}
.opt__num{font-family:var(--serif);font-size:1.1rem;color:var(--brass);margin-bottom:14px;}
.opt h3{font-size:1.28rem;margin-bottom:10px;}
.opt p{color:var(--muted);font-size:.98rem;}

.kiirost__body{margin-top:46px;max-width:100%;display:grid;gap:18px;}
.kiirost__body p{color:var(--ink);font-size:1.04rem;line-height:1.7;}
.kiirost__body strong{color:var(--blue);font-weight:600;}
.kiirost__cta{margin-top:30px;}

.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 40px;margin-top:46px;}
.fact{display:flex;gap:14px;align-items:flex-start;padding-top:20px;border-top:1px solid var(--line);}
.fact svg{flex:none;color:var(--brass);margin-top:3px;}
.fact b{font-weight:600;color:var(--ink);display:block;}
.fact span{color:var(--muted);font-size:.95rem;}

.note{font-size:.92rem;color:var(--muted);font-style:italic;margin-top:34px;
  padding-left:18px;border-left:2px solid var(--brass);max-width:74ch;}

/* ---------- comparison table ---------- */
.compare{margin-top:8px;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:var(--surface);}
.compare table{width:100%;border-collapse:collapse;}
.compare th,.compare td{padding:18px 22px;text-align:left;vertical-align:top;font-size:.97rem;}
.compare thead th{font-family:var(--serif);font-size:1.05rem;font-weight:500;border-bottom:1px solid var(--line);color:var(--blue);}
.compare thead th:first-child{color:var(--muted);font-family:var(--sans);font-size:.74rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;}
.compare thead th.col-kiirost{background:rgba(0,39,116,.04);}
.compare tbody th{font-weight:600;color:var(--ink);width:26%;}
.compare tbody td{color:var(--muted);}
.compare td.col-kiirost{color:var(--ink);background:rgba(0,39,116,.04);}
.compare tbody tr+tr th,.compare tbody tr+tr td{border-top:1px solid var(--line);}

/* ============================================================
   PROCESS
   ============================================================ */
.process{position:relative;}
.steps{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:54px;}
.steps__line{position:absolute;top:23px;left:6%;right:6%;height:2px;background:rgba(0,39,116,.12);z-index:0;overflow:hidden;}
.steps__line::after{content:"";position:absolute;inset:0;background:var(--brass);transform:scaleX(0);transform-origin:left;
  transition:transform 1.4s var(--ease);}
.process.in-view .steps__line::after{transform:scaleX(1);}
.step{position:relative;z-index:1;}
.step__dot{width:48px;height:48px;border-radius:5px;background:var(--surface);border:2px solid var(--blue);
  color:var(--blue);font-family:var(--serif);font-size:1.2rem;display:flex;align-items:center;justify-content:center;
  margin-bottom:22px;transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease);}
.process.in-view .step__dot{transition-delay:calc(var(--i) * .18s + .3s);}
.step.lit .step__dot{background:var(--blue);color:#fff;}
.step__when{font-size:.74rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);margin-bottom:8px;}
.step h3{font-size:1.18rem;line-height:1.2;margin-bottom:8px;}
.step p{font-size:.94rem;color:var(--muted);}

/* ---------- when useful + region ---------- */
.useful{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(34px,5vw,72px);align-items:start;}
.usecases{display:grid;grid-template-columns:1fr 1fr;gap:0 32px;}
.usecases li{display:flex;gap:12px;align-items:flex-start;padding:15px 0;border-top:1px solid var(--line);font-size:.97rem;}
.usecases li svg{flex:none;color:var(--brass);margin-top:4px;}
.region-card{background:var(--blue);color:#fff;border-radius:5px;padding:38px 34px;position:relative;overflow:hidden;}
.region-card h3{color:#fff;font-size:1.5rem;margin-bottom:14px;}
.region-card p{color:var(--on-dark-muted);font-size:.97rem;margin-bottom:18px;}
.region-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px;}
.region-tags span{font-size:.82rem;padding:.4em .8em;border:1px solid rgba(255,255,255,.22);border-radius:5px;color:#fff;}
.region-card__free{font-size:.88rem;color:var(--brass-soft);padding-top:18px;border-top:1px solid rgba(255,255,255,.16);}

/* ============================================================
   SECONDARY SERVICES
   ============================================================ */
.svc{display:grid;grid-template-columns:1fr 1fr;gap:clamp(34px,5vw,72px);align-items:center;}
.svc--reverse .svc__media{order:-1;}
.svc__media{border-radius:5px;overflow:hidden;}
.svc__media img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform 1.2s var(--ease);}
.svc__media:hover img{transform:scale(1.035);}
.svc h2{margin-bottom:18px;}
.svc p{color:var(--muted);margin-bottom:22px;}
.svc__bullets{margin-bottom:26px;}
.svc__bullets li{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-top:1px solid var(--line);font-size:.98rem;}
.svc__bullets li svg{flex:none;color:var(--brass);margin-top:4px;}
.svc__actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center;}
.backlink{font-size:.9rem;color:var(--blue);font-weight:600;display:inline-flex;align-items:center;gap:.5em;
  border-bottom:1px solid transparent;transition:border-color .3s;max-width:34ch;line-height:1.4;}
.backlink:hover{border-bottom-color:var(--brass);}

/* ============================================================
   CONTACT
   ============================================================ */
.contact{background:var(--blue);color:#fff;}
.contact h2{color:#fff;}
.contact .eyebrow{color:var(--brass-soft);}
.contact .eyebrow::before{background:var(--brass-soft);}
.contact__sub{color:var(--on-dark-muted);max-width:52ch;margin-top:18px;}
.contact__grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(30px,4vw,56px);margin-top:clamp(40px,5vw,60px);align-items:start;}
.channels{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.channel{
  display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:5px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
  transition:background .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease);min-height:44px;
}
.channel:hover{background:rgba(255,255,255,.12);border-color:rgba(183,154,91,.6);transform:translateY(-2px);}
.channel svg{flex:none;color:var(--brass-soft);}
.channel b{display:block;font-size:.98rem;font-weight:600;}
.channel span{display:block;font-size:.82rem;color:var(--on-dark-muted);}
.channel--primary{grid-column:1/-1;background:var(--brass);border-color:var(--brass);}
.channel--primary:hover{background:var(--brass-soft);}
.channel--primary svg,.channel--primary span{color:rgba(0,20,60,.7);}
.channel--primary b{color:#0c1a36;}

/* form */
.form{background:var(--surface);border-radius:5px;padding:clamp(28px,3.4vw,40px);color:var(--ink);
  box-shadow:0 40px 80px -50px rgba(0,16,48,.7);}
.form h3{font-size:1.4rem;margin-bottom:6px;}
.form__intro{color:var(--muted);font-size:.94rem;margin-bottom:24px;}
.field{margin-bottom:18px;border:0;}
.field label,.field legend{display:block;font-size:.82rem;font-weight:600;letter-spacing:.04em;color:var(--ink);margin-bottom:7px;padding:0;}
.field input[type=text],.field input[type=email],.field textarea{
  width:100%;font:inherit;font-size:1rem;padding:.85em 1em;border:1px solid var(--line);border-radius:5px;
  background:var(--bg);color:var(--ink);transition:border-color .25s,background .25s,box-shadow .25s;
}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--blue);background:#fff;
  box-shadow:0 0 0 3px rgba(0,39,116,.1);}
.field textarea{resize:vertical;min-height:108px;}
.field input.invalid,.field textarea.invalid{border-color:#c0392b;box-shadow:0 0 0 3px rgba(192,57,43,.1);}
.field .err{display:none;color:#c0392b;font-size:.8rem;margin-top:6px;}
.field.show-err .err{display:block;}
.field--interest{margin-bottom:18px;}
.interest{display:flex;flex-wrap:nowrap;gap:10px;}
.interest input{position:absolute;opacity:0;pointer-events:none;}
.interest label{
  display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:.5em;cursor:pointer;font-size:.9rem;font-weight:500;letter-spacing:0;
  flex:1;min-width:0;padding:.6em .9em;border:1px solid var(--line);border-radius:5px;background:var(--surface);margin:0;
  transition:all .25s var(--ease);min-height:44px;line-height:1.25;
}
.interest label:hover{border-color:var(--brass);}
.interest input:checked + label{background:rgba(0,39,116,.06);border-color:var(--brass);color:var(--blue);font-weight:600;}
.interest input:focus-visible + label{box-shadow:0 0 0 3px rgba(0,39,116,.2);}
.field--consent{display:flex;gap:10px;align-items:flex-start;}
.field--consent input{margin-top:3px;width:18px;height:18px;flex:none;accent-color:var(--blue);}
.field--consent label{font-size:.86rem;font-weight:400;color:var(--muted);letter-spacing:0;margin:0;line-height:1.5;}
.field--consent a{color:var(--blue);font-weight:600;border-bottom:1px solid var(--brass);}
.form__foot{font-size:.86rem;color:var(--muted);margin-top:18px;display:flex;flex-wrap:wrap;gap:8px 20px;}
.form__foot span{display:inline-flex;align-items:center;gap:.5em;}
.form__nojs{display:none;margin-top:16px;padding:12px 14px;background:rgba(0,39,116,.05);border-radius:5px;
  font-size:.88rem;color:var(--muted);}
.form__nojs a{color:var(--blue);font-weight:600;border-bottom:1px solid var(--brass);}
.no-js .form__nojs{display:block;}
.form__error{margin-top:14px;padding:12px 14px;background:rgba(192,57,43,.08);border:1px solid rgba(192,57,43,.3);
  border-radius:5px;color:#a5281b;font-size:.9rem;}
.form__success{text-align:center;padding:30px 10px;}
.form__check{margin:0 auto 16px;color:var(--brass);animation:checkPop .5s var(--ease) both;}
.form__check-c{stroke-dasharray:64;stroke-dashoffset:64;animation:checkDraw .65s var(--ease) .05s forwards;}
.form__check-p{stroke-dasharray:22;stroke-dashoffset:22;animation:checkDraw .4s var(--ease) .5s forwards;}
@keyframes checkDraw{to{stroke-dashoffset:0;}}
@keyframes checkPop{0%{transform:scale(.7);opacity:0;}60%{transform:scale(1.06);}100%{transform:scale(1);opacity:1;}}
.form__success .muted{margin-top:8px;}
.form.sent .form__body{display:none;}

/* dynamic honeypot decoy (visually hidden, keyboard-skipped, bot-visible in DOM) */
.form-meta-row{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0;
}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:var(--blue-dark);color:var(--on-dark-muted);padding-block:clamp(48px,6vw,72px);font-size:.9rem;}
.footer__top{display:flex;justify-content:space-between;flex-wrap:wrap;gap:30px;
  padding-bottom:34px;border-bottom:1px solid rgba(255,255,255,.12);}
.footer__brand img{height:30px;width:auto;filter:brightness(0) invert(1);margin-bottom:16px;}
.footer__legal{max-width:46ch;line-height:1.7;}
.footer__legal b{color:#fff;font-weight:600;}
.footer__email{color:#fff;border-bottom:1px solid var(--brass);}
.footer__links{display:flex;flex-direction:column;gap:10px;align-items:flex-start;}
.footer__links a,.footer__links button{color:#fff;font-weight:500;background:none;border:none;cursor:pointer;
  font:inherit;padding:0;border-bottom:1px solid transparent;transition:border-color .3s;}
.footer__links a:hover,.footer__links button:hover{border-bottom-color:var(--brass);}
.footer__bottom{padding-top:26px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px 24px;font-size:.84rem;}
.footer__dev{display:inline-flex;align-items:center;gap:9px;color:var(--on-dark-muted);font-size:.78rem;
  letter-spacing:.02em;opacity:.82;transition:opacity .3s;}
.footer__dev:hover{opacity:1;}
.footer__dev img{height:22px;width:auto;}

/* ============================================================
   REVEAL animation utilities (gated behind .js so no-JS shows all)
   ============================================================ */
.reveal{transition:opacity 1s var(--ease),transform 1s var(--ease);}
.js .reveal{opacity:0;transform:translateY(26px);}
.js .reveal.in{opacity:1;transform:none;}
.js .reveal[data-d="1"]{transition-delay:.12s;}
.js .reveal[data-d="2"]{transition-delay:.24s;}
.js .reveal[data-d="3"]{transition-delay:.36s;}
.js .reveal[data-d="4"]{transition-delay:.48s;}

/* masked line reveal (headings/CTA) */
.lineup{display:block;overflow:hidden;}
.lineup > *{display:block;transition:transform 1.1s var(--ease);}
.js .lineup > *{transform:translateY(110%);}
.js .lineup.in > *{transform:none;}
.js .lineup[data-d="1"] > *{transition-delay:.1s;}
.js .lineup[data-d="2"] > *{transition-delay:.22s;}
.js .lineup[data-d="3"] > *{transition-delay:.34s;}

/* ============================================================
   BRAND INTRO overlay — V-reveal. Shown only with JS + motion.
   ============================================================ */
.intro{display:none;}
.js .intro{display:block;position:fixed;inset:0;z-index:200;pointer-events:none;overflow:hidden;
  animation:introOut 3s var(--ease) forwards;}
/* Dark panel with a CRISP vector V-shaped hole. We animate mask-size (the SVG is
   re-rasterised at each size, so the V stays razor-sharp — no bitmap upscaling).
   The V holds static ~1s, then grows (~2s) to reveal the whole site through the V. */
.intro__panel{position:absolute;inset:0;background:var(--blue-dark);
  -webkit-mask:url(/assets/images/v-mask.svg?v=2) center / 100vmax 100vmax no-repeat;
          mask:url(/assets/images/v-mask.svg?v=2) center / 100vmax 100vmax no-repeat;
  will-change:mask-size;
  animation:vReveal 3s cubic-bezier(.7,0,.3,1) forwards;}
@keyframes vReveal{
  0%,33%{ -webkit-mask-size:100vmax 100vmax; mask-size:100vmax 100vmax; }
  100%{ -webkit-mask-size:3000vmax 3000vmax; mask-size:3000vmax 3000vmax; }
}
@keyframes introOut{0%,90%{opacity:1;}100%{opacity:0;}}
.intro.done{display:none!important;}

/* ============================================================
   COOKIE CONSENT (self-contained, brand-styled)
   ============================================================ */
.cc-banner{position:fixed;right:20px;bottom:20px;transform:translateY(160%);
  z-index:150;width:min(92vw,360px);background:var(--surface);color:var(--ink);
  border:1px solid var(--line);border-radius:5px;padding:16px 18px;
  box-shadow:0px 20px 50px 0px rgba(0,16,48,.9);transition:transform .45s var(--ease);}
.cc-banner.show{transform:translateY(0);}
.cc-banner p{font-size:.84rem;color:var(--muted);line-height:1.5;margin-bottom:12px;}
.cc-banner p a{color:var(--blue);font-weight:600;border-bottom:1px solid var(--brass);}
.cc-actions{display:flex;flex-wrap:wrap;gap:8px;}
.cc-actions .btn{min-height:38px;padding:.5em .9em;font-size:.82rem;}
.cc-btn-ghost{background:transparent;color:var(--blue);border-color:rgba(0,39,116,.28);}
.cc-btn-ghost:hover{background:var(--bg);}
.cc-btn-brass{background:var(--brass);}
.cc-btn-brass:hover{background:var(--brass-soft);}
.cc-overlay{position:fixed;inset:0;z-index:151;background:rgba(0,16,48,.55);
  display:none;align-items:center;justify-content:center;padding:20px;}
.cc-overlay.show{display:flex;}
.cc-modal{background:var(--surface);color:var(--ink);border-radius:5px;max-width:540px;width:100%;
  max-height:90vh;overflow:auto;padding:30px 32px;box-shadow:0 40px 90px -40px rgba(0,16,48,.7);}
.cc-modal h2{font-size:1.4rem;margin-bottom:6px;}
.cc-modal > p{font-size:.9rem;color:var(--muted);margin-bottom:20px;}
.cc-cat{border-top:1px solid var(--line);padding:18px 0;}
.cc-cat__head{display:flex;justify-content:space-between;align-items:center;gap:14px;}
.cc-cat__head h3{font-size:1.05rem;color:var(--ink);font-family:var(--sans);font-weight:600;}
.cc-cat p{font-size:.86rem;color:var(--muted);margin-top:6px;line-height:1.5;}
.cc-switch{position:relative;width:46px;height:26px;flex:none;}
.cc-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;}
.cc-track{position:absolute;inset:0;background:#cbd5e1;border-radius:5px;transition:background .25s;}
.cc-track::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;
  border-radius:5px;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.3);}
.cc-switch input:checked + .cc-track{background:var(--brass);}
.cc-switch input:checked + .cc-track::after{transform:translateX(20px);}
.cc-switch input:disabled + .cc-track{background:var(--blue);opacity:.55;}
.cc-switch input:focus-visible + .cc-track{outline:3px solid var(--brass);outline-offset:2px;}
.cc-modal__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px;}
.cc-modal__privacy{margin-top:16px;font-size:.84rem;}
.cc-modal__privacy a{color:var(--blue);font-weight:600;border-bottom:1px solid var(--brass);}

/* ============================================================
   LEGAL / PRIVACY pages
   ============================================================ */
.legal{padding-top:clamp(120px,16vw,180px);padding-bottom:clamp(60px,8vw,100px);}
.legal__head{max-width:70ch;margin-bottom:40px;}
.legal__head h1{font-size:clamp(2.2rem,4.5vw,3.4rem);margin-bottom:12px;}
.legal__updated{color:var(--muted);font-size:.9rem;}
.legal__body{max-width:74ch;}
.legal__body h2{font-size:clamp(1.4rem,2.4vw,1.9rem);margin:40px 0 14px;}
.legal__body h3{font-size:1.2rem;margin:26px 0 10px;}
.legal__body p,.legal__body li{color:var(--ink);font-size:1.02rem;line-height:1.72;}
.legal__body p{margin-bottom:14px;}
.legal__body ul{list-style:disc;padding-left:22px;margin-bottom:18px;}
.legal__body li{margin-bottom:6px;}
.legal__body a{color:var(--blue);font-weight:600;border-bottom:1px solid var(--brass);}
.legal__body strong{color:var(--blue);}
.legal__body .legal-card{background:var(--bg);border:1px solid var(--line);border-radius:5px;
  padding:22px 26px;margin:18px 0;}
.legal__body button.cc-inline{background:none;border:0;color:var(--blue);font:inherit;font-weight:600;
  cursor:pointer;border-bottom:1px solid var(--brass);padding:0;}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1024px){
  .dir-grid{grid-template-columns:1fr 1fr;}
  .dir-card--primary{grid-column:1/-1;}
  .compare{overflow-x:auto;}
  .compare table{min-width:620px;}
}
@media (max-width:760px){
  body{font-size:16px;}
  .header__inner{height:64px;}
  .langs{font-size:.78rem;}
  .hero{padding-top:96px;}
  .hero h1{max-width:none;}
  .hero__cta{flex-direction:column;align-items:stretch;}
  .hero__cta .btn{width:100%;}
  .dir-grid{grid-template-columns:1fr;}
  .opts{grid-template-columns:1fr;}
  .facts{grid-template-columns:1fr;}
  .steps{grid-template-columns:1fr;gap:0;margin-top:36px;}
  .steps__line{display:none;}
  .step{padding-bottom:30px;position:relative;}
  .step::before{content:"";position:absolute;left:23px;top:48px;bottom:0;width:2px;background:rgba(0,39,116,.14);}
  .step:last-child::before{display:none;}
  .step__body{display:grid;grid-template-columns:48px 1fr;column-gap:18px;align-items:start;padding-top:0;}
  .step__dot{margin-bottom:0;grid-column:1;grid-row:1;}
  .step__when{grid-column:2;grid-row:1;}
  .step__body h3{grid-column:2;grid-row:2;}
  .step__body p{grid-column:2;grid-row:3;}
  .useful{grid-template-columns:1fr;}
  .usecases{grid-template-columns:1fr;}
  .svc{grid-template-columns:1fr;}
  .svc--reverse .svc__media,.svc__media{order:2;}
  .svc__media img{height:auto;aspect-ratio:1/1;object-position:50% 100%;}
  .contact__grid{grid-template-columns:1fr;}
  .channels{grid-template-columns:1fr;}
  .footer__top{flex-direction:column;}
  .footer__bottom{flex-direction:column;}
  /* comparison table -> stacked cards (no horizontal scroll) */
  .compare{overflow:visible;border:0;background:none;border-radius:0;}
  .compare table,.compare thead,.compare tbody,.compare tr,.compare th,.compare td{display:block;width:auto;}
  .compare table{min-width:0;}
  .compare thead{display:none;}
  .compare tbody tr{background:var(--surface);border:1px solid var(--line);border-radius:5px;
    padding:20px 22px;margin-bottom:16px;}
  .compare tbody tr:last-child{margin-bottom:0;}
  .compare tbody tr+tr th,.compare tbody tr+tr td{border-top:0;}
  .compare tbody th{width:auto;font-family:var(--serif);font-size:1.12rem;font-weight:500;
    color:var(--blue);padding:0 0 14px;border-bottom:1px solid var(--line);}
  .compare tbody td{padding:14px 0 0;color:var(--muted);font-size:.95rem;}
  .compare tbody td::before{content:attr(data-label);display:block;font-family:var(--sans);
    font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
    color:var(--muted);margin-bottom:5px;}
  .compare tbody td.col-kiirost{color:var(--ink);background:rgba(0,39,116,.04);
    border-radius:5px;padding:12px 14px;margin-top:12px;}
  .compare tbody td.col-kiirost::before{color:var(--blue);}
}
@media (max-width:480px){
  .interest{flex-wrap:nowrap;gap:6px;}
  .interest label{flex:1;justify-content:center;text-align:center;padding:.44em .5em;font-size:.8rem;min-width:0;line-height:1.2;}
}

/* ---------- primary nav: inline in header on desktop, off-canvas drawer on mobile/tablet ---------- */
.mnav{display:flex;align-items:center;gap:clamp(16px,1.8vw,30px);}
.mnav > a:not(.btn){font-family:var(--sans);font-size:.92rem;font-weight:500;letter-spacing:.01em;
  color:inherit;opacity:.78;white-space:nowrap;transition:opacity .25s var(--ease),color .25s var(--ease);}
.mnav > a:not(.btn):hover{opacity:1;}
.mnav .btn{display:none;}
.mnav__contacts{display:none;}
body.menu-lock{overflow:hidden;}

@media (max-width:960px){
  .header__inner{height:64px;}
  .menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;
    background:none;border:none;cursor:pointer;color:currentColor;}
  .menu-toggle svg{width:24px;height:24px;}
  .btn--header{display:none;}
  /* no backdrop-filter in the menu range: it would establish a containing block for the
     fixed drawer (a header child) and clip it when the header state changes on close */
  .header.is-scrolled{backdrop-filter:none;}
  /* keep the logo + toggle above the drawer */
  .brand,.header__right{position:relative;z-index:51;}
  /* drawer opens BELOW the header bar so it never covers the logo */
  .mnav{position:fixed;inset:64px 0 0 0;z-index:50;background:var(--blue-dark);color:#fff;
    flex-direction:column;align-items:stretch;gap:4px;padding:30px var(--gutter) 40px;
    transform:translateX(100%);transition:transform .45s var(--ease),visibility 0s linear .45s;overflow-y:auto;visibility:hidden;}
  .mnav.open{transform:none;visibility:visible;transition:transform .45s var(--ease),visibility 0s;}
  .mnav > a:not(.btn){font-family:var(--serif);font-size:1.6rem;font-weight:400;opacity:1;color:#fff;
    white-space:normal;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.1);}
  .mnav .btn{display:flex;margin-top:20px;border-bottom:1px solid var(--brass);}
  /* icon-only contact links after the CTA button */
  .mnav__contacts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:24px;}
  .mnav__contacts a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;
    border:1px solid rgba(255,255,255,.18);border-radius:6px;color:#fff;
    transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease);}
  .mnav__contacts a:hover{background:rgba(255,255,255,.08);border-color:var(--brass);color:var(--brass);}
  .mnav__contacts svg{width:22px;height:22px;}
  /* while the menu is open the header bar becomes a solid panel matching the drawer;
     on close it transitions back smoothly via the header's background/filter transitions */
  body.menu-lock .header{background:var(--blue-dark);color:#fff;}
  /* .header in the selector raises specificity above `.header.is-scrolled .brand img`
     so the logo stays white when the menu is opened after scrolling past the hero */
  body.menu-lock .header .brand img{filter:brightness(0) invert(1);}
}

/* ============================================================
   REDUCED MOTION — disable intro, reveals, scroll effects
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  .intro,.js .intro{display:none!important;}
  .js .reveal,.js .reveal[data-d]{opacity:1!important;transform:none!important;transition:none!important;}
  .js .lineup > *{transform:none!important;transition:none!important;}
  .steps__line::after{transition:none;}
  .step__dot{transition:none;}
  .hero__sheen{animation:none;}
  .form__check,.form__check-c,.form__check-p{animation:none!important;stroke-dashoffset:0!important;}
  .svc__media img,.btn .arr,.dir-card__go .arr,.btn::after{transition:none;}
  .js .slogan .fill-word{color:#fff!important;}
  .js .slogan .fill-word.brass{color:var(--brass)!important;}
}
