@font-face{font-family:FormPixel;src:url('form-pixel.ttf?v=2')}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:#f7f7f0;color:#242721;font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #386ad0;outline-offset:5px}::selection{background:#d4df78}header{height:88px;padding:0 4%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #242721;gap:24px;background:#f7f7f0}.brand{font-size:23px;letter-spacing:-1px;display:flex;align-items:center;gap:10px}.brand-symbol{font-size:43px;line-height:1}.small{font-size:13px;align-self:start;padding-top:6px}nav{display:flex;gap:40px;align-items:center;margin-left:auto}nav a{font-size:14px;padding:10px 0;position:relative}nav a:after{content:'';position:absolute;bottom:4px;left:0;width:0;height:1px;background:currentColor;transition:width .3s}nav a:hover:after{width:100%}sup{font-family:monospace;font-size:11px;margin-left:3px}.mono{font:12px/1.55 'Courier New',monospace;letter-spacing:.04em}.hero{min-height:660px;height:calc(100svh - 136px);max-height:880px;position:relative;overflow:hidden;padding:29px 4% 42px;isolation:isolate}.hero-top{display:flex;justify-content:space-between}.hero-title{position:relative;margin-top:65px}h1{font-size:clamp(65px,7.9vw,132px);font-weight:400;letter-spacing:-.065em;line-height:1.02;margin:0;position:relative;z-index:2}.pixel{font-family:FormPixel,Georgia,serif;font-weight:400;letter-spacing:-.055em}h1 .pixel{font-size:1.22em;line-height:.92;display:inline-block;padding-top:9px}.hero-star{position:absolute;right:9%;top:3px;font-size:clamp(180px,23vw,360px);line-height:.8;font-family:Arial,sans-serif;font-weight:400;animation:turn 45s linear infinite}.orbit-label{position:absolute;right:5%;bottom:8px;transform:rotate(-9deg);border:1px solid currentColor;border-radius:50%;padding:12px 22px}.hero-bottom{display:flex;align-items:end;gap:45px;margin-top:60px;position:relative;z-index:2}.hero-bottom p{font-size:18px;line-height:1.45;max-width:330px;margin:0}.oval-link{border:1px solid #242721;border-radius:50%;height:68px;width:216px;display:flex;align-items:center;justify-content:space-around;padding:0 22px;font-size:14px;transition:background .3s,transform .4s}.oval-link:hover{background:#242721;color:#fff;transform:rotate(-5deg)}.oval-link span+span{font-size:24px}.index{margin-left:auto;text-align:right}.gradient{position:absolute;inset:22% -20% -75%;z-index:-2;background:radial-gradient(ellipse at 65% 64%,#688638 0%,#98b278 19%,transparent 45%),radial-gradient(ellipse at 26% 63%,#6198b9 0%,#a5c6d8 29%,transparent 61%),radial-gradient(ellipse at 90% 28%,#d7e0b3 0%,transparent 55%);filter:blur(25px);animation:drift 18s ease-in-out infinite alternate}.noise{position:absolute;inset:0;pointer-events:none;opacity:.16;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.7' d='M0 0h180v180H0z'/%3E%3C/svg%3E");mix-blend-mode:multiply}.ticker{overflow:hidden;border-block:1px solid #242721;height:49px;display:flex;align-items:center;background:#e6ebcd}.ticker>div{white-space:nowrap;font:13px 'Courier New',monospace;letter-spacing:.06em;animation:marquee 36s linear infinite}.ticker span{font-size:23px;margin:0 42px;vertical-align:middle}.section{padding:96px 4%}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:42px}.eyebrow{display:block;margin-bottom:28px}h2{font-size:clamp(36px,4.2vw,65px);line-height:1.08;letter-spacing:-.045em;font-weight:400;margin:0}h2 .pixel{font-size:1.2em}.side-note{text-align:right;padding-bottom:6px}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 28px}.project-open{display:block;padding:0;width:100%;background:none;border:0;text-align:left}.project-art{height:390px;position:relative;overflow:hidden;border:1px solid #a5ac98;transition:clip-path .5s,transform .5s;isolation:isolate}.art-top{position:absolute;top:23px;left:25px;right:25px;display:flex;justify-content:space-between;z-index:2}.art-bottom{position:absolute;bottom:27px;left:26px;right:26px;display:flex;justify-content:space-between;align-items:end}.art-bottom>.pixel{font-size:43px;line-height:.95}.tag{font:10px 'Courier New',monospace;border:1px solid currentColor;padding:6px}.payguard{background:radial-gradient(ellipse at 60% 20%,#dce1c0,transparent 60%),linear-gradient(135deg,#d9e5e2,#b4c7a2)}.scan-orbit{width:200px;height:200px;position:absolute;right:14%;top:70px;transition:transform 1s}.scan-orbit i{position:absolute;inset:0;border:1px solid #364836;border-radius:50%;transform:rotate(-30deg)}.scan-orbit i:nth-child(2){inset:22px -18px;transform:rotate(55deg)}.scan-orbit i:nth-child(3){inset:48px -30px;transform:rotate(-35deg)}.scan-orbit b{position:absolute;inset:0;display:grid;place-items:center;font-weight:300;font-size:85px}.scan-orbit span{width:15px;height:15px;background:#2b4335;border-radius:50%;position:absolute;top:23px;left:24px;animation:pulse 3s ease-in-out infinite}.project-open:hover .scan-orbit{transform:rotate(35deg)}.open-disc{position:absolute;right:20px;top:50%;width:50px;height:50px;display:grid;place-items:center;font-size:25px;border-radius:50%;background:#f7f7f0;transform:translate(80px,-50%);transition:transform .4s}.project-open:hover .open-disc,.project-open:focus-visible .open-disc{transform:translate(0,-50%)}.project-description{display:flex;justify-content:space-between;gap:14px;padding:20px 0 0;align-items:start}.project-description h3{font-weight:400;font-size:23px;letter-spacing:-.035em;margin:0 0 8px}.project-description p{font-size:14px;color:#56594f;margin:0;line-height:1.4}.project-description>.mono{font-size:11px;padding-top:6px;white-space:nowrap}.briefcase{background:#c1c8e4;border-color:#afb5ce}.cross-mark{position:absolute;right:14%;top:48px;font-size:190px;line-height:1;transition:transform 1s}.project-open:hover .cross-mark{transform:rotate(90deg)}.art-word{position:absolute;bottom:28px;left:27px;font-size:49px;line-height:.95}.readshift{background:#e9e4d7}.reading-symbol{position:absolute;inset:35px 0 0;display:flex;gap:30px;justify-content:center;align-items:center;font:135px Georgia,serif;transition:gap .7s}.reading-symbol span{font-family:FormPixel;font-size:170px}.project-open:hover .reading-symbol{gap:65px}.eunoia{background:#dee5a7}.eunoia-symbol{font-size:270px;position:absolute;top:10px;right:20%;line-height:1.1;transition:transform 1s}.project-open:hover .eunoia-symbol{transform:rotate(75deg)}.about{border-block:1px solid #a7aa9b;display:grid;grid-template-columns:1fr 1.7fr;gap:60px}.about-symbol{font-size:160px;line-height:1.5}.about-copy>p{font-size:18px;line-height:1.6;max-width:660px;color:#4b5046}.about-copy>p:first-of-type{margin-top:33px}.facts{display:grid;grid-template-columns:1fr 1fr;gap:30px;border-top:1px solid #b7baab;margin-top:35px;padding-top:25px}.facts p{font-size:15px;line-height:1.5}.skills{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.skills span{font-size:12px;padding:8px 14px;border:1px solid #a7ab9d;border-radius:30px}.connect{position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 93% 100%,#adbf85,transparent 53%),radial-gradient(ellipse at 5% 100%,#c2d4e3,transparent 50%),#e8eddf}.connect-main{display:flex;justify-content:space-between;align-items:center}.connect h2{font-size:clamp(42px,6.2vw,96px)}.connect-button{width:125px;height:125px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;font-size:65px;transition:transform .4s,background .4s;z-index:2}.connect-button:hover{transform:rotate(45deg);background:#f7f7f0}.connect-bottom{display:flex;justify-content:space-between;align-items:end;margin-top:40px;position:relative;z-index:2}.connect-bottom p{font-size:16px;line-height:1.5;margin:0}.text-link{font-size:15px;border-bottom:1px solid;padding-bottom:7px;display:inline-block}footer{padding:25px 4%;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:12px}footer .mono{font-size:10px}.skip{position:fixed;top:-100px;left:20px;z-index:20;padding:12px;background:white}.skip:focus{top:10px}dialog{border:1px solid #242721;background:#f7f7f0;color:#242721;max-width:700px;width:calc(100% - 36px);padding:55px;max-height:85svh;overflow:auto}dialog::backdrop{background:#24362b70;backdrop-filter:blur(8px)}dialog[open]{animation:enter .35s ease-out}dialog h2{font-size:48px}dialog p{font-size:17px;line-height:1.6}dialog h3{font-size:13px;font-weight:400;font-family:monospace;margin-top:30px}.close-dialog{position:absolute;top:15px;right:20px;font-size:28px;border:0;background:none}.reveal{opacity:1}.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .8s,transform .8s}.js .reveal.visible{opacity:1;transform:translateY(0)}body.paused *,body.paused *:before,body.paused *:after{animation-play-state:paused!important;scroll-behavior:auto!important}@keyframes turn{to{transform:rotate(360deg)}}@keyframes drift{to{transform:translate(-3%,-5%) scale(1.08)}}@keyframes pulse{50%{transform:scale(.65);opacity:.5}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1600px){header,.section,.hero,footer{padding-left:max(4%,calc((100vw - 1600px)/2));padding-right:max(4%,calc((100vw - 1600px)/2))}}@media(max-width:900px){.hero-star{right:2%;top:30px;font-size:180px}.orbit-label{right:0;bottom:-20px;font-size:10px}.hero-title{margin-top:80px}h1{font-size:9vw}.hero-bottom{margin-top:90px}.hero-bottom p{font-size:16px;max-width:270px}.index{display:none}.project-art{height:330px}.project-description{display:block}.project-description>.mono{display:block;margin-top:8px}.project-grid{gap:40px 22px}.art-bottom>.mono,.tag{display:none}.about{gap:30px;grid-template-columns:1fr 2fr}.side-note{display:none}footer .mono{display:none}}@media(max-width:600px){header{height:76px;gap:12px}.brand{font-size:17px;gap:5px}.brand-symbol{font-size:30px}.small{display:none}nav{gap:18px}nav a{font-size:12px}nav sup{display:none}.hero{height:auto;min-height:680px;padding-top:23px}.hero-top{font-size:9px;gap:10px}.hero-title{margin-top:75px}h1{font-size:13vw;line-height:1.1;letter-spacing:-.06em}.hero-star{font-size:110px;top:185px;right:8%}.orbit-label{top:294px;bottom:auto;font-size:9px}.hero-bottom{margin-top:50px;display:block}.hero-bottom p{max-width:220px;font-size:16px}.oval-link{margin-top:58px;width:180px;height:57px}.gradient{inset:25% -60% -25%}.section{padding-top:65px;padding-bottom:65px}.section-head{margin-bottom:30px}h2{font-size:36px}.section-head h2 .pixel{display:block}.eyebrow{font-size:11px;margin-bottom:20px}.project-grid{grid-template-columns:1fr;gap:36px}.project-art{height:340px}.project-description{display:flex}.project-description>.mono{font-size:9px}.about{display:block}.about-label{display:flex;justify-content:space-between;align-items:start;margin-bottom:25px}.about-label>.mono:last-child{display:none}.about-symbol{font-size:60px;line-height:.8}.about-copy>p{font-size:16px}.facts{gap:15px}.facts p{font-size:14px}.connect h2{font-size:40px}.connect-button{width:64px;height:64px;font-size:38px;flex-shrink:0;margin-left:10px}.connect-bottom{align-items:start;gap:25px;flex-direction:column}.connect-bottom p{font-size:14px}footer{font-size:10px}dialog{padding:45px 25px}dialog h2{font-size:37px}.ticker span{margin-inline:23px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}}

.research{border-top:1px solid #a7aa9b;background:#eef1e9}.paper{display:grid;grid-template-columns:150px minmax(0,1fr);gap:35px;padding:36px 0 40px;border-top:1px solid #9ca58f}.paper:last-child{padding-bottom:0}.paper-index{display:flex;flex-direction:column;gap:28px}.paper-symbol{font:76px/1 Arial,sans-serif;width:76px;transition:transform .8s}.paper:hover .paper-symbol{transform:rotate(45deg)}.paper:hover .paper-symbol.second{transform:translateX(12px)}.paper-meta{display:flex;gap:18px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:22px}.paper-status{border:1px solid #99a58e;padding:5px 10px;border-radius:30px}.paper h3{font-size:clamp(25px,3vw,42px);font-weight:400;letter-spacing:-.035em;line-height:1.15;margin:0 0 10px}.paper-content>p{font-size:16px;line-height:1.65;max-width:720px;color:#4b5046;margin:16px 0 22px}.paper-content>.paper-subtitle{font-size:18px;color:#242721;margin-top:0}.paper-details{margin-top:24px}.paper-details summary{cursor:pointer;font-size:14px;font-weight:500;line-height:1.4;list-style:none;display:inline-flex;justify-content:space-between;align-items:center;gap:24px;min-height:48px;max-width:100%;padding:12px 18px;border:1px solid #59634f;border-radius:999px;background:#f7f8f2;color:#242721;transition:background .2s,color .2s,border-color .2s}.paper-details summary:hover,.paper-details[open] summary{background:#242721;color:#f7f8f2;border-color:#242721}.paper-details summary:active{background:#414936}.paper-details summary::-webkit-details-marker{display:none}.paper-details summary:focus-visible{outline:3px solid #386ad0;outline-offset:5px}.paper-details summary>span{font-size:25px;line-height:1;transition:transform .3s}.paper-details[open] summary>span{transform:rotate(45deg)}.paper-expanded{max-width:760px;padding:6px 0 12px;animation:enter .35s ease-out}.paper-expanded h4{font:12px 'Courier New',monospace;text-transform:uppercase;letter-spacing:.04em;margin:22px 0 8px}.paper-expanded p{font-size:16px;line-height:1.65;color:#4b5046;margin:0 0 18px}.paper-expanded a{margin-top:10px}@media(max-width:900px){.paper{grid-template-columns:100px minmax(0,1fr);gap:25px}}@media(max-width:600px){header{height:auto;min-height:100px;display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding-top:12px;padding-bottom:10px}header nav{grid-row:2;grid-column:1 / -1;width:100%;justify-content:space-between;gap:12px;margin:0}header nav a{font-size:14px}.paper{grid-template-columns:minmax(0,1fr);gap:18px;padding:28px 0}.paper-index{flex-direction:row;justify-content:space-between;align-items:center;gap:10px}.paper-symbol{font-size:35px;width:35px}.paper-meta{font-size:11px;gap:10px}.paper-content>.paper-subtitle{font-size:16px}.paper h3{font-size:28px}.paper-details{margin-top:18px}}

/* Personal identity and a compact, two-line hero. */
.hero-title{display:grid;grid-template-columns:minmax(0,1fr) 23%;align-items:center;gap:28px;margin-top:62px}
.hero-title h1{font-size:clamp(48px,7.1vw,114px);letter-spacing:-.06em;line-height:.98;min-width:0}
.hero-title h1 .developer-line{display:block;font-size:1.03em;line-height:.96;padding:0;letter-spacing:-.045em}
.researcher-line{display:block;line-height:1.02;margin-top:-.02em}
.hero-art{position:relative;height:280px;pointer-events:none}
.hero-art .hero-star{font-size:clamp(140px,18vw,260px);top:0;right:8%;line-height:.8}
.hero-orbits{position:absolute;width:116px;height:116px;bottom:0;right:0;animation:orbit-tumble 22s linear infinite}
.hero-orbits i{position:absolute;inset:0;border:1.5px solid currentColor;border-radius:50%}
.hero-orbits i:nth-child(2){transform:rotate(60deg) scaleX(.4)}
.hero-orbits i:nth-child(3){transform:rotate(-60deg) scaleX(.4)}
.hero-bottom{justify-content:space-between;margin-top:48px;gap:40px}
.work-cue{display:flex;align-items:center;gap:34px;padding:14px 0 12px;border-bottom:1px solid #505849;min-width:210px}
.work-cue .mono{font-size:13px}.cue-arrow{font-size:28px;line-height:1;transition:transform .35s}
.work-cue:hover .cue-arrow,.work-cue:focus-visible .cue-arrow{transform:translateY(5px)}
.gradient{translate:var(--cursor-x,0px) var(--cursor-y,0px);will-change:translate;pointer-events:none}
@keyframes orbit-tumble{from{transform:rotate(-15deg)}to{transform:rotate(-375deg)}}
@media(max-width:900px){.hero-title{gap:18px;grid-template-columns:minmax(0,1fr) 21%;margin-top:75px}.hero-title h1{font-size:7.3vw}.hero-art{height:230px}.hero-art .hero-star{font-size:140px;right:0;top:8px}.hero-orbits{width:88px;height:88px;bottom:8px;right:5px}.hero-bottom{margin-top:55px}.work-cue{min-width:185px;gap:20px}}
@media(max-width:600px){.hero{min-height:645px;padding-bottom:35px}.hero-top{flex-wrap:wrap;row-gap:8px}.hero-title{grid-template-columns:minmax(0,1fr);gap:12px;margin-top:62px}.hero-title h1{font-size:10vw}.hero-title h1 .developer-line{font-size:1.08em;line-height:1}.researcher-line{margin-top:-.03em}.hero-art{height:104px;margin-top:10px}.hero-art .hero-star{font-size:110px;right:7%;top:0}.hero-orbits{width:62px;height:62px;right:40%;bottom:8px}.hero-bottom{margin-top:12px;display:flex;align-items:start;flex-direction:column;gap:24px}.hero-bottom p{max-width:290px}.work-cue{min-width:0;width:100%;padding:8px 0 12px;justify-content:space-between}.work-cue .mono{font-size:12px}.gradient{will-change:auto}}
@media(prefers-reduced-motion:reduce){.hero-orbits{animation:none}.gradient{translate:0 0!important;will-change:auto}}

/* Unified asterisk family and corrected pixel-font spacing. */
.hero-title{grid-template-columns:minmax(0,1fr) 36%;gap:24px;margin-top:48px}
.hero-title h1{font-size:clamp(42px,6.35vw,102px);line-height:1.02}
.hero-title h1 .developer-line{font-size:1em;letter-spacing:0;line-height:1.02;white-space:nowrap;padding-bottom:.04em;font-kerning:none}
.researcher-line{margin-top:0;line-height:1.04}
.hero-art{height:auto;aspect-ratio:440 / 340;width:100%;max-width:440px;justify-self:start;margin:0;position:relative}
.asterisk-cluster{width:100%;height:100%;display:block;overflow:visible}
.star-main,.star-companion,.star-accent{transform-origin:0 0;animation:turn 45s linear infinite}
.star-companion{animation-direction:reverse;animation-duration:35s}.star-accent{animation-duration:28s}
@media(max-width:900px){.hero-title{grid-template-columns:minmax(0,1fr) 34%;gap:16px;margin-top:65px}.hero-title h1{font-size:6.3vw}.hero-art{height:auto}.hero-bottom{margin-top:60px}}
@media(max-width:600px){.hero-title{grid-template-columns:minmax(0,1fr);gap:22px;margin-top:42px}.hero-title h1{font-size:9.2vw}.hero-title h1 .developer-line{font-size:1em;line-height:1.02}.hero-art{width:min(76%,300px);height:auto;justify-self:center;margin:0}.hero-bottom{margin-top:20px}.hero{height:auto;min-height:0}.researcher-line{margin-top:0}}

/* Requested text and symbol changes; retain hero sizing and surrounding spacing. */
.sentence-line{display:block}
.hero-title .intro-sentence{line-height:1.015}
.hero-title .intro-sentence .developer-line{line-height:1.015;letter-spacing:-.006em;padding-bottom:.035em}
.companion-spark{transform-origin:0 0;animation:spark-sway 12s ease-in-out infinite alternate}
.hero-bottom p{flex:1;max-width:740px;min-width:0}
.hero-bottom .work-cue{flex-shrink:0}
.connect .contact-sentence{font-size:clamp(42px,6.35vw,102px);line-height:1.015;letter-spacing:-.06em}
.connect .contact-sentence .connection-word{font-size:1em;letter-spacing:-.006em;line-height:1.015}
.connect-main{gap:24px}.connect-button{flex-shrink:0}
@keyframes spark-sway{from{transform:rotate(-8deg)}to{transform:rotate(8deg)}}
.background-entry{margin-top:32px;padding-top:28px;border-top:1px solid #b7baab}
.background-entry h3{font-size:26px;letter-spacing:-.03em;font-weight:400;margin:16px 0 10px}
.background-entry p,.background-entry li{font-size:16px;line-height:1.65;color:#4b5046}
.background-entry p{margin:8px 0}.background-entry .entry-role{font-size:18px;color:#242721}
.background-entry ul{margin:16px 0 0;padding-left:20px}.background-entry li+li{margin-top:8px}
.skills-directory{margin-top:32px;padding-top:28px;border-top:1px solid #b7baab}.skills-directory .eyebrow{margin-bottom:24px}
.skill-group{margin-top:24px}.skill-group h3{font-size:16px;font-weight:400;margin:0 0 12px}.skill-group .skills{margin-top:0}.skill-group .skills span{font-size:14px;line-height:1.4;padding:7px 12px}

@media(max-width:900px){.connect .contact-sentence{font-size:6.3vw}}
@media(max-width:600px){.hero-bottom p{max-width:none;flex:auto}.connect .contact-sentence{font-size:7.8vw}.connect-main{gap:12px}.connect-button{width:56px;height:56px;font-size:32px}}

/* About: a full-width background timeline and a structured skills index. */
.background-section{border-block:1px solid #a7aa9b;background:#f4f5ee}
.background-heading{margin-bottom:48px}.background-heading h2{font-size:clamp(40px,4.6vw,70px)}
.background-timeline{border-top:1px solid #a7aa9b}
.timeline-entry{display:grid;grid-template-columns:minmax(100px,.48fr) minmax(0,1.1fr) minmax(0,1.5fr);gap:36px;padding:40px 0;border-bottom:1px solid #b7baab}
.timeline-meta{display:flex;flex-direction:column;align-items:start;gap:12px;padding-top:5px}
.timeline-year{font-size:20px;letter-spacing:-.02em}.timeline-meta>.mono:last-child{color:#535a4b}
.timeline-identity h3{font-size:clamp(25px,2.5vw,36px);font-weight:400;letter-spacing:-.04em;line-height:1.15;margin:0 0 14px}
.timeline-identity>p{font-size:17px;line-height:1.5;margin:0 0 16px}
.timeline-note{display:block;font-size:14px;line-height:1.65;color:#535a4b}
.timeline-description p,.timeline-description li{font-size:16px;line-height:1.65;color:#4b5046;margin:0}
.timeline-description .timeline-footnote{margin-top:20px;font-size:14px;color:#626959}
.timeline-description ul{margin:0;padding-left:18px}.timeline-description li+li{margin-top:12px}
.toolkit{margin-top:64px;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,2fr);gap:56px;align-items:start}
.toolkit-heading .eyebrow{max-width:220px;line-height:1.65;margin-bottom:20px}
.toolkit-heading h3{font-size:clamp(34px,3.4vw,50px);font-weight:400;letter-spacing:-.045em;line-height:1.05;margin:0}.toolkit-heading h3 .pixel{font-size:1.2em}
.toolkit-list{border-top:1px solid #a7aa9b}
.toolkit-row{padding:24px 0;border-bottom:1px solid #b7baab}
.toolkit-row:first-child{padding-top:24px}.toolkit-row:last-child{border-bottom:0;padding-bottom:0}
.toolkit-category{display:flex;gap:16px;align-items:baseline;margin-bottom:16px}.toolkit-category>.mono{color:#68715c;font-size:12px}
.toolkit-category h4{font-size:17px;font-weight:400;margin:0;line-height:1.4}
.toolkit-items{list-style:none;display:flex;flex-wrap:wrap;gap:10px 22px;margin:0;padding:0 0 0 32px}
.toolkit-items li{font-size:14px;line-height:1.5;color:#4b5046;position:relative}
.toolkit-items li:before{content:'';position:absolute;left:-11px;top:.65em;width:2px;height:2px;background:#7b856e}
@media(max-width:1000px){.timeline-entry{grid-template-columns:90px minmax(0,1fr) minmax(0,1.2fr);gap:24px}.toolkit{grid-template-columns:minmax(0,.7fr) minmax(0,1.5fr);gap:32px}}
@media(max-width:650px){.background-heading{margin-bottom:32px}.background-heading h2{font-size:39px}.timeline-entry{grid-template-columns:minmax(0,1fr);gap:20px;padding:28px 0}.timeline-meta{flex-direction:row;align-items:baseline;justify-content:space-between;padding:0}.timeline-year{font-size:18px}.timeline-identity h3{font-size:29px;margin-bottom:10px}.timeline-identity>p{margin-bottom:12px}.timeline-description{padding-top:0}.toolkit{grid-template-columns:1fr;gap:28px;margin-top:48px}.toolkit-heading .eyebrow{max-width:none;margin-bottom:16px}.toolkit-heading h3{font-size:38px}.toolkit-category{gap:12px}.toolkit-items{padding-left:28px;gap:8px 20px}}

/* Text-led hero: preserve its height and give the description a small lift. */
.hero-title{min-height:min(25.6vw,340px);align-items:start}
.hero-bottom{margin-top:36px}
@media(max-width:900px){.hero-title{min-height:24.2vw}.hero-bottom{margin-top:48px}}
@media(max-width:600px){.hero-title{min-height:0}.hero-bottom{margin-top:8px}}

/* Keep the hero's existing height; center its text as one composition. */
.hero{display:flex;flex-direction:column}
.hero-top{position:relative;z-index:2;flex-shrink:0}
.hero-content{flex:1;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2;min-height:0}
.hero .hero-title{display:block;min-height:0;margin-top:0}
.hero .hero-bottom{margin-top:24px}
.hero .gradient{inset:0;filter:none;animation:none;translate:none;will-change:auto;background:radial-gradient(ellipse at 75% 110%,#a6b888,transparent 65%),radial-gradient(ellipse at 16% 106%,#9ebed3,transparent 64%),#f7f7f0}
.indent-canvas{display:block;width:100%;height:100%;pointer-events:none}
.ticker .ticker-track{display:flex;width:max-content;flex-shrink:0;animation:continuous-ticker 34s linear infinite}
.ticker .ticker-group{display:flex;align-items:center;flex-shrink:0;min-width:100vw}
.ticker .ticker-unit{display:flex;align-items:center;flex-shrink:0;margin:0}
.ticker .ticker-label{font:13px 'Courier New',monospace;letter-spacing:.06em;white-space:nowrap;margin:0}
.ticker .ticker-separator{font-size:23px;line-height:1;margin:0 42px}
@keyframes continuous-ticker{to{transform:translateX(-50%)}}
@media(max-width:600px){.hero-content{padding-top:56px;padding-bottom:36px;flex:auto}.hero .hero-bottom{margin-top:20px}.ticker .ticker-separator{margin:0 28px}}

.indent-canvas[hidden]{display:none}

.hero .gradient{animation:none;translate:none;background:radial-gradient(ellipse 60% 70% at 87% 106%,rgba(153,179,102,.8) 0%,rgba(153,179,102,.55) 35%,rgba(153,179,102,.18) 72%,transparent 100%),radial-gradient(ellipse 63% 68% at 17% 104%,rgba(135,176,204,.84) 0%,rgba(135,176,204,.55) 35%,rgba(135,176,204,.18) 72%,transparent 100%),#f7f7f0}

.project-status{display:inline-block;font:12px/1.4 'Courier New',monospace;letter-spacing:0;vertical-align:middle;margin-left:8px;padding:4px 8px;border:1px solid #a7ab9d;border-radius:24px}
#dialog-link[hidden]{display:none}

.github-project-link{font-size:14px;white-space:nowrap;border-bottom:1px solid transparent;transition:border-color .25s}.github-project-link:hover{border-bottom-color:currentColor}
@media(max-width:900px){.github-project-link{display:block}.work .section-head{gap:24px;flex-wrap:wrap}.github-project-link{text-align:left}}

/* Align each project symbol to the same visual center. */
.project-art .scan-orbit{left:50%;top:50%;right:auto;width:180px;height:180px;translate:-50% -50%}
.project-art .cross-mark{left:50%;top:50%;right:auto;width:180px;height:180px;display:grid;place-items:center;font-size:180px;line-height:1;translate:-50% -50%}
.project-art .reading-symbol{inset:auto;left:50%;top:50%;width:100%;height:180px;translate:-50% -50%;font-size:100px;gap:24px}
.project-art .reading-symbol span{font-size:130px}
.project-open:hover .reading-symbol{gap:44px}
.project-art .eunoia-symbol{left:50%;top:50%;right:auto;width:200px;height:200px;display:grid;place-items:center;font-size:200px;line-height:1;translate:-50% -50%}
.project-description>div{min-width:0}.project-description h3{line-height:1.3}
.project-art.eunoia .art-bottom>.mono{font-size:11px;max-width:160px;text-align:right}

/* Small research accents, with a breathing outer ring for Eunoia. */
.research-profile-link{display:inline-block;font-size:14px;color:#242721;border-bottom:1px solid #a7aa9b;transition:color .2s,border-color .2s}
.research-profile-link:hover{color:#242721;border-color:currentColor}
.research-profile-link:focus-visible{outline:3px solid #386ad0;outline-offset:5px}
.paper{--paper-accent:#725487;--paper-tint:#ece5f2;--paper-edge:#b9a5c9}
.paper:nth-child(2){--paper-accent:#3f6085;--paper-tint:#e1eaf4;--paper-edge:#9eb4cd}
.paper:nth-child(3){--paper-accent:#536f3d;--paper-tint:#e4ecd9;--paper-edge:#a4b68e}
.paper .paper-symbol{color:#000}
.paper-status{color:var(--paper-accent);background:var(--paper-tint);border-color:var(--paper-edge)}
.paper-status.published{color:#3f6085;background:#e1eaf4;border-color:#9eb4cd}
.paper-details summary>span{color:inherit}

.paper-expanded .text-link{color:#242721}
.paper-symbol.pulse-symbol{position:relative;display:block;width:1em;height:1em;flex-shrink:0;transition:none}
.paper:hover .paper-symbol.pulse-symbol{transform:none}
.pulse-ring,.pulse-core{position:absolute;display:block;border-radius:50%}
.pulse-ring{inset:14%;border:.04em solid currentColor;transform:scale(.84);transform-origin:center}
.paper:hover .pulse-ring{animation:research-ring-pulse 4s cubic-bezier(.45,0,.55,1) infinite}
.pulse-core{inset:36%;background:currentColor}
@keyframes research-ring-pulse{0%,100%{transform:scale(.84)}50%{transform:scale(1.16)}}
@media(max-width:900px){.research .section-head{gap:24px;flex-wrap:wrap}.research-profile-link{text-align:left}}
@media(prefers-reduced-motion:reduce){.pulse-ring,.paper:hover .pulse-ring{animation:none;transform:none}}

.paper-content>.paper-publication-link{margin-top:18px;color:#242721}

/* Education dates and a compact list of academic awards. */
.timeline-year.timeline-range{font-size:18px;white-space:nowrap}
.academic-awards{margin-top:24px;padding-top:20px;border-top:1px solid #c7cbbb}
.academic-awards h4{font:13px/1.5 'Courier New',monospace;letter-spacing:.04em;text-transform:uppercase;font-weight:400;margin:0 0 12px;color:#343a2e}
.timeline-description .academic-awards ul{padding-left:16px}
.timeline-description .academic-awards li{font-size:14px;line-height:1.6}
.timeline-description .academic-awards li+li{margin-top:8px}
.academic-awards li span{color:#626959}
@media(min-width:651px) and (max-width:1000px){.timeline-entry{grid-template-columns:120px minmax(0,1fr) minmax(0,1.2fr)}}

/* The label pill contracts into its fixed footprint, revealing a separate arrow. */
.connect-bottom{align-items:flex-start;gap:28px;flex-direction:column}
.connect-bottom p{max-width:none}
.contact-links{display:flex;flex-wrap:wrap;gap:12px;margin-left:0;align-self:flex-start}
.contact-links .contact-link{position:relative;display:inline-flex;align-items:center;color:#242721;text-decoration:none;border:0;background:transparent;border-radius:999px}
.contact-links .contact-link::after{content:none}
.contact-link-label{position:relative;isolation:isolate;display:flex;align-items:center;min-height:48px;padding:12px 62px 12px 18px;white-space:nowrap;color:#242721;font-size:14px;font-weight:500;line-height:1.4;transition:color .25s}
.contact-link-label::before{content:"";position:absolute;inset:0;z-index:-1;border:1px solid #59634f;border-radius:999px;background:#f7f8f2;transition:right .3s ease,background .25s,border-color .25s}
.contact-link-arrow{position:absolute;right:0;top:50%;display:grid;place-items:center;width:36px;height:36px;border:1px solid #59634f;border-radius:50%;background:#f7f8f2;color:#242721;font-size:22px;line-height:1;opacity:0;transform:translate(0,-50%) scale(.8);transition:opacity .2s ease .08s,transform .3s ease}
.contact-link:hover .contact-link-label,.contact-link:focus-visible .contact-link-label{color:#f7f8f2}
.contact-link:hover .contact-link-label::before,.contact-link:focus-visible .contact-link-label::before{right:44px;background:#242721;border-color:#242721}
.contact-link:hover .contact-link-arrow,.contact-link:focus-visible .contact-link-arrow{opacity:1;transform:translate(0,-50%) scale(1)}
.contact-link:focus-visible{outline:3px solid #386ad0;outline-offset:5px}
@media(hover:none){.contact-link-label::before{right:44px}.contact-link-arrow{opacity:1;transform:translateY(-50%)}}
@media(prefers-reduced-motion:reduce){.contact-link-label,.contact-link-label::before,.contact-link-arrow{transition:none}}

/* Contact rhythm and aligned research publication links. */
.connect .connect-bottom{margin-top:24px}
.github-project-link.research-profile-link{display:inline-block;color:#242721;border-bottom:1px solid #a7aa9b;transition:color .2s,border-color .2s}
.github-project-link.research-profile-link:hover{border-color:currentColor}
.paper-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px 28px;margin-bottom:10px}
.paper .paper-title-row h3{margin:0;min-width:0}
.paper-title-row .paper-publication-link{flex-shrink:0;margin:0 0 0 auto;text-align:right;white-space:nowrap;color:#242721}
@media(max-width:650px){.connect .connect-bottom{margin-top:20px}.paper-title-row{flex-wrap:wrap}.paper-title-row .paper-publication-link{margin-left:auto}}
@media(prefers-reduced-motion:no-preference){
.paper .pulse-ring{transition:transform .6s ease}
.paper:hover .pulse-ring,.paper:focus-within .pulse-ring{animation:research-ring-pulse 2.8s ease-in-out infinite}
.paper:hover .pulse-core,.paper:focus-within .pulse-core{transform:scale(1.15)}
.paper .pulse-core{transition:transform .6s ease}
}

/* Slowly rotate the asterisk beside the site name. */
.brand-symbol{display:inline-block;transform-origin:center;animation:brand-rotation 16s linear infinite}
@keyframes brand-rotation{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.brand-symbol{animation:none}}
