@property --brand-hue{syntax: "<number>"; inherits: true; initial-value: 210;}:root{color-scheme:light dark;--brand-hue: 210;--radius: .75rem;--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--shadow-soft: 0 1px 2px rgb(0 0 0 / .05), 0 2px 8px rgb(0 0 0 / .06);--project-card-bg: var(--surface-2);--project-card-border: color-mix(in oklab, var(--text), transparent 88%);--project-card-radius: var(--radius);--project-card-padding: var(--space-3);--project-card-gap: var(--space-3);--font-sans: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-serif: "Georgia", "Times New Roman", serif;--font-mono: "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-body: var(--font-sans);--surface: light-dark(hsl(var(--brand-hue) 30% 99%), hsl(var(--brand-hue) 20% 8%));--surface-2: light-dark(hsl(var(--brand-hue) 30% 97%), hsl(var(--brand-hue) 20% 12%));--text: light-dark(hsl(var(--brand-hue) 30% 10%), hsl(var(--brand-hue) 30% 90%));--muted: light-dark(hsl(var(--brand-hue) 20% 40% / .6), hsl(var(--brand-hue) 25% 80% / .6));--accent: hsl(var(--brand-hue) 90% 55%)}:root[data-theme=light]{color-scheme:light;--surface: hsl(var(--brand-hue) 30% 99%);--surface-2: hsl(var(--brand-hue) 30% 97%);--text: hsl(var(--brand-hue) 30% 10%);--muted: hsl(var(--brand-hue) 20% 40% / .6)}:root[data-theme=dark]{color-scheme:dark;--surface: hsl(var(--brand-hue) 20% 8%);--surface-2: hsl(var(--brand-hue) 20% 12%);--text: hsl(var(--brand-hue) 30% 90%);--muted: hsl(var(--brand-hue) 25% 80% / .6)}@supports (color: color(display-p3 .2 .55 1)){:root{--accent: color(display-p3 .2 .55 1)}}html{font-family:var(--font-body);font-size:clamp(16px,1.2vw + .5rem,18px);line-height:1.6;scrollbar-gutter:stable;scrollbar-color:color-mix(in oklab,var(--accent),transparent 65%) transparent}@supports (view-transition-name: slide-page){main{view-transition-name:slide-page}::view-transition-old(slide-page){animation:page-slide-out .35s ease-in-out forwards}::view-transition-new(slide-page){animation:page-slide-in .35s ease-in-out forwards}@keyframes page-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-40px)}}@keyframes page-slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:0 0}}}body{margin:0;background:var(--surface, #f7f7fa);color:var(--text, #111);display:grid;grid-template-rows:auto 1fr auto;min-block-size:100dvh}main{width:min(100% - 2rem,74rem);margin-inline:auto;padding-block:min(10dvh,6rem)}h1{font-size:clamp(1.8rem,2.5vw + 1rem,3rem);line-height:1.2}h2{font-size:clamp(1.4rem,1.5vw + .8rem,2.2rem);line-height:1.25}h3{font-size:1.2rem}p,li,small{font-size:1rem}small{font-size:.9rem}img{max-inline-size:100%;block-size:auto}a{color:var(--text);text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:from-font}a:visited{color:var(--text)}a:hover{text-decoration-thickness:2px}.media-cover{inline-size:100%;block-size:auto;aspect-ratio:3 / 2;object-fit:cover;object-position:center;border-radius:var(--radius)}.logo{object-fit:contain;object-position:center}header{position:static;top:auto;background:color-mix(in oklab,var(--surface),black 2%);border-bottom:none;z-index:10;--nav-h: clamp(56px, 8vh, 96px)}nav[aria-label=Primary]{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.theme-select[hidden]{display:none}.theme-select{margin-inline-start:auto;border-radius:999px;padding:.35em .9em;background:var(--surface-2);color:var(--text);border:1px solid color-mix(in oklab,var(--text),transparent 75%);font:inherit;cursor:pointer;box-shadow:var(--shadow-soft)}.theme-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}nav pill-nav,pill-nav{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2)}pill-nav a{display:inline-block;padding:.5em .9em;border-radius:9999px;text-decoration:none;color:var(--text);background:transparent;border:1px solid transparent;transition:transform .16s ease,background-color .16s ease,border-color .16s ease}pill-nav a:hover,pill-nav a:focus-visible{transform:translateY(-2px);background:var(--surface-2);border-color:color-mix(in oklab,var(--text),transparent 85%)}pill-nav a[aria-current=page]{color:#000;background:hsl(from var(--accent) h s calc(l + 5%));border-color:color-mix(in oklab,var(--accent),black 20%)}:root[data-theme=dark] pill-nav a[aria-current=page],:root[data-theme=ocean] pill-nav a[aria-current=page]{color:#fff}nav:has(a[aria-current=page]){box-shadow:inset 0 -1px color-mix(in oklab,var(--accent),transparent 70%)}body:has(#about) header{position:absolute;inset-block-start:0;inset-inline:0}.nav-menu{margin:0;padding:0}.nav-menu>summary{list-style:none;cursor:pointer;padding:var(--space-2);display:flex;align-items:center;gap:.6rem;font-weight:600}.nav-menu>summary:before{content:"";inline-size:1.5rem;block-size:.12rem;background:currentColor;box-shadow:0 -.4rem 0 currentColor,0 .4rem 0 currentColor;border-radius:2px}.nav-menu>pill-nav{display:none}.nav-menu[open]>pill-nav{display:flex}.nav-inline{display:none}#about,#contact,#projects,#experiences{border:none}#about>div{block-size:calc(100dvh - var(--nav-h, 64px));display:grid;place-content:center;justify-items:center;text-align:center;gap:var(--space-1);padding-block:var(--space-4);animation:fade-slide-up .6s ease-out both;overflow:hidden}@starting-style{#about>div{opacity:0;translate:0 2rem}}#about h1{font-weight:700;font-size:clamp(2.2rem,4.5vw + 1rem,4rem);margin-block-end:0}#about p{max-inline-size:60ch}#about>div p{margin:0}#about>div p>br:first-child{display:none}#about>div>p:nth-of-type(1){display:none}#about p em,#about p b{display:none}#about img[alt*=Geisel]{margin-block:var(--space-2);border-radius:var(--radius)}#about>div>p:nth-of-type(2){position:relative;display:grid;justify-items:center;padding-block-start:14rem}#about>div>p:nth-of-type(2) picture{position:absolute;inset-block-start:0;inset-inline-start:50%;transform:translate(-50%);inline-size:min(28rem,90%)}#about>div>div{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}#about>div>div .social-icon{inline-size:28px;block-size:28px;object-fit:contain}body:has(#about){overflow-x:hidden}body:has(#about) main{width:100vw;max-width:100vw;margin-inline:0;padding:0}body:has(#contact){overflow-x:hidden}body:has(#contact) main{width:100vw;max-width:100vw;margin-inline:0;padding:0}body:has(#contact) #contact{width:min(100% - 2rem,60rem);margin-inline:auto;padding-block:var(--space-4);display:grid;gap:var(--space-3)}body:has(#contact) #contact form{display:flex;flex-direction:column;gap:var(--space-2)}body:has(#contact) #contact fieldset{box-sizing:border-box;border:0;padding:var(--space-3);margin:0;display:flex;flex-direction:column;gap:var(--space-2)}body:has(#contact) #contact label{font-weight:600;display:block;margin-block-end:.25rem}body:has(#contact) #contact input,body:has(#contact) #contact textarea,body:has(#contact) #contact button,body:has(#contact) #contact output{box-sizing:border-box;inline-size:100%;max-inline-size:100%}body:has(#contact) #contact textarea{min-block-size:10rem;border-radius:var(--radius)}body:has(#contact) #contact output{min-height:1.25em;font-size:.9rem}body:has(#contact) #contact #error-output{color:#b00020}body:has(#contact) #contact #info-output{color:var(--muted)}body:has(#contact) #contact input:required,body:has(#contact) #contact textarea:required{border-left-width:3px;border-left-color:color-mix(in oklab,var(--accent),black 15%)}body:has(#contact) #contact input:user-invalid,body:has(#contact) #contact textarea:user-invalid{border-color:#b00020;border-left-color:#b00020;box-shadow:0 0 0 1px #b000202e}body:has(#contact) #contact input:valid,body:has(#contact) #contact textarea:valid{border-color:color-mix(in oklab,var(--accent),black 20%);border-left-color:color-mix(in oklab,var(--accent),black 10%)}body:has(#contact) #contact .helper-text{font-size:.85rem;color:var(--muted)}body:has(#contact) #contact .helper-text.warning{color:#b00020;font-weight:600}body:has(#contact) #contact .field-flash{animation:field-flash .18s ease-in-out 0s 3 alternate}body:has(#projects){overflow-x:hidden}body:has(#projects) main{width:100vw;max-width:100vw;margin-inline:0;padding:0}body:has(#experiences){overflow-x:hidden}body:has(#experiences) main{width:100vw;max-width:100vw;margin-inline:0;padding:0}body:has(#quiz){overflow-x:hidden}body:has(#quiz) main{width:100vw;max-width:100vw;margin-inline:0;padding:0}body:has(#projects-admin){overflow-x:hidden}body:has(#projects-admin) main{width:100vw;max-width:100vw;margin-inline:0;padding:0}@keyframes fade-slide-up{0%{opacity:0;translate:0 2rem}to{opacity:1;translate:0 0}}@keyframes field-flash{0%{background-color:#ffebee}to{background-color:var(--surface-2)}}button,[type=submit],.button,#about a[href$=".pdf"]{font:inherit;padding:.6em 1em;border-radius:calc(var(--radius) / 1.2);border:1px solid color-mix(in oklab,var(--accent),black 20%);color:#fff;background:var(--accent);transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease}button:hover,[type=submit]:hover,.button:hover,#about a[href$=".pdf"]:hover{transform:translateY(-1px) scale(1.01);box-shadow:0 8px 20px color-mix(in oklab,var(--accent),transparent 75%)}form{display:grid;gap:var(--space-2);max-inline-size:100%}label{font-weight:600}input,textarea{font:inherit;padding:.6em .8em;border-radius:var(--radius);border:1px solid color-mix(in oklab,var(--text),transparent 80%);background:var(--surface-2);color:inherit}footer{padding:var(--space-3) var(--space-2);background:color-mix(in oklab,var(--surface),black 3%);border-top:1px solid color-mix(in oklab,var(--text),transparent 85%)}footer nav ul{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:0;margin:0 0 var(--space-1) 0;list-style:none}footer nav a{text-decoration:none;color:var(--text)}#projects{width:min(100% - 2rem,74rem);margin-inline:auto;padding-block:var(--space-4)}.project-intro{margin-block:0 .75rem;color:var(--muted);font-size:.95rem}.project-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block:0 .75rem}.project-status{margin-block:0 1rem;font-size:.9rem;color:var(--muted)}.project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:var(--space-3)}project-card{min-inline-size:0}#projects-admin{width:min(100% - 2rem,74rem);margin-inline:auto;padding-block:var(--space-4)}.admin-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr);gap:var(--space-4);align-items:flex-start}.admin-forms,.admin-preview{display:flex;flex-direction:column;gap:var(--space-2)}.admin-help{font-size:.9rem;color:var(--muted);margin:0}#project-upsert-form,#project-delete-form{display:grid;gap:var(--space-1)}#project-upsert-form input,#project-upsert-form textarea,#project-delete-form input{max-inline-size:100%}.admin-preview-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.admin-grid{margin-top:var(--space-2)}#projects-admin .project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:var(--space-3)}@media not (min-width:60rem){.admin-layout{grid-template-columns:minmax(0,1fr)}}body:has(#experiences) #experiences article{border-block-end:1px solid color-mix(in oklab,var(--text),transparent 85%);padding-block:var(--space-3);display:grid;grid-template-columns:auto 1fr;column-gap:var(--space-2);align-items:center;grid-auto-rows:min-content}body:has(#experiences) #experiences article .logo{inline-size:40px;block-size:40px;object-fit:contain;grid-column:1}body:has(#experiences) #experiences article h2{grid-column:2;margin:0;font-size:1rem}body:has(#experiences) #experiences article p{grid-column:2;margin:.15rem 0 0;font-size:.95rem;color:var(--muted)}body:has(#experiences) #experiences article ul{grid-column:2;margin:.35rem 0 0}body:has(#experiences) #experiences ol{list-style:none;padding:0;margin:0}body:has(#experiences) #experiences ol>li{border-block-end:1px solid color-mix(in oklab,var(--text),transparent 85%);padding-block:var(--space-3);display:grid;grid-template-columns:auto 1fr;column-gap:var(--space-2);align-items:center;grid-auto-rows:min-content}body:has(#experiences) #experiences ol li h3{grid-column:2;margin:0;font-size:1rem;display:flex;align-items:center;gap:var(--space-1)}body:has(#experiences) #experiences ol li h3 .logo{inline-size:40px;block-size:40px;object-fit:contain}body:has(#experiences) #experiences ol li p{grid-column:2;margin:.15rem 0 0;font-size:.95rem;color:var(--muted)}body:has(#experiences) #experiences ol li ul{grid-column:2;margin:.35rem 0 0}#quiz{width:min(100% - 2rem,60rem);margin-inline:auto;padding-block:var(--space-4);display:grid;gap:var(--space-3)}.quiz-intro{margin:0;color:var(--muted);font-size:.95rem}.quiz-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-2)}.quiz-question{padding:var(--space-2);border-radius:var(--radius);border:1px solid color-mix(in oklab,var(--text),transparent 88%);background:var(--surface-2);transition:background-color .15s ease,border-color .15s ease,transform .12s ease}.quiz-question--correct{background:#ecfdf3;border-color:#16a34a;transform:translateY(-1px)}.quiz-question--incorrect{background:#fef2f2;border-color:#dc2626}.quiz-question--unanswered{border-color:#dc2626}.quiz-question label{display:block;font-weight:400;margin-block:.15rem;cursor:pointer;border-radius:calc(var(--radius) / 1.3);padding:.2rem .35rem}.quiz-question label[data-state=correct]{background-color:#dcfce7}.quiz-question label[data-state=incorrect]{background-color:#fee2e2}.quiz-question input[type=radio]{margin-inline-end:.35rem}.quiz-feedback{min-height:1.1em;font-size:.9rem;margin-top:.5rem;padding:.2rem .35rem;border-radius:calc(var(--radius) / 1.4)}.quiz-feedback--correct{color:#166534;font-weight:600;background-color:#dcfce7}.quiz-feedback--incorrect{color:#9a3412;font-weight:600;background-color:#ffedd5}.quiz-feedback--unanswered{color:#b91c1c;font-weight:600;background-color:#fee2e2}main section{border-radius:var(--radius);border:1px solid color-mix(in oklab,var(--text),transparent 90%);padding:var(--space-1);background:var(--surface)}@media(min-width:48rem){main{padding-block:min(12dvh,7rem)}pill-nav{justify-content:center}.nav-menu{display:none}.nav-inline{display:flex;justify-content:center}}@media(min-width:72rem){#about>div{grid-template-columns:1fr 1fr;grid-template-areas:none;column-gap:var(--space-4);place-items:center}#about h1,#about>div>p:nth-of-type(3),#about>div>div{grid-column:1}#about>div>p:nth-of-type(2){grid-column:2;position:static;display:grid;justify-items:center;padding-block-start:0}#about>div>p:nth-of-type(2) picture{position:static;inset:auto;transform:none;inline-size:min(28rem,100%)}}@media not (min-width:30rem){:root{--space-2: .75rem;--space-3: 1rem}main{width:min(100% - 1rem,74rem)}pill-nav a{padding:.65em .9em}}@media not (min-width:48rem){#about>div{grid-template-areas:"name" "resume" "social" "edu"}#about h1{grid-area:name}#about>div>p:nth-of-type(2){grid-area:edu}#about>div>p:nth-of-type(3){grid-area:resume}#about>div>div{grid-area:social}#about>div>p:nth-of-type(2){position:static;padding-block-start:0}#about>div>p:nth-of-type(2) picture{position:static;inset:auto;transform:none;inline-size:min(28rem,100%)}}@media(min-width:48rem)and (not (min-width:72rem)){#about>div{grid-template-areas:"name" "resume" "social" "edu"}#about h1{grid-area:name}#about>div>p:nth-of-type(2){grid-area:edu}#about>div>p:nth-of-type(3){grid-area:resume}#about>div>div{grid-area:social}#about>div>p:nth-of-type(2){position:static;padding-block-start:0}#about>div>p:nth-of-type(2) picture{position:static;inset:auto;transform:none;inline-size:min(32rem,100%)}}:focus-visible{outline:3px solid color(display-p3 .2 .6 1 / .7);outline-offset:2px}
