:root{--ground:#d6dee4;--ground-2:#c7d1d8;--ink:#121417;--muted:#45505a;--gold:#edb23b;--sticker:#fff;--panel:#f5f7f8;--line:#a9b5be;--f-display:"Anton", Impact, "Arial Narrow Bold", sans-serif;--f-label:"Lilita One", "Arial Rounded MT Bold", "Trebuchet MS", sans-serif;--f-body:"Bricolage Grotesque", "Segoe UI", Roboto, system-ui, sans-serif;--f-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--gutter-l:max(16px, env(safe-area-inset-left,0px));--gutter-r:max(16px, env(safe-area-inset-right,0px));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html{background:var(--ground)}body{background:var(--ground);color:var(--ink);font-family:var(--f-body);margin:0;font-size:16px;line-height:1.5;overflow-x:hidden}*{box-sizing:border-box}h1,h2,h3{text-wrap:balance}a{color:var(--ink)}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--ink);outline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stage{border-top:2px solid var(--ink);height:clamp(520px,100svh - 190px,860px);position:relative;overflow:hidden}.disc{z-index:1;width:var(--d,560px);height:var(--d,560px);background:var(--gold);transform:translate(var(--x,50vw), var(--y,300px)) translate(-50%, -50%);pointer-events:none;border-radius:50%;position:absolute;top:0;left:0}#scene{z-index:3;cursor:grab;touch-action:pan-y;width:100%;height:100%;display:block;position:absolute;inset:0}#scene.is-pointing{cursor:pointer}#scene:active{cursor:grabbing}.labels{z-index:4;pointer-events:none;transition:opacity .3s,visibility;position:absolute;inset:0}.labels[hidden]{display:none}.labels.is-away{opacity:0;visibility:hidden;transition:opacity .2s,visibility 0s .2s}.tag{pointer-events:auto;cursor:pointer;min-width:44px;min-height:44px;font-family:var(--f-label);letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;color:var(--sticker);text-shadow:3px 0 0 var(--ink), -3px 0 0 var(--ink), 0 3px 0 var(--ink), 0 -3px 0 var(--ink), 2px 2px 0 var(--ink), -2px 2px 0 var(--ink), 2px -2px 0 var(--ink), -2px -2px 0 var(--ink), 3px 1.5px 0 var(--ink), -3px 1.5px 0 var(--ink), 3px -1.5px 0 var(--ink), -3px -1.5px 0 var(--ink), 1.5px 3px 0 var(--ink), -1.5px 3px 0 var(--ink), 1.5px -3px 0 var(--ink), -1.5px -3px 0 var(--ink), 0 4px 0 var(--ink);will-change:transform;background:0 0;border:0;border-radius:10px;padding:8px 10px;font-size:clamp(15px,1.65vw,25px);line-height:1;position:absolute;top:0;left:0}.tag span{transform:rotate(var(--r,0deg));transition:transform .18s;display:inline-block}.tag:hover span,.tag:focus-visible span,.tag.is-hot span{transform:rotate(0)scale(1.14)}.stage.is-focused .labels{opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.fallback{z-index:5;padding-left:var(--gutter-l);padding-right:var(--gutter-r);text-align:center;place-items:center;font-size:18px;display:grid;position:absolute;inset:0}.fallback p{background:var(--sticker);border:2px solid var(--ink);max-width:36ch;box-shadow:4px 4px 0 var(--ink);border-radius:14px;padding:16px 20px}@media (width<=720px){.stage{height:clamp(520px,100svh - 150px,760px)}}@media (prefers-reduced-motion:reduce){.labels,.tag span{transition:none}}.play-btn{z-index:4;cursor:pointer;white-space:nowrap;background:var(--gold);border:2px solid var(--ink);min-height:44px;box-shadow:3px 3px 0 var(--ink);font-family:var(--f-label);letter-spacing:.02em;color:var(--ink);border-radius:999px;padding:0 18px;font-size:17px;position:absolute;top:0;left:0}.play-btn:hover{filter:brightness(1.05)}.play-btn[hidden]{display:none}.play-btn.docked{top:auto;bottom:16px;left:50%;transform:translate(-50%)}.stage.is-focused .play-btn{visibility:hidden}.speech{z-index:6;background:var(--sticker);border:2px solid var(--ink);width:max-content;max-width:min(260px,100vw - 40px);box-shadow:3px 3px 0 var(--ink);font-family:var(--f-label);text-align:center;pointer-events:none;border-radius:16px;margin:0;padding:10px 14px;font-size:17px;line-height:1.25;position:absolute;top:0;left:0}.speech[hidden]{display:none}.speech:after{content:"";background:var(--sticker);border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);width:16px;height:16px;margin-left:-8px;position:absolute;bottom:-11px;left:50%;transform:rotate(45deg)}.strip{padding-block:18px 26px;padding-left:var(--gutter-l);padding-right:var(--gutter-r);border-top:2px solid var(--ink);background:var(--ground);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px 40px;display:flex}.meta{flex-wrap:wrap;align-items:flex-end;gap:14px 28px;min-width:0;display:flex}.hint{max-width:34ch;font-family:var(--f-mono);color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.meter{gap:24px;margin:0;display:flex}.meter div{flex-direction:column-reverse;display:flex}.meter dt{font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}.meter dd{font-family:var(--f-display);font-variant-numeric:tabular-nums;margin:0;font-size:34px;line-height:1}.meter dd.bump{animation:.35s bump}@keyframes bump{40%{transform:translateY(-4px)}}@media (width<=720px){.meter dd{font-size:28px}}@media (prefers-reduced-motion:reduce){.meter dd.bump{animation:none}}.panel{z-index:30;top:calc(env(safe-area-inset-top,0px) + 14px);right:calc(env(safe-area-inset-right,0px) + 14px);bottom:calc(env(safe-area-inset-bottom,0px) + 14px);overscroll-behavior:contain;background:var(--panel);border:2px solid var(--ink);width:min(410px,100vw - 28px);box-shadow:6px 6px 0 var(--ink);border-radius:20px;flex-direction:column;gap:18px;padding:22px 24px 20px;animation:.4s cubic-bezier(.2,.9,.25,1.15) slide-in;display:flex;position:fixed;overflow-y:auto}.panel[hidden]{display:none}@keyframes slide-in{0%{opacity:0;transform:translate(40px)}}.p-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.p-where{font-family:var(--f-mono);letter-spacing:.04em;color:var(--muted);margin:0;font-size:12px}.icon-btn{background:var(--sticker);border:2px solid var(--ink);cursor:pointer;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;display:grid}.icon-btn:hover{background:var(--gold)}.panel h2{font-family:var(--f-label);margin:0;font-size:40px;font-weight:400;line-height:1}.p-org{font-family:var(--f-mono);letter-spacing:.04em;margin:-12px 0 0;font-size:14px}.panel h2:focus{outline:none}.p-body{margin:0;font-size:18px;line-height:1.5}.p-facts{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.p-facts li{align-items:baseline;gap:10px;font-size:15.5px;line-height:1.4;display:flex}.p-facts li:before{content:"";background:var(--gold);border:2px solid var(--ink);flex:none;width:9px;height:9px;transform:translateY(1px)rotate(45deg)}.p-link{min-height:44px;font-family:var(--f-mono);align-self:flex-start;align-items:center;font-size:14px;font-weight:500;display:inline-flex}.p-link[hidden]{display:none}.bubble{background:var(--sticker);border:2px solid var(--ink);font-family:var(--f-label);border-radius:16px;margin:6px 0 0;padding:14px 16px;font-size:19px;line-height:1.25;position:relative}.bubble:after{content:"";background:var(--sticker);border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);width:18px;height:18px;position:absolute;bottom:-11px;left:28px;transform:rotate(45deg)skew(8deg,8deg)}.p-nav{justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:18px;display:flex}.p-nav button{cursor:pointer;background:var(--sticker);border:2px solid var(--ink);min-height:44px;font-family:var(--f-mono);border-radius:999px;padding:0 16px;font-size:13px}.p-nav button:hover{background:var(--gold)}.p-count{font-family:var(--f-mono);color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}@media (width<=720px){.panel{top:auto;left:calc(env(safe-area-inset-left,0px) + 10px);right:calc(env(safe-area-inset-right,0px) + 10px);bottom:calc(env(safe-area-inset-bottom,0px) + 10px);gap:14px;width:auto;max-height:56vh;padding:18px 18px 16px;animation-name:slide-up}.panel h2{font-size:32px}.p-body{font-size:16.5px}}@keyframes slide-up{0%{opacity:0;transform:translateY(40px)}}@media (prefers-reduced-motion:reduce){.panel{animation:none}}.player{z-index:25;left:calc(env(safe-area-inset-left,0px) + 14px);bottom:calc(env(safe-area-inset-bottom,0px) + 14px);background:var(--panel);border:2px solid var(--ink);width:min(340px,100vw - 28px);box-shadow:5px 5px 0 var(--ink);border-radius:18px;flex-direction:column;gap:8px;padding:10px;display:flex;position:fixed}.player[hidden]{display:none}.player-close{z-index:1;position:absolute;top:-16px;right:-16px}.player-screen{border-radius:12px;height:152px;overflow:hidden}.player-screen iframe{border:0;width:100%;height:152px;display:block}.player-note{margin:0;font-size:14px}.top{padding-block:10px;padding-left:var(--gutter-l);padding-right:var(--gutter-r);justify-content:space-between;align-items:center;gap:12px;display:flex}.mark{font-family:var(--f-display);letter-spacing:.08em;padding:8px 0;font-size:24px;text-decoration:none}.top nav{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.top nav a{font-family:var(--f-mono);letter-spacing:.04em;border-radius:8px;padding:14px 10px;font-size:13px;text-decoration:none}.top nav a:hover{background:var(--ground-2)}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media (width<=380px){.top{gap:8px}.top nav{gap:0}.top nav a{letter-spacing:0;padding-inline:6px;font-size:11.5px}}.fine{background:var(--ground-2);border-top:2px solid var(--ink)}.fine-inner{max-width:1240px;padding-block:72px 56px;padding-left:var(--gutter-l);padding-right:var(--gutter-r);flex-direction:column;gap:56px;margin:0 auto;display:flex}.fine-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;display:flex}.fine-head h2{font-family:var(--f-display);letter-spacing:.01em;margin:0;font-size:clamp(36px,5vw,60px);font-weight:400;line-height:1}.fine-head p{color:var(--muted);margin:0}.index{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.index li{display:grid}.index button{text-align:left;cursor:pointer;background:var(--sticker);border:2px solid var(--ink);width:100%;min-height:96px;box-shadow:4px 4px 0 var(--ink);border-radius:14px;flex-direction:column;justify-content:space-between;gap:14px;padding:16px 18px;transition:transform .15s,box-shadow .15s;display:flex}.index button:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.i-where{font-family:var(--f-mono);letter-spacing:.04em;color:var(--muted);font-size:12px}.i-what{font-family:var(--f-label);font-size:26px;line-height:1}.i-org{font-family:var(--f-mono);margin-top:-8px;font-size:13px}@media (prefers-reduced-motion:reduce){.index button{transition:none}}.proverb{margin:0;padding:0}.proverb p{max-width:22ch;font-family:var(--f-display);letter-spacing:.005em;margin:0;font-size:clamp(34px,5.2vw,72px);line-height:1.02}.contact{border-top:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px 40px;padding-top:28px;display:flex}.contact h2{font-family:var(--f-label);margin:0 0 12px;font-size:28px;font-weight:400}.links{flex-wrap:wrap;gap:10px 32px;margin:0;display:flex}.links div{min-width:0}.links dt{font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}.links dd{overflow-wrap:anywhere;margin:2px 0 0;font-size:17px}.links a{margin-block:-8px;padding-block:11px;display:inline-block}.loc{font-family:var(--f-mono);color:var(--muted);margin:0;font-size:12px}.fine-alt{background:var(--ground)}.projects{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.project{background:var(--sticker);border:2px solid var(--ink);height:100%;box-shadow:4px 4px 0 var(--ink);border-radius:14px;flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.project:hover,.project:focus-within{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.shot{aspect-ratio:16/10;object-fit:cover;object-position:top;border-bottom:2px solid var(--ink);background:var(--panel);width:100%;height:auto;display:block}.shot-contain{object-fit:contain;object-position:center;background:#f7fafc;padding:8% 12%}.project-body{flex-direction:column;flex:1;gap:10px;padding:16px 18px 14px;display:flex}.project h3{font-family:var(--f-label);margin:0;font-size:24px;font-weight:400;line-height:1.05}.project-title{text-decoration:none}.project-title:after{content:"";border-radius:12px;position:absolute;inset:0}.project-title:focus-visible{outline:none}.project:has(.project-title:focus-visible){outline:3px solid var(--ink);outline-offset:3px}.project-what{color:var(--ink);margin:0;font-size:15.5px;line-height:1.4}.stack{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.stack li{font-family:var(--f-mono);border:1.5px solid var(--ink);background:var(--ground);border-radius:999px;padding:3px 8px;font-size:11.5px}.project-links{flex-wrap:wrap;gap:4px 18px;margin:auto 0 0;padding-top:4px;display:flex}.project-links a{z-index:1;font-family:var(--f-mono);margin-block:-9px;padding-block:13px;font-size:13px;position:relative}@media (prefers-reduced-motion:reduce){.project{transition:none}}.skill-groups{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:28px 40px;display:grid}.skill-group h3{font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:12px;font-weight:500}.skills{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.skills li{background:var(--sticker);border:2px solid var(--ink);box-shadow:2px 2px 0 var(--ink);border-radius:999px;align-items:center;gap:8px;padding:7px 12px 7px 9px;font-size:15px;display:inline-flex}.skills img{object-fit:contain;width:22px;height:22px}.certs{grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.cert{background:var(--sticker);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:14px;flex-direction:column;gap:8px;padding:18px;display:flex}.cert-mark{align-items:center;height:48px;margin-bottom:6px;display:flex}.cert-mark img{object-fit:contain;width:auto;max-width:140px;height:auto;max-height:48px}.cert-badge{border:2px solid var(--ink);width:64px;font-family:var(--f-display);letter-spacing:.04em;background:var(--ground);border-radius:10px;justify-content:center;font-size:22px}.cert h3{font-family:var(--f-label);margin:0;font-size:21px;font-weight:400;line-height:1.1}.cert-meta{font-family:var(--f-mono);color:var(--muted);margin:0;font-size:12.5px}.cert-link{font-family:var(--f-mono);align-self:flex-start;margin-top:auto;margin-bottom:-9px;padding-block:13px;font-size:13px}.roles{flex-direction:column;gap:22px;max-width:860px;margin:0;padding:0;list-style:none;display:flex;position:relative}.roles:before{content:"";background:var(--ink);width:2px;position:absolute;top:10px;bottom:10px;left:27px}.role{grid-template-columns:56px 1fr;align-items:start;gap:18px;display:grid;position:relative}.role-mark{background:var(--sticker);border:2px solid var(--ink);border-radius:50%;place-items:center;width:56px;height:56px;display:grid;overflow:hidden}.role-mark img{width:34px;height:auto}.role-badge{font-family:var(--f-display);letter-spacing:.04em;background:var(--gold);font-size:20px}.role-body{background:var(--sticker);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:14px;padding:16px 20px}.role h3{font-family:var(--f-label);margin:0;font-size:23px;font-weight:400;line-height:1.1}.role-meta{font-family:var(--f-mono);color:var(--muted);margin:4px 0 10px;font-size:12.5px}.role ul{flex-direction:column;gap:6px;margin:0;padding-left:18px;font-size:15.5px;line-height:1.45;display:flex}@media (width<=480px){.roles:before{left:19px}.role{grid-template-columns:40px 1fr;gap:12px}.role-mark{width:40px;height:40px}.role-mark img{width:24px}.role-badge{font-size:15px}.role-body{padding:14px}}.tab-list{background:var(--sticker);border:2px solid var(--ink);width:max-content;box-shadow:3px 3px 0 var(--ink);border-radius:999px;gap:4px;margin:0 auto 32px;padding:5px;display:flex}.tab-button{cursor:pointer;min-height:44px;font-family:var(--f-label);letter-spacing:.02em;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:0 28px;font-size:18px;transition:background-color .2s,color .2s}.tab-button:hover{color:var(--ink)}.tab-button[aria-selected=true]{background:var(--gold);color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}#tab-panel-work .roles{margin:0 auto}.courses{max-width:800px;margin:0 auto}.edu-header{background:var(--sticker);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);border-radius:14px;align-items:center;gap:16px;margin-bottom:24px;padding:18px 20px;display:flex}.edu-header img{flex:none;width:48px;height:auto}.edu-info{flex-direction:column;gap:3px;display:flex}.edu-title{font-family:var(--f-label);margin:0;font-size:23px;font-weight:400;line-height:1.1}.edu-subtitle{color:var(--muted);margin:0;font-size:15px}.edu-period{font-family:var(--f-mono);color:var(--ink);margin:0;font-size:12.5px}.branch-legend{background:var(--sticker);border:2px solid var(--ink);border-radius:12px;flex-wrap:wrap;justify-content:center;gap:8px 18px;margin:0 0 24px;padding:12px 16px;list-style:none;display:flex}.branch-legend li{align-items:center;gap:8px;font-size:14px;display:flex}.legend-dot{border:2px solid var(--ink);border-radius:50%;flex:none;width:12px;height:12px}.git-graph-wrapper{overscroll-behavior-x:contain;padding:24px 8px;overflow-x:auto}.git-graph{width:100%;min-width:450px;max-width:700px;margin:0 auto;position:relative}.branch-svg{pointer-events:none;position:absolute;top:0;left:0}.course-label{z-index:1;white-space:nowrap;cursor:pointer;background:var(--sticker);border:2px solid var(--ink);min-height:32px;font-family:var(--f-mono);color:var(--ink);border-radius:8px;padding:0 10px;font-size:12px;font-weight:500;transition:background-color .15s,box-shadow .15s;position:absolute;transform:translateY(-50%)}.course-label.branch{text-align:right;width:100px}.course-label:hover,.course-label.active{box-shadow:0 0 0 3px var(--label-colour)}.course-label.active{background:var(--panel)}.branch-hint{text-align:center;color:var(--muted);border:2px dashed var(--line);border-radius:10px;flex-direction:column;align-items:center;gap:6px;margin:16px 0 0;padding:12px 16px;font-size:14px;line-height:1.45;display:flex}.course-dialog{width:min(400px,100vw - 32px);color:var(--ink);background:var(--panel);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--ink);border-radius:18px;padding:22px 24px}.course-dialog::backdrop{background:#12141773}.course-top{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;padding-bottom:12px;display:flex}.course-code{font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;font-size:12px}.course-name{font-family:var(--f-label);margin:0;font-size:24px;font-weight:400;line-height:1.15}.course-sec{flex-direction:column;gap:3px;margin-top:10px;display:flex}.course-label-head{font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}.course-sec p{margin:0;font-size:15.5px;line-height:1.5}.git-graph.compact .course-label{border-width:1.5px;border-radius:6px;min-height:22px;padding:0 6px;font-size:10.5px}.git-graph.compact .course-label.branch{text-align:center;width:auto;min-width:55px}@media (width<=767px){.git-graph{min-width:420px}.edu-header{text-align:center;flex-direction:column}}@media (width<=479px){.git-graph{min-width:380px}.git-graph.compact .course-label{padding:0 4px;font-size:9.5px}.tab-button{padding:0 20px;font-size:16px}}@media (prefers-reduced-motion:reduce){.tab-button,.course-label{transition:none}}
