:root{
  --bg-light:  rgb(201, 242, 213);
  --mid:       rgb(115, 197, 131);
  --green:     rgb(0, 148, 72);
  --dark:      rgb(16, 56, 35);

  --bg: var(--bg-light);
  --ink: var(--dark);

  --sans: "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
}

*{ box-sizing:border-box }
html,body{ margin:0; padding:0 }
body{
  background: var(--bg);
  color: var(--ink);
  font-family: var(--sans);
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x:hidden;
}

a{ color:inherit; text-decoration:none }

/* ───────── Навигация (повторяет структуру pkvn.info) ───────── */
.nav{
  position: sticky; top:0; z-index:50;
  display:flex; align-items:center; justify-content:space-between; gap:32px;
  padding: 18px 32px;
  background: color-mix(in oklab, var(--bg) 88%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid color-mix(in oklab, var(--dark) 12%, transparent);
}
.nav-brand{ display:flex; align-items:center; gap:14px; min-width: 0 }
.nav-brand .logo-mark{ width: 56px; flex:none; align-self:center }
.nav-wm{ display:flex; flex-direction:column; line-height:1; gap:4px }
.nav-wm-1{ font-weight:700; font-size:15px; letter-spacing:-.01em }
.nav-wm-2{ font-size:11px; font-weight:500; letter-spacing:.02em; opacity:.7 }

.nav-links{ display:flex; justify-content:center; gap:28px; flex-wrap:nowrap; white-space:nowrap }
.nav-links a{
  font-size:13px; font-weight:500; letter-spacing:.005em;
  padding: 6px 0; position:relative;
  transition: opacity .25s ease;
}
.nav-links a::after{
  content:""; position:absolute; left:0; right:100%; bottom:-2px; height:2px;
  background: var(--green);
  transition: right .35s cubic-bezier(.2,.8,.2,1);
}
.nav-links a:hover::after{ right:0 }

.nav-cta{
  display:inline-flex; align-items:center; gap:8px;
  padding: 11px 18px; border-radius: 999px;
  background: var(--dark); color: var(--bg-light);
  font-size:13px; font-weight:600;
  transition: background .3s ease, transform .3s cubic-bezier(.2,.8,.2,1);
}
.nav-cta svg{ transition: transform .3s ease }
.nav-cta:hover{ background: var(--green) }
.nav-cta:hover svg{ transform: translate(2px,-2px) }

/* Прямоугольный вариант CTA — без закруглений (страница события и т.п.) */
.nav-cta.nav-cta-square{ border-radius: 0 }

/* ───────── Hero ───────── */
.hero{
  position:relative;
  padding: 64px 32px 96px;
  display:grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 56px;
  align-items:center; max-width: 1480px; margin: 0 auto;
}
@media (max-width: 920px){ .hero{ grid-template-columns:1fr; padding-top: 32px } }

.hero-meta{
  display:inline-flex; align-items:center; gap:10px;
  font-size:12px; font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color: var(--green); margin-bottom:24px;
}
.hero-meta .dot{
  width:8px; height:8px; background: var(--green); border-radius:2px;
  transform: rotate(45deg); animation: rhombpulse 2.6s ease-in-out infinite;
}
@keyframes rhombpulse{
  0%,100%{ opacity:1; transform: rotate(45deg) scale(1) }
  50%   { opacity:.45; transform: rotate(45deg) scale(.8) }
}

.hero-title{
  font-weight: 800;
  font-size: clamp(48px, 7.6vw, 124px);
  line-height: .92;
  letter-spacing: -.025em;
  margin: 0 0 28px;
  text-wrap: balance;
  color: var(--dark);
}
.hero-title .accent{ color: var(--green) }

.hero-sub{
  font-size: clamp(15px, 1.2vw, 18px);
  line-height: 1.5;
  max-width: 520px;
  margin: 0 0 36px;
  color: color-mix(in oklab, var(--dark) 80%, transparent);
}

.hero-actions{ display:flex; gap:12px; flex-wrap:wrap }
.btn{
  display:inline-flex; align-items:center; gap:10px;
  padding: 14px 22px; border-radius: 999px;
  font-size:14px; font-weight:600;
  cursor:pointer; transition: all .3s cubic-bezier(.2,.8,.2,1);
  border: 1px solid transparent;
}
.btn-primary{ background: var(--green); color:#fff }
.btn-primary:hover{ background: var(--dark); transform: translateY(-1px) }
.btn-ghost{ border-color: color-mix(in oklab, var(--dark) 20%, transparent); color: var(--dark) }
.btn-ghost:hover{ border-color: var(--dark); background: color-mix(in oklab, var(--dark) 6%, transparent) }
/* Прямоугольный вариант основной кнопки */
.btn.btn-square{ border-radius: 0 }

/* Знак-птица в hero — крупно справа, с композицией вокруг */
.hero-bird{
  position: relative; display:flex; justify-content:center; align-items:center;
  min-height: 540px;
}
.hero-bird .logo-mark{
  width: clamp(280px, 38vw, 540px);
  position: relative; z-index: 2;
}

/* Гигантская римская VII за спиной у птицы */
.hero-roman{
  position: absolute;
  font-family: "Manrope", serif;
  font-weight: 800;
  font-size: clamp(220px, 32vw, 460px);
  line-height: .85;
  letter-spacing: -.05em;
  color: color-mix(in oklab, var(--green) 14%, transparent);
  z-index: 1;
  pointer-events: none;
  user-select: none;
  top: 50%; left: 50%;
  transform: translate(-50%, -56%);
}

/* Россыпь ромбов */
.hero-rhombs{ position: absolute; inset: 0; z-index: 1; pointer-events: none }
.hero-rhombs .hr{
  position: absolute; display: block; transform: rotate(45deg);
  background: var(--green); opacity: .85;
}
.hero-rhombs .hr.outline{ background: transparent; border: 2px solid var(--green) }
.hero-rhombs .hr-1{ top: 8%;  left: 6%;   width: 18px; height: 18px; opacity:.7 }
.hero-rhombs .hr-2{ top: 14%; right: 8%;  width: 28px; height: 28px }
.hero-rhombs .hr-3{ top: 78%; left: 10%;  width: 14px; height: 14px; opacity: .55 }
.hero-rhombs .hr-4{ top: 88%; right: 14%; width: 22px; height: 22px; opacity: .85 }
.hero-rhombs .hr-5{ top: 38%; right: 4%;  width: 10px; height: 10px }
.hero-rhombs .hr-6{ top: 60%; left: 4%;   width: 8px;  height: 8px; opacity:.65 }

/* Бегущая строка-метка снизу */
.hero-tickers{
  position: absolute; bottom: 14px; left: 0; right: 0;
  display: flex; justify-content: center; gap: 14px; flex-wrap: wrap;
  font-size: 11px; font-weight: 700; letter-spacing: .14em;
  color: var(--green); opacity: .85;
  z-index: 2; pointer-events: none;
}
.hero-tickers span{ white-space: nowrap }

.hero-text{ position: relative; z-index: 2 }

.hero-facts{
  margin-top: 48px;
  display: grid; grid-template-columns: repeat(4, auto);
  gap: 0; max-width: 520px;
  border-top: 1px solid color-mix(in oklab, var(--dark) 22%, transparent);
}
.hero-facts > div{
  padding: 18px 18px 0 0;
  border-right: 1px solid color-mix(in oklab, var(--dark) 14%, transparent);
}
.hero-facts > div:last-child{ border-right: none }
.hero-facts b{
  display: block; font-weight: 800; font-size: 36px; letter-spacing: -.02em;
  line-height: 1; color: var(--dark);
  font-variant-numeric: tabular-nums;
}
.hero-facts span{
  display: block; font-size: 11px; font-weight: 600;
  letter-spacing: .04em; opacity: .55; margin-top: 6px;
}

.hint{
  position:absolute; right: 12px; bottom: 50px;
  display:inline-flex; align-items:center; gap:8px;
  font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  color: var(--dark); opacity:.55; z-index: 3;
}
.hint .arrow{ animation: floaty 2.4s ease-in-out infinite }
@keyframes floaty{ 0%,100%{ transform: translateY(0) } 50%{ transform: translateY(-4px) } }

/* ───────── Бордюр-паттерн (как в брендбуке: треугольник-паттерн как бордюр) ───────── */
.border-pattern{
  height: 32px;
  background-image: linear-gradient(45deg, var(--green) 25%, transparent 25%),
                    linear-gradient(-45deg, var(--green) 25%, transparent 25%),
                    linear-gradient(45deg, transparent 75%, var(--mid) 75%),
                    linear-gradient(-45deg, transparent 75%, var(--mid) 75%);
  background-size: 24px 24px;
  background-position: 0 0, 12px 0, 12px -12px, 0px 12px;
}

/* ───────── Masonry-сетка программы ───────── */
.section{ padding: 96px 32px; max-width: 1480px; margin: 0 auto }
.section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:32px; margin-bottom: 44px; flex-wrap:wrap }
.eyebrow{ font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color: var(--green); margin-bottom:14px }
.section-head h2{
  font-weight:800; font-size: clamp(40px, 5.2vw, 80px); line-height:.95; letter-spacing:-.02em;
  margin: 0; max-width: 880px; text-wrap: balance;
}
.section-head h2 em{ font-style:normal; color: var(--green); }
.section-head p{ font-size:15px; line-height:1.5; max-width: 360px; opacity:.75; margin:0 }

/* ───────── Сетка программы — 4 колонки, флеш по верху и по низу ───────── */
.grid{
  display:grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  height: 1080px;
  border-top: 1px solid var(--dark);
  border-left: 1px solid var(--dark);
}
@media (max-width: 1180px){ .grid{ grid-template-columns: repeat(3, 1fr); height: 1380px } }
@media (max-width:  860px){ .grid{ grid-template-columns: repeat(2, 1fr); height: 2100px } }
@media (max-width:  560px){ .grid{ grid-template-columns: 1fr; height: auto } }

.col{
  display:flex; flex-direction:column;
  min-height: 0;
  border-right: 1px solid var(--dark);
}
@media (max-width: 560px){ .col{ height: auto } }

.tile{
  border-radius: 0;
  padding: 22px;
  display:flex; flex-direction:column; gap:14px; justify-content:space-between;
  position:relative; overflow:hidden;
  border-bottom: 1px solid var(--dark);
  min-height: 0;
  transition: filter .25s ease;
}
.tile:hover{ filter: brightness(1.04) }

/* Тоны */
.tile-light{ background: #fff; color: var(--dark) }
.tile-mid  { background: var(--mid);  color: var(--dark) }
.tile-green{ background: var(--green); color:#fff }
.tile-dark { background: var(--dark);  color: var(--bg-light) }
.tile-pale { background: color-mix(in oklab, var(--bg-light) 70%, white); color: var(--dark) }

.tile-date{
  font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  display:flex; align-items:center; gap:8px;
}
.tile-date .rh{
  width:6px; height:6px; transform: rotate(45deg);
  background: currentColor; opacity:.7;
}
.tile-title{
  font-weight:700; font-size: 22px; line-height:1.1; letter-spacing:-.01em;
  margin:0;
}
.tile-title.lg{ font-size: 32px; line-height:1.0 }
.tile-title.xl{ font-size: 44px; line-height:.98 }
.tile-place{ font-size:13px; opacity:.78; display:flex; align-items:center; gap:6px }
.tile-tag{
  display:inline-flex; align-items:center; gap:6px;
  font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  padding: 4px 10px; border-radius: 999px;
  background: color-mix(in oklab, currentColor 12%, transparent);
}

/* Ромбы как декор внутри тайлов — графический приём из брендбука */
.tile-rhombs{
  display:flex; gap: 8px; flex-wrap:wrap;
}
.rh-deco{ width: 18px; height: 18px; transform: rotate(45deg); background: currentColor; opacity:.8 }
.rh-deco.sm{ width: 10px; height: 10px; opacity:.5 }
.rh-deco.lg{ width: 28px; height: 28px; opacity:.9 }
.rh-deco.outline{ background: transparent; border: 2px solid currentColor; opacity:.9 }

/* Большой тайл-афиша */
.tile-poster{
  display:flex; flex-direction:column; justify-content:space-between;
  position:relative;
}
.tile-poster .tile-rhombs.bg{
  position:absolute; inset:0; padding: 20px;
  display:flex; flex-direction:column; gap: 14px; pointer-events:none;
}

/* Картинка-плейсхолдер */
.tile-img{
  aspect-ratio: 4/3; border-radius: 8px; overflow:hidden;
  background:
    linear-gradient(135deg, var(--mid) 0%, var(--green) 100%);
  position:relative;
}
.tile-img-stripes{
  position:absolute; inset:0;
  background-image: repeating-linear-gradient(45deg, transparent 0 14px, rgba(255,255,255,.16) 14px 15px);
}
.tile-img-tall{ aspect-ratio: 3/4 }
.tile-img-wide{ aspect-ratio: 16/9 }

/* Тайл-цитата */
.tile-quote{
  font-weight:600; font-size: 24px; line-height:1.15; letter-spacing:-.01em;
}
.tile-quote-author{
  font-size:12px; font-weight:500; opacity:.7; margin-top: 14px;
  display:flex; align-items:center; gap:8px;
}

/* Тайл-число */
.tile-stat .num{
  font-weight:800; font-size: 88px; line-height:.95; letter-spacing:-.04em;
  color: currentColor;
}
.tile-stat .label{ font-size:13px; font-weight:500; opacity:.8; margin-top: 8px }

/* ───────── Тайл «время» (большая цифра 07:00 / 22:00) ───────── */
.tile-time .big-time{
  font-weight: 800; font-size: clamp(56px, 6.5vw, 96px);
  letter-spacing: -.03em; line-height: .9;
  font-variant-numeric: tabular-nums;
}
.tile-time .time-label{
  font-size: 13px; line-height: 1.3; opacity: .8;
  margin-top: auto;
}

/* ───────── Тайл «имена» (поэты слэма) ───────── */
.names-list{
  display: flex; flex-wrap: wrap; gap: 4px 10px;
  font-size: 13px; font-weight: 600; letter-spacing: -.005em;
  line-height: 1.4;
  margin-top: 4px;
}
.names-list .nm{
  white-space: nowrap;
}
.names-list .nm + .nm::before{
  content: "·"; opacity: .5; margin-right: 8px;
}

/* ───────── Тайл с картинкой-плейсхолдером ───────── */
.tile-withimg{
  padding: 0;
  display: flex; flex-direction: column;
  gap: 0;
}
.tile-withimg .tile-img{
  aspect-ratio: auto; flex: 1.2;
  background: linear-gradient(135deg, var(--mid) 0%, var(--green) 100%);
  position: relative; overflow: hidden;
  border-radius: 0;
}
.tile-withimg .tile-img-stripes{
  position: absolute; inset: 0;
  background-image: repeating-linear-gradient(45deg, transparent 0 14px, rgba(255,255,255,.18) 14px 15px);
}
.tile-withimg .tile-img-label{
  position: absolute; left: 14px; bottom: 12px;
  font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(255,255,255,.85); padding: 5px 9px;
  background: rgba(16,56,35,.6);
}
.tile-withimg .tile-body{
  padding: 18px 20px 20px;
  display: flex; flex-direction: column; gap: 8px;
  flex: 1;
}

/* ───────── Секция «О фестивале» ───────── */
.about{
  padding: 96px 32px;
  max-width: 1480px; margin: 0 auto;
  position: relative;
}
.about-inner{ position: relative }
.about-head{ margin-bottom: 56px; max-width: 980px }
.about-head .eyebrow{
  font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: var(--green); margin-bottom: 14px;
}
.about-head h2{
  margin: 0;
  font-weight: 800; font-size: clamp(36px, 4.4vw, 68px);
  line-height: .98; letter-spacing: -.02em;
  text-wrap: balance;
}
.about-head h2 em{ font-style: normal; color: var(--green) }
.about-grid{
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
  gap: 64px;
}
@media (max-width: 920px){ .about-grid{ grid-template-columns: 1fr; gap: 36px } }
.about-lede{
  font-size: clamp(16px, 1.2vw, 18px); line-height: 1.55;
  margin: 0; color: color-mix(in oklab, var(--dark) 88%, transparent);
  text-wrap: pretty;
}
.about-pillars{
  display: grid; grid-template-columns: 1fr 1fr; gap: 0;
  border-top: 1px solid var(--dark);
  border-left: 1px solid var(--dark);
}
@media (max-width: 560px){ .about-pillars{ grid-template-columns: 1fr } }
.pillar{
  padding: 22px 22px 24px;
  border-right: 1px solid var(--dark);
  border-bottom: 1px solid var(--dark);
  display: flex; flex-direction: column; gap: 10px;
  background: color-mix(in oklab, var(--bg-light) 60%, white);
}
.pillar:nth-child(1){ background: #fff }
.pillar:nth-child(2){ background: var(--mid); color: var(--dark) }
.pillar:nth-child(3){ background: var(--bg-light) }
.pillar:nth-child(4){ background: var(--dark); color: var(--bg-light) }
.pillar .pn{
  font-size: 11px; font-weight: 700; letter-spacing: .12em; opacity: .6;
}
.pillar h3{
  margin: 0; font-weight: 800; font-size: 22px; letter-spacing: -.01em; line-height: 1.1;
}
.pillar p{
  margin: 0; font-size: 13px; line-height: 1.5; opacity: .8;
  text-wrap: pretty;
}

.about-quote{
  grid-column: 1 / -1;
  margin-top: 24px;
  position: relative;
  padding: 36px 36px 36px 80px;
  background: var(--green); color: #fff;
  display: flex; flex-direction: column; gap: 14px;
}
.about-quote .aq-mark{
  position: absolute; left: 24px; top: 8px;
  font-size: 96px; line-height: 1; font-weight: 800;
  opacity: .4;
}
.about-quote p{
  margin: 0; font-weight: 600; font-size: clamp(18px, 1.7vw, 26px);
  line-height: 1.3; letter-spacing: -.01em; max-width: 800px;
  text-wrap: pretty;
}
.about-quote span{
  font-size: 12px; font-weight: 600; letter-spacing: .04em; opacity: .85;
}

/* ───────── Секция «Площадки» (переработанная) — светло-зелёная плашка ───────── */
.places{
  background: var(--bg-light); color: var(--dark);
  padding: 96px 32px;
}
.places-inner{ max-width:1480px; margin:0 auto }
.places .section-head h2{ color: var(--dark) }
.places .section-head h2 em{ color: var(--green) }
.places .eyebrow{ color: var(--green) }

.places-grid.v2{
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 0;
  border-top: 1px solid var(--bg-light);
  border-left: 1px solid var(--bg-light);
}
@media (max-width: 1100px){ .places-grid.v2{ grid-template-columns: repeat(2, 1fr) } }
@media (max-width: 560px){ .places-grid.v2{ grid-template-columns: 1fr } }
@media (max-width: 1100px){ .places-grid.v2 .place.v2[style*="span 2"]{ grid-column: span 2 !important } }
@media (max-width: 560px){ .places-grid.v2 .place.v2[style*="span 2"]{ grid-column: span 1 !important } }

.place.v2{
  border: none;
  border-right: 1px solid var(--bg-light);
  border-bottom: 1px solid var(--bg-light);
  border-radius: 0;
  padding: 24px;
  display: flex; flex-direction: column; gap: 14px;
  position: relative; overflow: hidden;
  transition: filter .25s ease;
  min-height: 280px;
}
.place.v2:hover{ filter: brightness(1.04) }
.place.v2.big{ min-height: 340px; padding: 32px }
.place.v2 .place-num{
  display: flex; align-items: center; gap: 10px;
  font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  opacity: .8;
}
.place.v2 .rh-num{
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; transform: rotate(45deg);
  background: currentColor;
}
.place.v2 .rh-num span{
  display: block; transform: rotate(-45deg);
  color: var(--bg);
  font-size: 10px; font-weight: 800; letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.place.v2.tile-dark .rh-num span{ color: var(--dark) }
.place.v2.tile-light .rh-num span,
.place.v2.tile-pale .rh-num span,
.place.v2.tile-mid .rh-num span{ color: var(--bg-light) }
.place.v2.tile-green .rh-num span{ color: var(--dark) }

.place.v2 h3{
  font-weight: 800; font-size: clamp(22px, 2.2vw, 30px);
  line-height: 1; letter-spacing: -.015em; margin: 0;
  text-wrap: balance;
}
.place.v2.big h3{ font-size: clamp(32px, 3.4vw, 48px); line-height: .98 }
.place.v2 .place-desc{
  font-size: 13px; line-height: 1.5; opacity: .82;
  margin: 0; text-wrap: pretty;
  flex: 1;
}
.place.v2.big .place-desc{ font-size: 15px; max-width: 520px }
.place.v2 .place-meta{
  display: flex; gap: 14px; flex-wrap: wrap;
  font-size: 11px; letter-spacing: .04em; opacity: .8;
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px solid color-mix(in oklab, currentColor 22%, transparent);
}
.place.v2 .place-meta b{
  font-size: 14px; font-weight: 800; letter-spacing: -.01em; margin-right: 2px;
}
.place.v2 .place-meta .addr{ opacity: .65 }

/* Декор для большой карточки */
.place-bigmark{
  position: absolute; right: 24px; top: 24px;
  display: flex; gap: 6px;
}
.place-bigmark span{
  display: block; width: 16px; height: 16px; transform: rotate(45deg);
  background: currentColor; opacity: .85;
}
.place-bigmark span:nth-child(2){ width: 10px; height: 10px; opacity: .6 }
.place-bigmark span:nth-child(3){
  width: 12px; height: 12px;
  background: transparent; border: 2px solid currentColor; opacity: .9;
}

/* ───────── Секция «Билеты / как попасть» ───────── */
.tickets{
  padding: 96px 32px;
  max-width: 1480px; margin: 0 auto;
}
.tickets-grid{
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  border-top: 1px solid var(--dark); border-left: 1px solid var(--dark);
}
@media (max-width: 920px){ .tickets-grid{ grid-template-columns: 1fr } }
.tk{
  padding: 28px 26px;
  border-right: 1px solid var(--dark); border-bottom: 1px solid var(--dark);
  display: flex; flex-direction: column; gap: 14px;
  position: relative; overflow: hidden;
  transition: filter .2s ease;
}
.tk-free{ background: #fff; color: var(--dark) }
.tk-reg{ background: var(--mid); color: var(--dark) }
.tk-pass{ background: var(--dark); color: var(--bg-light) }
.tk:hover{ filter: brightness(1.03) }
.tk-head{
  display: flex; justify-content: space-between; align-items: baseline;
  padding-bottom: 14px;
  border-bottom: 1px solid color-mix(in oklab, currentColor 22%, transparent);
}
.tk-tag{
  font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  padding: 5px 10px;
  background: color-mix(in oklab, currentColor 12%, transparent);
}
.tk-price{
  font-weight: 800; font-size: 32px; letter-spacing: -.02em; line-height: 1;
  font-variant-numeric: tabular-nums;
}
.tk h3{
  margin: 0; font-weight: 800; font-size: 28px; letter-spacing: -.01em; line-height: 1;
}
.tk ul{
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 10px;
  font-size: 14px; line-height: 1.4;
  flex: 1;
}
.tk ul li{
  position: relative; padding-left: 18px;
  text-wrap: pretty;
}
.tk ul li::before{
  content: ""; position: absolute;
  left: 0; top: 7px;
  width: 8px; height: 8px;
  transform: rotate(45deg);
  background: currentColor; opacity: .65;
}
.tk-foot{
  font-size: 11px; letter-spacing: .04em; opacity: .65;
  padding-top: 8px;
  border-top: 1px solid color-mix(in oklab, currentColor 18%, transparent);
}
.tk-cta{
  display: inline-flex; align-items: center; justify-content: space-between;
  gap: 10px;
  margin-top: 4px;
  background: var(--bg-light); color: var(--dark);
  border: none; cursor: pointer;
  padding: 14px 18px;
  font: inherit; font-size: 14px; font-weight: 700; letter-spacing: -.005em;
  transition: background .2s ease;
}
.tk-cta:hover{ background: var(--green); color: #fff }

.tickets-note{
  margin-top: 24px;
  padding: 18px 22px;
  background: color-mix(in oklab, var(--green) 14%, transparent);
  border: 1px solid color-mix(in oklab, var(--green) 35%, transparent);
  font-size: 13px; line-height: 1.5;
  text-wrap: pretty;
}
.tickets-note b{ font-weight: 700 }

/* ───────── Старая разметка площадок (для других страниц, если используется) ───────── */
.places-grid:not(.v2){ display:grid; grid-template-columns: repeat(3, 1fr); gap: 24px }
@media (max-width: 920px){ .places-grid:not(.v2){ grid-template-columns: 1fr 1fr } }
@media (max-width: 560px){ .places-grid:not(.v2){ grid-template-columns: 1fr } }
.place:not(.v2){
  border: 1px solid color-mix(in oklab, var(--bg-light) 18%, transparent);
  border-radius: 14px; padding: 22px;
  display:flex; flex-direction:column; gap:14px;
  transition: background .3s ease;
}
.place:not(.v2):hover{ background: color-mix(in oklab, var(--bg-light) 6%, transparent) }

/* ───────── Footer — тёмная плашка ───────── */
.foot{
  background: var(--dark); color: var(--bg-light);
  padding: 0;
  margin: 0;
  border-top: none;
}
.foot > *{ max-width: 1480px; margin-left: auto; margin-right: auto }
.foot .foot-grid{
  display:grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 32px;
  padding: 64px 32px 32px;
}
@media (max-width: 760px){ .foot .foot-grid{ grid-template-columns: 1fr 1fr; padding: 48px 18px 24px } }
.foot-h{ font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color: var(--mid); margin-bottom: 14px }
.foot ul{ list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:8px; font-size:13px }
.foot ul a{ color: var(--bg-light); opacity: .85; transition: opacity .2s ease, color .2s ease }
.foot ul a:hover{ color: var(--mid); opacity: 1 }
.foot-copy{
  font-size:12px; opacity:.65; display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding: 18px 32px 32px;
  border-top: 1px solid color-mix(in oklab, var(--bg-light) 18%, transparent);
}
@media (max-width: 760px){ .foot-copy{ padding: 18px 18px 24px } }

/* ───────── Анимации птицы ───────── */
.bird .tri{
  transition: fill .4s ease;
  will-change: transform, opacity;
  transform-box: fill-box;
}

/* wave — волна справа-налево + лёгкое раскрытие */
.bird.is-hovered.bird-mode-wave .tri{
  animation: tri-wave 1.6s ease-in-out infinite;
}
@keyframes tri-wave{
  0%,100%{ transform: scale(1); opacity:1 }
  35%   { transform: scale(1.18); opacity:.85 }
  60%   { transform: scale(.96) }
}

/* sway — мягкое колыхание масштабом */
.bird.is-hovered.bird-mode-sway .tri{
  animation: tri-sway 2.6s ease-in-out infinite;
}
@keyframes tri-sway{
  0%,100%{ transform: translateY(0) }
  50%   { transform: translateY(-2px) scale(1.04) }
}

/* tremble — мелкая дрожь */
.bird.is-hovered.bird-mode-tremble .tri{
  animation: tri-tremble .22s steps(2) infinite;
}
@keyframes tri-tremble{
  0%   { transform: translate(0,0) }
  25%  { transform: translate(.6px,-.4px) }
  50%  { transform: translate(-.5px,.5px) }
  75%  { transform: translate(.3px,.3px) }
  100% { transform: translate(0,0) }
}

/* shimmer — мерцание прозрачностью со сдвигом */
.bird.is-hovered.bird-mode-shimmer .tri{
  animation: tri-shimmer 1.8s ease-in-out infinite;
}
@keyframes tri-shimmer{
  0%,100%{ opacity:1 }
  50%   { opacity:.45 }
}

/* flip — взмах: тёмные «пиксели» отлетают и возвращаются */
.bird.is-hovered.bird-mode-flip .tri{
  animation: tri-flip 2s ease-in-out infinite;
}
@keyframes tri-flip{
  0%,100%{ transform: scale(1) }
  50%   { transform: scale(.4) translateY(-3px) }
}


/* ═══════════════ Адаптив: планшет и мобильник ═══════════════ */
@media (max-width: 880px){
  /* Навигация: компактнее, переносим ссылки на новую строку */
  .nav{
    padding: 14px 18px;
    gap: 14px;
    flex-wrap: wrap;
  }
  .nav-brand .logo-mark{ width: 44px }
  .nav-wm-1{ font-size: 13px }
  .nav-links{
    order: 3;
    width: 100%;
    overflow-x: auto;
    gap: 18px;
    padding: 4px 0 6px;
    margin: 0 -18px;
    padding-left: 18px;
    padding-right: 18px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .nav-links::-webkit-scrollbar{ display: none }
  .nav-links a{ font-size: 13px; flex: none }
  .nav-cta{ padding: 9px 14px; font-size: 12px }

  /* Hero: меньше воздуха, птица меньше */
  .hero{ padding: 32px 18px 56px; gap: 32px }
  .hero-bird{ min-height: 280px }
  .hero-bird .logo-mark{ width: clamp(220px, 60vw, 360px) }
  .hero-title{ font-size: clamp(40px, 10vw, 72px) }

  /* Секции */
  .section{ padding: 56px 18px }
  .section-head{ gap: 18px; margin-bottom: 28px }
  .section-head h2{ font-size: clamp(32px, 8vw, 56px) }

  /* Площадки */
  .places{ padding: 56px 18px }

  /* Footer */
  .foot{ padding: 48px 18px 32px }
}

@media (max-width: 560px){
  .nav{ padding: 12px 14px }
  .nav-wm-1{ font-size: 12px }
  .nav-cta span{ display: none }
  .nav-cta{ padding: 9px 11px }
  .hero{ padding: 24px 14px 40px; gap: 18px }
  .section, .places{ padding: 40px 14px }
}


/* ─── Книжная полка фестиваля (главная) ─────────────────────────────── */
.shelf{
  padding: 80px 0 96px;
  background: var(--bg);
  border-top: 1px solid color-mix(in oklab, var(--dark) 14%, transparent);
}
.shelf-head{
  max-width: 1620px; margin: 0 auto 28px;
  padding: 0 32px;
  display: grid; grid-template-columns: 1fr 1fr; gap: 32px 56px;
  align-items: end;
}
.shelf-head .eyebrow{ grid-column: 1 / -1 }
.shelf-head h2{
  margin: 0; font-size: clamp(34px, 4.6vw, 64px);
  font-weight: 800; letter-spacing: -0.02em; line-height: 0.98;
}
.shelf-head h2 em{ font-style: italic; font-weight: 400; color: var(--green) }
.shelf-head p{
  font-size: 15px; line-height: 1.5; opacity: 0.78;
  max-width: 44ch; margin: 0;
}
@media (max-width: 880px){
  .shelf-head{ grid-template-columns: 1fr; gap: 12px; padding: 0 18px }
  .shelf-head p{ max-width: none }
}

.shelf-wrap{ position: relative }

.shelf-row{
  display: flex; gap: 22px;
  padding: 12px 32px 24px;
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in oklab, var(--dark) 30%, transparent) transparent;
  align-items: flex-start; /* разные высоты — выравниваем по верхнему краю */
}
.shelf-row::-webkit-scrollbar{ height: 6px }
.shelf-row::-webkit-scrollbar-thumb{
  background: color-mix(in oklab, var(--dark) 30%, transparent);
  border-radius: 3px;
}
.shelf-row::-webkit-scrollbar-track{ background: transparent }

.shelf-item{
  scroll-snap-align: start;
  display: flex; flex-direction: column; gap: 10px;
  flex: 0 0 auto;
}
.shelf-item[data-size="lg"]{ width: 220px }
.shelf-item[data-size="md"]{ width: 168px }
.shelf-item[data-size="sm"]{ width: 132px }
.shelf-item .bookcard{
  border: none !important;
  background: transparent !important;
  padding: 0 !important;
}
.shelf-item .bookcover{
  width: 100% !important;
  margin: 0 !important;
  box-shadow: 0 6px 22px -10px rgba(16, 56, 35, 0.4);
  transition: transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease;
}
.shelf-item .bookcard:hover .bookcover{
  transform: translateY(-6px) !important;
  box-shadow: 0 14px 32px -12px rgba(16, 56, 35, 0.55);
}
.shelf-author{
  font-size: 11px; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--dark); opacity: 0.7;
  text-decoration: none;
  transition: opacity 0.15s ease;
  padding: 0 4px;
  line-height: 1.3;
}
.shelf-author:hover{ opacity: 1; color: var(--green) }
.shelf-item[data-size="sm"] .shelf-author{ font-size: 10px }

.shelf-controls{
  max-width: 1620px; margin: 0 auto;
  padding: 8px 32px 0;
  display: flex; align-items: center; gap: 14px;
  justify-content: flex-end;
}
.shelf-arr{
  width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--dark);
  color: var(--dark); cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.shelf-arr:hover{ background: var(--dark); color: var(--bg-light) }
.shelf-count{
  font-size: 11px; font-weight: 700; letter-spacing: 0.12em;
  text-transform: uppercase; opacity: 0.55;
  font-variant-numeric: tabular-nums;
}

/* ─── Стили обложек книг (общие; используются и на главной, и на странице спикера) ─── */
.bookcard{
  display: flex; flex-direction: column;
  text-decoration: none; color: inherit;
}
.bookcover{
  position: relative;
  width: 100%; aspect-ratio: 5/7;
  overflow: hidden;
  transition: transform .25s cubic-bezier(.2,.8,.2,1);
}
.bookcover .bc-art{ position: absolute; inset: 0; width: 100%; height: 100% }
.bookcover-text{
  position: relative; z-index: 2;
  padding: 16px 14px 14px;
  display: flex; flex-direction: column; gap: 6px;
}
.bc-author{
  font-size: 9px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  opacity: 0.85; line-height: 1.1;
}
.bc-title{
  font-size: clamp(13px, 1.3vw, 17px); font-weight: 800; line-height: 1.05;
  letter-spacing: -0.01em; text-wrap: balance;
}
.bookcover-spine{
  position: absolute; left: 0; top: 0; bottom: 0; width: 4px; z-index: 3;
}
.bookcard-meta{
  display: flex; justify-content: space-between; align-items: center;
  font-size: 11px; padding-top: 8px;
}
.bc-year{ font-variant-numeric: tabular-nums; opacity: 0.7; font-weight: 600 }
.bc-link{
  display: inline-flex; align-items: center; gap: 6px;
  opacity: 0.75; font-weight: 600;
  transition: gap .25s ease;
}
.bc-link svg{ transition: transform .25s ease }
.bookcard:hover .bc-link{ gap: 10px }
.bookcard:hover .bc-link svg{ transform: translate(2px, -2px) }

/* размер sm — без подписей внутри обложки тоже маловато; уменьшим текст */
.bookcard-sm .bc-title{ font-size: 12px }
.bookcard-sm .bc-author{ font-size: 8px }
.bookcard-sm .bookcover-text{ padding: 12px 10px 10px }


/* ════════ Главная v2 (после правок Михаила) ════════ */

/* Hero без декора VII / тикеров / hint */
.hero.hero-clean .hero-sub{
  max-width: 580px;
  font-size: clamp(15px, 1.18vw, 17px);
  line-height: 1.55;
}

/* Вступление — оставшиеся абзацы описания после hero */
.intro{
  padding: 8px 32px 56px;
  max-width: 1480px;
  margin: 0 auto;
}
.intro-inner{
  max-width: 760px;
  display: flex; flex-direction: column; gap: 18px;
  font-size: clamp(15px, 1.05vw, 17px);
  line-height: 1.6;
  color: color-mix(in oklab, var(--dark) 88%, transparent);
}
.intro-p{ margin: 0 }
@media (max-width: 880px){
  .intro{ padding: 4px 18px 40px }
}

/* Программа на главной */
.program-section{ padding-top: 64px; padding-bottom: 56px }
.program-section .legend{
  margin: 0 0 16px;
  padding: 0;
  max-width: none;
  display: flex; gap: 18px; flex-wrap: wrap;
  font-size: 12px; letter-spacing: .02em;
}
.program-section .legend-item{ display: flex; align-items: center; gap: 8px; opacity: .88 }
.program-section .legend-sw{ width: 14px; height: 14px; display: inline-block }
.program-section .daygrid-wrap{
  margin: 0; padding: 0;
  overflow-x: auto;
}
.program-section .daygrid{
  display: flex;
  border-top: 1px solid var(--dark);
  border-left: 1px solid var(--dark);
  border-bottom: 1px solid var(--dark);
}
.program-section .daygrid > .daycol{
  flex: 1 1 0;
  min-width: 280px;
  display: flex; flex-direction: column;
  border-right: 1px solid var(--dark);
  min-height: 0;
}
.program-section .daycol-head{
  padding: 14px 12px 12px;
  border-bottom: 1px solid var(--dark);
  display: flex; flex-direction: column; gap: 2px;
  background: var(--bg);
}
.program-section .daycol-head .dh-num{ font-size: 28px; font-weight: 800; line-height: 1; letter-spacing: -.02em }
.program-section .daycol-head .dh-mo{ font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; opacity: .5 }
.program-section .daycol-head .dh-wk{ font-size: 10px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--green); margin-top: 6px }
.program-section .daycol-head .dh-count{ font-size: 10px; opacity: .5; margin-top: 4px; letter-spacing: .04em }
.program-section .evt{
  padding: 14px 12px;
  border-bottom: 1px solid var(--dark);
  display: flex; flex-direction: column; gap: 8px;
  cursor: pointer; transition: filter .2s ease;
  position: relative; overflow: hidden;
}
/* Обложка меро (карточка в дневной сетке программы) */
.program-section .evt-cover{
  margin: -14px -12px 4px;
  width: calc(100% + 24px);
  aspect-ratio: 16/9;
  overflow: hidden;
  position: relative;
}
.program-section .evt-cover img{
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform .4s ease;
}
.program-section .evt:hover .evt-cover img{ transform: scale(1.04) }
.program-section .evt-has-cover .evt-fmt{
  position: absolute; top: 8px; right: 8px;
  background: color-mix(in oklab, var(--bg-light) 92%, transparent);
  color: var(--dark);
  padding: 3px 7px; border-radius: 2px;
  z-index: 2; opacity: 1;
}
.program-section .evt:hover{ filter: brightness(1.05) }
.program-section .evt:last-child{ border-bottom: none }
.program-section .evt-time{
  font-size: 11px; font-weight: 800; letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
  display: flex; align-items: center; gap: 6px;
}
.program-section .evt-time .rh{ width: 5px; height: 5px; transform: rotate(45deg); background: currentColor; opacity: .7 }
.program-section .evt-title{
  font-weight: 700; font-size: 14px; line-height: 1.15; letter-spacing: -.005em;
  margin: 0; text-wrap: pretty;
}
.program-section .evt-meta{
  margin-top: auto;
  display: flex; flex-direction: column; gap: 3px;
  font-size: 11px; opacity: .78;
}
.program-section .evt-meta .speaker{ font-weight: 600; opacity: .95 }
.program-section .evt-meta .place{ display: flex; align-items: center; gap: 5px }
.program-section .evt-fmt{
  position: absolute; top: 10px; right: 10px;
  font-size: 9px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  opacity: .55;
}
.program-section .evt-empty{
  padding: 22px 12px; text-align: center; opacity: .35; font-size: 11px;
  letter-spacing: .04em; font-weight: 500;
}
.program-foot{
  display: flex; justify-content: center;
  padding: 32px 0 8px;
}

@media (max-width: 1180px){
  .program-section .daygrid > .daycol{ min-width: 240px }
}
@media (max-width: 880px){
  .program-section .daygrid-wrap{ overflow: visible }
  .program-section .daygrid{
    flex-direction: column;
    border-left: none; border-right: none;
  }
  .program-section .daygrid > .daycol{
    border-right: none;
    border-bottom: 1px solid var(--dark);
    min-width: 0;
  }
  .program-section .daygrid > .daycol:last-child{ border-bottom: none }
  .program-section .daycol-head{
    flex-direction: row; align-items: baseline; gap: 12px; padding: 16px 18px;
  }
  .program-section .daycol-head .dh-num{ font-size: 32px }
  .program-section .daycol-head .dh-wk{ margin-top: 0 }
  .program-section .daycol-head .dh-count{ margin-left: auto; margin-top: 0 }
  .program-section .evt{ padding: 16px 18px }
  .program-section .evt-title{ font-size: 16px }
}

/* Большая цитата губернатора — тёмно-зелёная плашка */
.big-quote{
  background: var(--dark);
  color: var(--bg-light);
  padding: 0;
  margin: 56px 0;
}
.big-quote-inner{
  display: flex; flex-direction: column; gap: 18px;
  max-width: 1480px; margin: 0 auto;
  padding: 96px 32px;
}
.big-quote .aq-mark{
  font-family: "Manrope", serif; font-weight: 800;
  font-size: clamp(80px, 12vw, 180px);
  line-height: .6;
  color: var(--mid);
  user-select: none;
}
.big-quote blockquote{
  margin: 0;
  font-weight: 600;
  font-size: clamp(22px, 2.4vw, 36px);
  line-height: 1.28;
  letter-spacing: -.01em;
  text-wrap: balance;
  color: var(--bg-light);
  max-width: 980px;
}
.big-quote-author{
  display: flex; flex-direction: column; gap: 4px;
  margin-top: 12px;
  border-top: 1px solid color-mix(in oklab, var(--bg-light) 28%, transparent);
  padding-top: 16px;
  max-width: 420px;
}
.big-quote-author .bq-name{
  font-weight: 700; font-size: 16px; letter-spacing: -.005em;
  color: var(--bg-light);
}
.big-quote-author .bq-role{
  font-size: 13px; opacity: .7; letter-spacing: .02em;
  color: var(--bg-light);
}
@media (max-width: 880px){
  .big-quote{ margin: 32px 0 }
  .big-quote-inner{ padding: 56px 18px }
}

/* Фильтры программы на главной */
.prog-filters{
  background: var(--bg);
  border-top: 1px solid var(--dark);
  border-bottom: 1px solid var(--dark);
  margin-bottom: 0;
}
.prog-filters-inner{
  display:flex; gap:0; align-items:stretch;
  border-left: 1px solid var(--dark);
}
.prog-filters .pf-block{
  border-right: 1px solid var(--dark);
  padding: 12px 16px;
  display:flex; flex-direction:column; gap:6px;
  min-width: 0;
}
.prog-filters .pf-block-venues{ flex: 1 }
.prog-filters .pf-label{
  font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; opacity:.55;
}
.prog-filters .day-strip{ display:flex; gap:0 }
.prog-filters .day-strip button{
  background:transparent; border:none; cursor:pointer;
  padding: 4px 10px; font: inherit; font-weight:600; font-size:14px;
  border-right:1px solid color-mix(in oklab, var(--dark) 14%, transparent);
  color: var(--dark); transition: background .15s ease, color .15s ease;
  font-variant-numeric: tabular-nums;
}
.prog-filters .day-strip button:last-child{ border-right:none }
.prog-filters .day-strip button:hover{ background: color-mix(in oklab, var(--dark) 6%, transparent) }
.prog-filters .day-strip button.on{ background: var(--green); color:#fff }
.prog-filters .day-strip .dwk{ display:block; font-size:9px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; opacity:.6; line-height:1 }
.prog-filters .day-strip .dnum{ display:block; font-size:16px; line-height:1; margin-top:2px }
.prog-filters .day-strip button.on .dwk{ opacity:.85 }

.prog-filters .chips{ display:flex; gap:6px; flex-wrap:wrap }
.prog-filters .chip{
  font-size:12px; font-weight:600; letter-spacing:.02em;
  padding: 6px 10px; border:1px solid var(--dark); background:transparent; color:var(--dark);
  cursor:pointer; transition: background .2s ease, color .2s ease;
}
.prog-filters .chip:hover{ background: color-mix(in oklab, var(--dark) 8%, transparent) }
.prog-filters .chip.on{ background: var(--dark); color: var(--bg-light) }
.prog-filters .chip .sw{ display:inline-block; width:8px; height:8px; transform:rotate(45deg); margin-right:6px; vertical-align:middle }
.prog-filters .pf-block-side{ flex: 0 0 auto; align-items: flex-end; gap: 6px }
.prog-filters .reset-btn{
  display:inline-flex; align-items:center; gap:6px;
  background:transparent; border:1px solid var(--green); color:var(--green);
  cursor:pointer; font:inherit; font-size:11px; font-weight:700; letter-spacing:.04em;
  padding: 5px 9px; text-transform: uppercase;
  transition: background .15s ease, color .15s ease;
}
.prog-filters .reset-btn:hover{ background: var(--green); color:#fff }
.reset-link{
  background: none; border: none; padding: 0;
  font: inherit; color: var(--green); font-weight: 600;
  text-decoration: underline; cursor: pointer;
}
.reset-link:hover{ color: var(--dark) }

/* Сжатая колонка дня (фильтр активен, нет событий) */
.program-section .daycol.collapsed{
  flex: 0 0 auto;
  min-width: 56px; max-width: 56px;
  background: color-mix(in oklab, var(--dark) 4%, transparent);
}
.program-section .daycol.collapsed .daycol-head{
  padding: 12px 6px;
  align-items: center; text-align: center;
}
.program-section .daycol.collapsed .dh-mo{ display: none }
.program-section .daycol.collapsed .dh-num{ font-size: 18px; opacity: .55 }
.program-section .daycol.collapsed .dh-wk{ font-size: 9px; margin-top: 2px; opacity: .5 }
.program-section .daycol.collapsed .dh-count{ display: none }

@media (max-width: 1180px){
  .prog-filters .pf-block{ flex: 1 0 50%; border-bottom: 1px solid var(--dark) }
  .prog-filters-inner{ flex-wrap: wrap }
}
@media (max-width: 880px){
  .prog-filters-inner{ flex-direction: column; border-left: none }
  .prog-filters .pf-block{ border-right: none; border-bottom: 1px solid color-mix(in oklab, var(--dark) 14%, transparent); flex: 1 0 100% !important }
  .prog-filters .pf-block:last-child{ border-bottom: none }
  .prog-filters .day-strip{ overflow-x: auto; scrollbar-width: none }
  .prog-filters .day-strip::-webkit-scrollbar{ display: none }
  .prog-filters .day-strip button{ flex: none }
}

/* Реальные обложки книг — img вместо синтетического арта */
.bookcard.bookcard-real{
  width: 100%;
  display: flex; flex-direction: column;
  gap: 10px;
  text-decoration: none;
  color: inherit;
  transition: transform .25s ease;
}
.bookcard.bookcard-real:hover{ transform: translateY(-2px) }
.bookcover-real{
  width: 100%;
  aspect-ratio: 2/3;
  background: var(--mid);
  overflow: hidden;
  position: relative;
}
.bookcover-real img{
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.bookcard-real .bookcard-meta{
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
.bc-author-name{
  font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  opacity: .65;
}
.bc-book-title{
  font-size: 14px; font-weight: 700; line-height: 1.2;
  letter-spacing: -.005em;
  text-wrap: pretty;
}

/* Площадки v2 — поддержка иллюстрации */
.places .place.has-image{
  display: grid;
  grid-template-rows: 220px auto;
  gap: 0;
  padding: 0;
  overflow: hidden;
}
.places .place.has-image .place-image{
  background-size: cover;
  background-position: top center;
  background-color: var(--mid);
  width: 100%;
  height: 100%;
  min-height: 200px;
}
.places .place.has-image .place-body{
  padding: 24px;
  display: flex; flex-direction: column; gap: 14px;
}
.places .place:not(.has-image) .place-body{
  display: contents;
}
@media (max-width: 880px){
  .places .place.has-image{ grid-template-rows: 180px auto }
}

/* ─── Доступность: уважаем prefers-reduced-motion ─────────────────── */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  /* Птица в hero — статичная */
  .hero-bird svg, .logo-mark svg{ animation: none !important }
}
