:root{--purple:#5b58a5;--deep:#24215f;--green:#087c4c;--green-light:#b8e5c8;--blue:#3871b9;--ink:#202042;--muted:#6b6c7e;--line:rgba(36,33,95,.14);--paper:#fff;--soft:#f5f6fb;--mint:#effaf3;--radius:24px;font-family:'DM Sans',sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink)}body,button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button{border:0;cursor:pointer}:focus-visible{outline:3px solid var(--green);outline-offset:4px}.skip-link{position:fixed;z-index:100;top:12px;left:12px;padding:10px 14px;border-radius:8px;background:var(--green);color:#fff;transform:translateY(-150%);transition:transform .2s ease}.skip-link:focus{transform:translateY(0)}.page-wrap{padding-left:clamp(24px,7vw,108px);padding-right:clamp(24px,7vw,108px)}
.site-header{display:flex;align-items:center;justify-content:space-between;min-height:88px;position:absolute;z-index:10;top:0;left:0;width:100%;padding:13px clamp(24px,7vw,108px);color:var(--ink)}.home-page .site-header{color:var(--ink)}.inner-header{position:relative;border-bottom:1px solid var(--line);background:#fff}.brand{display:inline-flex;align-items:center}.brand img{width:164px;height:58px;object-fit:contain;object-position:center}.site-nav{display:flex;align-items:center;gap:clamp(18px,3vw,40px);font-size:13px;color:var(--muted)}.home-page .site-nav{color:var(--muted)}.site-nav a{transition:color .2s ease}.site-nav a:hover,.site-nav a.active{color:var(--green)}.home-page .site-nav .nav-cta{color:var(--deep)}.site-nav .nav-cta{display:inline-flex;align-items:center;gap:13px;border:1px solid rgba(36,33,95,.28);border-radius:999px;padding:12px 16px;color:var(--deep)}.home-page .site-nav .nav-cta{border-color:rgba(255,255,255,.45)}.site-nav .nav-cta span{color:var(--green);font-size:18px}.menu-toggle{display:none;background:transparent;color:var(--ink)}.home-page .menu-toggle{color:var(--ink)}
.home-hero{--pointer-x:70%;--pointer-y:40%;display:grid;grid-template-columns:minmax(0,.98fr) minmax(390px,1.02fr);align-items:center;min-height:735px;padding-top:140px;padding-bottom:70px;position:relative;overflow:hidden;background:linear-gradient(130deg,#fff 0%,#fff 55%,#f1f2fc 100%)}.home-hero:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at var(--pointer-x) var(--pointer-y),rgba(0,164,91,.1),transparent 17%),linear-gradient(136deg,transparent 0 63%,rgba(91,88,165,.08) 63.2%,transparent 63.5%)}.hero-copy{position:relative;z-index:1;max-width:680px;padding-top:34px}.eyebrow,.section-kicker{display:inline-flex;align-items:center;gap:8px;color:var(--green);font:800 10px/1 'Manrope',sans-serif;letter-spacing:.15em;text-transform:uppercase}.eyebrow i{width:32px;height:2px;background:var(--purple)}h1,h2,h3{font-family:'Manrope',sans-serif}.hero-copy h1{max-width:680px;margin:24px 0 22px;font:800 clamp(52px,7vw,94px)/.96 'Manrope',sans-serif;letter-spacing:-.08em}.hero-copy h1 em,.section-intro h2 em,.about-copy h2 em,.trust-strip h2 em,.page-hero h1 em,.form-heading h2 em,.contact-details h2 em{color:var(--purple);font-style:normal}.hero-copy>p{max-width:515px;margin:0;color:var(--muted);font-size:17px;line-height:1.7}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:51px;padding:14px 18px 14px 22px;border-radius:999px;font-size:13px;font-weight:700;transition:transform .2s ease,background .2s ease,border-color .2s ease}.button:hover{transform:translateY(-3px)}.button span{font-size:18px}.button-green{background:var(--green);color:#fff}.button-green:hover{background:#078d51}.button-line{border:1px solid var(--line);color:var(--deep)}.button-line:hover{border-color:var(--green);color:var(--green)}.hero-proof{display:flex;gap:23px;margin-top:37px;color:#85869a;font:800 9px/1 'Manrope',sans-serif;letter-spacing:.13em}.hero-proof span+span{position:relative}.hero-proof span+span:before{content:'';position:absolute;width:4px;height:4px;left:-14px;top:0;border-radius:50%;background:var(--green)}.home-orbit{position:relative;min-height:500px}.home-orbit img{position:absolute;z-index:2;width:68%;left:16%;top:24%;filter:drop-shadow(0 24px 28px rgba(36,33,95,.12));animation:logoFloat 5.5s ease-in-out infinite}.orbit-line{position:absolute;border-radius:50%;transform:rotate(-18deg);border:1px solid}.orbit-line-purple{width:92%;height:40%;left:4%;top:35%;border-color:rgba(91,88,165,.45);animation:orbit 10s ease-in-out infinite}.orbit-line-green{width:75%;height:28%;left:12%;top:43%;border-color:rgba(0,164,91,.6);animation:orbit 8s ease-in-out infinite reverse}.orbit-dot{position:absolute;right:9%;top:17%;width:11px;height:11px;border-radius:50%;background:var(--green);box-shadow:0 0 0 11px rgba(0,164,91,.1),0 0 0 28px rgba(91,88,165,.08)}.hero-particles{position:absolute;inset:0;pointer-events:none}.hero-particles i{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--green);opacity:.45;animation:blink 3s infinite}.hero-particles i:nth-child(1){left:57%;top:22%}.hero-particles i:nth-child(2){left:91%;top:58%;animation-delay:.7s}.hero-particles i:nth-child(3){left:9%;top:21%;animation-delay:1.4s}.hero-particles i:nth-child(4){left:49%;top:73%;animation-delay:2s}.hero-particles i:nth-child(5){left:78%;top:16%;animation-delay:.4s}.hero-particles i:nth-child(6){left:30%;top:80%;animation-delay:1.8s}.section{padding-top:clamp(82px,9vw,135px);padding-bottom:clamp(82px,9vw,135px)}.section-intro{display:grid;grid-template-columns:1fr .5fr;gap:40px;align-items:end;margin-bottom:58px}.section-intro h2,.about-copy h2,.trust-strip h2,.form-heading h2,.contact-details h2{margin:17px 0 0;font:800 clamp(38px,5vw,68px)/.99 'Manrope',sans-serif;letter-spacing:-.075em}.section-intro>p{margin:0;color:var(--muted);font-size:14px;line-height:1.7}.orientation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.orientation-card{position:relative;min-height:355px;display:flex;flex-direction:column;overflow:hidden;padding:26px;border-radius:var(--radius);color:#fff;transition:transform .25s ease,box-shadow .25s ease}.orientation-card:hover{transform:translateY(-7px);box-shadow:0 22px 40px rgba(36,33,95,.16)}.card-purple{background:linear-gradient(145deg,#6b68b5,#302d76)}.card-green{background:linear-gradient(145deg,#09aa63,#076643)}.card-blue{background:linear-gradient(145deg,#5279b9,#252e76)}.card-number{font:800 11px/1 'Manrope',sans-serif;color:rgba(255,255,255,.65)}.card-icon{display:grid;place-items:center;width:52px;height:52px;margin-top:43px;border:1px solid rgba(255,255,255,.35);border-radius:50%;font-size:28px}.orientation-card h3{margin:22px 0 12px;font:700 25px/1.08 'Manrope',sans-serif;letter-spacing:-.05em}.orientation-card h3 em{color:#c8f4d4;font-style:normal}.orientation-card p{max-width:240px;margin:0;color:rgba(255,255,255,.73);font-size:12px;line-height:1.6}.orientation-card strong{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:22px;font-size:11px}.orientation-card strong b{font-size:18px}.about-band{display:grid;grid-template-columns:.72fr 1.28fr;gap:clamp(50px,10vw,150px);align-items:center;background:var(--soft)}.about-mark{position:relative;display:grid;place-items:center;min-height:380px;border-radius:var(--radius);background:linear-gradient(145deg,#f0f1fb,#fff);overflow:hidden}.about-orbit{position:absolute;width:120%;height:45%;border:1px solid rgba(91,88,165,.45);border-radius:50%;transform:rotate(-18deg)}.about-orbit:after{content:'';position:absolute;inset:14% 9%;border:1px solid rgba(0,164,91,.55);border-radius:50%}.about-copy>p{max-width:550px;margin:25px 0 35px;color:var(--muted);font-size:15px;line-height:1.75}.value-row{display:flex;gap:28px;border-top:1px solid var(--line);padding-top:18px;color:var(--muted);font-size:12px}.value-row b{display:block;margin-bottom:6px;color:var(--green);font:800 11px/1 'Manrope',sans-serif}.trust-strip{display:flex;justify-content:space-between;align-items:end;gap:35px;padding-top:80px;padding-bottom:80px}.trust-strip h2{max-width:730px}.text-link{display:inline-flex;align-items:center;gap:12px;color:var(--deep);font-size:12px;font-weight:700;white-space:nowrap}.text-link span{color:var(--green);font-size:18px}.site-footer{display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:40px;padding:52px clamp(24px,7vw,108px) 20px;background:#f7f7fb;color:var(--ink)}.site-footer .brand img{width:152px;height:53px}.footer-brand p{max-width:255px;margin:16px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.footer-links,.footer-contact{display:grid;align-content:start;gap:9px;font-size:11px}.footer-links strong,.footer-contact strong{margin-bottom:6px;color:var(--green);font:800 10px/1 'Manrope',sans-serif;letter-spacing:.1em;text-transform:uppercase}.footer-links a,.footer-contact a,.footer-contact span{color:var(--muted)}.footer-links a:hover,.footer-contact a:hover{color:var(--green)}.footer-bottom{grid-column:1/-1;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px;margin-top:20px;color:#9292a2;font-size:10px}
.page-hero,.contact-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:50px;align-items:center;min-height:510px;padding-top:65px;padding-bottom:70px;background:linear-gradient(130deg,#fff,#f4f5fc)}.page-hero-copy{max-width:610px}.breadcrumb{display:block;margin-bottom:30px;color:#9898a6;font-size:11px}.page-hero h1{margin:18px 0 22px;font:800 clamp(46px,6vw,78px)/.97 'Manrope',sans-serif;letter-spacing:-.08em}.page-hero-copy>p{max-width:510px;margin:0;color:var(--muted);font-size:16px;line-height:1.7}.page-hero-copy .button{margin-top:33px}.page-hero-art{position:relative;min-height:350px;border-radius:var(--radius);overflow:hidden;background:#f0f1fb}.art-energy{background:linear-gradient(145deg,#ececf9,#fff)}.art-orbit{position:absolute;border:1px solid;border-radius:50%;transform:rotate(-19deg)}.art-orbit.purple{width:95%;height:39%;top:33%;left:2%;border-color:rgba(91,88,165,.5)}.art-orbit.green{width:76%;height:28%;top:42%;left:12%;border-color:rgba(0,164,91,.62)}.art-panel{position:absolute;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;width:53%;height:28%;left:24%;top:35%;padding:8px;border:1px solid var(--purple);background:linear-gradient(145deg,#7774c3,#292663);transform:skewY(-14deg) rotate(-18deg);box-shadow:20px 22px 0 rgba(0,164,91,.12)}.art-panel i{border:1px solid rgba(191,234,203,.55)}.art-label{position:absolute;left:24px;bottom:23px;color:var(--purple);font:800 9px/1.5 'Manrope',sans-serif;letter-spacing:.11em}.art-label b{color:var(--green)}.art-supply{background:linear-gradient(145deg,#edf8f1,#fff)}.supply-orbit{position:absolute;width:85%;height:30%;left:7%;top:38%;border:1px solid var(--green);border-radius:50%;transform:rotate(-22deg)}.supply-core{position:absolute;left:37%;top:30%;width:26%;aspect-ratio:1;border:1px solid var(--purple);border-radius:50%;box-shadow:0 0 0 22px rgba(91,88,165,.07),0 0 0 46px rgba(0,164,91,.05)}.supply-core span{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--green)}.supply-core span:nth-child(1){top:-6px;left:calc(50% - 6px);background:var(--purple)}.supply-core span:nth-child(2){right:-6px;top:calc(50% - 6px)}.supply-core span:nth-child(3){bottom:4px;left:8px;background:var(--blue)}.art-home{background:linear-gradient(145deg,#e5f5ea,#fff)}.home-grid{position:absolute;inset:0;opacity:.5;background-image:linear-gradient(rgba(91,88,165,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(91,88,165,.13) 1px,transparent 1px);background-size:30px 30px}.smart-house{position:absolute;width:57%;height:58%;left:21%;top:23%}.smart-house .roof{position:absolute;z-index:1;width:86%;height:42%;left:7%;top:0;border-left:13px solid var(--deep);border-top:13px solid var(--deep);transform:rotate(45deg) scale(.7)}.smart-house .house-body{position:absolute;inset:25% 11% 0;border:8px solid var(--deep);border-top:0;background:rgba(0,164,91,.13)}.smart-house .window{position:absolute;z-index:2;top:50%;width:17%;height:16%;background:var(--deep);border:4px solid var(--green)}.smart-house .window.left{left:24%}.smart-house .window.right{right:24%}.smart-house .door{position:absolute;z-index:2;bottom:0;left:42%;width:17%;height:30%;background:var(--deep)}.wifi{position:absolute;z-index:3;right:3%;color:var(--purple);font-size:40px;transform:rotate(-90deg)}.wifi.one{top:26%}.wifi.two{top:20%;right:-7%;font-size:28px}.smart-tag{position:absolute;top:18px;right:18px;color:var(--green);font:800 9px/1 'Manrope',sans-serif;letter-spacing:.1em}.service-cards,.catalogue-section,.smart-solutions{background:#fff}.detail-grid{display:grid;gap:15px}.detail-grid.three{grid-template-columns:repeat(3,1fr)}.detail-grid.four{grid-template-columns:repeat(4,1fr)}.detail-card{padding:23px;border:1px solid var(--line);border-radius:18px;background:#fff;transition:transform .25s ease,box-shadow .25s ease}.detail-card:hover{transform:translateY(-6px);box-shadow:0 15px 34px rgba(36,33,95,.09)}.detail-card .card-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--soft);font-size:22px}.green-icon{color:var(--green)}.purple-icon{color:var(--purple)}.blue-icon{color:var(--blue)}.detail-card .card-number{display:block;margin-top:28px;color:#a3a3b0;font:800 10px/1 'Manrope',sans-serif}.detail-card h3{margin:15px 0 10px;font:700 20px/1.08 'Manrope',sans-serif;letter-spacing:-.04em}.detail-card p{min-height:70px;margin:0;color:var(--muted);font-size:12px;line-height:1.6}.detail-card ul{display:grid;gap:8px;margin:20px 0 0;padding:15px 0 0;border-top:1px solid var(--line);list-style:none;color:var(--muted);font-size:11px}.detail-card li:before{content:'+';margin-right:7px;color:var(--green);font-weight:700}.detail-card>a{display:inline-flex;gap:8px;margin-top:20px;color:var(--green);font-size:11px;font-weight:700}.process-band,.order-band,.smart-band{display:flex;justify-content:space-between;align-items:end;gap:45px;background:var(--soft)}.process-band h2,.order-band h2,.smart-quote h2{margin:17px 0 0;font:800 clamp(38px,5vw,64px)/.98 'Manrope',sans-serif;letter-spacing:-.075em}.process-list{min-width:min(100%,500px);border-top:1px solid var(--line)}.process-list>div{display:grid;grid-template-columns:35px 1fr;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.process-list b{color:var(--green);font:800 11px/1 'Manrope',sans-serif}.process-list strong,.process-list small{display:block}.process-list strong{font:700 14px/1.2 'Manrope',sans-serif}.process-list small{margin-top:5px;color:var(--muted);font-size:11px}.form-section{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(45px,10vw,140px);align-items:start}.form-heading>p{max-width:420px;color:var(--muted);font-size:14px;line-height:1.7}.quote-form{padding-top:5px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.quote-form label{display:grid;gap:8px;margin-bottom:22px;color:var(--muted);font:700 11px/1 'Manrope',sans-serif}.quote-form label span{color:var(--green)}.quote-form input,.quote-form select,.quote-form textarea{width:100%;padding:14px 15px;border:1px solid var(--line);border-radius:8px;outline:none;background:#fff;color:var(--ink);font:13px/1.35 'DM Sans',sans-serif}.quote-form select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--green) 50%),linear-gradient(135deg,var(--green) 50%,transparent 50%);background-position:calc(100% - 17px) 20px,calc(100% - 12px) 20px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.quote-form textarea{resize:vertical;min-height:130px}.quote-form input:focus,.quote-form select:focus,.quote-form textarea:focus{border-color:var(--green);box-shadow:0 0 0 4px rgba(0,164,91,.1)}.quote-form.was-validated input:invalid,.quote-form.was-validated select:invalid,.quote-form.was-validated textarea:invalid{border-color:#d47369}.form-status{min-height:20px;margin-top:16px;color:var(--muted);font-size:12px;line-height:1.5}.form-status.is-error{color:#c65d58}.form-status.is-success{color:var(--green)}.filter-row{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:30px}.filter-btn{padding:11px 15px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:11px}.filter-btn.is-active,.filter-btn:hover{border-color:var(--green);color:var(--green);background:var(--mint)}.product-catalogue{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.catalogue-card{padding:10px 10px 20px;border:1px solid var(--line);border-radius:18px;background:#fff}.catalogue-card[hidden]{display:none}.catalogue-visual{position:relative;min-height:200px;overflow:hidden;border-radius:12px;background:linear-gradient(145deg,#f0f1fb,#fff)}.catalogue-visual:before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(91,88,165,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(91,88,165,.18) 1px,transparent 1px);background-size:23px 23px}.catalogue-visual:after{content:'';position:absolute;width:52%;height:27%;left:24%;top:37%;border:1px solid var(--purple);transform:skewY(-14deg) rotate(-17deg);box-shadow:13px 16px 0 rgba(0,164,91,.14)}.gps-visual{background:linear-gradient(145deg,#e8f8ee,#fff)}.gps-visual:after{width:30%;height:30%;left:35%;top:34%;border-radius:50%;transform:none;box-shadow:0 0 0 15px rgba(0,164,91,.1),0 0 0 30px rgba(91,88,165,.06)}.component-visual{background:linear-gradient(145deg,#eef0fa,#fff)}.component-visual:after{width:38%;height:38%;left:31%;top:30%;border-radius:8px;transform:none}.product-meta{display:block;margin:18px 3px 0;color:var(--green);font:800 9px/1 'Manrope',sans-serif;letter-spacing:.1em}.catalogue-card h3{margin:11px 3px 7px;font:700 18px/1.08 'Manrope',sans-serif}.catalogue-card p{min-height:50px;margin:0 3px;color:var(--muted);font-size:11px;line-height:1.5}.catalogue-card>a{display:inline-flex;gap:8px;margin:18px 3px 0;color:var(--purple);font-size:11px;font-weight:700}.catalogue-card>a span{color:var(--green);font-size:16px}.contact-hero{background:linear-gradient(130deg,#fff,#f0f1fb)}.contact-orbit{position:relative;min-height:320px;border-radius:var(--radius);background:var(--soft);display:grid;place-items:center;overflow:hidden}.contact-ring{position:absolute;border-radius:50%;border:1px solid}.ring-purple{width:92%;height:39%;transform:rotate(-18deg);border-color:rgba(91,88,165,.55)}.ring-green{width:74%;height:28%;transform:rotate(-18deg);border-color:rgba(0,164,91,.68)}.contact-orbit>span{position:relative;color:var(--purple);font:800 32px/.95 'Manrope',sans-serif;letter-spacing:-.08em}.contact-orbit b{color:var(--green)}.contact-main{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(50px,10vw,150px);align-items:center}.contact-info{display:grid;gap:17px;margin-top:36px}.contact-info a,.contact-info p{display:grid;gap:6px;color:var(--ink);font:700 17px/1.2 'Manrope',sans-serif}.contact-info small{color:var(--green);font:800 9px/1 'Manrope',sans-serif;letter-spacing:.1em}.contact-info a:hover{color:var(--green)}.contact-info p{margin:0}.socials{display:flex;align-items:center;gap:9px;margin-top:35px;color:var(--muted);font-size:11px}.socials span{margin-right:8px}.socials a{display:grid;place-items:center;width:29px;height:29px;border:1px solid var(--line);border-radius:50%;font:700 10px/1 'Manrope',sans-serif}.socials a:hover{border-color:var(--green);color:var(--green)}.location-map{position:relative}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes orbit{0%,100%{transform:rotate(-18deg) translateY(0)}50%{transform:rotate(-14deg) translateY(-10px)}}@keyframes blink{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:.9;transform:scale(1.2)}}.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-delay{transition-delay:.12s}.reveal-delay-2{transition-delay:.24s}
@media(max-width:920px){.home-hero,.page-hero,.contact-hero{grid-template-columns:1fr}.home-hero{padding-top:130px}.home-orbit{min-height:390px}.section-intro,.form-section,.contact-main{grid-template-columns:1fr}.orientation-grid,.product-catalogue{grid-template-columns:repeat(2,1fr)}.detail-grid.four{grid-template-columns:repeat(2,1fr)}.page-hero-art,.contact-orbit{min-height:340px}.process-band,.order-band,.smart-band{display:grid}.site-footer{grid-template-columns:1fr 1fr}.footer-bottom{grid-column:1/-1}}@media(max-width:680px){.site-header{min-height:74px}.brand img{width:137px;height:49px}.menu-toggle{display:grid;gap:6px;width:38px;padding:10px 0 10px 12px}.menu-toggle span{display:block;width:25px;height:2px;background:currentColor;transition:transform .2s ease}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}.site-nav{position:absolute;top:68px;left:16px;right:16px;display:grid;gap:0;padding:10px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 16px 30px rgba(36,33,95,.13);transform:translateY(-15px);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.home-page .site-nav{background:var(--deep);border-color:rgba(255,255,255,.2)}.site-nav.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.site-nav a{padding:14px 12px}.site-nav .nav-cta{justify-content:space-between;margin-top:5px}.home-hero{display:block;min-height:auto;padding-top:115px;padding-bottom:55px}.hero-copy h1{font-size:clamp(46px,13vw,72px)}.hero-copy>p{font-size:15px}.hero-actions{display:grid}.button{width:100%}.hero-proof{gap:15px;font-size:8px}.home-orbit{min-height:345px;margin-top:5px}.home-orbit img{top:24%}.section{padding-top:74px;padding-bottom:74px}.section-intro{gap:22px;margin-bottom:38px}.section-intro h2,.about-copy h2,.trust-strip h2,.form-heading h2,.contact-details h2{font-size:clamp(38px,11vw,58px)}.orientation-grid,.detail-grid.three,.detail-grid.four,.product-catalogue{grid-template-columns:1fr}.orientation-card{min-height:295px}.detail-card p{min-height:0}.page-hero,.contact-hero{display:block;padding-top:72px;padding-bottom:55px}.page-hero h1{font-size:clamp(45px,12vw,67px)}.page-hero-art,.contact-orbit{min-height:305px;margin-top:45px}.form-row{grid-template-columns:1fr;gap:0}.form-section{gap:38px}.contact-main{gap:45px}.site-footer{grid-template-columns:1fr;padding-top:38px}.footer-bottom{display:grid;gap:9px}.trust-strip{display:grid;gap:28px}.smart-points{display:grid;gap:12px}.filter-row{overflow:auto;flex-wrap:nowrap;padding-bottom:4px}.filter-btn{white-space:nowrap}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,.home-orbit img,.orbit-line,.hero-particles i{opacity:1;transform:none;animation:none;transition:none}.button,.orientation-card,.detail-card{transition:none}}

.whatsapp-fab{position:fixed;right:20px;bottom:20px;z-index:50;display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#25d366;color:#fff;box-shadow:0 8px 24px rgba(0,0,0,.2);transition:transform .2s ease}
.whatsapp-fab:hover,.whatsapp-fab:focus-visible{transform:scale(1.08)}
.whatsapp-fab:focus-visible{outline:3px solid #5b58a5;outline-offset:3px}
@media (prefers-reduced-motion:reduce){.whatsapp-fab{transition:none}}

@media(max-width:920px){.site-header{min-height:74px}.brand img{width:137px;height:49px}.menu-toggle{display:grid;gap:6px;width:38px;padding:10px 0 10px 12px}.menu-toggle span{display:block;width:25px;height:2px;background:currentColor;transition:transform .2s ease}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}.site-nav{position:absolute;top:68px;left:16px;right:16px;display:grid;gap:0;padding:10px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 16px 30px rgba(36,33,95,.13);transform:translateY(-15px);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.home-page .site-nav{background:var(--deep);border-color:rgba(255,255,255,.2)}.site-nav.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.site-nav a{padding:14px 12px}.site-nav .nav-cta{justify-content:space-between;margin-top:5px}}


/* ============ Responsive, tactile et compatibilite navigateurs ============ */

/* iOS fait grossir le texte a la rotation si on ne le bloque pas */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* Filet de securite : aucun debordement horizontal possible */
html,body{overflow-x:hidden;max-width:100%}
body{min-height:100%}
/* Les images ne se deforment jamais et ne depassent jamais leur conteneur */
img{max-width:100%;height:auto}
/* Halo de tap discret plutot que le carre bleu par defaut sur Android/iOS */
a,button,[role=button],input,select,textarea{-webkit-tap-highlight-color:rgba(36,33,95,.12)}
/* Safari exige encore le prefixe pour neutraliser le style natif */
.quote-form select{-webkit-appearance:none;-moz-appearance:none}
.button,.filter-btn,.menu-toggle{-webkit-appearance:none;appearance:none}
/* Encoches et barres systeme iOS */
.site-header,.site-footer{padding-left:max(clamp(24px,7vw,108px),env(safe-area-inset-left));padding-right:max(clamp(24px,7vw,108px),env(safe-area-inset-right))}
.whatsapp-fab{right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom))}

/* Le menu ferme ne doit pas rester atteignable au clavier, meme sans `inert` */
@media(max-width:920px){
  .site-nav{visibility:hidden;transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s}
  .site-nav.is-open{visibility:visible;transition:opacity .2s ease,transform .2s ease,visibility 0s}
}

/* Tablette : trois colonnes deviennent illisibles sous 920px */
@media(max-width:920px){
  .detail-grid.three{grid-template-columns:repeat(2,1fr)}
}

/* Mobile et tablette : champs a 16px, sinon iOS zoome au focus */
@media(max-width:920px){
  .quote-form input,.quote-form select,.quote-form textarea{font-size:16px;padding:15px}
  .quote-form select{background-position:calc(100% - 17px) 22px,calc(100% - 12px) 22px}
}

/* Cibles tactiles d'au moins 44px (WCAG 2.5.8 / Apple HIG) */
@media(max-width:920px),(pointer:coarse){
  .menu-toggle{width:48px;height:48px;padding:0;margin-right:-12px;place-content:center;justify-items:center}
  .site-nav a{min-height:48px;align-items:center}
  .filter-btn{min-height:44px;padding:12px 18px;font-size:12px}
  .socials a{width:44px;height:44px;font-size:11px}
  .detail-card>a,.catalogue-card>a{min-height:44px;align-items:center}
  .footer-links a,.footer-contact a{display:inline-flex;align-items:center;min-height:44px}
  .contact-info a{min-height:48px}
  .button{min-height:48px}
  .whatsapp-fab{width:60px;height:60px}
}

/* ============ Page Materiel Tech & Equipements Industriels ============ */
.page-hero-photo{position:relative;min-height:350px;overflow:hidden;border-radius:var(--radius);background:#eef0f8;box-shadow:0 18px 40px rgba(36,33,95,.16)}
.page-hero-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}

.demo-note{margin:0 0 26px;padding:12px 16px;border:1px solid var(--line);border-left:3px solid var(--green);border-radius:10px;background:var(--mint);color:var(--muted);font-size:12px;line-height:1.5}
.demo-note strong{color:var(--ink)}

.product-card{display:flex;flex-direction:column}
.product-photo{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:12px;background:#eef0f8}
.product-photo>img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.product-price{display:block;margin:14px 3px 0;color:var(--muted);font-size:11px}
.product-price b{display:block;margin-top:3px;color:var(--deep);font:800 18px/1 'Manrope',sans-serif;letter-spacing:-.03em}
.product-card .product-cta{width:100%;margin-top:auto;padding-top:14px;padding-bottom:14px}
.product-card>p{min-height:76px}

@media(max-width:920px){
  .page-hero-photo{min-height:300px}
  .product-card>p{min-height:0}
}
@media(max-width:680px){.page-hero-photo{min-height:240px;margin-top:45px}}

/* ============ Vitrines d'univers (/vente-materiel) ============ */
.showcase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.showcase-card{display:flex;flex-direction:column;padding:10px 10px 22px;border:1px solid var(--line);border-radius:18px;background:#fff;color:var(--ink);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.showcase-card:hover,.showcase-card:focus-visible{transform:translateY(-7px);border-color:var(--green);box-shadow:0 22px 40px rgba(36,33,95,.14)}
.showcase-photo{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:12px;background:#eef0f8}
.showcase-photo>img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.showcase-card h3{margin:11px 3px 7px;font:700 20px/1.1 'Manrope',sans-serif;letter-spacing:-.03em}
.showcase-card>p{margin:0 3px;color:var(--muted);font-size:12px;line-height:1.6}
.showcase-card strong{display:flex;justify-content:space-between;align-items:center;margin:auto 3px 0;padding-top:20px;color:var(--green);font-size:11px}
.showcase-card strong b{font-size:17px}

@media(max-width:920px){.showcase-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.showcase-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.showcase-card{transition:none}.showcase-card:hover{transform:none}}

/* ============ Bulles de contact rapide (e-mail + WhatsApp) ============ */
.fab-stack{position:fixed;z-index:50;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));display:grid;gap:12px;justify-items:end}
/* Les bulles sont desormais positionnees par la pile, plus par elles-memes */
.fab-stack .whatsapp-fab,.fab-stack .email-fab{position:static;right:auto;bottom:auto}
.email-fab{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--purple);color:#fff;box-shadow:0 8px 24px rgba(36,33,95,.28);transition:transform .2s ease,background .2s ease}
.email-fab:hover,.email-fab:focus-visible{transform:scale(1.08);background:var(--deep)}
.email-fab:focus-visible{outline:3px solid var(--green);outline-offset:3px}
@media(max-width:920px),(pointer:coarse){.email-fab{width:60px;height:60px}}
@media(prefers-reduced-motion:reduce){.email-fab{transition:none}.email-fab:hover{transform:none}}

/* ============ Assistant virtuel (interface seule) ============ */
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

.chat-fab{position:relative;display:grid;place-items:center;width:56px;height:56px;border:0;border-radius:50%;background:var(--deep);color:#fff;box-shadow:0 8px 24px rgba(36,33,95,.3);cursor:pointer;transition:transform .2s ease,background .2s ease}
.chat-fab:hover,.chat-fab:focus-visible{transform:scale(1.08);background:var(--purple)}
.chat-fab:focus-visible{outline:3px solid var(--green);outline-offset:3px}
.chat-online{position:absolute;right:3px;bottom:3px;width:13px;height:13px;border:2px solid #fff;border-radius:50%;background:#25d366}
.chat-online:after{content:'';position:absolute;inset:-2px;border-radius:50%;border:2px solid #25d366;animation:chatPulse 2s ease-out infinite}
@keyframes chatPulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.1);opacity:0}}

.chat-panel{position:fixed;z-index:60;right:max(20px,env(safe-area-inset-right));bottom:calc(max(20px,env(safe-area-inset-bottom)) + 210px);display:flex;flex-direction:column;width:min(370px,calc(100vw - 40px));max-height:min(560px,70vh);max-height:min(560px,70dvh);overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 26px 60px rgba(36,33,95,.26)}
.chat-panel[hidden]{display:none}

.chat-head{display:flex;align-items:center;gap:11px;padding:13px 14px;background:var(--deep);color:#fff}
.chat-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.14)}
.chat-avatar svg{width:21px;height:21px}
.chat-id{display:grid;gap:2px;margin-right:auto}
.chat-id strong{font:700 13px/1.2 'Manrope',sans-serif}
.chat-id em{display:flex;align-items:center;gap:6px;color:rgba(255,255,255,.75);font-style:normal;font-size:10px}
.chat-id em i{width:7px;height:7px;border-radius:50%;background:#25d366}
.chat-close{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;cursor:pointer}
.chat-close:hover,.chat-close:focus-visible{background:rgba(255,255,255,.25)}

.chat-log{flex:1;display:grid;gap:12px;align-content:start;overflow-y:auto;padding:16px 14px;background:var(--soft);-webkit-overflow-scrolling:touch}
.chat-msg{display:grid;gap:7px;justify-items:start;max-width:86%}
.chat-msg p{margin:0;padding:11px 13px;border-radius:14px;font-size:13px;line-height:1.5}
.chat-msg.is-bot{justify-self:start}
.chat-msg.is-bot p{border:1px solid var(--line);border-bottom-left-radius:5px;background:#fff;color:var(--ink)}
.chat-msg.is-user{justify-self:end;justify-items:end}
.chat-msg.is-user p{border-bottom-right-radius:5px;background:var(--purple);color:#fff}
.chat-link{display:inline-flex;align-items:center;min-height:38px;padding:8px 14px;border:1px solid var(--green);border-radius:999px;background:var(--mint);color:var(--green);font:700 11px/1 'Manrope',sans-serif}
.chat-link:hover,.chat-link:focus-visible{background:var(--green);color:#fff}

.chat-typing p{display:flex;gap:4px;padding:14px 13px}
.chat-typing i{width:6px;height:6px;border-radius:50%;background:#b4b5c6;animation:chatDot 1s ease-in-out infinite}
.chat-typing i:nth-child(2){animation-delay:.15s}
.chat-typing i:nth-child(3){animation-delay:.3s}
@keyframes chatDot{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}

.chat-quick{display:flex;flex-wrap:wrap;gap:7px;padding:0 14px;background:var(--soft)}
.chat-quick:empty{display:none}
.chat-chip{min-height:36px;padding:8px 13px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--deep);font:700 11px/1 'Manrope',sans-serif;cursor:pointer}
.chat-chip:hover,.chat-chip:focus-visible{border-color:var(--green);background:var(--mint);color:var(--green)}

.chat-form{display:flex;gap:8px;padding:12px 14px 8px;background:var(--soft);border-top:1px solid var(--line)}
.chat-form input{flex:1;min-width:0;min-height:42px;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font:13px/1.3 'DM Sans',sans-serif}
.chat-form input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(0,164,91,.12)}
.chat-form button{display:grid;place-items:center;flex:0 0 auto;width:42px;height:42px;border:0;border-radius:50%;background:var(--green);color:#fff;cursor:pointer}
.chat-form button:hover,.chat-form button:focus-visible{background:#078d51}
.chat-note{margin:0;padding:0 14px 12px;background:var(--soft);color:#9292a2;font-size:10px;line-height:1.4}

@media(max-width:920px),(pointer:coarse){
  .chat-fab{width:60px;height:60px}
  .chat-panel{bottom:calc(max(20px,env(safe-area-inset-bottom)) + 222px)}
  .chat-form input{font-size:16px}
}
/* Sur petit ecran le panneau prend toute la largeur, au-dessus des bulles */
@media(max-width:560px){
  .chat-panel{left:12px;right:12px;width:auto;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 76px);max-height:min(72vh,72dvh)}
}
@media(prefers-reduced-motion:reduce){
  .chat-fab,.chat-fab:hover{transition:none;transform:none}
  .chat-online:after,.chat-typing i{animation:none}
}

/* Petit ecran : le panneau occupe l'ecran et les bulles s'effacent pour ne pas se superposer */
@media(max-width:560px){
  .chat-panel{top:max(12px,env(safe-area-inset-top));bottom:max(12px,env(safe-area-inset-bottom));max-height:none}
  body.chat-open .fab-stack{display:none}
}

/* ============ Carrousel des realisations ============ */
.carousel{position:relative;border-radius:var(--radius);background:#eef0f8;box-shadow:0 22px 48px rgba(36,33,95,.18)}
.carousel:focus-visible{outline:3px solid var(--green);outline-offset:4px}
/* Tant que le JS n'a pas rendu les diapositives, on reserve la place */
.carousel:not([data-ready]){min-height:420px}

.carousel-viewport{overflow:hidden;border-radius:var(--radius)}
.carousel-track{display:flex;margin:0;padding:0;list-style:none;transition:transform .55s cubic-bezier(.4,0,.2,1)}
.carousel-slide{position:relative;flex:0 0 100%;min-width:0}
.carousel-slide>img{display:block;width:100%;height:clamp(300px,42vw,520px);object-fit:cover;object-position:center}
.carousel-slide:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(20,18,55,.82));pointer-events:none}

.carousel-caption{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:28px clamp(22px,4vw,46px) calc(28px + 34px);color:#fff}
.carousel-caption h3{margin:0 0 9px;font:800 clamp(22px,2.6vw,32px)/1.1 'Manrope',sans-serif;letter-spacing:-.04em}
.carousel-caption p{max-width:560px;margin:0;color:rgba(255,255,255,.84);font-size:13px;line-height:1.6}

.carousel-arrow{position:absolute;z-index:3;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:46px;height:46px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(20,18,55,.42);color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease}
.carousel-arrow.is-prev{left:16px}
.carousel-arrow.is-next{right:16px}
.carousel-arrow:hover,.carousel-arrow:focus-visible{background:var(--green);border-color:var(--green)}
.carousel-arrow:focus-visible{outline:2px solid #fff;outline-offset:2px}

.carousel-dots{position:absolute;z-index:3;left:0;right:0;bottom:18px;display:flex;justify-content:center;gap:9px}
.carousel-dot{width:9px;height:9px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.45);cursor:pointer;transition:width .25s ease,background .25s ease}
.carousel-dot.is-active{width:26px;border-radius:999px;background:#fff}
.carousel-dot:focus-visible{outline:2px solid #fff;outline-offset:3px}

@media(max-width:920px),(pointer:coarse){
  /* Cibles tactiles : les puces gardent 9px de visuel mais 44px de zone cliquable */
  .carousel-dots{bottom:14px;gap:4px}
  .carousel-dot{width:44px;height:44px;border-radius:999px;background:transparent;position:relative}
  .carousel-dot:before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.5);transition:width .25s ease,background .25s ease}
  .carousel-dot.is-active{width:44px;background:transparent}
  .carousel-dot.is-active:before{width:26px;border-radius:999px;background:#fff}
  .carousel-arrow{width:48px;height:48px}
  .carousel-caption{padding-bottom:calc(22px + 42px)}
}
@media(max-width:680px){
  .carousel:not([data-ready]){min-height:320px}
  .carousel-arrow.is-prev{left:10px}
  .carousel-arrow.is-next{right:10px}
  .carousel-caption p{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
  .carousel-track{transition:none}
  .carousel-arrow,.carousel-dot{transition:none}
}

/* ============ Bloc media (video ou photo explicative) ============ */
.media-frame{position:relative;margin:0;overflow:hidden;border-radius:var(--radius);background:#eef0f8;box-shadow:0 22px 48px rgba(36,33,95,.18)}
.media-frame>img,.media-frame>.media-video{display:block;width:100%;height:clamp(280px,40vw,500px);object-fit:cover;object-position:center;background:#14123a}
.media-frame>figcaption{padding:13px clamp(16px,3vw,26px);background:var(--deep);color:rgba(255,255,255,.78);font-size:11px;line-height:1.5}

/* Video dans le carrousel */
.carousel-video{display:block;width:100%;height:clamp(300px,42vw,520px);object-fit:cover;background:#14123a}
/* Les controles du lecteur doivent rester cliquables sous le degrade */
.carousel-slide:has(.carousel-video):after{display:none}
.carousel-slide:has(.carousel-video) .carousel-caption{position:static;padding:18px clamp(18px,3vw,30px) 46px;background:var(--deep)}
.carousel-pending{position:absolute;z-index:3;top:14px;left:14px;padding:7px 12px;border-radius:999px;background:rgba(20,18,55,.78);color:#fff;font:700 10px/1 'Manrope',sans-serif;letter-spacing:.06em}

/* Grille de vitrines a 4 entrees */
.showcase-grid.four{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){.showcase-grid.four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.showcase-grid.four{grid-template-columns:1fr}}

/* Equivalent sans :has(), pour Firefox < 121 et Safari < 15.4 */
.carousel-slide.has-video:after{display:none}
.carousel-slide.has-video .carousel-caption{position:static;padding:18px clamp(18px,3vw,30px) 46px;background:var(--deep)}

/* ============ References : grille video + grille photo ============ */
.video-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-bottom:18px}
.video-card{position:relative;margin:0;overflow:hidden;border-radius:18px;background:#14123a;box-shadow:0 16px 36px rgba(36,33,95,.16)}
.video-card>.media-video,.video-card>img{display:block;width:100%;height:clamp(200px,24vw,300px);object-fit:cover;background:#14123a}
.video-card>figcaption{padding:12px 16px;background:var(--deep);color:rgba(255,255,255,.8);font:700 11px/1.4 'Manrope',sans-serif}

.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.photo-grid>img{display:block;width:100%;height:clamp(150px,16vw,210px);object-fit:cover;object-position:center;border-radius:14px;background:#eef0f8;box-shadow:0 10px 24px rgba(36,33,95,.1)}

@media(max-width:920px){
  .video-grid{grid-template-columns:1fr}
  .photo-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:560px){
  .photo-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .photo-grid>img{height:130px}
}

/* ============ Etats des grilles rendues depuis les donnees ============ */
.grid-empty{grid-column:1/-1;margin:0;padding:28px;border:1px dashed var(--line);border-radius:14px;color:var(--muted);font-size:13px;text-align:center}
.product-badge{position:absolute;z-index:2;top:10px;left:10px;padding:6px 11px;border-radius:999px;background:rgba(20,18,55,.8);color:#fff;font:700 9px/1 'Manrope',sans-serif;letter-spacing:.07em}
.product-pdf{display:inline-flex;align-items:center;min-height:38px;margin:10px 3px 0;color:var(--purple);font-size:11px;font-weight:700;text-decoration:underline}
.product-pdf:hover,.product-pdf:focus-visible{color:var(--green)}
/* Reserve la hauteur pendant le rendu, pour eviter le saut de mise en page */
[data-products]:empty,[data-media-gallery]:empty{min-height:420px}
@media(max-width:680px){[data-products]:empty,[data-media-gallery]:empty{min-height:300px}}

/* ============ Lien retour contextuel ============ */
.back-link{display:inline-flex;align-items:center;gap:8px;min-height:36px;margin-bottom:14px;padding:8px 15px 8px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font:700 11px/1 'Manrope',sans-serif;transition:border-color .2s ease,color .2s ease,transform .2s ease}
.back-link span{font-size:15px;line-height:1}
.back-link:hover,.back-link:focus-visible{border-color:var(--green);color:var(--green);transform:translateX(-3px)}
.back-link:focus-visible{outline:2px solid var(--green);outline-offset:3px}
.home-page .back-link{background:transparent}
@media(max-width:920px),(pointer:coarse){.back-link{min-height:44px;padding:10px 18px 10px 14px}}
@media(prefers-reduced-motion:reduce){.back-link{transition:none}.back-link:hover{transform:none}}

/* ============ Paiement ============ */
.checkout-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr);gap:clamp(24px,4vw,46px);align-items:start}
.checkout-block{margin:0 0 26px;padding:0;border:0}
.checkout-block legend{padding:0 0 16px;color:var(--deep);font:800 14px/1 'Manrope',sans-serif;letter-spacing:-.02em}
.checkout-error{margin:0 0 18px;padding:14px 18px;border:1px solid var(--line);border-left:3px solid #c65d58;border-radius:10px;background:#fdf3f2;color:var(--ink);font-size:13px;line-height:1.55}

.pay-methods{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}
.pay-method{position:relative;display:flex;align-items:center;gap:13px;min-height:68px;padding:13px 15px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}
.pay-method:hover{border-color:var(--green)}
.pay-method input{position:absolute;opacity:0;width:0;height:0}
.pay-method:has(input:checked){border-color:var(--green);box-shadow:0 0 0 3px rgba(0,164,91,.12)}
.pay-method:has(input:focus-visible){outline:3px solid var(--purple);outline-offset:2px}
.pay-logo{display:grid;place-items:center;flex:0 0 auto;width:46px;height:46px;border-radius:11px;background:var(--pay-color,#444);color:#fff;font:800 14px/1 'Manrope',sans-serif;letter-spacing:-.02em}
.pay-text{display:grid;gap:3px}
.pay-text b{font:700 13px/1.2 'Manrope',sans-serif;color:var(--ink)}
.pay-text small{color:var(--muted);font-size:11px}

.checkout-form .form-row{margin-bottom:0}
.checkout-form label{display:grid;gap:8px;margin-bottom:20px;color:var(--muted);font:700 11px/1 'Manrope',sans-serif}
.checkout-form label span{color:var(--green)}
.checkout-form input{width:100%;min-height:46px;padding:13px 15px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font:14px/1.35 'DM Sans',sans-serif}
.checkout-form input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 4px rgba(0,164,91,.1)}
.checkout-form.was-validated input:invalid{border-color:#d47369}
.checkout-submit{width:100%;margin-top:8px}
.checkout-note{margin:14px 0 0;color:var(--muted);font-size:11px;line-height:1.5}

.checkout-summary{position:sticky;top:100px;padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff}
.checkout-summary>img{display:block;width:100%;height:150px;object-fit:cover;border-radius:12px;background:#eef0f8}
.checkout-summary h2{margin:15px 2px 14px;font:700 17px/1.2 'Manrope',sans-serif;letter-spacing:-.03em;color:var(--deep)}
.checkout-summary dl,.result-details{display:grid;gap:9px;margin:0}
.checkout-summary dl>div,.result-details>div{display:flex;justify-content:space-between;gap:14px;font-size:12px}
.checkout-summary dt,.result-details dt{color:var(--muted)}
.checkout-summary dd,.result-details dd{margin:0;color:var(--ink);text-align:right}
.checkout-summary .is-total{margin-top:6px;padding-top:12px;border-top:1px solid var(--line)}
.checkout-summary .is-total dt{color:var(--deep);font-weight:700}
.checkout-summary .is-total dd{color:var(--deep);font:800 18px/1 'Manrope',sans-serif}
.checkout-hint{margin:14px 2px 0;color:var(--muted);font-size:10px;line-height:1.5}

/* Pages de retour */
.result-wrap{display:grid;place-items:center;min-height:52vh}
.result-card{width:min(560px,100%);padding:34px clamp(20px,4vw,38px) 30px;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 20px 48px rgba(36,33,95,.12);text-align:center}
.result-icon{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 20px;border-radius:50%;font-size:28px;color:#fff}
.result-card.is-success .result-icon{background:var(--green)}
.result-card.is-failed .result-icon{background:#c65d58}
.result-card.is-pending .result-icon{background:var(--purple)}
.result-card.is-unknown .result-icon{background:#9292a2}
.result-card h1{margin:0 0 10px;font:800 clamp(22px,3vw,28px)/1.15 'Manrope',sans-serif;letter-spacing:-.04em;color:var(--deep)}
.result-card>p{margin:0 0 22px;color:var(--muted);font-size:13px;line-height:1.6}
.result-details{margin:0 0 24px;padding:16px;border-radius:12px;background:var(--soft);text-align:left}
.result-details code{font-size:11px;word-break:break-all}
.result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}

/* Guichet simule */
.sandbox-card{width:min(520px,100%)}
.sandbox-flag{margin:0 0 18px;padding:10px 14px;border-radius:9px;background:#fff4e2;color:#a9671a;font:700 11px/1.4 'Manrope',sans-serif;text-align:center}
.sandbox-actions{display:grid;gap:9px;margin-top:22px}

@media(max-width:920px){
  .checkout-layout{grid-template-columns:1fr}
  .checkout-summary{position:static;order:-1}
}
@media(max-width:560px){.pay-methods{grid-template-columns:1fr}}

/* Equivalent sans :has(), applique par checkout.js */
.pay-method.is-selected{border-color:var(--green);box-shadow:0 0 0 3px rgba(0,164,91,.12)}

/* Deux actions par carte produit : acheter, puis demander un devis */
.product-card .product-cta.is-secondary{margin-top:8px;padding-top:11px;padding-bottom:11px;font-size:12px}

/* ============ Legende compacte du footer ============ */
.footer-signature{display:grid;gap:3px;margin:14px 0 0}
.footer-signature b{color:var(--deep);font:800 12px/1.3 'Manrope',sans-serif;letter-spacing:-.01em}
.footer-signature b span{font-size:13px;line-height:1}
.footer-signature em{color:var(--green);font:600 11px/1.4 'DM Sans',sans-serif;font-style:italic}
.footer-brand .footer-signature + p{margin-top:9px}

/* Bandeau pleine largeur, juste au-dessus de la ligne de copyright */
.footer-legend{grid-column:1/-1;max-width:78ch;margin:26px 0 0;color:var(--muted);font-size:10.5px;line-height:1.6}

@media(max-width:920px){.footer-legend{margin-top:20px}}
@media(max-width:680px){.footer-legend{font-size:10px;line-height:1.55}}

/* Drapeau du Mali, aligne sur la ligne de texte */
.flag-ml{display:inline-block;vertical-align:-2px;margin-left:3px;border-radius:2px;box-shadow:0 0 0 1px rgba(36,33,95,.14)}

/* ============ Avis et temoignages clients ============ */
.stars{display:inline-flex;gap:2px;vertical-align:middle}
.stars svg.is-on{fill:#f5a623}
.stars svg.is-off{fill:#dcdce4}

.reviews-summary{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:26px;padding:16px 20px;border:1px solid var(--line);border-radius:14px;background:#fff}
.reviews-score{display:flex;align-items:baseline;gap:4px}
.reviews-score b{color:var(--deep);font:800 30px/1 'Manrope',sans-serif;letter-spacing:-.04em}
.reviews-score small{color:var(--muted);font-size:13px}
.reviews-count{color:var(--muted);font-size:12px}

.reviews-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.review-card{display:flex;flex-direction:column;gap:12px;padding:20px;border:1px solid var(--line);border-radius:16px;background:#fff;transition:transform .25s ease,box-shadow .25s ease}
.review-card:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(36,33,95,.1)}
.review-comment{margin:0;color:var(--ink);font-size:13px;line-height:1.65}
.review-foot{display:grid;gap:3px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}
.review-foot strong{color:var(--deep);font:700 12px/1.3 'Manrope',sans-serif}
.review-foot small{color:var(--muted);font-size:11px}
.review-date{color:#a3a3b0 !important}
.review-verified{justify-self:start;margin-top:5px;padding:4px 9px;border-radius:999px;background:var(--mint);color:var(--green);font:700 9px/1.4 'Manrope',sans-serif}

.reviews-empty{margin:0;padding:26px;border:1px dashed var(--line);border-radius:14px;color:var(--muted);font-size:13px;line-height:1.6;text-align:center}
.reviews-action{display:flex;justify-content:center;margin-top:26px}

/* Fenetre de depot d'avis */
.review-overlay{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:rgba(20,18,55,.68);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.review-modal{width:min(560px,100%);max-height:100%;overflow-y:auto;border-radius:20px;background:#fff;box-shadow:0 28px 64px rgba(10,8,40,.42)}
.review-modal header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line);background:#fff}
.review-modal h2{margin:0;font:800 19px/1.2 'Manrope',sans-serif;letter-spacing:-.03em;color:var(--deep)}
.review-close{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--deep);cursor:pointer}
.review-close:hover,.review-close:focus-visible{border-color:var(--green);color:var(--green)}
#review-form{display:grid;gap:4px;padding:22px}
#review-form label{display:grid;gap:7px;margin-bottom:16px;color:var(--muted);font:700 11px/1 'Manrope',sans-serif}
#review-form label span{color:var(--green)}
#review-form input,#review-form select,#review-form textarea{width:100%;min-height:44px;padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font:14px/1.4 'DM Sans',sans-serif}
#review-form textarea{resize:vertical;min-height:110px}
#review-form input:focus,#review-form select:focus,#review-form textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(0,164,91,.12)}
#review-form.was-validated input:invalid,#review-form.was-validated textarea:invalid{border-color:#d47369}
.review-counter{color:#a3a3b0;font-size:10px;text-align:right}

.rating-field{margin:0 0 18px;padding:0;border:0}
.rating-field legend{padding:0 0 10px;color:var(--muted);font:700 11px/1 'Manrope',sans-serif}
.rating-field legend span{color:var(--green)}
.rating-input{display:flex;gap:4px}
.rating-star{padding:4px;border:0;background:transparent;cursor:pointer;line-height:0}
.rating-star svg{fill:#dcdce4;transition:fill .15s ease,transform .15s ease}
.rating-star.is-on svg{fill:#f5a623}
.rating-star:hover svg{transform:scale(1.12)}
.rating-star:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:6px}

/* Champ piege a robots : invisible, mais pas display:none (certains robots l'ignorent) */
.review-honeypot{position:absolute !important;left:-9999px;width:1px;height:1px;overflow:hidden}
.review-submit{width:100%;margin-top:4px}
.review-note{margin:12px 0 0;color:var(--muted);font-size:10.5px;line-height:1.5}
.review-thanks{margin:0 0 18px;padding:16px 18px;border-radius:12px;background:var(--mint);color:var(--green);font-size:13px;line-height:1.6}

@media(max-width:920px){.reviews-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.reviews-grid{grid-template-columns:1fr}.reviews-score b{font-size:26px}}
@media(prefers-reduced-motion:reduce){.review-card,.review-card:hover,.rating-star svg{transition:none;transform:none}}

/* ============ Visuels pilotes depuis l'administration ============ */
/* Reserve la place avant chargement, pour eviter le saut de mise en page */
[data-site-media]:not([data-ready]){background:#eef0f8}
.page-hero-photo>video,.showcase-photo>video,.media-frame>video{display:block;width:100%;height:100%;object-fit:cover;background:#14123a}
.page-hero-photo>video{position:absolute;inset:0}
.showcase-photo>video{position:absolute;inset:0}
.media-frame>video{height:clamp(280px,40vw,500px)}
.media-frame>figcaption{display:grid;gap:3px;padding:13px clamp(16px,3vw,26px);background:var(--deep);color:rgba(255,255,255,.78);font-size:11px;line-height:1.5}
.media-frame>figcaption strong{color:#fff;font:700 12px/1.3 'Manrope',sans-serif}

/* ============ Animations et micro-interactions ============ */

/* Variantes d'apparition. `.reveal` de base monte de 22px ; on ajoute
   un glissement lateral et un leger zoom pour varier les sections. */
.reveal-left{transform:translateX(-26px)}
.reveal-right{transform:translateX(26px)}
.reveal-zoom{transform:scale(.96)}
.reveal-fade{transform:none}
.reveal-left.is-visible,.reveal-right.is-visible,.reveal-zoom.is-visible{transform:none}
/* Cascade : chaque enfant arrive un cran apres le precedent */
.reveal-stagger>*{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease}
.reveal-stagger.is-visible>*{opacity:1;transform:none}
.reveal-stagger.is-visible>*:nth-child(2){transition-delay:.09s}
.reveal-stagger.is-visible>*:nth-child(3){transition-delay:.18s}
.reveal-stagger.is-visible>*:nth-child(4){transition-delay:.27s}

/* ── Section « en chiffres » ── */
/* Trois tuiles, centrees et de largeur egale. La grille est bornee pour
   qu'elles ne s'etirent pas demesurement sur un grand ecran. */
.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:1040px;margin:0 auto}
.stat-tile{display:grid;gap:6px;padding:26px 22px;border:1px solid var(--line);border-radius:18px;background:#fff;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.stat-tile:hover{transform:translateY(-6px);border-color:var(--green);box-shadow:0 18px 38px rgba(36,33,95,.12)}
.stat-number{display:block;color:var(--deep);font:800 clamp(34px,4.4vw,52px)/1 'Manrope',sans-serif;letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.stat-tile strong{color:var(--ink);font:700 13px/1.3 'Manrope',sans-serif}
.stat-tile small{color:var(--muted);font-size:11px;line-height:1.55}
.stats-note{display:flex;justify-content:center;margin:26px 0 0}

/* ── Badge de disponibilite ── */
.live-badge{display:inline-flex;align-items:center;gap:9px;padding:8px 15px;border-radius:999px;border:1px solid rgba(0,164,91,.35);background:var(--mint);color:var(--green);font:700 11px/1.3 'Manrope',sans-serif}
.live-badge i{position:relative;flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:#25d366}
/* Halo qui pulse en permanence : le service en ligne l'est a toute heure */
.live-badge i:after{content:'';position:absolute;inset:-3px;border-radius:50%;border:2px solid #25d366;animation:livePulse 2.1s ease-out infinite}
/* Variante posee sur fond sombre, dans l'en-tete de l'assistant */
.live-badge.is-on-dark{padding:0;border:0;background:transparent;color:rgba(255,255,255,.75);font-size:10px;font-style:normal}
@keyframes livePulse{0%{transform:scale(1);opacity:.85}100%{transform:scale(2.3);opacity:0}}

.contact-live{margin:22px 0 0}

/* ── Survols : boutons d'action ── */
.button-green{position:relative;overflow:hidden}
.button-green:hover,.button-green:focus-visible{box-shadow:0 10px 26px rgba(0,164,91,.3)}
.whatsapp-fab:hover,.whatsapp-fab:focus-visible{box-shadow:0 10px 30px rgba(37,211,102,.5)}
.email-fab:hover,.email-fab:focus-visible{box-shadow:0 10px 30px rgba(91,88,165,.5)}
.chat-fab:hover,.chat-fab:focus-visible{box-shadow:0 10px 30px rgba(36,33,95,.5)}

/* ── Survols : photos de galerie et vitrines ── */
.photo-grid>img{transition:transform .4s ease,box-shadow .3s ease}
.photo-grid>img:hover{transform:scale(1.04);box-shadow:0 18px 36px rgba(36,33,95,.2)}
.showcase-photo,.product-photo,.card-media,.showcase-card .showcase-photo{overflow:hidden}
.showcase-photo>img,.product-photo>img,.card-media>img{transition:transform .45s ease}
.showcase-card:hover .showcase-photo>img,
.product-card:hover .product-photo>img,
.detail-card:hover .card-media>img{transform:scale(1.06)}
.video-card{transition:transform .25s ease,box-shadow .25s ease}
.video-card:hover{transform:translateY(-4px);box-shadow:0 20px 40px rgba(36,33,95,.2)}

/* ── Mobile : on allege ── */
@media(max-width:920px){
  /* Trois colonnes deviennent trop etroites sous 920px. On passe a une
     seule colonne : deux laisseraient une tuile orpheline. */
  .stats-grid{grid-template-columns:1fr;max-width:520px}
  /* Transitions plus courtes : un long fondu donne une impression de lenteur */
  .reveal{transition-duration:.45s}
  .reveal-stagger>*{transition-duration:.38s}
}
@media(max-width:560px){

  .stat-tile{padding:20px 18px}
}
/* Sur ecran tactile, le survol n'existe pas : ces effets ne servent a rien
   et coutent des calculs inutiles au navigateur. */
@media(hover:none){
  .photo-grid>img:hover,.showcase-card:hover .showcase-photo>img,
  .product-card:hover .product-photo>img,.detail-card:hover .card-media>img,
  .stat-tile:hover,.video-card:hover{transform:none;box-shadow:none}
}

@media(prefers-reduced-motion:reduce){
  .reveal-left,.reveal-right,.reveal-zoom,.reveal-stagger>*{opacity:1;transform:none;transition:none}
  .stat-tile,.photo-grid>img,.showcase-photo>img,.product-photo>img,.card-media>img,.video-card{transition:none}
  .stat-tile:hover,.photo-grid>img:hover,.video-card:hover{transform:none}
  .live-badge i:after{animation:none}
}

/* ============ Cartes de domaines : survol, focus et enfoncement ============ */
.orientation-card,.showcase-card{
  transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s ease,border-color .3s ease;
  -webkit-tap-highlight-color:transparent;
}
.orientation-card .card-icon{transition:transform .3s ease,border-color .3s ease,background .3s ease}
.orientation-card strong b,.showcase-card strong b{transition:transform .3s ease}
.showcase-photo>img{transition:transform .35s ease}

/* Survol et focus clavier : meme traitement, pour que la navigation au clavier
   beneficie du meme repere visuel. */
.orientation-card:hover,.orientation-card:focus-visible{
  transform:translateY(-8px);
  box-shadow:0 24px 44px rgba(36,33,95,.3),
             inset 0 0 0 1px rgba(255,255,255,.5),
             inset 0 0 26px rgba(255,255,255,.16);
}
.orientation-card:hover .card-icon,.orientation-card:focus-visible .card-icon{
  transform:scale(1.05);border-color:rgba(255,255,255,.85);background:rgba(255,255,255,.14);
}
.orientation-card:hover strong b,.orientation-card:focus-visible strong b{transform:translateX(8px)}

.showcase-card:hover,.showcase-card:focus-visible{
  transform:translateY(-8px);border-color:var(--green);
  box-shadow:0 24px 44px rgba(36,33,95,.18),0 0 0 1px rgba(0,164,91,.35);
}
.showcase-card:hover .showcase-photo>img,.showcase-card:focus-visible .showcase-photo>img{transform:scale(1.05)}
.showcase-card:hover strong b,.showcase-card:focus-visible strong b{transform:translateX(8px)}

/* Enfoncement. Place APRES :hover pour l'emporter au moment du clic. */
.orientation-card.is-pressed,.showcase-card.is-pressed{
  transform:scale(.95);
  transition-duration:.12s;
}
.orientation-card.is-pressed .card-icon,
.showcase-card.is-pressed .showcase-photo>img{transform:scale(1)}

/* Sur ecran tactile, `:hover` reste colle apres le tap : on le neutralise et
   on ne garde que l'enfoncement, qui suit vraiment le doigt. */
@media(hover:none){
  .orientation-card:hover,.showcase-card:hover{transform:none;box-shadow:none;border-color:var(--line)}
  .orientation-card:hover .card-icon{transform:none;border-color:rgba(255,255,255,.35);background:transparent}
  .orientation-card:hover strong b,.showcase-card:hover strong b{transform:none}
  .showcase-card:hover .showcase-photo>img{transform:none}
}

@media(prefers-reduced-motion:reduce){
  .orientation-card,.showcase-card,.orientation-card .card-icon,
  .orientation-card strong b,.showcase-card strong b,.showcase-photo>img{transition:none}
  .orientation-card.is-pressed,.showcase-card.is-pressed{transform:none}
  .orientation-card:hover,.orientation-card:focus-visible,
  .showcase-card:hover,.showcase-card:focus-visible{transform:none}
}

/* ============ Lecteur video universel ============ */
.video-file,.video-embed{display:block;width:100%;height:100%;border:0;background:#14123a}
/* Les plateformes externes imposent un format 16/9 */
.video-embed{aspect-ratio:16/9;min-height:200px}
/* Repli : l'affiche du service occupe toute la place du lecteur, avec une
   mention sobre. Pas de bandeau rouge sur une page commerciale : le visiteur
   ne peut rien y faire, l'inquieter ne sert a rien. */
.video-fallback{position:relative;display:block;width:100%;min-height:180px;
  overflow:hidden;background:#eef0f8;border-radius:inherit}
.video-fallback-poster{display:block;width:100%;height:100%;object-fit:cover}
.video-fallback-label{position:absolute;left:12px;bottom:12px;margin:0;padding:7px 13px;
  border-radius:999px;background:rgba(20,18,58,.78);color:#fff;
  font:600 11.5px/1.3 'Manrope',sans-serif;letter-spacing:.01em;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);max-width:calc(100% - 24px)}
/* Dans l'administration, le diagnostic prime sur l'esthetique : il doit se
   lire en entier, meme long, pour que le chemin fautif soit identifiable. */
.video-fallback.is-diagnostic .video-fallback-poster{opacity:.4}
.video-fallback.is-diagnostic .video-fallback-label{position:absolute;inset:auto 10px 10px;
  background:#4a2420;font-weight:500;line-height:1.45;white-space:normal;word-break:break-word}

/* Dans un cadre deja dimensionne, le lecteur en epouse la hauteur */
.page-hero-photo>.video-file,.page-hero-photo>.video-embed,.page-hero-photo>.video-fallback,
.showcase-photo>.video-file,.showcase-photo>.video-embed,.showcase-photo>.video-fallback{position:absolute;inset:0;aspect-ratio:auto}
.media-frame>.video-file,.media-frame>.video-embed,.media-frame>.video-fallback{height:clamp(280px,40vw,500px);aspect-ratio:auto}
.carousel-slide>.video-file,.carousel-slide>.video-embed,.carousel-slide>.video-fallback{height:clamp(300px,42vw,520px);aspect-ratio:auto;object-fit:cover}
.video-card>.video-file,.video-card>.video-embed,.video-card>.video-fallback{height:clamp(200px,24vw,300px);aspect-ratio:auto}

/* ============ Visuel de remplacement ============ */
/* Quand une image ne charge pas, le composant safe-image la remplace par un
   SVG. Il occupe la meme place : la mise en page ne bouge pas. */
img{max-width:100%}
/* Pas de width/height imposes ici : le remplacant doit garder la taille que
   son conteneur lui donnait deja, sinon il deforme la grille. */
img.is-missing{object-fit:contain;background:#eef0f8;padding:4%}

/* ============ Carte Calendrier & Meteo ============ */
/* Occupe exactement la place de l'ancien bloc « PML » : c'est .about-mark
   qui porte la cellule de grille, la carte se contente de la remplir. */
.widget-clock{position:relative;z-index:1;display:grid;justify-items:center;gap:0;
  width:min(300px,86%);padding:26px 24px 22px;border-radius:20px;
  border:1px solid rgba(91,88,165,.16);
  background:linear-gradient(158deg,rgba(255,255,255,.96),rgba(243,244,253,.92));
  box-shadow:0 18px 40px rgba(36,33,95,.11);
  -webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);text-align:center}

.wc-kicker{display:inline-flex;align-items:center;gap:7px;color:var(--green);
  font:800 9px/1 'Manrope',sans-serif;letter-spacing:.15em;text-transform:uppercase}
/* Pastille qui respire : signale une donnee vivante, sans texte superflu. */
.wc-kicker i{width:6px;height:6px;border-radius:50%;background:var(--green);
  box-shadow:0 0 0 3px rgba(0,164,91,.16);animation:wcPulse 2.4s ease-in-out infinite}
@keyframes wcPulse{0%,100%{opacity:1}50%{opacity:.35}}

.wc-date{margin:14px 0 0;color:var(--muted);font-size:12px;line-height:1.4}
.wc-time{margin:4px 0 0;color:var(--purple);
  font:800 clamp(34px,4.6vw,44px)/1 'Manrope',sans-serif;letter-spacing:-.045em;
  /* Chiffres de largeur fixe : sans cela, la carte tressaute a chaque seconde. */
  font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1}

.wc-weather{display:flex;align-items:center;justify-content:center;gap:12px;
  width:100%;margin-top:18px;padding-top:16px;border-top:1px solid rgba(91,88,165,.14)}
.wc-weather[hidden]{display:none}
.wc-icon{display:grid;place-items:center;width:44px;height:44px;flex:none;
  border-radius:13px;background:rgba(91,88,165,.09);color:var(--purple)}
/* Le soleil se pare de la couleur du soleil, la pluie reste sobre. */
.wc-icon[data-kind=clear]{background:rgba(245,176,37,.14);color:#d9900f}
.wc-icon[data-kind=partly]{background:rgba(245,176,37,.1);color:#b98a35}
.wc-icon[data-kind=storm],.wc-icon[data-kind=rain]{background:rgba(82,121,185,.13);color:#3f66a8}
.wc-readout{display:grid;justify-items:start;gap:2px;text-align:left}
.wc-readout b{color:var(--deep);font:800 22px/1 'Manrope',sans-serif;letter-spacing:-.04em;
  font-variant-numeric:tabular-nums}
.wc-readout small{color:var(--muted);font-size:11px;line-height:1.3}

/* La section « A propos » restait sur deux colonnes meme sur telephone : la
   colonne de gauche tombait a 39 px de large. Le defaut existait deja avec
   l'ancien bloc « PML », qui debordait simplement sans qu'on le remarque.
   On empile, comme le font deja les autres sections du site. */
@media(max-width:920px){
  .about-band{grid-template-columns:1fr;gap:42px}
  .about-mark{min-height:300px}
  .widget-clock{width:min(330px,92%)}
}
@media(max-width:680px){
  .about-mark{min-height:270px}
  .widget-clock{width:min(340px,92%);padding:24px 20px 20px}
  .wc-time{font-size:40px}
}
@media(prefers-reduced-motion:reduce){.wc-kicker i{animation:none}}

/* ============ Carte de localisation ============ */
.map-block{display:grid;gap:14px}
/* Le cadre porte la hauteur et les angles : l'iframe s'y encastre, et aucun
   debordement n'est possible quelle que soit la taille de l'ecran. */
.map-shell{position:relative;width:100%;height:clamp(260px,34vw,420px);
  overflow:hidden;border-radius:var(--radius);background:#eef0f8;
  box-shadow:0 16px 36px rgba(36,33,95,.12)}
.map-frame{display:block;width:100%;height:100%;border:0}
.map-skeleton{position:absolute;inset:0;display:grid;place-items:center;
  color:var(--muted);font:600 12px/1.5 'DM Sans',sans-serif;text-align:center;padding:20px}

.map-directions{display:inline-flex;align-items:center;justify-content:center;gap:11px;
  /* 48 px de haut : une cible confortable au doigt, pas seulement a la souris. */
  min-height:48px;padding:13px 20px;border-radius:999px;
  background:var(--green);color:#fff;font:700 12.5px/1.2 'Manrope',sans-serif;
  transition:transform .2s ease,background .2s ease}
.map-directions:hover{background:#078d51;transform:translateY(-2px)}
.map-directions:active{transform:scale(.97)}
.map-directions svg{flex:none}
.map-directions.is-compact{background:transparent;color:var(--deep);
  border:1px solid var(--line);font-size:12px}
.map-directions.is-compact:hover{border-color:var(--green);color:var(--green);background:transparent}

.form-directions{margin:14px 0 0}
@media(max-width:680px){
  .map-shell{height:clamp(230px,52vw,300px)}
  /* Pleine largeur au doigt : plus facile a viser qu'un bouton centre. */
  .map-directions{width:100%}
  .map-directions span{font-size:12px}
}
@media(prefers-reduced-motion:reduce){.map-directions{transition:none}.map-directions:hover{transform:none}}

/* ============ Fenetre de confidentialite ============ */
.consent-overlay{position:fixed;inset:0;z-index:120;display:grid;place-items:center;
  padding:20px;background:rgba(20,18,58,.55);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  animation:consentFond .18s ease-out}
@keyframes consentFond{from{opacity:0}to{opacity:1}}

.consent-card{width:min(560px,100%);max-height:calc(100dvh - 40px);overflow:auto;
  display:grid;gap:0;border-radius:20px;background:#fff;
  box-shadow:0 30px 70px rgba(20,18,58,.3);animation:consentCarte .22s ease-out}
@keyframes consentCarte{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.consent-card>header{display:flex;align-items:start;justify-content:space-between;gap:16px;
  padding:24px 24px 0}
.consent-card h2{margin:0;font:800 21px/1.15 'Manrope',sans-serif;letter-spacing:-.045em;
  color:var(--deep)}
.consent-close{display:grid;place-items:center;flex:none;width:36px;height:36px;
  border-radius:50%;background:var(--soft);color:var(--muted);transition:background .2s ease}
.consent-close:hover{background:#e6e7f4;color:var(--deep)}

.consent-body{padding:14px 24px 4px;color:var(--muted);font-size:13px;line-height:1.65}
.consent-body p{margin:0 0 10px}
.consent-body strong{color:var(--deep)}

.consent-options{display:grid;gap:10px;padding:14px 24px 4px}
/* Chaque option porte son libelle ET sa consequence : un bouton « Refuser »
   seul n'apprend rien au visiteur sur ce qu'il refuse. */
.consent-option{display:grid;gap:5px;padding:15px 17px;border-radius:14px;
  border:1px solid var(--line);background:#fff;text-align:left;
  /* 48 px au minimum : une cible confortable au doigt. */
  min-height:48px;cursor:pointer;
  transition:border-color .2s ease,background .2s ease,transform .15s ease}
.consent-option strong{font:700 14px/1.25 'Manrope',sans-serif;color:var(--deep)}
.consent-option small{color:var(--muted);font-size:11.5px;line-height:1.55}
.consent-option:hover,.consent-option:focus-visible{transform:translateY(-2px)}
.consent-option:active{transform:scale(.99)}

.consent-option.is-accept{border-color:rgba(0,164,91,.45);background:rgba(0,164,91,.05)}
.consent-option.is-accept:hover,.consent-option.is-accept:focus-visible{
  border-color:var(--green);background:rgba(0,164,91,.1)}
.consent-option.is-accept strong{color:var(--green)}
.consent-option.is-refuse:hover,.consent-option.is-refuse:focus-visible{border-color:var(--purple)}
.consent-option.is-skip{background:var(--soft)}
.consent-option.is-skip:hover,.consent-option.is-skip:focus-visible{border-color:var(--muted)}

.consent-foot{margin:0;padding:14px 24px 22px;color:#8d8e9e;font-size:11px;line-height:1.5}
.consent-mail{color:var(--green);font-weight:700}
.consent-mail:hover{text-decoration:underline}

@media(max-width:680px){
  /* Feuille ancree en bas : le pouce atteint les boutons sans effort. */
  .consent-overlay{padding:0;place-items:end stretch}
  .consent-card{width:100%;max-height:92dvh;border-radius:20px 20px 0 0}
  .consent-card h2{font-size:19px}
  .consent-option{padding:14px}
  .consent-option small{font-size:11px}
}
@media(prefers-reduced-motion:reduce){
  .consent-overlay,.consent-card{animation:none}
  .consent-option{transition:none}
  .consent-option:hover,.consent-option:active{transform:none}
}
