@font-face{font-family:Pixel;src:url('assets/pixel.ttf') format('truetype');font-display:swap}
:root{color-scheme:light;--paper:#fafaf8;--ink:#555654;--quiet:#92938f;--pixel:Pixel,monospace}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink)}body{min-height:100svh;font-family:var(--pixel);overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px dashed var(--ink);outline-offset:7px}
.aquarium{position:fixed;inset:0;overflow:hidden;pointer-events:none}.identity{position:absolute;z-index:2;top:43%;left:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100% - 40px);text-align:center}h1{font-weight:400;font-size:clamp(1.65rem,4.4vw,3.5rem);letter-spacing:-.05em;line-height:1.5;margin:0 0 27px}nav{display:flex;justify-content:center;gap:30px}nav a{font-size:.875rem;color:#777874;text-decoration:none;line-height:2;padding:8px 0;text-underline-offset:7px}nav a:hover{color:var(--ink);text-decoration:underline;text-decoration-thickness:2px}
.fish{position:absolute;left:0;top:var(--y);width:var(--size);height:var(--size);opacity:var(--opacity);will-change:transform}.fish-visual{width:100%;height:100%;transform:scaleX(var(--direction));position:relative}.sprite,.tail{position:absolute;inset:0;background-image:url('assets/aquarium.png');background-size:300% 200%;background-position:var(--col) 0;image-rendering:pixelated}.sprite{clip-path:inset(0 0 0 33%)}.tail{clip-path:inset(0 66% 0 0);transform-origin:34% 50%;animation:tail 1.2s steps(2,end) infinite}.floor{position:absolute;left:0;right:0;bottom:0;height:130px}.plant{position:absolute;bottom:16px;width:170px;height:170px;background-image:url('assets/aquarium.png');background-size:300% 200%;background-position:0 100%;image-rendering:pixelated;opacity:.55}.plant-one{left:6%}.plant-two{right:7%;background-position:50% 100%;width:200px;height:200px}.plant-three{left:33%;background-position:100% 100%;width:110px;height:110px;opacity:.35}.bubble{position:absolute;bottom:100px;width:7px;height:7px;border:2px solid #d3d4d0;animation:bubble 19s linear infinite;opacity:0}.bubble-one{left:15%;animation-delay:-6s}.bubble-two{right:18%;animation-delay:-14s;width:9px;height:9px}.bubble-three{left:69%;animation-delay:-2s;width:5px;height:5px}.motion-control{position:fixed;right:24px;bottom:65px;z-index:3;display:flex;align-items:center;gap:10px;border:0;background:var(--paper);padding:10px;font-size:.75rem;color:#898a86;min-height:44px}.motion-symbol{font-family:monospace;font-size:18px}.motion-control:hover{color:var(--ink)}
.panel{display:none;position:fixed;z-index:6;left:50%;top:43%;transform:translate(-50%,-50%);width:440px;max-width:calc(100% - 40px);padding:42px 34px 38px;border:2px solid var(--ink);background:var(--paper)}.panel:target,.panel.open{display:block}.panel h2{font-size:1.125rem;line-height:1.7;font-weight:400;margin:0 35px 27px 0}.panel p{font-family:var(--pixel);font-size:1rem;line-height:2;margin:0;overflow-wrap:anywhere}.close{position:absolute;right:10px;top:8px;min-width:44px;min-height:44px;border:0;background:transparent;font-family:monospace;font-size:28px}.scrim{position:fixed;inset:0;z-index:5;background:rgba(250,250,248,.6)}.scrim[hidden]{display:none}.paused .tail,.paused .bubble{animation-play-state:paused}
@keyframes tail{50%{transform:scaleX(.78)}}@keyframes bubble{0%{transform:translate(0,0);opacity:0}10%{opacity:.7}80%{opacity:.5}100%{transform:translate(20px,-65vh);opacity:0}}
@media(max-width:600px){.identity{top:42%}h1{margin-bottom:22px}nav{gap:20px}nav a{font-size:.75rem;min-height:44px}.plant-one{left:-22px;width:140px;height:140px}.plant-two{right:-25px;width:160px;height:160px}.plant-three{display:none}.motion-control{right:14px}.panel{padding:40px 26px 30px}.panel p{font-size:.875rem}}
@media(prefers-reduced-motion:reduce){.tail,.bubble{animation:none}.bubble{opacity:.4}}
/* Keep enlarged text and compact screens comfortable. */
nav{flex-wrap:wrap;row-gap:6px}.panel{max-height:calc(100svh - 40px);overflow-y:auto}.plant-two{bottom:9px}
@media(max-width:600px){nav{gap:8px 18px}nav a{font-size:.875rem}}
.motion-control{bottom:3px;font-size:.75rem;min-height:38px;padding:8px 10px}

/* Two-line arcade wordmark: light faces, charcoal outline and hard extrusion. */
h1{font-size:clamp(2.5rem,6vw,4.5rem);line-height:1.10;letter-spacing:-.02em;margin-bottom:36px}
.logo-line{display:block;position:relative;isolation:isolate;-webkit-text-stroke:0;text-shadow:none}
.logo-line::before{content:attr(data-lettering);position:absolute;inset:0;z-index:-1;color:var(--ink);text-shadow:0.0750em 0.0000em 0 var(--ink),0.0724em 0.0194em 0 var(--ink),0.0650em 0.0375em 0 var(--ink),0.0530em 0.0530em 0 var(--ink),0.0375em 0.0650em 0 var(--ink),0.0194em 0.0724em 0 var(--ink),0.0000em 0.0750em 0 var(--ink),-0.0194em 0.0724em 0 var(--ink),-0.0375em 0.0650em 0 var(--ink),-0.0530em 0.0530em 0 var(--ink),-0.0650em 0.0375em 0 var(--ink),-0.0724em 0.0194em 0 var(--ink),-0.0750em 0.0000em 0 var(--ink),-0.0724em -0.0194em 0 var(--ink),-0.0650em -0.0375em 0 var(--ink),-0.0530em -0.0530em 0 var(--ink),-0.0375em -0.0650em 0 var(--ink),-0.0194em -0.0724em 0 var(--ink),-0.0000em -0.0750em 0 var(--ink),0.0194em -0.0724em 0 var(--ink),0.0375em -0.0650em 0 var(--ink),0.0530em -0.0530em 0 var(--ink),0.0650em -0.0375em 0 var(--ink),0.0724em -0.0194em 0 var(--ink),0.0612em -0.0238em 0 var(--ink),0.0587em -0.0043em 0 var(--ink),0.0512em 0.0137em 0 var(--ink),0.0393em 0.0293em 0 var(--ink),0.0238em 0.0412em 0 var(--ink),0.0057em 0.0487em 0 var(--ink),-0.0137em 0.0512em 0 var(--ink),-0.0332em 0.0487em 0 var(--ink),-0.0512em 0.0412em 0 var(--ink),-0.0668em 0.0293em 0 var(--ink),-0.0787em 0.0137em 0 var(--ink),-0.0862em -0.0043em 0 var(--ink),-0.0887em -0.0237em 0 var(--ink),-0.0862em -0.0432em 0 var(--ink),-0.0787em -0.0612em 0 var(--ink),-0.0668em -0.0768em 0 var(--ink),-0.0513em -0.0887em 0 var(--ink),-0.0332em -0.0962em 0 var(--ink),-0.0138em -0.0988em 0 var(--ink),0.0057em -0.0962em 0 var(--ink),0.0238em -0.0887em 0 var(--ink),0.0393em -0.0768em 0 var(--ink),0.0512em -0.0613em 0 var(--ink),0.0587em -0.0432em 0 var(--ink),0.0475em -0.0475em 0 var(--ink),0.0449em -0.0281em 0 var(--ink),0.0375em -0.0100em 0 var(--ink),0.0255em 0.0055em 0 var(--ink),0.0100em 0.0175em 0 var(--ink),-0.0081em 0.0249em 0 var(--ink),-0.0275em 0.0275em 0 var(--ink),-0.0469em 0.0249em 0 var(--ink),-0.0650em 0.0175em 0 var(--ink),-0.0805em 0.0055em 0 var(--ink),-0.0925em -0.0100em 0 var(--ink),-0.0999em -0.0281em 0 var(--ink),-0.1025em -0.0475em 0 var(--ink),-0.0999em -0.0669em 0 var(--ink),-0.0925em -0.0850em 0 var(--ink),-0.0805em -0.1005em 0 var(--ink),-0.0650em -0.1125em 0 var(--ink),-0.0469em -0.1199em 0 var(--ink),-0.0275em -0.1225em 0 var(--ink),-0.0081em -0.1199em 0 var(--ink),0.0100em -0.1125em 0 var(--ink),0.0255em -0.1005em 0 var(--ink),0.0375em -0.0850em 0 var(--ink),0.0449em -0.0669em 0 var(--ink),0.0337em -0.0713em 0 var(--ink),0.0312em -0.0518em 0 var(--ink),0.0237em -0.0338em 0 var(--ink),0.0118em -0.0182em 0 var(--ink),-0.0037em -0.0063em 0 var(--ink),-0.0218em 0.0012em 0 var(--ink),-0.0412em 0.0037em 0 var(--ink),-0.0607em 0.0012em 0 var(--ink),-0.0787em -0.0063em 0 var(--ink),-0.0943em -0.0182em 0 var(--ink),-0.1062em -0.0338em 0 var(--ink),-0.1137em -0.0518em 0 var(--ink),-0.1162em -0.0712em 0 var(--ink),-0.1137em -0.0907em 0 var(--ink),-0.1062em -0.1087em 0 var(--ink),-0.0943em -0.1243em 0 var(--ink),-0.0788em -0.1362em 0 var(--ink),-0.0607em -0.1437em 0 var(--ink),-0.0413em -0.1462em 0 var(--ink),-0.0218em -0.1437em 0 var(--ink),-0.0037em -0.1362em 0 var(--ink),0.0118em -0.1243em 0 var(--ink),0.0237em -0.1088em 0 var(--ink),0.0312em -0.0907em 0 var(--ink),0.0200em -0.0950em 0 var(--ink),0.0174em -0.0756em 0 var(--ink),0.0100em -0.0575em 0 var(--ink),-0.0020em -0.0420em 0 var(--ink),-0.0175em -0.0300em 0 var(--ink),-0.0356em -0.0226em 0 var(--ink),-0.0550em -0.0200em 0 var(--ink),-0.0744em -0.0226em 0 var(--ink),-0.0925em -0.0300em 0 var(--ink),-0.1080em -0.0420em 0 var(--ink),-0.1200em -0.0575em 0 var(--ink),-0.1274em -0.0756em 0 var(--ink),-0.1300em -0.0950em 0 var(--ink),-0.1274em -0.1144em 0 var(--ink),-0.1200em -0.1325em 0 var(--ink),-0.1080em -0.1480em 0 var(--ink),-0.0925em -0.1600em 0 var(--ink),-0.0744em -0.1674em 0 var(--ink),-0.0550em -0.1700em 0 var(--ink),-0.0356em -0.1674em 0 var(--ink),-0.0175em -0.1600em 0 var(--ink),-0.0020em -0.1480em 0 var(--ink),0.0100em -0.1325em 0 var(--ink),0.0174em -0.1144em 0 var(--ink),0.0062em -0.1187em 0 var(--ink),0.0037em -0.0993em 0 var(--ink),-0.0038em -0.0813em 0 var(--ink),-0.0157em -0.0657em 0 var(--ink),-0.0312em -0.0538em 0 var(--ink),-0.0493em -0.0463em 0 var(--ink),-0.0688em -0.0437em 0 var(--ink),-0.0882em -0.0463em 0 var(--ink),-0.1062em -0.0538em 0 var(--ink),-0.1218em -0.0657em 0 var(--ink),-0.1337em -0.0813em 0 var(--ink),-0.1412em -0.0993em 0 var(--ink),-0.1437em -0.1187em 0 var(--ink),-0.1412em -0.1382em 0 var(--ink),-0.1337em -0.1562em 0 var(--ink),-0.1218em -0.1718em 0 var(--ink),-0.1063em -0.1837em 0 var(--ink),-0.0882em -0.1912em 0 var(--ink),-0.0688em -0.1937em 0 var(--ink),-0.0493em -0.1912em 0 var(--ink),-0.0312em -0.1837em 0 var(--ink),-0.0157em -0.1718em 0 var(--ink),-0.0038em -0.1563em 0 var(--ink),0.0037em -0.1382em 0 var(--ink),-0.0075em -0.1425em 0 var(--ink),-0.0101em -0.1231em 0 var(--ink),-0.0175em -0.1050em 0 var(--ink),-0.0295em -0.0895em 0 var(--ink),-0.0450em -0.0775em 0 var(--ink),-0.0631em -0.0701em 0 var(--ink),-0.0825em -0.0675em 0 var(--ink),-0.1019em -0.0701em 0 var(--ink),-0.1200em -0.0775em 0 var(--ink),-0.1355em -0.0895em 0 var(--ink),-0.1475em -0.1050em 0 var(--ink),-0.1549em -0.1231em 0 var(--ink),-0.1575em -0.1425em 0 var(--ink),-0.1549em -0.1619em 0 var(--ink),-0.1475em -0.1800em 0 var(--ink),-0.1355em -0.1955em 0 var(--ink),-0.1200em -0.2075em 0 var(--ink),-0.1019em -0.2149em 0 var(--ink),-0.0825em -0.2175em 0 var(--ink),-0.0631em -0.2149em 0 var(--ink),-0.0450em -0.2075em 0 var(--ink),-0.0295em -0.1955em 0 var(--ink),-0.0175em -0.1800em 0 var(--ink),-0.0101em -0.1619em 0 var(--ink),-0.0213em -0.1663em 0 var(--ink),-0.0238em -0.1468em 0 var(--ink),-0.0313em -0.1288em 0 var(--ink),-0.0432em -0.1132em 0 var(--ink),-0.0587em -0.1013em 0 var(--ink),-0.0768em -0.0938em 0 var(--ink),-0.0963em -0.0913em 0 var(--ink),-0.1157em -0.0938em 0 var(--ink),-0.1337em -0.1013em 0 var(--ink),-0.1493em -0.1132em 0 var(--ink),-0.1612em -0.1288em 0 var(--ink),-0.1687em -0.1468em 0 var(--ink),-0.1713em -0.1663em 0 var(--ink),-0.1687em -0.1857em 0 var(--ink),-0.1612em -0.2037em 0 var(--ink),-0.1493em -0.2193em 0 var(--ink),-0.1338em -0.2312em 0 var(--ink),-0.1157em -0.2387em 0 var(--ink),-0.0963em -0.2413em 0 var(--ink),-0.0768em -0.2387em 0 var(--ink),-0.0587em -0.2312em 0 var(--ink),-0.0432em -0.2193em 0 var(--ink),-0.0313em -0.2038em 0 var(--ink),-0.0238em -0.1857em 0 var(--ink),-0.0350em -0.1900em 0 var(--ink),-0.0376em -0.1706em 0 var(--ink),-0.0450em -0.1525em 0 var(--ink),-0.0570em -0.1370em 0 var(--ink),-0.0725em -0.1250em 0 var(--ink),-0.0906em -0.1176em 0 var(--ink),-0.1100em -0.1150em 0 var(--ink),-0.1294em -0.1176em 0 var(--ink),-0.1475em -0.1250em 0 var(--ink),-0.1630em -0.1370em 0 var(--ink),-0.1750em -0.1525em 0 var(--ink),-0.1824em -0.1706em 0 var(--ink),-0.1850em -0.1900em 0 var(--ink),-0.1824em -0.2094em 0 var(--ink),-0.1750em -0.2275em 0 var(--ink),-0.1630em -0.2430em 0 var(--ink),-0.1475em -0.2550em 0 var(--ink),-0.1294em -0.2624em 0 var(--ink),-0.1100em -0.2650em 0 var(--ink),-0.0906em -0.2624em 0 var(--ink),-0.0725em -0.2550em 0 var(--ink),-0.0570em -0.2430em 0 var(--ink),-0.0450em -0.2275em 0 var(--ink),-0.0376em -0.2094em 0 var(--ink)}
.logo-top{color:#fff}.logo-bottom{color:#deded8}
/* Align the visible pixel bases, compensating for each sprite cell's padding. */
.plant{--plant-size:306px;--base-padding:.19140625;width:var(--plant-size);height:var(--plant-size);bottom:calc(0px - var(--plant-size)*var(--base-padding))}
.plant-two{--plant-size:360px;--base-padding:.19921875}
.plant-three{--plant-size:248px;--base-padding:.205078125}
@media(max-width:600px){.plant-one{--plant-size:252px}.plant-two{--plant-size:288px}h1{font-size:clamp(2rem,10vw,3.5rem);margin-bottom:30px}}

/* Space the two logo faces without changing their backing. */
.logo-top{margin-bottom:.18em}
.panel{width:680px;top:50%}
.panel p,.cv-list,.contact-list{font-size:1rem;line-height:1.9}
.cv-list,.contact-list{list-style:none;padding:0;margin:0;overflow-wrap:anywhere}
.cv-list li+li{margin-top:24px}
.cv-list .dates{display:block;font-size:.875rem;color:#777874;margin-top:6px}
.contact-list li+li{margin-top:14px}
.contact-list a{display:inline-block;max-width:100%;padding:6px 0;color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.contact-list a:hover{color:#222}
.contact-address{display:block;font-size:.875rem;margin-top:6px}
@media(max-width:600px){.panel p,.cv-list,.contact-list{font-size:1rem;line-height:1.8}.contact-list{font-size:.875rem}}

/* Keep the animation control clear of the bottom-anchored plants. */
.motion-control{top:16px;bottom:auto}

.plant-one,.plant-two{opacity:.8}
