/*
Theme Name: The Blades Studio 11
Theme URI: https://thebladestudio.com
Author: The Blades Studio
Description: Custom WordPress theme for The Blades Studio barbershop — bilingual BG/EN
Version: 5.1
*/

/* =============================================
   CSS CUSTOM PROPERTIES (DESIGN TOKENS)
   ============================================= */
:root {
  --bg-primary:       #0d0d0d;
  --bg-secondary:     #111111;
  --bg-card:          #1e1e1e;
  --bg-card-hover:    #252525;
  --accent-red:       #B0111E;
  --accent-red-hover: #8e0e18;
  --accent-red-bg:    rgba(212, 43, 58, 0.15);
  /* Il rosso e il grigio che SI LEGGONO — solo per il TESTO. `--accent-red`
     (insegna, bordi, pieni, bottoni) NON si tocca: cambia il rosso SCRITTO.
     I due valori vivono nel master ~/studio-blades/packages/design/tokens.css
     (--bo-red-testo, --bo-sito-spento) e qui sono scritti per esteso perche'
     questo tema non importa tokens.css: se il master cambia, cambiano a mano.
     Misurato il 2026-09-10 sui fondi VERI letti dalla pagina viva:
       #fb3d48 su #0d0d0d 5,43:1 · su #111111 5,27:1 · su #1e1e1e 4,65:1
       #8a8a8a su #0d0d0d 5,63:1 · su #111111 5,47:1 · su #1e1e1e 4,83:1
     Soglia AA 4,5:1 — nessuno di questi testi e' testo grande. */
  --accent-red-testo: #fb3d48;
  --text-spento:      #8a8a8a;
  --text-primary:     #ffffff;
  --text-secondary:   #aaaaaa;
  --text-muted:       #555555;
  --border-color:     rgba(255, 255, 255, 0.08);
  --radius-sm:        8px;
  --radius-md:        12px;
  --radius-lg:        18px;
  --radius-pill:      50px;
  --transition:       0.3s ease;
  --container-max:    1280px;
  /* 07/10/2026 (testata v3): di nuovo UN piano. Frase di prima (6e3604e): «la testata è DUE piani — la striscia
     in cima (lingua, "Вход") e la riga del logo». */
  --header-row:       70px;
  --header-height:    var(--header-row);
  /* 08/10/2026 (B·tema-prenota): l'altezza VERA della testata, per chi sta sotto di lei e non è del tema
     (il riquadro della prenotazione su /profil/?book). Qui il valore del CSS (70 px, 64 sotto i 769 px:
     la testata è border-box, il filo sta dentro); main.js la rimisura con un ResizeObserver e la riscrive
     su <html> solo se è diversa (una scrittura, niente scatti). */
  --bs-testata-h:     var(--header-height);
  /* quanto copre del fondo il banner dei cookie aperto (main.js, initConsensoAperto): 0 se chiuso */
  --bs-banner-h:    0px;
}

/* =============================================
   RESET & BASE
   ============================================= */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: hidden;
       /* iPhone girato: senza questo Safari ingrandisce da solo il testo di alcuni blocchi
          e le etichette dei pulsanti escono dalla pillola (01/10/2026). */
       -webkit-text-size-adjust: 100%; text-size-adjust: 100%;
       /* Un'ancora (/ekim/#barber-…, /#contacts) si ferma SOTTO l'intestazione fissa:
          su Safari la scheda del barbiere finiva con foto e distintivo coperti. */
       scroll-padding-top: calc(var(--header-height) + 12px); }
/* 08/10/2026 (B·tema-prenota, da B·accesso 07/10): chi chiede meno movimento non fa più il viaggio
   animato fino a un'ancora (/#contacts, /ekim/#barber-…): si salta lì. */
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
/* 03/10 (spazzata, m1): sul telefono la barra in basso (.mbar, 60 px + 10 di margine + area sicura)
   copriva l'elemento che riceve il fuoco della tastiera («Имейл support@…», «Всички услуги»): il
   browser lo porta in vista lasciando libero anche il fondo. */
@media (max-width: 767px) { html { scroll-padding-bottom: calc(84px + env(safe-area-inset-bottom)); } }
body {
  background-color: var(--bg-primary);
  color: var(--text-primary);
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
svg { flex-shrink: 0; }
/* Pulsanti senza l'aspetto nativo di iOS (01/10/2026): su iPhone un <button> con
   `appearance: auto` può ricevere il fondo grigio arrotondato e il testo blu di sistema
   dove una classe non li copre. Ogni pulsante del sito ha già il suo disegno. */
button, input[type="submit"], input[type="button"], input[type="reset"] { -webkit-appearance: none; appearance: none; }
ul, ol { list-style: none; }

/* =============================================
   PAGINE DI TESTO LUNGO (legali, informative)
   Il reset qui sopra serve a menu e schede; su una pagina di testo toglie
   respiro e pallini, e il risultato è un muro illeggibile.
   ============================================= */
.page-prose { font-size: 16px; line-height: 1.72; color: var(--text-secondary); }
.page-prose h2 {
  font-family: 'Barlow Condensed', sans-serif; text-transform: uppercase;
  font-size: 34px; line-height: 1.1; color: var(--text-primary);
  margin: 52px 0 18px; letter-spacing: .01em;
}
.page-prose > h2:first-child { margin-top: 0; }
.page-prose h3 {
  font-size: 20px; font-weight: 700; color: var(--text-primary);
  margin: 36px 0 12px;
}
.page-prose h4 {
  font-size: 16px; font-weight: 700; color: var(--text-primary);
  margin: 24px 0 8px;
}
.page-prose p { margin: 0 0 16px; }
.page-prose strong { color: var(--text-primary); font-weight: 600; }
.page-prose ul, .page-prose ol { list-style: disc; margin: 0 0 18px; padding-left: 24px; }
.page-prose ol { list-style: decimal; }
.page-prose li { margin-bottom: 10px; }
.page-prose li::marker { color: var(--accent-red); }
.page-prose a { color: var(--text-primary); text-decoration: underline;
                text-underline-offset: 3px; transition: color var(--transition); }
.page-prose a:hover { color: var(--accent-red); }
.page-prose hr {
  border: 0; height: 1px; background: var(--border-color); margin: 56px 0;
}
.page-prose em {
  /* Corpo del testo sulle pagine legali, non decorazione: #555555 su #0d0d0d
     faceva 2,60:1 su una soglia di 4,5. Trovato il 2026-09-10 perche' il
     denominatore e' cresciuto: /privacy /terms /cookies /messages arrivano dal
     menu del PIEDE (.footer-legal), che nessuna cella leggeva — 8 nodi che
     nessuno misurava. Con --text-spento: 5,63:1. */
  color: var(--text-spento); font-style: italic;
}
@media (max-width: 768px) {
  .page-prose h2 { font-size: 28px; margin-top: 40px; }
  .page-prose h3 { font-size: 18px; }
}

/* =============================================
   TYPOGRAPHY
   ============================================= */
h1, h2, h3, h4, h5, h6 {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  line-height: 1.1;
  color: var(--text-primary);
}

/* =============================================
   CONTAINER
   ============================================= */
.container {
  width: 100%;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 28px;
}

/* =============================================
   BUTTONS
   ============================================= */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 30px;
  border-radius: var(--radius-pill);
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  border: none;
  /* 03/10 (misura della velocità): era `transition: var(--transition)`, cioè TUTTO — anche
     padding e dimensioni. Solo trasformazione, opacità e colori. */
  transition: transform var(--transition), opacity var(--transition), background-color var(--transition), color var(--transition);
  text-decoration: none;
  white-space: nowrap;
  letter-spacing: 0.2px;
}
.btn-primary { background-color: var(--accent-red); color: #fff; }
.btn-primary:hover { background-color: var(--accent-red-hover); transform: translateY(-1px); }
.btn-secondary {
  background-color: rgba(255,255,255,0.09);
  color: #fff;
  border: 1.5px solid rgba(255,255,255,0.22);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
.btn-secondary:hover { background-color: rgba(255,255,255,0.15); }

/* =============================================
   HEADER / NAVIGATION
   Rifatta il 01/10/2026 (corsia «intestazione e piè di pagina»).
   - Si anima SOLO transform/opacity (regola del sito: niente box-shadow,
     colori o misure in transizione); prefers-reduced-motion ferma tutto.
   - Telefono (≤ 767): logo + «Меню»; la prenotazione sta nella barra in basso
     (.mbar) e nel menu. 768–1024: logo + «Запази час» + «Меню». > 1024: tutto.
   - Il testo cirillico usa Inter: Barlow Condensed non ha il cirillico (il
     browser ripiegava su un carattere di sistema). Barlow resta per il latino.
   ============================================= */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  /* sopra il banner del consenso (#bo-consent-banner, z-index 9999, nel flusso
     in cima): scorrendo gli passava SOPRA, e copriva il menu aperto */
  z-index: 10001;
  height: var(--header-height);
  background-color: rgba(10, 10, 10, 0.94);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border-color);
}
/* Ombra e filo rosso dopo lo scorrimento: pseudo-elementi che cambiano solo opacità */
.site-header::before,
.site-header::after {
  content: ""; position: absolute; left: 0; right: 0; pointer-events: none;
  opacity: 0; transition: opacity .3s ease;
}
.site-header::before { top: 100%; height: 28px; background: linear-gradient(rgba(0,0,0,.45), rgba(0,0,0,0)); }
.site-header::after  { bottom: -1px; height: 1px; background: linear-gradient(90deg, rgba(176,17,30,0), var(--accent-red) 50%, rgba(176,17,30,0)); }
.site-header.is-scrolled::before,
.site-header.is-scrolled::after { opacity: 1; }
/* menu aperto: resta il filo rosso sotto l'intestazione, l'ombra no (sotto c'è il velo) */
body.menu-open .site-header::after { opacity: 1; }
body.menu-open .site-header::before { opacity: 0; }

.header-inner {
  display: flex;
  align-items: center;
  gap: 12px;
  height: var(--header-row);
}

/* Focus da tastiera: visibile su tutto ciò che sta in intestazione, menu, barra e piede */
.site-header a:focus-visible,
.site-header button:focus-visible,
.mobile-menu a:focus-visible,
.mobile-menu button:focus-visible,
.mbar a:focus-visible,
.site-footer a:focus-visible,
.site-footer button:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 3px;
}

/* Logo */
.site-logo {
  display: flex; align-items: center; gap: 11px;
  flex-shrink: 0; min-height: 44px; min-width: 0;
  margin-right: auto;
  border-radius: 10px;
}
.logo-icon {
  width: 40px; height: 40px; flex: none;
  background-color: var(--accent-red);
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900; font-size: 22px; color: #fff;
}
.logo-icon--image { background: none; }
.logo-icon--image img { width: 40px; height: 40px; object-fit: contain; border-radius: 8px; display: block; }
.logo-text { display: flex; flex-direction: column; min-width: 0; line-height: 1; }
/* 03/10 (spazzata, M5): FINCHÉ I CARATTERI DEL LOGO NON CI SONO, il logo può restringersi e il
   nome si tronca coi puntini; il pulsante «Меню» mai. Con `flex-shrink: 0` e basta, nei primi ~2 s
   su rete lenta (o per sempre, se i .woff2 non arrivano) il nome nel carattere di ripiego è più
   largo e spingeva «Меню» fuori dallo schermo (bordo destro a 425 px su 390): il menu non si poteva
   aprire. La classe `bo-logo-attesa` la mette lo script della lingua in <head> (functions.php) e la
   toglie quando Barlow 800 e Inter del sottotitolo sono arrivati: da lì il logo torna esattamente
   com'era (a 375 px, coi caratteri, il nome sporge di 7 px nel margine e va bene così — col
   restringimento sempre acceso diventava «THE BLADES STU…»). Senza JavaScript: com'era.
   Le foto prima/dopo dell'intestazione, coi caratteri, sono identiche a pixel (prova-logo.mjs).
   I 3 px di imbottitura sotto (annullati dal margine) non tagliano la coda della «Ц». */
html.bo-logo-attesa .site-logo { flex-shrink: 1; }
html.bo-logo-attesa .logo-name,
html.bo-logo-attesa .logo-sub { overflow: hidden; text-overflow: ellipsis; padding-bottom: 3px; margin-bottom: -3px; }
.logo-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800; font-size: 21px;
  letter-spacing: .05em; text-transform: uppercase;
  color: #fff; white-space: nowrap;
}
.logo-sub {
  margin-top: 4px;
  font-size: 10.5px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--text-spento); white-space: nowrap;
}

/* Desktop Nav: la voce della pagina in cui sei è sottolineata in rosso */
.site-nav { display: flex; align-items: center; gap: 2px; }
.site-nav a {
  position: relative;
  display: inline-flex; align-items: center;
  min-height: 44px; padding: 0 14px;
  font-size: 14px; font-weight: 500;
  color: rgba(255,255,255,.78);
  border-radius: var(--radius-sm);
  white-space: nowrap;
}
.site-nav a::after {
  content: ""; position: absolute; left: 14px; right: 14px; bottom: 7px; height: 2px;
  background: var(--accent-red); border-radius: 2px;
  transform: scaleX(0); transform-origin: left center;
  transition: transform .25s cubic-bezier(.2,.8,.2,1);
}
.site-nav a:hover, .site-nav a[aria-current="page"] { color: #fff; }
.site-nav a:hover::after, .site-nav a[aria-current="page"]::after { transform: scaleX(1); }

/* Header CTA */
.header-cta { display: flex; align-items: center; flex-shrink: 0; margin-left: 6px; }
.btn-booking-header {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 44px; padding: 0 18px 0 22px;
  background-color: var(--accent-red);
  color: #fff;
  border-radius: var(--radius-pill);
  font-size: 14px; font-weight: 700; letter-spacing: .01em;
  white-space: nowrap;
  transition: transform .2s ease;
}
.btn-booking-header svg { transition: transform .2s ease; }
.btn-booking-header:hover { background-color: var(--accent-red-hover); }
.btn-booking-header:hover svg { transform: translateX(3px); }
.btn-booking-header:active { transform: scale(.97); }

/* Burger: tre righe + la parola «Меню»; aperto diventa una X */
.burger-btn {
  display: none;
  align-items: center; gap: 10px;
  min-width: 44px; min-height: 44px;
  padding: 0 16px 0 14px;
  margin-right: -4px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.16);
  border-radius: var(--radius-pill);
  color: #fff;
  font-family: 'Inter', sans-serif;
  font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  cursor: pointer;
  position: relative; flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
}
.burger-lines { position: relative; display: block; width: 18px; height: 12px; flex: none; }
.burger-lines span {
  position: absolute; left: 0; width: 100%; height: 2px;
  background-color: currentColor; border-radius: 2px;
  transition: transform .32s cubic-bezier(.4,0,.2,1), opacity .2s ease;
}
.burger-lines span:nth-child(1) { top: 0; }
.burger-lines span:nth-child(2) { top: 5px; }
.burger-lines span:nth-child(3) { top: 10px; transform-origin: right center; transform: scaleX(.62); }
/* 04/10: aperto, le righe si incrociano in una X con una piccola molla (supera e torna) */
.burger-btn.is-active .burger-lines span { transition: transform .5s cubic-bezier(.34,1.56,.64,1), opacity .15s ease; }
.burger-btn.is-active .burger-lines span:nth-child(1) { transform: translateY(5px) rotate(45deg); }
.burger-btn.is-active .burger-lines span:nth-child(2) { opacity: 0; transform: translateX(-6px) scaleX(.2); }
.burger-btn.is-active .burger-lines span:nth-child(3) { transform-origin: center; transform: translateY(-5px) rotate(-45deg); }

/* =============================================
   MENU DEL TELEFONO — 04/10/2026 (corsia «menu»)
   Apertura: un velo scuro con la luce rossa del marchio si allarga in cerchio dal
   pulsante «Меню» (un cerchio grande quanto serve, da scale(0) a scale(1): solo
   transform, fluido anche su Safari; centro e raggio li mette main.js). Poi la
   scheda dell'offerta e le voci salgono una dopo l'altra (55 ms) con una piccola
   molla, e i filetti sotto le voci si disegnano da sinistra.
   Chiusura: veloce e pulita, senza molla — le voci si spengono in 140 ms e il
   velo rientra nel pulsante. Riduci movimento: solo dissolvenza.
   Chiuso = invisibile e `inert` (main.js); la visibilità scatta DOPO la chiusura.
   ============================================= */
.mobile-menu {
  position: fixed; inset: 0;
  z-index: 10000;   /* sotto l'intestazione (la X resta lì), sopra il banner del consenso */
  overflow: hidden; /* il cerchio del velo è più grande dello schermo */
  visibility: hidden; pointer-events: none;
  transition: visibility 0s linear .44s;
  --mx: calc(100% - 52px); --my: 35px; --mr: 150vmax;   /* ripiego se main.js non li mette */
}
.mobile-menu.is-open { visibility: visible; pointer-events: auto; transition: visibility 0s linear 0s; }
.mobile-menu__veil {
  position: absolute;
  left: calc(var(--mx) - var(--mr)); top: calc(var(--my) - var(--mr));
  width: calc(var(--mr) * 2); height: calc(var(--mr) * 2);
  border-radius: 50%;
  /* la luce rossa nasce dal pulsante e resta in alto a destra */
  background: radial-gradient(circle, rgba(176,17,30,.30) 0, rgba(176,17,30,.10) 14%, rgba(176,17,30,0) 34%), #0b0b0b;
  transform: scale(0);
  transition: transform .4s cubic-bezier(.6,0,.85,.25);
  backface-visibility: hidden;
}
.mobile-menu.is-open .mobile-menu__veil {
  transform: scale(1);
  transition: transform .72s cubic-bezier(.16,1,.3,1);
}
.mobile-menu__panel {
  position: absolute; left: 0; right: 0; top: var(--header-height); bottom: 0;
  overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  padding: 18px 20px calc(20px + env(safe-area-inset-bottom));
}
.mobile-menu__panel:focus { outline: none; }
.mobile-menu__inner {
  display: flex; flex-direction: column;
  max-width: 560px; min-height: 100%; margin: 0 auto;
}

/* Tutto ciò che entra: spento da chiuso (si spegne in fretta), sale con la molla all'apertura */
.mobile-offer, .mobile-nav__row, .mobile-menu-bottom {
  opacity: 0;
  transition: opacity .14s ease;
}
.mobile-menu.is-open .mobile-offer,
.mobile-menu.is-open .mobile-nav__row,
.mobile-menu.is-open .mobile-menu-bottom {
  opacity: 1;
  animation: bs-menu-voce .78s cubic-bezier(.22,.9,.3,1) both;
  animation-delay: calc(var(--i, 0) * 55ms + 130ms);
}
@keyframes bs-menu-voce {
  0%   { opacity: 0; transform: translate3d(0, 30px, 0); }
  55%  { opacity: 1; transform: translate3d(0, -4px, 0); }
  78%  { transform: translate3d(0, 1.5px, 0); }
  100% { opacity: 1; transform: none; }
}

/* La scheda dell'offerta junior: chiara al primo sguardo — cos'è, cosa comprende, quanto costa */
.mobile-offer {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: center; gap: 14px;
  min-height: 92px; padding: 14px 18px 14px 18px;
  border: 1px solid rgba(251,61,72,.55);
  border-radius: 10px;
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(176,17,30,.34), rgba(176,17,30,0) 62%),
    rgba(255,255,255,.025);
  box-shadow: 0 30px 56px -36px rgba(176,17,30,.8);
  color: #fff;
  margin-bottom: 10px;
  -webkit-tap-highlight-color: transparent;
}
.mobile-offer__text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.mobile-offer__tag {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 4px 10px 4px 9px;
  border: 1px solid rgba(255,255,255,.16); border-radius: 999px;
  background: rgba(10,10,10,.42);
  font: 600 10.5px/1.3 'Inter', sans-serif; letter-spacing: .22em; text-transform: uppercase;
  color: rgba(255,255,255,.86);
}
.mobile-offer__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent-red-testo); flex: none; }
.mobile-offer__title {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700;
  font-size: 25px; line-height: 1.02; letter-spacing: .01em; text-transform: uppercase;
  color: #fff;
}
.mobile-offer__sub { font-size: 13.5px; line-height: 1.35; color: rgba(255,255,255,.72); }
.mobile-offer__price {
  flex: none; display: flex; align-items: flex-start;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700;
  font-size: 54px; line-height: .8; letter-spacing: -.03em; color: #fff;
}
.mobile-offer__eur { font-size: .36em; line-height: 1; margin-left: 3px; color: var(--accent-red-testo); letter-spacing: 0; }
.mobile-offer:active { transform: scale(.985); }
.mobile-offer[aria-current="page"] { border-color: rgba(251,61,72,.9); }

/* Le voci: numero rosso, nome grande maiuscolo, freccia sottile, filetto che si disegna */
.mobile-nav { display: flex; flex-direction: column; }
.mobile-nav__row {
  position: relative;
  display: flex; align-items: center; gap: 16px;
  min-height: 60px; padding: 6px 4px 6px 2px;
  color: rgba(255,255,255,.9);
  -webkit-tap-highlight-color: transparent;
}
.mobile-nav__row::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: rgba(255,255,255,.12);
  transform-origin: left center;
}
.mobile-menu.is-open .mobile-nav__row::after {
  animation: bs-menu-filo .9s cubic-bezier(.16,1,.3,1) both;
  animation-delay: calc(var(--i, 0) * 55ms + 230ms);
}
@keyframes bs-menu-filo { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.mobile-nav__num {
  width: 24px; flex: none;
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 14px; font-weight: 700; letter-spacing: .06em;
  color: var(--accent-red-testo);
}
.mobile-nav__label {
  flex: 1; min-width: 0;
  font-family: 'Barlow Condensed', sans-serif; font-weight: 700;
  font-size: 28px; line-height: 1.05; letter-spacing: .01em; text-transform: uppercase;
}
.mobile-nav__arrow {
  flex: none; display: grid; place-items: center; width: 36px; height: 36px;
  border: 1px solid rgba(255,255,255,.14); border-radius: 50%;
  color: rgba(255,255,255,.6);
}
.mobile-nav__arrow svg { width: 15px; height: 15px; stroke-width: 1.6; transition: transform .25s cubic-bezier(.16,1,.3,1); }
.mobile-nav__row:hover .mobile-nav__arrow svg, .mobile-nav__row:focus-visible .mobile-nav__arrow svg { transform: translateX(3px); }
.mobile-nav__row:active .mobile-nav__label { opacity: .7; }
/* La pagina in cui sei: nome rosso, freccia piena, e la scritta «Тук си» */
.mobile-nav__row[aria-current="page"] { color: var(--accent-red-testo); }
.mobile-nav__row[aria-current="page"] .mobile-nav__arrow { border-color: rgba(251,61,72,.5); color: var(--accent-red-testo); }
.mobile-nav__here {
  flex: none;
  padding: 4px 9px; border-radius: 999px;
  border: 1px solid rgba(251,61,72,.4);
  font: 600 10px/1.2 'Inter', sans-serif; letter-spacing: .18em; text-transform: uppercase;
  color: var(--accent-red-testo);
  white-space: nowrap;
}
.mobile-nav__row--lunga .mobile-nav__here { display: none; }   /* 04/10: header.php, parola > 11 lettere */

/* Fondo del menu: prenotazione grande, telefono e lingua — subito sotto le voci */
.mobile-menu-bottom {
  display: flex; flex-direction: column; gap: 14px;
  padding-top: 30px;
}
.btn-booking-mobile {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 54px; padding: 0 20px;
  background-color: var(--accent-red);
  color: #fff;
  border-radius: var(--radius-pill);
  font-size: 16px; font-weight: 700;
  transition: transform .2s ease;
}
.btn-booking-mobile:hover { background-color: var(--accent-red-hover); }
.btn-booking-mobile:active { transform: scale(.98); }
.mobile-menu-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
@media (max-width: 374px) {
  .mobile-offer { gap: 10px; padding: 12px 14px; min-height: 84px; }
  .mobile-offer__title { font-size: 22px; }
  .mobile-offer__sub { font-size: 12.5px; }
  .mobile-offer__price { font-size: 46px; }
  .mobile-nav__label { font-size: 25px; }
  .mobile-nav__row { gap: 12px; }
  .mobile-nav__here { display: none; }   /* a 320 il nome rosso e la freccia rossa bastano */
}
/* 03/10 (spazzata, m7): a 320×568 «БГ / EN» finiva sotto il bordo del pannello: sugli schermi
   bassi tutto si stringe (voci sempre ≥ 44 px per il dito) e sta nel primo schermo. */
@media (max-height: 700px) {
  .mobile-menu__panel { padding-top: 12px; }
  .mobile-nav__row { min-height: 50px; }
  .mobile-nav__label { font-size: 24px; }
  .mobile-offer { min-height: 80px; padding-top: 10px; padding-bottom: 10px; margin-bottom: 4px; }
  .mobile-offer__text { gap: 3px; }
  .mobile-menu-bottom { padding-top: 16px; gap: 8px; }
  .btn-booking-mobile { min-height: 52px; }
}
@media (max-height: 600px) {
  .mobile-menu__panel { padding-top: 8px; }
  .mobile-nav__row { min-height: 44px; }
  .mobile-nav__label { font-size: 22px; }
  .mobile-nav__arrow { width: 32px; height: 32px; }
  .mobile-offer__sub { display: none; }   /* resta «Оферта · All Inclusive Junior · 13 €» */
  .mobile-offer { min-height: 64px; padding-top: 8px; padding-bottom: 8px; }
  .mobile-menu-bottom { padding-top: 14px; }
  .mobile-menu .btn-booking-mobile { min-height: 50px; padding: 4px 4px 4px 20px; }
  .mobile-menu .btn-booking-mobile .bs-cta__arrow { width: 42px; height: 42px; }
}
/* Tablet (768–1024): stessa colonna, un po' più grande */
@media (min-width: 768px) {
  .mobile-menu__panel { padding-top: 36px; }
  .mobile-nav__label { font-size: 34px; }
  .mobile-nav__row { min-height: 72px; }
  .mobile-offer { min-height: 104px; padding: 18px 24px; }
  .mobile-offer__title { font-size: 30px; }
  .mobile-offer__price { font-size: 64px; }
}
/* 04/10/2026: con «Сътрудничество» le voci sono 7 e il menu c'è anche sui portatili fino a 1199 px (finestre basse,
   768–900 px): voci e scheda un po' più basse, così prenotazione, telefono e lingua restano nel primo schermo. */
@media (min-width: 768px) and (max-height: 900px) {
  .mobile-menu__panel { padding-top: 18px; }
  .mobile-nav__label { font-size: 30px; }
  .mobile-nav__row { min-height: 56px; }
  .mobile-offer { min-height: 88px; padding: 12px 22px; }
  .mobile-menu-bottom { padding-top: 20px; }
}
.mobile-menu-call {
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 44px;
  font-size: 15px; font-weight: 600; color: var(--text-primary);
  white-space: nowrap;
}
.mobile-menu-call svg { color: var(--accent-red-testo); }

/* Language Toggle (stesso stile per menu e piè di pagina) */
.lang-toggle {
  display: inline-flex; align-items: center;
  background-color: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-pill);
  padding: 3px; gap: 2px;
}
.lang-btn {
  /* 02/10/2026: sono link (?lang=en) e non più <button>: senza flex un <a> ignora min-height */
  display: inline-flex; align-items: center; justify-content: center; text-decoration: none;
  padding: 0 14px;
  min-height: 44px; min-width: 52px;
  border: none; border-radius: var(--radius-pill);
  background: none;
  color: var(--text-secondary);
  font-family: 'Inter', sans-serif;
  font-size: 13px; font-weight: 700; letter-spacing: .04em;
  cursor: pointer;
}
.lang-btn.active { background-color: var(--accent-red); color: #fff; }
.lang-btn:hover:not(.active) { background-color: rgba(255,255,255,0.07); color: #fff; }

/* Barra in basso (solo telefono): chiamata + «Запази час» */
.mbar { display: none; }

/* --- Intestazione: punti di rottura --- */
@media (max-width: 1024px) {
  .site-nav { display: none; }
  .burger-btn { display: inline-flex; }
}
@media (max-width: 767px) {
  .header-cta { display: none; }
  .header-inner.container { padding-left: 20px; padding-right: 20px; }
  .burger-btn { margin-right: 0; }

  .mbar {
    display: flex; align-items: center; gap: 8px;
    position: fixed; z-index: 900;
    left: 12px; right: 12px; bottom: calc(10px + env(safe-area-inset-bottom));
    padding: 6px;
    background: rgba(20,20,20,.97);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: var(--radius-pill);
    box-shadow: 0 12px 32px rgba(0,0,0,.55);
    transition: transform .35s cubic-bezier(.2,.8,.2,1), opacity .25s ease, visibility 0s linear 0s;
  }
  /* collaudo 04/10 (M8): anche con un <dialog> aperto (visore della galleria, profilo /ekim/) la barra se ne va */
  .mbar.is-away, body.menu-open .mbar, body:has(dialog[open]) .mbar {
    transform: translateY(calc(100% + 24px)); opacity: 0; visibility: hidden;
    transition: transform .3s ease, opacity .2s ease, visibility 0s linear .3s;
  }
  .mbar__call {
    flex: none; width: 48px; height: 48px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: rgba(255,255,255,.07);
    border: 1px solid rgba(255,255,255,.12);
    color: #fff;
  }
  .mbar__book {
    flex: 1; min-width: 0; min-height: 48px;
    display: flex; align-items: center; justify-content: center; gap: 10px;
    border-radius: var(--radius-pill);
    background: var(--accent-red); color: #fff;
    font-size: 16px; font-weight: 700;
    transition: transform .2s ease;
  }
  .mbar__book:active { transform: scale(.98); }
  /* /junior ha la sua barra (.jr-sticky, prezzo + link Junior): niente doppione */
  body:has(.jr-sticky) .mbar { display: none; }
  /* Senza JS la barra resta sempre su: il piè di pagina le lascia spazio */
  html:not(.bo-js) .site-footer { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
}
@media (max-width: 374px) {
  .header-inner.container { padding-left: 16px; padding-right: 16px; }
  .site-logo { gap: 9px; }
  .logo-name { font-size: 18px; }
  .logo-sub { font-size: 9.5px; letter-spacing: .12em; }
}
@media (max-width: 359px) {
  .logo-sub { display: none; }
  .logo-name { font-size: 19px; }
  /* a 320 px la parola «Меню» usciva dal bordo: resta l'icona (44×44, aria-label «Меню») */
  .burger-label { display: none; }
  .burger-btn { width: 44px; padding: 0; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  .site-header::before, .site-header::after,
  .site-nav a::after, .btn-booking-header, .btn-booking-header svg,
  .burger-lines span, .burger-btn.is-active .burger-lines span,
  .mobile-nav__arrow svg, .btn-booking-mobile, .mbar, .mbar.is-away, .mbar__book {
    transition: none !important;
  }
  /* Menu del telefono (04/10): niente cerchio, niente molla — solo una dissolvenza */
  .mobile-menu { transition: visibility 0s linear .2s; }
  .mobile-menu.is-open { transition: visibility 0s linear 0s; }
  .mobile-menu__veil, .mobile-menu.is-open .mobile-menu__veil {
    left: 0; top: 0; width: 100%; height: 100%; border-radius: 0;
    transform: none; opacity: 0; transition: opacity .2s ease;
  }
  .mobile-menu.is-open .mobile-menu__veil { opacity: 1; }
  .mobile-offer, .mobile-nav__row, .mobile-menu-bottom { transition: opacity .2s ease; }
  .mobile-menu.is-open .mobile-offer,
  .mobile-menu.is-open .mobile-nav__row,
  .mobile-menu.is-open .mobile-menu-bottom,
  .mobile-menu.is-open .mobile-nav__row::after { animation: none; }
  .mobile-offer:active { transform: none; }
}

/* =============================================
   HERO SECTION
   ============================================= */
.hero-section {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;   /* iPhone: 100vh conta anche le barre di Safari, e i riquadri in fondo finivano sotto */
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-top: var(--header-height);
  overflow: hidden;
}

/* ─────────────────────────────────────────────
   HERO BACKGROUND IMAGE
   HOW TO CHANGE:
   1. Upload your image via WordPress Admin → Media → Add New
   2. Copy the File URL from the attachment page
   3. Replace the URL in front-page.php inside the hero-bg div's style attribute
   ───────────────────────────────────────────── */
.hero-bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,0.50) 0%,
    rgba(0,0,0,0.62) 50%,
    rgba(0,0,0,0.88) 100%
  );
}
.hero-content {
  position: relative; z-index: 1;
  text-align: center;
  padding: 80px 24px 40px;
  max-width: 880px;
  margin: 0 auto;
}
.hero-title {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: clamp(48px, 7.5vw, 88px);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: #fff; line-height: 1;
  margin-bottom: 20px;
}
.hero-subtitle { font-size: clamp(16px, 2.5vw, 20px); font-weight: 600; color: #fff; margin-bottom: 16px; }
.hero-description {
  font-size: clamp(14px, 1.7vw, 16px);
  color: rgba(255,255,255,0.84);
  max-width: 650px; margin: 0 auto 14px;
  line-height: 1.75;
}
.hero-description-2 {
  font-size: clamp(14px, 1.7vw, 16px);
  color: rgba(255,255,255,0.84);
  max-width: 600px; margin: 0 auto 36px;
  line-height: 1.75;
}
.hero-buttons {
  display: flex; align-items: center; justify-content: center;
  gap: 12px; flex-wrap: wrap; margin-bottom: 50px;
}
.hero-buttons .btn { min-width: 210px; }

/* Hero Feature Cards */
.hero-features {
  position: relative; z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  max-width: 860px; margin: 0 auto;
  padding: 0 24px 60px;
}
.feature-card {
  background-color: rgba(18,18,18,0.78);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--radius-md);
  padding: 26px 16px; text-align: center;
  transition: var(--transition);
}
.feature-card:hover { background-color: rgba(30,30,30,0.88); transform: translateY(-3px); }
.feature-card svg {
  width: 30px; height: 30px;
  stroke: var(--accent-red);
  margin: 0 auto 10px; display: block;
}
.feature-card-title { font-size: 14px; font-weight: 600; color: #fff; margin-bottom: 5px; }
.feature-card-badge {
  font-size: 11px; font-weight: 800;
  /* Vetro: il fondo qui e' un composito, non un colore. Pixel campionato dal
     sito vivo il 2026-09-10: prima 2,58–2,67:1, dopo 5,14–5,31:1. */
  color: var(--accent-red-testo);
  text-transform: uppercase; letter-spacing: 1.2px;
}

/* =============================================
   TEAM SECTION
   ============================================= */
.team-section { padding: 80px 0; background-color: var(--bg-primary); }
.team-card {
  position: relative;
  border-radius: var(--radius-lg); overflow: hidden;
  max-width: 920px; margin: 0 auto;
  min-height: 480px;
  display: flex; align-items: flex-end;
}

/* ─────────────────────────────────────────────
   TEAM BACKGROUND IMAGE
   HOW TO CHANGE:
   1. Upload your team photo via WordPress Admin → Media → Add New
   2. Copy the File URL
   3. Replace the URL in front-page.php inside the team-card-bg div's style attribute
   ───────────────────────────────────────────── */
.team-card-bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center 45%;
}
.team-card-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(
    to top,
    rgba(0,0,0,0.92) 0%,
    rgba(0,0,0,0.55) 45%,
    rgba(0,0,0,0.05) 100%
  );
}
.team-card-content {
  position: absolute; z-index: 1;
  bottom: 0; left: 0; right: 0;
  padding: 40px 48px;
  text-align: left;
  max-width: 100%;
}
.team-card-content h2 { font-size: 48px; font-weight: 900; margin-bottom: 12px; line-height: 1; }
.team-card-content p { font-size: 15px; color: rgba(255,255,255,0.84); margin-bottom: 24px; line-height: 1.6; max-width: 560px; }

/* =============================================
   CONTACTS SECTION
   ============================================= */
.contacts-section { padding: 80px 0; background-color: var(--bg-primary); }
.section-header { text-align: center; margin-bottom: 48px; }
.section-badge {
  display: inline-block;
  padding: 7px 20px;
  border: 1.5px solid var(--accent-red);
  border-radius: var(--radius-pill);
  font-size: 11px; font-weight: 800;
  letter-spacing: 2.5px; text-transform: uppercase;
  color: var(--accent-red-testo); margin-bottom: 18px;   /* il bordo sopra resta --accent-red: e' insegna, non testo */
}
.section-title {
  font-size: clamp(44px, 7vw, 80px);
  font-weight: 900; text-align: center; margin-bottom: 48px;
}
.contacts-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  max-width: 860px; margin: 0 auto;
}
.contact-card {
  background-color: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 24px;
  display: flex; align-items: flex-start; gap: 16px;
  transition: var(--transition);
}
.contact-card:hover { background-color: var(--bg-card-hover); border-color: rgba(212,43,58,0.35); }
.contact-card-icon {
  width: 46px; height: 46px; min-width: 46px;
  background-color: var(--accent-red-bg);
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
}
.contact-card-icon svg { width: 20px; height: 20px; stroke: var(--accent-red); }
.contact-card-info h4 { font-family: 'Inter', sans-serif; font-size: 15px; font-weight: 700; color: #fff; margin-bottom: 5px; }
.contact-card-info p, .contact-card-info a { font-size: 14px; color: var(--accent-red-testo); line-height: 1.6; }
.contact-card-info a:hover { text-decoration: underline; }
.contact-card-info a { display: inline-block; padding: 11px 0; margin: -11px 0; }   /* era 17 px di altezza */
/* La scheda non si allarga oltre la colonna per un indirizzo lungo (a 360 px
   l'email spingeva la scheda 18 px oltre il margine destro). */
.contact-card, .contact-card-info { min-width: 0; }

/* =============================================
   FOOTER
   Rifatto il 01/10/2026 (corsia «intestazione e piè di pagina»).
   ⚠️ `.site-footer` è osservata da consent-banner.js: non rinominarla.
   Invito finale → quattro colonne (marchio, contatti, orario, menu+lingua)
   → riga legale → riga in fondo. Telefono: una colonna sola.
   ============================================= */
.site-footer {
  position: relative;
  background-color: var(--bg-primary);
  background-image: radial-gradient(120% 60% at 50% 0%, rgba(176,17,30,.10), rgba(176,17,30,0) 60%);
  border-top: 1px solid var(--border-color);
  /* in fondo resta posto per la pastiglia «Бисквитки» (fissa in basso a sinistra,
     44 px a 12 px dal bordo): prima copriva la riga con la ragione sociale */
  padding: 0 0 calc(72px + env(safe-area-inset-bottom));
}

/* Invito finale */
.footer-cta {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px 40px; flex-wrap: wrap;
  padding: 56px 0 48px;
  border-bottom: 1px solid var(--border-color);
}
.footer-cta__text { min-width: 0; flex: 1 1 380px; }
.footer-cta__kicker {
  font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase;
  color: var(--accent-red-testo); margin-bottom: 10px;
}
.footer-cta__title {
  font-size: clamp(28px, 4vw, 44px); font-weight: 700;
  line-height: 1.08; letter-spacing: -.02em;
  color: var(--text-primary);
  max-width: 20ch;
}
.footer-book {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 56px; padding: 0 30px;
  background-color: var(--accent-red); color: #fff;
  border-radius: var(--radius-pill);
  font-size: 16px; font-weight: 700; white-space: nowrap;
  transition: transform .2s ease;
}
.footer-book svg { transition: transform .2s ease; }
.footer-book:hover { background-color: var(--accent-red-hover); }
.footer-book:hover svg { transform: translateX(3px); }
.footer-book:active { transform: scale(.98); }

/* Colonne */
.footer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.2fr) minmax(0, 1.15fr) minmax(0, .75fr);
  gap: 40px 36px;
  padding: 48px 0 40px;
}
.footer-h {
  font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  color: var(--text-spento); margin-bottom: 14px;
}

/* Marchio + social */
.footer-logo { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; }
.footer-logo img { width: 44px; height: 44px; border-radius: 9px; object-fit: contain; }
.footer-logo__name {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 24px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  color: #fff; white-space: nowrap;
}
.footer-tagline { margin: 12px 0 18px; font-size: 15px; line-height: 1.55; color: var(--text-secondary); max-width: 32ch; }
.footer-follow-label { display: block; font-size: 13px; line-height: 1.5; color: var(--text-spento); max-width: 34ch; }
.footer-social { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.footer-social a {
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  background-color: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: 50%;
  color: #fff;
  transition: transform .2s ease;
}
.footer-social a:hover { background-color: var(--accent-red); border-color: var(--accent-red); transform: translateY(-2px); }
.footer-social a svg { width: 17px; height: 17px; fill: currentColor; }

/* Contatti */
.footer-contact { display: flex; flex-direction: column; gap: 2px; }
.footer-contact a {
  display: flex; align-items: flex-start; gap: 12px;
  min-height: 44px; padding: 10px 0;
  font-size: 15px; line-height: 1.45; color: var(--text-primary);
  overflow-wrap: anywhere;
}
.footer-contact a svg { margin-top: 1px; color: var(--accent-red-testo); }
.footer-contact a:hover span { text-decoration: underline; text-underline-offset: 3px; }

/* Orario */
.footer-hours { display: flex; flex-direction: column; }
.footer-hours > div {
  display: flex; justify-content: space-between; align-items: baseline; gap: 14px;
  padding: 11px 0;
  border-bottom: 1px dashed rgba(255,255,255,.12);
}
.footer-hours > div:first-child { padding-top: 0; }
.footer-hours dt { font-size: 14px; color: var(--text-secondary); }
.footer-hours dd {
  font-size: 15px; font-weight: 600; color: var(--text-primary);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}

/* Menu + lingua */
.footer-nav { display: flex; flex-direction: column; }
.footer-nav a {
  display: flex; align-items: center; min-height: 44px;   /* 03/10 (m8): 40 → 44, il dito su iPad */
  font-size: 15px; color: var(--text-secondary);
}
.footer-nav a:hover { color: #fff; }
.footer-lang { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-top: 20px; }
.footer-lang-label { font-size: 12px; font-weight: 600; letter-spacing: .08em; color: var(--text-spento); }

/* Collegamenti legali: riga a sé, sopra la barra in fondo */
.footer-legal {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 0 22px;
  padding-top: 8px;
  border-top: 1px solid var(--border-color);
}
.footer-legal a {
  display: inline-flex; align-items: center; min-height: 44px;
  font-size: 13px; color: var(--text-secondary); text-decoration: none;
}
.footer-legal a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.footer-legal .footer-cookie-settings { color: var(--text-primary); }

/* Riga in fondo */
.footer-bottom {
  display: flex; align-items: center; justify-content: space-between; gap: 6px 24px; flex-wrap: wrap;
  padding-top: 10px;
}
.footer-copyright, .footer-rights, .footer-entity { font-size: 13px; color: var(--text-spento); }

@media (max-width: 1024px) {
  .footer-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .footer-cta { padding: 44px 0 36px; }
  .footer-book { width: 100%; }
  .footer-grid { grid-template-columns: minmax(0, 1fr); gap: 32px; padding: 36px 0 28px; }
  .footer-nav { display: grid; grid-template-columns: 1fr 1fr; column-gap: 16px; }
  .footer-nav a { min-height: 44px; }
  .footer-legal { gap: 0 18px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
}
/* /junior (telefono): la barra della pagina (.jr-sticky) resta giù anche sul piè di
   pagina e la pastiglia «Бисквитки» sale a 88 px: senza più spazio copriva la riga
   «© … / ЕИК». junior.css dà 96 px; qui 150 (88 + 44 della pastiglia + aria). */
@media (max-width: 640px) {
  html body:has(.jr-sticky) .site-footer { padding-bottom: calc(150px + env(safe-area-inset-bottom)); }
}
@media (prefers-reduced-motion: reduce) {
  .footer-book, .footer-book svg, .footer-social a { transition: none !important; }
  .footer-social a:hover { transform: none; }
}

/* =============================================
   RESPONSIVE — TABLET (≤ 1024px)
   ============================================= */
@media (max-width: 1024px) {
  .team-card-content h2 { font-size: 40px; }
}

/* =============================================
   RESPONSIVE — MOBILE (≤ 768px)
   ============================================= */
@media (max-width: 768px) {
  :root { --header-row: 64px; }

  .hero-buttons { flex-direction: column; }
  .hero-buttons .btn { width: 100%; min-width: unset; }
  .hero-features { gap: 10px; }

  .contacts-grid { grid-template-columns: 1fr; }

  .team-card { min-height: 420px; }
  .team-card-bg {
    background-size: contain;
    background-position: top center;
    background-repeat: no-repeat;
    background-color: var(--bg-primary);
  }
  .team-card-content { padding: 24px; }

}

@media (max-width: 480px) {
  .hero-features { gap: 8px; }
  .feature-card { padding: 18px 10px; }
  .feature-card-title { font-size: 12px; }
  .feature-card-badge { font-size: 10px; }
}

/* =============================================
   SERVICES PAGE — page-uslugi.php
   ============================================= */

/* Hero */
.services-hero {
  background: var(--bg-primary);
  padding: 120px 0 60px;
  text-align: center;
}
.services-hero__inner { max-width: 760px; margin: 0 auto; }
.services-hero__heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(32px, 4.5vw, 52px);
  line-height: 1.05;
  text-transform: uppercase;
  margin: 20px 0 24px;
}
.services-hero__sub {
  color: var(--text-secondary);
  font-size: 16px;
  max-width: 560px;
  margin: 0 auto;
}

/* Grid */
.services-grid-section { padding: 60px 0 100px; }
.services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

/* Card */
.service-card {
  background: var(--bg-card);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform var(--transition), box-shadow var(--transition);
}
.service-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(0,0,0,0.4);
}

/* Card image */
.service-card__image-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
}
.service-card__image-wrap img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.service-card__image-placeholder {
  width: 100%; height: 100%;
  background: var(--bg-secondary);
}
.service-card__duration {
  position: absolute;
  top: 14px; right: 14px;
  background: rgba(255,255,255,0.15);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  color: #fff;
  font-size: 13px;
  font-weight: 500;
  padding: 5px 12px;
  border-radius: var(--radius-pill);
}

/* Card body */
.service-card__body {
  padding: 20px 22px 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 12px;
}
.service-card__title-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.service-card__icon {
  flex-shrink: 0;
  width: 40px; height: 40px;
  background: var(--accent-red-bg);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: var(--accent-red);
}
.service-card__name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 20px;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--text-primary);
}
.service-card__desc {
  color: var(--text-secondary);
  font-size: 14px;
  line-height: 1.6;
  flex: 1;
}
.service-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 4px;
}
.service-card__price {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 22px;
  color: var(--text-primary);
}
.service-card__book {
  color: var(--accent-red-testo);
  font-weight: 600;
  font-size: 15px;
  transition: opacity var(--transition);
  display: inline-flex; align-items: center; min-height: 44px; margin: -10px 0;   /* era 24 px di altezza */
}
.service-card__book:hover { opacity: 0.75; }

/* =============================================
   SERVICES — RESPONSIVE
   ============================================= */
@media (max-width: 1024px) {
  .services-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .services-hero { padding: 100px 0 40px; }
  .services-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .service-card__image-wrap { aspect-ratio: 16 / 9; }
  .service-card__name { font-size: 18px; }
}

/* =============================================
   TEAM PAGE — page-ekim.php
   ============================================= */

/* Hero */
.ekim-hero {
  background: var(--bg-primary);
  padding: 120px 0 60px;
  text-align: center;
}
.ekim-hero__inner { max-width: 760px; margin: 0 auto; }
.ekim-hero__heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(32px, 4.5vw, 52px);
  line-height: 1.05;
  text-transform: uppercase;
  margin: 20px 0 24px;
}
.ekim-hero__sub {
  color: var(--text-secondary);
  font-size: 16px;
  max-width: 560px;
  margin: 0 auto;
}

/* Grid */
.ekim-grid-section { padding: 60px 0 100px; }
.ekim-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

/* ---- Barber Card ---- */
.barber-card {
  background: var(--bg-card);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* Photo */
.barber-card__photo-wrap {
  position: relative;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  flex-shrink: 0;
}
.barber-card__photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.barber-card__photo--placeholder {
  width: 100%;
  height: 100%;
  background: var(--bg-secondary);
}

/* Badge (top-right scissors icon) */
.barber-card__badge {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  background: rgba(212, 43, 58, 0.9);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.barber-card__badge svg {
  width: 18px;
  height: 18px;
  color: #fff;
}

/* Body */
.barber-card__body {
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
}
.barber-card__name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 26px;
  line-height: 1.1;
  text-transform: uppercase;
}
.barber-card__role {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.barber-card__exp {
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 4px;
}

/* Expandable skills panel */
.barber-card__skills-panel {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transition: max-height 0.4s ease, opacity 0.3s ease;
  margin-bottom: 0;
}
.barber-card__skills-panel.is-open {
  max-height: 600px;
  opacity: 1;
  margin-bottom: 12px;
}

/* Bio text */
.barber-card__bio {
  background: rgba(255,255,255,0.05);
  border-radius: var(--radius-md);
  padding: 14px 16px;
  font-size: 14px;
  color: var(--text-secondary);
  line-height: 1.65;
  margin-bottom: 16px;
}

/* Skills table */
.barber-card__skills {
  padding: 0 4px;
}
.barber-card__skills-heading {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 800;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 12px;
}
.barber-card__skills-heading span { font-weight: 800; }
.barber-card__skills-icon {
  width: 18px;
  height: 18px;
  color: var(--accent-red);
  flex-shrink: 0;
}
.barber-card__skills-icon svg { width: 100%; height: 100%; }
.barber-card__skill-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 5px 0;
  border-bottom: 1px solid var(--border-color);
}
.barber-card__skill-row:last-child { border-bottom: none; }
.barber-card__skill-name {
  font-size: 14px;
  color: var(--text-secondary);
}
.barber-card__stars {
  display: flex;
  gap: 3px;
}
.star {
  width: 16px;
  height: 16px;
}
.star--filled {
  fill: var(--accent-red);
  stroke: var(--accent-red);
}
.star--empty {
  fill: none;
  stroke: var(--text-muted);
}

/* Actions row */
.barber-card__actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
}
.barber-card__book {
  width: 100%;
  text-align: center;
  padding: 13px 20px;
  font-size: 14px;
}
.barber-card__ig {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  border: 2px solid var(--border-color);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color var(--transition);
}
.barber-card__ig:hover { border-color: var(--accent-red); }
.barber-card__ig svg { width: 20px; height: 20px; }

/* Toggle button */
.barber-card__toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 13px 20px;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-pill);
  color: var(--text-primary);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: background var(--transition), border-color var(--transition);
  margin-top: 4px;
}
.barber-card__toggle:hover {
  background: var(--bg-card-hover);
  border-color: rgba(255,255,255,0.15);
}
.barber-card__toggle-icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  transition: transform 0.35s ease;
}
.barber-card__toggle[aria-expanded="true"] .barber-card__toggle-icon {
  transform: rotate(180deg);
}

/* ============================================
   TEAM PAGE — RESPONSIVE
   ============================================= */
@media (max-width: 1024px) {
  .ekim-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .ekim-hero { padding: 100px 0 40px; }
  .ekim-grid {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .barber-card__photo-wrap { aspect-ratio: 4 / 3; }
}

/* =============================================
   WORK WITH US PAGE — page-rabotete-s-nas.php
   ============================================= */

/* Hero */
.rabotete-hero {
  background: var(--bg-primary);
  padding: 120px 0 80px;
  text-align: center;
}
.rabotete-hero__inner { max-width: 700px; margin: 0 auto; }
.rabotete-hero__heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(32px, 4vw, 56px);
  line-height: 1.0;
  text-transform: uppercase;
  margin: 20px 0 24px;
}
.rabotete-hero__sub {
  color: var(--text-secondary);
  font-size: 16px;
  max-width: 520px;
  margin: 0 auto;
  line-height: 1.65;
}

/* Feature cards */
.rabotete-features { padding: 20px 0 80px; }
.rabotete-features__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.rabotete-feature-card {
  background: var(--bg-card);
  border-radius: var(--radius-lg);
  padding: 36px 28px 32px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.rabotete-feature-card__icon {
  width: 52px;
  height: 52px;
  background: var(--accent-red-bg);
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.rabotete-feature-card__icon svg {
  width: 24px;
  height: 24px;
  color: var(--accent-red);
}
.rabotete-feature-card__title {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 800;
  font-size: 22px;
  text-transform: uppercase;
  line-height: 1.1;
}
.rabotete-feature-card__desc {
  font-size: 14px;
  color: var(--text-secondary);
  line-height: 1.55;
}

/* Form section */
.rabotete-form-section { padding: 0 0 100px; }
.rabotete-form-card {
  background: var(--bg-card);
  border-radius: var(--radius-lg);
  padding: 52px 60px;
  max-width: 780px;
  margin: 0 auto;
}
.rabotete-form-card__heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(36px, 5vw, 56px);
  text-transform: uppercase;
  margin-bottom: 32px;
  line-height: 1.05;
}
@media (max-width: 480px) {
  .rabotete-form-card__heading { font-size: min(27px, 6.8vw); }   /* a 360 px «Кандидатствайте» era 283 px in 264 */
}

/* Form layout */
.rabotete-form { display: flex; flex-direction: column; gap: 20px; }
.rabotete-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.rabotete-form__group { display: flex; flex-direction: column; gap: 8px; }
.rabotete-form__group--full { grid-column: 1 / -1; }

.rabotete-form__label {
  font-size: 14px;
  font-weight: 500;
  color: var(--text-secondary);
}
.rabotete-form__input,
.rabotete-form__select,
.rabotete-form__textarea {
  width: 100%;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-family: 'Inter', sans-serif;
  font-size: 16px;   /* 15 px: al tocco l'iPhone ingrandiva la pagina e la lasciava ingrandita */
  padding: 14px 16px;
  transition: border-color var(--transition);
  outline: none;
  appearance: none;
  -webkit-appearance: none;
}
.rabotete-form__input::placeholder,
.rabotete-form__textarea::placeholder { color: var(--text-spento); }   /* #555 su #111: 2,6:1 */
.rabotete-form__input:focus,
.rabotete-form__select:focus,
.rabotete-form__textarea:focus {
  border-color: var(--accent-red-testo);
  outline: 2px solid var(--accent-red-testo);
  outline-offset: 2px;
}

/* Select wrapper (custom chevron) */
.rabotete-form__select-wrap { position: relative; }
.rabotete-form__select { padding-right: 40px; cursor: pointer; }
.rabotete-form__select-wrap::after {
  content: '';
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 10px;
  height: 6px;
  background: var(--text-secondary);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  pointer-events: none;
}
.rabotete-form__select option { background: var(--bg-card); color: var(--text-primary); }

.rabotete-form__textarea { resize: vertical; min-height: 140px; }

/* Submit button */
.rabotete-form__submit {
  width: 100%;
  padding: 16px;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-top: 4px;
}

/* Error / success states */
.rabotete-form-error {
  background: rgba(212, 43, 58, 0.12);
  border: 1px solid rgba(212, 43, 58, 0.35);
  border-radius: var(--radius-md);
  color: #B0111E;
  font-size: 14px;
  padding: 12px 16px;
  margin-bottom: 8px;
}
.rabotete-form-success {
  text-align: center;
  padding: 40px 0;
  display: none !important;
}
.rabotete-form-success:not([hidden]) {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.rabotete-form-success svg {
  width: 56px;
  height: 56px;
  color: var(--accent-red);
}
.rabotete-form-success h2 {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: 40px;
  text-transform: uppercase;
}
.rabotete-form-success p {
  color: var(--text-secondary);
  font-size: 16px;
}

/* =============================================
   WORK WITH US — RESPONSIVE
   ============================================= */
@media (max-width: 1024px) {
  .rabotete-features__grid { grid-template-columns: repeat(2, 1fr); }
  .rabotete-form-card { padding: 40px 36px; }
}
@media (max-width: 640px) {
  .rabotete-hero { padding: 100px 0 60px; }
  .rabotete-features__grid { grid-template-columns: 1fr; gap: 12px; }
  .rabotete-feature-card {
    padding: 32px 24px;
    align-items: center;
    text-align: center;
  }
  .rabotete-form-card { padding: 28px 20px; }
  .rabotete-form__row { grid-template-columns: 1fr; }
}

/* =============================================
   SERVIZI — scheda «All Inclusive Junior»     (aggiunto 2026-09-27)
   ============================================= */
.service-card--promo { border: 1.5px solid var(--accent-red); }
.promo-visual {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  /* Il riquadro è largo quanto la scheda e la pastiglia della durata sta in alto a
     destra: sotto i ~420 px il «All inclusive» centrato ci finiva sotto (misurato a
     390: si toccavano). Si scende sotto la pastiglia, il prezzo segue la larghezza
     della SCHEDA (cqi) e, se il contenuto non ci sta, il riquadro cresce invece di
     tagliarlo (overflow visibile = altezza minima automatica di aspect-ratio). */
  padding: 46px 12px 14px; overflow: visible; container-type: inline-size;
  background:
    radial-gradient(circle at 30% 20%, rgba(251,61,72,.28), transparent 55%),
    linear-gradient(160deg, #2a0a0e 0%, #140507 60%, #0d0d0d 100%);
}
.promo-visual__kicker {
  font: 800 12px 'Inter', sans-serif; letter-spacing: 3px; text-transform: uppercase; color: var(--accent-red-testo);
}
.promo-visual__price {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 900; font-size: 96px; font-size: clamp(56px, 25cqi, 96px); line-height: .9; color: #fff;
}
.promo-visual__old { font-size: 14px; color: #bdbdbd; text-decoration: line-through; text-decoration-color: var(--accent-red); }
/* La scheda con la foto (01/10/2026): sfumatura scura dal basso, prezzo sopra la foto.
   La pastiglia «−8 €» in alto a sinistra, la durata resta in alto a destra. */
.promo-photo::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(13,13,13,.25) 0%, rgba(13,13,13,0) 22%, rgba(13,13,13,0) 48%, rgba(13,13,13,.82) 82%, rgba(13,13,13,.96) 100%);
}
.promo-photo__save {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  background: var(--accent-red); color: #fff; font: 800 13px 'Inter', sans-serif; letter-spacing: .5px;
  padding: 5px 11px; border-radius: var(--radius-pill);
}
.promo-photo .service-card__duration { z-index: 2; }
.promo-photo__price {
  position: absolute; left: 18px; right: 18px; bottom: 14px; z-index: 2;
  display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 12px; row-gap: 0;
}
.promo-photo__price .promo-visual__kicker { flex-basis: 100%; }
.promo-photo__now {
  font-family: 'Barlow Condensed', sans-serif; font-weight: 900; line-height: .9; color: #fff;
  font-size: clamp(52px, 14vw, 72px);
}
@media (min-width: 769px) { .promo-photo__now { font-size: 64px; } }
.service-card--promo:hover .promo-photo img { transform: scale(1.04); }
.promo-photo img { transition: transform .5s ease; object-position: 55% 30%; }
@media (max-width: 768px) { .service-card__image-wrap.promo-photo { aspect-ratio: 4 / 3; } }
@media (prefers-reduced-motion: reduce) { .promo-photo img { transition: none; } .service-card--promo:hover .promo-photo img { transform: none; } }
.promo-more {
  display: inline-flex; align-items: center; min-height: 44px;   /* era 22 px di altezza */
  align-self: flex-start;   /* toccabile sulla scritta, non su tutta la riga */
  margin: -15px 0 3px; font-size: 14px; font-weight: 600;
  color: #fff; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--accent-red);
}


/* Voce dell'offerta junior nel menu del computer (01/10, rifatta il 04/10/2026): una pillola sottile
   bordata di rosso con il puntino che respira (solo opacity) e «All Inclusive 13 €» — si capisce che è
   un'offerta e quanto costa. Il fondo della pillola è un ::before (il link resta alto 44 px per il dito). */
.site-nav a.nav-link--hot { gap: 8px; padding: 0 16px 0 15px; margin: 0 4px; color: #fff; }
.nav-link--hot::before {
  content: ""; position: absolute; inset: 6px 0; z-index: -1;
  border: 1px solid rgba(251,61,72,.5); border-radius: 999px;
  background: rgba(176,17,30,.14);
}
.site-nav a.nav-link--hot::after { display: none; }   /* la sottolineatura non serve: la pillola si vede già */
.site-nav a.nav-link--hot:hover::before { background: rgba(176,17,30,.26); }
.site-nav a.nav-link--hot[aria-current="page"]::before { background: rgba(176,17,30,.32); border-color: rgba(251,61,72,.85); }
.site-nav { position: relative; z-index: 0; }
/* BARRA PIENA (04/10/2026, con «Сътрудничество»). Misurato con Chromium e WebKit, bulgaro e inglese:
   - da 1200 px: logo + 7 voci + «Запази час» stanno su una riga (in bulgaro restano ≥ 48 px liberi; 1200–1279 con voci più strette, sotto) SOLO senza
     «Начало»: il logo porta già alla home, e nel menu del telefono la voce resta;
   - 1025–1199 px: non c'era posto nemmeno PRIMA (a 1025 in bulgaro «Запази час» usciva di 25 px dallo schermo,
     con le voci già strette a 9 px). Qui ora si usa il pulsante «Меню» come sul tablet, con tutte le voci e la
     scheda dell'offerta; «Запази час» resta nell'intestazione. main.js chiude il menu solo sopra 1199 px. */
.site-nav a.nav-link--home { display: none; }
@media (min-width: 1025px) and (max-width: 1199px) {
  .site-nav { display: none; }
  .burger-btn { display: inline-flex; }
}
/* 1200–1279: il contenitore ha 28 px di margine e la barra piena sporgeva di poco: voci un po' più strette */
@media (min-width: 1200px) and (max-width: 1279px) {
  .site-nav { gap: 0; }
  .site-nav a { padding: 0 10px; }
  .site-nav a::after { left: 10px; right: 10px; }
  .site-nav a.nav-link--hot { padding: 0 13px 0 12px; margin: 0 3px; gap: 7px; }
  .header-cta { margin-left: 0; }
}
.nav-link__dot { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--accent-red-testo); }
@media (prefers-reduced-motion: no-preference) {
  .nav-link__dot, .mobile-offer__dot { animation: bs-respira 2.4s ease-in-out infinite; }
}
@keyframes bs-respira { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* =============================================
   IL PULSANTE DELLO STUDIO — uno solo per tutto il sito (01/10/2026)
   Copia esatta del pulsante del funnel /junior (.jr-cta): pillola rossa, cerchio bianco
   con la freccia, riflesso che passa. Il proprietario: niente pulsanti grigi con la freccia.
   Uso: <a class="bs-cta"><span class="bs-cta__txt">Testo</span><span class="bs-cta__arrow" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
   Varianti: .bs-cta--compact (schede, barre), .bs-cta--auto (larghezza sul testo).
   ============================================= */
.bs-cta {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  width: 100%; max-width: 100%; min-height: 60px; padding: 8px 8px 8px 26px; border-radius: 999px;
  background: linear-gradient(180deg, #c3131f 0%, var(--accent-red) 55%, #a00f1b 100%);
  color: #fff; text-decoration: none; text-transform: uppercase;
  font: 600 13.5px/1.2 'Inter', sans-serif; letter-spacing: .16em;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .22), 0 22px 44px -20px rgba(176, 17, 30, .95);
  transition: transform .5s cubic-bezier(.16, 1, .3, 1);
  -webkit-tap-highlight-color: transparent;
}
.bs-cta:hover, .bs-cta:focus { color: #fff; }
.bs-cta::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 40%; z-index: -1;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .2), transparent);
  transform: translateX(-130%) skewX(-18deg);
  animation: bs-shine 6s ease-in-out 1.6s infinite;
}
@keyframes bs-shine { 0% { transform: translateX(-130%) skewX(-18deg); } 22%, 100% { transform: translateX(340%) skewX(-18deg); } }
.bs-cta:active { transform: scale(.975); }
.bs-cta__txt { min-width: 0; }
.bs-cta__arrow {
  flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  background: #fff; color: var(--accent-red);
}
.bs-cta__arrow svg {
  width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round;
  transition: transform .5s cubic-bezier(.16, 1, .3, 1);
}
.bs-cta:hover .bs-cta__arrow svg { transform: translateX(3px); }
.bs-cta:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.bs-cta--auto { width: auto; display: inline-flex; }
/* Il pulsante SECONDARIO accanto a uno rosso: ROSSO anche lui (04/10/2026, regola del proprietario del 01/10:
   «tutti i tasti rossi con l'animazione, niente grigi con la freccia»; il 01/10 sera era diventato a solo contorno).
   Stessa altezza; il riflesso parte sfasato così i due pulsanti vicini non lampeggiano insieme. */
.bs-cta--second::after { animation-delay: 4.6s; }
.bs-cta--compact { min-height: 48px; padding: 4px 4px 4px 18px; gap: 12px; font-size: 12px; letter-spacing: .12em; }
.bs-cta--compact .bs-cta__arrow { width: 40px; height: 40px; }
@media (max-width: 380px) { .bs-cta { padding-left: 20px; letter-spacing: .12em; font-size: 12.5px; } .bs-cta--compact { padding-left: 16px; font-size: 12px; letter-spacing: .1em; } }
@media (prefers-reduced-motion: reduce) { .bs-cta::after { animation: none; display: none; } .bs-cta, .bs-cta__arrow svg { transition: none; } }
/* Piede: il titolo dell'invito nello stesso carattere dei titoli del sito (01/10/2026) */
.footer-cta__title { font-family: 'Barlow Condensed', sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: .01em; line-height: 1.02; font-size: clamp(30px, 8vw, 46px); }

/* =============================================
   MENU — VETRO SCURO SFOCATO SULLA PAGINA SOTTO (04/10/2026, corsia «menu-vetro», v2)
   Il proprietario: «dietro si veda pochissimo la pagina da cui hai aperto il menu, molto sfocata;
   niente rosso nello sfondo». Il menu aperto è quindi la PAGINA VERA (lo scorrimento è bloccato,
   quindi è proprio la porzione dove l'utente si trovava) vista attraverso un vetro nero molto
   sfocato: si intuiscono forme e colori delle foto, il testo non si legge mai.
   Fluidità (iPhone): il vetro (backdrop-filter) è UN SOLO livello FISSO a tutto schermo e compare
   solo con opacity — mai scalato. Il cerchio che si allarga dal pulsante (transform, come prima) è
   ora solo un'ombra scura morbida sopra il vetro. Poi le voci salgono con la molla, invariate.
   Contrasto: vetro + ombra riducono anche una pagina tutta bianca a ≈ #2b2b2b; con il rosso dei testi
   piccoli un filo più chiaro (#ff5f69, solo dentro il menu) il contrasto è ≥ 4,5:1 qualunque sia la
   pagina dietro (misurato sui pixel veri su home, /uslugi/, /ekim/, /junior/).
   ============================================= */
.mobile-menu::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  /* più scuro dove stanno i testi rossi piccoli (numeri, «Тук си», «€»: contrasto), più trasparente
     in basso, dove ci sono solo prenotazione, telefono e lingua (testo bianco) */
  background: linear-gradient(180deg, rgba(6,6,8,.84) 0, rgba(6,6,8,.84) 54%, rgba(6,6,8,.48) 84%, rgba(6,6,8,.38) 100%);
  -webkit-backdrop-filter: blur(34px) saturate(40%) brightness(.8);
  backdrop-filter: blur(34px) saturate(40%) brightness(.8);
  opacity: 0; transition: opacity .22s ease;
}
.mobile-menu.is-open::before { opacity: 1; transition: opacity .38s ease; }
/* Il cerchio: stessa geometria e stessa animazione di prima (solo transform), ma niente rosso —
   un'ombra scura sottile. Il riquadro NON si ingrandisce (un riquadro 2,5 volte più largo costava
   +15 ms al primo fotogramma su WebKit): il bordo è sfumato per l'ultimo 1,5 % del raggio. */
.mobile-menu__veil {
  background: radial-gradient(circle closest-side, rgba(3,3,5,.24) 0, rgba(3,3,5,.24) 98.5%, rgba(3,3,5,0) 100%);
}
/* Il rosso dei testi piccoli: un filo più chiaro, per il contrasto sul fondo che lascia intravedere la pagina */
.mobile-menu { --accent-red-testo: #ff5f69; }
/* La scheda dell'offerta: com'era (la luce rossa in alto a destra solo un po' più morbida, perché sul fondo
   che lascia intravedere la pagina il «€» rosso restava sotto 4,5:1) */
.mobile-offer {
  background: radial-gradient(120% 140% at 100% 0%, rgba(176,17,30,.18), rgba(176,17,30,0) 62%), rgba(6,6,8,.32);
}
/* La scheda dell'offerta: com'era, con in più un riflesso neutro e leggero in alto */
.mobile-offer::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; border-radius: inherit;
  background: linear-gradient(180deg, rgba(255,255,255,.07) 0, rgba(255,255,255,0) 42%);
}

/* Ripiego senza backdrop-filter: fondo pieno scuro come prima (e il cerchio pieno come prima) */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .mobile-menu::before { display: none; }
  .mobile-menu__veil {
    left: calc(var(--mx) - var(--mr)); top: calc(var(--my) - var(--mr));
    width: calc(var(--mr) * 2); height: calc(var(--mr) * 2);
    background: #0b0b0b;
  }
}
/* Riduci movimento: nessun cerchio, solo il vetro che sfuma e un'ombra piatta */
@media (prefers-reduced-motion: reduce) {
  .mobile-menu::before, .mobile-menu.is-open::before { transition: opacity .2s ease; }
  .mobile-menu__veil, .mobile-menu.is-open .mobile-menu__veil { background: rgba(3,3,5,.24); }
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  @media (prefers-reduced-motion: reduce) { .mobile-menu__veil, .mobile-menu.is-open .mobile-menu__veil { background: #0b0b0b; } }
}

/* =============================================
   LA PORTA DELL'AREA CLIENTI — 06/10/2026 (ramo area-clienti, corsia B·design-clienti)
   Una pillola accanto a «Меню» con lo stesso bordo e lo stesso fondo del pulsante del menu:
   omino + «Вход» per chi non è entrato, iniziale rossa + «Профил» per chi è entrato.
   TELEFONO (≤ 767): misurato sul vivo, fra il logo e «Меню» restano 13 px a 375, 28 a 390, 40
   a 402 — una pillola da 44 non ci sta senza schiacciare il logo. Scelta: sul telefono i due
   pulsanti diventano CERCHI da 44 (omino/iniziale e le tre righe); la parola «Меню» torna dentro
   il menu aperto (aria-label invariato). Il logo resta identico al pixel.
   Si animano solo transform/opacity; nessun vetro nuovo.
   ============================================= */
/* =============================================
   TESTATA v3 — PROPOSTA 2 «UNA PILLOLA SOLA» (07/10/2026, B·testata)
   Frase di prima (6e3604e): «la testata è DUE piani — la striscia in cima (lingua, "Вход") e la riga del logo».
   Ora un piano solo e una pillola sola a destra: [ EN | ВХОД | ≡ ]. La lingua mostra solo l'ALTRA (quella attiva
   non serve toccarla): un tocco e la pagina cambia lingua senza ricaricare. Al computer il menu non c'è e la
   pillola è [ EN | ВХОД ], accanto a «Запази час». Si anima solo transform/opacity.
   ============================================= */
.bs-capsula {
  display: inline-flex; align-items: stretch; flex-shrink: 0;
  height: 46px;                           /* 1 px di bordo per parte: dentro, ogni tocco è alto 44 */
  border: 1px solid rgba(255,255,255,.22); border-radius: var(--radius-pill);
  background: rgba(255,255,255,.05);
  overflow: hidden;
}
.bs-capsula > * + * { border-left: 1px solid rgba(255,255,255,.16); }
.lang-toggle--capsula { padding: 0; gap: 0; background: none; border: 0; border-radius: 0; }
.lang-toggle--capsula .lang-btn.active { display: none; }
.lang-toggle--capsula .lang-btn {
  min-height: 44px; min-width: 46px; padding: 0 12px; border-radius: 0;
  background: none; color: #fff; font: 700 15px/1 'Barlow Condensed', sans-serif; letter-spacing: .08em;
}
.lang-toggle--capsula .lang-btn:hover:not(.active) { background: rgba(255,255,255,.08); }
.bs-entra {
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
  padding: 0 14px;
  color: #fff; font: 700 15px/1 'Barlow Condensed', sans-serif; letter-spacing: .08em; text-transform: uppercase;
  white-space: nowrap; -webkit-tap-highlight-color: transparent;
}
.bs-entra:hover { background: rgba(255,255,255,.08); }
.bs-entra.is-dentro { background: var(--accent-red); }
.bs-entra[aria-current="page"] { box-shadow: inset 0 -2px 0 var(--accent-red-testo); }
.bs-capsula .burger-btn {
  min-height: 44px; margin: 0; border: 0; border-left: 1px solid rgba(255,255,255,.16);
  border-radius: 0; background: none;
}
.bs-capsula .burger-btn:hover { background: rgba(255,255,255,.08); }
.bs-capsula a:active, .bs-capsula button:active { opacity: .7; }
.bs-capsula a:focus-visible, .bs-capsula button:focus-visible { outline: 2px solid #fff; outline-offset: -3px; }
.header-cta + .bs-capsula { margin-left: 4px; }
@media (min-width: 1200px) {
  /* la riga delle voci era già piena (6e3604e): le voci si stringono di 6 px per lato (14 → 8), testo invariato */
  .header-inner { gap: 8px; }
  .site-nav a { padding: 0 8px; }
  .site-nav a::after { left: 8px; right: 8px; }
  .bs-entra { padding: 0 12px; }
  .lang-toggle--capsula .lang-btn { min-width: 44px; padding: 0 10px; }
  .bs-capsula .burger-btn { display: none; }
}
@media (max-width: 767px) {
  /* il menu nella pillola: solo le tre righe (la parola «Меню» sta dentro il menu aperto) */
  .bs-capsula .burger-btn { width: 44px; min-width: 44px; padding: 0; justify-content: center; gap: 0; }
  .bs-capsula .burger-btn .burger-label { display: none; }
  .header-inner { gap: 8px; }
  .lang-toggle--capsula .lang-btn { min-width: 44px; padding: 0 10px; font-size: 14.5px; }
  .bs-entra { padding: 0 11px; font-size: 14.5px; letter-spacing: .06em; }
  /* per far stare la pillola, il nome del salone si fa un po' più piccolo (21 → 18 px; sotto 375 era già 18) */
  .logo-icon, .logo-icon--image img { width: 36px; height: 36px; }
  .site-logo { gap: 9px; }
  .logo-name { font-size: 18px; letter-spacing: .04em; }
  .logo-sub { font-size: 9.5px; letter-spacing: .12em; }
}
@media (max-width: 400px) {
  .bs-entra { padding: 0 7px; font-size: 14px; letter-spacing: .03em; }
  .lang-toggle--capsula .lang-btn { padding: 0 8px; }
  .logo-name { letter-spacing: .03em; }
}
@media (max-width: 389px) {
  .header-inner { gap: 6px; }
  .logo-name { font-size: 17.5px; }
}

/* 1200–1279 px (finestra un po' stretta): la riga delle voci si stringe ancora (13 px, 6 px per lato), testo invariato */
@media (min-width: 1200px) and (max-width: 1279px) {
  .site-nav a { padding: 0 6px; font-size: 13px; }
  .site-nav a::after { left: 6px; right: 6px; }
}
/* 320–359 px: la pillola non lascia posto al nome: resta il quadrato rosso del logo (il nome lo legge il lettore di schermo) */
@media (max-width: 359px) {
  .logo-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .logo-icon, .logo-icon--image img { width: 40px; height: 40px; }
}
/* «ПРОФИЛ» (chi è già entrato: lo scrive sito.tsx dentro /profil/, con is-dentro) è più lungo di «ВХОД» di ~16 px.
   Misurato il 07/10: a 375 e 390 in bulgaro la pillola usciva dallo schermo (bordo destro 376 su 375), al computer
   di 26 px. Solo in quello stato: sul telefono resta il quadrato del logo (come sotto i 360), al computer le voci
   si stringono come fra 1200 e 1279. Senza :has (browser vecchi) la pillola resta com'è. */
@media (max-width: 400px) {
  .site-header:has(.bs-entra.is-dentro) .logo-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .site-header:has(.bs-entra.is-dentro) .logo-icon,
  .site-header:has(.bs-entra.is-dentro) .logo-icon--image img { width: 40px; height: 40px; }
}
@media (min-width: 1200px) {
  .site-header:has(.bs-entra.is-dentro) .site-nav a { padding: 0 6px; font-size: 13px; }
  .site-header:has(.bs-entra.is-dentro) .site-nav a::after { left: 6px; right: 6px; }
}
/* la voce 08 del menu: al posto della freccia, l'omino (o l'iniziale) nel cerchio */
.mobile-nav__arrow--area svg { width: 17px; height: 17px; stroke-width: 1.9; }
.mobile-nav__arrow--area b { font: 700 16px/1 'Barlow Condensed', sans-serif; color: #fff; }
.mobile-nav__row--area.is-dentro .mobile-nav__arrow--area { background: var(--accent-red); border-color: var(--accent-red); }
/* nel piè: la riga dell'area si distingue dalle altre (bianca, non grigia) */
.footer-nav .footer-nav__area { color: #fff; font-weight: 600; }
/* la pagina dell'area: sotto la testata fissa */
.bs-pagina-area { padding-top: var(--header-height); min-height: 70vh; background: var(--bg-primary); }

/* =============================================
   IL RIQUADRO DELLA PRENOTAZIONE (/profil/?book) — 08/10/2026, B·tema-prenota
   Contratto con l'app clienti (B·prenota-riquadro): mentre la prenotazione è montata l'app mette
   `bo-riquadro` su <html>. La pagina allora sta FERMA (scorre solo l'interno del riquadro, alto
   quanto lo schermo sotto la testata: --bs-testata-h) e se ne vanno il piè di pagina e la barra in
   basso — display:none, non solo coperti: col Tab o col lettore di schermo il loro «Запази час»
   riportava la prenotazione al passo 1 (SPEC-design §1.6/§4 di _local/gesti/08-10-prenota).
   Anche il «Запази час» della testata (computer, .btn-booking-header, e menu, .btn-booking-mobile):
   al computer riportava anch'esso al passo 1 (ordine del coordinatore 08/10). Su /profil/ barra e tasti
   della testata non vengono nemmeno stampati (footer.php, header.php); la regola qui sotto vale ovunque
   l'app metta la classe. Il resto della testata (logo, EN, ВХОД, Меню) e il banner dei cookie restano come sono: il banner si chiude
   con un tocco, e main.js dice all'app quando è aperto (html.bo-consenso-aperto, --bs-banner-h).
   Dal 08/10 sera nel riquadro il banner prende la forma compatta (~97 px, consent-banner.css in fondo).
   ============================================= */
html.bo-riquadro,
html.bo-riquadro body { overflow: hidden; }
html.bo-riquadro .site-footer,
html.bo-riquadro .mbar,
html.bo-riquadro .header-cta,
html.bo-riquadro .btn-booking-header,
html.bo-riquadro .btn-booking-mobile { display: none !important; }
