/*
 * UBORKA TASHKENT — Swiss Clean.
 *
 * One token layer, then flat component rules. Never add an override tier on
 * top of this file: change the rule that is already here. The previous
 * stylesheet reached 1379 lines with `.uborka-home__hero` defined three times
 * and two competing palettes, which is what made the site look muddy.
 *
 * Rules that hold everywhere:
 *   - --ink is text and rules only. No dark section fills.
 *   - Radius is 4px. Nothing larger. No shadows.
 *   - One typeface, Golos Text. Numerals use .u-num, never a monospace face.
 */

/* ==========================================================================
   Tokens
   ========================================================================== */

.uborka-site {
    --paper: #ffffff;
    --paper-2: #f6f6f3;
    --tint: #e6f1f0;
    --tint-line: #cadedd;
    --line: #dedcd6;
    --primary: #006b6e;
    --primary-hover: #004f51;
    --primary-deep: #00494b;
    --on-primary: #ffffff;
    --ink: #0d0d0d;
    --ink-2: #52524e;
    --ink-3: #8f8d87;
    --focus: #0d0d0d;
    --error: #b42318;
    --star: #f0a202;
    --placeholder: #8a6a12;
    --radius: 4px;
    --gutter: 24px;

    background: var(--paper);
    color: var(--ink);
    font-family: "Golos Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    scroll-padding-top: 84px;
}

.uborka-site *,
.uborka-site *::before,
.uborka-site *::after { box-sizing: border-box; }

.uborka-site :focus-visible {
    outline: 3px solid var(--focus);
    outline-offset: 3px;
}

/* ==========================================================================
   Base elements
   ========================================================================== */

.uborka-site h1,
.uborka-site h2,
.uborka-site h3 {
    margin: 0;
    font-weight: 800;
    line-height: 1.02;
    letter-spacing: -0.022em;
    text-wrap: balance;
}

.uborka-site h1 { font-size: clamp(2.4rem, 9vw, 5.125rem); line-height: 0.99; }
.uborka-site h2 { font-size: clamp(1.75rem, 5vw, 3.625rem); }
.uborka-site h3 { font-size: clamp(1.125rem, 2.4vw, 1.5rem); font-weight: 700; letter-spacing: -0.018em; }
.uborka-site p  { margin: 0; line-height: 1.5; }

/* Uzbek runs 10-20% longer than Russian; drop the display step so the
   headline keeps its line count instead of overflowing. */
.uborka-site[lang="uz"] h1,
.translatepress-uz_UZ .uborka-site h1,
.uborka-site[data-language="uz"] h1 { font-size: clamp(2.1rem, 7.6vw, 4.5rem); line-height: 1.02; }

.uborka-site a { color: var(--primary); text-decoration: none; }
.uborka-site a:hover { color: var(--primary-hover); }

.uborka-site img { max-width: 100%; height: auto; }

.uborka-site ul,
.uborka-site ol { margin: 0; padding: 0; list-style: none; }

/* ==========================================================================
   Utilities
   ========================================================================== */

/* Tabular figures without a monospace face: price columns align on digits
   and the zero keeps its plain bowl. */
.uborka-site .u-num { font-variant-numeric: tabular-nums lining-nums; letter-spacing: -0.02em; }

.uborka-site .u-eyebrow {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--primary);
}

.uborka-site .u-rule { height: 1px; margin: 0; border: 0; background: var(--line); }

/* Unfilled facts are marked, never silently invented. */
.uborka-site .u-ph { color: var(--placeholder); border-bottom: 1px dashed var(--placeholder); }

.uborka-site .u-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

/* ==========================================================================
   Layout
   ========================================================================== */

.uborka-site .u-container {
    width: 100%;
    max-width: 1440px;
    margin-inline: auto;
    padding-inline: var(--gutter);
}

.uborka-site .u-section { padding-block: clamp(40px, 6vw, 80px); }
.uborka-site .u-section--tint { background: var(--tint); }
.uborka-site .u-section--paper2 { background: var(--paper-2); border-block: 1px solid var(--line); }
.uborka-site .u-section--primary { background: var(--primary); color: var(--on-primary); }
.uborka-site .u-section--primary h1,
.uborka-site .u-section--primary h2,
.uborka-site .u-section--primary h3 { color: var(--on-primary); }

/* ==========================================================================
   Buttons
   ========================================================================== */

.uborka-site .u-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 56px;
    padding: 8px 30px;
    border: 1.5px solid transparent;
    border-radius: var(--radius);
    font: inherit;
    font-size: 1.0625rem;
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
    cursor: pointer;
}

.uborka-site .u-btn--primary { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.uborka-site .u-btn--primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); color: var(--on-primary); }
.uborka-site .u-btn--outline { background: transparent; border-color: var(--ink); color: var(--ink); }
.uborka-site .u-btn--outline:hover { background: var(--paper-2); color: var(--ink); }
.uborka-site .u-btn--onprimary { background: var(--on-primary); border-color: var(--on-primary); color: var(--primary-deep); }
.uborka-site .u-btn--onprimary:hover { background: var(--tint); color: var(--primary-deep); }
.uborka-site .u-btn--onprimary-outline { background: transparent; border-color: #7fb6b7; color: var(--on-primary); }
.uborka-site .u-btn--onprimary-outline:hover { background: var(--primary-hover); color: var(--on-primary); }
.uborka-site .u-btn[disabled] { background: #eeece7; border-color: #eeece7; color: var(--ink-3); cursor: not-allowed; }
.uborka-site .u-btn--block { display: flex; width: 100%; }

/* ==========================================================================
   Rows and lists
   ========================================================================== */

.uborka-site .u-row {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    padding: 20px var(--gutter);
    border-bottom: 1px solid var(--line);
    color: var(--ink);
}
.uborka-site .u-row:hover { background: var(--paper-2); color: var(--ink); }
.uborka-site .u-row__name { flex-grow: 1; font-size: 1.125rem; font-weight: 700; }
.uborka-site .u-row__price { font-size: 0.9375rem; font-weight: 600; color: var(--primary); white-space: nowrap; }

.uborka-site .u-chk {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 0.9375rem;
    line-height: 1.4;
    color: var(--ink-2);
}
.uborka-site .u-chk svg { flex-shrink: 0; margin-top: 2px; }

/* ==========================================================================
   Motion
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
    .uborka-site *,
    .uborka-site *::before,
    .uborka-site *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ==========================================================================
   Header
   ========================================================================== */

.uborka-site .uborka-header {
    position: sticky;
    top: 0;
    z-index: 40;
    background: var(--paper);
    border-bottom: 1px solid var(--line);
    color: var(--ink);
}

.uborka-site .uborka-header__inner {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 68px;
    padding: 10px 20px;
}

.uborka-site .uborka-header__burger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin-left: -10px;
    padding: 0;
    background: none;
    border: 0;
    color: var(--ink);
    cursor: pointer;
}

.uborka-site .uborka-brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    color: var(--ink);
}
.uborka-site .uborka-brand img { width: 40px; height: 40px; object-fit: contain; display: block; }
.uborka-site .uborka-brand__word { display: none; font-size: 1rem; font-weight: 800; letter-spacing: 0.02em; }

.uborka-site .uborka-header__nav { display: none; }

.uborka-site .uborka-header__actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}

.uborka-site .uborka-language {
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 3px;
    background: var(--paper-2);
    border-radius: var(--radius);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}
.uborka-site .uborka-language a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    height: 32px;
    padding-inline: 8px;
    border-radius: 3px;
    color: var(--ink-3);
}
.uborka-site .uborka-language a:hover { color: var(--ink); }
.uborka-site .uborka-language a.is-active { background: var(--paper); color: var(--primary-deep); }

.uborka-site .uborka-header__phone { display: none; }

.uborka-site .uborka-header__phone-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 38px;
    background: var(--primary);
    border: 0;
    border-radius: var(--radius);
    color: var(--on-primary);
}
.uborka-site .uborka-header__phone-icon:hover { background: var(--primary-hover); color: var(--on-primary); }

.uborka-site .uborka-header__cta { display: none; }

@media (min-width: 1024px) {
    .uborka-site .uborka-header__inner { gap: 24px; min-height: 84px; padding-inline: 60px; }
    .uborka-site .uborka-header__burger { display: none; }
    .uborka-site .uborka-brand__word { display: inline; }
    .uborka-site .uborka-brand img { width: 44px; height: 44px; }
    .uborka-site .uborka-header__nav { display: flex; align-items: center; gap: 22px; }
    .uborka-site .uborka-header__nav a { font-size: 0.9375rem; font-weight: 600; color: var(--ink); }
    .uborka-site .uborka-header__nav a:hover { color: var(--primary); }
    .uborka-site .uborka-header__actions { gap: 20px; }
    .uborka-site .uborka-header__phone { display: inline; font-size: 1rem; font-weight: 600; color: var(--ink); white-space: nowrap; }
    .uborka-site .uborka-header__phone-icon { display: none; }
    .uborka-site .uborka-header__cta { display: inline-flex; min-height: 48px; padding-inline: 22px; font-size: 0.9375rem; white-space: nowrap; }
}

/* ==========================================================================
   Mobile navigation dialog
   ========================================================================== */

.uborka-site .uborka-mobile-menu {
    width: 100%;
    max-width: 480px;
    max-height: 100dvh;
    height: 100dvh;
    margin: 0 0 0 auto;
    padding: 0;
    border: 0;
    background: var(--paper);
    color: var(--ink);
    overflow-y: auto;
}
.uborka-site .uborka-mobile-menu::backdrop { background: rgb(13 13 13 / 45%); }
.uborka-site .uborka-mobile-menu:not([open]) { display: none; }

.uborka-site .uborka-mobile-menu__header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 20px;
    border-bottom: 1px solid var(--line);
}
.uborka-site .uborka-mobile-menu__header .uborka-brand__word { display: inline; font-size: 0.9375rem; }

.uborka-site .uborka-mobile-menu__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin-left: auto;
    margin-right: -10px;
    padding: 0;
    background: none;
    border: 0;
    color: var(--ink);
    cursor: pointer;
}

.uborka-site .uborka-menu__toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 60px;
    padding: 16px var(--gutter);
    background: var(--paper);
    border: 0;
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    font: inherit;
    font-size: 1.375rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    text-align: left;
    cursor: pointer;
}
.uborka-site .uborka-menu__toggle-label { flex-grow: 1; }
.uborka-site .uborka-menu__count { font-size: 0.8125rem; font-weight: 600; color: var(--ink-2); }
.uborka-site .uborka-menu__chevron { color: var(--primary); transition: transform 150ms ease; }
.uborka-site .uborka-menu__toggle[aria-expanded="false"] .uborka-menu__chevron { transform: rotate(180deg); }

.uborka-site .uborka-menu__services { background: var(--paper-2); }
.uborka-site .uborka-menu__services a {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
    padding: 14px var(--gutter);
    border-bottom: 1px solid #e8e6e0;
    color: var(--ink);
}
.uborka-site .uborka-menu__service-name { flex-grow: 1; font-size: 1rem; font-weight: 600; }
.uborka-site .uborka-menu__service-price { font-size: 0.875rem; font-weight: 600; color: var(--primary); white-space: nowrap; }
.uborka-site .uborka-menu__all { background: var(--paper); color: var(--primary); }
.uborka-site .uborka-menu__all .uborka-menu__service-name { color: var(--primary); }

.uborka-site .uborka-menu__link {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 60px;
    padding: 16px var(--gutter);
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    font-size: 1.375rem;
    font-weight: 800;
    letter-spacing: -0.02em;
}
.uborka-site .uborka-menu__link span { flex-grow: 1; }

.uborka-site .uborka-mobile-menu__footer {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 24px;
    background: var(--paper-2);
    border-top: 1px solid var(--line);
}
.uborka-site .uborka-mobile-menu__language { display: flex; gap: 8px; }
.uborka-site .uborka-mobile-menu__language a {
    display: flex;
    flex-grow: 1;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    color: var(--ink-2);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.04em;
}
.uborka-site .uborka-mobile-menu__language a.is-active {
    background: var(--tint);
    border: 1.5px solid var(--primary);
    color: var(--primary-deep);
    font-weight: 700;
}

.uborka-site .uborka-mobile-menu__phone {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
    color: var(--ink);
    font-size: 1.25rem;
    font-weight: 700;
}
.uborka-site .uborka-mobile-menu__hours { margin-top: -12px; padding-left: 32px; font-size: 0.875rem; color: var(--ink-2); }
.uborka-site .uborka-mobile-menu__handle { margin-top: -8px; font-size: 0.875rem; color: var(--ink-2); text-align: center; }

@media (min-width: 1024px) {
    .uborka-site .uborka-mobile-menu { display: none; }
}

/* ==========================================================================
   Homepage — hero
   ========================================================================== */

.uborka-site .uborka-home { background: var(--paper); }

.uborka-site .uborka-hero { display: grid; grid-template-columns: minmax(0, 1fr); }

.uborka-site .uborka-hero__copy {
    display: flex;
    flex-direction: column;
    gap: 22px;
    padding: 34px var(--gutter) 28px;
}

.uborka-site .uborka-hero__lead { font-size: 1.125rem; line-height: 1.42; color: var(--ink-2); max-width: 34ch; }

.uborka-site .uborka-hero__price-line { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.uborka-site .uborka-hero__price-from { font-size: 0.9375rem; font-weight: 600; color: var(--ink-2); }
.uborka-site .uborka-hero__price-value { font-size: clamp(2.125rem, 7vw, 2.875rem); font-weight: 800; color: var(--primary); }
.uborka-site .uborka-hero__price-unit { font-size: 1rem; font-weight: 600; color: var(--primary); }
.uborka-site .uborka-hero__price-note { margin-top: 6px; font-size: 0.875rem; color: var(--ink-2); }

.uborka-site .uborka-hero__benefits { display: flex; flex-direction: column; gap: 14px; }
.uborka-site .uborka-hero__benefits li { display: flex; align-items: flex-start; gap: 12px; font-size: 1rem; line-height: 1.35; }
.uborka-site .uborka-hero__benefits svg { flex-shrink: 0; margin-top: 1px; }
.uborka-site .uborka-hero__benefit-rest { color: var(--ink-2); }

.uborka-site .uborka-hero__actions { display: flex; flex-direction: column; gap: 10px; }
.uborka-site .uborka-hero__actions .u-btn { width: 100%; }
.uborka-site .uborka-hero__note { margin-top: 4px; font-size: 0.875rem; color: var(--ink-2); text-align: center; }

.uborka-site .uborka-hero__media img { display: block; width: 100%; height: 250px; object-fit: cover; object-position: 50% 45%; }

/* Rating strip: a full-bleed band on mobile, an inline card on desktop. */
.uborka-site .uborka-rating {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-inline: calc(var(--gutter) * -1);
    padding: 16px var(--gutter);
    background: var(--paper-2);
    border-block: 1px solid var(--line);
    color: var(--ink);
}
.uborka-site .uborka-rating:hover { color: var(--ink); background: var(--tint); }
.uborka-site .uborka-rating svg { flex-shrink: 0; }
.uborka-site .uborka-rating__body { flex-grow: 1; }
.uborka-site .uborka-rating__line { display: flex; align-items: baseline; gap: 8px; }
.uborka-site .uborka-rating__value { font-size: 1.375rem; font-weight: 800; }
.uborka-site .uborka-rating__of { font-size: 0.875rem; color: var(--ink-2); }
.uborka-site .uborka-rating__basis { display: block; margin-top: 2px; font-size: 0.8125rem; color: var(--ink-2); }
.uborka-site .uborka-stars { display: inline-flex; gap: 2px; flex-shrink: 0; }

@media (min-width: 1024px) {
    .uborka-site .uborka-hero { grid-template-columns: minmax(0, 1fr) 540px; }
    .uborka-site .uborka-hero__copy { gap: 26px; padding: 72px 60px 56px; }
    .uborka-site .uborka-hero__lead { font-size: 1.375rem; max-width: 32ch; }
    .uborka-site .uborka-hero__price-line { align-items: baseline; }
    .uborka-site .uborka-hero__price-value { font-size: 2.875rem; }
    .uborka-site .uborka-hero__price-unit { font-size: 1.1875rem; }
    .uborka-site .uborka-hero__price-note { display: inline-block; margin-top: 8px; }
    .uborka-site .uborka-hero__benefits { flex-direction: row; flex-wrap: wrap; gap: 34px; }
    .uborka-site .uborka-hero__actions { flex-direction: row; align-items: center; gap: 14px; }
    .uborka-site .uborka-hero__actions .u-btn { width: auto; min-height: 60px; }
    .uborka-site .uborka-hero__note { margin-top: 0; margin-left: 6px; text-align: left; }
    .uborka-site .uborka-hero__media { position: relative; overflow: hidden; }
    .uborka-site .uborka-hero__media img { position: absolute; inset: 0; height: 100%; object-position: 45% 50%; }
    .uborka-site .uborka-rating { margin-inline: 0; max-width: 480px; border: 1px solid var(--line); border-radius: var(--radius); }
}

/* ==========================================================================
   Homepage — facts
   ========================================================================== */

.uborka-site .uborka-facts { border-bottom: 1px solid var(--line); }
.uborka-site .uborka-facts ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.uborka-site .uborka-facts li {
    padding: 22px var(--gutter);
    border-top: 1px solid var(--line);
    border-right: 1px solid var(--line);
}
.uborka-site .uborka-facts li:nth-child(2n) { border-right: 0; }
.uborka-site .uborka-facts__value { font-size: 1.625rem; font-weight: 800; }
.uborka-site .uborka-facts__label { margin-top: 6px; font-size: 0.8125rem; line-height: 1.3; color: var(--ink-2); }

@media (min-width: 1024px) {
    .uborka-site .uborka-facts ul { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .uborka-site .uborka-facts li { padding: 30px 40px; border-top: 1px solid var(--line); }
    .uborka-site .uborka-facts li:first-child { padding-left: 60px; }
    .uborka-site .uborka-facts li:last-child { padding-right: 60px; border-right: 0; }
    .uborka-site .uborka-facts li:nth-child(2n) { border-right: 1px solid var(--line); }
    .uborka-site .uborka-facts__value { font-size: 2.125rem; }
    .uborka-site .uborka-facts__label { font-size: 0.9375rem; }
}

/* ==========================================================================
   Section heads
   ========================================================================== */

.uborka-site .uborka-section-head { padding: 44px var(--gutter) 22px; }
.uborka-site .uborka-section-head h2 { margin-top: 14px; }
.uborka-site .uborka-section-head__lead { margin-top: 12px; font-size: 1rem; line-height: 1.45; color: var(--ink-2); }

@media (min-width: 1024px) {
    .uborka-site .uborka-section-head {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 520px;
        gap: 60px;
        align-items: end;
        padding: 80px 60px 32px;
    }
    .uborka-site .uborka-section-head h2 { margin-top: 18px; }
    .uborka-site .uborka-section-head__lead { margin-top: 0; padding-bottom: 8px; font-size: 1.125rem; }
}

.uborka-site .uborka-textlink {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    font-size: 1rem;
    font-weight: 700;
    color: var(--ink);
}
.uborka-site .uborka-textlink span { box-shadow: inset 0 -2px 0 var(--primary); }
.uborka-site .uborka-textlink:hover { color: var(--primary); }

/* ==========================================================================
   Homepage — price table
   ========================================================================== */

.uborka-site .uborka-prices__list { border-top: 1px solid var(--ink); }

.uborka-site .uborka-prices__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 12px;
    padding: 18px var(--gutter);
    border-bottom: 1px solid var(--line);
    color: var(--ink);
}
.uborka-site .uborka-prices__row:hover { background: var(--paper-2); color: var(--ink); }

.uborka-site .uborka-prices__index { display: none; }
.uborka-site .uborka-prices__name { font-size: 1.125rem; font-weight: 700; line-height: 1.25; }
.uborka-site .uborka-prices__description { display: none; }
.uborka-site .uborka-prices__price { font-size: 0.9375rem; font-weight: 600; color: var(--primary); white-space: nowrap; }

.uborka-site .uborka-prices__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 12px var(--gutter) 40px;
}
.uborka-site .uborka-prices__unit { font-size: 0.8125rem; color: var(--ink-2); text-align: right; }

@media (min-width: 1024px) {
    .uborka-site .uborka-prices__row {
        grid-template-columns: 56px minmax(0, 1fr) 230px 170px 36px;
        gap: 20px;
        padding: 24px 60px;
    }
    .uborka-site .uborka-prices__index { display: block; font-size: 0.8125rem; font-weight: 800; color: var(--primary); }
    .uborka-site .uborka-prices__name { font-size: 1.5625rem; }
    .uborka-site .uborka-prices__description { display: block; font-size: 0.9375rem; color: var(--ink-2); }
    .uborka-site .uborka-prices__price { font-size: 1.25rem; text-align: right; }
    .uborka-site .uborka-prices__row svg { justify-self: end; }
    .uborka-site .uborka-prices__foot { padding: 16px 60px 0; }
}

/* ==========================================================================
   Homepage — what is included
   ========================================================================== */

.uborka-site .uborka-includes__grid { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.uborka-site .uborka-includes__group { padding: 22px var(--gutter); border-bottom: 1px solid var(--line); }
.uborka-site .uborka-includes__group:last-child { border-bottom: 0; }
.uborka-site .uborka-includes__group--negative { background: var(--paper-2); }
.uborka-site .uborka-includes__group ul { display: flex; flex-direction: column; gap: 9px; margin-top: 12px; }
.uborka-site .uborka-includes__group--negative .u-chk { color: #6b6862; }

@media (min-width: 1024px) {
    .uborka-site .uborka-includes__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .uborka-site .uborka-includes__group {
        padding: 32px;
        border-bottom: 0;
        border-right: 1px solid var(--line);
    }
    .uborka-site .uborka-includes__group:first-child { padding-left: 60px; }
    .uborka-site .uborka-includes__group:last-child { padding-right: 60px; border-right: 0; }
    .uborka-site .uborka-includes__group ul { gap: 11px; margin-top: 16px; }
    .uborka-site .uborka-includes__group .u-chk { font-size: 1rem; }
}

/* ==========================================================================
   Homepage — process
   ========================================================================== */

.uborka-site .uborka-process__intro { padding: 44px var(--gutter) 22px; }
.uborka-site .uborka-process__intro h2 { margin-top: 14px; }
.uborka-site .uborka-process__lead { margin-top: 12px; font-size: 1rem; line-height: 1.45; color: var(--ink-2); }
.uborka-site .uborka-process__intro img { display: none; }

.uborka-site .uborka-process__steps li {
    display: grid;
    grid-template-columns: 26px minmax(0, 1fr);
    gap: 18px;
    padding: 20px var(--gutter);
    border-top: 1px solid var(--line);
}
.uborka-site .uborka-process__steps li:last-child { border-bottom: 1px solid var(--line); }
.uborka-site .uborka-process__index { padding-top: 3px; font-size: 0.875rem; font-weight: 800; color: var(--primary); }
.uborka-site .uborka-process__steps p { margin-top: 4px; font-size: 0.9375rem; line-height: 1.4; color: var(--ink-2); }

@media (min-width: 1024px) {
    .uborka-site .uborka-process { display: grid; grid-template-columns: 470px minmax(0, 1fr); gap: 80px; padding: 80px 60px 76px; }
    .uborka-site .uborka-process__intro { padding: 0; }
    .uborka-site .uborka-process__intro h2 { margin-top: 18px; }
    .uborka-site .uborka-process__lead { margin-top: 22px; font-size: 1.125rem; }
    .uborka-site .uborka-process__intro img {
        display: block;
        width: 100%;
        height: 250px;
        margin-top: 30px;
        border-radius: var(--radius);
        object-fit: cover;
    }
    .uborka-site .uborka-process__steps li { grid-template-columns: 70px minmax(0, 1fr); gap: 20px; padding: 26px 0; }
    .uborka-site .uborka-process__steps li:first-child { border-top: 1px solid var(--ink); }
    .uborka-site .uborka-process__index { font-size: 0.9375rem; padding-top: 5px; }
    .uborka-site .uborka-process__steps p { font-size: 1rem; line-height: 1.5; margin-top: 6px; }
}

/* ==========================================================================
   Homepage — reviews and clients
   ========================================================================== */

.uborka-site .uborka-reviews__list { border-top: 1px solid var(--ink); }
.uborka-site .uborka-reviews__list li { padding: 22px var(--gutter); border-bottom: 1px solid var(--line); }
.uborka-site .uborka-reviews__list blockquote { margin: 12px 0 0; }
.uborka-site .uborka-reviews__list blockquote p { font-size: 1rem; line-height: 1.5; }
.uborka-site .uborka-reviews__author { margin-top: 10px; font-size: 0.875rem; color: var(--ink-2); }
.uborka-site .uborka-reviews__author strong { color: var(--ink); }
.uborka-site .uborka-reviews__author span::before { content: " · "; }
.uborka-site .uborka-reviews__foot { padding: 12px var(--gutter) 40px; }

.uborka-site .uborka-clients__head { display: flex; flex-direction: column; gap: 12px; }
.uborka-site .uborka-clients__head h2 { margin-top: 12px; font-size: clamp(1.75rem, 4vw, 2.5rem); }
.uborka-site .uborka-clients__lead { font-size: 0.9375rem; color: var(--ink-2); }

@media (min-width: 1024px) {
    .uborka-site .uborka-reviews__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
    .uborka-site .uborka-reviews__list li { padding: 28px; border-bottom: 0; border-right: 1px solid var(--line); }
    .uborka-site .uborka-reviews__list li:first-child { padding-left: 60px; }
    .uborka-site .uborka-reviews__list li:last-child { padding-right: 60px; border-right: 0; }
    .uborka-site .uborka-reviews__foot { padding: 18px 60px 0; }
    .uborka-site .uborka-clients__head { flex-direction: row; align-items: baseline; justify-content: space-between; gap: 24px; }
}

/* ==========================================================================
   Homepage — FAQ
   ========================================================================== */

.uborka-site .uborka-faq__intro h2 { margin-top: 14px; }
.uborka-site .uborka-faq__lead { margin-top: 12px; font-size: 1rem; line-height: 1.45; color: var(--ink-2); }

.uborka-site .uborka-faq__list {
    display: flex;
    flex-direction: column;
    gap: 1px;
    margin-top: 26px;
    background: var(--tint-line);
    border-radius: var(--radius);
    overflow: hidden;
}
.uborka-site .uborka-faq__item { background: var(--paper); }

.uborka-site .uborka-faq__question {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    width: 100%;
    min-height: 60px;
    padding: 20px 18px;
    background: none;
    border: 0;
    color: var(--ink);
    font: inherit;
    font-size: 1.0625rem;
    font-weight: 700;
    line-height: 1.3;
    text-align: left;
    cursor: pointer;
}
.uborka-site .uborka-faq__question > span:first-child { flex-grow: 1; }

/* Plus turns into a minus when the row is open: an affordance that does not
   depend on colour. */
.uborka-site .uborka-faq__sign {
    position: relative;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin-top: 3px;
}
.uborka-site .uborka-faq__sign::before,
.uborka-site .uborka-faq__sign::after {
    content: "";
    position: absolute;
    background: var(--primary);
}
.uborka-site .uborka-faq__sign::before { top: 8px; left: 1px; width: 16px; height: 2.2px; }
.uborka-site .uborka-faq__sign::after { top: 1px; left: 8px; width: 2.2px; height: 16px; }
.uborka-site .uborka-faq__question[aria-expanded="true"] .uborka-faq__sign::after { display: none; }

.uborka-site .uborka-faq__answer { padding: 0 18px 20px; }
.uborka-site .uborka-faq__answer p { font-size: 0.9375rem; line-height: 1.5; color: var(--ink-2); }

@media (min-width: 1024px) {
    .uborka-site .uborka-faq__inner { display: grid; grid-template-columns: 470px minmax(0, 1fr); gap: 80px; align-items: start; }
    .uborka-site .uborka-faq__intro h2 { margin-top: 18px; }
    .uborka-site .uborka-faq__lead { margin-top: 22px; font-size: 1.125rem; }
    .uborka-site .uborka-faq__list { gap: 2px; margin-top: 0; }
    .uborka-site .uborka-faq__question { padding: 26px 28px; font-size: 1.25rem; }
    .uborka-site .uborka-faq__sign { margin-top: 5px; width: 20px; height: 20px; }
    .uborka-site .uborka-faq__answer { padding: 0 28px 26px; max-width: 60ch; }
    .uborka-site .uborka-faq__answer p { font-size: 1rem; line-height: 1.55; }
}

/* ==========================================================================
   Homepage — districts
   ========================================================================== */

.uborka-site .uborka-geo__list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0 var(--gutter) 40px;
}
.uborka-site .uborka-geo__list li {
    display: flex;
    align-items: center;
    min-height: 40px;
    padding: 0 14px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    font-size: 0.875rem;
    color: var(--ink-2);
}

@media (min-width: 1024px) {
    .uborka-site .uborka-geo__list { gap: 10px; padding: 0 60px 76px; }
    .uborka-site .uborka-geo__list li { min-height: 44px; padding: 0 18px; font-size: 0.9375rem; }
}

/* ==========================================================================
   Homepage — closing CTA
   ========================================================================== */

.uborka-site .uborka-cta__lead { margin-top: 14px; font-size: 1rem; line-height: 1.45; color: #cbe6e5; }
.uborka-site .uborka-cta__actions { display: flex; flex-direction: column; gap: 10px; margin-top: 26px; }
.uborka-site .uborka-cta__actions .u-btn { width: 100%; }

@media (min-width: 1024px) {
    .uborka-site .uborka-cta__lead { margin-top: 20px; max-width: 52ch; font-size: 1.25rem; }
    .uborka-site .uborka-cta__actions { flex-direction: row; gap: 14px; margin-top: 34px; }
    .uborka-site .uborka-cta__actions .u-btn { width: auto; min-height: 60px; }
}

/* ==========================================================================
   Footer — light, never dark
   ========================================================================== */

.uborka-site .uborka-footer {
    background: var(--paper-2);
    border-top: 1px solid var(--line);
    color: var(--ink);
    padding-block: 36px 30px;
}

.uborka-site .uborka-footer__brand { display: inline-flex; align-items: center; gap: 12px; }
.uborka-site .uborka-footer__brand img { width: 40px; height: 40px; object-fit: contain; }
.uborka-site .uborka-footer__brand .uborka-brand__word { display: inline; font-size: 1rem; font-weight: 800; letter-spacing: 0.02em; }
.uborka-site .uborka-footer__seo { margin-top: 18px; font-size: 0.8125rem; line-height: 1.55; color: #6b6862; }

.uborka-site .uborka-footer__columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px 20px;
    margin-top: 30px;
}
.uborka-site .uborka-footer__columns > div { display: flex; flex-direction: column; gap: 10px; }
.uborka-site .uborka-footer__head {
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ink-3);
}
.uborka-site .uborka-footer__columns a,
.uborka-site .uborka-footer__columns span { font-size: 0.9375rem; color: var(--ink-2); }
.uborka-site .uborka-footer__columns a:hover { color: var(--primary); }

.uborka-site .uborka-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid var(--line);
    font-size: 0.875rem;
    color: var(--ink-3);
}
.uborka-site .uborka-footer__langs { display: flex; gap: 16px; }
.uborka-site .uborka-footer__langs a { font-size: 0.875rem; color: var(--ink-2); }

@media (min-width: 1024px) {
    .uborka-site .uborka-footer { padding-block: 52px 40px; }
    .uborka-site .uborka-footer__inner { display: grid; grid-template-columns: 470px minmax(0, 1fr); gap: 80px; align-items: start; }
    .uborka-site .uborka-footer__columns { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px; margin-top: 0; }
    .uborka-site .uborka-footer__seo { font-size: 0.875rem; }
    .uborka-site .uborka-footer__bottom { margin-top: 44px; padding-top: 24px; }
}

/* ==========================================================================
   Break our full-bleed sections out of the theme container
   ==========================================================================
   The theme wraps page content in <main class="tm-main uk-section"><div
   class="uk-container">. Our homepage sections are edge-to-edge by design —
   the price table rules and the tinted bands must reach the viewport edge —
   so on our own routes the container stops constraining and our own
   .u-container handles the reading width instead. */

.uborka-site.home .tm-main,
.uborka-site.uborka-custom-page .tm-main {
    padding-block: 0;
    background: var(--paper);
}

.uborka-site.home .tm-main > .uk-container,
.uborka-site.uborka-custom-page .tm-main > .uk-container {
    max-width: none;
    padding-inline: 0;
}

.uborka-site.home .uk-article,
.uborka-site.home .entry-content,
.uborka-site.uborka-custom-page .uk-article { margin: 0; }

/* The theme paints .tm-page; keep the page ground white so tinted sections
   read as deliberate rather than as gaps. */
.uborka-site .tm-page { background: var(--paper); }

/* ==========================================================================
   Hero actions: never squeeze the labels
   ==========================================================================
   At 1024px the row held two buttons plus the reply note and the buttons
   collapsed, wrapping "Написать в Telegram" onto three lines. */

.uborka-site .uborka-hero__actions .u-btn { flex-shrink: 0; }

@media (min-width: 1024px) {
    .uborka-site .uborka-hero__actions { flex-wrap: wrap; row-gap: 12px; }
    .uborka-site .uborka-hero__note { flex-basis: 100%; margin-left: 0; }
}

@media (min-width: 1280px) {
    .uborka-site .uborka-hero__note { flex-basis: auto; margin-left: 6px; }
}

/* ==========================================================================
   Section rhythm
   ==========================================================================
   The clients band sat flush against the reviews grid above and the FAQ
   below, so all three read as one undifferentiated block. */

.uborka-site .uborka-clients { margin-top: 44px; }
.uborka-site .uborka-clients__head h2 { margin-top: 12px; }

@media (min-width: 1024px) {
    .uborka-site .uborka-clients { margin-top: 62px; }
}

/* The turquoise closing band needs air above it for the same reason. */
.uborka-site .uborka-cta { margin-top: 8px; }

/* Honeypot: present for bots, invisible and unreachable for people. */
.uborka-site .uborka-hp {
    position: absolute !important;
    left: -9999px !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* ==========================================================================
   Homepage — calculator
   ==========================================================================
   The plugin ships its own calc.css. Rather than a second theme, we drive its
   surface from the same tokens as everything else (HANDOFF: no isolated
   calculator theme). */

.uborka-site .uborka-calc { padding-block: clamp(40px, 6vw, 78px); }
.uborka-site .uborka-calc__intro h2 { margin-top: 14px; }
.uborka-site .uborka-calc__lead { margin-top: 12px; font-size: 1rem; line-height: 1.5; color: var(--ink-2); }
.uborka-site .uborka-calc__note {
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid var(--line);
    font-size: 0.9375rem;
    color: var(--ink-2);
}
.uborka-site .uborka-calc__box { margin-top: 26px; }

@media (min-width: 1024px) {
    .uborka-site .uborka-calc__inner { display: grid; grid-template-columns: 470px minmax(0, 1fr); gap: 80px; align-items: start; }
    .uborka-site .uborka-calc__intro h2 { margin-top: 18px; }
    .uborka-site .uborka-calc__lead { margin-top: 22px; font-size: 1.125rem; }
    .uborka-site .uborka-calc__box { margin-top: 0; }
}

/* ==========================================================================
   Calculator — slider, priced add-ons, running total
   ==========================================================================
   The plugin ships calc.css; rather than a second theme this drives its whole
   surface from the shared tokens (HANDOFF: no isolated calculator theme). */

.uborka-site .uborka-calc .ubc-calc {
    margin: 0;
    max-width: none;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: none;
}

.uborka-site .ubc-calc__grid { display: flex; flex-direction: column; }
.uborka-site .ubc-calc__controls { display: flex; flex-direction: column; gap: 26px; padding: clamp(20px, 3vw, 32px); }

.uborka-site .ubc-field { margin: 0; padding: 0; border: 0; }
.uborka-site .ubc-field__label {
    display: block;
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--ink);
}

.uborka-site .ubc-select__el,
.uborka-site .ubc-input {
    width: 100%;
    min-height: 56px;
    margin-top: 10px;
    padding: 0 16px;
    background: var(--paper);
    border: 1.5px solid var(--ink);
    border-radius: var(--radius);
    color: var(--ink);
    font: inherit;
    font-size: 1.0625rem;
    font-weight: 600;
}
.uborka-site .ubc-input { border-width: 1px; border-color: var(--line); font-weight: 400; }

/* --- area slider --- */

.uborka-site .ubc-area-field__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.uborka-site .ubc-area-field__value {
    font-size: 1.375rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums lining-nums;
    color: var(--primary);
}

.uborka-site .ubc-range {
    display: block;
    width: 100%;
    height: 28px;
    margin-top: 14px;
    background: transparent;
    -webkit-appearance: none;
    appearance: none;
}
.uborka-site .ubc-range::-webkit-slider-runnable-track {
    height: 4px;
    background: var(--line);
    border-radius: 2px;
}
.uborka-site .ubc-range::-moz-range-track {
    height: 4px;
    background: var(--line);
    border-radius: 2px;
}
/* 28px handle inside a 28px-tall control: comfortably past the 24px minimum
   for a pointer target, and the label above states the value in text. */
.uborka-site .ubc-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    margin-top: -12px;
    background: var(--primary);
    border: 3px solid var(--paper);
    border-radius: 50%;
    box-shadow: 0 0 0 1px var(--primary);
    cursor: grab;
}
.uborka-site .ubc-range::-moz-range-thumb {
    width: 28px;
    height: 28px;
    background: var(--primary);
    border: 3px solid var(--paper);
    border-radius: 50%;
    box-shadow: 0 0 0 1px var(--primary);
    cursor: grab;
}
.uborka-site .ubc-range:focus-visible { outline: 3px solid var(--focus); outline-offset: 6px; }

.uborka-site .ubc-area-field__scale {
    display: flex;
    justify-content: space-between;
    margin-top: 4px;
    font-size: 0.8125rem;
    color: var(--ink-2);
}
.uborka-site .ubc-area-field__hint { margin-top: 10px; font-size: 0.8125rem; color: var(--ink-2); }

/* --- add-ons --- */

.uborka-site .ubc-extras__list { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.uborka-site .ubc-extra { position: relative; }
.uborka-site .ubc-extra__input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.uborka-site .ubc-extra__label {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
    padding: 8px 16px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    cursor: pointer;
}
.uborka-site .ubc-extra__label::before {
    content: "";
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    border: 1.5px solid var(--line);
    border-radius: 2px;
}
.uborka-site .ubc-extra__input:checked + .ubc-extra__label {
    background: var(--tint);
    border: 1.5px solid var(--primary);
}
.uborka-site .ubc-extra__input:checked + .ubc-extra__label::before {
    background: var(--primary);
    border-color: var(--primary);
    box-shadow: inset 0 0 0 2px var(--paper), inset 0 0 0 4px var(--primary);
}
.uborka-site .ubc-extra__input:focus-visible + .ubc-extra__label { outline: 3px solid var(--focus); outline-offset: 3px; }
.uborka-site .ubc-extra__name { flex-grow: 1; font-size: 0.9375rem; }
.uborka-site .ubc-extra__price { font-size: 0.9375rem; font-weight: 700; white-space: nowrap; }
.uborka-site .ubc-extra__tbd { font-weight: 400; color: var(--ink-2); }
.uborka-site .ubc-extra__unit { font-weight: 400; color: var(--ink-2); }

/* --- running total --- */

.uborka-site .ubc-summary {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0 clamp(20px, 3vw, 32px) clamp(20px, 3vw, 32px);
    padding: 22px;
    background: var(--tint);
    border-radius: var(--radius);
}
.uborka-site .ubc-summary__eyebrow {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--primary-deep);
}
.uborka-site .ubc-summary__label { font-size: 0.875rem; color: var(--ink-2); }
.uborka-site .ubc-summary__total { display: flex; align-items: baseline; gap: 8px; }
.uborka-site .ubc-summary .ubc-price { font-size: clamp(2rem, 6vw, 2.5rem); font-weight: 800; letter-spacing: -0.03em; }
.uborka-site .ubc-summary .ubc-currency { font-size: 1rem; font-weight: 600; color: var(--ink-2); }
/* Минимальный заказ. Появляется только когда площадь ниже базовой и
   цена за квадрат из-за этого выше объявленной «от». */
.uborka-site .ubc-summary__min { margin-top: 6px; font-size: 0.8125rem; line-height: 1.45; font-weight: 600; color: var(--primary-deep); }
.uborka-site .ubc-summary__extras { margin-top: 4px; font-size: 0.8125rem; color: var(--primary-deep); }
.uborka-site .ubc-summary .ubc-btn--primary {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 56px;
    margin-top: 12px;
    padding: 8px 24px;
    background: var(--primary);
    border: 1.5px solid var(--primary);
    border-radius: var(--radius);
    color: var(--on-primary);
    font: inherit;
    font-size: 1.0625rem;
    font-weight: 700;
    cursor: pointer;
}
.uborka-site .ubc-summary .ubc-btn--primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); }
.uborka-site .ubc-summary__note { margin-top: 10px; font-size: 0.75rem; line-height: 1.45; color: var(--ink-2); }

.uborka-site .ubc-promo-input { position: relative; }
.uborka-site .ubc-promo-status { position: absolute; right: 16px; bottom: 18px; font-size: 0.8125rem; }
.uborka-site .ubc-promo-status.is-ok { color: var(--primary); font-weight: 700; }
.uborka-site .ubc-promo-status.is-bad { color: var(--error); }

@media (min-width: 1024px) {
    .uborka-site .ubc-calc__grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; align-items: start; }
    .uborka-site .ubc-summary { margin: 32px 32px 32px 0; position: sticky; top: 104px; }
}

/* --- popup --- */

.uborka-site .ubc-popup__dialog {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: none;
}
.uborka-site .ubc-popup input[type="text"],
.uborka-site .ubc-popup input[type="tel"],
.uborka-site .ubc-popup input[type="email"] {
    width: 100%;
    min-height: 56px;
    padding: 0 16px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    font: inherit;
    font-size: 1rem;
}
.uborka-site .ubc-popup .wpcf7-submit,
.uborka-site .ubc-popup input[type="submit"] {
    width: 100%;
    min-height: 56px;
    margin-top: 12px;
    background: var(--primary);
    border: 1.5px solid var(--primary);
    border-radius: var(--radius);
    color: var(--on-primary);
    font: inherit;
    font-size: 1.0625rem;
    font-weight: 700;
    cursor: pointer;
}


/* ==========================================================================
   Desktop services dropdown
   ==========================================================================
   Mobile already listed all nine services inside the menu; the desktop header
   had a single link, so a visitor had to load a page to find out what is on
   offer. The panel ships in the markup and opens on hover and on focus-within,
   so it works with a keyboard and without JavaScript. */

.uborka-site .uborka-nav-services { position: relative; }

.uborka-site .uborka-nav-services__trigger {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--ink);
}
.uborka-site .uborka-nav-services__trigger svg { transition: transform 150ms ease; }

.uborka-site .uborka-nav-services__panel {
    position: absolute;
    top: calc(100% + 18px);
    left: -20px;
    z-index: 60;
    width: 480px;
    padding: 10px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity 140ms ease, transform 140ms ease, visibility 140ms;
}

/* A gap between trigger and panel would close it as the pointer crosses. */
.uborka-site .uborka-nav-services__panel::before {
    content: "";
    position: absolute;
    inset: -18px 0 100% 0;
}

.uborka-site .uborka-nav-services:hover .uborka-nav-services__panel,
.uborka-site .uborka-nav-services:focus-within .uborka-nav-services__panel {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.uborka-site .uborka-nav-services:hover .uborka-nav-services__trigger svg,
.uborka-site .uborka-nav-services:focus-within .uborka-nav-services__trigger svg {
    transform: rotate(180deg);
}

.uborka-site .uborka-nav-services__panel ul { display: flex; flex-direction: column; }
.uborka-site .uborka-nav-services__panel li + li { border-top: 1px solid var(--line); }

.uborka-site .uborka-nav-services__panel li a {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 2px 16px;
    padding: 10px 12px;
    border-radius: var(--radius);
    color: var(--ink);
}
.uborka-site .uborka-nav-services__panel li a:hover { background: var(--paper-2); color: var(--ink); }

.uborka-site .uborka-nav-services__name { font-size: 0.9375rem; font-weight: 700; }
.uborka-site .uborka-nav-services__price { font-size: 0.875rem; font-weight: 600; color: var(--primary); white-space: nowrap; }
.uborka-site .uborka-nav-services__desc {
    grid-column: 1 / -1;
    font-size: 0.8125rem;
    font-weight: 400;
    color: var(--ink-2);
}

.uborka-site .uborka-nav-services__all {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 6px;
    padding: 12px;
    border-top: 1px solid var(--line);
    color: var(--primary);
    font-size: 0.9375rem;
    font-weight: 700;
}

@media (prefers-reduced-motion: reduce) {
    .uborka-site .uborka-nav-services__panel,
    .uborka-site .uborka-nav-services__trigger svg { transition: none; }
}


/* Closing SEO copy: a reading column, quiet enough not to compete with the CTA. */
.uborka-site .uborka-seo-text { padding-block: clamp(28px, 4vw, 48px); border-top: 1px solid var(--line); }
.uborka-site .uborka-seo-text p {
    max-width: 68ch;
    font-size: 0.9375rem;
    line-height: 1.65;
    color: var(--ink-2);
}
.uborka-site .uborka-seo-text p + p { margin-top: 14px; }

/* Catalogue only: a short decision guide. */
.uborka-site .uborka-choose__list { border-top: 1px solid var(--ink); }
.uborka-site .uborka-choose__list > div { padding: 20px var(--gutter); border-bottom: 1px solid var(--line); }
.uborka-site .uborka-choose__list dt { font-size: 1.0625rem; font-weight: 700; }
.uborka-site .uborka-choose__list dd { margin: 6px 0 0; font-size: 0.9375rem; line-height: 1.5; color: var(--ink-2); }
.uborka-site .uborka-choose__list dd a { margin-left: 6px; font-weight: 700; white-space: nowrap; }

@media (min-width: 1024px) {
    .uborka-site .uborka-choose__list > div {
        display: grid;
        grid-template-columns: 320px minmax(0, 1fr);
        gap: 40px;
        padding: 24px 60px;
    }
    .uborka-site .uborka-choose__list dd { margin: 0; font-size: 1rem; max-width: 70ch; }
}

/* ==========================================================================
   Client logos — carousel
   ==========================================================================
   Fifteen logos as a grid ran to three rows and pressed against the sections
   above and below. A single scrolling row keeps the block one band tall.
   Manual only: PRD section 8 forbids autoplaying a logo row. */

.uborka-site .uborka-clients { padding-block: clamp(44px, 6vw, 72px); margin-top: 0; }
.uborka-site .uborka-clients__carousel { position: relative; margin-top: 26px; }

.uborka-site .uborka-clients__track {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    scroll-padding-inline: 0;
    scrollbar-width: none;
    padding-bottom: 2px;
}
.uborka-site .uborka-clients__track::-webkit-scrollbar { display: none; }
.uborka-site .uborka-clients__track:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }

.uborka-site .uborka-clients__track li {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 168px;
    height: 92px;
    padding: 12px 18px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    scroll-snap-align: start;
}

.uborka-site .uborka-clients__track img {
    max-width: 100%;
    max-height: 44px;
    width: auto;
    object-fit: contain;
    /* One visual weight across brands of very different colour and density.
       Two of the supplied files are white-ink and were inverted at import,
       so every mark now reads on a light tile. */
    filter: grayscale(1);
    opacity: 0.7;
    transition: filter 160ms ease, opacity 160ms ease;
}
.uborka-site .uborka-clients__track li:hover img { filter: none; opacity: 1; }

.uborka-site .uborka-clients__nav {
    position: absolute;
    top: 50%;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    transform: translateY(-50%);
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 50%;
    color: var(--ink);
    cursor: pointer;
}
.uborka-site .uborka-clients__nav:hover { background: var(--paper-2); }
.uborka-site .uborka-clients__nav:disabled { opacity: 0.35; cursor: default; }
.uborka-site .uborka-clients__nav--prev { left: -10px; }
.uborka-site .uborka-clients__nav--next { right: -10px; }

@media (min-width: 1024px) {
    .uborka-site .uborka-clients__nav--prev { left: -22px; }
    .uborka-site .uborka-clients__nav--next { right: -22px; }
}

@media (prefers-reduced-motion: reduce) {
    .uborka-site .uborka-clients__track { scroll-behavior: auto; }
    .uborka-site .uborka-clients__track img { transition: none; }
}

/* ==========================================================================
   Services dropdown — fit the viewport
   ==========================================================================
   Nine services in one column ran past the bottom of a 900px screen. Two
   columns halve the height, and a max-height keeps it inside the viewport on
   short screens instead of clipping. */

.uborka-site .uborka-nav-services__panel {
    width: min(760px, calc(100vw - 80px));
    max-height: min(560px, calc(100vh - 120px));
    overflow-y: auto;
    overscroll-behavior: contain;
}

.uborka-site .uborka-nav-services__panel ul {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 8px;
}
.uborka-site .uborka-nav-services__panel li + li { border-top: 0; }
.uborka-site .uborka-nav-services__panel li { border-bottom: 1px solid var(--line); }
.uborka-site .uborka-nav-services__panel li:nth-last-child(-n+2) { border-bottom: 0; }

@media (max-width: 1200px) {
    .uborka-site .uborka-nav-services__panel { width: min(560px, calc(100vw - 60px)); }
    .uborka-site .uborka-nav-services__panel ul { grid-template-columns: minmax(0, 1fr); }
    .uborka-site .uborka-nav-services__panel li:nth-last-child(-n+2) { border-bottom: 1px solid var(--line); }
    .uborka-site .uborka-nav-services__panel li:last-child { border-bottom: 0; }
}

/* ==========================================================================
   Соцсети в футере
   ==========================================================================
   ТЗ, пункт 9: «Мы в соцсетях». Иконка плюс подпись, а не одна иконка:
   в футере они мелкие, и без слова непонятно, куда ведёт ссылка. */

.uborka-site .uborka-footer__socials { display: flex; flex-direction: column; gap: 10px; }
.uborka-site .uborka-footer__socials li { display: block; }
.uborka-site .uborka-footer__socials a {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: var(--ink-2);
}
.uborka-site .uborka-footer__socials svg { flex: 0 0 auto; }

/* ==========================================================================
   «Почему компании выбирают нас» — только страница клининга офисов
   ==========================================================================
   Семь коротких пар «заголовок — пояснение». Двумя колонками блок читается
   как список условий сотрудничества, а не как ещё один длинный столбец. */

.uborka-site .uborka-b2b { padding-block: clamp(44px, 6vw, 72px); background: var(--paper-2); }
.uborka-site .uborka-b2b > * { padding-inline: var(--gutter); }

.uborka-site .uborka-b2b__list {
    display: grid;
    gap: 0;
    margin-top: 26px;
    border-top: 1px solid var(--ink);
}
.uborka-site .uborka-b2b__list > div {
    padding: 18px var(--gutter);
    border-bottom: 1px solid var(--line);
}
.uborka-site .uborka-b2b__list dt {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1rem;
    font-weight: 700;
}
.uborka-site .uborka-b2b__list dt svg { flex: 0 0 auto; }
.uborka-site .uborka-b2b__list dd {
    margin-top: 6px;
    padding-left: 28px;
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ink-2);
}

@media (min-width: 900px) {
    .uborka-site .uborka-b2b__list { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 0; }
    .uborka-site .uborka-b2b__list > div:nth-child(odd) { border-right: 1px solid var(--line); }
    .uborka-site .uborka-b2b__list > div:last-child:nth-child(odd) { border-right: 0; }
}

/* ==========================================================================
   Цены на уборку офисов — отдельная таблица на странице цен
   ==========================================================================
   Настоящая <table>, а не список из div-ов: у неё два измерения (вид
   уборки и цена), заголовки колонок читает скринридер, и такую разметку
   поисковик разбирает как прайс. */

.uborka-site .uborka-office-prices { padding-block: clamp(44px, 6vw, 72px); }
.uborka-site .uborka-office-prices > * { padding-inline: var(--gutter); }

.uborka-site .uborka-table {
    width: calc(100% - var(--gutter) * 2);
    margin: 26px var(--gutter) 0;
    border-collapse: collapse;
    text-align: left;
}
.uborka-site .uborka-table th,
.uborka-site .uborka-table td {
    padding: 15px 0;
    border-bottom: 1px solid var(--line);
    vertical-align: baseline;
}
.uborka-site .uborka-table thead th {
    border-bottom: 1px solid var(--ink);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ink-3);
}
.uborka-site .uborka-table tbody th {
    font-size: 1rem;
    font-weight: 600;
    padding-right: 16px;
}
.uborka-site .uborka-table td { text-align: right; white-space: nowrap; }
.uborka-site .uborka-table__from,
.uborka-site .uborka-table__unit { font-size: 0.875rem; color: var(--ink-2); }
.uborka-site .uborka-table td .u-num { font-size: 1.0625rem; font-weight: 700; }

.uborka-site .uborka-office-prices__cta { margin-top: 22px; }

@media (min-width: 768px) {
    .uborka-site .uborka-table tbody th { font-size: 1.0625rem; }
    .uborka-site .uborka-table td .u-num { font-size: 1.125rem; }
}

/* ==========================================================================
   Шапка на ноутбуках: 1024–1280
   ==========================================================================
   Настольная раскладка включалась с 1024px, но всё её содержимое —
   логотип со словом, семь пунктов меню, переключатель языка, номер и
   кнопка — помещается только с 1280px. В промежутке название компании
   переносилось на две строки, «Услуги» наезжало на него, «О компании»
   ломалось пополам, а кнопка уезжала за край.

   Ниже 1280 убираем то, что дублируется: номер телефона есть в шапке
   ещё и кнопкой на мобильных, а на ноутбуке он повторяет контакты в
   подвале. Пункты меню при этом не переносим — ссылка в две строки
   читается как две разные ссылки. */

@media (min-width: 1024px) {
    .uborka-site .uborka-header__inner { gap: 16px; padding-inline: 28px; }
    .uborka-site .uborka-brand__word { white-space: nowrap; }
    .uborka-site .uborka-header__nav { gap: 16px; }
    .uborka-site .uborka-header__nav a { white-space: nowrap; }
    .uborka-site .uborka-header__actions { gap: 12px; }
}

@media (min-width: 1024px) and (max-width: 1279px) {
    .uborka-site .uborka-header__phone { display: none; }
}

@media (min-width: 1280px) {
    .uborka-site .uborka-header__inner { gap: 24px; padding-inline: 48px; }
    .uborka-site .uborka-header__nav { gap: 22px; }
    .uborka-site .uborka-header__actions { gap: 20px; }
}

@media (min-width: 1440px) {
    .uborka-site .uborka-header__inner { padding-inline: 60px; }
}

/* ==========================================================================
   Блог: лента
   ==========================================================================
   Карточка без тени и без скругления больше 4px — как всё остальное на
   сайте. Изображение есть не у всех записей, поэтому карточка не должна
   разваливаться без него: текстовая часть тянется сама. */

.uborka-site .uborka-posts { padding-block: clamp(32px, 5vw, 56px); }
.uborka-site .uborka-posts > * { padding-inline: var(--gutter); }

.uborka-site .uborka-posts__grid {
    display: grid;
    gap: 20px;
    padding-inline: var(--gutter);
}

.uborka-site .uborka-post-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    overflow: hidden;
    transition: border-color 160ms ease;
}
.uborka-site .uborka-post-card:hover { border-color: var(--ink); }

/* Изображения у записей разного формата, в том числе вертикальные.
   Абсолютное позиционирование внутри контейнера с aspect-ratio — единственный
   надёжный способ подрезать их к одной высоте: при height:100% на потоковой
   картинке высота контейнера и высота картинки определяются друг через друга,
   и браузер оставляет исходный размер. */
.uborka-site .uborka-post-card__media {
    position: relative;
    display: block;
    aspect-ratio: 16 / 9;
    background: var(--paper-2);
    overflow: hidden;
}
.uborka-site .uborka-post-card__media img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.uborka-site .uborka-post-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 8px;
    padding: 18px 20px 22px;
}

.uborka-site .uborka-post-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    font-size: 0.8125rem;
    color: var(--ink-3);
}

.uborka-site .uborka-post-card__title { font-size: 1.125rem; line-height: 1.3; font-weight: 700; }
.uborka-site .uborka-post-card__title a { color: var(--ink); }
.uborka-site .uborka-post-card__title a:hover { color: var(--primary); }

.uborka-site .uborka-post-card__excerpt {
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--ink-2);
}

.uborka-site .uborka-posts__empty { color: var(--ink-2); }

@media (min-width: 700px) {
    .uborka-site .uborka-posts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
}

@media (min-width: 1100px) {
    .uborka-site .uborka-posts__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .uborka-site .uborka-post-card__title { font-size: 1.1875rem; }
}

/* ==========================================================================
   Блог: статья
   ==========================================================================
   Колонка около 68 знаков — на такой длине строки текст читается без
   усилия. Всё внутри __body приходит из редактора, поэтому стили заданы по
   тегам: разметку статей мы не контролируем. */

/* Ширина колонки задаётся через переменную, потому что боковые поля входят
   в max-width: без этого 44rem превращались в 496 пикселей текста — строка
   в 45 знаков вместо привычных 75. */
.uborka-site .uborka-article { --article-pad: var(--gutter); padding-block: clamp(28px, 5vw, 56px) 0; }
.uborka-site .uborka-article > * { padding-inline: var(--article-pad); }

.uborka-site .uborka-article__head,
.uborka-site .uborka-article__media,
.uborka-site .uborka-article__body { max-width: calc(42rem + var(--article-pad) * 2); }
.uborka-site .uborka-article__head h1 {
    margin-top: 10px;
    font-size: clamp(1.75rem, 4.6vw, 2.75rem);
    line-height: 1.12;
    letter-spacing: -0.02em;
}
.uborka-site .uborka-article__head .u-eyebrow a { color: var(--primary); }
.uborka-site .uborka-article__head .u-eyebrow a:hover { color: var(--primary-deep); }

.uborka-site .uborka-article__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--line);
    font-size: 0.875rem;
    color: var(--ink-3);
}

.uborka-site .uborka-article__media { margin-top: 26px; }
.uborka-site .uborka-article__media img {
    display: block;
    width: 100%;
    max-height: 460px;
    object-fit: cover;
    border-radius: var(--radius);
}

.uborka-site .uborka-article__body { margin-top: 28px; }
.uborka-site .uborka-article__body > * + * { margin-top: 18px; }

.uborka-site .uborka-article__body p {
    font-size: 1.0625rem;
    line-height: 1.65;
    color: var(--ink-2);
}

.uborka-site .uborka-article__body h2 {
    margin-top: 34px;
    font-size: clamp(1.25rem, 2.6vw, 1.5rem);
    line-height: 1.25;
    letter-spacing: -0.01em;
    color: var(--ink);
}
.uborka-site .uborka-article__body h3 {
    margin-top: 26px;
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--ink);
}

.uborka-site .uborka-article__body ul,
.uborka-site .uborka-article__body ol { padding-left: 22px; }
.uborka-site .uborka-article__body li {
    margin-top: 8px;
    font-size: 1.0625rem;
    line-height: 1.6;
    color: var(--ink-2);
    list-style: disc;
}
.uborka-site .uborka-article__body ol li { list-style: decimal; }

.uborka-site .uborka-article__body a { color: var(--primary); text-decoration: underline; text-underline-offset: 3px; }
.uborka-site .uborka-article__body a:hover { color: var(--primary-deep); }

.uborka-site .uborka-article__body img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
}

.uborka-site .uborka-article__body blockquote {
    padding-left: 18px;
    border-left: 2px solid var(--primary);
    font-size: 1.0625rem;
    line-height: 1.6;
    color: var(--ink);
}

.uborka-site .uborka-article__body table { width: 100%; border-collapse: collapse; }
.uborka-site .uborka-article__body th,
.uborka-site .uborka-article__body td { padding: 12px 0; border-bottom: 1px solid var(--line); text-align: left; }

.uborka-site .uborka-posts--related { border-top: 1px solid var(--line); margin-top: clamp(36px, 6vw, 64px); }

@media (min-width: 1024px) {
    .uborka-site .uborka-article { --article-pad: clamp(24px, 6vw, 80px); }
}
