/*
    OPALINE STUDIO — CONTACT PAGE

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

/*
    CONTACT HERO
*/

/* Main Contact page Hero. */
.contact-hero {
    position: relative;
    isolation: isolate;
    min-height: 92vh;
    padding: 0 var(--page-padding);
    color: var(--text-light);
    background:
        radial-gradient(
            circle at 77% 17%,
            rgba(169, 217, 234, 0.17),
            transparent 25%
        ),
        radial-gradient(
            circle at 91% 82%,
            rgba(200, 183, 229, 0.13),
            transparent 29%
        ),
        radial-gradient(
            circle at 14% 88%,
            rgba(239, 170, 138, 0.07),
            transparent 24%
        ),
        linear-gradient(
            135deg,
            #2a3044 0%,
            var(--ink-soft) 42%,
            var(--ink) 100%
        );
    overflow: hidden;
}

/* Large editorial background word. */
.contact-hero::before {
    content: "CONTACT";
    position: absolute;
    right: -4vw;
    bottom: -3vw;
    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. */
.contact-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    opacity: 0.15;
    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 Contact Hero layout. */
.contact-hero-layout {
    display: grid;
    grid-template-columns: minmax(430px, 0.92fr) minmax(520px, 1.08fr);
    align-items: center;
    gap: clamp(60px, 7vw, 120px);
    min-height: 92vh;
    padding: 110px 0 95px;
}

/* Main Contact Hero copy. */
.contact-hero-copy {
    position: relative;
    max-width: 720px;
}

/* Vertical editorial line. */
.contact-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 Contact page heading. */
.contact-hero-copy h1 {
    max-width: 800px;
    margin-bottom: 34px;
    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;
}

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

/* Contact Hero buttons. */
.contact-hero-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 30px;
}

/* Contact directory panel. */
.contact-directory {
    position: relative;
    isolation: isolate;
    width: min(100%, 680px);
    margin: 0 auto;
    padding: 52px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: var(--ink);
    background:
        radial-gradient(
            circle at 90% 8%,
            rgba(169, 217, 234, 0.42),
            transparent 27%
        ),
        radial-gradient(
            circle at 4% 96%,
            rgba(239, 170, 138, 0.18),
            transparent 31%
        ),
        linear-gradient(
            145deg,
            rgba(255, 255, 255, 0.96),
            rgba(244, 241, 248, 0.93)
        );
    box-shadow:
        0 42px 100px rgba(0, 0, 0, 0.3),
        inset 0 1px 0 rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(16px);
}

/* Opaline top edge. */
.contact-directory::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--opal-gradient);
}

/* Decorative offset outline. */
.contact-directory::after {
    content: "";
    position: absolute;
    inset: 18px -18px -18px 18px;
    z-index: -1;
    border: 1px solid rgba(220, 228, 234, 0.33);
    pointer-events: none;
}

/* Directory eyebrow. */
.contact-directory-heading > span {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    color: var(--rosewood);
    text-transform: uppercase;
}

/* Decorative eyebrow line. */
.contact-directory-heading > span::after {
    content: "";
    width: 48px;
    height: 1px;
    background: var(--opal-gradient);
}

/* Directory title. */
.contact-directory-heading h2 {
    max-width: 560px;
    margin-bottom: 18px;
    font-family: var(--heading-font);
    font-size: clamp(3.8rem, 4.6vw, 5.4rem);
    font-weight: 500;
    line-height: 0.9;
    letter-spacing: -0.04em;
    color: var(--ink);
}

/* Directory description. */
.contact-directory-heading p {
    max-width: 500px;
    margin-bottom: 34px;
    font-size: 0.86rem;
    line-height: 1.8;
}

/* Directory list. */
.contact-directory-list {
    display: grid;
    gap: 12px;
}

/* Individual directory item. */
.contact-directory-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 17px;
    min-height: 92px;
    padding: 15px 18px;
    border: 1px solid rgba(16, 19, 29, 0.075);
    color: var(--ink);
    background-color: rgba(255, 255, 255, 0.55);
    box-shadow: 0 10px 28px rgba(16, 19, 29, 0.04);
    transition:
        border-color 0.4s ease,
        background-color 0.4s ease,
        box-shadow 0.4s ease,
        transform 0.45s var(--transition-easing);
}

/* Directory item hover. */
.contact-directory-item:hover {
    border-color: rgba(169, 217, 234, 0.48);
    background-color: rgba(255, 255, 255, 0.88);
    box-shadow: 0 18px 38px rgba(16, 19, 29, 0.09);
    transform: translateX(7px);
}

/* Directory item icon. */
.contact-directory-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    font-size: 1rem;
    background:
        linear-gradient(
            145deg,
            rgba(169, 217, 234, 0.62),
            rgba(255, 255, 255, 0.94),
            rgba(200, 183, 229, 0.34)
        );
}

/* Directory text wrapper. */
.contact-directory-content {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
}

/* Directory label. */
.contact-directory-content small {
    font-size: 0.57rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    color: var(--rosewood);
    text-transform: uppercase;
}

/* Directory value. */
.contact-directory-content strong {
    overflow: hidden;
    font-size: 0.84rem;
    font-weight: 700;
    color: var(--ink);
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Directory arrow. */
.contact-directory-item > i {
    font-size: 0.86rem;
    color: var(--rosewood);
    transition: transform 0.35s ease;
}

/* Directory arrow movement. */
.contact-directory-item:hover > i {
    transform: translate(3px, -3px);
}

/* Availability row. */
.contact-directory-availability {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 14px;
    margin-top: 28px;
    padding-top: 24px;
    border-top: 1px solid rgba(16, 19, 29, 0.09);
}

/* Availability status dot. */
.contact-directory-status {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: #6fa98a;
    box-shadow: 0 0 0 6px rgba(111, 169, 138, 0.12);
}

/* Availability text wrapper. */
.contact-directory-availability > div {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

/* Availability label. */
.contact-directory-availability small {
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.13em;
    color: var(--ink-muted);
    text-transform: uppercase;
}

/* Availability main value. */
.contact-directory-availability strong {
    font-size: 0.73rem;
    color: var(--ink);
}

/* Availability response note. */
.contact-directory-availability > span:last-child {
    max-width: 175px;
    font-size: 0.64rem;
    line-height: 1.55;
    color: var(--ink-muted);
    text-align: right;
}

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

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

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

/*
    CONTACT FORM
*/

/* Contact form section. */
.contact-form-section {
    position: relative;
    background:
        linear-gradient(
            180deg,
            var(--pearl) 0%,
            #f5f1f5 100%
        );
    overflow: hidden;
}

/* Decorative background word. */
.contact-form-section::before {
    content: "MESSAGE";
    position: absolute;
    top: 62px;
    left: -2vw;
    font-family: var(--heading-font);
    font-size: clamp(9rem, 18vw, 20rem);
    font-weight: 600;
    line-height: 0.7;
    letter-spacing: -0.06em;
    color: rgba(16, 19, 29, 0.023);
    pointer-events: none;
}

/* Form section layout. */
.contact-form-layout {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 0.72fr 1.28fr;
    align-items: start;
    gap: clamp(60px, 8vw, 130px);
}

/* Form section title. */
.contact-form-intro h2 {
    max-width: 650px;
    margin-bottom: 28px;
    font-family: var(--heading-font);
    font-size: clamp(4rem, 5.3vw, 6.1rem);
    font-weight: 500;
    line-height: 0.92;
    letter-spacing: -0.04em;
    color: var(--ink);
}

/* Form section introduction. */
.contact-form-intro > p {
    max-width: 560px;
    margin-bottom: 42px;
    font-size: 0.96rem;
    line-height: 1.9;
}

/* Support list. */
.contact-form-support {
    display: grid;
    gap: 18px;
}

/* Support item. */
.contact-form-support article {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 16px;
    padding: 18px 0;
    border-bottom: 1px solid var(--light-border);
}

/* Support item icon. */
.contact-form-support i {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    font-size: 1rem;
    color: var(--ink);
    background:
        linear-gradient(
            145deg,
            rgba(169, 217, 234, 0.55),
            rgba(255, 255, 255, 0.94),
            rgba(200, 183, 229, 0.35)
        );
}

/* Support text wrapper. */
.contact-form-support div {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* Support title. */
.contact-form-support strong {
    font-size: 0.78rem;
    color: var(--ink);
}

/* Support description. */
.contact-form-support span {
    font-size: 0.73rem;
    line-height: 1.6;
}

/* Main form card. */
.contact-form {
    position: relative;
    padding: 46px;
    border: 1px solid rgba(16, 19, 29, 0.08);
    background-color: rgba(255, 255, 255, 0.8);
    box-shadow: 0 32px 75px rgba(16, 19, 29, 0.1);
    backdrop-filter: blur(16px);
}

/* Form opaline top edge. */
.contact-form::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    background: var(--opal-gradient);
}

/* Form card heading. */
.contact-form-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    margin-bottom: 30px;
    padding-bottom: 22px;
    border-bottom: 1px solid var(--light-border);
}

/* Form card label. */
.contact-form-header span {
    font-family: var(--heading-font);
    font-size: 2rem;
    font-weight: 600;
    color: var(--ink);
}

/* Required fields note. */
.contact-form-header strong {
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--ink-muted);
    text-transform: uppercase;
}

/* Form grid. */
.contact-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 26px 24px;
}

/* Shared field wrapper. */
.contact-field {
    display: flex;
    flex-direction: column;
}

/* Full-width field. */
.contact-field-full {
    grid-column: 1 / -1;
}

/* Field label. */
.contact-field label,
.contact-choice legend {
    margin-bottom: 10px;
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: var(--ink);
    text-transform: uppercase;
}

/* Shared form control. */
.contact-field input,
.contact-field select,
.contact-field textarea {
    width: 100%;
    border: 1px solid rgba(16, 19, 29, 0.12);
    border-radius: 0;
    outline: none;
    font-family: var(--body-font);
    font-size: 0.86rem;
    color: var(--ink);
    background-color: rgba(255, 255, 255, 0.76);
    transition:
        border-color 0.3s ease,
        box-shadow 0.3s ease,
        background-color 0.3s ease;
}

/* Input and select sizing. */
.contact-field input,
.contact-field select {
    height: 55px;
    padding: 0 16px;
}

/* Textarea sizing. */
.contact-field textarea {
    min-height: 180px;
    padding: 16px;
    line-height: 1.7;
    resize: vertical;
}

/* Placeholder text. */
.contact-field input::placeholder,
.contact-field textarea::placeholder {
    color: rgba(58, 63, 77, 0.5);
}

/* Form control focus. */
.contact-field input:focus,
.contact-field select:focus,
.contact-field textarea:focus {
    border-color: rgba(143, 92, 102, 0.48);
    background-color: var(--white);
    box-shadow: 0 0 0 4px rgba(169, 217, 234, 0.13);
}

/* Message label row. */
.contact-message-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

/* Character counter. */
.contact-message-label > span {
    margin-bottom: 10px;
    font-size: 0.62rem;
    color: var(--ink-muted);
}

/* Invalid control state. */
.contact-field.has-error input,
.contact-field.has-error select,
.contact-field.has-error textarea,
.contact-consent.has-error label {
    border-color: rgba(173, 62, 70, 0.62);
}

/* Error message. */
.contact-field-error {
    display: none;
    margin-top: 8px;
    font-size: 0.67rem;
    line-height: 1.5;
    color: #9e3942;
}

/* Reveals field errors. */
.contact-field.has-error .contact-field-error,
.contact-consent.has-error .contact-field-error {
    display: block;
}

/* Reply method group. */
.contact-choice {
    margin: 0;
    padding: 0;
    border: 0;
}

/* Reply method options. */
.contact-choice > div {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

/* Reply method label. */
.contact-choice label {
    position: relative;
    cursor: pointer;
}

/* Hides the native radio visually. */
.contact-choice input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

/* Custom reply method option. */
.contact-choice label span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 110px;
    min-height: 44px;
    padding: 0 18px;
    border: 1px solid rgba(16, 19, 29, 0.11);
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--ink-muted);
    background-color: rgba(255, 255, 255, 0.58);
    text-transform: uppercase;
    transition: var(--transition);
}

/* Selected reply method option. */
.contact-choice input:checked + span {
    border-color: transparent;
    color: var(--ink);
    background: var(--opal-gradient);
    box-shadow: 0 10px 24px rgba(16, 19, 29, 0.09);
}

/* Consent wrapper. */
.contact-consent {
    display: flex;
    flex-direction: column;
}

/* Consent label. */
.contact-consent label {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 0.73rem;
    line-height: 1.7;
    color: var(--ink-muted);
    cursor: pointer;
}

/* Consent checkbox. */
.contact-consent input {
    flex: 0 0 auto;
    width: 17px;
    height: 17px;
    margin-top: 4px;
    accent-color: var(--rosewood);
}

/* Form footer. */
.contact-form-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    margin-top: 34px;
    padding-top: 30px;
    border-top: 1px solid var(--light-border);
}

/* Form endpoint notice. */
.contact-form-footer p {
    max-width: 330px;
    font-size: 0.67rem;
    line-height: 1.65;
    text-align: right;
}

/* Form status message. */
.contact-form-status {
    margin-top: 24px;
    padding: 16px 18px;
    border-left: 3px solid var(--opal-blue);
    font-size: 0.78rem;
    line-height: 1.65;
    color: var(--ink);
    background-color: rgba(169, 217, 234, 0.17);
}

/* Success status. */
.contact-form-status.success {
    border-left-color: #6fa98a;
    background-color: rgba(111, 169, 138, 0.13);
}

/* Error status. */
.contact-form-status.error {
    border-left-color: #ad3e46;
    background-color: rgba(173, 62, 70, 0.1);
}

/*
    LOCATION
*/

/* Location section. */
.contact-location-section {
    position: relative;
    background-color: var(--white);
    overflow: hidden;
}

/* Decorative background word. */
.contact-location-section::before {
    content: "VISIT";
    position: absolute;
    right: -2vw;
    bottom: 30px;
    font-family: var(--heading-font);
    font-size: clamp(10rem, 20vw, 22rem);
    font-weight: 600;
    line-height: 0.68;
    letter-spacing: -0.06em;
    color: rgba(16, 19, 29, 0.023);
    pointer-events: none;
}

/* Location heading layout. */
.contact-location-heading {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 1.1fr 0.65fr;
    align-items: end;
    gap: 70px;
    margin-bottom: 70px;
}

/* Location title. */
.contact-location-heading h2 {
    max-width: 820px;
    font-family: var(--heading-font);
    font-size: clamp(4.1rem, 5.7vw, 6.5rem);
    font-weight: 500;
    line-height: 0.9;
    letter-spacing: -0.04em;
    color: var(--ink);
}

/* Location introduction. */
.contact-location-heading > p {
    max-width: 490px;
    font-size: 0.96rem;
    line-height: 1.9;
}

/* Map and studio details layout. */
.contact-location-layout {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(350px, 0.75fr);
    min-height: 610px;
    border: 1px solid rgba(16, 19, 29, 0.08);
    box-shadow: var(--shadow-card);
}

/* Map placeholder. */
.contact-map-placeholder {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 610px;
    overflow: hidden;
    background:
        radial-gradient(
            circle at 26% 20%,
            rgba(169, 217, 234, 0.62),
            transparent 29%
        ),
        radial-gradient(
            circle at 80% 82%,
            rgba(239, 170, 138, 0.3),
            transparent 32%
        ),
        linear-gradient(
            145deg,
            #e8f0f2,
            #f4f1f6
        );
}

/* Decorative map grid. */
.contact-map-grid {
    position: absolute;
    inset: 0;
    opacity: 0.55;
    background-image:
        linear-gradient(
            rgba(255, 255, 255, 0.58) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(255, 255, 255, 0.58) 1px,
            transparent 1px
        );
    background-size: 48px 48px;
}

/* Map marker. */
.contact-map-marker {
    position: absolute;
    top: 42%;
    left: 48%;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 78px;
    height: 78px;
    border-radius: 50%;
    font-size: 2rem;
    color: var(--white);
    background:
        linear-gradient(
            145deg,
            #293048,
            var(--ink)
        );
    box-shadow:
        0 20px 50px rgba(16, 19, 29, 0.22),
        0 0 0 12px rgba(255, 255, 255, 0.22);
    transform: translate(-50%, -50%);
}

/* Map label card. */
.contact-map-label {
    position: absolute;
    left: 7%;
    bottom: 8%;
    z-index: 2;
    display: flex;
    flex-direction: column;
    min-width: 250px;
    padding: 24px 26px;
    border-left: 3px solid var(--opal-blue);
    color: var(--ink);
    background-color: rgba(255, 255, 255, 0.86);
    box-shadow: 0 18px 40px rgba(16, 19, 29, 0.12);
    backdrop-filter: blur(12px);
}

/* Map label eyebrow. */
.contact-map-label small {
    margin-bottom: 7px;
    font-size: 0.57rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    color: var(--rosewood);
    text-transform: uppercase;
}

/* Map label address. */
.contact-map-label strong {
    margin-bottom: 4px;
    font-family: var(--heading-font);
    font-size: 1.9rem;
    font-weight: 600;
    line-height: 1;
}

/* Map label city. */
.contact-map-label span {
    font-size: 0.69rem;
    color: var(--ink-muted);
}

/* Real embedded map. */
.contact-map {
    width: 100%;
    min-height: 610px;
    border: 0;
}

/* Location information panel. */
.contact-location-panel {
    padding: 54px 44px;
    color: var(--white);
    background:
        radial-gradient(
            circle at 100% 0%,
            rgba(169, 217, 234, 0.14),
            transparent 30%
        ),
        linear-gradient(
            145deg,
            #293044,
            var(--ink)
        );
}

/* Location panel header. */
.contact-location-panel-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 44px;
}

/* Location panel label. */
.contact-location-panel-top span {
    font-size: 0.67rem;
    font-weight: 700;
    letter-spacing: 0.17em;
    color: var(--opal-peach);
    text-transform: uppercase;
}

/* Location panel icon. */
.contact-location-panel-top i {
    font-size: 1.45rem;
    color: var(--opal-blue);
}

/* Address. */
.contact-location-panel address {
    margin-bottom: 22px;
    font-family: var(--heading-font);
    font-size: 2.35rem;
    font-style: normal;
    font-weight: 500;
    line-height: 1.1;
}

/* Directions link. */
.contact-directions-link {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--white);
    text-transform: uppercase;
}

/* Internal location divider. */
.contact-location-line {
    width: 100%;
    height: 1px;
    margin: 40px 0;
    background-color: var(--dark-border);
}

/* Opening hours heading. */
.contact-location-panel h3 {
    margin-bottom: 22px;
    font-family: var(--heading-font);
    font-size: 2rem;
    font-weight: 500;
}

/* Opening hours list. */
.contact-opening-hours {
    display: grid;
    gap: 15px;
}

/* Opening hours row. */
.contact-opening-hours li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding-bottom: 13px;
    border-bottom: 1px solid var(--dark-border);
}

/* Opening hours day. */
.contact-opening-hours span {
    font-size: 0.72rem;
    color: rgba(255, 255, 255, 0.68);
}

/* Opening hours value. */
.contact-opening-hours strong {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--white);
}

/*
    RESPONSIVE DESIGN
*/

@media (max-width: 1199.98px) {

    /* Adds space for the mobile header. */
    .contact-hero {
        padding-top: 86px;
    }
}

@media (max-width: 991.98px) {

    /* Stacks the Contact Hero. */
    .contact-hero-layout {
        grid-template-columns: 1fr;
        gap: 62px;
        min-height: auto;
        padding-top: 105px;
        padding-bottom: 95px;
    }

    /* Centres Contact Hero copy. */
    .contact-hero-copy {
        max-width: 820px;
        margin: 0 auto;
        text-align: center;
    }

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

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

    /* Centres the Contact Hero description. */
    .contact-hero-copy > p {
        margin-right: auto;
        margin-left: auto;
    }

    /* Centres the Contact Hero buttons. */
    .contact-hero-actions {
        justify-content: center;
    }

    /* Limits the directory panel width. */
    .contact-directory {
        width: min(90%, 680px);
    }

    /* Stacks the form section. */
    .contact-form-layout {
        grid-template-columns: 1fr;
    }

    /* Limits the form introduction width. */
    .contact-form-intro {
        max-width: 760px;
    }

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

    /* Stacks the map and studio panel. */
    .contact-location-layout {
        grid-template-columns: 1fr;
    }

    /* Reduces map height. */
    .contact-map-placeholder,
    .contact-map {
        min-height: 500px;
    }
}

@media (max-width: 767.98px) {

    /*
        CONTACT HERO
    */

    /* Reduces Contact Hero spacing. */
    .contact-hero-layout {
        padding-top: 78px;
        padding-bottom: 78px;
    }

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

    /* Stacks Contact Hero buttons. */
    .contact-hero-actions {
        flex-direction: column;
        align-items: stretch;
        gap: 22px;
    }

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

    /* Centres the editorial booking link. */
    .contact-hero-actions .editorial-link {
        justify-content: center;
    }

    /* Reduces the directory panel spacing. */
    .contact-directory {
        width: 94%;
        padding: 38px 24px;
    }

    /* Removes the offset outline on mobile. */
    .contact-directory::after {
        inset: 10px -10px -10px 10px;
    }

    /* Reduces directory title size. */
    .contact-directory-heading h2 {
        font-size: clamp(3.3rem, 13vw, 4.7rem);
    }

    /* Reduces directory item spacing. */
    .contact-directory-item {
        grid-template-columns: auto minmax(0, 1fr);
        min-height: 86px;
        padding: 14px;
    }

    /* Hides directory arrows on mobile. */
    .contact-directory-item > i {
        display: none;
    }

    /* Allows contact values to wrap. */
    .contact-directory-content strong {
        white-space: normal;
    }

    /* Stacks the availability row. */
    .contact-directory-availability {
        grid-template-columns: auto minmax(0, 1fr);
    }

    /* Moves the availability note to a full row. */
    .contact-directory-availability > span:last-child {
        grid-column: 2;
        max-width: none;
        text-align: left;
    }

    /*
        CONTACT FORM
    */

    /* Reduces form card spacing. */
    .contact-form {
        padding: 34px 24px;
    }

    /* Stacks the form header. */
    .contact-form-header {
        align-items: flex-start;
        flex-direction: column;
        gap: 7px;
    }

    /* Displays one form field per row. */
    .contact-form-grid {
        grid-template-columns: 1fr;
    }

    /* Keeps every form field full-width. */
    .contact-field,
    .contact-field-full {
        grid-column: 1;
    }

    /* Stacks the form footer. */
    .contact-form-footer {
        align-items: stretch;
        flex-direction: column;
    }

    /* Makes the form button full-width. */
    .contact-form-footer .primary-button {
        width: 100%;
    }

    /* Aligns the form notice to the left. */
    .contact-form-footer p {
        max-width: none;
        text-align: left;
    }

    /*
        LOCATION
    */

    /* Reduces the map height. */
    .contact-map-placeholder,
    .contact-map {
        min-height: 430px;
    }

    /* Moves the map marker slightly upward. */
    .contact-map-marker {
        top: 38%;
    }

    /* Reduces the map label. */
    .contact-map-label {
        right: 20px;
        left: 20px;
        bottom: 22px;
        min-width: 0;
    }

    /* Reduces the location panel spacing. */
    .contact-location-panel {
        padding: 44px 28px;
    }

    /* Reduces the address size. */
    .contact-location-panel address {
        font-size: 2rem;
    }
}

@media (max-width: 479.98px) {

    /* Makes the directory panel slightly wider. */
    .contact-directory {
        width: 97%;
        padding-right: 20px;
        padding-left: 20px;
    }

    /* Reduces directory icons. */
    .contact-directory-icon {
        width: 44px;
        height: 44px;
    }

    /* Reduces form card spacing. */
    .contact-form {
        padding-right: 20px;
        padding-left: 20px;
    }

    /* Reduces map height. */
    .contact-map-placeholder,
    .contact-map {
        min-height: 380px;
    }

    /* Reduces location address size. */
    .contact-location-panel address {
        font-size: 1.8rem;
    }
}
