/* ==================================================
   LISANDRU PIERINI — SITE V4
   Style principal : application / carte de visite futuriste
   ================================================== */

.signature
width:min(420px,95%);
height:auto;
display:block;
margin:0 auto 18px auto;
}

.subtitle{
text-align:center;
font-size:.80rem;
letter-spacing:.18em;
text-transform:uppercase;
color:var(--cyan);
margin-top:8px;
}

.accent-orange{
color:#ff6a00 !important;
}

.signature-contact{
display:block;
width:min(180px,50%);
height:auto;
margin:0 auto 0 auto;
}

.avaibility-line{
text-align:center;
}

.scroll-panel{
  position:relative;
  overflow:hidden;
}

.scroll-zone{
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:none;
  padding-bottom:48px;
  box-sizing:border-box;
}

.scroll-zone::-webkit-scrollbar{
  display:none;
}

.scroll-indicator{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:50px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#ff6a00;
  font-size:17px;
  opacity:.80;
  pointer-events:none;
  z-index:40;
background:linear-gradient(
  to top,
  rgba(2,6,8,1),
  rgba(2,6,8,.96),
  rgba(2,6,8,.82),
  rgba(2,6,8,0)
);
}

/* ================================================== */
/* SECTION : VARIABLES GLOBALES */
/* Modifier ici : couleurs, dimensions, intensité des effets */
/* ================================================== */
:root{
  --bg:#020608;
  --bg2:#061115;
  --panel:rgba(5,15,19,.82);
  --panel2:rgba(8,24,30,.62);
  --stroke:rgba(0,229,255,.40);
  --stroke-soft:rgba(0,229,255,.18);
  --cyan:#00e5ff;
  --cyan2:#7cf8ff;
  --white:#f5f8f9;
  --muted:#a9b9bf;
  --muted2:#71858d;
  --danger:#ff5f7e;
  --shadow:0 0 30px rgba(0,229,255,.12);
  --shadow2:0 0 60px rgba(0,229,255,.18);
  --radius:18px;
  --gap:18px;
  --font:Arial,Helvetica,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--white);font-family:var(--font)}
body{
  background:
    radial-gradient(circle at 18% 12%,rgba(0,229,255,.13),transparent 30%),
    radial-gradient(circle at 88% 78%,rgba(0,229,255,.09),transparent 34%),
    linear-gradient(135deg,#010304 0%,#061115 52%,#010203 100%);
}
body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.22;background-image:linear-gradient(rgba(255,255,255,.026) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.026) 1px,transparent 1px);background-size:44px 44px}
body::after{content:"";position:fixed;inset:-20%;pointer-events:none;background:conic-gradient(from 140deg,transparent,rgba(0,229,255,.06),transparent 38%,rgba(255,255,255,.025),transparent 72%);filter:blur(22px);opacity:.7;animation:ambient 22s linear infinite}
@keyframes ambient{to{transform:rotate(360deg)}}
a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* ================================================== */
/* SECTION : CONTENEUR APPLICATION */
/* Modifier ici : taille totale, bordures, effet écran */
/* ================================================== */
.app-shell{width:min(96vw,1540px);height:min(92vh,900px);margin:4vh auto;position:relative;z-index:1;border:1px solid var(--stroke);border-radius:28px;background:rgba(0,0,0,.47);box-shadow:0 0 0 1px rgba(0,229,255,.08) inset,var(--shadow2);padding:22px;overflow:hidden}
.app-shell::before{content:"";position:absolute;inset:12px;border:1px solid rgba(0,229,255,.16);border-radius:22px;pointer-events:none}.app-shell::after{content:"";position:absolute;width:480px;height:480px;right:-140px;top:60px;background:radial-gradient(circle,rgba(0,229,255,.16),transparent 60%);filter:blur(8px);opacity:.75;pointer-events:none}
.scanline{position:absolute;left:0;right:0;top:-25%;height:18%;background:linear-gradient(180deg,transparent,rgba(0,229,255,.055),transparent);animation:scan 9s ease-in-out infinite;pointer-events:none;z-index:0}@keyframes scan{50%,100%{top:108%}}

/* ================================================== */
/* SECTION : MENU HAUT */
/* Modifier ici : liens, icônes, pages principales */
/* ================================================== */
.topbar{height:54px;display:flex;align-items:center;justify-content:space-between;gap:18px;position:relative;z-index:3;padding:0 8px}.brand-mini{display:flex;align-items:center;gap:11px;color:var(--cyan);letter-spacing:.18em;text-transform:uppercase;font-size:.78rem;font-weight:700;white-space:nowrap}.brand-mini::before{content:"▸";color:var(--cyan2)}.nav{display:flex;align-items:center;gap:12px}.nav a{width:46px;height:42px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);display:grid;place-items:center;border-radius:9px;color:var(--white);transition:.22s ease;font-size:1.12rem}.nav a:hover,.nav a.active{color:var(--cyan);border-color:var(--stroke);box-shadow:0 0 22px rgba(0,229,255,.24);transform:translateY(-2px)}

/* ================================================== */
/* SECTION : PANNEAUX GÉNÉRAUX */
/* Modifier ici : look des cadres, survols, brillance */
/* ================================================== */
.panel{border:1px solid var(--stroke-soft);background:linear-gradient(145deg,rgba(7,18,23,.88),rgba(2,6,8,.72));border-radius:var(--radius);box-shadow:var(--shadow);position:relative;overflow:hidden;min-height:0}.panel::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(0,229,255,.07),transparent);transform:translateX(-125%);transition:.55s ease;pointer-events:none}.panel:hover::before{transform:translateX(125%)}.panel::after{content:"";position:absolute;right:12px;top:12px;width:34px;height:1px;background:var(--stroke);box-shadow:0 0 12px var(--cyan);opacity:.65}.panel-inner{height:100%;min-height:0;padding:22px;position:relative;z-index:1}.compact-inner{padding:18px}.section-title{display:flex;align-items:center;gap:9px;color:var(--white);font-size:.96rem;letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px;white-space:nowrap}.section-title::before{content:"›";color:var(--cyan);font-size:1.34rem}.section-title::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 14px var(--cyan)}.muted-text{color:var(--muted);line-height:1.55;font-size:.9rem}.subtitle{color:var(--cyan);font-size:.78rem;text-transform:uppercase;letter-spacing:.13em;margin-bottom:16px;font-weight:700}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-width:136px;height:36px;border:1px solid var(--stroke);color:var(--cyan);border-radius:8px;text-transform:uppercase;font-size:.68rem;letter-spacing:.09em;transition:.22s ease;background:rgba(0,229,255,.02);cursor:pointer}.btn:hover{background:rgba(0,229,255,.10);box-shadow:0 0 22px rgba(0,229,255,.24);transform:translateY(-1px)}

/* ================================================== */
/* SECTION : PAGE INDEX — GRILLE PRINCIPALE */
/* Modifier ici : disposition des blocs sur l'accueil */
/* ================================================== */
.dashboard{height:calc(100% - 54px - 86px);display:grid;grid-template-columns:1.05fr 1.02fr 1.18fr;grid-template-rows:1fr 1fr;gap:var(--gap);position:relative;z-index:2;padding:14px 8px 0}

.identity{
  grid-row:1/3;
  position:relative;
  overflow:hidden;
}

.identity::before{
  content:"";
  position:absolute;
  width:580px;
  height:580px;
  background-image:url("../images/logo.png");
  background-repeat:no-repeat;
  background-size:contain;
  left:-200px;
  top:50%;
  transform:translateY(-50%);
  opacity:.20;
  pointer-events:none;
  z-index:0;
}

.identity > *{
  position:relative;
  z-index:1;
}

.about{grid-column:2;grid-row:1}
.skills{grid-column:2;grid-row:2}
.services{grid-column:3;grid-row:1}
.projects{grid-column:3;grid-row:2}

.identity h1,.page-title{
  font-size:clamp(2.35rem,3.65vw,4.65rem);
  line-height:.9;
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:14px;
  text-shadow:0 0 18px rgba(255,255,255,.16);
}

.identity h1 span{
  display:block;
  color:var(--muted);
  font-weight:300;
  font-size:.50em;
  margin-bottom:7px;
}

.intro-text{
  color:var(--muted);
  line-height:1.6;
  max-width:390px;
  margin-bottom:22px;
  font-size:.92rem;
}

.signature-text{font-family:"Brush Script MT",cursive;color:var(--cyan2);font-size:1.42rem;margin-bottom:16px;opacity:.92}

.logo-zone{
height:238px;
display:block;
position:relative;
}
.logo-zone::before,
.logo-zone::after{
display:none;
}
.logo-placeholder{
display:none;
}


.quick-info{
display:grid;
grid-template-columns:1fr 1fr;
gap:12px;
margin-top:6px
}

.quick-card{
  border:1px solid var(--stroke-soft);
  border-radius:10px;
  padding:10px;
  color:var(--muted);
  font-size:.68rem;
  text-transform:uppercase;
  letter-spacing:.07em;
  line-height:1.25;
  background:rgba(255,255,255,.025);
  min-width:0;
}

.quick-card strong{display:block;color:var(--white);margin-top:6px;font-size:.68rem}

.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}
.stat{border:1px solid var(--stroke-soft);border-radius:11px;padding:11px 7px;text-align:center;background:rgba(255,255,255,.025);min-width:0}
.stat .icon{color:var(--cyan);font-size:1.05rem;margin-bottom:6px}.stat strong{display:block;font-size:1.28rem;margin-bottom:2px}.stat span{display:block;color:var(--muted);font-size:.56rem;text-transform:uppercase;letter-spacing:.045em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skill{margin-bottom:11px}.skill-top{display:flex;justify-content:space-between;color:var(--white);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;gap:12px}.bar{height:5px;background:rgba(255,255,255,.08);border-radius:999px;overflow:hidden}.bar span{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--cyan2));box-shadow:0 0 12px rgba(0,229,255,.5)}.tech-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-top:13px}.tech{border:1px solid var(--stroke-soft);border-radius:9px;min-height:38px;display:grid;place-items:center;color:var(--cyan);font-size:.64rem;font-weight:700;background:rgba(255,255,255,.025);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-scroll{height:calc(100% - 44px);overflow-y:auto;padding-right:4px;scroll-behavior:smooth;scrollbar-width:none}.service-scroll::-webkit-scrollbar{display:none}.service-card{display:grid;grid-template-columns:52px 1fr 18px;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:9px;margin-bottom:9px;background:rgba(255,255,255,.025);transition:.22s ease}.service-card:hover{border-color:var(--stroke);transform:translateX(4px);box-shadow:0 0 22px rgba(0,229,255,.13)}.service-icon{height:46px;border:1px solid var(--stroke);border-radius:8px;display:grid;place-items:center;color:var(--cyan);font-size:1.12rem}.service-card h3{font-size:.78rem;margin-bottom:3px;text-transform:uppercase}.service-card p{color:var(--muted);font-size:.70rem;line-height:1.32}.arrow{color:var(--cyan);font-size:1.34rem}

.project-preview{height:calc(100% - 34px);min-height:150px;border:1px solid var(--stroke-soft);border-radius:14px;background:linear-gradient(90deg,rgba(0,0,0,.64),rgba(0,0,0,.20)),radial-gradient(circle at 84% 24%,rgba(0,229,255,.18),transparent 40%);padding:21px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden}

.project-preview::after{content:"";position:absolute;right:20px;top:18px;width:94px;height:94px;border:1px solid rgba(0,229,255,.15);border-radius:20px;transform:rotate(12deg)}

.project-preview h3{font-size:1.05rem;text-transform:uppercase;margin-bottom:7px}

.project-preview p{color:var(--muted);font-size:.80rem;margin-bottom:13px;max-width:84%}.dots{display:flex;justify-content:center;gap:9px;margin-top:11px}.dot{width:9px;height:9px;border:0;border-radius:50%;background:rgba(255,255,255,.22);transition:.18s ease;cursor:pointer}

.dot:hover{
background:#ff6a00;
box-shadow:0 0 14px rgba(255,90,0,.45);
transform:scale(1.15)
}

.dot.active{
background:var(--cyan);
box-shadow:0 0 14px var(--cyan);
transform:scale(1.15)
}

/* ================================================== */
/* SECTION : PROJECT MODAL */
/* Rôle : fenêtre modale des projets interactifs */
/* ================================================== */

.project-modal{
  position:fixed;
  inset:0;
  z-index:9998;
  display:none;
  place-items:center;
  padding:28px;
  background:rgba(0,0,0,.74);
  backdrop-filter:blur(10px);
}

.project-modal.is-open{
  display:grid;
}

.project-modal-card{
  width:min(88vw,820px);
  max-height:84vh;
  border:1px solid var(--stroke);
  border-radius:22px;
  background:linear-gradient(
    145deg,
    rgba(7,18,23,.96),
    rgba(2,6,8,.92)
  );
  box-shadow:0 0 55px rgba(0,229,255,.20);
  padding:26px;
  display:grid;
  gap:14px;
  text-align:center;
  overflow:hidden;
}

.project-modal-card img{
  max-width:min(420px,80%);
  max-height:180px;
  object-fit:contain;
  margin:0 auto 6px auto;
}

.project-modal-card h2{
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:1.15rem;
  color:var(--white);
}

.project-modal-card p{
  color:var(--muted);
  line-height:1.55;
  font-size:.88rem;
}

.project-modal-close{
  position:fixed;
  top:22px;
  right:26px;
  width:46px;
  height:46px;
  border:1px solid var(--stroke);
  border-radius:50%;
  background:rgba(5,14,18,.92);
  color:var(--cyan);
  font-size:1.75rem;
  line-height:1;
  cursor:pointer;
  box-shadow:0 0 22px rgba(0,229,255,.16);
}

.project-modal-close:hover{
  box-shadow:0 0 28px rgba(0,229,255,.28);
  transform:scale(1.05);
}

@media (max-width:640px){

  .project-modal{
    padding:16px;
  }

  .project-modal-card{
    padding:20px;
    width:100%;
  }

  .project-modal-card img{
    max-width:85%;
    max-height:140px;
  }

}


/* ================================================== */
/* SECTION : CONTACT BAS DE PAGE — INDEX */
/* Modifier ici : coordonnées rapides, bouton */
/* ================================================== */
.footer-contact{height:72px;position:relative;z-index:2;margin:12px 8px 0;border:1px solid var(--stroke);border-radius:16px;background:rgba(5,14,18,.78);display:grid;grid-template-columns:1.05fr 1.5fr 1fr auto;align-items:center;gap:14px;padding:12px 18px;box-shadow:var(--shadow);overflow:hidden}.contact-title{color:var(--white);text-transform:uppercase;letter-spacing:.12em;font-size:.88rem;white-space:nowrap}.contact-item{color:var(--muted);display:flex;align-items:center;gap:10px;font-size:.78rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-item span:first-child{color:var(--cyan);font-size:1rem;flex:0 0 auto}.cta{justify-self:end;height:42px;padding:0 18px;border:1px solid var(--stroke);border-radius:999px;color:var(--cyan);display:inline-flex;align-items:center;gap:10px;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;transition:.22s ease;white-space:nowrap}.cta:hover{background:rgba(0,229,255,.10);transform:translateY(-2px);box-shadow:0 0 26px rgba(0,229,255,.18)}

/* ================================================== */
/* SECTION : PAGE CONTACT */
/* Modifier ici : disposition photo, formulaire, coordonnées, map, menu pages */
/* ================================================== */
.contact-grid{height:calc(100% - 54px);display:grid;grid-template-columns:.96fr 1.18fr 1.16fr;grid-template-rows:1fr .92fr .56fr;gap:var(--gap);position:relative;z-index:2;padding:14px 8px 0}.contact-profile{grid-row:1/3}.contact-form-panel{grid-row:1/3}.contact-info-panel{grid-column:3;grid-row:1}.map-panel{grid-column:3;grid-row:2}.site-menu-panel{grid-column:1/4;grid-row:3}.portrait-frame{width:min(100%,275px);aspect-ratio:1/1;border:1px solid var(--stroke);border-radius:18px;overflow:hidden;margin:16px auto 18px;background:rgba(255,255,255,.03);display:grid;place-items:center}.portrait-frame img{width:100%;height:100%;object-fit:cover}.contact-form{height:calc(100% - 44px);display:grid;grid-template-rows:auto auto auto 1fr auto;gap:10px}.contact-form label{display:grid;gap:6px;color:var(--muted);font-size:.70rem;text-transform:uppercase;letter-spacing:.07em}.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--stroke-soft);background:rgba(255,255,255,.035);color:var(--white);border-radius:10px;padding:11px 12px;outline:none}.contact-form textarea{height:100%;min-height:110px;resize:none}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--stroke);box-shadow:0 0 18px rgba(0,229,255,.12)}.form-btn{justify-self:center;margin-top:2px;min-width:170px}.info-list{display:grid;grid-template-columns:1fr;gap:10px}.info-list a{border:1px solid var(--stroke-soft);border-radius:10px;padding:12px;color:var(--muted);display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.025);transition:.22s ease;min-width:0}.info-list a:hover{border-color:var(--stroke);color:var(--white);box-shadow:0 0 18px rgba(0,229,255,.12)}.info-list span{color:var(--cyan);flex:0 0 auto}.map-placeholder{height:calc(100% - 42px);min-height:128px;border:1px dashed var(--stroke-soft);border-radius:14px;display:grid;place-items:center;text-align:center;color:var(--muted);background:radial-gradient(circle,rgba(0,229,255,.10),transparent 55%)}.map-placeholder div{font-size:2.0rem;color:var(--cyan);letter-spacing:.18em}.map-placeholder small{display:block;margin-top:7px;opacity:.75}.site-links{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;height:calc(100% - 42px)}.site-links a{border:1px solid var(--stroke-soft);border-radius:12px;background:rgba(255,255,255,.025);display:flex;align-items:center;justify-content:center;text-align:center;padding:10px;color:var(--muted);text-transform:uppercase;font-size:.72rem;letter-spacing:.08em;transition:.2s ease}.site-links a:hover{border-color:var(--stroke);color:var(--cyan);box-shadow:0 0 18px rgba(0,229,255,.12)}

/* ================================================== */
/* SECTION : PAGE OPTIMAX */
/* Modifier ici : services Optimax, tarifs, textes, preuves, CTA */
/* ================================================== */
.optimax-grid{height:calc(100% - 54px);display:grid;grid-template-columns:1.08fr 1fr 1fr;grid-template-rows:1fr 1fr .58fr;gap:var(--gap);position:relative;z-index:2;padding:14px 8px 0}.optimax-hero{grid-row:1/3}.optimax-services{grid-column:2;grid-row:1/3}.optimax-process{grid-column:3;grid-row:1}.optimax-pack{grid-column:3;grid-row:2}.optimax-bottom{grid-column:1/4;grid-row:3}.big-mark{font-size:5.6rem;line-height:1;color:rgba(0,229,255,.16);font-weight:900;letter-spacing:-.08em;margin:10px 0}.feature-list{display:grid;gap:10px}.feature-list li{list-style:none;border:1px solid var(--stroke-soft);border-radius:11px;padding:11px 12px;color:var(--muted);background:rgba(255,255,255,.025)}.feature-list strong{display:block;color:var(--white);font-size:.82rem;text-transform:uppercase;margin-bottom:4px}.steps{display:grid;gap:10px}.step{display:grid;grid-template-columns:36px 1fr;gap:10px;align-items:start}.step span{height:36px;border:1px solid var(--stroke);border-radius:50%;display:grid;place-items:center;color:var(--cyan)}.step p{color:var(--muted);font-size:.84rem;line-height:1.45}.price-card{border:1px solid var(--stroke);border-radius:14px;padding:18px;background:rgba(0,229,255,.035)}.price-card .price{font-size:2.2rem;color:var(--white);margin:8px 0}.price-card small{color:var(--muted)}.bottom-actions{height:calc(100% - 42px);display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.action-box{border:1px solid var(--stroke-soft);border-radius:12px;background:rgba(255,255,255,.025);padding:14px;display:flex;align-items:center;justify-content:space-between;gap:10px}.action-box strong{text-transform:uppercase;font-size:.78rem}.action-box span{color:var(--cyan)}

/* ================================================== */
/* SECTION : PAGES VIERGES HR1 / HR2 */
/* Modifier ici : structure réutilisable pour futures pages */
/* ================================================== */
.blank-grid{height:calc(100% - 54px);display:grid;grid-template-columns:1.1fr 1fr 1fr;grid-template-rows:1fr 1fr .58fr;gap:var(--gap);position:relative;z-index:2;padding:14px 8px 0}.blank-hero{grid-row:1/3}.blank-wide{grid-column:1/4;grid-row:3}.placeholder-line{height:10px;border-radius:999px;background:rgba(255,255,255,.08);margin:12px 0}.placeholder-line.short{width:55%}.placeholder-line.mid{width:76%}

/* ================================================== */
/* SECTION : RESPONSIVE */
/* Modifier ici : adaptation smartphone/tablette */
/* ================================================== */
@media (max-width:1100px){html,body{height:auto;overflow:auto}.app-shell{width:100%;height:auto;min-height:100vh;margin:0;border-radius:0;padding:16px}.dashboard,.contact-grid,.optimax-grid,.blank-grid{height:auto;grid-template-columns:1fr;grid-template-rows:auto}.identity,.about,.skills,.services,.projects,.contact-profile,.contact-form-panel,.contact-info-panel,.map-panel,.site-menu-panel,.optimax-hero,.optimax-services,.optimax-process,.optimax-pack,.optimax-bottom,.blank-hero,.blank-wide{grid-column:auto;grid-row:auto}.footer-contact{height:auto;grid-template-columns:1fr;align-items:start;margin-top:16px}.cta{justify-self:start}.service-scroll{max-height:none;overflow:visible}.site-links,.bottom-actions{grid-template-columns:1fr 1fr;height:auto}.nav{gap:7px}.nav a{width:40px;height:38px}.page-title,.identity h1{font-size:2.55rem}}
@media (max-width:640px){.site-links,.bottom-actions,.stats,.tech-row{grid-template-columns:1fr}.topbar{align-items:flex-start;gap:10px;flex-direction:column;height:auto}.nav{flex-wrap:wrap}.portrait-frame{max-width:220px}.panel-inner{padding:18px;}}

.signature{
width:min(420px,95%);
height:auto;
display:block;
margin:0 auto 18px auto;
}

.subtitle{
text-align:center;
font-size:.80rem;
letter-spacing:.18em;
text-transform:uppercase;
color:var(--cyan);
margin-top:8px;
}

/* ==================================================
   SECTION : AJUSTEMENTS V4
   Rôle : finitions demandées : LEDs visibles, réseaux, documents, scroll prestations
   ================================================== */

.project-preview{
height:calc(100% - 52px);
min-height:120px;
padding:17px 20px 16px;
position:relative;
}

.project-preview p{
margin-bottom:10px;
font-size:.76rem;
line-height:1.38;
}

.project-logo{
display:block;
height:auto;
max-height:none;
object-fit:contain;
margin:4px auto 12px auto;
opacity:.80;
}

.project-logo.optimax-logo{
width:340px;
position:absolute;
left:50%;
top:25%;
transform:translate(-50%,-50%);
z-index:0;
opacity:.65;
pointer-events:none;
}

.project-logo.philopublic-logo{
width:370px;
position:absolute;
left:50%;
top:25%;
transform:translate(-50%,-50%);
z-index:0;
opacity:.75;
pointer-events:none;
}

.project-logo.horizon-logo{
width:400px;
position:absolute;
left:50%;
top:25%;
transform:translate(-50%,-50%);
z-index:0;
opacity:.75;
pointer-events:none;
}

.project-logo.rockdio-logo{
width:230px;
position:absolute;
left:50%;
top:48%;
transform:translate(-50%,-50%);
z-index:0;
opacity:.65;
pointer-events:none;
}

.project-logo.newweb-logo{
width:310px;
position:absolute;
left:50%;
top:32%;
transform:translate(-50%,-50%);
z-index:0;
opacity:.75;
pointer-events:none;
}

.project-preview h3,
.project-preview p,
.project-preview .btn{
position:relative;
z-index:1;
}

.dots{margin-top:9px;padding-bottom:2px}.dot{width:10px;height:10px}
.footer-contact{height:74px;grid-template-columns:1fr 1.45fr 1.42fr auto;margin:10px 8px 0}.contact-socials{display:flex;align-items:center;gap:9px;min-width:0}.contact-socials a{height:36px;border:1px solid var(--stroke-soft);border-radius:999px;padding:0 12px;display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.055em;background:rgba(255,255,255,.025);transition:.2s ease;white-space:nowrap}.contact-socials a:hover{border-color:var(--stroke);color:var(--cyan);box-shadow:0 0 18px rgba(0,229,255,.14)}.social-icon{color:var(--cyan);font-weight:800;font-size:.85rem;line-height:1}
.feature-scroll{height:calc(100% - 44px);overflow-y:auto;padding-right:4px;scrollbar-width:none;scroll-behavior:smooth}.feature-scroll::-webkit-scrollbar{display:none}.optimax-services .feature-list{padding-bottom:4px}.optimax-services .feature-list li{margin-bottom:10px}.bottom-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.action-box{min-width:0}.action-box strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ================================================== */
/* SECTION : PAGE DOCUMENTS */
/* Modifier ici : grille, cartes document, cartes APK */
/* ================================================== */
.documents-grid{height:calc(100% - 54px);display:grid;grid-template-columns:1.05fr 1fr 1fr;grid-template-rows:1fr 1fr .58fr;gap:var(--gap);position:relative;z-index:2;padding:14px 8px 0}.documents-hero{grid-row:1/3}.documents-list-one{grid-column:2;grid-row:1/3}.documents-list-two{grid-column:3;grid-row:1}.apk-panel{grid-column:3;grid-row:2}.documents-nav{grid-column:1/4;grid-row:3}.doc-stack{height:calc(100% - 44px);overflow-y:auto;padding-right:4px;display:grid;gap:10px;align-content:start;scrollbar-width:none}.doc-stack::-webkit-scrollbar{display:none}.doc-card{border:1px solid var(--stroke-soft);border-radius:13px;background:rgba(255,255,255,.025);padding:13px;display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:12px;transition:.22s ease}.doc-card:hover{border-color:var(--stroke);box-shadow:0 0 22px rgba(0,229,255,.14);transform:translateX(3px)}.doc-icon{width:48px;height:48px;border:1px solid var(--stroke);border-radius:10px;display:grid;place-items:center;color:var(--cyan);font-weight:800;background:rgba(0,229,255,.035)}.doc-card h3{font-size:.82rem;text-transform:uppercase;margin-bottom:4px}.doc-card p{font-size:.70rem;color:var(--muted);line-height:1.35}.download-chip{height:34px;border:1px solid var(--stroke-soft);border-radius:999px;padding:0 12px;display:inline-flex;align-items:center;color:var(--cyan);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.android-mark{width:78px;height:78px;margin:8px auto 16px;display:grid;place-items:center;border:1px solid var(--stroke);border-radius:22px;background:radial-gradient(circle,rgba(0,229,255,.13),rgba(255,255,255,.025));box-shadow:0 0 22px rgba(0,229,255,.15)}.android-mark svg{width:48px;height:48px;fill:var(--cyan);filter:drop-shadow(0 0 10px rgba(0,229,255,.35))}
@media (max-width:1100px){.footer-contact{height:auto;grid-template-columns:1fr}.contact-socials{flex-wrap:wrap}.documents-grid{height:auto;grid-template-columns:1fr;grid-template-rows:auto}.documents-hero,.documents-list-one,.documents-list-two,.apk-panel,.documents-nav{grid-column:auto;grid-row:auto}.doc-stack{height:auto;max-height:none}.feature-scroll{height:auto;max-height:none;overflow:visible}.bottom-actions{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.bottom-actions{grid-template-columns:1fr}.doc-card{grid-template-columns:42px 1fr}.download-chip{grid-column:1/3;justify-content:center}.footer-contact{padding:12px}.contact-socials a{width:100%;justify-content:center}}


/* ================================================== */
/* PATCH V4.1 : FINITIONS CONTACT / INDEX */
/* Objectif : harmoniser les boutons contact et corriger le bloc téléphone */
/* ================================================== */
.footer-contact-v41{
  grid-template-columns:1fr minmax(420px, 1.75fr) auto;
  gap:20px;
  padding:12px 22px;
}
.contact-actions-v41{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  min-width:0;
}
.contact-actions-v41 a{
  height:38px;
  min-width:112px;
  border:1px solid var(--stroke-soft);
  border-radius:999px;
  padding:0 16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  color:var(--muted);
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.055em;
  background:rgba(255,255,255,.025);
  transition:.2s ease;
  white-space:nowrap;
}
.contact-actions-v41 a:hover{
  border-color:var(--stroke);
  color:var(--cyan);
  box-shadow:0 0 18px rgba(0,229,255,.14);
  transform:translateY(-1px);
}
.contact-info-panel .info-list{
  gap:11px;
}
.contact-info-panel .info-list a{
  min-height:38px;
  padding:10px 14px;
  line-height:1.2;
  overflow:hidden;
}
.contact-info-panel .info-list a.phone-row{
  margin-bottom:2px;
  padding-bottom:11px;
}
.contact-info-panel .compact-inner{
  padding-bottom:20px;
}
@media (max-width:1100px){
  .footer-contact-v41{
    grid-template-columns:1fr;
    gap:14px;
  }
  .contact-actions-v41{
    justify-content:flex-start;
    flex-wrap:wrap;
  }
}
@media (max-width:640px){
  .contact-actions-v41{
    display:grid;
    grid-template-columns:1fr;
    width:100%;
  }
  .contact-actions-v41 a{
    width:100%;
  }
}


/* ==================================================
   PATCH V4.2 : RESPONSIVE + COPYRIGHT + HR1/HR2 + FORMULAIRE
   Objectif : finaliser la base avant intégration FTP
   ================================================== */

/* SECTION : COPYRIGHT EXTERNE */
.site-copyright{
  position:fixed;
  left:50%;
  bottom:8px;
  transform:translateX(-50%);
  width:min(96vw,1540px);
  z-index:4;
  border-top:1px solid rgba(0,229,255,.18);
  color:rgba(169,185,191,.72);
  font-size:.66rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  text-align:center;
  padding-top:6px;
  pointer-events:auto;
}
.site-copyright a{
  color:rgba(124,248,255,.88);
  transition:.2s ease;
}
.site-copyright a:hover{
  color:var(--cyan);
  text-shadow:0 0 12px rgba(0,229,255,.35);
}

/* SECTION : FORMULAIRE CONTACT / ALIGNEMENT MESSAGE */
.contact-form{
  grid-template-rows:auto auto auto minmax(150px,1fr) auto;
  gap:9px;
}
.contact-form label{
  align-content:start;
}
.contact-form textarea{
  min-height:150px;
  height:100%;
  display:block;
}
.form-btn{
  margin-top:0;
  align-self:center;
}

/* SECTION : HR1 / PAGE VIERGE À 2 BLOCS */
.hr1-grid{
  height:calc(100% - 54px);
  display:grid;
  grid-template-columns:1.25fr .95fr;
  grid-template-rows:1fr .56fr;
  gap:var(--gap);
  position:relative;
  z-index:2;
  padding:14px 8px 0;
}
.hr1-main-block{grid-column:1;grid-row:1}
.hr1-side-block{grid-column:2;grid-row:1}
.hr-navigation{grid-column:1 / -1;grid-row:2}

/* SECTION : HR2 / PAGE VIERGE À 4 BLOCS */
.hr2-grid{
  height:calc(100% - 54px);
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-template-rows:1fr .56fr;
  gap:var(--gap);
  position:relative;
  z-index:2;
  padding:14px 8px 0;
}
.mini-logo-zone{
  height:120px;
  margin-top:10px;
}
.mini-logo-zone::before{width:118px;height:118px}
.mini-logo-zone::after{width:86px;height:86px}
.mini-logo-zone .logo-placeholder{width:76px;height:76px}

/* SECTION : RESPONSIVE SMARTPHONE V4.2 */
@media (max-width:1100px){
  .app-shell{
    padding-bottom:42px;
  }
  .hr1-grid,.hr2-grid{
    height:auto;
    grid-template-columns:1fr;
    grid-template-rows:auto;
  }
  .hr1-main-block,.hr1-side-block,.hr-navigation{
    grid-column:auto;
    grid-row:auto;
  }
  .hr2-grid > .panel{
    grid-column:auto;
    grid-row:auto;
  }
  .site-copyright{
    position:static;
    transform:none;
    width:calc(100% - 32px);
    margin:12px auto 8px;
    padding-bottom:8px;
  }
  .contact-form{
    min-height:520px;
    grid-template-rows:auto auto auto minmax(180px,1fr) auto;
  }
}
@media (max-width:640px){
  .contact-form{
    min-height:560px;
  }
  .contact-form textarea{
    min-height:190px;
  }
}


/* ==================================================
   PATCH V5 : GALERIE HR2 + FINITIONS CONTACT / OPTIMAX / COPYRIGHT
   Objectif : version V5 complète, sans ligne copyright et avec galeries défilantes
   ================================================== */

/* SECTION : COPYRIGHT — suppression de la ligne fine */
.site-copyright{
  border-top:0 !important;
  padding-top:4px;
}

/* SECTION : INDEX / CONTACT BAS — boutons mieux centrés dans le cadre */
.footer-contact-v41{
  grid-template-columns:1fr auto 1fr !important;
  gap:22px;
}
.footer-contact-v41 .contact-title{justify-self:start}
.footer-contact-v41 .contact-actions-v41{justify-self:center;gap:22px}
.footer-contact-v41 .cta{justify-self:end}

/* SECTION : INDEX / PROJETS RÉCENTS — LEDs parfaitement visibles */
.projects .project-preview{
  height:calc(100% - 68px) !important;
  min-height:98px;
  padding:14px 18px 12px;
}
.projects .project-preview h3{font-size:.96rem;margin-bottom:5px}
.projects .project-preview p{font-size:.71rem;line-height:1.32;margin-bottom:8px}
.projects .project-preview .btn{height:32px;min-width:122px;font-size:.64rem}
.projects .dots{margin-top:10px;padding-bottom:8px;min-height:24px;align-items:center}
.projects .dot{width:10px;height:10px;flex:0 0 auto}

/* SECTION : CONTACT / GOOGLE MAP */
.map-embed{
  height:calc(100% - 42px);
  min-height:128px;
  border:1px solid var(--stroke-soft);
  border-radius:14px;
  overflow:hidden;
  background:rgba(255,255,255,.025);
  box-shadow:0 0 18px rgba(0,229,255,.08) inset;
}
.map-embed iframe{
  width:100%;
  height:100%;
  border:0;
  filter:saturate(.75) contrast(.98) brightness(.86);
}

/* SECTION : CONTACT / FORMULAIRE — message plus long sans toucher le bouton */
.contact-form{
  grid-template-rows:auto auto auto minmax(190px,1fr) auto !important;
  gap:8px;
}
.contact-form textarea{
  min-height:190px !important;
}
.form-btn{
  align-self:end;
  margin-top:1px;
}

/* SECTION : OPTIMAX / TARIFS DOUBLES */
.price-stack{
  height:calc(100% - 42px);
  display:grid;
  grid-template-rows:1fr 1fr;
  gap:10px;
}
.price-card-compact{
  padding:13px 13px 12px !important;
  min-height:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.price-card-compact .muted-text{
  font-size:.70rem;
  line-height:1.32;
  margin-bottom:6px;
}
.price-card-compact .price{
  font-size:1.62rem;
  margin:2px 0 4px;
}
.price-card-compact .price span{
  display:block;
  color:var(--muted);
  font-size:.58rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  margin-bottom:2px;
}
.price-card-compact small{
  font-size:.62rem;
  color:var(--muted2);
}

/* SECTION : HR2 / GALERIE */
.hr2-gallery-grid{
  height:calc(100% - 54px);
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-template-rows:1fr .56fr;
  gap:var(--gap);
  position:relative;
  z-index:2;
  padding:14px 8px 0;
}
.gallery-panel{min-width:0}
.gallery-panel .panel-inner{display:flex;flex-direction:column;min-height:0}
.gallery-desc{
  color:var(--muted);
  font-size:.70rem;
  line-height:1.35;
  margin:-4px 0 10px;
  min-height:36px;
}
.gallery-scroll{
  flex:1;
  min-height:0;
  overflow-y:auto;
  padding-right:4px;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-auto-rows:74px;
  gap:9px;
  scrollbar-width:none;
  scroll-behavior:smooth;
}
.gallery-scroll::-webkit-scrollbar{display:none}
.gallery-item{
  border:1px solid var(--stroke-soft);
  border-radius:12px;
  overflow:hidden;
  background:rgba(255,255,255,.025);
  transition:.22s ease;
  min-width:0;
}
.gallery-item:hover{
  border-color:#FF6A00;
  box-shadow:0 0 18px rgba(255,106,0,0.35);
  transform:translateY(-2px);
}
.gallery-item img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:.92;
}
.gallery-nav{
  grid-column:1 / -1;
  grid-row:2;
}

/* SECTION : RESPONSIVE V5 */
@media (max-width:1100px){
  .footer-contact-v41{
    grid-template-columns:1fr !important;
  }
  .footer-contact-v41 .contact-title,
  .footer-contact-v41 .contact-actions-v41,
  .footer-contact-v41 .cta{
    justify-self:start;
  }
  .hr2-gallery-grid{
    height:auto;
    grid-template-columns:1fr 1fr;
    grid-template-rows:auto;
  }
  .gallery-nav{grid-column:1 / -1;grid-row:auto}
  .gallery-scroll{
    max-height:260px;
padding-top:20px;
  }
  .map-embed{min-height:240px}
  .contact-form textarea{min-height:210px !important}
}
@media (max-width:640px){
  .hr2-gallery-grid{grid-template-columns:1fr}
  .gallery-nav{grid-column:auto}
  .gallery-scroll{grid-auto-rows:92px;max-height:310px}
  .footer-contact-v41 .contact-actions-v41{gap:12px;width:100%}
}


/* ==================================================
   PATCH V5.1 : PRÉSENTATION INDEX + GALERIE HR2 + MAP CONTACT
   Objectif : nav HR2 même hauteur que HR1, cartes galerie plus longues, map centrée Vescovato avec rendu sombre/cyan
   ================================================== */

/* SECTION : INDEX / PRÉSENTATION */
#presentation .muted-text{
  line-height:1.55;
}

/* SECTION : HR2 / GALERIE — navigation de même proportion que HR1 */
.hr2-gallery-grid{
  grid-template-rows:1fr 1fr .58fr !important;
}
.hr2-gallery-grid > .gallery-panel{
  grid-row:1 / 3;
}
.hr2-gallery-grid > .gallery-nav{
  grid-column:1 / -1;
  grid-row:3 !important;
}
.gallery-scroll{
  grid-auto-rows:82px;
}
.gallery-desc{
  min-height:28px;
}

/* SECTION : CONTACT / GOOGLE MAP — style plus cohérent avec le site */
.map-embed{
  background:linear-gradient(135deg, rgba(0,229,255,.08), rgba(255,255,255,.018));
  box-shadow:
    0 0 0 1px rgba(0,229,255,.08) inset,
    0 0 22px rgba(0,229,255,.10) inset;
}
.map-embed iframe{
  filter:invert(.88) hue-rotate(150deg) saturate(.72) contrast(.94) brightness(.72);
  opacity:.86;
}
.map-panel .section-title::after{
  background:var(--cyan);
}

@media (max-width:1100px){
  .hr2-gallery-grid{
    grid-template-columns:1fr 1fr;
    grid-template-rows:auto !important;
  }
  .hr2-gallery-grid > .gallery-panel,
  .hr2-gallery-grid > .gallery-nav{
    grid-column:auto;
    grid-row:auto !important;
  }
}
@media (max-width:640px){
  .hr2-gallery-grid{grid-template-columns:1fr}
}


/* ==================================================
   PATCH V5.2 : MAP STANDARD + FORMULAIRE + GALERIE LIGHTBOX + OPTIMAX
   Objectif : ajustements demandés pour V5.2 sans changer la base visuelle.
   ================================================== */

/* SECTION : CONTACT / MAP — retour au rendu Google Maps standard, centrée Vescovato */
.map-embed iframe{
  filter:none !important;
  opacity:1 !important;
}

/* SECTION : CONTACT / FORMULAIRE — message légèrement plus long, bouton conservé */
.contact-form{
  gap:8px;
}
.contact-form textarea{
  min-height:230px !important;
}
.form-btn{
  margin-top:4px;
}

/* SECTION : MENU HAUT — icônes HR1/HR2 inversées dans le HTML */

/* SECTION : HR2 / GALERIE — images cliquables en aperçu centré */
.gallery-lightbox{
  position:fixed;
  inset:0;
  z-index:9999;
  display:none;
  place-items:center;
  padding:28px;
  background:rgba(0,0,0,.74);
  backdrop-filter:blur(10px);
}
.gallery-lightbox.is-open{
  display:grid;
}
.gallery-lightbox-card{
  width:min(82vw,760px);
  max-height:82vh;
  border:1px solid var(--stroke);
  border-radius:22px;
  background:linear-gradient(145deg,rgba(7,18,23,.96),rgba(2,6,8,.92));
  box-shadow:0 0 55px rgba(0,229,255,.20);
  padding:18px;
  display:grid;
  gap:12px;
}
.gallery-lightbox-card img{
  width:100%;
  max-height:68vh;
  object-fit:contain;
  border:1px solid var(--stroke-soft);
  border-radius:16px;
  background:rgba(255,255,255,.025);
  user-select:none;
  -webkit-user-drag:none;
}
.gallery-lightbox-card p{
  color:var(--muted);
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:.78rem;
}
.gallery-lightbox-close{
  position:fixed;
  top:22px;
  right:26px;
  width:46px;
  height:46px;
  border:1px solid var(--stroke);
  border-radius:50%;
  background:rgba(5,14,18,.92);
  color:var(--cyan);
  font-size:1.75rem;
  line-height:1;
  cursor:pointer;
  box-shadow:0 0 22px rgba(0,229,255,.16);
}
.gallery-item img,
.logo-placeholder,
.portrait-frame img,
.doc-card img{
  user-select:none;
  -webkit-user-drag:none;
}

/* SECTION : OPTIMAX / MÉTHODES — deux cartes comme la section Base */
.method-stack{
  display:grid;
  gap:10px;
  height:calc(100% - 42px);
}
.method-card{
  border:1px solid var(--stroke-soft);
  border-radius:13px;
  padding:12px;
  background:rgba(0,229,255,.035);
  display:grid;
  grid-template-columns:44px 1fr;
  align-items:start;
  gap:12px;
  min-height:0;
}
.method-number{
  width:42px;
  height:42px;
  border:1px solid var(--stroke);
  border-radius:50%;
  display:grid;
  place-items:center;
  color:var(--cyan);
  font-weight:800;
  font-size:.78rem;
}
.method-card h3{
  font-size:.82rem;
  text-transform:uppercase;
  margin-bottom:5px;
}
.method-card p{
  color:var(--muted);
  font-size:.76rem;
  line-height:1.36;
}

@media (max-width:1100px){
  .contact-form textarea{min-height:240px !important}
  .gallery-lightbox-card{width:min(92vw,760px)}
}


/* ================================================== */
/* SECTION : V5.3 — CORRECTION FORMULAIRE CONTACT */
/* Rôle : éviter toute superposition entre message et bouton Envoyer */
/* Modifier ici : hauteur du message ou espacement du bouton si besoin */
/* ================================================== */

.contact-form{
  grid-template-rows:auto auto auto minmax(150px, 1fr) auto !important;
  gap:8px !important;
}

.contact-form textarea{
  min-height:165px !important;
  height:100% !important;
  max-height:100% !important;
}

.form-btn{
  align-self:center !important;
  justify-self:center !important;
  margin-top:0 !important;
}

@media (max-width:1100px){
  .contact-form textarea{
    min-height:190px !important;
  }
}

/* ================================================== */
/* SECTION : CARTES SCROLLABLES */
/* Rôle : scroll propre sans indicateur automatique */
/* ================================================== */

#presentation .presentation-scroll{
  max-height:280px;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:none;
  padding-bottom:50px;
  box-sizing:border-box;
}

#presentation .presentation-scroll::-webkit-scrollbar{
  display:none;
}

#presentation > .section-title{
  margin:18px 18px 10px 18px;
}

#domaines{
  overflow:hidden;
}

#domaines .updates-scroll{
  max-height:360px;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-width:none;
  padding-bottom:50px;
  box-sizing:border-box;
}

#domaines .updates-scroll::-webkit-scrollbar{
  display:none;
}

#domaines > .section-title{
  margin:18px 18px 10px 18px;
}