/*
 * Maison Rubens — brandbook.
 *
 * Een Vlaamse brasserie die zichzelf als schilderij presenteert, met droge humor.
 * Uitvoering naar het ontwerp in Claude Design ("Maison Rubens - Brandbook").
 *
 * Drie stemmen, elk met één taak:
 *   Milanesa        de allure — koppen en lopende tekst
 *   Kaushan Script  de humor — één woord per kop, nooit een hele zin
 *   DIN Condensed   de dienst — labels, knoppen, prijzen, bijschriften
 *
 * En één ritme: crème en petrol wisselen elkaar af, met een enkel bijna-zwart
 * vlak voor het formulier. Fotografie blijft rechthoekig — geen maskers, geen
 * kaders. De vorm zit in het zegel en de luifel, niet om een foto heen.
 */
body.gv-style-profile--maison-rubens-vo {
    --gv-near-black: #1B1512;
    --gv-ease: cubic-bezier(.2, .7, .2, 1);
    --gv-stamp: url("maison-rubens-vo/stempel-ovaal.svg");
    --gv-kelner: url("maison-rubens-vo/kelner.svg");
    --gv-pot: url("maison-rubens-vo/pot.svg");
    --gv-monogram: url("maison-rubens-vo/monogram-r.svg");
}

/* ------------------------------------------------------------------ type */

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-heading .elementor-heading-title {
    font-size: clamp(38px, 4.4vw, 64px);
    line-height: 1.05;
    letter-spacing: 0;
    text-transform: none;
    text-wrap: balance;
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-heading h3.elementor-heading-title {
    font-size: 22px;
    line-height: 1.3;
}

/* The hero title also carries .gv-content-heading, so it has to come after it. */
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-hero-title .elementor-heading-title {
    font-size: clamp(44px, 6.2vw, 92px);
    line-height: 1.02;
    max-width: 14ch;
}

/* One word per heading carries the joke. Never a whole sentence. */
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-heading em {
    font-family: var(--e-global-typography-gvscrpt-font-family), cursive;
    font-style: normal;
    font-weight: 400;
    font-size: 1.06em;
    line-height: .8;
    text-transform: none;
    color: var(--e-global-color-accent);
}

/* The service face inside a heading, for the second half of a two-part line. */
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-heading strong {
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-weight: 400;
    font-size: .84em;
    letter-spacing: .02em;
    text-transform: uppercase;
}

body.gv-style-profile--maison-rubens-vo .gv-content-image-fresco .gv-content-heading em,
body.gv-style-profile--maison-rubens-vo .gv-content-image-fresco .gv-content-heading strong {
    display: block;
    color: inherit;
}

body.gv-style-profile--maison-rubens-vo .gv-content-image-fresco .gv-content-heading em {
    font-size: 1.12em;
    line-height: 1.1;
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-eyebrow .elementor-heading-title {
    font-size: 13px;
    letter-spacing: .24em;
}

/* The badge: a brass seal with a turning dashed ring. */
body.gv-style-profile--maison-rubens-vo .gv-badge.e-con {
    border-radius: 50%;
    background-color: var(--e-global-color-secondary);
}

body.gv-style-profile--maison-rubens-vo .gv-badge.e-con::after {
    content: '';
    position: absolute;
    inset: 8px;
    border-radius: 50%;
    border: 1px dashed var(--e-global-color-gvsurf1);
    animation: gv-spin 30s linear infinite;
    pointer-events: none;
}

body.gv-style-profile--maison-rubens-vo .gv-badge .gv-content-eyebrow .elementor-heading-title {
    color: var(--e-global-color-gvsurf1);
    font-size: 11px;
    letter-spacing: .22em;
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-text {
    font-size: 19px;
    line-height: 1.6;
}

/* An initial in the service face, at the head of a story. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-content-text > p:first-child::first-letter,
body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-text > p:first-child::first-letter,
body.gv-style-profile--maison-rubens-vo .gv-content-story-concept .gv-content-text > p:first-child::first-letter {
    float: left;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-size: 74px;
    line-height: .78;
    color: var(--e-global-color-primary);
    margin: 6px 14px 0 0;
}

body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-text > p:first-child::first-letter {
    color: var(--e-global-color-gvsurf1);
}

/* --------------------------------------------------------------- planes */

body.gv-style-profile--maison-rubens-vo .gv-content-block.e-con {
    position: relative;
    /* Decoration hangs over the edges of a block; the page must not scroll for it. */
    overflow: hidden;
    padding-top: 140px;
    padding-bottom: 130px;
}

/* The split plane runs its colour field and photograph edge to edge: the photo is
   as tall as the block, so the rhythm padding above must not reach it. One class
   more than that rule, so it also beats the mobile override further down. */
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-split-plane.e-con {
    padding-top: 0;
    padding-bottom: 0;
}

body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-hero.e-con {
    padding-top: 180px;
    padding-bottom: 88px;
}

/* The page header is a lower hero: less air above the copy than the opening. */
/* One class more than the full-screen hero rule further down, so it wins wherever it sits. */
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-hero.gv-page-header.e-con {
    /* Not the full screen of the opening hero: the height and the spacing set in
       Elementor apply. That spacing already sits on the inner box, so the outer one
       gets none, or the copy would float a padding's height above the bottom edge. */
    min-height: var(--min-height, 64vh);
    padding-top: 0;
    padding-bottom: 0;
}

/* The form is the one near-black plane in the sequence. */
body.gv-style-profile--maison-rubens-vo .gv-content-contact-line.e-con,
body.gv-style-profile--maison-rubens-vo .gv-content-contact-card.e-con {
    background-color: var(--gv-near-black);
}

/* ---------------------------------------------------------- photography */

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-photo img {
    clip-path: none;
    border-radius: 0;
    transition: transform 1.4s var(--gv-ease);
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-photo:hover img {
    transform: scale(1.05);
}

/* Parallax on the two full-bleed photographs. The image is an Elementor
   background, so it shifts through background-position rather than a transform —
   a transform would drag the headline along with it. Without the script the
   custom property is simply absent and the photograph sits still. */
body.gv-style-profile--maison-rubens-vo .gv-hero,
body.gv-style-profile--maison-rubens-vo .gv-content-image-fresco {
    background-position: center calc(50% + var(--gv-par, 0px));
}

/* Sfeer: a staircase, with a roman numeral counting the rooms. */
body.gv-style-profile--maison-rubens-vo .gv-content-gallery { counter-reset: gv-kamer; }
body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card { counter-increment: gv-kamer; position: relative; }
body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card--1 { padding-top: 0; --gv-kamer-top: 0px; }
body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card--2 { padding-top: 56px; --gv-kamer-top: 56px; }
body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card--3 { padding-top: 112px; --gv-kamer-top: 112px; }

body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card::before {
    content: counter(gv-kamer, lower-roman);
    position: absolute;
    left: -14px;
    top: calc(var(--gv-kamer-top, 0px) - 26px);
    z-index: 1;
    font-family: var(--e-global-typography-gvscrpt-font-family), cursive;
    font-size: 64px;
    line-height: .8;
    color: color-mix(in srgb, var(--e-global-color-accent) 38%, transparent);
    pointer-events: none;
}

/* The caption sits in the picture, in coral. Kept in flow and pulled up: an
   absolutely positioned flex child would snap to the top of the card instead. */
body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card .gv-content-eyebrow {
    position: relative;
    z-index: 2;
    align-self: flex-start;
    width: auto;
    margin-top: -46px;
    margin-bottom: 18px;
    padding: 11px 18px 9px;
    background: var(--e-global-color-accent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card .gv-content-eyebrow .elementor-heading-title {
    color: var(--e-global-color-gvsurf1);
    font-size: 14px;
    letter-spacing: .22em;
}

/* ------------------------------------------------- marks in the margin */

/* A slowly turning stamp beside the story, and the waiter watching the jobs
   section. Both are decoration, so they live here rather than in a block. */
body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-photo {
    position: relative;
}

/* Masked rather than used as a background image: an external SVG resolves
   currentColor to black, which is invisible on the dark plane. */
body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-photo::after,
body.gv-style-profile--maison-rubens-vo .gv-content-jobs-split::after {
    content: '';
    position: absolute;
    pointer-events: none;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-position: center;
    mask-position: center;
}

/* The split plane runs edge to edge, so the seal sits inside the picture
   rather than hanging off it. */
body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-photo::after {
    right: 28px;
    bottom: 28px;
    width: 148px;
    height: 148px;
    background-color: var(--e-global-color-accent);
    -webkit-mask-image: var(--gv-stamp);
    mask-image: var(--gv-stamp);
    animation: gv-spin 46s linear infinite;
}

body.gv-style-profile--maison-rubens-vo .gv-content-jobs-split::after {
    right: 3%;
    bottom: 0;
    width: min(280px, 26vw);
    height: min(340px, 32vw);
    background-color: var(--e-global-color-primary);
    -webkit-mask-image: var(--gv-kelner);
    mask-image: var(--gv-kelner);
    -webkit-mask-position: bottom center;
    mask-position: bottom center;
    opacity: .18;
    animation: gv-dienblad 5.5s ease-in-out infinite;
}

/* ----------------------------------------------------------- the feed */

/* A mosaic rather than a strip: two tall tiles hold the corners. */
/* Twee rijen van vaste hoogte, zoals de bron. Met auto-rows groeien tegels mee
   met hun inhoud en wordt het mozaïek een lappendeken. */
body.gv-style-profile--maison-rubens-vo .gv-feed--grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: repeat(2, clamp(150px, 15vw, 215px));
    gap: 14px;
}

body.gv-style-profile--maison-rubens-vo .gv-feed--grid .gv-feed-item--1,
body.gv-style-profile--maison-rubens-vo .gv-feed--grid .gv-feed-item--4 {
    grid-row: span 2;
}

/* Two double-height tiles fill eight cells with six pictures. Genuinely
   positional, so :nth-child is the honest selector here. */
body.gv-style-profile--maison-rubens-vo .gv-feed--grid .gv-feed-item:nth-child(n+7) {
    display: none;
}

body.gv-style-profile--maison-rubens-vo .gv-feed-item {
    overflow: hidden;
    background: color-mix(in srgb, var(--e-global-color-primary) 80%, #000);
}

body.gv-style-profile--maison-rubens-vo .gv-feed-image {
    height: 100%;
    aspect-ratio: auto;
    transition: transform 1.2s var(--gv-ease);
}

body.gv-style-profile--maison-rubens-vo .gv-feed-item:hover .gv-feed-image {
    transform: scale(1.06);
}

/* ---------------------------------------------- illustration and mark */

body.gv-style-profile--maison-rubens-vo .gv-illustration {
    background-color: var(--e-global-color-accent);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}

body.gv-style-profile--maison-rubens-vo .gv-illustration--pot {
    -webkit-mask-image: var(--gv-pot);
    mask-image: var(--gv-pot);
    animation: gv-potstoom 2.4s ease-in-out infinite;
}

body.gv-style-profile--maison-rubens-vo .gv-illustration--kelner {
    -webkit-mask-image: var(--gv-kelner);
    mask-image: var(--gv-kelner);
    height: 220px;
    animation: gv-dienblad 5.5s ease-in-out infinite;
}

body.gv-style-profile--maison-rubens-vo .gv-monogram {
    background: var(--e-global-color-gvsurf1);
    -webkit-mask-image: linear-gradient(#000, #000), var(--gv-monogram);
    mask-image: linear-gradient(#000, #000), var(--gv-monogram);
    -webkit-mask-size: 100% 100%, auto 58%;
    mask-size: 100% 100%, auto 58%;
    -webkit-mask-repeat: no-repeat, no-repeat;
    mask-repeat: no-repeat, no-repeat;
    -webkit-mask-position: center, center;
    mask-position: center, center;
    -webkit-mask-composite: xor;
    mask-composite: exclude;
}

/* -------------------------------------------------------------- coral */

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-tip .gv-content-numeral .elementor-heading-title {
    font-size: 26px;
    font-style: italic;
    color: var(--e-global-color-secondary);
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-tip,
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-faq .e-n-accordion-item {
    border-bottom-color: color-mix(in srgb, var(--e-global-color-secondary) 35%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-tip {
    transition: transform .4s var(--gv-ease);
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-tip:hover {
    transform: translateX(8px);
}

body.gv-style-profile--maison-rubens-vo .gv-script-line .elementor-heading-title {
    font-family: var(--e-global-typography-gvscrpt-font-family), cursive;
    font-size: clamp(26px, 3vw, 44px);
    line-height: 1.15;
    text-transform: none;
    letter-spacing: 0;
    color: var(--e-global-color-accent);
}

/* -------------------------------------------------------------- motion */

@keyframes gv-spin { to { transform: rotate(360deg); } }
@keyframes gv-dienblad { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }
@keyframes gv-potstoom { 0%, 100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-8px) rotate(1deg); } }

/* Revealed by the profile script, which only ever adds .gv-in. An element that
   is never observed simply stays visible, so nothing can go missing. */
body.gv-style-profile--maison-rubens-vo [data-gv-reveal] {
    opacity: 0;
    transform: translateY(32px);
    transition: opacity 1.1s var(--gv-ease), transform 1.1s var(--gv-ease);
}

body.gv-style-profile--maison-rubens-vo [data-gv-reveal].gv-in {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    body.gv-style-profile--maison-rubens-vo * {
        animation: none !important;
        transition: none !important;
    }

    body.gv-style-profile--maison-rubens-vo [data-gv-reveal] {
        opacity: 1;
        transform: none;
    }
}

@media (max-width: 1024px) {
    body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card--2,
    body.gv-style-profile--maison-rubens-vo .gv-content-gallery-card--3 { padding-top: 0; --gv-kamer-top: 0px; }
    body.gv-style-profile--maison-rubens-vo .gv-feed--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-photo::after { right: 16px; bottom: 16px; width: 104px; height: 104px; }
}

@media (max-width: 767px) {
    body.gv-style-profile--maison-rubens-vo .gv-content-block.e-con {
        padding-top: 84px;
        padding-bottom: 80px;
    }

    body.gv-style-profile--maison-rubens-vo .gv-content-split-plane .gv-content-text > p:first-child::first-letter,
    body.gv-style-profile--maison-rubens-vo .gv-content-story-concept .gv-content-text > p:first-child::first-letter {
        font-size: 54px;
    }
}

/* ------------------------------------------------ rubens-hero, custom block */

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero .gv-content-eyebrow .elementor-heading-title {
    font-size: 18px;
    letter-spacing: .24em;
    text-shadow: 0 1px 14px rgba(22, 36, 39, .7);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero .gv-hero-lockup img {
    filter: drop-shadow(0 4px 22px rgba(16, 28, 31, .45));
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero .gv-content-text {
    font-size: 21px;
    opacity: .9;
}

/* ------------------------------------------- rubens-menukaart, custom block */

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-kaart-blad.e-con {
    box-shadow: 0 40px 90px rgba(16, 28, 31, .45);
}

/* The ruled inner frame of a printed card. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-kaart-binnen.e-con {
    border: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 70%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-kaart-binnen .gv-content-text {
    font-size: 15px;
    font-style: italic;
    text-align: center;
    color: var(--e-global-color-gvmuted);
}

/* A rule with a diamond in the middle, above and below the dishes. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-kaart-binnen .gv-content-text::before {
    content: '';
    display: block;
    width: 180px;
    height: 7px;
    margin: 0 auto 14px;
    background:
        linear-gradient(var(--e-global-color-accent), var(--e-global-color-accent)) left 50% / calc(50% - 9px) 1px no-repeat,
        linear-gradient(var(--e-global-color-accent), var(--e-global-color-accent)) right 50% / calc(50% - 9px) 1px no-repeat,
        linear-gradient(var(--e-global-color-accent), var(--e-global-color-accent)) center / 6px 6px no-repeat;
}

/* Tabs as the card's own italic headings, dishes as ruled rows. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tabs {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px clamp(18px, 3.4vw, 40px);
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-secondary) 40%, transparent);
    margin-bottom: 30px;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tab {
    font-family: var(--e-global-typography-primary-font-family), Georgia, serif;
    font-style: italic;
    font-size: clamp(19px, 2.1vw, 25px);
    line-height: 1;
    letter-spacing: 0;
    text-transform: none;
    color: var(--e-global-color-gvmuted);
    background: none;
    border: 0;
    border-bottom: 2px solid transparent;
    padding: 6px 2px 10px;
    cursor: pointer;
    transition: color .3s, border-color .3s;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tab:hover,
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tab.is-active {
    color: var(--e-global-color-accent);
    border-bottom-color: var(--e-global-color-accent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__intro,
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__panel-title,
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__section-title {
    text-align: left;
    color: var(--e-global-color-primary);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-dish {
    border-bottom: 1px solid color-mix(in srgb, var(--e-global-color-primary) 12%, transparent);
    padding: 16px 0;
    transition: background .4s var(--gv-ease);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-dish:hover {
    background: color-mix(in srgb, var(--e-global-color-secondary) 8%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-dish__title {
    font-size: 21px;
    line-height: 1.3;
    color: var(--e-global-color-primary);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-dish__price {
    font-family: var(--e-global-typography-primary-font-family), Georgia, serif;
    font-size: 19px;
    color: var(--e-global-color-accent);
    font-variant-numeric: tabular-nums;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-dish__description {
    font-size: 16px;
    line-height: 1.5;
    font-style: italic;
    color: var(--e-global-color-gvmuted);
}

/* ---------------------------------------------- rubens-verhaal, custom block */

/* A sage plane offset behind the photograph, and the oval stamp turning at its
   corner. Exactly the two decorations the source puts there. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-verhaal-beeld::before {
    content: '';
    position: absolute;
    left: -26px;
    top: -26px;
    right: 26px;
    bottom: 26px;
    background: var(--e-global-color-gvmuted);
    opacity: .3;
    pointer-events: none;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-verhaal-beeld::after {
    content: '';
    position: absolute;
    right: -38px;
    bottom: -38px;
    width: 148px;
    height: 148px;
    z-index: 2;
    pointer-events: none;
    background-color: var(--e-global-color-accent);
    -webkit-mask-image: var(--gv-stamp);
    mask-image: var(--gv-stamp);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-size: contain;
    animation: gv-spin 46s linear infinite;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-verhaal-foto {
    position: relative;
    z-index: 1;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-content-heading .elementor-heading-title {
    font-size: clamp(34px, 4.2vw, 58px);
    line-height: 1.04;
    max-width: 16ch;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-content-heading em {
    font-size: 1.08em;
    line-height: .85;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-content-text {
    line-height: 1.65;
    max-width: 50ch;
}

body.gv-style-profile--maison-rubens-vo .gv-verhaal-naam .elementor-heading-title {
    font-family: var(--e-global-typography-gvscrpt-font-family), cursive;
    font-size: 30px;
    line-height: 1;
    text-transform: none;
    letter-spacing: 0;
}

body.gv-style-profile--maison-rubens-vo .gv-verhaal-onder .gv-content-eyebrow .elementor-heading-title {
    font-size: 13px;
    letter-spacing: .2em;
    color: var(--e-global-color-gvmuted);
}

@media (max-width: 1024px) {
    body.gv-style-profile--maison-rubens-vo .gv-content-rubens-verhaal .gv-verhaal-beeld::after { right: -14px; bottom: -22px; width: 104px; height: 104px; }
}

/* ------------------------------- rubens-menukaart, exact naar de bron gezet */

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart.e-con {
    padding-top: 160px;
    padding-bottom: 160px;
}

/* Drie stops in plaats van één vlakke dekking: het midden van de plaat is
   lichter, zodat het stilleven erachter net zichtbaar blijft. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart.e-con::before {
    background-image: linear-gradient(180deg,
        color-mix(in srgb, var(--e-global-color-primary) 94%, transparent),
        color-mix(in srgb, var(--e-global-color-primary) 86%, transparent) 50%,
        color-mix(in srgb, var(--e-global-color-primary) 94%, transparent));
    background-color: transparent;
    opacity: 1;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-content-heading .elementor-heading-title {
    font-size: clamp(44px, 5.2vw, 76px);
    line-height: 1;
    text-align: center;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-content-heading em {
    font-size: 1.02em;
    line-height: .8;
}

/* De intro boven de kaart: cursief, gecentreerd, op leesbreedte. Het blok is
   boxed, dus de widget is geen direct kind — uitsluiten wat in het blad staat. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-content-text:not(.gv-kaart-binnen *) {
    font-size: 20px;
    line-height: 1.6;
    font-style: italic;
    text-align: center;
    max-width: 46ch;
    margin-bottom: 52px;
    color: color-mix(in srgb, var(--e-global-color-gvsurf1) 80%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-kaart-binnen.e-con {
    padding-inline: clamp(28px, 6vw, 80px);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-kaart-merk {
    margin-bottom: 0;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tabs {
    padding-bottom: 6px;
    margin-bottom: 34px;
}

/* Zodat het blad niet verspringt bij het wisselen van tab. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__panel {
    min-height: 420px;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__intro {
    font-size: 16px;
    font-style: italic;
    max-width: 52ch;
    color: var(--e-global-color-gvmuted);
}

/* ------------------------------------------------- knoppen, uit de bron */

/* Koraal met petrol tekst is de standaard, niet cognac. De onderrand van de
   padding is 2px korter dan de bovenrand: dat vangt de optische zwaarte van
   DIN Condensed in kapitalen op. */
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-button .elementor-button,
body.gv-style-profile--maison-rubens-vo .gv-header .elementor-button {
    background-color: var(--e-global-color-accent);
    color: var(--e-global-color-primary);
    border: 0;
    border-radius: 0;
    padding: 16px 30px 14px;
    font-size: 18px;
    letter-spacing: .18em;
    text-transform: uppercase;
    transition: background-color .3s, color .3s, transform .3s, border-color .3s;
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-button .elementor-button:hover,
body.gv-style-profile--maison-rubens-vo .gv-header .elementor-button:hover {
    background-color: var(--e-global-color-gvsurf1);
    color: var(--e-global-color-primary);
    transform: translateY(-2px);
}

body.gv-style-profile--maison-rubens-vo .gv-header .elementor-button {
    padding: 11px 22px 9px;
    font-size: 17px;
}

/* De tweede knop is een omlijning op donker. */
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-button-outline.elementor-widget .elementor-button {
    background: transparent;
    color: var(--e-global-color-gvsurf1);
    border: 1px solid color-mix(in srgb, var(--e-global-color-gvsurf1) 60%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-content-button-outline.elementor-widget .elementor-button:hover {
    background: color-mix(in srgb, var(--e-global-color-gvsurf1) 12%, transparent);
    border-color: var(--e-global-color-gvsurf1);
    color: var(--e-global-color-gvsurf1);
    transform: none;
}

/* Werken bij staat op crème: daar is de knop petrol, met cognac bij aanwijzen. */
body.gv-style-profile--maison-rubens-vo .gv-content-jobs-split .gv-content-button .elementor-button {
    background-color: var(--e-global-color-primary);
    color: var(--e-global-color-gvsurf1);
}

body.gv-style-profile--maison-rubens-vo .gv-content-jobs-split .gv-content-button .elementor-button:hover {
    background-color: var(--e-global-color-secondary);
    color: var(--e-global-color-gvsurf1);
}

/* Het formulier staat op bijna-zwart: linnen knop, koraal bij aanwijzen. */
body.gv-style-profile--maison-rubens-vo .gv-content-contact-line .elementor-button,
body.gv-style-profile--maison-rubens-vo .gv-content-contact-line button[type="submit"] {
    background-color: var(--e-global-color-gvsurf1);
    color: var(--gv-near-black);
    padding: 16px 34px 14px;
}

body.gv-style-profile--maison-rubens-vo .gv-content-contact-line .elementor-button:hover,
body.gv-style-profile--maison-rubens-vo .gv-content-contact-line button[type="submit"]:hover {
    background-color: var(--e-global-color-accent);
    color: var(--e-global-color-gvsurf1);
}

/* ------------------------------------- vlakken, exact volgens de bron */

/* Elementor schrijft achtergronden per element weg met vier klassen; daar moet
   dit overheen. Vandaar .gv-content-block erbij in de selector. */
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-gallery-staggered.e-con,
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-social-grid.e-con,
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-social-row.e-con,
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-social-collage.e-con {
    background-color: var(--e-global-color-primary);
    color: var(--e-global-color-gvsurf1);
}

body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-contact-line.e-con,
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-contact-card.e-con {
    background-color: var(--gv-near-black);
    color: var(--e-global-color-gvsurf1);
}

/* Tekst die op een crèmevlak stond en nu op petrol staat. */
body.gv-style-profile--maison-rubens-vo .gv-content-gallery-staggered .gv-content-heading .elementor-heading-title,
body.gv-style-profile--maison-rubens-vo .gv-content-social-grid .gv-content-heading .elementor-heading-title,
body.gv-style-profile--maison-rubens-vo .gv-content-social-row .gv-content-heading .elementor-heading-title {
    color: var(--e-global-color-gvsurf1);
}

body.gv-style-profile--maison-rubens-vo .gv-content-gallery-staggered .gv-content-text,
body.gv-style-profile--maison-rubens-vo .gv-content-social-grid .gv-content-text {
    color: color-mix(in srgb, var(--e-global-color-gvsurf1) 82%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-social-grid .gv-content-eyebrow .elementor-heading-title,
body.gv-style-profile--maison-rubens-vo .gv-content-social-row .gv-content-eyebrow .elementor-heading-title {
    color: var(--e-global-color-accent);
}

/* ----------------------------------------------- header: logo en knop */

/* Het woordmerk draagt een ondertitel, dus hoogte stuurt hier, niet breedte. */
body.gv-style-profile--maison-rubens-vo .gv-header .elementor-widget-image img {
    height: 44px;
    width: auto;
    max-width: none;
}

body.gv-style-profile--maison-rubens-vo .gv-header .elementor-widget-button .elementor-button {
    background-color: var(--e-global-color-accent);
    color: var(--e-global-color-primary);
    padding: 11px 22px 9px;
    font-size: 17px;
    letter-spacing: .18em;
    border-radius: 0;
}

body.gv-style-profile--maison-rubens-vo .gv-header .elementor-widget-button .elementor-button:hover {
    background-color: var(--e-global-color-gvsurf1);
    color: var(--e-global-color-primary);
}

/* ------------------------------------------------------- social feed */

/* Bijschrift uit de mediabibliotheek, over een verloop zoals in de bron. */
body.gv-style-profile--maison-rubens-vo .gv-feed-item {
    position: relative;
}

body.gv-style-profile--maison-rubens-vo .gv-feed-caption {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 52px 16px 15px;
    background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--e-global-color-gvdark1) 88%, transparent));
    color: color-mix(in srgb, var(--e-global-color-gvsurf1) 94%, transparent);
    font-size: 15px;
    line-height: 1.45;
    text-wrap: pretty;
    pointer-events: none;
}

body.gv-style-profile--maison-rubens-vo .gv-feed-intro {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 28px;
    flex-wrap: wrap;
    width: 100%;
}

/* De hero vult het scherm ónder de header, niet het scherm plús de header.
   --gv-header-h wordt door het profielscript gemeten; ontbreekt die, dan blijft
   het gedrag zoals het was. */
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-hero.e-con {
    min-height: calc(100vh - var(--gv-header-h, 0px));
}

@supports (height: 100svh) {
    body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-hero.e-con {
        min-height: calc(100svh - var(--gv-header-h, 0px));
    }
}

/* Gecentreerd moet de inhoud binnen één scherm passen: minder marge, kleiner
   beeldmerk. Bottom-aligned mag het groter, want dan telt alleen de onderkant. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero.gv-hero-centered.e-con {
    padding-top: 88px;
    padding-bottom: 72px;
}

/* Op een laag scherm moet het beeldmerk mee krimpen, anders duwt het de knoppen
   eruit. De hoogte stuurt, de breedte volgt. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero.gv-hero-centered .gv-hero-lockup img {
    max-height: 30vh;
    width: auto;
    max-width: min(560px, 62vw);
}

@media (max-width: 767px) {
    body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero.gv-hero-centered.e-con {
        padding-top: 64px;
        padding-bottom: 56px;
    }

    body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero.gv-hero-centered .gv-hero-lockup img {
        width: min(420px, 78vw);
    }
}

/* Elementor houdt op de container nog een eigen minimumhoogte aan die zich niet
   laat wegduwen met min-height alleen. Een expliciete hoogte wint wel, en de
   inhoud is hierboven al begrensd zodat er niets afvalt. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero.gv-hero-centered.e-con {
    height: calc(100vh - var(--gv-header-h, 0px));
    min-height: 0;
}

@supports (height: 100svh) {
    body.gv-style-profile--maison-rubens-vo .gv-content-rubens-hero.gv-hero-centered.e-con {
        height: calc(100svh - var(--gv-header-h, 0px));
    }
}

/* De kaart draagt zelf het papier; de widget hoeft geen eigen vlak en geen
   eigen binnenmarge, anders staan de gerechten dubbel ingesprongen. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu,
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__panel {
    background: transparent;
    padding: 0;
    /* De widget tekent zelf al een papieren kaart met slagschaduw. Binnen dit
       blok is dat een tweede doos in de doos: het blad is de kaart. */
    box-shadow: none;
}

/* Vier gangen naast elkaar op één regel. Past het niet, dan schuift de strip
   opzij in plaats van af te breken — een afgebroken tabrij leest als twee rijen. */
body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    gap: 0 clamp(14px, 2.6vw, 40px);
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tabs::-webkit-scrollbar {
    display: none;
}

body.gv-style-profile--maison-rubens-vo .gv-content-rubens-menukaart .gv-menu__tab {
    font-size: clamp(18px, 1.9vw, 25px);
    white-space: nowrap;
}

/* Likes en reacties, pas zichtbaar bij aanwijzen. */
body.gv-style-profile--maison-rubens-vo .gv-feed-stats {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    pointer-events: none;
    background: color-mix(in srgb, var(--e-global-color-primary) 82%, transparent);
    color: var(--e-global-color-gvsurf1);
    opacity: 0;
    transform: scale(.94);
    transition: opacity .4s ease, transform .5s var(--gv-ease);
}

body.gv-style-profile--maison-rubens-vo .gv-feed-item:hover .gv-feed-stats,
body.gv-style-profile--maison-rubens-vo .gv-feed-item:focus-within .gv-feed-stats {
    opacity: 1;
    transform: none;
}

body.gv-style-profile--maison-rubens-vo .gv-feed-stat {
    display: flex;
    align-items: center;
    gap: 9px;
    font-family: var(--e-global-typography-accent-font-family), sans-serif;
    font-size: 22px;
    letter-spacing: .1em;
}

body.gv-style-profile--maison-rubens-vo .gv-feed-stat svg {
    fill: var(--e-global-color-accent);
}

/* ------------------------------------------------ algemene tekstblokken */

/* Het citaat krijgt het handschrift niet: een hele zin in script is precies wat
   dit merk vermijdt. Milanesa cursief, met koraal alleen in een <em>. */
body.gv-style-profile--maison-rubens-vo .gv-content-block .gv-text-quote .elementor-heading-title {
    font-family: var(--e-global-typography-primary-font-family), Georgia, serif;
    font-size: clamp(32px, 3.8vw, 56px);
    color: var(--e-global-color-primary);
}

/* De afsluiter staat op petrol, zoals elk donker vlak in de reeks. */
body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-content-text-cta.e-con {
    background-color: var(--e-global-color-primary);
    color: var(--e-global-color-gvsurf1);
}

body.gv-style-profile--maison-rubens-vo .gv-content-text-cta .gv-content-text {
    color: color-mix(in srgb, var(--e-global-color-gvsurf1) 86%, transparent);
}

body.gv-style-profile--maison-rubens-vo .gv-content-text-features .gv-content-numeral .elementor-heading-title {
    color: var(--e-global-color-secondary);
}

body.gv-style-profile--maison-rubens-vo .gv-content-text-long .gv-content-text h2 {
    font-weight: 400;
}

/* Lange tekst blijft rustig: geen opkomende alinea's in een privacyverklaring. */
body.gv-style-profile--maison-rubens-vo .gv-content-text-long [data-gv-reveal] {
    opacity: 1;
    transform: none;
}

/* ---------------------------------------------------------- page header */

/* In the page header the script word stays cream: the photo already carries the colour. */
body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-content-heading em {
    color: inherit;
    font-size: 1.12em;
    line-height: .85;
}

body.gv-style-profile--maison-rubens-vo .gv-content-block.gv-page-header .gv-content-hero-title .elementor-heading-title {
    font-size: clamp(46px, 7vw, 100px);
    line-height: 1.02;
    max-width: 16ch;
    /* Room for the script word's tail, which the rise animation's clip would cut off. */
    padding-bottom: .1em;
    padding-inline-end: .25em;
}

/* The title rises out of its own line; breadcrumb and introduction fade in around it. */
@keyframes gv-rise { from { transform: translateY(110%); } to { transform: none; } }
@keyframes gv-fade { from { opacity: 0; } to { opacity: 1; } }

body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-page-header-title { overflow: hidden; }
body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-page-header-title .elementor-heading-title { animation: gv-rise 1.1s var(--gv-ease) .25s both; }
body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-crumbs { animation: gv-fade 1s .1s both; }
body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-content-text { animation: gv-fade 1.2s .9s both; }

@media (max-width: 767px) {
    body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-content-text { font-size: 18px; }
}

@media (prefers-reduced-motion: reduce) {
    body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-page-header-title .elementor-heading-title,
    body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-crumbs,
    body.gv-style-profile--maison-rubens-vo .gv-page-header .gv-content-text { animation: none; }
}

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

/* On the petrol plane the script words stay cream, as in the brandbook. */
body.gv-style-profile--maison-rubens-vo .gv-content-timeline-day .gv-content-heading em { color: inherit; }
body.gv-style-profile--maison-rubens-vo .gv-content-timeline-day .gv-content-eyebrow .elementor-heading-title { opacity: .72; }
body.gv-style-profile--maison-rubens-vo .gv-content-timeline-day .gv-timeline-head .gv-content-heading .elementor-heading-title { font-size: clamp(34px, 4.2vw, 58px); line-height: 1.06; }
