.spt-root{--spt-paper:var(--spt-paper-l);--spt-ink:var(--spt-ink-l);position:relative;overflow:hidden;container:spt/inline-size;color:var(--spt-ink);background:var(--spt-paper);font-family:var(--spt-sans);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;color-scheme:light}.spt-root[data-theme=dark],:where(.dark) .spt-root[data-theme=auto]{--spt-paper:var(--spt-paper-d);--spt-ink:var(--spt-ink-d);color-scheme:dark}.spt-root{--spt-muted:color-mix(in oklab,var(--spt-ink) 60%,var(--spt-paper));--spt-faint:color-mix(in oklab,var(--spt-ink) 42%,var(--spt-paper));--spt-line:color-mix(in oklab,var(--spt-ink) 11%,var(--spt-paper));--spt-soft:color-mix(in oklab,var(--spt-ink) 5.5%,var(--spt-paper));--spt-soft2:color-mix(in oklab,var(--spt-ink) 9%,var(--spt-paper))}:where(.spt-root) *,:where(.spt-root) :after,:where(.spt-root) :before{box-sizing:border-box}.spt-root svg{max-width:none;display:block}:where(.spt-root) button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}:where(.spt-root) a{color:inherit;text-decoration:none}.spt-root :focus-visible{outline:2px solid var(--spt-accent);outline-offset:2px;border-radius:4px}.spt-scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;scroll-behavior:auto;overscroll-behavior:contain}.spt-grid{display:grid;grid-template-columns:minmax(0,1fr)}.spt-serif{font-family:var(--spt-serif);font-weight:400;letter-spacing:-.01em}.spt-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.spt-side{display:flex;flex-direction:column;gap:18px;padding:24px 20px 22px;border-bottom:1px solid var(--spt-line)}.spt-side-top{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;align-items:center}.spt-avatar{position:relative;display:block;width:96px;aspect-ratio:926/949;border-radius:3px;overflow:hidden;grid-row:span 2}.spt-avatar .spt-portrait,.spt-avatar img{width:100%;height:100%;max-width:none;object-fit:cover;display:block}.spt-grin img{position:absolute;inset:0}.spt-shades{clip-path:polygon(32.8% 44.9%,67.8% 44.6%,67% 51%,65.6% 59%,52.8% 59%,51.8% 52.4%,49.2% 52.4%,48% 59%,34.4% 59%,33.2% 52%);transform-origin:50.2% 48.6%}.spt-smile{clip-path:polygon(44.6% 61.4%,57.6% 61.4%,57.6% 66.6%,44.6% 66.6%);transform-origin:51% 63.9%}.spt-name{font-size:24px;line-height:1.1;margin:0}.spt-role{margin:3px 0 0;font-size:12.5px}.spt-bio,.spt-role{color:var(--spt-muted)}.spt-bio{margin:0;font-size:13px;max-width:34ch;line-height:1.6}.spt-sig{display:block;width:max-content;color:var(--spt-ink);margin:-4px 0 -6px -4px;padding:4px;border-radius:6px}.spt-signature-mark{display:block;width:148px;height:83px;background:currentColor;mask:url(/char-sign.svg) center/contain no-repeat;-webkit-mask:url(/char-sign.svg) center/contain no-repeat}.spt-sig:hover{background:var(--spt-soft)}.spt-rule{height:1px;background:var(--spt-line);border:0;margin:0}.spt-details{list-style:none;margin:0;padding:0;display:grid;gap:7px;font-size:12.5px}.spt-details li{display:flex;align-items:center;gap:9px}.spt-ico{color:var(--spt-muted);flex:none}.spt-side-foot{display:grid;gap:14px;margin-top:4px}.spt-socials{display:flex;gap:6px;margin:0 0 0 -6px;padding:0;list-style:none}.spt-socials a{display:grid;place-items:center;width:30px;height:30px;border-radius:6px;color:var(--spt-muted);transition:color .2s,background .2s,transform .2s}.spt-socials a:hover{color:var(--spt-ink);background:var(--spt-soft2);transform:translateY(-2px)}.spt-actions{display:grid;grid-template-columns:1fr 44px;gap:6px}.spt-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:42px;padding:0 16px;border-radius:3px;font-size:12.5px;font-weight:500;transition:background .2s,transform .15s,color .2s}.spt-btn:active{transform:translateY(1px)}.spt-btn-dark{background:var(--spt-ink);color:var(--spt-paper)}.spt-btn-dark:hover{background:color-mix(in oklab,var(--spt-ink) 86%,var(--spt-accent))}.spt-btn-soft{background:var(--spt-soft2);color:var(--spt-ink)}.spt-btn-soft:hover{background:color-mix(in oklab,var(--spt-ink) 14%,var(--spt-paper))}.spt-btn .spt-dl{transition:transform .25s}.spt-btn:hover .spt-dl{transform:translateY(2px)}.spt-main{min-width:0;position:relative}.spt-nav{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;height:58px;padding:0 20px;background:color-mix(in oklab,var(--spt-paper) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid transparent;transition:border-color .3s}.spt-nav[data-stuck]{border-bottom-color:var(--spt-line)}.spt-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:var(--spt-accent);flex:none;transition:transform .4s}.spt-mark:hover{transform:rotate(-12deg) scale(1.06)}.spt-links{position:relative;display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;min-width:0;flex:1;margin:0;padding:0;list-style:none}.spt-links::-webkit-scrollbar{display:none}.spt-links a{position:relative;z-index:1;display:block;padding:5px 8px;font-size:12.5px;color:var(--spt-muted);white-space:nowrap;border-radius:999px;transition:color .2s}.spt-links a:hover,.spt-links a[aria-current=true]{color:var(--spt-ink)}.spt-pill{position:absolute;top:0;left:0;height:100%;border-radius:999px;background:var(--spt-soft2);transition:transform .45s cubic-bezier(.3,1.3,.5,1),width .45s cubic-bezier(.3,1.3,.5,1),opacity .3s;pointer-events:none}.spt-nav-end{display:flex;align-items:center;gap:6px;flex:none}.spt-theme{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:var(--spt-muted);transition:color .2s,background .2s}.spt-theme:hover{color:var(--spt-ink);background:var(--spt-soft2)}.spt-theme .spt-sun{display:none}.spt-root[data-theme=dark] .spt-theme .spt-sun,:where(.dark) .spt-root[data-theme=auto] .spt-theme .spt-sun{display:block}.spt-root[data-theme=dark] .spt-theme .spt-moon,:where(.dark) .spt-root[data-theme=auto] .spt-theme .spt-moon{display:none}.spt-contact-btn{height:34px;padding:0 13px;font-size:12px;gap:7px}.spt-contact-btn .spt-cm-label{display:none}.spt-col{max-width:600px;margin:0 auto;padding:0 20px}.spt-sec{padding:48px 0 44px;border-top:1px solid var(--spt-line)}.spt-h2{font-size:28px;line-height:1.15;margin:0 0 16px}.spt-p{margin:0 0 12px;color:var(--spt-muted);font-size:13.5px;line-height:1.7;max-width:60ch}.spt-hero{padding:34px 0 52px;text-align:center;display:grid;justify-items:center}.spt-art-wrap{position:relative;width:min(100%,460px);aspect-ratio:2/1;cursor:pointer;border-radius:12px;--spt-px:0;--spt-py:0}.spt-art{transform:translate(calc(var(--spt-px) * 12px),calc(var(--spt-py) * 8px));transition:transform .5s cubic-bezier(.2,.8,.2,1)}.spt-art,.spt-art img{display:block;width:100%;height:100%}.spt-art img{object-fit:contain;transition:scale .2s cubic-bezier(.2,.8,.2,1)}.spt-quip{position:absolute;left:50%;top:44%;padding:3px 9px;border-radius:999px;background:var(--spt-ink);color:var(--spt-paper);font-size:11px;font-weight:500;white-space:nowrap;pointer-events:none;transform:translate(-50%);opacity:0}.spt-h1{font-size:40px;line-height:1.05;margin:18px 0 12px}.spt-tagline{margin:0 auto 22px;max-width:44ch;color:var(--spt-muted);font-size:14px;line-height:1.6}.spt-cta{display:inline-flex;align-items:center;gap:12px;height:40px;padding:0 12px 0 8px;min-width:200px;border-radius:3px;background:var(--spt-soft2);font-size:12.5px;font-weight:500;transition:background .2s}.spt-cta:hover{background:color-mix(in oklab,var(--spt-ink) 14%,var(--spt-paper))}.spt-stack{display:flex}.spt-stack .spt-logo{box-shadow:0 0 0 2px var(--spt-soft2);transition:margin .35s cubic-bezier(.3,1.4,.5,1)}.spt-stack .spt-logo+.spt-logo{margin-left:-7px}.spt-cta:hover .spt-stack .spt-logo+.spt-logo{margin-left:2px}.spt-cta-arrow{margin-left:auto;transition:transform .3s}.spt-cta:hover .spt-cta-arrow{transform:translateX(3px)}.spt-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.spt-chip{display:inline-flex;align-items:center;gap:6px;height:27px;padding:0 9px;border-radius:3px;background:var(--spt-soft2);font-size:12px;color:var(--spt-ink);transition:background .2s,color .2s,transform .15s}.spt-chip:hover{background:color-mix(in oklab,var(--spt-ink) 14%,var(--spt-paper))}.spt-chip[aria-pressed=true]{background:var(--spt-accent);color:#fff}.spt-chip:active{transform:scale(.97)}.spt-chip i{font-style:normal;font-size:10.5px;opacity:.6}.spt-label{margin:20px 0 9px;font-size:12.5px;font-weight:500}.spt-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-4px 0 18px;padding:8px 10px;border-radius:4px;background:color-mix(in oklab,var(--spt-accent) 9%,var(--spt-paper));font-size:12.5px}.spt-filter b{font-weight:600;color:var(--spt-accent)}.spt-filter button{margin-left:auto;font-size:12px;text-decoration:underline;text-underline-offset:3px;color:var(--spt-muted)}.spt-filter button:hover{color:var(--spt-ink)}.spt-tl{list-style:none;margin:0;padding:0;display:grid;gap:26px}.spt-co{display:grid;grid-template-columns:22px minmax(0,1fr);gap:0 14px;position:relative}.spt-co[data-multi]:before{content:"";position:absolute;left:10.5px;top:30px;bottom:6px;width:1px;background:var(--spt-line)}.spt-roles{display:grid;gap:22px}.spt-role{position:relative;transition:opacity .35s}.spt-role+.spt-role:before{content:"";position:absolute;left:-28.5px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--spt-paper);box-shadow:inset 0 0 0 1.5px var(--spt-line);transition:box-shadow .25s,background .25s}.spt-role:hover:before,.spt-role[data-hit]:before{background:var(--spt-accent);box-shadow:inset 0 0 0 1.5px var(--spt-accent)}.spt-role[data-dim]{opacity:.32}.spt-role-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.spt-edu h3,.spt-role h3{font-size:17px;line-height:1.25;margin:0}.spt-meta{margin:2px 0 0;font-size:12px;color:var(--spt-muted)}.spt-meta span{margin:0 5px;opacity:.7}.spt-date{margin:0;font-size:11.5px;color:var(--spt-muted);text-align:right;white-space:nowrap;flex:none}.spt-date small{display:block;font-size:10.5px;color:var(--spt-faint);height:15px}.spt-edu .spt-p,.spt-role .spt-p{margin:10px 0 0;font-size:12.5px;line-height:1.65}.spt-bul{list-style:disc;margin:8px 0 0;padding:0 0 0 16px;font-size:12.5px;color:var(--spt-muted);line-height:1.8}.spt-bul li::marker{color:var(--spt-faint)}.spt-tags{display:flex;flex-wrap:wrap;gap:4px;margin:10px 0 0;padding:0;list-style:none}.spt-tags button{height:21px;padding:0 7px;border-radius:3px;font-size:11px;color:var(--spt-muted);box-shadow:inset 0 0 0 1px var(--spt-line);transition:color .2s,box-shadow .2s,background .2s}.spt-tags button:hover{color:var(--spt-ink);box-shadow:inset 0 0 0 1px var(--spt-faint)}.spt-tags button[aria-pressed=true]{color:#fff;background:var(--spt-accent);box-shadow:none}.spt-logo{display:grid;place-items:center;border-radius:4px;flex:none;overflow:hidden}.spt-logo.is-round{border-radius:50%}.spt-logo b{color:#fff;font-size:11px;font-weight:600;line-height:1}.spt-edus{list-style:none;margin:0;padding:0;display:grid;gap:12px}.spt-edu{display:grid;grid-template-columns:22px minmax(0,1fr);gap:0 14px;padding:14px;margin:0 -14px;border-radius:6px;transition:background .25s}.spt-edu:hover{background:var(--spt-soft)}.spt-more{margin-top:8px;font-size:12px;color:var(--spt-muted);display:inline-flex;gap:5px;align-items:center}.spt-more:hover{color:var(--spt-ink)}.spt-more svg{transition:transform .3s}.spt-more[aria-expanded=true] svg{transform:rotate(180deg)}.spt-fold{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s cubic-bezier(.2,.8,.2,1)}.spt-fold[data-open]{grid-template-rows:1fr}.spt-fold>div{overflow:hidden}.spt-tabs{position:relative;display:inline-flex;gap:2px;padding:3px;border-radius:6px;background:var(--spt-soft);margin:0 0 18px;max-width:100%;overflow-x:auto;scrollbar-width:none}.spt-tabs button{position:relative;z-index:1;height:28px;padding:0 12px;font-size:12px;color:var(--spt-muted);border-radius:4px;transition:color .2s;white-space:nowrap}.spt-tabs button[aria-selected=true]{color:var(--spt-ink)}.spt-tab-pill{position:absolute;top:3px;left:0;height:28px;border-radius:4px;background:var(--spt-paper);box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--spt-line);transition:transform .4s cubic-bezier(.3,1.3,.5,1),width .4s cubic-bezier(.3,1.3,.5,1)}.spt-skills{list-style:none;margin:0;padding:0;display:grid;gap:4px}.spt-skill{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:9px 0;border-bottom:1px dashed var(--spt-line)}.spt-skill-name{font-size:13px}.spt-skill-name small{margin-left:8px;font-size:11px;color:var(--spt-faint)}.spt-skill-lvl{font-size:11px;color:var(--spt-muted);text-align:right}.spt-meter{grid-column:1/-1;display:grid;grid-template-columns:repeat(20,1fr);gap:2px;height:6px}.spt-meter i{border-radius:1px;background:var(--spt-soft2);transition:background .3s;transition-delay:calc(var(--i) * 22ms)}.spt-meter i[data-on]{background:var(--spt-ink)}.spt-skill:hover .spt-meter i[data-on]{background:var(--spt-accent)}.spt-contact{padding-bottom:30px}.spt-status{display:inline-flex;align-items:center;gap:8px;margin:0 0 14px;padding:4px 10px 4px 8px;border-radius:999px;background:var(--spt-soft);font-size:11.5px;color:var(--spt-muted)}.spt-dot{position:relative;width:7px;height:7px}.spt-dot,.spt-dot:after{border-radius:50%;background:#22a860}.spt-dot:after{content:"";position:absolute;inset:0;animation:spt-ping 2s cubic-bezier(0,0,.2,1) infinite}.spt-mailrow{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 26px}.spt-email{display:inline-flex;align-items:center;gap:10px;height:42px;padding:0 14px;border-radius:3px;box-shadow:inset 0 0 0 1px var(--spt-line);font-size:13px;transition:box-shadow .2s}.spt-email:hover{box-shadow:inset 0 0 0 1px var(--spt-faint)}.spt-email .spt-copy{font-size:11px;color:var(--spt-muted)}.spt-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;padding-top:18px;border-top:1px solid var(--spt-line);font-size:11.5px;color:var(--spt-faint)}.spt-root[data-motion=on] .spt-reveal{transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1)}.spt-root[data-motion=on] .spt-reveal:not([data-in]){opacity:0;transform:translateY(16px)}.spt-overlay{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:rgba(12,8,6,.38);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:spt-fade .25s ease both}.spt-dialog{width:min(420px,100%);max-height:100%;overflow:auto;padding:22px;border-radius:8px;background:var(--spt-paper);box-shadow:0 24px 60px -20px rgba(0,0,0,.4),0 0 0 1px var(--spt-line);animation:spt-pop .35s cubic-bezier(.2,1.2,.4,1) both}.spt-dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}.spt-dialog h2{font-size:24px;margin:0}.spt-x{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;color:var(--spt-muted)}.spt-x:hover{background:var(--spt-soft2);color:var(--spt-ink)}.spt-field{display:grid;gap:5px;margin-top:12px;font-size:12px;color:var(--spt-muted)}.spt-field input,.spt-field textarea{font:inherit;font-size:13px;color:var(--spt-ink);background:var(--spt-soft);border:1px solid var(--spt-line);border-radius:4px;padding:9px 10px;outline:none;resize:vertical;transition:border-color .2s,background .2s}.spt-field input:focus-visible,.spt-field textarea:focus-visible{outline:none}.spt-field input:focus,.spt-field textarea:focus{border-color:var(--spt-accent);background:var(--spt-paper)}.spt-dialog-actions{display:flex;gap:8px;margin-top:16px}.spt-dialog-actions .spt-btn{flex:1}.spt-toast{position:absolute;left:50%;bottom:18px;z-index:30;display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;background:var(--spt-ink);color:var(--spt-paper);font-size:12.5px;box-shadow:0 10px 30px -10px rgba(0,0,0,.4);transform:translateX(-50%);animation:spt-toast .35s cubic-bezier(.2,1.2,.4,1) both;pointer-events:none}.spt-root[data-motion=on] .spt-grin[data-play] .spt-shades{animation:spt-shades .9s cubic-bezier(.3,.7,.4,1) both}.spt-root[data-motion=on] .spt-grin[data-play] .spt-smile{animation:spt-smile 1.8s cubic-bezier(.3,1.4,.5,1) both}.spt-root[data-motion=on] .spt-signature-mark{animation:spt-signature-reveal 2.4s cubic-bezier(.5,0,.3,1) .3s both}.spt-root[data-motion=on] .spt-art img{animation:spt-bob 4.6s ease-in-out infinite}.spt-root[data-motion=on] .spt-blink{transform-box:fill-box;transform-origin:center;animation:spt-blink 5.2s infinite}.spt-root[data-motion=on] .spt-quip{animation:spt-quip 1.7s cubic-bezier(.2,.8,.2,1) both}.spt-root[data-motion=off] .spt-quip{opacity:1;transform:translate(-50%,-70px)}.spt-root[data-motion=on] .spt-art-wrap:active .spt-art img{scale:.98}@keyframes spt-shades{25%{transform:rotate(-4deg)}50%{transform:rotate(3deg)}75%{transform:rotate(-1.5deg)}}@keyframes spt-smile{20%,70%{transform:scale(1.3,1.4)}}@keyframes spt-signature-reveal{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes spt-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes spt-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes spt-quip{0%{opacity:0;transform:translate(-50%,6px) scale(.8)}18%{opacity:1;transform:translate(-50%,-30px) scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-78px) scale(.96)}}@keyframes spt-ping{0%{transform:scale(1);opacity:.7}80%,to{transform:scale(2.8);opacity:0}}@keyframes spt-fade{0%{opacity:0}}@keyframes spt-pop{0%{opacity:0;transform:translateY(12px) scale(.97)}}@keyframes spt-toast{0%{opacity:0;transform:translate(-50%,12px)}}@media (prefers-reduced-motion:reduce){.spt-root *,.spt-root :after,.spt-root :before{animation:none!important;transition:none!important}}@container spt (min-width:560px){.spt-side{padding:28px 32px}.spt-col,.spt-nav{padding:0 32px}.spt-contact-btn .spt-cm-label{display:inline}.spt-h1{font-size:44px}.spt-links{gap:4px}}@container spt (min-width:880px){.spt-grid{grid-template-columns:minmax(260px,300px) minmax(0,1fr)}.spt-side{position:sticky;top:0;align-self:start;height:var(--spt-h);overflow-y:auto;scrollbar-width:none;border-bottom:0;border-right:1px solid var(--spt-line);padding:26px 26px 26px 28px}.spt-side::-webkit-scrollbar{display:none}.spt-side-top{grid-template-columns:1fr;gap:0}.spt-avatar{grid-row:auto;width:128px;margin-bottom:18px}.spt-side-foot{margin-top:auto}.spt-nav{height:62px}.spt-col,.spt-nav{padding:0 44px}.spt-links{justify-content:center}.spt-hero{padding-top:44px}}