:root {
      --bg: #0b0f19;
      --panel: #0f172a;
      --card: #111c35;
      --text: #e5e7eb;
      --muted: #a7b0c0;
      --brand: #7c3aed;
      /* violet */
      --brand2: #22c55e;
      /* vert */
      --border: rgba(255, 255, 255, .08);
      --shadow: 0 10px 30px rgba(0, 0, 0, .35);
      --radius: 18px;
      --max: 1100px;
    }

    /* Light mode (via data-theme="light") */
    [data-theme="light"] {
      --bg: #f6f7fb;
      --panel: #ffffff;
      --card: #ffffff;
      --text: #0f172a;
      --muted: #475569;
      --border: rgba(15, 23, 42, .10);
      --shadow: 0 12px 35px rgba(2, 6, 23, .10);
    }

    * {
      box-sizing: border-box
    }

    html,
    body {
      height: 100%
    }

    body {
      margin: 0;
      font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
      background:
        radial-gradient(900px 600px at 10% 0%, rgba(124, 58, 237, .25), transparent 55%),
        radial-gradient(900px 600px at 90% 10%, rgba(34, 197, 94, .18), transparent 55%),
        var(--bg);
      color: var(--text);
      line-height: 1.5;
    }

    a {
      color: inherit
    }

    .wrap {
      max-width: var(--max);
      margin: 0 auto;
      padding: 26px 18px 70px
    }

    .topbar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      position: sticky;
      top: 0;
      z-index: 50;
      backdrop-filter: blur(10px);
      background: color-mix(in srgb, var(--bg) 78%, transparent);
      border-bottom: 1px solid var(--border);
      padding: 14px 5px;
      border-radius: 25px;
    }

    .brand {
      display: flex;
      align-items: center;
      gap: 10px;
      text-decoration: none;
    }

    .logo {
      width: 38px;
      height: 38px;
      border-radius: 12px;
      background: linear-gradient(135deg, var(--brand), color-mix(in srgb, var(--brand2) 65%, var(--brand)));
      box-shadow: var(--shadow);
      display: grid;
      place-items: center;
      font-weight: 800;
      color: white;
      letter-spacing: .5px;
    }

    .brand strong {
      font-size: 14px
    }

    .brand span {
      display: block;
      font-size: 12px;
      color: var(--muted)
    }

    nav {
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
      justify-content: flex-end;
    }

    .chip {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      padding: 9px 12px;
      border: 1px solid var(--border);
      border-radius: 999px;
      background: color-mix(in srgb, var(--panel) 86%, transparent);
      text-decoration: none;
      font-size: 13px;
      color: var(--muted);
      transition: .18s ease;
      user-select: none;
    }

    .chip:hover {
      transform: translateY(-1px);
      color: var(--text);
      border-color: color-mix(in srgb, var(--brand) 55%, var(--border))
    }

    .btn {
      border: none;
      cursor: pointer;
      background: linear-gradient(135deg, var(--brand), color-mix(in srgb, var(--brand2) 65%, var(--brand)));
      color: white;
      padding: 10px 14px;
      border-radius: 999px;
      font-weight: 700;
      box-shadow: var(--shadow);
      transition: .18s ease;
      display: inline-flex;
      align-items: center;
      gap: 8px;
    }

    .btn:hover {
      transform: translateY(-1px)
    }

    .ghost {
      background: transparent;
      border: 1px solid var(--border);
      color: var(--text);
      box-shadow: none;
    }

    /* Hero */
    .hero {
      padding: 28px 0 18px;
      display: grid;
      grid-template-columns: 1.25fr .75fr;
      gap: 18px;
    }

    @media (max-width: 900px) {
      .hero {
        grid-template-columns: 1fr
      }

      nav {
        display: none
      }
    }

    .panel {
      background: color-mix(in srgb, var(--panel) 88%, transparent);
      border: 1px solid var(--border);
      border-radius: var(--radius);
      box-shadow: var(--shadow);
      padding: 22px;
    }

    h1 {
      margin: 0 0 10px;
      font-size: clamp(28px, 4vw, 44px);
      letter-spacing: -.02em;
      line-height: 1.1;
    }

    .subtitle {
      color: var(--muted);
      margin: 0 0 16px;
      font-size: 15px
    }

    .badges {
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
      margin: 14px 0 18px
    }

    .badge {
      border: 1px solid var(--border);
      background: color-mix(in srgb, var(--card) 80%, transparent);
      padding: 8px 10px;
      border-radius: 999px;
      font-size: 12px;
      color: var(--muted);
    }

    .cta {
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
      margin-top: 6px
    }

    .meta {
      display: grid;
      gap: 10px;
    }

    .row {
      display: flex;
      gap: 10px;
      align-items: center;
      justify-content: space-between;
      border: 1px dashed var(--border);
      border-radius: 14px;
      padding: 12px 12px;
      background: color-mix(in srgb, var(--card) 76%, transparent);
    }

    .row b {
      font-size: 13px
    }

    .row span {
      color: var(--muted);
      font-size: 13px
    }

    .row a {
      color: inherit;
      text-decoration: none
    }

    .row a:hover {
      text-decoration: underline
    }

    /* Sections */
    section {
      margin-top: 18px
    }

    .section-title {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      gap: 12px;
      margin: 0 0 10px;
    }

    .section-title h2 {
      margin: 0;
      font-size: 18px;
      letter-spacing: -.01em;
    }

    .section-title p {
      margin: 0;
      color: var(--muted);
      font-size: 13px
    }

    .grid {
      display: grid;
      grid-template-columns: repeat(12, 1fr);
      gap: 14px;
    }

    .col-6 {
      grid-column: span 6
    }

    .col-4 {
      grid-column: span 4
    }

    .col-8 {
      grid-column: span 8
    }

    .col-12 {
      grid-column: span 12
    }

    @media (max-width: 900px) {

      .col-6,
      .col-4,
      .col-8 {
        grid-column: span 12
      }
    }

    .card {
      background: color-mix(in srgb, var(--card) 85%, transparent);
      border: 1px solid var(--border);
      border-radius: var(--radius);
      padding: 18px;
      box-shadow: var(--shadow);
      transition: .18s ease;
    }

    .card:hover {
      transform: translateY(-1px);
      border-color: color-mix(in srgb, var(--brand) 40%, var(--border))
    }

    .card h3 {
      margin: 0 0 6px;
      font-size: 15px
    }

    .card p {
      margin: 0;
      color: var(--muted);
      font-size: 13px
    }

    .tagline {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-top: 10px
    }

    .tag {
      font-size: 12px;
      padding: 6px 8px;
      border-radius: 999px;
      border: 1px solid var(--border);
      color: var(--muted);
    }

    .links {
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
      margin-top: 12px
    }

    .links a {
      font-size: 13px;
      color: var(--text);
      text-decoration: none;
      border: 1px solid var(--border);
      padding: 8px 10px;
      border-radius: 999px;
      background: color-mix(in srgb, var(--panel) 80%, transparent);
    }

    .links a:hover {
      border-color: color-mix(in srgb, var(--brand) 55%, var(--border))
    }

    .timeline {
      display: grid;
      gap: 12px;
    }

    .item {
      display: flex;
      gap: 12px;
      padding: 14px;
      border-radius: var(--radius);
      border: 1px solid var(--border);
      background: color-mix(in srgb, var(--panel) 82%, transparent);
    }

    .dot {
      width: 12px;
      height: 12px;
      border-radius: 999px;
      background: linear-gradient(135deg, var(--brand), var(--brand2));
      margin-top: 6px;
      flex: 0 0 auto;
      box-shadow: 0 0 0 5px color-mix(in srgb, var(--brand) 16%, transparent);
    }

    .item h4 {
      margin: 0;
      font-size: 14px
    }

    .item .when {
      color: var(--muted);
      font-size: 12px;
      margin-top: 2px
    }

    .item ul {
      margin: 8px 0 0;
      padding-left: 18px;
      color: var(--muted);
      font-size: 13px
    }

    .skills {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
    }

    .skill {
      padding: 10px 12px;
      border-radius: 14px;
      border: 1px solid var(--border);
      background: color-mix(in srgb, var(--panel) 82%, transparent);
      font-size: 13px;
      color: var(--muted);
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .skill i {
      width: 9px;
      height: 9px;
      border-radius: 999px;
      background: linear-gradient(135deg, var(--brand), var(--brand2));
      display: inline-block;
    }

    /* Contact */
    form {
      display: grid;
      gap: 10px
    }

    input,
    textarea {
      width: 100%;
      padding: 12px 12px;
      border-radius: 14px;
      border: 1px solid var(--border);
      background: color-mix(in srgb, var(--panel) 88%, transparent);
      color: var(--text);
      outline: none;
      font-size: 14px;
    }

    textarea {
      min-height: 120px;
      resize: vertical
    }

    input:focus,
    textarea:focus {
      border-color: color-mix(in srgb, var(--brand) 60%, var(--border));
      box-shadow: 0 0 0 4px color-mix(in srgb, var(--brand) 18%, transparent);
    }

    .footer {
      margin-top: 22px;
      color: var(--muted);
      font-size: 12px;
      display: flex;
      justify-content: space-between;
      gap: 10px;
      flex-wrap: wrap;
    }

    /* Print (CV papier) */
    @media print {

      .topbar,
      .cta,
      .links,
      .footer .right,
      #contact,
      #projects .section-title p {
        display: none !important;
      }

      body {
        background: white
      }

      .panel,
      .card {
        box-shadow: none;
        background: white
      }

      a {
        text-decoration: none
      }

      .wrap {
        padding: 0
      }

      .hero {
        grid-template-columns: 1fr
      }
    }