:root{color-scheme:dark;--bg:#101715;--surface:#18211d;--text:#edf0e8;--muted:#a4afa7;--line:#34423a;--accent:#bdf1a6;--visual:#1b2923}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}body.light{color-scheme:light;--bg:#f6f6ef;--surface:#fff;--text:#17251e;--muted:#526258;--line:#cfd8cf;--accent:#315e35;--visual:#1b2923}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}.skip{position:absolute;left:20px;top:-100px;background:var(--accent);color:var(--bg);padding:10px;z-index:20}.skip:focus{top:15px}header,main,footer{max-width:1180px;margin:auto;padding:0 36px}header{height:100px;display:flex;align-items:center;gap:28px;border-bottom:1px solid var(--line)}.logo{font-size:28px;font-weight:800;letter-spacing:-2px}.logo span{color:var(--accent)}nav{display:flex;align-items:center;gap:32px;margin-left:auto;font-size:14px}nav a:hover,.text-link:hover,.social a:hover{color:var(--accent)}#theme{border:1px solid var(--line);border-radius:50%;background:none;color:var(--text);width:36px;height:36px;cursor:pointer}.hero{display:grid;grid-template-columns:1.55fr 1fr;gap:65px;padding:95px 0 85px;align-items:center}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--muted);margin:0 0 22px}.dot{display:inline-block;width:7px;height:7px;background:var(--accent);border-radius:50%;margin-right:9px}h1{font-size:clamp(42px,5.2vw,67px);line-height:1.08;letter-spacing:-3px;font-weight:550;margin:0 0 25px}h1 em{font-family:Georgia,serif;font-weight:400;color:var(--accent)}.intro{max-width:540px;font-size:17px;color:var(--muted)}.actions{display:flex;align-items:center;gap:28px;margin:30px 0 35px}.button{display:inline-flex;gap:32px;background:var(--accent);color:var(--bg);font-size:14px;font-weight:700;padding:14px 19px;border-radius:5px}.button:hover{filter:brightness(1.12)}.text-link{font-size:14px}.hero-note{font-size:9px;letter-spacing:1.3px;color:var(--muted)}.hero-note span{padding:0 8px;color:var(--accent)}.portrait{position:relative;padding:18px;border:1px solid var(--line);border-radius:180px 180px 8px 8px;transform:rotate(2deg)}.portrait img{width:100%;height:340px;object-fit:cover;object-position:center 30%;border-radius:160px 160px 3px 3px;filter:grayscale(1)}.portrait-caption{display:flex;justify-content:space-between;padding-top:12px;font:9px/1.4 monospace;letter-spacing:1px;color:var(--muted)}section{padding:70px 0;border-bottom:1px solid var(--line)}.section-head{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:30px}.section-head .eyebrow{margin-bottom:12px}h2{font-size:clamp(28px,3vw,38px);font-weight:500;line-height:1.2;letter-spacing:-1.4px;margin:0}.section-head>p{font-size:13px;color:var(--muted);margin:0}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:26px}.filters button{padding:8px 14px;font-size:12px;border:1px solid var(--line);background:none;color:var(--muted);border-radius:25px;cursor:pointer}.filters button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--bg)}.filters span{margin-left:6px;opacity:.65}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden;transition:border-color .2s,transform .2s}.card:hover{border-color:var(--accent);transform:translateY(-3px)}.card[hidden]{display:none}.visual{height:220px;position:relative;background:var(--visual);color:#bdf1a6;overflow:hidden;display:flex;justify-content:center;align-items:center}.visual>span{position:absolute;bottom:14px;left:20px;font:9px monospace;letter-spacing:2px;color:#8fa799}.visual svg{width:100%;height:100%}.grid-board{display:grid;grid-template-columns:repeat(4,46px);gap:5px;transform:rotate(-7deg)}.grid-board span{display:grid;place-items:center;width:46px;height:42px;border:1px solid #44614e;color:#bdf1a6;font-size:20px;background:#243b2b}.grid-board .wall{background:#111b16;border:none}.grid-board .goal{background:#bdf1a6;color:#17251e}.parallel{flex-direction:column;gap:18px}.compute{display:flex;gap:24px}.compute b{font:24px Georgia,serif;display:grid;place-items:center;border:1px solid #486451;width:58px;height:58px;border-radius:5px}.compute-line{width:260px;height:1px;background:#5f886c}.compute-label{font:10px monospace;letter-spacing:2px;color:#c4d5c9}.card-body{padding:24px}.tag{font-size:9px;letter-spacing:1.3px;color:var(--accent);font-weight:650;margin:0 0 12px}h3{font-size:21px;line-height:1.4;font-weight:550;margin:0 0 10px;letter-spacing:-.4px}.card-body>p:not(.tag){font-size:14px;color:var(--muted);min-height:70px;margin-bottom:22px}.tech{font:11px monospace;color:var(--muted)}.card-links{display:flex;gap:22px;border-top:1px solid var(--line);padding-top:18px;margin-top:22px;font-size:12px;font-weight:650}.card-links a:hover{color:var(--accent)}.visual-note{font-size:10px;color:var(--muted);margin:18px 0 0}.paper{display:flex;align-items:center;gap:40px;padding:29px 0;border-top:1px solid var(--line)}.paper h3{font-size:20px;max-width:870px;margin-top:12px}.paper p{font-size:13px;color:var(--muted);margin-bottom:0}.status{font:10px monospace;letter-spacing:1px;color:var(--accent)}.paper-arrow{margin-left:auto;font-size:28px;color:var(--accent)}.paper:hover h3{text-decoration:underline;text-underline-offset:4px}.about{display:grid;grid-template-columns:1.2fr 1fr;gap:90px}.about>div>p:not(.eyebrow){font-size:15px;color:var(--muted);margin:25px 0}.skill-groups{margin-top:30px}.skill-groups h3{font-size:13px;margin-bottom:6px}.skill-groups p{font-size:12px;color:var(--muted);margin:0 0 22px}.timeline{border-left:1px solid var(--line);padding-left:28px}.timeline>div{position:relative;margin-bottom:32px}.timeline>div:before{content:'';position:absolute;left:-32px;top:8px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.timeline span{font:10px monospace;color:var(--accent)}.timeline h3{font-size:17px;margin:8px 0}.timeline p{font-size:13px;color:var(--muted);margin:0}.contact{padding:75px 0}.contact-email{display:inline-block;color:var(--accent);font-size:clamp(17px,3vw,27px);margin-top:25px}.social{display:flex;gap:28px;font-size:13px;margin-top:35px}footer{display:flex;justify-content:space-between;padding-top:26px;padding-bottom:26px;font-size:11px;color:var(--muted)}@media(max-width:760px){header,main,footer{padding-left:22px;padding-right:22px}header{height:80px;gap:15px}nav{gap:17px;font-size:12px}.nav-contact{display:none}.hero{padding:55px 0;gap:30px;grid-template-columns:1fr}.portrait{max-width:320px;justify-self:center;margin-top:5px}.portrait img{height:280px}h1{letter-spacing:-2px}.hero-note{line-height:1.9}.section-head{align-items:start;flex-direction:column;gap:18px}.project-grid,.about{grid-template-columns:1fr}.about{gap:35px}section{padding:48px 0}.paper{gap:18px}.paper h3{font-size:17px}.card-body>p:not(.tag){min-height:0}footer{gap:15px}.visual-note{line-height:1.6}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card{transition:none}.card:hover{transform:none}}
/* Interactive project workflows */
.portrait img{filter:none;object-position:center}.workflow{background:var(--visual);color:#edf0e8}.workflow-screen{height:256px;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;background:radial-gradient(ellipse at center,#263d30,#111b16)}.workflow-image{height:220px;width:auto;max-width:100%;object-fit:contain;border-radius:50%;transition:opacity .25s,transform .45s;image-rendering:auto}.workflow-image.changing{opacity:.15;transform:scale(.97)}.workflow-screen canvas{width:100%;height:100%;object-fit:contain}.stage-title{position:absolute;left:17px;top:15px;font:11px monospace;letter-spacing:1.2px;text-transform:uppercase;color:#bdf1a6}.step-counter{position:absolute;right:17px;top:15px;font:10px monospace;color:#a4bcaa}.play-toggle{position:absolute;right:15px;bottom:12px;border:1px solid #56705d;background:#15251edb;color:#edf0e8;border-radius:50%;width:30px;height:30px;cursor:pointer;font-size:12px}.stage-track{padding:11px 14px 0;display:flex;gap:4px;flex-wrap:wrap}.stage{border:1px solid #3d5546;background:none;color:#a4bcaa;font:10px system-ui,sans-serif;padding:6px 7px;border-radius:4px;cursor:pointer;transition:background .2s}.stage[aria-pressed=true]{color:#15251e;background:#bdf1a6;border-color:#bdf1a6}.workflow-note{font-size:9px;color:#a4bcaa;margin:0;padding:10px 16px 12px}.workflow-screen:after{content:'';height:2px;position:absolute;bottom:0;left:0;width:100%;background:#bdf1a6;transform-origin:left;animation:stage-progress 2.4s linear infinite}.workflow.paused .workflow-screen:after{animation-play-state:paused}.workflow .measurement-mark{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.visual-note a{text-decoration:underline;text-underline-offset:3px}@keyframes stage-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.workflow-screen:after{animation:none;display:none}.workflow-image,.stage{transition:none}}
.private-source{color:var(--muted);font-weight:400}.project-grid .card-links{flex-wrap:wrap}.project-grid .card-body{display:flex;flex-direction:column}.card-body .card-links{margin-top:auto}.card-body .tech{margin-bottom:20px}
