:root{--bg: #0b0c12;--fg: #eef0f6;--muted: #9aa0b4;--line: rgba(255, 255, 255, .12);--glass: rgba(18, 20, 30, .55);--accent: #8fb8ff;--serif: "Instrument Serif", Georgia, serif;--sans: "Inter", system-ui, sans-serif;--darken: 0;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit}button{font:inherit;color:inherit}.scene{position:fixed!important;top:0;right:0;bottom:0;left:0;z-index:0}.darken{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:#000;opacity:var(--darken)}.grain{position:fixed;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:2;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain .8s steps(4) infinite}@keyframes grain{0%{transform:translate(0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}}main{position:relative;z-index:3;pointer-events:none}main a,main button,main .card{pointer-events:auto}.nav{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:20px clamp(16px,5vw,56px);font-size:14px;mix-blend-mode:difference}.nav a{text-decoration:none}.nav-name{font-family:var(--serif);font-size:22px}.nav-links{display:flex;gap:24px}.nav-links a{opacity:.8;transition:opacity .2s}.nav-links a:hover{opacity:1}.col{width:min(460px,100%);margin-left:clamp(16px,7vw,120px)}.eyebrow{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.02;letter-spacing:-.01em}h1{font-size:clamp(56px,9vw,112px);margin-bottom:24px}h1 em,h2 em{color:var(--accent)}h2{font-size:clamp(40px,6vw,72px);margin-bottom:32px}h3{font-size:22px;font-weight:600;letter-spacing:-.01em}.lead{font-size:19px;color:#cfd3e0;max-width:400px}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;position:relative}.links{display:flex;gap:20px;margin-top:32px;flex-wrap:wrap}.links a{font-size:14px;text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:2px;transition:border-color .2s}.links a:hover{border-color:var(--fg)}.scroll-hint{position:absolute;bottom:32px;left:clamp(16px,7vw,120px);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.scroll-hint span{display:inline-block;animation:bob 1.6s ease-in-out infinite}@keyframes bob{50%{transform:translateY(5px)}}.resume{padding-top:30vh}.entry{min-height:110svh;display:flex;align-items:center}.card{background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:18px;padding:28px;opacity:.35;transform:translate(-12px);transition:opacity .6s,transform .6s,border-color .6s}.entry.is-active .card{opacity:1;transform:none;border-color:#ffffff38}.entry-meta{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);margin-bottom:14px}.entry-index{font-family:var(--serif);font-size:20px;color:var(--fg)}.org{color:var(--accent);margin:2px 0 12px;font-size:15px}.card p:not(.org){color:#c8ccda}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.tags li{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-radius:99px;color:#c8ccda}.works{padding:30vh 0 0}.works-inner{width:min(1100px,100% - 32px);margin:0 auto}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:20px}.work{text-align:left;cursor:pointer;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:border-color .3s,transform .3s}.work:hover{border-color:var(--c);transform:translateY(-4px)}.work:focus-visible{outline:2px solid var(--c);outline-offset:3px}.work-art{aspect-ratio:16 / 9;background:radial-gradient(circle at 30% 35%,color-mix(in srgb,var(--c) 90%,white) 0 8%,transparent 30%),radial-gradient(circle at 70% 70%,var(--c),transparent 55%),linear-gradient(135deg,color-mix(in srgb,var(--c) 30%,#0b0c12),#0b0c12);transition:filter .4s}.work:hover .work-art{filter:saturate(1.3) brightness(1.1)}.work-body{padding:20px 22px 24px}.work-year{font-size:12px;color:var(--muted);letter-spacing:.04em}.work h3{margin:6px 0 8px}.work p{color:#c8ccda;font-size:15px}.footer{text-align:center;padding:30vh 0 48px}.cta{font-family:var(--serif);font-size:clamp(24px,4vw,40px);color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor;overflow-wrap:anywhere}.fine{margin-top:20vh;font-size:12px;color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#05060ab3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;padding:16px;overflow-y:auto}.modal{position:relative;width:min(720px,100%);max-height:calc(100svh - 32px);overflow-y:auto;background:#12141d;border:1px solid var(--line);border-radius:22px;padding:clamp(20px,4vw,40px)}.modal h2{margin-bottom:8px}.modal-art{border-radius:14px;margin-bottom:28px}.modal-close{position:absolute;top:14px;right:14px;z-index:1;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:#0006;font-size:22px;cursor:pointer}.prose{margin-top:28px;color:#cfd3e0}.prose>*+*{margin-top:14px}.prose h2{font-family:var(--sans);font-size:17px;font-weight:600;margin:28px 0 0;color:var(--fg)}.prose ul{padding-left:20px}.prose a{color:var(--c)}.prose strong{color:var(--fg)}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--bg);display:grid;place-content:center;gap:18px;text-align:center;font-family:var(--serif);font-size:32px}.loader-bar{width:180px;height:1px;background:var(--line)}.loader-bar div{height:100%;background:var(--fg);transition:width .4s}@media (max-width: 640px){.nav-links{gap:14px}.col{margin:0 16px;width:auto}.entry{align-items:flex-end;padding-bottom:10svh}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.grain,.scroll-hint span{animation:none}}.stats{display:flex;gap:22px;flex-wrap:wrap;margin-top:18px}.stats dt{font-family:var(--serif);font-size:34px;line-height:1;color:var(--fg)}.stats dd{font-size:12px;color:var(--muted);margin-top:4px}.work-art{position:relative}.work-art-year{position:absolute;right:18px;bottom:10px;font-family:var(--serif);font-size:56px;line-height:1;color:#ffffffd9}.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:48px;margin-top:18vh}.cert-list{list-style:none}.cert-list li{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);font-size:15px}.cert-meta{color:var(--muted);white-space:nowrap;font-size:13px}.skill-group+.skill-group{margin-top:22px}.skill-group h4{font-size:13px;font-weight:500;color:var(--muted)}.skill-group .tags{margin-top:10px}.footer-links{justify-content:center}@media (max-width: 640px){.cert-list li{flex-direction:column;gap:2px}}.hero{background:linear-gradient(90deg,rgba(11,12,18,.85) 0%,rgba(11,12,18,.6) 35%,transparent 60%)}@media (max-width: 640px){.hero{justify-content:flex-end;padding-bottom:14svh;background:linear-gradient(180deg,transparent 45%,rgba(11,12,18,.85) 65%)}.hero h1{font-size:52px}.hero .lead{font-size:17px}}
