@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600;700&family=DM+Serif+Display:ital@0;1&display=swap');
:root{color-scheme:dark;--bg:#19181d;--panel:#222127;--text:#eeebf1;--muted:#b4aeba;--lavender:#c8b5f4;--pink:#edb7ca;--line:#3b3742;--serif:'DM Serif Display',Georgia,serif;--sans:'DM Sans',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--bg);color:var(--text);font:0.9375rem/1.65 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--pink);outline-offset:5px}::selection{background:var(--lavender);color:var(--bg)}h1,h2,h3,p{margin:0}header,main,footer{max-width:1440px;margin:auto}header{padding:28px 6%;display:flex;justify-content:space-between;align-items:center}.signature{font:italic 1.6875rem var(--serif);white-space:nowrap}.signature span{color:var(--pink);font:1.25rem var(--sans);display:inline-block;margin-left:10px}nav{display:flex;align-items:center;gap:30px;font-size:0.75rem}nav a{color:var(--muted)}nav a:hover,.text-link:hover,.social-links a:hover{color:var(--pink)}.nav-contact{border:1px solid #65556d;padding:9px 18px;border-radius:50px;color:var(--text)}section{margin:0 6%}.hero{padding:70px 0 75px;display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:65px;align-items:center}.eyebrow{font-size:0.625rem;font-weight:600;letter-spacing:1.8px;color:var(--muted)}.dot{display:inline-block;width:6px;height:6px;background:var(--pink);border-radius:50%;margin-right:8px;vertical-align:middle}h1{font:400 clamp(2.375rem,4.1vw,59px)/1.16 var(--serif);letter-spacing:-1.7px;margin:24px 0}h1 em{font-size:1.32em}em{font-family:var(--serif);font-weight:400;color:var(--lavender)}h1>span{color:var(--muted)}.hero-intro{max-width:520px;font-size:0.875rem;line-height:1.85;color:var(--muted)}.hero-actions{display:flex;align-items:center;gap:27px;flex-wrap:wrap;margin-top:30px}.button{padding:13px 20px;border-radius:6px;font-size:0.75rem;display:inline-flex;gap:30px;align-items:center}.primary{background:var(--lavender);color:var(--bg);font-weight:600}.primary:hover{background:var(--pink)}.text-link{font-size:0.75rem;border-bottom:1px solid #71627d;padding-bottom:4px;width:fit-content}.social-links{display:flex;gap:24px;margin-top:26px;font-size:0.6875rem;color:var(--muted)}.intro-note{background:#28232e;border:1px solid #55465f;border-radius:10px;padding:22px;transform:rotate(3deg);box-shadow:12px 14px 0 #100f13}.note-top{display:flex;justify-content:space-between;align-items:center;font-size:0.5rem;letter-spacing:1.3px;color:var(--lavender)}.note-top>span:last-child{font-size:1.375rem;color:var(--pink)}.monogram{font:italic 5.9375rem/.95 var(--serif);color:var(--lavender);text-align:center;padding:25px 0 28px}.monogram span{display:block;font:italic 0.9375rem var(--serif);color:var(--pink);margin-top:10px}.intro-note dl{margin:0}.intro-note dl>div{display:flex;gap:14px;justify-content:space-between;padding:11px 0;border-top:1px solid #473a50;font-size:0.6875rem}.intro-note dt{color:var(--muted)}.intro-note dd{margin:0;text-align:right}.note-bottom{border-top:1px solid #473a50;padding-top:17px;margin-top:8px;font-size:0.5625rem;color:var(--pink);display:flex;justify-content:space-between}.chapter-line{margin:0 6%;border-top:1px solid var(--line);padding-top:18px;display:flex;justify-content:space-between;font-size:0.5rem;letter-spacing:1.6px;color:var(--muted)}.work{padding-top:80px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:25px}h2{font:400 clamp(1.875rem,3.3vw,46px)/1.15 var(--serif);letter-spacing:-.7px;margin-top:12px}.section-intro{font-size:0.8125rem;color:var(--muted);max-width:570px;margin-top:18px}.project-toolbar{display:flex;align-items:end;gap:14px;margin-top:35px}.search-wrap{flex:1}.project-toolbar label{display:block;font-size:0.625rem;color:var(--muted);margin-bottom:6px}input,select{background:var(--panel);border:1px solid var(--line);color:var(--text);padding:11px 13px;border-radius:5px;font-size:0.75rem;min-height:42px}input{width:100%}input::placeholder{color:#9c94a5}select{min-width:175px}.refresh{color:var(--lavender);border:1px solid #615274;background:none;border-radius:5px;padding:10px 16px;min-height:42px;font-size:0.75rem;cursor:pointer}.refresh:disabled{opacity:.5;cursor:wait}.sync-line{display:flex;justify-content:space-between;gap:16px;font-size:0.625rem;color:var(--muted);margin:16px 0}.repo-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.repo-card{padding:27px;border:1px solid var(--line);border-radius:9px;background:var(--panel);display:flex;flex-direction:column;position:relative;transition:border-color .2s,transform .2s}.repo-card:hover{border-color:#8f789e;transform:translateY(-3px)}.repo-top{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:0.5625rem;letter-spacing:1.3px;margin-bottom:22px}.repo-icon{font:1.125rem monospace;color:var(--lavender);background:#332c3d;border:1px solid #4c3e5a;border-radius:7px;padding:6px 10px;letter-spacing:-2px}.repo-card:nth-child(2n) .repo-icon{background:#3d2c36;border-color:#5d4052;color:var(--pink)}.repo-card h3{font:400 1.6875rem/1.2 var(--serif);overflow-wrap:anywhere;letter-spacing:-.3px;margin-bottom:12px}.repo-card h3 a:hover{color:var(--lavender)}.repo-card>p{font-size:0.75rem;color:var(--muted);line-height:1.85;margin-bottom:22px}.tags{display:flex;flex-wrap:wrap;gap:7px}.tags span{border:1px solid #4c4355;border-radius:30px;padding:3px 10px;font-size:0.5625rem;color:var(--lavender)}.repo-links{display:flex;gap:25px;border-top:1px solid var(--line);margin-top:24px;padding-top:15px;font-size:0.6875rem}.repo-links a{color:var(--pink)}.repo-card .tags{margin-top:auto}.repo-links a:hover{text-decoration:underline}.repo-date{font-size:0.5625rem;color:var(--muted);margin-left:auto}.resume-project{display:grid;grid-template-columns:1fr 2.2fr auto;align-items:center;gap:25px;margin-top:26px;border:1px dashed #55485f;border-radius:8px;padding:25px;background:#211e26}.resume-project h3{font:1.625rem var(--serif);margin-top:8px}.resume-project p:not(.eyebrow){font-size:0.75rem;color:var(--muted);line-height:1.8}.resume-project .tags{margin-top:14px}#empty-state{padding:35px;text-align:center;border:1px dashed var(--line);color:var(--muted)}.about{display:grid;grid-template-columns:1fr 1.2fr;gap:12%;padding:90px 0;margin-top:75px;border-top:1px solid var(--line)}.handwritten{font:italic 1.3125rem var(--serif);color:var(--pink);margin-top:24px}.small-note{background:#29232b;border-left:2px solid var(--pink);padding:17px 22px;width:fit-content;margin-top:45px;transform:rotate(-2deg)}.small-note span{font-size:0.5rem;letter-spacing:1.5px;color:var(--pink)}.small-note p{font-size:0.8125rem;margin-top:6px}.about-copy>p{font-size:0.8125rem;color:var(--muted);margin-bottom:20px;line-height:1.9}.about-copy>p.large-copy{font-size:1.1875rem;line-height:1.6;color:var(--text)}.skill-groups{border-top:1px solid var(--line);padding-top:6px}.skill-groups h3{font-size:0.6875rem;color:var(--pink);font-weight:500;margin-top:20px}.skill-groups p{font-size:0.75rem;color:var(--muted);margin-top:5px;line-height:1.8}.experience{padding-bottom:80px}.experience .section-head{margin-bottom:32px}.exp-row{display:grid;grid-template-columns:1fr 1.5fr 1.5fr;gap:30px;border-top:1px solid var(--line);padding:25px 0}.exp-row>span{font-size:0.5625rem;letter-spacing:1px;color:var(--muted);padding-top:4px}.exp-row h3{font-size:0.875rem;font-weight:500;margin-bottom:8px}.exp-row p{font-size:0.75rem;color:var(--muted);line-height:1.8}.community{border-top:1px solid var(--line);padding-top:25px;display:flex;justify-content:space-between;align-items:center}.community>span{font-size:0.5625rem;letter-spacing:1px;color:var(--muted)}.community p{font-size:0.8125rem}.community i{font-style:normal;color:var(--lavender);margin:0 15px}.contact{border-top:1px solid #544259;background:#25202b;padding:55px 6%;margin:0;display:grid;grid-template-columns:1.2fr 1fr;gap:15%;align-items:center}.contact h2{font-size:2.75rem}.contact em{color:var(--pink)}.contact-links a{display:flex;justify-content:space-between;border-bottom:1px solid #56465f;padding:18px 0;font-size:0.8125rem}.contact-links a:hover{color:var(--pink)}.contact-links span{color:var(--lavender)}footer{padding:30px 6%;display:flex;align-items:center;justify-content:space-between;gap:20px}footer p,footer>span{font-size:0.625rem;color:var(--muted)}footer .signature{font-size:1.3125rem}.skip{position:fixed;top:-100px;background:var(--lavender);color:var(--bg);padding:12px;z-index:10}.skip:focus{top:0}[hidden]{display:none!important}
@media(min-width:1440px){h1{font-size:3.6875rem}}@media(max-width:1000px){.hero{grid-template-columns:minmax(0,1fr) 245px;gap:35px;padding-top:50px}.intro-note{padding:18px}h1{font-size:2.5rem}.resume-project{grid-template-columns:1fr 2fr}.resume-project>a{grid-column:2}.repo-date{display:none}.contact{gap:8%}}@media(max-width:700px){header{padding:23px 6%}.signature{font-size:1.4375rem}nav{gap:18px;font-size:0.6875rem}nav a:first-child{display:none}.nav-contact{padding:7px 11px}.hero{grid-template-columns:1fr;gap:40px;padding:40px 0 50px}h1{font-size:clamp(1.9375rem,7vw,3rem);letter-spacing:-.8px;margin:20px 0}.hero .eyebrow{font-size:0.5rem;letter-spacing:1.3px}.hero-intro{font-size:0.8125rem}.hero-actions{gap:20px}.button{gap:15px;font-size:0.6875rem;padding:12px 15px}.text-link{font-size:0.6875rem}.intro-note{max-width:330px;width:90%;justify-self:center;transform:rotate(2deg);padding:20px}.monogram{font-size:4.0625rem;padding:15px}.intro-note dl>div{font-size:0.6875rem;padding:8px}.note-bottom{padding-top:12px}.chapter-line{font-size:0.4375rem;letter-spacing:1px}.chapter-line span:last-child{display:none}.work{padding-top:50px}.section-head{display:block}.section-head>a{display:inline-block;margin-top:20px}h2{font-size:2.1875rem}.section-intro{font-size:0.75rem}.project-toolbar{flex-wrap:wrap;gap:12px;margin-top:25px}.search-wrap{flex-basis:100%}.filter-wrap{flex:1}select{width:100%}.sync-line{align-items:start;font-size:0.5625rem}.sync-line>span{white-space:nowrap}.repo-grid{grid-template-columns:1fr;gap:14px}.repo-card{padding:23px}.repo-card h3{font-size:1.6875rem}.repo-top{margin-bottom:18px}.resume-project{grid-template-columns:1fr;gap:14px;padding:23px}.resume-project>a{grid-column:auto}.about{grid-template-columns:1fr;gap:35px;margin-top:50px;padding:55px 0}.small-note{margin-top:25px}.about-copy>p.large-copy{font-size:1.125rem}.exp-row{grid-template-columns:1fr;gap:10px;padding:22px 0}.exp-row h3{margin-bottom:5px}.community{display:block}.community p{margin-top:12px}.community i{margin:0 10px}.experience{padding-bottom:50px}.contact{grid-template-columns:1fr;gap:25px;padding:40px 6%}.contact h2{font-size:2.3125rem}footer{flex-wrap:wrap}footer p{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
/* Reader-controlled appearance, shared across every section. */
:root{--soft:#25202b;--tag-bg:#332c3d;--focus:#edb7ca}
:root[data-theme="light"]{color-scheme:light;--bg:#f7f3fa;--panel:#fffaff;--text:#26212d;--muted:#61556b;--lavender:#644190;--pink:#8c365a;--line:#c8bacf;--soft:#eee5f2;--tag-bg:#e6daf1;--focus:#6d2875}
:root[data-theme="contrast"]{color-scheme:dark;--bg:#000;--panel:#080808;--text:#fff;--muted:#eee;--lavender:#e1cfff;--pink:#ffdeee;--line:#aaa;--soft:#000;--tag-bg:#171717;--focus:#ffed00}
:root[data-size="125"]{font-size:125%}:root[data-size="150"]{font-size:150%}
:root[data-font="readable"]{--sans:Arial,Helvetica,sans-serif;--serif:Arial,Helvetica,sans-serif}
:root[data-font="readable"] em,:root[data-font="readable"] .signature,:root[data-font="readable"] .handwritten{font-style:normal;letter-spacing:normal}
:root[data-font="readable"] p{line-height:1.9}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:5px}
.hero{display:block;padding:65px 0 75px}.hero-copy{max-width:900px}.hero h1{font-size:clamp(3rem,7vw,5rem);margin:22px 0}.hero-intro{max-width:650px}
.display-bar{max-width:1440px;margin:0 auto;padding:0 6%;display:flex;justify-content:flex-end}
#display-settings{width:min(100%,720px)}#display-settings summary{margin-left:auto;width:fit-content;cursor:pointer;font-size:.8rem;color:var(--muted);padding:8px 0;min-height:44px;display:flex;align-items:center;gap:18px}
#display-settings summary span{color:var(--lavender);border:1px solid var(--line);border-radius:4px;padding:2px 7px}
.display-options{display:flex;flex-wrap:wrap;gap:16px;border:1px solid var(--line);border-radius:8px;padding:20px;background:var(--panel);align-items:end}
.display-options label{display:flex;flex-direction:column;gap:7px;font-size:.8rem;flex:1;min-width:140px}.display-options select{min-width:0;width:100%;font-size:.85rem}.display-options p{flex-basis:100%;color:var(--muted);font-size:.75rem}
#reset-display{background:transparent;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:10px 16px;min-height:44px;font-size:.8rem;cursor:pointer}
.contact,.resume-project,.small-note{background:var(--soft);border-color:var(--line)}.tags span,.text-link,.refresh,.nav-contact,.contact-links a{border-color:var(--line)}
.repo-icon,.repo-card:nth-child(2n) .repo-icon{background:var(--tag-bg);border-color:var(--line);color:var(--lavender)}.contact{margin-top:20px}.contact-links{display:flex;flex-wrap:wrap;gap:18px;align-content:center}
.contact-links a{width:64px;height:64px;padding:16px;border:1px solid var(--line);border-radius:14px;display:grid;place-items:center;position:relative;color:var(--lavender);background:var(--panel)}
.contact-links a:hover{background:var(--tag-bg);color:var(--pink)}.contact-links svg{width:28px;height:28px}.contact-links .icon-tooltip{position:absolute;top:calc(100% + 7px);left:50%;transform:translateX(-50%);font-size:.75rem;background:var(--panel);color:var(--text);border:1px solid var(--line);padding:3px 8px;border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;z-index:2}
.contact-links a:hover .icon-tooltip,.contact-links a:focus-visible .icon-tooltip{opacity:1}
:root[data-theme="contrast"] .primary{background:#e1cfff;color:#000}:root[data-theme="light"] .primary{color:#fff}:root[data-theme="light"] .primary:hover{background:var(--pink)}
:root[data-theme="contrast"] input::placeholder{color:#ccc}:root[data-theme="light"] input::placeholder{color:#74657e}
:root[data-size="125"] .repo-grid,:root[data-size="150"] .repo-grid{grid-template-columns:1fr}
:root[data-size="150"] .about,:root[data-size="150"] .contact{grid-template-columns:1fr;gap:30px}
:root[data-size="150"] .resume-project{grid-template-columns:1fr}:root[data-size="150"] .resume-project>a{grid-column:auto}
@media(max-width:700px){header{flex-wrap:wrap;gap:15px}nav{flex-wrap:wrap}.hero{padding:35px 0 50px}.hero h1{font-size:3rem}.display-bar{justify-content:stretch}.contact-links{padding-bottom:15px;gap:14px}.contact-links a{width:58px;height:58px}.project-toolbar{align-items:stretch}.sync-line{flex-wrap:wrap}:root[data-size="150"] .hero-actions{align-items:start;flex-direction:column}.section-head>a{overflow-wrap:anywhere}.repo-links{flex-wrap:wrap}.community{overflow-wrap:anywhere}}

.current-project{display:grid;grid-template-columns:1fr 1.6fr;gap:55px;padding:32px;margin-top:50px;background:var(--soft);border:1px solid var(--line);border-radius:9px}.current-project h2{margin:10px 0 15px}.progress-label{display:inline-block;color:var(--pink);font-size:.75rem;border:1px solid var(--line);border-radius:30px;padding:5px 12px}.current-description>p{font-size:.95rem;line-height:1.8}.current-description .current-detail{font-size:.8rem;color:var(--muted);margin-top:12px}.current-description .tags{margin-top:20px}.current-description>a{display:inline-block;margin-top:22px}:root[data-size="150"] .current-project{grid-template-columns:1fr;gap:24px}@media(max-width:700px){.current-project{grid-template-columns:1fr;gap:22px;padding:24px;margin-top:32px}}
.now-section{display:grid;grid-template-columns:1fr 2fr;gap:40px;margin-top:50px;padding:32px;border:1px solid var(--line);border-radius:9px;background:var(--soft)}.now-heading h2{font-size:3.5rem;margin:8px 0 16px}.now-heading>p:last-child{font-size:.8rem;color:var(--muted)}.content-tabs{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid var(--line);margin-bottom:23px}.content-tabs button{font:inherit;font-size:.8rem;min-height:44px;padding:10px 14px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);cursor:pointer}.content-tabs button[aria-selected="true"]{color:var(--lavender);border-bottom-color:var(--lavender);font-weight:600}.now-panel{min-height:250px}.now-panel h3{font:400 1.9rem var(--serif);margin:15px 0 12px}.now-panel>p:not(.eyebrow){font-size:.9rem;line-height:1.85;max-width:590px}.now-panel .tags{margin-top:20px}.now-panel>.text-link{display:inline-block;margin-top:24px}.story-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin-top:22px}.story-button{font:inherit;font-size:.75rem;color:var(--lavender);border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:10px 13px;min-height:44px;cursor:pointer;text-align:left}.story-button:hover{border-color:var(--lavender);background:var(--tag-bg)}.repo-links{flex-wrap:wrap;align-items:center;gap:14px}.repo-links .story-button{font-size:.7rem}.repo-date{display:none}.resume-project{grid-template-columns:1fr 2.2fr}.resume-project>.story-actions{grid-column:2;margin:0}.listening-mark{display:flex;gap:8px;align-items:center;height:58px;margin-top:25px}.listening-mark span{width:5px;height:20px;border-radius:4px;background:var(--pink)}.listening-mark span:nth-child(3n){height:46px;background:var(--lavender)}.listening-mark span:nth-child(2n){height:30px}.listening-mark span:nth-child(5){height:55px}
#project-explorer{width:min(650px,calc(100% - 24px));max-height:calc(100dvh - 32px);overflow:auto;padding:32px;border:1px solid var(--line);border-radius:14px;background:var(--bg);color:var(--text)}#project-explorer::backdrop{background:#000a;backdrop-filter:blur(5px)}.explorer-top{display:flex;align-items:center;justify-content:space-between;gap:20px}#explorer-close{flex-shrink:0;width:44px;height:44px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:50%;cursor:pointer}#explorer-title{overflow-wrap:anywhere;margin:10px 0 15px}#explorer-summary{font-size:.95rem;color:var(--muted);line-height:1.8;margin-bottom:25px}.explorer-panel{min-height:200px;margin:0 0 25px}.explorer-panel h3{font:400 1.6rem/1.25 var(--serif);margin-bottom:15px}.explorer-panel p{font-size:.95rem;color:var(--muted);line-height:1.9}.explorer-open{overflow:hidden}.now-panel:focus-visible,.explorer-panel:focus-visible{outline:2px solid var(--focus);outline-offset:6px}summary:focus-visible,.content-tabs button:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
:root[data-size="150"] .now-section{grid-template-columns:1fr;gap:24px}:root[data-size="150"] .resume-project>.story-actions{grid-column:auto}
@media(max-width:700px){.now-section{grid-template-columns:1fr;gap:20px;padding:24px;margin-top:32px}.now-heading h2{font-size:2.75rem;margin-bottom:8px}.now-panel{min-height:260px}.content-tabs button{padding:10px;font-size:.8rem}.resume-project{grid-template-columns:1fr}.resume-project>.story-actions{grid-column:auto}#project-explorer{padding:24px}.explorer-panel{min-height:240px}}
.spotify-brand{display:flex;align-items:center;gap:9px}.spotify-brand svg{height:24px;width:24px;color:var(--text)}.spotify-track-info{display:flex;align-items:center;gap:20px;margin:22px 0}.spotify-track-info>div{min-width:0}.spotify-track-info h3{margin:6px 0;font-size:1.5rem;overflow-wrap:anywhere}.spotify-track-info img{object-fit:contain;flex-shrink:0;max-width:100%}#spotify-artist{font-size:.85rem;color:var(--muted)}.spotify-state{color:var(--pink);font-size:.75rem}.spotify-caption{font-size:.65rem;color:var(--muted);margin-top:12px}#spotify-retry{margin-top:20px;font-size:.7rem}#spotify-retry:disabled{opacity:.6;cursor:wait}#spotify-empty>p{font-size:.9rem;color:var(--muted);line-height:1.8}:root[data-size="150"] .spotify-track-info{flex-wrap:wrap}
