/* Good Vibes: classes Elementor cannot express. Everything reads Elementor's global variables. */

.gv-eyebrow {
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 17px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--e-global-color-secondary);
}

.gv-price-row {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.gv-price-row__leader {
    flex: 1;
    border-bottom: 1px dotted currentColor;
    opacity: 0.4;
    transform: translateY(-5px);
}

.gv-price-row__price {
    color: var(--e-global-color-secondary);
}

.gv-ornament {
    display: flex;
    align-items: center;
    width: 96px;
    margin: 6px auto 0;
}

.gv-ornament::before,
.gv-ornament::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--e-global-color-secondary);
    opacity: 0.8;
}

.gv-ornament span {
    width: 4px;
    height: 4px;
    margin: 0 6px;
    background: var(--e-global-color-secondary);
    transform: rotate(45deg);
}

.gv-panels {
    display: flex;
    gap: 4px;
}

.gv-panels > .e-con,
.gv-panels > .elementor-element {
    flex: 1 1 0;
    min-height: 480px;
    transition: flex 0.7s cubic-bezier(0.2, 0.7, 0.2, 1);
}

.gv-panels > .e-con:hover,
.gv-panels > .elementor-element:hover {
    flex: 2.2 1 0;
}

@media (max-width: 940px) {
    .gv-panels {
        flex-direction: column;
    }

    .gv-panels > .e-con,
    .gv-panels > .elementor-element {
        min-height: 340px;
    }
}

/* Solid by default; transparent only while it sits on top of a hero (a container with the
   class gv-hero) and the page has not been scrolled past the sticky effects offset. */
.gv-header {
    background-color: var(--e-global-color-primary);
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 45%, transparent);
    transition: background-color 0.6s ease, border-color 0.6s ease;
}

body:has(.gv-hero) .gv-header:not(.gv-header--solid):not(.elementor-sticky--effects) {
    background-color: transparent;
    border-bottom-color: transparent;
}

.gv-header--solid {
    background-color: var(--e-global-color-primary);
    border-bottom-color: color-mix(in srgb, var(--e-global-color-secondary) 45%, transparent);
}

.gv-chips .elementor-field-subgroup {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gv-chips .elementor-field-option {
    margin: 0;
}

.gv-chips .elementor-field-option input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.gv-chips .elementor-field-option label {
    display: inline-block;
    padding: 8px 16px;
    border: 1px solid var(--e-global-color-secondary);
    color: var(--e-global-color-text);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    cursor: pointer;
}

.gv-chips .elementor-field-option input:checked + label {
    background: var(--e-global-color-secondary);
    color: var(--e-global-color-primary);
}

/* Phase 2: opening hours, social links, footer, mobile action bar */

/* Hello Elementor gives every paragraph a bottom margin; inside a text widget the
   last one only pushes the next element away. */
.elementor-widget-text-editor p:last-child {
    margin-bottom: 0;
}

/* Hello Elementor's reset styles every table with borders, zebra rows and 15px cells;
   the selectors below match its specificity so the hours read as a plain list. */
table.gv-hours {
    width: auto;
    max-width: 100%;
    margin: 0;
    border: 0;
    border-collapse: collapse;
    border-spacing: 0;
    color: var(--e-global-color-gvsurf1);
    font-size: 17px;
    line-height: 1.5;
}

table.gv-hours tbody > tr > th,
table.gv-hours tbody > tr > td,
table.gv-hours tbody > tr:hover > th,
table.gv-hours tbody > tr:hover > td {
    border: 0;
    background: none;
    vertical-align: baseline;
    text-align: left;
    line-height: 1.5;
}

table.gv-hours tbody > tr > th {
    width: 1%;
    padding: 3px 20px 3px 0;
    font-weight: 400;
    white-space: nowrap;
    opacity: 0.65;
}

table.gv-hours tbody > tr > td {
    padding: 3px 0;
    white-space: nowrap;
}

.gv-hours__kitchen,
.gv-hours--compact {
    margin: 8px 0 0;
    color: var(--e-global-color-gvsurf1);
    opacity: 0.65;
}

.gv-hours__kitchen-inline {
    display: block;
    font-size: 14px;
    color: var(--e-global-color-gvsurf1);
    opacity: 0.65;
}

.gv-hours__status {
    display: inline-block;
    margin-top: 10px;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-size: 13px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--e-global-color-gvsurf1);
    opacity: 0.65;
}

.gv-hours__status--open {
    color: var(--e-global-color-secondary);
    opacity: 1;
}

.gv-social {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-size: 15px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.gv-social__link {
    color: var(--e-global-color-gvsurf1);
    text-decoration: none;
}

.gv-social__link:hover,
.gv-social__link:focus {
    color: var(--e-global-color-secondary);
}

.gv-social__separator {
    color: var(--e-global-color-gvsurf1);
    opacity: 0.4;
}

.gv-social--icons .gv-social__link {
    font-size: 18px;
    letter-spacing: 0;
}

.gv-footer .elementor-icon-list-item a,
.gv-footer .elementor-icon-list-text {
    color: var(--e-global-color-gvsurf1);
}

.gv-footer .elementor-icon-list-item a:hover .elementor-icon-list-text {
    color: var(--e-global-color-secondary);
}

.gv-action-bar .elementor-widget-button {
    flex: 1 1 0;
}

.gv-action-bar .elementor-button {
    width: 100%;
    border-radius: 0;
    border-left: 1px solid rgba(255, 255, 255, 0.15);
}

.gv-action-bar .elementor-widget-button:first-child .elementor-button {
    border-left: 0;
}

@media (max-width: 767px) {
    body:has(.gv-action-bar) {
        padding-bottom: 56px;
    }
}

/* Menu card (gv-menu widget) ------------------------------------------------ */

.gv-menu {
    color: var(--e-global-color-text);
}

.gv-menu__intro {
    margin: 0 0 32px;
    font-size: 17px;
    line-height: 1.6;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

.gv-menu__empty {
    margin: 0;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

/* Dish rows */
.gv-dish {
    display: grid;
    grid-template-columns: 1fr auto;
    column-gap: 24px;
    row-gap: 4px;
    padding: 16px 0;
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-primary) 12%, transparent);
    transition: background-color 0.4s ease;
}

.gv-dish:last-child {
    border-bottom: 0;
}

.gv-dish:hover {
    background-color: color-mix(in srgb, var(--e-global-color-secondary) 6%, transparent);
}

.gv-dish.is-hidden,
.gv-menu__section.is-hidden {
    display: none;
}

.gv-dish__title {
    font-size: 21px;
    line-height: 1.3;
    color: var(--e-global-color-primary);
}

.gv-dish__price {
    font-size: 19px;
    line-height: 1.3;
    color: var(--e-global-color-secondary);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.gv-dish__description {
    grid-column: 1 / -1;
    font-size: 16px;
    line-height: 1.5;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

.gv-dish__tags {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 2px;
}

.gv-tag {
    display: inline-flex;
    align-items: center;
    padding: 5px 9px 4px;
    border: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 55%, transparent);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 11px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--e-global-color-accent);
}

/* Section headings */
.gv-menu__section {
    scroll-margin-top: 120px;
    margin-bottom: 52px;
}

.gv-menu__section:last-of-type {
    margin-bottom: 0;
}

.gv-menu__section-head {
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 0 0 6px;
}

.gv-menu__section-head::after,
.gv-menu__section-head--centered::before {
    content: "";
    flex: 1;
    height: 1px;
}

.gv-menu__section-head::after {
    background: linear-gradient(90deg, color-mix(in srgb, var(--e-global-color-secondary) 80%, transparent), transparent);
}

.gv-menu__section-head--centered::before {
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--e-global-color-secondary) 70%, transparent));
}

.gv-menu__section-head--centered .gv-menu__section-title {
    font-style: italic;
}

.gv-menu__section-title {
    margin: 0;
    font-family: var(--e-global-typography-primary-font-family), serif;
    font-weight: 400;
    font-size: 30px;
    line-height: 1;
    color: var(--e-global-color-primary);
    white-space: nowrap;
}

.gv-menu__section-intro {
    margin: 8px 0 4px;
    font-size: 16px;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

/* Footnote, cta */
.gv-menu__footnote {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    margin-top: 56px;
    text-align: center;
}

.gv-menu__footnote .gv-ornament {
    margin: 0;
    width: 180px;
}

.gv-menu__footnote p {
    margin: 0;
    max-width: 44ch;
    font-size: 15px;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

.gv-menu__footnote--small {
    align-items: flex-start;
    margin-top: 36px;
    text-align: left;
}

.gv-menu__footnote--small p {
    max-width: none;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-style: normal;
    font-size: 13px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.gv-menu .gv-menu__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    margin-top: 40px;
    padding: 0 30px;
    background: var(--e-global-color-primary);
    color: var(--e-global-color-gvsurf1);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 17px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-indent: 0.09em;
    line-height: 1;
    text-decoration: none;
    transition: background-color 0.3s ease, transform 0.3s ease;
}

.gv-menu .gv-menu__cta:hover {
    background: var(--e-global-color-accent);
    color: var(--e-global-color-gvsurf1);
    transform: translateY(-2px);
}

/* Long card (M05) */
.gv-menu--long .gv-menu__anchors {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    gap: 28px;
    margin: 0 0 56px;
    overflow-x: auto;
    background: color-mix(in srgb, var(--e-global-color-gvsurf1) 96%, transparent);
    backdrop-filter: blur(6px);
    border-top: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 35%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 35%, transparent);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 15px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.gv-menu--long .gv-menu__anchors a {
    padding: 18px 0;
    color: var(--e-global-color-primary);
    border-bottom: 2px solid transparent;
    white-space: nowrap;
    transition: color 0.3s ease, border-color 0.3s ease;
}

.gv-menu--long .gv-menu__anchors a:hover {
    color: var(--e-global-color-accent);
    border-color: var(--e-global-color-accent);
}

/* Tabs (M02) on the paper card */
.gv-menu--tabs {
    background: var(--e-global-color-gvsurf2);
    box-shadow: 0 34px 80px color-mix(in srgb, var(--e-global-color-gvdark1) 42%, transparent);
}

.gv-menu--tabs .gv-menu__tabs {
    display: none;
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 35%, transparent);
}

.gv-menu--tabs.is-enhanced .gv-menu__tabs {
    display: flex;
    flex-wrap: wrap;
}

.gv-menu .gv-menu__tab {
    flex: 1 0 auto;
    min-width: max-content;
    white-space: nowrap;
    padding: 18px 12px 16px;
    background: transparent;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    color: color-mix(in srgb, var(--e-global-color-primary) 65%, transparent);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 16px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    text-indent: 0.1em;
    cursor: pointer;
    box-shadow: none;
    text-decoration: none;
    line-height: 1.2;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

.gv-menu .gv-menu__tab:hover,
.gv-menu .gv-menu__tab:focus-visible {
    color: var(--e-global-color-accent);
    background: transparent;
}

.gv-menu .gv-menu__tab.is-active {
    color: var(--e-global-color-primary);
    border-bottom-color: var(--e-global-color-secondary);
    background: color-mix(in srgb, var(--e-global-color-secondary) 10%, transparent);
}

.gv-menu--tabs .gv-menu__panel {
    padding: 44px clamp(24px, 6vw, 64px) 40px;
}

.gv-menu--tabs.is-enhanced .gv-menu__panel:not(.is-active) {
    display: none;
}

.gv-menu__panel-title {
    margin: 0 0 24px;
    font-family: var(--e-global-typography-primary-font-family), serif;
    font-weight: 400;
    font-size: 30px;
    line-height: 1;
    text-align: center;
    color: var(--e-global-color-primary);
}

.gv-menu--tabs.is-enhanced .gv-menu__panel-title {
    display: none;
}

.gv-menu--tabs .gv-dish {
    padding: 15px 0;
}

/* Filterable (M06) */
.gv-menu--filterable {
    background: var(--e-global-color-gvsurf2);
    padding: clamp(26px, 3.4vw, 44px);
}

.gv-menu__filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    padding-bottom: 22px;
    margin-bottom: 8px;
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 40%, transparent);
}

.gv-menu .gv-chip {
    padding: 11px 18px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 55%, transparent);
    border-radius: 0;
    color: var(--e-global-color-primary);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 14px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    text-indent: 0.08em;
    cursor: pointer;
    box-shadow: none;
    text-decoration: none;
    line-height: 1.2;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

.gv-menu .gv-chip:hover,
.gv-menu .gv-chip:focus-visible {
    background: transparent;
    border-color: var(--e-global-color-accent);
    color: var(--e-global-color-accent);
}

.gv-menu .gv-chip.is-active {
    background: var(--e-global-color-primary);
    border-color: var(--e-global-color-primary);
    color: var(--e-global-color-gvsurf1);
}

.gv-menu__count {
    margin-left: auto;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 13px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--e-global-color-gvmuted);
}

.gv-menu--filterable .gv-dish {
    padding: 18px 0;
    row-gap: 6px;
}

.gv-menu--filterable .gv-menu__footnote {
    align-items: flex-start;
    margin-top: 22px;
    text-align: left;
}

/* Photos (M04) */
.gv-menu__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 28px;
}

.gv-dish-card {
    display: flex;
    flex-direction: column;
    background: var(--e-global-color-gvsurf2);
    box-shadow: 0 2px 0 color-mix(in srgb, var(--e-global-color-gvdark1) 6%, transparent);
    transition: transform 0.5s cubic-bezier(0.2, 0.7, 0.2, 1), box-shadow 0.5s ease;
}

.gv-dish-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 26px 50px color-mix(in srgb, var(--e-global-color-gvdark1) 22%, transparent);
}

.gv-dish-card__media {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: color-mix(in srgb, var(--e-global-color-primary) 8%, var(--e-global-color-gvsurf2));
}

.gv-dish-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 1.2s cubic-bezier(0.2, 0.7, 0.2, 1);
}

.gv-dish-card:hover .gv-dish-card__media img {
    transform: scale(1.06);
}

.gv-dish-card__media--empty {
    aspect-ratio: auto;
    min-height: 44px;
}

.gv-badge {
    position: absolute;
    left: 0;
    top: 0;
    padding: 8px 14px 7px;
    background: var(--e-global-color-accent);
    color: var(--e-global-color-gvsurf2);
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 12px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.gv-dish-card__body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1;
    padding: 22px 24px 26px;
}

.gv-dish-card__title {
    margin: 0;
    font-family: var(--e-global-typography-primary-font-family), serif;
    font-weight: 400;
    font-size: 23px;
    line-height: 1.25;
    color: var(--e-global-color-primary);
}

.gv-dish-card .gv-price-row__price {
    font-size: 20px;
    font-variant-numeric: tabular-nums;
}

.gv-dish-card__description {
    margin: 0;
    font-size: 16px;
    line-height: 1.55;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

/* Fixed menu (M07) */
.gv-menu__badge {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    margin-bottom: 28px;
    padding: 22px 26px;
    background: var(--e-global-color-primary);
    color: var(--e-global-color-gvsurf1);
}

.gv-menu__badge-label {
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 12px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--e-global-color-secondary);
}

.gv-menu__badge-price {
    font-size: 30px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.gv-course {
    display: grid;
    grid-template-columns: 56px 1fr;
    gap: 20px;
    padding: 26px 0;
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 35%, transparent);
}

.gv-course:last-of-type {
    border-bottom: 0;
}

.gv-course__numeral {
    padding-top: 8px;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 15px;
    letter-spacing: 0.2em;
    color: var(--e-global-color-secondary);
}

.gv-course__label {
    display: block;
    margin-bottom: 8px;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: var(--e-global-typography-accent-font-weight, 700);
    font-size: 12px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--e-global-color-gvmuted);
}

.gv-course__dish + .gv-course__dish {
    margin-top: 14px;
}

.gv-course__title {
    display: block;
    margin-bottom: 6px;
    font-size: 24px;
    line-height: 1.3;
    color: var(--e-global-color-primary);
}

.gv-course__description {
    margin: 0;
    max-width: 48ch;
    font-size: 16px;
    line-height: 1.6;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

.gv-menu__actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 22px;
    margin-top: 30px;
}

.gv-menu .gv-menu__actions .gv-menu__cta {
    margin-top: 0;
}

.gv-menu__note {
    font-size: 16px;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

/* PDF book (M03): the uploaded pages provide the printed design. */
.gv-book { position: relative; width: 100%; color: var(--e-global-color-primary); }
.gv-book__stage { position: relative; padding: 0 68px; }
.gv-book [hidden] { display: none !important; }
.gv-book__viewport { width: 100%; margin: 0 auto; box-shadow: 0 30px 65px color-mix(in srgb, var(--e-global-color-gvdark1) 24%, transparent); }
.gv-book__page { background: #fffdf7; overflow: hidden; border: 1px solid #ded9cf; }
.gv-book__page img { display: block; width: 100%; height: 100%; object-fit: contain; user-select: none; }
.gv-book__page img:not([src]) { visibility: hidden; }
.gv-book__page-loading { position: absolute; inset: 0; display: grid; place-items: center; color: #444; font: 16px/1.5 system-ui, sans-serif; }
.gv-book__page.is-rendered .gv-book__page-loading { display: none; }
.gv-book__page.--left::after, .gv-book__page.--right::after { content: ''; position: absolute; inset: 0; pointer-events: none; }
.gv-book__page.--left::after { background: linear-gradient(90deg, transparent 93%, #00000018); }
.gv-book__page.--right::after { background: linear-gradient(90deg, #00000018, transparent 7%); }
.gv-book__controls { position: absolute; inset: 0; display: flex; align-items: center; justify-content: space-between; pointer-events: none; }
.gv-book button { color: var(--e-global-color-primary); cursor: pointer; }
.gv-book .gv-book__controls button { display: grid; place-items: center; flex: 0 0 52px; width: 52px; height: 52px; padding: 0; border: 1px solid color-mix(in srgb, var(--e-global-color-primary) 30%, transparent); border-radius: 50%; background: var(--e-global-color-gvsurf1); font: 28px/1 Arial, sans-serif; pointer-events: auto; }
.gv-book__controls button:hover:not(:disabled) { border-color: var(--e-global-color-secondary); color: var(--e-global-color-secondary); background: var(--e-global-color-gvsurf1); }
.gv-book button:focus-visible, .gv-book a:focus-visible { outline: 2px solid var(--e-global-color-secondary); outline-offset: 4px; }
.gv-book button:disabled { opacity: .35; cursor: default; }
.gv-book__counter { color: var(--e-global-color-gvmuted); font-variant-numeric: tabular-nums; }
.gv-book__counter:empty { display: none; }
.gv-book__links { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 12px 26px; margin-top: 34px; font: 400 14px/1.5 var(--e-global-typography-accent-font-family), sans-serif; letter-spacing: .15em; text-transform: uppercase; }
.gv-book__links a, .gv-book .gv-menu__download, .gv-book__links button { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 0; border: 0; border-radius: 0; background: transparent; color: var(--e-global-color-primary); font: inherit; letter-spacing: inherit; text-transform: inherit; }
.gv-book__links a:hover, .gv-book__links button:hover { color: var(--e-global-color-secondary); background: transparent; }
.gv-book__status { padding: 48px 20px; margin: 0; text-align: center; }
.gv-book:focus-visible { outline: 2px solid var(--e-global-color-secondary); outline-offset: 5px; }
.gv-book:fullscreen { display: flex; flex-direction: column; justify-content: center; overflow: auto; padding: 24px; background: var(--e-global-color-gvsurf1); }
.gv-book:fullscreen .gv-book__stage { width: 100%; max-width: min(1336px, calc((100vh - 180px) * 1.4 + 136px)); margin: 0 auto; }
@media (max-width: 620px) {
    .gv-book__stage { padding: 0; }
    .gv-book__controls { position: static; gap: 24px; justify-content: center; margin-top: 24px; }
    .gv-book .gv-book__controls button { flex-basis: 48px; width: 48px; height: 48px; }
    .gv-book__links { gap: 4px 20px; margin-top: 12px; font-size: 13px; letter-spacing: .12em; }
    .gv-book__counter { flex-basis: 100%; text-align: center; }
    .gv-book:fullscreen { padding: 12px; }
}

/* Responsive */
@media (max-width: 940px) {
    .gv-menu__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 20px;
    }

    .gv-menu--long .gv-menu__anchors {
        gap: 20px;
    }

    .gv-menu--tabs.is-enhanced .gv-menu__tabs {
        flex-wrap: nowrap;
        overflow-x: auto;
    }
}

@media (max-width: 720px) {
    .gv-menu__section-title,
    .gv-menu__panel-title {
        font-size: 24px;
    }
}

@media (max-width: 620px) {
    .gv-menu__grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .gv-menu--filterable {
        padding: 24px 20px;
    }

    .gv-menu--tabs .gv-menu__panel {
        padding: 36px 20px 32px;
    }

    .gv-menu__count {
        margin-left: 0;
        width: 100%;
    }
}

/* Library blocks M02–M07: layout dimensions from the supplied design; brand via globals. */
.gv-library-block .gv-library-heading .elementor-heading-title {
    font-size: clamp(36px, 4.2vw, 58px);
    line-height: 1.05;
    text-wrap: balance;
}
.gv-library-tabs .gv-library-heading .elementor-heading-title,
.gv-library-pdf .gv-library-heading .elementor-heading-title { font-size: clamp(38px, 4.6vw, 64px); }
.gv-library-fixed .gv-library-heading .elementor-heading-title { font-size: clamp(34px, 3.8vw, 54px); }
.gv-library-block .gv-library-intro p { max-width: 44ch; margin: 0 auto; font-size: 19px; line-height: 1.6; font-style: italic; }
.gv-library-tabs .gv-library-intro, .gv-library-filterable .gv-library-intro { opacity: .8; }
.gv-library-block .gv-library-menu-photo img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.gv-library-block .gv-eyebrow .elementor-heading-title { font-size: 13px; letter-spacing: .24em; }
.gv-library-block .elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Portable content blocks: Maison Rubens layouts, local brand tokens. */
.gv-content-block { --gv-content-gap: 72px; }
.gv-content-block .e-con, .gv-content-block .elementor-widget { min-width: 0; }
.gv-content-columns > .e-con, .gv-content-columns > .elementor-widget { flex: 1 1 0; width: 0; }
.gv-content-block .gv-content-heading .elementor-heading-title { font-size: clamp(36px, 4.4vw, 64px); line-height: 1.05; text-wrap: balance; }
.gv-content-block .gv-content-heading h3.elementor-heading-title { font-size: 24px; line-height: 1.3; }
.gv-content-block .gv-content-heading em { color: var(--e-global-color-secondary); }
.gv-content-block .gv-content-eyebrow .elementor-heading-title { font-size: 15px; line-height: 1.4; letter-spacing: .22em; text-transform: uppercase; }
.gv-content-block .gv-content-text { font-size: 19px; line-height: 1.6; }
.gv-content-block .gv-content-text p { margin: 0 0 20px; }
.gv-content-block .gv-content-text p:last-child { margin: 0; }
.gv-content-block .gv-content-photo img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.gv-content-block .gv-content-portrait img { aspect-ratio: 4 / 5; }
.gv-content-block .gv-content-button .elementor-button { min-height: 52px; display: inline-flex; align-items: center; justify-content: center; padding: 15px 30px; border-radius: 0; font-size: 17px; line-height: 1.2; letter-spacing: .18em; text-transform: uppercase; }
.gv-content-block .gv-content-button .elementor-button:hover { background: var(--e-global-color-accent); color: var(--e-global-color-gvsurf1); }
.gv-content-block .gv-content-button.gv-content-button-outline.elementor-widget .elementor-button { background: transparent; color: var(--e-global-color-gvsurf1); border: 1px solid currentColor; }
.gv-content-actions > .elementor-widget { width: auto; }
.gv-content-block .gv-content-hero-title .elementor-heading-title { font-size: clamp(46px, 7vw, 104px); line-height: 1.02; max-width: 14ch; }
.gv-content-hero-copy .gv-content-text { max-width: 52ch; font-size: 21px; opacity: .9; }
.gv-content-hero-centered .gv-content-hero-copy { align-items: center; text-align: center; }
.gv-content-hero-centered .gv-content-actions { justify-content: center; }
.gv-content-hero-centered .gv-content-hero-title .elementor-heading-title { font-size: clamp(42px, 6vw, 88px); max-width: 20ch; }
.gv-content-hero-split > .gv-content-columns { gap: 0; align-items: stretch; }
.gv-content-hero-split .gv-content-hero-copy { padding: 104px 64px; justify-content: center; }
.gv-content-hero-split .gv-content-hero-title .elementor-heading-title { font-size: clamp(40px, 4.8vw, 72px); }
.gv-content-hero-split > .gv-content-columns > .gv-content-photo img { height: 100%; min-height: 660px; aspect-ratio: auto; }
.gv-content-opening-card { width: min(100% - 64px, 980px); margin: -44px auto 0; padding: 24px 32px; z-index: 2; background: var(--e-global-color-gvsurf2); color: var(--e-global-color-primary); box-shadow: 0 26px 60px color-mix(in srgb, var(--e-global-color-gvdark1) 25%, transparent); }
.gv-content-opening-card > .e-con { flex: 1; gap: 8px; }
.gv-content-opening-card .gv-hours--compact { margin: 0; color: var(--e-global-color-primary); opacity: 1; }
.gv-content-caption-photo { position: relative; }
.gv-content-caption-photo > .gv-content-eyebrow { position: absolute; left: 0; bottom: 0; width: auto; padding: 14px 20px; background: var(--e-global-color-primary); }
.gv-content-caption-photo > .gv-content-eyebrow .elementor-heading-title { color: var(--e-global-color-gvsurf1); }
.gv-content-image-fresco { text-align: center; }
.gv-content-image-fresco .gv-content-heading { max-width: 22ch; font-size: clamp(34px, 4.6vw, 66px); }
.gv-content-image-fresco .gv-content-heading .elementor-heading-title { font-size: inherit; text-shadow: 0 2px 24px var(--e-global-color-gvdark1); }
.gv-content-gallery > .e-con { flex: 1 1 0; width: 0; }
.gv-content-gallery-card--2, .gv-content-gallery-card:nth-child(2) { padding-top: 64px; }
.gv-content-gallery-card--3, .gv-content-gallery-card:nth-child(3) { padding-top: 128px; }
.gv-content-gallery-card .gv-content-text { font-size: 17px; line-height: 1.5; }
.gv-content-panels > .gv-content-panel { flex: 1 1 0; width: 0; min-height: 560px; transition: flex-grow .7s cubic-bezier(.2,.7,.2,1); }
.gv-content-panels > .gv-content-panel:hover, .gv-content-panels > .gv-content-panel:focus-within { flex-grow: 2.2; }
.gv-content-panel .gv-content-text { font-size: 17px; line-height: 1.55; }
.gv-content-collage { position: relative; padding: 0 15% 22% 0; }
.gv-content-collage::before { content: ''; position: absolute; inset: 40px 5% 12% -20px; background: color-mix(in srgb, var(--e-global-color-gvmuted) 35%, transparent); }
.gv-content-collage > .gv-content-photo { position: relative; }
.gv-content-collage > .gv-content-collage-inset { position: absolute; width: 58%; bottom: 0; right: 0; box-shadow: 0 30px 70px color-mix(in srgb, var(--e-global-color-gvdark1) 30%, transparent); }
.gv-content-tip { padding: 22px 0; border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 40%, transparent); }
.gv-content-tip .gv-content-numeral { flex: 0 0 44px; width: 44px; }
.gv-content-tip .gv-content-numeral .elementor-heading-title { font-size: 26px; font-style: italic; color: var(--e-global-color-accent); }
.gv-content-tip .gv-content-text { font-size: 16px; color: var(--e-global-color-gvmuted); }
.gv-content-faq-split .gv-content-columns { align-items: flex-start; gap: 56px; }
.gv-content-faq-split .gv-content-columns > .e-con:first-child { flex: .75; }
.gv-content-faq-split .gv-content-columns > .e-con:last-child { flex: 1.25; }
.gv-content-faq { --n-accordion-title-font-size: 23px; --n-accordion-title-normal-color: var(--e-global-color-primary); --n-accordion-title-hover-color: var(--e-global-color-accent); --n-accordion-title-active-color: var(--e-global-color-primary); --n-accordion-border-color: transparent; }
.gv-content-faq .e-n-accordion-item { border: 0; border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 40%, transparent); }
.gv-content-faq .e-n-accordion-item-title { padding: 22px 0; background: transparent; border: 0; font-family: var(--e-global-typography-primary-font-family), serif; }
.gv-content-faq .e-n-accordion-item > .e-con { padding: 0 0 24px; border: 0; background: transparent; }
.gv-content-faq .gv-content-text { font-size: 17px; color: var(--e-global-color-gvmuted); }
@media (max-width: 1024px) {
    .gv-content-columns > .e-con, .gv-content-columns > .elementor-widget { flex: auto; width: 100%; }
    .gv-content-hero-split .gv-content-hero-copy { padding: 80px 32px; }
    .gv-content-hero-split > .gv-content-columns > .gv-content-photo img { min-height: 0; height: 420px; }
    .gv-content-opening-card { width: 100%; margin: 0; padding: 32px; align-items: flex-start; box-shadow: none; }
    .gv-content-opening-card > .e-con { width: 100%; }
    .gv-content-gallery { flex-wrap: wrap; }
    .gv-content-gallery > .e-con { flex: 1 1 calc(50% - 16px); padding-top: 0; }
    .gv-content-gallery > .e-con:last-child { max-width: calc(50% - 16px); }
    .gv-content-panels { flex-direction: column; }
    .gv-content-panels > .gv-content-panel { flex: auto; width: 100%; min-height: 340px; }
}
@media (max-width: 767px) {
    .gv-content-block .gv-content-columns { gap: 40px; }
    .gv-content-hero-split .gv-content-columns { gap: 0; }
    .gv-content-hero-split .gv-content-hero-copy { padding: 72px 22px; }
    .gv-content-gallery > .e-con, .gv-content-gallery > .e-con:last-child { flex: auto; width: 100%; max-width: none; }
    .gv-content-block .gv-content-text { font-size: 17px; }
    .gv-content-block .gv-content-button .elementor-button { padding: 15px 22px; font-size: 15px; }
    .gv-content-faq { --n-accordion-title-font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) {
    .gv-content-panels > .gv-content-panel { transition: none; }
}
/* Elementor loads individual widget styles after the theme; scope overrides to this block. */
.gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item-title { border: 0; border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 40%, transparent); background: transparent; padding: 22px 0; flex-direction: row; justify-content: space-between; gap: 24px; }
.gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item-title-text { font: 400 23px/1.35 var(--e-global-typography-primary-font-family), serif; color: var(--e-global-color-primary); }
.gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item-title-icon { order: 2; flex: 0 0 34px; width: 34px; height: 34px; border: 1px solid var(--e-global-color-secondary); border-radius: 50%; color: var(--e-global-color-secondary); display: flex; align-items: center; justify-content: center; }
.gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item-title-icon svg { width: 12px; height: 12px; fill: currentColor; }
.gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item > .e-con { padding: 0 0 24px; border: 0; }
.gv-content-block.gv-content-hero-split > .gv-content-columns.e-con { gap: 0; align-items: stretch; }
.gv-content-block.gv-content-hero-split .gv-content-hero-copy.e-con { padding: 104px 64px; }
.gv-content-block .gv-content-opening-card.e-con { padding: 24px 32px; gap: 24px; }
.gv-content-block .gv-content-gallery-card--2.e-con, .gv-content-block .gv-content-gallery-card.e-con:nth-child(2) { padding-top: 64px; }
.gv-content-block .gv-content-gallery-card--3.e-con, .gv-content-block .gv-content-gallery-card.e-con:nth-child(3) { padding-top: 128px; }
.gv-content-block .gv-content-collage.e-con { padding: 0 15% 22% 0; }
.gv-content-block .gv-content-tip.e-con { padding: 22px 0; }
@media (max-width: 1024px) {
    .gv-content-block.gv-content-hero-split .gv-content-hero-copy.e-con { padding: 80px 32px; }
    .gv-content-block .gv-content-gallery-card.e-con:nth-child(n), .gv-content-block .gv-content-gallery-card--2.e-con, .gv-content-block .gv-content-gallery-card--3.e-con { padding-top: 0; }
}
@media (max-width: 767px) {
    .gv-content-block.gv-content-hero-split .gv-content-hero-copy.e-con { padding: 72px 22px; }
    .gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item-title-text { font-size: 20px; }
}

.gv-content-block .gv-content-faq.elementor-widget-n-accordion .e-n-accordion-item { border: 0; }
@media (max-width: 1024px) {
    .gv-content-block .gv-content-panels.e-con { flex-direction: column; }
}

/* Global navigation variants. Compact layout begins before desktop links wrap. */
.gv-header .gv-header-centered__desktop { display: grid; grid-template-columns: minmax(0,1fr) 180px minmax(0,1fr); width: 100%; max-width: 1240px; margin-inline: auto; }
.gv-header .gv-header-centered__left, .gv-header .gv-header-centered__right { width: 100%; min-width: 0; }
.gv-header .gv-header-centered__logo { width: 180px; justify-self: center; }
.gv-header .gv-header-centered__right { justify-self: end; gap: 30px; }
.gv-header .gv-header-centered__logo .gv-ornament { width: 96px; margin: 7px auto 0; }
.gv-header .gv-header-centered__logo .gv-ornament::before, .gv-header .gv-header-centered__logo .gv-ornament::after { width: 38px; }
/* The logo is a flex child of the header row; without this it shrinks below its set width. */
.gv-header > .elementor-widget-image { flex: 0 0 auto; }
.gv-header .elementor-nav-menu--main > .elementor-nav-menu { flex-wrap: nowrap; gap: 30px; }
.gv-header .elementor-nav-menu--main > .elementor-nav-menu > li > .elementor-item { padding: 12px 0; margin: 0; white-space: nowrap; }
.gv-header .elementor-button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.gv-header .gv-header-burger .elementor-button { width: 44px; padding: 10px; background: transparent; }
.gv-header-burger .elementor-button-text { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.gv-header-panel .gv-header-close { position: absolute; top: 20px; right: 24px; width: auto; }
.gv-header-panel .gv-header-close .elementor-button { min-height: 44px; background: transparent; color: var(--e-global-color-gvsurf1); border: 1px solid color-mix(in srgb,var(--e-global-color-gvsurf1) 40%,transparent); }
.gv-header-panel .gv-nav--mobile .elementor-nav-menu--main > ul { display: flex; flex-direction: column; gap: 6px; }
.gv-header-panel .gv-nav--mobile .elementor-nav-menu--main > ul > li > a { font-family: var(--e-global-typography-primary-font-family),Georgia,serif; font-size: clamp(32px,7vw,52px); font-weight: 400; line-height: 1.2; letter-spacing: 0; text-transform: none; padding: 6px 0; border-bottom: 1px solid color-mix(in srgb,var(--e-global-color-secondary) 35%,transparent); }
.gv-header-panel .elementor-nav-menu--main { display: block !important; }
.gv-header a:focus-visible, .gv-header-panel a:focus-visible { outline: 2px solid var(--e-global-color-secondary); outline-offset: 4px; }
@media(min-width:981px) {
    .gv-header .gv-header-compact, .gv-header .gv-header-burger { display: none !important; }
}
@media(max-width:980px) {
    .gv-header { padding-inline: 24px !important; }
    .gv-header .gv-header-desktop { display: none !important; }
    .gv-header .gv-header-burger { display: block !important; }
    .gv-header .gv-header-centered__compact { display: grid !important; grid-template-columns: minmax(0,1fr) 120px minmax(0,1fr); width: 100%; gap: 12px; align-items: center; }
    .gv-header-centered__compact > :first-child { justify-self: start; }
    .gv-header-centered__compact > :last-child { justify-self: end; }
}
body.admin-bar .gv-header-panel .gv-header-close { top: calc(20px + var(--wp-admin--admin-bar--height,32px)); }
.gv-header-panel .gv-nav--mobile .elementor-nav-menu--main > ul > li > a { font-family: var(--e-global-typography-primary-font-family),Georgia,serif !important; font-size: clamp(32px,7vw,52px) !important; font-weight: 400 !important; line-height: 1.2 !important; letter-spacing: 0 !important; text-transform: none !important; }
.gv-header .gv-header-burger .elementor-button-icon { font-size: 22px; }
.gv-header .gv-header-burger .elementor-button-icon svg { width: 22px; height: 22px; }
body:has(.gv-hero) .elementor-location-header:has(.gv-header--left) { position: absolute; top: 0; left: 0; width: 100%; z-index: 50; }
body.admin-bar:has(.gv-hero) .elementor-location-header:has(.gv-header--left) { top: var(--wp-admin--admin-bar--height,32px); }
.gv-header-panel .gv-nav--mobile .sub-menu { position: static !important; width: 100% !important; min-width: 0 !important; max-width: none !important; margin: 0 !important; padding: 4px 0 12px 16px; transform: none !important; border: 0; background: transparent; }
.gv-header-panel .gv-nav--mobile .sub-menu .elementor-sub-item { color: var(--e-global-color-gvsurf1); background: transparent; min-height: 44px; padding: 10px 0; }
.gv-header-panel .gv-nav--mobile .sub-menu .elementor-sub-item:hover { color: var(--e-global-color-secondary); }
/* Longer WordPress menus can opt into the same compact header at wider widths. */
.gv-header.gv-header--compact .gv-header-desktop { display: none !important; }
.gv-header.gv-header--compact .gv-header-burger { display: block !important; }
.gv-header.gv-header--compact .gv-header-centered__compact { display: grid !important; grid-template-columns: minmax(0,1fr) 120px minmax(0,1fr); width: 100%; gap: 12px; align-items: center; }
.gv-header.gv-header--compact .gv-header-centered__compact > :first-child { justify-self: start; }
.gv-header.gv-header--compact .gv-header-centered__compact > :last-child { justify-self: end; }
.gv-header .gv-header-progress-widget { position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; pointer-events: none; }
.gv-header-progress { display: block; width: 100%; height: 2px; background: var(--e-global-color-secondary); transform: scaleX(0); transform-origin: left; }

/* Elementor contact forms: shared input rhythm, two treatments from the designs. */
.gv-contact-columns { align-items: flex-start !important; }
.gv-content-contact-card .gv-contact-columns > :first-child { flex: .85; }
.gv-content-contact-card .gv-contact-columns > :last-child { flex: 1.15; }
.gv-contact-paper { box-shadow: 0 34px 80px #14202455; }
.gv-contact-details { border-top: 1px solid color-mix(in srgb,var(--e-global-color-secondary) 45%,transparent); padding-top: 26px !important; }
.gv-contact-detail .elementor-heading-title { font-size: 19px; line-height: 1.5; overflow-wrap: anywhere; }
.elementor .gv-contact-form.elementor-widget-form { --gv-form-ink: var(--e-global-color-gvsurf1); --gv-form-line: color-mix(in srgb,var(--e-global-color-gvsurf1) 55%,transparent); width: 100%; }
.elementor .gv-contact-form--card.elementor-widget-form { --gv-form-ink: var(--e-global-color-text); --gv-form-line: color-mix(in srgb,var(--e-global-color-secondary) 45%,transparent); }
.elementor .gv-contact-form.elementor-widget-form .elementor-form-fields-wrapper { margin: 0 -12px; row-gap: 28px; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-group { padding: 0 12px; margin-bottom: 0; align-content: flex-start; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-label { display: block; width: 100%; padding-bottom: 10px; color: var(--gv-form-ink); font-family: var(--e-global-typography-accent-font-family),sans-serif; font-size: 14px; font-weight: 400; line-height: 1.3; letter-spacing: .18em; text-transform: uppercase; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-label:after { color: inherit !important; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-textual { width: 100%; min-width: 0; height: 52px; min-height: 52px; padding: 12px 0; border: 0; border-bottom: 1px solid var(--gv-form-line); border-radius: 0; background: transparent; box-shadow: none; color: var(--gv-form-ink); font: 400 19px/1.4 var(--e-global-typography-text-font-family),Georgia,serif; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-textual::placeholder { color: var(--gv-form-ink); opacity: 1; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-textual:focus { border-color: var(--gv-form-ink); outline: 2px solid var(--e-global-color-secondary); outline-offset: 3px; }
.elementor .gv-contact-form.elementor-widget-form textarea.elementor-field-textual { height: 140px; min-height: 140px; resize: vertical; }
.elementor .gv-contact-form.elementor-widget-form select.elementor-field-textual { padding-right: 28px; }
.elementor .gv-contact-form.elementor-widget-form select option { background: var(--e-global-color-gvsurf2); color: var(--e-global-color-primary); }
.elementor .gv-contact-form--card.elementor-widget-form .elementor-field-textual { padding: 12px 16px; background: var(--e-global-color-gvsurf1); border: 1px solid var(--gv-form-line); font-size: 18px; }
.elementor .gv-contact-form--card.elementor-widget-form .elementor-field-label { color: var(--e-global-color-primary); font-size: 13px; }
.elementor .gv-contact-form.elementor-widget-form .elementor-button { min-height: 52px; width: auto; border: 0; border-radius: 0; padding: 15px 28px; background: var(--e-global-color-accent); color: var(--e-global-color-gvsurf1); font-family: var(--e-global-typography-accent-font-family),sans-serif; font-size: 17px; line-height: 1.2; font-weight: 400; letter-spacing: .16em; text-transform: uppercase; }
.elementor .gv-contact-form--card.elementor-widget-form .elementor-button { background: var(--e-global-color-primary); }
.elementor .gv-contact-form.elementor-widget-form .elementor-button:hover, .elementor .gv-contact-form.elementor-widget-form .elementor-button:focus-visible { background: var(--e-global-color-secondary); color: var(--e-global-color-primary); }
.elementor .gv-contact-form.elementor-widget-form .elementor-button:focus-visible { outline: 2px solid var(--e-global-color-primary); outline-offset: 4px; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-type-submit { justify-content: flex-end; }
.gv-contact-privacy { display: block; color: var(--gv-form-ink); font: italic 15px/1.5 var(--e-global-typography-text-font-family),Georgia,serif; opacity: 1; }
.elementor .gv-contact-form.elementor-widget-form .elementor-message { margin: 24px 0 0; padding: 16px 18px; font-size: 17px; line-height: 1.5; border: 1px solid currentColor; color: var(--gv-form-ink); }
.elementor .gv-contact-form.elementor-widget-form .elementor-message-success { background: var(--e-global-color-primary); color: var(--e-global-color-gvsurf1); }
.elementor .gv-contact-form.elementor-widget-form .elementor-message-danger, .elementor .gv-contact-form.elementor-widget-form .elementor-help-inline { color: var(--gv-form-ink); }
.elementor .gv-contact-form.elementor-widget-form .elementor-help-inline { font-size: 15px; line-height: 1.5; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-subgroup { display: flex; flex-wrap: wrap; gap: 10px; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-option { position: relative; padding: 0 !important; }
.elementor .gv-contact-form.elementor-widget-form input[type=radio] { position: absolute; opacity: 0; width: 1px; height: 1px; }
.elementor .gv-contact-form.elementor-widget-form input[type=radio] + label { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 14px; border: 1px solid var(--gv-form-line); color: var(--e-global-color-primary); cursor: pointer; font: 400 14px/1.3 var(--e-global-typography-accent-font-family),sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.elementor .gv-contact-form.elementor-widget-form input[type=radio]:checked + label { background: var(--e-global-color-primary); color: var(--e-global-color-gvsurf1); border-color: var(--e-global-color-primary); }
.elementor .gv-contact-form.elementor-widget-form input[type=radio]:focus-visible + label { outline: 2px solid var(--e-global-color-secondary); outline-offset: 3px; }
@media(max-width:767px) {
    .elementor .gv-contact-form.elementor-widget-form .elementor-form-fields-wrapper { row-gap: 22px; }
    .elementor .gv-contact-form.elementor-widget-form .elementor-field-group { width: 100%; }
    .elementor .gv-contact-form.elementor-widget-form .elementor-button { width: 100%; }
}
.elementor .gv-contact-form.elementor-widget-form .elementor-button { flex-basis: auto; }
.elementor .gv-contact-form.elementor-widget-form .elementor-field-group-privacy { align-content: center; }
.elementor .gv-contact-form--line.elementor-widget-form .elementor-button { background: color-mix(in srgb,var(--e-global-color-accent) 80%,#000); }
.elementor .gv-contact-form.elementor-widget-form .elementor-button-text { color: inherit; }
.elementor .gv-contact-form--line.elementor-widget-form .elementor-button:hover,
.elementor .gv-contact-form--line.elementor-widget-form .elementor-button:focus-visible { background: var(--e-global-color-secondary); }

/* Social feed: one widget, three layouts. The modifier carries the layout so a
   style profile can restyle a variant without selecting on child position. */
.gv-feed { display: grid; margin: 0; padding: 0; list-style: none; gap: 14px; }
.gv-feed-item { margin: 0; }
.gv-feed-link { display: block; }
.gv-feed .gv-feed-image { display: block; width: 100%; height: 100%; object-fit: cover; }
.gv-feed-item { position: relative; overflow: hidden; }
.gv-feed-link { height: 100%; }
.gv-feed--row { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 20px; }
.gv-feed--row .gv-feed-image { aspect-ratio: 4 / 5; }
.gv-feed--grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gv-feed--grid .gv-feed-image { aspect-ratio: 1 / 1; }
.gv-feed--collage { grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: start; }
.gv-feed--collage .gv-feed-image { aspect-ratio: 4 / 5; }
.gv-feed--collage .gv-feed-item--2 { margin-top: 48px; }
.gv-feed--collage .gv-feed-item--4 { margin-top: 72px; }
.gv-content-block .gv-social-intro { align-items: flex-start; }
.gv-content-block .gv-social-intro .gv-content-heading .elementor-heading-title { font-size: clamp(30px, 3.6vw, 52px); }
@media (max-width: 1024px) {
    .gv-feed--row, .gv-feed--collage { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .gv-feed--collage .gv-feed-item--2, .gv-feed--collage .gv-feed-item--4 { margin-top: 0; }
}
@media (max-width: 767px) {
    .gv-feed--row, .gv-feed--grid, .gv-feed--collage { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* When the hero carries motion, the type yields: a film usually already contains a
   wordmark or a focal point, and a display headline on top of it fights for the same
   space. The h1 stays a real h1, just sized as a strapline under the footage.
   Deliberately outweighs the display scale a style profile sets, so a hero that gets
   a video does the right thing whichever profile is active. Only while the film
   actually plays: below Elementor's mobile breakpoint, and with reduced motion, the
   poster is shown instead and the headline has to carry the hero again. */
@media (min-width: 768px) and (prefers-reduced-motion: no-preference) {
    body .gv-content-block.gv-hero:has(.elementor-background-video-container) .gv-content-hero-copy { justify-content: flex-end; }
    body .gv-content-block.gv-hero:has(.elementor-background-video-container) .gv-content-hero-title .elementor-heading-title { font-size: clamp(24px, 2.6vw, 38px); line-height: 1.25; max-width: 26ch; }
    body .gv-content-block.gv-hero:has(.elementor-background-video-container) .gv-content-hero-copy .gv-content-text { font-size: 18px; }
}

/* A hero may use a background video; Elementor has no reduced-motion handling of its own. */
@media (prefers-reduced-motion: reduce) {
    .gv-content-block .elementor-background-video-container { display: none !important; }
}

/* Structure for the brandbook blocks. What they look like is the style profile's
   business; these rules only make the layout hold up without one. */
.gv-content-monogram-reveal.e-con { position: relative; overflow: hidden; }
/* The html widget becomes the overlay itself, so the plane fills the section
   instead of resolving inset:0 against a zero-height widget wrapper. */
.gv-content-monogram-reveal .elementor-widget-html:has(.gv-monogram) { position: absolute; inset: 0; width: auto; z-index: 1; }
.gv-content-monogram-reveal .gv-monogram-copy { position: relative; z-index: 2; width: min(100%, 1240px); margin-inline: auto; padding-inline: 48px; }
@media (max-width: 767px) { .gv-content-monogram-reveal .gv-monogram-copy { padding-inline: 22px; } }
.gv-content-illustration-divider .gv-content-columns,
.gv-content-illustration-divider.e-con { text-align: center; }
.gv-content-illustration-divider .gv-script-line { width: 100%; }
/* A column flex parent centres on the cross axis, which collapses a widget with
   no intrinsic width to zero. */
.gv-content-block .elementor-widget-html:has(.gv-illustration) { width: 100%; }
.gv-illustration { display: block; width: 100%; height: 160px; }
.gv-content-split-plane > .gv-split-columns.e-con { gap: 0; align-items: stretch; }
.gv-content-split-plane .gv-split-copy.e-con { justify-content: center; background-color: var(--e-global-color-primary); }
.gv-content-split-plane .gv-content-photo img { height: 100%; min-height: 560px; aspect-ratio: auto; }
.gv-script-line .elementor-heading-title { line-height: 1.1; }
@media (max-width: 1024px) {
    .gv-content-split-plane .gv-content-photo img { min-height: 360px; }
}

/* Opening-hours badge on a captioned photo. Structure only — a style profile
   decides whether it is a circle, a seal or nothing at all. */
.gv-content-block .gv-badge.e-con { position: absolute; right: -28px; top: -28px; width: 120px; height: 120px; padding: 10px; text-align: center; z-index: 2; }
.gv-content-block .gv-badge .elementor-heading-title { font-size: 12px; letter-spacing: .18em; line-height: 1.5; }
@media (max-width: 767px) { .gv-content-block .gv-badge.e-con { right: -12px; top: -14px; width: 92px; height: 92px; } }

/* Rubens hero: the wordmark carries the line, so the real h1 is for assistive
   technology only. Structure lives here; the look is the profile's business. */
.gv-content-rubens-hero .gv-hero-title-sr { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.gv-content-rubens-hero .gv-hero-lockup img { width: min(680px, 84%); height: auto; aspect-ratio: auto; object-fit: contain; }
.gv-content-rubens-hero .gv-content-hero-copy, .gv-content-rubens-hero .gv-content-text { max-width: 52ch; }

/* Rubens menukaart: a sheet of paper with a ruled inner frame. */
.gv-content-rubens-menukaart .gv-kaart-blad.e-con { width: min(100%, 880px); }
.gv-content-rubens-menukaart .gv-kaart-merk img { width: min(300px, 68%); height: auto; aspect-ratio: auto; object-fit: contain; margin-inline: auto; }
.gv-content-rubens-menukaart .gv-kaart-binnen.e-con { align-items: center; }
.gv-content-rubens-menukaart .gv-kaart-menu { width: 100%; }

/* Rubens verhaal: standing photograph beside the text, at the source's ratio. */
.gv-content-rubens-verhaal > .gv-verhaal-kolommen.e-con { grid-template-columns: none; align-items: center; gap: clamp(40px, 6vw, 76px); }
.gv-content-rubens-verhaal .gv-verhaal-beeld.e-con { position: relative; flex: 0 0 auto; width: 42%; }
.gv-content-rubens-verhaal .gv-verhaal-copy.e-con { flex: 1 1 0; }
.gv-content-rubens-verhaal .gv-verhaal-foto img { aspect-ratio: 3 / 4; }
.gv-content-rubens-verhaal .gv-verhaal-onder.e-con { width: auto; }
@media (max-width: 1024px) {
    .gv-content-rubens-verhaal .gv-verhaal-beeld.e-con { width: 100%; }
}
.gv-content-rubens-hero.gv-hero-centered .e-con-inner, .gv-content-rubens-hero.gv-hero-centered > .e-con-inner > * { align-items: center; text-align: center; }
.gv-content-rubens-hero.gv-hero-centered .gv-content-actions { justify-content: center; }
.gv-content-rubens-hero.gv-hero-centered .gv-hero-lockup img { margin-inline: auto; }

/* General text blocks. Structure and reading measure only; a style profile
   adds the voice. Every block keeps the shared eyebrow/heading/text hooks. */
.gv-content-block .gv-text-body.e-con { max-width: 62ch; }
.gv-content-text-plain .gv-text-body.e-con { margin-inline: auto; }
.gv-content-text-image .gv-text-image-columns > .gv-text-body.e-con { max-width: none; }
.gv-content-text-image .gv-content-photo img { aspect-ratio: 4 / 5; }
.gv-content-block .gv-content-button.elementor-widget { width: auto; }

.gv-content-text-columns .gv-text-columns-head.e-con { max-width: 62ch; }
.gv-content-text-columns .gv-text-columns > .elementor-widget { flex: 1 1 0; width: 0; }
.gv-content-block .gv-content-text ul { margin: 0 0 20px; padding-left: 1.2em; }
.gv-content-block .gv-content-text li { margin-bottom: 6px; }

.gv-content-text-quote .gv-text-quote-box.e-con { max-width: 30ch; margin-inline: auto; text-align: center; }
.gv-content-block .gv-text-quote .elementor-heading-title { font-size: clamp(30px, 3.6vw, 52px); line-height: 1.15; font-style: italic; text-wrap: balance; }

.gv-content-text-features .gv-text-features-head.e-con { max-width: 62ch; }
.gv-content-text-features .gv-text-features > .gv-text-feature.e-con { flex: 1 1 0; width: 0; padding-top: 22px; border-top: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 45%, transparent); }
.gv-content-text-features .gv-content-numeral .elementor-heading-title { font-size: 26px; font-style: italic; color: var(--e-global-color-accent); }

.gv-content-text-cta .gv-text-cta-box.e-con { max-width: 46ch; margin-inline: auto; text-align: center; }

.gv-content-text-long .gv-text-long.e-con { max-width: 68ch; margin-inline: auto; }
.gv-content-text-long .gv-content-text h2 { font-family: var(--e-global-typography-primary-font-family), serif; font-size: 26px; line-height: 1.25; margin: 40px 0 12px; color: var(--e-global-color-primary); }
.gv-content-text-long .gv-content-text h3 { font-size: 20px; margin: 28px 0 8px; color: var(--e-global-color-primary); }
.gv-content-text-long .gv-content-text { font-size: 18px; line-height: 1.7; }

@media (max-width: 1024px) {
    .gv-content-text-columns .gv-text-columns > .elementor-widget,
    .gv-content-text-features .gv-text-features > .gv-text-feature.e-con { flex: auto; width: 100%; }
}
/* Full-width text: no reading measure, the container is the limit. */
.gv-content-text-wide .gv-content-text { max-width: none; width: 100%; }
.gv-content-text-wide .gv-text-wide-head.e-con { max-width: none; }

/* Breadcrumb: a short line of service type, with a rule between the steps. */
.gv-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; font-family: var(--e-global-typography-accent-font-family), sans-serif; font-size: 14px; line-height: 1.2; letter-spacing: .22em; text-transform: uppercase; }
.gv-crumbs a.gv-crumbs__link { color: color-mix(in srgb, var(--e-global-color-gvsurf1) 75%, transparent); text-decoration: none; transition: color .3s; }
.gv-crumbs a.gv-crumbs__link:hover, .gv-crumbs a.gv-crumbs__link:focus-visible { color: var(--e-global-color-gvsurf1); }
.gv-crumbs__sep { width: 22px; height: 1px; background: var(--e-global-color-accent); }
.gv-crumbs__current { color: var(--e-global-color-gvsurf1); }

/* Page header: a lower hero for subpages, the copy resting on the bottom edge. */
.gv-page-header .gv-page-header-copy.e-con { align-items: flex-start; }
.gv-content-block.gv-page-header .gv-content-hero-title .elementor-heading-title { font-size: clamp(46px, 7vw, 100px); max-width: 16ch; }
.gv-page-header .gv-content-text { max-width: 50ch; font-size: 21px; line-height: 1.5; }
.gv-page-header .gv-content-text p { margin: 0; opacity: .86; }

/* ------------------------------------------------------------ gallery */

.gv-gallery__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 28px 48px; margin-bottom: 40px; }
.gv-gallery__eyebrow { margin-bottom: 16px; font-family: var(--e-global-typography-accent-font-family), sans-serif; font-size: 14px; letter-spacing: .24em; text-transform: uppercase; color: var(--e-global-color-accent); }
.gv-gallery__title { margin: 0; max-width: 16ch; font-family: var(--e-global-typography-primary-font-family), serif; font-weight: 400; font-size: clamp(34px, 4.2vw, 58px); line-height: 1.04; color: var(--e-global-color-primary); text-wrap: balance; }
.gv-gallery__title em { font-family: var(--e-global-typography-gvscrpt-font-family, var(--e-global-typography-primary-font-family)), cursive; font-style: normal; font-size: 1.08em; line-height: .85; color: var(--e-global-color-accent); }

.gv-gallery__filters { display: flex; flex-wrap: wrap; gap: 28px; }
.gv-content-block .gv-gallery__filter,
.gv-gallery__filter { display: inline-flex; align-items: baseline; gap: 7px; margin: 0; padding: 10px 0 7px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: none; box-shadow: none; cursor: pointer; font-family: var(--e-global-typography-accent-font-family), sans-serif; font-size: 16px; font-weight: 400; letter-spacing: .18em; line-height: 1; text-transform: uppercase; white-space: nowrap; color: var(--e-global-color-primary); transition: color .3s, border-color .3s; }
.gv-gallery__filter:hover, .gv-gallery__filter:focus-visible { background: none; color: var(--e-global-color-accent); }
.gv-gallery__filter.is-active { color: var(--e-global-color-accent); border-bottom-color: var(--e-global-color-accent); }
.gv-gallery__filter:focus-visible { outline: 2px solid var(--e-global-color-accent); outline-offset: 4px; }
.gv-gallery__count { font-size: 12px; letter-spacing: .08em; opacity: .6; }

.gv-gallery__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: clamp(160px, 17vw, 250px); gap: 14px; margin: 0; padding: 0; list-style: none; }
.gv-gallery--grid .gv-gallery__grid { grid-auto-rows: auto; }
.gv-gallery--grid .gv-gallery__tile { aspect-ratio: 4 / 3; }
.gv-gallery__item { min-width: 0; margin: 0; padding: 0; }
.gv-gallery__item[hidden] { display: none; }
.gv-gallery__item.is-entering { animation: gv-tile-in .7s cubic-bezier(.2, .7, .2, 1) both; }
@keyframes gv-tile-in { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }

.gv-gallery__tile { position: relative; display: block; width: 100%; height: 100%; overflow: hidden; background: var(--e-global-color-primary); cursor: zoom-in; }
div.gv-gallery__tile { cursor: default; }
.gv-gallery__tile:focus-visible { outline: 2px solid var(--e-global-color-accent); outline-offset: 3px; }
/* Scoped twice: Elementor's own img rule (height: auto) would otherwise win. */
.gv-gallery .gv-gallery__image { position: absolute; inset: 0; width: 100%; max-width: none; height: 100%; object-fit: cover; display: block; border-radius: 0; transition: transform 1.2s cubic-bezier(.2, .7, .2, 1); }
.gv-gallery .gv-gallery__tile:hover .gv-gallery__image, .gv-gallery .gv-gallery__tile:focus-visible .gv-gallery__image { transform: scale(1.06); }

.gv-gallery__caption { position: absolute; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; gap: 5px; padding: 48px 16px 14px; text-align: left; background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--e-global-color-gvdark1, #162427) 88%, transparent)); opacity: 0; transform: translateY(12px); transition: opacity .45s ease, transform .5s cubic-bezier(.2, .7, .2, 1); }
.gv-gallery__tile:hover .gv-gallery__caption, .gv-gallery__tile:focus-visible .gv-gallery__caption { opacity: 1; transform: none; }
@media (hover: none) { .gv-gallery__caption { opacity: 1; transform: none; } }
.gv-gallery__category { font-family: var(--e-global-typography-accent-font-family), sans-serif; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: color-mix(in srgb, var(--e-global-color-gvsurf1) 80%, transparent); }
.gv-gallery__text { font-size: 17px; line-height: 1.3; color: var(--e-global-color-gvsurf1); }

@media (max-width: 759px) {
    .gv-gallery__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: clamp(140px, 40vw, 230px); gap: 10px; }
    .gv-gallery__filters { flex-wrap: nowrap; width: 100%; gap: 20px; overflow-x: auto; scrollbar-width: none; }
    .gv-gallery__filters::-webkit-scrollbar { display: none; }
}

.gv-gallery-empty { padding: 32px; border: 2px dashed color-mix(in srgb, var(--e-global-color-primary) 30%, transparent); text-align: center; color: var(--e-global-color-primary); }
.gv-gallery-empty p { margin: 8px auto 14px; max-width: 46ch; }

/* Lightbox. */
html.gv-lightbox-open { overflow: hidden; }
.gv-lightbox { position: fixed; inset: 0; z-index: 100000; display: flex; flex-direction: column; background: color-mix(in srgb, var(--e-global-color-gvdark1, #10181a) 96%, transparent); color: var(--e-global-color-gvsurf1); animation: gv-fade-in .35s both; }
.gv-lightbox[hidden] { display: none; }
@keyframes gv-fade-in { from { opacity: 0; } to { opacity: 1; } }
.gv-lightbox__bar { display: flex; justify-content: space-between; align-items: center; padding: 18px 28px; font-family: var(--e-global-typography-accent-font-family), sans-serif; font-size: 14px; letter-spacing: .22em; text-transform: uppercase; }
.gv-lightbox__count { font-variant-numeric: tabular-nums; color: color-mix(in srgb, var(--e-global-color-gvsurf1) 75%, transparent); }
.gv-lightbox .gv-lightbox__close { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0; border: 0; background: none; color: var(--e-global-color-gvsurf1); cursor: pointer; font: inherit; letter-spacing: inherit; text-transform: inherit; }
.gv-lightbox .gv-lightbox__close span { font-size: 24px; line-height: 1; letter-spacing: 0; }
.gv-lightbox .gv-lightbox__close:hover, .gv-lightbox .gv-lightbox__close:focus-visible { background: none; color: var(--e-global-color-accent); }
.gv-lightbox__stage { flex: 1; min-height: 0; display: flex; align-items: center; gap: 18px; padding: 0 24px; }
.gv-lightbox__figure { flex: 1; min-width: 0; align-self: stretch; display: flex; align-items: center; justify-content: center; margin: 0; }
.gv-lightbox .gv-lightbox__image { width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; display: block; box-shadow: 0 30px 80px rgba(0, 0, 0, .45); opacity: 0; transition: opacity .35s ease; }
.gv-lightbox__image.is-in { opacity: 1; }
.gv-lightbox .gv-lightbox__arrow { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; padding: 0; border: 1px solid color-mix(in srgb, var(--e-global-color-gvsurf1) 40%, transparent); border-radius: 50%; background: transparent; color: var(--e-global-color-gvsurf1); cursor: pointer; transition: background .3s, border-color .3s; }
.gv-lightbox .gv-lightbox__arrow:hover, .gv-lightbox .gv-lightbox__arrow:focus-visible { background: var(--e-global-color-accent); border-color: var(--e-global-color-accent); color: var(--e-global-color-gvsurf1); }
.gv-lightbox__arrow[hidden] { visibility: hidden; display: flex; }
.gv-lightbox__arrow svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.gv-lightbox__info { padding: 20px 28px 28px; text-align: center; min-height: 1em; }
.gv-lightbox__category { margin-bottom: 6px; font-family: var(--e-global-typography-accent-font-family), sans-serif; font-size: 13px; letter-spacing: .22em; text-transform: uppercase; color: color-mix(in srgb, var(--e-global-color-gvsurf1) 70%, transparent); }
.gv-lightbox__caption { font-family: var(--e-global-typography-primary-font-family), serif; font-size: 22px; line-height: 1.3; }
@media (max-width: 959px) {
    .gv-lightbox__stage { gap: 4px; padding: 0 6px; }
    .gv-lightbox .gv-lightbox__arrow { width: 44px; height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
    .gv-gallery__image, .gv-gallery__caption, .gv-lightbox__image { transition: none; }
    .gv-gallery__item.is-entering, .gv-lightbox { animation: none; }
}

/* ------------------------------------------------------ day timeline */

.gv-content-timeline-day .gv-timeline-head .elementor-heading-title { text-align: center; }
.gv-content-timeline-day .gv-timeline-head .gv-content-heading .elementor-heading-title { max-width: 20ch; margin-inline: auto; text-wrap: balance; }
.gv-timeline-steps.e-con { align-items: flex-start; }
.gv-timeline-steps > .gv-timeline-step.e-con { flex: 1 1 0; min-width: 0; }

/* A dot on a rule: the steps read as one line through the day. */
.gv-timeline-marker { display: flex; align-items: center; gap: 12px; width: 100%; }
.gv-timeline-marker::before { content: ""; flex-shrink: 0; width: 10px; height: 10px; border-radius: 50%; background: var(--e-global-color-accent); }
.gv-timeline-marker::after { content: ""; flex: 1; height: 1px; background: color-mix(in srgb, var(--e-global-color-secondary) 50%, transparent); }
.gv-timeline-when.e-con { flex-wrap: nowrap; }
/* Scoped through the block: the global type styles Elementor writes per element are more specific. */
.gv-content-block .gv-timeline-step .gv-timeline-time .elementor-heading-title { font-size: 40px; line-height: 1; letter-spacing: .02em; font-variant-numeric: tabular-nums; }
.gv-content-block .gv-timeline-step .gv-timeline-moment .elementor-heading-title { font-size: 26px; line-height: 1; letter-spacing: 0; text-transform: none; opacity: .85; }
.gv-timeline-photo { overflow: hidden; }
.gv-content-block .gv-timeline-photo.gv-content-photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; }
/* On the paragraph itself, so a profile's text size for the block does not reach it. */
.gv-timeline-step .gv-content-text p { margin: 0; font-size: 16px; line-height: 1.6; opacity: .82; }

@media (max-width: 960px) {
    /* A row you swipe through, one moment and a bit of the next in view. */
    /* Elementor lets a row wrap on phones by default; this one scrolls instead. */
    .gv-timeline-steps.e-con { --flex-wrap-mobile: nowrap; flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 24px; width: calc(100% + 48px); max-width: none; margin-inline: -24px; padding: 0 24px 14px; scrollbar-width: none; }
    .gv-timeline-steps.e-con::-webkit-scrollbar { display: none; }
    .gv-timeline-steps > .gv-timeline-step.e-con { flex: 0 0 min(72%, 320px); scroll-snap-align: start; }
}
