@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{color-scheme:dark;--bg:#08060e;--fg:#f4efff;--muted:#aaa0ba;--line:#31233f;--accent:#bc86ff;--strong:#9c45ff;--surface:#110c1b;--panel:#171020;--glow:#8025e826;--mono:'IBM Plex Mono',monospace}
html[data-theme=light]{color-scheme:light;--bg:#f5efff;--fg:#1c0d30;--muted:#6a597b;--line:#d2bce7;--accent:#7723c1;--strong:#7723c1;--surface:#ebe0f6;--panel:#f9f5ff;--glow:#8025e812}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--bg);color:var(--fg);font:400 17px/1.65 'Space Grotesk',sans-serif}::selection{background:#a34af1;color:white}a{color:inherit;text-decoration:none;transition:color .2s,background .2s,border-color .2s}a:hover{color:var(--accent)}button{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}.wrap{max-width:1320px;margin:auto;padding-inline:56px}.header{height:100px;display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line)}.wordmark{font-size:21px;font-weight:700;letter-spacing:-1px}.header nav{display:flex;gap:28px;margin-left:auto;font:14px var(--mono)}.header nav a:hover{color:var(--accent)}.header button{width:38px;height:38px;border:1px solid var(--line);background:var(--surface);color:var(--accent);cursor:pointer}.accent{color:var(--accent)}.eyebrow,.section-label>span,.panel-label,.project-meta{font:12px/1.6 var(--mono);letter-spacing:1px}.hero{position:relative;padding:30px 0 0;isolation:isolate}.hero:before{content:'';position:absolute;inset:0 -56px;z-index:-1;background:radial-gradient(ellipse at 76% 45%,var(--glow),transparent 60%),linear-gradient(90deg,transparent 49.8%,var(--line) 50%,transparent 50.2%);background-size:auto,100px 100%;opacity:.6;mask-image:linear-gradient(black,transparent)}.hero-topline{display:flex;justify-content:space-between;gap:16px;color:var(--muted)}.hero-topline .eyebrow:first-child{color:var(--accent)}.hero-composition{display:grid;grid-template-columns:1.6fr 1fr;align-items:center;gap:48px;padding:65px 0 60px}.hero-kicker{font:12px/1.8 var(--mono);letter-spacing:1.5px;color:var(--muted);margin:0 0 22px}h1{font-size:clamp(64px,8.6vw,116px);font-weight:700;letter-spacing:-.07em;line-height:.96;margin:0}h1>span:not(.accent){color:var(--accent);text-shadow:0 0 60px #943cff32}.identity-panel{position:relative;background:linear-gradient(130deg,var(--panel),var(--surface));border:1px solid var(--line);border-top:2px solid var(--accent);padding:32px;box-shadow:12px 12px 0 var(--glow);transform:translateY(24px)}.identity-panel:after{content:'+';position:absolute;right:15px;top:10px;color:var(--accent);font:24px var(--mono)}.panel-label{color:var(--accent)}.identity-panel .identity-name{font-size:36px;line-height:1.2;letter-spacing:-1.5px;margin:36px 0 14px;font-weight:500}.identity-panel p{color:var(--muted);font-size:16px}.identity-panel .identity-name{color:var(--fg)}.identity-tags{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 32px}.identity-tags span{font:11px var(--mono);border:1px solid var(--line);padding:6px 8px;color:var(--accent)}.socials{display:flex;flex-wrap:wrap;gap:22px;font:14px var(--mono)}.socials a{padding:8px 0;border-bottom:1px solid var(--line)}.socials a:hover{border-color:var(--accent)}.hero-bottom{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:23px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.hero-note{font:11px var(--mono);letter-spacing:1.5px;color:var(--muted)}.round-link{display:flex;align-items:center;gap:30px;font:14px var(--mono)}.round-link span{color:var(--accent);font-size:23px}.section{display:grid;grid-template-columns:1fr 1.7fr;gap:75px;padding:90px 0;border-bottom:1px solid var(--line)}.section-label>span{color:var(--accent)}h2{font-size:38px;letter-spacing:-1.6px;line-height:1.12;font-weight:500;margin:22px 0}.section-content p{margin:0 0 24px}.placeholder,.muted{color:var(--muted)}.lead{font-size:25px;line-height:1.5;letter-spacing:-.6px}.facts{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding-top:28px;border-top:1px solid var(--line);margin-top:32px}.facts h3{font:12px var(--mono);text-transform:uppercase;letter-spacing:1px;color:var(--accent);margin:0 0 12px}.facts p{font-size:16px}.work{display:block}.work .section-label{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:40px}.work .section-label h2{margin:0;width:58%}.work .section-content{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px;counter-reset:project}.project{grid-column:span 2;position:relative;display:flex;flex-direction:column;padding:28px;background:var(--surface);border:1px solid var(--line);min-height:300px;transition:transform .25s,border-color .25s,box-shadow .25s;counter-increment:project}.project:nth-child(-n+2){grid-column:span 3;min-height:330px}.project:before{content:'0' counter(project);font:50px/1 var(--mono);font-weight:500;color:var(--line);margin-bottom:26px}.project:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 8px 36px var(--glow)}.project-meta{color:var(--accent);display:flex;flex-wrap:wrap;gap:6px 16px;letter-spacing:.3px;font-size:11px}.project-meta span{color:var(--muted)}.project h3{font-size:26px;line-height:1.2;font-weight:500;letter-spacing:-.9px;margin:17px 0 14px}.project:nth-child(-n+2) h3{font-size:34px}.project p{font-size:16px;color:var(--muted);margin-bottom:20px}.project .text-link{margin-top:auto;padding-top:12px;font:13px var(--mono);color:var(--accent)}.empty-note{border:1px dashed var(--line);padding:24px;color:var(--muted);font:14px/1.7 var(--mono);background:var(--surface)}.reading-shelves{display:flex;flex-direction:column;gap:12px}.reading-shelf{padding:25px 28px;border:1px solid var(--line);border-left:3px solid var(--line);background:var(--surface)}.reading-shelf:first-child{border-left-color:var(--accent)}.reading-shelf h3{font-size:19px;font-weight:500;margin:0 0 8px}.reading-shelf:first-child h3{color:var(--accent)}.reading-shelf .reading-empty{color:var(--muted);font-size:16px;margin:0}#milestones{display:block}#milestones .section-content{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}#milestones .lead{grid-column:1/-1;color:var(--muted);font-size:19px;margin:0 0 20px}.milestone{position:relative;border:1px solid var(--line);padding:28px;background:var(--surface)}.milestone>span{position:absolute;right:20px;top:20px;color:var(--muted);font:12px var(--mono)}.milestone-stat{display:block;color:var(--accent);font-size:64px;line-height:1.1;letter-spacing:-4px;margin:8px 0 35px}.milestone-stat small{font:11px var(--mono);letter-spacing:1px}.milestone h3{font-size:24px;font-weight:500;margin:0 0 14px}.milestone p{color:var(--muted);font-size:16px;margin:0}.contact{padding:90px 0;background:radial-gradient(ellipse at 30% 80%,var(--glow),transparent 65%)}.contact .eyebrow{color:var(--accent)}.contact h2{font-size:clamp(48px,7vw,84px);letter-spacing:-4px;margin:24px 0}.contact .socials a{padding:14px 23px;border:1px solid var(--line);background:var(--surface)}.contact .socials a:hover{border-color:var(--accent);background:var(--panel)}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:24px!important;padding-bottom:30px!important;color:var(--muted);font:12px/1.8 var(--mono)}.skip{position:absolute;left:20px;top:-100px;z-index:5;padding:10px;background:var(--fg);color:var(--bg)}.skip:focus{top:10px}
@media(max-width:1000px){.wrap{padding-inline:32px}.hero:before{inset-inline:-32px}.hero-composition{gap:28px}.identity-panel{padding:25px}.section{gap:40px}.project{padding:23px}.project h3{font-size:23px}.header nav{gap:20px}}
@media(max-width:760px){.wrap{padding-inline:24px}.header{height:auto;flex-wrap:wrap;gap:20px;padding-top:23px;padding-bottom:22px}.header nav{order:3;width:100%;justify-content:space-between;gap:10px;flex-wrap:wrap}.header button{margin-left:auto}.hero-topline{flex-wrap:wrap}.hero:before{inset-inline:-24px}.hero-composition{grid-template-columns:1fr;padding:45px 0;gap:35px}h1{font-size:clamp(64px,14vw,100px)}.identity-panel{transform:none;max-width:none;box-shadow:6px 6px 0 var(--glow)}.identity-panel .identity-name{margin-top:23px}.hero-note{max-width:150px;line-height:1.7}.round-link{gap:13px}.section{grid-template-columns:1fr;gap:30px;padding:55px 0}h2{font-size:34px}.section-label h2 br{display:none}.work .section-label{display:block}.work .section-label h2{width:auto;margin-top:18px}.work .section-content{grid-template-columns:1fr 1fr}.project,.project:nth-child(-n+2){grid-column:span 1;min-height:300px}.project:last-child{grid-column:1/-1}.project:nth-child(-n+2) h3{font-size:26px}#milestones .section-content{grid-template-columns:1fr}.milestone{padding:28px}.milestone>div{display:grid;grid-template-columns:100px 1fr;gap:0 24px}.milestone-stat{grid-row:1/3;font-size:52px;letter-spacing:-3px;margin:0}.milestone-stat small{display:block;margin-top:8px}.milestone p{grid-column:2}.milestone h3{padding-right:20px}.contact{padding:60px 0}.contact h2{letter-spacing:-2px}footer{flex-wrap:wrap}footer>span:nth-child(2){display:none}}
@media(max-width:460px){.work .section-content{grid-template-columns:1fr}.project,.project:nth-child(-n+2){min-height:0;grid-column:1}.project:before{font-size:42px;margin-bottom:20px}.lead{font-size:22px}.milestone>div{grid-template-columns:70px 1fr;gap:0 18px}.milestone-stat{font-size:44px}.milestone h3{font-size:22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

.current-notes{display:grid;gap:18px}.current-note{padding:26px;border:1px solid var(--line);border-left:2px solid var(--accent);background:var(--surface)}.current-note .eyebrow{color:var(--accent)}.current-note h3{font-size:23px;font-weight:500;line-height:1.3;letter-spacing:-.5px;margin:12px 0}.current-note p{color:var(--muted);font-size:16px;margin:0}.current-note a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}

/* Expanded AWS career history. */
.aws-experience{counter-increment:project;grid-column:1/-1;min-width:0;border:1px solid var(--line);border-top:2px solid var(--accent);background:var(--surface);padding:38px;margin-bottom:12px}
.aws-header{display:flex;align-items:start;justify-content:space-between;gap:28px}.aws-header .eyebrow{color:var(--accent)}.aws-header h3{font-size:clamp(28px,4vw,42px);line-height:1.15;letter-spacing:-1.6px;margin:16px 0}.aws-header p{color:var(--muted);font-size:17px}.aws-header>.text-link{font:12px/1.8 var(--mono);color:var(--accent);flex-shrink:0;padding-top:6px}
.aws-highlights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-block:1px solid var(--line);margin:10px 0 10px;padding:26px 0;gap:24px}.aws-highlights strong{display:block;color:var(--accent);font-size:34px;letter-spacing:-1px;font-weight:500;line-height:1.2}.aws-highlights span{display:block;color:var(--muted);font:12px/1.7 var(--mono);margin-top:10px}
.career-timeline{list-style:none;margin:0;padding:0}.career-timeline>li{display:grid;grid-template-columns:210px minmax(0,1fr);gap:36px;padding:34px 0;border-bottom:1px solid var(--line)}.career-timeline>li:last-child{border-bottom:0;padding-bottom:0}.role-date{font:12px/1.8 var(--mono);color:var(--accent);padding-top:5px}.role-date>span{display:block;margin-top:10px;font-size:11px;color:var(--muted)}.role-content{position:relative;border-left:1px solid var(--line);padding-left:28px}.role-content:before{content:'';position:absolute;left:-4px;top:11px;width:7px;height:7px;background:var(--accent)}.role-content h4{font-size:23px;font-weight:500;letter-spacing:-.5px;line-height:1.3;margin:0 0 8px}.role-content .role-team{font-size:15px;color:var(--accent);margin:0 0 20px}.role-content ul{padding-left:18px;color:var(--muted);font-size:16px;line-height:1.75;margin:0}.role-content li+li{margin-top:12px}.role-content li::marker{color:var(--accent)}.role-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:22px;font:12px/1.8 var(--mono);color:var(--accent)}.company-dates{font:12px/1.8 var(--mono)}.work .project,.work .project:nth-child(-n+2){grid-column:span 3;min-height:280px}.work .project h3{font-size:28px}
@media(max-width:760px){.aws-experience{padding:25px}.aws-header{display:block}.aws-header>.text-link{display:inline-block;margin-bottom:20px}.career-timeline>li{grid-template-columns:1fr;gap:16px}.role-date>span{margin-top:3px}.aws-highlights{gap:18px}.aws-highlights strong{font-size:26px}.work .project,.work .project:nth-child(-n+2){grid-column:span 1}.role-content{padding-left:20px}}
@media(max-width:460px){.aws-experience{padding:20px}.aws-highlights{grid-template-columns:1fr;gap:22px}.aws-highlights>div{display:flex;align-items:center;gap:20px}.aws-highlights strong{min-width:105px;font-size:25px}.aws-highlights span{margin-top:0}.role-content h4{font-size:21px}.work .project,.work .project:nth-child(-n+2){min-height:0}}

/* A single welcome panel with an education card. */
.hero-composition{display:block;padding:40px 0}.identity-expanded{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:48px;padding:42px;transform:none}.identity-expanded .identity-name{font-size:clamp(36px,5vw,56px);line-height:1.15;letter-spacing:-2px;margin:24px 0 14px}.identity-expanded .identity-role{color:var(--accent);font-size:18px;margin:0 0 20px}.education-card{min-width:0;padding:28px;border:1px solid var(--line);background:var(--bg)}.education-card h2{font-size:28px;letter-spacing:-1px;margin:20px 0 14px}.education-card .degree-name{font-size:18px;line-height:1.6;margin:0}.education-threads{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.education-threads h3{font:12px/1.6 var(--mono);color:var(--muted);margin:0 0 12px}.education-threads ul{list-style:none;padding:0;margin:0;color:var(--accent);font-size:16px}.education-threads li+li{margin-top:6px}
@media(max-width:760px){.identity-expanded{grid-template-columns:1fr;gap:30px;padding:26px}.hero-composition{padding:30px 0}.education-card{padding:24px}.identity-expanded .identity-name{letter-spacing:-1px}}

.highlight-deck{min-width:0;outline-offset:8px}.highlight-deck .deck-stack{display:grid}.deck-stack{position:relative;isolation:isolate;margin:10px 10px 0 0}.deck-stack:before,.deck-stack:after{content:'';position:absolute;inset:0;border:1px solid var(--line);background:var(--panel);z-index:-1;pointer-events:none}.deck-stack:before{transform:translate(10px,-10px) rotate(2deg)}.deck-stack:after{transform:translate(5px,-5px) rotate(1deg)}.highlight-card{grid-area:1/1;min-height:340px;display:flex;flex-direction:column;animation:card-enter .25s ease-out}.highlight-card[hidden]{display:flex;visibility:hidden;pointer-events:none;animation:none}.deck-controls[hidden]{display:none}.highlight-card .highlight-detail{margin:20px 0;color:var(--muted);font-size:16px}.deck-link{margin-top:auto;padding-top:20px;color:var(--accent);font:14px/1.6 var(--mono)}.deck-controls{display:flex;align-items:center;gap:14px;margin-top:20px}.deck-arrow{width:44px;height:44px;border:1px solid var(--line);color:var(--accent);background:var(--bg);cursor:pointer}.deck-arrow:hover{border-color:var(--accent);background:var(--panel)}.deck-dots{display:flex;gap:2px}.deck-dots button{width:28px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;position:relative}.deck-dots button:after{content:'';display:block;width:7px;height:7px;background:var(--line);border-radius:50%;margin:auto}.deck-dots button[aria-current=true]:after{background:var(--accent);box-shadow:0 0 10px var(--glow)}.deck-count{margin-left:auto;font:12px var(--mono);white-space:nowrap;color:var(--muted)}@keyframes card-enter{from{opacity:.3;transform:translateX(8px)}to{opacity:1;transform:none}}@media(max-width:460px){.deck-controls{gap:8px}.deck-dots button{width:24px}.highlight-card{min-height:340px}}@media(prefers-reduced-motion:reduce){.highlight-card{animation:none}}

/* Distinct employment, volunteering, and project sections. */
#work .project{grid-column:1/-1;min-height:0}
.volunteer-card{min-height:0;border-top:2px solid var(--accent)}
.volunteer-card:before{content:none}
.header nav{flex-wrap:wrap}

.book-list{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px}.book-list li{padding:12px 0;border-top:1px solid var(--line);font-size:16px;line-height:1.5;overflow-wrap:anywhere}@media(max-width:600px){.book-list{grid-template-columns:1fr}}

/* Cover shelf stays compact while every book remains reachable. */
.reading-shelves{min-width:0}.finished-shelf{min-width:0}.book-shelf-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.book-shelf-header h3{margin:0}.book-shelf-controls{display:flex;gap:8px}.book-shelf-controls[hidden]{display:none}.book-shelf-controls button{width:44px;height:44px;border:1px solid var(--line);background:var(--bg);color:var(--accent);cursor:pointer}.book-shelf-controls button:disabled{opacity:.35;cursor:default}.book-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x proximity;padding:4px 4px 18px;scrollbar-color:var(--accent) var(--surface);overscroll-behavior-x:contain}.book-card{flex:0 0 210px;min-width:0;scroll-snap-align:start;align-self:stretch;display:flex;flex-direction:column;border:1px solid var(--line);background:var(--bg);padding:16px}.book-cover-link{display:block}.book-cover{width:100%;height:250px;object-fit:contain;display:block;background:var(--surface)}.book-card h4{font-size:17px;line-height:1.4;margin:16px 0 10px;font-weight:500;min-height:4.2em}.book-card .book-review{font-size:14px;color:var(--muted);line-height:1.6;margin:12px 0 0}.book-card details{margin-top:auto;border-top:1px solid var(--line);padding-top:12px}.book-card summary{font-size:14px;color:var(--accent);cursor:pointer}.cover-pending{height:250px;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;color:var(--muted);border:1px dashed var(--line);font-size:14px}.cover-pending[hidden]{display:none}.book-card img[hidden]{display:none}.cover-credit{font-size:12px;color:var(--muted);display:inline-block;margin-top:12px}@media(prefers-reduced-motion:reduce){.book-track{scroll-behavior:auto}}

.book-summary-link{display:inline-block;font-size:14px;color:var(--accent);margin-bottom:14px}
#reading{display:block}
#reading .section-label{margin-bottom:32px}
#reading .section-label h2 br{display:none}
#reading .reading-shelves{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
#reading .finished-shelf{grid-column:1/-1}
@media(max-width:600px){#reading .reading-shelves{grid-template-columns:minmax(0,1fr)}}
/* Inline photo decks use the same controls as the opening highlights. */
#photography{display:block}
#photography .section-label{margin-bottom:32px}
#photography .section-label p{margin:0}
.photo-collection{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);align-items:center;gap:48px;max-width:1060px;margin-inline:auto}
.photo-deck{width:100%;max-width:320px;margin-inline:auto;padding-top:12px;outline-offset:8px}
.photo-card{margin:0;background:var(--surface);border:1px solid var(--line)}
.photo-card[hidden]{display:none}
.photo-card img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;background:var(--surface)}
.photo-card figcaption{padding:14px 20px;color:var(--muted);font:13px var(--mono);border-top:1px solid var(--line)}
.photo-prose{margin-top:0}
.photo-prose h3{font-size:clamp(25px,3vw,34px);line-height:1.2;font-weight:500;letter-spacing:-1px;margin:16px 0}
.photo-prose p{color:var(--muted);line-height:1.8;margin:0}

@media(max-width:700px){.photo-collection{grid-template-columns:minmax(0,1fr);gap:28px}.photo-prose{max-width:540px;margin-inline:auto}}

.photo-collection + .photo-collection{margin-top:56px;padding-top:56px;border-top:1px solid var(--line)}
.photo-deck .deck-controls{gap:6px}.photo-deck .deck-dots button{width:20px}.photo-deck .deck-arrow{flex-shrink:0}
@media(max-width:380px){.photo-deck .deck-dots button{width:16px}.photo-deck .deck-controls{gap:4px}}

.photo-deck .deck-dots{position:relative;min-width:0;overflow-x:auto;scrollbar-width:thin}.photo-deck .deck-dots button{flex-shrink:0}

.milestone p a{color:var(--accent);font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}

