@font-face {
  font-family: "Atkinson Hyperlegible";
  src: url("fonts/AtkinsonHyperlegible-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Atkinson Hyperlegible";
  src: url("fonts/AtkinsonHyperlegible-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Jersey 10";
  src: url("fonts/Jersey10-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

    :root,
    :root[data-theme="light"] {
      color-scheme: light;
      --bg: #EEE5F2;
      --surface: #DED0E6;
      --surface-strong: #C9B0D5;
      --card: #F8F1FA;
      --card-ink: #26182F;
      --border: #B993C8;
      --border-strong: #7B4D8F;
      --accent: #6C347C;
      --accent2: #C85A94;
      --accent-soft: rgba(108, 52, 124, 0.16);
      --pink-soft: rgba(200, 90, 148, 0.08);
      --text: #20142A;
      --muted: #5C4966;
      --shadow: 7px 7px 0 rgba(75, 43, 88, 0.16);
      --shadow-strong: 10px 10px 0 rgba(75, 43, 88, 0.20);
      --warning-bg: #FFF1B7;
      --warning-border: #A77415;
      --warning-text: #4D3200;
      --cta-bg: #20142A;
      --cta-bg-hover: #6C347C;
      --cta-text: #FFFDF8;
      --font-display: "Jersey 10", "Arial Narrow", sans-serif;
      --font-body: "Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;
      --tile: 16px;
    }

    @media (prefers-color-scheme: dark) {
      :root:not([data-theme="light"]) {
        color-scheme: dark;
        --bg: #120A18;
        --surface: #21132D;
        --surface-strong: #342044;
        --card: #1B1024;
        --card-ink: #F9F0FF;
        --border: #7C5A8A;
        --border-strong: #C8A2C8;
        --accent: #C8A2C8;
        --accent2: #FF78B7;
        --accent-soft: rgba(200, 162, 200, 0.18);
        --pink-soft: rgba(255, 111, 174, 0.12);
        --text: #F9F0FF;
        --muted: #D8C3E3;
        --shadow: 8px 8px 0 rgba(0, 0, 0, 0.36);
        --shadow-strong: 12px 12px 0 rgba(0, 0, 0, 0.48);
        --warning-bg: #332A10;
        --warning-border: #C8A94A;
        --warning-text: #FFE88A;
        --cta-bg: #F9F0FF;
        --cta-bg-hover: #C8A2C8;
        --cta-text: #1B1024;
      }
    }

    :root[data-theme="dark"] {
      color-scheme: dark;
      --bg: #120A18;
      --surface: #21132D;
      --surface-strong: #342044;
      --card: #1B1024;
      --card-ink: #F9F0FF;
      --border: #7C5A8A;
      --border-strong: #C8A2C8;
      --accent: #C8A2C8;
      --accent2: #FF78B7;
      --accent-soft: rgba(200, 162, 200, 0.18);
      --pink-soft: rgba(255, 111, 174, 0.12);
      --text: #F9F0FF;
      --muted: #D8C3E3;
      --shadow: 8px 8px 0 rgba(0, 0, 0, 0.36);
      --shadow-strong: 12px 12px 0 rgba(0, 0, 0, 0.48);
      --warning-bg: #332A10;
      --warning-border: #C8A94A;
      --warning-text: #FFE88A;
      --cta-bg: #F9F0FF;
      --cta-bg-hover: #C8A2C8;
      --cta-text: #1B1024;
    }

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

    html {
      scroll-behavior: smooth;
    }

    body {
      min-height: 100vh;
      background:
        linear-gradient(90deg, rgba(108, 52, 124, 0.08) 1px, transparent 1px),
        linear-gradient(0deg, rgba(108, 52, 124, 0.08) 1px, transparent 1px),
        radial-gradient(circle at 84% 6%, var(--pink-soft), transparent 28rem),
        radial-gradient(circle at 8% 28%, var(--accent-soft), transparent 24rem),
        var(--bg);
      background-size: var(--tile) var(--tile), var(--tile) var(--tile), auto, auto, auto;
      color: var(--text);
      font-family: var(--font-body);
      font-size: 16px;
      line-height: 1.65;
    }

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

    a:hover {
      text-decoration: underline;
      text-decoration-thickness: 2px;
      text-underline-offset: 4px;
    }

    a:focus-visible,
    button:focus-visible,
    iframe:focus,
    iframe:focus-visible,
    .screenshots img:focus-visible {
      outline: 3px solid var(--accent2);
      outline-offset: 3px;
    }

    .top-nav {
      position: sticky;
      top: 0;
      z-index: 20;
      padding: 14px 20px 0;
      transform: translateY(0);
      transition: transform 0.24s cubic-bezier(0.16, 1, 0.3, 1);
      will-change: transform;
    }

    .top-nav.nav-hidden {
      transform: translateY(calc(-100% - 16px));
    }

    .top-nav:not(.nav-hidden),
    .top-nav.nav-hidden:focus-within,
    .top-nav:focus-within {
      transform: translateY(0);
    }

    .nav-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      max-width: 1120px;
      margin: 0 auto;
      padding: 10px;
      background: var(--card);
      border: 2px solid var(--border-strong);
      box-shadow: 5px 5px 0 var(--surface-strong);
    }

    .nav-brand {
      display: flex;
      align-items: center;
      gap: 12px;
      min-width: 0;
      color: var(--text);
    }

    .nav-copy {
      display: flex;
      flex-direction: column;
      gap: 1px;
      min-width: 0;
    }

    .nav-name {
      font-family: var(--font-display);
      font-size: 1.2rem;
      font-weight: 400;
      letter-spacing: 0.035em;
      line-height: 1.1;
      white-space: nowrap;
    }

    .nav-role {
      color: var(--muted);
      font-size: 0.76rem;
      font-weight: 700;
      line-height: 1.2;
      white-space: nowrap;
    }

    .nav-actions {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-shrink: 0;
    }

    .nav-actions a,
    .nav-actions button,
    .contact-links a,
    .contact-links button,
    .project-link {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 38px;
      background: var(--surface);
      border: 2px solid var(--border-strong);
      color: var(--text);
      font-family: inherit;
      font-size: 1.05rem;
      font-weight: 800;
      line-height: 1;
      padding: 0 14px;
      box-shadow: 3px 3px 0 var(--surface-strong);
      cursor: pointer;
      transition: transform 0.16s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.16s cubic-bezier(0.16, 1, 0.3, 1), background 0.16s, color 0.16s;
    }

    .nav-actions a,
    .nav-actions button,
    .contact-links a,
    .contact-links button,
    .project-link,
    .proof-label {
      font-family: var(--font-display);
      font-weight: 400;
      letter-spacing: 0.035em;
    }

    .nav-actions a:hover,
    .nav-actions button:hover,
    .contact-links a:hover,
    .contact-links button:hover,
    .project-link:hover {
      background: var(--accent2);
      color: var(--cta-text);
      box-shadow: 1px 1px 0 var(--surface-strong);
      text-decoration: none;
      transform: translate(2px, 2px);
    }

    header {
      max-width: 1120px;
      margin: 0 auto;
      padding: clamp(64px, 9vw, 120px) 24px clamp(28px, 5vw, 56px);
    }

    .hero-grid {
      max-width: 820px;
    }

    .hero-kicker {
      display: inline-flex;
      align-items: center;
      width: fit-content;
      margin-bottom: 22px;
      color: var(--accent);
      font-family: var(--font-body);
      font-size: clamp(1.2rem, 2.4vw, 1.55rem);
      font-weight: 700;
      letter-spacing: 0.01em;
    }

    h1 {
      max-width: 760px;
      color: var(--text);
      font-family: var(--font-display);
      font-size: clamp(4rem, 13vw, 8rem);
      font-weight: 400;
      letter-spacing: 0.015em;
      line-height: 0.82;
      text-wrap: balance;
    }

    h1 span {
      color: var(--accent);
    }

    .hero-summary {
      max-width: 660px;
      margin-top: 28px;
      color: var(--muted);
      font-size: clamp(1.05rem, 2vw, 1.26rem);
      line-height: 1.7;
      text-wrap: pretty;
    }

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

    .contact-links .primary-link {
      background: var(--cta-bg);
      color: var(--cta-text);
    }

    .section-shell {
      max-width: 1120px;
      margin: 0 auto;
      padding: clamp(48px, 7vw, 84px) 24px;
    }

    #projects {
      padding-top: clamp(14px, 3vw, 32px);
      scroll-margin-top: 96px;
    }

    .section-heading {
      display: grid;
      grid-template-columns: minmax(0, 0.6fr) minmax(280px, 0.4fr);
      gap: 24px;
      align-items: end;
      margin-bottom: 34px;
    }

    h2 {
      color: var(--text);
      font-family: var(--font-display);
      font-size: clamp(2rem, 5vw, 3.9rem);
      font-weight: 400;
      letter-spacing: 0.02em;
      line-height: 0.95;
      text-wrap: balance;
    }

    .section-intro {
      color: var(--muted);
      font-size: 1rem;
      line-height: 1.7;
      text-wrap: pretty;
    }

    .projects {
      display: grid;
      gap: clamp(28px, 5vw, 54px);
    }

    .project-entry {
      display: grid;
      grid-template-columns: minmax(0, 0.74fr) minmax(280px, 0.46fr);
      gap: clamp(20px, 4vw, 42px);
      align-items: start;
      padding: clamp(20px, 4vw, 34px);
      background: color-mix(in srgb, var(--card) 88%, transparent);
      border: 2px solid var(--border-strong);
      box-shadow: var(--shadow);
    }

    .project-entry:nth-child(even) {
      grid-template-columns: minmax(280px, 0.46fr) minmax(0, 0.74fr);
    }

    .project-entry:nth-child(even) .project-copy {
      order: 2;
    }

    .project-entry:nth-child(even) .project-proof {
      order: 1;
    }

    .project-heading {
      display: flex;
      flex-wrap: wrap;
      flex-direction: column;
      gap: 12px;
      align-items: flex-start;
      margin-bottom: 10px;
    }

    .project-number {
      color: var(--accent2);
      font-size: 0.78rem;
      font-weight: 900;
      letter-spacing: 0.12em;
      line-height: 1;
      text-transform: uppercase;
    }

    .project-heading h3 {
      color: var(--text);
      font-family: var(--font-display);
      font-size: clamp(1.55rem, 3.2vw, 2.65rem);
      font-weight: 400;
      letter-spacing: 0.025em;
      line-height: 1;
      text-wrap: balance;
    }

    .project-role {
      color: var(--accent);
      font-size: 0.95rem;
      font-weight: 700;
      line-height: 1.45;
      margin-bottom: 20px;
    }

    .project-desc {
      display: grid;
      gap: 16px;
      margin-bottom: 22px;
    }

    .project-desc p {
      max-width: 72ch;
      color: var(--muted);
      font-size: 0.88rem;
      text-wrap: pretty;
    }

    .project-desc strong {
      color: var(--text);
      font-weight: 900;
    }

    .project-stats {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-bottom: 22px;
    }

    .project-stat {
      background: var(--surface);
      border: 2px solid var(--border);
      color: var(--text);
      font-family: var(--font-body);
      font-size: 0.98rem;
      font-weight: 700;
      letter-spacing: 0;
      line-height: 1.2;
      padding: 6px 10px;
    }

    .project-link {
      width: fit-content;
      background: var(--cta-bg);
      color: var(--cta-text);
      min-height: 46px;
      font-size: 1.16rem;
      padding: 0 18px;
      box-shadow: 5px 5px 0 var(--surface-strong);
    }

    .project-link svg {
      margin-right: 8px;
      flex-shrink: 0;
    }

    .project-proof {
      display: grid;
      gap: 14px;
    }

    .proof-label {
      display: flex;
      align-items: center;
      gap: 10px;
      color: var(--accent);
      font-size: 1.05rem;
      font-weight: 900;
    }

    .proof-label::before {
      width: 12px;
      height: 12px;
      background: var(--accent2);
      box-shadow: 5px 0 0 var(--accent);
      content: "";
    }

    .video-wrap {
      position: relative;
      width: 100%;
      padding-bottom: 56.25%;
      overflow: hidden;
      background: var(--surface);
      border: 2px solid var(--border-strong);
      box-shadow: 5px 5px 0 var(--surface-strong);
    }

    .video-wrap iframe {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      border: none;
    }

    .video-wrap:focus-within {
      outline: 3px solid var(--accent2);
      outline-offset: 3px;
    }

    .screenshots {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 12px;
    }

    .screenshots img {
      display: block;
      width: 100%;
      min-height: 180px;
      object-fit: cover;
      border: 2px solid var(--border-strong);
      box-shadow: 5px 5px 0 var(--surface-strong);
      cursor: zoom-in;
      transition: transform 0.16s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.16s;
    }

    .screenshots img:hover {
      opacity: 0.9;
      transform: translate(-2px, -2px);
    }

    .disclaimer,
    .wip-note,
    .note {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      background: var(--warning-bg);
      border: 2px solid var(--warning-border);
      color: var(--warning-text);
      font-size: 0.86rem;
      font-weight: 700;
      line-height: 1.45;
      padding: 10px 12px;
    }

    .note {
      display: block;
      margin-top: 0;
      font-style: normal;
    }

    footer {
      max-width: 1120px;
      margin: 0 auto;
      padding: 34px 24px 46px;
      color: var(--text);
      font-family: var(--font-display);
      font-size: clamp(1.05rem, 2vw, 1.35rem);
      letter-spacing: 0.035em;
      line-height: 1.1;
    }

    footer span {
      color: var(--text);
      font-weight: 400;
    }

    .footer-strip {
      display: inline-flex;
      flex-wrap: wrap;
      gap: 8px;
      align-items: center;
      background: var(--card);
      border: 2px solid var(--border-strong);
      box-shadow: 5px 5px 0 var(--surface-strong);
      padding: 10px 12px;
    }

    .footer-divider {
      color: var(--accent);
    }

    .lightbox {
      position: fixed;
      inset: 0;
      z-index: 40;
      display: none;
      align-items: center;
      justify-content: center;
      background: rgba(0, 0, 0, 0.86);
      cursor: zoom-out;
      padding: 20px;
    }

    .lightbox.open {
      display: flex;
    }

    .lightbox img {
      max-width: 92vw;
      max-height: 92vh;
      object-fit: contain;
      border: 2px solid var(--accent);
      box-shadow: 10px 10px 0 rgba(0, 0, 0, 0.46);
    }

    @media (max-width: 860px) {

      .section-heading,
      .project-entry,
      .project-entry:nth-child(even) {
        grid-template-columns: 1fr;
      }

      .project-entry:nth-child(even) .project-copy,
      .project-entry:nth-child(even) .project-proof {
        order: initial;
      }

    }

    @media (max-width: 560px) {
      body {
        --tile: 14px;
      }

      .top-nav {
        padding: 10px 12px 0;
      }

      .nav-inner {
        gap: 10px;
        padding: 8px;
      }

      .nav-role {
        display: none;
      }

      .nav-name {
        font-size: 1rem;
      }

      .nav-actions {
        gap: 6px;
      }

      .nav-actions a,
      .nav-actions button,
      .contact-links a,
      .contact-links button,
      .project-link {
        min-height: 34px;
        padding: 0 9px;
        font-size: 0.92rem;
      }

      .project-link {
        min-height: 42px;
        font-size: 1.05rem;
      }

      header,
      .section-shell {
        padding-right: 16px;
        padding-left: 16px;
      }

      h1 {
        font-size: clamp(2.7rem, 16vw, 4rem);
      }

      .screenshots {
        grid-template-columns: 1fr;
      }

      .project-entry {
        box-shadow: 6px 6px 0 rgba(108, 52, 124, 0.18);
      }
    }

    @media (prefers-reduced-motion: reduce) {

      *,
      *::before,
      *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
      }
    }
