/* ============================================================
   УЛЁНОКLIFE — стиль сказочного сайта
   Шрифты: Alegreya (заголовки/текст) · Rubik (интерфейс) · Neucha (акценты)
   ============================================================ */

/* ---------- темы ---------- */
:root{
  --paper:#faf5ea;
  --ink:#3a2a1c;
  --ink-soft:#7a6a58;
  --card:#fffdf8;
  --line:#e7dcc8;
  --shadow:0 10px 30px -12px rgba(58,42,28,.25);
  --r-lg:22px;
  --r-md:16px;
  --r-sm:12px;
  --c1:#d4662c;
  --c2:#7a9e5a;
  --soft:#fbf4e8;
}

.theme-home   { --c1:#d4662c; --c2:#7a9e5a; --soft:#fbf4e8; }
.theme-autumn { --c1:#c0392b; --c2:#e67e22; --soft:#fdf3e7; }
.theme-sun    { --c1:#e8a13d; --c2:#c99a2e; --soft:#fff8e7; }
.theme-winter { --c1:#5b8db8; --c2:#9cc3e0; --soft:#eef5fb; }
.theme-newyear{ --c1:#b02a37; --c2:#d4a017; --soft:#fdf0ee; }
.theme-night  { --c1:#4a5d8a; --c2:#8a6fb8; --soft:#f0f0fa; }
.theme-firefly{ --c1:#2f6b4f; --c2:#d8b84a; --soft:#eff6ee; }
.theme-spring { --c1:#5aa05a; --c2:#e884a8; --soft:#f2faef; }

/* ---------- база ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  font-family:'Alegreya',Georgia,serif;
  font-size:17.5px;
  line-height:1.65;
  color:var(--ink);
  background-color:var(--paper);
  background-image:
    radial-gradient(1200px 500px at 85% -5%, var(--soft) 0%, transparent 60%),
    radial-gradient(900px 420px at -10% 30%, var(--soft) 0%, transparent 55%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .035 0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
  background-attachment:fixed;
}
img{ max-width:100%; display:block; }
a{ color:var(--c1); text-decoration:none; }
a:hover{ text-decoration:underline; }

.skip{ position:absolute; left:-9999px; top:0; background:var(--ink); color:var(--paper); padding:.6rem 1rem; z-index:100; border-radius:0 0 10px 0; }
.skip:focus{ left:0; }

.wrap{ max-width:1080px; margin:0 auto; padding:0 22px; }
section{ padding:56px 0; }

.i{ width:1.15em; height:1.15em; flex:none; vertical-align:-.22em; }

/* ---------- типографика ---------- */
h1,h2,h3{ font-family:'Alegreya',Georgia,serif; font-weight:800; line-height:1.15; margin:0 0 .5em; }
h1{ font-size:clamp(2.1rem,5.2vw,3.3rem); }
h2{ font-size:clamp(1.5rem,3.4vw,2.1rem); }
h3{ font-size:1.15rem; }
p{ margin:.45em 0; }
em{ font-style:italic;}

.kicker{
  font-family:'Neucha',cursive;
  font-size:1.25rem;
  color:var(--c1);
  margin:0 0 .3em;
  letter-spacing:.02em;
}

.sec-h{ margin:0 0 1.3rem; }
.sec-h span{
  display:inline-block;
  position:relative;
  font-size:clamp(1.5rem,3.4vw,2.1rem);
  font-weight:800;
  padding-bottom:.25em;
}
.sec-h span::after{
  content:'';
  position:absolute; left:0; right:0; bottom:0;
  height:8px;
  background:radial-gradient(circle at 6px 4px, var(--c2) 4.5px, transparent 5px);
  background-size:12px 8px;
  background-repeat:repeat-x;
  opacity:.85;
}

/* ---------- кнопки ---------- */
.btn{
  display:inline-flex; align-items:center; gap:.55em;
  font-family:'Rubik',sans-serif; font-weight:600; font-size:1rem;
  padding:.85em 1.5em;
  border-radius:999px;
  background:var(--c1); color:#fff;
  border:2px solid var(--c1);
  box-shadow:0 6px 16px -6px color-mix(in srgb,var(--c1) 55%,transparent);
  transition:transform .18s, box-shadow .18s, background .18s;
  cursor:pointer;
  text-decoration:none !important;
}
.btn:hover{ transform:translateY(-2px) rotate(-.6deg); box-shadow:0 10px 22px -8px color-mix(in srgb,var(--c1) 60%,transparent); background:color-mix(in srgb,var(--c1) 88%,#000); }
.btn:active{ transform:translateY(0); }
.btn-sm{ font-size:.9rem; padding:.6em 1.15em; }
.btn-lg{ font-size:1.08rem; padding:1em 1.9em; }
.btn-block{ width:100%; justify-content:center; }
.btn-ghost{
  background:transparent; color:var(--ink);
  border-color:color-mix(in srgb,var(--ink) 45%,transparent);
  box-shadow:none;
}
.btn-ghost:hover{ background:color-mix(in srgb,var(--soft) 80%,#fff); color:var(--ink); border-color:var(--ink); }

/* ---------- шапка сайта ---------- */
.site-header{
  position:sticky; top:0; z-index:50;
  background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:blur(10px);
  border-bottom:1.5px solid var(--line);
}
.header-in{
  max-width:1240px; margin:0 auto; padding:10px 22px;
  display:flex; align-items:center; gap:18px;
}
.brand{ display:flex; align-items:center; gap:12px; text-decoration:none !important; color:var(--ink); }
.brand-mark{
  width:46px; height:46px; flex:none;
  display:grid; place-items:center;
  font-family:'Neucha',cursive; font-size:1.7rem; color:#fff;
  background:radial-gradient(circle at 30% 25%, var(--c2), var(--c1));
  border-radius:50% 46% 52% 48% / 48% 52% 46% 54%;
  box-shadow:inset 0 -3px 0 rgba(0,0,0,.12), 0 4px 10px -4px color-mix(in srgb,var(--c1) 50%,transparent);
  transform:rotate(-4deg);
}
.brand-text{ display:flex; flex-direction:column; line-height:1.15; }
.brand-name{ font-weight:800; font-size:1.12rem; }
.brand-tag{ font-family:'Neucha',cursive; font-size:.95rem; color:var(--ink-soft); }

.site-nav{ display:flex; gap:2px; margin-left:auto; flex-wrap:wrap; }
.nav-link{
  display:inline-flex; align-items:center; gap:.4em;
  font-family:'Rubik',sans-serif; font-size:.92rem; font-weight:500;
  color:var(--ink-soft);
  padding:.5em .8em; border-radius:999px;
  text-decoration:none !important;
  transition:color .15s, background .15s;
}
.nav-link .i{ width:1em; height:1em; color:var(--c1); }
.nav-link:hover{ color:var(--ink); background:var(--soft); }
.nav-link.active{ color:#fff; background:var(--c1); }
.nav-link.active .i{ color:#fff; }

.header-right{ display:flex; align-items:center; gap:12px; }

.burger{
  display:none; width:44px; height:44px;
  border:2px solid var(--line); border-radius:12px;
  background:var(--card); cursor:pointer;
  flex-direction:column; align-items:center; justify-content:center; gap:5px;
}
.burger span{ display:block; width:20px; height:2.5px; border-radius:2px; background:var(--ink); transition:.25s; }
.burger.open span:nth-child(1){ transform:translateY(7.5px) rotate(45deg); }
.burger.open span:nth-child(2){ opacity:0; }
.burger.open span:nth-child(3){ transform:translateY(-7.5px) rotate(-45deg); }

.mobile-nav{
  display:none; flex-direction:column; gap:2px;
  padding:14px 22px 20px;
  border-top:1.5px dashed var(--line);
  background:var(--paper);
}
.mobile-nav.open{ display:flex; }
.mobile-nav .nav-link{ font-size:1.05rem; padding:.7em 1em; }
.mobile-nav .btn{ margin-top:12px; }

/* ---------- главный экран (главная) ---------- */
.home-hero{
  position:relative;
  padding:90px 0 70px;
  background:
    radial-gradient(900px 480px at 80% 0%, color-mix(in srgb,var(--c2) 22%,transparent), transparent 70%),
    radial-gradient(700px 420px at 5% 100%, color-mix(in srgb,var(--c1) 14%,transparent), transparent 70%),
    linear-gradient(160deg, var(--soft), var(--paper) 70%);
  overflow:hidden;
}
.home-hero::after{
  content:''; display:block; height:26px;
  position:absolute; left:0; right:0; bottom:-1px;
  background-image:radial-gradient(circle at 12px -6px, var(--paper) 18px, transparent 19px);
  background-size:24px 26px; background-repeat:repeat-x;
}
.home-hero-in{ max-width:900px; margin:0 auto; padding:0 22px; text-align:center; }
.home-hero h1{ font-size:clamp(2.3rem,5.6vw,3.6rem); margin:.35em 0 .3em; }
.home-hero h1 em{
  font-style:italic;
  color:var(--c1);
}
.home-hero .kicker{ font-size:1.4rem; }
.lead{ font-size:1.18rem; color:var(--ink-soft); max-width:640px; margin:0 auto 1.6rem; }
.hero-actions{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-bottom:2.2rem; }

.hero-next{
  display:inline-flex; flex-direction:column; gap:6px;
  background:var(--card);
  border:2px solid var(--line);
  border-radius:var(--r-md);
  padding:14px 18px;
  box-shadow:var(--shadow);
  text-align:left;
}
.hero-next-h{ font-family:'Neucha',cursive; font-size:1.1rem; color:var(--c1); }
.hero-next-item{
  display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  font-family:'Rubik',sans-serif; font-size:.9rem;
  padding:7px 10px; border-radius:10px;
  color:var(--ink); text-decoration:none !important;
  transition:background .15s;
}
.hero-next-item:hover{ background:var(--soft); }
.hni-date{ font-weight:600; color:var(--c1); white-space:nowrap; }
.hni-tale{ font-weight:500; }
.hni-place{ color:var(--ink-soft); font-size:.85rem; }

/* ---------- репертуар ---------- */
.rep-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:22px;
}
.rep-card{
  position:relative;
  display:flex; flex-direction:column; gap:.35em;
  background:var(--card);
  border:2px solid var(--line);
  border-radius:var(--r-lg);
  padding:26px 24px 22px;
  color:var(--ink);
  text-decoration:none !important;
  box-shadow:var(--shadow);
  transition:transform .22s, border-color .22s, box-shadow .22s;
  overflow:hidden;
}
.rep-card::before{
  content:''; position:absolute; inset:0 0 auto 0; height:7px;
  background:linear-gradient(90deg, var(--c1), var(--c2));
  opacity:.9;
}
.rep-card:hover{ transform:translateY(-5px) rotate(-.4deg); border-color:var(--c1); }
.rep-icon .i{ width:44px; height:44px; color:var(--c1); margin-bottom:6px; }
.rep-kicker{ font-family:'Neucha',cursive; font-size:1.05rem; color:var(--c1); }
.rep-title{ font-family:'Alegreya',serif; font-weight:800; font-size:1.45rem; line-height:1.2; }
.rep-age{ font-family:'Rubik',sans-serif; font-size:.82rem; color:var(--ink-soft); }
.rep-desc{ font-size:.98rem; margin-top:.4em; }
.rep-next{
  margin-top:.9em;
  display:inline-flex; align-items:center; gap:.45em;
  font-family:'Rubik',sans-serif; font-size:.85rem; font-weight:600;
  color:var(--c1);
  background:color-mix(in srgb,var(--c1) 10%,transparent);
  padding:.35em .8em; border-radius:999px;
  align-self:flex-start;
}
.rep-go{
  position:absolute; right:18px; bottom:16px;
  width:38px; height:38px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--soft); color:var(--c1);
  transition:.2s;
}
.rep-card:hover .rep-go{ background:var(--c1); color:#fff; transform:rotate(-45deg); }

/* ---------- как проходит ---------- */
.how-steps{
  display:grid; grid-template-columns:repeat(3,1fr); gap:22px;
}
.how-step{
  background:var(--card); border:2px solid var(--line);
  border-radius:var(--r-lg); padding:24px 22px;
  box-shadow:var(--shadow);
}
.how-num{
  display:inline-grid; place-items:center;
  width:44px; height:44px; margin-bottom:10px;
  font-family:'Neucha',cursive; font-size:1.5rem; color:#fff;
  background:var(--c1);
  border-radius:50% 44% 52% 48% / 46% 54% 46% 54%;
  transform:rotate(3deg);
}
.how-step:nth-child(2) .how-num{ background:var(--c2); transform:rotate(-4deg); }
.how-step:nth-child(3) .how-num{ transform:rotate(2deg); }
.how-step p{ color:var(--ink-soft); font-size:.98rem; }

/* ---------- о Юлии ---------- */
.about-grid{
  display:grid; grid-template-columns:340px 1fr; gap:36px; align-items:center;
}
.about-photo img{
  border-radius:var(--r-lg);
  border:3px solid #fff;
  box-shadow:var(--shadow), 0 0 0 2px var(--line);
  transform:rotate(-1.6deg);
}
/* заглушка, пока нет assets/yulia.jpg */
.about-photo-ph{
  aspect-ratio:3/4;
  border-radius:var(--r-lg);
  border:3px solid #fff;
  box-shadow:var(--shadow), 0 0 0 2px var(--line);
  transform:rotate(-1.6deg);
  display:grid; place-items:center;
  font-family:'Neucha',cursive;
  font-size:7rem; color:#fffdf8;
  background:
    radial-gradient(220px 140px at 80% 12%, rgba(255,255,255,.35), transparent 70%),
    linear-gradient(155deg, #d4662c, #b8863f);
}
.about-facts{ display:flex; gap:14px; flex-wrap:wrap; margin:1.1rem 0; }
.fact{
  display:flex; flex-direction:column; align-items:center; gap:2px;
  background:var(--card); border:2px solid var(--line);
  border-radius:var(--r-md); padding:12px 18px;
  min-width:110px;
}
.fact-n{ font-family:'Neucha',cursive; font-size:1.6rem; color:var(--c1); line-height:1; }
.fact span:last-child{ font-family:'Rubik',sans-serif; font-size:.78rem; color:var(--ink-soft); text-align:center; }
.about-links{ display:flex; gap:12px; flex-wrap:wrap; }

/* ---------- как записаться ---------- */
.enroll-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.enroll-step{
  display:flex; align-items:center; gap:14px;
  background:var(--card); border:2px dashed color-mix(in srgb,var(--c1) 45%,transparent);
  border-radius:var(--r-md); padding:18px 20px;
}
.enroll-num{
  flex:none; width:40px; height:40px; display:grid; place-items:center;
  font-family:'Neucha',cursive; font-size:1.35rem;
  color:var(--c1); background:color-mix(in srgb,var(--c1) 12%,transparent);
  border-radius:50%;
}
.enroll-step p{ margin:0; font-family:'Rubik',sans-serif; font-size:.95rem; }

/* ---------- призыв ---------- */
.cta{
  position:relative;
  background:linear-gradient(150deg, var(--c1), color-mix(in srgb,var(--c1) 70%, var(--c2)));
  color:#fff;
  text-align:center;
  padding:70px 22px;
}
.cta::before{
  content:''; display:block; height:24px;
  position:absolute; left:0; right:0; top:-1px;
  background-image:radial-gradient(circle at 12px -6px, var(--paper) 17px, transparent 18px);
  background-size:24px 24px; background-repeat:repeat-x;
}
.cta::after{
  content:''; display:block; height:24px;
  position:absolute; left:0; right:0; bottom:-1px;
  background-image:radial-gradient(circle at 12px 0, var(--paper) 17px, transparent 18px);
  background-size:24px 24px; background-repeat:repeat-x;
}
.cta-in{ max-width:640px; margin:0 auto; }
.cta h2{ color:#fff; }
.cta p{ color:rgba(255,255,255,.88); font-size:1.1rem; margin-bottom:1.6rem; }
.cta .btn{ background:#fff; color:var(--c1); border-color:#fff; box-shadow:0 8px 20px -6px rgba(0,0,0,.35); }
.cta .btn:hover{ background:var(--paper); transform:translateY(-3px) rotate(.5deg); }

/* ---------- шапка сказки ---------- */
.tale-hero{
  position:relative;
  min-height:420px;
  display:flex; align-items:flex-end;
  overflow:hidden;
  color:#fff;
}
.tale-hero-plain{
  background:
    radial-gradient(700px 380px at 82% 8%, color-mix(in srgb,var(--c2) 34%,transparent), transparent 70%),
    radial-gradient(circle at 12px 12px, rgba(255,255,255,.14) 2.5px, transparent 3px),
    linear-gradient(155deg, var(--c1), color-mix(in srgb,var(--c1) 55%, var(--c2)));
  background-size:auto, 44px 44px, auto;
}
.tale-hero-bg{
  position:absolute; inset:0;
  background-size:cover; background-position:center 30%;
  filter:saturate(1.05);
}
.tale-hero-bg::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,12,6,.18) 0%, rgba(20,12,6,.05) 40%, rgba(20,12,6,.62) 100%),
             linear-gradient(90deg, color-mix(in srgb,var(--c1) 30%,transparent), transparent 55%);
}
.tale-hero-in{
  position:relative;
  max-width:1080px; width:100%;
  margin:0 auto; padding:120px 22px 66px;
}
.tale-hero .kicker{
  display:inline-block;
  color:#fff;
  background:color-mix(in srgb,var(--c1) 85%,rgba(0,0,0,.15));
  padding:.3em 1em; border-radius:999px;
  font-size:1.1rem;
  margin-bottom:.6em;
}
.tale-title{ font-size:clamp(2.2rem,5.6vw,3.5rem); text-shadow:0 2px 18px rgba(0,0,0,.35); margin-bottom:.25em; }
.tale-age{
  font-family:'Rubik',sans-serif; font-size:.95rem;
  color:rgba(255,255,255,.92);
  margin:0 0 1.2rem;
}
.next-badge{
  display:inline-flex; align-items:center; gap:.6em;
  background:rgba(255,255,255,.94);
  color:var(--ink);
  font-family:'Rubik',sans-serif; font-size:.92rem;
  padding:.7em 1.2em; border-radius:999px;
  box-shadow:0 8px 22px -8px rgba(0,0,0,.4);
  text-decoration:none !important;
  transition:transform .18s;
}
.next-badge:hover{ transform:translateY(-2px); }
.next-badge b{ color:var(--c1); }
.next-badge .i:first-child{ color:var(--c1); }
.next-badge .i:last-child{ color:var(--ink-soft); }

/* ---------- расписание: билеты ---------- */
.schedule{ padding-top:64px; }
.tickets{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:22px;
}
.ticket{
  position:relative;
  background:var(--card);
  border:2px solid var(--c1);
  border-radius:20px;
  padding:0 0 18px;
  box-shadow:var(--shadow);
  display:flex; flex-direction:column;
  overflow:hidden;
}
.ticket::before,.ticket::after{
  content:''; position:absolute; top:47px;
  width:24px; height:24px; border-radius:50%;
  background:var(--paper);
  border:2px solid var(--c1);
  z-index:1;
}
.ticket::before{ left:-14px; }
.ticket::after{ right:-14px; }
.ticket-head{
  display:flex; flex-wrap:wrap; gap:.4em 1.2em;
  padding:14px 18px 12px;
  background:color-mix(in srgb,var(--c1) 9%,transparent);
}
.ticket-date,.ticket-time{
  display:inline-flex; align-items:center; gap:.45em;
  font-family:'Rubik',sans-serif; font-weight:600; font-size:.98rem;
  color:var(--c1);
}
.ticket-body{
  display:flex; flex-direction:column; gap:.35em;
  padding:14px 18px 16px;
  border-top:2px dashed color-mix(in srgb,var(--c1) 45%,transparent);
  flex:1;
}
.ticket-place{
  display:inline-flex; align-items:flex-start; gap:.5em;
  font-weight:600; font-size:1.02rem; line-height:1.4;
}
.ticket-place .i{ margin-top:.2em; color:var(--c2); }
.ticket-price{
  display:inline-flex; align-items:center; gap:.45em;
  font-family:'Rubik',sans-serif; font-weight:600; font-size:.95rem;
  color:var(--ink-soft);
}
.ticket-price .i{ color:var(--c1); }
.ticket-note{ font-size:.9rem; color:var(--ink-soft); font-style:italic; }
.ticket .btn{ margin:2px 18px 0; align-self:flex-start; }

/* ---------- текстовые блоки сказки ---------- */
.about .sec-block{ margin-bottom:2.4rem; }
.sec-lead p:first-child{
  font-size:1.22rem;
  font-style:italic;
  color:color-mix(in srgb,var(--ink) 85%,var(--c1));
}
.sec-lead p:first-child::first-letter{
  font-family:'Neucha',cursive;
  font-size:3.4em; line-height:.8;
  float:left;
  padding:.08em .12em 0 0;
  color:var(--c1);
}

.feature-list{ list-style:none; margin:.6em 0; padding:0; display:grid; gap:.55em; }
.feature-list li{
  position:relative;
  padding:.55em .9em .55em 2.6em;
  background:var(--card);
  border:1.5px solid var(--line);
  border-radius:var(--r-sm);
  transition:transform .15s, border-color .15s;
}
.feature-list li:hover{ transform:translateX(4px); border-color:var(--c2); }
.feature-list li::before{
  content:'✦';
  position:absolute; left:.85em; top:.5em;
  color:var(--c2);
  font-size:1.05rem;
}

.chips{ display:flex; flex-wrap:wrap; gap:10px; margin:.8em 0; }
.chip{
  font-family:'Rubik',sans-serif; font-size:.92rem;
  background:color-mix(in srgb,var(--c2) 16%,transparent);
  border:1.5px solid color-mix(in srgb,var(--c2) 45%,transparent);
  padding:.45em 1em; border-radius:999px;
}

.callout{
  position:relative;
  background:color-mix(in srgb,var(--c1) 8%,var(--card));
  border-left:5px solid var(--c1);
  border-radius:0 var(--r-md) var(--r-md) 0;
  padding:1em 1.4em;
  margin:1.2em 0;
  font-size:1.08rem;
}

.story{
  font-style:italic;
  font-size:1.12rem;
  color:color-mix(in srgb,var(--ink) 88%,var(--c1));
  padding-left:1.2em;
  border-left:3px solid color-mix(in srgb,var(--c2) 55%,transparent);
}

.hosts{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px; }
.host{
  display:flex; flex-direction:column; gap:.3em;
  background:var(--card); border:2px solid var(--line);
  border-radius:var(--r-md); padding:18px 20px;
  box-shadow:var(--shadow);
}
.host-name{ font-weight:800; font-size:1.12rem; }
.host-role{ font-family:'Rubik',sans-serif; font-size:.86rem; color:var(--ink-soft); }
.host-tg{
  margin-top:.4em;
  display:inline-flex; align-items:center; gap:.4em;
  font-family:'Rubik',sans-serif; font-size:.9rem; font-weight:500;
  color:var(--c1);
  align-self:flex-start;
}

.age-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px; }
.age-card{
  background:var(--card); border:2px solid var(--line);
  border-radius:var(--r-md); padding:20px 22px;
  box-shadow:var(--shadow);
}
.age-card-t{ display:block; font-family:'Neucha',cursive; font-size:1.25rem; color:var(--c1); margin-bottom:.4em; }
.age-card p{ margin:0; font-size:.98rem; color:var(--ink-soft); }

/* ---------- галерея ---------- */
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  grid-auto-rows:150px; gap:14px;
}
.g-item{
  border:none; padding:0; margin:0;
  border-radius:var(--r-md); overflow:hidden;
  cursor:zoom-in;
  background:var(--soft);
  box-shadow:var(--shadow);
  position:relative;
}
.g-item img{ width:100%; height:100%; object-fit:cover; transition:transform .35s; }
.g-item:hover img{ transform:scale(1.06); }
.g-item:nth-child(4n+1){ grid-row:span 2; }
.g-item:nth-child(4n+3){ grid-column:span 2; }

/* ---------- видео ---------- */
.video-list{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:22px; }
.v-item{ margin:0; }
.v-player{
  position:relative; aspect-ratio:16/9;
  background:#191310;
  border-radius:var(--r-md);
  overflow:hidden;
  box-shadow:var(--shadow);
}
.v-player video{ width:100%; height:100%; display:block; }
.v-poster{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; opacity:.85;
  transition:opacity .25s;
}
.v-player.playing .v-poster{ display:none; }   /* иначе прозрачный постер перехватывает клики по контролам */
.v-play{
  position:absolute; left:50%; top:50%;
  width:74px; height:74px; margin:-37px 0 0 -37px;
  border-radius:50%; border:none;
  background:color-mix(in srgb,var(--c1) 92%,#000);
  color:#fff; cursor:pointer;
  display:grid; place-items:center;
  box-shadow:0 10px 26px -6px rgba(0,0,0,.5);
  transition:transform .2s, background .2s;
  z-index:2;
}
.v-play .i{ width:30px; height:30px; margin-left:4px; }
.v-play:hover{ transform:scale(1.1); background:var(--c1); }
.v-item figcaption{
  font-family:'Rubik',sans-serif; font-size:.85rem; color:var(--ink-soft);
  margin-top:.5em; text-align:center;
}

/* ---------- лайтбокс ---------- */
.lightbox{
  position:fixed; inset:0; z-index:90;
  background:rgba(24,16,8,.92);
  display:grid; place-items:center;
  padding:20px;
}
.lightbox[hidden]{ display:none; }
.lb-fig{ margin:0; max-width:min(92vw,1000px); text-align:center; }
.lb-fig img{
  max-width:100%; max-height:82vh;
  border-radius:var(--r-md);
  box-shadow:0 30px 80px -20px rgba(0,0,0,.6);
  margin:0 auto;
}
.lb-fig figcaption{
  color:rgba(255,255,255,.85);
  font-family:'Rubik',sans-serif; font-size:.9rem;
  margin-top:12px;
}
.lb-btn{
  position:absolute;
  width:52px; height:52px; border-radius:50%;
  border:2px solid rgba(255,255,255,.35);
  background:rgba(255,255,255,.12); color:#fff;
  display:grid; place-items:center; cursor:pointer;
  transition:background .15s, transform .15s;
}
.lb-btn:hover{ background:var(--c1); transform:scale(1.08); border-color:var(--c1); }
.lb-close{ top:18px; right:18px; }
.lb-prev{ left:14px; top:50%; transform:translateY(-50%); }
.lb-next{ right:14px; top:50%; transform:translateY(-50%); }
.lb-prev:hover{ transform:translateY(-50%) scale(1.08); }
.lb-next:hover{ transform:translateY(-50%) scale(1.08); }

/* ---------- футер ---------- */
.site-footer{
  background:#2e2115;
  color:#d8cbb8;
  margin-top:60px;
}
.footer-in{
  max-width:1080px; margin:0 auto; padding:54px 22px 30px;
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:34px;
}
.footer-brand .brand-mark{ width:52px; height:52px; font-size:1.9rem; margin-bottom:14px; }
.footer-desc{ font-size:.95rem; color:#b3a48e; max-width:280px; }
.footer-col{ display:flex; flex-direction:column; gap:8px; }
.footer-h{
  font-family:'Neucha',cursive; font-size:1.15rem;
  color:#f0e6d6; margin-bottom:4px;
}
.footer-col a{ color:#d8cbb8; text-decoration:none; font-size:.92rem; }
.footer-col a:hover{ color:#fff; text-decoration:underline; }
.footer-note{ font-size:.88rem; color:#b3a48e; }
.footer-bottom{
  max-width:1080px; margin:0 auto;
  padding:16px 22px 26px;
  border-top:1px solid rgba(255,255,255,.12);
  display:flex; justify-content:space-between; align-items:center; gap:14px; flex-wrap:wrap;
  font-family:'Rubik',sans-serif; font-size:.82rem; color:#b3a48e;
}
.df{
  color:#8f7f6a; font-size:.8rem;
  opacity:.75; transition:opacity .2s, color .2s;
  text-decoration:none;
}
.df:hover{ opacity:1; color:#d8cbb8; }

/* ---------- анимации появления ---------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s ease; }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}

/* ---------- адаптив ---------- */
@media (max-width:1000px){
  .site-nav{ display:none; }
  .burger{ display:flex; }
  .header-right .btn{ display:none; }
  .footer-in{ grid-template-columns:1fr 1fr; }
}
@media (max-width:760px){
  body{ font-size:17px; }
  section{ padding:44px 0; }
  .home-hero{ padding:64px 0 56px; }
  .how-steps,.enroll-steps{ grid-template-columns:1fr; }
  .about-grid{ grid-template-columns:1fr; gap:24px; }
  .about-photo{ max-width:320px; margin:0 auto; }
  .tale-hero{ min-height:340px; }
  .tale-hero-in{ padding:90px 22px 48px; }
  .gallery-grid{ grid-auto-rows:130px; }
  .g-item:nth-child(4n+3){ grid-column:auto; }
  .footer-in{ grid-template-columns:1fr; gap:24px; padding:40px 22px 20px; }
  .footer-bottom{ justify-content:center; text-align:center; }
}
@media (max-width:420px){
  .hero-actions .btn{ width:100%; justify-content:center; }
  .ticket::before,.ticket::after{ display:none; }
  .tickets{ grid-template-columns:1fr; }
}