html {
    scroll-padding-top: 76px;
    scroll-snap-type: none;
}

.redesign-inner-page {
    min-height: 100%;
}

.redesign-inner-page #rd-main {
    display: block;
}

.redesign-inner-page .rd-main-nav a[aria-current="page"] {
    color: var(--ds-color-brand);
    text-decoration: underline;
    text-underline-offset: 5px;
}

.rp-hero {
    padding: 160px 0 96px;
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-hero-layout,
.rp-about-layout,
.rp-contact-hero-layout {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(300px, 5fr);
    align-items: center;
    gap: clamp(48px, 8vw, 112px);
}

.redesign-inner-page h1 {
    max-width: 12ch;
    margin-bottom: var(--ds-space-4);
    font-size: clamp(3.2rem, 6.2vw, 6.5rem);
}

.redesign-inner-page .rp-about-title {
    max-width: 13ch;
    overflow-wrap: anywhere;
}

.rp-lead {
    max-width: 62ch;
    margin: 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-lead);
}

.rp-hero-aside {
    padding: clamp(28px, 4vw, 48px);
    border-radius: 48% 22px 22px 22px;
    background: var(--ds-color-paper-blue);
}

.rp-hero-aside > span,
.rp-contact-action span,
.rp-route-card > span {
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.rp-hero-aside strong {
    display: block;
    margin: var(--ds-space-2) 0;
    font-family: var(--ds-font-display);
    font-size: clamp(1.5rem, 2.5vw, 2.3rem);
    font-weight: 500;
}

.rp-hero-aside p {
    margin-bottom: var(--ds-space-4);
    color: var(--ds-color-muted);
}

.rp-section {
    padding: clamp(80px, 9vw, 132px) 0;
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-section-blue {
    background: var(--ds-color-paper-blue);
}

.rp-section-warm {
    background: var(--ds-color-paper-warm);
}

.rp-section-heading {
    max-width: 720px;
    margin-bottom: clamp(40px, 6vw, 72px);
}

.rp-section-heading h2,
.rp-cta h2 {
    margin-bottom: var(--ds-space-3);
}

.rp-section-heading > p:last-child {
    max-width: 62ch;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-lead);
}

.rp-section-heading-split {
    display: grid;
    max-width: none;
    grid-template-columns: minmax(0, 7fr) minmax(280px, 5fr);
    align-items: end;
    gap: var(--ds-space-6);
}

.rp-section-heading-split > p {
    margin: 0;
}

.rp-service-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-top: 1px solid var(--ds-color-line);
    border-left: 1px solid var(--ds-color-line);
}

.rp-service-grid article {
    min-height: 250px;
    padding: clamp(24px, 4vw, 44px);
    border-right: 1px solid var(--ds-color-line);
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-service-grid article > span,
.rp-principles article > span {
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-xs);
}

.rp-service-grid h3,
.rp-principles h3 {
    margin: var(--ds-space-6) 0 var(--ds-space-2);
}

.rp-service-grid p,
.rp-principles p {
    max-width: 54ch;
    margin: 0;
    color: var(--ds-color-muted);
}

.rp-price-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--ds-space-4);
}

.rp-price-group {
    align-self: start;
    overflow: hidden;
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-white);
}

.rp-price-group h3 {
    margin: 0;
    padding: var(--ds-space-4);
    border-bottom: 1px solid var(--ds-color-line);
    background: var(--ds-color-paper-blue);
}

.rp-price-group dl {
    margin: 0;
}

.rp-price-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--ds-space-3);
    padding: var(--ds-space-3) var(--ds-space-4);
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-price-row:last-child {
    border-bottom: 0;
}

.rp-price-row dt {
    color: var(--ds-color-muted);
}

.rp-price-row dd {
    margin: 0;
    color: var(--ds-color-ink);
    font-family: var(--ds-font-display);
    font-weight: 500;
    white-space: nowrap;
}

.rp-note {
    max-width: 72ch;
    margin: var(--ds-space-5) 0 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
}

.rp-note a {
    color: var(--ds-color-brand);
}

.rp-faq-layout,
.rp-story-layout,
.rp-cabinet-layout,
.rp-visit-layout,
.rp-route-layout,
.rp-cta-layout {
    display: grid;
    grid-template-columns: minmax(260px, 4fr) minmax(0, 8fr);
    gap: clamp(48px, 9vw, 120px);
}

.rp-faq-layout .rp-section-heading,
.rp-story-layout .rp-section-heading {
    margin-bottom: 0;
}

.rp-faq-list {
    border-top: 1px solid var(--ds-color-line);
}

.rp-faq-list details {
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-faq-list summary {
    padding: var(--ds-space-4) 36px var(--ds-space-4) 0;
    color: var(--ds-color-ink);
    cursor: pointer;
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-h3);
}

.rp-faq-list details p {
    max-width: 62ch;
    margin: 0 0 var(--ds-space-4);
    color: var(--ds-color-muted);
}

.rp-about-layout {
    grid-template-columns: minmax(300px, 5fr) minmax(0, 7fr);
}

.rp-about-photo {
    margin: 0;
    overflow: hidden;
    border-radius: var(--ds-radius-photo);
    background: var(--ds-color-paper-blue);
    box-shadow: var(--ds-shadow-lifted);
}

.rp-about-photo img {
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: center 28%;
}

.rp-heading-aside {
    max-width: 34ch;
    color: var(--ds-color-muted);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-lead);
}

.rp-heading-aside small {
    display: block;
    margin: 4px 0 0 34%;
    color: var(--ds-color-brand);
    font-size: var(--ds-text-sm);
}

.rp-facts {
    display: grid;
    margin-top: var(--ds-space-5);
    border-top: 1px solid var(--ds-color-line);
}

.rp-facts span {
    padding: var(--ds-space-2) 0;
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-story {
    max-width: 68ch;
    font-size: clamp(1.08rem, 1.5vw, 1.28rem);
}

.rp-story p {
    margin-bottom: var(--ds-space-4);
}

.rp-principles {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-top: 1px solid var(--ds-color-line);
}

.rp-principles article {
    padding: var(--ds-space-4);
    border-right: 1px solid var(--ds-color-line);
}

.rp-principles article:last-child {
    border-right: 0;
}

.rp-principles h3 {
    margin-top: var(--ds-space-5);
}

.rp-contact-hero {
    background: var(--ds-color-paper-warm);
}

.rp-contact-actions {
    display: grid;
    gap: var(--ds-space-3);
}

.rp-contact-guidance {
    max-width: 54ch;
    margin: var(--ds-space-2) 0 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
}

.rp-contact-action {
    display: grid;
    padding: var(--ds-space-4);
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-white);
    text-decoration: none;
    transition: transform 160ms ease, box-shadow 160ms ease;
}

.rp-contact-action:hover {
    transform: translateY(-2px);
    box-shadow: var(--ds-shadow-soft);
}

.rp-contact-action strong {
    color: var(--ds-color-ink);
    font-family: var(--ds-font-display);
    font-size: clamp(1.25rem, 2vw, 1.7rem);
    font-weight: 500;
}

.rp-contact-action-main {
    border-color: var(--ds-color-brand);
    background: var(--ds-color-brand);
}

.rp-contact-action-main span,
.rp-contact-action-main strong {
    color: var(--ds-color-white);
}

.rp-contact-phones strong {
    display: flex;
    width: 100%;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.rp-contact-phones a {
    display: block;
    color: inherit;
    text-decoration: none;
}

.rp-contact-phones a + a {
    padding-top: var(--ds-space-2);
    border-top: 1px solid rgba(255, 255, 255, 0.32);
}

.rp-contact-details {
    margin: 0;
    border-top: 1px solid var(--ds-color-line);
}

.rp-contact-details > div {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: var(--ds-space-3);
    padding: var(--ds-space-3) 0;
    border-bottom: 1px solid var(--ds-color-line);
}

.rp-contact-details dt {
    color: var(--ds-color-muted);
}

.rp-contact-details dd {
    margin: 0;
    color: var(--ds-color-ink);
    font-family: var(--ds-font-display);
}

.rp-contact-details a {
    color: var(--ds-color-brand);
}

.rp-hours-note {
    margin-top: var(--ds-space-4);
    padding: var(--ds-space-4);
    border-left: 3px solid var(--ds-color-accent);
    background: var(--ds-color-paper-warm);
}

.rp-hours-note h3 {
    margin-bottom: var(--ds-space-2);
    font-size: var(--ds-text-h3);
}

.rp-hours-note p {
    max-width: 58ch;
    margin: 0;
    color: var(--ds-color-muted);
}

.rp-route-layout {
    align-items: center;
}

.rp-route-layout > div > p:not(.ui-kicker) {
    max-width: 54ch;
    color: var(--ds-color-muted);
}

.rp-route-card {
    position: relative;
    display: grid;
    min-height: 360px;
    align-content: end;
    padding: clamp(28px, 5vw, 56px);
    border-radius: 50% 22px 22px 22px;
    background: var(--ds-color-paper-blue);
    text-decoration: none;
}

.rp-route-card strong {
    margin: var(--ds-space-2) 0;
    font-family: var(--ds-font-display);
    font-size: clamp(1.8rem, 4vw, 3.5rem);
    font-weight: 500;
    line-height: 1.08;
}

.rp-route-card small {
    color: var(--ds-color-muted);
}

.rp-route-card b {
    position: absolute;
    top: var(--ds-space-4);
    right: var(--ds-space-4);
    color: var(--ds-color-brand);
    font-size: 2rem;
}

.rp-cta {
    padding: clamp(48px, 5vw, 68px) 0;
    background: var(--ds-color-ink);
    color: var(--ds-color-white);
}

.rp-cta .ui-kicker {
    color: #9fc6e8;
}

.rp-cta h2 {
    color: var(--ds-color-white);
}

.rp-cta-layout {
    grid-template-columns: minmax(0, 2fr) auto;
    align-items: center;
    gap: clamp(28px, 5vw, 64px);
}

.rp-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: var(--ds-space-3);
}

.rp-footer {
    padding: var(--ds-space-5) 0;
    background: var(--ds-color-paper);
}

.rp-footer-layout {
    display: grid;
    grid-template-columns: minmax(280px, 1fr) auto minmax(220px, auto);
    align-items: center;
    gap: var(--ds-space-5);
    color: var(--ds-color-muted);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
}

.rp-footer-layout > div {
    display: grid;
}

.rp-footer-layout strong {
    color: var(--ds-color-ink);
    font-weight: 500;
}

.rp-footer nav {
    display: flex;
    gap: var(--ds-space-3);
}

.rp-footer a {
    text-decoration: none;
}

.rp-footer a:hover,
.rp-footer a:focus-visible {
    color: var(--ds-color-brand);
    text-decoration: underline;
    text-underline-offset: 4px;
}

@media screen and (max-width: 980px) {
    .rp-hero {
        padding: 118px 0 72px;
    }

    .rp-hero-layout,
    .rp-about-layout,
    .rp-contact-hero-layout,
    .rp-section-heading-split,
    .rp-faq-layout,
    .rp-story-layout,
    .rp-cabinet-layout,
    .rp-visit-layout,
    .rp-route-layout,
    .rp-cta-layout {
        grid-template-columns: minmax(0, 1fr);
    }

    .rp-hero-aside {
        max-width: 620px;
    }

    .rp-about-photo {
        width: min(100%, 520px);
    }

    .rp-principles {
        grid-template-columns: 1fr;
    }

    .rp-principles article {
        border-right: 0;
        border-bottom: 1px solid var(--ds-color-line);
    }

    .rp-actions {
        justify-content: flex-start;
    }

    .rp-footer-layout {
        grid-template-columns: 1fr;
        gap: var(--ds-space-3);
    }
}

@media screen and (min-width: 981px) and (max-height: 779px) {
    .rp-hero {
        padding: 112px 0 68px;
    }

    .redesign-inner-page h1 {
        font-size: clamp(3rem, 8vh, 4.8rem);
    }

    .rp-section {
        padding: clamp(64px, 8vh, 92px) 0;
    }
}

@media screen and (max-width: 700px) {
    .redesign-inner-page h1 {
        font-size: clamp(2.55rem, 12vw, 4.2rem);
    }

    .redesign-inner-page .rp-about-title {
        font-size: clamp(2.35rem, 10.5vw, 4.2rem);
    }

    .rp-service-grid,
    .rp-price-groups {
        grid-template-columns: 1fr;
    }

    .rp-service-grid article {
        min-height: 0;
    }

    .rp-price-row {
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: start;
        gap: var(--ds-space-3);
    }

    .rp-contact-details > div {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .rp-route-card {
        min-height: 300px;
    }

    .rp-actions,
    .rp-actions .ui-button {
        width: 100%;
    }

    .rp-footer nav {
        align-items: flex-start;
        flex-direction: column;
        gap: var(--ds-space-2);
    }
}

@media (prefers-reduced-motion: reduce) {
    .rp-contact-action {
        transition: none;
    }

    .rp-contact-action:hover {
        transform: none;
    }
}

/* ==========================================================================
   Service cluster (hub + three service pages) — svc-* layer
   ========================================================================== */

.svc-hero {
    padding: 124px 0 76px;
    border-bottom: 1px solid var(--ds-color-line);
    background: var(--ds-color-paper);
}

.svc-hero-service {
    padding-bottom: 48px;
}

.svc-hero-layout,
.svc-hero-service-layout {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(300px, 4.5fr);
    align-items: start;
    gap: clamp(48px, 7vw, 104px);
}

.svc-hero-copy h1 {
    max-width: 18ch;
    font-size: clamp(2.1rem, 3.4vw, 3.3rem);
    line-height: 1.12;
}

.svc-lead {
    max-width: 52ch;
    margin: 0 0 var(--ds-space-5);
    color: var(--ds-color-muted);
    font-size: var(--ds-text-lead);
    line-height: 1.6;
}

.svc-hero-facts {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-2);
    margin: 0;
    color: var(--ds-color-muted);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
}

.svc-hero-facts span[aria-hidden] {
    color: var(--ds-color-accent);
}

.svc-hero-aside,
.svc-hero-factsheet {
    align-self: start;
    padding: clamp(28px, 3.5vw, 44px);
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-paper-blue);
}

.svc-hero-aside {
    align-self: center;
}

.svc-aside-kicker,
.svc-factsheet-kicker {
    display: block;
    margin-bottom: var(--ds-space-3);
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-xs);
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.svc-aside-text {
    max-width: 40ch;
    margin: 0 0 var(--ds-space-4);
    color: var(--ds-color-muted);
    line-height: 1.6;
}

/*
 * Blocker 2: the hero side card must read as a subordinate text link, not a
 * competing button. Two class selectors keep it above `.redesign-page a`.
 */
.svc-hero-aside .svc-aside-link,
.svc-aside-link {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 5px;
}

.svc-aside-link:hover,
.svc-aside-link:focus-visible {
    color: var(--ds-color-brand-dark);
}

/* Price in-page navigation (blocker 4) ------------------------------------- */

.svc-price-nav {
    margin-bottom: clamp(28px, 3.4vw, 48px);
}

.svc-price-chip {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0 var(--ds-space-3);
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-pill);
    background: var(--ds-color-white);
    color: var(--ds-color-ink);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
    text-decoration: none;
}

.svc-price-chip:hover {
    border-color: var(--ds-color-brand);
    color: var(--ds-color-brand);
}

.svc-price-chip:focus-visible {
    border-color: var(--ds-color-brand);
    color: var(--ds-color-brand);
    outline: 2px solid var(--ds-color-brand);
    outline-offset: 2px;
}

.svc-price-card {
    scroll-margin-top: 96px;
}

/* Final booking section on the hub (blocker 3) ------------------------------ */

.svc-final-cta {
    border-bottom: none;
}

.svc-booking-address {
    margin: var(--ds-space-4) 0 0;
    color: var(--ds-color-muted);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
}

.svc-booking-actions {
    margin-top: var(--ds-space-4);
}

.svc-hero-factsheet dl {
    margin: 0;
}

.svc-hero-factsheet dl > div {
    display: grid;
    grid-template-columns: minmax(72px, auto) minmax(0, 1fr);
    gap: var(--ds-space-3);
    padding: var(--ds-space-3) 0;
    border-top: 1px solid rgba(23, 36, 61, 0.12);
}

.svc-hero-factsheet dl > div:first-child {
    border-top: 0;
    padding-top: 0;
}

.svc-hero-factsheet dt {
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
}

.svc-hero-factsheet dd {
    margin: 0;
    color: var(--ds-color-ink);
    font-weight: 500;
}

.svc-breadcrumbs ol {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-2);
    margin: 0 0 var(--ds-space-4);
    padding: 0;
    list-style: none;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
}

.svc-breadcrumbs li:not(:last-child)::after {
    content: "→";
    margin-left: var(--ds-space-2);
    color: var(--ds-color-line);
}

.svc-breadcrumbs a {
    color: var(--ds-color-muted);
    text-decoration: none;
}

.svc-breadcrumbs a:hover,
.svc-breadcrumbs a:focus-visible {
    color: var(--ds-color-brand);
    text-decoration: underline;
}

.svc-breadcrumbs [aria-current="page"] {
    color: var(--ds-color-ink);
}

.svc-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-3);
    margin-top: var(--ds-space-4);
}

/*
 * Touch-target contract (Opus 5 blocker): every CTA and interactive chip in
 * the svc-* scope keeps an actual height of at least 44 px, both at 390 px
 * viewport and on desktop. This reasserts the floor against any compact
 * header/home overrides that may load on inner pages.
 */
.svc-hero-actions .ui-button,
.svc-booking-actions .ui-button,
.svc-price-chip,
.svc-price-nav .svc-price-chip,
.svc-messenger-link,
.svc-contact-card .svc-messenger-link,
.svc-aside-link,
.svc-entry-link,
.svc-contact-call,
.svc-closing .ui-button,
.svc-seealso-card {
    min-height: 44px;
}

.svc-messenger-link,
.svc-contact-card .svc-messenger-link,
.svc-contact-call,
.svc-closing .ui-button {
    min-height: 48px;
}

.svc-section {
    padding: clamp(72px, 8vw, 120px) 0;
    border-bottom: 1px solid var(--ds-color-line);
}

.svc-section:has(> .svc-measure) {
    padding-block: clamp(56px, 6vw, 92px);
}

.svc-tint-blue {
    background: var(--ds-color-paper-blue);
}

.svc-tint-warm {
    background: var(--ds-color-paper-warm);
}

.svc-section-heading {
    max-width: 720px;
    margin-bottom: clamp(36px, 5vw, 64px);
}

.svc-section-heading h2 {
    margin-bottom: var(--ds-space-2);
    font-size: clamp(1.9rem, 3.4vw, 3.1rem);
}

.svc-section-heading-split {
    display: grid;
    max-width: none;
    grid-template-columns: minmax(0, 7fr) minmax(280px, 5fr);
    align-items: end;
    gap: var(--ds-space-6);
}

.svc-heading-note {
    max-width: 48ch;
    margin: 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
    line-height: 1.6;
}

.svc-heading-note a {
    color: var(--ds-color-brand);
}

/* Detail pages keep the same outer axis as their hero; their side notes sit
   beneath the heading instead of creating a second, hanging column. */
.svc-measure .svc-section-heading-split {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    gap: var(--ds-space-3);
}

.svc-measure .svc-section-heading-split h2 {
    max-width: 21ch;
}

.svc-measure .svc-heading-note {
    max-width: 60ch;
}

.svc-hero-factsheet {
    align-self: start;
}

/*
 * Shared detailed-service system (sterilization today; vaccination and dental
 * migrate onto the same hooks next):
 *   .svc-measure       — one intentional content measure for price tables,
 *                        condition notes, contacts and see-also grids, so no
 *                        section leaves a dead right half on desktop
 *   .svc-closing       — compact end-of-page conversion block
 *   .svc-contact-call  — 44 px tel: action for a city-number card
 *   .svc-seealso-arrow — restrained clickability affordance for see-also
 */
.svc-hero-copy h1,
.svc-section-heading h2 {
    text-wrap: balance;
}

.svc-section-heading h2 {
    max-width: 26ch;
}

.svc-closing {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--ds-space-5);
}

.svc-closing h2 {
    margin-bottom: var(--ds-space-2);
}

.svc-closing p {
    max-width: 52ch;
    margin: 0;
    color: var(--ds-color-muted);
    line-height: 1.6;
}

/* Hub: entry cards ------------------------------------------------------- */

.svc-entry-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--ds-space-4);
}

.svc-entry-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 240px;
    padding: clamp(24px, 2.6vw, 36px);
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-white);
    text-decoration: none;
    transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}

.svc-entry-card:hover,
.svc-entry-card:focus-visible {
    border-color: var(--ds-color-brand);
    transform: none;
    box-shadow: none;
}

.svc-entry-index {
    margin-bottom: var(--ds-space-4);
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
    letter-spacing: 0.06em;
}

.svc-entry-card h3 {
    margin-bottom: var(--ds-space-2);
    font-size: var(--ds-text-h3);
}

.svc-entry-card > p {
    margin: 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
}

.svc-entry-link {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    margin-top: auto;
    padding-top: var(--ds-space-3);
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
    font-weight: 500;
}

.svc-entry-arrow {
    margin-left: var(--ds-space-2);
    transition: transform 160ms ease;
}

.svc-entry-card:hover .svc-entry-arrow {
    transform: translateX(4px);
}

.svc-section-entry {
    padding-top: clamp(56px, 7vw, 96px);
}

/* Hub: directions --------------------------------------------------------- */

.svc-direction-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 var(--ds-space-6);
}

.svc-direction-card {
    display: grid;
    grid-template-columns: minmax(40px, auto) minmax(0, 1fr);
    column-gap: var(--ds-space-3);
    align-content: start;
    padding: var(--ds-space-4) 0;
    border-top: 1px solid rgba(23, 36, 61, 0.14);
}

.svc-direction-index {
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
}

.svc-direction-card h3 {
    grid-column: 2;
    margin: 0 0 var(--ds-space-1);
    font-size: var(--ds-text-h3);
}

.svc-direction-card p {
    grid-column: 2;
    max-width: 52ch;
    margin: 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
    line-height: 1.55;
}

/* Prices ------------------------------------------------------------------ */

.svc-price-nav-label {
    margin: 0 0 var(--ds-space-2);
    color: var(--ds-color-muted);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-xs);
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.svc-price-nav-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-2);
    margin: 0;
    padding: 0;
    list-style: none;
}

/*
 * Mobile-first: the four groups render as native accessible accordions
 * (details/summary, no JavaScript). The first group ships with the open
 * attribute; the remaining groups stay closed until expanded.
 */
.svc-price-groups {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--ds-space-4);
    align-items: start;
}

.svc-price-card {
    overflow: hidden;
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-white);
}

.svc-price-summary {
    position: relative;
    display: flex;
    min-height: 44px;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-3);
    margin: 0;
    padding: var(--ds-space-3) var(--ds-space-4);
    border-bottom: 1px solid var(--ds-color-line);
    background: var(--ds-color-paper);
    cursor: pointer;
    font-size: var(--ds-text-h3);
    font-family: var(--ds-font-display);
    list-style: none;
}

.svc-price-summary::-webkit-details-marker {
    display: none;
}

.svc-price-summary:focus-visible {
    outline: 2px solid var(--ds-color-brand);
    outline-offset: -2px;
}

.svc-price-summary h3 {
    margin: 0;
    font-size: var(--ds-text-h3);
}

.svc-price-marker {
    flex: 0 0 auto;
    color: var(--ds-color-brand);
    font-size: 1.4rem;
    line-height: 1;
    transition: transform 160ms ease;
}

.svc-price-details[open] .svc-price-marker {
    transform: rotate(45deg);
}

.svc-price-card dl {
    margin: 0;
}

/*
 * Desktop (>=701px): every group body stays visible even while its details
 * element is closed (::details-content is exposed by modern engines), and the
 * four unequal groups are balanced across two independent CSS columns, so the
 * short laboratory group leaves no dead zone beside it.
 */
@media screen and (min-width: 701px) {
    .svc-price-groups {
        display: block;
        columns: 2;
        column-gap: var(--ds-space-4);
    }

    .svc-price-card {
        break-inside: avoid;
        margin-bottom: var(--ds-space-4);
    }

    .svc-price-card details::details-content {
        content-visibility: visible;
    }

    .svc-price-card details:not([open]) > dl {
        display: block;
    }

    .svc-price-marker {
        display: none;
    }

    .svc-price-summary {
        cursor: default;
    }
}

.svc-price-single {
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-white);
}

.svc-price-single dl {
    margin: 0;
}

.svc-price-compact {
    max-width: none;
}

.svc-section-compact {
    padding-block: clamp(44px, 5vw, 72px);
}

.svc-section-compact .svc-section-heading h2 {
    font-size: clamp(2rem, 3vw, 2.8rem);
}

.rp-price-row dd {
    white-space: nowrap;
}

.svc-price-note {
    max-width: 68ch;
    margin: var(--ds-space-5) 0 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
    line-height: 1.6;
}

.svc-price-note a {
    color: var(--ds-color-brand);
}

/* Limits ------------------------------------------------------------------- */

.svc-limits {
    margin: 0;
    padding: 0;
    list-style: none;
}

.svc-limits li {
    position: relative;
    padding: var(--ds-space-3) 0 var(--ds-space-3) var(--ds-space-4);
    border-bottom: 1px solid rgba(23, 36, 61, 0.12);
    color: var(--ds-color-muted);
    line-height: 1.55;
}

.svc-limits li:first-child {
    border-top: 1px solid rgba(23, 36, 61, 0.12);
}

.svc-limits li::before {
    content: "";
    position: absolute;
    top: calc(var(--ds-space-3) + 0.55em);
    left: 0;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--ds-color-accent);
}

@media screen and (min-width: 701px) {
    .svc-limits {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: var(--ds-space-6);
    }

    .svc-limits:has(> li:nth-child(3)) {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .svc-limits li {
        border-top: 1px solid rgba(23, 36, 61, 0.12);
        border-bottom: 0;
    }
}

/* Contact channels ---------------------------------------------------------- */

.svc-contact-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
    gap: var(--ds-space-4);
}

.svc-contact-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: clamp(24px, 2.6vw, 36px);
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-card);
    background: var(--ds-color-white);
}

.svc-contact-card-main {
    border-color: var(--ds-color-brand);
    background: var(--ds-color-brand);
}

/*
 * Contrast contract (AgentRouter review blocker 1): everything on the blue
 * main card must reach 4.5:1 (text) / 3:1 (borders) against --ds-color-brand
 * #004b91. Specificity is kept above `.redesign-page a` (0-1-1) by using two
 * class selectors (0-2-0), so the global inherit rule cannot win.
 */
.svc-contact-card-main .svc-contact-kicker,
.svc-contact-card-main .svc-contact-role {
    color: #dbe9f8;
}

.svc-contact-card-main .svc-contact-phone {
    color: var(--ds-color-white);
}

.svc-contact-kicker {
    display: block;
    margin-bottom: var(--ds-space-2);
    color: var(--ds-color-muted);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-xs);
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.svc-contact-phone {
    display: inline-block;
    min-height: 44px;
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: clamp(1.35rem, 2vw, 1.8rem);
    font-weight: 500;
    text-decoration: none;
}

.svc-contact-phone:hover,
.svc-contact-phone:focus-visible {
    text-decoration: underline;
    text-underline-offset: 5px;
}

.svc-contact-role {
    max-width: 38ch;
    margin: var(--ds-space-1) 0 0;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-sm);
}

.svc-contact-messengers {
    display: grid;
    width: 100%;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--ds-space-2);
    margin-top: auto;
    padding-top: var(--ds-space-3);
}

.svc-messenger-link {
    display: inline-flex;
    min-width: 0;
    min-height: 44px;
    align-items: center;
    padding: 0 var(--ds-space-3);
    border: 1px solid rgba(255, 255, 255, 0.75);
    border-radius: var(--ds-radius-pill);
    color: var(--ds-color-white);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
    text-decoration: none;
}

/*
 * Two class selectors (0-2-0) keep these above `.redesign-page a` (0-1-1),
 * otherwise the links inherit the dark ink colour on the blue main card
 * (contrast 1.78:1 — Opus 5 blocker).
 */
.svc-contact-card .svc-messenger-link {
    min-height: 44px;
    min-width: 104px;
    justify-content: center;
    border-color: rgba(255, 255, 255, 0.75);
    background: transparent;
    color: var(--ds-color-white);
}

.svc-contact-card .svc-messenger-link:hover,
.svc-contact-card .svc-messenger-link:focus-visible {
    border-color: var(--ds-color-white);
    background: var(--ds-color-white);
    color: var(--ds-color-brand);
}

.svc-contact-card:not(.svc-contact-card-main) .svc-messenger-link {
    border-color: var(--ds-color-line);
    color: var(--ds-color-ink);
}

.svc-messenger-link:hover,
.svc-messenger-link:focus-visible {
    border-color: var(--ds-color-white);
    background: rgba(255, 255, 255, 0.12);
}

/* Fallback for messenger links outside a contact card: keep white on blue. */

.svc-contact-card:not(.svc-contact-card-main) .svc-messenger-link:hover,
.svc-contact-card:not(.svc-contact-card-main) .svc-messenger-link:focus-visible {
    border-color: var(--ds-color-brand);
    background: transparent;
    color: var(--ds-color-brand);
}

.svc-contact-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-2);
    margin-top: auto;
    padding-top: var(--ds-space-3);
}

.svc-contact-call {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    padding: 0 var(--ds-space-4);
    border: 1px solid var(--ds-color-line);
    border-radius: var(--ds-radius-pill);
    color: var(--ds-color-brand);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-sm);
    font-weight: 500;
    text-decoration: none;
}

.svc-contact-call:hover,
.svc-contact-call:focus-visible {
    border-color: var(--ds-color-brand);
    background: var(--ds-color-paper-blue);
}

.svc-contact-call:focus-visible {
    outline: 2px solid var(--ds-color-brand);
    outline-offset: 2px;
}

/* These declarations follow the base contact-card rules so their 48px floor
   wins in the rendered cascade on both desktop and mobile. */
.svc-contact-card .svc-messenger-link,
.svc-contact-card .svc-contact-call {
    min-height: 48px;
}

/* See also -------------------------------------------------------------------- */

.svc-seealso {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--ds-space-3);
}

.svc-seealso-card {
    position: relative;
    display: block;
    min-height: 44px;
    padding: var(--ds-space-3) 56px var(--ds-space-3) 0;
    border-top: 1px solid var(--ds-color-line);
    color: var(--ds-color-ink);
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-body);
    text-decoration: none;
}

.svc-seealso-card:hover,
.svc-seealso-card:focus-visible {
    color: var(--ds-color-brand);
}

.svc-seealso-card > span:first-child {
    display: block;
    margin-bottom: 4px;
    color: var(--ds-color-muted);
    font-size: var(--ds-text-xs);
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.svc-seealso-arrow {
    position: absolute;
    top: 50%;
    right: 0;
    color: var(--ds-color-brand);
    font-size: clamp(16px, 1.25vw, 20px);
    line-height: 1;
    transform: translateY(-50%);
    transition: transform 160ms ease;
}

.svc-seealso-card:hover .svc-seealso-arrow,
.svc-seealso-card:focus-visible .svc-seealso-arrow {
    transform: translate(4px, -50%);
}

.svc-seealso-card:focus-visible {
    outline: 2px solid var(--ds-color-brand);
    outline-offset: 4px;
}

/* FAQ --------------------------------------------------------------------------- */

.svc-faq-layout {
    display: grid;
    grid-template-columns: minmax(280px, 4fr) minmax(0, 7fr);
    gap: clamp(48px, 7vw, 104px);
}

.svc-faq-layout .svc-section-heading {
    margin-bottom: 0;
}

.svc-faq-list {
    border-top: 1px solid rgba(23, 36, 61, 0.14);
}

.svc-faq-list details {
    border-bottom: 1px solid rgba(23, 36, 61, 0.14);
}

.svc-faq-list summary {
    position: relative;
    padding: var(--ds-space-4) 44px var(--ds-space-4) 0;
    cursor: pointer;
    font-family: var(--ds-font-display);
    font-size: var(--ds-text-h3);
    list-style: none;
}

.svc-faq-list summary::-webkit-details-marker {
    display: none;
}

.svc-faq-marker {
    position: absolute;
    top: var(--ds-space-4);
    right: 4px;
    color: var(--ds-color-brand);
    font-size: 1.4rem;
    line-height: 1;
}

.svc-faq-list details[open] .svc-faq-marker {
    transform: rotate(45deg);
}

.svc-faq-list details p {
    max-width: 60ch;
    margin: 0 0 var(--ds-space-4);
    color: var(--ds-color-muted);
    line-height: 1.6;
}

/* Responsive ---------------------------------------------------------------------- */

@media screen and (max-width: 980px) {
    .svc-hero {
        padding: 118px 0 64px;
    }

    .svc-hero-layout,
    .svc-hero-service-layout,
    .svc-section-heading-split,
    .svc-faq-layout {
        grid-template-columns: minmax(0, 1fr);
    }

    .svc-hero-aside,
    .svc-hero-factsheet {
        max-width: 620px;
    }

    .svc-entry-grid {
        grid-template-columns: 1fr;
    }

    .svc-entry-card {
        min-height: 0;
    }

    .svc-direction-grid {
        grid-template-columns: 1fr;
    }

    .svc-price-groups,
    .svc-contact-grid,
    .svc-seealso {
        grid-template-columns: 1fr;
    }

    .svc-faq-layout .svc-section-heading {
        margin-bottom: var(--ds-space-4);
    }
}

@media screen and (max-width: 700px) {
    .svc-hero-actions,
    .svc-hero-actions .ui-button {
        width: 100%;
    }

    .svc-hero-actions {
        flex-direction: column;
    }

    .svc-price-row {
        grid-template-columns: 1fr;
        gap: 4px;
    }

    .svc-contact-card {
        padding: var(--ds-space-4);
    }

    /* Wrap the four anchors into a 2x2 grid instead of a clipped strip. */
    .svc-price-nav-list {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--ds-space-2);
    }

    .svc-price-chip {
        justify-content: center;
        width: 100%;
        white-space: normal;
        text-align: center;
    }

    .svc-contact-grid {
        gap: var(--ds-space-3);
    }

    .svc-seealso-card {
        padding-inline: 0;
    }

    .svc-closing {
        grid-template-columns: 1fr;
        gap: var(--ds-space-4);
    }

    .svc-closing .ui-button {
        width: 100%;
        justify-content: center;
    }

    .svc-contact-call {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .svc-entry-card,
    .svc-entry-arrow,
    .svc-seealso-arrow {
        transition: none;
    }

    .svc-entry-card:hover {
        transform: none;
    }
}
