/* mistressincitta.com : gabarit « Velours sombre » (noir encre, bordeaux, laiton, titres en Cormorant Garamond, cartes à filet fin).
   Préfixe vl- partout ; polices auto-hébergées ; aucun framework. */
@font-face { font-family: 'Cormorant Garamond'; font-style: normal; font-weight: 500 700; font-display: swap; src: url(/assets/fonts/cormorant.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 500; font-display: swap; src: url(/assets/fonts/cormorant-italic.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Jost'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(/assets/fonts/jost.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  --vl-ink: #0d0b0c; --vl-ink-2: #151113; --vl-ink-3: #1d171a;
  --vl-wine: #74162a; --vl-wine-hi: #93203a; --vl-wine-deep: #3d0b17;
  --vl-brass: #b8925a; --vl-brass-hi: #d8b783; --vl-brass-line: rgba(184, 146, 90, .32); --vl-brass-faint: rgba(184, 146, 90, .14);
  --vl-paper: #ebe3d6; --vl-mute: #a39889; --vl-dim: #7b7166;
  --vl-display: 'Cormorant Garamond', 'Iowan Old Style', 'Palatino Linotype', Palatino, serif;
  --vl-text: 'Jost', 'Avenir Next', 'Segoe UI', sans-serif;
  --vl-col: 1120px; --vl-read: 760px;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0; color: var(--vl-paper); font: 400 16.5px/1.72 var(--vl-text); letter-spacing: .005em;
  background-color: var(--vl-ink);
  background-image: radial-gradient(1200px 600px at 10% -10%, rgba(116, 22, 42, .30), transparent 60%), radial-gradient(900px 500px at 110% 10%, rgba(61, 11, 23, .55), transparent 65%);
  background-repeat: no-repeat;
}
img { max-width: 100%; height: auto; }
a { color: var(--vl-brass-hi); text-decoration-thickness: 1px; text-underline-offset: 4px; }
a:hover { color: var(--vl-paper); }
h1, h2, h3, h4 { font-family: var(--vl-display); font-weight: 600; color: #f4ece0; line-height: 1.12; letter-spacing: .005em; }
h1 { font-size: clamp(2.5rem, 7vw, 4.4rem); margin: .1em 0 .35em; font-weight: 500; }
h1 em, h2 em { font-style: italic; color: var(--vl-brass-hi); font-weight: 500; }
h2 { font-size: clamp(1.75rem, 4vw, 2.5rem); margin: 0 0 .5em; font-weight: 500; }
h3 { font-size: 1.4rem; margin: 1.4em 0 .4em; }
p { margin: 0 0 1.05em; }
strong, b { font-weight: 600; color: #f4ece0; }
.vl-col { width: 100%; max-width: var(--vl-col); margin: 0 auto; padding: 0 16px; }
.vl-read { max-width: var(--vl-read); }
.vl-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.vl-note { font-size: .88rem; color: var(--vl-mute); }
.vl-kicker { font: 500 .74rem/1.4 var(--vl-text); letter-spacing: .26em; text-transform: uppercase; color: var(--vl-brass); margin: 0 0 .9em; }

/* ornement : filet laiton avec losange */
.vl-orn { display: flex; align-items: center; gap: 14px; color: var(--vl-brass); margin: 0 0 22px; }
.vl-orn::before, .vl-orn::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, var(--vl-brass-line)); }
.vl-orn::after { background: linear-gradient(270deg, transparent, var(--vl-brass-line)); }
.vl-orn i { width: 7px; height: 7px; border: 1px solid var(--vl-brass); transform: rotate(45deg); }

/* en-tête : monogramme centré, menu dessous */
.vl-head { border-bottom: 1px solid var(--vl-brass-line); background: rgba(13, 11, 12, .82); }
.vl-head-in { display: flex; flex-direction: column; align-items: center; padding: 18px 16px 0; }
.vl-mark { display: inline-flex; align-items: center; gap: 12px; color: #f4ece0; text-decoration: none; }
.vl-mark svg { width: 38px; height: 38px; flex: none; }
.vl-mark-t { display: flex; flex-direction: column; line-height: 1; }
.vl-mark-t b { font: 500 .78rem var(--vl-text); letter-spacing: .42em; color: var(--vl-brass); }
.vl-mark-t span { font: italic 500 1.55rem var(--vl-display); color: #f4ece0; margin-top: 4px; }
.vl-nav { display: flex; gap: 4px 26px; justify-content: center; flex-wrap: wrap; padding: 12px 0 12px; font-size: .82rem; letter-spacing: .14em; text-transform: uppercase; }
.vl-nav a { color: var(--vl-mute); text-decoration: none; padding: 4px 0; border-bottom: 1px solid transparent; }
.vl-nav a:hover, .vl-nav a[aria-current] { color: var(--vl-paper); border-bottom-color: var(--vl-brass); }
.vl-nav a.vl-nav-cta { color: var(--vl-brass-hi); }

/* boutons */
.vl-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 12px 26px; border: 1px solid var(--vl-brass); background: linear-gradient(180deg, var(--vl-wine-hi), var(--vl-wine)); color: #fbf4ea; font: 500 .86rem/1.2 var(--vl-text); letter-spacing: .16em; text-transform: uppercase; text-decoration: none; cursor: pointer; transition: background .2s, color .2s; }
.vl-btn:hover { background: var(--vl-wine-hi); color: #fff; box-shadow: 0 0 0 3px var(--vl-brass-faint); }
.vl-btn::after { content: '→'; font-family: var(--vl-display); font-size: 1.15rem; letter-spacing: 0; }
.vl-btn--line { background: transparent; color: var(--vl-brass-hi); }
.vl-btn--line:hover { background: var(--vl-brass-faint); color: var(--vl-paper); }

/* tête de page ville / guide */
.vl-mast { padding: 34px 0 40px; border-bottom: 1px solid var(--vl-brass-line); }
.vl-path { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0 0 26px; padding: 0; font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--vl-dim); }
.vl-path li + li::before { content: '/'; margin-right: 8px; color: var(--vl-brass-line); }
.vl-path a { color: var(--vl-mute); text-decoration: none; }
.vl-mast-grid { display: grid; gap: 30px; }
@media (min-width: 960px) { .vl-mast-grid { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); align-items: end; } }
.vl-lede { font-size: 1.12rem; line-height: 1.75; color: #e6dccd; max-width: 62ch; }
.vl-acts { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: center; margin-top: 26px; }
.vl-tag { font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: var(--vl-mute); border-left: 1px solid var(--vl-brass-line); padding-left: 12px; }

/* cartouche « ricerche » (Semrush) dans la tête */
.vl-plate { border: 1px solid var(--vl-brass-line); padding: 22px 22px 18px; background: linear-gradient(160deg, rgba(116, 22, 42, .22), rgba(21, 17, 19, .6)); position: relative; }
.vl-plate::before { content: ''; position: absolute; inset: 5px; border: 1px solid var(--vl-brass-faint); pointer-events: none; }
.vl-plate-n { font: 500 3.2rem/1 var(--vl-display); color: var(--vl-brass-hi); }
.vl-plate-l { font-size: .9rem; color: var(--vl-mute); margin: 6px 0 14px; }
.vl-plate ul { list-style: none; margin: 0; padding: 0; font-size: .88rem; }
.vl-plate li { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-top: 1px solid var(--vl-brass-faint); }
.vl-plate li span { color: var(--vl-mute); }

/* registre ISTAT : chiffres en bande */
.vl-ledger { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); border-top: 1px solid var(--vl-brass-line); border-left: 1px solid var(--vl-brass-line); margin: 8px 0 14px; }
.vl-ledger > div { border-right: 1px solid var(--vl-brass-line); border-bottom: 1px solid var(--vl-brass-line); padding: 18px 18px 16px; }
.vl-ledger dt { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: var(--vl-mute); margin-bottom: 8px; }
.vl-ledger dd { margin: 0; font: 500 2rem/1.1 var(--vl-display); color: #f4ece0; }
.vl-ledger dd small { display: block; font: 400 .82rem/1.4 var(--vl-text); color: var(--vl-dim); margin-top: 6px; }

/* sections */
.vl-sec { padding: 46px 0 8px; }
.vl-sec + .vl-sec { border-top: 1px solid var(--vl-brass-faint); }
.vl-sec-head { margin-bottom: 18px; }

/* lieux : rangées fines */
.vl-places { display: grid; gap: 22px; margin-top: 22px; }
@media (min-width: 860px) { .vl-places { grid-template-columns: 1fr 1fr; } }
.vl-shelf { border: 1px solid var(--vl-brass-line); background: rgba(21, 17, 19, .55); }
.vl-shelf h3 { margin: 0; padding: 14px 18px; font-size: 1.25rem; border-bottom: 1px solid var(--vl-brass-line); display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.vl-shelf h3 span { font: 400 .78rem var(--vl-text); letter-spacing: .12em; text-transform: uppercase; color: var(--vl-brass); }
.vl-shelf ol { list-style: none; margin: 0; padding: 0; }
.vl-shelf li { padding: 12px 18px; border-bottom: 1px solid var(--vl-brass-faint); display: grid; grid-template-columns: 1fr auto; gap: 2px 14px; }
.vl-shelf li:last-child { border-bottom: 0; }
.vl-pl-n { font-family: var(--vl-display); font-size: 1.15rem; font-weight: 600; color: #f4ece0; }
.vl-pl-km { font-size: .85rem; color: var(--vl-brass-hi); text-align: right; white-space: nowrap; }
.vl-pl-a { font-size: .84rem; color: var(--vl-dim); }
.vl-pl-r { font-size: .84rem; color: var(--vl-mute); text-align: right; white-space: nowrap; }
.vl-far { border-left: 2px solid var(--vl-wine-hi); padding: 6px 0 6px 16px; color: #e6dccd; }

/* encart Feticismoitalia */
.vl-offer { margin: 34px 0; border: 1px solid var(--vl-brass); padding: 28px 26px; background: linear-gradient(120deg, rgba(116, 22, 42, .45), rgba(13, 11, 12, .9) 70%); display: grid; gap: 18px; position: relative; }
.vl-offer::before { content: ''; position: absolute; inset: 6px; border: 1px solid var(--vl-brass-faint); pointer-events: none; }
@media (min-width: 760px) { .vl-offer { grid-template-columns: 1fr auto; align-items: center; } }
.vl-offer-t { font: 500 1.65rem/1.15 var(--vl-display); color: #f4ece0; margin: 0 0 6px; }
.vl-offer p:last-child { margin: 0; color: #d9cfc0; }
.vl-offer .vl-btn { position: relative; }

/* cartes « en direct » */
.vl-live { padding: 46px 0 30px; border-top: 1px solid var(--vl-brass-line); border-bottom: 1px solid var(--vl-brass-line); background: linear-gradient(180deg, rgba(61, 11, 23, .35), transparent); margin-top: 40px; }
.vl-live-top { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 16px; margin-bottom: 20px; }
.vl-live-top p { margin: 0; color: var(--vl-mute); max-width: 60ch; }
.vl-on { display: inline-flex; align-items: center; gap: 8px; font-size: .74rem; letter-spacing: .24em; text-transform: uppercase; color: var(--vl-brass-hi); }
.vl-on::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: #c2304d; box-shadow: 0 0 0 4px rgba(194, 48, 77, .25); }
.vl-cams { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (min-width: 700px) { .vl-cams { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.vl-cam { position: relative; display: block; aspect-ratio: 3 / 4; overflow: hidden; border: 1px solid var(--vl-brass-line); background: var(--vl-ink-3); text-decoration: none; color: #f4ece0; }
.vl-cam img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.9) contrast(1.05); transition: transform .4s; }
.vl-cam:hover img { transform: scale(1.04); }
.vl-cam-c { position: absolute; left: 0; right: 0; bottom: 0; padding: 30px 12px 12px; background: linear-gradient(180deg, transparent, rgba(13, 11, 12, .92)); }
.vl-cam-n { display: block; font: 600 1.1rem var(--vl-display); }
.vl-cam-g { display: block; font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; color: var(--vl-brass-hi); }
.vl-cam-ph { animation: vlpulse 1.6s ease-in-out infinite; }
@keyframes vlpulse { 50% { opacity: .55; } }
.vl-live-fallback { text-align: center; padding: 10px 0; }

/* consentement */
.vl-rules { display: grid; gap: 14px; margin: 18px 0 8px; }
@media (min-width: 760px) { .vl-rules { grid-template-columns: repeat(3, 1fr); } }
.vl-rule { border-top: 1px solid var(--vl-brass); padding-top: 12px; }
.vl-rule b { display: block; font: 600 1.2rem var(--vl-display); margin-bottom: 4px; }
.vl-rule p { font-size: .94rem; color: #d9cfc0; margin: 0; }

/* FAQ */
.vl-qa { border-bottom: 1px solid var(--vl-brass-line); }
.vl-qa summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 18px; align-items: center; padding: 16px 0; }
.vl-qa summary::-webkit-details-marker { display: none; }
.vl-qa summary h3 { margin: 0; font-size: 1.25rem; }
.vl-qa summary::after { content: '+'; font: 400 1.6rem/1 var(--vl-display); color: var(--vl-brass); transition: transform .2s; }
.vl-qa[open] summary::after { transform: rotate(45deg); }
.vl-qa p { margin: 0 0 18px; color: #e0d6c8; }

/* liens de villes */
.vl-towns { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 14px 0 0; padding: 0; }
.vl-towns a { display: inline-flex; gap: 8px; align-items: baseline; border: 1px solid var(--vl-brass-line); padding: 8px 14px; text-decoration: none; color: #f4ece0; font-size: .95rem; }
.vl-towns a:hover { border-color: var(--vl-brass); background: var(--vl-brass-faint); }
.vl-towns small { color: var(--vl-mute); font-size: .78rem; }

/* sources */
.vl-src { font-size: .88rem; color: var(--vl-mute); }
.vl-src table { width: 100%; border-collapse: collapse; margin: 10px 0 14px; }
.vl-src th, .vl-src td { text-align: left; padding: 9px 10px 9px 0; border-bottom: 1px solid var(--vl-brass-faint); vertical-align: top; }
.vl-src th { font-weight: 500; color: var(--vl-paper); letter-spacing: .06em; text-transform: uppercase; font-size: .74rem; }
.vl-scroll { overflow-x: auto; }

/* accueil */
.vl-home-hero { padding: 54px 0 46px; text-align: center; border-bottom: 1px solid var(--vl-brass-line); }
.vl-home-hero .vl-lede { margin: 0 auto; }
.vl-find { max-width: 520px; margin: 28px auto 0; position: relative; }
.vl-find input { width: 100%; min-height: 52px; border: 1px solid var(--vl-brass); background: rgba(13, 11, 12, .8); color: #f4ece0; font: 400 1rem var(--vl-text); padding: 12px 18px; border-radius: 0; }
.vl-find input::placeholder { color: var(--vl-dim); }
.vl-find input:focus { outline: 2px solid var(--vl-brass-faint); outline-offset: 2px; }
.vl-hits { position: absolute; z-index: 5; left: 0; right: 0; top: 100%; list-style: none; margin: 0; padding: 0; background: var(--vl-ink-2); border: 1px solid var(--vl-brass-line); border-top: 0; text-align: left; }
.vl-hits a, .vl-hits span { display: block; padding: 10px 18px; color: #f4ece0; text-decoration: none; }
.vl-hits a:hover { background: var(--vl-brass-faint); }
.vl-rank { width: 100%; border-collapse: collapse; }
.vl-rank td, .vl-rank th { padding: 10px 8px; border-bottom: 1px solid var(--vl-brass-faint); text-align: left; font-size: .95rem; }
.vl-rank th { font-weight: 500; font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--vl-mute); }
.vl-rank td:first-child { font-family: var(--vl-display); color: var(--vl-brass); width: 2.2em; }
.vl-rank a { color: #f4ece0; text-decoration: none; font-weight: 500; }
.vl-bar { height: 6px; background: var(--vl-brass-faint); min-width: 80px; }
.vl-bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--vl-wine-hi), var(--vl-brass)); }
.vl-guides { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); list-style: none; padding: 0; margin: 18px 0 0; }
.vl-guides a { display: block; height: 100%; border: 1px solid var(--vl-brass-line); padding: 18px; text-decoration: none; color: var(--vl-paper); }
.vl-guides a:hover { border-color: var(--vl-brass); background: var(--vl-brass-faint); }
.vl-guides b { display: block; font: 600 1.35rem var(--vl-display); color: #f4ece0; margin-bottom: 4px; }
.vl-guides span { font-size: .9rem; color: var(--vl-mute); }
.vl-region { border-top: 1px solid var(--vl-brass-line); }
.vl-region summary { cursor: pointer; padding: 14px 0; display: flex; justify-content: space-between; font: 600 1.3rem var(--vl-display); list-style: none; }
.vl-region summary::-webkit-details-marker { display: none; }
.vl-region summary span { font: 400 .8rem var(--vl-text); letter-spacing: .12em; text-transform: uppercase; color: var(--vl-mute); }
.vl-region .vl-towns { margin: 0 0 18px; }

/* guides : article */
.vl-article { padding-bottom: 20px; }
.vl-article h2 { margin-top: 1.6em; }
.vl-article ul, .vl-article ol { padding-left: 1.2em; }
.vl-article li { margin-bottom: .45em; }
.vl-article figure { margin: 30px 0; border: 1px solid var(--vl-brass-line); padding: 14px; background: rgba(21, 17, 19, .6); }
.vl-article figure svg, .vl-article figure img { display: block; width: 100%; height: auto; }
.vl-article figcaption { font-size: .84rem; color: var(--vl-mute); margin-top: 10px; }
.vl-article table { width: 100%; border-collapse: collapse; margin: 18px 0 24px; font-size: .94rem; }
.vl-article th, .vl-article td { border-bottom: 1px solid var(--vl-brass-faint); padding: 10px 10px 10px 0; text-align: left; vertical-align: top; }
.vl-article th { font-weight: 500; color: var(--vl-brass-hi); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; }
.vl-article blockquote { margin: 26px 0; padding: 4px 0 4px 20px; border-left: 2px solid var(--vl-brass); font: italic 500 1.3rem/1.5 var(--vl-display); color: #efe6d8; }
.vl-key { border: 1px solid var(--vl-brass-line); padding: 18px 22px; margin: 0 0 30px; background: rgba(116, 22, 42, .16); }
.vl-key p:last-child, .vl-key ul:last-child { margin-bottom: 0; }
.vl-key-t { font-size: .74rem; letter-spacing: .24em; text-transform: uppercase; color: var(--vl-brass); margin-bottom: 8px; }
.vl-toc { border-left: 1px solid var(--vl-brass-line); padding: 4px 0 4px 18px; margin: 0 0 30px; font-size: .95rem; }
.vl-toc ol { margin: 6px 0 0; padding-left: 1.1em; }
.vl-by { font-size: .84rem; color: var(--vl-dim); margin-top: 18px; }

/* pied de page */
.vl-foot { margin-top: 60px; border-top: 1px solid var(--vl-brass-line); padding: 36px 0 90px; font-size: .9rem; color: var(--vl-mute); }
.vl-foot-grid { display: grid; gap: 26px; }
@media (min-width: 820px) { .vl-foot-grid { grid-template-columns: 1.3fr 1fr 1fr; } }
.vl-foot h4 { font-size: 1.15rem; margin: 0 0 10px; }
.vl-foot ul { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 18px; }
.vl-foot li { margin-bottom: 6px; break-inside: avoid; }
.vl-foot a { color: var(--vl-mute); text-decoration: none; }
.vl-foot a:hover { color: var(--vl-paper); }
.vl-18 { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: 1px solid var(--vl-brass); font: 600 .95rem var(--vl-display); color: var(--vl-brass-hi); margin-right: 12px; flex: none; }
.vl-foot-18 { display: flex; align-items: flex-start; }

/* contrôle de l'âge : fenêtre centrée, masquée une fois confirmée */
.vl-gate { position: fixed; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(8, 6, 7, .78); backdrop-filter: blur(6px); }
.vl-ok .vl-gate { display: none; }
.vl-gate-box { max-width: 440px; border: 1px solid var(--vl-brass); background: var(--vl-ink-2); padding: 30px 26px; text-align: center; }
.vl-gate-box p { color: #e0d6c8; }
.vl-gate-box .vl-gate-t { font: 500 1.9rem/1.1 var(--vl-display); color: #f4ece0; }
.vl-gate-box .vl-btn::after { content: none; }
.vl-gate-out { display: block; margin-top: 14px; font-size: .85rem; color: var(--vl-mute); }

/* chiffres : capitales alignées (Cormorant a des chiffres elzéviriens par défaut) */
.vl-plate-n, .vl-ledger dd, .vl-rank td, .vl-pl-km, .vl-pl-r, .vl-plate li span { font-variant-numeric: lining-nums tabular-nums; }
