/* SHOWS ON ICE · NUANU, BALI — макет главной
   Композиция задана до сборки: сетка 12/8/4, один ритм полос, шкалы кеглей и отступов.
   Законы — ~/.claude/WEB-DESIGN.md, раздел 7. Правятся числа, не структура. */

@import url('fonts.css');

:root{
  /* ---- сетка (7.1) ---- */
  --container:1320px;
  --pad:16px;
  --cols:4;
  --gap:16px;

  /* ---- ритм полос (7.2): одно число, модификаторов нет ---- */
  --rhythm:96px;

  /* ---- шкала отступов (7.6) ---- */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px;
  --s6:32px; --s7:48px; --s8:64px; --s9:96px;

  /* ---- шкала кеглей (7.4): у уровня один размер ---- */
  --t-xs:12px;
  --t-s:14px;
  --t-m:17px;
  --t-l:21px;
  --t-xl:clamp(30px,2.7vw,38px);      /* все h2 страницы */
  --t-hero:clamp(40px,5vw,68px);      /* только первый экран */

  --lh-text:1.62;
  --lh-head:1.06;

  /* ---- палитра: ночная сцена, лёд, золото ---- */
  --bg:#05080F;
  --bg-2:#0A1223;
  --glass:rgba(255,255,255,.045);
  --glass-2:rgba(255,255,255,.07);
  --ink:#EFF3F9;
  --ink-dim:#93A5BE;
  --gold:#E7B75C;
  --gold-soft:#F5E3B4;
  --ice:#7FB6E8;
  --rule:rgba(239,243,249,.12);
  --rule-gold:rgba(231,183,92,.42);
  --on-accent:#05080F;

  /* ---- радиусы: концентрические (7.19) ---- */
  --r-lg:20px; --r-md:12px; --r-sm:8px; --r-pill:999px;

  /* ---- один размер кнопки на страницу (7.19) ---- */
  --btn-h:54px;
  --btn-w:220px;
  --head-h:72px;

  --fd:'Unbounded','Helvetica Neue',Arial,sans-serif;
  --fs:'Inter','Helvetica Neue',Arial,'PingFang SC','Microsoft YaHei',sans-serif;
}
@media (min-width:768px){ :root{--pad:24px;--cols:8;--gap:20px;--rhythm:128px;--head-h:80px} }
@media (min-width:1024px){ :root{--pad:48px;--cols:12;--gap:24px;--rhythm:160px} }

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--fs);font-size:var(--t-m);line-height:var(--lh-text);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,video{max-width:100%;height:auto;display:block}
figure,dl,dd,blockquote{margin:0}
a{color:inherit}
ul,ol{margin:0;padding:0;list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (max-width:767px){ input,textarea,select{font-size:16px !important} }

/* ---- контейнер и сетка (7.1) ---- */
.container{width:min(100% - var(--pad) * 2, var(--container));margin-inline:auto}
.grid{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:var(--gap)}
.c-12{grid-column:span var(--cols)}
.c-8{grid-column:span var(--cols)}
.c-7{grid-column:span var(--cols)}
.c-6{grid-column:span var(--cols)}
.c-5{grid-column:span var(--cols)}
.c-4{grid-column:span var(--cols)}
@media (min-width:768px){
  .c-8{grid-column:span 8} .c-7{grid-column:span 8} .c-6{grid-column:span 4}
  .c-5{grid-column:span 4} .c-4{grid-column:span 4}
}
@media (min-width:1024px){
  .c-8{grid-column:span 8} .c-7{grid-column:span 7} .c-6{grid-column:span 6}
  .c-5{grid-column:span 5} .c-4{grid-column:span 4}
}

/* ---- полоса (7.2): расстояние держит секция ---- */
.sec{padding-block:calc(var(--rhythm) / 2)}
.sec--fill{background:var(--bg-2)}
section[id]{scroll-margin-top:calc(var(--head-h) + 24px)}   /* 2.36 */

/* ---- шапка полосы: только объявление (7.13), одна ось — центр (7.3) ---- */
/* Шапка полосы и её содержимое — одна группа: расстояние вдвое меньше внешнего
   поля полосы на любой ширине, 24 / 32 / 40 (7.5). */
.sec__head{margin-bottom:calc(var(--rhythm) / 4);text-align:center}
.sec__head h2{margin-inline:auto;max-width:20ch}
.sec__head .lead{margin:var(--s5) auto 0;max-width:60ch;color:var(--ink-dim)}
.sec__act{margin-top:var(--s8);text-align:center}

/* ---- типографика (7.4, 7.8) ---- */
h1,h2,h3{font-family:var(--fd);margin:0;letter-spacing:-.02em}
h1{font-size:var(--t-hero);line-height:var(--lh-head);font-weight:700}
h2{font-size:var(--t-xl);line-height:var(--lh-head);font-weight:700}
h3{font-size:var(--t-l);line-height:1.25;font-weight:500;letter-spacing:-.01em}
p{margin:0 0 var(--s3)}
p:last-child{margin-bottom:0}
.prose{max-width:64ch;color:var(--ink-dim)}
.prose p + p{margin-top:var(--s4)}
.kicker{font-family:var(--fs);font-size:var(--t-xs);font-weight:600;
        letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 var(--s5)}
.gold{color:var(--gold-soft)}
.num{font-family:var(--fd);font-weight:700;letter-spacing:-.03em;
     font-variant-numeric:tabular-nums}

/* тонкая линия-орнамент под заголовком полосы (инлайновый svg — 2.21) */
.orn{display:block;margin:var(--s5) auto 0;width:200px;height:10px;color:var(--rule-gold)}

/* ---- кнопки: один акцент на экран (7.7), один размер (7.19) ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
     min-height:var(--btn-h);min-width:var(--btn-w);padding-inline:var(--s6);
     background:var(--gold);color:var(--on-accent);border-radius:var(--r-pill);
     font-family:var(--fs);font-weight:600;font-size:var(--t-s);letter-spacing:.1em;
     text-transform:uppercase;text-decoration:none;
     transition:background .25s ease,transform .25s ease,box-shadow .25s ease}
.btn:hover{background:var(--gold-soft);transform:translateY(-2px);
           box-shadow:0 12px 32px rgba(231,183,92,.22)}
.btn--ghost{background:transparent;border:1px solid var(--rule-gold);color:var(--gold-soft);
            box-shadow:none}
.btn--ghost:hover{background:rgba(231,183,92,.1);box-shadow:none}
.btn--wide{width:100%}
.btn svg{width:16px;height:16px;flex:0 0 auto}

/* ---- шапка сайта: полоса с высотой, а не строка (7.19) ---- */
.top{position:sticky;top:0;z-index:50;height:var(--head-h);
     background:rgba(5,8,15,.78);backdrop-filter:blur(18px);
     border-bottom:1px solid var(--rule)}
.top__in{height:100%;display:flex;align-items:center;gap:var(--s5)}
.top__logo{margin-right:auto;display:flex;align-items:center;gap:var(--s3);min-height:44px;
           text-decoration:none}   /* вправо толкает первый элемент (2.14) */
.top__logo b{font-family:var(--fd);font-weight:700;font-size:var(--t-m);letter-spacing:.04em;
             line-height:1.1;text-transform:uppercase}
.top__logo span{display:block;font-size:var(--t-xs);letter-spacing:.2em;color:var(--gold);
                text-transform:uppercase;font-weight:600}
.nav{display:none;gap:var(--s6);font-size:var(--t-s);letter-spacing:.04em}
.nav a{text-decoration:none;color:var(--ink-dim);transition:color .2s ease}
.nav a:hover{color:var(--gold-soft)}
.lang{display:none;gap:var(--s1);align-items:center;
      background:var(--glass);border:1px solid var(--rule);border-radius:var(--r-pill);padding:var(--s1)}
.lang a{display:flex;align-items:center;justify-content:center;min-width:38px;height:32px;
        font-size:var(--t-xs);font-weight:600;letter-spacing:.06em;color:var(--ink-dim);
        text-decoration:none;border-radius:var(--r-pill)}
.lang a[aria-current="true"]{color:var(--on-accent);background:var(--gold)}
.top .btn{display:none}
.burger{display:flex;align-items:center;justify-content:center;width:44px;height:44px;
        background:var(--gold);border-radius:var(--r-pill);color:var(--on-accent)}
.burger svg{width:18px;height:18px}
@media (min-width:768px){ .lang{display:flex} }
/* Переключатель языка — навигация, а на планшете по ней жмут пальцем: карман растёт
   до 44, кегль прежний (2.19). Ряд шапки пересчитан: 168 + 196 + 44 из 720 (2.14). */
@media (min-width:768px) and (max-width:1023px){ .lang a{min-width:44px;height:44px} }
@media (min-width:1024px){
  .nav{display:flex}
  .top .btn{display:inline-flex;min-width:auto;min-height:44px;padding-inline:var(--s5)}
  .burger{display:none}
}

/* мобильное меню */
.menu{position:fixed;inset:0;z-index:60;background:var(--bg);padding:var(--s6) var(--pad) var(--s8);
      display:none;flex-direction:column}
.menu.is-open{display:flex}
.menu__top{display:flex;justify-content:flex-end;height:var(--head-h);align-items:center}
.menu__close{width:44px;height:44px;display:flex;align-items:center;justify-content:center;
             color:var(--gold)}
.menu__close svg{width:20px;height:20px}
.menu__nav{margin-top:var(--s6);display:flex;flex-direction:column;gap:var(--s5)}
.menu__nav a{font-family:var(--fd);font-size:26px;font-weight:600;text-decoration:none;
             letter-spacing:-.02em}
.menu__lang{margin-top:auto;display:flex;gap:var(--s2);flex-wrap:wrap}
.menu__lang a{display:flex;align-items:center;justify-content:center;min-width:56px;height:44px;
              border:1px solid var(--rule);border-radius:var(--r-pill);text-decoration:none;
              font-size:var(--t-s);font-weight:600;color:var(--ink-dim)}
.menu__lang a[aria-current="true"]{color:var(--on-accent);background:var(--gold);border-color:var(--gold)}
.menu .btn{margin-top:var(--s6)}

/* ---- первый экран: вход, живёт по своим правилам (границы 7.2) ---- */
.hero{position:relative;min-height:620px;display:flex;align-items:flex-end;
      padding-block:var(--s9) var(--s8);overflow:hidden}
.hero__media{position:absolute;inset:0;z-index:0;
             background:var(--bg-2) center/cover no-repeat}
.hero__media video,.hero__media img{width:100%;height:100%;object-fit:cover;object-position:50% 42%}
.hero__media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(5,8,15,.62) 0%,rgba(5,8,15,.42) 38%,rgba(5,8,15,.93) 100%)}
/* На узком экране под cover видно 31% ширины кадра (2.33): держим в окне лёд и луч,
   а не лицо артиста, и усиливаем плёнку — текст лежит поверх. */
@media (max-width:767px){
  .hero__media video,.hero__media img{object-position:26% 45%}
  .hero__media::after{background:linear-gradient(180deg,rgba(5,8,15,.72) 0%,rgba(5,8,15,.62) 40%,rgba(5,8,15,.95) 100%)}
}
/* width не задаём: его держит .container, а модуль перебил бы его целиком (2.12) */
.hero__in{position:relative;z-index:1}
.hero__mark{display:inline-flex;align-items:center;gap:var(--s3);padding:var(--s2) var(--s4);
            border:1px solid var(--rule-gold);border-radius:var(--r-pill);
            background:rgba(5,8,15,.4);backdrop-filter:blur(8px);
            font-size:var(--t-xs);font-weight:600;letter-spacing:.2em;text-transform:uppercase;
            color:var(--gold-soft)}
.hero h1{margin-top:var(--s5);max-width:14ch}
.hero__sub{margin-top:var(--s5);max-width:52ch;color:var(--ink-dim);font-size:var(--t-l);
           line-height:1.45}
.hero__bar{margin-top:var(--s8);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s5)}
.hero__when{display:flex;flex-direction:column;gap:var(--s1);padding-right:var(--s6);
            border-right:1px solid var(--rule)}
.hero__when dt{font-size:var(--t-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim)}
.hero__when dd{margin:0;font-family:var(--fd);font-weight:600;font-size:var(--t-l);
               color:var(--gold-soft);letter-spacing:-.01em}
/* отсчёта может не быть: дата не задана или не распознана — черта тогда ни к чему */
.hero__when:last-child{border-right:0;padding-right:0}
.hero__cta{margin-top:var(--s7);display:flex;flex-wrap:wrap;gap:var(--s4)}
@media (max-width:767px){
  .hero__when{border-right:0;padding-right:0}
  .hero__bar{gap:var(--s5)}
  /* На телефоне заголовок крупный, и подзаголовок с ним спорил: 21 против 32.
     Кегль подзаголовка уходит на ступень вниз, расстояния внутри экрана
     сжимаются — группа «заголовок, дата, действие» читается как одна (7.5). */
  .hero__sub{margin-top:var(--s4);font-size:var(--t-m)}
  .hero__bar{margin-top:var(--s6)}
  .hero__cta{margin-top:var(--s6)}
}
@media (min-width:1024px){ .hero{min-height:calc(100vh - var(--head-h))} }

/* таймер */
.clock{display:flex;gap:var(--s2)}
.clock__cell{min-width:64px;padding:var(--s3) var(--s2);text-align:center;
             background:var(--glass);border:1px solid var(--rule);border-radius:var(--r-md);
             backdrop-filter:blur(8px)}
.clock__num{font-family:var(--fd);font-weight:700;font-size:26px;line-height:1;
            font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.clock__lbl{margin-top:var(--s2);font-size:var(--t-xs);letter-spacing:.16em;
            text-transform:uppercase;color:var(--ink-dim)}

/* ---- афиша: ряд 1-4 карточек флексом (2.16) — сироты нет по построению ---- */
.bill{display:flex;flex-wrap:wrap;gap:var(--gap);justify-content:center}
.bill__item{flex:1 1 340px;max-width:560px;display:flex;flex-direction:column;
            background:var(--glass);border:1px solid var(--rule);border-radius:var(--r-lg);
            overflow:hidden;transition:border-color .3s ease,transform .3s ease}
.bill__item:hover{border-color:var(--rule-gold);transform:translateY(-4px)}
.bill__shot{position:relative;aspect-ratio:1280 / 900;background:var(--bg-2)}
.bill__shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bill__body{padding:var(--s6);display:flex;flex-direction:column;flex:1 1 auto}
.bill__when{display:flex;align-items:baseline;gap:var(--s3);color:var(--gold-soft)}
.bill__day{font-size:26px;line-height:1}
.bill__mon{font-size:var(--t-s);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}
.bill__title{margin:var(--s4) 0 0}
.bill__note{margin:var(--s2) 0 0;color:var(--ink-dim);font-size:var(--t-s)}
.bill__cta{margin-top:var(--s6);align-self:flex-start}

/* ---- блок шоу: высоту ряда задаёт текст, кадр кадрируется под неё (7.20, 2.26) ---- */
.show__row{align-items:stretch}
.show__side{display:flex;flex-direction:column;min-height:0}
.show__poster{flex:0 0 auto;position:relative;aspect-ratio:1234 / 877;overflow:hidden;
              background:var(--bg-2);
              border-radius:var(--r-lg);border:1px solid var(--rule)}
/* margin-top:auto прижимает кнопку к низу колонки, и когда текста в соседней
   мало, она садится вплотную на край кадра. Зону отчуждения держит сам кадр,
   а auto добавляет остаток сверх неё (7.14). */
.show__poster{margin-bottom:var(--s5)}
.show__side .btn{margin-top:auto;align-self:flex-start}
.show__poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Шапка шоу — своя ячейка ряда. До 1024 она идёт первой по разметке
   (надзаголовок, название, потом кадр), с 1024 грид ставит её над текстом
   в правую колонку, а кадр занимает оба ряда — вид десктопа прежний (2.35). */
.show__head{grid-column:span var(--cols)}
.show__head h2{margin-top:var(--s3)}
@media (min-width:1024px){
  .show__head{grid-column:7 / span 6;grid-row:1}
  .show__side{grid-column:1 / span 5;grid-row:1 / span 2}
  .show__body{grid-column:7 / span 6;grid-row:2}
}
/* 32, а не 48: на телефоне внешнее поле полосы тоже 48, и внутренняя дырка
   переставала читаться как внутренняя (7.5). */
.show__facts{margin-top:var(--s6);display:flex;flex-wrap:wrap;gap:var(--s6)}
.show__fact dt{font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}
.show__fact dd{margin:var(--s2) 0 0;font-family:var(--fd);font-weight:600;font-size:var(--t-l);
               color:var(--gold-soft);letter-spacing:-.01em}
/* Порог двух колонок посчитан арифметикой, а не взят круглым (7.9). В половине
   планшетной сетки колонке достаётся 350 px, и проза идёт 33 знака в строке при
   норме 45-75 (7.8); под 45 знаков нужно 477 px, то есть окно от 1024. */
@media (max-width:1023px){
  .show__row > *{grid-column:span var(--cols)}
  /* Расстояние = принадлежность (7.5). Название и кадр — одна группа: их держит
     один gap ряда (16 на телефоне, 20 на планшете). Описание отделено вдвое
     шире и при этом остаётся ТЕСНЕЕ ритма полос (40 и 44 против 48 и 64). */
  .show__body{margin-top:var(--s5)}
  .show__poster{margin-bottom:var(--s6)}
  .show__side .btn{margin-top:0}   /* зазор держит кадр, иначе оба слагаемых сложатся (2.34) */
}

/* ---- табы ---- */
/* Блок табов принадлежит своему шоу: расстояние до него ровно вдвое меньше
   внешнего поля полосы на любой ширине — 24 / 32 / 40 (7.5). */
.tabs{margin-top:calc(var(--rhythm) / 4)}
.tabs__list{display:flex;flex-wrap:wrap;gap:var(--s2)}
.tabs__btn{min-height:44px;padding:0 var(--s5);border-radius:var(--r-pill);
           background:var(--glass);border:1px solid var(--rule);
           font-size:var(--t-s);color:var(--ink-dim);white-space:nowrap;
           transition:color .2s ease,background .2s ease,border-color .2s ease}
.tabs__btn:hover{color:var(--ink)}
.tabs__btn[aria-selected="true"]{background:rgba(231,183,92,.14);border-color:var(--rule-gold);
                                 color:var(--gold-soft);font-weight:600}
.tabs__panel{padding-top:calc(var(--rhythm) / 4)}
.tabs__panel[hidden]{display:none}

/* галерея: число карточек кратно числу колонок (7.15) */
.gal{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));
     column-gap:var(--gap);row-gap:calc(var(--gap) * 2)}
.gal__item{grid-column:span var(--cols);position:relative;aspect-ratio:3 / 2;
           background:var(--bg-2);
           overflow:hidden;border-radius:var(--r-md);border:1px solid var(--rule)}
.gal__item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
               transition:transform .6s ease}
.gal__item:hover img{transform:scale(1.05)}
@media (min-width:768px){ .gal__item{grid-column:span 4} }

.video-wrap{position:relative;aspect-ratio:16 / 9;border-radius:var(--r-lg);overflow:hidden;
            border:1px solid var(--rule);background:var(--bg-2)}
.video-wrap video,.video-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-note{margin-top:var(--s4);color:var(--ink-dim);font-size:var(--t-s)}

/* отзывы: ряды дышат вдвое шире колонок (7.12) */
.revs{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));
      column-gap:var(--gap);row-gap:calc(var(--gap) * 2)}
.rev{grid-column:span var(--cols);background:var(--glass);border:1px solid var(--rule);
     border-radius:var(--r-lg);padding:var(--s6);display:flex;flex-direction:column}
.rev__stars{color:var(--gold);letter-spacing:.24em;font-size:var(--t-s)}
.rev__text{margin:var(--s4) 0 0;color:var(--ink-dim)}
@media (min-width:768px){ .rev{grid-column:span 4} }

/* ---- место проведения: высоту ряда задаёт текст (7.20) ---- */
.place__row{align-items:stretch}
.place__side{display:flex;flex-direction:column;min-height:0}
.place__shot{flex:1 1 0;min-height:0;position:relative;overflow:hidden;
             background:var(--bg-2);
             border-radius:var(--r-lg);border:1px solid var(--rule)}
.place__shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Адрес принадлежит заголовку блока: 12 к нему, 48 до списка (7.5).
   Полный тон, а не приглушённый: среди подписей это единственный факт (7.17). */
.place__addr{margin-top:var(--s3);margin-bottom:0;color:var(--ink)}
.place__list{margin-top:var(--s6)}
.place__list li{display:flex;gap:var(--s4);padding-block:var(--s5);border-top:1px solid var(--rule)}
.place__list li:first-child{border-top:0;padding-top:0}
.place__list svg{flex:0 0 auto;width:22px;height:22px;color:var(--gold);margin-top:var(--s1)}
.place__list p{color:var(--ink-dim)}
.place__act{margin-top:calc(var(--rhythm) / 4)}
@media (max-width:1023px){        /* тот же счёт, что у блока шоу (7.9) */
  .place__row > *{grid-column:span var(--cols)}
  .place__shot{position:relative;aspect-ratio:3 / 2;flex:0 0 auto}
  .place__body{margin-top:var(--s5)}   /* внутренняя дырка тесней ритма полос (7.5) */
}

/* ---- FAQ ---- */
.faq{max-width:880px;margin-inline:auto}
.faq details{border-bottom:1px solid var(--rule)}
.faq summary{display:flex;align-items:center;justify-content:space-between;gap:var(--s5);
             min-height:76px;padding-block:var(--s5);cursor:pointer;list-style:none;
             font-family:var(--fd);font-size:var(--t-l);font-weight:500;letter-spacing:-.01em}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";flex:0 0 auto;width:22px;height:22px;
  background:var(--gold);border-radius:var(--r-pill);
  -webkit-mask:linear-gradient(#000,#000) center/10px 2px no-repeat,
               linear-gradient(#000,#000) center/2px 10px no-repeat;
          mask:linear-gradient(#000,#000) center/10px 2px no-repeat,
               linear-gradient(#000,#000) center/2px 10px no-repeat;
  transform:rotate(0deg);transition:transform .3s ease}
.faq details[open] summary::after{
  -webkit-mask:linear-gradient(#000,#000) center/10px 2px no-repeat;
          mask:linear-gradient(#000,#000) center/10px 2px no-repeat}
.faq__a{padding:0 0 var(--s6);color:var(--ink-dim);max-width:66ch}

/* ---- подвал: порядок = приоритет, служебное под чертой (7.13) ---- */
.foot{background:var(--bg-2);border-top:1px solid var(--rule);
      padding-block:calc(var(--rhythm) / 2)}
.foot__brand b{font-family:var(--fd);font-weight:700;font-size:26px;letter-spacing:-.01em;
               text-transform:uppercase;display:block}
.foot__brand span{display:block;margin-top:var(--s2);font-size:var(--t-xs);letter-spacing:.24em;
                  color:var(--gold);text-transform:uppercase;font-weight:600}
.foot__cta{margin-top:var(--s6)}
.foot__doors{margin-top:var(--s6);display:flex;flex-direction:column;gap:var(--s4)}
.foot__door{display:flex;align-items:center;gap:var(--s3);min-height:44px;font-size:var(--t-l);
            color:var(--gold-soft);text-decoration:none;font-family:var(--fd);font-weight:500;
            letter-spacing:-.01em}
.foot__door svg{width:20px;height:20px;color:var(--gold);flex:0 0 auto}
.foot__soc{margin-top:var(--s6);display:flex;gap:var(--s3);flex-wrap:wrap}
.foot__soc a{display:flex;align-items:center;justify-content:center;width:44px;height:44px;
             border:1px solid var(--rule);border-radius:var(--r-pill);color:var(--ink-dim);
             transition:color .2s ease,border-color .2s ease}
.foot__soc a:hover{color:var(--gold);border-color:var(--rule-gold)}
.foot__soc svg{width:18px;height:18px}
.foot__addr{color:var(--ink-dim)}
.foot__legal{margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--rule);
             display:flex;flex-wrap:wrap;gap:var(--s5);font-size:var(--t-s);color:var(--ink-dim)}
.foot__legal a{text-decoration:none}
.foot__legal a:hover{color:var(--gold-soft)}

/* ---- появление по скроллу: видимое состояние — состояние по умолчанию (2.6) ---- */
.js .reveal:not(.is-visible){opacity:0;transform:translateY(18px)}
.reveal{transition:opacity .7s cubic-bezier(.22,.61,.36,1),
                   transform .7s cubic-bezier(.22,.61,.36,1)}
@media (prefers-reduced-motion:reduce){
  .js .reveal:not(.is-visible){opacity:1;transform:none}
  .reveal,.gal__item img,.bill__item,.btn{transition:none}
}
