    .console {
      display: flex;
      flex-direction: column;
      border-radius: var(--radius);
      overflow: hidden;
      border: 1px solid rgba(255,255,255,0.16);
      background: #070a0f;
      box-shadow: var(--shadow);
      height: 620px;
      min-height: 0;
      max-height: 620px;
    }

    .console-top {
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 46px;
      padding-left: 12px;
      background: linear-gradient(180deg, #202633, #141a24);
      border-bottom: 1px solid rgba(255,255,255,0.11);
    }

    .terminal-title {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      min-width: 0;
      color: var(--text);
      font: 800 0.86rem/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    }

    .terminal-title span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

    .linux-mark {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 36px;
      min-height: 24px;
      padding: 0 8px;
      border-radius: 8px;
      color: #0c1118;
      background: var(--gold-2);
      font-weight: 950;
      letter-spacing: 0.03em;
    }

    .window-controls { display: flex; align-items: stretch; margin-left: auto; align-self: stretch; }
    .window-control { width: 46px; display: inline-flex; align-items: center; justify-content: center; border: 0; padding: 0; color: #dce3ea; background: transparent; font: inherit; font-size: 1rem; line-height: 1; user-select: none; cursor: pointer; }
    .window-control:hover { background: rgba(255,255,255,0.08); }
    .window-control.close:hover { background: rgba(255,90,90,0.72); }

    .console:fullscreen,
    .console:-webkit-full-screen,
    .console.terminal-fullscreen-fallback {
      width: 100vw;
      height: 100dvh;
      max-width: none;
      max-height: none;
      border: 0;
      border-radius: 0;
    }

    .console.terminal-fullscreen-fallback {
      position: fixed;
      inset: 0;
      z-index: 10000;
    }

    .console:fullscreen .terminal-screen,
    .console:-webkit-full-screen .terminal-screen,
    .console.terminal-fullscreen-fallback .terminal-screen { height: auto; }

    body.terminal-fullscreen-active { overflow: hidden; }

    .terminal-screen {
      position: relative;
      flex: 1 1 0;
      margin: 0;
      padding: 22px 24px 24px;
      min-height: 0;
      height: calc(620px - 46px);
      overflow-y: auto;
      overflow-x: hidden;
      overscroll-behavior: contain;
      scrollbar-width: none;
      -ms-overflow-style: none;
      background:
        linear-gradient(180deg, rgba(255,255,255,0.026), transparent 82px),
        #05070b;
      color: #e5ebf2;
      font: 500 0.95rem/1.7 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    }

    .terminal-screen::-webkit-scrollbar { display: none; width: 0; height: 0; }
    .terminal-line { min-height: 1.7em; white-space: pre-wrap; word-break: break-word; }
    .terminal-input-line { display: flex; align-items: baseline; gap: 8px; min-height: 1.7em; white-space: nowrap; }
    .terminal-input-line .terminal-prompt { flex: 0 0 auto; }
    #terminal-input { flex: 1 1 auto; min-width: 80px; padding: 0; border: 0; outline: 0; background: transparent; color: #f8fbff; caret-color: #f8fbff; font: inherit; }
    .terminal-input-line { flex-wrap: wrap; }
    .terminal-input-line.has-command #terminal-input { flex: 0 1 auto; min-width: 1ch; max-width: 100%; }
    .terminal-enter-hint { color: #b8c0cc; font-size: 14px; white-space: nowrap; }
    .terminal-help { color: var(--blue); }
    .terminal-command {
      color: var(--blue);
      cursor: pointer;
      width: fit-content;
      border-radius: 5px;
      transition: color 120ms ease, background 120ms ease;
    }
    .terminal-command:hover,
    .terminal-command:focus-visible {
      color: #f8fbff;
      background: rgba(142, 184, 255, 0.12);
      outline: none;
    }
    .term-user { color: #8bd6b4; font-weight: 700; }
    .term-path, .term-dir { color: #8eb8ff; font-weight: 700; }
    .term-success { color: #8bd6b4; font-weight: 700; }
    .term-error { color: #ff7a90; }
    .term-muted { color: #b8c0cc; }

    .party-overlay,
    .interaction-lock {
      position: fixed;
      inset: 0;
      z-index: 9998;
      pointer-events: none;
      overflow: hidden;
    }

    .party-overlay {
      z-index: 2147483647;
      background: transparent;
      mix-blend-mode: normal;
      isolation: isolate;
    }

    .party-stop-button {
      position: absolute;
      right: max(20px, env(safe-area-inset-right));
      bottom: max(20px, env(safe-area-inset-bottom));
      z-index: 2;
      pointer-events: auto;
      min-height: 48px;
      padding: 12px 20px;
      border: 1px solid #d5f675;
      border-radius: 8px;
      background: #0d181e;
      color: #f7f8f2;
      font-family: inherit;
      font-size: 16px;
      font-weight: 700;
      line-height: 1.4;
      cursor: pointer;
      box-shadow: 0 4px 20px #0006;
    }
    .party-stop-button:hover { background: #203b40; }
    .party-stop-button:focus-visible { outline: 3px solid #d5f675; outline-offset: 4px; }

    .party-overlay.party-flashing::before {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 0;
      pointer-events: none;
      animation: disco-flash 420ms linear infinite;
      mix-blend-mode: screen;
    }

    .dancing-roach {
      position: absolute;
      z-index: 1;
      width: 88px;
      height: 118px;
      filter: drop-shadow(0 5px 8px rgba(0,0,0,0.5));
      animation: none;
    }

    .party-overlay.party-entering .dancing-roach {
      width: 154px;
      height: 108px;
      animation: roach-enter 4s cubic-bezier(.18,.78,.22,1) both;
      animation-delay: var(--entry-delay, 0ms);
    }

    .party-overlay.party-entering .roach-character {
      transform-origin: 50% 78%;
      animation: roach-crawl-cycle 420ms steps(2, jump-none) infinite;
    }

    .party-overlay.party-looking .dancing-roach {
      animation: roach-look-around 2.3s ease-in-out both;
      animation-delay: var(--look-delay, 0ms);
    }

    .party-overlay.party-shrugging .dancing-roach {
      animation: roach-shrug 1.65s ease-in-out both;
      animation-delay: var(--look-delay, 0ms);
    }

    .party-overlay.party-live .dancing-roach {
      animation: roach-dance 840ms cubic-bezier(.2,.75,.35,1) infinite;
      animation-delay: var(--dance-delay, 0ms);
    }

    .party-overlay.party-live .dancing-roach.dance-roll { animation: roach-dance-roll 1.55s cubic-bezier(.3,.7,.35,1) both; }
    .party-overlay.party-live .dancing-roach.dance-high-jump { animation: roach-high-jump 1.45s cubic-bezier(.25,.8,.3,1) both; }
    .party-overlay.party-live .dancing-roach.dance-slow { animation: roach-slow-groove 3.8s ease-in-out both; }
    .party-overlay.party-live .dancing-roach.dance-robot { animation: roach-robot 2.3s steps(8, jump-none) both; }
    .party-overlay.party-live .dancing-roach.dance-trick-a,
    .party-overlay.party-live .dancing-roach.dance-trick-b { animation: roach-pair-trick 2.15s cubic-bezier(.2,.78,.28,1) both; }

    .party-overlay.party-looking-exit .dancing-roach {
      animation: roach-exit-look 1.9s ease-in-out both;
      animation-delay: var(--look-delay, 0ms);
    }

    .roach-character { display:block; width:100%; height:100%; object-fit:contain; transform-origin:50% 70%; transition:transform 260ms ease; }

    .party-overlay.party-ending {
      animation: none;
      background: transparent;
      mix-blend-mode: normal;
    }

    .party-ending .dancing-roach {
      width: 154px;
      height: 108px;
      animation: roach-crawl-away 3.4s linear forwards;
    }
    .party-ending .roach-character {
      transform-origin: 50% 78%;
      animation: roach-crawl-cycle 360ms steps(2, jump-none) infinite;
    }

    .interaction-lock {
      z-index: 10000;
      pointer-events: all;
      cursor: wait;
      background: transparent;
    }

    body.barrel-rolling { animation: barrel-roll 2.4s cubic-bezier(.4,0,.2,1); }

    .sl-train {
      position: absolute;
      top: 28%;
      left: 100%;
      z-index: 5;
      width: max-content;
      margin: 0;
      color: #e5ebf2;
      background: #05070b;
      font: 700 0.72rem/1 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
      white-space: pre;
      animation: train-pass 6s linear forwards;
    }

    @keyframes disco-flash {
      0% { background: rgba(255,0,80,0.3); }
      20% { background: rgba(255,180,0,0.3); }
      40% { background: rgba(0,255,110,0.3); }
      60% { background: rgba(0,170,255,0.3); }
      80% { background: rgba(150,0,255,0.3); }
      100% { background: rgba(255,0,80,0.3); }
    }

    @keyframes roach-dance {
      0%, 100% { transform: translate(0, 0) rotate(-7deg); }
      22% { transform: translate(12px, -30px) rotate(9deg); }
      44% { transform: translate(-7px, -8px) rotate(-5deg); }
      68% { transform: translate(10px, -36px) rotate(8deg); }
      86% { transform: translate(-5px, -5px) rotate(-4deg); }
    }

    @keyframes roach-dance-roll {
      0%, 100% { transform: translate(0, 0) rotate(0deg); }
      22% { transform: translate(-12px, -12px) rotate(-55deg); }
      64% { transform: translate(28px, -8px) rotate(690deg); }
      82% { transform: translate(8px, -22px) rotate(735deg); }
    }

    @keyframes roach-high-jump {
      0%, 100% { transform: translate(0, 0) rotate(0deg) scale(1); }
      18% { transform: translate(0, 7px) rotate(-4deg) scale(1.08, .9); }
      52% { transform: translate(8px, -68px) rotate(18deg) scale(.94, 1.08); }
      76% { transform: translate(-5px, -16px) rotate(-8deg) scale(1.04, .96); }
    }

    @keyframes roach-slow-groove {
      0%, 100% { transform: translate(0, 0) rotate(-3deg); }
      25% { transform: translate(9px, -12px) rotate(6deg); }
      50% { transform: translate(-7px, -20px) rotate(-5deg); }
      75% { transform: translate(7px, -8px) rotate(4deg); }
    }

    @keyframes roach-robot {
      0%, 100% { transform: translate(0, 0) rotate(0deg); }
      14% { transform: translate(13px, 0) rotate(10deg); }
      28% { transform: translate(13px, -24px) rotate(10deg); }
      42% { transform: translate(-11px, -24px) rotate(-12deg); }
      57% { transform: translate(-11px, -5px) rotate(-12deg); }
      72% { transform: translate(8px, -5px) rotate(7deg); }
      86% { transform: translate(8px, -17px) rotate(0deg); }
    }

    @keyframes roach-pair-trick {
      0%, 100% { transform: translate(0, 0) rotate(0deg); }
      20% { transform: translate(0, -15px) rotate(-9deg); }
      48% { transform: translate(var(--trick-x), calc(var(--trick-y) - 34px)) rotate(var(--trick-spin)); }
      70% { transform: translate(var(--trick-back-x), var(--trick-back-y)) rotate(var(--trick-spin-mid)); }
      86% { transform: translate(0, -20px) rotate(var(--trick-spin-end)); }
    }

    @keyframes roach-enter {
      0% { transform: translate(var(--enter-x), var(--enter-y)) rotate(var(--enter-tilt)); }
      32% { transform: translate(var(--enter-x-mid), var(--enter-y-mid)) rotate(var(--enter-tilt-mid)); }
      62% { transform: translate(var(--enter-x-near), var(--enter-y-near)) rotate(var(--enter-tilt-near)); }
      82% { transform: translate(0, -16px) rotate(4deg); }
      100% { transform: translate(0, 0) rotate(0deg); }
    }

    @keyframes roach-look-around {
      0%, 100% { transform: translateY(0) rotate(0deg); }
      18% { transform: translateY(-2px) rotate(-8deg); }
      36% { transform: translateY(0) rotate(-8deg); }
      58% { transform: translateY(-2px) rotate(9deg); }
      78% { transform: translateY(0) rotate(9deg); }
    }

    @keyframes roach-shrug {
      0%, 100% { transform: translateY(0) scale(1) rotate(0deg); }
      25% { transform: translateY(-5px) scale(.96, 1.04) rotate(-3deg); }
      48% { transform: translateY(-13px) scale(1.08, .94) rotate(3deg); }
      70% { transform: translateY(-4px) scale(.98, 1.03) rotate(-2deg); }
    }

    @keyframes roach-exit-look {
      0%, 100% { transform: translateY(0) rotate(0deg); }
      22% { transform: translateY(-3px) rotate(-10deg); }
      45% { transform: translateY(0) rotate(-10deg); }
      66% { transform: translateY(-3px) rotate(11deg); }
      86% { transform: translateY(0) rotate(11deg); }
    }

    @keyframes roach-crawl-away {
      0% { transform: translate(0, 0); }
      8% { transform: translate(var(--crawl-step), 5px); }
      16% { transform: translate(var(--crawl-step-2), 0); }
      24% { transform: translate(var(--crawl-step-3), 5px); }
      32% { transform: translate(var(--crawl-step-4), 0); }
      100% { transform: translate(var(--exit-x), 0); }
    }

    @keyframes roach-crawl-cycle {
      0% { transform: scaleX(var(--facing)) translateY(0) rotate(-1.5deg); }
      25% { transform: scaleX(var(--facing)) translateY(-5px) rotate(1deg); }
      50% { transform: scaleX(var(--facing)) translateY(0) rotate(1.5deg); }
      75% { transform: scaleX(var(--facing)) translateY(-4px) rotate(-1deg); }
      100% { transform: scaleX(var(--facing)) translateY(0) rotate(-1.5deg); }
    }

    @media (max-width: 599px) {
      .dancing-roach { width:66px; height:90px; }
      .party-overlay.party-entering .dancing-roach,
      .party-overlay.party-ending .dancing-roach { width:112px; height:90px; }
    }

    @keyframes barrel-roll {
      from { transform: rotate(0deg) scale(1); }
      50% { transform: rotate(180deg) scale(.72); }
      to { transform: rotate(360deg) scale(1); }
    }

    @keyframes train-pass {
      from { transform: translateX(0); }
      to { transform: translateX(calc(-100vw - 100%)); }
    }

    .contact-card {
      display: grid;
      grid-template-columns: 0.92fr 1.08fr;
      gap: 22px;
      align-items: stretch;
      padding: 30px;
      border-radius: 34px;
      border: 1px solid var(--line-strong);
      background:
        linear-gradient(135deg, rgba(216,180,106,0.16), rgba(142,184,255,0.09)),
        var(--surface);
      box-shadow: var(--shadow);
    }

    .contact-card p { color: var(--muted); margin-bottom: 0; }

    .contact-list { display: grid; gap: 10px; }

    .contact-list a, .contact-list span.contact-row {
      display: flex;
      justify-content: space-between;
      gap: 18px;
      padding: 14px 16px;
      border-radius: 16px;
      background: rgba(8, 11, 18, 0.4);
      border: 1px solid var(--line);
      color: var(--muted);
    }

    .contact-list b { color: var(--text); }

    .hero-contact {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      margin-top: 28px;
    }

    .hero-contact a,
    .hero-contact span.contact-row {
      flex-direction: column;
      justify-content: flex-start;
      gap: 2px;
      padding: 10px 12px;
      border-radius: 13px;
      font-size: 0.82rem;
    }

    .hero-contact .contact-row:last-child { grid-column: 1 / -1; }

    .terminal-layout {
      display: grid;
      grid-template-columns: minmax(0, 1fr) 220px;
      gap: 16px;
      align-items: stretch;
      width: 100%;
    }

    .terminal-command-panel {
      display: flex;
      flex-direction: column;
      min-height: 560px;
      padding: 16px;
      border: 1px solid rgba(255,255,255,0.16);
      border-radius: 18px;
      background: rgba(7, 10, 15, 0.94);
      box-shadow: var(--shadow);
    }

    .terminal-command-panel h3 {
      margin: 0 0 6px;
      font-size: 0.88rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--text);
    }

    .terminal-command-panel p {
      margin: 0 0 12px;
      color: var(--muted-2);
      font-size: 0.76rem;
      line-height: 1.4;
    }

    .terminal-command-buttons {
      display: grid;
      gap: 7px;
      overflow-y: auto;
      scrollbar-width: thin;
    }

    .terminal-command-button {
      width: 100%;
      padding: 9px 10px;
      border: 1px solid rgba(142,184,255,0.18);
      border-radius: 10px;
      background: rgba(142,184,255,0.07);
      color: var(--blue);
      text-align: left;
      font: 600 0.8rem/1.25 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
      cursor: pointer;
      transition: background 120ms ease, color 120ms ease, border-color 120ms ease, transform 120ms ease;
    }

    .terminal-command-button:hover,
    .terminal-command-button:focus-visible {
      color: #f8fbff;
      background: rgba(142,184,255,0.14);
      border-color: rgba(142,184,255,0.34);
      outline: none;
      transform: translateX(2px);
    }

    @media (max-width: 900px) {
      .terminal-layout { grid-template-columns: 1fr; }
      .terminal-command-panel {
        min-height: 0;
        padding: 12px;
      }
      .terminal-command-buttons {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-height: none;
      }
    }

    @media (max-width: 520px) {
      .terminal-command-buttons { grid-template-columns: 1fr; }
    }

    .terminal-page {
      min-height: calc(100dvh - 76px);
      padding-top: 46px;
      padding-bottom: 46px;
    }

    .terminal-page-head {
      margin-bottom: 20px;
    }

    .terminal-page .console {
      width: 100%;
      height: calc(100dvh - 220px);
      min-height: 560px;
      max-height: none;
    }

    .terminal-page .terminal-screen {
      height: auto;
    }


:root{--bg:#f7f8f2;--text:#172c34;--muted:#586970;--muted-2:#61747d;--line:#dce2dc;--lime:#d5f675;--blue:#8eb8ff;--green:#8bd6b4;--gold-2:#d5f675;--radius:20px;--shadow:0 20px 60px #162d3410;--max:1200px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;color:var(--text);background:var(--bg);font:16px/1.65 'Avenir Next',Avenir,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #47651c;outline-offset:5px}::selection{background:var(--lime);color:#172c34}p,h1,h2,h3{margin-top:0}p{color:var(--muted)}.page{width:min(var(--max),calc(100% - 96px));margin-inline:auto}section{padding:90px 0;scroll-margin-top:100px}.mono,.eyebrow,.project-meta,.hero-bottom{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.accent,h2>span{color:#4d6d20}.skip-link{position:fixed;top:-80px;left:20px;z-index:100;background:var(--lime);padding:12px}.skip-link:focus{top:12px}
header{position:sticky;top:0;z-index:40;background:#f7f8f2ee;backdrop-filter:blur(20px);border-bottom:1px solid var(--line)}nav{min-height:90px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:inline-flex;align-items:center;gap:12px;font-weight:750;letter-spacing:-.035em}.brand-mark{font-size:38px;line-height:1;letter-spacing:-.1em}.brand-mark>span{color:#63842d}.brand-name{font-size:13px;line-height:1.25;letter-spacing:0}.brand-name>span{display:block}.nav-links{display:flex;align-items:center;gap:30px;font-size:13px;font-weight:600}.nav-links a:not(.button){padding-block:10px;position:relative}.nav-links a:not(.button):after{content:'';height:2px;position:absolute;bottom:4px;left:0;right:100%;background:#47651c;transition:right .2s}.nav-links a:hover:after,.nav-links a[aria-current]:after{right:0}.nav-play{color:#526753}.button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:50px;padding:12px 22px;border:1px solid var(--text);border-radius:8px;font-size:14px;font-weight:650;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px);background:#e9eddf}.button.primary{background:var(--text);color:white}.button.primary:hover{background:#2b4550}.button span{font-size:20px;line-height:1}.nav-contact{min-height:42px;font-size:12px;padding:9px 16px;gap:22px}.text-link{display:inline-flex;align-items:center;gap:10px;border-bottom:1px solid #9eaaa0;padding-bottom:3px;font-size:13px;font-weight:600;transition:color .2s}.text-link:hover{color:#4d6d20}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:56px 72px;padding-top:78px;padding-bottom:0;align-items:center}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.085em;text-transform:uppercase;display:flex;align-items:center;gap:9px;margin-bottom:24px}.status-dot{display:inline-block;flex:none;width:7px;height:7px;border-radius:50%;background:#598038;box-shadow:0 0 0 4px #58803712}h1{font-size:clamp(48px,5.4vw,76px);font-weight:650;line-height:1.07;letter-spacing:-.064em;margin-bottom:26px}h1>span{font-family:Georgia,'Times New Roman',serif;font-style:italic;font-weight:400;letter-spacing:-.055em;color:#4f6b36}.hero-copy{max-width:570px;font-size:16px;line-height:1.85;margin-bottom:0}.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:26px;margin-top:30px}.hero-footnote{display:flex;align-items:center;gap:10px;margin-top:28px;font-size:12px;color:#566947}.hero-footnote .status-dot{width:5px;height:5px;box-shadow:none}.profile-card{position:relative;padding:24px 26px 0;background:#edf0e6;border:1px solid #dfe4d6;border-radius:16px;overflow:hidden;transform:rotate(2deg)}.profile-top{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:.09em;color:#536546}.profile-spark{font-size:36px;line-height:1;color:#617b40}.profile-photo{width:132px;height:148px;margin:20px 0 22px;border-radius:10px;overflow:hidden;background:#dfe4d8;transform:rotate(-3deg)}.profile-photo img{width:100%;height:100%;display:block;object-fit:cover;object-position:50% 30%}.profile-card h2{font-size:26px;letter-spacing:-.045em;line-height:1.2;margin-bottom:12px}.profile-card h2 span{color:#6e8b40}.profile-card>p{font-size:13px;line-height:1.65;margin-bottom:22px}.profile-school{display:flex;gap:10px;align-items:center;padding:18px 0;border-top:1px solid #d3dacb}.school-icon{border:1px solid #c5cfbb;border-radius:50%;width:32px;height:32px;display:grid;place-items:center}.profile-school strong,.profile-school div>span{display:block;font-size:10px}.profile-school div>span{color:#5d6a59;margin-top:3px}.profile-link{display:flex;justify-content:space-between;margin:0 -26px;padding:14px 26px;background:var(--lime);font-size:11px;font-weight:650}.profile-link:hover{background:#c6e66a}.hero-bottom{grid-column:1/-1;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px 0;font-size:12px}.hero-bottom>.mono{font-size:9px;letter-spacing:.1em;color:#66766b}.hero-bottom div span{padding:0 14px;color:#a0aea0}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:36px}.section-head .eyebrow{margin-bottom:16px;color:#687858;font-size:10px}h2{font-size:clamp(30px,3.1vw,43px);line-height:1.15;letter-spacing:-.05em;font-weight:600;margin-bottom:0}.section-note{font-size:13px;line-height:1.8;max-width:340px;margin:0}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.card{min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;background:#fdfef9;overflow:hidden;transition:box-shadow .2s,border-color .2s}.card:hover{border-color:#adbaa2;box-shadow:0 12px 28px #25342209}.project-art{height:175px;position:relative;overflow:hidden;padding:26px;display:flex;flex-direction:column;justify-content:center;isolation:isolate;background:#e9eddf}.art-grid{position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#172c3409 1px,transparent 1px),linear-gradient(90deg,#172c3409 1px,transparent 1px);background-size:22px 22px;mask-image:linear-gradient(120deg,black,transparent)}.project-art strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:34px;line-height:1.2;letter-spacing:-.06em;max-width:220px}.project-art>span{font:8px/1.6 ui-monospace,SFMono-Regular,monospace;letter-spacing:.1em;margin-top:12px;max-width:240px}.project-art i{position:absolute;right:18px;bottom:16px;font-style:normal;font-size:20px}.art-cpu{background:#dfe8dc}.art-cpu strong{border:2px solid #667f64;width:105px;height:80px;display:grid;place-items:center;box-shadow:8px 8px 0 #b4c5aa;font-size:30px}.art-flight{background:#e0e9ed;color:#30576b}.art-flight:after{content:'';position:absolute;right:28px;top:28px;border:1px dashed #7894a3;border-radius:50%;width:110px;height:110px;z-index:-1}.art-battle{background:#203b40;color:#e5f8a5}.art-battle .art-grid{filter:invert(1);opacity:.35}.art-battle strong{font-size:32px}.art-race{background:#e8e4ee;color:#5d4c73}.art-race strong{font-size:27px;max-width:160px}.art-race:after{content:'';height:180px;width:70px;border-left:2px solid #a899b8;border-right:2px solid #a899b8;position:absolute;right:24px;top:-2px;transform:rotate(25deg);z-index:-1}.art-math{background:#ece9df;color:#766347}.art-math strong{font-family:Georgia,serif;font-size:60px;font-weight:400;font-style:italic}.art-novel{background:#dce6e6;color:#30595a}.art-novel strong{font-family:Georgia,serif;font-size:33px;font-style:italic;font-weight:400;max-width:160px}.project-meta{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:#677865;margin:22px 22px 12px;text-transform:uppercase;letter-spacing:.035em}.card h3{font-size:21px;font-weight:600;line-height:1.3;letter-spacing:-.035em;margin:0 22px 12px}.project-summary{font-size:13px;line-height:1.8;margin:0 22px 22px}.language-list{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:auto 22px 18px;padding:0}.language-list li{font-size:9px;border:1px solid #dde4d9;border-radius:4px;padding:3px 7px;color:#51674d}.project-details{margin:0 22px;border-top:1px solid var(--line);padding:13px 0}.project-details summary{display:flex;justify-content:space-between;cursor:pointer;list-style:none;font-size:11px;font-weight:600}.project-details summary::-webkit-details-marker{display:none}.project-details[open] summary>span{transform:rotate(45deg)}.project-description{padding-top:15px}.project-description p{font-size:12px;line-height:1.85}.project-details>a{font-size:12px;text-decoration:underline}.project-details>a:after{content:' ↗'}
#experience{border-top:1px solid var(--line)}.timeline{display:grid;grid-template-columns:1fr 1fr;gap:0 48px}.timeline-item{display:grid;grid-template-columns:95px minmax(0,1fr);gap:18px;padding:26px 0;border-top:1px solid var(--line)}.timeline-item time{font-family:ui-monospace,SFMono-Regular,monospace;font-size:10px;line-height:1.7;color:#65765a}.timeline-item strong{font-size:16px;font-weight:600;letter-spacing:-.025em}.timeline-item p{font-size:12px;margin:8px 0 0;line-height:1.8}.timeline-entry{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.experience-logo{width:44px;height:34px;object-fit:contain;flex:none;background:white;padding:3px;border-radius:4px}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}#skills{border-top:1px solid var(--line)}.skill-block{padding-left:18px;border-left:2px solid #cbd8bc}.skill-block h3{font-size:14px;font-weight:600;margin:0 0 18px}.skill-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0}.skill-list li{font-size:11px;border:1px solid #dce3d5;background:#eef1e8;padding:5px 9px;border-radius:5px}
#contact{border-top:1px solid var(--line)}#contact .section-head{align-items:center}#contact .section-head .text-link{margin-top:18px}.contact-form-shell{background:#edf1e7;border:1px solid #dce3d5;border-radius:14px;padding:32px}.contact-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.contact-field{display:flex;flex-direction:column;gap:7px;min-width:0}.contact-field.full,.captcha-box,.contact-form-actions{grid-column:1/-1}.contact-field label{font-size:11px;font-weight:600}.contact-field input,.contact-field textarea{width:100%;min-height:46px;padding:11px 13px;background:#fcfdf9;border:1px solid #ced8c8;border-radius:6px;color:var(--text);font-size:13px}.contact-field input::placeholder,.contact-field textarea::placeholder{color:#768170}.contact-field textarea{min-height:130px;resize:vertical}.captcha-box{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;border-block:1px solid #d2dccc}.captcha-copy{display:flex;flex-direction:column;font-size:11px;color:#5d6d57;gap:4px}.captcha-copy strong{color:var(--text);font-size:12px}.captcha-question{font-family:ui-monospace,monospace;font-size:16px;font-weight:600;color:var(--text)}.captcha-box .contact-field{max-width:150px}.contact-form-actions{display:flex;justify-content:space-between;align-items:center;gap:20px}.contact-form-status{font-size:11px;margin:0}.contact-form-status.error{color:#a43030}.contact-form-status.success{color:#3d6321}#contact-submit{border:0;border-radius:6px;min-height:46px;padding:12px 24px;background:var(--text);color:white;cursor:pointer;font-size:12px;font-weight:600;flex:none}#contact-submit:disabled{background:#d7ded0;color:#596452;cursor:not-allowed}footer{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:30px;font-size:11px;color:#5b6e60}footer .brand{font-size:12px;color:var(--text);gap:0}footer a:last-child:hover{text-decoration:underline}
body main>.terminal-page{display:none}body[data-page=terminal]{background:#0e181e;color:#f7f8f2;--text:#f7f8f2;--muted:#aebbc4;--muted-2:#8f9da3;--line:#ffffff24}body[data-page=terminal] header{background:#0e181eef}body[data-page=terminal] main>section{display:none}body[data-page=terminal] main>.terminal-page{display:block}body[data-page=terminal] .nav-links .nav-play{color:var(--lime)}body[data-page=terminal] .button{border-color:#85908f}body[data-page=terminal] footer .brand{color:#f7f8f2}body[data-page=terminal] footer{color:#b7c4ba}.terminal-layout{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:20px}.terminal-command-panel{padding:20px;background:#17252b;border:1px solid #ffffff24;border-radius:12px}.terminal-command-panel h3{color:#fff;font-size:16px}.terminal-command-panel p{font-size:12px;color:#b4c0c6}.terminal-command-buttons{display:grid;gap:8px}.terminal-command-button{padding:9px 12px;border:1px solid #ffffff24;background:#ffffff06;color:#d5f675;text-align:left;border-radius:5px;font:12px ui-monospace,monospace;cursor:pointer}.terminal-command-button:hover{background:#ffffff18}.terminal-page .console{height:560px;max-height:none;border-radius:12px}.terminal-page .terminal-screen{height:auto}.terminal-screen{scrollbar-width:thin}.terminal-input-line{margin:0}.terminal-page .section-note{margin-top:16px;max-width:560px}.console.terminal-fullscreen-fallback{height:100dvh}
@media(min-width:1500px){.hero{padding-top:100px;gap:60px 100px}.hero-copy{font-size:17px}}
@media(max-width:1050px){.page{width:calc(100% - 64px)}.hero{grid-template-columns:minmax(0,1fr) 270px;gap:44px 40px}h1{font-size:58px}.profile-card{padding-inline:22px}.profile-link{margin-inline:-22px;padding-inline:22px}.nav-links{gap:20px}.cards{gap:16px}.project-art{height:155px;padding:20px}.card h3{font-size:19px}.project-meta,.card h3,.project-summary,.project-details{margin-inline:18px}.language-list{margin-inline:18px}.project-meta{font-size:8px}.skills-grid{grid-template-columns:1fr 1fr;gap:32px}.timeline{gap:0 28px}.timeline-item{grid-template-columns:80px 1fr;gap:10px}}
@media(max-width:760px){html{scroll-padding-top:125px}.page{width:calc(100% - 40px)}nav{min-height:100px;flex-wrap:wrap;justify-content:space-between;gap:6px;padding-block:13px}.brand-mark{font-size:30px}.brand-name{font-size:11px}.nav-links{width:100%;justify-content:space-between;gap:12px;font-size:11px}.nav-links .button{min-height:32px;font-size:10px;padding:5px 10px;gap:8px}.nav-links .button span{font-size:14px}.brand{gap:10px}.hero{grid-template-columns:minmax(0,1fr) 225px;gap:40px 28px;padding-top:48px}.hero .eyebrow{font-size:9px;line-height:1.7}.hero h1{font-size:clamp(36px,6.4vw,48px)}.hero-copy{font-size:14px}.hero-actions{gap:18px}.hero-footnote{font-size:10px}.hero-actions .text-link{font-size:11px}.hero-actions .button{font-size:12px;padding:10px 16px;min-height:44px}.profile-card{padding:18px 18px 0;transform:rotate(1deg)}.profile-top{font-size:8px}.profile-photo{width:112px;height:126px;margin:16px 0}.profile-card h2{font-size:23px}.profile-card>p{font-size:11px}.profile-school{gap:8px}.school-icon{display:none}.profile-school strong,.profile-school div>span{font-size:9px}.profile-link{margin-inline:-18px;padding-inline:18px;font-size:10px}.hero-bottom{flex-direction:column;align-items:flex-start;gap:8px;padding-block:20px}.hero-bottom div{font-size:11px}.hero-bottom div span{padding-inline:10px}section{padding:60px 0}.section-head{align-items:flex-start;flex-direction:column;gap:18px;margin-bottom:28px}.section-note{font-size:12px}.section-note br{display:none}.cards{grid-template-columns:1fr 1fr;gap:16px}.project-art strong{font-size:28px}.art-math strong{font-size:52px}.project-art>span{font-size:7px}.project-meta{font-size:8px}.card h3{font-size:18px}.project-summary{font-size:12px}.timeline{grid-template-columns:1fr}.timeline-item{grid-template-columns:100px minmax(0,1fr);gap:20px;padding-block:22px}.skills-grid{gap:28px 20px}.contact-form-shell{padding:22px}footer{flex-wrap:wrap;gap:15px}footer>span{order:3;width:100%}.terminal-layout{grid-template-columns:1fr}.terminal-command-buttons{grid-template-columns:repeat(3,1fr)}.terminal-page .console{height:440px}.terminal-screen{padding:16px;font-size:12px}.terminal-command-panel{min-height:0}.terminal-page .console.terminal-fullscreen-fallback{height:100dvh}}
@media(max-width:540px){.hero{grid-template-columns:1fr;gap:34px;padding-top:38px}.hero h1{font-size:clamp(42px,10.8vw,58px)}.hero .eyebrow{margin-bottom:20px}.hero-copy{font-size:14px;max-width:420px}.hero-actions{gap:20px;margin-top:24px}.hero-footnote{margin-top:22px}.profile-card{display:grid;grid-template-columns:94px minmax(0,1fr);gap:0 18px;padding:18px 18px 0;transform:none;border-radius:12px}.profile-top{grid-column:1/-1;margin-bottom:14px}.profile-spark{font-size:24px}.profile-photo{width:94px;height:108px;grid-column:1;grid-row:2/4;margin:0 0 16px;transform:none}.profile-card h2{grid-column:2;align-self:end;font-size:23px;margin-bottom:6px}.profile-card>p{grid-column:2;font-size:11px;margin-bottom:14px}.profile-school{grid-column:1/-1;padding:13px 0}.school-icon{display:grid;width:26px;height:26px;font-size:12px}.profile-school strong{font-size:10px}.profile-link{grid-column:1/-1;font-size:11px}.hero-bottom{gap:10px}h2{font-size:32px}.cards{grid-template-columns:1fr;gap:22px}.project-art{height:170px;padding:24px}.project-art strong{font-size:34px}.art-math strong{font-size:56px}.project-art>span{font-size:8px}.project-meta{font-size:9px;margin-top:20px}.card h3{font-size:22px}.project-summary{font-size:13px}.project-meta,.card h3,.project-summary,.project-details,.language-list{margin-inline:22px}.language-list li{font-size:10px}.skills-grid{grid-template-columns:1fr;gap:26px}.skill-block{padding-left:18px}.skill-list li{font-size:11px}.timeline-item{grid-template-columns:80px minmax(0,1fr);gap:15px}.contact-form-grid{grid-template-columns:1fr;gap:16px}.contact-form-shell{padding:18px}.contact-field.full,.captcha-box,.contact-form-actions{grid-column:1}.captcha-box{align-items:flex-start;flex-direction:column;gap:14px}.captcha-box .contact-field{max-width:none;width:100%}.contact-form-actions{align-items:stretch;flex-direction:column;gap:14px}.contact-form-status{font-size:10px}.terminal-command-buttons{grid-template-columns:1fr 1fr}footer .brand{font-size:11px}.hero-bottom .mono{font-size:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Readable type and spacing at every breakpoint. */
body { font-size: 18px; --muted: #4d6067; }
html { scroll-padding-top: var(--nav-offset, 120px); }
section { scroll-margin-top: 0; }
.brand-name { font-size: 15px; line-height: 1.35; }
.nav-links { font-size: 16px; gap: 26px; }
.nav-links a:not(.button) { min-height: 44px; display: inline-flex; align-items: center; }
.nav-contact, .button, .text-link { font-size: 16px; }
.hero { grid-template-columns: minmax(0, 1fr) 340px; gap: 56px; }
.hero-copy { font-size: 18px; line-height: 1.8; max-width: 590px; }
.eyebrow, .hero .eyebrow, .section-head .eyebrow { font-size: 14px; letter-spacing: .045em; }
.hero-footnote { font-size: 15px; color: #4d653e; }
.profile-top { font-size: 14px; letter-spacing: .025em; }
.profile-card { transform: none; }
.profile-card > p { font-size: 16px; line-height: 1.65; }
.profile-card h2 { font-size: 29px; }
.profile-school strong, .profile-school div > span { font-size: 14px; line-height: 1.6; }
.profile-school { align-items: flex-start; }
.profile-link { font-size: 15px; min-height: 48px; align-items: center; }
.hero-bottom { font-size: 16px; flex-wrap: wrap; }
.hero-bottom > .mono { font-size: 14px; letter-spacing: .025em; }
.hero-bottom div span { padding-inline: 10px; }
.section-note { font-size: 16px; max-width: 380px; }
.section-head { align-items: flex-start; }
.project-meta { font-size: 14px; line-height: 1.5; letter-spacing: 0; text-transform: none; }
.card h3 { font-size: 24px; line-height: 1.35; }
.project-summary, .project-description p { font-size: 16px; line-height: 1.8; }
.language-list { gap: 8px; }
.language-list li { font-size: 14px; padding: 4px 9px; }
.project-details summary { font-size: 16px; min-height: 44px; align-items: center; }
.project-details > a { font-size: 16px; }
.project-art > span { font-size: 12px; letter-spacing: .025em; }
.timeline-item { grid-template-columns: 112px minmax(0, 1fr); gap: 20px; }
.timeline-item time { font-size: 14px; }
.timeline-item strong { font-size: 20px; line-height: 1.45; }
.timeline-item p { font-size: 16px; line-height: 1.8; }
.timeline-entry { flex-wrap: wrap; }
.skills-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px; }
.skill-block h3 { font-size: 20px; }
.skill-list li { font-size: 16px; line-height: 1.5; padding: 7px 11px; }
.contact-field label { font-size: 16px; }
.contact-field input, .contact-field textarea { font-size: 16px; min-height: 50px; line-height: 1.6; }
.contact-field textarea { min-height: 160px; }
.captcha-copy, .captcha-copy strong { font-size: 15px; line-height: 1.65; }
.captcha-question { font-size: 20px; }
.contact-form-status { font-size: 15px; line-height: 1.6; max-width: 640px; }
#contact-submit { font-size: 16px; min-height: 50px; }
#contact-submit[aria-busy="true"] { cursor: progress; }
.field-hint { font-size: 14px; color: var(--muted); margin: 0; }
footer, footer .brand { font-size: 14px; }
.terminal-page .section-note, .terminal-command-panel p { font-size: 16px; }
.terminal-command-button { font-size: 15px; min-height: 44px; }
.terminal-screen { font-size: 16px; }
/* Motion is progressive enhancement; nothing is hidden while waiting for JS. */
.motion-target { backface-visibility: hidden; }
.hero-bottom { position: relative; }
.hero-bottom::before { content: ''; position: absolute; height: 3px; width: 70px; top: -2px; left: 0; background: #617f3c; }
@media (max-width: 1100px) {
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
  .hero { grid-template-columns: minmax(0, 1fr) 300px; gap: 40px; }
  .timeline { grid-template-columns: 1fr; }
  .nav-links { gap: 18px; }
  .hero-actions { gap: 20px; }
}
@media (max-width: 850px) {
  .hero { grid-template-columns: minmax(0, 1fr) 270px; gap: 32px; }
  .hero h1 { font-size: 48px; }
  .hero .eyebrow { max-width: 310px; }
  .nav-links { font-size: 15px; gap: 14px; }
  .nav-contact { font-size: 15px; }
  .brand-name { font-size: 14px; }
  .section-head { flex-direction: column; gap: 20px; }
  .section-note { max-width: 580px; }
  .section-note br { display: none; }
}
@media (max-width: 760px) {
  nav { padding-block: 14px; gap: 12px; }
  .nav-links { justify-content: flex-start; flex-wrap: wrap; column-gap: 22px; row-gap: 4px; font-size: 16px; }
  .nav-links .button { font-size: 16px; min-height: 44px; padding: 9px 14px; margin-left: auto; }
  .nav-links .button span { font-size: 18px; }
  .brand-name { font-size: 15px; }
  .hero { grid-template-columns: 1fr; gap: 36px; }
  .hero h1 { font-size: clamp(42px, 8.2vw, 62px); }
  .hero-copy { font-size: 18px; }
  .hero-actions .button, .hero-actions .text-link { font-size: 16px; }
  .hero-footnote { font-size: 15px; }
  .hero .eyebrow { max-width: none; }
  .profile-card { width: min(100%, 440px); display: grid; grid-template-columns: 94px minmax(0, 1fr); gap: 0 18px; padding: 22px 22px 0; }
  .profile-top { grid-column: 1 / -1; margin-bottom: 20px; font-size: 14px; }
  .profile-spark { font-size: 28px; }
  .profile-photo { width: 94px; height: 108px; grid-column: 1; grid-row: 2 / 4; margin: 0 0 18px; transform: none; }
  .profile-card h2 { grid-column: 2; align-self: end; font-size: 26px; margin-bottom: 8px; }
  .profile-card > p { grid-column: 2; font-size: 16px; margin-bottom: 18px; }
  .profile-school { grid-column: 1 / -1; padding: 16px 0; }
  .profile-school strong, .profile-school div > span { font-size: 14px; }
  .school-icon { display: grid; width: 30px; height: 30px; }
  .profile-link { grid-column: 1 / -1; margin-inline: -22px; padding-inline: 22px; font-size: 15px; }
  .hero-bottom { gap: 16px; }
  .hero-bottom .mono { font-size: 14px; }
  .hero-bottom div { font-size: 16px; line-height: 1.8; }
  .hero-bottom div span { padding-inline: 7px; }
  .eyebrow, .section-head .eyebrow { font-size: 14px; }
  .section-note { font-size: 16px; }
  .skills-grid { gap: 32px 24px; }
  footer .brand { font-size: 14px; }
}
@media (max-width: 540px) {
  .cards, .skills-grid { grid-template-columns: 1fr; }
  .project-meta { font-size: 14px; }
  .card h3 { font-size: 24px; }
  .project-summary { font-size: 16px; }
  .language-list li { font-size: 14px; }
  .project-art > span { font-size: 12px; }
  .project-art { height: 190px; }
  .timeline-item { grid-template-columns: 1fr; gap: 10px; }
  .skill-list li { font-size: 16px; }
  .captcha-copy { font-size: 15px; }
  .contact-form-status { font-size: 15px; }
  .contact-form-actions { gap: 18px; }
  .hero-actions { align-items: flex-start; }
  .profile-card h2 { font-size: 25px; }
  .profile-card > p br { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .motion-target { transform: none !important; opacity: 1 !important; }
}

/* Center the profile and keep its tilt independent of entrance animations. */
.profile-card {
  display: block;
  width: 100%;
  max-width: 440px;
  text-align: center;
  margin-inline: auto;
  rotate: 0deg;
}
.profile-top {
  position: relative;
  justify-content: center;
  padding-inline: 28px;
}
.profile-spark {
  position: absolute;
  right: 0;
  top: 50%;
  translate: 0 -50%;
}
.profile-photo {
  margin: 20px auto 22px;
  transform: none;
}
.profile-school {
  flex-direction: column;
  align-items: center;
}
.profile-link {
  position: relative;
  justify-content: center;
  padding-inline: 40px;
}
.profile-link > span {
  position: absolute;
  right: 22px;
}
@media (max-width: 760px) {
  .profile-card { rotate: 0deg; }
  .profile-card h2 { margin-bottom: 12px; }
}

/* Original engineering illustration, animated with the existing Motion library. */
.engineering-showcase {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 290px minmax(0, 1fr);
  gap: 32px;
  align-items: center;
  padding: 38px 0;
  border-block: 1px solid var(--line);
}
.engineering-copy .eyebrow { margin-bottom: 14px; color: #586d46; }
.engineering-copy h2 { font-size: 30px; line-height: 1.2; }
.engineering-copy > p:not(.eyebrow) { font-size: 16px; line-height: 1.75; margin: 16px 0; }
.engineering-visual { min-width: 0; margin: 0; padding: 20px 0 0; }
.engineering-visual svg { width: 100%; height: auto; display: block; overflow: hidden; }
.diagram-label { fill: #506345; font: 14px ui-monospace, monospace; letter-spacing: .04em; }
.diagram-tab { fill: #c7d5ca; font: 13px ui-monospace, monospace; }
.diagram-code { font: 13px ui-monospace, monospace; }
.diagram-number { fill: #8eaaa8; font: 12px ui-monospace, monospace; }
.diagram-chip { fill: #172c34; font: 600 24px ui-monospace, monospace; }
.diagram-small { fill: #38523c; font: 11px ui-monospace, monospace; }
.engineering-visual figcaption { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 14px; color: #52654b; font-size: 14px; }
@media (max-width: 1000px) {
  .engineering-showcase { grid-template-columns: 1fr; gap: 20px; }
  .engineering-copy { max-width: 620px; }
  .engineering-copy h2 br { display: none; }
  .engineering-visual { max-width: 840px; padding-top: 4px; }
}
@media (max-width: 540px) {
  .engineering-showcase { padding-block: 30px; }
  .engineering-copy h2 { font-size: 28px; }
  .engineering-visual figcaption { align-items: flex-start; }
  .engineering-visual figcaption > span { max-width: 190px; }
}

.engineering-visual svg { filter: drop-shadow(0 10px 12px #172c340c); }
.engineering-halo, .engineering-ring, .engineering-core, .engineering-check, .engineering-bars {
  transform-box: fill-box;
  transform-origin: center;
}
.engineering-bars { transform-origin: left; }
.engineering-visual figcaption { justify-content: center; }
@media (max-width: 540px) {
  .engineering-visual figcaption > span { max-width: none; }
}

/* The idea constellation gives purpose to the space between copy and portrait. */
h1 > .curious-heading {
  display: block;
  font-family: inherit;
  font-style: normal;
  font-weight: inherit;
  letter-spacing: inherit;
  color: var(--text);
}
.hero-main { position: relative; }
.hero-curiosity { width: 112px; margin: 28px auto 0; }
.curiosity-icon { display: block; width: 100%; height: auto; overflow: visible; }
.curiosity-glow, .curiosity-ripple, .curiosity-rays, .curiosity-spark,
.curiosity-orbit, .curiosity-orbit-reverse, .curiosity-thought {
  transform-box: fill-box;
  transform-origin: center;
}
@media (min-width: 1150px) {
  .hero-main {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 180px;
    gap: 32px;
    align-items: start;
  }
  .hero-curiosity { width: 180px; margin: 115px 0 0; }
}
@media (max-width: 760px) {
  .hero-curiosity { width: 128px; margin: 30px auto 0; }
}

.linkedin-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 48px;
  min-height: 48px;
  color: #0a66c2;
  border-radius: 6px;
  transition: transform 180ms ease, color 180ms ease;
}
.linkedin-link:hover { color: #004182; transform: translateY(-2px); }
.linkedin-logo { display: block; width: 32px; height: 32px; }
#contact .section-head .linkedin-link { margin-top: 0; }
.engineering-visual { padding-bottom: 16px; }

/* A shared experience layout keeps every mark beside its heading. */
.timeline-entry {
  display: grid;
  align-self: start;
  grid-template-columns: minmax(0, 1fr) 88px;
  gap: 10px 16px;
  align-items: start;
  min-width: 0;
}
.timeline-entry-copy { display: contents; }
.timeline-entry-copy > strong { grid-column: 1; align-self: center; }
.timeline-entry-copy > p { grid-column: 1 / -1; margin: 0; }
.experience-logo {
  grid-column: 2;
  grid-row: 1;
  width: 88px;
  height: 48px;
  object-fit: contain;
  padding: 4px;
  background: white;
  border: 1px solid #e5e9e0;
  border-radius: 6px;
}

/* Selected work: a sketch becoming a small portfolio of finished projects. */
#projects .section-head, #experience .section-head, #skills .section-head { align-items: center; }
.projects-animation, .experience-animation, .skills-animation { width: 340px; max-width: 42%; margin: 0; flex: 0 0 auto; }
.projects-illustration, .experience-illustration, .skills-illustration { display: block; width: 100%; height: auto; overflow: visible; }
.work-pencil, .work-complete { transform-box: fill-box; transform-origin: center; }
@media (max-width: 850px) {
  .projects-animation, .experience-animation, .skills-animation { align-self: flex-end; max-width: 60%; }
}
@media (max-width: 540px) {
  #projects .section-head, #experience .section-head, #skills .section-head { align-items: flex-start; }
  .projects-animation, .experience-animation, .skills-animation { width: 260px; max-width: 100%; align-self: flex-start; }
}

.learning-glow, .learning-gear, .learning-result { transform-box: fill-box; transform-origin: center; }
.learning-page { transform-box: fill-box; transform-origin: left; }

.foundation-glow { transform-box: fill-box; transform-origin: center; }

/* Keep the middle headline on one line at both desktop and phone widths. */
.hero-main { min-width: 0; }
.hero-text { min-width: 0; container-type: inline-size; }
.hero h1 > .thoughtful-heading {
  display: block;
  white-space: nowrap;
  font-family: inherit;
  font-style: normal;
  font-weight: inherit;
  color: var(--text);
  font-size: min(1em, 11cqw);
  letter-spacing: -.064em;
}

/* Repository-backed projects expose their source beside the project details. */
.art-tracker { background: #e3ebe5; color: #264f45; }
.art-tracker strong { font-size: 30px; letter-spacing: -.045em; }
.art-tracker::after {
  content: '';
  position: absolute;
  right: 24px;
  top: 22px;
  width: 45px;
  height: 88px;
  border: 2px solid #9ab5a6;
  border-radius: 10px;
  background: linear-gradient(#c5d9c4 0 0) 8px 19px / 25px 6px no-repeat,
              linear-gradient(#c5d9c4 0 0) 8px 33px / 25px 6px no-repeat,
              linear-gradient(#c5d9c4 0 0) 8px 47px / 25px 6px no-repeat;
  opacity: .6;
  z-index: -1;
}
.project-links { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 20px; margin: 0 22px 18px; }
.project-source-link, .project-live-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  font-size: 15px;
  font-weight: 600;
  color: #38523c;
}
.project-source-link svg { width: 19px; height: 19px; flex: none; }
.project-source-link:hover, .project-live-link:hover { text-decoration: underline; text-underline-offset: 4px; }

/* Keep the verification sum beside its answer on every screen size. */
.required-fields-note { margin: 0 0 22px; color: #5d6d57; font-size: 15px; }
.required-marker, .required-fields-note > span { color: #8c3434; font-weight: 700; }
.captcha-box { flex-direction: column; align-items: stretch; gap: 16px; }
.captcha-copy { display: block; }
.captcha-copy strong { margin-right: 8px; }
.captcha-answer-row { display: grid; grid-template-columns: max-content minmax(0, 150px); align-items: end; gap: 14px; }
.captcha-answer-row .captcha-question { line-height: 50px; white-space: nowrap; }
.captcha-answer-row .contact-field { width: 100%; max-width: 150px; }
