/* Salles et vue depuis votre place : la maquette, noir et blanc, une seule place allumée. Le tarif se lit à la densité du gris. Mobile d'abord. */
.vx{--c:var(--blanc);display:grid;gap:28px;min-width:0}
.vx-intro{margin:10px 0 16px;max-width:62ch}
.vx-grid{display:grid;gap:16px;min-width:0}

/* Écran : plan, vue 3D ou image fixe */
.vx-screen{position:relative;isolation:isolate;overflow:hidden;scroll-margin-top:84px;min-height:340px;height:min(112vw,74vh);margin-inline:calc(var(--gutter)*-1);background:var(--noir);border-block:1px solid var(--ligne)}
.vx-plan{position:absolute;inset:0;touch-action:pan-y;cursor:grab;outline-offset:-3px}
.vx-plan.is-zoomed{touch-action:none}
.vx-plan.is-drag{cursor:grabbing}
.vx-plan.is-wait{opacity:.45;transition:opacity .2s}
.vx-plan:focus-visible,.vx-three:focus-visible{outline:2px solid var(--blanc)}
.vx-svg{display:block;width:100%;height:100%;user-select:none;-webkit-user-select:none}

.vx-b{fill:var(--blanc);stroke:var(--noir);stroke-width:.6px;vector-effect:non-scaling-stroke;transition:fill-opacity .2s,fill .2s}
.vx-b.k0{fill-opacity:.8}.vx-b.k1{fill-opacity:.6}.vx-b.k2{fill-opacity:.42}.vx-b.k3{fill-opacity:.28}.vx-b.k4{fill-opacity:.17}
.vx-b.is-off{fill:var(--blanc);fill-opacity:.04;stroke:var(--ligne);pointer-events:none}
.vx-z{fill:var(--blanc);stroke:var(--noir);stroke-width:.6px;vector-effect:non-scaling-stroke;transition:fill-opacity .2s,fill .2s}
.vx-z.f0{fill-opacity:.34}.vx-z.f1{fill-opacity:.22}.vx-z.k0,.vx-z.k1,.vx-z.k2,.vx-z.k3,.vx-z.k4{fill-opacity:.3}
.vx-s{fill:var(--blanc)}
.vx-s--terrain{fill:rgba(245,244,240,.05);stroke:var(--gris-1);stroke-width:1px;vector-effect:non-scaling-stroke}
.vx-s--ring{fill:var(--blanc)}
.vx-svg.has-cat .vx-b:not(.is-off):not(.is-cat),.vx-svg.has-cat .vx-z:not(.is-cat){fill-opacity:.08}
.vx-b.is-on,.vx-z.is-on,.vx-b.is-cat.is-on{fill:var(--blanc);fill-opacity:1;stroke:var(--blanc)}
@media (hover:hover){.vx-b:not(.is-off):not(.is-on):hover,.vx-z:not(.is-on):hover{fill-opacity:1;stroke:var(--blanc)}}
.vx-l{font-family:var(--font-mono);font-size:var(--fs,11px);font-weight:500;text-anchor:middle;dominant-baseline:central;fill:var(--noir);pointer-events:none}
.vx-l--dim{fill:var(--blanc)}
.vx-l--stage{font-family:var(--font-display);font-weight:800;fill:var(--noir)}
.vx-l--terrain{fill:var(--blanc)}
.vx-svg[data-lod="0"] .lz1,.vx-svg[data-lod="0"] .lz2,.vx-svg[data-lod="0"] .lz3,.vx-svg[data-lod="1"] .lz2,.vx-svg[data-lod="1"] .lz3,.vx-svg[data-lod="2"] .lz3,.vx-l.is-gone{display:none}
.vx-r{fill:none;stroke:rgba(10,10,10,.34);stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}
.vx-r.is-on{stroke:var(--noir);stroke-width:4px}
.vx-p{fill:var(--noir);pointer-events:none}
.vx-p.is-on{fill:var(--blanc);stroke:var(--noir);stroke-width:2px;vector-effect:non-scaling-stroke}

.vx-now{position:absolute;left:10px;top:10px;z-index:2;max-width:calc(100% - 170px);padding:6px 10px;border-radius:8px;background:var(--noir);border:1px solid var(--ligne);font-family:var(--font-mono);font-size:12px;line-height:1.3;pointer-events:none}
.vx-notice{position:absolute;left:10px;bottom:10px;z-index:2;margin:0;padding:4px 8px;border-radius:6px;background:var(--noir);color:var(--gris-1);font-family:var(--font-mono);font-size:11px;line-height:1.3;pointer-events:none}
.vx-notice--plain{position:static;display:inline-block;padding:0;margin-top:10px;background:none}
.vx-mode{position:absolute;top:10px;right:10px;z-index:3;display:flex;padding:3px;border-radius:999px;background:var(--noir);border:1px solid var(--ligne)}
.vx-mode button{min-height:38px;padding:0 13px;border-radius:999px;font-size:13px;font-weight:500;transition:background .4s var(--ease),color .4s var(--ease)}
.vx-mode button[aria-pressed=true]{background:var(--blanc);color:var(--noir)}
.vx-zoom{position:absolute;right:10px;bottom:10px;z-index:3;display:grid;gap:6px}
.vx-zoom button{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--noir);border:1px solid var(--ligne);font-family:var(--font-mono);font-size:20px;line-height:1}
.vx-zoom button:hover{border-color:var(--blanc)}
.vx-zoom svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6}
.vx-mode button:focus-visible,.vx-zoom button:focus-visible,.vx-chip:focus-visible,.vx-cfg button:focus-visible{outline:2px solid var(--blanc);outline-offset:2px}

/* Vue 3D */
.vx-three{position:absolute;inset:0;background:var(--noir);touch-action:none;cursor:grab;outline-offset:-3px}
.vx-three.is-fixed{cursor:default;touch-action:auto}
.vx-three.is-drag{cursor:grabbing}
.vx-three canvas{display:block;width:100%;height:100%;transition:opacity .28s}
.vx-three.is-cut canvas{opacity:.15}
.vx-three::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 80% 76% at 50% 46%,transparent 58%,rgba(10,10,10,.4) 100%);pointer-events:none}
.vx-maq{position:absolute;z-index:1;border:1px solid var(--gris-2);pointer-events:none}
.vx-wait{position:absolute;inset:0;z-index:1;display:grid;place-items:center;padding:20px;font-family:var(--font-mono);font-size:13px;text-align:center;color:var(--gris-1)}
.vx-hint{position:absolute;left:50%;bottom:46px;z-index:1;padding:6px 12px;border-radius:999px;background:var(--noir);font-family:var(--font-mono);font-size:12px;white-space:nowrap;transform:translateX(-50%);pointer-events:none;transition:opacity .4s}
.vx-hint.is-off{opacity:0}
.vx-fixed{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vx-fixed-note{position:absolute;left:10px;right:10px;bottom:40px;z-index:1;margin:0;padding:6px 10px;border-radius:8px;background:var(--noir);font-family:var(--font-mono);font-size:12px;line-height:1.35}

/* Colonne de choix */
.vx-side{display:grid;gap:14px;align-content:start;min-width:0}
.vx-cfg{display:flex;flex-wrap:wrap;gap:6px}
.vx-cfg button{min-height:42px;padding:6px 14px;border:1px solid var(--ligne);border-radius:999px;font-size:14px;font-weight:500;transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease)}
.vx-cfg button:hover{border-color:var(--gris-1)}
.vx-cfg button[aria-pressed=true]{background:var(--blanc);border-color:var(--blanc);color:var(--noir)}
.vx-legend{display:flex;gap:6px;list-style:none;margin:0 calc(var(--gutter)*-1);padding:2px var(--gutter);font-size:14px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.vx-legend::-webkit-scrollbar{display:none}
.vx-legend li{flex:none;display:inline-flex;align-items:center;gap:7px}
html.no-js .vx-legend li{padding:4px 10px 4px 0}
.vx-chip{display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:6px 13px;border:1px solid var(--ligne);border-radius:999px;font-size:14px;font-weight:500;transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease)}
.vx-chip:hover{border-color:var(--gris-1)}
.vx-chip[aria-pressed=true]{background:var(--blanc);border-color:var(--blanc);color:var(--noir)}
.vx-dot{flex:none;display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--blanc)}
.vx-dot.k0{opacity:.8}.vx-dot.k1{opacity:.6}.vx-dot.k2{opacity:.42}.vx-dot.k3{opacity:.28}.vx-dot.k4{opacity:.17}
.vx-dot.f0{opacity:.34}.vx-dot.f1{opacity:.22}
.vx-chip[aria-pressed=true] .vx-dot{background:var(--noir)}

.vx-panel{display:grid;gap:12px;min-width:0}
.vx-badge{justify-self:start;max-width:100%;padding:6px 12px;border-radius:999px;background:var(--blanc);color:var(--noir);font-family:var(--font-mono);font-size:12px;font-weight:500;line-height:1.3}
.vx-badge.is-idle{background:none;padding-inline:0;color:var(--gris-1);font-weight:400}
.vx-fields{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:8px}
.vx-field{display:grid;gap:4px;min-width:0;font-family:var(--font-mono);font-size:12px;color:var(--gris-1)}
.vx-field select{width:100%;min-height:46px;padding:9px 8px;border:1px solid var(--ligne);border-radius:10px;background:var(--noir);color:var(--blanc);font-family:var(--font-body);font-size:16px}
.vx-field select:disabled{opacity:.5}
.vx-field select:focus-visible{outline:2px solid var(--blanc);outline-offset:1px}
.vx-stats{display:grid;grid-template-columns:repeat(3,auto);justify-content:space-between;gap:8px;margin:2px 0;padding:10px 0;border-block:1px solid var(--ligne)}
.vx-stats dt{font-family:var(--font-mono);font-size:11px;color:var(--gris-1)}
.vx-stats dd{margin:2px 0 0;font-family:var(--font-mono);font-weight:500;font-size:20px;line-height:1.05;letter-spacing:-.03em;white-space:nowrap}
.vx-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.vx-actions .btn{min-height:50px;padding:10px;font-size:14px;white-space:normal;text-align:center}
.vx-panel .btn:disabled{opacity:.45;cursor:not-allowed}
.vx-panel .btn:disabled:hover{background:transparent;border-color:currentColor;color:inherit}
.btn[data-vshare].is-busy{position:relative;color:transparent}
.btn[data-vshare].is-busy::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px;border:2px solid var(--ligne);border-top-color:var(--blanc);border-radius:50%;animation:vxSpin .8s linear infinite}
@keyframes vxSpin{to{transform:rotate(360deg)}}
.vx-status{min-height:18px;font-family:var(--font-mono);font-size:12px;line-height:1.4;color:var(--gris-1);overflow-wrap:anywhere}
.vx-status.is-bad{color:var(--blanc);text-decoration:underline;text-underline-offset:3px}
.vx-card{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:start;padding:10px;border:1px solid var(--ligne);border-radius:10px}
.vx-card img{display:block;width:96px;height:96px;border-radius:6px;background:var(--ligne);object-fit:cover}
.vx-card__links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.vx-card__links .btn{min-height:44px;padding:8px;font-size:13px}
.vx-card__links .cal-link,.vx-card__links [data-card-share]{grid-column:1/-1}
.vx-ask{width:100%}

/* Comparer les vues : l'image entière, le médaillon de la maquette compris */
.vx-cmp{display:grid;gap:10px;padding-top:20px;border-top:1px solid var(--ligne)}
.vx-cmp .evp-note{margin:0}
.vx-cmp__grid{display:grid;gap:18px;margin-top:4px}
.vx-slot{display:grid;gap:8px;align-content:start;margin:0;min-width:0}
.vx-slot__view{position:relative;aspect-ratio:8/5;overflow:hidden;border-radius:10px;background:var(--ligne)}
.vx-slot__view img{display:block;width:100%;height:100%;object-fit:cover}
.vx-slot__view .vx-notice{left:6px;bottom:6px;font-size:10px}
.vx-slot.is-wait .vx-slot__view img{opacity:.35}
.vx-slot figcaption{display:grid;gap:4px;font-family:var(--font-mono);font-size:12px;line-height:1.35;color:var(--gris-1);min-width:0}
.vx-slot figcaption b{font-family:var(--font-display);font-weight:800;font-size:18px;line-height:1.15;letter-spacing:-.02em;color:var(--blanc);overflow-wrap:anywhere}
.vx-slot .btn{width:100%;min-height:46px;padding:8px;font-size:14px}
.vx-slot .btn:disabled{opacity:.45;cursor:not-allowed}

/* Blocs de la page */
.evp-vue{display:grid;gap:36px;min-width:0}
.vx-notes{display:grid;gap:0;list-style:none;margin:14px 0 10px;padding:0}
.vx-notes li{padding:11px 0;border-top:1px solid var(--ligne);font-size:16px;line-height:1.45;color:var(--gris-1)}
.vx-notes b{display:block;margin-bottom:2px;font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--blanc)}
.vx-others{margin-top:14px}
.vx-hype{display:grid;gap:12px;justify-items:start;padding:24px 0 0;border-top:1px solid var(--ligne)}
.vx-hype__t{font-family:var(--font-display);font-weight:800;font-size:clamp(30px,5vw,54px);line-height:1.02;letter-spacing:-.035em}
.vx-hype__t .serif{display:block}
.vx-hype .evp-cta{width:min(100%,420px)}

/* Accueil : « Voir ma place » */
.vxh .vx{margin-top:24px}
.vxh__head{display:grid;gap:20px}
.vxh__pick{display:grid;gap:6px;min-width:0;font-family:var(--font-mono);font-size:12px;color:var(--gris-1)}
.vxh__pick select{width:100%;min-height:50px;padding:10px 12px;border:1px solid var(--ligne);border-radius:10px;background:var(--noir);color:var(--blanc);font-family:var(--font-body);font-size:16px}
.vxh__pick select:focus-visible{outline:2px solid var(--blanc);outline-offset:1px}
.vxh__more{margin-top:18px}

/* Pages des salles */
.sallep__body{display:grid;gap:40px;padding-top:24px;padding-bottom:64px}
.sallep__infos{display:grid;gap:32px}
.sallep__addr{margin-top:12px;font-family:var(--font-serif);font-style:italic;font-size:clamp(22px,2.8vw,28px);line-height:1.18}
.vx-access{display:grid;gap:0;list-style:none;margin:14px 0 0;padding:0}
.vx-access li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;align-items:baseline;padding:11px 0;border-top:1px solid var(--ligne);font-size:16px;line-height:1.4}
.vx-access span{font-family:var(--font-mono);font-size:12px;color:var(--gris-1)}
.sallep__ev{margin-top:16px}
.vr-list{display:grid;gap:12px;list-style:none;margin:20px 0 72px;padding:0}
.vr{min-width:0}
.vr__link{position:relative;isolation:isolate;display:grid;gap:14px;overflow:hidden;padding:16px;border:1px solid var(--ligne);border-radius:16px;background:var(--noir);transition:border-color .5s var(--ease)}
.vr__link:hover{border-color:var(--gris-1)}
.vr__link:focus-visible{outline:2px solid var(--blanc);outline-offset:2px}
.vr__plan{display:block;height:240px}
.vr__plan .vx-svg{transition:transform .9s var(--ease)}
.vr__link:hover .vx-svg{transform:scale(1.03)}
.vr__name{font-family:var(--font-display);font-weight:800;font-size:clamp(28px,7vw,44px);line-height:1.02;letter-spacing:-.035em}
.vr__city{margin-top:4px;font-family:var(--font-serif);font-style:italic;font-size:24px;line-height:1.15}
.vr__meta{margin-top:6px;font-family:var(--font-mono);font-size:13px;line-height:1.4;color:var(--gris-1)}
.vr__meta b{font-weight:500;color:var(--blanc)}

@media (min-width:640px){
  .vx-screen{margin-inline:0;border:1px solid var(--ligne);border-radius:12px;height:min(70vw,76vh)}
  .vx-now{left:12px;top:12px}
  .vx-legend{flex-wrap:wrap;margin-inline:0;padding-inline:0;overflow:visible}
  .vx-cmp__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .sallep__infos{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}
  .vr-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:1024px){
  .vx-grid{grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
  .vx-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vx-field--block{grid-column:1/-1}
  .vx-screen{height:min(46vw,76vh)}
  .vxh__head{grid-template-columns:minmax(0,1fr) 420px;align-items:end;gap:40px}
  .sallep__body{padding-top:32px;padding-bottom:80px}
  .vr-list{margin-top:28px}
  .vr__link{grid-template-columns:minmax(0,1fr) 260px;align-items:center;padding:20px;min-height:280px}
  .vr__plan{order:2;height:240px}
}
@media (prefers-reduced-motion:reduce){
  .vx-b,.vx-z,.vx-three canvas,.vx-hint,.vr__link,.vr__plan .vx-svg{transition:none}
  .vr__link:hover .vx-svg{transform:none}
  .btn[data-vshare].is-busy::after{animation-duration:2.4s}
}
