:root{color-scheme:light dark;--page:oklch(97.5% .004 250);--ink:oklch(19% .014 250);--muted:oklch(44% .016 250);--faint:oklch(58% .014 250);--rule:oklch(84% .01 250);--chip-bg:oklch(92% .006 250);--chip-border:oklch(82% .01 250);--focus:oklch(48% .08 250);--sheet:190mm;--gutter:clamp(1rem, 4.5vw, 2.5rem);--avatar-size:clamp(5.15rem, 9.8vw, 7.15rem);--sans:"Aptos", "Avenir Next", "Segoe UI", sans-serif;--mono:"SFMono-Regular", "Cascadia Mono", "Liberation Mono", monospace}@media (prefers-color-scheme:dark){:root{--page:oklch(11% .014 250);--ink:oklch(91% .006 250);--muted:oklch(70% .014 250);--faint:oklch(55% .014 250);--rule:oklch(27% .018 250);--chip-bg:oklch(20% .018 250);--chip-border:oklch(31% .02 250);--focus:oklch(78% .06 250)}}:root[data-theme=light]{--page:oklch(97.5% .004 250);--ink:oklch(19% .014 250);--muted:oklch(44% .016 250);--faint:oklch(58% .014 250);--rule:oklch(84% .01 250);--chip-bg:oklch(92% .006 250);--chip-border:oklch(82% .01 250);--focus:oklch(48% .08 250)}:root[data-theme=dark]{--page:oklch(11% .014 250);--ink:oklch(91% .006 250);--muted:oklch(70% .014 250);--faint:oklch(55% .014 250);--rule:oklch(27% .018 250);--chip-bg:oklch(20% .018 250);--chip-border:oklch(31% .02 250);--focus:oklch(78% .06 250)}*{box-sizing:border-box}html{background:var(--page);min-height:100%;color:var(--ink);font-family:var(--sans);text-rendering:optimizelegibility}body{background:var(--page);min-height:100%;color:var(--ink);margin:0}a{color:inherit;text-decoration-color:color-mix(in oklch, currentColor 34%, transparent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover,a:focus-visible{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}h1,h2,h3,p{margin:0}.resume-document{width:min(var(--sheet), calc(100vw - (var(--gutter) * 2)));margin:0 auto;padding:clamp(1.55rem,5vw,2.7rem) 0 clamp(2.4rem,7vw,4.4rem)}.resume-header{grid-template-columns:minmax(0, 1fr) var(--avatar-size);border-bottom:1px solid var(--rule);align-items:start;gap:clamp(1rem,4vw,2.25rem);padding-bottom:clamp(.9rem,2.4vw,1.35rem);display:grid}.resume-intro{min-width:0}h1{letter-spacing:-.03em;text-wrap:balance;flex-wrap:wrap;align-items:baseline;gap:.16rem .52rem;max-width:min(100%,31rem);font-size:clamp(1.62rem,3.7vw,2.16rem);font-weight:650;line-height:1.04;display:flex}.resume-name-site{color:var(--faint);font-family:var(--mono);letter-spacing:0;white-space:nowrap;font-size:clamp(.56rem,1.15vw,.68rem);font-weight:500;line-height:1.2;text-decoration:none}.resume-name-site:hover,.resume-name-site:focus-visible{text-decoration:underline}.resume-role{color:var(--ink);flex-wrap:wrap;align-items:baseline;gap:.18rem .52rem;margin-top:.45rem;font-size:clamp(.96rem,1.6vw,1.05rem);font-weight:500;line-height:1.28;display:flex}.resume-role-location{color:var(--faint);font-family:var(--mono);letter-spacing:0;white-space:nowrap;font-size:.68em;font-weight:500;line-height:1.3}.resume-role-location:before{content:"/";color:color-mix(in oklch, var(--faint) 58%, transparent);margin-right:.52rem}.resume-contact{max-width:36rem;color:var(--muted);flex-wrap:wrap;gap:.38rem;margin-top:.72rem;font-size:.78rem;line-height:1.35;display:flex}.resume-contact-link{border:1px solid var(--rule);border-radius:999px;align-items:center;gap:.3rem;min-height:1.72rem;padding:.22rem .46rem;text-decoration:none;display:inline-flex}.resume-contact-link-icon{justify-content:center;width:1.78rem;padding-inline:0}.resume-contact svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;flex:none;width:.9rem;height:.9rem}.resume-contact-link-solid svg{fill:currentColor;stroke:none}.resume-contact-link:hover,.resume-contact-link:focus-visible{text-decoration:underline}.resume-avatar{width:var(--avatar-size);height:var(--avatar-size);object-fit:cover;object-position:center 42%;opacity:.9;border-radius:.52rem;justify-self:end}.resume-section{padding-top:clamp(1rem,3.2vw,1.6rem)}.resume-section+.resume-section{margin-top:clamp(.72rem,2vw,1.05rem)}.resume-section h2{color:var(--ink);letter-spacing:-.02em;text-wrap:balance;margin-bottom:.62rem;font-size:clamp(1.02rem,2vw,1.2rem);font-weight:620;line-height:1.16}.resume-summary-section p{max-width:66ch;color:var(--ink);text-wrap:pretty;font-size:.93rem;font-weight:400;line-height:1.56}.resume-entry-list{gap:clamp(.82rem,2.2vw,1.18rem);display:grid}.resume-project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.resume-entry{gap:.44rem;display:grid}.resume-project{border:1px solid var(--rule);background:color-mix(in oklch, var(--ink) 2.5%, transparent);border-radius:.58rem;gap:.48rem;min-width:0;padding:.78rem;display:grid}.resume-entry-head{gap:.22rem;display:grid}.resume-entry h3,.resume-project h3,.resume-compact-list h3,.resume-skill-group h3{color:var(--ink);letter-spacing:-.014em;font-size:.98rem;font-weight:590;line-height:1.22}.resume-education-item h3{font-size:.9rem;font-weight:560}.resume-project-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.resume-project-head p{color:var(--faint);font-family:var(--mono);white-space:nowrap;font-size:.69rem;line-height:1.35}.resume-entry-company-row,.resume-entry-role-row{justify-content:space-between;align-items:baseline;gap:.24rem .8rem;min-width:0;display:flex}.resume-entry-company-row h3,.resume-entry-role{min-width:0}.resume-entry-location{max-width:min(16rem,48%);color:var(--faint);background:color-mix(in oklch, var(--chip-bg) 72%, var(--page));border:1px solid var(--chip-border);font-family:var(--mono);text-align:right;text-overflow:ellipsis;white-space:nowrap;border-radius:999px;flex:0 auto;padding:.14rem .44rem .16rem;font-size:.66rem;line-height:1.15;overflow:hidden}.resume-entry-role{color:var(--muted);font-size:.86rem;font-weight:430;line-height:1.36}.resume-entry-period{color:var(--faint);font-family:var(--mono);text-align:right;white-space:nowrap;flex:none;font-size:.7rem;line-height:1.35}.resume-entry-summary,.resume-entry li,.resume-project>ul:not(.resume-chip-list) li,.resume-compact-list p,.resume-awards li{color:var(--muted);font-size:.86rem;line-height:1.5}.resume-entry-summary{max-width:68ch}.resume-entry ul,.resume-project>ul:not(.resume-chip-list),.resume-awards{gap:.24rem;margin:0;padding-left:1rem;display:grid}.resume-chip-list{flex-wrap:wrap;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.resume-chip-list li{min-height:1.45rem;color:var(--ink);background:var(--chip-bg);border:1px solid var(--chip-border);font-family:var(--mono);border-radius:999px;align-items:center;padding:.16rem .42rem .18rem;font-size:.68rem;line-height:1.15;display:inline-flex}.resume-compact-list{gap:.68rem;display:grid}.resume-compact-list article{gap:.18rem;display:grid}.resume-education-item{gap:.16rem}.resume-education-head,.resume-education-meta{justify-content:space-between;align-items:baseline;gap:.24rem .8rem;min-width:0;display:flex}.resume-education-head h3,.resume-education-meta a{min-width:0}.resume-education-grade{max-width:8rem;color:var(--faint);font-family:var(--mono);text-align:right;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:0;flex:none;padding:0;font-size:.58rem;font-weight:500;line-height:1.2;overflow:visible}.resume-education-meta{flex-wrap:wrap;gap:.15rem .48rem}.resume-education-meta span:before{content:"•";color:var(--faint);margin-right:.48rem}.resume-awards{max-width:76ch}.resume-award-link{text-decoration-line:underline;text-decoration-color:currentColor}.resume-command-hint{max-width:calc(100vw - 1rem);color:var(--muted);background:color-mix(in oklch, var(--page) 88%, var(--ink));border:1px solid var(--rule);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:.34rem;padding:.42rem .58rem;font-size:.76rem;line-height:1;display:inline-flex;position:fixed;inset-block-end:.85rem;inset-inline:50% auto;transform:translate(-50%)}.resume-command-hint:hover,.resume-command-hint:focus-visible{color:var(--ink)}kbd{min-width:1.28rem;color:var(--ink);background:var(--chip-bg);border:1px solid var(--chip-border);font-family:var(--mono);text-align:center;border-radius:.28rem;padding:.18rem .32rem;font-size:.68rem;line-height:1}.resume-command-dialog{width:min(37rem,100vw - 1.5rem);max-height:min(36rem,100vh - 2rem);color:var(--ink);background:var(--page);border:1px solid var(--rule);border-radius:.78rem;padding:0;overflow:hidden}.resume-command-dialog::backdrop{background:oklch(0% none none/.42)}.resume-command-search{border-bottom:1px solid var(--rule);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.55rem;padding:.78rem .9rem;display:grid}.resume-command-search span{color:var(--faint);font-size:1.2rem;line-height:1}.resume-command-search input{min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:0;font-size:.95rem}.resume-command-search input::placeholder{color:var(--faint)}.resume-command-search input:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.resume-command-search button{width:1.8rem;height:1.8rem;color:var(--faint);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:1.35rem;line-height:1}.resume-command-list{gap:1rem;padding:.85rem;display:grid;overflow:auto}.resume-command-list section{gap:.28rem;display:grid}.resume-command-list h2{color:var(--faint);letter-spacing:0;margin:0 0 .18rem;font-size:.76rem;font-weight:560}.resume-command-list button,.resume-command-list a{width:100%;color:var(--ink);font:inherit;text-align:left;background:0 0;border:0;border-radius:.44rem;padding:.58rem .66rem;font-size:.88rem;line-height:1.25;text-decoration:none;display:block}.resume-command-list button:hover,.resume-command-list a:hover,.resume-command-list button:focus-visible,.resume-command-list a:focus-visible{background:var(--chip-bg);outline:2px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.resume-skill-groups{gap:.46rem;display:grid}.resume-skill-group{grid-template-columns:clamp(4.5rem,18vw,6rem) minmax(0,1fr);align-items:start;gap:.56rem;min-width:0;display:grid}.resume-skill-group h3{color:var(--faint);font-family:var(--mono);letter-spacing:0;font-size:.68rem;font-weight:500;line-height:1.35}.resume-skill-list{flex-wrap:wrap;gap:.26rem;min-width:0;margin:0;padding:0;list-style:none;display:flex}.resume-skill-badge{max-width:100%;min-height:1.42rem;color:var(--muted);background:color-mix(in oklch, var(--chip-bg) 66%, transparent);border:1px solid color-mix(in oklch, var(--chip-border) 72%, transparent);font-family:var(--mono);white-space:nowrap;border-radius:999px;align-items:center;padding:.15rem .42rem .17rem;font-size:.66rem;line-height:1.14;display:inline-flex}@media (width<=760px){.resume-project-grid{grid-template-columns:1fr}.resume-entry-list{gap:1.22rem}.resume-entry-head{gap:.34rem}.resume-entry-company-row,.resume-entry-role-row{flex-wrap:wrap}.resume-entry-location,.resume-entry-period,.resume-education-grade{margin-inline-start:auto}}@media (width<=480px){.resume-document{width:min(100% - 1.35rem, var(--sheet));padding-top:1.35rem}.resume-header{grid-template-columns:minmax(0,1fr) 4.9rem;gap:.9rem}.resume-avatar{border-radius:.48rem;width:4.9rem;height:4.9rem}h1{font-size:clamp(1.42rem,8.4vw,1.78rem)}.resume-contact-link{border:0;max-width:100%;min-height:auto;padding:0}.resume-contact-link-icon{border:1px solid var(--rule);width:1.72rem;min-height:1.72rem}.resume-command-hint{display:none}.resume-project .resume-entry-summary{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}@media (width<=380px){.resume-skill-group{grid-template-columns:4.35rem minmax(0,1fr);gap:.44rem}.resume-skill-badge{padding-inline:.36rem;font-size:.63rem}}@page{size:A4;margin:13mm}@media print{:root{color-scheme:light;--page:white;--ink:black;--muted:oklch(34% 0 0);--faint:oklch(48% 0 0);--rule:oklch(78% 0 0)}html,body{background:#fff}.resume-document{width:auto;margin:0;padding:0}.resume-header{padding-bottom:.18in}.resume-section{padding-top:.18in}.resume-section+.resume-section{margin-top:0}.resume-entry,.resume-project,.resume-compact-list article{break-inside:avoid}.resume-command-hint,.resume-command-dialog{display:none}a{text-decoration:none}}
