:root{--bg-void: #05070f;--bg-panel: #0b1120;--bg-panel-raised: #121a2e;--border-subtle: #1e2a44;--star-white: #eaf2ff;--accent-primary: #4da3ff;--accent-primary-hover: #7dc0ff;--accent-secondary: #7b6cff;--accent-glow: rgba(77, 163, 255, .35);--text-primary: #eaf2ff;--text-muted: #93a4c3;--text-faint: #5b6b8c}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg-void);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}a{color:var(--accent-primary)}a:hover{color:var(--accent-primary-hover)}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.view-heading:focus-visible,.view-heading:focus{outline:none}.app-shell{min-height:100%;display:flex;flex-direction:column;position:relative}.starfield-canvas{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.starfield-canvas canvas{display:block}#arrival-flash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;pointer-events:none;background:radial-gradient(circle at var(--arrival-x, 50%) var(--arrival-y, 50%),var(--arrival-color, transparent) 0%,transparent 70%);opacity:0;mix-blend-mode:screen}#arrival-flash.arrival-flash-active{animation:arrival-flash .9s ease-out forwards}@keyframes arrival-flash{0%{opacity:0}12%{opacity:.45}to{opacity:0}}@media (prefers-reduced-motion: reduce){#arrival-flash.arrival-flash-active{animation:none;opacity:0}}.site-nav{position:fixed;inset:0 0 auto 0;z-index:20;background:#0b1120b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-subtle)}.site-nav-inner{max-width:72rem;margin:0 auto;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.site-nav .brand{font-weight:700;font-size:1.25rem;text-decoration:none;color:var(--text-primary)}.site-nav nav ul{list-style:none;display:flex;gap:1.5rem;margin:0;padding:0}.site-nav nav a{text-decoration:none;color:var(--text-muted);padding-bottom:.25rem;border-bottom:2px solid transparent;transition:color .15s ease,border-color .15s ease}.site-nav nav a:hover,.site-nav nav a.active{color:var(--text-primary);border-color:var(--accent-primary)}.app-main{flex:1;position:relative;z-index:1;padding-top:5rem}.view{max-width:72rem;margin:0 auto;padding:2rem 1.5rem 4rem;animation:view-fade-in .65s cubic-bezier(.16,1,.3,1) both}@keyframes view-fade-in{0%{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.view{animation-duration:1ms}}.view-projects,.view-about,.view-project-detail{background:#0b1120b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:1rem;margin-top:1.5rem;box-shadow:0 0 0 1px var(--border-subtle)}.view-home,.view-projects,.view-about,.view-project-detail{animation:none}.view-projects h2,.view-about h2{font-size:2rem;margin-bottom:1.5rem}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.5rem}.project-card{display:block;background:var(--bg-panel-raised);border:1px solid var(--border-subtle);border-radius:.75rem;overflow:hidden;text-decoration:none;color:var(--text-primary);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.project-card:hover,.project-card:focus-visible{transform:translateY(-4px);border-color:var(--accent-primary);box-shadow:0 0 24px var(--accent-glow)}.project-card-thumb{aspect-ratio:16 / 9;overflow:hidden;background:var(--bg-panel)}.project-card-thumb img{width:100%;height:100%;object-fit:cover}.project-card-body{padding:1rem 1.25rem 1.25rem}.project-card-body h3{margin:0 0 .5rem;font-size:1.1rem}.project-card-body p{margin:0 0 .75rem;color:var(--text-muted);font-size:.9rem}.project-card-skeleton{aspect-ratio:4 / 3;background:linear-gradient(100deg,var(--bg-panel-raised) 30%,var(--bg-panel) 50%,var(--bg-panel-raised) 70%);background-size:200% 100%;animation:skeleton-pulse 1.4s ease-in-out infinite}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.tag-row{display:flex;flex-wrap:wrap;gap:.4rem}.tag-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .55rem;border-radius:999px;font-size:.72rem;color:var(--star-white);white-space:nowrap}.tag-chip img{width:.85rem;height:.85rem;object-fit:contain}.error-text{color:#ff8a8a}.back-link{display:inline-block;margin-bottom:1.5rem;text-decoration:none;color:var(--text-muted)}.back-link:hover{color:var(--accent-primary)}.project-detail-thumb{border-radius:.75rem;overflow:hidden;margin-bottom:1.5rem;border:1px solid var(--border-subtle)}.project-detail-thumb img{width:100%;display:block}.view-project-detail h1{margin-bottom:.25rem}.project-detail-meta{color:var(--text-faint);margin:0 0 .75rem}.project-detail-description{color:var(--text-muted);margin:1rem 0;font-size:1.05rem}.project-detail-links{display:flex;gap:.75rem;margin:1rem 0}.link-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg-panel-raised);border:1px solid var(--border-subtle);border-radius:.5rem;text-decoration:none;color:var(--text-primary);transition:border-color .15s ease}.link-button:hover{border-color:var(--accent-primary)}.link-button img{width:1.1rem;height:1.1rem}.video-embed{position:relative;padding-top:56.25%;margin:1.5rem 0;border-radius:.75rem;overflow:hidden;background:var(--bg-panel)}.video-embed iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.markdown-content{margin-top:1.5rem;color:var(--text-muted);line-height:1.7}.markdown-content pre,.markdown-content code{text-align:left}.markdown-content pre{border-radius:.5rem;padding:1rem;overflow-x:auto}.writeup-placeholder{margin-top:1.5rem;color:var(--text-faint);font-style:italic}.view-home{min-height:calc(100vh - 5rem);display:flex;align-items:center;justify-content:center;text-align:center}.hero-copy h1{font-size:clamp(2rem,5vw,3.5rem);margin-bottom:1rem}.hero-subtitle{font-size:1.25rem;color:var(--text-muted);margin-bottom:1.5rem}.hero-line{color:var(--text-muted);margin:.25rem 0}.contact-links a{text-decoration:none}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub Dark Dimmed
  Description: Dark dimmed theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Colors taken from GitHub's CSS
*/.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#6cb6ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-comment,.hljs-code,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}
