/* ---------- Локальные шрифты (без Google Fonts) ---------- */
@font-face{font-family:'Onest';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/onest-cyrillic-400-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/onest-latin-400-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/onest-cyrillic-500-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/onest-latin-500-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/onest-cyrillic-600-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/onest-latin-600-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/onest-cyrillic-700-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/onest-latin-700-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/onest-cyrillic-800-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/onest-latin-800-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:400;font-display:swap;src:url('../fonts/playfair-display-cyrillic-400-italic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:400;font-display:swap;src:url('../fonts/playfair-display-latin-400-italic.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Fredoka One';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/fredoka-one-latin-400-normal.woff2') format('woff2')}

/* mouse-follower (Cuberto, MIT) — инлайн, чтобы не зависеть от CDN */
.mf-cursor{position:fixed;top:0;left:0;z-index:1000;contain:layout style size;pointer-events:none;will-change:transform;transition:opacity .3s,color .4s}.mf-cursor:before{content:"";position:absolute;top:-24px;left:-24px;display:block;width:48px;height:48px;transform:scale(.2);background:currentColor;border-radius:50%;transition:transform .25s ease-in-out,opacity .1s}.mf-cursor.-inverse{color:#fff}.mf-cursor.-exclusion{mix-blend-mode:exclusion}.mf-cursor.-exclusion:before{background:#fff}.mf-cursor.-pointer:before{transform:scale(.15)}.mf-cursor.-text:before{opacity:.85;transform:scale(1.7)}.mf-cursor.-text.-active:before{transform:scale(1.6);transition-duration:.2s}.mf-cursor.-icon:before{transform:scale(1.5)}.mf-cursor.-icon.-active:before{transform:scale(1.4)}.mf-cursor.-hidden:before{transform:scale(0)}.mf-cursor-text{position:absolute;top:-18px;left:-18px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;transform:scale(0) rotate(10deg);opacity:0;color:#fff;font-size:16px;line-height:20px;text-align:center;transition:opacity .4s,transform .3s}.mf-cursor.-text .mf-cursor-text,.mf-cursor.-icon .mf-cursor-text{opacity:1;transform:scale(1)}.mf-cursor-media{position:absolute;width:400px;height:400px;margin:-200px 0 0 -200px}.mf-cursor-media img,.mf-cursor-media video{position:absolute;top:50%;left:50%;width:100%;height:100%;object-fit:cover;transform:translate(-50%,-50%) scale(0);opacity:0;transition:transform .4s,opacity .2s}.mf-cursor.-media .mf-cursor-media img,.mf-cursor.-media .mf-cursor-media video{transform:translate(-50%,-50%) scale(1);opacity:1}

/* =========================================================
   CODDY × «Традиционные ценности в поступках»
   Светлая editorial-тема (типографика и движение — Cuberto-like,
   палитра и шрифты — брендбук CODDY)
   ========================================================= */
:root{
  --bg:#FFFFFF;          /* белый */
  --cream:#F2F3F5;       /* светло-серый — вторая поверхность */
  --navy:#111111;        /* чёрный Cuberto — тёмные блоки и кнопки */
  --navy-2:#0A0A0A;
  --brand-navy:#00384F;  /* фирменный тёмно-синий CODDY */
  --turq:#0093B5;        /* фирменный бирюзовый CODDY — единственный акцент */
  --turq-dp:#0093B5;
  --turq-soft:#7AB8CC;
  --turq-pale:#E7EBFA;
  --lime:#0093B5;        /* алиас: лайма больше нет */
  --orange:#0093B5;      /* алиас: CTA — бирюзовый */
  --grad:linear-gradient(135deg,#00384F 0%,#0093B5 100%); /* gradient-brand из брендбука */
  --text:#111111;
  --text-dim:rgba(17,17,17,.56);
  --line:rgba(17,17,17,.1);
  --serif:'Playfair Display',Georgia,serif;
  --pad:clamp(20px,5vw,80px);
  --font:'Onest',system-ui,sans-serif;
  --hint:'Onest',system-ui,sans-serif;
  --logo:'Fredoka One',cursive;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{
  background:var(--bg);color:var(--text);
  font-family:var(--font);font-size:clamp(16px,1.15vw,19px);line-height:1.6;letter-spacing:-.008em;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
/* Слово CODDY — всегда Fredoka One (брендбук) */
.coddy{font-family:var(--logo);font-weight:400;font-style:normal;letter-spacing:0}
sup.reg{font-size:.45em;vertical-align:super;color:var(--turq);margin-left:.04em;font-family:var(--font)}
::selection{background:var(--turq);color:#fff}

/* ---------- Layout ---------- */
.wrap{padding-inline:var(--pad);max-width:1600px;margin-inline:auto}
section{position:relative}
.section{padding-block:clamp(80px,10vw,150px)}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(16px,2vw,32px)}
.eyebrow{
  width:fit-content;align-self:flex-start;justify-self:start;
  display:inline-flex;align-items:center;gap:10px;font-weight:500;font-size:14px;letter-spacing:0;color:var(--text-dim);
}
.eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--turq)}
.on-dark .eyebrow{color:rgba(255,255,255,.65)}

h1,h2,h3{font-weight:700;line-height:1.0;letter-spacing:-.04em;text-wrap:balance}
h1{font-size:clamp(42px,6.4vw,100px)}
h2{font-size:clamp(34px,5vw,76px)}
h3{font-size:clamp(20px,1.7vw,26px);letter-spacing:-.025em;line-height:1.2}
h1 em,h2 em,.quote em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.02em;font-size:1.02em;color:var(--turq)}
.on-dark h2 em{color:#fff}
.lead{font-size:clamp(18px,1.5vw,24px);line-height:1.45;color:var(--text-dim);max-width:40ch}
.on-dark{background:var(--navy);color:#fff}
.on-dark .lead,.on-dark p{color:rgba(255,255,255,.8)}
.cream{background:var(--cream)}

/* ---------- Buttons (pill, Onest Bold) ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:12px;
  padding:18px 30px;border-radius:999px;font-weight:600;font-size:16px;line-height:1;letter-spacing:-.01em;
  background:var(--navy);color:#fff;transition:color .35s;
  will-change:transform;isolation:isolate;overflow:hidden;white-space:nowrap;
}
.btn .fill{
  position:absolute;inset:0;z-index:-1;background:var(--turq);border-radius:999px;
  transform:translateY(101%);transition:transform .5s cubic-bezier(.76,0,.24,1);
}
.btn:hover .fill,.btn:focus-visible .fill{transform:translateY(0)}
.btn .arr{display:inline-block;transition:transform .4s cubic-bezier(.76,0,.24,1)}
.btn .roll{display:inline-block;position:relative;overflow:hidden;height:1em;line-height:1}
.btn .roll>span{display:block;transition:transform .5s cubic-bezier(.76,0,.24,1)}
.btn .roll>span:last-child{position:absolute;top:100%;left:0;white-space:nowrap}
.btn:hover .roll>span{transform:translateY(-100%)}
.btn:hover .arr{transform:translate(3px,-3px)}
.btn--orange{background:var(--turq);color:#fff}
.btn--orange .fill{background:var(--navy)}
.btn--lime{background:#fff;color:var(--navy)}
.btn--lime .fill{background:var(--turq)}
.btn--lime:hover{color:#fff}
.btn--white{background:#fff;color:var(--navy)}
.btn--white .fill{background:var(--turq)}
.btn--white:hover{color:#fff}
.btn--ghost{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.18)}
.btn--ghost .fill{background:var(--navy)}
.btn--ghost:hover{color:#fff}
.on-dark .btn--ghost{color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.3)}
.on-dark .btn--ghost .fill{background:#fff}
.on-dark .btn--ghost:hover{color:var(--navy)}
.btn:focus-visible{outline:3px solid var(--turq);outline-offset:4px}

/* ---------- Header (логика coddyschool.com: лого · меню · телефон · Записаться) ---------- */
.header{
  position:fixed;inset:0 0 auto 0;z-index:50;background:rgba(255,255,255,.86);backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;transition:border-color .4s,box-shadow .4s;
}
.header.is-scrolled{border-color:var(--line);box-shadow:0 10px 30px -20px rgba(0,0,0,.2)}
.header__in{display:flex;align-items:center;gap:clamp(16px,2.5vw,40px);padding:14px var(--pad);max-width:1600px;margin-inline:auto}
.header__logo{display:flex;align-items:center;gap:14px}
.header__logo .coddy{font-size:30px;color:var(--turq);line-height:1}
.header__logo img{width:40px;height:40px;border-radius:50%}
.nav{display:none;gap:clamp(14px,1.6vw,26px);margin-left:auto;font-weight:600;font-size:14px}
.nav a{position:relative;padding:6px 0;color:var(--text)}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--turq);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.76,0,.24,1)}
.nav a:hover::after{transform:scaleX(1)}
.header__contacts{display:none;align-items:center;gap:18px;font-weight:600;font-size:14px}
.header__contacts a:hover{color:var(--turq)}
.header .btn{padding:13px 22px;font-size:14px;margin-left:auto}
.burger{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--cream)}
.burger span{display:block;width:20px;height:2px;background:var(--text);position:relative;transition:background .2s}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--text);transition:transform .3s}
.burger span::before{top:-6px}.burger span::after{top:6px}
.menu-open .burger span{background:transparent}
.menu-open .burger span::before{transform:translateY(6px) rotate(45deg)}
.menu-open .burger span::after{transform:translateY(-6px) rotate(-45deg)}
@media(min-width:960px){
  .nav,.header__contacts{display:flex}
  .header .btn{margin-left:0}
  .burger{display:none}
}
.mobile-menu{
  position:fixed;inset:0;z-index:49;background:#fff;padding:110px var(--pad) 40px;display:flex;flex-direction:column;gap:6px;
  transform:translateY(-100%);transition:transform .5s cubic-bezier(.76,0,.24,1);overflow:auto;
}
.menu-open .mobile-menu{transform:none}
.mobile-menu a{font-weight:700;font-size:24px;padding:10px 0;border-bottom:1px solid var(--line)}
.mobile-menu .contacts{margin-top:24px;display:flex;flex-direction:column;gap:8px;font-weight:600;color:var(--text-dim)}
.mobile-menu .contacts a{font-size:16px;border:0;padding:0;color:var(--text)}
@media(min-width:960px){.mobile-menu{display:none}}

/* ---------- Hero (в один экран) ---------- */
.hero{min-height:100svh;display:flex;align-items:center;padding-top:96px;padding-bottom:40px;overflow:hidden}
.mesh{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.mesh span{position:absolute;border-radius:62% 38% 48% 52%/44% 58% 42% 56%}
.mesh .m1{width:320px;height:290px;background:var(--lime);top:-80px;right:6%;animation:drift1 24s ease-in-out infinite alternate}
.mesh .m2{width:340px;height:300px;background:#CFE9F2;border-radius:40% 60% 58% 42%/56% 40% 60% 44%;bottom:-140px;left:-140px;animation:drift2 28s ease-in-out infinite alternate}
.mesh .m3{width:160px;height:140px;background:var(--turq);opacity:.2;top:58%;right:44%;animation:drift1 19s ease-in-out infinite alternate-reverse}
@keyframes drift1{to{transform:translate3d(-50px,46px,0) rotate(12deg) scale(1.08)}}
@keyframes drift2{to{transform:translate3d(60px,-40px,0) rotate(-14deg) scale(1.1)}}
.hero__grid{position:relative;z-index:1}
.hero__grid{align-items:center;width:100%}
.hero__text{grid-column:1/-1}
.hero__media{grid-column:1/-1}
@media(min-width:1000px){
  .hero__text{grid-column:1/8}
  .hero__media{grid-column:8/-1}
}
.hero h1{margin:18px 0 22px}
.hero .lead{margin-bottom:16px}
.hero__support{font-weight:500;max-width:42ch;margin-bottom:30px;display:flex;gap:14px;align-items:flex-start;font-size:clamp(15px,1.1vw,18px)}
.hero__support::before{content:"";flex:0 0 2px;align-self:stretch;background:var(--turq);border-radius:2px}
.hero__support .coddy{font-size:1.15em;color:var(--turq)}
.hero__actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.hero__scroll{font-size:13px;font-weight:500;color:var(--text-dim);display:flex;gap:10px;align-items:center}
.hero__scroll i{display:block;width:1px;height:34px;background:var(--line);position:relative;overflow:hidden}
.hero__scroll i::after{content:"";position:absolute;inset:0;background:var(--turq);transform:translateY(-100%);animation:scrollLine 1.8s cubic-bezier(.76,0,.24,1) infinite}
@keyframes scrollLine{to{transform:translateY(100%)}}
.photo{position:relative;overflow:hidden;border-radius:clamp(14px,2vw,28px);background:var(--cream)}
.photo img{width:100%;height:100%;object-fit:cover;will-change:transform}
.hero__photo{aspect-ratio:4/3;width:100%;max-width:640px;margin-left:auto;max-height:calc(100svh - 180px)}
@media(max-width:999px){.hero__photo{display:none}} /* на мобильном hero — текст + CTA; фото ниже в галерее */
.photo__cap{
  position:absolute;left:0;right:0;bottom:0;padding:22px 24px;
  background:linear-gradient(to top,rgba(0,0,0,.82),rgba(0,0,0,0));
  font-weight:700;font-size:15px;color:#fff;
}
.photo__cap small{display:block;font-weight:400;opacity:.75;font-size:13px}

/* ---------- Marquee ---------- */
.marquee{padding-block:22px;overflow:hidden;white-space:nowrap;user-select:none;background:var(--grad)}
.marquee__track{display:inline-flex;will-change:transform;animation:marquee 28s linear infinite}
.marquee:hover .marquee__track{animation-play-state:paused}
@keyframes marquee{to{transform:translateX(-50%)}}
.marquee__item{display:inline-flex;align-items:center;gap:32px;padding-right:32px;font-weight:700;font-size:clamp(26px,3.2vw,46px);letter-spacing:-.04em;color:#fff}
.marquee__item i{font-family:var(--serif);font-style:italic;font-weight:400;font-size:1.12em;color:rgba(255,255,255,.75)}
.marquee__item .dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.5)}

/* ---------- About ---------- */
.about__head{grid-column:1/-1}
.about__body{grid-column:1/-1}
@media(min-width:900px){.about__head{grid-column:1/6}.about__body{grid-column:7/-1}}
.about__body p{margin-bottom:1.1em;color:var(--text-dim);max-width:50ch;font-size:clamp(18px,1.5vw,24px);line-height:1.5}
@media(min-width:900px){.about__body{padding-top:clamp(36px,3.6vw,60px)}}
.about__body p strong{color:var(--text);font-weight:600}
.quote{
  grid-column:1/-1;margin-top:clamp(50px,7vw,100px);
  font-size:clamp(26px,3.4vw,52px);font-weight:700;line-height:1.1;letter-spacing:-.04em;
  max-width:24ch;text-wrap:balance;color:var(--text);
}

.about__tea{grid-column:1/-1;margin-top:40px}
@media(min-width:900px){
  .quote{grid-column:1/8}
  .about__tea{grid-column:9/-1;margin-top:clamp(50px,7vw,100px);align-self:end}
}
.about__tea .photo{aspect-ratio:16/9}

/* ---------- Steps ---------- */
.steps__head{margin-bottom:clamp(44px,5vw,80px);display:flex;flex-direction:column;gap:18px}
.steps__list{border-top:1px solid var(--line)}
.step{
  display:grid;grid-template-columns:1fr;gap:12px;
  padding:clamp(26px,3.4vw,50px) 0;border-bottom:1px solid var(--line);position:relative;
  transition:padding-left .5s cubic-bezier(.76,0,.24,1);
}
@media(min-width:800px){.step{grid-template-columns:140px 1fr 1.2fr;gap:32px}}
.step:hover{padding-left:16px}
.step__num{font-weight:700;font-size:clamp(40px,4.8vw,68px);letter-spacing:-.04em;line-height:1;color:var(--navy);position:relative;height:1em;overflow:hidden}
.step__num span{display:block;transition:transform .5s cubic-bezier(.76,0,.24,1)}
.step__num span:last-child{position:absolute;top:100%;left:0;color:var(--turq);font-family:var(--serif);font-style:italic;font-weight:400}
.step:hover .step__num span{transform:translateY(-100%)}
.step p{color:var(--text-dim);max-width:46ch;font-size:clamp(16px,1.2vw,19px)}
.step p a{color:var(--navy);font-weight:700;border-bottom:1.5px solid var(--turq)}
.hashtag{
  display:inline-flex;align-items:center;gap:12px;margin-top:14px;padding:12px 18px;border-radius:999px;
  background:#fff;color:var(--text);font-weight:600;font-size:15px;border:1.5px solid var(--line);transition:background .3s,color .3s;position:relative;
}
.hashtag:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.hashtag svg{width:16px;height:16px;flex:none}
.hashtag{max-width:100%;text-align:left}
.hashtag span.tag{word-break:break-all}
@media(max-width:420px){.hashtag{font-size:13px;padding:10px 14px}}
.hashtag__tip{
  position:absolute;left:50%;top:-10px;transform:translate(-50%,-100%) scale(.8);opacity:0;
  background:var(--turq);color:#fff;font-weight:600;padding:6px 12px;border-radius:8px;font-size:13px;white-space:nowrap;
  transition:transform .35s cubic-bezier(.34,1.56,.64,1),opacity .25s;pointer-events:none;
}
.hashtag.is-copied .hashtag__tip{opacity:1;transform:translate(-50%,-100%) scale(1)}
.steps__note{margin-top:28px;font-size:14px;color:var(--text-dim)}
.steps__cta{margin-top:clamp(36px,4vw,60px)}

/* ---------- Gallery ---------- */
.gallery__head{display:grid;gap:16px;margin-bottom:clamp(40px,5vw,80px)}
.gallery__head p{font-size:clamp(18px,1.7vw,26px);font-weight:500;color:var(--text-dim)}
.gallery__head p b{color:var(--navy);font-weight:700}
.mosaic{display:grid;gap:clamp(12px,1.6vw,24px);grid-template-columns:repeat(2,1fr)}
.mosaic .photo{aspect-ratio:4/3}
.mosaic .photo--tall{aspect-ratio:4/5}
@media(min-width:900px){
  .mosaic{grid-template-columns:repeat(12,1fr);grid-auto-rows:minmax(120px,auto)}
  .m1{grid-column:1/8;grid-row:1/3}
  .m2{grid-column:8/-1;grid-row:1/2}
  .m3{grid-column:8/-1;grid-row:2/3}
  .m4{grid-column:1/5;grid-row:3/4}
  .m5{grid-column:5/9;grid-row:3/4}
  .m6{grid-column:9/-1;grid-row:3/4}
  .mosaic .photo,.mosaic .photo--tall{aspect-ratio:auto;min-height:260px}
}
.mosaic .photo .photo__cap{opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s}
.mosaic .photo:hover .photo__cap{opacity:1;transform:none}
@media(hover:none){.mosaic .photo .photo__cap{opacity:1;transform:none}}

/* ---------- Gift (navy) ---------- */
.gift{overflow:hidden}
.gift .glow{position:absolute;width:70vmin;height:70vmin;border-radius:50%;background:radial-gradient(circle,rgba(0,147,181,.55),rgba(0,147,181,0) 65%);left:70%;top:20%;transform:translate(-50%,-50%);pointer-events:none;will-change:transform}
.gift__head{grid-column:1/-1}
.gift__body{grid-column:1/-1}
@media(min-width:1000px){.gift__head{grid-column:1/8}.gift__body{grid-column:8/-1}}
.gift h2 .coddy{color:#fff}
.gift__course{
  margin-top:36px;display:inline-flex;flex-direction:column;gap:6px;padding:24px 28px;border-radius:20px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
}
.gift__course small{font-size:13px;font-weight:500;color:var(--turq-soft)}
.gift__course b{font-size:clamp(20px,1.9vw,28px);font-weight:800;letter-spacing:-.01em}
.gift__body>p{margin-bottom:26px;max-width:44ch}
.perks{counter-reset:perk;border-top:1px solid rgba(255,255,255,.14)}
.perks li{display:flex;gap:18px;align-items:baseline;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.14);font-weight:500;font-size:clamp(16px,1.3vw,20px)}
.perks li::before{content:counter(perk,decimal-leading-zero);counter-increment:perk;font-size:13px;font-weight:500;color:var(--turq-soft);min-width:28px}
.gift__cta{margin-top:36px}

/* ---------- Form ---------- */
.form-section .grid{align-items:start}
.form__head{grid-column:1/-1}
.form__card{grid-column:1/-1}
@media(min-width:1000px){.form__head{grid-column:1/6;position:sticky;top:110px}.form__card{grid-column:7/-1}}
.form__head p{color:var(--text-dim);margin-top:18px;max-width:36ch}
.form__head .mini{margin-top:30px;display:flex;gap:14px;align-items:center;color:var(--text-dim);font-size:14px}
.form__head .mini img{width:44px;height:44px;border-radius:50%}
.card{background:var(--cream);border-radius:28px;padding:clamp(24px,3.5vw,48px);position:relative;overflow:hidden}
.field{position:relative;border-bottom:2px solid var(--line);padding:22px 0 10px;transition:border-color .3s}
.field.err{border-color:#D9534F}
.field input{width:100%;background:none;border:0;color:var(--text);font:inherit;font-size:18px;padding:6px 0;outline:0}
.field label{position:absolute;left:0;top:28px;color:var(--text-dim);pointer-events:none;transition:all .3s cubic-bezier(.76,0,.24,1);font-size:17px}
.field input:focus~label,.field input:not(:placeholder-shown)~label{top:4px;font-size:13px;font-weight:600;color:var(--turq-dp)}
.field:focus-within{border-color:var(--turq)}
.field.is-error{border-color:#D9534F}
.field .err{position:absolute;right:0;top:4px;font-size:12px;color:#D9534F;opacity:0;transition:opacity .3s}
.field.is-error .err{opacity:1}
.fields{display:grid;gap:8px}
@media(min-width:640px){.fields{grid-template-columns:1fr 1fr;gap:8px 28px}}
.consent{display:flex;gap:14px;align-items:flex-start;margin:28px 0;font-size:14px;color:var(--text-dim);cursor:pointer}
.consent input{position:absolute;opacity:0;width:0;height:0}
.consent .box{flex:none;width:22px;height:22px;border-radius:7px;border:1.5px solid rgba(0,0,0,.25);display:grid;place-items:center;transition:background .3s,border-color .3s;margin-top:1px}
.consent .box svg{width:13px;height:13px;stroke:#fff;stroke-width:3;fill:none;stroke-dasharray:20;stroke-dashoffset:20;transition:stroke-dashoffset .35s .05s}
.consent input:checked~.box{background:var(--turq);border-color:var(--turq)}
.consent input:checked~.box svg{stroke-dashoffset:0}
.consent input:focus-visible~.box{outline:3px solid var(--turq);outline-offset:3px}
.consent.is-error .box{border-color:#D9534F}
.consent a{color:var(--text);border-bottom:1px solid var(--turq)}
.form__submit{width:100%;justify-content:center;padding-block:21px}
.form__submit[disabled]{opacity:.7;pointer-events:none}
.spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .8s linear infinite;display:none}
.is-loading .spinner{display:block}.is-loading .arr{display:none}
@keyframes spin{to{transform:rotate(1turn)}}
.form__hint{margin-top:14px;text-align:center;font-size:13px;color:var(--text-dim)}
.success{
  position:absolute;inset:0;background:var(--cream);display:flex;flex-direction:column;justify-content:center;gap:16px;
  padding:clamp(24px,3.5vw,48px);opacity:0;pointer-events:none;transform:translateY(20px);transition:opacity .5s,transform .5s cubic-bezier(.76,0,.24,1);
}
.card.is-done .success{opacity:1;pointer-events:auto;transform:none}
.card.is-done form{visibility:hidden}
.success .check{width:64px;height:64px;border-radius:50%;background:var(--turq);display:grid;place-items:center}
.success .check svg{width:28px;height:28px;stroke:#fff;stroke-width:3;fill:none}
.success h3{font-size:clamp(28px,3vw,44px)}
.success p{color:var(--text-dim);max-width:40ch}

/* ---------- Partner / organizer ---------- */
.partners{display:grid;gap:clamp(16px,2vw,32px)}
@media(min-width:900px){.partners{grid-template-columns:1.2fr 1fr}}
.pcard{background:#fff;border-radius:28px;padding:clamp(28px,3.5vw,52px);display:flex;flex-direction:column;gap:20px;position:relative;overflow:hidden;transition:box-shadow .4s,transform .4s}
.pcard:hover{box-shadow:0 30px 60px -40px rgba(0,56,79,.35);transform:translateY(-3px)}
.pcard p{color:var(--text-dim);max-width:52ch}
.pcard>.coddy{font-size:clamp(44px,4.5vw,72px);line-height:1;color:var(--turq)}
.pcard img.ano{width:96px;height:96px;border-radius:50%}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:6px;padding-top:24px;border-top:1px solid var(--line)}
.stat b{display:block;font-size:clamp(28px,3vw,48px);font-weight:700;letter-spacing:-.05em;line-height:1;color:var(--text)}
.stat span{font-size:14px;color:var(--text-dim);display:block;margin-top:6px}
.pcard .btn{align-self:flex-start;margin-top:auto}

/* ---------- Final CTA (navy) ---------- */
.final{text-align:center;padding-block:clamp(100px,14vw,200px)}
.final h2{font-size:clamp(40px,7vw,120px);margin:0 auto 24px}
.final p{font-size:clamp(17px,1.6vw,24px);max-width:34ch;margin:0 auto 40px;text-wrap:balance}

/* ---------- Footer (структура coddyschool.com) ---------- */
.footer{background:var(--navy-2);color:#fff;padding:clamp(56px,7vw,90px) var(--pad) 36px}
.footer__in{max-width:1600px;margin-inline:auto}
.footer__top{display:grid;gap:40px;padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.12)}
@media(min-width:900px){.footer__top{grid-template-columns:1.3fr repeat(4,1fr)}}
.footer__brand .coddy{font-size:40px;color:#fff;line-height:1}
.footer__brand p{margin-top:14px;color:rgba(255,255,255,.65);font-size:14px;max-width:30ch}
.footer__contacts{margin-top:22px;display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:15px}
.footer__contacts a:hover{color:var(--turq-soft)}
.footer__contacts small{font-weight:400;color:rgba(255,255,255,.55);font-family:var(--hint)}
.footer h4{font-size:15px;font-weight:700;margin-bottom:14px}
.footer__col a{display:block;font-size:14px;color:rgba(255,255,255,.7);padding:5px 0;transition:color .25s}
.footer__col a:hover{color:#fff}
.socials{display:flex;gap:10px;margin-top:22px;flex-wrap:wrap}
.socials a{height:36px;padding:0 14px;border-radius:99px;display:grid;place-items:center;background:rgba(255,255,255,.1);font-weight:600;font-size:13px;transition:background .3s,color .3s}
.socials a:hover{background:var(--turq);color:#fff}
.footer__bottom{padding-top:28px;display:grid;gap:14px;font-size:13px;color:rgba(255,255,255,.55)}
.footer__bottom a{color:rgba(255,255,255,.75);border-bottom:1px solid transparent}
.footer__bottom a:hover{border-color:var(--turq-soft)}
.footer__legal{display:flex;flex-wrap:wrap;gap:8px 22px}
.footer__bottom .coddy{color:#fff;font-size:1.1em}

/* ---------- Mobile sticky CTA ---------- */
.sticky-cta{position:fixed;left:16px;right:16px;bottom:16px;z-index:40;display:none;transform:translateY(140%);transition:transform .5s cubic-bezier(.76,0,.24,1)}
.sticky-cta .btn{width:100%;justify-content:center;box-shadow:0 10px 30px rgba(0,56,79,.3)}
.sticky-cta.is-visible{transform:none}
@media(max-width:800px){.sticky-cta{display:block}}

/* ---------- Reveal helpers ---------- */
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em;white-space:pre}
.split .w>span{display:inline-block;will-change:transform;text-decoration:inherit}
[data-reveal]{opacity:0;transform:translateY(30px)}
[data-clip] img{transform:scale(1.25)}
[data-clip]{clip-path:inset(0 100% 0 0 round 24px)}
.no-js [data-reveal],.no-js [data-clip]{opacity:1;transform:none;clip-path:none}
.no-js [data-clip] img{transform:none}

/* ---------- Intro (Cuberto-style шторка) ---------- */
.intro{position:fixed;inset:0;z-index:200;background:var(--navy);display:flex;align-items:flex-end;justify-content:space-between;padding:clamp(20px,4vw,56px);color:#fff;will-change:transform}
.intro .coddy{font-size:clamp(40px,8vw,120px);line-height:.9;color:#fff;overflow:hidden;display:block}
.intro .coddy span{display:inline-block;transform:translateY(110%)}
.intro__n{font-size:clamp(28px,4vw,56px);font-weight:700;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.intro__n i{font-style:normal;font-weight:400;color:var(--turq-soft);font-size:.6em;margin-left:.1em}
.no-js .intro,.intro.is-done{display:none}
/* ---------- Scroll progress ---------- */
.progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:60;background:var(--turq);transform-origin:left;transform:scaleX(0);pointer-events:none}
/* ---------- Photo hover ---------- */
.mosaic .photo img,.about__tea .photo img,.hero__photo img{transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
.mosaic .photo:hover img,.about__tea .photo:hover img{transform:scale(1.05)!important}

/* ---------- Cursor ---------- */
.mf-cursor{color:var(--turq)}
.mf-cursor-text{color:#fff;font-weight:700;font-size:13px}
@media(hover:none){.mf-cursor{display:none}}

@media (prefers-reduced-motion:reduce){
  *:not(.marquee__track),*::before,*::after{animation:none!important;transition:none!important}
  [data-reveal],[data-clip]{opacity:1;transform:none;clip-path:none}
  [data-clip] img{transform:none}
}
