/* ===== Polices ===== */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:300;font-display:swap;src:url('../fonts/montserrat-300.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/montserrat-400.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/montserrat-500.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/montserrat-600.woff2') format('woff2')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/montserrat-700.woff2') format('woff2')}

/* ===== Variables et base ===== */
:root{
  --tsa-text:#505050;
  --tsa-primary-hover:color-mix(in srgb,var(--tsa-primary) 82%,#000);
  --bs-body-font-family:'Montserrat',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --bs-body-color:var(--tsa-text);
  --bs-link-color:var(--tsa-dark);
  --bs-link-hover-color:var(--tsa-primary);
  --header-h:76px;--radius:.5rem;--shadow:0 .5rem 1.5rem rgba(4,57,39,.12);
}
html{scroll-behavior:smooth}
body{font-size:1rem;line-height:1.7}
h1,h2,h3,h4,h5,h6{color:var(--tsa-dark);font-weight:600;line-height:1.25}
h1,.h1{font-size:clamp(2rem,1.2rem + 3vw,3rem)}
h2,.h2{font-size:clamp(1.6rem,1.1rem + 2vw,2.25rem)}
h3{font-size:clamp(1.15rem,1rem + .8vw,1.4rem)}
a{text-decoration:none}
:focus-visible{outline:3px solid var(--tsa-accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* ===== Boutons ===== */
.btn-tsa,.btn-tsa-dark,.btn-hero{border:0;border-radius:0;padding:.75rem 1.75rem;text-transform:uppercase;font-weight:600;letter-spacing:.04em;color:#fff}
.btn-tsa{background:var(--tsa-primary)}.btn-tsa:hover,.btn-tsa:focus{background:var(--tsa-dark);color:#fff}
.btn-tsa-dark{background:var(--tsa-dark)}.btn-tsa-dark:hover,.btn-tsa-dark:focus{background:var(--tsa-primary);color:#fff}
.btn-hero{background:var(--tsa-success);margin-top:1.5rem}.btn-hero:hover,.btn-hero:focus{background:var(--tsa-primary);color:#fff}
.btn-sm.btn-tsa{padding:.45rem 1.1rem;font-size:.8rem}
.btn-filter{background:none;border:0;border-bottom:2px solid transparent;padding:.4rem .9rem;font-weight:500;color:var(--tsa-dark)}
.btn-filter:hover,.btn-filter.active{color:var(--tsa-primary);border-bottom-color:var(--tsa-primary)}
.filter-bar{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem;margin-bottom:2rem}

/* ===== Sections ===== */
.section{padding:clamp(3rem,6vw,5.5rem) 0}
.section-sm{padding:clamp(2rem,4vw,3.5rem) 0}
.sbg-white{background:#fff}.sbg-alt1{background:#f9f9f9}.sbg-alt2{background:#f5f5f5}.sbg-alt3{background:#f0f0f0}
.sbg-dark{background:var(--tsa-dark);color:#fff}.sbg-dark h2,.sbg-dark h3{color:#fff}
.has-bg-image{background:linear-gradient(rgba(0,0,0,.65),rgba(0,0,0,.65)),var(--section-bg) center/cover no-repeat;color:#fff}
.has-bg-image h2,.has-bg-image h3{color:#fff}
#values.has-bg-image{background:linear-gradient(rgba(255,255,255,.92),rgba(255,255,255,.92)),var(--section-bg) center/cover no-repeat;color:var(--tsa-text)}
#values.has-bg-image h2{color:var(--tsa-dark)}
@media (min-width:992px){.section-counters{background-attachment:fixed}}
.section-heading{margin-bottom:2.5rem}
.sub-text{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:.8rem;font-weight:600;color:var(--tsa-primary)}
.section-heading h2::after{content:"";display:block;width:60px;height:3px;background:var(--tsa-primary);margin:.75rem auto 0}
.section-heading:not(.text-center) h2::after{margin-left:0}
.rich-text ul{list-style:none;padding:0}
.rich-text ul li{padding-left:1.75rem;position:relative;margin-bottom:.5rem}
.rich-text ul li::before{content:"\F26A";font-family:"bootstrap-icons";color:var(--tsa-primary);position:absolute;left:0}
.rich-text img,.post-content img{max-width:100%;height:auto}
.shadow-img{box-shadow:var(--shadow)}
.signature-block{margin-top:1.5rem}.signature{max-height:70px;width:auto}

/* ===== En-tête ===== */
.site-header{position:sticky;top:0;z-index:1030;background:var(--tsa-dark);transition:background .3s,box-shadow .3s}
.topbar{background:var(--tsa-dark);color:#fff;font-size:.8125rem;padding:.4rem 0;border-bottom:1px solid rgba(255,255,255,.1)}
.topbar a{color:#fff}.topbar a:hover{color:var(--tsa-accent)}
.main-nav{background:var(--tsa-dark);padding:0}
.main-nav .container{display:flex;justify-content:space-between;align-items:center}
@media (min-width:992px){.main-nav .container{display:grid;grid-template-columns:1fr auto 1fr;gap:2rem}}
.nav-left{justify-content:flex-end}.nav-right{justify-content:flex-start}
.navbar-nav{flex-direction:row;gap:.25rem}
.brand-logo{height:56px;width:auto;transition:height .3s}
.navbar-brand{margin:0;padding:.5rem 0}
.main-nav .nav-link{position:relative;color:#fff;font-weight:500;font-size:.875rem;text-transform:uppercase;letter-spacing:.04em;padding:1.25rem .9rem}
.main-nav .nav-link::after{content:"";position:absolute;left:.9rem;right:.9rem;bottom:.7rem;height:3px;background:var(--tsa-primary);transform:scaleX(0);transition:transform .25s}
.main-nav .nav-link:hover::after,.main-nav .nav-link:focus::after,.main-nav .nav-link.active::after{transform:scaleX(1)}
.main-nav .nav-link:hover,.main-nav .nav-link:focus,.main-nav .nav-link.active{color:#fff}
.has-children{position:relative}
.main-nav .dropdown-menu{display:none;position:absolute;top:100%;left:0;min-width:220px;margin:0;background:var(--tsa-dark);border:0;border-radius:0;border-top:3px solid var(--tsa-primary);padding:.5rem 0}
.has-children:hover>.dropdown-menu,.has-children:focus-within>.dropdown-menu{display:block}
.dropdown-item{color:#fff;padding:.6rem 1.25rem;border-left:3px solid transparent}
.dropdown-item:hover,.dropdown-item:focus,.dropdown-item.active{background:rgba(255,255,255,.08);color:#fff;border-left-color:var(--tsa-primary)}
.site-header.is-overlay{position:fixed;inset:0 0 auto 0;width:100%;background:transparent}
.is-overlay .topbar,.is-overlay .main-nav{background:rgba(4,57,39,.6);backdrop-filter:blur(6px)}
.site-header.is-scrolled{background:var(--tsa-dark);box-shadow:0 2px 12px rgba(0,0,0,.25)}
.is-scrolled .topbar{display:none!important}
.is-overlay.is-scrolled .main-nav{background:var(--tsa-dark);backdrop-filter:none}
.is-scrolled .brand-logo{height:44px}
@media (max-width:991.98px){.brand-logo{height:44px}}
.navbar-toggler{border:0;color:#fff;font-size:2rem;padding:.25rem .5rem}.navbar-toggler:focus{box-shadow:none}
.social-icons a{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff}
.social-icons a:hover{background:var(--tsa-primary);color:#fff}
.social-sm a{width:26px;height:26px;font-size:.8rem}
.social-dark a{background:var(--tsa-dark)}
.offcanvas{background:var(--tsa-dark);color:#fff}
.mobile-nav a{display:block;color:#fff;text-transform:uppercase;font-weight:500;padding:.8rem 0;border-bottom:1px solid rgba(255,255,255,.1)}
.mobile-nav a.active{color:var(--tsa-accent)}

/* ===== Bannière de page ===== */
.page-banner{position:relative;isolation:isolate;color:#fff;background:var(--banner-bg) center/cover no-repeat;padding:clamp(3.5rem,9vw,7rem) 0}
.page-banner::before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.65);z-index:-1}
.page-banner h1{color:#fff}
.breadcrumb a{color:#fff}.breadcrumb a:hover{color:var(--tsa-accent)}
.breadcrumb-item.active{color:var(--tsa-accent)}
.breadcrumb-item+.breadcrumb-item::before{color:rgba(255,255,255,.6)}

/* ===== Hero ===== */
.hero{position:relative;color:#fff;overflow:hidden}
.hero .swiper-slide{position:relative;display:flex;align-items:center;min-height:clamp(520px,90vh,800px);padding-top:var(--header-h)}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-slide::before{content:"";position:absolute;inset:0;background:rgba(4,57,39,.55);z-index:1}
.hero-content{position:relative;z-index:2;text-align:center}
.hero-sub{font-weight:300;letter-spacing:1px;font-size:clamp(1.1rem,.8rem + 1.5vw,2rem);margin:0 0 .5rem;color:#fff}
.hero-title{color:#fff;font-weight:700;text-transform:uppercase;font-size:clamp(1.75rem,1rem + 3.5vw,3.5rem);margin:0}
.hero .swiper-button-prev,.hero .swiper-button-next{color:#fff;background:none;border:0;z-index:3}
.hero .swiper-pagination-bullet{background:#fff;opacity:.6}.hero .swiper-pagination-bullet-active{background:var(--tsa-primary);opacity:1;width:24px;border-radius:6px}
@media (max-width:767.98px){.hero .swiper-button-prev,.hero .swiper-button-next{display:none}}

/* ===== Composants ===== */
.card-metier{background:#fff;padding:2rem;border:1px solid transparent;transition:transform .25s,box-shadow .25s,border-color .25s;text-align:center}
.card-metier:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--tsa-primary)}
.card-metier-icon{margin:0 auto 1rem}
.card-metier-text{color:#666;margin-bottom:1rem}
.card-project{position:relative;aspect-ratio:4/3;overflow:hidden;background:#ddd}
.card-project-img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.card-project:hover .card-project-img{transform:scale(1.06)}
.card-project-overlay{position:absolute;inset:0;background:rgba(4,57,39,.8);color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:1rem;opacity:0;transition:opacity .3s}
.card-project:hover .card-project-overlay,.card-project:focus-within .card-project-overlay{opacity:1}
.card-project-overlay h3{font-size:1.1rem;margin:0}.card-project-overlay a{color:#fff}.card-project-overlay p{margin:.25rem 0 0;font-size:.85rem;color:#cfd8d3}
@media (hover:none){.card-project-overlay{opacity:1;inset:auto 0 0 0;background:linear-gradient(transparent,rgba(4,57,39,.9));align-items:flex-start;text-align:left}}
.card-post,.card-service{background:#fff;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .25s}
.card-post:hover,.card-service:hover{transform:translateY(-4px)}
.card-post-img,.card-service-img{display:block;overflow:hidden;background:#eee}
.card-post-img img,.card-service-img img{width:100%;height:100%;object-fit:cover;object-position:top}
.ratio-wide{aspect-ratio:16/10}.ratio-sq{aspect-ratio:1/1}.card-service-img{aspect-ratio:16/10}
.card-post-body,.card-service-body{padding:1.5rem;display:flex;flex-direction:column;flex:1}
.card-post-body h3 a,.card-service-body h3 a{color:var(--tsa-dark)}.card-post-body h3 a:hover,.card-service-body h3 a:hover{color:var(--tsa-primary)}
.post-date{color:var(--tsa-primary);font-size:.8rem;font-weight:600}
.post-by{font-size:.8rem;color:#888}.post-by a{color:var(--tsa-primary)}
.card-more{margin-top:auto;color:var(--tsa-primary);font-weight:600;text-transform:uppercase;font-size:.8rem;letter-spacing:.05em}
.card-team{position:relative;background:#fff;box-shadow:var(--shadow);overflow:hidden}
.card-team-link{display:block;color:inherit}
.card-team-link img{aspect-ratio:4/5;width:100%;object-fit:cover;object-position:top}
.card-team-body{display:block;padding:1rem;text-align:center;background:#fff;transition:background .3s,color .3s}
.card-team-body strong{display:block;color:var(--tsa-dark)}.card-team-body span{font-size:.85rem;color:#777}
.card-team:hover .card-team-body{background:var(--tsa-dark)}.card-team:hover .card-team-body strong,.card-team:hover .card-team-body span{color:#fff}
.card-team-social{position:absolute;top:.5rem;right:.5rem;flex-direction:column;margin:0}
.card-team-social a{display:grid;place-items:center;width:32px;height:32px;background:var(--tsa-primary);color:#fff;border-radius:50%}
.card-join{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-height:260px;border:2px dashed var(--tsa-primary);color:var(--tsa-primary);text-align:center;padding:1rem}
.card-join i{font-size:2.5rem}.card-join:hover{background:var(--tsa-primary);color:#fff}
.counter-item i{font-size:2.5rem;color:var(--tsa-accent)}
.counter-item .num{font-size:clamp(2rem,1.5rem + 2vw,3rem);font-weight:700;color:#fff;margin:0}
.counter-item .label{color:#cacaca;margin:0}
.media-frame{position:relative}
.play-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:72px;height:72px;border-radius:50%;background:var(--tsa-primary);color:#fff;display:grid;place-items:center;font-size:2rem;animation:pulse 2s infinite}
.play-btn:hover{color:#fff;background:var(--tsa-dark)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(var(--bs-primary-rgb),.5)}70%{box-shadow:0 0 0 20px rgba(var(--bs-primary-rgb),0)}100%{box-shadow:0 0 0 0 rgba(var(--bs-primary-rgb),0)}}
.accordion{--bs-accordion-btn-focus-box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.25);--bs-accordion-active-bg:var(--tsa-dark);--bs-accordion-active-color:#fff;--bs-accordion-border-radius:.5rem}
.accordion-button{font-weight:600;color:var(--tsa-dark)}
.accordion-button:not(.collapsed)::after{filter:brightness(0) invert(1)}
.tabs-tsa .nav-link{color:var(--tsa-dark);border:0;border-bottom:3px solid transparent;font-weight:600}
.tabs-tsa .nav-link.active{color:var(--tsa-dark);border-bottom-color:var(--tsa-primary);background:none}
.tabs-body{padding:2rem 0 0}
@media (max-width:575.98px){.tabs-tsa{flex-direction:column}}
.logos-swiper img{filter:grayscale(1);opacity:.7;mix-blend-mode:multiply;transition:.3s;max-height:90px;width:auto;margin:0 auto}
.logos-swiper img:hover{filter:none;opacity:1}
.posts-swiper,.team-swiper{padding-bottom:3rem;position:relative}
.swiper-pagination-bullet-active{background:var(--tsa-primary)}
.posts-swiper .swiper-pagination,.team-swiper .swiper-pagination{bottom:0}
.team-swiper .swiper-button-prev,.team-swiper .swiper-button-next{color:var(--tsa-primary);background:none;border:0}
.cta-band{background:var(--tsa-accent);padding:2rem 0}
.cta-small{color:var(--tsa-dark);font-weight:600}
.cta-big{color:var(--tsa-dark);font-weight:700;font-size:clamp(1.1rem,.9rem + 1vw,1.6rem)}
.btn-top{position:fixed;right:1.25rem;bottom:1.25rem;width:44px;height:44px;border-radius:50%;border:0;background:var(--tsa-primary);color:#fff;opacity:0;pointer-events:none;transition:opacity .3s;z-index:1020}
.btn-top.show{opacity:1;pointer-events:auto}

/* ===== Pied de page ===== */
.site-footer-top{background:#fff;padding:4rem 0}
.footer-logo{max-height:64px;width:auto}
.footer-title{font-size:1.05rem;text-transform:uppercase;letter-spacing:.05em;position:relative;padding-bottom:.75rem;margin-bottom:1.25rem}
.footer-title::after{content:"";position:absolute;left:0;bottom:0;width:40px;height:3px;background:var(--tsa-primary)}
.footer-links li,.footer-contact li{margin-bottom:.6rem}
.footer-contact i{color:var(--tsa-primary);margin-right:.5rem}
.site-footer-bottom{background:var(--tsa-dark);color:#fff;padding:1.5rem 0}
.site-footer-bottom a{color:#fff;font-weight:600}.site-footer-bottom a:hover{color:var(--tsa-accent)}

/* ===== Pages internes ===== */
.form-control{border-radius:0;padding:.75rem 1rem;border-color:#ddd}
.form-control:focus{border-color:var(--tsa-primary);box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.15)}
.form-card{background:#fff;padding:clamp(1.5rem,4vw,2.5rem);box-shadow:var(--shadow);border-top:3px solid var(--tsa-primary)}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.contact-info{list-style:none;padding:0;margin:1.5rem 0}
.contact-info li{display:flex;gap:1rem;padding:.9rem 0;border-bottom:1px solid #eee}
.contact-info i{color:var(--tsa-primary);font-size:1.25rem}
.contact-info small{display:block;text-transform:uppercase;letter-spacing:.08em;color:#777;font-size:.7rem}
.map-wrap{line-height:0}.map-wrap iframe{width:100%;height:clamp(300px,45vw,450px);border:0}
.widget{margin-bottom:2.5rem}
.widget-title{font-size:1.125rem;text-transform:uppercase;letter-spacing:.05em;padding-bottom:.75rem;margin-bottom:1.25rem;position:relative}
.widget-title::after{content:"";position:absolute;left:0;bottom:0;width:40px;height:3px;background:var(--tsa-primary)}
.widget-list{list-style:none;padding:0;margin:0}
.widget-list a{display:flex;justify-content:space-between;padding:.65rem 0;border-bottom:1px solid #eee}
.widget-list a:hover,.widget-list a.active{color:var(--tsa-primary);padding-left:.5rem}
.widget-list .count{background:var(--tsa-light);border-radius:1rem;padding:0 .6rem;font-size:.8rem}
.recent-post{display:flex;gap:1rem;margin-bottom:1rem}
.recent-thumb{width:80px;height:80px;object-fit:cover;flex:none}
.recent-post small{display:block;color:var(--tsa-primary)}
.post-meta{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;padding:0;color:#777;font-size:.875rem}
.post-meta a{color:var(--tsa-primary)}
.post-hero{width:100%;max-height:640px;object-fit:cover;object-position:top}
.share{display:flex;align-items:center;gap:.75rem;margin:2rem 0;padding:1rem 0;border-block:1px solid #eee}
.share a{width:38px;height:38px;border-radius:50%;background:var(--tsa-dark);color:#fff;display:grid;place-items:center}
.share a:hover{background:var(--tsa-primary)}
.post-nav{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.info-card{background:var(--tsa-light);padding:1.5rem;border-left:3px solid var(--tsa-primary)}
.info-card dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:#777}
.info-card dd{margin:0 0 1rem;font-weight:600;color:var(--tsa-dark)}
.service-nav a{display:block;padding:.65rem 1rem;border-bottom:1px solid #eee}
.service-nav a.active,.service-nav a:hover{background:var(--tsa-dark);color:#fff}
.error-page{padding-block:clamp(4rem,10vw,8rem)}
.error-code{font-size:clamp(5rem,15vw,9rem);font-weight:700;color:var(--tsa-primary);line-height:1;margin:0}
.pagination{--bs-pagination-color:var(--tsa-dark);--bs-pagination-active-bg:var(--tsa-primary);--bs-pagination-active-border-color:var(--tsa-primary);--bs-pagination-hover-color:var(--tsa-primary);--bs-pagination-border-radius:0;--bs-pagination-focus-box-shadow:0 0 0 .2rem rgba(var(--bs-primary-rgb),.2)}
