/*
    OPALINE STUDIO — SERVICES PAGE

    This stylesheet contains only styles used by services.html.
    Shared navigation, buttons, footer and typography remain in style.css.
*/

/*
    SERVICES HERO
*/

/* Main Services page Hero. */
.services-hero {
    position: relative;
    isolation: isolate;
    min-height: 88vh;
    padding: 0 var(--page-padding);
    color: var(--text-light);
    background:
        radial-gradient(
            circle at 76% 18%,
            rgba(169, 217, 234, 0.18),
            transparent 25%
        ),
        radial-gradient(
            circle at 90% 82%,
            rgba(200, 183, 229, 0.14),
            transparent 27%
        ),
        radial-gradient(
            circle at 20% 88%,
            rgba(239, 170, 138, 0.09),
            transparent 24%
        ),
        linear-gradient(
            135deg,
            #282e42 0%,
            var(--ink-soft) 42%,
            var(--ink) 100%
        );
    overflow: hidden;
}

/* Large editorial background word. */
.services-hero::before {
    content: "SERVICES";
    position: absolute;
    right: -4vw;
    bottom: -2vw;
    z-index: -1;
    font-family: var(--heading-font);
    font-size: clamp(11rem, 22vw, 25rem);
    font-weight: 600;
    line-height: 0.68;
    letter-spacing: -0.07em;
    color: rgba(255, 255, 255, 0.026);
    pointer-events: none;
}

/* Fine editorial grid. */
.services-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    opacity: 0.16;
    background-image:
        linear-gradient(
            rgba(255, 255, 255, 0.018) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(255, 255, 255, 0.014) 1px,
            transparent 1px
        );
    background-size: 72px 72px;
    mask-image:
        linear-gradient(
            to right,
            transparent,
            black 35%,
            black
        );
    pointer-events: none;
}

/* Two-column Services Hero layout. */
.services-hero-layout {
    display: grid;
    grid-template-columns: minmax(420px, 0.92fr) minmax(470px, 1.08fr);
    align-items: center;
    gap: clamp(60px, 7vw, 120px);
    min-height: 88vh;
    padding: 110px 0 90px;
}

/* Main Services Hero text. */
.services-hero-copy {
    position: relative;
    max-width: 720px;
}

/* Vertical editorial detail beside the heading. */
.services-hero-copy::before {
    content: "";
    position: absolute;
    top: 4px;
    left: -34px;
    width: 1px;
    height: 120px;
    background:
        linear-gradient(
            to bottom,
            var(--opal-blue),
            var(--opal-lilac),
            transparent
        );
}

/* Main Services page heading. */
.services-hero-copy h1 {
    max-width: 780px;
    margin-bottom: 35px;
    font-family: var(--heading-font);
    font-size: clamp(5rem, 7vw, 8rem);
    font-weight: 500;
    line-height: 0.82;
    letter-spacing: -0.05em;
    color: var(--white);
    text-wrap: balance;
}

/* Services Hero introduction. */
.services-hero-copy > p {
    max-width: 590px;
    margin-bottom: 42px;
    font-size: 1.04rem;
    line-height: 1.92;
    color: rgba(255, 255, 255, 0.76);
}

/* Services Hero button layout. */
.services-hero-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 30px;
}

/* Services Hero visual area. */
.services-hero-visual {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 760px;
}

/* Main editorial information card. */
.services-hero-card {
    position: relative;

    width: min(78%, 560px);
    min-height: 730px;

    padding: 82px 60px 60px;

    overflow: visible;

    border: 1px solid rgba(255, 255, 255, 0.32);
    border-radius: 240px 240px 12px 12px;

    color: var(--ink);

    background:
        radial-gradient(
            circle at 27% 16%,
            rgba(169, 217, 234, 0.38),
            transparent 30%
        ),
        radial-gradient(
            circle at 78% 78%,
            rgba(239, 170, 138, 0.2),
            transparent 31%
        ),
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.94) 0%,
            rgba(240, 244, 248, 0.92) 28%,
            rgba(239, 235, 246, 0.9) 62%,
            rgba(220, 211, 230, 0.84) 100%
        );

    box-shadow:
        0 42px 100px rgba(0, 0, 0, 0.34),
        inset 0 0 0 1px rgba(255, 255, 255, 0.56);

    backdrop-filter: blur(14px);
}

/* Fine internal frame. */
/* Outer mirror contour matching the Home page frame. */
.services-hero-card::before {
    content: "";

    position: absolute;
    inset: -24px;
    z-index: -1;

    border: 1px solid rgba(220, 228, 234, 0.45);
    border-radius: 260px 260px 16px 16px;

    box-shadow:
        0 0 50px rgba(169, 217, 234, 0.08);

    pointer-events: none;
}

/* Moving pearlescent reflection. */
/* Fine reflective contour inside the Services mirror. */
.services-hero-card::after {
    content: "";

    position: absolute;
    inset: 18px;
    z-index: 1;

    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 215px 215px 7px 7px;

    box-shadow:
        inset 0 0 30px rgba(255, 255, 255, 0.1);

    pointer-events: none;
}

/* Editorial card number. */
.services-hero-card-number {
    position: absolute;
    top: 44px;
    right: 50px;
    font-family: var(--heading-font);
    font-size: 2rem;
    font-weight: 600;
    color: rgba(16, 19, 29, 0.26);
    z-index: 2;
}

/* Large service icon. */
.services-hero-card-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 78px;
    height: 78px;
    margin-bottom: 58px;
    border: 1px solid rgba(16, 19, 29, 0.12);
    border-radius: 50%;
    font-size: 1.85rem;
    color: var(--ink);
    background:
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.82),
            rgba(169, 217, 234, 0.26)
        );
    box-shadow: 0 16px 36px rgba(16, 19, 29, 0.1);
    z-index: 2;
}

/* Small card category. */
.services-hero-card-label {
    margin-bottom: 18px;
    font-size: 0.71rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: var(--rosewood);
    text-transform: uppercase;
    z-index: 2;
}

/* Main editorial card heading. */
.services-hero-card h2 {
    max-width: 410px;
    margin-bottom: 44px;
    font-family: var(--heading-font);
    font-size: clamp(3.1rem, 4vw, 4.5rem);
    font-weight: 500;
    line-height: 0.94;
    letter-spacing: -0.03em;
    color: var(--ink);
    z-index: 2;
}

/* Benefits list. */
.services-hero-benefits {
    display: grid;
    gap: 17px;
    padding-top: 29px;
    border-top: 1px solid rgba(16, 19, 29, 0.12);
}

/* Individual benefit. */
.services-hero-benefits > div {
    display: flex;
    align-items: center;
    gap: 13px;
    font-size: 0.82rem;
    color: var(--ink-muted);
}

/* Benefit icon. */
.services-hero-benefits i {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 25px;
    height: 25px;
    border-radius: 50%;
    font-size: 0.72rem;
    color: var(--ink);
    background-color: rgba(169, 217, 234, 0.34);
}

/* Vertical decorative copy. */
.services-hero-vertical-text {
    position: absolute;
    right: -24px;
    bottom: 60px;
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.28em;
    color: rgba(255, 255, 255, 0.45);
    writing-mode: vertical-rl;
}

/* Shared decorative Hero glow. */
.services-hero-glow {
    position: absolute;
    border-radius: 50%;
    filter: blur(16px);
    pointer-events: none;
}

/* Cool Services Hero glow. */
.services-hero-glow-one {
    top: -120px;
    right: 19%;
    width: 360px;
    height: 360px;
    background-color: rgba(169, 217, 234, 0.11);
}

/* Warm Services Hero glow. */
.services-hero-glow-two {
    right: -150px;
    bottom: 10px;
    width: 400px;
    height: 400px;
    background-color: rgba(239, 170, 138, 0.07);
}

/*
    CATEGORY NAVIGATION
*/

/* Sticky quick navigation beneath the Hero. */
.service-category-navigation {
    position: sticky;
    top: 0;
    z-index: 900;
    border-bottom: 1px solid var(--light-border);
    background-color: rgba(250, 248, 244, 0.92);
    box-shadow: 0 15px 42px rgba(16, 19, 29, 0.055);
    backdrop-filter: blur(18px);
}

/* Quick navigation layout. */
.service-category-navigation-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: clamp(24px, 4vw, 60px);
    min-height: 78px;
}

/* Quick navigation label. */
.service-category-navigation-inner > span {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    color: var(--rosewood);
    text-transform: uppercase;
}

/* Quick navigation links. */
.service-category-navigation a {
    position: relative;
    padding: 8px 0;
    font-family: var(--heading-font);
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--ink-muted);
}

/* Quick navigation underline. */
.service-category-navigation a::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 2px;
    width: 100%;
    height: 1px;
    background: var(--opal-gradient);
    transform: scaleX(0);
    transform-origin: right;
    transition: var(--transition);
}

/* Quick navigation hover state. */
.service-category-navigation a:hover {
    color: var(--ink);
}

/* Reveals the quick navigation underline. */
.service-category-navigation a:hover::after {
    transform: scaleX(1);
    transform-origin: left;
}

/*
    SERVICE MENU
*/

/* Service menu background. */
.service-menu-section {
    position: relative;
    isolation: isolate;
    background:
        linear-gradient(
            180deg,
            var(--pearl) 0%,
            #f5f1f5 100%
        );
    overflow: hidden;
}

/* Decorative background word. */
.service-menu-section::before {
    content: "MENU";
    position: absolute;
    top: 70px;
    left: -1vw;
    z-index: -1;
    font-family: var(--heading-font);
    font-size: clamp(10rem, 19vw, 21rem);
    font-weight: 600;
    line-height: 0.7;
    letter-spacing: -0.06em;
    color: rgba(16, 19, 29, 0.023);
    pointer-events: none;
}

/* Service menu heading. */
.service-menu-heading {
    display: grid;
    grid-template-columns: 1.1fr 0.65fr;
    align-items: end;
    gap: 70px;
    margin-bottom: 105px;
}

/* Main service menu title. */
.service-menu-heading h2 {
    max-width: 780px;
    font-family: var(--heading-font);
    font-size: clamp(4.1rem, 5.8vw, 6.7rem);
    font-weight: 500;
    line-height: 0.9;
    letter-spacing: -0.04em;
    color: var(--ink);
}

/* Service menu introduction. */
.service-menu-heading > p {
    max-width: 490px;
    font-size: 0.96rem;
    line-height: 1.9;
}

/* Individual service category section. */
.service-category-block {
    display: grid;
    grid-template-columns: minmax(300px, 0.72fr) minmax(0, 1.28fr);
    gap: clamp(55px, 7vw, 115px);
    padding: 90px 0;
    border-top: 1px solid var(--light-border);
    scroll-margin-top: 105px;
}

/* Reverses alternating category composition. */
.service-category-block-reverse {
    grid-template-columns: minmax(0, 1.28fr) minmax(300px, 0.72fr);
}

/* Moves the category introduction to the second column. */
.service-category-block-reverse .service-category-intro {
    order: 2;
}

/* Moves the list to the first column. */
.service-category-block-reverse .service-list {
    order: 1;
}

/* Category introduction styled as an opaline salon mirror. */
.service-category-intro {
    position: relative;
    isolation: isolate;

    min-height: 455px;

    padding: 46px 46px 48px;

    overflow: visible;

    border: 2px solid transparent;
    border-radius: 205px 205px 18px 18px;

    color: var(--ink);

    background:
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.96) 0%,
            rgba(241, 246, 249, 0.94) 34%,
            rgba(241, 236, 246, 0.92) 66%,
            rgba(247, 228, 222, 0.9) 100%
        ) padding-box,
        var(--opal-gradient) border-box;

    box-shadow:
        0 32px 72px rgba(16, 19, 29, 0.11),
        inset 0 1px 0 rgba(255, 255, 255, 0.88);

    transition:
        transform 0.6s var(--transition-easing),
        box-shadow 0.6s ease;
}

/* Outer mirror contour. */
.service-category-intro::before {
    content: "";

    position: absolute;
    inset: -15px;
    z-index: -1;

    border: 1px solid rgba(220, 228, 234, 0.64);
    border-radius: 220px 220px 24px 24px;

    box-shadow:
        0 0 40px rgba(169, 217, 234, 0.08);

    pointer-events: none;
}

/* Soft opaline reflection inside the mirror. */
.service-category-intro::after {
    content: "";

    position: absolute;
    inset: 17px;
    z-index: 0;

    border: 1px solid rgba(255, 255, 255, 0.64);
    border-radius: 188px 188px 11px 11px;

    background:
        linear-gradient(
            125deg,
            rgba(255, 255, 255, 0.22),
            transparent 34%,
            rgba(169, 217, 234, 0.08) 58%,
            transparent 78%
        );

    box-shadow:
        inset 0 0 32px rgba(255, 255, 255, 0.14);

    pointer-events: none;
}

/* Keeps all category content above the decorative mirror layers. */
.service-category-intro > * {
    position: relative;
    z-index: 2;
}

/* Adds a restrained lift when the category panel is hovered. */
.service-category-intro:hover {
    box-shadow:
        0 42px 90px rgba(16, 19, 29, 0.15),
        inset 0 1px 0 rgba(255, 255, 255, 0.92);

    transform: translateY(-7px);
}

/*
    EDIT HERE:
    Each category uses a slightly different opaline reflection.
*/

/* Cut and Style category colours. */
#cut-and-style .service-category-intro {
    background:
        radial-gradient(
            circle at 24% 17%,
            rgba(169, 217, 234, 0.46),
            transparent 30%
        ) padding-box,
        radial-gradient(
            circle at 82% 82%,
            rgba(239, 170, 138, 0.19),
            transparent 31%
        ) padding-box,
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.97),
            rgba(241, 237, 246, 0.93)
        ) padding-box,
        var(--opal-gradient) border-box;
}

/* Colour category colours. */
#colour .service-category-intro {
    background:
        radial-gradient(
            circle at 75% 18%,
            rgba(200, 183, 229, 0.48),
            transparent 32%
        ) padding-box,
        radial-gradient(
            circle at 18% 82%,
            rgba(169, 217, 234, 0.24),
            transparent 30%
        ) padding-box,
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.97),
            rgba(241, 237, 246, 0.93)
        ) padding-box,
        var(--opal-gradient) border-box;
}

/* Hair Care category colours. */
#hair-care .service-category-intro {
    background:
        radial-gradient(
            circle at 28% 18%,
            rgba(191, 229, 223, 0.42),
            transparent 31%
        ) padding-box,
        radial-gradient(
            circle at 80% 82%,
            rgba(216, 179, 108, 0.18),
            transparent 30%
        ) padding-box,
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.97),
            rgba(241, 237, 246, 0.93)
        ) padding-box,
        var(--opal-gradient) border-box;
}

/* Category number badge. */
.service-category-index {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 46px;
    height: 46px;

    margin: 0 0 24px;

    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 50%;

    font-family: var(--body-font);
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--white);

    background:
        linear-gradient(
            145deg,
            #293048,
            var(--ink)
        );

    box-shadow:
        0 12px 26px rgba(16, 19, 29, 0.16);

    transform: none;
}

/* Category eyebrow with a decorative line. */
.service-category-kicker {
    display: flex;
    align-items: center;
    gap: 13px;

    margin-bottom: 16px;

    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.19em;
    color: var(--rosewood);

    text-transform: uppercase;
}

/* Decorative line beside the category eyebrow. */
.service-category-kicker::after {
    content: "";

    width: 42px;
    height: 1px;

    background: var(--opal-gradient);
}

/* Category heading. */
.service-category-intro h3 {
    max-width: 430px;

    margin-bottom: 22px;

    font-family: var(--heading-font);
    font-size: clamp(3.45rem, 4.5vw, 5.05rem);
    font-weight: 600;
    line-height: 0.9;
    letter-spacing: -0.04em;
    color: var(--ink);
}

/* Category description. */
.service-category-intro p {
    max-width: 390px;

    padding-right: 34px;

    font-size: 0.92rem;
    line-height: 1.84;
}

/* Category icon displayed as a polished salon badge. */
.service-category-symbol {
    position: absolute;
    right: 34px;
    bottom: 30px;

    display: flex;
    align-items: center;
    justify-content: center;

    width: 82px;
    height: 82px;

    border: 1px solid rgba(16, 19, 29, 0.1);
    border-radius: 50%;

    font-size: 1.9rem;
    line-height: 1;
    color: var(--ink);

    background:
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.88),
            rgba(169, 217, 234, 0.3),
            rgba(200, 183, 229, 0.24)
        );

    box-shadow:
        0 16px 34px rgba(16, 19, 29, 0.11),
        inset 0 1px 0 rgba(255, 255, 255, 0.85);

    transition:
        transform 0.55s var(--transition-easing),
        box-shadow 0.55s ease;
}

/* Refines the icon interaction without distracting from the content. */
.service-category-intro:hover .service-category-symbol {
    box-shadow:
        0 20px 42px rgba(16, 19, 29, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 0.9);

    transform:
        translateY(-4px)
        rotate(-4deg);
}

/* Service list. */
.service-list {
    display: grid;
    align-content: center;
}

/* Individual service row. */
.service-list-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 88px 105px;
    align-items: center;
    gap: 24px;
    padding: 30px 0;
    border-bottom: 1px solid var(--light-border);
    transition:
        padding 0.45s var(--transition-easing),
        background-color 0.35s ease;
}

/* First service row. */
.service-list-item:first-child {
    border-top: 1px solid var(--light-border);
}

/* Service row hover. */
.service-list-item:hover {
    padding-right: 18px;
    padding-left: 18px;
    background-color: rgba(255, 255, 255, 0.52);
}

/* Service name. */
.service-list-content h4 {
    margin-bottom: 9px;
    font-family: var(--heading-font);
    font-size: 1.95rem;
    font-weight: 600;
    line-height: 1.05;
    color: var(--ink);
}

/* Service description. */
.service-list-content p {
    max-width: 610px;
    font-size: 0.86rem;
    line-height: 1.72;
}

/* Service duration. */
.service-duration {
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: 0.08em;
    color: var(--rosewood);
    text-align: right;
    text-transform: uppercase;
}

/* Service price. */
.service-list-item > strong {
    font-size: 0.78rem;
    line-height: 1.5;
    color: var(--ink);
    text-align: right;
}

/*
    CONSULTATION CALLOUT
*/

/* Dark consultation callout. */
.consultation-callout {
    position: relative;
    isolation: isolate;
    padding: 95px var(--page-padding);
    color: var(--text-light);
    background:
        radial-gradient(
            circle at 15% 20%,
            rgba(169, 217, 234, 0.16),
            transparent 25%
        ),
        radial-gradient(
            circle at 90% 80%,
            rgba(239, 170, 138, 0.08),
            transparent 28%
        ),
        linear-gradient(
            135deg,
            #293044,
            var(--ink)
        );
    overflow: hidden;
}

/* Decorative background word. */
.consultation-callout::before {
    content: "CONSULT";
    position: absolute;
    right: -2vw;
    bottom: -4vw;
    z-index: -1;
    font-family: var(--heading-font);
    font-size: clamp(9rem, 18vw, 19rem);
    font-weight: 600;
    line-height: 0.7;
    color: rgba(255, 255, 255, 0.025);
}

/* Consultation layout. */
.consultation-callout-layout {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: clamp(35px, 5vw, 75px);
}

/* Consultation icon. */
.consultation-callout-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 110px;
    height: 110px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 50%;
    font-size: 2.1rem;
    color: var(--ink);
    background: var(--opal-gradient);
    box-shadow: 0 24px 55px rgba(0, 0, 0, 0.2);
}

/* Consultation label. */
.consultation-callout-copy > span {
    display: block;
    margin-bottom: 13px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.19em;
    color: var(--opal-peach);
    text-transform: uppercase;
}

/* Consultation heading. */
.consultation-callout h2 {
    margin-bottom: 16px;
    font-family: var(--heading-font);
    font-size: clamp(3.2rem, 4.4vw, 5.1rem);
    font-weight: 500;
    line-height: 0.93;
    letter-spacing: -0.03em;
    color: var(--white);
}

/* Consultation description. */
.consultation-callout-copy p {
    max-width: 760px;
    font-size: 0.92rem;
    line-height: 1.82;
    color: rgba(255, 255, 255, 0.7);
}

/*
    APPOINTMENT NOTES
*/

/* Appointment notes background. */
.service-notes-section {
    position: relative;
    background-color: var(--white);
    overflow: hidden;
}

/* Decorative background word. */
.service-notes-section::before {
    content: "DETAILS";
    position: absolute;
    right: -2vw;
    bottom: 20px;
    font-family: var(--heading-font);
    font-size: clamp(8rem, 16vw, 17rem);
    font-weight: 600;
    line-height: 0.7;
    letter-spacing: -0.05em;
    color: rgba(16, 19, 29, 0.022);
    pointer-events: none;
}

/* Appointment notes heading. */
.service-notes-heading {
    max-width: 850px;
    margin-bottom: 75px;
}

/* Appointment notes title. */
.service-notes-heading h2 {
    font-family: var(--heading-font);
    font-size: clamp(4rem, 5.5vw, 6.3rem);
    font-weight: 500;
    line-height: 0.9;
    letter-spacing: -0.04em;
    color: var(--ink);
}

/* Appointment notes grid. */
.service-notes-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}

/* Individual appointment note. */
.service-note-card {
    position: relative;
    min-height: 340px;
    padding: 38px 34px;
    overflow: hidden;
    border: 1px solid rgba(16, 19, 29, 0.08);
    background:
        linear-gradient(
            145deg,
            rgba(250, 248, 244, 0.96),
            rgba(242, 237, 244, 0.88)
        );
    box-shadow: var(--shadow-card);
    transition: var(--transition);
}

/* Appointment note hover. */
.service-note-card:hover {
    border-color: rgba(143, 92, 102, 0.2);
    box-shadow: 0 34px 72px rgba(16, 19, 29, 0.13);
    transform: translateY(-8px);
}

/* Appointment note number. */
.service-note-card > span {
    display: block;
    margin-bottom: 55px;
    font-family: var(--heading-font);
    font-size: 1.7rem;
    font-weight: 600;
    color: rgba(16, 19, 29, 0.27);
}

/* Appointment note icon. */
.service-note-card > i {
    display: block;
    margin-bottom: 23px;
    font-size: 1.7rem;
    color: var(--rosewood);
}

/* Appointment note title. */
.service-note-card h3 {
    margin-bottom: 16px;
    font-family: var(--heading-font);
    font-size: 2rem;
    font-weight: 600;
    line-height: 1;
    color: var(--ink);
}

/* Appointment note description. */
.service-note-card p {
    font-size: 0.87rem;
    line-height: 1.8;
}


/*
    RESPONSIVE DESIGN
*/

@media (max-width: 1199.98px) {

    /* Keeps sticky category navigation below the mobile header. */
    .service-category-navigation {
        top: 86px;
    }

    /* Adds room for the fixed mobile header. */
    .services-hero {
        padding-top: 86px;
    }
}

@media (max-width: 991.98px) {

    /* Stacks the Services Hero. */
    .services-hero-layout {
        grid-template-columns: 1fr;
        gap: 55px;
        min-height: auto;
        padding-top: 105px;
        padding-bottom: 90px;
    }

    /* Centres the Services Hero text. */
    .services-hero-copy {
        max-width: 800px;
        margin: 0 auto;
        text-align: center;
    }

    /* Removes the desktop vertical line. */
    .services-hero-copy::before {
        display: none;
    }

    /* Centres the Services Hero label. */
    .services-hero-copy .section-label {
        justify-content: center;
    }

    /* Centres the Services Hero introduction. */
    .services-hero-copy > p {
        margin-right: auto;
        margin-left: auto;
    }

    /* Centres the Services Hero actions. */
    .services-hero-actions {
        justify-content: center;
    }

    /* Reduces the Services Hero visual height. */
    .services-hero-visual {
        min-height: 740px;
    }

    /* Matches the Home page mirror dimensions. */
    .services-hero-card {
        width: min(76%, 550px);
        min-height: 715px;
    }

    /* Stacks the service menu heading. */
    .service-menu-heading {
        grid-template-columns: 1fr;
        gap: 28px;
    }

    /* Expands the service menu description. */
    .service-menu-heading > p {
        max-width: 720px;
    }

    /* Stacks category sections. */
    .service-category-block,
    .service-category-block-reverse {
        grid-template-columns: 1fr;
        gap: 55px;
    }

    /* Restores natural order on alternating categories. */
    .service-category-block-reverse .service-category-intro,
    .service-category-block-reverse .service-list {
        order: initial;
    }

    /* Limits category introduction width. */
    .service-category-intro {
        width: min(100%, 690px);
        margin: 0 auto;
    }

    /* Stacks the consultation content. */
    .consultation-callout-layout {
        grid-template-columns: auto 1fr;
    }

    /* Places the consultation button below the copy. */
    .consultation-callout .primary-button {
        grid-column: 2;
        justify-self: start;
    }

    /* Displays two appointment notes per row. */
    .service-notes-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 767.98px) {

    /* Reduces Services Hero spacing. */
    .services-hero-layout {
        padding-top: 78px;
        padding-bottom: 70px;
    }

    /* Reduces Services Hero heading size. */
    .services-hero-copy h1 {
        font-size: clamp(4.2rem, 17vw, 6.2rem);
    }

    /* Stacks Services Hero buttons. */
    .services-hero-actions {
        flex-direction: column;
    }

    /* Makes the main Services Hero button full-width. */
    .services-hero-actions .primary-button {
        width: 100%;
    }

    /* Reduces Services Hero visual height. */
    .services-hero-visual {
        min-height: 650px;
    }

    /* Resizes the Services mirror for mobile screens. */
    .services-hero-card {
        width: min(88%, 500px);
        min-height: 610px;

        padding:
            76px
            38px
            48px;

        border-radius:
            190px
            190px
            10px
            10px;
    }

    /* Matches the outer mirror contour on mobile. */
    .services-hero-card::before {
        inset: -17px;

        border-radius:
            207px
            207px
            14px
            14px;
    }

    /* Matches the inner mirror contour on mobile. */
    .services-hero-card::after {
        inset: 14px;

        border-radius:
            176px
            176px
            6px
            6px;
    }

    /* Reduces card heading size. */
    .services-hero-card h2 {
        font-size: 3.15rem;
    }

    /* Hides vertical decorative text. */
    .services-hero-vertical-text {
        display: none;
    }

    /* Makes category navigation horizontally scrollable. */
    .service-category-navigation-inner {
        justify-content: flex-start;
        flex-wrap: nowrap;
        gap: 28px;
        overflow-x: auto;
        scrollbar-width: none;
    }

    /* Hides the category navigation scrollbar. */
    .service-category-navigation-inner::-webkit-scrollbar {
        display: none;
    }

    /* Prevents category links from wrapping. */
    .service-category-navigation a,
    .service-category-navigation-inner > span {
        flex: 0 0 auto;
    }

    /* Reduces category spacing. */
    .service-category-block {
        padding: 75px 0;
    }

   /* Resizes the opaline category mirror on mobile. */
    .service-category-intro {
        min-height: 420px;

        padding:
            44px
            32px
            40px;

        border-radius:
            150px
            150px
            12px
            12px;
    }

    /* Resizes the outer mirror contour. */
    .service-category-intro::before {
        inset: -10px;

        border-radius:
            162px
            162px
            17px
            17px;
    }

    /* Resizes the inner reflective contour. */
    .service-category-intro::after {
        inset: 12px;

        border-radius:
            138px
            138px
            8px
            8px;
    }

    /* Reduces the category number badge. */
    .service-category-index {
    width: 42px;
    height: 42px;

    margin: 0 0 22px;

    font-size: 0.58rem;
}

    /* Keeps the description clear of the icon badge. */
    .service-category-intro p {
        padding-right: 0;
    }

    /* Reduces and repositions the category icon badge. */
    .service-category-symbol {
        right: 28px;
        bottom: 25px;

        width: 68px;
        height: 68px;

        font-size: 1.55rem;
    }

    /* Stacks service metadata below service descriptions. */
    .service-list-item {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 12px 20px;
    }

    /* Places duration beneath the description. */
    .service-duration {
        grid-column: 1;
        text-align: left;
    }

    /* Keeps the price aligned to the right. */
    .service-list-item > strong {
        grid-column: 2;
        grid-row: 1 / span 2;
        align-self: center;
    }

    /* Stacks the consultation callout. */
    .consultation-callout-layout {
        grid-template-columns: 1fr;
        text-align: center;
    }

    /* Centres the consultation icon. */
    .consultation-callout-icon {
        margin: 0 auto;
    }

    /* Centres consultation copy. */
    .consultation-callout-copy p {
        margin: 0 auto;
    }

    /* Makes consultation button full-width. */
    .consultation-callout .primary-button {
        grid-column: auto;
        width: 100%;
        justify-self: stretch;
    }

    /* Displays one appointment note per row. */
    .service-notes-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 479.98px) {

    /* Reduces the editorial Hero card height. */
    .services-hero-card {
        min-height: 510px;
        padding-right: 29px;
        padding-left: 29px;
    }

    /* Reduces the service category title. */
    .service-category-intro h3 {
        font-size: 3.5rem;
    }

    /* Reduces service name size. */
    .service-list-content h4 {
        font-size: 1.7rem;
    }

    /* Reduces appointment card minimum height. */
    .service-note-card {
        min-height: 310px;
    }
}
