/*
Theme Name: IOS campagne publicitaire
Theme URI: https://inter-ocean.example
Author: Inter-Ocean Sarl
Author URI: https://inter-ocean.example
Description: Thème WordPress sur mesure portant le site vitrine et la plateforme de gestion de campagnes publicitaires d'Inter-Ocean Sarl (affichage grand format, mobilier urbain, catalogue de panneaux, simulateur, réalisations, partenaires, FAQ et contact). Le mode édition intégré (icône crayon, bouton "Connexion") reste disponible directement sur le site une fois publié.
Version: google-v7.22-09-26
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: interocean-campagnes
*/


  :root{
    --ink:#12261D;
    --ink-70:rgba(18,38,29,.7);
    --ink-45:rgba(18,38,29,.45);
    --paper:#E9EBE4;
    --surface:#FFFFFF;
    --gold:#D6A536;
    --brick:#B23A2E;
    --line:rgba(18,38,29,.14);
    --display: "Big Shoulders Display", sans-serif;
    --body: "Work Sans", sans-serif;
    --maxw: 1180px;

    /* Palette dégradée officielle Inter-Ocean Sarl (reprise du visuel "10 ans" :
       bordeaux profond, rouge brique, or, marine) */
    --maroon:#5B0E2D;
    --maroon-light:#7A1533;
    --navy:#16224A;
    --gold-light:#F0C869;
    --gold-dark:#A97A1F;
    --grad-brand: linear-gradient(135deg, #171A45 0%, #42163D 50%, #700B31 100%);
    --grad-brand-deep: linear-gradient(135deg, #171A45 0%, #42163D 50%, #700B31 100%);
    --grad-gold: linear-gradient(135deg, var(--gold-light) 0%, var(--gold) 55%, var(--gold-dark) 100%);
    --grad-thin: linear-gradient(90deg, var(--maroon) 0%, var(--brick) 35%, var(--gold) 70%, var(--gold-light) 100%);
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{margin:0; background:var(--paper); color:var(--ink); font-family:var(--body); font-size:16px; line-height:1.5; -webkit-font-smoothing:antialiased;}
  img{max-width:100%; display:block;}
  a{color:inherit;}
  h1,h2,h3{font-family:var(--display); font-weight:900; line-height:.95; margin:0; letter-spacing:.2px;}
  .wrap{max-width:var(--maxw); margin:0 auto; padding:0 28px;}
  :focus-visible{outline:3px solid var(--gold); outline-offset:3px;}
  button{font-family:inherit;}

  @media (prefers-reduced-motion: reduce){
    *{animation-duration:.001ms !important; animation-iteration-count:1 !important; scroll-behavior:auto !important;}
  }

  #scrollProgress{position:fixed; top:0; left:0; height:3px; background:var(--grad-thin); width:0%; z-index:200;}

  header{position:sticky; top:0; z-index:150; background:var(--paper); border-bottom:1px solid var(--line); box-shadow:0 2px 18px rgba(18,38,29,.06);}
  .nav{display:flex; align-items:center; justify-content:space-between; padding:18px 0;}
  .logo{font-family:var(--display); font-weight:900; font-size:28px; letter-spacing:.5px;}
  .logo span{color:var(--brick);}
  .nav-links{display:flex; gap:22px; list-style:none; margin:0; padding:0; font-size:14px; font-weight:600;}
  .nav-links a{position:relative; text-decoration:none; padding:6px 2px; color:var(--ink); transition:color .2s ease;}
  .nav-links a::after{content:""; position:absolute; left:50%; right:50%; bottom:0; height:2px; background:var(--grad-brand); transition:left .25s ease, right .25s ease;}
  .nav-links a:hover{color:var(--maroon);}
  .nav-links a:hover::after{left:0; right:0;}
  .nav-cta{background:var(--grad-brand); color:#fff; text-decoration:none; padding:11px 22px; font-weight:600; font-size:14px; border-radius:2px; box-shadow:0 6px 16px rgba(91,14,45,.28);}
  .nav-cta:hover{background:#932f25;}
  .burger{display:none; background:none; border:none; cursor:pointer; padding:6px;}
  .burger span{display:block; width:26px; height:2px; background:var(--ink); margin:6px 0;}

  .nav-actions{display:flex; align-items:center; gap:12px;}
  .nav-login{display:inline-flex; align-items:center; gap:8px; background:transparent; color:var(--ink); border:1.5px solid var(--ink); padding:9.5px 18px; font-weight:700; font-size:13.5px; border-radius:24px; cursor:pointer; letter-spacing:.2px; transition:background .2s ease, color .2s ease, transform .15s ease;}
  .nav-login:hover{background:var(--ink); color:#fff;}
  .nav-login:active{transform:scale(.97);}
  .nav-login .lock-ico{font-size:14px;}
  .nav-login.logged-in{background:var(--gold); border-color:var(--gold); color:var(--ink);}
  .nav-login.logged-in:hover{background:#c69527;}

  @media (max-width:980px){
    .nav-links, .nav-cta{display:none;}
    .burger{display:block;}
    .nav-login{padding:8px 14px; font-size:12.5px;}
    .nav-links.open{display:flex; flex-direction:column; gap:0; position:absolute; top:100%; left:0; right:0; background:var(--surface); border-bottom:1px solid var(--line); padding:8px 28px; z-index:160; max-height:70vh; overflow:auto;}
    .nav-links.open a{padding:14px 0; border-bottom:1px solid var(--line); width:100%;}
    .nav-cta.open{display:block; margin:16px 28px 20px;}
  }

  .hero{position:relative; height:78vh; min-height:520px; overflow:hidden; background:var(--ink);}
  .hero-track{position:absolute; inset:0;}
  .hero-slide{position:absolute; inset:0; opacity:0; transition:opacity 1.1s ease, transform 1.4s ease; background-size:contain; background-repeat:no-repeat; background-position:center; background-color:var(--navy,#0e1f33);}
  .hero.hero-anim-zoom .hero-slide{ transform:scale(1.07); }
  .hero.hero-anim-zoom .hero-slide.active{ transform:scale(1); }
  .hero.hero-anim-slide .hero-slide{ transform:translateX(5%); }
  .hero.hero-anim-slide .hero-slide.active{ transform:translateX(0); }
  .hero-slide.active{opacity:1;}
  .hero-slide::after{content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(18,38,29,.88) 0%, rgba(18,38,29,.35) 48%, rgba(18,38,29,.15) 100%);}
  .hero-content{position:relative; z-index:2; height:100%; display:flex; flex-direction:column; justify-content:flex-end; padding:0 28px 56px; max-width:var(--maxw); margin:0 auto;}
  .hero-eyebrow{color:var(--gold); font-weight:600; font-size:14px; margin-bottom:14px;}
  .hero-title{color:#fff; font-size:clamp(38px, 6.2vw, 78px); max-width:760px;}
  .hero-sub{color:rgba(255,255,255,.82); max-width:560px; margin:18px 0 26px; font-size:17px;}
  .hero-actions{display:flex; gap:14px; flex-wrap:wrap;}
  .btn-primary, .btn-ghost{text-decoration:none; padding:14px 26px; font-weight:600; font-size:15px; border-radius:2px; display:inline-block; border:none; cursor:pointer;}
  .btn-primary{background:var(--grad-brand); color:#fff; box-shadow:0 6px 16px rgba(22,34,74,.35);}
  .btn-primary:hover{background:#c69527;}
  .btn-ghost{border:1px solid rgba(255,255,255,.55); color:#fff; background:transparent;}
  .btn-ghost:hover{border-color:#fff; background:rgba(255,255,255,.08);}
  .hero-nav{position:absolute; z-index:3; bottom:56px; right:28px; display:flex; gap:10px;}
  .hero-nav button{width:42px; height:42px; border-radius:50%; border:1px solid rgba(255,255,255,.5); background:rgba(255,255,255,.08); color:#fff; cursor:pointer; font-size:18px;}
  .hero-nav button:hover{background:rgba(255,255,255,.2);}
  .hero-dots{position:absolute; z-index:3; bottom:26px; left:28px; right:28px; max-width:var(--maxw); margin:0 auto; display:flex; gap:8px;}
  .hero-dots button{width:36px; height:3px; background:rgba(255,255,255,.4); border:none; cursor:pointer; padding:0;}
  .hero-dots button.active{background:var(--gold);}
  .hero-badge{position:absolute; z-index:3; top:28px; right:28px; width:104px; height:104px; border-radius:50%; background:var(--grad-brand); display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; box-shadow:0 10px 34px rgba(0,0,0,.42), 0 0 0 6px rgba(214,165,54,.18); border:3px solid var(--gold); animation:heroBadgePulse 2.6s ease-in-out infinite;}
  @keyframes heroBadgePulse{ 0%,100%{ box-shadow:0 10px 34px rgba(0,0,0,.42), 0 0 0 6px rgba(214,165,54,.18); } 50%{ box-shadow:0 10px 34px rgba(0,0,0,.42), 0 0 0 12px rgba(214,165,54,.05); } }
  .hero-badge b{font-family:var(--display); font-weight:900; font-size:28px; color:#fff; line-height:1;}
  .hero-badge span{font-size:9.5px; font-weight:700; color:var(--gold-light); text-transform:uppercase; letter-spacing:.04em; margin-top:2px;}
  @media (max-width:700px){ .hero-badge{width:78px; height:78px; top:14px; right:14px;} .hero-badge b{font-size:20px;} .hero-badge span{font-size:7.5px;} }

  .ticker{background:var(--grad-brand-deep); color:var(--gold-light); overflow:hidden; white-space:nowrap; border-bottom:1px solid rgba(214,165,54,.25);}
  .ticker-track{display:inline-flex; align-items:center; gap:56px; padding:14px 0; animation:scroll-left 28s linear infinite;}
  .ticker:hover .ticker-track{animation-play-state:paused;}
  .ticker-track span{font-family:var(--display); font-weight:700; font-size:16px; letter-spacing:.3px;}
  .ticker-track span::after{content:"◆"; margin-left:56px; color:var(--brick); font-size:11px;}
  @keyframes scroll-left{ from{transform:translateX(0);} to{transform:translateX(-50%);} }

  section{padding:88px 0;}
  .section-head{max-width:660px; margin-bottom:48px;}
  .section-kicker{color:var(--brick); font-weight:600; font-size:14px; margin-bottom:10px;}
  .section-title{font-size:clamp(30px,4vw,44px);}
  .section-lede{color:var(--ink-70); margin-top:16px; font-size:16.5px;}

  .stats{background:var(--grad-brand-deep); color:#fff; padding:0;}
  .stats-row{display:grid; grid-template-columns:repeat(4,1fr);}
  .stat{padding:64px 28px; text-align:center; border-left:1px solid rgba(255,255,255,.14);}
  .stat:first-child{border-left:none;}
  .stat-number{font-family:var(--display); font-weight:900; color:var(--gold); background:linear-gradient(135deg, var(--gold-light) 0%, #fff 100%); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; font-size:clamp(44px,6vw,72px); font-variant-numeric:tabular-nums; line-height:1;}
  .stat-label{margin-top:12px; color:rgba(255,255,255,.75); font-size:15px;}
  @media (max-width:900px){ .stats-row{grid-template-columns:repeat(2,1fr);} .stat:nth-child(2n+1){border-left:none;} .stat:nth-child(1),.stat:nth-child(2){border-top:none;} .stat:nth-child(n+3){border-top:1px solid rgba(255,255,255,.14);} }
  @media (max-width:720px){ .stats-row{grid-template-columns:1fr;} .stat{border-left:none; border-top:1px solid rgba(255,255,255,.14);} .stat:first-child{border-top:none;} }

  .service-row{display:grid; grid-template-columns:64px 1fr 1fr; gap:28px; align-items:start; padding:32px 0; border-top:1px solid var(--line);}
  .services-list .service-row:last-child{border-bottom:1px solid var(--line);}
  .service-icon{width:52px; height:52px; border-radius:50%; background:var(--surface); border:1px solid var(--line); display:flex; align-items:center; justify-content:center;}
  .service-icon svg{width:24px; height:24px; stroke:var(--brick);}
  .service-name{font-family:var(--display); font-weight:700; font-size:24px;}
  .service-desc{color:var(--ink-70); font-size:15.5px;}
  @media (max-width:760px){ .service-row{grid-template-columns:52px 1fr;} .service-desc{grid-column:2/3;} }

  .simulator{background:var(--surface); border:1px solid var(--line); padding:44px; display:grid; grid-template-columns:1.1fr .9fr; gap:48px;}
  .sim-field{margin-bottom:22px;}
  .sim-field label{display:block; font-weight:600; font-size:14.5px; margin-bottom:8px;}
  .sim-field select, .sim-field input[type="range"]{width:100%; padding:11px; border:1px solid var(--line); background:var(--paper); font-family:var(--body); font-size:15px; border-radius:2px;}
  .sim-range-value{font-family:var(--display); font-weight:700; color:var(--brick); font-size:15px; margin-left:8px;}
  .sim-result{background:var(--ink); color:#fff; padding:36px; display:flex; flex-direction:column; justify-content:center;}
  .sim-result-label{color:rgba(255,255,255,.65); font-size:14px;}
  .sim-result-value{font-family:var(--display); font-weight:900; color:var(--gold); font-size:clamp(36px,4vw,52px); margin:10px 0; font-variant-numeric:tabular-nums;}
  .sim-result-note{color:rgba(255,255,255,.55); font-size:13.5px; line-height:1.5;}
  .sim-gauge{width:100%; height:14px; background:rgba(255,255,255,.15); border-radius:20px; overflow:hidden; margin:6px 0 4px;}
  .sim-gauge-fill{height:100%; width:0%; background:var(--grad-brand); border-radius:20px; transition:width .6s ease;}
  @media (max-width:860px){ .simulator{grid-template-columns:1fr; padding:28px;} }

  .filters{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:32px;}
  .filter-btn{background:transparent; border:1px solid var(--line); padding:9px 18px; font-size:14px; font-weight:600; cursor:pointer; border-radius:20px; color:var(--ink-70);}
  .filter-btn.active{background:var(--grad-brand); color:#fff; border-color:transparent;}
  .gallery-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:14px;}
  .gallery-item{position:relative; aspect-ratio:4/3; overflow:hidden; cursor:pointer; border-radius:2px;}
  .gallery-item img{width:100%; height:100%; object-fit:contain; background:#161c1a; transition:transform .5s ease;}
  .gallery-item:hover img{transform:scale(1.06);}
  .gallery-caption{position:absolute; inset:auto 0 0 0; padding:16px; background:linear-gradient(0deg, rgba(18,38,29,.85), transparent); color:#fff; font-size:14px; font-weight:600;}
  .gallery-item[hidden]{display:none;}
  @media (max-width:860px){ .gallery-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:560px){ .gallery-grid{grid-template-columns:1fr;} }

  .lightbox{position:fixed; inset:0; background:rgba(18,38,29,.94); z-index:300; display:none; align-items:center; justify-content:center; padding:32px;}
  .lightbox.open{display:flex;}
  .lightbox img{max-width:min(900px,92vw); max-height:82vh; border-radius:2px;}
  .lightbox-caption{color:#fff; text-align:center; margin-top:14px; font-size:15px;}
  .lightbox-close, .lightbox-prev, .lightbox-next{position:absolute; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.4); color:#fff; cursor:pointer; border-radius:50%;}
  .lightbox-close{top:24px; right:24px; width:44px; height:44px; font-size:20px;}
  .lightbox-prev, .lightbox-next{top:50%; transform:translateY(-50%); width:48px; height:48px; font-size:22px;}
  .lightbox-prev{left:24px;} .lightbox-next{right:24px;}

  .partners-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line);}
  .partner-tile{background:var(--surface); aspect-ratio:16/10; display:flex; align-items:center; justify-content:center; padding:22px;}
  .partner-mark{width:64px; height:64px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-weight:900; font-size:19px; color:#fff; filter:grayscale(1); opacity:.55; transition:filter .3s ease, opacity .3s ease, transform .3s ease;}
  .partner-tile:hover .partner-mark{filter:grayscale(0); opacity:1; transform:scale(1.06);}
  @media (max-width:760px){ .partners-grid{grid-template-columns:repeat(2,1fr);} }

  /* ===== Slider de logos partenaires — zone réservée avec animation
     permanente en "feu d'artifice" (halo qui éclate + zoom automatique). ===== */
  .partners-slider{max-width:360px; margin:0 auto; text-align:center; padding:12px 20px 8px;}
  .partner-slide{min-height:190px; display:flex; flex-direction:column; align-items:center; justify-content:center;}
  .partner-spark{position:relative; width:120px; height:120px; margin:0 auto 18px; display:flex; align-items:center; justify-content:center;}
  .partner-spark::before,.partner-spark::after{content:""; position:absolute; inset:-34px; border-radius:50%; background:radial-gradient(circle, rgba(214,165,54,.55) 0%, rgba(178,58,46,.28) 45%, transparent 72%); animation: partnerBurst 3s ease-out infinite;}
  .partner-spark::after{animation-delay:.35s; inset:-22px; background:radial-gradient(circle, rgba(255,255,255,.6) 0%, rgba(214,165,54,.35) 45%, transparent 70%);}
  .partner-mark2{position:relative; z-index:2; width:132px; height:132px; border-radius:22px; display:flex; align-items:center; justify-content:center; background:#fff; padding:14px; box-shadow:0 10px 26px rgba(0,0,0,.18); border:3px solid #fff;}
  .partner-mark2.pop{animation: partnerZoom 3s ease-in-out infinite;}
  .partner-logo-img{max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain;}
  .partner-caption b{display:block; font-family:var(--display); font-weight:800; font-size:19px; color:var(--ink);}
  .partner-caption span{display:block; font-size:12.5px; color:var(--ink-70); margin-top:4px; max-width:280px; margin-left:auto; margin-right:auto;}
  .partners-dots{display:flex; justify-content:center; gap:6px; margin-top:18px;}
  .partners-dots button{width:8px; height:8px; border-radius:50%; border:none; background:var(--line); cursor:pointer; padding:0;}
  .partners-dots button.active{background:var(--brick);}
  @keyframes partnerZoom{ 0%{transform:scale(1);} 50%{transform:scale(1.12);} 100%{transform:scale(1);} }
  @keyframes partnerBurst{ 0%{opacity:0; transform:scale(.3);} 35%{opacity:1; transform:scale(1);} 100%{opacity:0; transform:scale(1.55);} }

  .testimonials{background:var(--grad-brand-deep); color:#fff; position:relative; overflow:hidden;}
  .testi-track{display:flex; transition:transform .6s ease;}
  .testi-slide{min-width:100%; padding:0 8px; box-sizing:border-box;}
  .testi-card{position:relative; max-width:680px; margin:0 auto; background:rgba(255,255,255,.05); border:1.5px solid var(--gold); border-radius:16px; padding:30px 28px 26px 116px; min-height:224px; display:flex; flex-direction:column; justify-content:center; box-shadow:0 14px 34px rgba(0,0,0,.22);}
  .testi-thumb{position:absolute; top:-20px; left:26px; width:84px; height:84px; border-radius:18px; overflow:hidden; border:3px solid var(--gold); box-shadow:0 8px 20px rgba(0,0,0,.4); cursor:pointer; background:var(--ink);}
  .testi-thumb img{width:100%; height:100%; object-fit:contain; background:#eef1ea; display:block; transition:transform .35s ease;}
  .testi-thumb:hover img{transform:scale(1.08);}
  .testi-thumb .edit-img-btn{width:26px; height:26px; font-size:11px; top:4px; right:4px;}
  .testi-author{font-family:var(--display); font-weight:800; font-size:12.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--gold-light); margin:0 0 10px;}
  .testi-quote{font-family:var(--body); font-weight:400; font-size:15.5px; line-height:1.55; color:rgba(255,255,255,.92); margin:0;}
  .testi-quote::before{content:"“"; color:var(--gold); font-family:var(--display); font-weight:900;}
  .testi-quote::after{content:"”"; color:var(--gold); font-family:var(--display); font-weight:900;}
  .testi-dots{display:flex; justify-content:center; gap:8px; margin-top:36px;}
  .testi-dots button{width:9px; height:9px; border-radius:50%; border:none; background:rgba(255,255,255,.3); cursor:pointer;}
  .testi-dots button.active{background:var(--gold);}
  @media (max-width:600px){ .testi-card{padding-left:28px; padding-top:70px;} .testi-thumb{top:-20px; left:50%; transform:translateX(-50%);} }

  .faq-item{border-top:1px solid var(--line);}
  .faq-list{border-bottom:1px solid var(--line);}
  .faq-q{width:100%; text-align:left; background:none; border:none; padding:24px 0; display:flex; justify-content:space-between; align-items:center; gap:16px; cursor:pointer; font-family:var(--display); font-weight:700; font-size:19px; color:var(--ink);}
  .faq-icon{flex:none; font-size:22px; color:var(--brick); transition:transform .25s ease;}
  .faq-item.open .faq-icon{transform:rotate(45deg);}
  .faq-a{max-height:0; overflow:hidden; transition:max-height .3s ease;}
  .faq-a p{color:var(--ink-70); padding-bottom:24px; margin:0; max-width:640px; font-size:15.5px;}

  .about{display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center;}
  .about-figure{position:relative; aspect-ratio:4/5; overflow:hidden; border-radius:2px;}
  .about-figure img{width:100%; height:100%; object-fit:contain; background:#161c1a;}
  /* Vignette vidéo (section "À propos") avec bouton play centré */
  .about-figure-video{cursor:pointer;}
  .about-play-btn{
    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
    width:74px; height:74px; border-radius:50%; border:none;
    background:rgba(18,38,29,.55); color:#fff; font-size:26px;
    display:flex; align-items:center; justify-content:center; padding-left:4px;
    box-shadow:0 8px 24px rgba(0,0,0,.35); transition:transform .25s ease, background .25s ease;
    pointer-events:none;
  }
  .about-figure-video:hover .about-play-btn{ transform:translate(-50%,-50%) scale(1.08); background:rgba(214,165,54,.9); }
  /* Stickers "J'aime" / "Partager" + compteurs, sur la vignette vidéo */
  .video-engage{position:absolute; left:12px; right:12px; bottom:12px; display:flex; gap:8px; z-index:3;}
  .ve-btn{display:flex; align-items:center; gap:6px; background:rgba(18,38,29,.62); backdrop-filter:blur(2px); color:#fff; border:none; border-radius:20px; padding:7px 13px; font-size:13px; font-weight:600; cursor:pointer; transition:background .2s ease, transform .2s ease;}
  .ve-btn:hover{ transform:translateY(-2px); background:rgba(18,38,29,.85); }
  .ve-btn.active{ background:var(--grad-brand); }
  .ve-btn:disabled{ cursor:default; }
  .ve-ico{font-size:14px;}
  .ve-count{font-variant-numeric:tabular-nums;}
  /* Fenêtre (lightbox) de lecture vidéo Facebook */
  .video-lightbox{position:fixed; inset:0; z-index:5000; background:rgba(10,10,10,.88); display:none; align-items:center; justify-content:center; padding:24px;}
  .video-lightbox.open{display:flex;}
  .video-lightbox-inner{position:relative; width:100%; max-width:480px;}
  .video-lightbox-frame-wrap{position:relative; width:100%; padding-bottom:177.7%; background:#000; border-radius:10px; overflow:hidden;}
  .video-lightbox-frame-wrap iframe{position:absolute; inset:0; width:100%; height:100%; border:0;}
  .video-lightbox-close{position:absolute; top:-42px; right:0; background:none; border:none; color:#fff; font-size:28px; cursor:pointer; line-height:1;}
  .video-lightbox-close:hover{color:var(--gold);}
  @media (max-width:600px){ .video-lightbox-inner{max-width:320px;} }
  @media (max-width:860px){ .about{grid-template-columns:1fr;} .about-figure{order:-1;} }

  .contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:56px;}
  .form-field{margin-bottom:20px;}
  .form-field label{display:block; font-weight:600; font-size:14.5px; margin-bottom:8px;}
  .form-field input, .form-field textarea{width:100%; padding:12px 14px; border:1px solid var(--line); background:var(--surface); font-family:var(--body); font-size:15px; border-radius:2px;}
  .field-error{color:var(--brick); font-size:13px; margin-top:6px; display:none;}
  .form-field.invalid .field-error{display:block;}
  .form-field.invalid input, .form-field.invalid textarea{border-color:var(--brick);}
  .form-success{background:#DCE9DE; border:1px solid #1B4332; color:#1B4332; padding:16px 18px; border-radius:2px; margin-top:16px; display:none; font-size:14.5px;}
  .form-success.show{display:block;}
  @media (max-width:860px){ .contact-grid{grid-template-columns:1fr;} }

  .cta-band{background:linear-gradient(160deg, #16224A 0%, #5B0E2D 55%, #7A1533 100%); color:#fff; text-align:left; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:24px;}
  .cta-band h2{font-size:clamp(26px,3.4vw,38px); max-width:520px;}
  .cta-band .btn-primary{background:#fff; color:var(--ink);}
  .cta-band .btn-primary:hover{background:var(--gold);}

  footer{background:var(--grad-brand-deep); color:rgba(255,255,255,.75); padding:64px 0 28px;}
  .footer-grid{display:grid; grid-template-columns:1.2fr 1fr 1fr 1fr; gap:36px; margin-bottom:48px;}
  footer .logo{color:#fff;}
  .footer-desc{margin-top:14px; max-width:320px; font-size:14.5px;}
  .footer-col h4{color:#fff; font-family:var(--body); font-weight:600; font-size:15px; margin-bottom:16px;}
  .footer-col ul{list-style:none; margin:0; padding:0;}
  .footer-col li{margin-bottom:10px; font-size:14.5px;}
  .footer-col a{text-decoration:none;}
  .footer-col a:hover{color:var(--gold);}
  .footer-bottom{border-top:1px solid rgba(255,255,255,.14); padding-top:22px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:13.5px; color:rgba(255,255,255,.5);}
  @media (max-width:760px){ .footer-grid{grid-template-columns:1fr;} }

  /* Bloc coordonnées du footer (adresse, téléphones, e-mails, horaires, web) */
  .footer-contact-list li{display:flex; align-items:flex-start; gap:8px;}
  .footer-contact-list .fc-ico{flex:0 0 auto; opacity:.9;}
  .footer-contact-list a{color:rgba(255,255,255,.85);}

  /* Numéros de téléphone cliquables/survolables du footer : au clic ou au
     survol, un petit menu (Appeler / SMS / Copier) apparaît pour composer
     directement le numéro. */
  .phone-number{position:relative; display:inline-block; cursor:pointer; color:#fff; text-decoration:underline dotted; text-underline-offset:3px;}
  .phone-number:hover, .phone-number:focus{color:var(--gold);}
  .phone-popup{position:absolute; z-index:400; left:50%; bottom:calc(100% + 10px); transform:translateX(-50%); background:#fff; color:var(--ink,#1a1a1a); border-radius:8px; box-shadow:0 12px 32px rgba(0,0,0,.3); padding:6px; min-width:190px; display:none;}
  .phone-popup.open{display:block;}
  .phone-popup::after{content:""; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:7px solid transparent; border-top-color:#fff;}
  .phone-popup button{display:flex; align-items:center; gap:8px; width:100%; text-align:left; background:none; border:none; padding:9px 10px; font-size:13.5px; border-radius:5px; cursor:pointer; color:inherit; font-family:var(--body);}
  .phone-popup button:hover{background:rgba(0,0,0,.06);}
  .phone-popup .pp-copy-ok{color:#1a9c5a; font-weight:600;}

  /* Mini-jeu anti-robot (bassin de poissons) affiché dans la modale de connexion */
  .captcha-game{background:var(--paper,#f7f5ef); border:1px solid rgba(0,0,0,.08); border-radius:12px; padding:14px; margin:16px 0;}
  .captcha-label{font-size:13.5px; margin:0 0 10px; color:var(--ink,#1a1a1a);}
  .captcha-pond{position:relative; height:130px; border-radius:10px; background:linear-gradient(180deg,#bfe3f0,#8fc9dd); overflow:hidden; box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);}
  .captcha-fish{position:absolute; font-size:30px; line-height:1; cursor:pointer; user-select:none; transition:left .5s ease, top .5s ease; filter:drop-shadow(0 2px 3px rgba(0,0,0,.25));}
  .captcha-meta{display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:13px; margin-top:8px; flex-wrap:wrap;}
  .captcha-retry{background:none; border:1px solid rgba(0,0,0,.2); border-radius:6px; padding:4px 10px; font-size:12.5px; cursor:pointer;}
  .captcha-retry:hover{background:rgba(0,0,0,.06);}
  .captcha-status{font-size:12.5px; margin:8px 0 0; color:rgba(0,0,0,.6);}
  .login-lock-msg{background:#fdecea; color:#a02c22; border:1px solid #f2c2bd; border-radius:8px; padding:10px 12px; font-size:13px; margin-bottom:14px;}

  .floating-actions{position:fixed; right:22px; bottom:22px; z-index:120; display:flex; flex-direction:column; gap:12px; align-items:flex-end;}
  .fab{width:52px; height:52px; border-radius:50%; display:flex; align-items:center; justify-content:center; cursor:pointer; border:none; box-shadow:0 6px 18px rgba(18,38,29,.28);}
  .fab-whatsapp{background:#25D366; color:#fff;}
  .fab-top{background:var(--ink); color:var(--gold); opacity:0; pointer-events:none; transition:opacity .25s ease;}
  .fab-top.visible{opacity:1; pointer-events:auto;}
  .fab svg{width:24px; height:24px;}

  /* =======================================================================
     MODULE LOGICIEL — CATALOGUE, COMMANDE & GESTION DE CAMPAGNE
     (le module cartographique/géolocalisation a été retiré : sélection
     des panneaux par catalogue filtrable, sans carte)
     ======================================================================= */
  .catalogue-section{background:linear-gradient(160deg,#0d1713 0%,#1c0e16 55%,#26111c 100%);color:#fff;}
  .process-steps{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 34px;}
  .process-step{flex:1;min-width:190px;background:#14231d;border:1px solid rgba(255,255,255,.1);padding:16px 18px;border-radius:6px;}
  .process-step b{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--gold);color:#12261D;font-family:var(--display);font-size:13px;margin-bottom:10px;}
  .process-step span{display:block;font-size:13px;color:rgba(255,255,255,.72);line-height:1.4;}
  .cat-shell{background:#101d18;border:1px solid rgba(255,255,255,.12);padding:20px;}
  .cat-toolbar{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px;}
  .cat-toolbar input,.cat-toolbar select{width:100%;padding:11px 12px;border:1px solid rgba(255,255,255,.15);background:#0d1713;color:#fff;border-radius:3px;}
  .cat-cascade-label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--gold);margin:0 0 5px;}
  @media(max-width:980px){.cat-toolbar{grid-template-columns:repeat(2,1fr);}}
  @media(max-width:560px){.cat-toolbar{grid-template-columns:1fr;}}
  #catDataStatus{color:rgba(255,255,255,.65);font-size:13px;margin:0 0 16px;}
  .panel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;max-height:640px;overflow:auto;padding-right:4px;}
  .panel-card2{background:#14231d;border:1px solid rgba(255,255,255,.1);border-radius:6px;overflow:hidden;display:flex;flex-direction:column;}
  .panel-card2 .thumb{aspect-ratio:16/10;background:#0d1713 center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.35);font-size:12px;}
  .panel-card2 .pc-body{padding:13px 14px;display:flex;flex-direction:column;gap:6px;flex:1;}
  .panel-card2 .pc-id{font-family:var(--display);font-weight:800;font-size:18px;color:#fff;}
  .panel-card2 .pc-type{color:var(--gold);font-size:12.5px;font-weight:700;}
  .panel-card2 .pc-loc{color:rgba(255,255,255,.65);font-size:12.5px;}
  .status-badge{display:inline-flex;align-self:flex-start;padding:4px 9px;border-radius:20px;font-size:10.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;}
  .status-badge.libre{background:rgba(31,186,114,.16);color:#62e39d;}
  .status-badge.reserve{background:rgba(214,165,54,.18);color:var(--gold);}
  .status-badge.occupe{background:rgba(214,77,67,.16);color:#ff8e86;}
  .status-badge.detruit{background:rgba(120,120,120,.22);color:#c9c9c9;}
  .status-badge.deplace{background:rgba(93,130,214,.18);color:#9db8ff;}
  .pc-btn{margin-top:auto;border:1px solid rgba(255,255,255,.2);background:transparent;color:#fff;padding:9px;border-radius:4px;cursor:pointer;font-weight:700;font-size:12.5px;}
  .pc-btn.added{background:var(--gold);color:#12261D;border-color:var(--gold);}
  .pc-btn[disabled]{opacity:.4;cursor:not-allowed;}
  .cat-empty{padding:40px 20px;text-align:center;color:rgba(255,255,255,.55);border:1px dashed rgba(255,255,255,.18);border-radius:6px;}
  .inventory-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:24px;}
  .inventory-stat{background:#fff;color:var(--ink);padding:18px;border:1px solid var(--line);}
  .inventory-stat b{font-family:var(--display);font-size:30px;color:var(--brick);}
  .inventory-stat span{display:block;font-size:12px;color:var(--ink-70);margin-top:3px;}
  .ctd-table-wrap{position:relative;overflow:auto;background:var(--surface);border:1px solid var(--line);}
  .ctd-table{width:auto;border-collapse:collapse;white-space:nowrap;}
  .ctd-table th,.ctd-table td{padding:11px 13px;border-bottom:1px solid var(--line);text-align:left;font-size:13px;}
  .ctd-table th{background:var(--ink);color:#fff;position:sticky;top:0;}
  .ctd-table td.num{text-align:center;font-variant-numeric:tabular-nums;font-weight:700;}
  .ctd-table tr:hover td{background:#f6f7f4;}
  .ctd-table td.ctd-commune{white-space:nowrap; width:1%; font-weight:800; vertical-align:middle; background:rgba(255,255,255,.03);}
  .ctd-table tr.ctd-total-row td{font-weight:800; background:rgba(255,255,255,.06); border-top:2px solid var(--line);}
  .ctd-table td.ctd-empty{color:var(--ink-70,#888); font-style:italic;}
  .ctd-table td.ctd-dash{color:var(--ink-45,#999);}
  .admin-sync-status{font-size:11.5px; padding:6px 10px; margin:8px 16px 0; border-radius:6px; background:rgba(255,255,255,.08); color:rgba(255,255,255,.75);}
  .admin-sync-status.ok{background:rgba(46,160,90,.18); color:#7be0a0;}
  .admin-sync-status.error{background:rgba(214,77,67,.2); color:#ff9a92; cursor:help;}
  /* Le bloc "Inventaire & statistiques" n'est visible qu'aux administrateurs
     connectés (voir campaign-content.php, io:auth) — masqué par défaut pour
     tout visiteur public. */
  #inventaire{ display:none; }
  #inventaire.io-admin-visible{ display:block; }

  .order-panel{margin-top:24px;background:#14231d;border:1px solid rgba(255,255,255,.12);padding:22px;border-radius:6px;}
  .order-panel h3{color:#fff;font-size:24px;margin-bottom:4px;}
  .order-panel .section-lede{color:rgba(255,255,255,.65);margin-top:4px;font-size:14px;}
  .cart-chips{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0;}
  .cart-chip{display:inline-flex;align-items:center;gap:8px;background:#0d1713;border:1px solid rgba(255,255,255,.15);color:#fff;padding:7px 10px;border-radius:20px;font-size:12.5px;}
  .cart-chip button{border:none;background:rgba(255,255,255,.12);color:#fff;width:18px;height:18px;border-radius:50%;cursor:pointer;font-size:11px;line-height:1;}
  .cart-empty-note{color:rgba(255,255,255,.5);font-size:13.5px;}
  .campaign-dates-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:14px 0 20px;}
  .cd-field label{display:block;font-weight:700;font-size:12px;margin-bottom:6px;color:rgba(255,255,255,.75);}
  .cd-field input{width:100%;padding:10px 11px;border:1px solid rgba(255,255,255,.18);border-radius:3px;font:inherit;background:#0d1713;color:#fff;}
  .cd-field input.invalid{border-color:var(--brick);}
  @media(max-width:700px){.campaign-dates-grid{grid-template-columns:1fr;}}
  .advertiser-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:8px;}
  .advertiser-grid .full{grid-column:1/-1;}
  .advertiser-grid label{display:block;font-weight:700;font-size:12px;margin-bottom:6px;color:rgba(255,255,255,.75);}
  .advertiser-grid input,.advertiser-grid textarea{width:100%;padding:11px;border:1px solid rgba(255,255,255,.18);border-radius:3px;font:inherit;background:#0d1713;color:#fff;}
  .advertiser-grid textarea{min-height:70px;resize:vertical;}
  @media(max-width:700px){.advertiser-grid{grid-template-columns:1fr;}}
  .order-submit-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:14px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1);}
  .order-hint{color:rgba(255,255,255,.5);font-size:12.5px;max-width:420px;}
  .order-confirm{margin-top:18px;background:#0d1713;border:1px solid var(--gold);border-radius:6px;padding:20px;display:none;}
  .order-confirm.show{display:block;}
  .order-confirm .ref{font-family:var(--display);font-weight:900;font-size:26px;color:var(--gold);}
  .order-confirm p{color:rgba(255,255,255,.72);font-size:14px;}
  .order-confirm .oc-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}
  .oc-actions a,.oc-actions button{text-decoration:none;padding:10px 16px;border-radius:4px;font-weight:700;font-size:13px;border:1px solid rgba(255,255,255,.2);background:transparent;color:#fff;cursor:pointer;}
  .oc-actions .wa{background:#25D366;border-color:#25D366;color:#fff;}
  .oc-actions .mail{background:var(--gold);border-color:var(--gold);color:#12261D;}

  .tracker-box{margin-top:22px;background:#101d18;border:1px solid rgba(255,255,255,.12);padding:20px;border-radius:6px;}
  .tracker-box h4{color:#fff;font-size:19px;margin-bottom:4px;}
  .tracker-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;}
  .tracker-row input{flex:1;min-width:200px;padding:11px;border:1px solid rgba(255,255,255,.18);border-radius:3px;background:#0d1713;color:#fff;}
  .tracker-row button{padding:11px 18px;border-radius:3px;border:1px solid var(--gold);background:var(--gold);color:#12261D;font-weight:700;cursor:pointer;}
  .tracker-result{margin-top:14px;}
  .status-timeline{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
  .status-timeline span{padding:6px 10px;border-radius:20px;font-size:11px;font-weight:700;background:rgba(255,255,255,.08);color:rgba(255,255,255,.5);}
  .status-timeline span.done{background:rgba(31,186,114,.18);color:#62e39d;}
  .status-timeline span.current{background:var(--gold);color:#12261D;}
  .status-timeline span.cancelled{background:rgba(214,77,67,.18);color:#ff8e86;}

  @media(max-width:560px){.inventory-summary{grid-template-columns:1fr}.order-submit-row{flex-direction:column;align-items:stretch}}

.staff-dashboard{display:none;margin-top:18px;padding:18px;background:#f2f4ef;border:1px solid var(--line);}
.staff-dashboard.show{display:block;}
/* ===== ADMIN DASHBOARD — RÉGIE PUBLICITAIRE ===== */
.admin-shell{display:grid;grid-template-columns:260px 1fr;gap:0;min-height:720px;border:1px solid var(--line);background:#fff;box-shadow:0 20px 60px rgba(20,30,25,.08)}
.admin-sidebar{background:var(--grad-brand-deep);color:#fff;padding:22px 14px;display:flex;flex-direction:column;gap:8px}
.admin-brand{padding:10px 12px 18px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:8px}.admin-brand strong{font-size:20px}.admin-brand span{display:block;color:#d6a536;font-size:11px;text-transform:uppercase;letter-spacing:.12em;margin-top:5px}
.admin-nav{display:grid;gap:6px}.admin-nav button{border:0;background:transparent;color:rgba(255,255,255,.72);padding:11px 12px;text-align:left;cursor:pointer;border-radius:8px;font:inherit}.admin-nav button.active,.admin-nav button:hover{background:rgba(214,165,54,.15);color:#fff}
.admin-main{padding:24px;min-width:0}.admin-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:22px}.admin-top h3{font-size:28px;margin:0 0 5px}.admin-top p{margin:0;color:var(--ink-70)}
.admin-actions{display:flex;gap:8px;flex-wrap:wrap}.admin-btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:10px 13px;border-radius:6px;cursor:pointer;font-weight:700}.admin-btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.admin-btn.gold{background:var(--gold);border-color:var(--gold);color:#111}.admin-btn.danger{background:#fff0ee;color:#a52e26;border-color:#e8b4ae}.admin-btn.small{padding:7px 9px;font-size:12px}
.admin-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.admin-kpi{padding:16px;border:1px solid var(--line);background:#f8faf7;border-radius:8px}.admin-kpi b{display:block;font-size:28px}.admin-kpi span{font-size:12px;color:var(--ink-70)}
.admin-toolbar{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px}.admin-toolbar input,.admin-toolbar select{padding:10px;border:1px solid var(--line);background:#fff;min-width:170px}.admin-table-wrap{position:relative;overflow:auto;border:1px solid var(--line)}.admin-table{width:auto;border-collapse:collapse;white-space:nowrap}.admin-table th,.admin-table td{padding:10px 11px;border-bottom:1px solid var(--line);text-align:left;font-size:12px;vertical-align:middle}.admin-table th{background:#f2f4ef;text-transform:uppercase;letter-spacing:.05em;font-size:10px}.admin-table tr:hover td{background:#fbfcfa}.admin-thumb{width:54px;height:40px;object-fit:contain;border-radius:4px;background:#e8ece6}.admin-status{display:inline-flex;padding:4px 7px;border-radius:20px;font-size:10px;font-weight:800}.admin-status.free{background:#e5f7ed;color:#147548}.admin-status.busy{background:#fde9e7;color:#a52e26}.admin-status.reserve{background:#fdf3de;color:#8a6413}
.admin-panel{display:none}.admin-panel.active{display:block}.admin-empty{padding:30px;text-align:center;color:var(--ink-70)}
.admin-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-field{display:grid;gap:6px}.admin-field.full{grid-column:1/-1}.admin-field label{font-weight:700;font-size:12px}.admin-field input,.admin-field select,.admin-field textarea{width:100%;padding:11px;border:1px solid var(--line);background:#fff;font:inherit}.admin-field textarea{min-height:90px;resize:vertical}.admin-help{font-size:11px;color:var(--ink-70)}.admin-image-box{display:grid;grid-template-columns:180px 1fr;gap:16px;align-items:start}.admin-preview{width:180px;height:125px;border:1px dashed #bcc6bc;border-radius:7px;object-fit:contain;background:#f2f4ef;display:flex;align-items:center;justify-content:center;color:var(--ink-70);font-size:12px;text-align:center}.admin-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:6px;border-top:1px solid var(--line)}
.admin-ctd-form{display:flex;gap:10px;flex-wrap:wrap}.admin-ctd-form input{flex:1;min-width:220px;padding:11px;border:1px solid var(--line);font:inherit}
.admin-map-note{padding:10px;background:#f2f4ef;border-left:3px solid var(--gold);font-size:12px}.admin-log{max-height:260px;overflow:auto;border:1px solid var(--line);background:#fafbf9}.admin-log div{padding:9px 11px;border-bottom:1px solid var(--line);font-size:12px}.admin-log time{color:var(--ink-70);margin-right:8px}
.admin-toast{position:fixed;right:20px;bottom:20px;z-index:9000;background:#0d2419;color:#fff;padding:12px 16px;border-radius:7px;box-shadow:0 12px 30px rgba(0,0,0,.2);display:none}.admin-toast.show{display:block}.admin-danger-note{font-size:12px;color:#a52e26;background:#fff2f0;padding:10px;border-radius:6px}
.order-detail{border:1px solid var(--line);background:#f8faf7;border-radius:8px;padding:18px;margin-top:14px}
.order-detail h4{font-size:20px;margin:0 0 4px}
.order-detail .od-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:14px 0}
.order-detail .od-block{background:#fff;border:1px solid var(--line);border-radius:6px;padding:12px}
.order-detail .od-block h5{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-70)}
.order-detail .od-block p{margin:3px 0;font-size:13px}
.order-detail .od-panels{display:flex;flex-wrap:wrap;gap:6px}
.order-detail .od-panels span{background:#eef1ea;padding:5px 9px;border-radius:14px;font-size:11.5px;font-weight:700}
@media(max-width:700px){.order-detail .od-grid{grid-template-columns:1fr}}
.admin-role-badge{display:inline-flex;padding:4px 9px;border-radius:14px;background:#eef1ea;font-size:11px;font-weight:700}
@media(max-width:900px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{padding:12px}.admin-nav{grid-template-columns:repeat(2,1fr)}.admin-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.admin-form{grid-template-columns:1fr}.admin-image-box{grid-template-columns:1fr}.admin-preview{width:100%}.admin-kpis{grid-template-columns:1fr}.admin-main{padding:15px}.admin-top{display:block}.admin-actions{margin-top:12px}}

  .modal-backdrop{position:fixed;inset:0;background:rgba(5,10,8,.78);z-index:500;display:none;align-items:center;justify-content:center;padding:20px;}
  .modal-backdrop.open{display:flex;}
  .modal-card{width:min(720px,100%);max-height:90vh;overflow:auto;background:linear-gradient(160deg, var(--navy) 0%, var(--maroon) 55%, var(--maroon-light) 100%);color:#fff;padding:32px;position:relative;border-radius:14px;border:1px solid rgba(214,165,54,.45);box-shadow:0 30px 70px rgba(0,0,0,.5);}
  .modal-card h2{color:#fff;font-family:var(--display);}
  .modal-card .section-lede{color:rgba(255,255,255,.78);}
  .modal-card h2{font-size:32px;margin-bottom:8px;}
  .modal-close{position:absolute;right:14px;top:12px;width:38px;height:38px;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.08);color:#fff;border-radius:50%;cursor:pointer;font-size:18px;transition:background .2s ease, border-color .2s ease;}
  .modal-close:hover{background:rgba(214,165,54,.25); border-color:var(--gold);}
  .login-grid{display:grid;gap:13px;margin-top:18px;}
  .login-grid input,.login-grid select,.login-grid textarea{width:100%;padding:12px;border:1px solid var(--line);background:#f7f8f5;}
  .login-note{font-size:12px;color:rgba(255,255,255,.65);margin-top:12px;}

  /* ===== OUTIL D'ÉDITION EN LIGNE (crayon) — visible uniquement pour un
     administrateur connecté, permet de modifier textes et images
     directement sur le site public. ===== */
  .edit-toggle-fab{position:fixed; left:22px; bottom:22px; z-index:400; width:56px; height:56px; border-radius:50%; border:none; cursor:pointer; background:var(--grad-brand); color:#fff; font-size:22px; box-shadow:0 8px 22px rgba(91,14,45,.4); display:none; align-items:center; justify-content:center;}
  .edit-toggle-fab.visible{display:flex;}
  .edit-toggle-fab.active{background:var(--grad-brand); color:#fff;}
  .edit-toolbar{position:fixed; left:0; right:0; bottom:0; z-index:399; background:var(--ink); color:#fff; padding:12px 18px; display:none; align-items:center; justify-content:center; gap:14px; flex-wrap:wrap; box-shadow:0 -8px 24px rgba(0,0,0,.25);}
  .edit-toolbar.show{display:flex;}
  .edit-toolbar span{font-size:13px; color:rgba(255,255,255,.75);}
  .edit-toolbar button{border:1px solid rgba(255,255,255,.3); background:rgba(255,255,255,.08); color:#fff; padding:9px 14px; border-radius:20px; cursor:pointer; font-weight:600; font-size:12.5px;}
  .edit-toolbar button.danger{border-color:rgba(214,77,67,.5); color:#ff9d95;}
  body.edit-mode-on [data-edit-key][contenteditable="true"]{outline:2px dashed var(--gold); outline-offset:4px; cursor:text; border-radius:2px;}
  body.edit-mode-on [data-edit-key][contenteditable="true"]:focus{outline-color:#fff; background:rgba(214,165,54,.12);}
  .edit-img-wrap{position:relative;}
  .edit-img-btn{position:absolute; top:8px; right:8px; z-index:5; width:34px; height:34px; border-radius:50%; border:2px solid #fff; background:var(--grad-brand); color:#fff; font-size:15px; cursor:pointer; display:none; align-items:center; justify-content:center; box-shadow:0 4px 12px rgba(0,0,0,.35);}
  body.edit-mode-on .edit-img-btn{display:flex;}
  .hero-slide:not(.active) .edit-img-btn{pointer-events:none;}

  /* ===== Flèches de navigation sur les tableaux défilants ===== */
  .table-nav-arrow{position:absolute; top:50%; transform:translateY(-50%); width:32px; height:32px; border-radius:50%; border:2px solid #fff; cursor:pointer; z-index:8; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:900; line-height:1; background:var(--grad-brand); color:#fff; box-shadow:0 4px 14px rgba(0,0,0,.3); opacity:.94;}
  .table-nav-arrow:hover{opacity:1;}
  .table-nav-arrow.left{left:6px;}
  .table-nav-arrow.right{right:6px;}
  .table-nav-arrow[disabled]{opacity:.25; cursor:default; pointer-events:none;}
  .ctd-table-wrap:not(.has-overflow) .table-nav-arrow,
  .admin-table-wrap:not(.has-overflow) .table-nav-arrow{display:none;}

/* =======================================================================
   Blocs personnalisés de la page d'accueil (#contact-section)
   Gérés uniquement par le compte administrateur "CD" — ajout,
   suppression, réorganisation (voir campaign-content.php, dernier bloc
   <script>). Règles ajoutées sans modifier celles qui précèdent.
   ======================================================================= */
.home-blocks-admin-bar{ display:flex; justify-content:flex-end; margin-bottom:20px; }
.home-blocks-form{
  background:var(--surface); border:1px solid var(--line); border-radius:4px;
  padding:24px; margin-bottom:32px; max-width:520px;
}
.home-blocks-form .cd-field{ margin-bottom:16px; }
.home-blocks-form .cd-field label{ display:block; font-weight:600; font-size:13.5px; margin-bottom:6px; }
.home-blocks-form .cd-field input[type="text"],
.home-blocks-form .cd-field input[type="file"],
.home-blocks-form .cd-field textarea{
  width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:3px;
  font-family:var(--body); font-size:14.5px; background:#fff;
}
.home-blocks-form-actions{ display:flex; gap:12px; flex-wrap:wrap; }
.home-blocks-grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:24px;
}
.home-block-card{
  background:var(--surface); border:1px solid var(--line); border-radius:4px; overflow:hidden;
  display:flex; flex-direction:column;
}
.home-block-media{ aspect-ratio:16/10; overflow:hidden; background:var(--paper); }
.home-block-media img{ width:100%; height:100%; object-fit:contain; background:#eef1ea; display:block; }
.home-block-body{ padding:20px; flex:1; }
.home-block-title{ font-family:var(--display); font-weight:900; font-size:20px; margin-bottom:8px; }
.home-block-text{ color:var(--ink-70); font-size:14.5px; line-height:1.55; }
.home-block-controls{ display:flex; gap:8px; padding:0 20px 18px; flex-wrap:wrap; }
.home-blocks-empty{ color:var(--ink-45); font-size:14.5px; }

/* Onglet "Personnalisation" du panneau admin */
.admin-subsection{border:1px solid var(--line); border-radius:8px; padding:18px; margin-bottom:20px; background:#fff;}
.admin-subsection h4{margin:0 0 12px; font-family:var(--display); font-weight:800; font-size:16px;}
.admin-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px;}
.admin-form-grid input[type="color"]{padding:4px; height:42px; cursor:pointer;}
.admin-save-note{margin-left:10px; font-size:12px; color:#1a9c5a; font-weight:600;}
.admin-block-order{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px;}
.admin-block-order li{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 14px; border:1px solid var(--line); border-radius:6px; background:#fbfbf8; font-size:13.5px;}
.admin-block-order .abo-name{font-weight:700;}
.admin-block-order .abo-actions{display:flex; gap:6px;}
.admin-block-order button{border:1px solid var(--line); background:#fff; border-radius:5px; width:30px; height:30px; cursor:pointer; font-size:13px;}
.admin-block-order button:hover{background:var(--paper);}
.admin-block-order button:disabled{opacity:.35; cursor:default;}
.footer-widget-row{border:1px solid var(--line); border-radius:6px; padding:12px; margin-bottom:10px; background:#fbfbf8;}
.footer-widget-row input, .footer-widget-row textarea{width:100%; padding:9px; border:1px solid var(--line); font:inherit; margin-bottom:8px;}
.footer-widget-row textarea{min-height:60px; resize:vertical;}
.footer-widget-row-actions{display:flex; justify-content:flex-end; gap:8px;}
.footer-widgets-grid{margin-top:28px; padding-top:28px; border-top:1px solid rgba(255,255,255,.12);}

/* =======================================================================
   ESPACE PUBLICITAIRE — GOOGLE ADSENSE / SITE KIT BY GOOGLE
   Zones A à E : voir interocean_ad_zone() dans functions.php. Une zone
   n'apparaît (et n'occupe de l'espace) que si un widget publicitaire y a
   été déposé (Apparence > Widgets) — jamais de bloc vide. Toujours
   contenues dans leur conteneur (max-width:100%), jamais de débordement
   horizontal, jamais superposées au slider, au menu, aux boutons ou aux
   formulaires.
   ======================================================================= */
.io-ad-zone{ width:100%; max-width:100%; overflow:hidden; box-sizing:border-box; margin:0 auto; text-align:center; }
.io-ad-zone .io-ad-label{ display:block; font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-45); margin-bottom:8px; }
.io-ad-widget{ max-width:100%; overflow:hidden; }
.io-ad-widget img, .io-ad-widget iframe, .io-ad-widget ins{ max-width:100%!important; }

.io-ad-zone-a, .io-ad-zone-b, .io-ad-zone-c, .io-ad-zone-e{
  width:min(970px, 100%); margin-left:auto; margin-right:auto; padding:22px 28px; box-sizing:border-box;
}

/* Zone D : bandeau latéral fixe — uniquement quand l'écran est assez large
   pour laisser une marge libre au-delà du contenu (jamais de superposition). */
.io-ad-zone-d{ display:none; }
@media (min-width:1600px){
  .io-ad-zone-d{
    display:block; position:fixed; top:50%; right:20px; transform:translateY(-50%);
    width:160px; max-height:600px; z-index:60; padding:10px; box-sizing:border-box;
    background:rgba(255,255,255,.9); border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.12);
  }
}
.footer-social-list .fs-ico{display:inline-block; width:18px; text-align:center; margin-right:2px;}
.footer-social-list .fs-ico svg{vertical-align:-3px;}
.fs-ico-img{width:16px; height:16px; border-radius:50%; object-fit:cover; vertical-align:-3px;}
.footer-colby-trigger{background:none; border:none; color:inherit; font:inherit; padding:0; cursor:pointer; text-align:left;}
.footer-colby-trigger:hover{color:var(--gold);}
.footer-colby-item{position:relative;}
.colby-popup{position:absolute; z-index:400; bottom:calc(100% + 10px); left:0; background:#fff; color:var(--ink); border-radius:8px; box-shadow:0 12px 32px rgba(0,0,0,.3); padding:6px; min-width:220px; display:none;}
.colby-popup.open{display:block;}
.colby-popup-title{font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-70); padding:8px 10px 4px;}
.colby-popup-row{display:flex; align-items:center; gap:8px; padding:9px 10px; font-size:13.5px; color:var(--ink); text-decoration:none; border-radius:5px;}
.colby-popup-row:hover{background:rgba(0,0,0,.06);}
.colby-popup-ico{display:inline-flex; align-items:center; justify-content:center; width:18px;}

/* =======================================================================
   ÉCRAN DE DÉMARRAGE (SPLASH SCREEN)
   Logo Inter-Ocean Sarl centré, encerclé d'un anneau qui tourne, affiché
   le temps que la page se charge puis s'efface en fondu.
   ======================================================================= */
.io-splash{
  position:fixed; inset:0; z-index:99999; background:#ffffff;
  display:flex; align-items:center; justify-content:center;
  transition:opacity .6s ease, visibility .6s ease;
}
.io-splash.io-splash-hidden{ opacity:0; visibility:hidden; pointer-events:none; }
.io-splash-ring{
  position:relative; width:170px; height:170px;
  display:flex; align-items:center; justify-content:center;
}
.io-splash-ring::before{
  content:""; position:absolute; inset:0; border-radius:50%;
  border:5px solid rgba(91,14,45,.14);
  border-top-color:var(--maroon,#5b0e2d);
  border-right-color:var(--gold,#d6a536);
  animation:ioSplashSpin 1s linear infinite;
}
.io-splash-logo{
  width:118px; height:118px; object-fit:contain; border-radius:50%;
  background:#fff; box-shadow:0 4px 16px rgba(0,0,0,.12);
}
@keyframes ioSplashSpin{ to{ transform:rotate(360deg); } }
@media (max-width:480px){
  .io-splash-ring{width:130px;height:130px;}
  .io-splash-logo{width:88px;height:88px;}
}
