:root{--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro", "Inter", "Segoe UI Variable", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro", "Inter", system-ui, sans-serif;--font-serif: ui-serif, "New York", "Newsreader", "Source Serif 4", Georgia, "Times New Roman", serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Roboto Mono", Consolas, monospace;--s-4: 4px;--s-8: 8px;--s-12: 12px;--s-16: 16px;--s-20: 20px;--s-24: 24px;--s-32: 32px;--s-40: 40px;--s-48: 48px;--s-56: 56px;--s-64: 64px;--s-80: 80px;--s-96: 96px;--s-128: 128px;--r-s: 8px;--r-m: 12px;--r-l: 16px;--r-xl: 20px;--r-2xl: 26px;--r-3xl: 34px;--r-pill: 999px;--c-red:#FF3B30;--c-orange:#FF9500;--c-yellow:#FFCC00;--c-green:#34C759;--c-mint:#00C7BE;--c-teal:#30B0C7;--c-cyan:#32ADE6;--c-blue:#007AFF;--c-indigo:#5856D6;--c-purple:#AF52DE;--c-pink:#FF2D55;--c-brown:#A2845E;--spring: cubic-bezier(.34, 1.56, .64, 1);--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--maxw: 1180px}[data-theme=light]{color-scheme:light;--bg: #FBFBFD;--bg-2: #F2F2F7;--surface: #FFFFFF;--label: rgba(0,0,0,1);--label-2: rgba(60,60,67,.62);--label-3: rgba(60,60,67,.34);--separator: rgba(60,60,67,.14);--hairline: rgba(0,0,0,.08);--tint: #007AFF;--tint-soft: rgba(0,122,255,.12);--glass-bg: rgba(255,255,255,.62);--glass-bg-strong: rgba(255,255,255,.78);--glass-border: rgba(255,255,255,.7);--glass-hi: inset 0 1px 0 0 rgba(255,255,255,.85), inset 0 0 0 .5px rgba(255,255,255,.5);--glass-shadow: 0 10px 34px rgba(20,20,43,.1), 0 2px 8px rgba(20,20,43,.06);--glass-blur: blur(26px) saturate(180%) brightness(1.05);--chip-bg: rgba(118,118,128,.1);--chip-border: rgba(0,0,0,.05);--orb-1: rgba(0,122,255,.16);--orb-2: rgba(175,82,222,.13);--orb-3: rgba(48,176,199,.13);--grid-line: rgba(0,0,0,.035)}[data-theme=dark]{color-scheme:dark;--bg: #000000;--bg-2: #0B0B0D;--surface: #1C1C1E;--label: rgba(255,255,255,1);--label-2: rgba(235,235,245,.62);--label-3: rgba(235,235,245,.34);--separator: rgba(84,84,88,.45);--hairline: rgba(255,255,255,.09);--tint: #0A84FF;--tint-soft: rgba(10,132,255,.18);--glass-bg: rgba(28,28,30,.52);--glass-bg-strong: rgba(28,28,30,.72);--glass-border: rgba(255,255,255,.12);--glass-hi: inset 0 1px 0 0 rgba(255,255,255,.14), inset 0 0 0 .5px rgba(255,255,255,.06);--glass-shadow: 0 16px 44px rgba(0,0,0,.5), 0 2px 10px rgba(0,0,0,.4);--glass-blur: blur(26px) saturate(180%) brightness(1.08);--chip-bg: rgba(120,120,128,.2);--chip-border: rgba(255,255,255,.08);--orb-1: rgba(10,132,255,.28);--orb-2: rgba(191,90,242,.22);--orb-3: rgba(64,200,224,.18);--grid-line: rgba(255,255,255,.04)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;font-family:var(--font-sans);background:var(--bg);color:var(--label);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:-.01em;transition:background .5s var(--ease),color .5s var(--ease);overflow-x:hidden}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}::selection{background:var(--tint);color:#fff}.bg-fx{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.bg-grid{position:absolute;inset:-2px;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000 30%,transparent 75%)}.orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:1}.orb.a{width:620px;height:620px;background:var(--orb-1);top:-240px;left:-140px}.orb.b{width:560px;height:560px;background:var(--orb-2);top:220px;right:-200px}.orb.c{width:680px;height:680px;background:var(--orb-3);top:1500px;left:30%}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--s-24)}section{position:relative}.eyebrow{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--tint)}.section-head{margin-bottom:var(--s-40)}.section-head h2{font-family:var(--font-display);font-weight:700;letter-spacing:-.03em;font-size:clamp(30px,4vw,44px);line-height:1.04;margin:var(--s-12) 0 0}.section-head p{color:var(--label-2);max-width:52ch;margin:var(--s-12) 0 0;font-size:17px}.glass{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-hi),var(--glass-shadow)}@media(prefers-reduced-transparency:reduce){.glass,.portrait,.float-card,.stat,.skill-card,.seg,.proj,.contact-card,.contact-item,.btn-lg.ghost,.hi-pill{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:var(--surface)!important}}.nav{position:fixed;top:var(--s-16);left:50%;transform:translate(-50%);z-index:100;width:calc(100% - 32px);max-width:var(--maxw);display:flex;align-items:center;justify-content:space-between;padding:9px 9px 9px 20px;border-radius:var(--r-pill);transition:box-shadow .4s var(--ease),background .4s var(--ease)}.brand{display:flex;align-items:center;gap:var(--s-12);font-weight:600}.brand .mark{width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,var(--tint),var(--c-indigo));display:grid;place-items:center;color:#fff;font-family:var(--font-display);font-weight:700;font-size:17px;box-shadow:inset 0 1px #fff6,0 4px 12px #007aff59}.brand .name{font-size:15px;letter-spacing:-.02em}.brand .name small{display:block;font-size:11.5px;color:var(--label-2);font-weight:500}.nav-links{display:flex;gap:var(--s-4)}.nav-links a{padding:9px 15px;border-radius:var(--r-pill);font-size:14px;font-weight:500;color:var(--label-2);transition:color .2s var(--ease),background .2s var(--ease)}.nav-links a:hover{color:var(--label);background:var(--chip-bg)}.nav-right{display:flex;align-items:center;gap:var(--s-8)}.icon-btn{width:40px;height:40px;border-radius:var(--r-pill);border:1px solid var(--glass-border);background:var(--chip-bg);color:var(--label);cursor:pointer;display:grid;place-items:center;transition:transform .3s var(--spring),background .2s var(--ease)}.icon-btn:hover{background:var(--tint-soft)}.icon-btn:active{transform:scale(.9)}.icon-btn svg{width:19px;height:19px}.theme-toggle .moon,[data-theme=dark] .theme-toggle .sun{display:none}[data-theme=dark] .theme-toggle .moon{display:block}.btn-cta{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border-radius:var(--r-pill);background:var(--tint);color:#fff;font-size:14px;font-weight:600;box-shadow:inset 0 1px #ffffff59,0 6px 18px #007aff4d;transition:transform .3s var(--spring),filter .2s var(--ease)}.btn-cta:hover{filter:brightness(1.06)}.btn-cta:active{transform:scale(.96)}.btn-cta svg{width:15px;height:15px}.hero{padding:168px 0 var(--s-96)}.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--s-64);align-items:center}.hi-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px 7px 11px;border-radius:var(--r-pill);font-size:13.5px;font-weight:500;color:var(--label-2);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi)}.hi-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--c-green);box-shadow:0 0 0 4px #34c7592e}.hi-pill .wave{font-size:15px;animation:wave 2.6s var(--ease) infinite;transform-origin:70% 70%;display:inline-block}@keyframes wave{0%,60%,to{transform:rotate(0)}10%{transform:rotate(16deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(16deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}.hero h1{font-family:var(--font-display);font-weight:700;font-size:clamp(44px,6.6vw,82px);line-height:.98;letter-spacing:-.045em;margin:var(--s-24) 0 0}.hero h1 .serif{font-family:var(--font-serif);font-weight:500;font-style:italic;letter-spacing:-.02em}.hero h1 .grad{background:linear-gradient(120deg,var(--tint),var(--c-indigo) 55%,var(--c-purple));-webkit-background-clip:text;background-clip:text;color:transparent}.hero .role{margin:var(--s-20) 0 0;font-size:clamp(18px,2vw,21px);font-weight:500;color:var(--label);display:flex;flex-wrap:wrap;align-items:center;gap:10px}.hero .role .sep{width:5px;height:5px;border-radius:50%;background:var(--label-3)}.hero .lede{margin:var(--s-24) 0 0;font-size:17.5px;line-height:1.62;color:var(--label-2);max-width:56ch}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--s-12);margin-top:var(--s-32)}.btn-lg{padding:14px 24px;font-size:15.5px;border-radius:var(--r-pill);font-weight:600;display:inline-flex;align-items:center;gap:9px;transition:transform .3s var(--spring),filter .2s}.btn-lg.primary{background:var(--tint);color:#fff;box-shadow:inset 0 1px #ffffff59,0 8px 22px #007aff52}.btn-lg.primary:hover{filter:brightness(1.06)}.btn-lg.ghost{background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--label);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--glass-hi)}.btn-lg:active{transform:scale(.97)}.btn-lg svg{width:17px;height:17px}.portrait-wrap{position:relative;justify-self:center}.portrait{width:min(380px,78vw);aspect-ratio:1/1;border-radius:var(--r-3xl);overflow:hidden;position:relative;padding:10px;background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--glass-hi),var(--glass-shadow)}.portrait img{width:100%;height:100%;object-fit:cover;border-radius:26px}.float-card{position:absolute;display:flex;align-items:center;gap:10px;padding:11px 15px;border-radius:var(--r-l);background:var(--glass-bg-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--glass-hi),var(--glass-shadow);animation:floaty 6s ease-in-out infinite}.float-card .ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:#fff}.float-card .t{font-size:12px;color:var(--label-2);line-height:1.2;display:block}.float-card .v{font-size:15px;font-weight:700;letter-spacing:-.02em;display:block}.float-card.loc{bottom:20px;left:-28px;animation-delay:-2s}.float-card.stack{top:28px;right:-34px;animation-delay:-4s}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-16);margin-top:var(--s-80)}.stat{padding:var(--s-24);border-radius:var(--r-xl);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.stat .num{font-family:var(--font-display);font-weight:700;font-size:clamp(30px,3.6vw,40px);letter-spacing:-.04em;line-height:1;background:linear-gradient(120deg,var(--label),var(--label-2));-webkit-background-clip:text;background-clip:text;color:transparent}.stat .lab{margin-top:8px;font-size:13.5px;color:var(--label-2)}.nutshell{padding:var(--s-96) 0}.seg{display:inline-flex;padding:5px;gap:4px;border-radius:var(--r-pill);margin-bottom:var(--s-32);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);position:relative}.seg button{border:0;background:transparent;cursor:pointer;color:var(--label-2);font-family:var(--font-sans);font-size:14.5px;font-weight:600;letter-spacing:-.01em;padding:9px 20px;border-radius:var(--r-pill);position:relative;z-index:1;transition:color .25s var(--ease);display:inline-flex;align-items:center;gap:8px}.seg button svg{width:16px;height:16px}.seg button[aria-selected=true]{color:#fff}.seg-bg{position:absolute;top:5px;bottom:5px;border-radius:var(--r-pill);background:var(--tint);box-shadow:inset 0 1px #ffffff59,0 4px 12px #007aff52;transition:left .42s var(--spring),width .42s var(--spring);z-index:0}.panel{display:none}.panel.active{display:block}.panel.active.entering{animation:fade .45s var(--ease-out)}@keyframes fade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-16)}.skill-card{padding:var(--s-24);border-radius:var(--r-xl);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:transform .4s var(--spring)}.skill-card:hover{transform:translateY(-4px)}.skill-card .head{display:flex;align-items:center;gap:11px;margin-bottom:var(--s-16)}.skill-card .ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:#fff;box-shadow:inset 0 1px #ffffff59;flex:none}.skill-card .ic svg{width:19px;height:19px}.skill-card h3{margin:0;font-size:15.5px;font-weight:600;letter-spacing:-.02em}.tags{display:flex;flex-wrap:wrap;gap:7px}.tag{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:-.01em;padding:5px 11px;border-radius:var(--r-pill);background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--label)}.timeline{position:relative;padding-left:0}.tl-item{display:grid;grid-template-columns:200px 1fr;gap:var(--s-32);padding:var(--s-24) 0;border-top:1px solid var(--separator)}.tl-item:first-child{border-top:0}.tl-when{color:var(--label-2)}.tl-when .co{font-weight:600;color:var(--label);font-size:16px;letter-spacing:-.02em}.tl-when .yr{font-family:var(--font-mono);font-size:12.5px;margin-top:6px;display:block}.tl-when .pl{font-size:13px;margin-top:2px;display:flex;align-items:center;gap:5px}.tl-role{font-size:17px;font-weight:600;letter-spacing:-.02em;margin:0 0 4px}.tl-role .badge{font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--tint);background:var(--tint-soft);padding:3px 8px;border-radius:var(--r-pill);margin-left:8px;letter-spacing:0;vertical-align:middle}.tl-list{margin:var(--s-12) 0 0;padding:0;list-style:none;display:grid;gap:9px}.tl-list li{position:relative;padding-left:22px;color:var(--label-2);font-size:14.5px;line-height:1.55}.tl-list li:before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:50%;background:var(--tint)}.tl-list li b{color:var(--label);font-weight:600}.edu-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--s-16)}.edu-card{padding:var(--s-32);border-radius:var(--r-2xl);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.edu-card .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;color:#fff;margin-bottom:var(--s-20);box-shadow:inset 0 1px #ffffff59}.edu-card .ic svg{width:24px;height:24px}.edu-card h3{margin:0;font-size:20px;font-weight:600;letter-spacing:-.025em}.edu-card .meta{color:var(--label-2);margin-top:6px;font-size:15px}.edu-card .yr{font-family:var(--font-mono);font-size:12.5px;color:var(--label-3);margin-top:14px}.cert-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--separator)}.cert-row:first-of-type{border-top:0;padding-top:0}.cert-row .ck{width:26px;height:26px;border-radius:50%;background:var(--tint-soft);color:var(--tint);display:grid;place-items:center;flex:none}.cert-row .ck svg{width:15px;height:15px}.cert-row .txt b{font-size:15px;font-weight:600;letter-spacing:-.01em}.cert-row .txt span{display:block;font-size:13px;color:var(--label-2)}.work{padding:var(--s-96) 0}.proj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s-24)}.proj{--tint-a: var(--c-blue);--tint-b: var(--c-indigo);border-radius:var(--r-2xl);overflow:hidden;position:relative;background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi),var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transition:transform .5s var(--spring),box-shadow .4s var(--ease);display:flex;flex-direction:column}.proj:hover{transform:translateY(-6px)}.proj.feature{grid-column:span 2}.proj-media{position:relative;aspect-ratio:16/9;overflow:hidden;background:linear-gradient(150deg,var(--tint-a),var(--tint-b));display:grid;place-items:center}.proj.feature .proj-media{aspect-ratio:21/8}.proj-media.web img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center}.proj-media.app{padding:26px 0}.proj-media.app img{height:100%;width:auto;max-height:280px;border-radius:22px;box-shadow:0 20px 50px #00000059}.proj.feature .proj-media.app{display:flex;gap:28px;justify-content:center}.proj-media .num{position:absolute;top:14px;left:16px;font-family:var(--font-mono);font-size:12px;font-weight:600;color:#ffffffd9;letter-spacing:.08em;z-index:2;mix-blend-mode:plus-lighter}.proj-domain{position:absolute;top:13px;right:14px;z-index:2;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.04em;padding:6px 11px;border-radius:var(--r-pill);color:#fff;background:#00000047;border:1px solid rgba(255,255,255,.25);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.proj-body{padding:var(--s-24);display:flex;flex-direction:column;gap:var(--s-12);flex:1}.proj.feature .proj-body{padding:var(--s-32)}.proj-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.proj-head h3{margin:0;font-family:var(--font-display);font-size:22px;font-weight:600;letter-spacing:-.03em}.proj.feature .proj-head h3{font-size:27px}.proj-url{font-family:var(--font-mono);font-size:12px;color:var(--label-3);display:inline-flex;align-items:center;gap:5px;transition:color .25s var(--ease)}.proj-url svg{width:12px;height:12px}.proj-url .ext{width:12px;height:12px;margin-left:1px;opacity:.65;transition:transform .3s var(--spring),opacity .25s var(--ease)}.proj.is-link:hover .proj-url{color:var(--tint)}.proj.is-link:hover .proj-url .ext{transform:translate(2px,-2px);opacity:1}.proj-link{position:absolute;inset:0;z-index:6;border-radius:inherit;-webkit-tap-highlight-color:transparent}.proj-link:focus-visible{outline:2px solid var(--tint);outline-offset:3px}.proj.is-link{cursor:pointer}.proj-body{position:relative;z-index:2}.proj-visit{position:absolute;top:13px;right:14px;z-index:7;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.03em;padding:7px 12px;border-radius:var(--r-pill);color:#fff;background:#0000004d;border:1px solid rgba(255,255,255,.28);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .3s var(--ease),transform .35s var(--spring)}.proj.is-link:hover .proj-visit{opacity:1;transform:none}.proj-visit svg{width:13px;height:13px}@media(prefers-reduced-motion:reduce){.proj-visit{transition:opacity .2s;transform:none}}.proj-desc{color:var(--label-2);font-size:14.5px;line-height:1.58;margin:0}.proj.feature .proj-desc{font-size:16px;max-width:70ch}.proj-foot{margin-top:auto;padding-top:var(--s-8)}.proj .tags{gap:6px}.proj .tag{font-size:11px;padding:4px 9px}.contact{padding:var(--s-96) 0 var(--s-64)}.contact-card{border-radius:var(--r-3xl);padding:clamp(32px,5vw,64px);position:relative;overflow:hidden;background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-hi),var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.contact-card .glow{position:absolute;width:460px;height:460px;border-radius:50%;background:radial-gradient(circle,var(--orb-1),transparent 70%);top:-180px;right:-120px;filter:blur(40px)}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-48);align-items:center;position:relative}.contact-lead h2{font-family:var(--font-display);font-weight:700;letter-spacing:-.04em;font-size:clamp(32px,4.4vw,52px);line-height:1;margin:var(--s-16) 0 0}.contact-lead h2 .serif{font-family:var(--font-serif);font-style:italic;font-weight:500}.contact-lead p{color:var(--label-2);font-size:17px;margin:var(--s-16) 0 var(--s-24);max-width:40ch}.contact-list{display:grid;gap:var(--s-12)}.contact-item{display:flex;align-items:center;gap:var(--s-16);padding:var(--s-16) var(--s-20);border-radius:var(--r-l);background:var(--glass-bg-strong);border:1px solid var(--glass-border);box-shadow:var(--glass-hi);transition:transform .35s var(--spring)}.contact-item:hover{transform:translate(5px)}.contact-item .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#fff;flex:none;box-shadow:inset 0 1px #ffffff59}.contact-item .ic svg{width:20px;height:20px}.contact-item .t{font-size:12.5px;color:var(--label-2);display:block}.contact-item .v{font-size:15.5px;font-weight:600;letter-spacing:-.02em;word-break:break-word;display:block}.contact-item .arr{margin-left:auto;color:var(--label-3);transition:transform .3s var(--spring),color .2s}.contact-item:hover .arr{color:var(--tint);transform:translate(3px)}.contact-item .arr svg{width:18px;height:18px}.footer{padding:var(--s-40) 0 var(--s-64)}.footer-in{display:flex;align-items:center;justify-content:space-between;gap:var(--s-16);padding-top:var(--s-32);border-top:1px solid var(--separator);flex-wrap:wrap}.footer .brand .name{font-size:14px}.footer .copy{color:var(--label-3);font-size:13px}@media(prefers-reduced-motion:reduce){.float-card,.hi-pill .wave{animation:none!important}*{transition-duration:.001ms!important;animation-duration:.001ms!important}}@media(max-width:980px){.hero-grid{grid-template-columns:1fr;gap:var(--s-48)}.portrait-wrap{order:-1}.stats{grid-template-columns:repeat(2,1fr)}.skill-grid{grid-template-columns:1fr 1fr}.edu-grid{grid-template-columns:1fr}.contact-grid{grid-template-columns:1fr;gap:var(--s-32)}.nav-links{display:none}}@media(max-width:720px){.wrap{padding:0 var(--s-16)}.hero{padding:132px 0 var(--s-64)}.proj-grid{grid-template-columns:1fr}.proj.feature{grid-column:span 1}.proj.feature .proj-media{aspect-ratio:16/9}.proj.feature .proj-media.app{flex-direction:row}.skill-grid{grid-template-columns:1fr}.tl-item{grid-template-columns:1fr;gap:var(--s-12)}.stats{grid-template-columns:1fr 1fr}.brand .name small{display:none}.nav{padding:8px 8px 8px 14px}.btn-cta span{display:none}.btn-cta{padding:10px}.contact-card{padding:var(--s-32) var(--s-20)}.contact-item{padding:var(--s-12) var(--s-16);gap:var(--s-12)}.contact-item .v{font-size:14.5px}.footer-in{flex-direction:column;gap:var(--s-12);text-align:center;padding-top:var(--s-32)}}
