/* =====================================================
   PORTFOLIO MARILYS NÉGOCE — STYLE.CSS
   Rose #f072b6 × Noir · Typographie éditoriale
   Police : Playfair Display (display) + Outfit (corps)
   ===================================================== */

@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;0,900;1,400;1,700&family=Outfit:wght@300;400;500;600;700&display=swap');

/* ===== VARIABLES ===== */
:root {
  --bg:        #080808;
  --bg-2:      #0f0f0f;
  --bg-3:      #171717;
  --surface:   #131313;
  --border:    rgba(240,114,182,0.12);
  --border-hv: rgba(240,114,182,0.45);
  --text:      #f5f0f3;
  --text-muted:#b89dab;
  --text-dim:  #6b4f5c;
  --pink:      #f072b6;
  --pink-soft: rgba(240,114,182,0.15);
  --pink-glow: rgba(240,114,182,0.35);
  --radius:    8px;
  --radius-lg: 18px;
  --tr:        0.35s cubic-bezier(0.4,0,0.2,1);
  --font-d:    'Playfair Display', serif;
  --font-b:    'Outfit', sans-serif;
  --header-h:  70px;
}

/* ===== RESET ===== */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; font-size:16px; }
body {
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-b);
  font-weight:400;
  line-height:1.7;
  overflow-x:hidden;
  cursor:none;
}
a { color:inherit; text-decoration:none; }
img { max-width:100%; display:block; }
ul { list-style:none; }

/* ===== CURSEUR CŒUR ===== */
.cursor {
  position:fixed;
  font-size:16px;
  color:var(--pink);
  pointer-events:none;
  z-index:9999;
  transform:translate(-50%,-50%);
  line-height:1;
  filter:drop-shadow(0 0 6px var(--pink-glow));
  transition:font-size 0.2s, opacity 0.2s;
  user-select:none;
}
.cursor-follower {
  position:fixed;
  font-size:28px;
  color:rgba(240,114,182,0.25);
  pointer-events:none;
  z-index:9998;
  transform:translate(-50%,-50%);
  line-height:1;
  user-select:none;
  transition:font-size 0.3s, opacity 0.3s;
}

/* ===== FOND GRAIN ===== */
body::before {
  content:'';
  position:fixed; inset:0;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  pointer-events:none;
  z-index:9990;
}

/* ===== INTRO ===== */
.intro {
  position:fixed; inset:0;
  background:#000;
  z-index:1000;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  gap:20px;
  transition:opacity 0.9s ease, visibility 0.9s ease;
  overflow:hidden;
}
.intro.hidden { opacity:0; visibility:hidden; pointer-events:none; }

.intro-content {
  display:flex;
  align-items:baseline;
  overflow:hidden;
}
.intro-word {
  font-family:var(--font-d);
  font-style:italic;
  font-size:clamp(52px,13vw,140px);
  color:#fff;
  letter-spacing:0.02em;
  line-height:1;
  opacity:0;
  transform:translateY(60px);
  animation:slideUp 0.75s cubic-bezier(0.16,1,0.3,1) forwards;
}
.intro-folio { color:var(--pink); }
.intro-word:nth-child(2) { animation-delay:0.18s; }
@keyframes slideUp { to { opacity:1; transform:translateY(0); } }

.intro-subtitle {
  font-size:12px;
  color:var(--text-dim);
  letter-spacing:0.2em;
  text-transform:uppercase;
  font-family:var(--font-b);
}
.intro-loader {
  width:200px; height:1.5px;
  background:rgba(240,114,182,0.15);
  border-radius:2px; overflow:hidden;
}
.intro-loader-bar {
  height:100%;
  background:linear-gradient(90deg,var(--pink),#ff9ee0);
  width:0%;
  transition:width 0.05s linear;
  box-shadow:0 0 12px var(--pink-glow);
}
.intro-counter {
  font-family:var(--font-d);
  font-size:44px;
  font-style:italic;
  color:var(--text-dim);
  letter-spacing:0.04em;
}

.intro-hearts {
  position:absolute; inset:0;
  pointer-events:none;
  overflow:hidden;
}
.intro-hearts span {
  position:absolute;
  bottom:-40px;
  color:var(--pink);
  font-size:20px;
  opacity:0;
  animation:floatHeart 6s ease-in infinite;
}
.intro-hearts span:nth-child(1)  { left:5%;  animation-delay:0s;   font-size:14px; }
.intro-hearts span:nth-child(2)  { left:15%; animation-delay:0.8s; font-size:22px; }
.intro-hearts span:nth-child(3)  { left:28%; animation-delay:1.6s; font-size:12px; }
.intro-hearts span:nth-child(4)  { left:42%; animation-delay:0.4s; font-size:18px; }
.intro-hearts span:nth-child(5)  { left:55%; animation-delay:2.1s; font-size:24px; }
.intro-hearts span:nth-child(6)  { left:65%; animation-delay:1.1s; font-size:14px; }
.intro-hearts span:nth-child(7)  { left:74%; animation-delay:2.8s; font-size:20px; }
.intro-hearts span:nth-child(8)  { left:82%; animation-delay:0.6s; font-size:16px; }
.intro-hearts span:nth-child(9)  { left:90%; animation-delay:1.9s; font-size:12px; }
.intro-hearts span:nth-child(10) { left:96%; animation-delay:3.2s; font-size:22px; }
@keyframes floatHeart {
  0%   { opacity:0; transform:translateY(0) rotate(-10deg); }
  20%  { opacity:0.7; }
  100% { opacity:0; transform:translateY(-100vh) rotate(20deg); }
}

/* ===== HEADER ===== */
.header {
  position:fixed; top:0; left:0; right:0;
  height:var(--header-h);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 48px;
  z-index:500;
  transition:background var(--tr), border-bottom var(--tr);
}
.header.scrolled {
  background:rgba(8,8,8,0.93);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
}
.logo { display:flex; align-items:center; }
.logo-img { height:38px; width:auto; object-fit:contain; }
.logo-fallback {
  font-family:var(--font-d);
  font-style:italic;
  font-size:26px;
  color:var(--pink);
  letter-spacing:0.04em;
}

.nav { display:flex; gap:40px; align-items:center; }
.nav-link {
  font-size:12px; font-weight:500;
  letter-spacing:0.14em; text-transform:uppercase;
  color:var(--text-muted);
  position:relative;
  transition:color var(--tr);
}
.nav-link::after {
  content:'♥';
  position:absolute; bottom:-6px; left:50%;
  transform:translateX(-50%) scale(0);
  font-size:9px; color:var(--pink);
  transition:transform var(--tr);
}
.nav-link:hover,
.nav-link.active { color:var(--text); }
.nav-link:hover::after,
.nav-link.active::after { transform:translateX(-50%) scale(1); }

/* Bouton CTA nav "Pour un projet" */
.nav-link-cta {
  background:linear-gradient(135deg,var(--pink) 0%,#e0409e 100%);
  color:#fff !important;
  padding:8px 20px;
  border-radius:50px;
  font-weight:700;
  letter-spacing:0.12em;
  box-shadow:0 2px 14px var(--pink-glow);
  margin-left:8px;
  transition:transform var(--tr), box-shadow var(--tr), filter var(--tr) !important;
}
.nav-link-cta::after { display:none !important; }
.nav-link-cta:hover {
  transform:translateY(-2px) !important;
  box-shadow:0 8px 28px rgba(240,114,182,0.5) !important;
  filter:brightness(1.1);
}

/* Burger */
.burger {
  display:none; flex-direction:column; gap:5px;
  background:none; border:none; cursor:pointer; padding:6px;
}
.burger span {
  display:block; width:22px; height:1.5px;
  background:var(--text);
  transition:var(--tr);
}
.burger.open span:nth-child(1) { transform:translateY(6.5px) rotate(45deg); }
.burger.open span:nth-child(2) { opacity:0; }
.burger.open span:nth-child(3) { transform:translateY(-6.5px) rotate(-45deg); }

/* Menu mobile */
.mobile-menu {
  position:fixed;
  top:var(--header-h); left:0; right:0;
  background:rgba(8,8,8,0.97);
  backdrop-filter:blur(20px);
  display:flex; flex-direction:column; align-items:center;
  z-index:400;
  max-height:0; overflow:hidden;
  transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1);
  border-bottom:1px solid var(--border);
}
.mobile-menu.open { max-height:380px; }
.mobile-nav-link {
  width:100%; text-align:center;
  padding:20px;
  font-size:13px; font-weight:500;
  letter-spacing:0.14em; text-transform:uppercase;
  color:var(--text-muted);
  border-bottom:1px solid var(--border);
  transition:color var(--tr), background var(--tr);
}
.mobile-nav-link:hover { color:var(--pink); background:var(--pink-soft); }
.mobile-nav-link-cta { color:var(--pink) !important; font-weight:700; }

/* ===== SECTIONS ===== */
.section {
  min-height:100vh;
  padding:calc(var(--header-h) + 90px) 48px 110px;
}
.section-inner { max-width:980px; margin:0 auto; }
.section-title {
  font-family:var(--font-d);
  font-size:clamp(52px,9vw,108px);
  font-style:italic;
  line-height:1;
  letter-spacing:-0.01em;
  color:var(--text);
  margin-bottom:70px;
}
.section-title span {
  display:block;
  -webkit-text-stroke:1.5px var(--pink);
  color:transparent;
  font-style:normal;
  font-weight:900;
}
.section-subtitle {
  color:var(--text-muted); font-size:15px;
  margin-top:-50px; margin-bottom:60px;
  max-width:540px; line-height:1.8;
}

/* ===== HERO ===== */
.hero {
  display:flex; flex-direction:column; justify-content:center;
  min-height:100vh;
  padding-top:calc(var(--header-h) + 40px);
  position:relative;
  overflow:hidden;
}
.hero-bg-deco {
  position:absolute; inset:0; pointer-events:none; overflow:hidden;
}
.deco-heart {
  position:absolute; font-size:200px;
  color:rgba(240,114,182,0.03);
  font-family:serif;
  animation:driftHeart 12s ease-in-out infinite alternate;
}
.dh1 { top:-40px;    right:-30px; font-size:280px; animation-delay:0s; }
.dh2 { bottom:10%;   left:-60px;  font-size:200px; animation-delay:2s; }
.dh3 { top:35%;      right:5%;    font-size:120px; animation-delay:4s; }
.dh4 { bottom:-40px; right:20%;   font-size:160px; animation-delay:6s; }
@keyframes driftHeart {
  from { transform:translateY(0) rotate(-5deg); }
  to   { transform:translateY(-30px) rotate(5deg); }
}

.hero-inner {
  max-width:1140px; margin:0 auto;
  display:grid; grid-template-columns:360px 1fr;
  gap:90px; align-items:center; width:100%;
  position:relative; z-index:1;
}
.hero-portrait { position:relative; }
.portrait-img {
  width:100%; aspect-ratio:3/4;
  object-fit:cover;
  border-radius:var(--radius-lg);
  filter:grayscale(20%) contrast(1.05);
  transition:filter var(--tr);
}
.hero-portrait:hover .portrait-img { filter:grayscale(0%) contrast(1); }
.portrait-placeholder {
  aspect-ratio:3/4;
  background:var(--bg-3);
  border:1px dashed var(--border-hv);
  border-radius:var(--radius-lg);
  display:flex; align-items:center; justify-content:center;
  color:var(--text-dim); font-size:13px;
  letter-spacing:0.1em; text-transform:uppercase;
}
.portrait-glow {
  position:absolute; inset:-2px;
  border-radius:calc(var(--radius-lg) + 2px);
  background:linear-gradient(135deg,var(--pink) 0%,transparent 60%);
  opacity:0.18;
  pointer-events:none;
  z-index:-1;
}

.hero-hello {
  font-size:14px; color:var(--pink);
  letter-spacing:0.16em; text-transform:uppercase;
  font-weight:500; margin-bottom:10px;
}
.hero-name {
  font-family:var(--font-d);
  font-size:clamp(54px,7vw,96px);
  line-height:1;
  letter-spacing:0.01em;
  margin-bottom:14px;
}
.hero-name span {
  font-style:italic;
  background:linear-gradient(135deg,var(--pink) 0%,#ff9ee0 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}
.hero-age {
  font-size:12px; color:var(--text-dim);
  letter-spacing:0.18em; text-transform:uppercase;
  margin-bottom:22px;
}
.hero-tagline {
  font-size:15px; color:var(--pink);
  font-weight:500; margin-bottom:20px; line-height:1.6;
}
.hero-desc {
  font-size:15px; color:var(--text-muted);
  max-width:500px; margin-bottom:40px; line-height:1.85;
}

/* ===== BOUTONS ===== */
.btn {
  display:inline-flex; align-items:center; gap:10px;
  padding:15px 36px;
  background:linear-gradient(135deg,var(--pink) 0%,#e0409e 100%);
  color:#fff; font-weight:700; font-size:12px;
  letter-spacing:0.14em; text-transform:uppercase;
  border-radius:50px; border:none; cursor:pointer;
  box-shadow:0 4px 24px var(--pink-glow);
  transition:transform var(--tr), box-shadow var(--tr), filter var(--tr);
}
.btn:hover {
  transform:translateY(-3px);
  box-shadow:0 12px 40px rgba(240,114,182,0.5);
  filter:brightness(1.1);
}
.btn-large { padding:18px 52px; font-size:13px; }

.scroll-hint {
  display:block; text-align:center; margin-top:70px;
  font-size:11px; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--text-dim);
  animation:bounce 2.5s ease-in-out infinite;
  position:relative; z-index:1;
}
@keyframes bounce {
  0%,100% { transform:translateY(0); }
  50%      { transform:translateY(10px); }
}

/* ===== BLOCKS ===== */
.block { margin-bottom:90px; }
.block-title {
  font-family:var(--font-d); font-style:italic;
  font-size:clamp(28px,4vw,46px);
  letter-spacing:0.02em; margin-bottom:40px;
  padding-bottom:18px;
  border-bottom:1px solid var(--border);
  position:relative;
}
.block-title::after {
  content:'♥';
  position:absolute; right:0; bottom:18px;
  font-style:normal; font-size:16px;
  color:var(--pink); opacity:0.5;
}

/* ===== COMPÉTENCES ===== */
.skills-group { margin-bottom:44px; }
.skills-group-label {
  font-size:11px; letter-spacing:0.2em;
  text-transform:uppercase; color:var(--text-dim);
  margin-bottom:18px; font-family:var(--font-b);
}
.skills-grid {
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(148px,1fr));
  gap:14px;
}
.skill-card {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:18px 16px;
  display:flex; flex-direction:column; align-items:flex-start; gap:7px;
  transition:border-color var(--tr), transform var(--tr), background var(--tr), box-shadow var(--tr);
}
.skill-card:hover {
  border-color:var(--border-hv);
  transform:translateY(-4px);
  background:var(--bg-3);
  box-shadow:0 8px 28px rgba(240,114,182,0.1);
}
.skill-icon { width:34px; height:34px; object-fit:contain; margin-bottom:4px; }
.skill-name { font-size:13px; font-weight:600; color:var(--text); }
.skill-desc { font-size:11px; color:var(--text-dim); }

/* ===== TIMELINE ===== */
.timeline { display:flex; flex-direction:column; gap:0; }
.timeline-item {
  display:grid; grid-template-columns:150px 1fr; gap:36px;
}
.timeline-date {
  font-size:12px; color:var(--text-dim);
  letter-spacing:0.05em; padding-top:6px; line-height:1.6;
}
.timeline-body {
  display:flex; gap:22px;
  padding-bottom:44px;
  border-bottom:1px solid var(--border);
  margin-bottom:44px;
}
.timeline-item:last-child .timeline-body { border-bottom:none; margin-bottom:0; }
.timeline-logo-link { flex-shrink:0; }
.timeline-logo-placeholder {
  width:50px; height:50px;
  background:var(--bg-3);
  border:1px solid var(--border);
  border-radius:var(--radius);
  display:flex; align-items:center; justify-content:center;
  font-size:10px; color:var(--text-dim); text-align:center;
}
.timeline-logo-link img {
  width:50px; height:50px; object-fit:contain; border-radius:var(--radius);
}
.timeline-content { flex:1; }
.timeline-company { font-size:16px; font-weight:700; color:var(--text); margin-bottom:4px; }
.timeline-role    { font-size:14px; color:var(--pink); font-weight:500; margin-bottom:4px; }
.timeline-sector  { font-size:13px; color:var(--text-dim); margin-bottom:12px; }
.timeline-list    { display:flex; flex-direction:column; gap:6px; }
.timeline-list li {
  font-size:13px; color:var(--text-muted);
  padding-left:16px; position:relative;
}
.timeline-list li::before {
  content:'♥'; position:absolute; left:0;
  color:var(--pink); font-size:9px; top:4px;
}

/* ===== PROJETS ===== */
.projects-grid {
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:22px;
}
.project-card {
  position:relative;
  border-radius:var(--radius-lg);
  overflow:hidden;
  cursor:pointer;
  aspect-ratio:16/9;
  border:1px solid var(--border);
  background:var(--bg-3);
  transition:transform var(--tr), box-shadow var(--tr), border-color var(--tr);
}
.project-card:hover {
  transform:translateY(-8px) scale(1.01);
  box-shadow:0 28px 70px rgba(240,114,182,0.22);
  border-color:var(--border-hv);
}

/* Thumbnail */
.project-thumbnail {
  position:absolute; inset:0;
}
.project-thumbnail img {
  width:100%; height:100%;
  object-fit:cover; display:block;
  filter:grayscale(20%) contrast(1.05);
  transition:filter var(--tr), transform var(--tr);
}
.project-card:hover .project-thumbnail img {
  filter:grayscale(0%) contrast(1);
  transform:scale(1.04);
}
.project-thumb-placeholder {
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
  font-size:36px;
  color:rgba(240,114,182,0.15);
  background:linear-gradient(135deg,var(--bg-3) 0%,var(--surface) 100%);
}

/* Voile noir au hover pour lisibilité */
.project-thumbnail::after {
  content:'';
  position:absolute; inset:0;
  background:rgba(0,0,0,0);
  transition:background 0.4s ease;
}
.project-card:hover .project-thumbnail::after {
  background:rgba(0,0,0,0.72);
}

/* Overlay texte */
.project-overlay {
  position:absolute; inset:0;
  z-index:2;
  background:linear-gradient(
    to top,
    rgba(0,0,0,0.97) 0%,
    rgba(0,0,0,0.55) 50%,
    transparent 100%
  );
  padding:24px;
  display:flex; flex-direction:column; justify-content:flex-end;
  opacity:0;
  transition:opacity var(--tr);
}
.project-card:hover .project-overlay { opacity:1; }

.project-num {
  position:absolute; top:18px; left:22px;
  font-family:var(--font-d); font-style:italic;
  font-size:48px;
  color:rgba(240,114,182,0.10);
  line-height:1; user-select:none;
}
.project-tags {
  font-size:10px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--pink); margin-bottom:6px; font-weight:600;
}
.project-name {
  font-family:var(--font-d);
  font-size:clamp(18px,2.2vw,26px);
  font-style:italic;
  letter-spacing:0.02em; margin-bottom:6px; line-height:1.2;
  color:var(--text);
}
.project-desc {
  font-size:12px; color:rgba(255,255,255,0.65);
  margin-bottom:12px; line-height:1.6;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.project-cta {
  font-size:11px; font-weight:700;
  color:var(--pink); letter-spacing:0.12em; text-transform:uppercase;
}

/* ===== MODALE PROJET ===== */
.project-modal {
  position:fixed; inset:0; z-index:800;
  display:flex; align-items:center; justify-content:center;
  pointer-events:none; opacity:0;
  transition:opacity 0.35s;
}
.project-modal.open { opacity:1; pointer-events:all; }

.modal-backdrop {
  position:absolute; inset:0;
  background:rgba(0,0,0,0.90);
  backdrop-filter:blur(12px);
}
.modal-content {
  position:relative;
  background:var(--bg-2);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  max-width:720px; width:92%;
  max-height:90vh; overflow-y:auto;
  padding:52px;
  transform:scale(0.95) translateY(24px);
  transition:transform 0.35s cubic-bezier(0.4,0,0.2,1);
  box-shadow:0 40px 100px rgba(240,114,182,0.18);
}
.project-modal.open .modal-content { transform:scale(1) translateY(0); }

.modal-close {
  position:absolute; top:20px; right:20px;
  background:var(--surface); border:1px solid var(--border);
  color:var(--text-muted); border-radius:50%;
  width:38px; height:38px;
  display:flex; align-items:center; justify-content:center;
  font-size:16px; cursor:pointer;
  transition:color var(--tr), border-color var(--tr), background var(--tr);
}
.modal-close:hover {
  color:var(--pink); border-color:var(--border-hv);
  background:var(--pink-soft);
}

/* ===== CONTACT ===== */
.contacts-inner { text-align:center; }
.contacts-intro {
  max-width:500px; margin:-48px auto 60px;
  color:var(--text-muted); font-size:15px; line-height:1.85;
}

.contacts-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:16px;
  margin-bottom:60px;
}
.contact-card {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:36px 24px;
  display:flex; flex-direction:column; align-items:center; gap:10px;
  transition:border-color var(--tr), transform var(--tr), box-shadow var(--tr);
}
.contact-card:hover {
  border-color:var(--pink);
  transform:translateY(-6px);
  box-shadow:0 16px 48px rgba(240,114,182,0.15);
}
.contact-icon  { font-size:26px; margin-bottom:4px; }
.contact-label { font-size:11px; letter-spacing:0.16em; text-transform:uppercase; color:var(--text-dim); }
.contact-value { font-size:13px; font-weight:600; color:var(--text); word-break:break-all; }

/* ===== FORMULAIRE CONTACT ===== */
.contact-form-wrap {
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:52px;
  text-align:left;
  box-shadow:0 20px 60px rgba(240,114,182,0.06);
}
.contact-form-title {
  font-family:var(--font-d);
  font-style:italic;
  font-size:clamp(24px,3vw,38px);
  color:var(--text);
  margin-bottom:36px;
  letter-spacing:0.02em;
}
.form-row {
  display:flex; gap:20px; margin-bottom:20px;
}
.form-row .form-group { flex:1; margin-bottom:0; }
.form-group {
  display:flex; flex-direction:column; gap:8px;
  margin-bottom:20px;
}
.form-group label {
  font-size:12px; font-weight:600;
  letter-spacing:0.14em; text-transform:uppercase;
  color:var(--text-muted);
}
.form-group input,
.form-group textarea {
  background:var(--bg-3);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:14px 18px;
  color:var(--text);
  font-family:var(--font-b);
  font-size:14px;
  resize:vertical;
  outline:none; width:100%;
  transition:border-color var(--tr), box-shadow var(--tr);
}
.form-group input::placeholder,
.form-group textarea::placeholder { color:var(--text-dim); font-size:13px; }
.form-group input:focus,
.form-group textarea:focus {
  border-color:var(--border-hv);
  box-shadow:0 0 0 3px var(--pink-soft);
}
.form-error {
  display:none;
  font-size:11px; color:#ff6b9d;
  letter-spacing:0.04em; margin-top:-4px;
}
.form-footer {
  display:flex; align-items:center; justify-content:space-between;
  gap:24px; margin-top:28px; flex-wrap:wrap;
}
.form-rgpd {
  font-size:11px; color:var(--text-dim);
  max-width:380px; line-height:1.7;
}
.form-feedback {
  padding:14px 20px;
  border-radius:var(--radius);
  font-size:14px; font-weight:500;
  margin-bottom:28px;
  display:none;
}
.form-feedback:not(:empty) { display:block; }
.form-feedback.success {
  background:rgba(240,114,182,0.12);
  border:1px solid var(--border-hv);
  color:var(--pink);
}
.form-feedback.error {
  background:rgba(255,60,80,0.08);
  border:1px solid rgba(255,60,80,0.3);
  color:#ff6b7a;
}

/* ===== FOOTER ===== */
.footer {
  padding:32px 48px;
  border-top:1px solid var(--border);
  display:flex; align-items:center; justify-content:space-between;
}
.footer p { font-size:13px; color:var(--text-dim); }
.footer-heart { color:var(--pink); }
.footer-top {
  font-size:11px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--text-dim); transition:color var(--tr);
}
.footer-top:hover { color:var(--pink); }

/* ===== REVEAL AU SCROLL ===== */
.reveal {
  opacity:0; transform:translateY(32px);
  transition:opacity 0.75s cubic-bezier(0.4,0,0.2,1),
             transform 0.75s cubic-bezier(0.4,0,0.2,1);
}
.reveal.visible { opacity:1; transform:translateY(0); }

/* ===== SCROLLBAR ===== */
::-webkit-scrollbar { width:5px; }
::-webkit-scrollbar-track { background:var(--bg-2); }
::-webkit-scrollbar-thumb { background:var(--pink); border-radius:3px; }

/* ===== SELECTION ===== */
::selection { background:var(--pink); color:#000; }

/* ===== RESPONSIVE ===== */
@media (max-width:940px) {
  .header { padding:0 24px; }
  .nav { display:none; }
  .burger { display:flex; }
  .section { padding:calc(var(--header-h) + 52px) 24px 90px; }
  .hero-inner { grid-template-columns:1fr; gap:44px; text-align:center; }
  .hero-portrait { max-width:270px; margin:0 auto; }
  .hero-desc { margin:0 auto 40px; }
  .timeline-item { grid-template-columns:1fr; gap:6px; }
  .projects-grid { grid-template-columns:1fr; }
  .project-card { aspect-ratio:4/3; }
  .project-overlay { opacity:1; }
  .contacts-grid { grid-template-columns:repeat(2,1fr); }
  .contact-form-wrap { padding:32px 24px; }
  .form-footer { flex-direction:column; align-items:flex-start; }
  .footer { flex-direction:column; gap:16px; text-align:center; }
}
@media (max-width:560px) {
  .skills-grid { grid-template-columns:repeat(2,1fr); }
  .modal-content { padding:28px 18px; }
  .contacts-grid { grid-template-columns:1fr; }
  .contact-card { width:100%; }
  .form-row { flex-direction:column; }
}
