:root{--bg:#07110d;--surface:#0d1a14;--text:#f5f8f6;--muted:#9baaa1;--line:rgba(255,255,255,.09);--green:#54e39a;--max:1120px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;color:var(--text);background:radial-gradient(circle at 13% 4%,rgba(84,227,154,.1),transparent 24rem),var(--bg);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.6}.shell{width:min(calc(100% - 40px),var(--max));margin:auto}a{color:inherit}.topbar{display:flex;align-items:center;justify-content:space-between;min-height:76px;border-bottom:1px solid var(--line)}.brand{font-weight:850;text-decoration:none;letter-spacing:-.04em}.brand span{color:var(--green)}.brand small{color:var(--muted)}.langs{display:flex;padding:3px;border:1px solid var(--line);border-radius:999px}.langs button{min-width:40px;padding:6px;border:0;border-radius:999px;color:var(--muted);background:transparent;font-weight:800;cursor:pointer}.langs .active{color:#052217;background:var(--green)}h1,h2,h3,p{margin-top:0}.hero{display:grid;grid-template-columns:1.35fr .65fr;gap:60px;align-items:center;padding:76px 0 68px;border-bottom:1px solid var(--line)}.location{color:#c0d0c6;font-size:.84rem}.location:first-letter{color:var(--green)}h1{margin-bottom:10px;font-size:clamp(3.2rem,8vw,6rem);line-height:.95;letter-spacing:-.07em}.role{margin-bottom:18px;color:var(--green);font-size:clamp(1.3rem,3vw,1.8rem);font-weight:760}.intro{max-width:685px;color:var(--muted);font-size:1.08rem}.interests{padding:25px;border:1px solid var(--line);border-radius:22px;background:linear-gradient(145deg,rgba(18,37,27,.95),rgba(10,23,17,.9))}.interests>div{display:grid;grid-template-columns:1fr 1fr;gap:9px}.interests span,.tags span{padding:7px 10px;border:1px solid var(--line);border-radius:999px;color:#bdc9c1;background:rgba(255,255,255,.035);font-size:.78rem}.interests b{font-weight:650}.eyebrow{margin-bottom:10px;color:var(--green);font-size:.74rem;font-weight:850;letter-spacing:.13em;text-transform:uppercase}.section{padding:66px 0 72px;border-bottom:1px solid var(--line)}.section-head{display:grid;grid-template-columns:.9fr 1.1fr;gap:40px;align-items:end;margin-bottom:30px}.section-head h2,.contact h2{margin-bottom:0;font-size:clamp(2rem,5vw,3.2rem);line-height:1.07;letter-spacing:-.05em}.section-head>p{margin-bottom:4px;color:var(--muted)}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.skills article,.project{border:1px solid var(--line);border-radius:21px;background:rgba(255,255,255,.025);overflow:hidden;transition:.2s}.skills article{min-height:255px;padding:24px}.skills article:hover,.project:hover{transform:translateY(-4px);border-color:rgba(84,227,154,.28);background:#112219}.skills i{display:block;margin-bottom:32px;color:var(--green);font-style:normal;font-size:.78rem;font-weight:850}.skills h3{margin-bottom:8px}.skills article>p{min-height:68px;color:var(--muted);font-size:.9rem}.tags{display:flex;flex-wrap:wrap;gap:7px}.projects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.thumbs{display:grid;grid-template-columns:1fr;height:190px;gap:1px;background:var(--line)}.thumbs.two{grid-template-columns:1fr 1fr}.thumbs button{display:block;width:100%;height:190px;padding:0;border:0;overflow:hidden;background:#102019;cursor:zoom-in}.thumbs img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;transition:.25s}.thumbs button:hover img{transform:scale(1.03);filter:brightness(.85)}.project-body{padding:22px 24px 24px}.project-body small{display:block;margin-bottom:6px;color:var(--green);font-size:.71rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.project-body h3{margin-bottom:8px}.project-body p{margin-bottom:17px;color:var(--muted);font-size:.9rem}.project-body a{color:var(--green);font-size:.86rem;font-weight:780;text-decoration:none}.project-body em{display:inline-flex;padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.78rem;font-style:normal}.contact{display:grid;grid-template-columns:1.1fr .9fr;gap:55px;align-items:end;padding:66px 0}.contact>div>p{color:var(--muted)}.contact-links{display:flex;flex-wrap:wrap;gap:9px}.btn{display:inline-flex;min-height:47px;align-items:center;justify-content:center;padding:0 19px;border:1px solid transparent;border-radius:999px;font-weight:760;text-decoration:none;cursor:pointer}.primary{color:#052217;background:var(--green)}.secondary{color:var(--text);border-color:var(--line);background:rgba(255,255,255,.035)}footer{display:flex;justify-content:space-between;gap:20px;padding:25px 0;color:#708078;font-size:.83rem}.lightbox[hidden]{display:none}.lightbox{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:35px;background:rgba(2,9,6,.93);backdrop-filter:blur(8px)}.lightbox img{max-width:94vw;max-height:88vh;border-radius:14px;object-fit:contain;background:white}.lightbox button{position:fixed;top:18px;right:22px;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;color:white;background:rgba(255,255,255,.08);font-size:1.8rem;cursor:pointer}@media(max-width:820px){.hero,.section-head,.contact{grid-template-columns:1fr;gap:25px}.skills-grid,.projects-grid{grid-template-columns:1fr}.thumbs,.thumbs button{height:210px}.skills article{min-height:auto}.skills article>p{min-height:auto}}@media(max-width:520px){.shell{width:min(calc(100% - 28px),var(--max))}.hero{padding:48px 0}.section,.contact{padding:52px 0}.thumbs,.thumbs button{height:170px}.project-body{padding:20px}.contact-links{flex-direction:column}.btn{width:100%}footer{flex-direction:column;text-align:center}}

/* Cartes de réalisations compactes : vignette à gauche, contenu à droite */
.projects-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.project {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  min-height: 185px;
  align-items: stretch;
}

.thumbs,
.thumbs.two {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  width: 190px;
  height: 185px;
  min-height: 0;
  gap: 1px;
  background: var(--line);
}

.thumbs.two {
  grid-template-rows: 1fr 1fr;
}

.thumbs button,
.thumbs.two button {
  width: 190px;
  height: 100%;
  min-height: 0;
}

.thumbs img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.project-body {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: center;
  padding: 18px 19px;
}

.project-body small {
  margin-bottom: 4px;
  font-size: .65rem;
}

.project-body h3 {
  margin-bottom: 6px;
  font-size: 1.04rem;
  line-height: 1.25;
}

.project-body p {
  margin-bottom: 12px;
  font-size: .82rem;
  line-height: 1.5;
}

.project-body a,
.project-body em {
  align-self: flex-start;
  font-size: .77rem;
}

@media (max-width: 980px) {
  .projects-grid {
    grid-template-columns: 1fr;
  }

  .project {
    grid-template-columns: 220px minmax(0, 1fr);
  }

  .thumbs,
  .thumbs.two,
  .thumbs button,
  .thumbs.two button {
    width: 220px;
  }
}

@media (max-width: 620px) {
  .project {
    grid-template-columns: 130px minmax(0, 1fr);
    min-height: 170px;
  }

  .thumbs,
  .thumbs.two {
    width: 130px;
    height: 170px;
  }

  .thumbs button,
  .thumbs.two button {
    width: 130px;
  }

  .project-body {
    padding: 15px;
  }

  .project-body p {
    font-size: .78rem;
  }
}

@media (max-width: 430px) {
  .project {
    grid-template-columns: 110px minmax(0, 1fr);
  }

  .thumbs,
  .thumbs.two,
  .thumbs button,
  .thumbs.two button {
    width: 110px;
  }

  .project-body {
    padding: 13px;
  }

  .project-body h3 {
    font-size: .95rem;
  }
}
