/* Le Clos Amarante - V13.28 : maquette 3D de la maison (inc/fx-plan3d.php, js/fx-3d.js). */
.ca-3d{--c3-blanc:#FBF8F2}
html.has-ca-3d section.ca-plan{display:none}            /* la 3D remplace le plan 2D quand elle tourne */
.ca-3d .c3-head{display:grid;gap:10px;justify-items:center;margin-bottom:26px}
.ca-3d .c3-head h2{margin:0}
.ca-3d .c3-intro{color:var(--gris);margin:0;max-width:56ch}
.ca-3d .c3-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
@media (max-width:900px){.ca-3d .c3-grid{grid-template-columns:minmax(0,1fr)}}
.ca-3d .c3-stage{position:relative;background:var(--c3-blanc);border:1px solid var(--creme-2);aspect-ratio:4/3.1;max-width:100%;overflow:hidden;outline:none}
.ca-3d .c3-stage:focus-visible{box-shadow:0 0 0 2px var(--or)}
@media (max-width:600px){.ca-3d .c3-stage{aspect-ratio:3/4}}
.ca-3d .c3-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
/* V13.88 : tant que la maquette n'est pas dessinee, un discret message d'attente (et non un cadre vide) */
.ca-3d.is-3d:not(.c3-ready) .c3-stage::after{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:1.5px solid var(--creme-2);border-top-color:var(--amarante);animation:c3spin .9s linear infinite}
@keyframes c3spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ca-3d.is-3d:not(.c3-ready) .c3-stage::after{animation-duration:2.4s}}
.ca-3d .c3-stage canvas.hot{cursor:pointer}
.ca-3d .c3-floors{position:absolute;top:14px;left:14px;right:14px;display:flex;gap:4px;flex-wrap:wrap;z-index:2}
.ca-3d .c3-floors button{font:500 11px var(--sans);letter-spacing:.22em;text-transform:uppercase;border:0;background:rgba(251,248,242,.88);color:var(--gris);padding:9px 12px;cursor:pointer;border-bottom:1px solid transparent}
.ca-3d .c3-floors button[aria-pressed="true"]{color:var(--amarante);border-bottom-color:var(--amarante)}
.ca-3d .c3-spin{position:absolute;bottom:12px;right:14px;display:flex;gap:6px;z-index:2}
.ca-3d .c3-spin button{width:40px;height:40px;border-radius:50%;border:1px solid var(--creme-2);background:rgba(251,248,242,.92);color:var(--encre);font-size:18px;cursor:pointer;display:grid;place-items:center}
.ca-3d .c3-spin button:hover{border-color:var(--or)}
.ca-3d button:focus-visible{outline:2px solid var(--or);outline-offset:2px}
.ca-3d .c3-hint{position:absolute;bottom:14px;left:14px;right:110px;font-size:12px;color:var(--taupe);letter-spacing:.04em;z-index:2;pointer-events:none}
.ca-3d .c3-labels{position:absolute;inset:0;pointer-events:none;z-index:1}
.ca-3d .lab{position:absolute;transform:translate(-50%,-100%);font-family:var(--serif);font-style:italic;font-weight:500;font-size:15px;color:var(--encre);white-space:nowrap;text-shadow:0 0 6px var(--c3-blanc),0 0 3px var(--c3-blanc);transition:opacity .25s,color .2s}
.ca-3d .lab.on{color:var(--amarante);font-size:17px}
.ca-3d .lab.dim{opacity:0}
.ca-3d .c3-card{background:var(--c3-blanc);border:1px solid var(--creme-2);display:grid}
.ca-3d .c3-ph{aspect-ratio:4/3;background:var(--creme-2);display:grid;place-items:center;overflow:hidden}
.ca-3d .c3-ph img{width:100%;height:100%;object-fit:cover;display:block}
.ca-3d .c3-ph svg{width:84px;height:84px;stroke:var(--taupe);fill:none;stroke-width:1.2}
.ca-3d .c3-txt{padding:18px 20px 22px;display:grid;gap:6px}
.ca-3d .c3-et{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--amarante)}
.ca-3d .c3-nm{font-family:var(--serif);font-style:italic;font-weight:500;font-size:30px;line-height:1.1}
.ca-3d .c3-nb{font-size:14px;color:var(--gris)}
.ca-3d .c3-open{justify-self:start;margin-top:8px;font:500 12px var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--amarante);background:none;border:0;border-bottom:1px solid var(--amarante);padding:6px 0;cursor:pointer}
.ca-3d .c3-open[hidden]{display:none}
/* V13.32 : pictogramme unique « 360° » */
.ca-3d .c3-rot{position:absolute;right:14px;bottom:12px;z-index:2;width:62px;height:62px;border-radius:50%;border:1px solid var(--creme-2);background:rgba(251,248,242,.94);color:var(--amarante);cursor:pointer;display:grid;place-items:center;padding:6px;box-shadow:0 6px 18px -12px rgba(44,38,34,.5);transition:border-color .2s,transform .2s}
.ca-3d .c3-rot:hover{border-color:var(--or);transform:scale(1.05)}
.ca-3d .c3-rot svg{width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ca-3d .c3-rot .c3-cube{stroke:var(--encre);stroke-width:1.3}
.ca-3d .c3-rot text{fill:var(--encre);stroke:none;font:600 8.5px var(--sans);letter-spacing:.06em}
.ca-3d .c3-rot .c3-orb{transform-origin:24px 31px;animation:c3-orb 2.6s ease-in-out infinite}
.ca-3d.c3-used .c3-rot .c3-orb{animation:none}
@keyframes c3-orb{0%,100%{transform:rotate(0)}50%{transform:rotate(-14deg)}}
.ca-3d .c3-spin,.ca-3d .c3-hint{display:none}
@media (prefers-reduced-motion:reduce){.ca-3d .lab{transition:none}.ca-3d .c3-rot .c3-orb{animation:none}}
/* V13.36 : vol de la camera jusqu'a la photo (la toile 3D passe en plein ecran pendant le vol) */
.c3-fly{position:fixed;inset:0;z-index:100001;pointer-events:none;overflow:hidden}
.c3-fly[hidden]{display:none}
.c3-fly canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.c3-fly-img{position:absolute;object-fit:cover;opacity:0;will-change:transform,opacity} /* V13.85 : glisse en transform */
.c3-fly-img:not([src]){display:none}
html.c3-lock,html.c3-lock body{overflow:hidden}
.ca-3d.c3-flying .c3-labels,.ca-3d.c3-flying .c3-rot{visibility:hidden}
/* V13.39 : visite guidee + jour / nuit */
.ca-3d .c3-stage{transition:background-color .6s linear}
.ca-3d .c3-modes{position:absolute;left:14px;bottom:14px;z-index:2;display:flex;gap:8px;align-items:center}
.ca-3d .c3-tour,.ca-3d .c3-dn{height:44px;border-radius:999px;border:1px solid var(--creme-2);background:rgba(251,248,242,.94);color:var(--encre);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 6px 18px -12px rgba(44,38,34,.5);transition:background .3s,color .3s,border-color .3s}
.ca-3d .c3-tour{padding:0 18px 0 14px;font:500 11px var(--sans);letter-spacing:.2em;text-transform:uppercase}
.ca-3d .c3-tour svg{width:14px;height:14px;fill:var(--amarante)}
.ca-3d .c3-tour:hover{border-color:var(--amarante);color:var(--amarante)}
.ca-3d .c3-dn{width:44px;padding:0}
.ca-3d .c3-dn svg{width:20px;height:20px;fill:none;stroke:var(--or);stroke-width:1.7;stroke-linecap:round}
.ca-3d .c3-dn .c3-moon{display:none;fill:#E8D9B8;stroke:none}
.ca-3d.is-night .c3-dn .c3-sun{display:none}.ca-3d.is-night .c3-dn .c3-moon{display:block}
.ca-3d.is-night .c3-tour,.ca-3d.is-night .c3-dn,.ca-3d.is-night .c3-rot,.ca-3d.is-night .c3-floors button{background:rgba(29,34,48,.86);border-color:rgba(232,217,184,.22);color:#EDE6D8}
.ca-3d.is-night .c3-floors button[aria-pressed="true"]{color:#E8C98A;border-bottom-color:#E8C98A}
.ca-3d.is-night .c3-rot text{fill:#EDE6D8}.ca-3d.is-night .c3-rot .c3-cube{stroke:#EDE6D8}
.ca-3d.is-night .lab{color:#F4EBDC;text-shadow:0 0 6px #1D2230,0 0 3px #1D2230}
.ca-3d.is-night .lab.on{color:#F0C27A}
.ca-3d.c3-flying .c3-modes{visibility:hidden}
.c3-tour-ui{position:absolute;inset:auto 0 0 0;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:0 max(24px,env(safe-area-inset-right)) max(26px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));pointer-events:none;z-index:3;
  background:linear-gradient(to top,rgba(14,10,8,.55),rgba(14,10,8,0));padding-top:90px}
.c3-tour-ui[hidden]{display:none}
.c3-tour-cap{display:grid;gap:4px;color:#F6F1E7}
.c3-tour-et{font:400 11px var(--sans);letter-spacing:.26em;text-transform:uppercase;color:#E8C98A}
.c3-tour-nm{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(26px,3.4vw,40px);line-height:1.05;text-shadow:0 2px 14px rgba(0,0,0,.35)}
.c3-tour-dots{display:flex;gap:5px;margin-top:8px}
.c3-tour-dots s{display:block;width:18px;height:2px;background:rgba(246,241,231,.3);text-decoration:none}
.c3-tour-dots s.done{background:rgba(232,201,138,.6)}.c3-tour-dots s.on{background:#E8C98A}
.c3-tour-x{pointer-events:auto;height:42px;padding:0 18px;border-radius:999px;border:1px solid rgba(246,241,231,.35);background:rgba(20,15,12,.45);color:#F6F1E7;font:500 11px var(--sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.c3-tour-x:hover{background:#9E1B32;border-color:#9E1B32}
.c3-fly-img{transform-origin:50% 55%}

/* V13.40 : ciel de scene en degrade (couleurs poussees par js/fx-3d.js : --c3-s1 haut, --c3-s2 milieu, --c3-s3 bas).
   Valeurs par defaut = jour. Pas de transition CSS : le JS interpole deja, une transition ajouterait du retard. */
.ca-3d .c3-stage{--c3-s1:#F3EEE6;--c3-s2:#F8F4EC;--c3-s3:#FBF8F2;transition:none;background-color:var(--c3-s2);
  background-image:linear-gradient(180deg,var(--c3-s1) 0%,var(--c3-s2) 52%,var(--c3-s3) 100%)}
/* pendant le vol plein ecran, le meme ciel derriere la maquette (le style en ligne ne pose qu'une couleur plate) */
.c3-fly{--c3-s1:#F3EEE6;--c3-s2:#F8F4EC;--c3-s3:#FBF8F2;background-image:linear-gradient(180deg,var(--c3-s1) 0%,var(--c3-s2) 52%,var(--c3-s3) 100%)!important}
/* passage jour / nuit de l'interface : fondu lent plutot qu'une bascule */
.ca-3d .c3-tour,.ca-3d .c3-dn,.ca-3d .c3-rot,.ca-3d .c3-floors button{transition:background-color .9s ease,color .9s ease,border-color .9s ease,transform .2s}
.ca-3d .c3-rot text,.ca-3d .c3-rot .c3-cube{transition:fill .9s ease,stroke .9s ease}
/* soleil / lune : fondu enchaine avec une demi-rotation, au lieu d'un remplacement sec */
.ca-3d .c3-dn{position:relative}
.ca-3d .c3-dn .c3-sun,.ca-3d .c3-dn .c3-moon{display:block;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;transition:opacity .7s ease,transform .9s cubic-bezier(.4,0,.2,1)}
.ca-3d .c3-dn .c3-moon{opacity:0;transform:rotate(-70deg) scale(.6)}
.ca-3d.is-night .c3-dn .c3-sun{display:block;opacity:0;transform:rotate(70deg) scale(.6)}
.ca-3d.is-night .c3-dn .c3-moon{display:block;opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.ca-3d .c3-dn .c3-sun,.ca-3d .c3-dn .c3-moon{transition:opacity .3s}}
