:root{--bg: #400249;--bg-elevated: #12151c;--bg-inset: #0e1015;--border: #232733;--text: #e3e6ee;--text-dim: #8b93a7;--accent: #5eead4;--accent-2: #c792ea;--accent-warm: #f5a97f;--radius: 6px;--max-width: 880px;--mono: ui-monospace, "JetBrains Mono", "Fira Code", "Cascadia Code", Menlo, Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--mono);font-size:16px;line-height:1.65;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px;background-position:center top;background-attachment:fixed}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent);color:#04110e}h1,h2,h3,h4{line-height:1.25;margin:0 0 .5em;font-weight:600}p{margin:0 0 1em;color:var(--text)}.container{max-width:var(--max-width);margin:0 auto;padding:0 24px}.eyebrow{display:block;font-size:.85rem;color:var(--text-dim);margin-bottom:.5em}.eyebrow:before{content:"// ";color:var(--accent-2)}header.site-header{position:sticky;top:0;z-index:20;background:#0b0d12d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.nav-inner{max-width:var(--max-width);margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;height:56px}.nav-inner .brand{color:var(--text);font-weight:600}.nav-inner .brand .dot{color:var(--accent)}.nav-links{display:flex;gap:4px;list-style:none;margin:0;padding:0}.nav-links a{color:var(--text-dim);padding:6px 12px;border-radius:var(--radius);font-size:.9rem}.nav-links a:hover,.nav-links a.active{color:var(--accent);background:var(--bg-elevated);text-decoration:none}.nav-toggle{display:none;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:var(--mono);font-size:1.1rem;padding:4px 10px;cursor:pointer}@media (max-width: 640px){.nav-toggle{display:block}.nav-links{position:absolute;top:56px;left:0;right:0;flex-direction:column;background:var(--bg-elevated);border-bottom:1px solid var(--border);padding:8px;display:none}.nav-links.open{display:flex}}.window{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.window-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-inset);border-bottom:1px solid var(--border)}.window-dot{width:10px;height:10px;border-radius:50%}.window-dot.red{background:#f27878}.window-dot.yellow{background:#f5c778}.window-dot.green{background:#7ee787}.window-title{margin-left:8px;color:var(--text-dim);font-size:.8rem}.window-body{padding:24px}.hero{padding:72px 0 48px}.hero h1{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:.3em}.hero .role{color:var(--accent-2);font-size:1.05rem;margin-bottom:1.2em}.hero .role:before{content:"> ";color:var(--accent)}.cursor{display:inline-block;width:.55ch;background:var(--accent);margin-left:2px;animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion: reduce){.cursor{animation:none}}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:1.5em;list-style:none;padding:0}.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.9rem;color:var(--text);background:transparent;border:1px solid var(--border);border-radius:var(--radius);padding:9px 16px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.btn:before{content:"$";color:var(--text-dim)}.btn:hover{color:var(--accent);border-color:var(--accent);background:#5eead414;text-decoration:none}.btn.primary{color:var(--bg);background:var(--accent);border-color:var(--accent)}.btn.primary:before{color:var(--bg);opacity:.6}.btn.primary:hover{background:var(--text);border-color:var(--text);color:var(--bg)}section.block{padding:48px 0;border-top:1px solid var(--border)}.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--border)}.timeline li{position:relative;padding:0 0 28px 28px}.timeline li:last-child{padding-bottom:0}.timeline li:before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}.timeline .when{color:var(--text-dim);font-size:.8rem;display:block;margin-bottom:2px}.timeline h3{font-size:1.05rem;margin-bottom:2px}.timeline .where{color:var(--accent-2);font-size:.9rem;display:block;margin-bottom:6px}.timeline p{color:var(--text-dim);margin-bottom:0;font-size:.95rem}.timeline .sub-heading{color:var(--text);font-size:.9rem;font-weight:600;margin:10px 0 4px}.timeline li>.sub-heading:first-of-type{margin-top:0}.timeline .cw-bullets{color:var(--text-dim);font-size:.95rem;margin:0;padding-left:1.2em}.timeline .cw-bullets li{padding:0;margin-bottom:.3em}.timeline .cw-bullets li:before{content:none}.timeline .cw-bullets li:last-child{margin-bottom:0}.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0 0 1.5em}.tags li{background:var(--bg-elevated);border:1px solid var(--border);color:var(--accent);font-size:.82rem;padding:4px 10px;border-radius:var(--radius)}.tag-group{margin-bottom:1.5em}.tag-group:last-child{margin-bottom:0}.tag-group .group-label{color:var(--text-dim);font-size:.8rem;display:block;margin-bottom:8px}.badges{list-style:none;margin:0;padding:0;display:grid;gap:10px}.badges li{display:flex;justify-content:space-between;gap:12px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;font-size:.9rem}.badges .badge-year{color:var(--text-dim);white-space:nowrap}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;transition:border-color .15s,transform .15s}.card:hover{border-color:var(--accent);transform:translateY(-2px)}.card h3{font-size:1rem;margin-bottom:6px}.card h3 a{color:var(--text)}.card h3 a:hover{color:var(--accent)}.card p{color:var(--text-dim);font-size:.9rem;flex-grow:1}.card .lang{align-self:flex-start;font-size:.75rem;color:var(--accent-warm);border:1px solid var(--border);border-radius:var(--radius);padding:2px 8px;margin-bottom:10px}.card .btn{margin-top:14px;align-self:flex-start}.react-status{color:var(--text-dim);font-size:.85rem;margin-bottom:20px}.lang-stats{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0 0 20px}.lang-stats li{display:flex;align-items:center;gap:6px;background:var(--bg-elevated);border:1px solid var(--border);font-size:.82rem;padding:4px 10px;border-radius:var(--radius)}.lang-stats-name{color:var(--text)}.lang-stats-count{color:var(--text-dim)}.react-filters{margin-bottom:20px}.react-filters .filter-chip{cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .15s,color .15s,background .15s}.react-filters .filter-chip:hover{border-color:var(--accent)}.react-filters .filter-chip.is-active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.coursework-group{margin-bottom:2em}.coursework-group:last-child{margin-bottom:0}.coursework-group h3{font-size:1.05rem;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.group-grade{color:var(--text-dim);font-size:.8rem;font-weight:400}.coursework-list{display:flex;flex-direction:column;gap:10px}.coursework{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:0 20px}.coursework summary{list-style:none;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;font-weight:600}.coursework summary::-webkit-details-marker{display:none}.coursework summary:before{content:"▸";color:var(--accent);margin-right:10px;display:inline-block;transition:transform .15s}.coursework[open] summary:before{transform:rotate(90deg)}.coursework .cw-title{flex:1;text-align:left}.coursework .grade{flex-shrink:0;color:var(--accent);border:1px solid var(--border);border-radius:var(--radius);font-size:.8rem;font-weight:400;padding:2px 8px}.cw-body{border-top:1px solid var(--border);padding:16px 0 20px}.cw-body p{color:var(--text-dim);font-size:.9rem}.cw-body ul:not(.tags){margin:0 0 1em;padding-left:1.2em;color:var(--text-dim);font-size:.9rem}.cw-body ul:not(.tags) li{margin-bottom:.6em}.cw-body strong{color:var(--text)}.video-embed{position:relative;aspect-ratio:16 / 9;width:100%;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);margin-top:.5em}.video-embed iframe{display:block;width:100%;height:100%;border:0}footer.site-footer{border-top:1px solid var(--border);padding:32px 0 40px;margin-top:24px}.footer-icons{display:flex;gap:16px;list-style:none;padding:0;margin:0 0 16px}.footer-icons a{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim)}.footer-icons a:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.footer-icons svg{width:18px;height:18px;fill:currentColor}.footer-meta{color:var(--text-dim);font-size:.8rem;display:flex;flex-wrap:wrap;gap:4px 16px}.footer-meta a{color:var(--text-dim)}.footer-meta a:hover{color:var(--accent)}.now-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px 24px;max-width:560px;transition:border-color .15s}.now-card:hover{border-color:var(--accent)}.now-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.now-live{display:inline-flex;align-items:center;gap:7px;font-size:.78rem;color:var(--accent)}.now-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse-ring 1.8s ease-out infinite}@keyframes pulse-ring{0%{box-shadow:0 0 #5eead499}70%{box-shadow:0 0 0 6px #5eead400}to{box-shadow:0 0 #5eead400}}@media (prefers-reduced-motion: reduce){.now-pulse{animation:none}}.now-lang{font-size:.78rem;color:var(--accent-warm);border:1px solid var(--border);border-radius:var(--radius);padding:2px 8px}.now-title{font-size:1.15rem;margin-bottom:8px}.now-title a{color:var(--text)}.now-title a:hover{color:var(--accent);text-decoration:none}.now-desc{color:var(--text-dim);font-size:.9rem;margin-bottom:16px}.page-heading{padding:48px 0 24px}.page-heading .eyebrow{margin-bottom:.3em}.page-heading p{color:var(--text-dim);max-width:60ch}
