/* Ludi venue theme (ADR-059, proposal): the navy palette of the Ludi brand book, Unbounded + Onest,
   and the «линия общения» contour. Structure comes from core.css; only differences live here. */
/* The router's venue card previews this palette and family (ADR-052). */
.venue-ludi.bn-site,.bn-group-venue--ludi {
 /* Navy scale: the only blues of the theme. Five base values come from the brand book swatches. */
 --ludi-navy-950:#00071e; --ludi-navy-900:#04152c; --ludi-navy-800:#072a49; --ludi-navy-700:#12406a;
 --ludi-fog:#e4e3e3; --ludi-mist:#a7c0cd; --ludi-mist-quiet:#7590a0; --ludi-gold:#e4ac61;
 --bn-bg:var(--ludi-navy-950); --bn-surface:var(--ludi-navy-900); --bn-text:var(--ludi-fog); --bn-muted:var(--ludi-mist); --bn-muted-quiet:var(--ludi-mist-quiet);
 --bn-accent:var(--ludi-gold); --bn-on-accent:var(--ludi-navy-950); --bn-accent-hover:#eec386; --bn-accent-pressed:#c98f45;
 --bn-border-subtle:#2a4566; --bn-border-decor:rgba(228,172,97,.3); --bn-focus:var(--ludi-fog);
 /* A wide grotesk pair instead of a serif: Unbounded for display, Onest for text. */
 --bn-font-display:Unbounded,Manrope,Arial,sans-serif; --bn-display-weight-strong:400; --bn-display-tracking:-.02em;
 --bn-font-body:Onest,Manrope,Arial,sans-serif; --bn-font-meta:Onest,Manrope,Arial,sans-serif;
 --bn-review-bg:var(--ludi-navy-900);
}
.venue-ludi.bn-site {
 --bn-border-card:color-mix(in srgb,var(--bn-text) 16%,transparent);
 --bn-cta-text:var(--bn-accent); --bn-cta-border:color-mix(in srgb,var(--bn-accent) 60%,transparent); --bn-cta-border-hover:var(--bn-accent); --bn-cta-bg-hover:var(--bn-accent); --bn-cta-text-hover:var(--bn-on-accent);
 --bn-footer-bg:var(--ludi-navy-900); --bn-event-surface:var(--ludi-navy-800); --bn-contact-map-bg:var(--ludi-navy-800); --bn-nav-bg:rgba(0,7,30,.94);
 /* Unbounded is wider than Prata, so the scale sits a step lower than KV98. */
 --bn-type-hero:56px; --bn-type-page:clamp(40px,4.4vw,60px); --bn-type-section:clamp(30px,2.8vw,40px); --bn-type-detail:clamp(30px,2.8vw,40px);
 --bn-type-subsection:24px; --bn-type-card:20px;
}
@media(max-width:767px) {
 .venue-ludi.bn-site {--bn-type-hero:32px; --bn-type-page:32px; --bn-type-section:28px; --bn-type-detail:28px; --bn-type-subsection:20px; --bn-type-card:18px; --bn-type-lead:16px;}
}

/* Display weights: light headings, regular card titles. */
.venue-ludi.bn-site h1,.venue-ludi.bn-site h2 {font-weight:300;}
.venue-ludi.bn-site h1 {line-height:1.18;}
.venue-ludi .bn-eyebrow {text-transform:uppercase;letter-spacing:.14em;}
.venue-ludi .bn-button,.venue-ludi .bn-section-cta,.venue-ludi .bn-link {text-transform:uppercase;letter-spacing:.08em;}

/* Header: the wide logotype and a round menu control (the brand's round badges) instead of KV98's hexagon. */
.venue-ludi .bn-logo img,.venue-ludi .bn-header--enhanced .bn-logo img {width:auto;height:28px;}
.venue-ludi .bn-menu-shape {display:none;}
.venue-ludi .bn-menu-toggle.bn-icon-button,.venue-ludi .bn-mobile-panel .bn-menu-close.bn-icon-button {height:44px;min-height:44px;border:1px solid var(--bn-cta-border);border-radius:50%;}
.venue-ludi .bn-menu-toggle:hover,.venue-ludi .bn-menu-close:hover {background:var(--bn-surface);}
.venue-ludi .bn-menu-toggle:focus-visible,.venue-ludi .bn-menu-close:focus-visible {outline:2px solid var(--bn-focus);outline-offset:3px;}
.venue-ludi.bn-site:has(#main>.bn-hero:first-child) .bn-header:not(.bn-header--enhanced),
.venue-ludi.bn-site:has(#main>.bn-hero:first-child) .bn-header--enhanced:not(.bn-header--scrolled) {background:linear-gradient(rgba(0,7,30,.62),rgba(0,7,30,.08));}
@media(max-width:767px) {.venue-ludi .bn-header--enhanced .bn-logo img,.venue-ludi .bn-mobile-panel__top .bn-logo img {width:auto;height:24px;}}

/* Hero: navy shade over the room photo. */
.venue-ludi .bn-hero__photo {object-position:50% 42%;}
.venue-ludi .bn-hero__stage::after {background:linear-gradient(100deg,rgba(0,7,30,.94) 28%,rgba(0,7,30,.62) 52%,rgba(0,7,30,.2) 80%),linear-gradient(rgba(0,7,30,0) 62%,rgba(0,7,30,.9));}
@media(max-width:767px) {
 .venue-ludi .bn-hero__stage::after {background:linear-gradient(rgba(0,7,30,.5),rgba(0,7,30,.45) 30%,rgba(0,7,30,.86) 58%,var(--bn-bg));}
 /* Room for the profile drawn at the top of the first screen. */
 .venue-ludi.bn-site:has(#main>.bn-hero:first-child) .bn-hero__content {padding-top:280px;}
}

/* About: the wall of climbing figures is a portrait photograph. */
@media(min-width:768px) {.venue-ludi .bn-about__grid {grid-template-columns:6fr 7fr;}}
.venue-ludi .bn-about .bn-photo-mask {aspect-ratio:27/32;}

/* Homepage menu: dishes are cut-out plates lying on the page; the contour passes behind them.
   The catalog keeps ordinary photographs in the shared card frame. */
.venue-ludi .bn-menu .bn-menu-card__media {background:transparent;overflow:visible;}
.venue-ludi .bn-menu .bn-menu-card__media>img {object-fit:contain;}
.venue-ludi .bn-menu .bn-menu-card__media[data-photo-parallax]>img {transform:translate3d(0,var(--bn-photo-y,0%),0);}
.venue-ludi .bn-menu-card__media>.bn-menu-card__placeholder {width:120px;opacity:.22;}
/* Space for the person in the plate between the heading and the dishes. */
@media(min-width:768px) {
 .venue-ludi .bn-menu:not(.bn-menu--wine) .bn-section-header {min-height:min(330px,23vw);align-items:stretch;}
 .venue-ludi .bn-menu:not(.bn-menu--wine) .bn-section-header>.bn-heading {align-self:flex-start;}
 .venue-ludi .bn-menu:not(.bn-menu--wine) .bn-section-header__actions {align-self:flex-end;}
}
@media(max-width:767px) {.venue-ludi .bn-menu:not(.bn-menu--wine) .bn-section__inner>.bn-section-header>.bn-heading {margin-bottom:clamp(230px,62vw,330px);}}

/* Events: a musician and a fading «evolution» chain on the navy poster surface. */
.venue-ludi .bn-event-art--ludi {left:7%;right:auto;bottom:8%;width:84%;transform:none;}
.venue-ludi .bn-event-art--ludi img {position:static;width:100%;max-width:100%;height:auto;}

/* Reviews: flat navy cards with a gold quotation mark; no glow. */
.venue-ludi .bn-review-card {background:var(--bn-review-bg);}
.venue-ludi .bn-review-card::before {display:none;}
.venue-ludi .bn-review-card blockquote::before {content:'“';display:block;height:28px;margin-bottom:16px;color:var(--bn-accent);font:400 56px/1 var(--bn-font-display);}

/* Invitation: left-aligned text over the bar; the chair contour is part of the photograph. */
.venue-ludi .bn-invitation {text-align:left;align-items:center;min-height:600px;}
.venue-ludi .bn-invitation::after {background:linear-gradient(90deg,rgba(0,7,30,.95) 24%,rgba(0,7,30,.55) 46%,rgba(0,7,30,0) 68%);opacity:1;}
.venue-ludi .bn-invitation__photo {object-position:62% center;}
.venue-ludi .bn-invitation__content {align-items:flex-start;padding-block:120px;}
.venue-ludi .bn-invitation h2 {font-weight:300;}
.venue-ludi .bn-invitation .bn-lead {max-width:460px;}
@media(max-width:767px) {
 .venue-ludi .bn-invitation {align-items:flex-start;min-height:640px;}
 .venue-ludi .bn-invitation::after {background:linear-gradient(rgba(0,7,30,.95) 30%,rgba(0,7,30,.72) 52%,rgba(0,7,30,.05) 80%);opacity:1;}
 .venue-ludi .bn-invitation__photo {object-position:74% center;}
 .venue-ludi .bn-invitation__content {padding-block:72px;}
 .venue-ludi .bn-invitation h2 {font-size:32px;line-height:40px;}
}

/* Footer. */
.venue-ludi .bn-footer__phone {font:300 22px/32px var(--bn-font-display);}
.venue-ludi .bn-footer__bottom img {width:auto;height:16px;}

/* «Линия общения»: one SVG over backgrounds and photos, under every container (ADR-059). */
.venue-ludi .bn-hero__stage {isolation:auto;background:transparent;}
.venue-ludi #main .bn-container {position:relative;z-index:1;}
.ludi-thread {position:absolute;top:0;left:0;z-index:0;max-width:none;overflow:visible;pointer-events:none;fill:none;stroke:var(--ludi-fog);stroke-linecap:round;stroke-linejoin:round;}
.ludi-thread path {fill:none;}
.ludi-thread .ludi-thread__gold {stroke:var(--ludi-gold);}

/* Reviews background (ADR-062, experiment): «evolution» beside the heading, people at the bar in a field below
   the cards, so neither drawing depends on how many reviews there are. */
.venue-ludi .bn-reviews {position:relative;padding-bottom:calc(var(--bn-section-space) + min(300px,24vw));}
.ludi-reviews-art {position:absolute;z-index:-1;pointer-events:none;height:auto;overflow:visible;fill:none;stroke:var(--ludi-fog);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;opacity:.5;}
.ludi-reviews-art--evolution {top:-8px;right:max(var(--bn-gutter),calc((100% - var(--bn-content)) / 2));width:min(520px,37vw);}
.ludi-reviews-art--bar {bottom:calc(var(--bn-section-space) * .5);right:max(var(--bn-gutter),calc((100% - var(--bn-content)) / 2));width:min(450px,36vw);}
@media(max-width:767px) {
 .ludi-reviews-art {opacity:.4;}
 .venue-ludi .bn-reviews {padding-bottom:calc(var(--bn-section-space) * .5 + 62vw);}
 .venue-ludi .bn-reviews>.bn-container {padding-top:calc(37vw + 24px);}
 .ludi-reviews-art--evolution {top:0;right:var(--bn-gutter);width:calc(100% - 2 * var(--bn-gutter));}
 .ludi-reviews-art--bar {bottom:calc(var(--bn-section-space) * .4);right:var(--bn-gutter);width:calc(100% - 2 * var(--bn-gutter));}
}
