:root{color:#e9eff7;font-synthesis:none;--muted:#9baabd;--accent:#80bcff;--line:#243044;--panel:#101824;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#090e18;font-family:Inter,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,canvas:focus-visible{outline-offset:5px;outline:2px solid #b4ffc9}button{color:inherit}::selection{color:#090e18;background:#80bcff}.wrap{width:calc(100% - 96px);max-width:1200px;margin:auto}.header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;max-width:1360px;height:94px;margin:auto;padding:0 48px;display:flex}.brand{align-items:center;gap:13px;font-weight:600;display:flex}.brand-mark{width:37px;height:37px;color:var(--accent);border:1px solid #49617d;place-items:center;font-size:23px;display:grid}.brand small{color:var(--muted);font-size:12px;font-weight:400;line-height:1;display:block}.header nav{align-items:center;gap:32px;font-size:14px;display:flex}.header nav a:hover,.text-link:hover{color:var(--accent)}.nav-contact{border:1px solid #3a4c64;padding:8px 18px}.menu-toggle{display:none}.eyebrow{letter-spacing:.15em;color:var(--accent);font-family:Consolas,monospace;font-size:12px;font-weight:500;display:block}.hero{grid-template-columns:1.04fr 1fr;align-items:center;gap:36px;min-height:650px;padding-top:64px;padding-bottom:64px;display:grid}.hero h1{letter-spacing:-.055em;margin:24px 0;font-size:clamp(65px,7.3vw,110px);font-weight:550;line-height:1.03}.hero h1 span{color:var(--accent)}.hero-title{max-width:400px;margin:0 0 18px;font-size:21px;line-height:1.5}.hero-intro{color:var(--muted);max-width:420px;font-size:17px;line-height:1.8}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.button{border:1px solid #3a4c64;padding:12px 20px;font-size:14px;font-weight:600;transition:background .2s;display:inline-flex}.button:hover{background:#1b2b40}.button.primary{color:#090e18;background:var(--accent);border-color:var(--accent)}.button.primary:hover{background:#afdaff}.hero-meta{color:var(--muted);flex-wrap:wrap;gap:20px;margin-top:36px;font-family:Consolas,monospace;font-size:12px;display:flex}.hero-meta span+span{border-left:1px solid var(--line);padding-left:20px}.galaxy{isolation:isolate;position:relative}.galaxy canvas{touch-action:pan-y;background:radial-gradient(#14263e 0%,#0b1422 48%,#090e18 80%);width:100%;height:100%;display:block}.galaxy-hero{background:#0c1420;border:1px solid #243044;height:480px}.galaxy-hero:before,.galaxy-hero:after{content:"";border-top:1px solid var(--accent);border-left:1px solid var(--accent);z-index:2;width:12px;height:12px;position:absolute;top:-1px;left:-1px}.galaxy-hero:after{inset:auto -1px -1px auto;transform:rotate(180deg)}.orbital{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.orbit-ring{aspect-ratio:1;border:1px solid #7ca7d344;border-radius:50%;width:72%;position:absolute;transform:rotate(-22deg)scaleY(.7)}.orbit-ring.second{border-style:dashed;border-color:#7ca7d32e;width:60%;transform:rotate(48deg)scaleY(.65)}.orbit-core{color:#bcd9fa;text-align:center;text-shadow:0 0 55px #80bcff3b;font-family:Georgia,serif;font-size:145px;font-style:italic;line-height:1}.orbit-core span{letter-spacing:.2em;color:var(--muted);margin-top:16px;font-family:Consolas,monospace;font-size:12px;font-style:normal;display:block}.orbit-dot{background:#bcdbff;border-radius:50%;width:8px;height:8px;position:absolute;top:32%;left:19%;box-shadow:0 0 18px #80bcff}.hero-field-caption{letter-spacing:.12em;color:var(--muted);pointer-events:none;justify-content:space-between;font-family:Consolas,monospace;font-size:11px;display:flex;position:absolute;top:22px;left:24px;right:24px}.motion-toggle{border:1px solid var(--line);color:var(--muted);background:#0b1525;padding:5px 10px;font-size:12px;position:absolute;bottom:20px;right:24px}.discipline{border-block:1px solid var(--line);color:#a6b5c8;justify-content:space-between;gap:18px;padding:22px 0;font-size:14px;display:flex}.discipline span:before{content:"+";color:#80bcff;margin-right:12px}.section{padding-top:100px;padding-bottom:100px}.section-head h2{letter-spacing:-.035em;margin:14px 0 36px;font-size:clamp(30px,3.3vw,44px);font-weight:500;line-height:1.2}.projects-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.text-link{color:var(--muted);align-items:center;gap:12px;font-size:14px;display:inline-flex}.text-link span{color:var(--accent)}.filters{flex-wrap:wrap;gap:8px;margin-bottom:30px;display:flex}.filters button{border:1px solid var(--line);color:var(--muted);background:0 0;padding:7px 18px;font-size:14px}.filters button.active{color:#c9e3ff;background:#213551;border-color:#48698d}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.project{border:1px solid var(--line);background:#0d1521;flex-direction:column;transition:border-color .2s;display:flex}.project:hover{border-color:#56799f}.project-art{border-bottom:1px solid var(--line);background:#101b2b;justify-content:center;align-items:center;height:145px;display:flex;overflow:hidden}.project.featured .project-art{height:250px}.code-art{background:linear-gradient(135deg,#142234,#0d1521);width:100%;height:100%;padding:28px 34px;position:relative}.code-art>span{letter-spacing:.12em;color:#8fa8bf;font-family:Consolas,monospace;font-size:10px}.code-art code{color:#b8c9de;margin-top:20px;font-family:Consolas,monospace;font-size:clamp(18px,2vw,24px);line-height:1.6;display:block}.code-art code i{color:#86d1af;font-style:normal}.art-react-galaxy-web-background .code-art{background:radial-gradient(at 100% 100%,#284d75,#101c2d 65%)}.art-react-galaxy-web-background code i{color:var(--accent)}.wave-bars{opacity:.4;align-items:center;gap:5px;display:flex;position:absolute;bottom:28px;right:32px}.wave-bars b{background:#86d1af;width:3px;display:block}.project-symbol{color:#618bb8;flex-direction:column;align-items:center;font-size:56px;line-height:1.4;display:flex}.project-symbol span{color:var(--muted);letter-spacing:.08em;font-family:Consolas,monospace;font-size:11px}.project-body{flex-direction:column;flex:1;padding:28px;display:flex}.project-top{color:var(--muted);justify-content:space-between;gap:20px;font-family:Consolas,monospace;font-size:12px;display:flex}.project h3{letter-spacing:-.025em;margin:14px 0 10px;font-size:25px;font-weight:500}.project h3 a{justify-content:space-between;align-items:center;gap:16px;display:flex}.project h3 span{color:var(--accent);font-size:20px}.project p{color:var(--muted);margin:0 0 26px;font-size:16px;line-height:1.8}.tags{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.tags span{color:#b0c6df;background:#162234;padding:4px 8px;font-family:Consolas,monospace;font-size:11px}.background{border-top:1px solid var(--line)}.about-grid{grid-template-columns:1.1fr 1fr;gap:90px;display:grid}.about-lead{letter-spacing:-.02em;margin-top:0;font-size:28px;line-height:1.5}.about-lead span{color:var(--accent)}.about-grid p:not(.about-lead){color:var(--muted);line-height:1.9}.background-notes>div+div{border-top:1px solid var(--line);margin-top:35px;padding-top:32px}.background-notes h3{margin:10px 0;font-size:19px;font-weight:500}.print-link{color:var(--accent);background:0 0;border:0;padding:12px 0;font-size:14px;display:block}.cv-grid{border-top:1px solid var(--line);grid-template-columns:1.2fr 1fr;gap:70px;margin-top:64px;padding-top:40px;display:grid}.cv-grid>div>h3{margin:0 0 24px;font-size:25px;font-weight:500}.cv-entry{border-top:1px solid var(--line);padding:22px 0}.cv-entry h4{margin:8px 0 0;font-size:20px;font-weight:500}.cv-entry p{color:var(--muted);margin:6px 0;font-size:15px}.cv-entry .eyebrow{letter-spacing:.08em;font-size:11px}.playground-section{border-block:1px solid var(--line);background:#0c1420}.playground-heading{justify-content:space-between;align-items:center;gap:30px;display:flex}.playground-heading>p{color:var(--muted);font-size:15px}.galaxy-play{background:#090e18;border:1px solid #34475f}.galaxy-play canvas{cursor:crosshair;height:380px}.canvas-caption{color:var(--muted);pointer-events:none;justify-content:space-between;gap:20px;font-family:Consolas,monospace;font-size:12px;display:flex;position:absolute;top:22px;left:24px;right:24px}.galaxy-controls{border-top:1px solid var(--line);background:#101c2c;flex-wrap:wrap;align-items:center;gap:14px;padding:18px 22px;display:flex}.galaxy-controls button{background:#192c44;border:1px solid #3d5573;padding:7px 12px;font-size:13px}.galaxy-controls button:hover{background:#294363}.galaxy-controls label{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.galaxy-controls input{width:90px;accent-color:var(--accent)}.galaxy-controls output{min-width:24px}.hint{color:var(--muted);background:#101c2c;margin:0;padding:0 22px 18px;font-size:12px}.playground-source{color:var(--muted);justify-content:space-between;gap:20px;margin-top:16px;font-size:13px;display:flex}.playground-source a{color:var(--accent)}.section-intro{max-width:660px;color:var(--muted);margin-top:-10px;margin-bottom:40px}.experiment{border-top:1px solid var(--line);align-items:center;gap:28px;padding:25px 10px;transition:background .2s;display:flex}.experiment:last-child{border-bottom:1px solid var(--line)}.experiment:hover{background:#111d2d}.experiment-number{color:#6f879f;font-family:Consolas,monospace;font-size:13px}.experiment>div{flex:1}.experiment h3{margin:0;font-size:21px;font-weight:500}.experiment p{color:var(--muted);margin:4px 0;font-size:14px}.experiment-stack{color:#bbd3ee;font-size:14px}.experiment-stack small{color:var(--muted);font-size:11px;display:block}.experiment>span:last-child{color:var(--accent)}.contact{border-top:1px solid var(--line);background:#101a29;padding:80px 0}.contact-grid{grid-template-columns:2fr 1fr;align-items:center;gap:60px;display:grid}.contact h2{letter-spacing:-.03em;margin:20px 0;font-size:clamp(30px,4vw,48px);font-weight:500;line-height:1.25}.contact h2 span{color:var(--accent)}.contact p{color:var(--muted);font-size:15px}.contact-links a{border-bottom:1px solid #3b506c;justify-content:space-between;gap:20px;padding:20px 0;font-size:22px;display:flex}.contact-links a:hover{color:var(--accent)}.footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:20px;padding:28px 0;font-family:Consolas,monospace;font-size:11px;display:flex}.skip{background:var(--accent);color:#090e18;z-index:10;padding:12px;position:absolute;top:-100px;left:20px}.skip:focus{top:10px}.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}.languages{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.languages span{border:1px solid var(--line);color:var(--muted);padding:5px 10px;font-size:13px}.languages strong{color:#e9eff7;margin-right:6px;font-weight:500}@media (width>=1450px){.hero{min-height:720px}}@media (width<=950px){.wrap{width:calc(100% - 48px)}.header{padding:0 24px}.hero{gap:24px;min-height:580px}.hero h1{font-size:70px}.galaxy-hero{height:410px}.about-grid,.cv-grid{gap:40px}.discipline{flex-wrap:wrap;justify-content:flex-start}.discipline span{flex-basis:calc(50% - 18px)}.hero-meta{gap:8px}.hero-meta span+span{border:0;padding:0}.wave-bars{display:none}}@media (width<=680px){.wrap{width:calc(100% - 40px)}.header{flex-wrap:wrap;height:auto;min-height:80px;padding:18px 20px}.menu-toggle{background:0 0;border:1px solid #3a4c64;padding:5px 12px;font-size:14px;display:block}.header nav{flex-wrap:wrap;gap:18px;width:100%;padding-top:20px;display:none}.header nav.open{display:flex}.hero{grid-template-columns:1fr;gap:38px;padding-top:50px;padding-bottom:40px}.hero h1{font-size:80px}.hero-title{font-size:20px}.hero-intro{font-size:16px}.galaxy-hero{height:330px}.orbit-core{font-size:120px}.discipline{gap:12px;padding-block:18px;font-size:12px}.discipline span{flex-basis:calc(50% - 12px)}.discipline span:before{margin-right:6px}.section{padding-block:65px}.section-head h2{margin-bottom:26px}.projects-heading{margin-bottom:22px;display:block}.project-grid{grid-template-columns:1fr}.project.featured .project-art{height:220px}.project-body{padding:24px}.code-art code{font-size:23px}.about-grid,.cv-grid,.contact-grid{grid-template-columns:1fr;gap:32px}.about-lead{font-size:24px}.playground-heading{display:block}.playground-heading>p{margin-bottom:25px}.canvas-caption{flex-direction:column;gap:4px;font-size:10px;left:16px;right:16px}.galaxy-play canvas{height:340px}.galaxy-controls{gap:10px;padding:14px}.galaxy-controls label{width:100%}.hint{padding-inline:14px}.playground-source{flex-direction:column;gap:4px}.experiment{flex-wrap:wrap;gap:15px;padding-inline:0}.experiment>div{flex-basis:calc(100% - 40px)}.experiment-stack{margin-left:30px}.experiment>span:last-child{margin-left:auto}.experiment h3{font-size:20px}.contact{padding:60px 0}.contact-links{max-width:340px}.footer{gap:12px;font-size:11px}.hero-actions .button{padding:11px 16px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{:root{color:#111;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fff}body{font-size:11pt;line-height:1.5}.wrap{width:100%;max-width:none}.header{height:60px;padding:0}.header nav,.menu-toggle,.galaxy,.discipline,.hero-actions,.hero-meta,.filters,.project-art,.playground-section,.contact-links,.print-link,.footer a,.skip{display:none!important}.hero{min-height:0;padding:25px 0;display:block}.hero h1{margin:10px 0;font-size:40pt}.hero h1 br{display:none}.hero h1 span{color:#111}.hero-title{max-width:none;font-size:14pt}.hero-intro{max-width:none;font-size:11pt}.section{padding:20px 0}.section-head h2{margin:8px 0 16px;font-size:20pt}.eyebrow,.about-lead span,.contact h2 span{color:#334b66}.project-grid{gap:12px}.project{break-inside:avoid;background:#fff;border-color:#ccc}.project-body{padding:14px}.project p,.about-grid p:not(.about-lead),.cv-entry p,.section-intro,.contact p,.experiment p{color:#333;font-size:10pt}.tags span{color:#222;background:#eee}.project h3{font-size:15pt}.about-grid,.cv-grid{gap:25px}.cv-grid{margin-top:20px;padding-top:15px}.cv-entry{break-inside:avoid;padding:12px 0}.background-notes h3,.cv-entry h4{font-size:12pt}.contact{background:#fff;padding:20px 0}.contact h2{font-size:20pt}.footer{color:#444}.languages span{color:#333}.languages strong{color:#111}.experiment{break-inside:avoid}.brand small,.text-link{color:#333}}.hero-stack{color:var(--accent);margin-top:24px;font-family:Consolas,monospace;font-size:13px}.interests{max-width:750px;margin-top:40px}.interests p{color:var(--muted)}.notebook-index,.hero-frontmatter,.mode-kicker{display:none}.hero h1 .hero-greeting{color:inherit}@media screen{.header{gap:24px}.header nav{order:2;gap:24px;margin-left:auto}.header-controls{flex-shrink:0;order:3;align-items:center;gap:8px;display:flex}.nav-contact{border-radius:12px}.header nav a[aria-current=page]{color:var(--accent);text-underline-offset:7px;text-decoration:underline;text-decoration-thickness:1px}.theme-toggle{color:#dbe8f8;cursor:pointer;isolation:isolate;background:#101824;border:1px solid #3a4c64;border-radius:999px;flex:0 0 76px;width:76px;height:42px;padding:0;position:relative}.theme-toggle:hover{border-color:var(--accent)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.theme-toggle-thumb{z-index:-1;background:#26486d;border-radius:50%;width:30px;height:30px;transition:transform .2s,background .2s;position:absolute;top:5px;left:5px;transform:translate(34px)}.theme-icon{pointer-events:none;width:20px;height:20px;transition:color .2s;position:absolute;top:10px}.theme-icon.sun{color:#8394aa;left:10px}.theme-icon.moon{color:#d3e8ff;right:10px}html[data-theme=light] .theme-toggle{background:#edf0f6;border-color:#a6b3c9}html[data-theme=light] .theme-toggle-thumb{background:#fff;transform:translate(0);box-shadow:0 1px 4px #263c6126}html[data-theme=light] .theme-icon.sun{color:#254fd2}html[data-theme=light] .theme-icon.moon{color:#73819a}html[data-theme=light] .nav-contact{border-color:#a6b3c9}}@media screen and (width<=1100px){.header,.header nav{gap:16px}}@media screen and (width<=800px){.header{flex-wrap:wrap;height:auto;min-height:94px;padding-block:18px}.header nav{gap:14px}}@media screen and (width<=680px){.header{gap:12px}.header-controls{order:2;margin-left:auto}.header nav{order:3;gap:18px;margin-left:0;padding-top:8px}.menu-toggle{border-radius:8px;min-height:42px}}@media screen and (width<=380px){.header{gap:8px;padding-inline:16px}.brand{gap:8px;font-size:14px}.brand-mark{width:32px;height:32px;font-size:21px}.brand small{font-size:10px}.header-controls{gap:6px}.menu-toggle{padding-inline:8px;font-size:12px}.header nav{gap:14px;font-size:13px}.nav-contact{padding-inline:12px}}@media screen and (prefers-reduced-motion:reduce){.theme-toggle-thumb,.theme-icon{transition:none}}@media print{.hero-greeting:after{content:" ";white-space:pre}.header-controls,.notebook-index,.hero-frontmatter,.mode-kicker{display:none!important}}@media screen{html[data-theme=light]{--muted:#62696e;--accent:#254fd2;--line:#d8dbdb;--panel:#fff;--notebook-edge:32px;color:#24272b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fdfdfb;font-family:Arial,Helvetica,sans-serif}html[data-theme=light] body{background-image:linear-gradient(90deg, transparent calc(var(--notebook-edge) - 1px), #c5d1e9 calc(var(--notebook-edge) - 1px), #c5d1e9 var(--notebook-edge), transparent var(--notebook-edge))}html[data-theme=light] ::selection{color:#16275b;background:#dfe7ff}html[data-theme=light] :is(button,a,input,canvas):focus-visible{outline-color:var(--accent)}html[data-theme=light] .wrap{width:calc(100% - 120px);max-width:1040px}html[data-theme=light] .notebook-index{display:none}html[data-theme=light] .eyebrow{letter-spacing:.1em;color:#666c74;font-size:10px}html[data-theme=light] .hero{min-height:0;padding-top:44px;padding-bottom:36px;display:block}html[data-theme=light] .hero-copy{grid-template-columns:.95fr 1fr;align-items:start;column-gap:64px;display:grid}html[data-theme=light] .hero-frontmatter{letter-spacing:.16em;border-bottom:2px solid #24272b;grid-area:1/1/auto/-1;justify-content:space-between;margin-bottom:30px;padding-bottom:12px;font:10px/1.5 Consolas,monospace;display:flex}html[data-theme=light] .mode-kicker{color:var(--accent);grid-area:2/1/auto/-1;margin-bottom:24px;font:italic 19px/1.4 Georgia,serif;display:block}html[data-theme=light] .hero-copy>.eyebrow{display:none}html[data-theme=light] .hero h1{letter-spacing:-.055em;grid-area:3/1/6;margin:0;font:400 clamp(64px,6.8vw,94px)/1.06 Georgia,Times New Roman,serif}html[data-theme=light] .hero h1 span{color:#24272b}html[data-theme=light] .hero h1 .hero-greeting{letter-spacing:0;color:var(--muted);margin-bottom:15px;font:14px/1.5 Arial,sans-serif;display:block}html[data-theme=light] .hero h1 .hero-greeting+br{display:none}html[data-theme=light] .hero-title{grid-area:3/2;max-width:none;margin:3px 0 15px;font-size:18px;font-weight:600;line-height:1.5}html[data-theme=light] .hero-intro{grid-area:4/2;max-width:none;margin:0 0 20px;font-size:15px;line-height:1.8}html[data-theme=light] .hero-actions{grid-area:5/2;gap:10px;margin-top:0}html[data-theme=light] .button{background:0 0;border-color:#aeb4bf;border-radius:0;padding:10px 15px;font-size:12px;font-weight:500}html[data-theme=light] .button:hover{border-color:var(--accent);background:#edf1fe}html[data-theme=light] .button.primary{color:#fff;background:var(--accent);border-color:var(--accent)}html[data-theme=light] .button.primary:hover{background:#183fad}html[data-theme=light] .hero-stack{grid-area:6/1;margin:25px 0 0;font-size:11px}html[data-theme=light] .hero-meta{grid-area:6/2;gap:8px;margin-top:24px;font-size:10px;line-height:1.7}html[data-theme=light] .hero-meta span+span{padding-left:8px}html[data-theme=light] .galaxy-hero{height:178px;box-shadow:none;background:#fff;border:1px solid #bfc8db;margin-top:40px}html[data-theme=light] .galaxy canvas{background-color:#fff;background-image:linear-gradient(#edf0f4 1px,#0000 1px),linear-gradient(90deg,#edf0f4 1px,#0000 1px);background-position:50%;background-size:22px 22px}html[data-theme=light] .galaxy-hero:before,html[data-theme=light] .galaxy-hero:after,html[data-theme=light] .orbital{display:none}html[data-theme=light] .notebook-diagram{pointer-events:none;position:absolute;inset:0}html[data-theme=light] .diagram-node{z-index:1;letter-spacing:.13em;color:#274690;background:#fffffff5;border:1px solid #8296c6;padding:11px 22px;font:10px/1.5 Consolas,monospace;position:absolute;top:65px}html[data-theme=light] .diagram-node-tools{left:14%}html[data-theme=light] .diagram-node-graphics{left:43%}html[data-theme=light] .diagram-node-play{left:77%}html[data-theme=light] .notebook-diagram:before,html[data-theme=light] .diagram-link{content:"";background:#8296c6;height:1px;position:absolute;top:87px;left:20%;right:18%}html[data-theme=light] .diagram-link+.diagram-link{display:none}html[data-theme=light] .hero-field-caption{color:#656f81;font-size:9px;top:14px;left:16px;right:16px}html[data-theme=light] .motion-toggle{color:#4b5b7a;background:#fff;border-color:#c6cddd;padding:3px 8px;font-size:10px;bottom:13px;right:15px}html[data-theme=light] .motion-toggle:hover{background:#edf1fe}html[data-theme=light] .discipline{color:#535d70;border-block:1px solid #d8dbdb;gap:18px;padding:12px 0;font:10px/1.6 Consolas,monospace}html[data-theme=light] .discipline span:before{content:"→";color:var(--accent);margin-right:7px}html[data-theme=light] .section{padding-block:66px}html[data-theme=light] .section-head{position:relative}html[data-theme=light] .section-head h2{letter-spacing:-.035em;margin:8px 0 28px;font:400 clamp(31px,3vw,40px)/1.2 Georgia,serif}html[data-theme=light] .section-head:before{color:#7688b3;content:"";font:10px/1.5 Consolas,monospace;position:absolute;top:1px;left:-44px}html[data-theme=light] #projects .section-head:before{content:"01"}html[data-theme=light] #background .section-head:before{content:"02"}html[data-theme=light] #playground .section-head:before{content:"03"}html[data-theme=light] #experiments .section-head:before{content:"04"}html[data-theme=light] .projects-heading{align-items:start}html[data-theme=light] .projects-heading>.text-link{margin-top:37px}html[data-theme=light] .text-link{color:#566475;font-size:12px}html[data-theme=light] .text-link:hover{color:var(--accent)}html[data-theme=light] .filters{border-bottom:2px solid #24272b;gap:18px;margin-bottom:16px;padding-bottom:12px}html[data-theme=light] .filters button{color:#62696e;border:0;border-bottom:2px solid #0000;padding:4px 0;font:11px/1.5 Consolas,monospace}html[data-theme=light] .filters button:hover{color:var(--accent)}html[data-theme=light] .filters button.active{color:var(--accent);border-color:var(--accent);background:0 0}html[data-theme=light] .project-grid{display:block}html[data-theme=light] .project{background:0 0;border:0;border-bottom:1px solid #d8dbdb;grid-template-columns:220px minmax(0,1fr);gap:28px;padding:26px 0;display:grid}html[data-theme=light] .project:hover{border-color:#8296c6}html[data-theme=light] .project .project-art,html[data-theme=light] .project.featured .project-art{background:#f4f5f3;border:1px solid #d8dbdb;align-self:start;height:160px}html[data-theme=light] .code-art{background:#f1f3f1;padding:18px}html[data-theme=light] .code-art>span{color:#617066;letter-spacing:.06em;font-size:8px}html[data-theme=light] .code-art code{color:#405247;margin-top:17px;font-size:13px;line-height:1.65}html[data-theme=light] .code-art code i{color:#277b5b}html[data-theme=light] .art-react-galaxy-web-background .code-art{background-color:#f1f4fb;background-image:linear-gradient(#e0e6f2 1px,#0000 1px),linear-gradient(90deg,#e0e6f2 1px,#0000 1px);background-size:20px 20px}html[data-theme=light] .art-react-galaxy-web-background code{font-size:11px}html[data-theme=light] .art-react-galaxy-web-background code i{color:var(--accent)}html[data-theme=light] .wave-bars{gap:3px;bottom:18px;right:18px}html[data-theme=light] .wave-bars b{background:#277b5b;width:2px}html[data-theme=light] .project-symbol{color:#637996;font-size:46px}html[data-theme=light] .project-symbol span{text-align:center;color:#66707b;padding:0 12px;font-size:9px}html[data-theme=light] .project-body{padding:0}html[data-theme=light] .project-top{color:#687380;font-size:9px}html[data-theme=light] .project h3{margin:8px 0 12px;font-size:23px;font-weight:600;line-height:1.3}html[data-theme=light] .project h3 span{font-size:19px}html[data-theme=light] .project p{margin:0 0 15px;font-size:14px;line-height:1.8}html[data-theme=light] .tags{gap:12px}html[data-theme=light] .tags span{color:#647188;background:0 0;padding:0;font-size:10px}html[data-theme=light] .tags span:before{content:"#";color:#8296c6}html[data-theme=light] .background{border-top:0}html[data-theme=light] .about-grid{display:block}html[data-theme=light] .about-grid>div:first-child{max-width:740px}html[data-theme=light] .about-lead{letter-spacing:-.025em;margin-bottom:18px;font:400 29px/1.5 Georgia,serif}html[data-theme=light] .about-grid p:not(.about-lead){font-size:14px;line-height:1.85}html[data-theme=light] .print-link{margin:0 0 0 20px;font-size:12px;display:inline-block}html[data-theme=light] .print-link:hover{text-underline-offset:4px;text-decoration:underline}html[data-theme=light] .background-notes{border-top:1px dashed #bfc8db;grid-template-columns:1fr 1fr;gap:36px;margin-top:34px;padding:24px 0 0;display:grid}html[data-theme=light] .background-notes>div+div{border:0;margin:0;padding:0}html[data-theme=light] .background-notes h3{margin:8px 0;font:italic 20px/1.4 Georgia,serif}html[data-theme=light] .cv-grid{border:0;margin-top:54px;padding-top:0;display:block}html[data-theme=light] .cv-grid>div+div{margin-top:46px}html[data-theme=light] .cv-grid>div>h3{text-transform:uppercase;letter-spacing:.12em;border-block:1px solid #24272b;margin:0;padding:12px 0;font:11px/1.5 Consolas,monospace}html[data-theme=light] .cv-entry{border-top:0;border-bottom:1px solid #e3e5e5;grid-template-columns:170px minmax(0,1fr);column-gap:30px;padding:23px 0;display:grid}html[data-theme=light] .cv-entry .eyebrow{color:#687380;letter-spacing:0;grid-area:1/1/4;padding-top:4px;font-size:10px;line-height:1.7}html[data-theme=light] .cv-entry h4{grid-area:1/2;margin:0;font-size:19px;font-weight:600;line-height:1.5}html[data-theme=light] .cv-entry p{grid-column:2;margin:4px 0 0;font-size:14px;line-height:1.8}html[data-theme=light] .cv-entry p:first-of-type{color:#354a70;font-size:12px}html[data-theme=light] .interests{background:#f4f6fa;border-left:2px solid #a7b7d8;max-width:none;margin-top:40px;padding:20px 24px}html[data-theme=light] .interests p{margin:8px 0 0;font-size:14px}html[data-theme=light] .languages{gap:12px 24px;margin-top:22px}html[data-theme=light] .languages span{border:0;padding:0;font-size:11px}html[data-theme=light] .languages strong{color:#24272b;font-weight:600}html[data-theme=light] .playground-section{background:0 0;border:0}html[data-theme=light] .playground-heading{align-items:end}html[data-theme=light] .playground-heading>p{max-width:240px;margin:0 0 27px;font-size:12px;line-height:1.8}html[data-theme=light] .galaxy-play{background:#fff;border:1px solid #adb9d3;padding:9px;box-shadow:6px 6px #edf0f6}html[data-theme=light] .galaxy-play canvas{height:320px}html[data-theme=light] .canvas-caption{color:#435b91;font-size:10px;top:22px;left:22px;right:22px}html[data-theme=light] .canvas-caption span{background:#fffffff0;padding:2px 5px}html[data-theme=light] .galaxy-controls{background:#fff;border-top-color:#d8dbdb;gap:14px;padding:16px 10px 10px}html[data-theme=light] .galaxy-controls button{color:#354a70;background:#f6f8fc;border:1px solid #c0cadd;padding:6px 10px;font-size:11px}html[data-theme=light] .galaxy-controls button:hover{border-color:var(--accent);background:#e9eefe}html[data-theme=light] .galaxy-controls label{font-size:11px}html[data-theme=light] .hint{background:#fff;padding:0 10px 10px;font-size:10px}html[data-theme=light] .playground-source{margin-top:18px;font:10px/1.7 Consolas,monospace}html[data-theme=light] .section-intro{max-width:660px;margin:-9px 0 28px;font-size:14px}html[data-theme=light] .experiment-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}html[data-theme=light] .experiment{background:#fff;border:1px solid #d8dbdb;grid-template-columns:23px minmax(0,1fr);align-items:start;gap:6px 10px;padding:23px 27px 23px 19px;display:grid;position:relative}html[data-theme=light] .experiment:last-child{border-bottom:1px solid #d8dbdb}html[data-theme=light] .experiment:hover{background:#f5f7fd;border-color:#8296c6}html[data-theme=light] .experiment-number{color:#7b8bad;grid-area:1/1/3;padding-top:3px;font-size:10px}html[data-theme=light] .experiment>div{grid-column:2}html[data-theme=light] .experiment h3{padding-right:9px;font-size:17px;font-weight:600;line-height:1.5}html[data-theme=light] .experiment p{margin-top:8px;font-size:12px;line-height:1.75}html[data-theme=light] .experiment-stack{color:#52678c;flex-wrap:wrap;grid-column:2;gap:14px;margin:13px 0 0;font:10px/1.5 Consolas,monospace;display:flex}html[data-theme=light] .experiment-stack small{color:#737a87;font-size:9px;display:inline}html[data-theme=light] .experiment>span[aria-hidden=true]{position:absolute;top:22px;right:13px}html[data-theme=light] .contact{background:0 0;border:0;margin-top:15px;padding:0}html[data-theme=light] .contact-grid{border-top:2px solid #24272b;grid-template-columns:minmax(0,1fr) 240px;align-items:end;gap:44px;padding-top:32px;padding-bottom:42px;display:grid}html[data-theme=light] .contact h2{letter-spacing:-.035em;margin:16px 0;font:400 37px/1.3 Georgia,serif}html[data-theme=light] .contact h2 span{color:#24272b}html[data-theme=light] .contact p{margin-bottom:0;font-size:12px;line-height:1.8}html[data-theme=light] .contact-links a{color:var(--accent);border-bottom:1px solid #a7b7d8;padding:12px 0;font:13px/1.5 Consolas,monospace}html[data-theme=light] .contact-links a:hover{color:#183fad}html[data-theme=light] .footer{border-top:1px solid #d8dbdb;gap:12px;padding-block:20px;font-size:9px}html[data-theme=light] .skip{color:#fff}}@media screen and (width>=1200px){html[data-theme=light]{--notebook-edge:max(210px, calc((100vw - 1420px) / 2 + 210px))}html[data-theme=light] .wrap{width:calc(100% - var(--notebook-edge) - 100px);margin-left:calc(var(--notebook-edge) + 40px);margin-right:auto}html[data-theme=light] .notebook-index{top:165px;left:calc(var(--notebook-edge) - 174px);z-index:2;flex-direction:column;gap:15px;width:140px;font:11px/1.5 Consolas,monospace;display:flex;position:fixed}html[data-theme=light] .notebook-index>span{letter-spacing:.16em;color:#828994;margin-bottom:12px;font-size:9px}html[data-theme=light] .notebook-index a{color:#616a7b}html[data-theme=light] .notebook-index a:before{content:"↳";color:#9caaca;margin-right:8px}html[data-theme=light] .notebook-index a:hover{color:var(--accent)}}@media screen and (width<=950px){html[data-theme=light] .wrap{width:calc(100% - 96px)}html[data-theme=light] .hero-copy{column-gap:30px}html[data-theme=light] .hero h1{font-size:69px}html[data-theme=light] .hero-actions{flex-direction:column;align-items:start}html[data-theme=light] .hero-meta,html[data-theme=light] .hero-meta span{display:block}html[data-theme=light] .hero-meta span+span{border:0;padding:0}html[data-theme=light] .discipline{gap:12px 20px}html[data-theme=light] .discipline span{flex-basis:calc(50% - 20px)}html[data-theme=light] .project{grid-template-columns:175px minmax(0,1fr);gap:22px}html[data-theme=light] .project .project-art,html[data-theme=light] .project.featured .project-art{height:145px}html[data-theme=light] .code-art{padding:14px}html[data-theme=light] .code-art code{font-size:11px}html[data-theme=light] .art-react-galaxy-web-background code{font-size:9px}html[data-theme=light] .cv-entry{grid-template-columns:125px minmax(0,1fr);column-gap:24px}html[data-theme=light] .contact-grid{grid-template-columns:minmax(0,1fr) 180px;gap:25px}html[data-theme=light] .contact h2{font-size:32px}}@media screen and (width<=680px){html[data-theme=light]{--notebook-edge:14px}html[data-theme=light] .wrap{width:calc(100% - 56px);margin-left:34px;margin-right:22px}html[data-theme=light] .hero{padding-top:30px;padding-bottom:28px}html[data-theme=light] .hero-copy{flex-direction:column;display:flex}html[data-theme=light] .hero-frontmatter{letter-spacing:.1em;width:100%;margin-bottom:22px;font-size:8px}html[data-theme=light] .mode-kicker{margin-bottom:18px;font-size:17px}html[data-theme=light] .hero h1{margin-bottom:20px;font-size:clamp(60px,13vw,84px)}html[data-theme=light] .hero h1 .hero-greeting{margin-bottom:8px;font-size:12px}html[data-theme=light] .hero-title{margin-bottom:13px;font-size:17px}html[data-theme=light] .hero-intro{font-size:14px}html[data-theme=light] .hero-actions{flex-direction:row;gap:10px}html[data-theme=light] .hero-actions .button{padding:9px 11px;font-size:11px}html[data-theme=light] .hero-stack{margin-top:23px}html[data-theme=light] .hero-meta{margin-top:9px}html[data-theme=light] .galaxy-hero{height:160px;margin-top:27px}html[data-theme=light] .diagram-node{letter-spacing:.07em;padding:8px 9px;font-size:8px;top:58px}html[data-theme=light] .diagram-node-tools{left:7%}html[data-theme=light] .diagram-node-graphics{left:38%}html[data-theme=light] .diagram-node-play{left:77%}html[data-theme=light] .notebook-diagram:before,html[data-theme=light] .diagram-link{top:72px;left:14%;right:11%}html[data-theme=light] .hero-field-caption{letter-spacing:.04em;font-size:8px;left:11px;right:11px}html[data-theme=light] .discipline{gap:9px 12px;font-size:9px}html[data-theme=light] .discipline span{flex-basis:calc(50% - 12px)}html[data-theme=light] .discipline span:before{margin-right:4px}html[data-theme=light] .section{padding-block:48px}html[data-theme=light] .section-head:before{font-size:8px;left:-25px}html[data-theme=light] .section-head h2{margin-bottom:22px;font-size:31px}html[data-theme=light] .projects-heading{margin-bottom:18px}html[data-theme=light] .projects-heading>.text-link{margin-top:0}html[data-theme=light] .filters{gap:21px}html[data-theme=light] .project{grid-template-columns:72px minmax(0,1fr);gap:16px;padding:24px 0}html[data-theme=light] .project .project-art,html[data-theme=light] .project.featured .project-art{height:78px}html[data-theme=light] .code-art{place-items:center;padding:6px;display:grid}html[data-theme=light] .code-art>span,html[data-theme=light] .wave-bars{display:none}html[data-theme=light] .code-art code{white-space:nowrap;margin:0;font-size:7px}html[data-theme=light] .art-react-galaxy-web-background code{font-size:4px}html[data-theme=light] .project-symbol{font-size:29px}html[data-theme=light] .project-symbol span{display:none}html[data-theme=light] .project h3{margin-top:7px;font-size:18px}html[data-theme=light] .project h3 a{align-items:start;gap:9px}html[data-theme=light] .project h3 span{font-size:16px}html[data-theme=light] .project p{font-size:12px}html[data-theme=light] .project-top{gap:8px;font-size:8px}html[data-theme=light] .tags{gap:5px 9px}html[data-theme=light] .tags span{font-size:9px}html[data-theme=light] .about-lead{font-size:25px}html[data-theme=light] .print-link{margin:0;display:block}html[data-theme=light] .background-notes{grid-template-columns:1fr;gap:24px;margin-top:20px}html[data-theme=light] .cv-grid{margin-top:34px}html[data-theme=light] .cv-entry{grid-template-columns:1fr;padding-block:20px}html[data-theme=light] .cv-entry .eyebrow{grid-area:1/1;padding:0 0 6px}html[data-theme=light] .cv-entry h4{grid-area:2/1;font-size:18px}html[data-theme=light] .cv-entry p{grid-column:1;font-size:13px}html[data-theme=light] .interests{padding:16px}html[data-theme=light] .interests p{font-size:13px}html[data-theme=light] .languages{gap:9px 20px}html[data-theme=light] .playground-heading>p{max-width:none;margin:0 0 22px}html[data-theme=light] .galaxy-play{padding:5px;box-shadow:4px 4px #edf0f6}html[data-theme=light] .galaxy-play canvas{height:285px}html[data-theme=light] .canvas-caption{font-size:9px;top:15px;left:13px;right:13px}html[data-theme=light] .galaxy-controls{gap:8px;padding-inline:7px}html[data-theme=light] .galaxy-controls label{width:100%}html[data-theme=light] .hint{padding-inline:7px}html[data-theme=light] .experiment-list{grid-template-columns:1fr}html[data-theme=light] .experiment{padding:20px 23px 20px 15px}html[data-theme=light] .experiment>div{flex-basis:auto}html[data-theme=light] .experiment>span[aria-hidden=true]{top:19px}html[data-theme=light] .contact-grid{padding-top:28px;padding-bottom:32px;display:block}html[data-theme=light] .contact h2{font-size:33px}html[data-theme=light] .contact-links{gap:28px;max-width:none;margin-top:20px;display:flex}html[data-theme=light] .contact-links a{flex:1;font-size:12px}html[data-theme=light] .footer{gap:10px;font-size:9px}}@media screen and (width<=360px){html[data-theme=light] .project{grid-template-columns:50px minmax(0,1fr);gap:12px}html[data-theme=light] .project .project-art,html[data-theme=light] .project.featured .project-art{height:58px}html[data-theme=light] .code-art code{font-size:5px}html[data-theme=light] .art-react-galaxy-web-background code{font-size:3px}html[data-theme=light] .project h3{font-size:17px}html[data-theme=light] .diagram-node{padding:7px}html[data-theme=light] .diagram-node-graphics{left:35%}html[data-theme=light] .diagram-node-play{left:75%}}@media screen and (prefers-reduced-motion:reduce){html[data-theme=light] .experiment{transition:none}}@media screen{html[data-theme=light] :is(.hero-intro,.project p,.about-grid p:not(.about-lead),.cv-entry p,.section-intro,.interests p,.contact p){font-size:16px}html[data-theme=light] :is(.project-top,.tags span,.languages span,.cv-entry .eyebrow,.notebook-index a,.galaxy-controls label){font-size:12px}html[data-theme=light] :is(.text-link,.print-link){font-size:14px}html[data-theme=light] :is(.filters button,.galaxy-controls button,.hint){font-size:13px}}.print-contact{display:none}@media screen{.site-page{min-width:0}.page-intro{border-bottom:1px solid var(--line);padding-top:76px;padding-bottom:52px}.page-intro h1{letter-spacing:-.05em;margin:22px 0;font-size:clamp(48px,6vw,80px);font-weight:500;line-height:1.08}.page-intro h1 span{color:var(--accent)}.page-intro h1:focus{outline:none}.page-intro p{max-width:680px;color:var(--muted);margin-bottom:0;font-size:18px;line-height:1.8}.site-page:not(.page-home)>.section:first-of-type{padding-top:64px}.page-background .background{border-top:0}.about-grid .profile-title{color:var(--accent);font-weight:600}.page-playground .playground-section{border-top:0}.home-index{padding-top:44px;padding-bottom:88px}.home-index-heading h2{letter-spacing:-.025em;margin:0 0 26px;font-size:25px;font-weight:500}.page-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.page-card{border:1px solid var(--line);background:#0e1826;flex-direction:column;padding:30px;transition:border-color .2s,background .2s;display:flex}.page-card:hover{background:#122035;border-color:#56799f}.page-card .eyebrow{font-size:11px}.page-card h3{letter-spacing:-.025em;justify-content:space-between;align-items:baseline;gap:12px;margin:17px 0 12px;font-size:27px;font-weight:500;display:flex}.page-card h3 span{color:var(--accent);font-size:22px}.page-card p{color:var(--muted);margin:0;font-size:15px;line-height:1.8}.case-study-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.case-study{border:1px solid var(--line);background:#0d1521;flex-direction:column;padding:32px;display:flex}.case-study .eyebrow{letter-spacing:.1em;font-size:11px;line-height:1.7}.case-study h3{letter-spacing:-.025em;margin:18px 0 12px;font-size:26px;font-weight:500;line-height:1.35}.case-study p{color:var(--muted);margin:0 0 24px;font-size:16px;line-height:1.85}.case-study .tags{padding-top:10px}.skill-groups{border-top:1px solid var(--line);margin-top:46px;padding-top:36px}.skill-groups>h3{margin:0 0 26px;font-size:25px;font-weight:500}.skill-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 24px;display:grid}.skill-grid>div{min-width:0}.skill-grid h4{margin:0 0 14px;font-size:16px;font-weight:500}.skill-grid .tags{margin-top:0}.cv-entry ul{color:var(--muted);margin:12px 0 4px;padding-left:20px;font-size:15px}.cv-entry li+li{margin-top:6px}.contact-grid>div{min-width:0}.contact-links a{overflow-wrap:anywhere}html[data-theme=light] .page-intro{border-bottom:2px solid #24272b;padding-top:48px;padding-bottom:36px}html[data-theme=light] .page-intro h1{letter-spacing:-.055em;font-family:Georgia,Times New Roman,serif;font-size:clamp(50px,6vw,78px);font-weight:400}html[data-theme=light] .page-intro h1 span{color:#24272b}html[data-theme=light] .page-intro p{max-width:680px;font-size:16px}html[data-theme=light] .site-page:not(.page-home)>.section:first-of-type{padding-top:48px}html[data-theme=light] .home-index{padding-top:24px;padding-bottom:60px}html[data-theme=light] .home-index-heading h2{letter-spacing:-.035em;border-bottom:2px solid #24272b;margin-bottom:0;padding-bottom:18px;font:400 32px/1.3 Georgia,serif}html[data-theme=light] .page-card-grid{display:block}html[data-theme=light] .page-card{background:0 0;border:0;border-bottom:1px solid #d8dbdb;grid-template-columns:95px minmax(0,.9fr) minmax(0,1.3fr);align-items:baseline;gap:24px;padding:25px 0;display:grid}html[data-theme=light] .page-card:hover{background:0 0;border-color:#8296c6}html[data-theme=light] .page-card .eyebrow{color:#7482a0;font-size:11px}html[data-theme=light] .page-card h3{letter-spacing:-.025em;margin:0;font:400 26px/1.4 Georgia,serif}html[data-theme=light] .page-card h3 span{font:18px/1 Arial,sans-serif}html[data-theme=light] .page-card p{font-size:15px}html[data-theme=light] .case-study-grid{gap:28px 36px}html[data-theme=light] .case-study{background:0 0;border:0;border-top:1px solid #24272b;padding:22px 0 26px}html[data-theme=light] .case-study .eyebrow{font-size:11px}html[data-theme=light] .case-study h3{letter-spacing:-.025em;margin-top:14px;font:400 28px/1.3 Georgia,serif}html[data-theme=light] .case-study p{font-size:16px}html[data-theme=light] .case-study .tags{padding-top:0}html[data-theme=light] .skill-groups{border-top:1px dashed #bfc8db;margin-top:34px;padding-top:28px}html[data-theme=light] .skill-groups>h3{font:400 27px/1.3 Georgia,serif}html[data-theme=light] .skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 36px}html[data-theme=light] .skill-grid h4{margin-bottom:10px;font:italic 20px/1.4 Georgia,serif}html[data-theme=light] .cv-entry ul{grid-column:2;font-size:16px;line-height:1.8}html[data-theme=light] #case-studies .section-head:before{content:"01"}html[data-theme=light] .page-work #projects .section-head:before{content:"02"}html[data-theme=light] .page-background #background .section-head:before,html[data-theme=light] .page-playground #playground .section-head:before{content:"01"}html[data-theme=light] .page-playground #experiments .section-head:before{content:"02"}}@media screen and (width<=950px){.page-card{padding:24px}.page-card h3{font-size:24px}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-theme=light] .page-card{grid-template-columns:75px minmax(0,1fr);gap:10px 24px}html[data-theme=light] .page-card p{grid-column:2}}@media screen and (width<=680px){.page-intro{padding-top:44px;padding-bottom:34px}.page-intro h1{margin-block:20px;font-size:clamp(42px,9vw,58px)}.page-intro p{font-size:16px}.site-page:not(.page-home)>.section:first-of-type{padding-top:44px}.home-index{padding-top:24px;padding-bottom:50px}.home-index-heading h2{font-size:23px}.page-card-grid{grid-template-columns:1fr;gap:14px}.page-card{padding:24px}.page-card h3{margin-block:12px}.case-study-grid{grid-template-columns:1fr;gap:18px}.case-study{padding:25px}.case-study h3{font-size:24px}.skill-grid{grid-template-columns:1fr;gap:24px}.skill-groups>h3{font-size:23px}html[data-theme=light] .page-intro{padding-top:32px;padding-bottom:28px}html[data-theme=light] .page-intro h1{font-size:clamp(44px,10vw,58px)}html[data-theme=light] .home-index-heading h2{font-size:29px}html[data-theme=light] .page-card{grid-template-columns:45px minmax(0,1fr);gap:10px 16px;padding-block:22px}html[data-theme=light] .page-card .eyebrow{letter-spacing:.05em;font-size:10px}html[data-theme=light] .page-card h3{font-size:25px}html[data-theme=light] .page-card p{font-size:14px}html[data-theme=light] .case-study-grid{gap:20px}html[data-theme=light] .case-study{padding-block:20px}html[data-theme=light] .case-study h3{font-size:26px}html[data-theme=light] .skill-grid{grid-template-columns:1fr}html[data-theme=light] .cv-entry ul{grid-column:1;font-size:15px}html[data-theme=light] .contact-links{flex-wrap:wrap;gap:12px 24px}html[data-theme=light] .contact-links a{flex:90px}}@media screen and (prefers-reduced-motion:reduce){.page-card{transition:none}}@media print{.print-contact{color:#111;margin-bottom:18px;font-size:11pt;display:block}.home-index{display:none}.page-intro{border-bottom:1px solid #bbb;padding-block:20px}.page-intro h1{margin-block:8px;font-size:28pt;line-height:1.2}.page-intro h1 span{color:#111}.page-intro h1:focus{outline:none}.page-intro p{color:#333;font-size:11pt}.case-study-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.case-study{break-inside:avoid;border-top:1px solid #ccc;padding-block:12px}.case-study h3{margin-block:8px;font-size:14pt}.case-study p,.cv-entry ul{color:#333;font-size:10pt}.skill-groups{border-top:1px solid #ccc;margin-top:20px;padding-top:16px}.skill-groups>h3{font-size:14pt}.skill-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.skill-grid>div{break-inside:avoid}.skill-grid h4{margin-block:8px;font-size:11pt}.skill-grid .tags{margin-top:0}}
