:root{
  /* Palette vibrante 2025 */
  --cream: #faf8f5;
  --beige: #e8e4df;
  --accent: #7c3aed;
  --accent-dark: #6d28d9;
  --accent-light: #a855f7;
  --cyan: #06b6d4;
  --cyan-light: #22d3ee;
  --pink: #ec4899;
  --pink-light: #f472b6;
  --orange: #f97316;
  --orange-light: #fb923c;
  --emerald: #10b981;
  --emerald-light: #34d399;
  --dark: #1a1a1a;
  --text: #2a2a2a;
  --text-light: #666;
  --gray-light: #f5f5f5;
  --gray: #e0e0e0;
  --bg-alt: #f8f9fa;
  --bg-glass: rgba(255, 255, 255, 0.7);

  /* Compatibilité */
  --c1: #7c3aed;
  --c2: #a855f7;
  --c4: #7c3aed;
  --c5: #ffd166;
  --bg: var(--cream);
  --radius: 16px;
  --shadow: 0 4px 20px rgba(0,0,0,.08);
  --shadow-hover: 0 8px 30px rgba(0,0,0,.12);
  --shadow-color: 0 6px 24px rgba(124,58,237,0.15);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}

/* Scroll margin pour ancres (évite que le header cache le début des sections) */
section[id] {
  scroll-margin-top: 100px;
}
body{
  margin:0;
  font-family:"Space Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  color:var(--text);
  background:var(--cream);
  overflow-x:hidden;
  line-height: 1.6;
}
.container{width:min(1180px,90vw); margin-inline:auto}
a{text-decoration:none;color:inherit; transition: opacity .3s ease}
a:hover{opacity: .7}
img{max-width:100%; height:auto; display:block}

/* Focus visible pour accessibilité */
*:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 3px;
  border-radius: 4px;
}

button:focus-visible, a:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 3px;
}

/* Émojis et pictogrammes */
.emoji{
  display: inline-block;
  font-size: 1.2em;
  margin-right: 0.5em;
  vertical-align: middle;
}

.icon-accent{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  background: var(--accent);
  border-radius: 12px;
  font-size: 24px;
  transition: transform .3s ease;
}

.icon-accent:hover{
  transform: translateY(-4px);
}

/* Accessibilité: réduire les animations si prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important}
}

/* ========================
   Loader sobre et minimaliste
   ======================== */
#loader{
  position:fixed; inset:0;
  display:grid; place-items:center;
  z-index:9999;
  background: linear-gradient(135deg, #7c3aed 0%, #a855f7 100%);
  color: #fff;
  opacity: 1;
  pointer-events: all;
  transition: opacity 0.6s ease;
}
.loader-wrap{
  display:grid; gap:24px;
  place-items:center;
  padding:40px;
}
.loader-emoji{
  font-size: 56px;
  animation: pulseGlow 2s ease-in-out infinite;
}
@keyframes pulseGlow{
  0%, 100%{ opacity: 0.6; transform: scale(0.95); }
  50%{ opacity: 1; transform: scale(1.08); }
}
.progress{
  width:min(400px,80vw);
  height:8px;
  border-radius:999px;
  background:rgba(255,255,255,0.2);
  overflow:hidden;
}
.progress>span{
  display:block;
  height:100%;
  width:0%;
  background:#fff;
  transition: width .3s ease;
}
.percent{
  font-weight:600;
  font-size:14px;
  color:#fff;
  letter-spacing: 0.5px;
}
.tip{
  font-size:13px;
  text-align:center;
  color:rgba(255,255,255,0.9);
}
.wipe{
  position:fixed; inset:0;
  z-index:9998;
  background: linear-gradient(135deg, #7c3aed 0%, #a855f7 100%);
  transform:scaleY(0);
  transform-origin:0 0;
}
.wipe.active{
  animation:wipeIn 1.05s cubic-bezier(.22,1,.36,1) forwards;
}
@keyframes wipeIn{
  0%{transform:scaleY(0)}
  60%{transform:scaleY(1)}
  100%{transform:scaleY(0); transform-origin:100% 100%}
}

/* ========================
   Header avec pill animée
   ======================== */
.site-header{
  position:sticky;
  top:0;
  z-index:100;
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(24px) saturate(180%);
  border-bottom:1px solid rgba(0,0,0,.1);
  box-shadow: 0 4px 20px rgba(0,0,0,.08), 0 1px 0 rgba(255,255,255,.5) inset;
  transition: all 0.3s ease, opacity 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Header qui rétrécit au scroll */
.site-header.scrolled {
  padding: 4px 0;
  background:rgba(255,255,255,.98);
  box-shadow: 0 6px 28px rgba(0,0,0,.12), 0 1px 0 rgba(255,255,255,.8) inset;
  border-bottom:1px solid rgba(0,0,0,.12);
}

.site-header .glass{
  background:transparent;
  border-bottom:none;
}

.nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:20px 32px;
  max-width: 1400px;
  margin: 0 auto;
  transition: padding 0.3s ease;
}

.scrolled .nav {
  padding: 12px 32px;
}

.brand{
  display:flex;
  align-items:center;
  gap:14px;
  font-weight:700;
  letter-spacing:-.03em;
  color:#0f0f0f;
  font-size:1.15rem;
  transition: transform 0.3s ease;
}

.brand:hover {
  transform: translateY(-2px);
  opacity: 1;
}

.brand .logo{
  width:36px;
  height:36px;
  border-radius:10px;
  background: linear-gradient(135deg, var(--accent) 0%, var(--accent-light) 100%);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:20px;
  box-shadow: 0 4px 12px rgba(124,58,237,0.25);
  transition: all 0.3s ease;
}

.brand:hover .logo {
  box-shadow: 0 6px 16px rgba(124,58,237,0.35);
  transform: rotate(-5deg) scale(1.05);
}
.nav-wrap{
  display:flex;
  align-items:center;
  gap:24px;
}
.nav-links{
  position:relative;
  display:flex;
  gap:4px;
  padding:5px;
  border-radius:999px;
  background: rgba(245,243,240,0.8);
  border:1px solid rgba(124,58,237,0.18);
  box-shadow: 0 3px 12px rgba(0,0,0,.08), inset 0 1px 0 rgba(255,255,255,0.9);
}

.nav-links a{
  position:relative;
  padding:10px 18px;
  color:var(--text);
  font-weight:600;
  font-size:.94rem;
  border-radius:999px;
  z-index:1;
  transition:all .3s ease;
}

.nav-links a:hover{
  color:#1a1a1a;
  opacity:1;
  background: rgba(255,255,255,0.7);
}

.nav-links .pill{
  position:absolute;
  inset:5px auto 5px 5px;
  width:0;
  border-radius:999px;
  background: linear-gradient(135deg, var(--accent) 0%, var(--accent-light) 100%);
  box-shadow: 0 2px 12px rgba(124,58,237,0.3), 0 1px 3px rgba(0,0,0,.1);
  z-index:0;
  transition:all .4s cubic-bezier(.22,1,.36,1);
}

/* Animation au hover sur la pill */
.nav-links:hover .pill {
  box-shadow: 0 4px 16px rgba(124,58,237,0.4), 0 2px 6px rgba(0,0,0,.15);
}

.btn{
  --h:44px;
  height:var(--h);
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:0 24px;
  border-radius:10px;
  font-weight:600;
  font-size:.95rem;
  transition:all .3s cubic-bezier(.22,1,.36,1);
  border:none;
  cursor:pointer;
  position: relative;
  overflow: hidden;
}

.btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%);
  opacity: 0;
  transition: opacity 0.3s ease;
}

.btn:hover::before {
  opacity: 1;
}

.btn.mint{
  background: linear-gradient(135deg, var(--accent) 0%, var(--accent-light) 100%);
  color:#fff;
  box-shadow: 0 4px 14px rgba(124,58,237,0.3);
}

.btn.mint:hover {
  box-shadow: 0 6px 20px rgba(124,58,237,0.45);
  transform: translateY(-2px);
  opacity: 1;
}

.btn.white{
  background:var(--dark);
  color:var(--cream);
  box-shadow: 0 4px 14px rgba(0,0,0,0.2);
}

.btn.white:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,0.3);
  transform: translateY(-2px);
  opacity: 1;
}

.btn.violet{
  background: linear-gradient(135deg, var(--accent-dark) 0%, var(--accent) 100%);
  color:#fff;
  box-shadow: 0 4px 14px rgba(109,40,217,0.3);
}

.btn.violet:hover {
  box-shadow: 0 6px 20px rgba(109,40,217,0.45);
  transform: translateY(-2px);
  opacity: 1;
}
.burger{
  display:none;
  width:44px;
  height:44px;
  border-radius:8px;
  border:1px solid var(--gray);
  background:transparent;
  color:var(--dark);
}
@media (max-width:900px){
  .nav-wrap{display:none}
  .burger{display:grid; place-items:center}
}

/* ========================
   Hero sobre et moderne
   ======================== */
.hero-section{
  background: var(--cream);
  position: relative;
}

.hero{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:80px;
  align-items:center;
  padding:120px 0 80px;
  min-height:85vh;
}
.title{
  font-size:clamp(40px,5.5vw,72px);
  line-height:1.1;
  margin:0 0 20px;
  font-weight:700;
  letter-spacing:-.03em;
  color:var(--dark);
}
.title .gradient{
  background: linear-gradient(135deg, var(--accent), var(--accent-light), var(--cyan));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  position:relative;
  animation: gradientShift 5s ease-in-out infinite;
  background-size: 200% 200%;
}

@keyframes gradientShift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
.subtitle{
  font-size:clamp(18px,2vw,22px);
  color:var(--text-light);
  line-height:1.5;
  font-weight:400;
}
.profile{
  position:relative;
  width:min(480px,100%);
  aspect-ratio:1/1;
  border-radius:50%;
  margin:auto;
  overflow:hidden;
  box-shadow:
    0 8px 32px rgba(124,58,237,0.3),
    0 0 0 4px rgba(255,255,255,1),
    0 0 0 8px rgba(124,58,237,0.2);
  transition: all .4s ease;
}

.profile:hover{
  box-shadow:
    0 16px 48px rgba(124,58,237,0.4),
    0 0 0 4px rgba(255,255,255,1),
    0 0 0 8px rgba(6,182,212,0.4),
    0 0 80px rgba(124,58,237,0.3);
  transform: scale(1.02);
}
.profile .stack{
  position:relative;
  width:100%;
  height:100%;
  border-radius:50%;
  overflow:hidden;
}
.profile img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:50%;
  opacity:0;
  transform:scale(1);
  transition:opacity 2.5s ease, transform 2.5s ease;
}
.profile img.is-active{
  opacity:1;
  transform:scale(1);
}
@media (max-width:920px){
  .hero{
    grid-template-columns:1fr;
    gap:48px;
    padding:80px 0 40px;
    min-height:auto;
  }
  .profile{width:100%; max-width:400px}
}

/* ========================
   Sections modernes avec séparation claire
   ======================== */
.section{
  padding:100px 0;
  position: relative;
  overflow: hidden;
}

/* Séparation visuelle alternée */
.section:nth-child(odd){
  background: var(--cream);
}

.section:nth-child(even){
  background: linear-gradient(135deg, #f8f9fa 0%, #faf8f5 100%);
}

/* Séparateurs pleine largeur entre sections - TRÈS VISIBLES */
.section:not(:first-child)::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(124,58,237,0.2) 5%,
    rgba(124,58,237,0.6) 50%,
    rgba(124,58,237,0.2) 95%,
    transparent 100%
  );
  box-shadow: 0 2px 12px rgba(124,58,237,0.4);
}

.section:nth-child(even)::after {
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(6,182,212,0.2) 5%,
    rgba(6,182,212,0.6) 50%,
    rgba(6,182,212,0.2) 95%,
    transparent 100%
  );
  box-shadow: 0 2px 12px rgba(6,182,212,0.4);
}

/* Effet de profondeur avec pattern */
.section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  background:
    radial-gradient(circle at 20% 50%, rgba(124,58,237,0.03) 0%, transparent 50%),
    radial-gradient(circle at 80% 80%, rgba(236,72,153,0.03) 0%, transparent 50%);
  pointer-events: none;
  z-index: 0;
}

/* Bordure du haut pour plus de visibilité */
.section {
  border-top: 3px solid transparent;
  border-image: linear-gradient(90deg,
    transparent 0%,
    rgba(236,72,153,0.3) 50%,
    transparent 100%
  ) 1;
}

.section > * {
  position: relative;
  z-index: 1;
}

.section p{
  font-size:17px;
  line-height:1.7;
  color:var(--text);
  margin:0 0 1.2em;
}
.section p strong{
  color:var(--dark);
}
.section p:last-child{margin-bottom:0}
.section h2{
  font-size:clamp(36px,5vw,56px);
  margin:0 0 56px;
  font-weight:700;
  letter-spacing:-.03em;
  color:var(--dark);
  position: relative;
  padding-bottom: 24px;
  text-align: center;
}

/* Ligne décorative sous les titres - CENTRÉE */
.section h2::after {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 0;
  width: 120px;
  height: 5px;
  background: linear-gradient(90deg, var(--accent), var(--cyan), var(--pink));
  border-radius: 999px;
  box-shadow: 0 3px 12px rgba(124,58,237,0.4);
  animation: titleUnderline 3s ease-in-out infinite;
}

@keyframes titleUnderline {
  0%, 100% { width: 120px; }
  50% { width: 140px; }
}

/* Emoji dans les titres avec animation */
.section h2 .emoji {
  display: inline-block;
  animation: bounceEmoji 2s ease-in-out infinite;
  font-size: 1.1em;
  margin-right: 12px;
}

@keyframes bounceEmoji {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  25% { transform: translateY(-6px) rotate(-5deg); }
  75% { transform: translateY(-4px) rotate(5deg); }
}

.section h3{
  font-size:24px;
  margin:1.8em 0 .8em;
  font-weight:600;
  color:var(--dark);
}
.section h3:first-child{margin-top:0}
.section h4{
  font-size:20px;
  margin:1.4em 0 .6em;
  font-weight:600;
  color:var(--dark);
}
.section h4:first-child{margin-top:0}

/* ========================
   Section Services avec Carrousel
   ======================== */
.services-section {
  padding: 100px 0;
  background: linear-gradient(135deg, rgba(124,58,237,0.02) 0%, rgba(6,182,212,0.02) 100%);
}

.services-carousel {
  position: relative;
  max-width: 900px;
  margin: 0 auto 60px;
  padding: 0 60px;
}

.carousel-track {
  position: relative;
  overflow: hidden;
  border-radius: 20px;
  min-height: 480px;
  display: flex;
  align-items: stretch;
}

.service-card {
  background: linear-gradient(135deg, rgba(255,255,255,0.98), rgba(248,249,250,0.98));
  backdrop-filter: blur(10px);
  border: 1px solid rgba(124,58,237,0.15);
  border-radius: 20px;
  padding: 48px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.08);
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  opacity: 0;
  visibility: hidden;
  transform: translateX(100%) scale(0.95);
  transition:
    opacity 0.5s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s 0.5s;
  pointer-events: none;
}

.service-card.active {
  opacity: 1;
  visibility: visible;
  transform: translateX(0) scale(1);
  transition:
    opacity 0.5s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s 0s;
  pointer-events: all;
  position: relative;
  z-index: 2;
}

.service-card.slide-out-left {
  opacity: 0;
  visibility: hidden;
  transform: translateX(-100%) scale(0.95);
  transition:
    opacity 0.5s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s 0.5s;
  z-index: 1;
}

.service-card.slide-in-right {
  opacity: 0;
  visibility: hidden;
  transform: translateX(100%) scale(0.95);
  z-index: 1;
}

.service-icon {
  font-size: 64px;
  margin-bottom: 24px;
  display: inline-block;
  animation: floatIcon 3s ease-in-out infinite;
}

@keyframes floatIcon {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}

.service-card h3 {
  font-size: 28px;
  font-weight: 700;
  margin: 0 0 16px;
  color: var(--dark);
  background: linear-gradient(135deg, var(--accent), var(--cyan));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.service-description {
  font-size: 16px;
  line-height: 1.8;
  color: var(--text);
  margin-bottom: 24px;
}

.service-features {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.service-features li {
  padding: 12px 16px;
  background: linear-gradient(135deg, rgba(124,58,237,0.08), rgba(6,182,212,0.08));
  border-left: 3px solid var(--accent);
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  transition: all .3s ease;
}

.service-features li:hover {
  transform: translateX(4px);
  background: linear-gradient(135deg, var(--accent), var(--cyan));
  color: #fff;
  border-left-color: var(--cyan);
}

/* Navigation du carrousel */
.carousel-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 2px solid var(--accent);
  background: white;
  color: var(--accent);
  font-size: 32px;
  font-weight: 700;
  cursor: pointer;
  transition: all .3s ease;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(124,58,237,0.2);
}

.carousel-nav:hover {
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  color: white;
  transform: translateY(-50%) scale(1.1);
  box-shadow: 0 6px 24px rgba(124,58,237,0.4);
}

.carousel-prev {
  left: 0;
}

.carousel-next {
  right: 0;
}

/* Indicateurs */
.carousel-indicators {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 32px;
}

.indicator {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid var(--accent);
  background: transparent;
  cursor: pointer;
  transition: all .3s ease;
  padding: 0;
}

.indicator:hover {
  transform: scale(1.2);
  background: rgba(124,58,237,0.3);
}

.indicator.active {
  width: 40px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--accent), var(--cyan));
  border-color: var(--accent);
}

/* CTA Services */
.services-cta {
  text-align: center;
  padding: 40px;
  background: linear-gradient(135deg, rgba(255,255,255,0.9), rgba(248,249,250,0.9));
  border-radius: 16px;
  border: 1px solid rgba(124,58,237,0.15);
  max-width: 600px;
  margin: 0 auto;
}

.services-cta p {
  font-size: 20px;
  font-weight: 600;
  color: var(--dark);
  margin: 0 0 20px;
}

/* Responsive */
@media (max-width: 768px) {
  .services-carousel {
    padding: 0 20px;
  }

  .carousel-track {
    min-height: 550px;
  }

  .carousel-nav {
    width: 40px;
    height: 40px;
    font-size: 24px;
    display: none;
  }

  .service-card {
    padding: 32px 24px;
  }

  .service-icon {
    font-size: 48px;
  }

  .service-card h3 {
    font-size: 22px;
  }

  .service-features {
    grid-template-columns: 1fr;
  }

  .services-cta {
    padding: 32px 24px;
  }

  .services-cta p {
    font-size: 18px;
  }
}

/* Section À propos */
.about-section {
  padding: 100px 0;
}

.about-section .container {
  max-width: min(1180px, 90vw);
}

/* Grille de cartes */
.grid{
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:32px;
}
@media (max-width: 920px){ .grid{gap:24px} }

/* Cartes projet modernes avec couleurs */
.card{
  grid-column:span 6;
  border-radius:var(--radius);
  background:white;
  border:1px solid var(--gray);
  box-shadow:var(--shadow);
  overflow:hidden;
  position:relative;
  transition:all .4s cubic-bezier(.22,1,.36,1);
  cursor:pointer;
}

/* Effets de couleur au hover */
.card:nth-child(1):hover{
  transform:translateY(-8px);
  box-shadow: 0 12px 40px rgba(124,58,237,0.25);
  border-color: var(--accent-light);
}

.card:nth-child(2):hover{
  transform:translateY(-8px);
  box-shadow: 0 12px 40px rgba(6,182,212,0.25);
  border-color: var(--cyan);
}

.card:nth-child(3):hover{
  transform:translateY(-8px);
  box-shadow: 0 12px 40px rgba(236,72,153,0.25);
  border-color: var(--pink);
}

.card:nth-child(4):hover{
  transform:translateY(-8px);
  box-shadow: 0 12px 40px rgba(249,115,22,0.25);
  border-color: var(--orange);
}

.card:hover{
  transform:translateY(-8px);
  box-shadow:var(--shadow-hover);
}
@media (max-width: 920px){ .card{grid-column:span 12} }

.thumb{
  aspect-ratio:16/10;
  position:relative;
  overflow:hidden;
  background:var(--gray-light);
}
.thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  transform:scale(1);
  transition:transform .6s cubic-bezier(.22,1,.36,1);
}
.card:hover .thumb img{
  transform:scale(1.05);
}

.card .meta{
  padding:24px;
  background:white;
}
.meta h3{
  margin:0 0 8px;
  font-size:20px;
  font-weight:600;
  color:var(--dark);
}
.card .cta{
  position:absolute;
  right:16px;
  top:16px;
  padding:10px 20px;
  border-radius:10px;
  font-weight:700;
  font-size:14px;
  color:#fff;
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  opacity:0;
  transform:translateY(8px) scale(0.95);
  transition:all .4s cubic-bezier(.22,1,.36,1);
  box-shadow: 0 4px 16px rgba(124,58,237,0.4);
  letter-spacing: 0.5px;
}
.card:hover .cta{
  opacity:1;
  transform:translateY(0) scale(1);
}

.card .cta:hover{
  box-shadow: 0 6px 20px rgba(124,58,237,0.6);
  transform: translateY(-2px) scale(1.05);
}

/* Tags colorés */
.tags{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:12px;
}
.tagchip{
  padding:6px 12px;
  border-radius:6px;
  background:var(--gray-light);
  color:var(--text);
  font-size:13px;
  font-weight:500;
  transition: all .3s ease;
}

/* Couleurs dynamiques pour les tags selon la carte parente */
.card:nth-child(1) .tagchip{
  background: linear-gradient(135deg, rgba(124,58,237,0.1), rgba(168,85,247,0.1));
  color: var(--accent-dark);
  border: 1px solid rgba(124,58,237,0.2);
}

.card:nth-child(2) .tagchip{
  background: linear-gradient(135deg, rgba(6,182,212,0.1), rgba(34,211,238,0.1));
  color: var(--cyan);
  border: 1px solid rgba(6,182,212,0.2);
}

.card:nth-child(3) .tagchip{
  background: linear-gradient(135deg, rgba(236,72,153,0.1), rgba(244,114,182,0.1));
  color: var(--pink);
  border: 1px solid rgba(236,72,153,0.2);
}

.card:nth-child(4) .tagchip{
  background: linear-gradient(135deg, rgba(249,115,22,0.1), rgba(251,146,60,0.1));
  color: var(--orange);
  border: 1px solid rgba(249,115,22,0.2);
}

.tagchip:hover{
  transform: translateY(-2px) scale(1.05);
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}

/* ========================
   Skills avec gradients colorés
   ======================== */
.skills{
  padding:100px 0;
  background: linear-gradient(135deg, #f8f9fa 0%, #faf8f5 100%);
  position: relative;
}

.skills::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  background:
    radial-gradient(circle at 30% 20%, rgba(124,58,237,0.05) 0%, transparent 40%),
    radial-gradient(circle at 70% 80%, rgba(6,182,212,0.05) 0%, transparent 40%);
  pointer-events: none;
}

.skills .wrap{display:grid; grid-template-columns:1fr; gap:32px; position: relative; z-index: 1; max-width: 800px; margin: 0 auto;}
.skills h2{
  color:var(--dark);
  font-weight:700;
  font-size:clamp(36px,5vw,56px);
  margin:0 0 56px;
  letter-spacing:-.03em;
  position: relative;
  padding-bottom: 24px;
  text-align: center;
}

.skills h2::after {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 0;
  width: 120px;
  height: 5px;
  background: linear-gradient(90deg, var(--accent), var(--cyan), var(--pink));
  border-radius: 999px;
  box-shadow: 0 3px 12px rgba(124,58,237,0.4);
}

.skills h2 .emoji {
  display: inline-block;
  animation: bounceEmoji 2s ease-in-out infinite;
  font-size: 1.1em;
  margin-right: 12px;
}

.skills h3{color:var(--dark); font-weight:600; margin:0 0 20px; font-size: 22px;}
@media (max-width:920px){ .skills .wrap{grid-template-columns:1fr} }

.skill-card,.radar-card{
  background:white;
  border:1px solid var(--gray);
  border-radius:var(--radius);
  padding:28px;
  box-shadow:var(--shadow);
  transition: all .3s ease;
}

.skill-card:hover, .radar-card:hover{
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(124,58,237,0.15);
  border-color: var(--accent-light);
}

.bars{display:grid; gap:14px}
.bar{
  background:var(--gray-light);
  border-radius:999px;
  overflow:hidden;
  height:14px;
  box-shadow: inset 0 1px 3px rgba(0,0,0,0.1);
}

/* Barres avec différents gradients */
.bar > span{display:block; height:100%; width:0%; transition: width 1.2s cubic-bezier(.22,1,.36,1)}

.bars > div:nth-child(1) .bar > span{
  background:linear-gradient(90deg, var(--accent), var(--accent-light));
}

.bars > div:nth-child(2) .bar > span{
  background:linear-gradient(90deg, var(--cyan), var(--cyan-light));
}

.bars > div:nth-child(3) .bar > span{
  background:linear-gradient(90deg, var(--pink), var(--pink-light));
}

.bars > div:nth-child(4) .bar > span{
  background:linear-gradient(90deg, var(--orange), var(--orange-light));
}

.bars > div:nth-child(5) .bar > span{
  background:linear-gradient(90deg, var(--emerald), var(--emerald-light));
}

.bar-label{display:flex; justify-content:space-between; font-size:14px; margin-bottom:6px; color:var(--text); font-weight:600}

/* ========================
   Radar
   ======================== */
.radar-wrap{width:100%; max-width:1500px; margin:auto; aspect-ratio:1/1; position:relative}
#radar{position:absolute; inset:0; width:100%; height:100%}
.legend{display:flex; gap:12px; align-items:center; margin-top:12px; color:var(--text); flex-wrap:wrap; justify-content:center; font-weight:500}
.legend .dot{width:12px; height:12px; border-radius:50%}
.dot-a{background:linear-gradient(90deg,var(--accent-dark),var(--accent))}
.dot-b{background:linear-gradient(90deg,var(--accent),var(--accent-light))}

/* ========================
   Footer sobre
   ======================== */
footer{
  background: var(--dark);
  padding: 80px 0;
  color: var(--cream);
  border-top: 1px solid rgba(255,255,255,.1);
}
.foot-grid{
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 48px;
}
@media (max-width:920px){ .foot-grid{grid-template-columns:1fr} }
.foot h4{
  margin: 0 0 16px;
  color: white;
  font-weight: 600;
}
.foot a{
  color: rgba(255,255,255,.8);
  transition: color .3s ease;
}
.foot a:hover{
  color: var(--accent);
  opacity: 1;
}
.foot-links{
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.foot-text{
  color: rgba(255,255,255,.7);
  line-height: 1.7;
}
.foot-bottom{
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,.1);
  color: rgba(255,255,255,.6);
}
.up{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 8px;
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  color: #fff;
  font-size: 20px;
  font-weight: 700;
  transition: all .3s ease;
}
.up:hover{
  transform: translateY(-4px);
  opacity: 1;
}

.about{
  background: linear-gradient(135deg, rgba(255,255,255,0.95), rgba(248,249,250,0.95));
  backdrop-filter: blur(10px);
  border: 1px solid rgba(124,58,237,0.2);
  border-radius: var(--radius);
  padding: 48px;
  box-shadow: var(--shadow), 0 0 0 1px rgba(124,58,237,0.1);
  color: var(--text);
  position: relative;
  overflow: hidden;
  transition: all .3s ease;
  max-width: 900px;
  margin: 0 auto;
  width: 100%;
}

.about::before {
  content: '';
  position: absolute;
  top: -50%;
  right: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, rgba(124,58,237,0.05) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

.about p {
  position: relative;
  z-index: 1;
  font-size: 17px;
  line-height: 1.9;
  margin-bottom: 20px;
  color: var(--text);
}

.about p:last-child {
  margin-bottom: 0;
}

.about p strong {
  color: var(--dark);
  font-weight: 600;
}

.about p .emoji {
  font-size: 1.2em;
  margin-right: 8px;
}

.about:hover{
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(124,58,237,0.2);
  border-color: var(--accent-light);
}

.contact{
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  background: linear-gradient(135deg, rgba(255,255,255,0.95), rgba(248,249,250,0.95));
  backdrop-filter: blur(10px);
  border: 1px solid rgba(6,182,212,0.2);
  border-radius: var(--radius);
  padding: 48px;
  box-shadow: var(--shadow), 0 0 0 1px rgba(6,182,212,0.1);
  transition: all .3s ease;
  max-width: 900px;
  margin: 0 auto;
  width: 100%;
  position: relative;
  overflow: hidden;
}

.contact::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, rgba(6,182,212,0.05) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

.contact > * {
  position: relative;
  z-index: 1;
}

.contact:hover{
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(6,182,212,0.2);
  border-color: var(--cyan);
}

/* Section Contact avec meilleur espacement */
#contact {
  margin-top: 40px;
}
.mail{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 24px;
  border-radius: 8px;
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  color: #fff;
  font-weight: 700;
  font-size: 16px;
  transition: all .3s ease;
}
.mail:hover{
  transform: translateY(-2px);
  box-shadow: var(--shadow-hover);
  opacity: 1;
}
.sep{
  color: var(--text-light);
  font-weight: 500;
}
.socials{
  display: flex;
  gap: 12px;
}

/* ========================
   Prose
   ======================== */
.prose { max-width: 88ch; }
.prose h2 { position:relative; margin-bottom:12px; }
.prose h2::after { content:""; position:absolute; left:0; bottom:-6px; width:80px; height:4px; border-radius:999px;
  background: linear-gradient(90deg,var(--accent),var(--accent-light)); }
.prose p { line-height:1.75; color:var(--text); }
.prose p strong { color:var(--dark); }
.divider{
  height: 1px;
  width: 100%;
  max-width: 200px;
  margin: 80px auto;
  background: linear-gradient(90deg, transparent, var(--gray), transparent);
}

.gradient-divider{
  height: 3px;
  max-width: 300px;
  margin: 80px auto;
  background: linear-gradient(90deg,
    transparent 0%,
    var(--accent) 25%,
    var(--cyan) 50%,
    var(--pink) 75%,
    transparent 100%
  );
  border-radius: 999px;
  box-shadow: 0 2px 12px rgba(124,58,237,0.3);
  animation: shimmer 3s ease-in-out infinite;
}

@keyframes shimmer {
  0%, 100% { opacity: 0.6; transform: scaleX(0.95); }
  50% { opacity: 1; transform: scaleX(1); }
}

/* ========================
   Reveals
   ======================== */
.reveal{opacity:0; transform:translateY(18px); transition:opacity .65s ease, transform .65s cubic-bezier(.22,1,.36,1)}
.reveal.in{opacity:1; transform:none}

/* ===========================
   Carrousel ÉPURÉ (original)
   =========================== */
.carousel-simple { position: relative; overflow: hidden; }
.carousel-simple .slide { display: none; text-align: center; }
.carousel-simple .slide.is-active { display: block; }
.carousel-simple img { max-width: 100%; border-radius: 12px; box-shadow: 0 8px 25px rgba(0,0,0,0.25); }

/* Flèches centrées */
.carousel-arrows {
  position: absolute; top: 50%; left: 0; right: 0;
  display: flex; justify-content: space-between; align-items: center;
  transform: translateY(-50%); padding: 0 12px;
}
.c-btn {
  width: 56px; height: 56px; border-radius: 50%; border: none;
  background: linear-gradient(135deg, var(--c2), var(--c4));
  color: #111; font-size: 24px; font-weight: bold; cursor: pointer;
  display: grid; place-items: center;
  transition: transform .2s ease, box-shadow .2s ease;
}
.c-btn:hover { transform: scale(1.08); box-shadow: 0 6px 18px rgba(0,0,0,0.25); }

/* Points en bas */
.carousel-dots {
  position: absolute; bottom: 60px; left: 50%; transform: translateX(-50%);
  display: flex; gap: 10px;
}
.carousel-dots button {
  width: 12px; height: 12px; border-radius: 50%; border: none; background: #666; cursor: pointer; transition: background .3s;
}
.carousel-dots button[aria-current="true"] { background: var(--c2); }

/* Mobile: ratio un peu plus carré */
@media (max-width: 520px) {
  .carousel-simple .slide { aspect-ratio: 4/3; }
}
/* (option de repositionnement si tu utilises .carousel-ui)
@media (max-width: 520px){
  .carousel-simple .carousel-ui { bottom: 24px; top: auto; transform: none; }
}
*/

/* ========================
   Loader simple (pages projet)
   ======================== */
#simpleLoader {
  position: fixed; inset: 0; display: grid; place-items: center;
  background: var(--c1, #7c3aed); color: #fff; font-size: 3rem; z-index: 9999;
  transition: opacity .6s ease;
}
#simpleLoader .smiley { animation: bounce 1s infinite; }
@keyframes bounce { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }

/* ========================
   Emoji loader (alternatif)
   ======================== */
.emoji-loader {
  position: relative; display: flex; justify-content: center; align-items: center;
  font-size: 3rem; height: 80px;
}
.emoji-loader span {
  position: absolute; opacity: 0; animation: bounceFade 4s infinite;
}
.emoji-loader span:nth-child(1) { animation-delay: 0s; }
.emoji-loader span:nth-child(2) { animation-delay: 1s; }
.emoji-loader span:nth-child(3) { animation-delay: 2s; }
.emoji-loader span:nth-child(4) { animation-delay: 3s; }
@keyframes bounceFade {
  0% { opacity: 0; transform: translateY(0) scale(0.8); }
  10% { opacity: 1; transform: translateY(-10px) scale(1); }
  20% { transform: translateY(0) scale(1); }
  25% { opacity: 1; transform: translateY(-6px) scale(1.05); }
  30% { transform: translateY(0) scale(1); }
  40% { opacity: 0; transform: translateY(10px) scale(0.9); }
  100% { opacity: 0; transform: translateY(0) scale(0.8); }
}

/* ===== Nouveau menu (scopé nx-) ===== */
.nx-header{position:sticky; top:0; z-index:1; backdrop-filter:blur(14px) saturate(180%)}
.nx-nav{display:flex; align-items:center; justify-content:space-between; padding:14px 20px}
.nx-brand{display:flex; align-items:center; gap:10px; font-weight:800; color:#fff}
.nx-logo{width:18px; height:18px; border-radius:50%; background:conic-gradient(var(--c4),var(--c2),var(--c5))}
.nx-links-desktop{display:flex; gap:14px; align-items:center}
.nx-links-desktop a{color:#fff; font-weight:600}
.nx-btn{background:linear-gradient(135deg,var(--c4),var(--accent-light)); color:#fff; padding:8px 14px; border-radius:999px; font-weight:800}
.nx-burger{display:none; width:42px; height:42px; border-radius:12px; border:1px solid rgba(255,255,255,.15); background:#1b1b24; color:#fff; font-weight:800}
@media (max-width:900px){
  .nx-links-desktop{display:none}
  .nx-burger{display:grid; place-items:center}
}

/* Overlay absolu AU-DESSUS DE TOUT (piloté par aria-hidden) */
.nx-overlay{
  position: fixed; inset: 0;
  z-index: 2147483647; /* max sûr → domine tout */
  pointer-events: none;
}
.nx-overlay[aria-hidden="false"]{ pointer-events: auto; }

/* Backdrop cliquable (peut être un <button>) */
.nx-backdrop{
  position: absolute; inset: 0;
  background: rgba(9,10,14,.72);
  backdrop-filter: blur(10px) saturate(180%);
  opacity: 0; transition: opacity .3s ease;
  border: 0; margin: 0; padding: 0;
}
.nx-overlay[aria-hidden="false"] .nx-backdrop{ opacity: 1; }

/* Panneau */
.nx-panel{
  position: absolute; top: 0; right: 0; height: 100%; width: min(420px, 86vw);
  background: linear-gradient(180deg, rgba(23,24,33,.96), rgba(16,17,23,.96));
  border-left: 1px solid rgba(255,255,255,.12);
  box-shadow: -30px 0 120px rgba(0,0,0,.6);
  transform: translateX(100%); opacity: 0;
  transition: transform .4s cubic-bezier(.22,1,.36,1), opacity .3s ease;
  display: flex; flex-direction: column; gap: 16px; padding: 16px 16px 24px; overflow: auto;
}
.nx-overlay[aria-hidden="false"] .nx-panel{ transform: translateX(0); opacity: 1; }

.nx-panel-head{display:flex; align-items:center; justify-content:space-between; gap:12px}
.nx-close{width:40px; height:40px; border-radius:12px; border:1px solid rgba(255,255,255,.18); background:#151620; color:#fff; font-weight:800}

.nx-menu{display:grid; gap:10px; margin-top:8px}
.nx-item{
  display:flex; align-items:center; justify-content:center; height:52px;
  border-radius:14px; padding:0 14px;
  background:linear-gradient(180deg, #1b1c26, #14151b);
  border:1px solid rgba(255,255,255,.08); color:#eaeaf1; font-weight:700;
}
.nx-item.nx-cta{
  background:linear-gradient(135deg,var(--c4),var(--accent-light)); color:#fff; border:none;
  box-shadow:0 14px 40px rgba(0,0,0,.28)
}

/* Élever le header au-dessus des loaders et de la page (inoffensif depuis la “téléportation”) */
.site-header, .nx-header { z-index: 200001 !important; }

/* ===== Masquer le header pendant le chargement ===== */
html.is-loading .site-header{
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  z-index: 0 !important; /* passe sous #loader/#wipe le temps du boot */
}
html.is-ready .site-header{
  opacity: 1;
  visibility: visible;
  /* garde l'élévation pour l'overlay mobile si tu l'utilises */
  z-index: 200001 !important;
  transition: opacity .35s ease;
}

/* ===== Petits plus "mobile-friendly" (touch, spacing, safe areas) ===== */
:root{ -webkit-tap-highlight-color: rgba(0,0,0,0); }

.cta-row{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  margin-top:32px;
}
.cta-row .emoji{
  font-size: 1.1em;
  margin-right: 6px;
  transition: transform .3s ease;
}

.cta-row .btn:hover .emoji{
  transform: scale(1.2) rotate(-10deg);
}

/* Micro-interactions pour les boutons */
.cta-row .btn.mint{
  position: relative;
  overflow: hidden;
}

.cta-row .btn.mint::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  border-radius: 50%;
  background: rgba(255,255,255,0.3);
  transform: translate(-50%, -50%);
  transition: width .6s ease, height .6s ease;
}

.cta-row .btn.mint:hover::after {
  width: 300px;
  height: 300px;
}

.cta-row .btn.violet{
  box-shadow: 0 4px 14px rgba(109,40,217,0.3);
}

.cta-row .btn.violet:hover{
  box-shadow: 0 6px 24px rgba(109,40,217,0.5), 0 0 0 2px rgba(109,40,217,0.2);
}

.cta-row .btn.white:hover{
  box-shadow: 0 8px 28px rgba(0,0,0,0.4), 0 0 0 2px rgba(124,58,237,0.3);
}

@media (max-width: 900px){
  .nav{ padding: 12px 14px; }
  .btn{ --h: 46px; padding: 0 16px; }
  .section h2{ font-size: clamp(28px, 6vw, 40px); margin-bottom: 40px; }
  .cta-row{ gap: 12px; }
}

@media (max-width: 640px){
  .section{ padding: 60px 0; }
  .subtitle{ font-size: 16px; line-height: 1.6; }
  .profile{ width: 88vw; }
  .contact{ gap: 16px; padding: 32px; max-width: 100%; }
  .mail{ padding: 12px 20px; font-size: 15px; }
  .about{ padding: 32px; max-width: 100%; }
  .about p{ font-size: 16px; }
  .section h2{ font-size: 28px; margin-bottom: 32px; }
  .section h2 .emoji{ font-size: 1em; }
  .hero{ padding: 80px 0 60px; }
  .gradient-divider, .divider{ margin: 50px auto; }
  #contact{ margin-top: 20px; }
}

/* Safe-area pour encoches iOS sur panneau overlay */
@supports (padding: max(0px)){
  .nx-panel{ padding-top: max(16px, env(safe-area-inset-top)); }
}

/* ===== Sommaire (TOC) ===== */
.toc { position: sticky; top: 84px; z-index: 5; background: transparent; }
.toc .toc-list{ display:flex; gap:12px; flex-wrap:wrap; padding:12px 0; margin:0; list-style:none; }
.toc .toc-list a{
  display:inline-block; padding:6px 12px; border-radius:999px; line-height:1.2;
  border:1px solid rgba(255,255,255,.08); opacity:.7; transition:opacity .2s, box-shadow .2s, border-color .2s;
}
.toc .toc-list a:hover{ opacity:1; }
.toc .toc-list a.is-active{
  opacity:1; border-color: var(--c1, #7c3aed);
  box-shadow: 0 0 0 3px rgba(124,58,237,.15) inset;
}

/* Sous-titres (h3) spécifiques à la page stage */
.stage-page h3 {
  color: var(--c2); /* violet déjà défini */
  margin-top: 1.5rem;
  margin-bottom: 0.5rem;
}

.stage-page h4 {
  color: #ce99ff
}

.stage-page h5 {
  color: #c1afd2
}

.stage-page strong {
  color: #8400ff
}

/* Ligne de séparation alignée sur le contenu */
.stage-page section .container {
  border-bottom: 1px solid rgba(255,255,255,0.12);
  padding-bottom: 2rem;
  margin-bottom: 2rem;
}

.stage-page section {
  border-bottom: none;
}

/* Listes à puces harmonisées */
.stage-page .bullets{
  margin: .75rem 0 1.5rem;
  padding-left: 1.25rem;          /* indentation douce */
}
.stage-page .bullets li{
  line-height: 1.6;
  margin: .5rem 0;
}


/* Radar pleine largeur dès que l'écran est correct */
@media (min-width: 1000px){
  .skills .wrap { grid-template-columns: 1fr; }    /* 1 seule colonne */
  .radar-card   { grid-column: 1 / -1; }           /* la carte occupe toute la ligne */
  .radar-wrap   { max-width: 1100px; }             /* assez large dans ta container (1180px max) */
}

/* un peu plus d'air dans la carte pour les libellés */
.radar-card{ padding: 28px 28px 18px; }

/* Section prose - hérite du padding de .section */
.section.prose {
  /* Le padding est géré par .section (100px 0) */
}

/* ===== CV Section Moderne ===== */
.cv-section{
  padding: 100px 0;
  background: linear-gradient(135deg, rgba(124,58,237,0.03) 0%, rgba(6,182,212,0.03) 100%);
  position: relative;
  overflow: hidden;
}

.cv-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 100%;
  background:
    radial-gradient(circle at 10% 20%, rgba(124,58,237,0.08) 0%, transparent 50%),
    radial-gradient(circle at 90% 80%, rgba(6,182,212,0.08) 0%, transparent 50%);
  pointer-events: none;
}

.cv-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 48px;
  position: relative;
  z-index: 1;
}

.cv-card{
  background: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: var(--radius);
  padding: 32px;
  box-shadow: var(--shadow), 0 0 0 1px rgba(124,58,237,0.1);
  transition: all .3s ease;
}

.cv-card:hover{
  transform: translateY(-6px);
  box-shadow: 0 16px 48px rgba(124,58,237,0.2);
  border-color: var(--accent-light);
}

.cv-card h3{
  margin: 0 0 20px;
  font-size: 20px;
  font-weight: 600;
  color: var(--dark);
}

.cv-card h4{
  margin: 0 0 8px;
  font-size: 17px;
  font-weight: 600;
  color: var(--dark);
}

.cv-info p{
  margin: 12px 0;
  font-size: 15px;
  line-height: 1.7;
  color: var(--text);
}

.cv-info a{
  color: var(--accent);
  font-weight: 600;
}

.cv-timeline, .cv-formation{
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.cv-item{
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 20px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--gray);
}

.cv-item:last-child{
  border-bottom: none;
  padding-bottom: 0;
}

.cv-date{
  font-size: 13px;
  font-weight: 700;
  color: var(--accent);
  padding-top: 4px;
  letter-spacing: 0.5px;
  text-shadow: 0 0 20px rgba(124,58,237,0.3);
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.cv-role{
  font-size: 14px;
  color: var(--text-light);
  margin: 4px 0 12px;
}

.cv-tasks{
  margin: 12px 0 0;
  padding-left: 20px;
  font-size: 15px;
  line-height: 1.8;
}

.cv-tasks li{
  margin: 6px 0;
  color: var(--text);
}

.cv-skills-list{
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.skill-tag{
  padding: 10px 16px;
  border-radius: 8px;
  background: var(--gray-light);
  border: 1px solid var(--gray);
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  transition: all .3s ease;
}

.skill-tag:hover{
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  border-color: var(--accent);
  color: #fff;
  transform: translateY(-2px);
}

.cv-soft-skills{
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 12px;
}

.cv-soft-skills li{
  padding: 14px 16px;
  background: var(--gray-light);
  border-left: 4px solid var(--accent);
  border-radius: 8px;
  font-size: 15px;
  color: var(--text);
  transition: all .3s ease;
}

.cv-soft-skills li:hover{
  background: linear-gradient(135deg, var(--accent), var(--accent-light));
  color: #fff;
  transform: translateX(4px);
}

@media (max-width: 920px){
  .cv-grid{ grid-template-columns: 1fr; }
  .cv-card[style*="span"]{ grid-column: 1 !important; }
  .cv-item{ grid-template-columns: 1fr; gap: 8px; }
  .cv-date{ padding-top: 0; }
  .cv-formation[style*="grid"]{ grid-template-columns: 1fr !important; }
}
