:root {
    --blue: #2B7FB8;
    --blue-deep: #0F3A5F;
    --blue-ink: #08233B;
    --green: #6FBE5C;
    --green-deep: #4E9A3D;
    --paper: #FFFFFF;
    --bone: #F4F5F7;
    --line: #E5E7EB;
    --ink: #0B1726;
    --mute: #5B6776;
    --soft: #8A95A4;
    --font: 'Hanken Grotesk', system-ui, sans-serif;
    --mono: 'JetBrains Mono', ui-monospace, monospace;
    --container: min(1280px, 92vw);
    --ease: cubic-bezier(.2,.7,.2,1);
  }
  *,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
  html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body {
    font-family:var(--font); color:var(--ink); background:var(--paper);
    font-feature-settings:"ss01","cv11"; -webkit-font-smoothing:antialiased;
    line-height:1.5; overflow-x:hidden;
  }
  img { display:block; max-width:100%; }
  a { color:inherit; text-decoration:none; }
  button { font-family:inherit; cursor:pointer; }
  .mono { font-family:var(--mono); }
  .container { max-width:var(--container); margin:0 auto; }
  .eyebrow {
    font-family:var(--mono); font-size:11px; font-weight:500;
    letter-spacing:0.16em; text-transform:uppercase; color:var(--green-deep);
    display:inline-flex; align-items:center; gap:10px;
  }
  .eyebrow::before { content:""; width:24px; height:1px; background:currentColor; }

  /* ================ TOP UTILITY BAR ================ */
  .topbar {
    background:var(--blue-ink); color:#cfd6e0;
    font-family:var(--mono); font-size:11.5px; letter-spacing:0.04em;
    padding:8px clamp(16px,3vw,32px);
    display:flex; justify-content:space-between; align-items:center; gap:16px;
  }
  .topbar-left { display:flex; gap:24px; }
  .topbar-left span { display:inline-flex; align-items:center; gap:8px; }
  .topbar-left svg { width:11px; height:11px; opacity:.7; }
  .topbar-right { display:flex; gap:18px; opacity:.7; }
  @media (max-width:720px) { .topbar-right { display:none; } .topbar-left { gap:14px; font-size:10.5px; } }

  /* ================ NAV ================ */
  nav.main {
    position:sticky; top:0; z-index:50;
    background:rgba(255,255,255,.96); backdrop-filter:blur(12px);
    border-bottom:1px solid var(--line);
    padding:14px clamp(16px,3vw,32px);
    display:flex; align-items:center; justify-content:space-between;
  }
  .nav-logo img { height:38px; width:auto; }
  .nav-links { display:flex; gap:34px; align-items:center; }
  .nav-links a {
    font-size:13.5px; font-weight:500; color:var(--ink);
    position:relative; padding:6px 0; transition:color .2s;
  }
  .nav-links a::after {
    content:""; position:absolute; bottom:0; left:0; right:0; height:2px;
    background:var(--green); transform:scaleX(0); transform-origin:left;
    transition:transform .3s var(--ease);
  }
  .nav-links a:hover { color:var(--blue); }
  .nav-links a:hover::after { transform:scaleX(1); }
  .nav-cta {
    background:var(--ink); color:#fff; padding:10px 20px;
    font-size:13px; font-weight:500; transition:background .2s;
    display:inline-flex; align-items:center; gap:8px;
  }
  .nav-cta:hover { background:var(--blue); }
  .nav-cta svg { width:12px; height:12px; }
  .nav-hamburger {
    display:none; width:42px; height:42px; border:1px solid var(--line);
    background:#fff; align-items:center; justify-content:center;
  }
  .nav-hamburger span { display:block; width:18px; height:2px; background:var(--ink); position:relative; }
  .nav-hamburger span::before, .nav-hamburger span::after {
    content:""; position:absolute; left:0; width:18px; height:2px; background:var(--ink);
  }
  .nav-hamburger span::before { top:-6px; }
  .nav-hamburger span::after { top:6px; }
  @media (max-width:900px) {
    .nav-links, .nav-cta { display:none; }
    .nav-hamburger { display:flex; }
  }
  .mobile-menu {
    position:fixed; inset:0; background:var(--blue-ink); color:#fff;
    z-index:100; transform:translateY(-100%); transition:transform .4s var(--ease);
    display:flex; flex-direction:column;
  }
  .mobile-menu.open { transform:translateY(0); }
  .mobile-menu-top {
    padding:20px clamp(16px,4vw,32px);
    display:flex; justify-content:space-between; align-items:center;
    border-bottom:1px solid rgba(255,255,255,.1);
  }
  .mobile-menu-top img { height:32px; filter:brightness(0) invert(1); }
  .mobile-close { width:42px; height:42px; background:none; border:1px solid rgba(255,255,255,.2); color:#fff; font-size:20px; }
  .mobile-menu nav {
    flex:1; padding:32px clamp(16px,4vw,32px); display:flex; flex-direction:column; gap:4px;
  }
  .mobile-menu nav a {
    font-size:28px; font-weight:600; padding:14px 0;
    border-bottom:1px solid rgba(255,255,255,.08); color:#fff;
    display:flex; justify-content:space-between; align-items:center;
  }
  .mobile-menu nav a span { font-family:var(--mono); font-size:11px; opacity:.5; }

  /* ================ HERO ================ */
  .hero {
    position:relative; min-height:760px; height:100vh; max-height:880px;
    color:#fff; overflow:hidden;
    display:flex; align-items:flex-end;
  }
  .hero-bg {
    position:absolute; inset:0; z-index:0;
  }
  .hero-bg .slide {
    position:absolute; inset:0; opacity:0;
    transition:opacity 1.4s ease;
  }
  .hero-bg .slide.active { opacity:1; }
  .hero-bg img { width:100%; height:100%; object-fit:cover; }
  .hero-bg::after {
    content:""; position:absolute; inset:0; z-index:2;
    background:linear-gradient(180deg, rgba(8,35,59,.55) 0%, rgba(8,35,59,.35) 40%, rgba(8,35,59,.85) 100%);
    pointer-events:none;
  }
  .hero-dots {
    position:absolute; bottom:24px; right:clamp(16px,3vw,32px); z-index:3;
    display:flex; gap:8px;
  }
  .hero-dot {
    width:24px; height:3px; background:rgba(255,255,255,.3);
    cursor:pointer; transition:background .25s, width .35s var(--ease);
    border:none; padding:0;
  }
  .hero-dot.active { background:var(--green); width:36px; }
  .hero-caption {
    position:absolute; bottom:24px; left:clamp(16px,3vw,32px); z-index:3;
    font-family:var(--mono); font-size:10.5px; letter-spacing:0.14em;
    text-transform:uppercase; color:rgba(255,255,255,.65);
    display:flex; align-items:center; gap:10px;
  }
  .hero-caption b { font-family:var(--font); font-size:12px; color:#fff; letter-spacing:0; text-transform:none; font-weight:500; }
  @media (max-width:640px) { .hero-caption { display:none; } }
  .hero-inner {
    position:relative; z-index:1; width:100%;
    padding:0 clamp(16px,3vw,32px) 60px;
  }
  .hero-grid {
    display:grid; grid-template-columns:1fr auto; gap:48px; align-items:end;
    max-width:var(--container); margin:0 auto;
  }
  .hero-meta {
    font-family:var(--mono); font-size:11.5px; letter-spacing:0.16em;
    text-transform:uppercase; color:rgba(255,255,255,.65);
    display:flex; gap:12px; align-items:center; margin-bottom:24px;
  }
  .hero-meta-dot { width:6px; height:6px; background:var(--green); border-radius:50%; box-shadow:0 0 0 4px rgba(111,190,92,.2); }
  .hero h1 {
    font-size:clamp(40px,7vw,96px); font-weight:700; line-height:.96;
    letter-spacing:-0.025em; margin-bottom:28px; max-width:14ch;
  }
  .hero h1 em { font-style:normal; color:var(--green); }
  .hero-lede {
    max-width:520px; font-size:clamp(15px,1.4vw,17px); font-weight:300;
    color:rgba(255,255,255,.78); line-height:1.6; margin-bottom:36px;
  }
  .hero-cta-row { display:flex; gap:12px; flex-wrap:wrap; }
  .btn {
    display:inline-flex; align-items:center; gap:10px;
    padding:16px 26px; font-size:13.5px; font-weight:500;
    letter-spacing:0.02em; transition:all .25s var(--ease);
    border:1px solid transparent;
  }
  .btn-primary { background:var(--green); color:var(--blue-ink); }
  .btn-primary:hover { background:#fff; transform:translateY(-2px); }
  .btn-ghost { background:transparent; color:#fff; border-color:rgba(255,255,255,.4); }
  .btn-ghost:hover { background:rgba(255,255,255,.08); border-color:#fff; }
  .btn-dark { background:var(--ink); color:#fff; }
  .btn-dark:hover { background:var(--blue); }
  .btn svg { width:13px; height:13px; }
  .hero-side {
    border-left:1px solid rgba(255,255,255,.15);
    padding-left:32px; font-family:var(--mono); font-size:11px;
    letter-spacing:0.1em; text-transform:uppercase; color:rgba(255,255,255,.65);
    display:flex; flex-direction:column; gap:18px;
  }
  .hero-side-row { display:flex; flex-direction:column; gap:4px; }
  .hero-side-row b { font-family:var(--font); font-size:18px; font-weight:600; color:#fff; letter-spacing:0; text-transform:none; }
  .hero-scroll {
    position:absolute; bottom:24px; left:50%; transform:translateX(-50%);
    z-index:2; display:flex; flex-direction:column; align-items:center; gap:10px;
    font-family:var(--mono); font-size:10px; color:rgba(255,255,255,.5);
    letter-spacing:0.15em; text-transform:uppercase;
  }
  .hero-scroll::before {
    content:""; width:1px; height:32px;
    background:linear-gradient(to bottom, rgba(255,255,255,.4), transparent);
    animation:scrollPulse 2s ease-in-out infinite;
  }
  @keyframes scrollPulse { 0%,100%{opacity:.4;height:32px}50%{opacity:1;height:44px} }
  @media (max-width:900px) {
    .hero-grid { grid-template-columns:1fr; gap:24px; }
    .hero-side { border-left:none; border-top:1px solid rgba(255,255,255,.15); padding-left:0; padding-top:24px; flex-direction:row; flex-wrap:wrap; gap:32px; }
    .hero-scroll { display:none; }
  }

  /* ================ STATS ================ */
  .stats {
    background:var(--blue-ink); color:#fff;
    padding:0 clamp(16px,3vw,32px);
  }
  .stats-inner {
    max-width:var(--container); margin:0 auto;
    display:grid; grid-template-columns:repeat(4, 1fr);
    border-left:1px solid rgba(255,255,255,.1);
  }
  .stat {
    padding:48px 32px; border-right:1px solid rgba(255,255,255,.1);
    display:flex; flex-direction:column; gap:8px;
  }
  .stat-num {
    font-size:clamp(40px,4.5vw,64px); font-weight:600; line-height:1;
    letter-spacing:-0.02em; color:#fff;
    display:flex; align-items:baseline; gap:6px;
  }
  .stat-num em { font-style:normal; color:var(--green); }
  .stat-label {
    font-family:var(--mono); font-size:11px; letter-spacing:0.14em;
    text-transform:uppercase; color:rgba(255,255,255,.55);
  }
  @media (max-width:720px) {
    .stats-inner { grid-template-columns:repeat(2,1fr); }
    .stat:nth-child(-n+2) { border-bottom:1px solid rgba(255,255,255,.1); }
    .stat { padding:32px 24px; }
  }

  /* ================ ABOUT ================ */
  .about { padding:clamp(80px,12vw,140px) clamp(16px,3vw,32px); background:var(--paper); }
  .about-grid {
    max-width:var(--container); margin:0 auto;
    display:grid; grid-template-columns:5fr 6fr; gap:80px; align-items:center;
  }
  .about-visual { position:relative; }
  .about-visual img { width:100%; aspect-ratio:4/5; object-fit:cover; }
  .about-visual-badge {
    position:absolute; top:24px; left:24px;
    background:rgba(8,35,59,.85); backdrop-filter:blur(8px);
    padding:14px 18px; color:#fff;
    font-family:var(--mono); font-size:11px;
    letter-spacing:0.12em; text-transform:uppercase;
    display:flex; flex-direction:column; gap:4px;
  }
  .about-visual-badge b { font-family:var(--font); font-size:22px; letter-spacing:0; text-transform:none; color:var(--green); }
  .about-meta {
    position:absolute; bottom:24px; right:24px; left:24px;
    background:#fff; padding:18px 22px;
    display:grid; grid-template-columns:repeat(3,1fr); gap:16px;
    border:1px solid var(--line);
  }
  .about-meta-cell { font-family:var(--mono); font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--soft); }
  .about-meta-cell b { display:block; font-family:var(--font); font-size:18px; font-weight:600; color:var(--ink); letter-spacing:0; text-transform:none; margin-top:4px; }
  .about-title {
    font-size:clamp(32px,4vw,52px); font-weight:700; line-height:1.05;
    letter-spacing:-0.02em; margin:16px 0 24px; color:var(--ink);
  }
  .about-title em { font-style:normal; color:var(--blue); }
  .about-text p {
    font-size:16px; color:var(--mute); line-height:1.7; margin-bottom:18px; max-width:50ch;
  }
  .about-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:32px; }
  .about-tag {
    padding:8px 14px; border:1px solid var(--line);
    font-family:var(--mono); font-size:11px; letter-spacing:0.04em;
    color:var(--mute); background:var(--bone); transition:all .2s;
  }
  .about-tag:hover { color:var(--blue); border-color:var(--blue); background:#fff; }
  @media (max-width:900px) { .about-grid { grid-template-columns:1fr; gap:48px; } .about-meta { position:relative; inset:auto; margin-top:-1px; } }

  /* ================ EXPERTISE ================ */
  .expertise {
    background:var(--blue-ink); color:#fff;
    padding:clamp(80px,12vw,140px) clamp(16px,3vw,32px);
    position:relative; overflow:hidden;
  }
  .expertise::before {
    content:""; position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
    background-size:80px 80px;
  }
  .expertise-inner { position:relative; max-width:var(--container); margin:0 auto; }
  .expertise-head {
    display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:end;
    margin-bottom:64px;
  }
  .expertise-head .eyebrow { color:var(--green); }
  .expertise-head h2 {
    font-size:clamp(34px,5vw,68px); font-weight:700; line-height:1.02;
    letter-spacing:-0.025em; margin-top:18px;
  }
  .expertise-head h2 em { font-style:normal; color:var(--green); }
  .expertise-head p {
    font-size:16px; color:rgba(255,255,255,.65); line-height:1.7; max-width:46ch;
  }
  @media (max-width:760px) { .expertise-head { grid-template-columns:1fr; gap:24px; } }
  .expertise-grid {
    display:grid; grid-template-columns:repeat(3, 1fr); gap:1px;
    background:rgba(255,255,255,.08);
    border:1px solid rgba(255,255,255,.08);
  }
  .expertise-card {
    background:var(--blue-ink); padding:40px 32px;
    transition:background .25s; position:relative;
    display:flex; flex-direction:column; gap:16px;
    min-height:280px;
  }
  .expertise-card:hover { background:#0a2c4a; }
  .expertise-card .num {
    font-family:var(--mono); font-size:11px; color:var(--green);
    letter-spacing:0.15em;
  }
  .expertise-card h3 {
    font-size:22px; font-weight:600; line-height:1.2; letter-spacing:-0.01em;
  }
  .expertise-card p {
    font-size:14px; color:rgba(255,255,255,.6); line-height:1.65; flex:1;
  }
  .expertise-card-arrow {
    width:36px; height:36px; border:1px solid rgba(255,255,255,.15);
    display:flex; align-items:center; justify-content:center;
    transition:all .25s var(--ease); align-self:flex-start;
  }
  .expertise-card-arrow svg { width:14px; height:14px; color:#fff; transition:transform .25s; }
  .expertise-card:hover .expertise-card-arrow { background:var(--green); border-color:var(--green); }
  .expertise-card:hover .expertise-card-arrow svg { transform:translate(2px,-2px); color:var(--blue-ink); }
  @media (max-width:900px) { .expertise-grid { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:560px) { .expertise-grid { grid-template-columns:1fr; } }

  /* ================ PROJECTS ================ */
  .projects { padding:clamp(80px,12vw,140px) clamp(16px,3vw,32px); background:var(--bone); }
  .projects-head {
    max-width:var(--container); margin:0 auto 48px;
    display:flex; justify-content:space-between; align-items:flex-end; gap:32px; flex-wrap:wrap;
  }
  .projects-head h2 {
    font-size:clamp(34px,5vw,64px); font-weight:700; line-height:1;
    letter-spacing:-0.025em; margin-top:18px; color:var(--ink);
  }
  .projects-head p { font-size:16px; color:var(--mute); line-height:1.65; max-width:42ch; }
  .projects-toolbar {
    max-width:var(--container); margin:0 auto 32px;
    display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
  }
  .filter-pills { display:flex; gap:8px; flex-wrap:wrap; }
  .pill {
    padding:9px 18px; border:1px solid var(--line); background:#fff;
    font-size:13px; font-weight:500; color:var(--ink);
    transition:all .2s; display:inline-flex; align-items:center; gap:8px;
  }
  .pill .count { font-family:var(--mono); font-size:10.5px; color:var(--soft); }
  .pill:hover { border-color:var(--ink); }
  .pill.active { background:var(--ink); color:#fff; border-color:var(--ink); }
  .pill.active .count { color:var(--green); }
  .search-wrap {
    position:relative; display:flex; align-items:center; min-width:240px;
  }
  .search-wrap svg { position:absolute; left:14px; width:14px; height:14px; color:var(--soft); pointer-events:none; }
  .search-wrap input {
    width:100%; padding:10px 14px 10px 38px; border:1px solid var(--line);
    background:#fff; font-family:var(--font); font-size:13.5px; color:var(--ink);
    outline:none; transition:border-color .2s;
  }
  .search-wrap input:focus { border-color:var(--blue); }
  .projects-grid {
    max-width:var(--container); margin:0 auto;
    display:grid; grid-template-columns:repeat(3, 1fr); gap:24px;
  }
  @media (max-width:1000px) { .projects-grid { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:640px) { .projects-grid { grid-template-columns:1fr; } }
  .project-card {
    background:#fff; border:1px solid var(--line);
    cursor:pointer; transition:all .3s var(--ease);
    display:flex; flex-direction:column;
  }
  .project-card:hover { transform:translateY(-4px); box-shadow:0 24px 60px -20px rgba(8,35,59,.18); border-color:var(--blue); }
  .project-img-wrap { position:relative; aspect-ratio:5/3; overflow:hidden; background:#0e2640; }
  .project-img-wrap img { width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
  .project-card:hover .project-img-wrap img { transform:scale(1.05); }
  .project-tag-overlay {
    position:absolute; top:12px; left:12px; display:flex; gap:6px;
  }
  .project-tag-pill {
    background:rgba(255,255,255,.92); backdrop-filter:blur(8px);
    padding:5px 10px; font-family:var(--mono); font-size:10.5px;
    color:var(--blue-ink); letter-spacing:0.05em; font-weight:500;
  }
  .project-status {
    position:absolute; bottom:12px; right:12px;
    background:var(--ink); color:#fff; padding:5px 10px;
    font-family:var(--mono); font-size:10.5px; letter-spacing:0.06em;
    display:inline-flex; align-items:center; gap:6px;
  }
  .project-status .dot { width:6px; height:6px; border-radius:50%; background:var(--green); }
  .project-status.done .dot { background:#9ba9b8; }
  .project-body { padding:24px; flex:1; display:flex; flex-direction:column; gap:10px; }
  .project-client { font-family:var(--mono); font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--green-deep); }
  .project-name { font-size:18px; font-weight:600; color:var(--ink); line-height:1.3; letter-spacing:-0.01em; }
  .project-desc { font-size:13.5px; color:var(--mute); line-height:1.6; flex:1; }
  .project-foot { display:flex; justify-content:space-between; align-items:center; padding-top:14px; border-top:1px solid var(--line); }
  .project-foot-meta { font-family:var(--mono); font-size:10.5px; color:var(--soft); letter-spacing:0.05em; }
  .project-foot-link { font-size:12.5px; font-weight:500; color:var(--blue); display:inline-flex; align-items:center; gap:5px; }
  .project-foot-link svg { width:11px; height:11px; }

  /* MODAL */
  .modal-overlay {
    position:fixed; inset:0; background:rgba(8,35,59,.7); backdrop-filter:blur(8px);
    z-index:200; display:flex; align-items:center; justify-content:center;
    padding:20px; opacity:0; pointer-events:none; transition:opacity .3s;
  }
  .modal-overlay.open { opacity:1; pointer-events:auto; }
  .modal {
    background:#fff; max-width:980px; width:100%; max-height:90vh;
    overflow:auto; display:grid; grid-template-columns:6fr 5fr;
    transform:translateY(20px); transition:transform .4s var(--ease);
  }
  .modal-overlay.open .modal { transform:translateY(0); }
  .modal-img { aspect-ratio:auto; height:100%; min-height:300px; background:#0e2640; }
  .modal-img img { width:100%; height:100%; object-fit:cover; }
  .modal-body { padding:36px 36px 36px; display:flex; flex-direction:column; gap:18px; }
  .modal-client { font-family:var(--mono); font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--green-deep); }
  .modal-title { font-size:26px; font-weight:700; color:var(--ink); line-height:1.2; letter-spacing:-0.02em; }
  .modal-desc { font-size:14.5px; color:var(--mute); line-height:1.65; }
  .modal-table { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); margin-top:8px; }
  .modal-table-cell { background:#fff; padding:12px 14px; font-family:var(--mono); font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--soft); }
  .modal-table-cell b { display:block; font-family:var(--font); font-size:14.5px; font-weight:600; color:var(--ink); letter-spacing:0; text-transform:none; margin-top:4px; }
  .modal-close {
    position:absolute; top:16px; right:16px; width:38px; height:38px;
    background:#fff; border:1px solid var(--line); font-size:20px; color:var(--ink);
    display:flex; align-items:center; justify-content:center; z-index:5;
  }
  .modal-close:hover { background:var(--ink); color:#fff; border-color:var(--ink); }
  @media (max-width:760px) {
    .modal { grid-template-columns:1fr; max-height:94vh; }
    .modal-img { min-height:220px; aspect-ratio:16/10; }
    .modal-body { padding:24px; }
  }

  /* ================ MOYENS ================ */
  .moyens { padding:clamp(80px,12vw,140px) clamp(16px,3vw,32px); background:var(--paper); }
  .moyens-head { max-width:var(--container); margin:0 auto 56px; }
  .moyens-head h2 {
    font-size:clamp(34px,5vw,64px); font-weight:700; line-height:1.02;
    letter-spacing:-0.025em; margin-top:18px; color:var(--ink);
  }
  .moyens-head p { font-size:16px; color:var(--mute); line-height:1.65; max-width:50ch; margin-top:16px; }
  .moyens-grid {
    max-width:var(--container); margin:0 auto;
    display:grid; grid-template-columns:repeat(5, 1fr); gap:16px;
  }
  .moyen {
    border:1px solid var(--line); background:#fff;
    padding:24px; transition:all .3s var(--ease);
    display:flex; flex-direction:column; gap:14px;
  }
  .moyen:hover { border-color:var(--blue); transform:translateY(-2px); }
  .moyen-icon {
    width:44px; height:44px; background:var(--bone);
    display:flex; align-items:center; justify-content:center;
    color:var(--blue); transition:all .3s;
  }
  .moyen:hover .moyen-icon { background:var(--blue); color:#fff; }
  .moyen-icon svg { width:22px; height:22px; }
  .moyen-num { font-family:var(--mono); font-size:10.5px; color:var(--soft); letter-spacing:0.12em; }
  .moyen-title { font-size:15px; font-weight:600; color:var(--ink); letter-spacing:-0.005em; }
  .moyen-list { list-style:none; display:flex; flex-direction:column; gap:6px; }
  .moyen-list li {
    font-size:12.5px; color:var(--mute); line-height:1.45;
    padding-left:14px; position:relative;
  }
  .moyen-list li::before {
    content:""; position:absolute; left:0; top:8px; width:6px; height:1px; background:var(--green);
  }
  @media (max-width:1000px) { .moyens-grid { grid-template-columns:repeat(3,1fr); } }
  @media (max-width:640px) { .moyens-grid { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:400px) { .moyens-grid { grid-template-columns:1fr; } }

  /* ================ PARTNERS MARQUEE ================ */
  .partners { background:var(--bone); padding:64px 0; overflow:hidden; position:relative; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
  .partners-head {
    max-width:var(--container); margin:0 auto 36px;
    padding:0 clamp(16px,3vw,32px);
    display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px;
  }
  .partners-head h3 { font-size:18px; font-weight:600; color:var(--ink); letter-spacing:-0.01em; }
  .marquee {
    position:relative; overflow:hidden;
    mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  }
  .marquee-track { display:flex; gap:64px; width:max-content; animation:marquee 40s linear infinite; }
  @keyframes marquee { to { transform:translateX(-50%); } }
  .partner-item {
    font-size:22px; font-weight:600; color:var(--soft); letter-spacing:-0.01em;
    white-space:nowrap; font-family:var(--font);
    display:inline-flex; align-items:center; gap:12px;
    transition:color .25s;
  }
  .partner-item::before { content:""; width:6px; height:6px; background:var(--green); }
  .partner-item:hover { color:var(--ink); }

  /* ================ MAP + CONTACT ================ */
  .contact { background:var(--blue-ink); color:#fff; padding:clamp(80px,12vw,140px) clamp(16px,3vw,32px); position:relative; overflow:hidden; }
  .contact-inner { max-width:var(--container); margin:0 auto; display:grid; grid-template-columns:6fr 5fr; gap:64px; }
  .contact-info h2 {
    font-size:clamp(34px,4.8vw,60px); font-weight:700; line-height:1.02;
    letter-spacing:-0.025em; margin:18px 0 24px;
  }
  .contact-info h2 em { font-style:normal; color:var(--green); }
  .contact-info > p { font-size:16px; color:rgba(255,255,255,.65); line-height:1.65; max-width:42ch; margin-bottom:36px; }
  .map-wrap {
    position:relative; border:1px solid rgba(255,255,255,.1);
    background:#061b30; aspect-ratio:5/4; overflow:hidden;
    margin-bottom:24px;
  }
  .map-grid {
    position:absolute; inset:0;
    background-image:
      linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
    background-size:32px 32px;
  }
  .map-svg { position:absolute; inset:0; width:100%; height:100%; }
  .map-pin {
    position:absolute; transform:translate(-50%,-50%);
    display:flex; flex-direction:column; align-items:center; gap:6px; z-index:3;
    cursor:pointer; transition:transform .2s;
  }
  .map-pin:hover { transform:translate(-50%,-50%) scale(1.05); }
  .map-pin-dot {
    width:14px; height:14px; background:var(--green); border:2px solid #fff;
    border-radius:50%; box-shadow:0 0 0 6px rgba(111,190,92,.2);
    animation:pinPulse 2.5s ease-in-out infinite;
  }
  @keyframes pinPulse { 0%,100%{box-shadow:0 0 0 6px rgba(111,190,92,.2);}50%{box-shadow:0 0 0 14px rgba(111,190,92,.05);} }
  .map-pin-label {
    background:#fff; color:var(--blue-ink);
    padding:5px 10px; font-family:var(--mono);
    font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase;
    font-weight:500; white-space:nowrap;
  }
  .map-pin-label b { font-family:var(--font); font-size:13px; font-weight:600; letter-spacing:0; text-transform:none; margin-right:4px; }
  .map-legend {
    position:absolute; bottom:12px; left:12px;
    background:rgba(8,35,59,.85); padding:10px 14px;
    font-family:var(--mono); font-size:10px; color:rgba(255,255,255,.6);
    letter-spacing:0.1em; text-transform:uppercase;
    display:flex; align-items:center; gap:8px;
  }
  .map-legend::before { content:""; width:8px; height:8px; background:var(--green); border-radius:50%; }
  .contact-cells {
    display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:rgba(255,255,255,.1);
    border:1px solid rgba(255,255,255,.1);
  }
  .contact-cell { background:var(--blue-ink); padding:16px; display:flex; flex-direction:column; gap:6px; }
  .contact-cell-label { font-family:var(--mono); font-size:10px; letter-spacing:0.1em; text-transform:uppercase; color:var(--green); }
  .contact-cell-val { font-size:13px; color:rgba(255,255,255,.85); line-height:1.4; }
  .contact-form { background:#fff; color:var(--ink); padding:36px; display:flex; flex-direction:column; gap:14px; }
  .contact-form h3 { font-size:22px; font-weight:600; color:var(--ink); letter-spacing:-0.01em; margin-bottom:6px; }
  .contact-form .form-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  .contact-form label {
    display:flex; flex-direction:column; gap:6px;
    font-family:var(--mono); font-size:10.5px; letter-spacing:0.1em;
    text-transform:uppercase; color:var(--soft);
  }
  .contact-form input, .contact-form textarea, .contact-form select {
    font-family:var(--font); font-size:14px; padding:12px 14px;
    border:1px solid var(--line); color:var(--ink); background:#fff;
    outline:none; transition:border-color .2s; letter-spacing:0;
    text-transform:none;
  }
  .contact-form textarea { min-height:110px; resize:vertical; }
  .contact-form input:focus, .contact-form textarea:focus, .contact-form select:focus { border-color:var(--blue); }
  .contact-form .submit { background:var(--ink); color:#fff; padding:14px 22px; font-size:13.5px; font-weight:500; border:none; transition:background .2s; display:inline-flex; gap:10px; align-items:center; justify-content:center; }
  .contact-form .submit:hover { background:var(--blue); }
  .form-feedback {
    background:var(--green); color:var(--blue-ink);
    padding:14px 16px; font-size:13.5px; font-weight:500;
    display:none; align-items:center; gap:10px;
  }
  .form-feedback.show { display:flex; }
  @media (max-width:1000px) { .contact-inner { grid-template-columns:1fr; gap:48px; } }
  @media (max-width:560px) { .contact-cells { grid-template-columns:1fr; } .contact-form .form-row { grid-template-columns:1fr; } }

  /* ================ FOOTER ================ */
  footer {
    background:#04162a; color:#7c8a98; padding:60px clamp(16px,3vw,32px) 32px;
  }
  .footer-inner { max-width:var(--container); margin:0 auto; }
  .footer-top {
    display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px;
    padding-bottom:48px; border-bottom:1px solid rgba(255,255,255,.06);
  }
  .footer-brand img { height:38px; filter:brightness(0) invert(1) opacity(.9); margin-bottom:18px; }
  .footer-brand p { font-size:13.5px; line-height:1.6; color:#7c8a98; max-width:32ch; }
  .footer-col h4 { color:#fff; font-size:13px; font-weight:600; letter-spacing:0.02em; margin-bottom:18px; }
  .footer-col ul { list-style:none; display:flex; flex-direction:column; gap:10px; }
  .footer-col ul li { font-size:13.5px; }
  .footer-col ul a { color:#7c8a98; transition:color .2s; }
  .footer-col ul a:hover { color:var(--green); }
  .footer-bottom {
    padding-top:24px; display:flex; justify-content:space-between; align-items:center;
    font-family:var(--mono); font-size:11px; color:#5b6776; letter-spacing:0.06em; flex-wrap:wrap; gap:12px;
  }
  @media (max-width:840px) { .footer-top { grid-template-columns:1fr 1fr; gap:32px; } }
  @media (max-width:520px) { .footer-top { grid-template-columns:1fr; } }