@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Public+Sans:wght@400;450;500;600;700&display=swap";:root{font-family:Public Sans,sans-serif;color:var(--ink);background:var(--hero);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--hero: oklch(95.2% .018 143);--surface: oklch(98.5% .005 143);--ink: oklch(27% .033 165);--muted: oklch(47% .021 155);--accent: oklch(36% .064 165);--line: oklch(85% .018 145);--highlight: oklch(90% .07 127);--highlight-ink: oklch(24% .04 150);--display: "Manrope", sans-serif;--ease: cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}body{margin:0;min-width:320px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button,summary{cursor:pointer}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:5px}img{display:block;max-width:100%}h1,h2,h3,h4,h5,p{margin:0}h1,h2,h3{font-family:var(--display)}button,a,summary{touch-action:manipulation}::selection{background:var(--highlight);color:var(--highlight-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}section[id],footer[id]{scroll-margin-top:28px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.page-width{width:min(1080px,calc(100% - 96px));margin-inline:auto}.portfolio{min-height:100vh;background:var(--surface)}.portfolio-layout{display:grid;grid-template-columns:304px minmax(0,1fr);gap:88px;padding-block:80px 48px;align-items:start}.skip-link{position:fixed;top:12px;left:12px;z-index:10;padding:12px 20px;background:var(--ink);color:var(--surface);transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.profile{position:sticky;top:64px}.portrait{width:104px;height:104px;object-fit:cover;border-radius:50%;margin-bottom:28px}.greeting{display:block;font-family:var(--display);font-size:24px;font-weight:500;line-height:1.3;letter-spacing:-.6px}.name{display:flex;align-items:center;white-space:nowrap;font-size:48px;line-height:1.2;letter-spacing:-2.5px;font-weight:600;margin-top:6px;cursor:default}.name-rest{display:inline-block;max-width:0;overflow:hidden;opacity:0;transition:max-width .48s var(--ease),opacity .32s var(--ease)}.name:hover .name-rest,.profile:focus-within .name-rest{max-width:9ch;opacity:1}.wave{display:inline-block;font-size:.6em;letter-spacing:0;margin-left:12px;transform-origin:70% 70%}.name:hover .wave,.profile:focus-within .wave{animation:wave 1.6s var(--ease) infinite}@keyframes wave{0%,to{transform:rotate(0)}15%{transform:rotate(18deg)}30%{transform:rotate(-10deg)}45%{transform:rotate(14deg)}60%{transform:rotate(-6deg)}75%{transform:rotate(0)}}@media (hover: none){.name-rest{max-width:none;opacity:1}.wave{animation:wave 1.6s var(--ease) 1s 2}}.hero-role{margin-top:14px;font-size:19px;letter-spacing:-.5px}.profile-meta{display:flex;flex-direction:column;gap:12px;margin-top:28px;font-size:12px;color:var(--muted)}.profile-location{display:inline-flex;align-items:center;gap:7px}.profile-email{display:inline-block;margin-top:16px;font-size:13px;color:var(--muted);text-decoration:none}.profile-email:hover{color:var(--ink);text-decoration:underline}.profile-actions{display:flex;align-items:center;gap:18px;margin-top:26px}.contact-button,.resume-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;font-size:12px;font-weight:500;white-space:nowrap}.contact-button{border-radius:5px;padding:12px 14px;color:var(--surface);background:var(--ink);text-decoration:none}.resume-link{text-decoration:none}.resume-link:hover{text-decoration:underline}.contact-button:hover{background:var(--accent)}.contact-button svg,.resume-link svg{transition:transform .16s var(--ease)}.contact-button:hover svg,.resume-link:hover svg{transform:translate(2px,-2px)}.section-nav{display:flex;flex-direction:column;align-items:flex-start;gap:3px;margin-top:38px}.section-nav a{font-size:13px;min-height:36px;display:flex;align-items:center;text-decoration:none;color:var(--muted)}.section-nav a:hover{color:var(--ink);text-decoration:underline}.social-links{display:flex;gap:4px;margin-top:28px;margin-left:-10px}.social-links a{display:grid;place-items:center;width:40px;height:40px;color:var(--muted);border-radius:5px}.social-links a:hover{color:var(--ink);background:var(--hero)}.portfolio-content{min-width:0}.introduction{margin-bottom:48px}.bio-lead{font-family:var(--display);font-size:22px;line-height:1.6;letter-spacing:-.65px;font-weight:500}.bio-rest{font-size:14px;color:var(--muted);line-height:1.9;margin-top:20px;max-width:70ch}.portfolio-content h2{font-size:21px;letter-spacing:-.65px;font-weight:600;line-height:1.3;margin-bottom:20px}.work-section{margin-bottom:42px}.experience{border-top:1px solid var(--line)}.experience:last-child{border-bottom:1px solid var(--line)}summary{list-style:none}summary::-webkit-details-marker{display:none}.experience>summary{display:flex;justify-content:space-between;gap:20px;padding:24px 6px;margin-inline:-6px;border-radius:5px}.experience>summary:hover,.skill-disclosure>summary:hover{background:var(--hero)}.experience-identity{display:flex;align-items:flex-start;gap:14px;min-width:0}.company-logo,.freelance-mark{width:40px;height:40px;border-radius:7px;flex-shrink:0}.freelance-mark{display:grid;place-items:center;background:var(--hero);font-size:14px;font-weight:600}.experience h3{font-size:16px;font-weight:600;letter-spacing:-.4px;line-height:1.5}.role-title{font-size:13px;line-height:1.5;margin-top:3px}.employment-type{display:block;font-size:11px;color:var(--muted);margin-top:5px;line-height:1.5}.experience-right{text-align:right;flex-shrink:0}.employment-period{font-size:10px;font-variant-numeric:tabular-nums;line-height:1.8;color:var(--muted)}.employment-years{display:block;color:var(--ink);font-size:13px;margin-bottom:3px}.disclosure-hint{display:flex;align-items:center;justify-content:flex-end;gap:10px;color:var(--muted);font-size:10px;margin-top:12px}summary svg{flex-shrink:0}.disclosure-hint svg,.skill-disclosure summary>svg{transition:transform .18s var(--ease)}details[open]>summary .disclosure-hint svg,.skill-disclosure[open]>summary>svg{transform:rotate(45deg)}.experience-description{padding:0 6px 26px 54px}.experience-description h4,.skill-detail h4{font-size:12px;line-height:1.6;font-weight:600;margin-bottom:10px}.experience-description p,.skill-detail p{font-size:13px;line-height:1.9;color:var(--muted);max-width:72ch}.skills-section{margin-bottom:48px}.skills-list{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;align-items:start}.skill-column{min-width:0}.skill-disclosure{border-bottom:1px solid var(--line)}.skill-disclosure>summary{display:flex;align-items:center;gap:10px;min-height:54px;padding:12px 6px;border-radius:5px}.skill-disclosure h3{font-family:Public Sans,sans-serif;font-size:13px;font-weight:500}.skill-disclosure summary>svg{margin-left:auto;color:var(--muted)}.skill-disclosure img{object-fit:contain;flex-shrink:0}.skill-disclosure img[src="/openrouter.png"]{filter:brightness(.2)}.skill-detail{padding:10px 6px 20px}.skill-detail h4:not(:first-child){margin-top:20px}.skill-detail p{font-size:12px}.contact-section{padding:30px 0 0;border-top:1px solid var(--line)}.contact-heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.contact-heading h2{margin-bottom:0}.contact-lede{margin-top:14px;font-size:14px;line-height:1.7;color:var(--muted);max-width:52ch}.email-link{display:inline-block;margin-top:16px;font-size:19px;text-decoration:none;letter-spacing:-.4px}.email-link:hover{text-decoration:underline}@media (min-height: 1000px) and (min-width: 901px){.profile{top:88px}}@media (max-height: 720px) and (min-width: 901px){.profile{position:static}}@media (max-width: 1150px){.page-width{width:calc(100% - 64px)}.portfolio-layout{grid-template-columns:260px minmax(0,1fr);gap:56px;padding-top:60px}.profile{top:40px}.name{font-size:42px}.profile-actions{gap:14px;flex-wrap:wrap}.experience>summary{gap:12px}.experience-identity{gap:10px}.experience-identity img,.freelance-mark{width:32px;height:32px}.experience-description{padding-left:42px}}@media (max-width: 900px){.page-width{width:min(660px,calc(100% - 48px))}.portfolio-layout{grid-template-columns:1fr;gap:42px;padding-block:40px}.profile{position:static;display:grid;grid-template-columns:1fr auto;column-gap:24px;align-items:start}.portrait{grid-column:2;grid-row:1 / 3;width:96px;height:96px;margin:0}.profile h1{grid-column:1;grid-row:1}.greeting{font-size:21px}.name{font-size:48px;letter-spacing:-2.5px;margin-top:4px}.hero-role{grid-column:1 / -1;font-size:18px;margin-top:14px}.profile-meta{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;gap:18px;margin-top:20px}.profile-actions{grid-column:1 / -1;margin-top:22px;gap:24px}.section-nav{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;gap:6px 22px;margin-top:24px}.social-links{grid-column:1 / -1;margin-top:10px}.introduction{margin-bottom:36px}.bio-lead{font-size:20px}.bio-rest{font-size:14px}.experience-identity img,.freelance-mark{width:40px;height:40px}.experience-description{padding-left:54px}}@media (max-width: 480px){.page-width{width:calc(100% - 40px)}.portfolio-layout{padding-top:30px;gap:32px}.portrait{width:80px;height:80px}.name{font-size:36px;letter-spacing:-1.8px}.hero-role{font-size:17px}.section-nav{gap:4px 16px}.section-nav a{font-size:12px}.bio-lead{font-size:18px;letter-spacing:-.35px}.bio-rest{font-size:13px;line-height:1.85}.portfolio-content h2{font-size:20px}.experience>summary{gap:14px}.experience-identity{gap:10px}.experience-identity img,.freelance-mark{width:30px;height:30px;border-radius:5px}.experience h3{font-size:14px}.role-title{font-size:12px}.experience-right{max-width:124px}.employment-period{font-size:10px}.employment-years{font-size:12px}.experience-description{padding-left:0;padding-right:0}.skills-list{grid-template-columns:1fr}.skill-disclosure>summary{gap:8px}.skill-disclosure h3{font-size:12px}.skill-disclosure img{width:19px;height:19px}.skill-detail p{font-size:12px}}@media (max-width: 360px){.page-width{width:calc(100% - 32px)}.portrait{width:70px;height:70px}.name{font-size:31px}.experience-identity img,.freelance-mark{display:none}.skills-list{grid-template-columns:1fr}}@media print{.page-width{width:100%}.portfolio-layout{display:block;padding:0}.profile{position:static}.section-nav,.skip-link{display:none}.portfolio-content{margin-top:24px}.experience,.skill-disclosure{break-inside:avoid}}
