/* Technibat — explorateur « maison en coupe » (v1.5) */
.tb-house--photo{--cold:.7;--hot:0;--heat:1;--cool:0;--snow:.6;--sun:.2;--f:.13;--thc:#4FA3FF}
.tb-house--photo[data-mode=confort]{--thc:#7FD39A}
.tb-house--photo[data-mode=ete]{--thc:#FF7A2E}
.tb-house--photo .tb-stage{aspect-ratio:1680/944;background:#BFD6EA}
.tbm-par{position:absolute;inset:-1.5%;transform:translate3d(var(--px,0),var(--py,0),0);transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.tbm-photo{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill;filter:saturate(calc(1 - var(--cold) * .32)) brightness(calc(1 - var(--cold) * .04 + var(--hot) * .03))}
.tbm-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}

/* Calques pilotés par le thermomètre */
.tbm-l{transition:opacity .35s linear}
.tbm-out-cold{opacity:calc(var(--cold) * .34)}
.tbm-out-hot{opacity:calc(var(--hot) * .2)}
.tbm-in-warm{opacity:calc(var(--heat) * .15)}
.tbm-in-cool{opacity:calc(var(--cool) * .18)}
.tbm-sun{opacity:calc(var(--hot) * .9)}
.tbm-snow{opacity:calc(var(--snow) * .95)}
.tbm-iso-w{opacity:calc(var(--heat) * .95)}
.tbm-iso-c{opacity:calc(var(--cool) * .95)}
.tbm-iso{animation:tbmBreath 2.8s ease-in-out infinite}
@keyframes tbmBreath{0%,100%{stroke-opacity:.55}50%{stroke-opacity:1}}
.tbm-hin-w,.tbm-hout-w{opacity:var(--heat)}
.tbm-hin-c,.tbm-hout-c{opacity:var(--cool)}
.tbm-heat{opacity:var(--heat)}
.tbm-fanwrap{opacity:calc(var(--heat) * .55)}
.tbm-clim{opacity:var(--cool)}
.tbm-f-pac,.tbm-tr-pac{opacity:var(--heat)}
.tbm-f-clim,.tbm-tr-clim{opacity:var(--cool)}
.tbm-f-sun{opacity:calc(.45 + var(--sun) * .55)}

/* Flux animés : petits points qui avancent le long des trajets */
.tbm-flow{stroke-dasharray:1 18;animation:tbmFlow .9s linear infinite}
.tbm-flow-h{stroke-dasharray:2 20;animation-duration:1.1s}
.tbm-flow-c{stroke-dasharray:9 14;animation:tbmFlowC 1.5s linear infinite}
@keyframes tbmFlow{to{stroke-dashoffset:-19}}
@keyframes tbmFlowC{to{stroke-dashoffset:-23}}
.tbm-hub{transform-box:fill-box;transform-origin:center;animation:tbmHub 1.8s ease-in-out infinite;opacity:.85}
@keyframes tbmHub{50%{transform:scale(1.35);opacity:.45}}
.tbm-fan{transform-box:view-box;transform-origin:1217px 723px;animation:tbmSpin .6s linear infinite}
@keyframes tbmSpin{to{transform:rotate(360deg)}}

/* Reflets et lac */
.tbm-sheen{animation:tbmSheen 8s ease-in-out infinite}
.tbm-sheen-2{animation-delay:3.2s;animation-duration:11s}
@keyframes tbmSheen{0%{transform:translateX(0)}55%,100%{transform:translateX(2300px)}}
.tbm-spark circle{opacity:0;animation:tbmSpark 3.4s ease-in-out infinite}
.tbm-spark circle:nth-child(2){animation-delay:.6s}.tbm-spark circle:nth-child(3){animation-delay:1.3s}.tbm-spark circle:nth-child(4){animation-delay:2s}
.tbm-spark circle:nth-child(5){animation-delay:.9s}.tbm-spark circle:nth-child(6){animation-delay:1.8s}.tbm-spark circle:nth-child(7){animation-delay:2.6s}
@keyframes tbmSpark{0%,100%{opacity:0}45%{opacity:.9}}

/* Zones survolables */
.tbm-zones .tb-z{pointer-events:all;opacity:0;filter:none!important;transition:opacity .25s;cursor:pointer}
.tbm-zones .tb-z.is-on{opacity:1}

/* Pastilles : halo pulsé */
.tb-house--photo .tb-dot-ring{position:relative}
.tb-house--photo .tb-dot-ring::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:2px solid rgba(255,178,94,.85);animation:tbmPulse 2.4s ease-out infinite}
.tb-house--photo .tb-dot:nth-child(2n) .tb-dot-ring::after{animation-delay:.8s}
.tb-house--photo .tb-dot:nth-child(3n) .tb-dot-ring::after{animation-delay:1.6s}
@keyframes tbmPulse{0%{transform:scale(.7);opacity:.95}80%,100%{transform:scale(2.2);opacity:0}}
.tb-house--photo .tb-dot-ring{box-shadow:0 0 0 4px rgba(255,255,255,.55),0 0 16px rgba(240,138,28,.9)}

/* Neige */
.tbm-flakes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}

/* Thermomètre */
.tbm-thermo{position:absolute;z-index:4;right:2.2%;top:5%;height:47%;width:62px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 0 12px;border-radius:999px;background:rgba(7,21,42,.62);border:1px solid rgba(255,255,255,.22);box-shadow:0 18px 40px -18px rgba(0,0,0,.65);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;user-select:none;-webkit-user-select:none}
.tbm-th-read{margin:0;font:800 1.05rem/1 var(--tb-head,Montserrat,sans-serif);letter-spacing:-.02em;white-space:nowrap}
.tbm-th-u{font-size:.62em;font-weight:700;margin-left:1px;color:#C9D5E4}
.tbm-th-track{position:relative;flex:1;width:14px;border-radius:7px;background:linear-gradient(to top,rgba(47,134,255,.35),rgba(234,242,247,.25) 52%,rgba(255,90,31,.35));cursor:ns-resize;touch-action:none;outline:none}
.tbm-th-track::before{content:"";position:absolute;inset:-6px -18px}
.tbm-th-fill{position:absolute;left:0;right:0;bottom:0;height:calc(var(--f) * 100%);border-radius:7px;background:linear-gradient(to top,#2F86FF,#9BD3FF 30%,#EAF2F7 52%,#7FD39A 64%,#FFC266 78%,#FF5A1F);background-size:100% calc(100% / max(var(--f), .02));background-position:bottom}
.tbm-th-knob{position:absolute;left:50%;top:calc((1 - var(--f)) * 100%);width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:#fff;border:4px solid var(--thc);box-shadow:0 4px 14px rgba(0,0,0,.45);transition:border-color .3s}
.tbm-th-track:focus-visible .tbm-th-knob{outline:3px solid #FFB25E;outline-offset:3px}
.tbm-th-tick{position:absolute;right:calc(100% + 24px);transform:translateY(-50%);white-space:nowrap;font:700 .66rem/1 var(--tb-head,Montserrat,sans-serif);letter-spacing:.06em;text-transform:uppercase;color:#fff;background:rgba(7,21,42,.62);padding:5px 9px;border-radius:999px;pointer-events:none}
.tbm-th-t1{top:11.1%}.tbm-th-t2{top:33.3%}.tbm-th-t3{top:88.9%}
.tbm-th-bulb{width:28px;height:28px;border-radius:50%;background:var(--thc);box-shadow:0 0 0 4px rgba(255,255,255,.18),0 0 18px var(--thc);transition:background .3s,box-shadow .3s}

/* Légende sous la maison */
.tbm-cap{grid-area:cap;background:rgba(11,29,55,.6);border:1px solid var(--tb-line,rgba(255,255,255,.12));border-radius:14px;padding:14px 18px}
.tbm-cap-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 6px}
.tbm-cap-mode{font:700 .78rem/1 var(--tb-head,Montserrat,sans-serif);text-transform:uppercase;letter-spacing:.08em;color:#07152A;background:var(--thc);padding:6px 11px;border-radius:999px;transition:background .3s}
.tbm-cap-t{font:700 1rem/1 var(--tb-head,Montserrat,sans-serif);color:#fff}
.tbm-th-auto{margin-left:auto;border:1px solid rgba(255,255,255,.22);background:transparent;color:#DCE5F0;border-radius:999px;padding:6px 12px;font:600 .74rem var(--tb-head,Montserrat,sans-serif);cursor:pointer;min-height:32px}
.tbm-th-auto:hover{border-color:#F08A1C;color:#fff}
.tbm-cap-txt{margin:0 0 10px;color:#C9D5E4;font-size:.97rem;line-height:1.55;min-height:3.1em}
.tbm-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font:600 .76rem var(--tb-head,Montserrat,sans-serif);color:#B9C7D8}
.tbm-legend li{display:flex;align-items:center;gap:7px}
.tbm-legend li::before{content:"";width:18px;height:4px;border-radius:2px;background:repeating-linear-gradient(90deg,currentColor 0 3px,transparent 3px 7px)}
.tbm-lg-e::before{color:#FFD08A}.tbm-lg-h::before{color:#FF8A2A}.tbm-lg-c::before{color:#8FD0FF}

/* Thermomètre horizontal (mobile, placé sous la maison) */
.tbm-thermo.is-h{position:relative;right:auto;top:auto;height:auto;width:auto;flex-direction:row;gap:12px;padding:10px 16px;margin:0 0 14px;border-radius:999px;background:rgba(7,21,42,.5)}
.tbm-thermo.is-h .tbm-th-bulb{order:-1;width:22px;height:22px;flex-shrink:0}
.tbm-thermo.is-h .tbm-th-track{flex:1;width:auto;height:12px;cursor:ew-resize;background:linear-gradient(to right,rgba(47,134,255,.35),rgba(234,242,247,.25) 52%,rgba(255,90,31,.35))}
.tbm-thermo.is-h .tbm-th-track::before{inset:-16px -6px}
.tbm-thermo.is-h .tbm-th-fill{top:0;bottom:0;left:0;right:auto;height:auto;width:calc(var(--f) * 100%);background:linear-gradient(to right,#2F86FF,#9BD3FF 30%,#EAF2F7 52%,#7FD39A 64%,#FFC266 78%,#FF5A1F);background-size:calc(100% / max(var(--f), .02)) 100%;background-position:left}
.tbm-thermo.is-h .tbm-th-knob{left:calc(var(--f) * 100%);top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border-width:4px}
.tbm-thermo.is-h .tbm-th-tick{display:none}
.tbm-thermo.is-h .tbm-th-read{font-size:1rem;min-width:3.4em;text-align:right}

/* Correctifs panneau et zoom */
.tb-explorer .tb-panel-empty[hidden]{display:none!important}
@media (min-width:900px){.tb-house--photo .tb-stage.is-zoom .tb-cam{transform:scale(1.32)}}
.tb-house--photo .tb-stage.is-zoom .tb-dot{transform:translate(-50%,-50%) scale(.76)}
.tb-house--photo .tb-stage.is-zoom .tb-dot-label{font-size:.72rem!important}

/* Mise en page dans la section */
.tb-explorer .tb-house--photo{grid-template-areas:"stage panel" "cap panel" "chips panel"}
@media (max-width:1100px){.tb-explorer .tb-house--photo{grid-template-areas:"stage" "cap" "chips" "panel"}}
@media (max-width:760px){
	.tbm-thermo{width:46px;top:4%;height:52%;gap:5px;padding:8px 0}
	.tbm-th-read{font-size:.78rem}
	.tbm-th-tick{display:none}
	.tbm-th-knob{width:20px;height:20px;margin:-10px 0 0 -10px;border-width:3px}
	.tbm-th-track{width:10px}
	.tbm-th-bulb{width:18px;height:18px}
	.tbm-cap-txt{min-height:0}
}
@media (prefers-reduced-motion:reduce){
	.tbm-flow,.tbm-hub,.tbm-fan,.tbm-sheen,.tbm-spark circle,.tb-house--photo .tb-dot-ring::after{animation:none!important}
	.tbm-spark{display:none}
	.tbm-par{transition:none}
}

/* Rebonds contre les murs */
.tbm-flow-u{stroke-dasharray:2 13;animation:tbmFlowU 1.3s linear infinite}
@keyframes tbmFlowU{to{stroke-dashoffset:-15}}
/* Climatisation invisible : module en cave, gaines, bouches */
.tbm-ci-live{opacity:var(--cool)}
.tbm-flow-d{stroke-dasharray:2 16;animation:tbmFlowD 1s linear infinite}
@keyframes tbmFlowD{to{stroke-dashoffset:-18}}
.tbm-ci-fan{transform-box:view-box;transform-origin:1005px 851px;animation:tbmSpin .5s linear infinite;animation-play-state:paused}
.tb-house--photo[data-mode=ete] .tbm-ci-fan{animation-play-state:running}
.tbm-ci-led{opacity:calc(.2 + var(--cool) * .8)}
/* Borne de recharge */
.tbm-f-cable{stroke-dasharray:1 9;animation:tbmFlowCable .7s linear infinite}
@keyframes tbmFlowCable{to{stroke-dashoffset:-10}}
.tbm-ev-led{animation:tbmHub 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.tbm-ev-fill{transform-box:fill-box;transform-origin:left center;animation:tbmCharge 5s ease-in-out infinite}
@keyframes tbmCharge{0%{transform:scaleX(.12)}85%,100%{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){.tbm-iso,.tbm-flow-u,.tbm-flow-d,.tbm-ci-fan,.tbm-f-cable,.tbm-ev-led,.tbm-ev-fill{animation:none!important}}

/* Accueil : la maison directement sous le titre */
.tb-xhero--house{min-height:0;justify-content:flex-start;background:radial-gradient(900px 520px at 65% 55%,#11305A 0%,rgba(17,48,90,0) 70%),#040D1B}
.tb-xhero--house .tb-xh-scene::after{display:none}
.tb-xhero--house .tb-xh-in{box-sizing:border-box;width:100%;padding:calc(var(--tb-hh) + 28px) clamp(18px,4vw,48px) 8px;max-width:1500px}
.tb-xh-top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px 56px;align-items:end;margin-bottom:clamp(22px,3vw,34px)}
.tb-xhero--house .tb-xh-brand{margin-bottom:16px}
.tb-xhero--house h1{font-size:clamp(2rem,3.6vw,3.6rem);max-width:17ch;margin:0}
.tb-xhero--house .tb-xh-lead{font-size:clamp(1rem,1.2vw,1.12rem);margin:0 0 1.2em;max-width:52ch}
.tb-xhero--house .tb-xh-chain{box-sizing:border-box;max-width:1500px;padding-top:30px}
@media (max-width:900px){.tb-xh-top{grid-template-columns:1fr;gap:14px}.tb-xhero--house .tb-xh-in{padding-top:calc(var(--tb-hh) + 18px)}}
@media (max-width:600px){.tb-xhero--house .tb-xh-ctas .tb-btn-ghost{display:none}.tb-xhero--house .tb-xh-lead{margin-bottom:1em}}

/* Avec / sans isolation */
.tbm-imp{transform-box:fill-box;transform-origin:center;animation:tbmImp 1.3s ease-out infinite}
@keyframes tbmImp{0%{transform:scale(.4);opacity:1}100%{transform:scale(2.2);opacity:0}}
.tbm-leak{display:none}
.tbm-leak-w{opacity:var(--heat)}.tbm-leak-c{opacity:var(--cool)}
.tbm-flow-x{stroke-dasharray:3 16;animation:tbmFlowX .9s linear infinite}
@keyframes tbmFlowX{to{stroke-dashoffset:-19}}
.tb-house--photo[data-iso=off] .tbm-leak{display:inline}
.tb-house--photo[data-iso=off] .tbm-iso,.tb-house--photo[data-iso=off] .tbm-hold{display:none}
.tb-house--photo[data-iso=off] .tbm-in-warm{opacity:calc(var(--heat) * .08)}
.tb-house--photo[data-iso=off] .tbm-in-cool{opacity:calc(var(--cool) * .08)}
.tbm-iso-sw{position:absolute;z-index:4;left:2%;top:4%;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.tbm-iso-btns{display:flex;padding:4px;border-radius:999px;background:rgba(7,21,42,.72);border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.tbm-iso-btns button{appearance:none;border:0;background:transparent;color:#C9D5E4;font:700 .78rem var(--tb-head);padding:7px 13px;border-radius:999px;cursor:pointer}
.tbm-iso-btns button[aria-pressed=true]{background:var(--tb-orange);color:#07152A}
.tb-house--photo[data-iso=off] .tbm-iso-btns button[aria-pressed=true]{background:#E2504A;color:#fff}
.tbm-iso-msg{margin:0;padding:5px 12px;border-radius:999px;background:rgba(7,21,42,.72);color:#fff;font:700 .8rem var(--tb-head)}
@media (max-width:760px){.tbm-iso-btns button{font-size:.66rem;padding:5px 9px}.tbm-iso-msg{font-size:.66rem;padding:3px 9px}}
/* Hiver : sol chauffant */
.tbm-floor{opacity:calc(var(--heat) * .55);mix-blend-mode:multiply}
.tbm-waves path{animation:tbmRise 2.4s ease-in-out infinite;opacity:0}
.tbm-waves path:nth-child(2n){animation-delay:.8s}.tbm-waves path:nth-child(3n){animation-delay:1.6s}
@keyframes tbmRise{0%{transform:translateY(0);opacity:0}30%{opacity:1}100%{transform:translateY(-34px);opacity:0}}
.tbm-floor .tbm-waves{mix-blend-mode:normal}
/* Air expulsé par la pompe à chaleur */
.tbm-pac-air{opacity:var(--heat)}
.tbm-pac-air path{animation:tbmBlow 1.4s linear infinite;opacity:0}
.tbm-pac-air path:nth-child(2){animation-delay:.45s}.tbm-pac-air path:nth-child(3){animation-delay:.9s}
@keyframes tbmBlow{0%{transform:translateX(-10px);opacity:0}25%{opacity:.95}100%{transform:translateX(46px);opacity:0}}
/* Été : air froid des cassettes */
.tbm-coldfx{opacity:var(--cool)}
.tbm-coldfx circle{animation:tbmFall 3s linear infinite}
.tbm-coldfx circle:nth-child(2n){animation-delay:1s}.tbm-coldfx circle:nth-child(3n){animation-delay:2s}
@keyframes tbmFall{0%{transform:translateY(-10px);opacity:0}20%{opacity:.95}100%{transform:translateY(70px);opacity:0}}
/* Lien vers l'expertise dans le panneau */
.tb-panel-feature{display:flex;flex-direction:column;gap:2px;margin:0 0 14px;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,rgba(240,138,28,.22),rgba(240,138,28,.06));border:1px solid rgba(255,178,94,.55);color:#fff;text-decoration:none;transition:transform .2s,background .2s}
.tb-panel-feature:hover{transform:translateY(-2px);background:linear-gradient(135deg,rgba(240,138,28,.32),rgba(240,138,28,.1))}
.tb-pf-k{font:700 .68rem var(--tb-head);letter-spacing:.12em;text-transform:uppercase;color:var(--tb-orange-2)}
.tb-pf-t{font:800 1rem var(--tb-head)}
.tb-pf-s{font:600 .82rem var(--tb-head);color:#C9D5E4}
@media (prefers-reduced-motion:reduce){.tbm-imp,.tbm-flow-x,.tbm-waves path,.tbm-pac-air path,.tbm-coldfx circle{animation:none!important;opacity:.8}}
/* v1.8 : piscine, libellés jamais coupés */
.tbm-caus{animation:tbmCaus 6s linear infinite}
@keyframes tbmCaus{to{transform:translateX(40px)}}
.tbm-pool-spec{animation:tbmSpec 4s ease-in-out infinite}
@keyframes tbmSpec{50%{opacity:.12}}
.tb-house--photo[data-mode=hiver] .tbm-pool polygon:nth-child(2){filter:saturate(.6) brightness(.85)}
.tb-house--photo .tb-dot.is-flip .tb-dot-label{left:auto!important;right:calc(100% - 4px)!important}
.tb-house--photo .tb-dot.is-flipr .tb-dot-label{right:auto!important;left:calc(100% - 4px)!important}
@media (max-width:1240px){.tbm-th-tick{display:none}}
@media (max-width:600px){.tbm-iso-sw{left:2%;top:3%;gap:4px}.tbm-iso-btns{padding:2px}.tbm-iso-btns button{font-size:.6rem;padding:4px 7px}.tbm-iso-msg{display:none}}
@media (prefers-reduced-motion:reduce){.tbm-caus,.tbm-pool-spec{animation:none}}
/* Tablette : étiquettes compactes au lieu de points muets */
@media (min-width:600px) and (max-width:899px){
	.tb-house--photo .tb-stage:not(.is-zoom) .tb-dot-label{display:block;opacity:1;font-size:.6rem!important;padding:4px 7px;letter-spacing:0}
	.tb-house--photo .tb-dot{width:30px;height:30px}
}
/* Étiquettes proportionnelles à la largeur réelle de l'image */
.tb-house--photo .tb-stage{container-type:inline-size}
@container (min-width:560px){
	.tb-house--photo .tb-stage:not(.is-zoom) .tb-dot-label{font-size:clamp(.6rem,1.02cqi,.78rem)!important;padding:.55em .85em}
}

/* v1.8.1 : titre, deux messages, puis la maison interactive directement dessous */
.tb-xhero--duo.tb-xhero--house .tb-xh-in{padding-bottom:clamp(36px,5vw,64px)}
.tb-xhero--duo.tb-xhero--house h1{font-size:clamp(2.2rem,4.6vw,4.4rem);margin:0 0 .4em}
.tb-xhero--duo.tb-xhero--house .tb-xh-top{align-items:end}
.tb-xhero--duo.tb-xhero--house .tb-xh-duo{margin:0 0 20px}
.tb-xh-hint{margin:0 0 14px;color:#C9D5E4;font-size:.95rem}
.tb-xh-hint strong{color:var(--tb-orange-2,#FFB25E)}
@media (max-width:600px){.tb-xhero--duo.tb-xhero--house .tb-xh-ctas .tb-btn-ghost{display:none}}

/* v1.9.1 : sous-titre du H1 */
.tb-xh-h-sub{display:block;color:var(--tb-orange-2,#FFB25E);font-size:.62em;line-height:1.1;margin-top:.15em;letter-spacing:-.02em}
