/* ==========================================================
   PULSE FITNESS — дизайн-система
   Палитра: тёмный фон + акценты трассы (красный/жёлтый/зелёный)
   Дисплей: Russo One (кириллица) · Текст: Manrope · Данные: JetBrains Mono
   Сигнатура: диагональные "дорожки" стадиона (lane stripes),
   расписание в стиле табло-скорборда.
   ========================================================== */

:root{
    --bg:        #0E0F12;
    --surface:   #17181C;
    --surface-2: #1F2126;
    --line:      #2A2C33;
    --text:      #F5F5F2;
    --text-muted:#9A9DA6;

    --red:    #FF3B3B;
    --yellow: #FFC93C;
    --green:  #2FE083;

    --red-dim:    #401616;
    --yellow-dim: #3D3216;
    --green-dim:  #123322;

    --font-display: 'Russo One', 'Arial Narrow', Arial, sans-serif;
    --font-body: 'Manrope', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-mono: 'JetBrains Mono', monospace;

    --radius: 4px;
    --container: 1200px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:var(--font-body);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
button{ font-family:inherit; }

.skip-link{
    position:absolute; left:-999px; top:0; background:var(--yellow); color:#111;
    padding:10px 16px; z-index:999; font-weight:700;
}
.skip-link:focus{ left:10px; top:10px; }

.container{ max-width:var(--container); margin:0 auto; padding:0 24px; }

.eyebrow{
    font-family:var(--font-mono);
    text-transform:uppercase;
    letter-spacing:.14em;
    font-size:.75rem;
    color:var(--yellow);
    margin:0 0 10px;
    font-weight:700;
}
.eyebrow a{ color:var(--text-muted); }

.section-title{
    font-family:var(--font-display);
    font-size:clamp(1.9rem, 3.6vw, 2.8rem);
    letter-spacing:0;
    line-height:1.15;
    margin:0 0 20px;
    text-transform:uppercase;
}
.section-subtitle{
    font-family:var(--font-display);
    font-size:1.3rem;
    line-height:1.3;
    text-transform:uppercase;
    margin:0 0 16px;
}

.section{ padding:88px 0; background:var(--bg); }
.section--dark{ background:var(--surface); }
.section--accent{ background:var(--surface-2); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }

/* Focus visibility for keyboard users */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible{
    outline:2px solid var(--yellow); outline-offset:2px;
}

@media (prefers-reduced-motion: reduce){
    *{ animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

/* -------------------- Buttons -------------------- */
.btn{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    padding:14px 28px;
    font-weight:800;
    font-size:.95rem;
    text-transform:uppercase;
    letter-spacing:.03em;
    border-radius:var(--radius);
    border:2px solid transparent;
    cursor:pointer;
    transition:transform .15s ease, background .15s ease, border-color .15s ease;
}
.btn:hover{ transform:translateY(-2px); }
.btn--accent{ background:var(--red); color:#fff; }
.btn--accent:hover{ background:#ff5252; }
.btn--ghost{ border-color:var(--text); color:var(--text); background:transparent; }
.btn--ghost:hover{ border-color:var(--yellow); color:var(--yellow); }
.btn--dark{ background:var(--yellow); color:#111; }
.btn--dark:hover{ background:#ffd666; }
.btn--lg{ padding:16px 34px; font-size:1rem; }

/* -------------------- Header -------------------- */
.site-header{
    position:sticky; top:0; z-index:100;
    background:rgba(14,15,18,.9);
    backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line);
}
.site-header__inner{
    display:flex; align-items:center; justify-content:space-between;
    height:76px; gap:24px;
}
.logo{ display:flex; align-items:baseline; gap:6px; font-family:var(--font-display); font-size:1.15rem; letter-spacing:0; }
.logo__mark{ color:var(--text); }
.logo__sub{ color:var(--red); font-size:1rem; }
.logo--footer{ margin-bottom:14px; }

.main-nav{ display:flex; gap:28px; }
.main-nav a{
    font-size:.9rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em;
    color:var(--text-muted);
    position:relative; padding:6px 0;
}
.main-nav a:hover{ color:var(--text); }
.main-nav a::after{
    content:''; position:absolute; left:0; bottom:0; height:2px; width:0;
    background:var(--green); transition:width .2s ease;
}
.main-nav a:hover::after{ width:100%; }

.site-header__right{ display:flex; align-items:center; gap:18px; }
.header-phone{ font-family:var(--font-mono); font-weight:700; font-size:.95rem; white-space:nowrap; }
.header-social{ display:flex; gap:10px; }
.header-social a{
    width:32px; height:32px; border:1px solid var(--line); border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-size:.65rem; font-weight:800; font-family:var(--font-mono);
    color:var(--text-muted);
}
.header-social a:hover{ border-color:var(--yellow); color:var(--yellow); }
.header-cta{ padding:10px 20px; font-size:.8rem; }

.burger{
    display:none; flex-direction:column; justify-content:center; gap:5px;
    width:38px; height:38px; background:none; border:1px solid var(--line); border-radius:var(--radius);
}
.burger span{ display:block; height:2px; background:var(--text); margin:0 8px; }

@media (max-width: 960px){
    .header-phone, .header-social{ display:none; }
    .main-nav{
        position:fixed; inset:76px 0 auto 0; background:var(--surface);
        flex-direction:column; padding:20px 24px; gap:0; border-bottom:1px solid var(--line);
        transform:translateY(-120%); transition:transform .25s ease; max-height:calc(100vh - 76px); overflow:auto;
    }
    .main-nav.is-open{ transform:translateY(0); }
    .main-nav a{ padding:14px 0; border-bottom:1px solid var(--line); }
    .burger{ display:flex; }
}

/* -------------------- Hero -------------------- */
.hero{
    position:relative; overflow:hidden;
    min-height:88vh; display:flex; align-items:center;
    background:linear-gradient(120deg, rgba(14,15,18,.88) 0%, rgba(14,15,18,.72) 45%, rgba(14,15,18,.4) 100%), var(--surface);
}
.hero__media{
    position:absolute; inset:0; background-size:cover; background-position:center;
    filter:saturate(1.05) contrast(1.05); opacity:.6; z-index:0;
}
/* Тонкая полоса-акцент "финишная прямая" внизу экрана — фирменная деталь,
   не перекрывает фото и текст, работает с любым фоновым изображением. */
.hero__lanes{
    position:absolute; left:0; right:0; bottom:0; height:5px; z-index:2;
    display:flex; pointer-events:none;
}
.lane{ flex:1 1 0; opacity:1; }
.lane--red{ background:var(--red); }
.lane--yellow{ background:var(--yellow); }
.lane--green{ background:var(--green); }

.hero__inner{ position:relative; z-index:2; max-width:760px; }
.hero__title{
    font-family:var(--font-display);
    font-size:clamp(2.4rem, 6vw, 4.4rem);
    line-height:1.15;
    margin:0 0 20px;
    text-transform:uppercase;
    text-shadow:0 2px 20px rgba(0,0,0,.4);
}
.hero__subtitle{ font-size:1.15rem; color:var(--text-muted); max-width:520px; margin:0 0 34px; text-shadow:0 1px 12px rgba(0,0,0,.5); }
.hero__actions{ display:flex; gap:16px; flex-wrap:wrap; }

/* -------------------- About -------------------- */
.about__grid{ display:grid; grid-template-columns:1.6fr 1fr; gap:60px; align-items:start; }
.about__text p{ color:var(--text-muted); }
.about__mission{ color:var(--text) !important; font-weight:600; border-left:3px solid var(--green); padding-left:16px; }
.about__stats{ display:grid; gap:20px; }
.stat{
    background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
    padding:22px 20px; display:flex; align-items:baseline; gap:12px;
}
.stat__num{ font-family:var(--font-display); font-size:2rem; color:var(--yellow); }
.stat__label{ text-transform:uppercase; font-size:.8rem; letter-spacing:.05em; color:var(--text-muted); }

@media (max-width:860px){ .about__grid{ grid-template-columns:1fr; } }

/* -------------------- Direction cards -------------------- */
.cards-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:20px; }
.direction-card{
    display:flex; flex-direction:column; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius);
    padding:28px 24px; border-top:4px solid var(--line);
    transition:transform .18s ease, border-color .18s ease;
}
.direction-card:hover{ transform:translateY(-4px); }
.direction-card--red{ border-top-color:var(--red); }
.direction-card--yellow{ border-top-color:var(--yellow); }
.direction-card--green{ border-top-color:var(--green); }
.direction-card__icon{
    display:inline-flex; width:44px; height:44px; border-radius:50%; margin-bottom:16px;
    background:var(--surface); border:1px solid var(--line);
}
.direction-card--red .direction-card__icon{ background:var(--red-dim); }
.direction-card--yellow .direction-card__icon{ background:var(--yellow-dim); }
.direction-card--green .direction-card__icon{ background:var(--green-dim); }
.direction-card__icon{ align-items:center; justify-content:center; font-size:1.2rem; }
.direction-card__icon[data-icon="yoga"]::before{ content:'\1F9D8'; }
.direction-card__icon[data-icon="crossfit"]::before{ content:'\1F3CB'; }
.direction-card__icon[data-icon="pilates"]::before{ content:'\1F53A'; }
.direction-card__icon[data-icon="zumba"]::before{ content:'\1F483'; }
.direction-card__icon:not([data-icon="yoga"]):not([data-icon="crossfit"]):not([data-icon="pilates"]):not([data-icon="zumba"])::before{ content:'\1F4AA'; }
.direction-card__title{ font-family:var(--font-display); font-size:1.2rem; line-height:1.3; text-transform:uppercase; margin:0 0 8px; }
.direction-card__desc{ color:var(--text-muted); font-size:.92rem; margin:0 0 16px; }
.direction-card__more{ font-family:var(--font-mono); font-size:.8rem; color:var(--yellow); font-weight:700; margin-top:auto; padding-top:8px; }

/* -------------------- Schedule (signature scoreboard) -------------------- */
.schedule-scroll{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); -webkit-overflow-scrolling:touch; }
.schedule-table{ border-collapse:collapse; width:100%; min-width:760px; font-family:var(--font-mono); }
.schedule-table thead th{
    background:var(--surface-2); text-align:left; padding:14px 12px;
    text-transform:uppercase; font-size:.75rem; letter-spacing:.06em; color:var(--text-muted);
    border-bottom:1px solid var(--line); position:sticky; top:0;
}
.schedule-table__full{ display:none; }
@media (min-width:640px){
    .schedule-table__full{ display:inline; margin-left:4px; }
}
.schedule-table__time-col{ width:80px; color:var(--yellow); font-weight:700; }
.schedule-table td{ padding:8px; border-bottom:1px solid var(--line); vertical-align:top; min-width:130px; }
.schedule-table tbody td.schedule-table__time-col{ background:var(--surface); font-size:.95rem; }
.schedule-empty{ text-align:center; padding:30px; color:var(--text-muted); }

.schedule-slot{
    display:flex; flex-direction:column; gap:2px;
    background:var(--surface); border-left:3px solid var(--line);
    padding:8px 10px; border-radius:2px; font-size:.78rem;
}
.schedule-slot--red{ border-left-color:var(--red); }
.schedule-slot--yellow{ border-left-color:var(--yellow); }
.schedule-slot--green{ border-left-color:var(--green); }
.schedule-slot__title{ font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
.schedule-slot__trainer, .schedule-slot__hall{ color:var(--text-muted); font-size:.72rem; }

.schedule-hint{ font-size:.8rem; color:var(--text-muted); margin-top:10px; display:none; }
@media (max-width:640px){ .schedule-hint{ display:block; } }

/* -------------------- Trainers -------------------- */
.trainers-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:24px; }
.trainer-card{ display:block; text-align:center; }
.trainer-card__photo{
    width:100%; aspect-ratio:3/4; border-radius:var(--radius); background-color:var(--surface-2);
    background-size:cover; background-position:center; margin-bottom:14px;
    border:1px solid var(--line);
}
.trainer-card__name{ font-family:var(--font-display); font-size:1.05rem; line-height:1.3; text-transform:uppercase; margin:0 0 4px; }
.trainer-card__spec{ color:var(--text-muted); font-size:.9rem; margin:0 0 2px; }
.trainer-card__exp{ font-family:var(--font-mono); font-size:.78rem; color:var(--green); }

/* -------------------- Prices -------------------- */
.prices-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:24px; }
.price-card{
    position:relative; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius);
    padding:32px 26px; display:flex; flex-direction:column;
}
.price-card--popular{ border-color:var(--red); box-shadow:0 0 0 1px var(--red); }
.price-card__badge{
    position:absolute; top:-13px; left:26px; background:var(--red); color:#fff;
    font-size:.7rem; font-weight:800; text-transform:uppercase; padding:5px 10px; border-radius:2px;
}
.price-card__title{ font-family:var(--font-display); font-size:1.3rem; line-height:1.3; text-transform:uppercase; margin:6px 0 6px; }
.price-card__desc{ color:var(--text-muted); font-size:.88rem; margin:0 0 18px; }
.price-card__price{ display:flex; align-items:baseline; gap:10px; margin-bottom:20px; }
.price-card__old{ text-decoration:line-through; color:var(--text-muted); font-family:var(--font-mono); }
.price-card__current{ font-family:var(--font-display); font-size:1.7rem; color:var(--yellow); }
.price-card__features{ display:flex; flex-direction:column; gap:8px; margin-bottom:26px; flex-grow:1; }
.price-card__features li{ font-size:.88rem; color:var(--text); padding-left:18px; position:relative; }
.price-card__features li::before{ content:'—'; position:absolute; left:0; color:var(--green); }
.price-card__cta{ width:100%; }

/* -------------------- Promotions -------------------- */
.promo-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:20px; }
.promo-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:24px; }
.promo-card__date{ font-family:var(--font-mono); color:var(--yellow); font-size:.8rem; font-weight:700; }
.promo-card__title{ font-family:var(--font-display); font-size:1.15rem; line-height:1.3; text-transform:uppercase; margin:8px 0; }
.promo-card__desc{ color:var(--text-muted); font-size:.9rem; margin:0 0 14px; }
.promo-card__cta{ font-family:var(--font-mono); font-size:.82rem; font-weight:700; color:var(--green); }

/* -------------------- Reviews -------------------- */
.reviews-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:20px; }
.review-card{ background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius); padding:24px; }
.review-card__stars{ color:var(--yellow); letter-spacing:2px; margin-bottom:10px; }
.review-card__text{ color:var(--text); font-size:.95rem; margin:0 0 14px; }
.review-card__author{ font-family:var(--font-mono); font-size:.82rem; color:var(--text-muted); }

/* -------------------- Booking form -------------------- */
.booking__grid{ display:grid; grid-template-columns:1fr 1.1fr; gap:60px; align-items:start; }
.booking__text p{ color:var(--text-muted); max-width:380px; }
.booking-form{
    background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
    padding:30px; display:flex; flex-direction:column; gap:16px;
}
.form-row{ display:flex; flex-direction:column; gap:6px; }
.form-row--split{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-row--split > div{ display:flex; flex-direction:column; gap:6px; }
.form-row label{ font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; color:var(--text-muted); }
.form-row input, .form-row select, .form-row textarea{
    background:var(--bg); border:1px solid var(--line); border-radius:var(--radius);
    color:var(--text); padding:12px 14px; font-family:var(--font-body); font-size:.95rem;
}
.form-row input:focus, .form-row select:focus, .form-row textarea:focus{ border-color:var(--yellow); outline:none; }
.booking-form__submit{ margin-top:4px; }
.booking-form__note{ font-size:.72rem; color:var(--text-muted); margin:0; }
.booking-form__result{ font-size:.88rem; font-weight:700; margin:0; min-height:1.2em; }
.booking-form__result.is-success{ color:var(--green); }
.booking-form__result.is-error{ color:var(--red); }

@media (max-width:860px){ .booking__grid{ grid-template-columns:1fr; } }

/* -------------------- Contacts -------------------- */
.contacts__grid{ display:grid; grid-template-columns:1fr 1.2fr; gap:50px; align-items:start; }
.contacts__row{ margin:0 0 10px; color:var(--text-muted); }
.contacts__row strong{ color:var(--text); }
.contacts__map, .footer-map{ border-radius:var(--radius); overflow:hidden; border:1px solid var(--line); }
.contacts__map iframe, .footer-map iframe{ width:100%; height:100%; min-height:280px; border:0; display:block; }
@media (max-width:860px){ .contacts__grid{ grid-template-columns:1fr; } }

/* -------------------- Page hero (inner pages) -------------------- */
.page-hero{ padding-top:60px; padding-bottom:40px; border-bottom:1px solid var(--line); }
.page-hero__lead{ color:var(--text-muted); max-width:560px; }
.page-hero--red{ border-bottom-color:var(--red); }
.page-hero--yellow{ border-bottom-color:var(--yellow); }
.page-hero--green{ border-bottom-color:var(--green); }
.trainer-hero{ display:flex; align-items:center; gap:24px; flex-wrap:wrap; }
.trainer-hero__photo{
    width:96px; height:96px; border-radius:50%; background-size:cover; background-position:center;
    border:2px solid var(--line);
}
.training-single__grid{ display:grid; grid-template-columns:1.4fr 1fr; gap:50px; }
.training-single__text{ color:var(--text-muted); }
.slot-list{ display:flex; flex-direction:column; gap:10px; margin-bottom:24px; }
.slot-list li{
    display:grid; grid-template-columns:1fr auto; gap:4px 12px;
    background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
    padding:12px 14px; font-size:.85rem;
}
.slot-list__day{ font-weight:700; }
.slot-list__time{ font-family:var(--font-mono); color:var(--yellow); text-align:right; }
.slot-list__trainer{ color:var(--green); }
.slot-list__hall{ color:var(--text-muted); text-align:right; }
@media (max-width:860px){ .training-single__grid{ grid-template-columns:1fr; } }

.page-404{ text-align:center; padding:140px 0; }
.page-404 .section-title{ font-size:4.5rem; color:var(--red); }

/* -------------------- Footer -------------------- */
.site-footer{ background:var(--surface); border-top:1px solid var(--line); padding:64px 0 24px; }
.footer-grid{ display:grid; grid-template-columns:1.3fr 1fr 1fr 1.2fr; gap:40px; margin-bottom:40px; }
.footer-heading{ font-family:var(--font-display); font-size:.9rem; text-transform:uppercase; margin:0 0 14px; color:var(--text-muted); }
.footer-col a{ display:block; padding:5px 0; color:var(--text-muted); font-size:.9rem; }
.footer-col a:hover{ color:var(--yellow); }
.footer-address, .footer-hours{ color:var(--text-muted); font-size:.9rem; margin:4px 0; }
.footer-social{ display:flex; gap:14px; margin-top:10px; }
.footer-map iframe{ min-height:160px; }
.footer-bottom{
    border-top:1px solid var(--line); padding-top:20px;
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px;
    font-size:.78rem; color:var(--text-muted);
}
@media (max-width:860px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .footer-grid{ grid-template-columns:1fr; } }

.scroll-top{
    position:fixed; right:20px; bottom:20px; width:44px; height:44px; border-radius:50%;
    background:var(--yellow); color:#111; border:none; font-size:1.2rem; font-weight:700; cursor:pointer;
    display:none; align-items:center; justify-content:center; z-index:90;
    box-shadow:0 4px 14px rgba(0,0,0,.4);
}
.scroll-top.is-visible{ display:flex; }
