:root{
  --bg:#f5f7fb; --card:#ffffff; --ink:#1a1f2b; --muted:#6b7280;
  --accent:#0ea5e9; --accent-2:#38bdf8; --ring: rgba(14,165,233,0.35);
  --shadow: 0 10px 25px rgba(0,0,0,0.06), 0 2px 8px rgba(0,0,0,0.04);
  --radius: 18px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0; font-family:Inter,system-ui,Segoe UI,Roboto,Helvetica,Arial; color:var(--ink);
  background:linear-gradient(180deg,#fafcff,#f6f8fc 50%, #f2f5fa);}
h1,h2,h3{font-family:Poppins,Inter,system-ui,Segoe UI,Roboto,Helvetica,Arial}
h1{font-weight:800;letter-spacing:-0.02em} h2{font-weight:800} h3{font-weight:600}
.container{width:min(1200px, 92%); margin:0 auto}
.site-header{position:sticky; top:0; z-index:50; backdrop-filter:saturate(140%) blur(8px);
  background:rgba(255,255,255,.75); border-bottom:1px solid rgba(0,0,0,.06)}
.nav-wrap{display:flex; align-items:center; justify-content:space-between; padding:14px 0}
.logo{display:flex; gap:10px; align-items:center; text-decoration:none; color:var(--ink); font-weight:800}
.logo-mark{width:40px; height:40px; border-radius:50%; background:linear-gradient(135deg,var(--accent),var(--accent-2));
  box-shadow: 0 10px 25px rgba(56,189,248,.35), inset 0 0 0 4px rgba(255,255,255,.8); display:grid; place-items:center; color:white; font-weight:800}
.logo-text{font-size:1.05rem}
.nav a{margin:0 8px; text-decoration:none; color:var(--ink); font-weight:600; opacity:.85}
.nav a.active{color:var(--accent)}
.nav .btn{margin-left:12px; padding:10px 16px; border-radius:999px; background:var(--accent); color:white !important; box-shadow:0 10px 20px rgba(14,165,233,.35)}
.burger{display:none; background:none; border:none; cursor:pointer}
.burger span{display:block; width:24px; height:2px; background:var(--ink); margin:4px 0}
.mobile-menu{display:none; position:fixed; top:62px; right:16px; left:16px; z-index:40; background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow); padding:14px; flex-direction:column; gap:6px}
.mobile-menu a{padding:12px; text-decoration:none; color:var(--ink); border-radius:12px}
.mobile-menu a:hover{background:#f3f7fb}
.hero{padding:72px 0 36px}
.hero-grid{display:grid; grid-template-columns: 1.4fr 1fr; gap:28px; align-items:center}
.hero .title{font-size:clamp(2rem, 3.6vw, 3.2rem); line-height:1.05}
.hero .subtitle{color:var(--muted); max-width:52ch; margin-top:10px}
.cta-row{display:flex; gap:12px; margin-top:16px}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:14px 18px; border-radius:14px; background:var(--ink); color:white; text-decoration:none; font-weight:700; box-shadow:var(--shadow)}
.btn.secondary{background:white; color:var(--ink); border:1px solid rgba(0,0,0,.08)}
.badges{display:flex; gap:10px; flex-wrap:wrap; margin-top:18px}
.badge{background:white; border:1px solid rgba(0,0,0,.06); border-radius:999px; padding:8px 12px; font-size:.9rem; box-shadow:0 6px 18px rgba(0,0,0,.06)}
.card{background:var(--card); border-radius:var(--radius); box-shadow:var(--shadow); border:1px solid rgba(0,0,0,.06)}
.card.padded{padding:20px}
.mosaic{display:grid; grid-template-columns:repeat(6,1fr); gap:14px}
.mosaic .tile{grid-column: span 2; aspect-ratio: 4 / 3; border-radius:16px; overflow:hidden; position:relative; background:#eaf2fb; box-shadow:var(--shadow)}
.mosaic .tile.large{grid-column: span 3; aspect-ratio: 16 / 9}
.tile .img{position:absolute; inset:0; background:linear-gradient(135deg,#a6d8ff,#e6f3ff)}
.tile .cap{position:absolute; left:10px; bottom:10px; background:rgba(255,255,255,.82); padding:8px 10px; border-radius:10px; font-weight:600}
.section{padding:56px 0}
.section .head{display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:18px}
.section .head h2{margin:0; font-size:1.9rem}
.grid{display:grid; gap:16px}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-2{grid-template-columns:repeat(2,1fr)}
.grid .item{padding:18px}
.kpi{display:flex; gap:16px; margin-top:18px}
.kpi .box{flex:1; text-align:center; padding:16px; border-radius:14px; background:white; border:1px solid rgba(0,0,0,.06); box-shadow:var(--shadow)}
.kpi .box b{font-size:1.4rem}
.section.cta{padding:40px 0}
.cta-box{display:flex; align-items:center; justify-content:space-between; gap:18px; padding:24px; border-radius:18px; background:white; border:1px solid rgba(0,0,0,.06); box-shadow:var(--shadow)}
.site-footer{margin-top:40px; padding:24px 0 36px; background:linear-gradient(180deg,rgba(255,255,255,.6), rgba(255,255,255,.9))}
.footer-grid{display:grid; grid-template-columns:2fr 1fr 1fr; gap:18px; align-items:flex-start}
.logo.small .logo-mark{width:28px; height:28px}
.muted{color:var(--muted)} .tiny{font-size:.85rem}
.foot-links{list-style:none; padding:0; margin:0} .foot-links li{margin:6px 0}
.link{color:var(--accent); text-decoration:none}
.form{display:grid; gap:12px}
.input, textarea{width:100%; padding:14px 16px; border:1px solid rgba(0,0,0,.08); border-radius:12px; background:white; outline:none; transition: box-shadow .2s, border-color .2s}
.input:focus, textarea:focus{border-color:var(--accent); box-shadow:0 0 0 6px var(--ring)}
textarea{min-height:140px; resize:vertical}
.table{width:100%; border-collapse:separate; border-spacing:0 10px}
.table th{color:var(--muted); font-weight:600; text-align:left; padding:8px}
.table td{background:white; padding:12px; border-top:1px solid rgba(0,0,0,.06); border-bottom:1px solid rgba(0,0,0,.06)}
.table tr td:first-child{border-left:1px solid rgba(0,0,0,.06); border-radius:12px 0 0 12px}
.table tr td:last-child{border-right:1px solid rgba(0,0,0,.06); border-radius:0 12px 12px 0}
@media (max-width: 980px){
  .hero-grid{grid-template-columns:1fr; gap:18px}
  .grid.cols-3,.grid.cols-2{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
  .nav a,.nav .btn{display:none}
  .burger{display:block}
  body.menu-open .mobile-menu{display:flex}
}


/* ===== Visual Refresh: motion, hover, and footer stickiness ===== */
:root{
  --elev-1: 0 6px 16px rgba(0,0,0,.06), 0 2px 6px rgba(0,0,0,.04);
  --elev-2: 0 12px 28px rgba(0,0,0,.10), 0 6px 12px rgba(0,0,0,.06);
}

/* Enable sticky footer layout */
body{display:flex; min-height:100vh; flex-direction:column}
.site-footer{margin-top:auto}

/* Micro-interactions */
.card,
.kpi .box,
.tile { transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; will-change: transform }
.card:hover,
.kpi .box:hover,
.mosaic .tile:hover{ transform: translateY(-4px); box-shadow: var(--elev-2) }

.btn{ transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease }
.btn:hover{ transform: translateY(-1px); box-shadow: 0 12px 24px rgba(14,165,233,.28) }
.btn:active{ transform: translateY(0); box-shadow: var(--shadow) }

.badge{ transition: background-color .2s ease, border-color .2s ease, transform .2s ease }
.badge:hover{ background:#f0f7ff; border-color: rgba(14,165,233,.25); transform: translateY(-2px) }

  .card, .kpi .box, .tile, .btn, .badge{transition: none}
}

/* Nav underline animation */
.nav a{position:relative}
.nav a::after{
  content:""; position:absolute; left:0; bottom:-6px; height:2px; width:0; background:linear-gradient(90deg,var(--accent),var(--accent-2));
  border-radius:2px; transition: width .2s ease
}
.nav a:hover::after, .nav a.active::after{ width:100% }

/* Focus styles for accessibility */
a:focus-visible, button:focus-visible, .btn:focus-visible, .input:focus-visible, textarea:focus-visible{
  outline:none; box-shadow: 0 0 0 6px var(--ring); border-color: var(--accent)
}

/* Subtle gradient borders for cards */
.card.gradient-border{
  position:relative; background:
    linear-gradient(#fff,#fff) padding-box,
    linear-gradient(135deg, rgba(14,165,233,.15), rgba(56,189,248,.15)) border-box;
  border:1px solid transparent;
}


/* Robust reveal: default visible; only hide during .reveal-init */
[data-reveal]{will-change: transform, opacity; transition: opacity .6s ease, transform .6s ease}
.reveal-init [data-reveal]{opacity:0; transform: translateY(12px)}
.reveal-init [data-reveal].in{opacity:1; transform:none}
@media (prefers-reduced-motion: reduce){
  [data-reveal]{transition:none !important}
  .reveal-init [data-reveal]{opacity:1; transform:none}
}

/* === Projects: card cover containment === */
img{max-width:100%; height:auto}
.card .cover{aspect-ratio:16/9; border-radius:16px; overflow:hidden; background:#eaf2fb}
.card .cover img{width:100%; height:100%; object-fit:cover; display:block}


/* === Language switcher (flags) === */
.lang-switch{display:flex; align-items:center; gap:10px; margin-left:12px}
.lang-switch.mobile{padding:12px 16px; border-top:1px solid rgba(0,0,0,.06)}
.flag{display:inline-grid; place-items:center; width:34px; height:24px; border-radius:6px; overflow:hidden; border:1px solid rgba(0,0,0,.12); background:#fff; box-shadow:0 2px 8px rgba(0,0,0,.06)}
.flag:hover{transform:translateY(-1px); box-shadow:0 10px 20px rgba(0,0,0,.12)}
.flag svg{width:100%; height:100%; display:block}


/* === Page transitions === */
@keyframes pageFadeIn { from { opacity: 0 } to { opacity: 1 } }
body.page-enter { animation: pageFadeIn .42s ease both; }
body.page-leave { opacity: 0; transition: opacity .32s ease; }
@media (prefers-reduced-motion: reduce){
  body.page-enter, body.page-leave { animation: none; transition: none; opacity: 1; }
}


/* === Patch3: Experience layout redesign (scoped) === */
.page-experience .page-hero{ margin-bottom: 28px; }
.page-experience .experience-timeline{
  position: relative;
  display: grid;
  gap: 24px;
  padding: 12px 0;
  background:
    radial-gradient(circle at 20% 10%, rgba(14,165,233,.10) 0, rgba(14,165,233,0) 60%),
    radial-gradient(circle at 80% 40%, rgba(14,165,233,.10) 0, rgba(14,165,233,0) 60%);
  border-radius: 16px;
}
.page-experience .t-item{
  position: relative;
  border: 1px solid rgba(0,0,0,.06);
  background: #fff;
  border-radius: 16px;
  padding: 18px 18px 16px 18px;
  box-shadow: var(--shadow);
}
.page-experience .t-item::before{
  content:'';
  position:absolute;
  left:-10px; top:18px;
  width:12px; height:12px;
  background: var(--accent);
  border-radius:999px;
  box-shadow: 0 0 0 4px rgba(14,165,233,.15);
}
/* Serpentin en pointillés derrière les cartes (style snake) */
.page-experience .experience-timeline::after{
  content:'';
  position:absolute;
  top:0; bottom:0; left:22px;
  width: 4px;
  background:
    linear-gradient(#e5f3fb 0 0) left/100% 10px repeat-y,
    linear-gradient(transparent 0 0) left/100% 20px repeat-y;
  opacity:.9;
  mask:
    radial-gradient(10px 10px at 0 10px, #000 98%, transparent) top left,
    radial-gradient(10px 10px at 0 30px, #000 98%, transparent) top left;
  mask-size: 100% 40px;
}
@media (min-width: 900px){
  .page-experience .experience-timeline{
    grid-template-columns: 1fr 1fr;
    gap: 26px 26px;
  }
  .page-experience .t-item{ padding-left: 22px; }
  .page-experience .experience-timeline::after{ left: calc(50% - 2px); }
}
/* Typo & spacing */
.page-experience .t-date{ font-weight:600; color: var(--muted); margin-bottom: 6px; }
.page-experience .t-body h3{ margin: 4px 0 8px 0; }
.page-experience .t-body p{ margin: 0 0 10px 0; }
.page-experience .t-body .list{ margin-left: 0; }
.page-experience .t-body .list li{ margin: 6px 0; }
.page-experience .block.cta .cta-box{
  display:flex; justify-content:space-between; align-items:center; gap:20px;
  border-radius: 16px; border:1px solid rgba(0,0,0,.06); background:#fff; padding:18px 22px;
}
@media (max-width: 720px){
  .page-experience .block.cta .cta-box{ flex-direction:column; align-items:flex-start; }
}

/* === Consolidated Mobile Patch v2: flags in burger + centered + contact label + layering + emoji support === */
@media (max-width: 980px){
  /* Hide header flags on mobile; show inside burger */
  header .lang-switch{ display:none !important; position:static !important; }

  .mobile-menu .lang-switch{
    display:flex !important; position:static !important;
    gap:12px; padding:10px 4px 12px 4px; border-bottom:1px solid rgba(0,0,0,.06); margin-bottom:10px;
  }
  .mobile-menu .lang-switch .flag{
    display:inline-flex !important; align-items:center !important; justify-content:center !important;
    width:32px; height:32px; border-radius:999px; background:#fff; box-shadow:0 4px 12px rgba(0,0,0,.08);
    padding:0 !important; line-height:0 !important; box-sizing:border-box; vertical-align:middle;
  }
  .mobile-menu .lang-switch .flag img,
  .mobile-menu .lang-switch .flag svg{
    width:20px; height:20px; display:block; margin:0;
  }
  /* Emoji fallback in case we inject spans instead of images */
  .mobile-menu .lang-switch .flag span{ display:block; font-size:18px; line-height:1; }

  /* Layering */
  .burger{ position:relative; z-index:10001; }
  body.menu-open .mobile-menu{ z-index:10000; }

  /* Contact button label visible */
  .mobile-menu .btn, .mobile-menu a.btn{
    color:#fff !important; -webkit-text-fill-color:#fff !important; text-indent:0 !important;
    font-size:16px !important; line-height:1.2 !important; text-shadow:none !important; mix-blend-mode:normal !important;
    border:1px solid rgba(0,0,0,.08); background:var(--accent,#0ea5e9) !important;
  }
  .mobile-menu .btn::before, .mobile-menu .btn::after,
  .mobile-menu a.btn::before, .mobile-menu a.btn::after{ content:none !important; }
}

