/* ============================================================================
   RTSHOR PUBLIC — the Showroom stylesheet (Agent-T lane, M1).
   Design source: _project-docs/design/BADMINTON-EUROPE-FRAMEWORK.md (+ RTSHOR-Design-Spec §2–§7). Sections 16–24 = T2 depth pages.
   Palette: rtshor-brand.css (UTF blue-led, yellow/green accents). Font: Poppins only.
   Mobile-first · light default + dark · no Bootstrap · no FontAwesome.
   Breakpoints 576 / 768 / 1024 / 1280 · rhythm 56 / 88 / 112 (48 mobile) · container min(1280px, 92%).
   ========================================================================= */

/* ── 0 · TRILINGUAL RU · UZ · EN (AGTA pattern, HL-4/HL-5): hide the two INACTIVE languages only,
      scoped to html[data-lang] so the selector can never match <html lang> and blank the page.
      NEVER a blanket [lang] hide (HL-4).

      Grown from two rules to three on 2026-10-07 (Owner override of the Agent-T relay: Uzbek must be
      visible EVERYWHERE, the Showroom included). Uzbek is the NEW government alphabet (ö ğ ş ç).
      !important because the rule must never lose a specificity race to anything added later —
      an inactive language leaking is a page showing two languages at once. */
html[data-lang="ru"] [lang="uz"], html[data-lang="ru"] [lang="en"] { display: none !important; }
html[data-lang="uz"] [lang="ru"], html[data-lang="uz"] [lang="en"] { display: none !important; }
html[data-lang="en"] [lang="ru"], html[data-lang="en"] [lang="uz"] { display: none !important; }

/* ── 1 · Tokens ─────────────────────────────────────────────────────────── */
:root {
    --rt-font:        'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
    --rt-bg:          #ffffff;
    --rt-bg-alt:      var(--rt-surface-tint);
    --rt-card:        #ffffff;
    --rt-text:        #10222E;
    --rt-muted:       #4E6470;
    --rt-line:        rgba(var(--rt-brand-ink-rgb), .12);
    --rt-shadow:      0 4px 20px rgba(var(--rt-brand-ink-rgb), .08);
    --rt-shadow-lg:   0 18px 48px rgba(var(--rt-brand-ink-rgb), .16);
    --rt-r:           16px;
    --rt-r-sm:        8px;
    --rt-r-pill:      999px;
    --rt-header:      72px;
    --rt-sec:         88px;
    --rt-sec-lg:      112px;
    --rt-ease:        cubic-bezier(.2, .7, .2, 1);
    --rt-glass:       rgba(var(--rt-brand-ink-rgb), .55);
    --rt-ink-on:      #ffffff;
}
:root[data-theme="dark"] {
    --rt-bg:          #0A1620;
    --rt-bg-alt:      #151A2B;
    --rt-card:        #122434;
    --rt-text:        #E8F1F7;
    --rt-muted:       #9FB6C4;
    --rt-line:        rgba(255, 255, 255, .12);
    --rt-shadow:      0 4px 20px rgba(0, 0, 0, .35);
    --rt-shadow-lg:   0 18px 48px rgba(0, 0, 0, .5);
    --rt-glass:       rgba(11, 15, 28, .7);
}

/* ── 2 · Base ───────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
html:has(.rt-nav:not([hidden])) { overflow: hidden; }
body.rt-body {
    margin: 0; overflow-x: clip;
    font-family: var(--rt-font); font-size: 16px; line-height: 1.6; color: var(--rt-text);
    background: var(--rt-bg); -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
button { font: inherit; color: inherit; }
h1, h2, h3, p, ul { margin: 0; }
ul { padding: 0; list-style: none; }
address { font-style: normal; }
:focus-visible { outline: 3px solid var(--rt-yellow); outline-offset: 3px; }
.rt-wrap { width: min(1280px, 92%); margin-inline: auto; }
.rt-ic { width: 1.25em; height: 1.25em; flex: none; vertical-align: -.3em; }

.rt-skip {
    position: absolute; left: 12px; top: -80px; z-index: 200; padding: 10px 16px;
    background: var(--rt-yellow); color: var(--rt-brand-ink); font-weight: 600; border-radius: var(--rt-r-sm);
    text-decoration: none; transition: top .2s;
}
.rt-skip:focus { top: 12px; }

/* ── 3 · Buttons ────────────────────────────────────────────────────────── */
.rt-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
    min-height: 44px; padding: 10px 22px; border-radius: var(--rt-r-pill); border: 2px solid transparent;
    font-weight: 600; font-size: .95rem; text-decoration: none; cursor: pointer; white-space: nowrap;
    transition: transform .2s var(--rt-ease), background .2s, color .2s, box-shadow .2s;
}
.rt-btn:hover { transform: translateY(-2px); }
.rt-btn:active { transform: translateY(0); }
.rt-btn--lg { min-height: 52px; padding: 12px 30px; font-size: 1.05rem; }
.rt-btn--block { width: 100%; }
.rt-btn--yellow { background: var(--rt-yellow); color: var(--rt-brand-ink); }
.rt-btn--yellow:hover { background: var(--rt-yellow-deep); box-shadow: 0 8px 24px rgba(var(--rt-yellow-rgb), .35); }
.rt-btn--green { background: var(--rt-green); color: #fff; }
.rt-btn--green:hover { background: var(--rt-green-deep); box-shadow: 0 8px 24px rgba(var(--rt-green-rgb), .3); }
.rt-btn--outline { background: transparent; color: var(--rt-brand-deep); border-color: var(--rt-brand); }
.rt-btn--outline:hover { background: var(--rt-brand); color: #fff; }
.rt-btn--ghost { background: transparent; color: inherit; border-color: currentColor; }
.rt-btn--ghost:hover { background: rgba(255, 255, 255, .12); }
.rt-btn--glass { background: rgba(255, 255, 255, .14); color: #fff; border-color: rgba(255, 255, 255, .5); backdrop-filter: blur(8px); }
.rt-btn--glass:hover { background: rgba(255, 255, 255, .26); }
:root[data-theme="dark"] .rt-btn--outline { color: var(--rt-brand); }

.rt-iconbtn {
    display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px;
    border-radius: 50%; border: 0; background: rgba(255, 255, 255, .12); color: inherit; cursor: pointer;
    transition: background .2s, transform .2s;
}
.rt-iconbtn:hover { background: rgba(255, 255, 255, .24); transform: scale(1.05); }
.rt-iconbtn--light { background: rgba(255, 255, 255, .16); color: #fff; }
.rt-iconbtn .rt-ic { width: 22px; height: 22px; }
.rt-when-dark { display: none; }
:root[data-theme="dark"] .rt-when-dark { display: block; }
:root[data-theme="dark"] .rt-when-light { display: none; }

/* ── 4 · Header (transparent over hero → glass on scroll) ───────────────── */
.rt-header {
    position: fixed; inset: 0 0 auto 0; z-index: 100; color: #fff;
    background: transparent; transition: background .35s, backdrop-filter .35s, box-shadow .35s;
}
.rt-header.is-scrolled, .rt-header.is-solid {
    background: var(--rt-glass); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px);
    box-shadow: 0 2px 20px rgba(0, 0, 0, .18);
}
.rt-header__in {
    width: min(1280px, 92%); margin-inline: auto; min-height: var(--rt-header);
    display: flex; align-items: center; gap: 12px;
}
.rt-brand { display: flex; align-items: center; gap: 10px; text-decoration: none; min-width: 0; }
/* T3 lockup: the round phoenix mark (cut from the stadium emblem) on a thin white ring — reads on the transparent hero AND the glass bar */
.rt-brand__mark { flex: none; width: 46px; height: 46px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 2px rgba(255, 255, 255, .92), 0 2px 8px rgba(0, 0, 0, .25); }
.rt-brand__text { display: flex; flex-direction: column; line-height: 1.15; min-width: 0; }
.rt-brand__name { font-weight: 700; font-size: 1.05rem; letter-spacing: .08em; }
.rt-brand__sub { font-size: .7rem; opacity: .85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-brand__sub--long { display: none; }
.rt-header__links { display: none; }
.rt-header__tools { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.rt-header__login { display: none; padding: 8px 16px; min-height: 40px; }
/* ── 4b · ONE-FLAG LANGUAGE PICKER (Owner 2026-10-07) ────────────────────────
   Replaces the three-button RU|UZ|EN strip: just the CURRENT language's flag, and the other two on
   hover or click. Markup = Modules/Public/Views/v1/partials/lang_picker.php; behaviour =
   assets/js/lang-picker.js. The admin sheet carries the same block against the same class names —
   one component, one idiom per zone's tokens (HL-6: rt-lp* is this component's own namespace).
   The flags are inline SVG, never emoji: Windows has no flag glyphs and prints "RU" instead. */
.rt-lp { position: relative; display: inline-block; padding-bottom: 4px; }
.rt-lp__btn {
    display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 5px 9px;
    border: 1.5px solid rgba(255, 255, 255, .55); border-radius: var(--rt-r-pill);
    background: transparent; color: inherit; font: inherit; cursor: pointer;
}
.rt-header.is-solid .rt-lp__btn,
.rt-header.is-scrolled .rt-lp__btn { border-color: var(--rt-line); }
.rt-lp__cur { display: none; align-items: center; gap: 6px; }
/* CLOSED = exactly one flag in the layout. The other two wrappers are not rendered at all, so they
   cannot be measured, read aloud or tabbed to. */
html[data-lang="ru"] .rt-lp__cur[data-lp-cur="ru"],
html[data-lang="uz"] .rt-lp__cur[data-lp-cur="uz"],
html[data-lang="en"] .rt-lp__cur[data-lp-cur="en"] { display: inline-flex; }
.rt-lp__code { font-weight: 700; font-size: .78rem; letter-spacing: .06em; }
.rt-lp__flag { display: inline-flex; }
.rt-lp__svg { display: block; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0, 0, 0, .28); }
.rt-lp__caret { flex: none; opacity: .75; transition: transform .15s var(--rt-ease); }
.rt-lp.is-open .rt-lp__caret { transform: rotate(180deg); }
/* CLOSED is the default and it is declared here, not left to the UA's [hidden] rule: a class with
   `display:flex` out-ranks `[hidden]{display:none}`, which is exactly how the menu first shipped
   permanently open (the gate's flag-picker check caught it: 3 flags visible while closed). */
.rt-lp__menu {
    position: absolute; top: 100%; right: 0; z-index: 200; min-width: 92px;
    display: none; flex-direction: column; gap: 2px; padding: 5px;
    background: var(--rt-card); color: var(--rt-text);
    border: 1px solid var(--rt-line); border-radius: var(--rt-r-sm); box-shadow: var(--rt-shadow-lg);
}
.rt-lp__opt {
    display: flex; align-items: center; gap: 7px; width: 100%; min-height: 40px; padding: 6px 9px;
    border: 0; border-radius: var(--rt-r-sm); background: transparent; color: inherit; font: inherit;
    cursor: pointer; text-align: left;
}
.rt-lp__opt:hover, .rt-lp__opt:focus-visible { background: var(--rt-bg-alt); }
/* OPEN = the OTHER TWO: the option for the language already showing is hidden, so the menu never
   offers the user what they are already reading (Owner: "the other two flags"). */
.rt-lp.is-open .rt-lp__menu { display: flex; }
.rt-lp__menu[hidden] { display: none; }
html[data-lang="ru"] .rt-lp__opt[data-lang-btn="ru"],
html[data-lang="uz"] .rt-lp__opt[data-lang-btn="uz"],
html[data-lang="en"] .rt-lp__opt[data-lang-btn="en"] { display: none; }

/* ── 5 · Full-screen nav overlay ────────────────────────────────────────── */
.rt-nav {
    position: fixed; inset: 0; z-index: 150; display: flex; flex-direction: column;
    background: linear-gradient(160deg, var(--rt-brand-ink) 0%, var(--rt-brand-deep) 100%); color: #fff;
    padding: 12px 4% max(24px, env(safe-area-inset-bottom)); overflow-y: auto;
    animation: rt-fade .25s var(--rt-ease);
}
.rt-nav[hidden] { display: none; }
.rt-nav__top { display: flex; align-items: center; justify-content: space-between; min-height: var(--rt-header); }
.rt-nav__title { font-weight: 700; letter-spacing: .12em; text-transform: uppercase; font-size: .85rem; opacity: .8; }
.rt-nav__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 8px 0 24px; }
.rt-nav__card {
    display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 10px;
    min-height: 120px; padding: 18px; border-radius: var(--rt-r); text-decoration: none;
    background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18);
    animation: rt-rise .4s var(--rt-ease) both; animation-delay: calc(var(--i) * 45ms);
    transition: background .2s, transform .2s;
}
.rt-nav__card:hover { background: var(--rt-yellow); color: var(--rt-brand-ink); transform: translateY(-3px); }
.rt-nav__ic { width: 30px; height: 30px; }
.rt-nav__label { font-weight: 600; font-size: 1.05rem; }
.rt-nav__foot { margin-top: auto; display: flex; flex-direction: column; gap: 10px; }
.rt-nav__staff { text-align: center; font-size: .85rem; opacity: .7; margin-top: 6px; padding: 10px; }

@keyframes rt-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes rt-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* ── 6 · Hero slider ────────────────────────────────────────────────────── */
.rt-hero {
    position: relative; min-height: 100svh; display: flex; flex-direction: column; justify-content: flex-end;
    color: #fff; background: var(--rt-brand-ink); isolation: isolate;
}
.rt-hero__bg { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.rt-slide-bg {
    position: absolute; inset: 0; opacity: 0; transition: opacity 1.1s ease, transform 8s linear;
    background-size: cover; background-position: center; transform: scale(1.06);
}
.rt-slide-bg[data-noimg] { background: var(--rt-hero-grad); }
.rt-slide-bg.is-active { opacity: 1; transform: scale(1); }
.rt-hero__scrim {
    position: absolute; inset: 0;
    /* Brand-ink tint over every photo (readable white text + yellow CTA on any picture) + bottom fade into the ink stats band. */
    background: linear-gradient(180deg, rgba(var(--rt-brand-ink-rgb), .55) 0%, rgba(var(--rt-brand-ink-rgb), .5) 40%, rgba(var(--rt-brand-ink-rgb), .82) 75%, var(--rt-brand-ink) 100%);
}
/* All slide bodies share one grid cell so the hero is as tall as the tallest, and nothing overlaps the controls. */
.rt-hero__body { display: grid; padding: calc(var(--rt-header) + 32px) 0 16px; }
.rt-slide { grid-area: 1 / 1; opacity: 0; visibility: hidden; transition: opacity .9s ease, visibility 0s .9s; }
.rt-slide.is-active { opacity: 1; visibility: visible; transition: opacity .9s ease; }
.rt-kicker {
    display: inline-flex; align-items: center; gap: .5em; margin-bottom: 12px;
    color: var(--rt-yellow); font-weight: 600; font-size: .8rem; letter-spacing: .14em; text-transform: uppercase;
}
.rt-kicker__year { padding: 2px 10px; border: 1.5px solid currentColor; border-radius: var(--rt-r-pill); letter-spacing: .06em; }
.rt-kicker--ink { color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-kicker--ink { color: var(--rt-brand); }
.rt-slide__title {
    font-size: clamp(2.2rem, 8vw, 5.5rem); line-height: .98; font-weight: 700; text-transform: uppercase;
    letter-spacing: -.01em; max-width: 14ch; text-wrap: balance;
}
.rt-slide__line { margin-top: 16px; max-width: 58ch; font-size: 1rem; line-height: 1.55; opacity: .92; text-wrap: pretty; }
.rt-slide.is-active .rt-kicker, .rt-slide.is-active .rt-slide__title, .rt-slide.is-active .rt-slide__line {
    animation: rt-rise .7s var(--rt-ease) both;
}
.rt-slide.is-active .rt-slide__title { animation-delay: .1s; }
.rt-slide.is-active .rt-slide__line { animation-delay: .22s; }

.rt-hero__controls { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 8px 0; position: relative; }
.rt-hero__dots { display: flex; gap: 6px; }
.rt-hero__dots button {
    width: 32px; height: 44px; padding: 0; border: 0; background: transparent; cursor: pointer;
    display: grid; place-items: center; border-radius: 50%;
}
.rt-hero__dots button span { display: block; width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 255, 255, .45); transition: width .3s, background .3s; }
.rt-hero__dots button[aria-selected="true"] span { width: 28px; border-radius: var(--rt-r-pill); background: var(--rt-yellow); }
.rt-hero__arrows { display: flex; gap: 8px; }
.rt-hero__cta { display: flex; flex-wrap: wrap; gap: 10px; padding: 8px 0 56px; position: relative; }
.rt-hero__cta .rt-btn { flex: 1 1 auto; }
.rt-hero__scroll {
    position: absolute; right: 4%; bottom: 8px; width: 44px; height: 44px; display: none; place-items: center; color: rgba(255, 255, 255, .7);
    animation: rt-bob 2s ease-in-out infinite;
}
@keyframes rt-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(6px); } }

/* ── 7 · Stats band (ink photo band, yellow rules) ──────────────────────── */
.rt-stats { background: var(--rt-brand-ink); color: #fff; padding: 40px 0; border-top: 4px solid var(--rt-yellow); }
.rt-stats__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 12px; }
.rt-stat { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; padding: 8px 0; border-left: 2px solid rgba(var(--rt-yellow-rgb), .35); }
.rt-stat__v { font-size: clamp(2.2rem, 7vw, 3.6rem); font-weight: 700; line-height: 1; color: var(--rt-yellow); }
.rt-stat__l { font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; opacity: .85; }

/* ── 8 · Facility banners ───────────────────────────────────────────────── */
.rt-facility { padding: 48px 0; scroll-margin-top: var(--rt-header); }
.rt-facility--left { background: var(--rt-bg-alt); } /* alternate by side, not by sibling index — survives new sections (T2) */
.rt-facility__in { display: grid; gap: 24px; align-items: center; }
.rt-facility__media {
    position: relative; aspect-ratio: 4 / 3; border-radius: var(--rt-r); overflow: hidden;
    background-size: cover; background-position: center; box-shadow: var(--rt-shadow-lg);
    display: grid; place-items: center; color: rgba(255, 255, 255, .55);
}
.rt-facility__media[data-noimg] { background: var(--rt-hero-grad); }
.rt-facility__media[data-noimg][data-fac="courts"]  { background: linear-gradient(135deg, #B3541E 0%, #E07A3F 100%); }
.rt-facility__media[data-noimg][data-fac="hotel"]   { background: linear-gradient(135deg, var(--rt-brand-ink) 0%, var(--rt-brand) 100%); }
.rt-facility__media[data-noimg][data-fac="gym"]     { background: linear-gradient(135deg, #1B2A33 0%, #3C5A6B 100%); }
.rt-facility__media[data-noimg][data-fac="academy"] { background: linear-gradient(135deg, var(--rt-green-deep) 0%, var(--rt-green) 100%); }
.rt-facility__media[data-noimg][data-fac="cafe"]    { background: linear-gradient(135deg, #5A3E2B 0%, #A8733E 100%); }
.rt-facility__ph { width: 96px; height: 96px; stroke-width: 1.2; }
.rt-h2 { font-size: clamp(1.75rem, 5.5vw, 2.75rem); line-height: 1.1; font-weight: 700; letter-spacing: -.01em; text-wrap: balance; }
.rt-h3 { font-size: 1.25rem; font-weight: 600; display: flex; align-items: center; gap: .5em; }
.rt-lede { margin-top: 14px; font-size: 1.05rem; color: var(--rt-muted); text-wrap: pretty; }
.rt-facts { margin: 18px 0 24px; display: flex; flex-direction: column; gap: 8px; }
.rt-facts li { display: flex; align-items: flex-start; gap: 10px; }
.rt-facts__ic { color: var(--rt-green); margin-top: .2em; }
.rt-facts--tight { margin: 16px 0 20px; font-size: .95rem; }
.rt-facility__btns { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; }
.rt-more { display: inline-flex; align-items: center; gap: .3em; min-height: 44px; font-weight: 600; color: var(--rt-brand-deep); text-decoration: none; }
.rt-more:hover { text-decoration: underline; }
:root[data-theme="dark"] .rt-more { color: var(--rt-brand); }

/* ── 9 · Membership ─────────────────────────────────────────────────────── */
.rt-membership { padding: 56px 0; background: var(--rt-bg-alt); scroll-margin-top: var(--rt-header); }
.rt-sechead { text-align: center; max-width: 62ch; margin: 0 auto 32px; }
.rt-sechead .rt-kicker { justify-content: center; }
.rt-tiers { display: grid; gap: 16px; }
.rt-tier {
    position: relative; background: var(--rt-card); border-radius: var(--rt-r); padding: 28px 24px 24px;
    box-shadow: var(--rt-shadow); border: 1px solid var(--rt-line); display: flex; flex-direction: column;
    transition: transform .25s var(--rt-ease), box-shadow .25s;
}
.rt-tier:hover { transform: translateY(-4px); box-shadow: var(--rt-shadow-lg); }
.rt-tier.is-popular { border: 2px solid var(--rt-yellow); }
.rt-tier__pill {
    position: absolute; top: -14px; left: 24px; background: var(--rt-yellow); color: var(--rt-brand-ink);
    font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    padding: 5px 12px; border-radius: var(--rt-r-pill);
}
.rt-tier__name { font-size: 1.35rem; font-weight: 700; }
.rt-tier__who { color: var(--rt-muted); font-size: .9rem; }
.rt-tier__price { margin-top: 14px; display: flex; flex-direction: column; }
.rt-tier__num { font-size: 2rem; font-weight: 700; line-height: 1.1; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-tier__num { color: var(--rt-brand); }
.rt-tier__cur { font-size: .85rem; color: var(--rt-muted); }
.rt-tier .rt-btn--block { margin-top: auto; }

.rt-gymplans { margin-top: 40px; }
.rt-gymplans__row { margin-top: 14px; display: grid; gap: 10px; }
.rt-gymplan {
    background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r-sm); padding: 14px 16px;
    display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; align-items: baseline;
}
.rt-gymplan__name { font-weight: 600; }
.rt-gymplan__price { font-weight: 700; color: var(--rt-brand-deep); text-align: right; white-space: nowrap; }
:root[data-theme="dark"] .rt-gymplan__price { color: var(--rt-brand); }
.rt-gymplan__price small { font-weight: 500; font-size: .8em; color: var(--rt-muted); }
.rt-gymplan__per { grid-column: 1 / -1; font-size: .85rem; color: var(--rt-muted); }
.rt-gymplan--pass { border-style: dashed; }
.rt-rates { margin-top: 28px; display: flex; gap: 10px; align-items: flex-start; font-size: .95rem; color: var(--rt-muted); }
.rt-rates .rt-ic { color: var(--rt-brand); margin-top: .15em; }

/* ── 10 · Contact ───────────────────────────────────────────────────────── */
.rt-contact { background: var(--rt-hero-grad); color: #fff; padding: 56px 0; scroll-margin-top: var(--rt-header); }
.rt-contact__in { display: grid; gap: 28px; align-items: center; grid-template-areas: "text" "form" "map"; }
.rt-contact__text { grid-area: text; }
.rt-contact__form { grid-area: form; }
.rt-contact__map { grid-area: map; }
.rt-contact__addr { margin-top: 18px; display: flex; flex-direction: column; gap: 6px; font-size: 1.02rem; }
.rt-contact__addr strong { font-size: 1.1rem; }
.rt-contact__addr span { opacity: .92; }
.rt-contact__actions { margin-top: 24px; display: flex; flex-wrap: wrap; gap: 10px; }
.rt-contact__map {
    position: relative; aspect-ratio: 4 / 3; border-radius: var(--rt-r); overflow: hidden;
    background:
        linear-gradient(rgba(255, 255, 255, .06) 1px, transparent 1px) 0 0 / 40px 40px,
        linear-gradient(90deg, rgba(255, 255, 255, .06) 1px, transparent 1px) 0 0 / 40px 40px,
        radial-gradient(circle at 50% 50%, rgba(var(--rt-yellow-rgb), .18), transparent 55%), rgba(0, 0, 0, .18);
    display: grid; place-items: center; border: 1px solid rgba(255, 255, 255, .18);
}
.rt-contact__maplabel {
    position: absolute; top: 12px; right: 12px; background: rgba(255, 255, 255, .92); color: var(--rt-brand-ink);
    padding: 6px 12px; border-radius: var(--rt-r-sm); font-weight: 600; font-size: .85rem;
}
/* Contact form card (T4 — Owner ask 2026-09-29; backend seam in partials/contact_form.php) */
.rt-cform {
    background: var(--rt-card); color: var(--rt-text); border-radius: var(--rt-r); padding: 24px 20px;
    box-shadow: var(--rt-shadow-lg); display: flex; flex-direction: column; gap: 14px;
}
.rt-cform__h3 { font-size: 1.3rem; font-weight: 700; line-height: 1.2; }
.rt-cform__sub { color: var(--rt-muted); margin-top: -6px; font-size: .95rem; text-wrap: pretty; }
.rt-cform .rt-form { gap: 14px; }
.rt-input--area { min-height: 128px; resize: vertical; line-height: 1.5; }
.rt-input.is-invalid { border-color: #B3261E; box-shadow: 0 0 0 3px rgba(214, 48, 49, .15); }
.rt-cform__err { margin: -2px 0; }
.rt-cform__note { display: flex; gap: 8px; align-items: flex-start; font-size: .85rem; color: var(--rt-muted); margin-top: -4px; }
.rt-cform__note .rt-ic { flex: 0 0 18px; width: 18px; height: 18px; margin-top: .15em; color: var(--rt-yellow-deep); }
.rt-btn:disabled, .rt-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; box-shadow: none; transform: none; }
.rt-btn.is-busy { pointer-events: none; }

/* "Rates are set by the club" line under every price block (T3) */
.rt-ratesnote { display: flex; align-items: flex-start; gap: .5em; margin-top: 22px; font-size: .85rem; color: var(--rt-muted, #4E6470); }
.rt-ratesnote .rt-ic { flex: 0 0 18px; width: 18px; height: 18px; margin-top: .1em; color: var(--rt-green); }

/* ── 11 · Footer ─────────────────────────────────────────────────────────── */
.rt-footer { font-size: .92rem; }
.rt-footer__logos { background: #fff; color: var(--rt-brand-ink); padding: 28px 0; border-top: 1px solid var(--rt-line); }
.rt-footer__logos-in { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px; }
.rt-footer__emblem { width: 200px; height: auto; }
.rt-footer__org { display: flex; flex-direction: column; gap: 2px; }
.rt-footer__org span { color: #4E6470; font-size: .85rem; }
/* UTF = development partner (Owner 2026-09-28): a small mono mark + one line, under the stadium emblem */
.rt-footer__partner { display: inline-flex; align-items: center; gap: 10px; margin-top: 6px; padding: 6px 14px 6px 6px; border: 1px solid var(--rt-line); border-radius: var(--rt-r-pill); color: #4E6470; font-size: .8rem; }
.rt-footer__partner img { width: 40px; height: 24px; object-fit: contain; border-radius: 6px; }
.rt-footer__follow { background: var(--rt-brand); color: #fff; padding: 14px 0; }
.rt-footer__follow-in { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; font-weight: 500; }
.rt-footer__follow a { display: inline-flex; align-items: center; gap: .3em; text-decoration: none; font-weight: 600; }
.rt-footer__links { background: var(--rt-brand-deep); color: #fff; padding: 36px 0; }
.rt-footer__cols { display: grid; gap: 28px; }
.rt-footer__cols h3 { font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; color: var(--rt-yellow); margin-bottom: 10px; }
.rt-footer__cols a { display: block; text-decoration: none; padding: 10px 0; opacity: .9; }
.rt-footer__cols a:hover { opacity: 1; text-decoration: underline; }
.rt-footer__soon { opacity: .85; margin-bottom: 10px; }
.rt-apps { display: flex; flex-wrap: wrap; gap: 8px; }
.rt-app {
    display: inline-flex; align-items: center; min-height: 40px; padding: 6px 14px; border-radius: var(--rt-r-sm);
    background: rgba(0, 0, 0, .25); border: 1px dashed rgba(255, 255, 255, .45); font-weight: 600; font-size: .85rem; opacity: .75;
}
.rt-footer__legal { background: var(--rt-brand-ink); color: #fff; padding: 16px 0; }
.rt-footer__legal-in { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px 16px; font-size: .8rem; opacity: .9; }
.rt-demo { background: var(--rt-yellow); color: var(--rt-brand-ink); font-weight: 700; padding: 3px 10px; border-radius: var(--rt-r-pill); opacity: 1; }
:root[data-theme="dark"] .rt-footer__logos { background: #151A2B; color: #E8F1F7; }
:root[data-theme="dark"] .rt-footer__logos img { background: #fff; padding: 8px 12px; border-radius: 10px; }
:root[data-theme="dark"] .rt-footer__org span { color: #9FB6C4; }

/* ── 12 · Breakpoints (mobile-first up) ─────────────────────────────────── */
@media (min-width: 576px) {
    .rt-stats__grid { grid-template-columns: repeat(4, 1fr); }
    .rt-hero__cta .rt-btn { flex: 0 0 auto; }
    .rt-gymplans__row { grid-template-columns: 1fr 1fr; }
    .rt-footer__logos-in { flex-direction: row; text-align: left; }
}
@media (min-width: 768px) {
    :root { --rt-sec: 88px; }
    .rt-header__login { display: inline-flex; }
    .rt-facility { padding: var(--rt-sec) 0; }
    .rt-facility__in { grid-template-columns: 1fr 1fr; gap: 48px; }
    .rt-facility--left .rt-facility__media { order: 2; }
    .rt-membership, .rt-contact { padding: var(--rt-sec) 0; }
    .rt-tiers { grid-template-columns: repeat(3, 1fr); }
    .rt-tier.is-popular { transform: translateY(-8px); }
    .rt-tier.is-popular:hover { transform: translateY(-12px); }
    .rt-gymplans__row { grid-template-columns: repeat(4, 1fr); }
    .rt-contact__in { grid-template-columns: 1fr 1fr; grid-template-areas: "text form" "map form"; gap: 40px 48px; align-items: start; }
    .rt-cform { padding: 28px 26px 26px; }
    .rt-footer__cols { grid-template-columns: repeat(4, 1fr); }
    .rt-hero__scroll { display: grid; }
    .rt-slide__line { font-size: 1.15rem; }
    .rt-hero__cta { padding-bottom: 72px; }
    .rt-stats { padding: 56px 0; }
    .rt-nav__grid { grid-template-columns: repeat(3, 1fr); gap: 16px; max-width: 980px; margin-inline: auto; width: 100%; }
    .rt-nav__card { min-height: 160px; padding: 24px; }
    .rt-nav__foot { flex-direction: row; justify-content: center; align-items: center; flex-wrap: wrap; }
    .rt-nav__staff { width: 100%; }
}
@media (min-width: 1024px) {
    .rt-form__grid--2 { grid-template-columns: 1fr 1fr; } /* contact name + mobile side by side (card ≥ 560px) */
    .rt-header__links { display: flex; gap: 4px; margin-left: 24px; }
    .rt-header__links a {
        text-decoration: none; font-weight: 500; font-size: .92rem; padding: 8px 12px; border-radius: var(--rt-r-pill);
        transition: background .2s;
    }
    .rt-header__links a:hover { background: rgba(255, 255, 255, .14); }
    .rt-burger { display: none; }
    .rt-hero__controls { padding: 12px 0; }
    .rt-hero__dots button { width: 44px; }
    .rt-facility { padding: var(--rt-sec-lg) 0; }
    .rt-facility__in { gap: 72px; }
    .rt-membership { padding: var(--rt-sec-lg) 0; }
    .rt-tiers { gap: 24px; }
}
@media (min-width: 1280px) {
    .rt-slide__title { font-size: clamp(3rem, 6vw, 5.5rem); }
}
@media (max-width: 767.98px) {
    :root { --rt-header: 64px; }
    .rt-brand__mark { width: 40px; height: 40px; }
}
@media (min-width: 768px) {
    .rt-brand__sub--long { display: block; white-space: normal; max-width: 250px; font-size: .66rem; line-height: 1.2; } /* wraps to two lines under the name, never ellipsises the school's name */
    .rt-brand__sub--short { display: none; }
}

/* ── 13 · Motion & print ────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; }
    .rt-slide__img { transform: none; }
}
@media print {
    .rt-header, .rt-nav, .rt-hero__controls, .rt-hero__scroll { display: none !important; }
    .rt-hero { min-height: auto; }
}

/* ── 14 · Auth (login / register — AITA-drift split, spec §7) ──────────── */
.rt-auth { padding: calc(var(--rt-header) + 24px) 0 56px; background: var(--rt-bg-alt); min-height: 100svh; display: flex; align-items: center; }
.rt-auth__in { display: grid; grid-template-columns: 1fr; gap: 0; border-radius: var(--rt-r); overflow: hidden; box-shadow: var(--rt-shadow); border: 1px solid var(--rt-line); }
.rt-auth__panel { background: var(--rt-hero-grad, linear-gradient(135deg, var(--rt-brand-ink), var(--rt-brand-deep))); color: #fff; padding: 28px 24px; position: relative; overflow: hidden; }
.rt-auth__panel::after { content: ""; position: absolute; inset: auto -60px -60px auto; width: 220px; height: 220px; border-radius: 50%; background: var(--rt-yellow); opacity: .12; pointer-events: none; }
.rt-auth__panel-in { position: relative; display: flex; flex-direction: column; gap: 14px; }
.rt-auth__panel .rt-kicker { color: var(--rt-yellow); }
.rt-auth__h1 { font-size: clamp(1.7rem, 5vw, 2.4rem); line-height: 1.1; font-weight: 700; letter-spacing: -.01em; }
.rt-auth__lede { opacity: .9; text-wrap: pretty; }
.rt-auth__steps { list-style: none; display: none; gap: 12px; margin-top: 4px; } /* steps shown from 900px — mobile keeps the form near the top */
.rt-auth__steps li { display: flex; gap: 12px; align-items: flex-start; line-height: 1.45; }
.rt-auth__brand { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; font-size: .8rem; line-height: 1.25; opacity: .95; }
.rt-auth__brand img { flex: none; width: 56px; height: 56px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 2px rgba(255, 255, 255, .9); }
.rt-auth__brand span { display: flex; flex-direction: column; gap: 2px; }
.rt-auth__brand strong { font-size: 1rem; letter-spacing: .08em; }
.rt-auth__num { flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%; background: var(--rt-yellow); color: var(--rt-brand-ink); font-weight: 700; display: grid; place-items: center; font-size: .9rem; }
.rt-auth__apps { margin-top: 8px; padding-top: 16px; border-top: 1px solid rgba(255, 255, 255, .2); }
.rt-auth__soon { font-size: .85rem; opacity: .85; margin-bottom: 10px; }
.rt-auth__apps .rt-app small { margin-left: 8px; font-weight: 500; opacity: .8; }
.rt-auth__card { background: var(--rt-card); padding: 28px 24px 24px; display: flex; flex-direction: column; gap: 14px; }
.rt-auth__h2 { font-size: 1.35rem; font-weight: 700; margin-top: 4px; }
.rt-auth__sub { color: var(--rt-muted); margin-top: -8px; }
.rt-auth__alt { color: var(--rt-muted); font-size: .95rem; text-align: center; margin-top: 4px; }
.rt-auth__alt a, .rt-form__link { color: var(--rt-brand-deep); font-weight: 600; text-decoration: none; }
.rt-auth__alt a { display: inline-block; padding: 10px 2px; margin: -10px -2px; } /* "Register" link: 40px thumb target without moving the line (T11 explorer) */
.rt-auth__alt a:hover, .rt-form__link:hover { text-decoration: underline; }
.rt-auth__recover { display: flex; gap: 10px; align-items: flex-start; font-size: .85rem; color: var(--rt-muted); background: var(--rt-bg-alt); border-radius: var(--rt-r-sm); padding: 12px 14px; }
.rt-auth__recover .rt-ic { flex: 0 0 20px; width: 20px; height: 20px; margin-top: 2px; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-auth__alt a, :root[data-theme="dark"] .rt-form__link, :root[data-theme="dark"] .rt-auth__recover .rt-ic { color: var(--rt-brand); }

.rt-tabs { display: flex; gap: 6px; padding: 4px; border-radius: var(--rt-r-pill); background: var(--rt-bg-alt); border: 1px solid var(--rt-line); }
.rt-tabs [role="tab"] {
    flex: 1 1 0; min-height: 44px; padding: 8px 12px; border: 0; border-radius: var(--rt-r-pill); background: transparent;
    color: var(--rt-text); font: inherit; font-weight: 600; font-size: .9rem; cursor: pointer; transition: background .2s, color .2s;
}
.rt-tabs [role="tab"]:hover { background: rgba(var(--rt-brand-rgb), .1); }
.rt-tabs [role="tab"][aria-selected="true"] { background: var(--rt-yellow); color: var(--rt-brand-ink); }
.rt-tabs [role="tab"]:focus-visible { outline: 2px solid var(--rt-brand); outline-offset: 2px; }

.rt-form { display: flex; flex-direction: column; gap: 16px; }
.rt-form__grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
.rt-field { display: flex; flex-direction: column; gap: 6px; }
.rt-field label { font-size: .9rem; font-weight: 600; color: var(--rt-text); }
.rt-field label b { color: var(--rt-green-deep); font-weight: 700; }
.rt-field__help, .rt-form__help { font-size: .85rem; color: var(--rt-muted); }
.rt-field__opt { font-size: .78rem; font-weight: 400; color: var(--rt-muted); }
.rt-form__help { background: var(--rt-bg-alt); border-left: 3px solid var(--rt-yellow); padding: 10px 12px; border-radius: 0 var(--rt-r-sm) var(--rt-r-sm) 0; margin-top: -6px; }
.rt-form__row { display: flex; justify-content: flex-end; margin-top: -6px; }
.rt-form__link { font-size: .9rem; min-height: 32px; display: inline-flex; align-items: center; }
.rt-input {
    width: 100%; min-height: 48px; padding: 10px 14px; border-radius: var(--rt-r-sm); border: 1.5px solid var(--rt-line);
    background: var(--rt-bg); color: var(--rt-text); font: inherit; font-size: 1rem; transition: border-color .15s, box-shadow .15s;
}
.rt-input::placeholder { color: var(--rt-muted); opacity: .7; }
.rt-input:focus { outline: 0; border-color: var(--rt-brand); box-shadow: 0 0 0 3px rgba(var(--rt-brand-rgb), .2); }
.rt-field__pw { position: relative; }
.rt-field__pw .rt-input { padding-right: 52px; }
.rt-eye {
    position: absolute; top: 2px; right: 2px; width: 44px; height: 44px; border: 0; background: transparent; border-radius: var(--rt-r-sm);
    color: var(--rt-muted); cursor: pointer; display: grid; place-items: center;
}
.rt-eye:hover { color: var(--rt-brand-deep); background: rgba(var(--rt-brand-rgb), .08); }
.rt-eye .rt-ic { width: 22px; height: 22px; }
.rt-eye .rt-eye__hide, .rt-eye[aria-pressed="true"] .rt-eye__show { display: none; }
.rt-eye[aria-pressed="true"] .rt-eye__hide { display: block; }
.rt-captcha { display: flex; gap: 10px; align-items: stretch; }
.rt-captcha__q {
    flex: 0 0 auto; display: inline-flex; align-items: center; padding: 0 16px; border-radius: var(--rt-r-sm); min-height: 48px;
    background: var(--rt-brand-ink); color: var(--rt-yellow); font-weight: 700; font-size: 1.05rem; letter-spacing: .04em; white-space: nowrap;
}
.rt-captcha .rt-input { flex: 1 1 auto; max-width: 160px; }
.rt-flash { padding: 12px 14px; border-radius: var(--rt-r-sm); font-size: .95rem; border: 1px solid transparent; }
.rt-flash--ok { background: rgba(var(--rt-green-rgb), .12); border-color: rgba(var(--rt-green-rgb), .4); color: var(--rt-green-deep); }
.rt-flash--err { background: rgba(214, 48, 49, .1); border-color: rgba(214, 48, 49, .4); color: #B3261E; }
:root[data-theme="dark"] .rt-flash--err { color: #FF8A80; }
:root[data-theme="dark"] .rt-flash--ok { color: var(--rt-green-on-dark); }
.rt-qr { display: flex; flex-direction: column; align-items: center; gap: 16px; text-align: center; padding: 8px 0 4px; }
.rt-qr__box { width: 200px; height: 200px; display: grid; place-items: center; border-radius: var(--rt-r); background: var(--rt-bg-alt); border: 1.5px dashed var(--rt-line); color: var(--rt-brand-ink); opacity: .55; }
:root[data-theme="dark"] .rt-qr__box { color: #E8F1F7; }
.rt-qr__note { color: var(--rt-muted); max-width: 36ch; text-wrap: pretty; }

@media (min-width: 576px) {
    .rt-form__grid { grid-template-columns: 1fr 1fr; }
    .rt-auth__card, .rt-auth__panel { padding: 36px 32px; }
}
@media (min-width: 900px) {
    .rt-auth { padding: calc(var(--rt-header) + 40px) 0 72px; }
    .rt-auth__in { grid-template-columns: 5fr 6fr; }
    .rt-auth__panel { display: flex; }
    .rt-auth__steps { display: grid; }
    .rt-auth__panel-in { justify-content: center; gap: 18px; }
    .rt-auth__card, .rt-auth__panel { padding: 48px 44px; }
    .rt-auth__h1 { font-size: clamp(2rem, 3vw, 2.6rem); }
}
@media (min-width: 1280px) {
    .rt-auth__in { width: min(1120px, 92%); margin-inline: auto; }
}

/* ── 15 · Photo credits (/credits) + the small transparent footer link ─────── */
.rt-footer__credits { color: inherit; opacity: .55; text-decoration: none; font-size: .75rem; display: inline-block; padding: 12px 4px; margin: -12px -4px; } /* 17px text, 40px thumb target (T11 explorer) */
.rt-footer__credits:hover { opacity: 1; text-decoration: underline; }
.rt-credits { padding: calc(var(--rt-header) + 32px) 0 72px; background: var(--rt-bg); min-height: 70svh; }
.rt-credits__h1 { font-size: clamp(1.8rem, 5vw, 2.6rem); font-weight: 700; margin-top: 8px; }
.rt-credits__list { list-style: none; display: grid; grid-template-columns: 1fr; gap: 14px; margin: 32px 0 24px; }
.rt-credits__item { display: flex; gap: 14px; align-items: center; padding: 10px; border: 1px solid var(--rt-line); border-radius: var(--rt-r); background: var(--rt-card); }
.rt-credits__thumb { flex: 0 0 96px; width: 96px; height: 64px; border-radius: var(--rt-r-sm); background-size: cover; background-position: center; }
.rt-credits__meta { display: flex; flex-direction: column; gap: 2px; font-size: .9rem; color: var(--rt-muted); min-width: 0; }
.rt-credits__meta strong { color: var(--rt-text); }
.rt-credits__meta a { color: var(--rt-brand-deep); text-decoration: none; }
.rt-credits__meta a:hover { text-decoration: underline; }
.rt-credits__meta .rt-ic { width: 14px; height: 14px; vertical-align: -2px; }
.rt-credits__lic { font-weight: 600; font-size: .8rem; }
.rt-credits__note { color: var(--rt-muted); font-size: .85rem; margin-bottom: 24px; }
:root[data-theme="dark"] .rt-credits__meta a { color: var(--rt-brand); }
@media (min-width: 768px) { .rt-credits__list { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1280px) { .rt-credits__list { grid-template-columns: 1fr 1fr 1fr; } }

/* ══════════════════════════════════════════════════════════════════════════════
   T2 · depth pages (/courts /hotel /gym /academy /cafe), /about, occupancy, programs, sticky CTA
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── 16 · Page hero + breadcrumbs + specs strip ─────────────────────────────── */
.rt-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.rt-phero { position: relative; isolation: isolate; color: #fff; background: var(--rt-brand-ink); min-height: 62svh; display: flex; align-items: flex-end; }
.rt-phero__bg { position: absolute; inset: 0; z-index: -2; background-size: cover; background-position: center; }
.rt-phero__bg[data-noimg] { background: var(--rt-hero-grad); }
.rt-phero__scrim { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(var(--rt-brand-ink-rgb), .45) 0%, rgba(var(--rt-brand-ink-rgb), .55) 45%, rgba(var(--rt-brand-ink-rgb), .9) 100%); }
.rt-phero__body { padding: calc(var(--rt-header) + 28px) 0 40px; }
.rt-crumbs { display: flex; align-items: center; gap: 6px; font-size: .85rem; opacity: .9; margin-bottom: 18px; min-height: 44px; }
.rt-crumbs a { color: inherit; text-decoration: none; padding: 12px 0; display: inline-flex; align-items: center; min-height: 44px; }
.rt-crumbs a:hover { text-decoration: underline; }
.rt-crumbs__sep { width: 14px; height: 14px; opacity: .7; }
.rt-crumbs [aria-current] { font-weight: 600; }
.rt-phero__title { font-size: clamp(2.2rem, 8vw, 4.5rem); line-height: 1; font-weight: 700; letter-spacing: -.01em; text-wrap: balance; max-width: 16ch; }
.rt-phero__lede { margin-top: 16px; max-width: 60ch; font-size: 1.05rem; line-height: 1.55; opacity: .93; text-wrap: pretty; }
.rt-phero__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.rt-phero__cta .rt-btn { flex: 1 1 auto; }

.rt-specs { background: var(--rt-brand-ink); color: #fff; padding: 22px 0 28px; border-top: 4px solid var(--rt-yellow); }
.rt-specs__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 12px; }
.rt-spec { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; border-left: 2px solid rgba(var(--rt-yellow-rgb), .35); padding: 6px 4px; }
.rt-spec__v { font-size: clamp(1.6rem, 5vw, 2.4rem); font-weight: 700; line-height: 1; color: var(--rt-yellow); white-space: nowrap; }
.rt-spec__l { font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; opacity: .85; text-wrap: balance; }

/* ── 17 · Facility body + gallery ────────────────────────────────────────────── */
.rt-fbody { padding: 48px 0; background: var(--rt-bg); }
.rt-fbody__in { display: grid; gap: 32px; align-items: start; }
.rt-fbody__text { display: flex; flex-direction: column; gap: 26px; }
.rt-fblock__h { font-size: 1.3rem; font-weight: 700; display: block; }
.rt-fblock__p { margin-top: 8px; color: var(--rt-muted); font-size: 1.02rem; text-wrap: pretty; }
.rt-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rt-gallery__item { position: relative; border-radius: var(--rt-r-sm); overflow: hidden; aspect-ratio: 4 / 3; background: var(--rt-bg-alt); box-shadow: var(--rt-shadow); }
.rt-gallery__item.is-lead { grid-column: 1 / -1; aspect-ratio: 16 / 10; border-radius: var(--rt-r); }
.rt-gallery__item img { width: 100%; height: 100%; object-fit: cover; }
.rt-gallery__ph { width: 100%; height: 100%; display: grid; place-items: center; background: var(--rt-hero-grad); color: rgba(255, 255, 255, .6); }
.rt-gallery__ph .rt-ic { width: 48px; height: 48px; }
.rt-gallery__cap {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 22px 12px 8px; font-size: .78rem; color: #fff;
    background: linear-gradient(180deg, transparent, rgba(var(--rt-brand-ink-rgb), .75));
}

/* ── 18 · Courts occupancy (Home strip + /courts panel) ──────────────────────── */
.rt-occhome { padding: 40px 0 8px; background: var(--rt-bg); }
.rt-occhome__head { margin-bottom: 14px; }
.rt-occhome__head .rt-h3 { display: block; font-size: 1.35rem; }
.rt-occ { padding: 56px 0; background: var(--rt-bg-alt); scroll-margin-top: var(--rt-header); }
.rt-occbox {
    display: grid; gap: 20px; padding: 18px; border-radius: var(--rt-r); background: var(--rt-card);
    border: 1px solid var(--rt-line); box-shadow: var(--rt-shadow);
}
.rt-occbox__now { display: flex; flex-direction: column; gap: 14px; }
.rt-occnow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-size: .9rem; color: var(--rt-muted); }
.rt-occnow__dot { width: 10px; height: 10px; border-radius: 50%; background: #B3261E; box-shadow: 0 0 0 4px rgba(179, 38, 30, .15); }
.rt-occnow__dot.is-open { background: var(--rt-green); box-shadow: 0 0 0 4px rgba(var(--rt-green-rgb), .18); animation: rt-pulse 2s ease-in-out infinite; }
.rt-occnow__state { font-weight: 600; color: var(--rt-text); }
.rt-occnow__tz { margin-left: auto; font-variant-numeric: tabular-nums; }
@keyframes rt-pulse { 0%, 100% { box-shadow: 0 0 0 4px rgba(var(--rt-green-rgb), .18); } 50% { box-shadow: 0 0 0 8px rgba(var(--rt-green-rgb), .05); } }
.rt-occkpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.rt-occkpi { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: var(--rt-r-sm); background: var(--rt-bg-alt); border: 1px solid var(--rt-line); }
.rt-occkpi__v { font-size: 1.6rem; font-weight: 700; line-height: 1.1; color: var(--rt-brand-deep); font-variant-numeric: tabular-nums; }
.rt-occkpi__l { font-size: .75rem; letter-spacing: .04em; text-transform: uppercase; color: var(--rt-muted); }
.rt-occkpi--free { background: rgba(var(--rt-green-rgb), .1); border-color: rgba(var(--rt-green-rgb), .35); }
.rt-occkpi--free .rt-occkpi__v { color: var(--rt-green-deep); }
:root[data-theme="dark"] .rt-occkpi__v { color: var(--rt-brand); }
:root[data-theme="dark"] .rt-occkpi--free .rt-occkpi__v { color: var(--rt-green-on-dark); }
.rt-occ__k { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; color: var(--rt-muted); margin-bottom: 10px; }
.rt-hours { display: grid; grid-template-columns: repeat(17, 1fr); gap: 3px; align-items: end; height: 96px; padding: 0; margin: 0; list-style: none; }
.rt-hour { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; min-width: 0; }
.rt-hour__bar { display: block; width: 100%; height: calc(var(--p) * 1% - 18px); min-height: 4px; border-radius: 3px 3px 0 0; background: var(--rt-brand); opacity: .55; transition: opacity .2s; }
.rt-hour.is-peak .rt-hour__bar { background: var(--rt-brand-deep); opacity: .9; }
.rt-hour.is-now .rt-hour__bar { background: var(--rt-yellow); opacity: 1; box-shadow: 0 0 0 2px rgba(var(--rt-yellow-rgb), .35); }
.rt-hour__h { font-size: .62rem; margin-top: 4px; color: var(--rt-muted); font-variant-numeric: tabular-nums; line-height: 1; }
.rt-hour:nth-child(even) .rt-hour__h { visibility: hidden; }
.rt-hour.is-now .rt-hour__h { visibility: visible; color: var(--rt-text); font-weight: 700; }
.rt-hours__legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 10px; font-size: .78rem; color: var(--rt-muted); }
.rt-hours__lg { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 6px; vertical-align: -2px; background: var(--rt-brand); opacity: .55; }
.rt-hours__lg--peak { background: var(--rt-brand-deep); opacity: .9; }
.rt-hours__lg--now { background: var(--rt-yellow); opacity: 1; }
:root[data-theme="dark"] .rt-hour__bar, :root[data-theme="dark"] .rt-hours__lg { background: var(--rt-brand-on-dark); opacity: .4; }
:root[data-theme="dark"] .rt-hour.is-peak .rt-hour__bar, :root[data-theme="dark"] .rt-hours__lg--peak { background: var(--rt-brand-on-dark); opacity: .95; }
:root[data-theme="dark"] .rt-hour.is-now .rt-hour__bar, :root[data-theme="dark"] .rt-hours__lg--now { background: var(--rt-yellow); opacity: 1; }
.rt-surf { display: flex; flex-direction: column; gap: 10px; }
.rt-surf__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "l v" "b b"; gap: 4px 12px; align-items: center; }
.rt-surf__l { grid-area: l; font-weight: 600; font-size: .95rem; }
.rt-surf__l small { color: var(--rt-muted); font-weight: 500; }
.rt-surf__v { grid-area: v; font-weight: 700; color: var(--rt-brand-deep); font-variant-numeric: tabular-nums; }
:root[data-theme="dark"] .rt-surf__v { color: var(--rt-brand); }
.rt-surf__bar { grid-area: b; display: block; height: 10px; border-radius: 5px; background: var(--rt-bg-alt); border: 1px solid var(--rt-line); overflow: hidden; }
.rt-surf__bar span { display: block; height: 100%; width: calc(var(--p) * 1%); background: linear-gradient(90deg, var(--rt-brand), var(--rt-brand-deep)); border-radius: 5px; }
.rt-occbox__more { justify-self: start; }

/* ── 19 · Academy programmes ────────────────────────────────────────────────── */
.rt-programs { padding: 56px 0; background: var(--rt-bg-alt); scroll-margin-top: var(--rt-header); }
.rt-progs { display: grid; gap: 16px; }
.rt-prog {
    position: relative; display: flex; flex-direction: column; background: var(--rt-card); border-radius: var(--rt-r);
    padding: 24px 22px 22px; border: 1px solid var(--rt-line); box-shadow: var(--rt-shadow); transition: transform .25s var(--rt-ease), box-shadow .25s;
}
.rt-prog:hover { transform: translateY(-4px); box-shadow: var(--rt-shadow-lg); }
.rt-prog.is-featured { border: 2px solid var(--rt-yellow); background: linear-gradient(180deg, rgba(var(--rt-yellow-rgb), .08), transparent 40%), var(--rt-card); }
.rt-prog__tag { display: inline-flex; align-items: center; gap: .4em; font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-prog__tag { color: var(--rt-brand); }
.rt-prog__name { margin-top: 8px; font-size: 1.3rem; font-weight: 700; line-height: 1.15; }
.rt-prog__who { margin-top: 4px; color: var(--rt-muted); font-size: .9rem; }
.rt-prog__price { margin-top: auto; display: flex; flex-direction: column; padding-top: 6px; }
.rt-prog__num { font-size: 1.8rem; font-weight: 700; line-height: 1.1; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-prog__num { color: var(--rt-brand); }
.rt-prog__per { font-size: .85rem; color: var(--rt-muted); }
.rt-prog__free { display: inline-block; font-size: 1.1rem; font-weight: 700; color: var(--rt-green-deep); padding: 6px 0; }
:root[data-theme="dark"] .rt-prog__free { color: var(--rt-green-on-dark); }
.rt-prog__note { margin: 8px 0 16px; font-size: .85rem; color: var(--rt-muted); text-wrap: pretty; }

/* ── 20 · Price table ───────────────────────────────────────────────────────── */
.rt-prices { padding: 56px 0; background: var(--rt-bg); scroll-margin-top: var(--rt-header); }
.rt-prices__in { display: grid; gap: 28px; align-items: start; }
.rt-pricetable { width: 100%; border-collapse: collapse; background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r); overflow: hidden; box-shadow: var(--rt-shadow); }
.rt-pricetable th, .rt-pricetable td { padding: 14px 16px; border-bottom: 1px solid var(--rt-line); text-align: left; vertical-align: middle; }
.rt-pricetable tr:last-child th, .rt-pricetable tr:last-child td { border-bottom: 0; }
.rt-pricetable th { font-weight: 600; }
.rt-pricetable td { text-align: right; white-space: nowrap; font-weight: 700; color: var(--rt-brand-deep); font-variant-numeric: tabular-nums; }
.rt-pricetable td small { font-weight: 500; color: var(--rt-muted); font-size: .8em; }
:root[data-theme="dark"] .rt-pricetable td { color: var(--rt-brand); }

/* ── 21 · Page CTA band + next-facility teaser ─────────────────────────────── */
.rt-fcta { background: var(--rt-hero-grad); color: #fff; padding: 56px 0; }
.rt-fcta--light { background: var(--rt-bg-alt); color: var(--rt-text); }
.rt-fcta__in { display: grid; gap: 28px; align-items: center; }
.rt-fcta__btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.rt-fcta__btns .rt-btn { flex: 1 1 auto; }
.rt-next {
    display: grid; grid-template-columns: 1fr auto; grid-template-areas: "k a" "t a"; align-items: center; gap: 2px 14px;
    padding: 18px 20px; border-radius: var(--rt-r); text-decoration: none; color: inherit;
    background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .25); transition: background .2s, transform .2s;
}
.rt-fcta--light .rt-next { background: var(--rt-card); border-color: var(--rt-line); box-shadow: var(--rt-shadow); }
.rt-next:hover { background: var(--rt-yellow); color: var(--rt-brand-ink); transform: translateY(-3px); }
.rt-next__k { grid-area: k; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; opacity: .8; }
.rt-next__t { grid-area: t; display: inline-flex; align-items: center; gap: .4em; font-size: 1.2rem; font-weight: 700; }
.rt-next__arrow { grid-area: a; width: 28px; height: 28px; }

/* ── 22 · About: timeline · mandate · KPI band ─────────────────────────────── */
.rt-phero--about { min-height: 58svh; }
.rt-story { padding: 48px 0; background: var(--rt-bg); }
.rt-tl { position: relative; display: flex; flex-direction: column; gap: 28px; padding-left: 28px; margin: 0; list-style: none; }
.rt-tl::before { content: ""; position: absolute; left: 9px; top: 8px; bottom: 8px; width: 2px; background: linear-gradient(180deg, var(--rt-brand), var(--rt-yellow), var(--rt-green)); border-radius: 2px; }
.rt-tl__item { position: relative; }
.rt-tl__marker { position: absolute; left: -28px; top: 6px; width: 20px; height: 20px; display: grid; place-items: center; }
.rt-tl__marker span { width: 14px; height: 14px; border-radius: 50%; background: var(--rt-brand); box-shadow: 0 0 0 4px var(--rt-bg); }
.rt-tl__item--yellow .rt-tl__marker span { background: var(--rt-yellow); }
.rt-tl__item--green .rt-tl__marker span { background: var(--rt-green); }
.rt-tl__card { display: grid; gap: 0; border-radius: var(--rt-r); overflow: hidden; background: var(--rt-card); border: 1px solid var(--rt-line); box-shadow: var(--rt-shadow); }
.rt-tl__media { aspect-ratio: 16 / 9; background-size: cover; background-position: center; }
.rt-tl__media[data-noimg] { background: var(--rt-hero-grad); }
.rt-tl__text { padding: 20px 20px 22px; }
.rt-tl__text .rt-kicker { margin-bottom: 8px; }
.rt-tl__h { font-size: 1.35rem; font-weight: 700; line-height: 1.15; }
.rt-tl__p { margin-top: 8px; color: var(--rt-muted); text-wrap: pretty; }
.rt-mandate { background: var(--rt-brand-ink); color: #fff; padding: 56px 0; border-top: 4px solid var(--rt-yellow); }
.rt-sechead--light .rt-kicker { color: var(--rt-yellow); }
.rt-mandate__grid { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.rt-mcard { padding: 20px; border-radius: var(--rt-r); background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .16); }
.rt-mcard__ic { width: 28px; height: 28px; color: var(--rt-yellow); }
.rt-mcard__h { margin-top: 10px; font-size: 1.05rem; font-weight: 700; line-height: 1.2; }
.rt-mcard__p { margin-top: 6px; font-size: .9rem; opacity: .85; }
.rt-kpiband { margin-top: 36px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px 12px; padding-top: 28px; border-top: 1px solid rgba(255, 255, 255, .16); }
.rt-stat--ring { grid-column: 1 / -1; justify-self: center; width: 148px; aspect-ratio: 1; border-radius: 50%; border: 0; justify-content: center;
    background: radial-gradient(closest-side, var(--rt-brand-ink) 78%, transparent 80% 100%), conic-gradient(var(--rt-yellow) calc(var(--p) * 1%), rgba(255, 255, 255, .15) 0); }
.rt-stat--ring .rt-stat__v { font-size: 2rem; }
.rt-stat--ring .rt-stat__l { font-size: .7rem; }

/* ── 23 · Sticky mobile "Book a court" ─────────────────────────────────────── */
.rt-sticky {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; padding: 10px 4% max(10px, env(safe-area-inset-bottom));
    background: var(--rt-glass); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); box-shadow: 0 -4px 20px rgba(0, 0, 0, .15);
}
.rt-sticky .rt-btn { min-height: 48px; }
.rt-sticky { transition: transform .3s var(--rt-ease), opacity .3s; }
.rt-sticky.is-away { transform: translateY(110%); opacity: 0; pointer-events: none; } /* an on-page Book button is already visible */
html:has(.rt-nav:not([hidden])) .rt-sticky { display: none; }
body:has(.rt-sticky) .rt-footer__legal { padding-bottom: 84px; } /* the fixed bar never covers the legal strip */

/* ── 24 · Breakpoints for T2 sections ───────────────────────────────────────── */
@media (min-width: 576px) {
    .rt-specs__grid { grid-template-columns: repeat(4, 1fr); }
    .rt-phero__cta .rt-btn, .rt-fcta__btns .rt-btn { flex: 0 0 auto; }
    .rt-occkpis { grid-template-columns: repeat(3, 1fr); }
    .rt-occbox--full .rt-occkpis { grid-template-columns: repeat(5, 1fr); }
    .rt-progs { grid-template-columns: 1fr 1fr; }
    .rt-mandate__grid { grid-template-columns: 1fr 1fr; }
    .rt-kpiband { grid-template-columns: repeat(4, 1fr) auto; align-items: center; }
    .rt-stat--ring { grid-column: auto; }
    .rt-hours { height: 120px; }
    .rt-hour:nth-child(even) .rt-hour__h { visibility: visible; }
    .rt-hour__h { font-size: .7rem; }
}
@media (min-width: 768px) {
    .rt-phero__body { padding: calc(var(--rt-header) + 48px) 0 56px; }
    .rt-fbody { padding: var(--rt-sec) 0; }
    .rt-fbody__in { grid-template-columns: 1.05fr .95fr; gap: 48px; }
    .rt-occ, .rt-programs, .rt-prices, .rt-fcta, .rt-mandate { padding: var(--rt-sec) 0; }
    .rt-story { padding: 72px 0; }
    .rt-occbox { padding: 24px; grid-template-columns: 1fr 1fr; }
    .rt-occbox__now { grid-column: 1 / -1; }
    .rt-occbox--full .rt-occbox__hours { grid-column: 1 / 2; }
    .rt-occbox--full .rt-occbox__surf { grid-column: 2 / 3; }
    .rt-occbox:not(.rt-occbox--full) .rt-occbox__hours { grid-column: 1 / -1; }
    .rt-occbox__more { grid-column: 1 / -1; }
    .rt-prices__in { grid-template-columns: .8fr 1.2fr; gap: 48px; }
    .rt-fcta__in { grid-template-columns: 1.2fr .8fr; gap: 48px; }
    .rt-tl { padding-left: 40px; gap: 36px; }
    .rt-tl::before { left: 13px; }
    .rt-tl__marker { left: -40px; width: 28px; height: 28px; }
    .rt-tl__marker span { width: 16px; height: 16px; }
    .rt-tl__card { grid-template-columns: 2fr 3fr; }
    .rt-tl__media { aspect-ratio: auto; min-height: 220px; }
    .rt-tl__text { padding: 26px 28px; }
    .rt-mandate__grid { grid-template-columns: repeat(4, 1fr); }
    .rt-sticky { display: none; }
    body:has(.rt-sticky) .rt-footer__legal { padding-bottom: 16px; }
    .rt-occhome { padding: 56px 0 16px; }
}
@media (min-width: 1024px) {
    .rt-fbody { padding: var(--rt-sec-lg) 0; }
    .rt-fbody__in { gap: 72px; }
    .rt-progs { grid-template-columns: repeat(4, 1fr); }
    .rt-phero { min-height: 68svh; }
    /* Header at 1024–1279 with 7 links: page links only in the bar (the two home anchors stay in the burger overlay),
       brand text off, nothing may wrap or shrink into the brand. Full bar + no burger from 1280. */
    .rt-header__links { gap: 2px; margin-left: 12px; flex: none; }
    .rt-header__links a { padding: 8px 10px; font-size: .9rem; white-space: nowrap; }
    .rt-header__links a[aria-current] { background: rgba(255, 255, 255, .16); }
    .rt-header__links a:nth-child(n+6) { display: none; }
    .rt-brand { flex: none; }
    .rt-brand__text { display: none; }
    .rt-burger { display: inline-flex; }
}
@media (min-width: 1280px) {
    .rt-header__links { gap: 4px; margin-left: 24px; }
    .rt-header__links a { padding: 8px 10px; font-size: .92rem; }
    .rt-header__links a:nth-child(n+6) { display: inline-flex; }
    .rt-header__links a:nth-child(n+8) { display: none; }   /* T3: 9 entries — Membership + Contact stay in the overlay + footer */
    .rt-brand { flex: 0 1 auto; }   /* brand may shrink again (the sub-line ellipsises) */
    .rt-brand__text { display: flex; }
    .rt-burger { display: inline-flex; }
}
/* ═══ T3 — Tournaments + News/Blog (Agent-T) ══════════════════════════════════════════════════════
   Badges · event cards · series · calendar · how-to · archive · news cards · article · ad slots.
   Only bi() spans carry lang; never style bare span/[lang] here (see bilingual-span-selector-trap). */
.rt-sechead--row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 24px; text-align: left; max-width: none; }
.rt-sechead--row .rt-kicker { justify-content: flex-start; }
.rt-sechead--row .rt-btn { display: inline-flex; align-items: center; gap: .3em; }
.rt-sechead--row .rt-btn svg { width: 18px; height: 18px; }
.rt-sechead--left { text-align: left; margin-inline: 0; }
.rt-sechead--left .rt-kicker { justify-content: flex-start; }
.rt-phero--short { min-height: 52svh; }

.rt-badge {
    display: inline-flex; align-items: center; gap: .35em; padding: 3px 10px; border-radius: var(--rt-r-pill);
    font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; line-height: 1.6; white-space: nowrap;
}
.rt-badge--green  { background: rgba(var(--rt-green-rgb), .14); color: var(--rt-green-deep); }
.rt-badge--yellow { background: rgba(var(--rt-yellow-rgb), .28); color: var(--rt-yellow-ink); }
.rt-badge--brand  { background: rgba(var(--rt-brand-rgb), .14); color: var(--rt-brand-deep); }
.rt-badge--muted  { background: rgba(78, 100, 112, .14); color: var(--rt-muted); }
:root[data-theme="dark"] .rt-badge--green  { color: var(--rt-green-on-dark); }
:root[data-theme="dark"] .rt-badge--yellow { color: var(--rt-yellow); background: rgba(var(--rt-yellow-rgb), .16); }
:root[data-theme="dark"] .rt-badge--brand  { color: var(--rt-brand-on-dark); }

/* Event cards */
.rt-hevents, .rt-hnews, .rt-calendar, .rt-series, .rt-past, .rt-related { padding: 56px 0; scroll-margin-top: var(--rt-header); }
.rt-hevents, .rt-series, .rt-related { background: var(--rt-bg-alt); }
.rt-events { display: grid; gap: 18px; }
.rt-event {
    display: flex; flex-direction: column; background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r);
    box-shadow: var(--rt-shadow); overflow: hidden; transition: transform .25s var(--rt-ease), box-shadow .25s;
}
.rt-event:hover { transform: translateY(-4px); box-shadow: var(--rt-shadow-lg); }
.rt-event--done { opacity: .85; }
.rt-event__cover { aspect-ratio: 16 / 7; background-size: cover; background-position: center; }
.rt-event__body { display: flex; flex-direction: column; flex: 1; padding: 20px 20px 22px; }
.rt-event__top { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.rt-event__series { display: inline-flex; align-items: center; gap: .35em; font-size: .8rem; color: var(--rt-muted); }
.rt-event__series svg { width: 16px; height: 16px; }
.rt-event__name { margin-top: 10px; font-size: 1.25rem; font-weight: 700; line-height: 1.2; text-wrap: balance; }
.rt-event__date { display: flex; align-items: center; gap: .4em; margin-top: 8px; font-weight: 600; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-event__date { color: var(--rt-brand); }
.rt-event__date svg { width: 18px; height: 18px; flex: none; }
.rt-event__meta { margin: 10px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; font-size: .92rem; color: var(--rt-muted); }
.rt-event__entries { margin-top: 14px; display: flex; flex-direction: column; gap: 6px; font-size: .85rem; color: var(--rt-muted); }
.rt-event__bar { display: block; height: 6px; border-radius: var(--rt-r-pill); background: var(--rt-line); overflow: hidden; }
.rt-event__bar > span { display: block; height: 100%; background: var(--rt-green); border-radius: inherit; }
.rt-event .rt-btn--block { margin-top: 16px; }
.rt-event__body > .rt-btn { margin-top: auto; }
.rt-event__meta + .rt-btn, .rt-event__entries + .rt-btn { margin-top: 16px; }

/* Series */
.rt-series__grid { display: grid; gap: 16px; }
.rt-serie { background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r); padding: 22px 20px; box-shadow: var(--rt-shadow); }
.rt-serie__ic { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: var(--rt-surface-tint); color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-serie__ic { color: var(--rt-brand); }
.rt-serie__ic svg { width: 24px; height: 24px; }
.rt-serie__cad { margin-top: 14px; font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-serie__cad { color: var(--rt-brand); }
.rt-serie__name { margin-top: 6px; font-size: 1.15rem; font-weight: 700; line-height: 1.2; }
.rt-serie__blurb { margin-top: 8px; font-size: .92rem; color: var(--rt-muted); text-wrap: pretty; }

/* How to enter */
.rt-howto { padding: 56px 0; background: var(--rt-hero-grad); color: #fff; }
.rt-howto .rt-sechead { margin-bottom: 24px; }
.rt-howto__in { display: grid; gap: 24px; }
.rt-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; counter-reset: step; }
.rt-step { display: flex; align-items: flex-start; gap: 14px; padding: 16px 18px; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .16); border-radius: var(--rt-r); }
.rt-step__n { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--rt-yellow); color: var(--rt-brand-ink); font-weight: 700; }
.rt-howto .rt-btn { justify-self: start; }

/* Archive */
.rt-pastlist { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rt-line); }
.rt-pastrow { display: grid; gap: 4px 18px; padding: 16px 0; border-bottom: 1px solid var(--rt-line); }
.rt-pastrow__date { font-weight: 600; color: var(--rt-brand-deep); font-size: .95rem; }
:root[data-theme="dark"] .rt-pastrow__date { color: var(--rt-brand); }
.rt-pastrow__name { font-weight: 700; }
.rt-pastrow__meta, .rt-pastrow__series { font-size: .9rem; color: var(--rt-muted); }
.rt-pastrow__series { display: inline-flex; align-items: center; gap: .35em; }
.rt-pastrow__series svg { width: 16px; height: 16px; }

/* Band (news index head) */
.rt-band { background: var(--rt-hero-grad); color: #fff; padding: calc(var(--rt-header) + 28px) 0 36px; }
.rt-band__title { font-size: clamp(2.2rem, 8vw, 4rem); line-height: 1; font-weight: 700; letter-spacing: -.01em; }
.rt-band__lede { margin-top: 12px; max-width: 60ch; opacity: .93; text-wrap: pretty; }
.rt-cats { list-style: none; margin: 22px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rt-cat { display: inline-flex; padding: 6px 14px; border: 1.5px solid rgba(255, 255, 255, .5); border-radius: var(--rt-r-pill); font-size: .85rem; font-weight: 600; }

/* News cards */
.rt-newsidx { padding: 40px 0 56px; }
.rt-posts { display: grid; gap: 18px; }
.rt-post {
    display: flex; flex-direction: column; background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r);
    box-shadow: var(--rt-shadow); overflow: hidden; transition: transform .25s var(--rt-ease), box-shadow .25s;
}
.rt-post:hover { transform: translateY(-4px); box-shadow: var(--rt-shadow-lg); }
.rt-post__cover { display: grid; place-items: center; aspect-ratio: 16 / 9; background-size: cover; background-position: center; color: #fff; }
.rt-post__cover[data-noimg] { background: var(--rt-hero-grad); }
.rt-post__cover svg { width: 40px; height: 40px; opacity: .8; }
.rt-post__body { display: flex; flex-direction: column; flex: 1; padding: 18px 20px 20px; }
.rt-post__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; font-size: .82rem; color: var(--rt-muted); }
.rt-post__title { margin-top: 10px; font-size: 1.2rem; font-weight: 700; line-height: 1.2; text-wrap: balance; }
.rt-post__title a { color: inherit; text-decoration: none; }
.rt-post__title a:hover { text-decoration: underline; }
.rt-post__excerpt { margin-top: 8px; font-size: .95rem; color: var(--rt-muted); text-wrap: pretty; }
.rt-post__more { margin-top: auto; padding-top: 14px; display: inline-flex; align-items: center; gap: .3em; font-weight: 600; color: var(--rt-brand-deep); text-decoration: none; min-height: 44px; }
:root[data-theme="dark"] .rt-post__more { color: var(--rt-brand); }
.rt-post__more svg { width: 18px; height: 18px; }
.rt-post--lead { margin-bottom: 18px; }
.rt-post--lead .rt-post__title { font-size: 1.6rem; }
.rt-post--lead .rt-post__excerpt { font-size: 1.05rem; }

/* Article */
.rt-phero--article .rt-article__title { font-size: clamp(1.8rem, 5.5vw, 3.2rem); max-width: 24ch; line-height: 1.1; }
.rt-phero--article .rt-kicker time { color: inherit; opacity: .9; letter-spacing: .04em; text-transform: none; font-weight: 500; }
.rt-article { padding: 40px 0 56px; }
.rt-article__in { display: grid; gap: 32px; }
.rt-article__body { max-width: 68ch; font-size: 1.08rem; line-height: 1.7; }
.rt-article__body > p + p { margin-top: 1.1em; }
.rt-article__credit { margin-top: 1.4em; font-size: .85rem; color: var(--rt-muted); }
.rt-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 1.4em; color: var(--rt-muted); }
.rt-tags svg { width: 18px; height: 18px; }
.rt-tag { display: inline-flex; padding: 4px 12px; border-radius: var(--rt-r-pill); background: var(--rt-surface-tint); color: var(--rt-brand-deep); font-size: .85rem; font-weight: 600; }
:root[data-theme="dark"] .rt-tag { color: var(--rt-brand); }
.rt-article__side { display: grid; gap: 16px; align-content: start; }
.rt-sidecard { background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r); padding: 20px; box-shadow: var(--rt-shadow); font-size: .95rem; color: var(--rt-muted); }
.rt-sidecard__k { display: inline-flex; align-items: center; gap: .4em; font-weight: 700; color: var(--rt-text); margin-bottom: 6px; }
.rt-sidecard__k svg { width: 18px; height: 18px; color: var(--rt-brand-deep); }
.rt-sidecard .rt-btn { margin-top: 14px; }
.rt-related__all { margin-top: 24px; text-align: center; }

/* Ad slots — placeholder until ADSENSE_CLIENT is set (partials/ad_slot.php) */
.rt-ad { position: relative; display: grid; place-items: center; gap: 4px; margin: 22px 0; padding: 22px 16px; border: 1.5px dashed var(--rt-line); border-radius: var(--rt-r); background: var(--rt-bg-alt); color: var(--rt-muted); text-align: center; }
.rt-ad--horizontal { min-height: 110px; }
.rt-ad--rectangle { min-height: 250px; max-width: 336px; margin-inline: auto; }
.rt-ad__label { position: absolute; top: 8px; left: 12px; font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; opacity: .8; }
.rt-ad__ph { font-size: .85rem; }
.rt-ad--live { border-style: solid; padding: 18px 0 0; background: transparent; }
.rt-ad--live .adsbygoogle { width: 100%; }
.rt-events > .rt-ad { margin: 0; }

@media (min-width: 576px) {
    .rt-pastrow { grid-template-columns: 170px 1fr; }
    .rt-pastrow__date { grid-row: 1 / span 2; }
}
@media (min-width: 768px) {
    .rt-hevents, .rt-hnews, .rt-calendar, .rt-series, .rt-past, .rt-related, .rt-howto { padding: var(--rt-sec) 0; }
    .rt-events, .rt-posts, .rt-series__grid { grid-template-columns: 1fr 1fr; gap: 22px; }
    .rt-events > .rt-ad { grid-column: 1 / -1; }
    .rt-post--lead { flex-direction: row; }
    .rt-post--lead .rt-post__cover { flex: 0 0 52%; aspect-ratio: auto; min-height: 300px; }
    .rt-post--lead .rt-post__body { padding: 28px 30px; justify-content: center; }
    .rt-howto__in { grid-template-columns: 1fr 1.4fr; align-items: center; }
    .rt-howto .rt-btn { grid-column: 1; }
    .rt-pastrow { grid-template-columns: 190px 1fr auto; }
    .rt-pastrow__series { grid-column: 3; grid-row: 1 / span 2; align-self: center; }
    .rt-article__in { grid-template-columns: minmax(0, 1fr) 300px; gap: 48px; }
    .rt-band { padding-bottom: 44px; }
}
@media (min-width: 1024px) {
    .rt-events--home, .rt-posts { grid-template-columns: repeat(3, 1fr); }
    .rt-series__grid { grid-template-columns: repeat(4, 1fr); }
    .rt-hevents, .rt-hnews, .rt-calendar, .rt-series, .rt-past, .rt-related { padding: var(--rt-sec-lg) 0; }
    .rt-article { padding: 56px 0 var(--rt-sec); }
}

@media print {
    .rt-sticky { display: none !important; }
}

/* ── 30 · M4/M5/M6 — Memberships page, Gym & Hotel module sections (Agent-T, 2026-09-29) ─────────── */
.rt-msec { padding: var(--rt-sec) 0; }
.rt-msec--alt { background: var(--rt-bg-alt); }
.rt-msteps { display: grid; gap: 16px; margin-top: 8px; }
.rt-mstep { background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r); padding: 22px; box-shadow: var(--rt-shadow); display: grid; grid-template-columns: 44px 1fr; gap: 6px 14px; }
.rt-mstep__n { grid-row: 1 / 3; width: 44px; height: 44px; border-radius: 50%; background: var(--rt-yellow); color: var(--rt-brand-ink); font-weight: 800; display: grid; place-items: center; }
.rt-mstep__h { font-weight: 700; font-size: 1.05rem; }
.rt-mstep__p { color: var(--rt-muted); font-size: .95rem; }
.rt-cmpwrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--rt-r); border: 1px solid var(--rt-line); background: var(--rt-card); box-shadow: var(--rt-shadow); }
.rt-cmp { width: 100%; min-width: 560px; border-collapse: collapse; font-size: .95rem; }
.rt-cmp th, .rt-cmp td { padding: 12px 14px; border-bottom: 1px solid var(--rt-line); text-align: center; vertical-align: middle; }
.rt-cmp tr:last-child th, .rt-cmp tr:last-child td { border-bottom: 0; }
.rt-cmp thead th { font-weight: 700; background: var(--rt-bg-alt); }
.rt-cmp thead th.is-popular { color: var(--rt-brand-deep); box-shadow: inset 0 -3px 0 var(--rt-yellow); }
.rt-cmp tbody th { text-align: left; font-weight: 500; }
.rt-cmp .rt-ic { width: 20px; height: 20px; color: var(--rt-green); }
.rt-cmp__no { color: var(--rt-muted); opacity: .55; }
.rt-cmp__price { font-weight: 700; color: var(--rt-brand-deep); white-space: nowrap; }
:root[data-theme="dark"] .rt-cmp__price, :root[data-theme="dark"] .rt-cmp thead th.is-popular { color: var(--rt-brand); }
.rt-faq { display: grid; gap: 10px; max-width: 820px; margin-inline: auto; }
.rt-faq details { background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r-sm); padding: 0 18px; }
.rt-faq summary { cursor: pointer; padding: 16px 0; font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.rt-faq summary::-webkit-details-marker { display: none; }
.rt-faq summary .rt-ic { flex: 0 0 18px; width: 18px; height: 18px; color: var(--rt-brand); transition: transform .2s; }
.rt-faq details[open] summary .rt-ic { transform: rotate(180deg); }
.rt-faq details p { padding: 0 0 16px; color: var(--rt-muted); }
.rt-ghours { display: grid; gap: 10px; margin-top: 18px; }
.rt-ghour { display: flex; justify-content: space-between; gap: 12px; background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r-sm); padding: 12px 16px; }
.rt-ghour b { white-space: nowrap; }
.rt-plans { display: grid; gap: 16px; }
.rt-plan { position: relative; background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r); padding: 24px 22px 20px; box-shadow: var(--rt-shadow); display: flex; flex-direction: column; }
.rt-plan.is-popular { border: 2px solid var(--rt-yellow); }
.rt-plan--pass { border-style: dashed; }
.rt-plan__name { font-size: 1.15rem; font-weight: 700; }
.rt-plan__num { display: block; margin-top: 8px; font-size: 1.7rem; font-weight: 700; line-height: 1.1; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-plan__num { color: var(--rt-brand); }
.rt-plan__per { font-size: .85rem; color: var(--rt-muted); }
.rt-plan .rt-btn--block { margin-top: auto; }
.rt-ttwrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--rt-line); border-radius: var(--rt-r); background: var(--rt-card); box-shadow: var(--rt-shadow); }
.rt-tt { width: 100%; min-width: 720px; border-collapse: collapse; font-size: .9rem; }
.rt-tt th, .rt-tt td { padding: 10px 12px; border-bottom: 1px solid var(--rt-line); text-align: left; vertical-align: top; }
.rt-tt thead th { background: var(--rt-bg-alt); font-weight: 700; white-space: nowrap; }
.rt-tt tbody th { white-space: nowrap; font-weight: 600; }
.rt-tt tr:last-child th, .rt-tt tr:last-child td { border-bottom: 0; }
.rt-tt__g { display: block; }
.rt-tt__g + .rt-tt__g { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--rt-line); }
.rt-tt__t { font-weight: 700; color: var(--rt-brand-deep); }
:root[data-theme="dark"] .rt-tt__t { color: var(--rt-brand); }
.rt-tt__who { display: block; color: var(--rt-muted); font-size: .82rem; }
.rt-tt__closed { color: var(--rt-muted); font-size: .82rem; }
.rt-rooms { display: grid; gap: 16px; }
.rt-room { background: var(--rt-card); border: 1px solid var(--rt-line); border-radius: var(--rt-r); overflow: hidden; box-shadow: var(--rt-shadow); display: flex; flex-direction: column; }
.rt-room__img { aspect-ratio: 16 / 9; object-fit: cover; width: 100%; }
.rt-room__body { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.rt-room__name { font-size: 1.2rem; font-weight: 700; }
.rt-room__meta { color: var(--rt-muted); font-size: .9rem; }
.rt-room__price { margin-top: 8px; font-weight: 700; font-size: 1.4rem; color: var(--rt-brand-deep); }
.rt-room__price small { font-weight: 500; font-size: .7em; color: var(--rt-muted); }
:root[data-theme="dark"] .rt-room__price { color: var(--rt-brand); }
.rt-room .rt-btn--block { margin-top: auto; }
.rt-avail { margin-top: 28px; }
.rt-avail__h { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px; }
.rt-avail__leg { display: flex; gap: 14px; font-size: .82rem; color: var(--rt-muted); }
.rt-avail__leg i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; margin-right: 5px; }
.rt-avail__strip { margin-top: 12px; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(64px, 1fr); gap: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 6px; }
.rt-avail__d { border: 1px solid var(--rt-line); border-radius: var(--rt-r-sm); background: var(--rt-card); padding: 8px 6px; text-align: center; font-size: .78rem; display: grid; gap: 2px; }
.rt-avail__d b { font-size: 1rem; }
.rt-avail__d small { color: var(--rt-muted); }
.rt-avail__d[data-free="0"] { background: rgba(var(--rt-brand-ink-rgb), .06); color: var(--rt-muted); }
.rt-avail__d[data-free="0"] b { text-decoration: line-through; }
.rt-avail__d.is-low b { color: var(--rt-yellow-deep); }
.rt-avail__d.is-ok b { color: var(--rt-green); }
.rt-avail__d.is-wknd { border-color: rgba(var(--rt-brand-rgb), .35); }
.rt-hreq { margin-top: 40px; display: grid; gap: 24px; }
.rt-hreq__side { display: grid; gap: 12px; align-content: start; }
.rt-hreq .rt-cform { color: var(--rt-text); }
@media (min-width: 640px) {
    .rt-msteps { grid-template-columns: repeat(3, 1fr); }
    .rt-plans { grid-template-columns: repeat(2, 1fr); }
    .rt-rooms { grid-template-columns: repeat(2, 1fr); }
    .rt-ghours { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
    .rt-plans { grid-template-columns: repeat(4, 1fr); }
    .rt-hreq { grid-template-columns: 1.1fr .9fr; align-items: start; }
}
@media (max-width: 639px) { .rt-plan.is-popular, .rt-tier.is-popular { margin-top: 10px; } }

/* ============================================================================
   §16 SLEEK MOBILE PASS (Owner 2026-09-30 — sponsor feedback: "everything too big").
   RTSHOR is used primarily ON PHONES, by players and by admins. This section tightens
   the scale at phone widths: tabs never wrap, inputs/buttons/labels drop one notch,
   paddings close up. Inputs KEEP font-size ≥16px (iOS zooms the page on smaller).
   Reference: the LTAT tour.ltat.org login (compact, calm). VPS agent; relayed to
   Agent-T in COORDINATION.md — his lane owns this file long-term.
   ========================================================================== */
.rt-tabs [role="tab"] { white-space: nowrap; }
@media (max-width: 576px) {
    /* Auth split */
    .rt-auth { padding: calc(var(--rt-header) + 12px) 0 32px; }
    .rt-auth__panel { padding: 18px 16px; }
    .rt-auth__card { padding: 18px 16px 16px; gap: 11px; }
    .rt-auth__brand { margin-bottom: 10px; font-size: .72rem; }
    .rt-auth__brand img { width: 40px; height: 40px; }
    .rt-auth__h1 { font-size: 1.35rem; }
    .rt-auth__lede { font-size: .85rem; }
    .rt-auth__h2 { font-size: 1.1rem; margin-top: 0; }
    .rt-auth__sub { font-size: .85rem; margin-top: -6px; }
    .rt-auth__alt, .rt-auth__recover { font-size: .8rem; }
    /* Segmented tabs — one calm line */
    .rt-tabs { gap: 4px; padding: 3px; }
    .rt-tabs [role="tab"] { min-height: 36px; padding: 6px 10px; font-size: .84rem; }
    /* Form scale */
    .rt-form { gap: 11px; }
    .rt-form__grid { gap: 11px; }
    .rt-field { gap: 4px; }
    .rt-field label { font-size: .8rem; }
    .rt-input { min-height: 42px; padding: 8px 12px; }
    .rt-field__pw .rt-input { padding-right: 46px; }
    .rt-eye { width: 38px; height: 38px; }
    .rt-eye .rt-ic { width: 19px; height: 19px; }
    .rt-captcha__q { min-height: 42px; padding: 0 12px; font-size: .92rem; }
    .rt-form__link { font-size: .82rem; min-height: 26px; }
    .rt-form__help { font-size: .78rem; padding: 8px 10px; }
    .rt-flash { padding: 9px 11px; font-size: .85rem; }
    .rt-qr__box { width: 160px; height: 160px; }
    /* Buttons — one notch down, everywhere on a phone */
    .rt-btn { min-height: 40px; padding: 8px 18px; font-size: .88rem; }
    .rt-btn--lg { min-height: 44px; padding: 9px 22px; font-size: .95rem; }
    /* Contact form (Home #contact) rides the same scale */
    .rt-cform__h3 { font-size: 1.05rem; }
    .rt-cform__sub { font-size: .85rem; }
}

/* ============================================================================
   §17 SLEEK MOBILE PASS — CONTENT PAGES (Agent-T, 2026-10-01; Owner directive 2026-09-30 relayed in
   COORDINATION.md: "everything is too big … RTSHOR is used on MOBILES by players AND admins").
   Same bar as §16 (auth/forms/buttons): at phone widths every public content block drops ONE notch —
   heroes stop reserving a whole screen, display numbers and headings shrink, section rhythm closes from
   48–56px to 32–36px, cards/footer/nav lose their desktop padding. Density reference: tour.ltat.org.
   CSS only, no class or markup change → the fixture/route contract and the collision guard are untouched.
   Tap targets stay ≥40px (the §16 button height the Owner accepted); inputs stay ≥16px (iOS zoom).
   ========================================================================== */
@media (max-width: 576px) {
    /* Home hero — content-tall, not screen-tall; the slider photo still fills the top. */
    .rt-hero { min-height: 78svh; }
    .rt-hero__body { padding: calc(var(--rt-header) + 20px) 0 10px; }
    .rt-kicker { margin-bottom: 8px; font-size: .72rem; letter-spacing: .12em; }
    .rt-slide__title { font-size: clamp(1.75rem, 7vw, 2.4rem); }
    .rt-slide__line { margin-top: 10px; font-size: .92rem; line-height: 1.5; }
    .rt-hero__controls { padding: 4px 0; }
    .rt-hero__cta { gap: 8px; padding: 6px 0 32px; }

    /* Stats band */
    .rt-stats { padding: 22px 0; }
    .rt-stats__grid { gap: 12px 10px; }
    .rt-stat { padding: 4px 0; }
    .rt-stat__v { font-size: clamp(1.6rem, 6vw, 2.2rem); }
    .rt-stat__l { font-size: .72rem; letter-spacing: .06em; }

    /* Section rhythm — one calm step everywhere */
    .rt-facility, .rt-fbody, .rt-story { padding: 32px 0; }
    .rt-membership, .rt-contact, .rt-occ, .rt-programs, .rt-prices, .rt-fcta, .rt-mandate,
    .rt-hevents, .rt-hnews, .rt-calendar, .rt-series, .rt-past, .rt-related, .rt-howto, .rt-msec { padding: 36px 0; }
    .rt-occhome { padding: 28px 0 4px; }
    .rt-newsidx, .rt-article { padding: 28px 0 36px; }
    .rt-sechead { margin-bottom: 20px; }
    .rt-howto .rt-sechead { margin-bottom: 16px; }
    .rt-h2 { font-size: clamp(1.4rem, 5vw, 1.75rem); }
    .rt-h3 { font-size: 1.05rem; }
    .rt-lede { margin-top: 10px; font-size: .92rem; }
    .rt-more { min-height: 40px; font-size: .92rem; }

    /* Facility banners (Home) — shorter photo, tighter facts, buttons on one row */
    .rt-facility__in { gap: 14px; }
    .rt-facility__media { aspect-ratio: 16 / 10; }
    .rt-facility__ph { width: 64px; height: 64px; }
    .rt-facts { margin: 12px 0 16px; gap: 6px; font-size: .92rem; }
    .rt-facts--tight { margin: 10px 0 14px; font-size: .88rem; }
    .rt-facility__btns { gap: 6px 16px; }

    /* Courts-now strip + occupancy panel */
    .rt-occhome__head { margin-bottom: 10px; }
    .rt-occhome__head .rt-h3 { font-size: 1.15rem; }
    .rt-occbox { padding: 14px; gap: 14px; }
    .rt-occbox__now { gap: 10px; }
    .rt-occkpis { gap: 8px; }
    .rt-occkpi { padding: 8px 10px; }
    .rt-occkpi__v { font-size: 1.35rem; }
    .rt-occkpi__l { font-size: .68rem; }
    .rt-hours { height: 80px; }

    /* Membership tiers, gym plans, rates */
    .rt-tiers, .rt-plans { gap: 12px; }
    .rt-tier { padding: 20px 18px 18px; }
    .rt-tier__pill { top: -12px; left: 18px; font-size: .68rem; padding: 4px 10px; }
    .rt-tier__name { font-size: 1.15rem; }
    .rt-tier__who { font-size: .85rem; }
    .rt-tier__price { margin-top: 10px; }
    .rt-tier__num { font-size: 1.6rem; }
    .rt-tier .rt-facts { margin: 12px 0 16px; }
    .rt-gymplans { margin-top: 28px; }
    .rt-gymplan { padding: 12px 14px; }
    .rt-rates { margin-top: 20px; font-size: .88rem; }
    .rt-ratesnote { margin-top: 16px; font-size: .8rem; }
    .rt-plan { padding: 18px 16px 16px; }
    .rt-plan__name { font-size: 1.05rem; }
    .rt-plan__num { font-size: 1.45rem; }
    .rt-mstep { padding: 16px; gap: 4px 12px; }
    .rt-mstep__h { font-size: 1rem; }
    .rt-mstep__p { font-size: .9rem; }
    .rt-cmp { font-size: .9rem; }
    .rt-cmp th, .rt-cmp td { padding: 10px 12px; }
    .rt-faq summary { padding: 13px 0; font-size: .95rem; }
    .rt-faq details p { font-size: .92rem; padding-bottom: 13px; }
    .rt-ghour { padding: 10px 14px; font-size: .92rem; }

    /* Contact */
    .rt-contact__in { gap: 20px; }
    .rt-contact__addr { margin-top: 12px; font-size: .95rem; }
    .rt-contact__addr strong { font-size: 1rem; }
    .rt-contact__actions { margin-top: 16px; gap: 8px; }
    .rt-cform { padding: 18px 16px; gap: 12px; }
    .rt-cform .rt-form { gap: 12px; }

    /* Depth-page hero (courts/hotel/gym/academy/cafe/about/tournaments/article) + specs strip */
    .rt-phero, .rt-phero--about, .rt-phero--short { min-height: 0; }
    .rt-phero__body { padding: calc(var(--rt-header) + 12px) 0 26px; }
    .rt-crumbs { margin-bottom: 6px; min-height: 40px; font-size: .8rem; }
    .rt-crumbs a { min-height: 40px; padding: 10px 0; }
    .rt-phero__title { font-size: clamp(1.7rem, 7vw, 2.2rem); }
    .rt-phero__lede { margin-top: 10px; font-size: .92rem; line-height: 1.5; }
    .rt-phero__cta { margin-top: 16px; gap: 8px; }
    .rt-phero--article .rt-article__title { font-size: clamp(1.4rem, 5.5vw, 1.9rem); }
    .rt-specs { padding: 14px 0 18px; }
    .rt-specs__grid { gap: 10px 8px; }
    .rt-spec { padding: 4px 4px; }
    .rt-spec__v { font-size: clamp(1.4rem, 5vw, 1.8rem); }
    .rt-spec__l { font-size: .7rem; }

    /* Facility body, gallery, programmes, price table, CTA band */
    .rt-fbody__in { gap: 22px; }
    .rt-fbody__text { gap: 18px; }
    .rt-fblock__h { font-size: 1.1rem; }
    .rt-fblock__p { margin-top: 6px; font-size: .95rem; }
    .rt-gallery { gap: 8px; }
    .rt-gallery__cap { padding: 16px 10px 6px; font-size: .72rem; }
    .rt-progs { gap: 12px; }
    .rt-prog { padding: 18px 16px 16px; }
    .rt-prog__name { font-size: 1.15rem; }
    .rt-prog__num { font-size: 1.5rem; }
    .rt-prog__note { margin: 6px 0 12px; }
    .rt-prices__in { gap: 20px; }
    .rt-pricetable th, .rt-pricetable td { padding: 10px 12px; font-size: .92rem; }
    .rt-fcta__in { gap: 20px; }
    .rt-fcta__btns { margin-top: 14px; gap: 8px; }
    .rt-next { padding: 14px 16px; }
    .rt-next__t { font-size: 1.05rem; }
    .rt-next__arrow { width: 24px; height: 24px; }

    /* About: timeline, mandate, KPI ring */
    .rt-tl { gap: 20px; }
    .rt-tl__text { padding: 16px 16px 18px; }
    .rt-tl__h { font-size: 1.15rem; }
    .rt-tl__p { font-size: .92rem; }
    .rt-mcard { padding: 16px; }
    .rt-mcard__h { font-size: 1rem; }
    .rt-mcard__p { font-size: .85rem; }
    .rt-kpiband { margin-top: 28px; padding-top: 22px; gap: 14px 10px; }
    .rt-stat--ring { width: 128px; }
    .rt-stat--ring .rt-stat__v { font-size: 1.6rem; }

    /* Tournaments: event cards, series, how-to, archive */
    .rt-events, .rt-series__grid, .rt-posts { gap: 14px; }
    .rt-event__body { padding: 16px 16px 18px; }
    .rt-event__name { margin-top: 8px; font-size: 1.1rem; }
    .rt-event__date { font-size: .92rem; }
    .rt-event__meta { font-size: .88rem; }
    .rt-event__entries { margin-top: 10px; }
    .rt-event .rt-btn--block, .rt-event__meta + .rt-btn, .rt-event__entries + .rt-btn { margin-top: 12px; }
    .rt-serie { padding: 16px; }
    .rt-serie__ic { width: 38px; height: 38px; }
    .rt-serie__cad { margin-top: 10px; font-size: .7rem; }
    .rt-serie__name { font-size: 1.05rem; }
    .rt-serie__blurb { font-size: .88rem; }
    .rt-howto__in { gap: 18px; }
    .rt-steps { gap: 8px; }
    .rt-step { padding: 12px 14px; gap: 12px; font-size: .92rem; }
    .rt-step__n { width: 30px; height: 30px; font-size: .9rem; }
    .rt-pastrow { padding: 12px 0; }
    .rt-pastrow__meta, .rt-pastrow__series { font-size: .85rem; }

    /* News: band, category chips, post cards, article */
    .rt-band { padding: calc(var(--rt-header) + 14px) 0 24px; }
    .rt-band__title { font-size: clamp(1.7rem, 7vw, 2.2rem); }
    .rt-band__lede { margin-top: 8px; font-size: .92rem; }
    .rt-cats { margin-top: 14px; gap: 6px; }
    .rt-cat { padding: 5px 12px; font-size: .8rem; }
    .rt-post__body { padding: 14px 16px 16px; }
    .rt-post__meta { font-size: .78rem; }
    .rt-post__title { margin-top: 8px; font-size: 1.08rem; }
    .rt-post__excerpt { margin-top: 6px; font-size: .9rem; }
    .rt-post__more { padding-top: 10px; min-height: 40px; font-size: .92rem; }
    .rt-post--lead { margin-bottom: 14px; }
    .rt-post--lead .rt-post__title { font-size: 1.3rem; }
    .rt-post--lead .rt-post__excerpt { font-size: .95rem; }
    .rt-ad { margin: 14px 0; padding: 18px 14px; }
    .rt-ad--horizontal { min-height: 90px; }
    .rt-article__in { gap: 24px; }
    .rt-article__body { font-size: 1rem; line-height: 1.65; }
    .rt-sidecard { padding: 16px; font-size: .9rem; }

    /* Hotel rooms + request form */
    .rt-rooms { gap: 12px; }
    .rt-room__body { padding: 16px; gap: 4px; }
    .rt-room__name { font-size: 1.1rem; }
    .rt-room__price { font-size: 1.2rem; }
    .rt-avail { margin-top: 22px; }
    .rt-hreq { margin-top: 28px; gap: 18px; }

    /* Nav overlay, sticky bar, footer */
    .rt-nav__grid { gap: 10px; margin: 6px 0 18px; }
    .rt-nav__card { min-height: 100px; padding: 14px; gap: 8px; }
    .rt-nav__ic { width: 26px; height: 26px; }
    .rt-nav__label { font-size: .95rem; }
    .rt-sticky .rt-btn { min-height: 44px; }
    .rt-footer { font-size: .88rem; }
    .rt-footer__logos { padding: 20px 0; }
    .rt-footer__logos-in { gap: 10px; }
    .rt-footer__emblem { width: 150px; }
    .rt-footer__follow { padding: 11px 0; }
    .rt-footer__links { padding: 26px 0; }
    .rt-footer__cols { gap: 18px; }
    .rt-footer__cols h3 { margin-bottom: 6px; }
    .rt-footer__cols a { padding: 8px 0; }
    .rt-footer__legal { padding: 12px 0; }
}

/* ── wave 4 · X — S4.5 + S4.7 (2026-11-09) ─────────────────────────────────────────────────────────────────────────
   Fixed-grid tables: set column widths, every cell on ONE line, overflow ends in an ellipsis and the full value rides
   in a tooltip (assets/js/fit-title.js). A long name / price / Uzbek label can never resize a column or a row. */
.rt-pricetable { table-layout: fixed; }
.rt-pricetable th, .rt-pricetable td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-pricetable td { width: 9.5em; }
.rt-cmp { table-layout: fixed; min-width: 820px; } /* inside its own scroll box; wide enough that no RU/UZ label needs the ellipsis */
.rt-cmp th, .rt-cmp td { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rt-cmp thead th:first-child { width: 36%; }
/* the weekly timetable is a GRID (sessions stack in a day), not a list: equal fixed day columns, and every LINE of a
   session ends in an ellipsis instead of wrapping, so no session can widen a day or push a row taller */
.rt-tt { table-layout: fixed; }
.rt-tt th, .rt-tt td { overflow: hidden; }
.rt-tt thead th { text-overflow: ellipsis; }
.rt-tt__g, .rt-tt__who, .rt-tt__closed { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* password eye: one fixed box, so the eye ↔ eye-slash swap never moves the input */
[data-toggle-pw] { flex: 0 0 44px; width: 44px; min-width: 44px; justify-content: center; }
/* S4.5 — grid cards could not shrink below their longest word / nowrap price (the 1fr track's auto minimum), and the
   page's overflow-x:clip silently CUT the last card off at 768 px (RU/UZ). Let the items shrink and the words wrap. */
/* every multi-column card grid on the public site (not only the three the gate first caught at 768 px) */
:is(.rt-tiers, .rt-gymplans__row, .rt-mandate__grid, .rt-msteps, .rt-mstep, .rt-plans, .rt-progs, .rt-rooms, .rt-posts,
    .rt-events, .rt-series__grid, .rt-specs__grid, .rt-stats__grid, .rt-steps, .rt-kpiband, .rt-occkpis, .rt-credits__list,
    .rt-ghours, .rt-footer__cols, .rt-nav__grid, .rt-surf__row, .rt-pastrow, .rt-hours, .rt-form__grid, .rt-facility__in,
    .rt-contact__in, .rt-article__in, .rt-fbody__in, .rt-howto__in, .rt-hreq, .rt-prices__in, .rt-fcta__in, .rt-auth__in,
    .rt-auth__steps, .rt-faq) > * { min-width: 0; overflow-wrap: anywhere; }
.rt-tier .rt-btn { white-space: normal; text-align: center; }
@media (min-width: 768px) and (max-width: 1023.98px) {
    .rt-gymplans__row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
