/* ===== HERO — split screen ===== */
.hero {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 42% 58%;
}
.hero__text {
    background: beige;
    display: flex; flex-direction: column; justify-content: center;
    padding: clamp(100px,12vw,160px) clamp(36px,6vw,96px) 80px;
    position: relative;
}
.hero__location {
    font-family: 'Montserrat', sans-serif;
    font-size: .7rem; letter-spacing: 3.5px;
    text-transform: uppercase; color: var(--terracotta);
    display: flex; align-items: center; gap: 8px;
    margin-bottom: 28px;
}
.hero__hours {
    font-family: 'Bebas Neue', cursive;
    font-size: 1.05rem; letter-spacing: 2.5px;
    color: var(--ink-muted); margin-bottom: 40px;
}
.hero__actions { display: flex; gap: 12px; flex-wrap: nowrap; }

.hero__logo {
    width: clamp(240px, 32vw, 400px); height: auto;
    display: block; align-self: flex-start;
    margin: -84px 0 -84px -84px;
    transition: transform .4s ease;
}
.hero__logo:hover { transform: scale(1.03); }

.hero__visual {
    position: relative; overflow: hidden;
    padding-top: var(--header-height);
    background-image: url('../images/hero-restaurant.webp');
    background-position: top center;
    background-size: cover;
    background-repeat: no-repeat;
    background-origin: content-box;
    filter: contrast(.93) saturate(.9);
}
.hero__img { display: none; }

/* ===== TICKER ===== */
.ticker {
    background: var(--terracotta);
    overflow: hidden; padding: 13px 0;
    max-width: 100%;
    contain: content;
}
.ticker__track {
    display: flex; align-items: center;
    white-space: nowrap;
    animation: tickerScroll 32s linear infinite;
    will-change: transform;
}
@keyframes tickerScroll {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
.ticker__item {
    font-family: 'Bebas Neue', cursive;
    font-size: .95rem; letter-spacing: 3px;
    color: rgba(255,255,255,.88);
    text-transform: uppercase; padding: 0 36px;
    flex-shrink: 0;
}
.ticker__sep { color: rgba(255,255,255,.35); font-size: .45rem; flex-shrink: 0; }

/* ===== STORY ===== */
.story { background: beige; }
.story__inner {
    max-width: 700px; margin: 0 auto;
    text-align: center;
}
.story__title {
    font-family: 'Bebas Neue', cursive;
    font-size: clamp(1.9rem, 4vw, 2.8rem);
    font-weight: 700; color: var(--ink);
    line-height: 1.2; margin: 14px 0 22px;
}
.story__title em { font-style: normal; color: var(--terracotta); }
.story__text {
    font-family: 'Montserrat', sans-serif;
    color: var(--ink-mid); font-size: .97rem;
    line-height: 1.95; font-weight: 300;
    margin-bottom: 0;
}
.story__stats {
    display: grid; grid-template-columns: repeat(3, 1fr);
    gap: 0; background: var(--border); border: 1px solid var(--border);
}
.story__stat { background: var(--bg); padding: 28px 16px; }
.story__stat-num {
    font-family: 'Bebas Neue', cursive;
    font-size: 2.8rem; color: var(--terracotta);
    letter-spacing: 1px; line-height: 1; display: block;
}
.story__stat-label {
    font-family: 'Montserrat', sans-serif;
    font-size: .68rem; letter-spacing: 1.5px;
    color: var(--ink-muted); text-transform: uppercase;
    font-weight: 500; display: block; margin-top: 6px;
}

/* ===== SHOWCASE (menu preview cards) ===== */
.showcase { background: var(--bg); }
.showcase__header { text-align: center; margin-bottom: 40px; }
.showcase__title {
    font-family: 'Bebas Neue', cursive;
    font-size: clamp(2rem, 4vw, 2.8rem);
    font-weight: 700; color: var(--ink);
    line-height: 1.2; margin-top: 12px;
}
.showcase__title em { font-style: normal; color: var(--terracotta); }

.showcase__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 18px; margin-bottom: 40px;
}
.showcase__card {
    background: var(--bg);
    border: 1px solid var(--border);
    overflow: hidden; display: block;
    transition: transform .35s ease, box-shadow .35s ease;
    cursor: pointer;
}
.showcase__card:hover {
    transform: translateY(-7px);
    box-shadow: 0 18px 44px rgba(26,14,6,.11);
}
.showcase__photo-wrap { aspect-ratio: 3/4; overflow: hidden; }
.showcase__photo {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform .55s ease;
    filter: contrast(.93) saturate(.9);
    display: block;
}
.showcase__card:hover .showcase__photo {
    transform: scale(1.07);
}
.showcase__info {
    padding: 16px 16px 18px;
    border-top: 1px solid var(--border);
    display: flex; justify-content: space-between; align-items: center;
}
.showcase__name {
    font-family: 'Bebas Neue', cursive;
    font-size: .97rem; font-weight: 600; color: var(--ink);
    transition: color .3s ease;
}
.showcase__card:hover .showcase__name { color: var(--terracotta); }
.showcase__price {
    font-family: 'Bebas Neue', cursive;
    font-size: 1.4rem; color: var(--terracotta); letter-spacing: 1px;
}

/* ===== PLAT DU JOUR ===== */
.plat { background: beige; }
.plat__inner {
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: 80px; align-items: center;
}
.plat__text .eyebrow { margin-bottom: 16px; }
.plat__title {
    font-family: 'Bebas Neue', cursive;
    font-size: clamp(2.4rem, 5vw, 3.8rem);
    font-weight: 700; line-height: 1; color: var(--ink);
    margin-bottom: 24px;
}
.plat__title em { font-style: normal; color: var(--terracotta); }
.plat__body {
    font-family: 'Montserrat', sans-serif;
    color: var(--ink-mid); font-size: .95rem;
    line-height: 1.9; font-weight: 300;
    margin-bottom: 14px; max-width: 520px;
}
.plat__note { font-style: italic; color: var(--ink-muted); font-size: .88rem; margin-bottom: 32px; }
.plat__social { display: flex; gap: 12px; flex-wrap: wrap; }

.plat__card {
    background: var(--bg);
    border: 1px solid var(--border);
    border-top: 3px solid var(--terracotta);
    padding: 44px 36px;
    text-align: center;
}
.plat__card-label {
    font-family: 'Montserrat', sans-serif;
    font-size: .65rem; letter-spacing: 2.5px;
    text-transform: uppercase; color: var(--ink-muted);
    display: block; margin-bottom: 10px;
}
.plat__price {
    font-family: 'Bebas Neue', cursive;
    font-size: 7rem; line-height: 1;
    color: var(--ink); letter-spacing: 0;
}
.plat__price sup { font-size: 2.5rem; vertical-align: super; color: var(--terracotta); }
.plat__card-note {
    font-family: 'Montserrat', sans-serif;
    font-size: .78rem; color: var(--ink-muted);
    font-weight: 300; line-height: 1.7; margin-top: 14px;
}

/* ===== SERVICES ===== */
.services { background: var(--bg); }
.services__strip {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0; background: var(--border);
    border: 1px solid var(--border);
    margin-top: 40px;
}
.service-item {
    background: var(--bg);
    padding: 36px 24px; text-align: center;
    transition: background .3s ease;
}
.service-item:hover { background: beige; }
.service-item__icon { font-size: 1.75rem; color: var(--terracotta); margin-bottom: 14px; }
.service-item__title {
    font-family: 'Bebas Neue', cursive;
    font-size: 1.05rem; font-weight: 600;
    color: var(--ink); margin-bottom: 8px;
}
.service-item__text {
    font-family: 'Montserrat', sans-serif;
    font-size: .82rem; color: var(--ink-muted);
    font-weight: 300; line-height: 1.75;
}

/* ===== TERRACE PHOTOS ===== */
.terrace { background: beige; }
.terrace__wrap { max-width: 920px; margin: 0 auto; }
.terrace__slider {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--border);
    max-width: 920px; margin: 0 auto;
}
.terrace__track {
    display: flex;
    transition: transform .5s cubic-bezier(.4,0,.2,1);
}
.terrace__slide {
    min-width: 100%; position: relative;
    cursor: pointer; overflow: hidden;
    aspect-ratio: 16/9;
}
.terrace__img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    filter: contrast(.93) saturate(.9);
    transition: transform .55s ease;
}
.terrace__slide:hover .terrace__img {
    transform: scale(1.03);
}
.terrace__hint {
    position: absolute; bottom: 0; left: 0; right: 0;
    padding: 12px 16px;
    font-family: 'Montserrat', sans-serif;
    font-size: .65rem; letter-spacing: 2px;
    text-transform: uppercase; color: var(--white);
    opacity: 0; transform: translateY(6px);
    transition: opacity .3s ease, transform .3s ease;
    display: flex; align-items: center; gap: 7px;
}
.terrace__slide:hover .terrace__hint { opacity: 1; transform: translateY(0); }

.terrace__btn {
    position: absolute; top: 50%; transform: translateY(-50%);
    background: rgba(250,249,247,.9); border: 1px solid var(--border);
    color: var(--ink); width: 48px; height: 48px;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: all .2s ease; z-index: 2;
}
.terrace__btn--prev { left: 14px; }
.terrace__btn--next { right: 14px; }
.terrace__btn:hover { background: var(--terracotta); color: var(--white); border-color: var(--terracotta); }
.terrace__btn:disabled { opacity: .3; pointer-events: none; }

.terrace__dots {
    position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%);
    display: flex; gap: 8px; z-index: 2;
}
.terrace__dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: rgba(255,255,255,.5); border: none; cursor: pointer;
    transition: background .2s ease, transform .2s ease; padding: 0;
}
.terrace__dot.is-active { background: var(--white); transform: scale(1.25); }

/* ===== LIGHTBOX (terrace) ===== */
.terrace-lightbox {
    display: none; position: fixed; inset: 0;
    background: rgba(245,245,220,.97);
    backdrop-filter: blur(6px);
    z-index: 9000;
    align-items: center; justify-content: center;
    gap: 16px; padding: 20px;
}
.terrace-lightbox.is-open { display: flex; }
.terrace-lightbox__close {
    position: absolute; top: 18px; right: 18px;
    background: var(--bg-warm); border: 1px solid var(--border);
    color: var(--ink); font-size: 1rem;
    width: 44px; height: 44px;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: all .2s ease; z-index: 1;
}
.terrace-lightbox__close:hover { background: var(--terracotta); color: var(--white); border-color: var(--terracotta); }
.terrace-lightbox__prev,
.terrace-lightbox__next {
    background: var(--bg-warm); border: 1px solid var(--border);
    color: var(--ink); font-size: 1rem;
    width: 52px; height: 52px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: all .2s ease;
}
.terrace-lightbox__prev:hover,
.terrace-lightbox__next:hover { background: var(--terracotta); color: var(--white); border-color: var(--terracotta); }
.terrace-lightbox__prev:disabled,
.terrace-lightbox__next:disabled { opacity: .25; cursor: default; pointer-events: none; }
.terrace-lightbox__stage {
    max-width: 900px; width: 100%;
    display: flex; flex-direction: column; gap: 12px;
}
.terrace-lightbox__img {
    width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block;
    border: 1px solid var(--border);
    filter: contrast(.93) saturate(.9);
    transition: opacity .25s ease;
}
.terrace-lightbox__img.is-loading { opacity: 0; }
.terrace-lightbox__counter {
    font-family: 'Bebas Neue', cursive;
    color: var(--ink-muted); font-size: 1rem;
    letter-spacing: 1px; text-align: right;
}

/* ===== REVIEWS ===== */
.reviews { background: beige; }
.reviews__summary {
    display: flex; align-items: center;
    justify-content: center; gap: 22px;
    margin-bottom: 40px;
}
.reviews__score {
    font-family: 'Bebas Neue', cursive;
    font-size: 5rem; line-height: 1; color: var(--ink);
}
.reviews__meta { text-align: left; }
.reviews__stars { color: var(--gold); font-size: 1.4rem; letter-spacing: 2px; }
.reviews__count {
    font-family: 'Montserrat', sans-serif;
    font-size: .78rem; color: var(--ink-muted); margin-top: 4px;
}
.reviews__count {
    text-decoration: none;
    transition: opacity .2s ease;
}
.reviews__count:hover { opacity: .7; }
.g-letter { font-weight: 700; letter-spacing: -.5px; }
.reviews__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px; margin-bottom: 36px;
}
.review-card {
    background: var(--bg); border: 1px solid var(--border);
    padding: 28px 22px;
    display: flex; flex-direction: column; gap: 14px;
    transition: transform .3s ease, box-shadow .3s ease;
}
.review-card:hover { transform: translateY(-4px); box-shadow: 0 12px 36px rgba(26,14,6,.09); }
.review-card__stars { color: var(--gold); font-size: .9rem; letter-spacing: 2px; }
.review-card__text {
    font-family: 'Montserrat', sans-serif;
    font-size: .87rem; color: var(--ink-mid);
    line-height: 1.8; font-weight: 300; font-style: italic; flex: 1;
}
.review-card__text::before { content: '\201C'; }
.review-card__text::after  { content: '\201D'; }
.review-card__author {
    display: flex; align-items: center; gap: 12px;
    padding-top: 14px; border-top: 1px solid var(--border);
}
.review-card__avatar {
    width: 36px; height: 36px; border-radius: 50%;
    background: var(--terracotta);
    display: flex; align-items: center; justify-content: center;
    font-family: 'Bebas Neue', cursive;
    font-size: 1rem; color: var(--white); flex-shrink: 0;
}
.review-card__name { font-family: 'Montserrat', sans-serif; font-size: .82rem; font-weight: 600; color: var(--ink); }
.review-card__date { font-family: 'Montserrat', sans-serif; font-size: .72rem; color: var(--ink-muted); margin-top: 2px; }
.reviews__cta { text-align: center; }

/* ===== LOCATION ===== */
.locate { background: var(--bg); }
.locate__map { max-width: 820px; margin: 0 auto; }
#map-le438 {
    width: 100%; height: 400px;
    border: 1px solid var(--border);
    margin-bottom: 18px;
    position: relative;
}
.leaflet-container { font-family: 'Montserrat', sans-serif; }
.map-marker {
    width: 40px; height: 40px;
    display: flex; align-items: center; justify-content: center;
    position: relative;
}
.map-marker__dot {
    width: 14px; height: 14px;
    background: var(--terracotta);
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(189,63,39,.5);
    position: relative; z-index: 1;
}
.map-marker__pulse {
    position: absolute;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(189,63,39,.18);
    animation: markerPulse 2s ease-out infinite;
}
@keyframes markerPulse {
    0%   { transform: scale(.4); opacity: 1; }
    100% { transform: scale(1);  opacity: 0; }
}
.locate__info { text-align: center; padding: 12px; }
.locate__info p {
    font-family: 'Montserrat', sans-serif;
    color: var(--ink-mid); margin-bottom: 18px;
    font-size: .92rem; font-weight: 300;
}
.locate__info i { color: var(--terracotta); margin-right: 6px; }

/* ===== RESPONSIVE ===== */
@media (max-width:1024px) {
    .showcase__grid { grid-template-columns: repeat(2, 1fr); }
    .plat__inner { gap: 48px; }
    .hero__logo { width: clamp(220px, 28vw, 320px); margin: -50px 0 -40px -40px; }
}
@media (max-width:768px) {
    /* Hero: content only, no photo, full screen */
    .hero { grid-template-columns: 1fr; min-height: calc(100svh - 42px); }
    .hero__visual { display: none; }
    .hero__text {
        background: beige;
        padding: calc(var(--header-height) + 32px) 28px 48px;
        justify-content: center;
        align-items: center;
        text-align: center;
    }
    .hero__logo {
        width: clamp(220px, 60vw, 320px);
        margin: -40px 0 -32px;
        align-self: center;
    }
    .hero__location { justify-content: center; }
    .hero__actions  { justify-content: center; width: 100%; gap: 8px; }
    .hero__actions .btn { flex: 1; min-width: 0; padding-left: 16px; padding-right: 16px; text-align: center; justify-content: center; }
    /* Showcase */
    .showcase__grid { grid-template-columns: repeat(2,1fr); gap:14px; }
    /* Plat */
    .plat__inner { grid-template-columns:1fr; gap:36px; }
    .plat__text { text-align: center; }
    .plat__text .eyebrow { justify-content: center; }
    .plat__body, .plat__note { max-width: 100%; }
    .plat__social { justify-content: center; }
    .plat__card  { max-width: 300px; margin: 0 auto; }
    /* Services */
    .services__strip { grid-template-columns: repeat(2,1fr); }
    /* Reviews */
    .reviews__grid { grid-template-columns: 1fr; }
    .reviews__summary { flex-direction:column; text-align:center; }
    .reviews__meta { text-align:center; }
    /* Terrace */
    .terrace__slide { aspect-ratio: 4/3; }
    .terrace__btn { width: 38px; height: 38px; }
    /* Location */
    .locate__map { text-align: center; }
    #map-le438 { text-align: left; }
}
@media (max-width:576px) {
    .showcase__grid { grid-template-columns: 1fr; }
    .services__strip { grid-template-columns: 1fr; }
    .story__stats { grid-template-columns: 1fr; }
    .plat__price { font-size: 5.5rem; }
}
