@font-face{font-family:'JetBrains Mono';src:url('./fonts/JetBrainsMono-Regular.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('./fonts/JetBrainsMono-Medium.woff2') format('woff2');font-style:normal;font-weight:500;font-display:swap}
:root{color-scheme:dark;--accent:#6edfff;--white:#e0e8ed;--muted:#9faab2;--black:#101112;--surface:#171819;--rule:#ffffff14;--gutter:clamp(20px,3vw,40px);--content-width:1080px;--font-mono:'JetBrains Mono',Menlo,Monaco,Consolas,'Liberation Mono',monospace;--text-size:15px;--line-height:1.6}
.about-content{max-width:68ch;line-height:inherit}.about-content h2{font:inherit;font-weight:500;color:var(--accent);margin:0 0 12px}
.project-table td:nth-last-child(2){white-space:normal;min-width:24ch;max-width:55ch}
.project-table td:nth-last-child(3){white-space:normal;min-width:18ch;max-width:36ch}
*{box-sizing:border-box}
html{min-height:100%;background:var(--black)}
/* Filter the two visual surfaces, leaving the fixed viewport layout intact. */
html.inverted,html.inverted body{background:#efeeed}
html.inverted #terminal{background:var(--black);filter:invert(1)}
html.inverted #matrix{filter:invert(1)}
html.inverted #matrix::backdrop{background:#fff}
body{margin:0;overflow:hidden;color:var(--white);background:var(--black);font:var(--text-size)/var(--line-height) var(--font-mono);font-variant-ligatures:none;overflow-wrap:anywhere}
#terminal{position:fixed;top:var(--viewport-top,0px);left:0;width:100%;height:var(--viewport-height,100dvh);display:flex;flex-direction:column;overflow:hidden}
#terminal-output{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:28px var(--gutter) 8px;scroll-padding:24px 0;scrollbar-color:#3e4850 transparent}
#terminal-output:focus-visible{outline:1px solid var(--muted);outline-offset:-2px}
#command-dock{flex:none;background:var(--surface);border-top:1px solid var(--rule);padding:20px var(--gutter) max(20px,env(safe-area-inset-bottom));transition:border-color 160ms ease,box-shadow 160ms ease}
#command-dock:focus-within{border-color:#6edfff50;box-shadow:0 -4px 20px #6edfff05}
#welcome,#history,#prompt-form,#hint{width:100%;max-width:var(--content-width)}
#welcome{color:var(--accent);margin:0 0 36px;min-height:162px;overflow:hidden}
#art{font:inherit;font-size:13px;line-height:1;white-space:pre;letter-spacing:0;margin:0;text-shadow:0 0 2px #b5f1ff,0 0 7px #6edfffbb,0 0 18px #28bfff60;animation:phosphor 7s infinite}
.welcome-command{display:flex;align-items:baseline;gap:1ch;color:var(--muted);margin:0 0 20px}
.art-line{display:block;min-height:1em}
#welcome-intro{color:var(--accent);font:inherit;margin:16px 0 0;transform:translateX(20px);text-shadow:0 0 3px #6edfffbb,0 0 9px #6edfff70}
#welcome-intro::after{content:'';display:block;width:min(46vw,540px);height:2px;margin-top:16px;transform:translateX(-20px);background:repeating-linear-gradient(to right,var(--accent) 0 16px,transparent 16px 24px);filter:drop-shadow(0 0 3px #6edfff70)}
@keyframes phosphor{0%,94%,98%,100%{opacity:1}95%{opacity:.82}97%{opacity:.95}}
.entry{margin:0 0 32px}.echo{margin:0 0 12px;white-space:pre-wrap}.output{margin:0;white-space:pre-wrap;max-width:85ch;font:inherit}.output-heading{color:var(--muted);margin:0 0 12px}
.command-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;max-width:800px}
.project-hint{color:var(--muted);margin-top:8px}
.external-link{color:var(--accent);text-underline-offset:3px}.external-link:focus-visible{outline:1px solid var(--accent);outline-offset:3px}
.project-group{margin:0 0 20px}.project-heading{margin:0 0 16px}.table-scroll{max-width:100%;overflow-x:auto;width:max-content}.table-scroll:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.project-table{border-collapse:collapse;border-spacing:0;font:inherit;text-align:left;white-space:nowrap}.project-table th,.project-table td{border:0;border-bottom:1px solid var(--rule);padding:14px 12px;vertical-align:top}.project-table th{font-size:inherit;font-weight:normal;color:var(--muted);padding-top:0;padding-bottom:12px;border-bottom-color:#ffffff26}
.project-table th:first-child,.project-table td:first-child{padding-left:0}
.project-table th:last-child,.project-table td:last-child{padding-right:0}
.project-table tbody tr{transition:background-color 160ms ease}
.project-table tbody tr:hover{background:#6edfff05}.project-table a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.project-table a:visited{color:var(--accent)}.project-table a:hover{color:var(--accent)}.project-table a:focus-visible{outline:1px solid var(--accent);outline-offset:2px}
button{color:var(--accent);font:inherit;border:1px solid #6edfff3d;background:#6edfff0a;padding:3px 9px;cursor:pointer;border-radius:2px;transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease}
button:hover{color:#c2f4ff;background:#6edfff1a;border-color:#6edfff80}button:focus-visible{outline:1px solid var(--accent);outline-offset:3px}
#prompt-form{display:flex;align-items:baseline;gap:1ch;margin:0;min-height:23px}.prompt-symbol{color:var(--accent);flex-shrink:0}
.command-field{position:relative;flex:1;min-width:0;overflow:hidden;line-height:inherit}
#command{display:block;width:100%;min-width:0;padding:0 1ch 0 0;margin:0;border:0;border-radius:0;background:transparent;color:var(--accent);font:inherit;line-height:inherit;outline:none;caret-color:transparent}
#cursor-measure{position:absolute;visibility:hidden;white-space:pre;font:inherit;pointer-events:none}
#block-cursor{position:absolute;top:.15em;left:0;width:1ch;height:1.15em;line-height:1.15em;background:var(--accent);color:var(--black);white-space:pre;pointer-events:none;visibility:visible;animation:cursor-blink 1s step-end infinite}
#block-cursor[hidden]{display:none}
@keyframes cursor-blink{0%,49%{opacity:1}50%,100%{opacity:0}}
#prompt-form:focus-within .prompt-symbol{text-shadow:0 0 3px #6edfffbb,0 0 9px #6edfff70}
#hint{color:var(--muted);font:inherit;margin:8px 0 0}#hint button{font:inherit}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
::selection{color:#000;background:var(--accent)}
#terminal :where(*),#matrix :where(*){text-shadow:0 0 3px color-mix(in srgb,currentColor 70%,transparent),0 0 9px color-mix(in srgb,currentColor 40%,transparent)}
a{transition:color 160ms ease,text-decoration-color 160ms ease}
a:hover{color:#c2f4ff}
#block-cursor{box-shadow:0 0 5px #6edfffcc,0 0 14px #6edfff80}
.project-cards{display:none}
.identity-art{font:inherit;font-size:clamp(8px,2.5vw,13px);line-height:1;color:var(--accent);white-space:pre;margin:0 0 16px}
#matrix{position:fixed;inset:0;width:100%;max-width:none;height:var(--viewport-height,100dvh);max-height:none;margin:0;padding:0;border:0;background:#000;color:var(--accent);overflow:hidden}
#matrix::backdrop{background:#000}
#matrix pre{font:15px/18px var(--font-mono);letter-spacing:1px;white-space:pre;margin:0;text-shadow:0 0 8px #6edfff99}
#matrix button{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:10px 16px;border:1px solid #285c70}
@media(max-width:640px){
  .project-group>.table-scroll{display:none}
  .project-cards{display:block;list-style:none;margin:0;padding:0;max-width:100%}
  .project-cards li{border-top:1px solid var(--rule);padding:20px 0}
  .project-cards h3{font:inherit;font-weight:500;color:var(--accent);margin:0 0 8px}
  .project-card-description{white-space:pre-wrap;overflow-wrap:anywhere}
  .project-card-links{display:flex;flex-wrap:wrap;gap:8px}
  .project-card-links a{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);text-underline-offset:3px}
  .project-card-links a:focus-visible{outline:1px solid var(--accent);outline-offset:2px}
}
@media(max-width:540px){
  :root{--text-size:16px}
  #terminal-output{padding:20px 16px 8px}
  #command-dock{padding:16px 16px max(16px,env(safe-area-inset-bottom))}
  #art{font-size:clamp(8px,2.5vw,13px);letter-spacing:0}
  #welcome{min-height:132px;margin-bottom:24px}
  .command-list button,#hint button{padding:4px 8px}
}
@media(prefers-reduced-motion:reduce){#art,#block-cursor{animation:none}*,*::before,*::after{transition:none!important}}

