/* Design « Écrin » : luxe discret et contemporain, grand blanc, filets d'un pixel et mise en page de magazine. Bodoni Moda + Jost. */
.d-ecrin {
  --champagne: #a88a5c;
  --champagne-t: #7d6440;
  --bg: #ffffff;
  --bg-soft: #f7f5f1;
  --surface: #ffffff;
  --ink: #161616;
  --ink-2: #4a4a48;
  --ink-3: #6f6d69;
  --line: #e6e2db;
  --radius: 0px;
  --btn-r: 0;
  --head-w: 400;
  --h1-w: 400;
  --head-track: -.01em;
  --h1-track: -.02em;
  --section-pad: 128px;
  --footer-bg: color-mix(in oklab, var(--primary), #0b0b0b 70%);
  --shadow: 0 30px 60px -40px rgba(0,0,0,.25);
  --shadow-sm: none;
  counter-reset: ecrin;
}
.d-ecrin .section { counter-increment: ecrin; }

/* Annonce et en-tête : une ligne, rien de plus */
.d-ecrin .announce { background: var(--bg-soft); color: var(--ink-2); font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; border-bottom: 1px solid var(--line); }
.d-ecrin .site-header { background: rgba(255,255,255,.96); border-bottom: 1px solid var(--line); }
.d-ecrin .brand-mark { background: transparent; color: var(--ink); border-radius: 0; box-shadow: none; border-right: 1px solid var(--line); width: 34px; border-radius: 0; place-items: center start; }
.d-ecrin .brand-text strong { font-size: 1.35rem; font-weight: 400; letter-spacing: -.01em; }
.d-ecrin .brand-text small { text-transform: uppercase; letter-spacing: .26em; font-size: .62rem; color: var(--ink-3); }
.d-ecrin .brand-stars { color: var(--champagne); font-size: .5em; }
.d-ecrin .nav a { border-radius: 0; font-size: .74rem; text-transform: uppercase; letter-spacing: .13em; color: var(--ink); padding: .5em .7em; white-space: nowrap; }
.d-ecrin .nav a:hover { background: transparent; color: var(--ink); text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; }
.d-ecrin .nav-toggle { border-radius: 0; }

/* Boutons */
.d-ecrin .btn { text-transform: uppercase; letter-spacing: .2em; font-size: .72rem; font-weight: 500; }
.d-ecrin .btn-lg { padding: 1.45em 2.4em; }
.d-ecrin .btn-primary { background: var(--primary-900); box-shadow: none; }
.d-ecrin .btn-primary:hover { background: var(--primary); box-shadow: none; }
.d-ecrin .btn-ghost { background: transparent; border-color: var(--ink); color: var(--ink); }
.d-ecrin .btn-ghost:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.d-ecrin .btn:hover { transform: none; }

/* Bannière : nuit d'encre, une arche dorée en majesté */
.d-ecrin .hero-overlay { min-height: min(90vh, 820px); background: var(--primary-900); }
.d-ecrin .hero-bg-art { background: radial-gradient(60% 80% at 76% 40%, color-mix(in oklab, var(--primary), transparent 40%), transparent 70%), linear-gradient(180deg, color-mix(in oklab, var(--primary), #000 55%), color-mix(in oklab, var(--primary), #000 75%)); }
.d-ecrin .hero-bg-art::before { content: ''; position: absolute; right: 12%; top: 14%; bottom: 0; width: min(30vw, 400px); border-radius: 999px 999px 0 0; border: 1px solid rgba(232,214,180,.55); border-bottom: 0;
  background: radial-gradient(circle at 50% 40%, rgba(246,228,190,.9) 0 9%, rgba(232,205,150,.35) 9.5%, transparent 34%), linear-gradient(180deg, rgba(168,138,92,.08), rgba(168,138,92,.32)); }
.d-ecrin .hero-bg-art::after { content: ''; position: absolute; right: calc(12% + 28px); top: calc(14% + 28px); bottom: 0; width: calc(min(30vw, 400px) - 56px); border-radius: 999px 999px 0 0; border: 1px solid rgba(232,214,180,.25); border-bottom: 0; box-shadow: 0 0 0 calc(min(30vw, 400px) * .12) transparent; }
.d-ecrin .hero-bg-art .ic { display: none; }
.d-ecrin .hero-overlay:not(.has-image) .hero-bg::after { background: linear-gradient(90deg, rgba(0,0,0,.45), transparent 60%); }
.d-ecrin .hero-overlay:not(.has-image) .hero-bg::before { content: ''; position: absolute; z-index: 1; left: 0; right: 0; bottom: 64px; height: 1px; background: rgba(255,255,255,.18); }
.d-ecrin .hero h1 { font-size: clamp(2.8rem, 6.6vw, 5.8rem); line-height: 1; letter-spacing: -.03em; }
.d-ecrin .hero-overlay .hero-sub { font-size: 1.12rem; font-weight: 300; max-width: 30em; color: rgba(255,255,255,.82); }
.d-ecrin .hero-overlay .pill-badge { background: transparent; border: 0; border-radius: 0; padding: 0; backdrop-filter: none; text-transform: uppercase; letter-spacing: .3em; font-size: .7rem; font-weight: 500; gap: 16px; }
.d-ecrin .hero-overlay .pill-badge .dot { width: 40px; height: 1px; border-radius: 0; box-shadow: none; background: #d9c7a3; }
.d-ecrin .hero-overlay .btn-primary { background: #fff; color: var(--ink); }
.d-ecrin .hero-overlay .btn-primary:hover { background: #efe7da; }
.d-ecrin .hero-overlay .btn-ghost { border-color: rgba(255,255,255,.55); color: #fff; }
.d-ecrin .hero-overlay .btn-ghost:hover { background: #fff; color: var(--ink); }
.d-ecrin .float-card { border-radius: 0; background: rgba(255,255,255,.08); color: #fff; border: 1px solid rgba(255,255,255,.22); backdrop-filter: blur(12px); box-shadow: none; }
.d-ecrin .float-card small { color: rgba(255,255,255,.7); }
.d-ecrin .float-card > .ic { color: #d9c7a3; }
.d-ecrin .hero-center .float-card, .d-ecrin .hero-split .float-card { background: #fff; color: var(--ink); border-color: var(--line); }

/* Points forts : filets verticaux */
.d-ecrin .highlights { margin-top: -1px; }
.d-ecrin .hl-grid { border-radius: 0; box-shadow: none; border: 0; border-bottom: 1px solid var(--line); background: #fff; }
.d-ecrin .hl-item { padding: 34px 26px; }
.d-ecrin .hl-item strong { font-family: var(--font-head); font-weight: 400; font-size: 1.2rem; }
.d-ecrin .ic-box { border-radius: 0; background: transparent; color: var(--champagne-t); width: 28px; justify-items: start; }

/* Titres : numérotation de magazine */
.d-ecrin .eyebrow { font-size: .7rem; font-weight: 500; letter-spacing: .3em; color: var(--ink-3); }
.d-ecrin .section .sec-head .eyebrow::before { content: counter(ecrin, decimal-leading-zero); font-family: var(--font-head); font-size: 1.05rem; letter-spacing: 0; color: var(--champagne-t); margin-right: 14px; padding-right: 14px; border-right: 1px solid var(--line); }
.d-ecrin .sec-head h2 { font-size: clamp(2.3rem, 4.6vw, 3.8rem); line-height: 1.05; letter-spacing: -.025em; }
.d-ecrin .sec-head.center h2::after { content: ''; display: block; width: 1px; height: 46px; margin: 28px auto 0; background: var(--ink); }
.d-ecrin .lead { font-weight: 300; font-size: 1.15rem; }

/* Chambres : cartes sans cadre, images en majesté */
.d-ecrin .pj-chip { border-radius: 0; border: 0; border-bottom: 1px solid transparent; background: transparent; text-transform: uppercase; letter-spacing: .2em; font-size: .7rem; font-weight: 500; color: var(--ink-3); }
.d-ecrin .pj-chip.on { background: transparent; color: var(--ink); border-color: var(--ink); }
.d-ecrin .pj-grid { gap: 48px 32px; }
.d-ecrin .room { border: 0; background: transparent; }
.d-ecrin .room:hover { transform: none; box-shadow: none; }
.d-ecrin .room-img { aspect-ratio: 4 / 5; }
.d-ecrin .room-ph { color: transparent; background: radial-gradient(circle at 50% 62%, #f3e6cc 0 7%, transparent 7.5%), linear-gradient(180deg, #ece6dc, #d9cfbf); }
.d-ecrin .room:nth-child(3n+2) .room-ph { background: radial-gradient(circle at 50% 62%, #f3e6cc 0 7%, transparent 7.5%), linear-gradient(180deg, #dfe2e0, #c5cbc8); }
.d-ecrin .room:nth-child(3n) .room-ph { background: radial-gradient(circle at 50% 62%, #f3e6cc 0 7%, transparent 7.5%), linear-gradient(180deg, color-mix(in oklab, var(--primary), #fff 80%), color-mix(in oklab, var(--primary), #fff 62%)); }
.d-ecrin .room-ph::before { content: ''; position: absolute; left: 50%; bottom: 0; translate: -50% 0; width: 44%; height: 66%; border: 1px solid rgba(22,22,22,.35); border-bottom: 0; border-radius: 999px 999px 0 0; }
.d-ecrin .room-ph::after { content: ''; position: absolute; inset: 16px; border: 1px solid rgba(255,255,255,.7); }
.d-ecrin .room-ph .ic { display: none; }
.d-ecrin .room-price { top: 0; left: 0; right: auto; border-radius: 0; background: #fff; box-shadow: none; font-family: var(--font-head); font-weight: 400; font-size: 1.05rem; padding: .7em 1.1em .5em; }
.d-ecrin .room-body { padding: 24px 0 0; }
.d-ecrin .room-cat { color: var(--champagne-t); letter-spacing: .26em; font-weight: 500; font-size: .66rem; }
.d-ecrin .room h3 { font-weight: 400; font-size: 1.7rem; letter-spacing: -.015em; }
.d-ecrin .room-facts { border-block: 1px solid var(--line); padding: 10px 0; margin-top: 14px; font-size: .84rem; }
.d-ecrin .room-facts .ic { color: var(--ink-3); }
.d-ecrin .room-book { color: var(--ink); text-transform: uppercase; letter-spacing: .2em; font-size: .7rem; font-weight: 500; border-bottom: 1px solid var(--ink); padding-bottom: 4px; }
.d-ecrin .pj-pager button { border-radius: 0; border-color: transparent; background: transparent; }
.d-ecrin .pj-pager button.on { background: transparent; color: var(--ink); border-color: transparent transparent var(--ink); }

/* La carte : une page de menu imprimée */
.d-ecrin .menu-board { border-radius: 0; border: 1px solid var(--line); background: #fff; outline: 1px solid var(--line); outline-offset: 10px; padding: clamp(32px, 6vw, 80px); }
.d-ecrin .menu-groups { gap: 48px 48px; }
.d-ecrin .menu-group h3 { font-weight: 400; font-style: italic; font-size: 1.7rem; color: var(--ink); text-align: center; border-bottom: 0; padding-bottom: 0; margin-bottom: 26px; }
.d-ecrin .menu-group h3::after { content: ''; display: block; width: 24px; height: 1px; margin: 14px auto 0; background: var(--champagne); }
.d-ecrin .dish { text-align: center; }
.d-ecrin .dish-line { display: block; }
.d-ecrin .dish-line strong { font-weight: 500; letter-spacing: .02em; }
.d-ecrin .dish-dots { display: inline-block; width: 18px; min-width: 0; margin: 0 10px; vertical-align: middle; transform: none; border-bottom: 1px solid var(--champagne); }
.d-ecrin .dish-price { font-family: var(--font-head); font-weight: 400; color: var(--ink); font-size: 1.1rem; }
.d-ecrin .dish small { font-weight: 300; }
.d-ecrin .menu-note { font-family: var(--font-head); }

/* Services : grille de filets */
.d-ecrin .cards:not(.news-cards) { gap: 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.d-ecrin .card { border-radius: 0; border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 40px 32px; background: transparent; }
.d-ecrin .card::after { display: none; }
.d-ecrin .card:hover { transform: none; box-shadow: none; background: var(--bg-soft); }
.d-ecrin .card:hover .ic-box { background: transparent; color: var(--ink); }
.d-ecrin .card h3, .d-ecrin .trust-item h3, .d-ecrin .news-card h3 { font-weight: 400; font-size: 1.45rem; }
.d-ecrin .card p { font-weight: 300; }

/* L'établissement */
.d-ecrin .about { background: var(--bg-soft); }
.d-ecrin .about-art { border-radius: 0; border: 0; color: var(--champagne-t); outline: 1px solid var(--line); outline-offset: -18px; background: radial-gradient(circle at 50% 46%, #fbf3e3 0 12%, transparent 12.5%), linear-gradient(180deg, #ebe4d8, #d6cab6); }
.d-ecrin .about-art .ic { width: 14%; stroke-width: 1; }
.d-ecrin .about-art-name { font-weight: 400; font-style: italic; color: var(--ink); font-size: 1.8rem; }
.d-ecrin .stats div { border-radius: 0; background: transparent; border: 0; border-top: 1px solid var(--ink); padding: 16px 0 0; }
.d-ecrin .stats dt { font-family: var(--font-head); font-weight: 400; color: var(--ink); font-size: 2.8rem; letter-spacing: -.03em; }
.d-ecrin .stats dd { text-transform: uppercase; letter-spacing: .16em; font-size: .68rem; }

/* Labels, avis, équipe */
.d-ecrin .trust { background: #fff; }
.d-ecrin .trust-item { border-radius: 0; border: 0; border-top: 1px solid var(--ink); padding: 26px 0; background: transparent; }
.d-ecrin .trust-item .ic-box { width: 30px; }
.d-ecrin .review { border-radius: 0; border: 0; border-left: 1px solid var(--line); background: transparent; padding: 6px 0 6px 32px; }
.d-ecrin .review blockquote { font-family: var(--font-head); font-size: 1.3rem; line-height: 1.45; color: var(--ink); }
.d-ecrin .stars { color: var(--champagne); }
.d-ecrin .avatar { border-radius: 0; background: var(--bg-soft); border: 0; }
.d-ecrin .avatar span { font-weight: 400; color: var(--ink); }
.d-ecrin .team .avatar { aspect-ratio: 4 / 5; position: relative; background: linear-gradient(180deg, #f3efe8, #e4ddd0); }
.d-ecrin .team .avatar::before { content: ''; position: absolute; inset: 22% 24% 0; border: 1px solid rgba(22,22,22,.18); border-bottom: 0; border-radius: 999px 999px 0 0; }
.d-ecrin .member strong { font-family: var(--font-head); font-weight: 400; font-size: 1.3rem; }
.d-ecrin .member small { text-transform: uppercase; letter-spacing: .2em; font-size: .66rem; }

/* Encadré : bandeau noir éditorial */
.d-ecrin .cta { border-radius: 0; background: var(--primary-900); box-shadow: none; padding: 64px; }
.d-ecrin .cta h2 { font-weight: 400; font-size: clamp(1.8rem, 3.2vw, 2.6rem); }
.d-ecrin .cta p { font-weight: 300; }
.d-ecrin .cta-deco { opacity: .06; }
.d-ecrin .cta .btn-white { color: var(--ink); }

/* Réservation */
.d-ecrin .quote-sec { background: var(--bg-soft); }
.d-ecrin .quote-points li { font-weight: 400; }
.d-ecrin .quote-points .ic { border-radius: 0; background: transparent; padding: 0; width: 22px; height: 22px; color: var(--champagne-t); }
.d-ecrin .quote-call a { color: var(--ink); }
.d-ecrin .panel { border-radius: 0; box-shadow: none; }
.d-ecrin .quote-form.panel { padding: clamp(28px, 4vw, 48px); }
.d-ecrin .f-field label { text-transform: uppercase; letter-spacing: .16em; font-size: .68rem; font-weight: 500; color: var(--ink-2); }
.d-ecrin .f-field input, .d-ecrin .f-field select, .d-ecrin .f-field textarea { border-radius: 0; border: 0; border-bottom: 1px solid #c9c3b8; padding-inline: 0; background: transparent; }
.d-ecrin .f-field input:focus, .d-ecrin .f-field select:focus, .d-ecrin .f-field textarea:focus { border-color: var(--ink); box-shadow: 0 1px 0 var(--ink); }

/* Alentours, horaires, contact */
.d-ecrin .towns { gap: 0 32px; display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line); }
.d-ecrin .towns li { border-radius: 0; background: transparent; border: 0; border-bottom: 1px solid var(--line); padding: 16px 0; color: var(--ink); font-family: var(--font-head); font-weight: 400; font-size: 1.15rem; }
.d-ecrin .towns .ic { display: none; }
.d-ecrin .towns small { margin-left: auto; padding-right: 16px; font-family: var(--font-body); font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; }
.d-ecrin .towns small::before { content: ''; }
.d-ecrin .panel-head > .ic { border-radius: 0; background: transparent; padding: 12px 12px 12px 0; width: 38px; color: var(--champagne-t); }
.d-ecrin .panel-head h2 { font-weight: 400; font-size: 1.8rem; }
.d-ecrin .status-line, .d-ecrin .closures { border-radius: 0; background: var(--bg-soft); }
.d-ecrin .hours-table th, .d-ecrin .hours-table td { border-bottom: 1px solid var(--line); }
.d-ecrin .hours-table th { font-weight: 500; }
.d-ecrin .hours-table tr.today th, .d-ecrin .hours-table tr.today td { color: var(--ink); }
.d-ecrin .hours-table tr.today th::after { border-radius: 0; background: var(--ink); color: #fff; letter-spacing: .1em; text-transform: uppercase; font-size: .6rem; }
.d-ecrin .note .ic, .d-ecrin .contact-list li > .ic { color: var(--champagne-t); }
.d-ecrin .map { border-radius: 0; }
.d-ecrin .map-pin { background: var(--ink); }
.d-ecrin .news-card { border: 0; border-top: 1px solid var(--ink); padding: 26px 0 0; }
.d-ecrin .news-card:hover { background: transparent; }
.d-ecrin .news-date { color: var(--champagne-t); letter-spacing: .24em; font-weight: 500; font-size: .68rem; }

/* FAQ */
.d-ecrin .faq { gap: 0; border-top: 1px solid var(--ink); }
.d-ecrin .faq details { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; }
.d-ecrin .faq details[open] { box-shadow: none; }
.d-ecrin .faq summary { font-family: var(--font-head); font-weight: 400; font-size: 1.3rem; padding: 26px 0; }
.d-ecrin .faq .answer { padding: 0 0 14px; font-weight: 300; }
.d-ecrin .faq .plus { background: transparent; color: var(--ink); }
.d-ecrin .faq details[open] .plus { background: transparent; color: var(--ink); }

/* Pied de page */
.d-ecrin .site-footer { padding-top: 96px; }
.d-ecrin .site-footer h3 { font-weight: 500; font-family: var(--font-body); font-size: .7rem; letter-spacing: .26em; color: rgba(255,255,255,.6); }
.d-ecrin .site-footer .brand-text strong { font-size: 1.8rem; }
.d-ecrin .brand-light .brand-mark { background: transparent; border-right-color: rgba(255,255,255,.2); }
.d-ecrin .socials a { border-radius: 0; background: transparent; border: 1px solid rgba(255,255,255,.2); }

/* Mobile */
@media (max-width: 920px) {
  .d-ecrin { --section-pad: 88px; }
  .d-ecrin .nav { border-radius: 0; }
  .d-ecrin .hero-overlay { padding-bottom: 120px; }
  .d-ecrin .hero-bg-art::before { width: 56vw; right: -6vw; top: auto; height: 62%; opacity: .55; background: linear-gradient(180deg, rgba(168,138,92,.04), rgba(168,138,92,.3)); }
  .d-ecrin .hero-bg-art::after { width: calc(56vw - 40px); right: calc(-6vw + 20px); top: auto; height: calc(62% - 20px); opacity: .55; }
  .d-ecrin .card { padding: 30px 24px; }
  .d-ecrin .hl-item:nth-child(odd) { border-right-color: var(--line); }
  .d-ecrin .cta { padding: 44px 28px; }
}
@media (max-width: 560px) {
  .d-ecrin .towns { grid-template-columns: 1fr; }
  .d-ecrin .room-img { aspect-ratio: 5 / 4; }
  .d-ecrin .review { padding-left: 22px; }
  .d-ecrin .menu-board { outline-offset: 6px; }
}
