/* base.css — TerraUnit2 frozen-слой: reset + @font-face + токены.
   Источник токенов: Figma variables (get_variable_defs, node 2076:5308) + палитра REST.
   НЕ класть сюда стили секций/страниц. */

/* ---------- @font-face (self-host, latin+cyrillic субсеты) ---------- */
@font-face{font-family:"Onest";font-style:normal;font-weight:400;font-display:swap;
  src:url("../fonts/onest-400-cyrillic.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-400-latin.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-500-cyrillic.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-500-latin.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-700-cyrillic.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-700-latin.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;}
/* Playfair Display — используется ТОЛЬКО Bold Italic (акцент-заголовки), из токенов Figma */
@font-face{font-family:"Playfair Display";font-style:italic;font-weight:700;font-display:swap;
  src:url("../fonts/playfair-700i-cyrillic.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:700;font-display:swap;
  src:url("../fonts/playfair-700i-latin.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:500;font-display:swap;
  src:url("../fonts/playfair-500i-cyrillic.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:500;font-display:swap;
  src:url("../fonts/playfair-500i-latin.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;}

/* ---------- Reset (детерминированный, для стабильного пиксель-дифа) ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overflow-x:clip}
body{font-family:var(--font-sans);color:var(--c-brown);background:var(--c-white);
  font-size:16px;line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
ul,ol{list-style:none}
h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.1}
:focus-visible{outline:2px solid var(--c-green);outline-offset:2px}

/* ---------- Токены ---------- */
:root{
  /* цвета (имена = переменные Figma) */
  --c-green:#424C2C;        /* Green — акцент/кнопки */
  --c-brown:#2A2B1C;        /* Brown — основной тёмный текст */
  --c-cream:#FBF9F3;        /* White (Figma) — крем-фон страницы */
  --c-beige:#EFEBDE;        /* Light Grey — светлая поверхность */
  --c-gold:#DBCA94;         /* Gold — акцент */
  --c-grey:#747469;         /* Grey — вторичный текст */
  --c-white:#FFFFFF;
  --c-brown-30:rgba(42,43,28,.30);
  --c-brown-48:rgba(42,43,28,.48);

  /* шрифты */
  --font-sans:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-display:"Playfair Display",Georgia,serif; /* всегда italic 700 */

  /* типографика (font-size / line-height / weight / letter-spacing) — токены Figma.
     Размеры десктопа; адаптив через clamp в shared/page-css. */
  --fs-mega:80px;   --lh-mega:1;    /* Onest/Mega  w700 ls-1 */
  --fs-h1:60px;     --lh-h1:72px;   /* Onest/H1    w700 ls-1 */
  --fs-h2:44px;     --lh-h2:52px;   /* Onest/H2    w700 ls-1 */
  --fs-h5:24px;     --lh-h5:30px;   /* Onest/H5    w700 ls-1 */
  --fs-24:24px;     --lh-24:30px;   /* Onest/24-regular w400 */
  --fs-20:20px;     --lh-20:26px;   /* Onest/20-regular w400 */
  --fs-16:16px;     --lh-16:24px;   /* Onest/16-medium  w500 */
  --fs-14:14px;     --lh-14:20px;   /* Onest/14-regular w400 */
  --fs-disp-h1:60px; /* Playfair H1-italic w700 lh1 ls-1 */
  --fs-disp-h2:40px; /* Playfair H2-italic w700 lh1 ls-1 */
  --fs-disp-16:16px; /* Playfair 16-italic w700 lh1 */
  --ls-tight:-1px;

  /* лэйаут */
  --container:1240px;       /* контент-ширина (карта/секции 1240 при канве 1440) */
  --gutter:16px;
  --page-pad:100px;         /* боковой отступ страницы = (1440-1240)/2 */

  /* z-index-шкала */
  --z-base:1; --z-sticky:100; --z-header:200; --z-menu:900; --z-overlay:1000; --z-popup:1100;

  /* радиусы/тени (уточняются из узлов на вёрстке компонентов) */
  --r-sm:8px; --r-md:16px; --r-lg:24px; --r-pill:999px;
}

/* контейнер */
.container{width:100%;max-width:var(--container);margin-inline:auto;
  padding-inline:clamp(16px,calc(16px + (var(--page-pad) - 16px) * ((100vw - 390px)/(1440px - 390px))),var(--page-pad))}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Масштаб на больших экранах ----------
   Сайт свёрстан под канву 1440. На широких мониторах контент запирался в 1240
   и по краям оставалось пустое поле (фон). Обёртка .tu-zoom увеличивает ВЕСЬ
   сайт целиком: ширина = экран/множитель, zoom = множитель → визуально ровно
   экран, без горизонтальной прокрутки. zoom (не transform) перерисовывает
   текст/иконки чётко, не мылит. Множитель --tu-k и ширину --tu-w считает
   инлайн-скрипт в header (по ширине экрана, потолок 1.7). До 1920px --tu-k=1. */
.tu-zoom{width:var(--tu-w,100%);zoom:var(--tu-k,1)}

/* ---------- Reveal-анимации появления (fade + сдвиг), включает shared.js ---------- */
@media (prefers-reduced-motion:no-preference){
  /* will-change убран: на Safari он промотировал секции под hero в GPU-слои и пере-раскладывал
     видео-слой hero → скачок высоты при загрузке. Анимация работает и без него. */
  [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
  [data-reveal="left"]{transform:translateX(-56px)}
  [data-reveal="right"]{transform:translateX(56px)}
  [data-reveal="up"]{transform:translateY(48px)}
  [data-reveal].is-revealed{opacity:1;transform:none}
  /* Каскад объектов внутри секции: каждый объект появляется по очереди сверху вниз.
     Задержку (transition-delay) выставляет shared.js по порядку в DOM. */
  [data-reveal-item]{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s ease}
  [data-reveal-item].is-revealed{opacity:1;transform:none}
  /* Баннеры (data-reveal-whole) появляются целиком одним блоком — крупнее сдвиг и дольше,
     чтобы движение читалось на большой карточке. */
  [data-reveal-whole] [data-reveal-item]{transform:translateY(40px);
    transition:opacity .8s ease,transform .8s ease}
}
