/* =========================================================
   ANGOLO DI VINO TORINO
   CONTACT PAGE — EDITORIAL LUXURY
   Isolato: non modifica header / footer / body
========================================================= */


/* =========================================================
   VARIABLES
========================================================= */

.contact-page {
    --contact-wine-950: #090103;
    --contact-wine-900: #110205;
    --contact-wine-850: #190307;
    --contact-wine-800: #23050c;
    --contact-wine-700: #310812;
    --contact-wine-600: #4a0e1d;
    --contact-wine-500: #68182d;

    --contact-copper-700: #8e5537;
    --contact-copper-600: #a96943;
    --contact-copper-500: #bf7d50;
    --contact-copper-400: #d99b68;
    --contact-copper-300: #edbd8b;
    --contact-copper-200: #f3d0aa;

    --contact-cream-100: #fffaf4;
    --contact-cream-150: #fcf6ee;
    --contact-cream-200: #f7eee3;
    --contact-cream-300: #eee1d2;

    --contact-text: #28181a;
    --contact-muted: #746765;
    --contact-muted-light: #9b8d89;

    --contact-border: rgba(49, 8, 18, .10);
    --contact-border-dark: rgba(255, 255, 255, .09);

    position: relative;

    width: 100%;

    color: var(--contact-text);

    background: var(--contact-cream-100);
}


/* =========================================================
   SAFE BOX SIZING
   Solo elementi interni della nuova pagina
========================================================= */

.contact-stage,
.contact-stage-grid,
.contact-stage-copy,
.contact-stage-experience,
.contact-stage-card,
.contact-stage-location,
.contact-strip,
.contact-strip-grid,
.contact-strip-item,
.contact-message,
.contact-message-layout,
.contact-message-main,
.contact-form,
.contact-form-row,
.contact-form-field,
.contact-form-control,
.contact-side,
.contact-side-hours,
.contact-side-direct,
.contact-place,
.contact-map,
.contact-map-frame,
.contact-map-panel {
    box-sizing: border-box;
}


/* =========================================================
   REVEAL
========================================================= */

.contact-stage [data-contact-reveal],
.contact-strip [data-contact-reveal],
.contact-message [data-contact-reveal],
.contact-place [data-contact-reveal],
.contact-map [data-contact-reveal] {
    opacity: 0;

    transform: translateY(28px);

    transition:
        opacity .85s cubic-bezier(.16, 1, .3, 1),
        transform .85s cubic-bezier(.16, 1, .3, 1);
}

.contact-stage [data-contact-reveal].is-visible,
.contact-strip [data-contact-reveal].is-visible,
.contact-message [data-contact-reveal].is-visible,
.contact-place [data-contact-reveal].is-visible,
.contact-map [data-contact-reveal].is-visible {
    opacity: 1;

    transform: translateY(0);
}


/* =========================================================
   STAGE / HERO
========================================================= */

.contact-stage {
    min-height: 870px;

    padding: 185px 0 105px;

    position: relative;

    isolation: isolate;

    overflow: hidden;

    display: flex;

    align-items: center;

    color: #ffffff;

    background:
        radial-gradient(
            circle at 80% 24%,
            rgba(132, 31, 64, .34),
            transparent 25%
        ),
        radial-gradient(
            circle at 68% 80%,
            rgba(97, 19, 43, .20),
            transparent 26%
        ),
        radial-gradient(
            circle at 12% 86%,
            rgba(216, 153, 96, .055),
            transparent 25%
        ),
        linear-gradient(
            125deg,
            #080103 0%,
            #100205 23%,
            #1c0409 49%,
            #300814 75%,
            #160306 100%
        );
}


/* =========================================================
   STAGE NOISE
========================================================= */

.contact-stage-noise {
    position: absolute;

    z-index: -5;

    inset: 0;

    opacity: .055;

    pointer-events: none;

    background-image:
        url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='.7'/%3E%3C/svg%3E");
}


/* =========================================================
   STAGE GLOWS
========================================================= */

.contact-stage-glow {
    position: absolute;

    z-index: -4;

    border-radius: 50%;

    pointer-events: none;

    filter: blur(18px);
}

.contact-stage-glow-one {
    width: 720px;
    height: 720px;

    top: -90px;
    right: -210px;

    background:
        radial-gradient(
            circle,
            rgba(122, 27, 58, .24),
            rgba(122, 27, 58, .07) 42%,
            transparent 70%
        );
}

.contact-stage-glow-two {
    width: 450px;
    height: 450px;

    left: -250px;
    bottom: -170px;

    background:
        radial-gradient(
            circle,
            rgba(205, 139, 82, .10),
            transparent 68%
        );
}


/* =========================================================
   STAGE RINGS
========================================================= */

.contact-stage-ring {
    position: absolute;

    z-index: -3;

    border: 1px solid rgba(240, 200, 159, .055);

    border-radius: 50%;

    pointer-events: none;
}

.contact-stage-ring-one {
    width: 720px;
    height: 720px;

    top: -405px;
    right: -55px;

    box-shadow:
        0 0 0 115px rgba(240, 200, 159, .009),
        0 0 0 230px rgba(240, 200, 159, .006);
}

.contact-stage-ring-two {
    width: 370px;
    height: 370px;

    right: 30%;
    bottom: -270px;

    border-color: rgba(240, 200, 159, .04);

    box-shadow:
        0 0 0 80px rgba(240, 200, 159, .005);
}


/* =========================================================
   GIANT WORD
========================================================= */

.contact-stage-word {
    position: absolute;

    z-index: -2;

    right: -45px;
    bottom: 48px;

    color: rgba(255, 255, 255, .018);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: clamp(160px, 18vw, 310px);

    font-weight: 700;

    line-height: .72;

    letter-spacing: -.075em;

    white-space: nowrap;

    user-select: none;

    pointer-events: none;
}


/* =========================================================
   STAGE GRID
========================================================= */

.contact-stage-grid {
    position: relative;

    z-index: 4;

    display: grid;

    grid-template-columns:
        minmax(0, 1.13fr)
        minmax(380px, .87fr);

    align-items: center;

    gap: 90px;
}


/* =========================================================
   STAGE COPY
========================================================= */

.contact-stage-copy {
    min-width: 0;
}


/* =========================================================
   EYEBROW
========================================================= */

.contact-stage-eyebrow {
    display: flex;

    align-items: center;

    gap: 14px;
}

.contact-stage-eyebrow > span {
    width: 47px;
    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--contact-copper-300),
            rgba(237, 189, 139, .04)
        );
}

.contact-stage-eyebrow small {
    color: rgba(255, 255, 255, .39);

    font-size: 8px;

    font-weight: 800;

    letter-spacing: .20em;
}


/* =========================================================
   HERO TITLE
========================================================= */

.contact-stage-copy h1 {
    max-width: 850px;

    margin: 30px 0 0;

    color: #ffffff;

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: clamp(65px, 6.7vw, 106px);

    font-weight: 500;

    line-height: .84;

    letter-spacing: -.064em;
}

.contact-stage-copy h1 > span,
.contact-stage-copy h1 > em,
.contact-stage-copy h1 > strong {
    display: block;
}

.contact-stage-copy h1 > span {
    font-weight: 500;
}

.contact-stage-copy h1 > em {
    padding-left: .44em;

    color: var(--contact-copper-200);

    font-weight: 500;
}

.contact-stage-copy h1 > strong {
    padding-left: .11em;

    color: rgba(255, 255, 255, .92);

    font-weight: 500;
}


/* =========================================================
   HERO DESCRIPTION
========================================================= */

.contact-stage-description {
    max-width: 580px;

    margin: 34px 0 0;

    padding-left: 2px;

    color: rgba(255, 255, 255, .48);

    font-size: 13px;

    line-height: 1.95;
}


/* =========================================================
   HERO ACTIONS
========================================================= */

.contact-stage-actions {
    margin-top: 38px;

    display: flex;

    align-items: center;

    flex-wrap: wrap;

    gap: 12px;
}

.contact-stage-primary,
.contact-stage-ghost {
    min-height: 60px;

    border-radius: 999px;

    display: inline-flex;

    align-items: center;

    text-decoration: none;

    font-size: 8px;

    font-weight: 800;

    letter-spacing: .11em;

    text-transform: uppercase;

    transition:
        transform .3s ease,
        box-shadow .3s ease,
        border-color .3s ease,
        background .3s ease,
        color .3s ease;
}


/* =========================================================
   PRIMARY ACTION
========================================================= */

.contact-stage-primary {
    padding: 0 8px 0 29px;

    gap: 31px;

    color: #290811;

    background:
        linear-gradient(
            135deg,
            #f2cfa8,
            #d69760
        );

    box-shadow:
        0 20px 50px rgba(0, 0, 0, .21);
}

.contact-stage-primary:hover {
    transform: translateY(-4px);

    box-shadow:
        0 28px 65px rgba(0, 0, 0, .31);
}

.contact-stage-primary-icon {
    width: 44px;
    height: 44px;

    display: grid;

    place-items: center;

    border-radius: 50%;

    color: #ffffff;

    background:
        linear-gradient(
            145deg,
            #4a0d1c,
            #26060d
        );

    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .12);

    transition: transform .3s ease;
}

.contact-stage-primary:hover
.contact-stage-primary-icon {
    transform: translateY(2px);
}


/* =========================================================
   GHOST ACTION
========================================================= */

.contact-stage-ghost {
    padding: 0 26px;

    gap: 11px;

    color: rgba(255, 255, 255, .65);

    border: 1px solid rgba(255, 255, 255, .10);

    background: rgba(255, 255, 255, .025);

    backdrop-filter: blur(12px);

    -webkit-backdrop-filter: blur(12px);
}

.contact-stage-ghost i {
    color: var(--contact-copper-200);

    font-size: 11px;
}

.contact-stage-ghost:hover {
    color: #ffffff;

    border-color: rgba(237, 189, 139, .27);

    background: rgba(255, 255, 255, .055);

    transform: translateY(-4px);
}


/* =========================================================
   HERO MICRO DATA
========================================================= */

.contact-stage-micro {
    margin-top: 54px;

    display: flex;

    align-items: stretch;
}

.contact-stage-micro-item {
    min-width: 205px;

    padding-right: 29px;

    display: flex;

    flex-direction: column;

    gap: 7px;
}

.contact-stage-micro-item + .contact-stage-micro-item {
    padding-left: 29px;

    border-left: 1px solid rgba(255, 255, 255, .075);
}

.contact-stage-micro-item small {
    color: rgba(255, 255, 255, .25);

    font-size: 7px;

    font-weight: 800;

    letter-spacing: .17em;
}

.contact-stage-micro-item a {
    color: rgba(255, 255, 255, .76);

    text-decoration: none;

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 14px;

    line-height: 1.45;

    transition: color .2s ease;
}

.contact-stage-micro-item a:hover {
    color: var(--contact-copper-200);
}


/* =========================================================
   EXPERIENCE
========================================================= */

.contact-stage-experience {
    min-height: 590px;

    position: relative;

    display: flex;

    align-items: center;

    justify-content: center;

    perspective: 1000px;

    transform-style: preserve-3d;
}


/* =========================================================
   EXPERIENCE CARD
========================================================= */

.contact-stage-card {
    width: min(100%, 405px);

    min-height: 540px;

    padding: 29px 30px;

    position: relative;

    overflow: hidden;

    display: flex;

    flex-direction: column;

    border: 1px solid rgba(239, 200, 159, .22);

    border-radius:
        205px
        205px
        28px
        28px;

    background:
        radial-gradient(
            circle at 50% 40%,
            rgba(108, 24, 51, .35),
            transparent 31%
        ),
        linear-gradient(
            145deg,
            rgba(255, 255, 255, .075),
            rgba(255, 255, 255, .012)
        ),
        rgba(12, 2, 5, .67);

    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .075),
        inset 0 -1px 0 rgba(255, 255, 255, .025),
        0 55px 130px rgba(0, 0, 0, .43);

    backdrop-filter: blur(22px);

    -webkit-backdrop-filter: blur(22px);

    transform:
        rotate(2.4deg)
        translateZ(0);

    transform-origin: center center;

    transition:
        transform .25s ease,
        border-color .35s ease,
        box-shadow .35s ease;
}

.contact-stage-card:hover {
    border-color: rgba(239, 200, 159, .36);

    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .10),
        0 65px 145px rgba(0, 0, 0, .50);
}


/* =========================================================
   CARD DECORATIONS
========================================================= */

.contact-stage-card::before {
    content: "";

    width: 1px;
    height: 110px;

    position: absolute;

    top: 57px;
    left: 50%;

    background:
        linear-gradient(
            to bottom,
            transparent,
            rgba(239, 200, 159, .18),
            transparent
        );
}

.contact-stage-card::after {
    content: "";

    width: 230px;
    height: 230px;

    position: absolute;

    top: 150px;
    left: 50%;

    border: 1px solid rgba(239, 200, 159, .065);

    border-radius: 50%;

    transform: translateX(-50%);

    box-shadow:
        0 0 0 37px rgba(239, 200, 159, .010),
        0 0 0 74px rgba(239, 200, 159, .006);

    pointer-events: none;
}


/* =========================================================
   CARD TOP
========================================================= */

.contact-stage-card-top {
    position: relative;

    z-index: 3;

    display: flex;

    align-items: center;

    justify-content: space-between;

    color: rgba(255, 255, 255, .27);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .17em;
}

.contact-stage-card-top > span {
    color: var(--contact-copper-200);
}


/* =========================================================
   CARD ORBIT
========================================================= */

.contact-stage-card-orbit {
    width: 155px;
    height: 155px;

    margin: 66px auto 0;

    position: relative;

    z-index: 3;

    display: grid;

    place-items: center;
}

.contact-stage-card-orbit-ring {
    position: absolute;

    inset: 0;

    border: 1px solid rgba(239, 200, 159, .13);

    border-radius: 50%;
}

.contact-stage-card-orbit-ring::before,
.contact-stage-card-orbit-ring::after {
    content: "";

    position: absolute;

    background: rgba(239, 200, 159, .13);
}

.contact-stage-card-orbit-ring::before {
    width: 38px;
    height: 1px;

    top: 50%;
    left: -20px;
}

.contact-stage-card-orbit-ring::after {
    width: 1px;
    height: 38px;

    top: -20px;
    left: 50%;
}

.contact-stage-card-orbit-ring-two {
    inset: 24px;

    border-color: rgba(239, 200, 159, .08);

    animation:
        contactOrbit 18s linear infinite;
}

@keyframes contactOrbit {
    to {
        transform: rotate(360deg);
    }
}

.contact-stage-card-icon {
    width: 59px;
    height: 59px;

    position: relative;

    z-index: 3;

    display: grid;

    place-items: center;

    border: 1px solid rgba(239, 200, 159, .24);

    border-radius: 50%;

    color: var(--contact-copper-200);

    background:
        radial-gradient(
            circle,
            rgba(239, 200, 159, .075),
            rgba(239, 200, 159, .015)
        );

    box-shadow:
        0 0 35px rgba(213, 148, 91, .055);

    font-size: 19px;
}


/* =========================================================
   CARD CONTENT
========================================================= */

.contact-stage-card-content {
    margin-top: 24px;

    position: relative;

    z-index: 3;

    text-align: center;
}

.contact-stage-card-content small {
    color: var(--contact-copper-200);

    font-size: 7px;

    font-weight: 800;

    letter-spacing: .18em;
}

.contact-stage-card-content h2 {
    max-width: 300px;

    margin: 10px auto 0;

    color: #ffffff;

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 31px;

    font-weight: 500;

    line-height: 1.02;
}

.contact-stage-card-content p {
    max-width: 270px;

    margin: 11px auto 0;

    color: rgba(255, 255, 255, .40);

    font-size: 9px;

    line-height: 1.65;
}


/* =========================================================
   CARD BOTTOM
========================================================= */

.contact-stage-card-bottom {
    min-height: 58px;

    margin-top: auto;

    position: relative;

    z-index: 3;

    border-top: 1px solid rgba(255, 255, 255, .065);

    display: flex;

    align-items: flex-end;

    justify-content: center;

    gap: 9px;

    color: rgba(255, 255, 255, .27);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .14em;
}

.contact-stage-card-bottom i {
    width: 3px;
    height: 3px;

    margin-bottom: 3px;

    border-radius: 50%;

    background: var(--contact-copper-200);
}


/* =========================================================
   FLOATING LOCATION
========================================================= */

.contact-stage-location {
    width: 275px;

    min-height: 78px;

    padding: 13px 15px;

    position: absolute;

    z-index: 7;

    left: -52px;
    bottom: 38px;

    display: grid;

    grid-template-columns:
        43px
        minmax(0, 1fr)
        28px;

    align-items: center;

    gap: 12px;

    border: 1px solid rgba(255, 255, 255, .10);

    border-radius: 18px;

    color: #ffffff;

    text-decoration: none;

    background:
        linear-gradient(
            145deg,
            rgba(25, 4, 10, .98),
            rgba(10, 1, 4, .96)
        );

    box-shadow:
        0 25px 60px rgba(0, 0, 0, .40);

    backdrop-filter: blur(18px);

    -webkit-backdrop-filter: blur(18px);

    transition:
        transform .3s ease,
        border-color .3s ease;
}

.contact-stage-location:hover {
    transform: translateY(-5px);

    border-color: rgba(239, 200, 159, .25);
}

.contact-stage-location-icon {
    width: 43px;
    height: 43px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(239, 200, 159, .20);

    border-radius: 50%;

    color: var(--contact-copper-200);

    background: rgba(239, 200, 159, .035);
}

.contact-stage-location-copy {
    min-width: 0;

    display: flex;

    flex-direction: column;

    gap: 3px;
}

.contact-stage-location-copy small {
    color: rgba(255, 255, 255, .27);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .15em;
}

.contact-stage-location-copy strong {
    color: rgba(255, 255, 255, .88);

    font-size: 9px;

    font-weight: 700;
}

.contact-stage-location-arrow {
    width: 28px;
    height: 28px;

    display: grid;

    place-items: center;

    color: var(--contact-copper-200);

    font-size: 8px;
}


/* =========================================================
   HERO BOTTOM
========================================================= */

.contact-stage-bottom {
    position: absolute;

    z-index: 8;

    right: 0;
    bottom: 0;
    left: 0;

    border-top: 1px solid rgba(255, 255, 255, .06);
}

.contact-stage-bottom-inner {
    min-height: 67px;

    display: flex;

    align-items: center;

    gap: 23px;
}

.contact-stage-bottom-inner > span {
    color: rgba(255, 255, 255, .21);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .18em;
}

.contact-stage-bottom-inner > div {
    height: 1px;

    flex: 1;

    background:
        linear-gradient(
            90deg,
            rgba(255, 255, 255, .075),
            transparent
        );
}

.contact-stage-bottom-inner > a {
    display: flex;

    align-items: center;

    gap: 10px;

    color: rgba(255, 255, 255, .30);

    text-decoration: none;

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .17em;

    transition: color .2s ease;
}

.contact-stage-bottom-inner > a i {
    color: var(--contact-copper-200);
}

.contact-stage-bottom-inner > a:hover {
    color: #ffffff;
}


/* =========================================================
   CONTACT STRIP
========================================================= */

.contact-strip {
    padding: 0 0 68px;

    position: relative;

    background:
        linear-gradient(
            180deg,
            var(--contact-cream-200),
            var(--contact-cream-100)
        );
}

.contact-strip-grid {
    position: relative;

    z-index: 9;

    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    transform: translateY(-37px);

    border: 1px solid var(--contact-border);

    border-radius: 24px;

    overflow: hidden;

    background: rgba(255, 252, 247, .96);

    box-shadow:
        0 32px 80px rgba(40, 7, 17, .095);
}


/* =========================================================
   STRIP ITEM
========================================================= */

.contact-strip-item {
    min-height: 220px;

    padding: 27px 28px 29px;

    position: relative;

    overflow: hidden;

    background:
        linear-gradient(
            145deg,
            rgba(255, 255, 255, .94),
            rgba(250, 242, 232, .72)
        );

    transition:
        background .3s ease,
        transform .3s ease;
}

.contact-strip-item + .contact-strip-item {
    border-left: 1px solid rgba(49, 8, 18, .075);
}

.contact-strip-item::before {
    content: "";

    width: 160px;
    height: 160px;

    position: absolute;

    top: -120px;
    right: -90px;

    border: 1px solid rgba(169, 105, 67, .11);

    border-radius: 50%;

    pointer-events: none;
}

.contact-strip-item::after {
    content: "";

    width: 0;
    height: 2px;

    position: absolute;

    right: 0;
    bottom: 0;
    left: 0;

    margin: auto;

    background:
        linear-gradient(
            90deg,
            transparent,
            var(--contact-copper-500),
            transparent
        );

    transition: width .4s cubic-bezier(.16, 1, .3, 1);
}

.contact-strip-item:hover::after {
    width: 72%;
}


/* =========================================================
   STRIP HEAD
========================================================= */

.contact-strip-head {
    display: flex;

    align-items: center;

    justify-content: space-between;
}

.contact-strip-head > span {
    color: rgba(49, 8, 18, .22);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 15px;
}

.contact-strip-head > i {
    width: 43px;
    height: 43px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(49, 8, 18, .12);

    border-radius: 50%;

    color: var(--contact-wine-600);

    background: rgba(49, 8, 18, .025);

    font-size: 13px;

    transition:
        color .3s ease,
        background .3s ease,
        transform .3s ease;
}

.contact-strip-item:hover
.contact-strip-head > i {
    color: #ffffff;

    background: var(--contact-wine-700);

    transform: rotate(-7deg);
}


/* =========================================================
   STRIP BODY
========================================================= */

.contact-strip-body {
    margin-top: 27px;
}

.contact-strip-body > small {
    color: var(--contact-copper-600);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .18em;
}

.contact-strip-body h3 {
    margin: 6px 0 0;

    color: var(--contact-wine-700);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 27px;

    font-weight: 600;
}

.contact-strip-links {
    margin-top: 12px;

    display: flex;

    flex-direction: column;
}

.contact-strip-links a {
    min-height: 31px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    color: var(--contact-muted);

    text-decoration: none;

    font-size: 9px;

    line-height: 1.45;

    transition: color .2s ease;
}

.contact-strip-links a + a {
    border-top: 1px solid rgba(49, 8, 18, .055);
}

.contact-strip-links a > span {
    min-width: 0;

    overflow-wrap: anywhere;
}

.contact-strip-links a > i {
    color: var(--contact-copper-500);

    font-size: 7px;

    transition: transform .2s ease;
}

.contact-strip-links a:hover {
    color: var(--contact-wine-700);
}

.contact-strip-links a:hover > i {
    transform: translateX(3px);
}

.contact-strip-empty {
    margin-top: 13px;

    display: block;

    color: var(--contact-muted-light);

    font-size: 9px;
}


/* =========================================================
   MESSAGE SECTION
========================================================= */

.contact-message {
    padding: 90px 0 145px;

    position: relative;

    overflow: hidden;

    background:
        radial-gradient(
            circle at 0 100%,
            rgba(185, 125, 80, .08),
            transparent 27%
        ),
        radial-gradient(
            circle at 100% 0,
            rgba(81, 15, 36, .045),
            transparent 25%
        ),
        var(--contact-cream-100);
}

.contact-message-number {
    position: absolute;

    top: 25px;
    right: 3%;

    color: rgba(49, 8, 18, .023);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: clamp(210px, 27vw, 430px);

    font-weight: 700;

    line-height: .78;

    pointer-events: none;
}


/* =========================================================
   MESSAGE LAYOUT
========================================================= */

.contact-message-layout {
    position: relative;

    z-index: 3;

    display: grid;

    grid-template-columns:
        minmax(0, 1.35fr)
        minmax(310px, .65fr);

    align-items: start;

    gap: 80px;
}


/* =========================================================
   SECTION LABEL
========================================================= */

.contact-section-label {
    display: flex;

    align-items: center;

    gap: 13px;
}

.contact-section-label > span {
    width: 44px;
    height: 1px;

    background:
        linear-gradient(
            90deg,
            var(--contact-copper-500),
            transparent
        );
}

.contact-section-label small {
    color: var(--contact-copper-700);

    font-size: 7px;

    font-weight: 800;

    letter-spacing: .19em;
}


/* =========================================================
   MESSAGE HEADER
========================================================= */

.contact-message-header h2 {
    max-width: 780px;

    margin: 20px 0 0;

    color: var(--contact-text);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: clamp(52px, 5.3vw, 82px);

    font-weight: 500;

    line-height: .91;

    letter-spacing: -.055em;
}

.contact-message-header h2 em {
    display: block;

    color: #98583f;

    font-weight: 500;
}

.contact-message-header p {
    max-width: 600px;

    margin: 25px 0 0;

    color: var(--contact-muted);

    font-size: 12px;

    line-height: 1.9;
}


/* =========================================================
   FEEDBACK
========================================================= */

.contact-feedback {
    margin-top: 27px;

    padding: 16px 18px;

    border-radius: 15px;

    display: flex;

    align-items: center;

    gap: 13px;

    font-size: 9px;

    line-height: 1.55;
}

.contact-feedback[hidden] {
    display: none;
}

.contact-feedback-icon {
    width: 36px;
    height: 36px;

    flex: 0 0 36px;

    display: grid;

    place-items: center;

    border: 1px solid currentColor;

    border-radius: 50%;
}

.contact-feedback > div {
    display: flex;

    flex-direction: column;

    gap: 2px;
}

.contact-feedback-success {
    color: #286346;

    border: 1px solid rgba(40, 99, 70, .15);

    background: rgba(40, 99, 70, .065);
}

.contact-feedback-error {
    color: #963448;

    border: 1px solid rgba(150, 52, 72, .15);

    background: rgba(150, 52, 72, .065);
}


/* =========================================================
   FORM
========================================================= */

.contact-form {
    margin-top: 46px;

    padding: 38px;

    position: relative;

    border: 1px solid rgba(49, 8, 18, .085);

    border-radius: 29px;

    background:
        linear-gradient(
            145deg,
            rgba(255, 255, 255, .77),
            rgba(255, 255, 255, .40)
        );

    box-shadow:
        0 32px 80px rgba(40, 7, 17, .065);

    backdrop-filter: blur(10px);

    -webkit-backdrop-filter: blur(10px);
}

.contact-form::before {
    content: "";

    width: 125px;
    height: 1px;

    position: absolute;

    top: -1px;
    left: 39px;

    background:
        linear-gradient(
            90deg,
            var(--contact-copper-500),
            transparent
        );
}


/* =========================================================
   FORM ROW
========================================================= */

.contact-form-row {
    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 18px;
}


/* =========================================================
   FIELD
========================================================= */

.contact-form-field {
    min-width: 0;

    margin-bottom: 23px;
}

.contact-form-field-head {
    margin-bottom: 9px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 15px;
}

.contact-form-field-head label {
    color: var(--contact-wine-700);

    font-size: 7px;

    font-weight: 800;

    letter-spacing: .13em;

    text-transform: uppercase;
}

.contact-form-field-head > span {
    color: rgba(49, 8, 18, .24);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 11px;
}


/* =========================================================
   CONTROL
========================================================= */

.contact-form-control {
    position: relative;
}

.contact-form-control input,
.contact-form-control select,
.contact-form-control textarea {
    box-sizing: border-box;

    width: 100%;

    outline: none;

    border: 1px solid rgba(49, 8, 18, .105);

    border-radius: 15px;

    color: var(--contact-wine-700);

    background: rgba(255, 255, 255, .68);

    font-family: inherit;

    font-size: 12px;

    transition:
        border-color .25s ease,
        background .25s ease,
        box-shadow .25s ease;
}

.contact-form-control input {
    height: 61px;

    padding: 0 48px 0 18px;
}

.contact-form-control textarea {
    min-height: 190px;

    padding: 18px;

    resize: vertical;

    line-height: 1.7;
}

.contact-form-control input::placeholder,
.contact-form-control textarea::placeholder {
    color: rgba(49, 8, 18, .31);
}

.contact-form-control > i {
    position: absolute;

    top: 50%;
    right: 18px;

    color: var(--contact-copper-500);

    font-size: 11px;

    pointer-events: none;

    transform: translateY(-50%);
}


/* =========================================================
   SELECT
========================================================= */

.contact-form-select select {
    height: 61px;

    padding: 0 48px 0 18px;

    appearance: none;

    -webkit-appearance: none;

    cursor: pointer;

    color: rgba(49, 8, 18, .48);
}

.contact-form-select select.has-value {
    color: var(--contact-wine-700);
}

.contact-form-select option {
    color: var(--contact-wine-700);

    background: #ffffff;
}


/* =========================================================
   FORM FOCUS
========================================================= */

.contact-form-control input:focus,
.contact-form-control select:focus,
.contact-form-control textarea:focus {
    border-color: rgba(191, 125, 80, .68);

    background: #ffffff;

    box-shadow:
        0 0 0 4px rgba(191, 125, 80, .075),
        0 15px 35px rgba(40, 7, 17, .045);
}


/* =========================================================
   FORM ERROR
========================================================= */

.contact-form-control input.has-error,
.contact-form-control select.has-error,
.contact-form-control textarea.has-error {
    border-color: rgba(154, 48, 67, .62);

    box-shadow:
        0 0 0 4px rgba(154, 48, 67, .05);
}

.contact-field-error {
    min-height: 13px;

    margin-top: 7px;

    display: block;

    color: #9a3043;

    font-size: 8px;

    line-height: 1.45;
}


/* =========================================================
   MESSAGE META
========================================================= */

.contact-form-message-meta {
    min-height: 20px;

    margin-top: 7px;

    display: flex;

    align-items: flex-start;

    justify-content: space-between;

    gap: 20px;
}

.contact-form-message-meta > span {
    margin-left: auto;

    color: var(--contact-muted-light);

    font-size: 8px;

    white-space: nowrap;
}

.contact-form-message-meta > span.is-near-limit {
    color: #993044;

    font-weight: 800;
}


/* =========================================================
   PRIVACY
========================================================= */

.contact-form-privacy {
    margin: 2px 0 29px;
}

.contact-form-privacy label {
    display: flex;

    align-items: flex-start;

    gap: 12px;

    color: var(--contact-muted);

    font-size: 9px;

    line-height: 1.7;

    cursor: pointer;
}

.contact-form-privacy input {
    position: absolute;

    opacity: 0;

    pointer-events: none;
}

.contact-form-checkbox {
    box-sizing: border-box;

    width: 21px;
    height: 21px;

    flex: 0 0 21px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(49, 8, 18, .19);

    border-radius: 6px;

    color: transparent;

    background: rgba(255, 255, 255, .75);

    font-size: 8px;

    transition:
        color .2s ease,
        background .2s ease,
        border-color .2s ease,
        box-shadow .2s ease;
}

.contact-form-privacy
input:checked +
.contact-form-checkbox {
    color: #ffffff;

    border-color: var(--contact-wine-700);

    background: var(--contact-wine-700);
}

.contact-form-privacy
input:focus-visible +
.contact-form-checkbox {
    border-color: var(--contact-copper-500);

    box-shadow:
        0 0 0 4px rgba(191, 125, 80, .10);
}

.contact-form-privacy a {
    color: var(--contact-wine-700);

    font-weight: 700;

    text-decoration: underline;

    text-underline-offset: 3px;
}


/* =========================================================
   SUBMIT
========================================================= */

.contact-form-submit-row {
    display: flex;

    align-items: center;

    gap: 24px;
}

.contact-form-submit {
    min-height: 61px;

    padding: 0 8px 0 28px;

    border: 0;

    border-radius: 999px;

    display: inline-flex;

    align-items: center;

    gap: 27px;

    cursor: pointer;

    color: #ffffff;

    background:
        linear-gradient(
            135deg,
            #68182d,
            #2d0712
        );

    box-shadow:
        0 19px 45px rgba(49, 8, 18, .22);

    font-family: inherit;

    font-size: 8px;

    font-weight: 800;

    letter-spacing: .10em;

    text-transform: uppercase;

    transition:
        transform .25s ease,
        box-shadow .25s ease,
        opacity .25s ease;
}

.contact-form-submit:hover {
    transform: translateY(-4px);

    box-shadow:
        0 27px 60px rgba(49, 8, 18, .29);
}

.contact-form-submit:disabled {
    cursor: wait;

    opacity: .62;

    transform: none;
}

.contact-form-submit-icon {
    width: 45px;
    height: 45px;

    display: grid;

    place-items: center;

    border-radius: 50%;

    color: var(--contact-wine-700);

    background:
        linear-gradient(
            145deg,
            #f2cda6,
            #dca16c
        );
}

.contact-submit-loading {
    display: none;
}

.contact-form-submit.is-loading
.contact-submit-label {
    display: none;
}

.contact-form-submit.is-loading
.contact-submit-loading {
    display: inline;
}

.contact-form-submit.is-loading
.contact-form-submit-icon i {
    animation:
        contactLoadingSpin .75s linear infinite;
}

.contact-form-submit.is-loading
.contact-form-submit-icon i::before {
    content: "\f110";
}

@keyframes contactLoadingSpin {
    to {
        transform: rotate(360deg);
    }
}


/* =========================================================
   SUBMIT CONFIRMATION
========================================================= */

.contact-form-confirmation {
    max-width: 210px;

    display: flex;

    align-items: center;

    gap: 10px;

    color: var(--contact-muted);

    font-size: 8px;

    line-height: 1.55;
}

.contact-form-confirmation i {
    color: var(--contact-copper-500);

    font-size: 14px;
}


/* =========================================================
   HONEYPOT
========================================================= */

.contact-honeypot {
    width: 1px;
    height: 1px;

    position: absolute;

    left: -10000px;

    overflow: hidden;
}


/* =========================================================
   SIDE
========================================================= */

.contact-side {
    position: sticky;

    top: 110px;
}


/* =========================================================
   HOURS
========================================================= */

.contact-side-hours {
    padding: 31px;

    position: relative;

    overflow: hidden;

    border: 1px solid rgba(49, 8, 18, .085);

    border-radius: 27px;

    background:
        radial-gradient(
            circle at 100% 0,
            rgba(191, 125, 80, .11),
            transparent 34%
        ),
        rgba(255, 255, 255, .62);

    box-shadow:
        0 28px 70px rgba(40, 7, 17, .07);
}

.contact-side-hours::before {
    content: "";

    width: 155px;
    height: 155px;

    position: absolute;

    top: -105px;
    right: -80px;

    border: 1px solid rgba(191, 125, 80, .11);

    border-radius: 50%;

    pointer-events: none;
}


/* =========================================================
   HOURS TOP
========================================================= */

.contact-side-hours-top {
    padding-bottom: 23px;

    position: relative;

    z-index: 2;

    border-bottom: 1px solid rgba(49, 8, 18, .07);

    display: flex;

    align-items: flex-start;

    justify-content: space-between;

    gap: 20px;
}

.contact-side-hours-top small {
    color: var(--contact-copper-600);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .18em;
}

.contact-side-hours-top h3 {
    margin: 8px 0 0;

    color: var(--contact-text);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 29px;

    font-weight: 600;

    line-height: 1.03;
}

.contact-side-hours-top h3 em {
    display: block;

    color: #99593f;

    font-weight: 500;
}

.contact-side-clock {
    width: 45px;
    height: 45px;

    flex: 0 0 45px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(49, 8, 18, .12);

    border-radius: 50%;

    color: var(--contact-wine-700);

    background: rgba(255, 255, 255, .30);

    font-size: 14px;
}


/* =========================================================
   HOURS LIST
========================================================= */

.contact-side-hours-list {
    margin-top: 11px;
}

.contact-side-hours-row {
    min-height: 49px;

    padding: 9px 0;

    position: relative;

    border-bottom: 1px solid rgba(49, 8, 18, .055);

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 14px;
}

.contact-side-hours-row:last-child {
    border-bottom: 0;
}

.contact-side-hours-day {
    display: flex;

    align-items: center;

    gap: 9px;

    color: var(--contact-muted);

    font-size: 9px;
}

.contact-side-hours-day > span:last-child {
    display: flex;

    align-items: center;

    gap: 6px;
}

.contact-side-hours-day small {
    padding: 3px 6px;

    border-radius: 999px;

    color: #ffffff;

    background: var(--contact-wine-700);

    font-size: 5px;

    font-weight: 800;

    letter-spacing: .08em;

    text-transform: uppercase;
}

.contact-side-hours-dot {
    width: 5px;
    height: 5px;

    flex: 0 0 5px;

    border-radius: 50%;

    background: var(--contact-copper-500);

    box-shadow:
        0 0 0 4px rgba(191, 125, 80, .07);
}

.contact-side-hours-row strong {
    color: var(--contact-wine-700);

    font-size: 8px;

    font-weight: 800;

    white-space: nowrap;
}


/* TODAY */

.contact-side-hours-row.is-today {
    margin-right: -11px;
    margin-left: -11px;

    padding-right: 11px;
    padding-left: 11px;

    border-radius: 9px;

    background: rgba(191, 125, 80, .07);
}

.contact-side-hours-row.is-today
.contact-side-hours-dot {
    background: var(--contact-wine-600);

    box-shadow:
        0 0 0 4px rgba(104, 24, 45, .08);
}


/* CLOSED */

.contact-side-hours-row.is-closed {
    opacity: .50;
}

.contact-side-hours-row.is-closed
.contact-side-hours-dot {
    background: #9e918c;

    box-shadow: none;
}


/* =========================================================
   HOURS EMPTY / FOOTER
========================================================= */

.contact-side-hours-empty {
    padding: 25px 0 8px;

    color: var(--contact-muted);

    font-size: 9px;

    line-height: 1.6;
}

.contact-side-hours-bottom {
    margin-top: 13px;

    padding-top: 18px;

    border-top: 1px solid rgba(49, 8, 18, .07);

    display: flex;

    align-items: center;

    gap: 10px;

    color: var(--contact-muted);

    font-size: 8px;

    line-height: 1.5;
}

.contact-side-hours-bottom i {
    color: var(--contact-copper-500);

    font-size: 12px;
}


/* =========================================================
   DIRECT CARD
========================================================= */

.contact-side-direct {
    margin-top: 19px;

    padding: 31px;

    position: relative;

    overflow: hidden;

    border-radius: 27px;

    color: #ffffff;

    background:
        radial-gradient(
            circle at 100% 0,
            rgba(128, 31, 61, .30),
            transparent 40%
        ),
        linear-gradient(
            145deg,
            #110205,
            #310813
        );

    box-shadow:
        0 30px 75px rgba(40, 7, 17, .19);
}

.contact-side-direct::before {
    content: "";

    width: 175px;
    height: 175px;

    position: absolute;

    top: -110px;
    right: -85px;

    border: 1px solid rgba(239, 200, 159, .08);

    border-radius: 50%;

    pointer-events: none;
}

.contact-side-direct-word {
    position: absolute;

    right: -10px;
    bottom: -17px;

    color: rgba(255, 255, 255, .025);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 85px;

    font-weight: 700;

    letter-spacing: -.07em;

    pointer-events: none;
}

.contact-side-direct > small {
    position: relative;

    z-index: 2;

    color: var(--contact-copper-200);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .18em;
}

.contact-side-direct > h3 {
    margin: 14px 0 0;

    position: relative;

    z-index: 2;

    color: #ffffff;

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 32px;

    font-weight: 500;

    line-height: 1.02;
}

.contact-side-direct > h3 em {
    display: block;

    color: var(--contact-copper-200);

    font-weight: 500;
}

.contact-side-direct > p {
    margin: 16px 0 0;

    position: relative;

    z-index: 2;

    color: rgba(255, 255, 255, .46);

    font-size: 9px;

    line-height: 1.8;
}


/* =========================================================
   DIRECT LINKS
========================================================= */

.contact-side-direct-links {
    margin-top: 22px;

    position: relative;

    z-index: 2;

    display: flex;

    flex-direction: column;
}

.contact-side-direct-links > a {
    min-height: 67px;

    padding: 11px 0;

    border-top: 1px solid rgba(255, 255, 255, .07);

    display: grid;

    grid-template-columns:
        38px
        minmax(0, 1fr)
        auto;

    align-items: center;

    gap: 12px;

    color: #ffffff;

    text-decoration: none;
}

.contact-side-direct-link-icon {
    width: 38px;
    height: 38px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(239, 200, 159, .14);

    border-radius: 50%;

    color: var(--contact-copper-200);

    background: rgba(239, 200, 159, .025);

    transition:
        color .25s ease,
        background .25s ease;
}

.contact-side-direct-links > a > span:nth-child(2) {
    min-width: 0;

    display: flex;

    flex-direction: column;

    gap: 3px;
}

.contact-side-direct-links small {
    color: rgba(255, 255, 255, .25);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .13em;
}

.contact-side-direct-links strong {
    overflow-wrap: anywhere;

    color: rgba(255, 255, 255, .82);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 13px;

    font-weight: 500;

    transition: color .2s ease;
}

.contact-side-direct-links > a > i {
    color: var(--contact-copper-200);

    font-size: 8px;

    transition: transform .25s ease;
}

.contact-side-direct-links > a:hover
.contact-side-direct-link-icon {
    color: var(--contact-wine-700);

    background: var(--contact-copper-200);
}

.contact-side-direct-links > a:hover strong {
    color: var(--contact-copper-200);
}

.contact-side-direct-links > a:hover > i {
    transform: translateX(4px);
}


/* =========================================================
   PLACE / LOCATION STORY
========================================================= */

.contact-place {
    padding: 120px 0 68px;

    position: relative;

    background:
        linear-gradient(
            180deg,
            #fbf6ef,
            #fffaf4
        );
}

.contact-place-heading-grid {
    margin-top: 20px;

    display: grid;

    grid-template-columns:
        minmax(0, 1.12fr)
        minmax(300px, .88fr);

    align-items: end;

    gap: 85px;
}

.contact-place-heading h2 {
    max-width: 790px;

    margin: 0;

    color: var(--contact-text);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: clamp(52px, 5.2vw, 82px);

    font-weight: 500;

    line-height: .92;

    letter-spacing: -.055em;
}

.contact-place-heading h2 em {
    display: block;

    color: #99593f;

    font-weight: 500;
}

.contact-place-copy p {
    max-width: 510px;

    margin: 0;

    color: var(--contact-muted);

    font-size: 12px;

    line-height: 1.9;
}


/* =========================================================
   PLACE CTA
========================================================= */

.contact-place-copy > a {
    max-width: 250px;

    min-height: 58px;

    margin-top: 27px;

    padding: 0 8px 0 22px;

    border: 1px solid rgba(49, 8, 18, .12);

    border-radius: 999px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 20px;

    color: var(--contact-wine-700);

    text-decoration: none;

    background: rgba(255, 255, 255, .62);

    font-size: 8px;

    font-weight: 800;

    letter-spacing: .04em;

    transition:
        transform .25s ease,
        box-shadow .25s ease,
        background .25s ease;
}

.contact-place-copy > a > span:last-child {
    width: 42px;
    height: 42px;

    flex: 0 0 42px;

    display: grid;

    place-items: center;

    border-radius: 50%;

    color: #ffffff;

    background: var(--contact-wine-700);
}

.contact-place-copy > a:hover {
    transform: translateY(-4px);

    background: #ffffff;

    box-shadow:
        0 18px 40px rgba(40, 7, 17, .08);
}


/* =========================================================
   MAP
========================================================= */

.contact-map {
    padding: 0 0 125px;

    background: var(--contact-cream-100);
}

.contact-map-frame {
    height: 660px;

    position: relative;

    overflow: hidden;

    border-top: 1px solid rgba(49, 8, 18, .08);

    border-bottom: 1px solid rgba(49, 8, 18, .08);

    background: #ded2c6;
}

.contact-map-frame iframe {
    width: 100%;
    height: 100%;

    border: 0;

    filter:
        saturate(.70)
        contrast(.96)
        sepia(.06);

    transition:
        filter .7s ease,
        transform 1.2s cubic-bezier(.16, 1, .3, 1);
}

.contact-map-frame:hover iframe {
    filter:
        saturate(.94)
        contrast(1)
        sepia(0);

    transform: scale(1.008);
}


/* =========================================================
   MAP PLACEHOLDER
========================================================= */

.contact-map-placeholder {
    width: 100%;
    height: 100%;

    display: flex;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    text-align: center;

    background:
        radial-gradient(
            circle at center,
            rgba(191, 125, 80, .13),
            transparent 29%
        ),
        linear-gradient(
            145deg,
            #e8ddd1,
            #dcd0c3
        );
}

.contact-map-placeholder-icon {
    width: 75px;
    height: 75px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(49, 8, 18, .16);

    border-radius: 50%;

    color: var(--contact-wine-700);

    background: rgba(255, 255, 255, .25);

    font-size: 24px;
}

.contact-map-placeholder small {
    margin-top: 21px;

    color: var(--contact-copper-600);

    font-size: 7px;

    font-weight: 800;

    letter-spacing: .17em;
}

.contact-map-placeholder strong {
    margin-top: 7px;

    color: var(--contact-text);

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 29px;
}

.contact-map-placeholder p {
    margin: 8px 0 0;

    color: var(--contact-muted);

    font-size: 10px;
}


/* =========================================================
   MAP SHADE
========================================================= */

.contact-map-shade {
    position: absolute;

    z-index: 2;

    inset: 0;

    pointer-events: none;

    background:
        linear-gradient(
            90deg,
            rgba(17, 2, 5, .23),
            transparent 34%,
            transparent 74%,
            rgba(17, 2, 5, .055)
        ),
        linear-gradient(
            180deg,
            rgba(17, 2, 5, .035),
            transparent 38%,
            rgba(17, 2, 5, .12)
        );
}


/* =========================================================
   MAP PANEL
========================================================= */

.contact-map-panel {
    width: min(390px, calc(100% - 60px));

    padding: 27px;

    position: absolute;

    z-index: 5;

    left: max(30px, calc((100% - 1200px) / 2));

    bottom: 31px;

    border: 1px solid rgba(255, 255, 255, .10);

    border-radius: 22px;

    color: #ffffff;

    background:
        linear-gradient(
            145deg,
            rgba(25, 4, 10, .96),
            rgba(9, 1, 3, .94)
        );

    box-shadow:
        0 26px 65px rgba(0, 0, 0, .30);

    backdrop-filter: blur(20px);

    -webkit-backdrop-filter: blur(20px);
}

.contact-map-panel-top {
    display: flex;

    align-items: center;

    gap: 9px;
}

.contact-map-panel-top > span {
    width: 6px;
    height: 6px;

    flex: 0 0 6px;

    border-radius: 50%;

    background: var(--contact-copper-200);

    box-shadow:
        0 0 14px rgba(239, 200, 159, .55);
}

.contact-map-panel-top small {
    color: var(--contact-copper-200);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .17em;
}

.contact-map-panel h3 {
    margin: 15px 0 0;

    color: #ffffff;

    font-family:
        var(--font-heading, "Playfair Display"),
        Georgia,
        serif;

    font-size: 26px;

    font-weight: 500;
}

.contact-map-panel > p {
    margin: 7px 0 0;

    color: rgba(255, 255, 255, .48);

    font-size: 9px;

    line-height: 1.65;
}

.contact-map-panel-line {
    height: 1px;

    margin: 20px 0 0;

    background: rgba(255, 255, 255, .07);
}

.contact-map-panel-bottom {
    min-height: 49px;

    display: flex;

    align-items: flex-end;

    justify-content: space-between;

    gap: 15px;
}

.contact-map-panel-bottom > span {
    color: rgba(255, 255, 255, .29);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .13em;
}

.contact-map-panel-bottom > a {
    width: 36px;
    height: 36px;

    flex: 0 0 36px;

    display: grid;

    place-items: center;

    border: 1px solid rgba(239, 200, 159, .17);

    border-radius: 50%;

    color: var(--contact-copper-200);

    text-decoration: none;

    transition:
        color .25s ease,
        background .25s ease,
        transform .25s ease;
}

.contact-map-panel-bottom > a:hover {
    color: var(--contact-wine-700);

    background: var(--contact-copper-200);

    transform: translateY(-3px);
}


/* =========================================================
   MAP SIDE LABEL
========================================================= */

.contact-map-side-label {
    position: absolute;

    z-index: 4;

    right: 28px;
    bottom: 24px;

    color: rgba(255, 255, 255, .61);

    font-size: 6px;

    font-weight: 800;

    letter-spacing: .18em;

    text-shadow:
        0 1px 5px rgba(0, 0, 0, .50);

    pointer-events: none;
}


/* =========================================================
   RESPONSIVE — 1200
========================================================= */

@media (max-width: 1200px) {

    .contact-stage-grid {
        gap: 55px;
    }

    .contact-stage-location {
        left: -25px;
    }

    .contact-message-layout {
        gap: 55px;
    }

}


/* =========================================================
   RESPONSIVE — 1050
========================================================= */

@media (max-width: 1050px) {

    .contact-stage {
        min-height: auto;

        padding:
            165px
            0
            125px;
    }

    .contact-stage-grid {
        grid-template-columns: 1fr;

        gap: 75px;
    }

    .contact-stage-copy {
        max-width: 850px;
    }

    .contact-stage-experience {
        width: min(100%, 580px);

        margin: 0 auto;
    }


    /* STRIP */

    .contact-strip-grid {
        grid-template-columns: 1fr;

        gap: 10px;

        border: 0;

        overflow: visible;

        background: transparent;

        box-shadow: none;
    }

    .contact-strip-item,
    .contact-strip-item + .contact-strip-item {
        min-height: 165px;

        border: 1px solid rgba(49, 8, 18, .075);

        border-radius: 19px;
    }


    /* MESSAGE */

    .contact-message-layout {
        grid-template-columns: 1fr;

        gap: 55px;
    }

    .contact-side {
        position: static;

        display: grid;

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

        gap: 18px;
    }

    .contact-side-direct {
        margin-top: 0;
    }


    /* PLACE */

    .contact-place-heading-grid {
        grid-template-columns: 1fr;

        gap: 32px;
    }

}


/* =========================================================
   RESPONSIVE — 760
========================================================= */

@media (max-width: 760px) {

    /* HERO */

    .contact-stage {
        padding:
            135px
            0
            115px;
    }

    .contact-stage-copy h1 {
        font-size:
            clamp(
                53px,
                15vw,
                76px
            );
    }

    .contact-stage-copy h1 > em {
        padding-left: .18em;
    }

    .contact-stage-copy h1 > strong {
        padding-left: 0;
    }

    .contact-stage-description {
        font-size: 12px;

        line-height: 1.85;
    }


    /* ACTIONS */

    .contact-stage-actions {
        flex-direction: column;

        align-items: stretch;
    }

    .contact-stage-primary,
    .contact-stage-ghost {
        width: 100%;

        justify-content: space-between;

        box-sizing: border-box;
    }


    /* MICRO */

    .contact-stage-micro {
        margin-top: 42px;

        flex-direction: column;

        gap: 17px;
    }

    .contact-stage-micro-item {
        min-width: 0;

        padding: 0;
    }

    .contact-stage-micro-item +
    .contact-stage-micro-item {
        padding: 17px 0 0;

        border-top:
            1px solid
            rgba(255, 255, 255, .07);

        border-left: 0;
    }


    /* EXPERIENCE */

    .contact-stage-experience {
        min-height: 630px;

        align-items: flex-start;
    }

    .contact-stage-card {
        min-height: 490px;

        padding: 25px;

        border-radius:
            185px
            185px
            25px
            25px;

        transform: none;
    }

    .contact-stage-card-orbit {
        margin-top: 59px;
    }

    .contact-stage-card-content h2 {
        font-size: 27px;
    }

    .contact-stage-location {
        width: calc(100% - 24px);

        left: 50%;
        bottom: 40px;

        transform: translateX(-50%);
    }

    .contact-stage-location:hover {
        transform:
            translateX(-50%)
            translateY(-4px);
    }

    .contact-stage-word {
        display: none;
    }

    .contact-stage-bottom-inner > span,
    .contact-stage-bottom-inner > div {
        display: none;
    }

    .contact-stage-bottom-inner {
        justify-content: center;
    }


    /* STRIP */

    .contact-strip {
        padding-bottom: 30px;
    }

    .contact-strip-grid {
        transform: translateY(-26px);
    }

    .contact-strip-item {
        min-height: 150px;

        padding: 24px 22px;
    }

    .contact-strip-body {
        margin-top: 19px;
    }


    /* MESSAGE */

    .contact-message {
        padding:
            70px
            0
            95px;
    }

    .contact-message-header h2 {
        font-size:
            clamp(
                45px,
                12vw,
                60px
            );
    }


    /* FORM */

    .contact-form {
        padding: 25px 21px;

        border-radius: 22px;
    }

    .contact-form::before {
        left: 22px;

        width: 85px;
    }

    .contact-form-row {
        grid-template-columns: 1fr;

        gap: 0;
    }

    .contact-form-control input,
    .contact-form-control select,
    .contact-form-control textarea {
        font-size: 16px;
    }

    .contact-form-control input,
    .contact-form-select select {
        height: 59px;
    }

    .contact-form-control textarea {
        min-height: 170px;
    }


    /* SUBMIT */

    .contact-form-submit-row {
        flex-direction: column;

        align-items: stretch;
    }

    .contact-form-submit {
        width: 100%;

        justify-content: space-between;
    }

    .contact-form-confirmation {
        max-width: none;
    }


    /* SIDE */

    .contact-side {
        grid-template-columns: 1fr;
    }


    /* PLACE */

    .contact-place {
        padding:
            85px
            0
            50px;
    }

    .contact-place-heading h2 {
        font-size:
            clamp(
                45px,
                12vw,
                60px
            );
    }

    .contact-place-copy > a {
        width: 100%;

        max-width: none;

        box-sizing: border-box;
    }


    /* MAP */

    .contact-map {
        padding-bottom: 80px;
    }

    .contact-map-frame {
        height: 570px;
    }

    .contact-map-panel {
        width: auto;

        right: 14px;
        bottom: 16px;
        left: 14px;
    }

    .contact-map-side-label {
        display: none;
    }

}


/* =========================================================
   RESPONSIVE — 480
========================================================= */

@media (max-width: 480px) {

    .contact-stage {
        padding-top: 122px;
    }

    .contact-stage-eyebrow > span {
        width: 31px;
    }

    .contact-stage-eyebrow small {
        font-size: 6px;
    }

    .contact-stage-copy h1 {
        font-size: 52px;
    }

    .contact-stage-card {
        min-height: 455px;

        border-radius:
            155px
            155px
            23px
            23px;
    }

    .contact-stage-card-orbit {
        width: 135px;
        height: 135px;

        margin-top: 55px;
    }

    .contact-stage-card-content h2 {
        font-size: 24px;
    }

    .contact-stage-card-bottom {
        gap: 6px;

        font-size: 5px;
    }

    .contact-strip-body h3 {
        font-size: 24px;
    }

    .contact-form {
        padding:
            22px
            17px;
    }

    .contact-side-hours,
    .contact-side-direct {
        padding:
            25px
            21px;
    }

    .contact-map-frame {
        height: 530px;
    }

    .contact-map-panel {
        padding: 22px;
    }

}


/* =========================================================
   RESPONSIVE — 380
========================================================= */

@media (max-width: 380px) {

    .contact-stage-copy h1 {
        font-size: 47px;
    }

    .contact-stage-card {
        min-height: 430px;
    }

    .contact-stage-card-content h2 {
        font-size: 22px;
    }

    .contact-stage-location {
        padding:
            12px
            13px;
    }

    .contact-side-hours-row {
        align-items: flex-start;

        flex-direction: column;

        gap: 5px;
    }

}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {

    .contact-stage [data-contact-reveal],
    .contact-strip [data-contact-reveal],
    .contact-message [data-contact-reveal],
    .contact-place [data-contact-reveal],
    .contact-map [data-contact-reveal] {
        opacity: 1;

        transform: none;

        transition: none;
    }

    .contact-stage-card,
    .contact-stage-primary,
    .contact-stage-ghost,
    .contact-stage-location,
    .contact-form-submit,
    .contact-strip-item,
    .contact-map-frame iframe {
        transition: none;
    }

    .contact-stage-card-orbit-ring-two {
        animation: none;
    }

}