:root {
    --ink: #1b1714;
    --paper: #f6f1e8;
    --paper-2: #efe7d8;
    --paper-3: #e7ddca;
    --rose: #e3a294;
    --rose-deep: #cf7e6f;
    --copper: #b87a4a;
    --navy: #1d2740;
    --navy-2: #161e33;
    --vermilion: #c8432f;
    --muted: #6f6757;
    --line: rgba(27,23,20,0.12);
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }

  html {
    scroll-behavior: smooth;
    scroll-padding-top: 88px;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }

  section[id] { scroll-margin-top: 80px; }

  body {
    font-family: 'DM Sans', sans-serif;
    background: var(--paper);
    color: var(--ink);
    font-size: 16px;
    line-height: 1.65;
    overflow-x: hidden;
  }

  ::selection { background: var(--rose); color: #fff; }

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

  /* ====== SCROLL PROGRESS ====== */
  .progress {
    position: fixed; top: 0; left: 0; height: 2px; width: 0%;
    background: linear-gradient(90deg, var(--rose), var(--copper));
    z-index: 10000;
    transition: width 0.1s linear;
  }

  /* ====== TYPOGRAPHIE ====== */
  .display {
    font-family: 'DM Sans', sans-serif;
    font-weight: 400;
    
    line-height: 1.02;
    letter-spacing: -0.01em;
  }
  em, .ital { font-family: 'DM Sans', sans-serif; font-style: italic; }

  .eyebrow {
    font-size: 0.72rem;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--rose-deep);
  }

  .vlabel {
    writing-mode: vertical-rl;
    text-orientation: mixed;
    font-size: 0.7rem;
    letter-spacing: 0.35em;
    text-transform: uppercase;
    color: var(--muted);
  }

  /* ====== NAV ====== */
  nav {
    position: fixed; top: 0; left: 0; right: 0;
    z-index: 1000;
    display: flex; justify-content: space-between; align-items: center;
    padding: 1.1rem clamp(1.25rem, 4vw, 4rem);
    background: rgba(246,241,232,0.82);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid transparent;
    transition: border-color 0.3s, background 0.3s, padding 0.3s;
  }
  nav.scrolled { border-color: var(--line); background: rgba(246,241,232,0.92); }

  .nav-logo {
    display: flex; align-items: center; gap: 0.6rem;
    text-decoration: none; color: var(--ink);
  }
  .nav-logo-text { font-family: 'DM Sans', sans-serif; font-size: 1.1rem; letter-spacing: 0.01em; color: var(--ink); transition: opacity 0.3s; }
  .nav-logo-text .last { color: var(--rose-deep); }
  .nav-logo:hover .nav-logo-text { opacity: 0.75; }

  .nav-links { display: flex; gap: 2.2rem; list-style: none; align-items: center; }
  .nav-links a {
    position: relative;
    font-size: 0.78rem; font-weight: 500;
    color: var(--ink); text-decoration: none;
    letter-spacing: 0.06em; text-transform: uppercase;
  }
  .nav-links a::after {
    content: ''; position: absolute; left: 0; bottom: -5px;
    width: 100%; height: 1px; background: var(--rose-deep);
    transform: scaleX(0); transform-origin: right;
    transition: transform 0.35s cubic-bezier(.2,.8,.2,1);
  }
  .nav-links a:hover::after { transform: scaleX(1); transform-origin: left; }

  .burger { display: none; background: none; border: none; cursor: pointer; padding: 0.4rem; z-index: 1100; }
  .burger span { display: block; width: 26px; height: 2px; background: var(--ink); margin: 5px 0; transition: 0.3s; }

  /* ====== HERO ====== */
  .hero {
    position: relative;
    min-height: 100svh;
    display: grid;
    grid-template-columns: 1.05fr 0.95fr;
    padding-top: 70px;
    overflow: hidden;
  }
  .hero-left {
    position: relative;
    display: flex; flex-direction: column; justify-content: center;
    padding: clamp(2.5rem, 6vw, 6rem) clamp(1.5rem, 5vw, 5.5rem);
    z-index: 2;
  }
  .hero-vlabel { position: absolute; top: 50%; left: clamp(0.8rem,2vw,2rem); transform: translateY(-50%); }
  .hero-eyebrow { margin-bottom: 1.6rem; }
  .hero-title {
    font-size: clamp(3.4rem, 8.5vw, 7.2rem);
    margin-bottom: 1.8rem;
  }
  .hero-title .ln { display: block; overflow: hidden; }
  .hero-title .ln > span { display: block; }
  .hero-title em { color: var(--rose-deep); }
  .hero-desc {
    font-size: clamp(1rem, 1.3vw, 1.12rem);
    color: var(--muted); max-width: 430px; margin-bottom: 2.6rem; line-height: 1.85;
  }
  .hero-actions { display: flex; align-items: center; gap: 1.6rem; flex-wrap: wrap; }

  .btn {
    position: relative; overflow: hidden;
    display: inline-flex; align-items: center; gap: 0.7rem;
    background: var(--ink); color: var(--paper);
    padding: 1rem 2rem; text-decoration: none;
    font-size: 0.82rem; font-weight: 500; letter-spacing: 0.05em; text-transform: uppercase;
    border: 1px solid var(--ink);
    transition: color 0.4s;
  }
  .btn span { position: relative; z-index: 1; }
  .btn::before {
    content: ''; position: absolute; inset: 0;
    background: var(--rose-deep);
    transform: translateY(101%); transition: transform 0.45s cubic-bezier(.2,.8,.2,1);
  }
  .btn:hover::before { transform: translateY(0); }
  .btn-ghost { background: transparent; color: var(--ink); }
  .btn-ghost:hover { color: var(--paper); }

  .hero-link {
    font-size: 0.82rem; font-weight: 500; letter-spacing: 0.05em; text-transform: uppercase;
    color: var(--ink); text-decoration: none; position: relative;
  }
  .hero-link::after { content:''; position:absolute; left:0; bottom:-4px; width:100%; height:1px; background: var(--ink); transform: scaleX(0); transform-origin: right; transition: transform .35s; }
  .hero-link:hover::after { transform: scaleX(1); transform-origin: left; }

  .hero-right {
    position: relative;
    background: transparent;
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;
  }
  .hero-right::before {
    content: ''; position: absolute; width: 125%; height: 95%;
    bottom: -5%; left: -12%;
    background: radial-gradient(ellipse at 58% 50%, rgba(227,162,148,0.30), rgba(227,162,148,0.10) 45%, transparent 68%);
    filter: blur(38px);
  }
  .hero-card {
    position: relative; z-index: 2; text-align: center; padding: 3rem;
  }
  .hero-tagline {
    font-family: 'DM Sans', sans-serif; font-style: italic;
    font-size: clamp(1.5rem, 2.6vw, 2.1rem); line-height: 1.35; color: var(--ink);
    margin-bottom: 2.8rem;
  }
  .hero-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 2.2rem 2.6rem; }
  .stat-num { font-family: 'DM Sans', sans-serif; font-size: clamp(2.4rem, 4vw, 3.4rem); line-height: 1; color: var(--ink); }
  .stat-num small { font-size: 0.45em; vertical-align: super; }
  .stat-label { font-size: 0.72rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.1em; margin-top: 0.55rem; }

  /* enso */
  .enso { position: absolute; z-index: 1; opacity: 0.5; }
  .enso svg { width: 100%; height: 100%; display: block; }
  .hero-enso { width: clamp(220px, 32vw, 420px); height: clamp(220px, 32vw, 420px); top: 8%; right: 4%; opacity: 0.35; }

  /* sakura petals */
  .petal { position: absolute; top: -8%; width: 14px; height: 14px; background: var(--rose); border-radius: 80% 0 80% 0; opacity: 0.7; pointer-events: none; will-change: transform; z-index: 1; }

  .scroll-cue {
    position: absolute; bottom: 1.6rem; left: clamp(1.5rem,5vw,5.5rem);
    display: flex; align-items: center; gap: 0.7rem;
    font-size: 0.7rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); z-index: 3;
  }
  .scroll-cue .bar { width: 42px; height: 1px; background: var(--ink); position: relative; overflow: hidden; }
  .scroll-cue .bar::after { content:''; position:absolute; inset:0; background: var(--rose-deep); animation: cue 1.8s ease-in-out infinite; }
  @keyframes cue { 0%{transform:translateX(-100%)} 60%,100%{transform:translateX(100%)} }

  /* ====== MARQUEE ====== */
  .marquee { overflow: hidden; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 1.4rem 0; background: var(--paper); }
  .marquee-track { display: flex; gap: 3.5rem; width: max-content; animation: scrollx 32s linear infinite; }
  .marquee:hover .marquee-track { animation-play-state: paused; }
  .marquee-item { display: inline-flex; align-items: center; gap: 3.5rem; font-family: 'DM Sans', sans-serif; font-size: clamp(1.1rem, 2vw, 1.6rem); color: var(--ink); white-space: nowrap; }
  .marquee-item::before { content: '✺'; color: var(--rose-deep); font-size: 0.7em; }
  @keyframes scrollx { to { transform: translateX(-50%); } }

  /* ====== SECTION SHELL ====== */
  .section { padding: clamp(4rem, 9vw, 8rem) clamp(1.5rem, 5vw, 5.5rem); position: relative; }
  .sec-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem; margin-bottom: clamp(2.5rem, 5vw, 4rem); flex-wrap: wrap; }
  .sec-head-l { display: flex; align-items: baseline; gap: 1.2rem; }
  .sec-index { font-family: 'DM Sans', sans-serif; font-size: 1rem; color: var(--rose-deep); }
  .sec-title { font-family: 'DM Sans', sans-serif; font-size: clamp(2.2rem, 5vw, 3.6rem); line-height: 1.05; }
  .sec-kicker { font-size: 0.8rem; color: var(--muted); max-width: 320px; }

  /* ====== MEDIA + FALLBACK ====== */
  .media { position: relative; overflow: hidden; background: var(--paper-2); display: grid; place-items: center; }
  .media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; transition: transform 0.9s cubic-bezier(.2,.8,.2,1); }
  .media::before { content: attr(data-emoji); font-size: clamp(2rem, 4vw, 3.2rem); opacity: 0.55; }

  /* ====== FEATURED WORK (alternating rows) ====== */
  .feature {
    display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 4vw, 4rem);
    align-items: center; margin-bottom: clamp(3.5rem, 7vw, 6.5rem);
  }
  .feature:nth-child(even) .feature-media { order: 2; }
  .feature-media { position: relative; }
  .feature-media .media { aspect-ratio: 5/4; }
  .feature:hover .feature-media .media img { transform: scale(1.04); }
  .feature-num { position: absolute; top: -1.6rem; left: -0.5rem; font-family: 'DM Sans', sans-serif; font-size: clamp(3rem,6vw,5rem); color: var(--ink); opacity: 0.08; z-index: 0; }
  .feature-cat { margin-bottom: 1rem; }
  .feature-title { font-family: 'DM Sans', sans-serif; font-size: clamp(1.8rem, 3.5vw, 2.8rem); line-height: 1.1; margin-bottom: 1.1rem; }
  .feature-desc { color: var(--muted); font-size: 0.98rem; line-height: 1.85; margin-bottom: 1.6rem; max-width: 460px; }
  .tag { display: inline-block; font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--copper); border: 1px solid var(--line); padding: 0.4rem 0.85rem; border-radius: 100px; }

  /* ====== WORK GRID ====== */
  .work-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(0.8rem, 2vw, 1.6rem); }
  .work { text-decoration: none; color: var(--ink); display: block; cursor: pointer; }
  .work .media { aspect-ratio: 1/1; border-radius: 3px; }
  .work:hover .media img { transform: scale(1.05); }
  .work-cap {
    position: absolute; inset: 0; z-index: 2;
    background: linear-gradient(to top, rgba(27,23,20,0.92), rgba(27,23,20,0.1) 60%, transparent);
    color: var(--paper);
    display: flex; flex-direction: column; justify-content: flex-end;
    padding: 1.6rem; opacity: 0; transition: opacity 0.4s;
  }
  .work:hover .work-cap, .work.is-open .work-cap { opacity: 1; }
  .work-cap p { font-size: 0.85rem; color: rgba(255,255,255,0.78); line-height: 1.6; margin: 0.5rem 0 1rem; }
  .work-cap .tag { color: var(--rose); border-color: rgba(255,255,255,0.25); align-self: flex-start; }
  .work-meta { display: flex; align-items: baseline; gap: 0.8rem; padding-top: 1rem; }
  .work-meta .num { font-family: 'DM Sans', sans-serif; font-size: 0.85rem; color: var(--rose-deep); }
  .work-meta h3 { font-family: 'DM Sans', sans-serif; font-size: 1.2rem; font-weight: 400; }
  .work-meta .cat { font-size: 0.74rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; margin-left: auto; }
  .media[data-touch]::after { content: '+'; position: absolute; top: 0.7rem; right: 0.9rem; font-family: 'DM Sans',sans-serif; font-size: 1.3rem; color: var(--ink); opacity: 0; z-index: 3; }
  @media (hover: none) { .media[data-touch]::after { opacity: 0.45; } .work.is-open .media[data-touch]::after { opacity: 0; } }

  /* ====== ILLUSTRATION (dark) ====== */
  .dark { background: var(--navy); color: var(--paper); }
  .dark .sec-title, .dark .feature-title, .dark .work-meta h3 { color: var(--paper); }
  .dark .sec-index { color: var(--rose); }
  .dark .sec-kicker, .dark .feature-desc, .dark .work-meta .cat { color: rgba(246,241,232,0.6); }
  .dark .media { background: var(--navy-2); }
  .dark .media::before { opacity: 0.4; }
  .dark .tag { color: var(--rose); border-color: rgba(246,241,232,0.2); }
  .dark .feature-num { color: var(--paper); opacity: 0.1; }
  .dark .eyebrow { color: var(--rose); }

  /* ====== CASE STUDY TEASER ====== */
  .case {
    position: relative; overflow: hidden;
    display: grid; grid-template-columns: 1.1fr 1fr; align-items: stretch;
    background: linear-gradient(140deg, var(--navy), var(--navy-2));
    color: var(--paper); border-radius: 4px;
  }
  .case-body { padding: clamp(2.5rem, 5vw, 4.5rem); display: flex; flex-direction: column; justify-content: center; }
  .case .eyebrow { color: var(--rose); margin-bottom: 1.2rem; }
  .case-title { font-family: 'DM Sans', sans-serif; font-size: clamp(2rem, 4vw, 3rem); line-height: 1.08; margin-bottom: 1.2rem; }
  .case-desc { color: rgba(246,241,232,0.72); line-height: 1.8; margin-bottom: 1.8rem; max-width: 440px; }
  .case-tags { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 2rem; }
  .case-tags .tag { color: var(--rose); border-color: rgba(246,241,232,0.22); }
  .case-media { position: relative; min-height: 280px; }
  .case-media .media { position: absolute; inset: 0; background: #2a3656; }
  .case:hover .case-media .media img { transform: scale(1.05); }
  .case-cta { display: inline-flex; align-items: center; gap: 0.7rem; color: var(--paper); text-decoration: none; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 500; width: fit-content; }
  .case-cta .arrow { transition: transform 0.4s; }
  .case:hover .case-cta .arrow { transform: translateX(6px); }

  /* ====== VIDEO ====== */
  .video-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(0.8rem, 2vw, 1.4rem); }
  .vid { position: relative; aspect-ratio: 9/16; overflow: hidden; background: var(--ink); border-radius: 3px; }
  .vid iframe, .vid video { width: 100%; height: 100%; border: none; display: block; object-fit: cover; background: var(--ink); }
  .vid-label { position: absolute; bottom: 0; left: 0; right: 0; padding: 0.6rem; background: linear-gradient(transparent, rgba(0,0,0,0.7)); font-size: 0.68rem; color: #fff; text-align: center; letter-spacing: 0.06em; text-transform: uppercase; pointer-events: none; }
  .video-grid.reels { grid-template-columns: repeat(3, 1fr); max-width: 720px; }

  /* ====== EMOJI BAND (OP1C) ====== */
  .emoji-band { padding: clamp(2rem,4vw,3.2rem) 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--paper-2); }
  .emoji-marquee { padding: 0.4rem 0; background: transparent; border: none; }
  .emoji-track { gap: clamp(1.6rem, 3vw, 2.8rem); align-items: center; }
  .emoji-track img { height: clamp(40px, 5vw, 56px); width: auto; display: block; }

  /* ====== PHOTO ====== */
  .photo-note { text-align: center; font-family: 'DM Sans', sans-serif; font-style: italic; font-size: clamp(1.2rem, 2.2vw, 1.6rem); color: var(--muted); line-height: 1.6; max-width: 640px; margin: 0 auto; }

  /* ====== ABOUT ====== */
  .about { position: relative; overflow: hidden; background: var(--paper-2); padding: clamp(4rem,9vw,8rem) clamp(1.5rem,5vw,5.5rem); }
  .about-enso { width: clamp(220px,30vw,400px); height: clamp(220px,30vw,400px); top: 50%; right: -4%; transform: translateY(-50%); opacity: 0.1; }
  .about-grid { position: relative; display: grid; grid-template-columns: 1.15fr 0.85fr; gap: clamp(2.5rem,6vw,6rem); align-items: start; max-width: 1180px; }
  .about-intro .eyebrow { margin-bottom: 1.3rem; }
  .about-title { font-family: 'DM Sans', sans-serif; font-size: clamp(2rem,4vw,3rem); line-height: 1.16; margin-bottom: 1.8rem; color: var(--ink); max-width: 15ch; }
  .about-title em { color: var(--rose-deep); font-style: italic; }
  .about-text { color: var(--muted); line-height: 1.95; font-size: 0.98rem; margin-bottom: 1.3rem; max-width: 52ch; }
  .about-sign { margin-top: 2.4rem; display: flex; flex-direction: column; gap: 0.3rem; }
  .about-wordmark { font-family: 'DM Sans', sans-serif; font-size: 1.5rem; color: var(--ink); line-height: 1; }
  .about-wordmark .last { color: var(--rose-deep); }
  .about-sign small { font-size: 0.74rem; color: var(--muted); letter-spacing: 0.04em; }

  .about-skills { padding-top: 0.4rem; }
  .skills-label { font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--rose-deep); margin-bottom: 1.4rem; }
  .skills-grid { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 0 clamp(1.4rem,3vw,2.6rem); }
  .skills-grid li { display: flex; justify-content: space-between; align-items: baseline; gap: 0.7rem; padding: 0.8rem 0; border-bottom: 1px solid var(--line); }
  .sk-name { font-size: 0.9rem; color: var(--ink); }
  .sk-badge { font-size: 0.64rem; text-transform: uppercase; letter-spacing: 0.07em; color: var(--copper); white-space: nowrap; }

  /* ====== CLIENTS ====== */
  .clients { padding: clamp(3rem,6vw,5rem) 0; text-align: center; }
  .clients .eyebrow { margin-bottom: 2.5rem; }
  .client-name { font-family: 'DM Sans', sans-serif; font-style: italic; font-size: clamp(1.1rem,2vw,1.5rem); color: var(--muted); white-space: nowrap; }

  /* ====== CONTACT ====== */
  .contact { padding: clamp(5rem, 10vw, 9rem) clamp(1.5rem, 5vw, 5.5rem); text-align: center; background: var(--paper-2); position: relative; overflow: hidden; }
  .contact .enso { width: clamp(260px,40vw,520px); height: clamp(260px,40vw,520px); top: 50%; left: 50%; transform: translate(-50%,-50%); opacity: 0.12; }
  .contact-eyebrow { margin-bottom: 1.5rem; position: relative; }
  .contact-title { font-family: 'DM Sans', sans-serif; font-size: clamp(2.6rem, 7vw, 5rem); line-height: 1.08; margin-bottom: 1.4rem; position: relative; }
  .contact-title em { color: var(--rose-deep); }
  .contact-sub { color: var(--muted); font-size: 1.05rem; margin-bottom: 3rem; position: relative; }

  /* ====== CONTACT FORM ====== */
  .contact-form { position: relative; max-width: 620px; margin: 0 auto 2.6rem; text-align: left; }
  .hp { position: absolute !important; left: -9999px; opacity: 0; width: 0; height: 0; }
  .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
  .field { display: flex; flex-direction: column; margin-bottom: 1.2rem; }
  .field label { font-size: 0.7rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--rose-deep); margin-bottom: 0.55rem; font-weight: 500; }
  .field input, .field textarea {
    font-family: 'DM Sans', sans-serif; font-size: 0.98rem; color: var(--ink);
    background: rgba(255,255,255,0.5); border: 1px solid var(--line); border-radius: 2px;
    padding: 0.85rem 1rem; transition: border-color 0.25s, background 0.25s, box-shadow 0.25s; resize: vertical;
  }
  .field input::placeholder, .field textarea::placeholder { color: #b3ab9c; }
  .field input:focus, .field textarea:focus {
    outline: none; border-color: var(--rose-deep); background: #fff;
    box-shadow: 0 0 0 3px rgba(207,126,111,0.12);
  }
  .form-submit { margin-top: 0.4rem; cursor: pointer; }
  .form-submit:disabled { opacity: 0.6; cursor: wait; }
  .form-status { min-height: 1.2em; margin-top: 1rem; font-size: 0.9rem; }
  .form-status.sending { color: var(--muted); }
  .form-status.ok { color: #4b7d5e; }
  .form-status.err { color: #b3503f; }
  .form-status a { color: inherit; }

  .contact-links { display: flex; justify-content: center; gap: 1.6rem; flex-wrap: wrap; position: relative; }
  .contact-alt { font-size: 0.84rem; color: var(--muted); text-decoration: none; letter-spacing: 0.03em; position: relative; }
  .contact-alt::after { content: ''; position: absolute; left: 0; bottom: -3px; width: 100%; height: 1px; background: var(--rose-deep); transform: scaleX(0); transform-origin: right; transition: transform 0.3s; }
  .contact-alt:hover { color: var(--ink); }
  .contact-alt:hover::after { transform: scaleX(1); transform-origin: left; }

  /* ====== FOOTER ====== */
  footer { padding: 2.2rem clamp(1.5rem, 5vw, 5.5rem); display: flex; justify-content: space-between; align-items: center; gap: 1rem; border-top: 1px solid var(--line); font-size: 0.8rem; color: var(--muted); flex-wrap: wrap; }
  footer a { color: var(--muted); text-decoration: none; }
  footer a:hover { color: var(--ink); }

  /* ====== REVEAL (n'agit que si JS actif : sans JS, tout reste visible) ====== */
  .js [data-reveal] { opacity: 0; transform: translateY(28px); transition: opacity 0.8s cubic-bezier(.2,.8,.2,1), transform 0.8s cubic-bezier(.2,.8,.2,1); }
  .js [data-reveal].in { opacity: 1; transform: none; }

  /* ====== RESPONSIVE ====== */
  @media (max-width: 980px) {
    .hero { grid-template-columns: 1fr; min-height: auto; }
    .hero-left { padding-top: 7rem; padding-bottom: 3rem; }
    .hero-right { min-height: 72vw; }
    .hero-vlabel { display: none; }
    .about-grid { grid-template-columns: 1fr; gap: 2.5rem; }
    .case { grid-template-columns: 1fr; }
    .case-media { min-height: 240px; order: -1; }
    .video-grid { grid-template-columns: repeat(3, 1fr); }
    .work-grid { grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 760px) {
    .nav-links { position: fixed; inset: 0; background: var(--paper); flex-direction: column; justify-content: center; gap: 2.2rem; transform: translateX(100%); transition: transform 0.45s cubic-bezier(.2,.8,.2,1); }
    .nav-links.open { transform: translateX(0); }
    .nav-links a { font-size: 1.4rem; font-family: 'DM Sans', sans-serif; text-transform: none; letter-spacing: 0; }
    .burger { display: block; }
    .burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    .burger.open span:nth-child(2) { opacity: 0; }
    .burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
    .feature, .feature:nth-child(even) .feature-media { grid-template-columns: 1fr; order: 0; }
    .feature-media { order: -1 !important; }
    .feature-num { top: -1rem; }
    .work-grid { grid-template-columns: repeat(2, 1fr); gap: 0.7rem; }
    .video-grid { grid-template-columns: repeat(2, 1fr); }
    .sec-head { align-items: flex-start; }
  }

  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
    [data-reveal] { opacity: 1; transform: none; }
  }

  /* ====== PAGES PROJET ====== */
  .back-link { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); text-decoration: none; }
  .back-link:hover { color: var(--ink); }
  .back-link .arrow { transition: transform 0.3s; }
  .back-link:hover .arrow { transform: translateX(-4px); }

  .proj-hero { padding: clamp(7rem,12vw,11rem) clamp(1.5rem,5vw,5.5rem) clamp(2.5rem,5vw,4rem); position: relative; overflow: hidden; }
  .proj-hero .enso { width: clamp(240px,34vw,460px); height: clamp(240px,34vw,460px); top: -10%; right: -2%; opacity: 0.16; }
  .proj-eyebrow { margin-bottom: 1.4rem; position: relative; }
  .proj-title { font-family: 'DM Sans', sans-serif; font-size: clamp(2.6rem,7vw,5rem); line-height: 1.05; margin-bottom: 1.4rem; position: relative; }
  .proj-title em { color: var(--rose-deep); }
  .proj-lead { font-family: 'DM Sans', sans-serif; font-style: italic; font-size: clamp(1.2rem,2.2vw,1.7rem); line-height: 1.5; color: var(--ink); max-width: 640px; margin-bottom: 1.4rem; position: relative; }
  .proj-intro { color: var(--muted); line-height: 1.9; max-width: 580px; margin-bottom: 1.8rem; position: relative; }
  .proj-tags { display: flex; flex-wrap: wrap; gap: 0.6rem; position: relative; }

  .gallery-sec { padding: 0 clamp(1.5rem,5vw,5.5rem) clamp(4rem,8vw,7rem); }
  .gallery { columns: 3; column-gap: clamp(0.8rem,2vw,1.4rem); }
  .gallery img { width: 100%; margin: 0 0 clamp(0.8rem,2vw,1.4rem); border-radius: 4px; display: block; break-inside: avoid; background: var(--paper-2); }

  .proj-reels { display: grid; grid-template-columns: repeat(3,1fr); gap: clamp(0.8rem,2vw,1.4rem); max-width: 760px; }

  .soon { border: 1px dashed var(--line); border-radius: 6px; padding: clamp(3rem,7vw,5rem) clamp(1.5rem,4vw,3rem); text-align: center; background: var(--paper-2); }
  .soon h3 { font-family: 'DM Sans', sans-serif; font-weight: 400; font-size: 1.5rem; color: var(--ink); margin-bottom: 0.7rem; }
  .soon p { color: var(--muted); max-width: 420px; margin: 0 auto; }

  .cta-band { text-align: center; padding: clamp(4rem,8vw,7rem) clamp(1.5rem,5vw,5.5rem); border-top: 1px solid var(--line); }
  .cta-band h2 { font-family: 'DM Sans', sans-serif; font-size: clamp(2rem,4vw,3.2rem); margin-bottom: 1.2rem; }
  .cta-band p { color: var(--muted); margin-bottom: 2.4rem; }

  /* liens cartes -> pages projet */
  a.feature-media { display: block; text-decoration: none; color: inherit; }
  .feature-title a { color: inherit; text-decoration: none; background-image: linear-gradient(var(--rose-deep),var(--rose-deep)); background-size: 0% 1px; background-position: 0 100%; background-repeat: no-repeat; transition: background-size 0.35s; }
  .feature-title a:hover { background-size: 100% 1px; }
  .feature-cta-link { display: inline-block; margin-top: 1.4rem; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 500; color: var(--rose-deep); text-decoration: none; }
  .feature-cta-link:hover { color: var(--ink); }

  @media (max-width: 980px) { .gallery { columns: 2; } }
  @media (max-width: 600px) { .gallery { columns: 1; } .proj-reels { grid-template-columns: repeat(2,1fr); } .skills-grid { grid-template-columns: 1fr; } }

  /* ====== TITRES SANS (DM Sans) : graisse + tracking ====== */
  .display, .hero-title, .sec-title, .feature-title, .feature-title a, .about-title,
  .about-wordmark, .proj-title, .contact-title, .case-title, .cs-title, .stat-num,
  .nav-logo-text, .tarot-name, .tarot-roman, .cta-band h2, .soon h3,
  .work-meta h3, .tile-foot h4, .tile-cap h4, .hero-nav, .photo-note {
    font-weight: 600;
    letter-spacing: -0.015em;
  }
  .hero-title { letter-spacing: -0.03em; }
  .contact-title, .case-title, .cs-title, .proj-title { letter-spacing: -0.025em; }
  .hero-tagline, .proj-lead, .cs-lead, .client-name, .tarot-lead { font-weight: 400; letter-spacing: 0; }
  .photo-note { font-style: normal; font-weight: 500; }

  /* ====== ACCESSIBILITÉ (UX/UI) ====== */
  a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible,
  .work:focus-visible, .feature-media:focus-visible, [tabindex]:focus-visible {
    outline: 2px solid var(--rose-deep);
    outline-offset: 3px;
    border-radius: 2px;
  }
  [tabindex="-1"]:focus { outline: none; }

  .skip-link {
    position: absolute; left: 1rem; top: -4rem; z-index: 20000;
    background: var(--ink); color: var(--paper);
    padding: 0.7rem 1.1rem; text-decoration: none; font-size: 0.85rem;
    border-radius: 3px; transition: top 0.25s ease;
  }
  .skip-link:focus { top: 1rem; }

  /* image unique (galerie à 1 visuel) */
  .single-img { margin: 0 auto; max-width: 760px; }
  .single-img img { width: 100%; height: auto; display: block; border-radius: 4px; }

  /* ====== FAÇADE VIDÉO YOUTUBE (miniature + play au clic) ====== */
  .vid-facade { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: var(--ink); cursor: pointer; display: block; }
  .vid-thumb { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.5s cubic-bezier(.2,.8,.2,1); }
  .vid-facade:hover .vid-thumb { transform: scale(1.05); }
  .vid-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 54px; height: 54px; border-radius: 50%; background: rgba(27,23,20,0.72); display: grid; place-items: center; transition: transform 0.3s, background 0.3s; }
  .vid-play::after { content: ''; width: 0; height: 0; border-style: solid; border-width: 9px 0 9px 15px; border-color: transparent transparent transparent #fff; margin-left: 3px; }
  .vid-facade:hover .vid-play, .vid-facade:focus-visible .vid-play { transform: translate(-50%,-50%) scale(1.12); background: var(--rose-deep); }

  /* ====== RÉSEAUX (contact) ====== */
  .socials-label { position: relative; text-align: center; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--rose-deep); margin: 0.5rem 0 1.6rem; }
  .contact-socials { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; max-width: 760px; margin: 0 auto; }
  .social-card { display: flex; align-items: center; gap: 0.9rem; padding: 1.05rem 1.2rem; background: rgba(255,255,255,0.55); border: 1px solid var(--line); border-radius: 8px; text-decoration: none; color: var(--ink); text-align: left; transition: transform 0.3s cubic-bezier(.2,.8,.2,1), background 0.3s, border-color 0.3s, box-shadow 0.3s; }
  .social-card:hover { transform: translateY(-4px); background: #fff; border-color: var(--rose-deep); box-shadow: 0 14px 32px rgba(27,23,20,0.10); }
  .social-ic { flex-shrink: 0; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--ink); color: var(--paper); transition: background 0.3s; }
  .social-card:hover .social-ic { background: var(--rose-deep); }
  .social-ic svg { width: 21px; height: 21px; }
  .social-meta { display: flex; flex-direction: column; min-width: 0; }
  .social-meta strong { font-weight: 600; font-size: 0.92rem; letter-spacing: -0.01em; }
  .social-meta small { font-size: 0.78rem; color: var(--muted); line-height: 1.3; word-break: break-word; }
  @media (max-width: 700px) { .contact-socials { grid-template-columns: 1fr; max-width: 380px; } }

  /* ====== MENTIONS LÉGALES ====== */
  .legal { padding-top: 0; }
  .legal-body { max-width: 760px; }
  .legal-body h2 { font-family: 'DM Sans', sans-serif; font-weight: 600; font-size: clamp(1.2rem,2.2vw,1.5rem); letter-spacing: -0.01em; color: var(--ink); margin: 2.6rem 0 0.9rem; }
  .legal-body h2:first-child { margin-top: 0; }
  .legal-body p { color: var(--muted); line-height: 1.9; margin-bottom: 1rem; }
  .legal-body strong { color: var(--ink); font-weight: 600; }
  .legal-body a { color: var(--rose-deep); text-decoration: none; border-bottom: 1px solid transparent; transition: border-color 0.2s; }
  .legal-body a:hover { border-color: var(--rose-deep); }
  .legal-list { list-style: none; display: grid; gap: 0.55rem; margin: 0.4rem 0 1rem; }
  .legal-list li { display: grid; grid-template-columns: 160px 1fr; gap: 0.8rem; color: var(--ink); line-height: 1.6; align-items: start; }
  .legal-list li > span:first-child { color: var(--muted); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.06em; padding-top: 0.15rem; }
  .legal-list-simple { color: var(--muted); line-height: 1.9; margin: 0 0 1rem 1.2rem; }
  .legal-list-simple li { margin-bottom: 0.4rem; }
  .legal-note { font-size: 0.9rem; font-style: italic; }
  mark.tofill { background: #fff3cd; color: #6b5b1f; padding: 0.1rem 0.45rem; border-radius: 3px; font-size: 0.9em; border: 1px dashed #d8c277; }

  .footer-legal { color: var(--muted); text-decoration: none; font-size: inherit; }
  .footer-legal:hover { color: var(--ink); }
  @media (max-width: 760px) { .legal-list li { grid-template-columns: 1fr; gap: 0.1rem; } }

  /* ====== RÉSEAUX DANS LA NAV ====== */
  .nav-social a { display: inline-flex; align-items: center; justify-content: center; color: var(--ink); transition: color 0.25s, transform 0.25s; }
  .nav-social a::after { display: none; }
  .nav-social a:hover { color: var(--rose-deep); transform: translateY(-2px); }
  .nav-social svg { width: 18px; height: 18px; display: block; }
  .nav-social { margin-left: -1rem; }
  .nav-social:first-of-type { margin-left: 0.2rem; }
  @media (max-width: 760px) { .nav-social svg { width: 26px; height: 26px; } .nav-social, .nav-social:first-of-type { margin-left: 0; } }

  /* 3 stats restantes : centrées sur une ligne */
  .hero-stats-3 { display: flex; justify-content: center; gap: clamp(1.4rem, 3vw, 2.6rem); flex-wrap: wrap; }
  .hero-stats-3 > div { min-width: 88px; }
