*{box-sizing:border-box}html,body{background:#000;height:100%;margin:0;overflow:hidden}.app{--header-h:52px;background:#000;flex-direction:column;height:100dvh;display:flex}.app-header{flex:0 0 var(--header-h);background:#0a0a0ef2;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:16px;padding:0 16px;display:flex}.brand{color:#fff;letter-spacing:.02em;font:600 15px/1 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;text-decoration:none}.app-header nav{gap:16px;display:flex}.nav-link{color:#b9b9c6;font:13px/1 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;text-decoration:none}.nav-link:hover{color:#fff}.nav-link--active{color:#fff;border-bottom:2px solid #fff9;padding-bottom:2px}.app-main{flex:1;min-height:0;overflow:auto}.page{color:#e8e8ee;max-width:720px;margin:0 auto;padding:48px 24px;font:15px/1.6 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.page h1{margin:0 0 16px;font-size:26px}.page-link{color:#8ab4ff;text-decoration:none}.page-link:hover{text-decoration:underline}.gpu-layout{--gpu-pad:16px;--gpu-aspect:1.77778;--panel-w:200px;--gpu-frame-w:max(0px, calc(100vw - 2 * var(--panel-w) - 2 * var(--gpu-pad)));--gpu-frame-h:min(calc(100dvh - var(--header-h) - 2 * var(--gpu-pad)), calc(var(--gpu-frame-w) / var(--gpu-aspect)));color:#e8e8ee;background:#000;align-items:center;height:100%;font:13px/1.4 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;display:flex}.gpu-stage{min-width:0;padding:var(--gpu-pad);flex:1;place-items:center;display:grid}.gpu-stage:fullscreen{background:#000;padding:0}.gpu-stage:fullscreen .gpu-frame{width:auto;max-width:100%;height:100%}.gpu-frame{height:var(--gpu-frame-h);aspect-ratio:var(--gpu-aspect);border:1px solid #ffffff14;border-radius:10px;width:auto;position:relative;overflow:hidden;box-shadow:0 10px 40px #00000080}.gpu-frame canvas{width:100%;height:100%;display:block}.gpu-fullscreen{color:#e8e8ee;font:inherit;cursor:pointer;opacity:.75;background:#0a0a0e99;border:1px solid #ffffff2e;border-radius:6px;padding:4px 10px;position:absolute;top:8px;right:8px}.gpu-fullscreen:hover{opacity:1}.gpu-status{text-align:center;color:#e8e8ee;background:#06060aeb;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex;position:absolute;inset:0}.gpu-status-title{margin:0;font-size:15px;font-weight:600}.gpu-status-message{color:#b9b9c6;max-width:46ch;margin:0;font-size:12px;line-height:1.5}.gpu-status-reload{color:#e8e8ee;font:inherit;cursor:pointer;background:#0a0a0e99;border:1px solid #ffffff2e;border-radius:6px;margin-top:4px;padding:6px 14px}.gpu-status-reload:hover{background:#1e1e26e6}.gpu-panel{flex:0 0 var(--panel-w);height:var(--gpu-frame-h);background:#101014e6;max-width:40vw;padding:14px;overflow-y:auto}.gpu-panel--left,.gpu-panel--right{border:1px solid #ffffff14}.gpu-panel h2{letter-spacing:.02em;margin:0 0 10px;font-size:15px}.gpu-panel hr{border:0;border-top:1px solid #ffffff1f;margin:10px 0}.toggle{align-items:center;gap:8px;margin:6px 0;display:flex}.slider{grid-template-columns:1fr auto;align-items:center;gap:2px 8px;margin:8px 0;display:grid}.slider .name{color:#b9b9c6}.slider input{grid-column:1/-1;width:100%;margin:0}.slider .value{text-align:right;font-variant-numeric:tabular-nums;color:#9a9aa8}.radio-group{flex-direction:column;gap:4px;margin:6px 0 10px;display:flex}.radio{cursor:pointer;align-items:center;gap:8px;display:flex}.radio input{accent-color:#8ab4ff;margin:0}.color{justify-content:space-between;align-items:center;gap:8px;margin:8px 0;display:flex}.color .name{color:#b9b9c6}.color input{cursor:pointer;background:0 0;border:1px solid #ffffff2e;border-radius:4px;width:48px;height:24px;padding:0}.hint{color:#9a9aa8;margin:10px 0 0}.readout{color:#9a9aa8;font-variant-numeric:tabular-nums;margin:10px 0 0}@media (width<=900px){.gpu-layout{--gpu-pad:8px;flex-direction:column;align-items:stretch;height:auto;min-height:100%}.gpu-panel{border:0;border-top:1px solid #ffffff14;flex:none;max-width:none;height:auto;max-height:32dvh}.gpu-frame{height:auto;width:min(100%, (100dvh - var(--header-h) - 2 * var(--gpu-pad)) * var(--gpu-aspect))}}.portfolio{color:#e8e8ee;max-width:880px;margin:0 auto;padding:64px 24px 88px;font:15px/1.65 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.hero{margin-bottom:64px}.hero-kicker{color:#8ab4ff;letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px;font-size:13px}.hero h1{margin:0 0 20px;font-size:40px;line-height:1.1}.hero-lede{color:#c6c6d2;max-width:64ch;margin:0 0 28px;font-size:17px}.hero-actions,.project-links{flex-wrap:wrap;gap:10px;display:flex}.button{color:#dce8ff;background:#8ab4ff1f;border:1px solid #8ab4ff80;border-radius:8px;padding:9px 16px;font-size:14px;text-decoration:none;display:inline-block}.button:hover{background:#8ab4ff38}.button--ghost{color:#c6c6d2;background:0 0;border-color:#ffffff2e}.button--ghost:hover{background:#ffffff0f}.section{margin-bottom:56px}.section h2{border-bottom:1px solid #ffffff1a;margin:0 0 20px;padding-bottom:10px;font-size:22px}.section-note{color:#9a9aa8;margin:14px 0 0;font-size:13px}.pillars,.skills{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.pillar{background:#101014b3;border:1px solid #ffffff14;border-radius:10px;padding:18px}.pillar h3{margin:0 0 10px;font-size:15px}.pillar p{color:#b9b9c6;margin:0;font-size:13px}.project{background:#101014b3;border:1px solid #ffffff14;border-radius:12px;padding:22px}.project-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.project h3{margin:0 0 12px;font-size:18px}.project p{color:#c6c6d2;max-width:68ch;margin:0 0 16px}.project-tags{flex-wrap:wrap;gap:6px;margin:0 0 12px;display:flex}.tag{color:#9a9aa8;border:1px solid #ffffff24;border-radius:999px;padding:2px 8px;font-size:11px}.entry-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.entry h3{margin:0 0 10px;font-size:17px}.entry-meta{color:#9a9aa8;font-size:13px}.entry ul{color:#c6c6d2;margin:0;padding-left:20px}.entry li{margin:6px 0}.skill-group h3{color:#8ab4ff;letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px;font-size:12px}.skill-group p{color:#c6c6d2;margin:0;font-size:13px}.section--contact p{color:#c6c6d2}.section--contact a{color:#8ab4ff;text-decoration:none}.section--contact a:hover{text-decoration:underline}.hrc-notes{color:#d6d6e0;background:#0a0a0e;border-top:1px solid #ffffff14;max-width:760px;margin:0 auto;padding:56px 24px 96px;font:15px/1.7 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.hrc-notes h2{color:#fff;margin:0 0 20px;font-size:26px}.hrc-notes h3{color:#fff;margin:36px 0 12px;font-size:17px}.hrc-notes p{margin:0 0 14px}.hrc-notes .lead{color:#c6c6d2;font-size:16px}.hrc-notes ul{margin:0 0 14px;padding-left:20px}.hrc-notes li{margin:6px 0}.hrc-notes a{color:#8ab4ff;text-decoration:none}.hrc-notes a:hover{text-decoration:underline}@media (width<=900px){.hero h1{font-size:32px}.pillars,.skills{grid-template-columns:1fr}}