html,body{overscroll-behavior-y:none}body{color:#d2d2d2}.homepage-section .section-inner,.hero-inner{width:100%;max-width:900px;margin-left:auto;margin-right:auto;padding-left:2rem;padding-right:2rem}@media (max-width: 600px){.homepage-section .section-inner,.hero-inner{padding-left:1.25rem;padding-right:1.25rem}}.hero-section{padding-top:4rem;padding-bottom:3.5rem}.hero-inner{display:flex;align-items:flex-start;gap:3rem}@media (max-width: 680px){.hero-inner{flex-direction:column;align-items:center;text-align:center}}.hero-photo-wrapper{flex-shrink:0;position:relative}.hero-photo-wrapper[data-tooltip]:hover::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#000;color:#fff;font-size:.78rem;font-family:monospace;white-space:nowrap;padding:.35rem .7rem;border-radius:3px;border:1px solid rgba(255,255,255,.15);pointer-events:none;z-index:10}@media (max-width: 680px){.hero-photo-wrapper[data-tooltip]:hover::after{white-space:normal;text-align:center;max-width:min(260px,80vw);bottom:auto;top:calc(100% + 8px)}}#heroPhoto{display:block;width:300px;height:350px;border-radius:6px;object-fit:cover;cursor:pointer;user-select:none;-webkit-user-drag:none;transition:opacity .15s ease}#heroPhoto:active{opacity:.8}.hero-bio{flex:1;min-width:0}.hero-bio h1{margin-top:0;font-size:2rem;line-height:1.2}.hero-bio .accent{color:#8ed6fb}body.light .hero-bio .accent{color:#fefe54}.hero-bio .hero-tagline{margin:.25rem 0 1rem;font-size:1rem;font-weight:600;opacity:.85}.hero-bio .hero-bio-text{font-size:1.05rem;line-height:1.7}.hero-bio .hero-bio-text p{margin:0 0 .75rem}.hero-socials{display:flex;flex-wrap:wrap;gap:.6rem 1.1rem;margin-top:1.25rem;font-size:.9rem}@media (max-width: 680px){.hero-socials{justify-content:center}}.hero-socials a{display:inline-flex;align-items:center;gap:.35rem;text-underline-offset:3px}.hero-socials a svg{flex-shrink:0}.homepage-section{padding-top:3rem;padding-bottom:3rem}.homepage-section:nth-child(even){background:rgba(255,255,255,.025)}body.light .homepage-section:nth-child(even){background:rgba(255,255,255,.07)}.section-heading{font-size:1.45rem;margin-bottom:1.75rem}.section-heading::before{content:"$ ";color:#8ed6fb;opacity:.55}body.light .section-heading::before{color:#01d7d7;opacity:1}.aff-section{padding-top:1.75rem;padding-bottom:1.75rem}.aff-strip{display:flex;flex-wrap:wrap;gap:1.25rem;align-items:stretch}.aff-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;text-decoration:none;padding:.85rem 1rem;flex:0 0 150px;min-height:130px;background:#fcdec0;border:2px solid #b8784a;border-radius:2px;box-shadow:10px 10px 0 #000;color:#1d2d35;transition:box-shadow .12s,transform .1s}.aff-item:hover{transform:translate(-2px, -2px);box-shadow:14px 14px 0 #000}.aff-item .aff-logo{width:100px;height:44px;object-fit:contain;display:block}.aff-item .aff-name{font-size:.92rem;color:#1d2d35;text-align:center;font-weight:600}.aff-item .aff-period{font-size:.78rem;color:#5a3010;font-family:monospace}body.light .aff-item{background:#bbb;border-color:#999}body.light .aff-item .aff-name{color:#1d2d35}body.light .aff-item .aff-period{color:#444}.news-list{list-style:none;padding:0;margin:0 0 1rem;display:flex;flex-direction:column;gap:.85rem}.news-item{display:grid;grid-template-columns:88px 1fr;gap:1rem;font-size:1rem;line-height:1.55}.news-item .news-date{font-family:monospace;font-size:.8rem;opacity:.45;padding-top:.1rem;white-space:nowrap}@media (max-width: 500px){.news-item{grid-template-columns:1fr}.news-item .news-date{opacity:.4}}.filter-group{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.75rem}.filter-btn{padding:.25rem .85rem;border:1px solid #fff;border-radius:2px;background:none;color:#fff;font-size:.8rem;font-family:"DOS",monospace;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.filter-btn.active{background:#8ed6fb;border-color:#8ed6fb;color:#071018}.filter-btn:hover:not(.active){border-color:#8ed6fb;color:#8ed6fb}body.light .filter-btn.active{background:#01d7d7;border-color:#01a4a4;color:#1d2d35}body.light .filter-btn:hover:not(.active){border-color:#01d7d7;color:#01d7d7}.project-card,.blog-card,.pub-card{border-radius:2px;box-shadow:10px 10px 0 #000;transition:transform .1s ease,box-shadow .1s ease}.project-card:hover,.blog-card:hover,.pub-card:hover{transform:translate(-2px, -2px);box-shadow:14px 14px 0 #000}.pub-list,.proj-list{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.25rem}.pub-card{display:grid;grid-template-columns:220px 1fr;gap:1.5rem;padding:1.25rem;background:#8ed6fb;border:2px solid #3a8ec8;color:#1d2d35}body.light .pub-card{background:#01d7d7;color:#1d2d35;border-color:#018b8b}@media (max-width: 680px){.pub-card{grid-template-columns:1fr}}.pub-image img{width:100%;aspect-ratio:1/1;height:auto;object-fit:cover;border-radius:2px;display:block}.pub-image .pub-image-placeholder{width:100%;height:150px;border-radius:2px;background:rgba(0,0,0,.1);border:1px dashed rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;font-family:monospace;font-size:.7rem;color:rgba(0,0,0,.4)}.pub-content{display:flex;flex-direction:column;gap:.4rem}.pub-content h3{margin:0;font-size:.975rem;line-height:1.4;color:inherit}.pub-content h3 a{text-decoration:none;color:inherit}.pub-content h3 a:hover{text-decoration:underline}.pub-badges{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.15rem}.pub-badge{display:inline-block;padding:.12rem .6rem;border:1px solid rgba(0,0,0,.35);border-radius:2px;font-size:.68rem;font-family:"DOS",monospace;color:#1d2d35;background:rgba(0,0,0,.1);text-transform:uppercase;letter-spacing:.06em}.pub-content h3{color:#1d2d35}.pub-venue{font-size:.85rem;font-style:italic;margin:0;color:#2a3a45}.pub-tldr{font-size:.95rem;line-height:1.6;margin:0;color:#1d2d35}.pub-authors{font-size:.78rem;margin:0;color:#4a5a65}.pub-links{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.35rem}.pub-links a{padding:.15rem .65rem;border:1px solid rgba(0,0,0,.4);border-radius:2px;font-size:.75rem;font-family:"DOS",monospace;color:#1d2d35 !important;text-decoration:none;background:rgba(0,0,0,.12);transition:background .12s,border-color .12s}.pub-links a:hover{background:rgba(0,0,0,.25);border-color:rgba(0,0,0,.6)}.blog-list{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1.25rem}.blog-card{padding:1rem 1.25rem;background:#fcdec0;border:2px solid #b8784a;color:#1d2d35}body.light .blog-card{background:#bbb;border-color:#999;color:#1d2d35}.blog-card h3{margin:0 0 .2rem;font-size:1.05rem;color:#1d2d35}.blog-card time{display:block;font-size:.82rem;font-family:monospace;color:#4a5a65;margin-bottom:.25rem}.blog-card p{margin:0;font-size:.95rem;color:#1d2d35}.blog-card h3 a{color:#1d2d35 !important;text-decoration:none}.blog-card h3 a:hover{text-decoration:underline}#blog .section-heading::before{color:#fcdec0;opacity:1}body.light #blog .section-heading::before{color:#bbb}#blog .section-cta{background:rgba(0,0,0,0);border:1px solid #fcdec0;color:#fcdec0;box-shadow:none}#blog .section-cta:hover{background:#fcdec0;color:#1d2d35;box-shadow:4px 4px 0 #000}body.light #blog .section-cta{background:rgba(0,0,0,0);border-color:#bbb;color:#bbb;box-shadow:none}body.light #blog .section-cta:hover{background:#bbb;color:#1d2d35;box-shadow:4px 4px 0 #000}.youtube-section p{max-width:520px;margin-bottom:1.1rem;opacity:.8}.section-cta{display:inline-block;padding:.35rem 1rem;border:1px solid #8ed6fb;border-radius:2px;color:#8ed6fb;font-size:.875rem;text-decoration:none;transition:background .15s,color .15s,box-shadow .12s}.section-cta:hover{background:#8ed6fb;color:#1d2d35;box-shadow:4px 4px 0 #000}body.light .section-cta{background:rgba(0,0,0,0);border-color:#01d7d7;color:#01d7d7;box-shadow:none}body.light .section-cta:hover{background:#01d7d7;color:#1d2d35;box-shadow:4px 4px 0 #000}.about-fullpage{position:relative;min-height:calc(100vh - 60px);display:flex;flex-direction:column;padding-bottom:calc(100px + env(safe-area-inset-bottom, 0px));touch-action:pan-y}.about-content{flex:1;max-width:680px;width:100%;margin:0 auto;padding:3rem 2rem 2rem;display:flex;flex-direction:column;user-select:none;-webkit-user-select:none}.about-pre-heading{font-family:"DOS",monospace;font-size:.76rem;color:rgba(255,255,255,.38);margin:0 0 .5rem;letter-spacing:.1em}.about-main-heading{font-size:clamp(2rem,5vw,3.2rem);font-weight:700;margin:0 0 .2rem;line-height:1.1;color:#fff}.about-main-heading .accent{color:#8ed6fb}.about-sub-heading{font-family:"DOS",monospace;font-size:.82rem;color:rgba(255,255,255,.42);margin:0 0 2.5rem;letter-spacing:.08em;text-transform:uppercase}.about-paragraph-zone{position:relative;flex:1}.about-text-area{display:block;font-size:1.1rem;line-height:1.9;color:rgba(255,255,255,.82);min-height:8rem;user-select:none;-webkit-user-select:none;transition:opacity .55s ease,font-size .4s ease,font-weight .4s ease,color .4s ease,line-height .4s ease}.about-text-area.text-dimmed{opacity:.08;pointer-events:none}@keyframes a-word-in{from{opacity:0}to{opacity:1}}@keyframes a-word-out{from{opacity:1}to{opacity:0}}.a-word{display:inline;user-select:none;-webkit-user-select:none}.a-word.a-word-in{animation:a-word-in .45s ease forwards}.a-word.a-word-out{animation:a-word-out .22s ease forwards}@keyframes a-morph-out{from{opacity:1}to{opacity:0}}@keyframes a-morph-in{from{opacity:0}to{opacity:1}}.a-word.a-morph-out{animation:a-morph-out .18s ease forwards}.a-word.a-morph-in{animation:a-morph-in .18s ease forwards}#about-cv-btn{position:fixed;bottom:72px;left:50%;transform:translateX(-50%);z-index:510;padding:.55rem 1.6rem;background:var(--accent, #8ed6fb);color:#000;font-weight:700;font-size:.9rem;letter-spacing:.04em;text-decoration:none;border-radius:3px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .5s ease,transform .5s ease;transform:translateX(-50%) translateY(6px)}#about-cv-btn.visible{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}#about-cv-btn:hover{filter:brightness(1.15)}.about-slider-bar{position:fixed;bottom:0;left:0;right:0;z-index:500;display:flex;align-items:center;gap:1.25rem;padding:1.1rem 2rem calc(1.3rem + env(safe-area-inset-bottom, 0px));border-top:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.55);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}body.dark .about-slider-bar{background:rgba(33,37,41,.92)}body.light .about-slider-bar{background:rgba(0,0,132,.92)}@media (max-width: 480px){.about-slider-bar{padding:1rem 1rem calc(1.2rem + env(safe-area-inset-bottom, 0px));gap:.75rem}}.slider-label{font-size:1rem;font-style:italic;white-space:nowrap;color:rgba(255,255,255,.38)}.slider-label.slider-more{color:#8ed6fb}@media (max-width: 480px){.slider-label{font-size:.85rem}}#aboutSlider{flex:1;-webkit-appearance:none;appearance:none;height:2px;background:rgba(255,255,255,.18);border-radius:1px;outline:none;cursor:pointer}#aboutSlider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;cursor:pointer;transition:transform .1s}#aboutSlider::-webkit-slider-thumb:hover{transform:scale(1.25)}#aboutSlider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:none;cursor:pointer}.about-popup{position:fixed;z-index:600;opacity:0;pointer-events:none;transform:scale(.6);transition:opacity .35s ease,transform .5s cubic-bezier(.34, 1.56, .64, 1)}.about-popup.visible{opacity:1;transform:none;pointer-events:auto;cursor:pointer}.about-popup.is-hiding{opacity:0 !important;transform:scale(.45) rotate(-6deg) !important;transition:opacity .22s ease-in,transform .28s ease-in !important}.about-popup img{display:block;height:auto;user-select:none;-webkit-user-drag:none}@keyframes popup-float{0%, 100%{translate:0px 0px}30%{translate:8px -10px}65%{translate:-7px 6px}}.about-popup.popup-move{animation:popup-float 5s ease-in-out infinite}@keyframes popup-jiggle{0%, 100%{translate:0px 0px;rotate:0deg}20%{translate:5px -8px;rotate:-2.5deg}50%{translate:-4px 4px;rotate:2deg}75%{translate:6px 2px;rotate:-1.5deg}}.about-popup.popup-jiggle{animation:popup-jiggle 3.2s ease-in-out infinite}@keyframes popup-fly-lr{from{left:-300px}to{left:100vw}}.about-popup.popup-fly-lr{transform:none !important;animation:popup-fly-lr 7s linear infinite}@keyframes popup-fly-rl{from{left:100vw}to{left:-500px}}.about-popup.popup-fly-rl{transform:none !important;animation:popup-fly-rl 8s linear infinite}.about-popup.popup-bounce{transform:scale(.08);transition:opacity .4s ease,transform .85s cubic-bezier(.22, 2.2, .36, 1)}.about-popup.popup-bounce.visible{transform:scale(1)}.about-popup img{height:auto;display:block;user-select:none;-webkit-user-drag:none}.about-popup.popup-fullscreen{top:0 !important;right:0 !important;bottom:60px !important;left:0 !important;z-index:100;transform:none !important;transition:opacity .55s ease !important}.about-popup.popup-fullscreen img{width:100vw !important;height:100%;object-fit:cover;object-position:center}@keyframes flicker-loop{0%, 100%{opacity:0}4%{opacity:.72}8%{opacity:0}13%{opacity:.5}17%{opacity:0}}#about-flash{position:fixed;inset:0;background:#fff;pointer-events:none;opacity:0;z-index:800}#about-flash.about-flickering{animation:flicker-loop 3.8s ease-in-out infinite}.a-bold{font-weight:700;color:#fff}.a-red{color:#e05252;font-weight:600}#about-guide{position:fixed;bottom:75px;left:50%;transform:translateX(-50%);z-index:490;display:flex;flex-direction:column;align-items:center;gap:.35rem;pointer-events:none;opacity:1;transition:opacity .6s ease}#about-guide.guide-hidden{opacity:0}#about-guide .guide-hints{display:flex;flex-direction:column;align-items:center;gap:.1rem;font-family:"DOS",monospace;font-size:.68rem;color:rgba(255,255,255,.4);text-align:center;letter-spacing:.05em}@media (pointer: coarse){#about-guide .guide-hints-mouse{display:none}}@media (pointer: fine){#about-guide .guide-hints-touch{display:none}}.project-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));gap:1.1rem;margin-bottom:1.25rem}.project-card{padding:1rem 1.2rem;background:#8ed6fb;border:2px solid #3a8ec8;color:#1d2d35}.project-card h3{margin:0 0 .35rem;font-size:1.05rem;color:#1d2d35}.project-card p{margin:0;font-size:.95rem;color:#1d2d35}body.light .project-card{background:#01d7d7;border-color:#018b8b}body.light .project-card h3{color:#1d2d35}body.light .project-card p{color:#1d2d35}