@view-transition { navigation: auto; }
:root { interpolate-size: allow-keywords; --gv-dark: #333; --gv-accent: #f9e701; --gv-w: 1130px; }
html { scroll-behavior: smooth; }
.wp-site-blocks > * { margin-block: 0; }
.gv-home > * { margin-block: 0 !important; }
.gv-main { padding: 110px clamp(16px, 4vw, 24px) 3rem; min-height: 60vh; }

/* ===== Шапка: поверх hero прозрачная, при прокрутке темнеет (scroll-driven, без JS) ===== */
.gv-header-wrap { position: sticky; top: 0; z-index: 30; }
.home .gv-header-wrap { position: fixed; inset: 0 0 auto; }
.gv-header { height: 70px; padding: 0 clamp(16px, 3vw, 40px); gap: 16px; align-items: center; }
.gv-header p { margin: 0; }
.gv-logo, .gv-logo a { font-family: var(--wp--preset--font-family--logo); font-size: 32px; letter-spacing: .02em; text-decoration: none; text-transform: uppercase; color: #fff; line-height: 1; }
.gv-header a, .gv-header .wp-block-navigation-item__content, .gv-header .wp-block-navigation__responsive-container-open { color: #fff !important; }
.gv-nav { flex: 1; min-width: 0; font-family: var(--wp--preset--font-family--condensed); font-weight: 300; text-transform: uppercase; font-size: 15px; }
.gv-nav .wp-block-navigation__container { gap: 0; flex-wrap: nowrap; justify-content: flex-start; }
.gv-nav .wp-block-navigation-item__content { padding: 0 clamp(5px, .8vw, 16px); white-space: nowrap; }
.gv-nav .current-menu-item > a, .gv-nav .wp-block-navigation-item__content:hover { color: var(--gv-accent) !important; }
.gv-nav .wp-block-navigation__submenu-container { background: var(--gv-dark) !important; border: 0; padding: 10px 0; min-width: 240px; }
.gv-nav .wp-block-navigation__submenu-container a { padding: 8px 20px; }
.gv-order .wp-block-button__link { background: transparent; border: 1px solid #fff; border-radius: 0; padding: 7px 12px; font-family: var(--wp--preset--font-family--body); font-weight: 300; text-transform: uppercase; font-size: 15px; color: #fff; white-space: nowrap; }
.gv-nav .wp-block-navigation__responsive-container.is-menu-open { padding: 80px 24px 24px; }

@media (max-width: 1500px) { .gv-nav { font-size: 14px; } .gv-nav .wp-block-navigation-item__content { padding: 0 clamp(4px, .55vw, 10px); } }
@media (max-width: 1320px) {
  .gv-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none !important; }
  .gv-nav .wp-block-navigation__responsive-container-open { display: flex !important; }
  .gv-nav { justify-content: flex-end; }
}
/* ===== Hero (100svh в CSS: без JS, без сдвигов; кадр 1 = LCP) ===== */
.gv-hero { display: flow-root; position: relative; height: 100svh; min-height: 520px; overflow: clip; background: #222; color: #fff; }
.gv-slide { position: absolute; inset: 0; visibility: hidden; z-index: 0; }
.gv-slide.is-active, .gv-slide.is-prev { visibility: visible; }
.gv-slide.is-prev { z-index: 1; }
.gv-slide.is-active { z-index: 2; }
.gv-slide > img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(rgba(0,0,0,.26), rgba(0,0,0,0) 28%, rgba(0,0,0,0) 62%, rgba(0,0,0,.2)); }
/* Смена кадра: новый кадр «выплёскивается» маской-кляксой (splat из WebP с альфой), затем маска снимается */
.gv-slide.is-in { -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: 50% 50%; mask-position: 50% 50%; -webkit-mask-size: 0; mask-size: 0; animation: gv-splat 2.2s cubic-bezier(.3, .6, .2, 1) forwards; }
.gv-slide--1.is-in { -webkit-mask-image: url(img/mask-2.webp); mask-image: url(img/mask-2.webp); }
.gv-slide--2.is-in { -webkit-mask-image: url(img/mask-4.webp); mask-image: url(img/mask-4.webp); }
@keyframes gv-splat { to { -webkit-mask-size: 340vmax; mask-size: 340vmax; } }
.gv-slide.is-active > img { animation: gv-kb 14s ease-out both; }
@keyframes gv-kb { from { scale: 1; } to { scale: 1.08; } }
/* текст первого кадра виден сразу (иначе анимация оттягивает LCP); при смене кадра он появляется позже, когда клякса почти раскрылась */
.gv-slide.is-active.is-in .gv-slide__txt > * { animation: gv-txt 1.1s cubic-bezier(.2, .7, .2, 1) .9s both; }
.gv-slide.is-active.is-in .gv-slide__txt > :nth-child(2) { animation-delay: 1.05s; } .gv-slide.is-active.is-in .gv-slide__txt > :nth-child(3) { animation-delay: 1.2s; }
@keyframes gv-txt { from { opacity: 0; clip-path: inset(0 0 100% 0); translate: 0 14px; } to { opacity: 1; clip-path: inset(0); translate: 0; } }
.gv-dots { position: absolute; z-index: 5; bottom: 28px; left: 50%; translate: -50% 0; display: flex; gap: 12px; }
.gv-dots button { width: 12px; height: 12px; padding: 0; border: 1px solid #fff; border-radius: 50%; background: transparent; cursor: pointer; transition: background .2s, scale .2s; }
.gv-dots button[aria-current] { background: var(--gv-accent); border-color: var(--gv-accent); scale: 1.2; }
.gv-dots button:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.gv-slide__txt { position: absolute; z-index: 1; top: 50%; translate: 0 -50%; left: max(16px, calc(50% - 547px)); width: min(600px, calc(100% - 32px)); }
.gv-slide__txt h1, .gv-slide__txt h2 { font-family: var(--wp--preset--font-family--display); font-weight: 400; font-size: clamp(1.7rem, 1.1rem + 2.4vw, 2.5rem); letter-spacing: 3px; line-height: 1.5; text-transform: uppercase; color: #fff; margin: 0 0 .6em; }
.gv-slide__txt p { margin: 0 0 .7em; font-size: clamp(1rem, .95rem + .5vw, 1.35rem); color: #fff; line-height: 1.35; }
.gv-slide__txt a { color: #fff; text-decoration: none; }
.gv-slide__txt a:hover { color: var(--gv-accent); }
.gv-social { display: flex; gap: 22px; margin-top: 1.4rem; }
.gv-social a { color: #fff; }
.gv-social svg { width: 28px; height: 28px; fill: currentColor; }
.gv-social a:hover { color: var(--gv-accent); }

/* ===== Общее для секций ===== */
.gv-block { padding: clamp(48px, 7vw, 90px) clamp(16px, 4vw, 24px); }
.gv-in { max-width: var(--gv-w); margin-inline: auto; }
.gv-tex { position: relative; padding-block: clamp(70px, 9vw, 110px); color: #fff; background: url(img/tex-shadow.webp) 50% 100% repeat-x, url(img/tex-muted.webp) #585658; }
.gv-h2 { font-family: var(--wp--preset--font-family--display); font-weight: 400; letter-spacing: 2px; text-align: center; text-transform: uppercase; margin: 0 0 1em; font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.4rem); }
.gv-block p { margin-block: 0 1em; }

/* ===== Новости: лента карточек (scroll-snap) ===== */
.gv-newslist { max-width: none; }
.gv-newslist .wp-block-post-template { scrollbar-width: none; display: flex; gap: 25px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px clamp(16px, 4vw, 40px) 24px; margin: 0; list-style: none; scrollbar-color: #fff #3a3a3a; scroll-padding-inline: clamp(16px, 4vw, 40px); }
.gv-newslist .wp-block-post { flex: 0 0 266px; scroll-snap-align: start; background: #fff; color: #333; margin: 0; }
.gv-newslist :is(h2, h3) { font-family: var(--wp--preset--font-family--heading); font-size: 15px; line-height: 1.4; text-align: center; padding: 22px 16px; margin: 0; min-height: 106px; display: grid; place-items: center; }
.gv-newslist :is(h2, h3) a { color: #333; text-decoration: none; }
.gv-newslist .wp-block-post-featured-image { margin: 0; }
.gv-newslist .wp-block-post-featured-image img { width: 100%; height: 300px; object-fit: cover; display: block; }
.gv-newslist .wp-block-post:not(:has(img)) :is(h2, h3) { min-height: 0; }

.gv-newslist .wp-block-post-template::-webkit-scrollbar { display: none; }
.gv-arrows { display: flex; justify-content: center; gap: 10px; margin-top: 18px; }
.gv-arrows button { width: 56px; height: 36px; border: 0; background: transparent; cursor: pointer; position: relative; }
.gv-arrows button::before { content: ""; position: absolute; inset: 11px auto auto 22px; width: 12px; height: 12px; border: solid #fff; border-width: 0 0 2px 2px; rotate: 45deg; transition: translate .2s; }
.gv-arrows [data-next]::before { rotate: -135deg; inset-inline-start: 18px; }
.gv-arrows [data-prev]:hover::before { translate: -4px 0; } .gv-arrows [data-next]:hover::before { translate: 4px 0; }
.gv-arrows button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

/* ===== Плитки услуг 3×2 на всю ширину ===== */
.gv-tiles { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0; padding: 0; list-style: none; }
.gv-tile { position: relative; height: clamp(240px, 21vw, 300px); overflow: clip; color: #fff; isolation: isolate; }
.gv-tile > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.gv-tile::before { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .45); z-index: -1; }
.gv-tile__over img { transition: rotate .5s cubic-bezier(.2, .8, .2, 1), scale .5s cubic-bezier(.2, .8, .2, 1); }
.gv-tile:hover .gv-tile__over img { rotate: 8deg; scale: 1.08; }
@supports (animation-timeline: view()) {
  .gv-tile > img { top: -9%; height: 118%; animation: gv-par linear both; animation-timeline: view(); }
  @keyframes gv-par { from { translate: 0 -7%; } to { translate: 0 7%; } }
}
.gv-tile__over { position: absolute; inset: 0; display: grid; justify-items: center; align-content: center; gap: 0; text-align: center; text-decoration: none; color: #fff; }
.gv-tile__over img { width: min(200px, 55%); height: auto; margin-top: -10px; }
.gv-tile__over b { font-family: var(--wp--preset--font-family--display); font-weight: 400; font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2.2rem); text-transform: uppercase; margin-top: -26px; letter-spacing: 1px; }
.gv-tile__menu { position: absolute; inset: 0; z-index: 2; background: rgba(255, 255, 255, .85); color: #222; padding: 24px; opacity: 0; transition: opacity .25s; display: grid; align-content: center; pointer-events: none; }
.gv-tile__menu ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.gv-tile__menu a { color: #222; text-decoration: none; font-size: 15px; }
.gv-tile__menu a:hover { text-decoration: underline; }
@media (hover: hover) { .gv-tile:hover .gv-tile__menu, .gv-tile:focus-within .gv-tile__menu { opacity: 1; pointer-events: auto; } }

@media (max-width: 900px) { .gv-tiles { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .gv-tiles { grid-template-columns: 1fr; } }

/* ===== Интро на кирпичной стене ===== */
.gv-intro { background: url(img/intro.jpg) 50% / cover; padding: clamp(40px, 8vw, 100px) clamp(16px, 4vw, 24px); }
.gv-panel { max-width: 848px; margin-inline: auto; background: rgba(247, 249, 253, .9); padding: clamp(20px, 3vw, 30px); }
.gv-intro .gv-panel { margin-left: max(0px, calc(50% - 565px)); }
.gv-panel h2, .gv-panel h1 { font-family: var(--wp--preset--font-family--heading); font-weight: 400; font-size: 23px; text-transform: uppercase; margin: 0 0 .8em; }
.gv-panel p { font-size: 14px; line-height: 1.65; }

/* ===== Преимущества: карточки с фото ===== */
.gv-adv { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 35px; list-style: none; padding: 0; margin: 0 auto; max-width: var(--gv-w); }
.gv-adv li { position: relative; min-height: 300px; color: #fff; isolation: isolate; display: grid; align-content: center; }
.gv-adv img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.gv-adv li::before { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .7); z-index: -1; }
.gv-adv div { padding: 30px; }
.gv-adv h3 { font-family: var(--wp--preset--font-family--heading); font-weight: 400; font-size: 18px; text-transform: uppercase; margin: 0 0 .7em; color: #fff; overflow-wrap: anywhere; }
.gv-adv p { font-size: 13px; line-height: 1.8; margin: 0; color: #fff; }

/* ===== Фотогалерея ===== */
.wp-block-gallery.gv-gallery.is-layout-flex { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 8px; max-width: var(--gv-w); margin-inline: auto; }
.gv-gallery figure.wp-block-image { width: auto !important; margin: 0 !important; }
.gv-gallery figure img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.gv-gallery > :not(figure) { display: none; }
.gv-more { text-align: center; margin-top: 1.5rem; }
.gv-more a { color: inherit; }

/* ===== О клубе ===== */
.gv-about { background: url(img/about.jpg) 50% / cover; padding: clamp(40px, 8vw, 100px) clamp(16px, 4vw, 24px); }
.gv-about .gv-panel { margin-right: max(0px, calc(50% - 565px)); position: relative; }
.gv-panel__tag { position: absolute; top: 22px; right: 30px; font-size: 12px; text-transform: uppercase; color: #888; letter-spacing: 1px; }

/* ===== Блог: мозаика ===== */
.gv-bloggrid { display: grid; grid-template-columns: 1fr 1fr; gap: 35px; max-width: var(--gv-w); margin-inline: auto; align-items: stretch; }
@media (max-width: 800px) { .gv-bloggrid { grid-template-columns: 1fr; } }
.gv-blogtile { position: relative; min-height: 365px; display: grid; place-items: center; isolation: isolate; text-decoration: none; color: #fff; }
.gv-blogtile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.gv-blogtile::before { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .5); z-index: -1; }
.gv-blogtile b { font-family: var(--wp--preset--font-family--display); font-weight: 400; font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem); text-transform: uppercase; }
.gv-posts4 .wp-block-post-template { display: grid; grid-template-columns: 1fr 1fr; gap: 35px; list-style: none; margin: 0; padding: 0; height: 100%; }
.gv-posts4 .wp-block-post { margin: 0; padding: 28px 30px; display: grid; align-content: start; gap: 12px; min-height: 160px; }
.gv-posts4 .wp-block-post:nth-child(odd) { background: #f7f9fd; color: #333; }
.gv-posts4 .wp-block-post:nth-child(even) { background: rgba(60, 60, 60, .8); color: #bbb; }
.gv-posts4 h3 { font-family: var(--wp--preset--font-family--heading); font-size: 13px; line-height: 1.7; margin: 0; }
.gv-posts4 h3 a { color: inherit; text-decoration: none; }
.gv-posts4 .wp-block-post-date { font-size: 13px; text-transform: uppercase; opacity: .6; }
@media (max-width: 560px) { .gv-posts4 .wp-block-post-template { grid-template-columns: 1fr; } }

/* ===== Видео (фасад) ===== */
.gv-videos { background: url(img/fog.webp) 50% / cover; padding: clamp(40px, 7vw, 90px) clamp(16px, 4vw, 24px); }
.gv-videos .gv-panel { max-width: var(--gv-w); }
.gv-videos__grid { display: grid; gap: 30px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.gv-video { margin: 0; }
.gv-video h3 { font-family: var(--wp--preset--font-family--heading); font-weight: 400; font-size: 15px; text-transform: uppercase; margin: 0 0 20px; }
.gv-video iframe, .gv-yt { display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; position: relative; background: #000; }
.gv-yt img { width: 100%; height: 100%; object-fit: cover; opacity: .85; transition: opacity .2s; }
.gv-yt:hover img { opacity: 1; }
.gv-yt__play { position: absolute; inset: 50% auto auto 50%; width: 68px; height: 48px; translate: -50% -50%; background: #f00; border-radius: 14px; }
.gv-yt__play::after { content: ""; position: absolute; inset: 50% auto auto 50%; translate: -40% -50%; border: 11px solid transparent; border-left: 18px solid #fff; }

/* ===== Заказ / калькулятор ===== */
.gv-order-sec a { color: var(--gv-accent); }
.gv-tabs { display: flex; flex-wrap: wrap; gap: 0 6px; }
.gv-tabs > input { position: absolute; opacity: 0; pointer-events: none; }
.gv-tabs > label { padding: 8px 14px; border: 1px solid #fff; cursor: pointer; font-family: var(--wp--preset--font-family--condensed); }
.gv-tabs > input:checked + label { background: var(--gv-accent); border-color: var(--gv-accent); color: #111; }
.gv-tabs > input:focus-visible + label { outline: 2px solid #fff; outline-offset: 2px; }
.gv-tab { display: none; flex-basis: 100%; padding-top: 22px; }
#gv-tab-calc:checked ~ .gv-tab--calc { display: block; }
#gv-tab-order:checked ~ .gv-tab--order { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 30px; }
#gv-tab-order:checked ~ .gv-tab--order .gv-tab__form { grid-column: span 2; }
@media (max-width: 760px) { #gv-tab-order:checked ~ .gv-tab--order .gv-tab__form { grid-column: auto; } }
.gv-form { display: grid; gap: 30px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.gv-form label, .gv-calc label { display: block; margin-bottom: 6px; font-size: 14px; }
.gv-form p { margin: 0; }
.gv-form input:not([type=submit]):not([type=hidden]), .gv-form textarea, .gv-calc input[type=number] { display: block; width: 100%; margin-top: 4px; padding: 9px 10px; border: 0; border-radius: 0; font: inherit; background: rgba(0, 0, 0, .28); color: #fff; }
.gv-form textarea { min-height: 150px; }
.gv-form input[type=submit], .gv-btn { padding: 9px 22px; background: rgba(0, 0, 0, .45); color: #fff; border: 0; border-radius: 0; font: inherit; font-family: var(--wp--preset--font-family--condensed); text-transform: uppercase; cursor: pointer; float: right; }
.gv-btn { float: none; }
.gv-form input[type=submit]:hover, .gv-btn:hover { background: var(--gv-accent); color: #111; }
.gv-form .wpcf7-response-output { color: #fff; }
.gv-contacts { font-size: 14px; line-height: 1.6; }
.gv-contacts p { margin: 0 0 1em; }
.gv-calc { max-width: 520px; }
.gv-calc fieldset { border: 0; padding: 0; margin: 0 0 12px; }
.gv-calc fieldset label { display: inline-block; margin-right: 1rem; }
.gv-calc fieldset input { width: auto !important; display: inline !important; margin: 0 4px 0 0 !important; }
.gv-calc__note { font-size: .8rem; margin: -6px 0 12px; opacity: .8; }
.gv-calc__res { display: block; margin-top: 16px; min-height: 3em; }
.gv-map { display: block; width: 100%; height: 500px; border: 0; filter: grayscale(1) contrast(1.05); }

/* ===== Подвал ===== */
.gv-footer { background: url(img/tex-shadow.webp) 50% 100% repeat-x, url(img/tex-dark.webp) #3b3b3b; padding: 90px 16px 40px; color: #fff; position: relative; margin-top: -1px; }
.gv-footer p { margin: 0; }
.gv-footer a { color: #fff; text-decoration: none; }
.gv-footer__logo, .gv-footer__logo a { font-family: var(--wp--preset--font-family--logo); font-size: 44px; text-transform: uppercase; line-height: 1; }
.gv-footer__nav { margin-top: 28px !important; text-transform: uppercase; letter-spacing: 4px; font-size: 13px; }
.gv-footer__nav a { padding: 0 14px; opacity: .85; }
.gv-footer__nav a:hover { color: var(--gv-accent); opacity: 1; }
.gv-footer__copy { margin-top: 18px !important; text-transform: uppercase; letter-spacing: 3px; font-size: 11px; }
.gv-footer__copy b { color: var(--gv-accent); font-weight: 400; }
.gv-totop { display: block; width: 44px; height: 44px; margin: 50px auto 0; position: relative; }
.gv-totop::before { content: ""; position: absolute; inset: 14px 12px auto; width: 16px; height: 16px; border: solid #fff; border-width: 2px 0 0 2px; rotate: 45deg; }

/* ===== Аккордеон (Подробности) ===== */
.wp-block-details { background: var(--wp--preset--color--muted); margin-block: 3px; }
.wp-block-details summary { cursor: pointer; padding: 10px 14px 10px 36px; list-style: none; position: relative; }
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::before { content: ""; position: absolute; left: 14px; top: 50%; width: 9px; height: 9px; margin-top: -4px; background: var(--wp--preset--color--accent); transition: transform .2s; }
.wp-block-details[open] summary::before { transform: rotate(90deg); }
.wp-block-details > :not(summary) { padding: 0 14px 12px 36px; margin: 0; }
.wp-block-details::details-content { block-size: 0; overflow: clip; transition: block-size .25s, content-visibility .25s allow-discrete; }
.wp-block-details[open]::details-content { block-size: auto; }
.gv-h { font-size: 1.05rem; margin: 1.8em 0 .5em; }

@media (max-width: 900px) { .gv-logo, .gv-logo a { font-size: 28px; } }

/* ===== v3: паритет с продом ===== */
@keyframes gv-fadein { from { opacity: 0; } to { opacity: 1; } }
/* рваный верхний край текстурных блоков и подвала (как на проде: край заходит на предыдущий блок) */
.gv-tex::before, .gv-footer::before { content: ""; position: absolute; left: 0; right: 0; top: -29px; height: 30px; pointer-events: none; z-index: 3; }
.gv-tex::before { background: url(img/tex-muted.webp) 0 0 / auto repeat fixed #585658; -webkit-mask: url(img/tex-border-muted.webp) 50% 0 / auto 30px repeat-x; mask: url(img/tex-border-muted.webp) 50% 0 / auto 30px repeat-x; }
.gv-footer::before { background: url(img/tex-dark.webp) 0 0 / auto repeat fixed #3b3b3b; -webkit-mask: url(img/tex-border-dark.webp) 50% 0 / auto 30px repeat-x; mask: url(img/tex-border-dark.webp) 50% 0 / auto 30px repeat-x; }
.gv-order .wp-block-button__link:hover { background: transparent; }

/* плитки услуг: как на проде — затемнение .5 → .65, фото растёт, вместо названия появляется список */
.gv-tile { height: 300px; }
.gv-tile::before { background: rgba(0, 0, 0, .5); transition: background .3s; }
.gv-tile:hover::before, .gv-tile:focus-within::before { background: rgba(0, 0, 0, .65); }
.gv-tile > img { transition: scale .3s; }
.gv-tile:hover > img { scale: 1.1; }
.gv-tile__over { transition: opacity .3s; }
.gv-tile__menu { background: none; color: #fff; text-align: center; justify-items: center; padding: 20px; pointer-events: none; transition: opacity .3s; }
.gv-tile__menu a { color: #fff; text-transform: uppercase; font-size: 14px; pointer-events: auto; }
.gv-tile__menu li { margin-bottom: 4px; }
@media (hover: hover) { .gv-tile:hover .gv-tile__over, .gv-tile:focus-within .gv-tile__over { opacity: 0; } }
.gv-tile:hover .gv-tile__over img { rotate: none; scale: 1; }

/* блог */
.gv-bloggrid { align-items: start; }
.gv-blogtile { min-height: 0; height: 293px; overflow: clip; }
.gv-blogtile img { transition: scale .3s; }
.gv-blogtile::before { background: rgba(0, 0, 0, .7); transition: background .3s; }
.gv-blogtile:hover img, .gv-blogtile:focus-visible img { scale: 1.1; }
.gv-blogtile:hover::before { background: rgba(0, 0, 0, .5); }
.gv-blogtile b { font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.5rem); font-weight: 500; }
.gv-posts4 .wp-block-post { min-height: 0; height: 100%; }
.gv-posts4 .wp-block-post-template { gap: 25px; height: auto; align-items: stretch; }
.gv-posts4 .wp-block-post-date::before { content: "Written on "; }

/* видео: 3 колонки как на проде, без чёрной полосы под превью */
.gv-videos__grid { grid-template-columns: repeat(3, 1fr); }
.gv-yt img { display: block; }
@media (max-width: 700px) { .gv-videos__grid { grid-template-columns: 1fr; } }

/* форма: поля с подсказками внутри, как на проде */
.gv-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.gv-form label { margin: 0 0 14px; position: relative; }
.gv-form input:not([type=submit]):not([type=hidden]), .gv-form textarea { background: #00000024; border: 1px solid #4a4a4aab; margin: 0; padding: 6px 8px; height: 36px; font-size: 15px; }
.gv-form textarea { height: 236px; }
.gv-form ::placeholder { color: #f9f9f9; opacity: 1; }
.gv-form input:focus, .gv-form textarea:focus, .gv-calc input:focus { border-color: var(--gv-accent) !important; outline: 0; }
.gv-ph { position: absolute; inset: 7px auto auto 9px; pointer-events: none; }
.gv-form label:has(input:focus, input:valid) .gv-ph { display: none; }
.gv-form input[type=date]:not(:focus):invalid { color: transparent; }
.gv-contacts a[href^=tel] { color: #fff; text-decoration: none; }

/* режим «без анимаций» отключает только крупное движение: автопереключение, hover и фокус работают */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .gv-slide.is-in { -webkit-mask-image: none; mask-image: none; animation: gv-fadein 1.5s ease forwards; }
  .gv-slide.is-active > img, .gv-slide.is-active .gv-slide__txt > * { animation: none; }
  .gv-tile > img { animation: none; top: 0; height: 100%; }
  .gv-tile:hover > img, .gv-blogtile:hover img { scale: none; }
}
.gv-blog, .gv-order-sec { padding-inline: clamp(16px, 4vw, 24px); }
.gv-posts4 .wp-block-post-template { grid-auto-rows: minmax(196px, auto); }
.gv-posts4 .wp-block-post { height: auto; }
.gv-form .wpcf7-form-control-wrap { display: block; }
.gv-form { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.gv-form label { display: block; }
.gv-form label.gv-date { display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 8px; background: #00000024; border: 1px solid #4a4a4aab; }
.gv-form label.gv-date:focus-within { border-color: var(--gv-accent); }
.gv-form label.gv-date .wpcf7-form-control-wrap { flex: 1; }
.gv-form label.gv-date input { background: none !important; border: 0 !important; height: auto !important; padding: 0 !important; }
.gv-ph { display: none; }
.gv-form input:not([type=submit]):not([type=hidden]), .gv-form textarea, .gv-calc input[type=number] { box-sizing: border-box; }

/* ===== v4 ===== */
/* «Преимущества»: затемнение .7 при наведении (uk-overlay-fade: opacity .7 -> 1, .3 с) */
.gv-adv li::before { background: rgba(0, 0, 0, .7); opacity: .7; transition: opacity .3s; }
.gv-adv li:hover::before, .gv-adv li:focus-within::before { opacity: 1; }
.gv-adv img { transition: scale .3s; }
.gv-adv div { padding: 30px 24px; }
.gv-adv h3 { font-size: 16px; overflow-wrap: normal; word-break: normal; letter-spacing: -.1px; }
/* плитка блога: при наведении темнеет (а не светлеет), фото растёт */
.gv-blogtile::before { background: rgba(0, 0, 0, .7); opacity: .7; }
.gv-blogtile:hover::before, .gv-blogtile:focus-visible::before { background: rgba(0, 0, 0, .7); opacity: 1; }
.gv-blogtile::before { transition: opacity .3s; }
.gv-bloggrid > * { margin: 0 !important; }

/* калькулятор — как на проде: подсказки внутри полей, жёлтые радио, кнопка «Рассчитать!» */
.gv-calc { max-width: 580px; display: grid; gap: 14px; }
.gv-calc input[type=number] { box-sizing: border-box; height: 36px; margin: 0; padding: 6px 8px; background: #00000024; border: 1px solid #4a4a4aab; color: #fff; width: 100%; font: inherit; }
.gv-calc ::placeholder { color: #f9f9f9; opacity: 1; }
.gv-calc fieldset { display: grid; gap: 6px; margin: 0; padding: 0; border: 0; }
.gv-calc legend { padding: 0; margin-bottom: 6px; float: none; }
.gv-calc fieldset label { display: flex; align-items: center; gap: 8px; margin: 0; }
.gv-calc input[type=radio] { appearance: none; width: 12px; height: 12px; border-radius: 50%; background: #3a3a3a; border: 0; margin: 0; flex: none; }
.gv-calc input[type=radio]:checked { background: var(--gv-accent); }
.gv-calc input[type=radio]:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.gv-calc__row { display: flex; gap: 10px; flex-wrap: wrap; }
.gv-calc__row input { flex: 1 1 240px; width: auto; }
.gv-calc .gv-btn { padding: 8px 14px; height: 36px; }
.gv-calc .gv-calc__go { justify-self: end; }
.gv-calc__note { text-align: right; margin: -8px 0 0; font-size: 15px; opacity: 1; }
.gv-calc__fine { margin: 0; font-size: 12px; opacity: .75; }
.gv-calc__res { margin-top: 4px; }
.gv-calc input[type=radio] { display: block !important; width: 13px !important; height: 13px !important; background: #3a3a3a !important; box-shadow: none; }
.gv-calc input[type=radio]:checked { background: var(--gv-accent) !important; }
/* видео: туманный фон прижат к верху, как на проде (иначе внизу виден тёмный лес и край теряется) */
.gv-videos { background: url(img/fog.webp) 50% 0 / max(100%, 2500px) auto repeat-x #f3efe9; }
.gv-calc fieldset { margin: 0; } .gv-calc legend { margin: 0 0 4px; } .gv-calc { gap: 12px; }

/* v5: рваный край = та же текстура блока, вырезанная маской краевой картинки → нет шва на стыке */

/* калькулятор компактнее, как на проде */
.gv-order-sec { padding-block: 70px 40px; }
.gv-tab { padding-top: 16px; }
.gv-calc > p:empty { display: none; }
.gv-calc__res { min-height: 0; margin: 0; }
.gv-calc__res:empty { display: none; }
.gv-calc__fine { font-size: 12px; }
.gv-calc > p:not([class]) { display: none; }

/* ===== v6: правки по автосравнению с продом ===== */
@media (max-width: 1399px) { .gv-nav { font-size: 14px; } }
@media (min-width: 1400px) { .gv-nav { font-size: 15px; } .gv-nav .wp-block-navigation-item__content { padding: 0 clamp(5px, .8vw, 16px); } }
.gv-nav, .gv-order .wp-block-button__link { line-height: 23px; }
/* hero: телефоны как на проде (Roboto Condensed 500, 25px) */
.gv-slide--1 .gv-slide__txt p a { font-family: var(--wp--preset--font-family--condensed); font-weight: 500; font-size: 25px; line-height: 30px; }
/* цвета/интерлиньяж */
.gv-newslist :is(h2, h3), .gv-newslist :is(h2, h3) a { color: #4b4b4b; }
.gv-tile__over b { letter-spacing: 0; line-height: 30px; }
.gv-panel h2, .gv-panel h1 { line-height: 30px; }
.gv-footer__nav a { color: rgba(255, 255, 255, .7); opacity: 1; }
/* hover: на проде — только затемнение (без увеличения фото) у плиток и блога */
.gv-tile:hover > img, .gv-blogtile:hover img, .gv-blogtile:focus-visible img { scale: 1; }
/* высоты блоков как на проде */
.gv-about { min-height: 100svh; display: grid; align-items: center; }
.gv-tex { padding-block: clamp(50px, 6vw, 70px); }
.gv-order-sec { padding-block: 70px 30px; }
.gv-videos { padding-block: clamp(24px, 3vw, 40px); }
.gv-posts4 .wp-block-post-template { grid-auto-rows: auto; }
.gv-posts4 .wp-block-post { padding: 24px 30px; min-height: 140px; }
.gv-footer { padding-bottom: 70px; }
/* мобильная версия: плитки 2 колонки по 200px, «Преимущества» — горизонтальная лента */
@media (max-width: 560px) {
  .gv-tiles { grid-template-columns: repeat(2, 1fr); }
  .gv-tile { height: 200px; }
  .gv-tile__over img { width: 70%; margin-top: 0; }
  .gv-tile__over b { font-size: 1.05rem; margin-top: -14px; }
  .gv-adv { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 16px; scrollbar-width: none; margin-inline: calc(clamp(16px, 4vw, 24px) * -1); padding-inline: clamp(16px, 4vw, 24px); }
  .gv-adv li { flex: 0 0 78%; scroll-snap-align: start; min-height: 300px; }
  .gv-posts4 .wp-block-post { min-height: 110px; }
}

/* ===== v7 ===== */
.gv-about { box-sizing: border-box; }
.gv-news { padding-block: 105px; }
.gv-blog { padding-block: clamp(40px, 4.5vw, 60px); }
.gv-posts4 .wp-block-post { padding: 20px 30px; min-height: 120px; }
.gv-intro, .gv-about { padding-block: clamp(30px, 4.5vw, 65px); }
.gv-order-sec { padding-block: 50px 30px; }
@media (min-width: 700px) { .gv-adv { grid-template-columns: repeat(4, 1fr); gap: clamp(16px, 2.4vw, 35px); } }
@media (min-width: 561px) and (max-width: 699px) { .gv-adv { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .gv-footer { padding-block: 60px 30px; } .gv-totop { margin-top: 24px; } }

/* ===== v8: мобильная шапка и боковое меню как на проде ===== */
.gv-slide__txt { left: calc(10vw + 30px); width: min(600px, calc(90vw - 46px)); }
@media (max-width: 959px) {
  .gv-header { position: relative; justify-content: flex-start; }
  .gv-header .gv-order { display: none; }
  .gv-nav { order: 1; flex: 0 0 auto; }
  .gv-logo { order: 2; position: absolute; left: 50%; translate: -50% 0; }
}
/* боковая панель 320px, затемнение справа */
.gv-nav .wp-block-navigation__responsive-container.is-menu-open { background: linear-gradient(90deg, #585658 0 320px, rgba(0, 0, 0, .45) 320px) !important; padding: 0 !important; }
.gv-nav .is-menu-open .wp-block-navigation__responsive-container-content { width: 320px; box-sizing: border-box; padding: 70px 0 30px; overflow-y: auto; align-items: stretch; justify-content: flex-start; }
.gv-nav .is-menu-open .wp-block-navigation__container { align-items: stretch; width: 100%; gap: 0; }
.gv-nav .is-menu-open .wp-block-navigation-item { width: 100%; align-items: stretch; }
.gv-nav .is-menu-open .wp-block-navigation-item__content { display: block; text-transform: none; font-family: var(--wp--preset--font-family--body); font-weight: 300; font-size: 15px; padding: 14px 35px !important; white-space: normal; }
.gv-nav .is-menu-open .current-menu-item > a { background: var(--gv-accent); color: #222 !important; }
.gv-nav .is-menu-open .wp-block-navigation__submenu-container { position: static; background: none !important; padding: 0; border: 0; min-width: 0; width: 100%; opacity: 1; visibility: visible; height: auto; }
.gv-nav .is-menu-open .wp-block-navigation__submenu-container a { padding: 6px 35px 6px 47px !important; color: rgba(255, 255, 255, .55) !important; font-size: 14px; }
.gv-nav .is-menu-open .wp-block-navigation__submenu-icon { display: none; }
.gv-nav .wp-block-navigation__responsive-container-close { left: 280px; right: auto; top: 18px; }

/* полоса прокрутки как на проде: жёлтый ползунок, тёмная дорожка, 10px */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background-color: #272727; }
::-webkit-scrollbar-thumb { background-color: #f9e701; border-radius: 0; }
::-webkit-scrollbar-thumb:hover { background-color: #dece00; }
::-webkit-scrollbar-button { height: 0; width: 5px; }
/* пункт меню — на всю ширину панели, без «обрезанной» плашки */
.gv-nav .is-menu-open .wp-block-navigation-item__content { width: 100%; box-sizing: border-box; }
.gv-nav .is-menu-open .wp-block-navigation-item__content:focus-visible { outline-offset: -3px; }

/* мобильная шапка: «Заказать» остаётся видимой, справа */
@media (max-width: 959px) {
  .gv-header .gv-order { display: block; margin-left: auto; }
  .gv-header { padding-inline: 16px; }
}
@media (max-width: 480px) { .gv-order .wp-block-button__link { padding: 5px 10px; font-size: 13px; } }
@media (max-width: 959px) { .gv-header .gv-order { order: 3; } }

/* ===== v9: бургер всегда слева; пока есть место — «Главная / Прайс-лист / Контакты» рядом ===== */
.gv-quick { display: none; margin: 0; }
@media (max-width: 1320px) { .gv-nav { justify-content: flex-start; } }
@media (min-width: 960px) and (max-width: 1320px) {
  .gv-nav { order: -1; flex: 0 0 auto; }
  .gv-header .gv-logo { order: 0; }
  .gv-quick { display: flex; order: 1; flex: 1; align-items: center; font-family: var(--wp--preset--font-family--condensed); font-weight: 300; font-size: 14px; text-transform: uppercase; }
  .gv-quick a { padding: 0 12px; color: #fff; text-decoration: none; }
  .gv-quick a:hover { color: var(--gv-accent); }
  .gv-header .gv-order { order: 2; margin-left: auto; }
}

/* выпадающее меню: полупрозрачное, с размытием фона */
.gv-nav .wp-block-navigation__submenu-container { background: rgba(40, 40, 40, .62) !important; -webkit-backdrop-filter: blur(10px) saturate(1.1); backdrop-filter: blur(10px) saturate(1.1); }
.gv-nav .is-menu-open .wp-block-navigation__submenu-container { background: none !important; -webkit-backdrop-filter: none; backdrop-filter: none; }

/* ===== v10: шапка — полупрозрачная подложка с размытием (подложка ::before, чтобы не ломать fixed-меню) ===== */
.gv-header-wrap::before { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: rgba(40, 40, 40, .68); -webkit-backdrop-filter: blur(10px) saturate(1.1); backdrop-filter: blur(10px) saturate(1.1); }
@supports (animation-timeline: scroll()) {
  .home .gv-header-wrap::before { opacity: 0; animation: gv-hdrbg linear both; animation-timeline: scroll(root); animation-range: 0 140px; }
  @keyframes gv-hdrbg { to { opacity: 1; } }
}

/* ===== параллакс фонов (лес/туман, кирпич, граффити): картинка в ::before смещается медленнее страницы ===== */
.gv-videos { position: relative; overflow: clip; isolation: isolate; background-image: none !important; }
.gv-videos { background-color: #f3efe9; }
.gv-videos::before, .gv-intro::before, .gv-about::before { content: ""; position: absolute; inset: -70px 0; z-index: -1; pointer-events: none; }
.gv-videos::before { background: url(img/fog.webp) 50% 0 / max(100%, 2500px) auto repeat-x; }
.gv-intro::before { background: url(img/intro.jpg) 50% / cover; }
.gv-about::before { background: url(img/about.jpg) 50% / cover; }
@supports (animation-timeline: view()) {
  .gv-videos::before, .gv-intro::before, .gv-about::before { animation: gv-bgpar linear both; animation-timeline: view(); }
  @keyframes gv-bgpar { from { translate: 0 -55px; } to { translate: 0 55px; } }
}
@media (prefers-reduced-motion: reduce) { .gv-videos::before, .gv-intro::before, .gv-about::before { animation: none; } }

/* ===== v11: выпадающее меню — продолжение верхней панели (то же «стекло», вплотную к её нижней кромке) ===== */
.gv-nav .wp-block-navigation__submenu-container { background: none !important; -webkit-backdrop-filter: none; backdrop-filter: none; border: 0 !important; box-shadow: none; padding: 12px 0 !important; margin-top: 23px; isolation: isolate; }
/* стекло рисуем с запасом 20px и обрезаем по границе — иначе размытие подмешивает свет с краёв (светлая кайма снизу) */
.gv-nav .wp-block-navigation__submenu-container::before { content: ""; position: absolute; inset: -20px; z-index: -1; pointer-events: none; background: rgba(40, 40, 40, .68); -webkit-backdrop-filter: blur(10px) saturate(1.1); backdrop-filter: blur(10px) saturate(1.1); -webkit-clip-path: inset(20px); clip-path: inset(20px); }
/* «мостик», чтобы меню не закрывалось при движении курсора через зазор */
.gv-nav .wp-block-navigation__submenu-container::after { content: ""; position: absolute; left: 0; right: 0; top: -23px; height: 23px; }
.gv-nav .is-menu-open .wp-block-navigation__submenu-container { margin-top: 0; }
.gv-nav .is-menu-open .wp-block-navigation__submenu-container::before, .gv-nav .is-menu-open .wp-block-navigation__submenu-container::after { display: none; }
/* и у самой панели — тот же приём для нижней кромки */
.gv-header-wrap::before { inset: 0 0 -20px 0; -webkit-clip-path: inset(0 0 20px 0); clip-path: inset(0 0 20px 0); }

/* ===== v12: лес за «Преимуществами» + заметный параллакс ===== */
.gv-block:has(.gv-adv) { position: relative; overflow: clip; isolation: isolate; padding-block: clamp(60px, 7vw, 100px); }
.gv-block:has(.gv-adv)::before { content: ""; position: absolute; inset: -130px 0; z-index: -1; pointer-events: none;
  background: linear-gradient(rgba(0, 0, 0, .25), rgba(0, 0, 0, .45)), url(img/fog.webp) 50% 100% / max(100%, 1900px) auto no-repeat #1d2a1f; }
.gv-videos::before, .gv-intro::before, .gv-about::before { inset: -130px 0; }
@supports (animation-timeline: view()) {
  .gv-block:has(.gv-adv)::before { animation: gv-bgpar linear both; animation-timeline: view(); }
  @keyframes gv-bgpar { from { translate: 0 -110px; } to { translate: 0 110px; } }
}
@media (prefers-reduced-motion: reduce) { .gv-block:has(.gv-adv)::before { animation: none; } }

/* ===== v13: настоящий параллакс леса — блок как окно в картинку: низ деревьев при входе, верхушки при выходе ===== */
.gv-block:has(.gv-adv)::before { inset: 0; background: linear-gradient(rgba(0, 0, 0, .25), rgba(0, 0, 0, .45)), url(img/fog.webp) 50% 100% / max(100%, 1900px) auto no-repeat #1d2a1f; }
@supports (animation-timeline: view()) {
  .gv-block:has(.gv-adv)::before { translate: none; animation: gv-bgy linear both; animation-timeline: view(); }
  @keyframes gv-bgy { from { background-position-y: 0%, 100%; } to { background-position-y: 0%, 0%; } }
}

/* ===== v14: плавный параллакс леса (смещение слоя transform — на GPU, без перерисовки) + лес и в блоке видео ===== */
.gv-block:has(.gv-adv)::before, .gv-videos::before {
  inset: -240px 0; will-change: transform;
  background: linear-gradient(rgba(0, 0, 0, .25), rgba(0, 0, 0, .45)), url(img/fog.webp) 50% 50% / cover no-repeat #1d2a1f;
}
.gv-videos { background-color: #1d2a1f; }
@supports (animation-timeline: view()) {
  .gv-block:has(.gv-adv)::before, .gv-videos::before { background-position: 0 0, 50% 50%; animation: gv-par2 linear both; animation-timeline: view(); translate: none; }
  @keyframes gv-par2 { from { translate: 0 -240px; } to { translate: 0 240px; } }
}
@media (prefers-reduced-motion: reduce) { .gv-block:has(.gv-adv)::before, .gv-videos::before { animation: none; } }

/* ===== v15: общий туманный лес (CC0, Wikimedia Commons «Forest trees in thick fog»): внизу стволы — в «Преимуществах», вверху кроны — в блоке видео ===== */
.gv-block:has(.gv-adv)::before { background: linear-gradient(rgba(0, 0, 0, .1), rgba(0, 0, 0, .28)), url(img/forest.webp) 50% 100% / cover no-repeat #1d2a1f; }
.gv-videos::before { background: linear-gradient(rgba(0, 0, 0, .22), rgba(0, 0, 0, .4)), url(img/forest.webp) 50% 0% / cover no-repeat #1d2a1f; }
@supports (animation-timeline: view()) {
  .gv-block:has(.gv-adv)::before { background-position: 0 0, 50% 100%; }
  .gv-videos::before { background-position: 0 0, 50% 0%; }
}

/* ===== v16: настоящий фиксированный параллакс — лес «приколот» к окну, блок — окно в него.
   Фиксированный слой обрезается рамкой блока (clip-path), перерисовки при прокрутке нет. ===== */
.gv-block:has(.gv-adv), .gv-videos { clip-path: inset(0); overflow: visible; }
.gv-block:has(.gv-adv)::before, .gv-videos::before {
  position: fixed; inset: auto; top: 0; left: 0; width: 100%; height: 100lvh;
  translate: none; animation: none; will-change: auto;
}
.gv-block:has(.gv-adv)::before { background-position: 0 0, 50% 100%; }
.gv-videos::before { background-position: 0 0, 50% 0%; }

/* ===== v17: один и тот же фон у обоих блоков (одна «картинка за окном») + переключатель старого леса (?forest=old, только staging) ===== */
.gv-block:has(.gv-adv)::before, .gv-videos::before { background-position: 0 0, 50% 60%; }
.forest-old .gv-block:has(.gv-adv)::before, .forest-old .gv-videos::before { background: linear-gradient(rgba(0, 0, 0, .25), rgba(0, 0, 0, .45)), url(img/fog.webp) 50% 100% / cover no-repeat #1d2a1f; }

/* ===== v18: кирпич и граффити — как на проде (обычный фон cover, без параллакс-слоя, который увеличивал и размывал картинку) ===== */
.gv-intro::before, .gv-about::before { content: none !important; }
.gv-intro { background: url(img/intro.jpg) 50% / cover; }
.gv-about { background: url(img/about.jpg) 50% / cover; }

/* ===== v19: основной лес — прежний (fog.webp, оригинальное разрешение 2000×1125); новое фото — по ?forest=new (staging) ===== */
.gv-block:has(.gv-adv)::before, .gv-videos::before { background: linear-gradient(rgba(0, 0, 0, .25), rgba(0, 0, 0, .45)), url(img/fog.webp) 50% 100% / cover no-repeat #1d2a1f; }
.forest-new .gv-block:has(.gv-adv)::before, .forest-new .gv-videos::before { background: linear-gradient(rgba(0, 0, 0, .1), rgba(0, 0, 0, .28)), url(img/forest.webp) 50% 60% / cover no-repeat #1d2a1f; }

/* ===== v20: серая текстура неподвижна (приколота к окну), блоки скользят по ней. Рваный край — той же фиксированной текстурой, поэтому без шва ===== */

/* v21: нижняя тень блока убрана — при неподвижной текстуре она выглядела как плывущая тёмная полоса */
.gv-tex { background: url(img/tex-muted.webp) 0 0 / auto repeat fixed #585658; }
.gv-footer { background: url(img/tex-dark.webp) 0 0 / auto repeat fixed #3b3b3b; }

/* ===== v22: внутренние страницы ===== */
/* шапка: на внутренних страницах сверху прозрачная с тёмным текстом (как на проде), при прокрутке — стеклянная тёмная с белым */
@property --hdr-fg { syntax: '<color>'; inherits: true; initial-value: #ffffff; }
.gv-header-wrap { --hdr-fg: #fff; --hdr-hl: var(--gv-accent); }   /* --hdr-hl: цвет текущего пункта/hover — жёлтый на тёмном, тёмный на белом */
.gv-header .gv-logo, .gv-header .gv-logo a, .gv-header a, .gv-header .wp-block-navigation-item__content, .gv-header .wp-block-navigation__responsive-container-open, .home .gv-header a, .home .gv-header .wp-block-navigation-item__content, .home .gv-header .wp-block-navigation__responsive-container-open { color: var(--hdr-fg) !important; }
.gv-order .wp-block-button__link, .home .gv-header .gv-order a { color: var(--hdr-fg) !important; border-color: var(--hdr-fg) !important; }
.gv-nav .current-menu-item > a, .gv-nav .wp-block-navigation-item__content:hover, .gv-header .gv-logo a:hover, .gv-order .wp-block-button__link:hover { color: var(--hdr-hl) !important; }
.gv-order .wp-block-button__link:hover { border-color: var(--gv-accent) !important; }
/* выпадающие меню и боковая панель — всегда на тёмном стекле, текст белый */
.gv-nav .wp-block-navigation__submenu-container a, .gv-nav .is-menu-open a, .gv-nav .wp-block-navigation__responsive-container-close { color: #fff !important; }
.gv-nav .is-menu-open .current-menu-item > a { color: #222 !important; }
.gv-nav .is-menu-open .wp-block-navigation__submenu-container a { color: rgba(255, 255, 255, .55) !important; }
/* баннер соцсетей */
.gv-banner { margin-top: 80px; min-height: 347px; display: grid; place-items: center; text-align: center; }
.gv-banner__quote { margin: 0 0 24px; font-family: var(--wp--preset--font-family--condensed); font-weight: 300; font-size: clamp(1.15rem, 1rem + .8vw, 1.5rem); line-height: 30px; }
.gv-banner__quote b { font-weight: 700; }
.gv-social--c { justify-content: center; margin: 0; }
.gv-banner .gv-social a { color: #fff; }
/* контент */
.gv-main { padding-top: 40px; padding-bottom: 60px; }
.gv-crumbs { font-size: 14px; color: #888; margin-bottom: 38px; }
.gv-crumbs a { color: #999; text-decoration: none; } .gv-crumbs a:hover { color: #333; }
.gv-crumbs span { margin: 0 12px; } .gv-crumbs span[aria-current] { margin: 0; color: #444; }
.gv-main h1.wp-block-post-title { font-size: 20px; margin: 0 0 22px; font-weight: 400; }
.gv-main .wp-block-post-date { font-size: 13px; color: #888; margin-bottom: 18px; }
/* аккордеон как на проде: плюс, обычный регистр */
.wp-block-details summary { text-transform: none; font-family: var(--wp--preset--font-family--body); font-weight: 300; font-size: 15px; padding-left: 40px; }
.wp-block-details summary::before { width: 11px; height: 11px; margin-top: -5px; left: 15px; background: linear-gradient(var(--gv-accent), var(--gv-accent)) center / 100% 3px no-repeat, linear-gradient(var(--gv-accent), var(--gv-accent)) center / 3px 100% no-repeat; transition: background-size .2s; }
.wp-block-details[open] summary::before { transform: none; background-size: 100% 3px, 0 100%; }
.wp-block-details > :not(summary) { padding-left: 40px; }

/* ===== галереи: варианты для выбора (A мозаика, B каменная кладка, C плёнка, D карточки альбомов) ===== */
.wp-block-gallery.gv-gal { display: grid; gap: 10px; max-width: var(--gv-w); margin-inline: auto; }
.gv-gal figure.wp-block-image { margin: 0 !important; width: auto !important; position: relative; overflow: clip; background: #222; }
.gv-gal img { display: block; width: 100%; height: 100%; object-fit: cover; transition: scale .5s cubic-bezier(.2, .7, .2, 1), filter .4s; }
.gv-gal figure:hover img { scale: 1.06; }
.gv-gal figcaption { position: absolute; inset: auto 0 0 0; margin: 0; padding: 34px 14px 12px; color: #fff; font-size: 14px; line-height: 1.3; background: linear-gradient(transparent, rgba(0, 0, 0, .78)); translate: 0 100%; transition: translate .3s; text-align: left; }
.gv-gal figure:hover figcaption, .gv-gal figure:focus-within figcaption { translate: 0 0; }
.gv-gal > :not(figure) { display: none; }
/* A: мозаика (bento) — крупные и мелкие плитки */
.gv-gal--bento { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 190px; grid-auto-flow: dense; }
.gv-gal--bento figure:nth-child(7n+1) { grid-column: span 2; grid-row: span 2; }
.gv-gal--bento figure:nth-child(7n+4) { grid-row: span 2; }
.gv-gal--bento figure:nth-child(7n+6) { grid-column: span 2; }
/* B: каменная кладка — снимки сохраняют пропорции */
.wp-block-gallery.gv-gal--masonry { display: block; column-count: 4; column-gap: 10px; }
.gv-gal--masonry figure { break-inside: avoid; margin-bottom: 10px !important; }
.gv-gal--masonry img { height: auto; }
/* C: плёнка — горизонтальная лента, центральный кадр крупнее (scroll-driven) */
.wp-block-gallery.gv-gal--strip { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 14px; padding: 30px 40px 40px; max-width: none; scrollbar-color: #f9e701 #272727; }
.gv-gal--strip figure { flex: 0 0 min(72vw, 560px); height: 380px; scroll-snap-align: center; }
@supports (animation-timeline: view(inline)) {
  .gv-gal--strip figure { animation: gv-strip linear both; animation-timeline: view(inline); animation-range: cover 0% cover 100%; }
  @keyframes gv-strip { 0%, 100% { scale: .88; opacity: .55; } 50% { scale: 1; opacity: 1; } }
}
/* D: карточки альбомов — подпись всегда видна, счётчик */
.gv-gal--cards { grid-template-columns: repeat(3, 1fr); gap: 22px; }
.gv-gal--cards figure { aspect-ratio: 4 / 3; border-radius: 4px; box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .5); transition: translate .3s, box-shadow .3s; }
.gv-gal--cards figure:hover { translate: 0 -6px; box-shadow: 0 18px 30px -12px rgba(0, 0, 0, .6); }
.gv-gal--cards figcaption { translate: 0 0; padding-top: 50px; font-family: var(--wp--preset--font-family--display); font-size: 18px; letter-spacing: .5px; text-transform: uppercase; }
@media (max-width: 800px) { .gv-gal--bento { grid-template-columns: repeat(2, 1fr); } .gv-gal--masonry { column-count: 2; } .gv-gal--cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .gv-gal--cards { grid-template-columns: 1fr; } .gv-gal--bento { grid-auto-rows: 150px; } }
.gv-demo h2 { margin: 56px 0 8px; } .gv-demo p.gv-note { margin: 0 0 18px; color: #777; max-width: 70ch; }
.wp-block-gallery.gv-gal.gv-gal--strip { display: flex !important; flex-wrap: nowrap !important; }

/* внутренние страницы как на проде: белая шапка с тёмным текстом, баннер сразу под ней, без лишней серой зоны */
body:not(.home) .gv-header-wrap { --hdr-fg: #333; --hdr-hl: #111; }
body:not(.home) .gv-header-wrap::before { background: #fff; -webkit-backdrop-filter: none; backdrop-filter: none; opacity: 1; box-shadow: 0 1px 0 rgba(0, 0, 0, .06); }
body:not(.home) .gv-banner { margin-top: 44px; min-height: 0; padding-block: 90px 85px; }
body:not(.home) .gv-header-wrap::before { transition: background-color .3s, box-shadow .3s; }
body:not(.home) .gv-header .gv-logo a, body:not(.home) .gv-header a, body:not(.home) .gv-header .wp-block-navigation-item__content, body:not(.home) .gv-header .wp-block-navigation__responsive-container-open, body:not(.home) .gv-order .wp-block-button__link { transition: color .3s, border-color .3s; }
body:not(.home) .gv-header-wrap.is-scrolled { --hdr-fg: #fff; --hdr-hl: var(--gv-accent); }
body:not(.home) .gv-header-wrap.is-scrolled::before { background: rgba(40, 40, 40, .68); -webkit-backdrop-filter: blur(10px) saturate(1.1); backdrop-filter: blur(10px) saturate(1.1); box-shadow: none; }

/* карта на Leaflet: серый фон, жёлтая метка */
div.gv-map { background: #e5e5e5; filter: none; }
.gv-map .leaflet-tile-pane { filter: grayscale(1) contrast(1.05); }
.gv-map .gv-pin { background: none; border: 0; filter: drop-shadow(0 3px 3px rgba(0, 0, 0, .35)); }
.gv-map .leaflet-control-attribution { font-size: 10px; }

/* якорь #order: не прятать вкладки под фиксированной шапкой */
html { scroll-padding-top: 90px; }
/* содержимое раскрытых блоков — обычный регистр */
.wp-block-details > :not(summary) { text-transform: none; }
/* панели Leaflet (z-index 400+) не должны перекрывать шапку и меню */
div.gv-map { position: relative; z-index: 0; isolation: isolate; }

/* подвал на узких экранах: ссылки и телефоны не рвутся посреди текста */
.gv-footer__nav a, .gv-footer__copy a { white-space: nowrap; }
@media (max-width: 560px) {
  .gv-footer__nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 4px; letter-spacing: 2px; }
  .gv-footer__nav a { padding: 0 8px; }
  .gv-footer__copy { letter-spacing: 1.5px; line-height: 1.9; }
}

/* форма заявки (главная, тёмный блок): ловушка для ботов, статус отправки */
.gv-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.gv-lead__status { margin: 10px 0 0; font-size: 15px; }
.gv-lead__status.is-ok { color: #b7f08a; }
.gv-lead__status.is-err { color: #ffb4a8; }
.gv-form input[aria-invalid="true"], .gv-form textarea[aria-invalid="true"] { border-color: #ff8a7a !important; }
.gv-form input[type=submit]:disabled { opacity: .6; cursor: wait; }
.gv-form input[type=time]:not(:focus):invalid { color: transparent; }
.gv-form label.gv-date > span:first-child { white-space: nowrap; font-size: 14px; }
.gv-form label.gv-date input { min-width: 0; flex: 1; }
/* переход между страницами: шапка остаётся на месте, плавно меняется только содержимое (Chrome/Edge/Safari 18+; остальные — обычная загрузка) */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  .gv-header-wrap { view-transition-name: gv-header; }
  ::view-transition-group(root) { animation-duration: .25s; }
  ::view-transition-group(gv-header) { animation-duration: .25s; }
}
/* пункты меню: линия-подчёркивание выезжает от центра (hover и текущая страница) */
.gv-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { background-image: linear-gradient(var(--gv-accent), var(--gv-accent)); background-position: 50% 100%; background-size: 0 2px; background-repeat: no-repeat; transition: background-size .3s ease, color .2s; }
.gv-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover,
.gv-nav .wp-block-navigation__container > .current-menu-item > .wp-block-navigation-item__content,
.gv-nav .wp-block-navigation__container > .current-menu-ancestor > .wp-block-navigation-item__content { background-size: calc(100% - 2 * clamp(5px, .8vw, 16px)) 2px; }
/* кнопки: заливка выезжает слева и кнопка чуть приподнимается */
.gv-form input[type=submit], .gv-btn { background: linear-gradient(var(--gv-accent), var(--gv-accent)) 0 0 / 0 100% no-repeat rgba(0, 0, 0, .45); transition: background-size .35s ease, color .25s, box-shadow .25s; }
.gv-form input[type=submit]:hover, .gv-btn:hover { background: linear-gradient(var(--gv-accent), var(--gv-accent)) 0 0 / 100% 100% no-repeat rgba(0, 0, 0, .45); color: #111; box-shadow: 0 8px 16px -8px rgba(0, 0, 0, .55); }
.gv-order .wp-block-button__link { transition: box-shadow .25s, color .25s, border-color .25s, background-color .25s; }
.gv-order .wp-block-button__link:hover { box-shadow: 0 8px 16px -8px rgba(0, 0, 0, .55); }
/* белая шапка (внутренние страницы): жёлтый на белом не читается — текст остаётся тёмным, жёлтая только линия; «Заказать» заливается */
body:not(.home) .gv-header-wrap:not(.is-scrolled) .gv-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { background-image: linear-gradient(var(--gv-accent), var(--gv-accent)); background-position: 50% 100%; background-repeat: no-repeat; background-size: 0 3px; }
body:not(.home) .gv-header-wrap:not(.is-scrolled) .gv-nav .wp-block-navigation__container > :is(.wp-block-navigation-item:hover, .current-menu-item, .current-menu-ancestor) > .wp-block-navigation-item__content { background-size: calc(100% - 2 * clamp(5px, .8vw, 16px)) 3px; }
body:not(.home) .gv-header-wrap:not(.is-scrolled) .gv-order .wp-block-button__link:hover { background: var(--gv-accent); border-color: var(--gv-accent); color: #111 !important; }
/* мобильное меню: «Контакты» сразу после «О клубе», а не в самом низу (порядок только визуальный) */
.is-menu-open .wp-block-navigation__container > li { order: 2; }
.is-menu-open .wp-block-navigation__container > li:nth-child(-n+2) { order: 0; }
.is-menu-open .wp-block-navigation__container > li:has(> a[href$="/contacts/"]) { order: 1; }
/* в мобильном меню (тёмная панель) правила белой шапки не действуют: линий нет, текущий пункт жёлтый */
body .gv-header-wrap .is-menu-open .wp-block-navigation-item__content { background-image: none !important; }
/* карусель новостей на главной: скруглённые карточки с мягкой тенью */
.gv-newslist .wp-block-post { border-radius: 14px; overflow: hidden; box-shadow: 0 10px 20px -12px rgba(0, 0, 0, .55); }
/* переход между страницами: содержимое уходит и приходит с лёгким сдвигом, шапка стоит на месте */
@keyframes gv-vt-out { to { opacity: 0; } }
@keyframes gv-vt-in { from { opacity: 0; translate: 0 10px; } }
@media (prefers-reduced-motion: no-preference) {
  ::view-transition-old(root) { animation: .18s ease-in both gv-vt-out; }
  ::view-transition-new(root) { animation: .3s ease-out both gv-vt-in; }
}
/* боковое меню: промежуточный блок из constrained-раскладки (max-width = wideSize, margin auto) центрировал панель на ширинах 1220–1320 px */
.gv-nav .is-menu-open > .wp-block-navigation__responsive-close { max-width: none; margin: 0; width: 100%; }
