*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{ margin:0; background:var(--paper); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; font-family:var(--font-body); }
::selection{ background:var(--color-accent); color:#fff; }
.tcc-page a{ color:inherit; }
select.tcc-f::-ms-expand{ display:none; }
.tcc-faq summary{ list-style:none; cursor:pointer; }
.tcc-faq summary::-webkit-details-marker{ display:none; }
.tcc-faq[open] .tcc-faq-ic{ transform:rotate(45deg); }

input.tcc-in, textarea.tcc-in{ font-family:var(--font-body); font-size:15px; color:var(--text-strong); background:#fff; border:1px solid var(--border-strong); border-radius:10px; padding:12px 14px; width:100%; }
input.tcc-in:focus, textarea.tcc-in:focus{ outline:none; border-color:var(--slate-500); box-shadow:var(--focus-ring); }

.tcc-annonce-desc p{ font-size:15.5px; line-height:1.75; color:var(--text-body); margin:0 0 14px; }
.tcc-annonce-desc p:last-child{ margin-bottom:0; }

input.tcc-num{ font-family:var(--font-body); font-size:16px; color:var(--text-strong); background:#FFFBEB; border:1px solid var(--border-strong); border-radius:10px; padding:12px 14px; width:100%; }
input.tcc-num:focus{ outline:none; border-color:var(--slate-500); box-shadow:var(--focus-ring); background:#fff; }
input[type=range].tcc-range{ -webkit-appearance:none; appearance:none; width:100%; height:5px; border-radius:999px; background:var(--slate-200); outline:none; cursor:pointer; }
input[type=range].tcc-range::-webkit-slider-thumb{ -webkit-appearance:none; appearance:none; width:22px; height:22px; border-radius:50%; background:#fff; border:2px solid var(--color-accent); box-shadow:var(--shadow-sm); cursor:pointer; }
input[type=range].tcc-range::-moz-range-thumb{ width:22px; height:22px; border-radius:50%; background:#fff; border:2px solid var(--color-accent); box-shadow:var(--shadow-sm); cursor:pointer; }
.tcc-modal{ display:flex; }
.tcc-modal[data-open="0"]{ display:none; }

.tcc-lightbox{
  display:none;
  position:fixed; inset:0; z-index:1000;
  align-items:center; justify-content:center;
  background:rgba(15,20,26,.92);
  padding:60px;
}
.tcc-lightbox.tcc-lightbox--open{ display:flex; }
.tcc-lightbox-img{ max-width:100%; max-height:100%; object-fit:contain; border-radius:10px; box-shadow:var(--shadow-lg); }
.tcc-lightbox-close, .tcc-lightbox-prev, .tcc-lightbox-next{
  position:absolute; border:none; background:rgba(255,255,255,.12); color:#fff;
  border-radius:50%; display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.tcc-lightbox-close:hover, .tcc-lightbox-prev:hover, .tcc-lightbox-next:hover{ background:rgba(255,255,255,.22); }
.tcc-lightbox-close{ top:20px; right:20px; width:42px; height:42px; }
.tcc-lightbox-prev, .tcc-lightbox-next{ top:50%; transform:translateY(-50%); width:52px; height:52px; }
.tcc-lightbox-prev{ left:20px; }
.tcc-lightbox-next{ right:20px; }
.tcc-lightbox-count{
  position:absolute; bottom:24px; left:50%; transform:translateX(-50%);
  color:#fff; font-size:13px; font-weight:600; background:rgba(255,255,255,.12); padding:6px 14px; border-radius:999px;
}
@media (max-width:600px){
  .tcc-lightbox{ padding:24px; }
  .tcc-lightbox-prev, .tcc-lightbox-next{ width:42px; height:42px; }
}

/* Leaflet's internal panes/controls go up to z-index:1000; without this the
   map container (position:absolute, no z-index of its own) never forms a
   stacking context, so those panes render above the sticky header. */
.leaflet-container{ z-index:0; }

.tcc-map-pin{ background:none; border:none; }
.tcc-map-pin-dot{
  display:flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:50%;
  background:#fff; border:2px solid var(--slate-300); box-shadow:var(--shadow-md);
  color:var(--slate-500);
  transition:all .15s var(--ease-out);
}
.tcc-map-pin-label{
  display:block; margin-top:3px; text-align:center;
  font-family:var(--font-display); font-size:11.5px; font-weight:600;
  color:var(--slate-600); background:rgba(255,255,255,.85); padding:1px 7px; border-radius:6px; white-space:nowrap;
}
.tcc-map-pin--active .tcc-map-pin-dot{
  background:var(--color-accent); border-color:var(--color-accent); color:#fff; transform:scale(1.12);
}
.tcc-map-pin--active .tcc-map-pin-label{ color:var(--color-accent); }

.tcc-mobile-menu-btn{ display:none; }
.tcc-mobile-nav-scrim{
  position:fixed; inset:0; z-index:900;
  background:rgba(15,20,26,.55);
  opacity:0; pointer-events:none;
  transition:opacity .25s var(--ease-out);
}
.tcc-mobile-nav-scrim.tcc-mobile-nav-scrim--open{ opacity:1; pointer-events:auto; }
.tcc-mobile-nav{
  position:fixed; top:0; right:0; bottom:0; z-index:901;
  width:min(86vw, 360px);
  background:#fff;
  display:flex; flex-direction:column;
  transform:translateX(100%);
  transition:transform .25s var(--ease-out);
  box-shadow:-18px 0 40px rgba(15,20,28,.18);
}
.tcc-mobile-nav.tcc-mobile-nav--open{ transform:translateX(0); }

/* Placeholder photo slot — used wherever real photography hasn't been
   uploaded yet (hero, listing cards). Swap by adding a background-image
   inline style or editing the markup once real photos are in the Media Library. */
.tcc-image-slot{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  background:linear-gradient(135deg, var(--slate-700), var(--slate-900));
  overflow:hidden;
}
.tcc-image-slot::before{
  content:"";
  position:absolute; inset:0;
  opacity:.14;
  background-image:repeating-linear-gradient(135deg,#fff 0 1px,transparent 1px 22px);
}
.tcc-image-slot-label{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  color:rgba(255,255,255,.72);
  font-size:12.5px;
  font-weight:500;
  letter-spacing:.02em;
  text-align:center;
  padding:0 16px;
}

/* ============ RESPONSIVE ============ */
@media (max-width: 960px){
  .tcc-nav-desktop{ display:none !important; }
  .tcc-mobile-menu-btn{ display:flex !important; }
  .tcc-header-cta{ display:none !important; }
  .tcc-header-phone-label{ display:none !important; }
  .tcc-header-phone{ width:42px; height:42px; justify-content:center; border-radius:50%; border:1px solid var(--border); }
  .tcc-header-inner{ gap:14px !important; }
  .tcc-hero-h1{ font-size:34px !important; }
  .tcc-search-grid{ grid-template-columns:1fr 1fr !important; }
  .tcc-search-grid > button{ grid-column:1 / -1; }
  .tcc-stats-grid{ grid-template-columns:repeat(2,1fr) !important; row-gap:28px !important; }
  .tcc-stats-grid > div:nth-child(2n+1){ border-right:1px solid rgba(255,255,255,.14) !important; }
  .tcc-stats-grid > div:nth-child(2n){ border-right:none !important; }
  .tcc-sectors-grid{ grid-template-columns:repeat(2,1fr) !important; }
  .tcc-listing-grid{ grid-template-columns:repeat(2,1fr) !important; }
  .tcc-about-grid{ grid-template-columns:1fr !important; }
  .tcc-about-cards{ grid-template-columns:1fr 1fr !important; }
  .tcc-nego-grid{ grid-template-columns:1fr !important; }
  .tcc-cta-grid{ grid-template-columns:1fr !important; }
  .tcc-footer-grid{ grid-template-columns:1fr 1fr !important; row-gap:36px !important; }
  .tcc-vendre-contact-grid{ grid-template-columns:1fr !important; }
  .tcc-activities-grid{ grid-template-columns:1fr !important; }
  .tcc-criteria-cards{ grid-template-columns:1fr !important; }
  .tcc-calc-grid{ grid-template-columns:1fr !important; }
  .tcc-calc-grid > div:last-child{ position:static !important; }
  .tcc-calc-inputs-grid{ grid-template-columns:1fr !important; }
  .tcc-ratios-grid{ grid-template-columns:1fr !important; }
  .tcc-ebe-band{ flex-wrap:wrap; }
  .tcc-affaires-layout{ grid-template-columns:1fr !important; }
  .tcc-affaires-layout > aside{ position:static !important; }
  .tcc-fiche-layout{ grid-template-columns:1fr !important; }
  .tcc-fiche-layout > aside{ position:static !important; }
  .tcc-gallery-grid{ grid-template-columns:1fr !important; grid-template-rows:none !important; height:auto !important; }
  .tcc-gallery-grid > div{ height:220px; grid-row:auto !important; }
  .tcc-fiche-facts{ grid-template-columns:1fr 1fr !important; }
  .tcc-atouts-grid{ grid-template-columns:1fr !important; }
  .tcc-finances-grid{ grid-template-columns:1fr 1fr !important; }
  .tcc-acc-grid{ grid-template-columns:1fr !important; }
  .tcc-propose-grid{ grid-template-columns:1fr !important; }
  .tcc-propose-grid > div:first-child{ grid-column:1 !important; }
  .tcc-candidature-grid{ grid-template-columns:1fr !important; }
  .tcc-bb-grid{ grid-template-columns:1fr !important; }
  .tcc-bb-grid > div:last-child{ position:static !important; }
  .tcc-other-calc-grid{ grid-template-columns:1fr !important; }
}

@media (max-width: 600px){
  .tcc-hero-h1{ font-size:27px !important; }
  .tcc-search-grid{ grid-template-columns:1fr !important; }
  .tcc-search-mobile-hide{ display:none !important; }
  .tcc-stats-grid > div{ border-right:none !important; }
  .tcc-stats-grid [style*="font-size:52px"]{ font-size:38px !important; }
  .tcc-sectors-grid{ grid-template-columns:1fr 1fr !important; }
  .tcc-sectors-grid a{ padding:18px 16px !important; }
  .tcc-sectors-grid a > div:nth-child(3), .tcc-sectors-grid a > div:nth-child(4){ display:none !important; }
  .tcc-listing-grid{ display:none !important; }
  .tcc-listing-grid-m{ display:flex !important; flex-direction:column; gap:18px; }
  .tcc-about-cards{ display:none !important; }
  .tcc-about-mobile-checklist{ display:flex !important; }
  .tcc-nego-grid > div:first-child{ min-height:280px !important; }
  .tcc-faq summary{ font-size:15px !important; padding:18px 0 !important; }
  .tcc-faq p{ font-size:13.5px !important; padding-bottom:18px !important; }
  .tcc-cta-grid{ padding:26px !important; }
  .tcc-cta-grid h2{ font-size:22px !important; }
  .tcc-footer-grid > div:nth-child(n+2){ display:none !important; }
  .tcc-footer-grid{ grid-template-columns:1fr !important; }
  .tcc-utility-bar-links{ display:none !important; }
}
