*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--body);color:var(--ink);background:var(--paper);font-size:var(--t-body);-webkit-font-smoothing:antialiased;line-height:1.6}img{max-width:100%}a{color:var(--accent-ink);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.skip{position:absolute;left:-9999px}.skip:focus{z-index:9;color:var(--ink);font-size:var(--t-small);background:#fff;border-radius:8px;padding:9px 14px;font-weight:700;top:12px;left:16px}h1,h2,h3,.co,.nm,.glance b,.sn{font-family:var(--display)}.wrap{max-width:1060px;margin:0 auto;padding-inline:24px}::selection{color:var(--ink);background:#2f7ff233}.hero{background:radial-gradient(760px 340px at 82% -30%,#4f9eff4d,transparent 62%), linear-gradient(158deg,var(--navy-1),var(--navy-2) 68%,var(--navy-3));color:var(--on-navy);padding:56px 0 44px;position:relative}.hero:after{content:"";background:linear-gradient(90deg,var(--accent),transparent 62%);height:3px;position:absolute;inset:auto 0 0}.htop{flex-wrap:wrap;align-items:flex-start;gap:30px;display:flex}.photo{border-radius:var(--radius);border:1px solid #ffffff3d;flex:none;width:164px;height:192px;overflow:hidden;box-shadow:0 20px 48px -24px #000}.photo img{object-fit:cover;object-position:center 22%;width:100%;height:100%}.idn{flex:1;min-width:min(100%,320px)}.idn .nm{font-size:var(--t-h1);letter-spacing:-.02em;color:#fff;font-weight:800;line-height:1.02}.idn .rl{font-size:var(--t-lead);color:#79b4ff;letter-spacing:.01em;text-wrap:balance;margin-top:10px;font-weight:600}.idn .tg{font-size:var(--t-small);color:var(--on-navy-dim);margin-top:6px;line-height:1.5}.hcontact{grid-template-columns:repeat(auto-fit,minmax(232px,auto));justify-content:start;gap:12px 30px;margin-top:20px;display:grid}.hcontact .cx{line-height:1.3;font-size:var(--t-small);color:var(--on-navy);align-items:center;gap:8px;margin-bottom:0;display:flex}.hcontact .cx svg{stroke:#6fa8f0;fill:none;flex:none;width:15px;height:15px}.hcontact a{color:var(--on-navy);border-bottom:1px solid #9db7d673;text-decoration:none}.hcontact a:hover{color:#fff;border-bottom-color:#79b4ff}.cta{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.cta a{font-size:var(--t-small);border-radius:999px;align-items:center;gap:9px;padding:11px 20px;font-weight:700;text-decoration:none;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.cta a svg{stroke:currentColor;fill:none;stroke-width:2px;flex:none;width:16px;height:16px;transition:transform .2s}.cta a:hover svg{transform:translateY(1px)}.cta .sec:hover svg{transform:none}.cta .pri{background:var(--accent-ink);color:#fff}.cta .pri:hover{background:var(--accent)}.cta .sec{color:var(--on-navy);border:1px solid #9db7d673}.cta .sec:hover{background:#ffffff14;border-color:#79b4ff}.cols{grid-template-columns:minmax(0,1fr) 296px;align-items:start;gap:56px;padding-top:46px;padding-bottom:64px;display:grid}.card{margin-bottom:52px}.card:last-child{margin-bottom:0}.m-h{align-items:center;gap:11px;margin-bottom:18px;display:flex}.m-h .ic{flex:none;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.m-h .ic svg{width:20px;height:20px;stroke:var(--accent);fill:none}.m-h h2{font-size:var(--t-h2);letter-spacing:-.01em;color:var(--ink);font-weight:700}.m-h:after{content:"";background:var(--rule);flex:1;height:1px}.profile{font-size:var(--t-lead);color:var(--ink-2);max-width:var(--measure);line-height:1.66}.profile strong{color:var(--ink);font-weight:700}.tl{padding-left:26px;position:relative}.tl:before{content:"";background:linear-gradient(180deg,var(--accent),var(--rule-2) 78%,transparent);width:2px;position:absolute;top:8px;bottom:10px;left:5px}.job{margin-bottom:34px;position:relative}.job:last-child{margin-bottom:0}.job:before{content:"";background:var(--paper);border:2px solid var(--rule-2);border-radius:50%;width:12px;height:12px;position:absolute;top:7px;left:-26px}.job.now:before{border-color:var(--accent);background:var(--accent)}.job-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.co{font-size:var(--t-h3);color:var(--ink);letter-spacing:-.01em;font-weight:700}.dt,.rdt{font-size:var(--t-meta);color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.job-sub{flex-wrap:wrap;align-items:center;gap:12px;margin-top:3px;display:flex}.loc{font-size:var(--t-meta);color:var(--ink-3)}.prog{font-size:var(--t-meta);color:var(--accent-ink);background:var(--accent-soft);border-radius:999px;padding:2px 10px;font-weight:700;box-shadow:inset 0 0 0 1px #2f7ff229}.roles{gap:18px;margin-top:16px;display:grid}.role-top{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;padding-bottom:6px;display:flex}.pos{font-size:var(--t-body);color:var(--accent-ink);font-weight:700}.job>.pos{margin:4px 0 8px}ul.b{gap:7px;margin-top:9px;list-style:none;display:grid}ul.b li{font-size:var(--t-small);color:var(--ink-2);max-width:var(--measure);padding-left:17px;line-height:1.6;position:relative}ul.b li:before{content:"";background:#a9b8cb;border-radius:50%;width:5px;height:5px;position:absolute;top:9px;left:2px}ul.b li strong{color:var(--ink);font-weight:700}ul.b li.hl{color:var(--ink)}ul.b li.hl:before{background:var(--accent)}.early{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:0 40px;display:grid}.early .row{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:14px;padding:11px 0;display:flex}.early .c{font-size:var(--t-small);color:var(--ink);font-weight:700}.early .s{font-size:var(--t-meta);color:var(--ink-3)}.early .y{font-size:var(--t-meta);color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}.ach .row{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:16px;padding:11px 0;display:flex}.ach .row:last-child{border-bottom:none}.ach .l{font-size:var(--t-small);color:var(--ink-2);align-items:flex-start;gap:11px;display:flex}.ach svg{stroke:#c98a2b;fill:none;flex:none;width:16px;height:16px;margin-top:2px}.ach .y{font-size:var(--t-meta);color:var(--ink-3);font-variant-numeric:tabular-nums}.deck{font-size:var(--t-small);color:var(--ink-2);max-width:var(--measure);margin-bottom:18px}.shelf{grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:14px;display:grid}.sh{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);border-left:3px solid var(--pa,var(--accent));padding:16px 18px 17px;transition:border-color .15s,transform .15s}.sh:hover{transform:translateY(-2px)}.sh-top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.sn{font-size:var(--t-body);color:var(--ink);font-weight:700}.sl{font-size:var(--t-meta);white-space:nowrap;font-weight:600}.sl a{color:var(--accent-ink);text-decoration:none}.sl a:hover{text-decoration:underline}.sd{font-size:var(--t-small);color:var(--ink-2);margin-top:7px;line-height:1.55}.tk{font-size:var(--t-meta);color:var(--ink-2);margin-top:9px;line-height:1.5;display:block}.nda{font-size:var(--t-small);color:var(--ink-2);margin-top:16px;line-height:1.6}.nda b{color:var(--ink)}.rail{gap:0;display:grid;position:sticky;top:26px}.rcard{border-top:1px solid var(--rule);padding:22px 0}.rcard:first-child{border-top:none;padding-top:0}.sb-h{font-family:var(--display);font-weight:700;font-size:var(--t-small);color:var(--ink);align-items:center;gap:9px;margin-bottom:13px;display:flex}.sb-h .d{background:var(--accent);border-radius:2px;flex:none;width:14px;height:2px}.exp{gap:7px;list-style:none;display:grid}.exp li{font-size:var(--t-small);color:var(--ink-2);padding-left:15px;line-height:1.45;position:relative}.exp li:before{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;top:9px;left:0}.lang{margin-bottom:12px}.lang:last-child{margin-bottom:0}.lang .r{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.lang .n{font-size:var(--t-small);color:var(--ink);font-weight:700}.lang .lv{font-size:var(--t-meta);color:var(--ink-3)}.lang .bar{background:var(--rule);border-radius:999px;height:4px;margin-top:6px;overflow:hidden}.lang .bar i{background:var(--accent);border-radius:999px;height:100%;display:block}.cx{font-size:var(--t-small);color:var(--ink-2);align-items:flex-start;gap:9px;margin-bottom:9px;line-height:1.45;display:flex}.cx:last-child{margin-bottom:0}.cx svg{width:15px;height:15px;stroke:var(--accent);fill:none;flex:none;margin-top:2px}.stack .grp{margin-bottom:14px}.stack .grp:last-child{margin-bottom:0}.stack .lb{font-size:var(--t-small);color:var(--ink);align-items:center;gap:8px;margin-bottom:4px;font-weight:700;display:flex}.stack .lb svg{width:15px;height:15px;stroke:var(--accent);fill:none}.stack .vs{font-size:var(--t-meta);color:var(--ink-2);line-height:1.55}.stack .vs b{color:var(--ink);font-weight:700}.edu-row{margin-bottom:13px}.edu-row:last-child{margin-bottom:0}.edu-t{font-size:var(--t-small);color:var(--ink);font-weight:700}.edu-d{font-size:var(--t-meta);color:var(--ink-2);margin-top:2px;line-height:1.5}.edu-y{font-size:var(--t-meta);color:var(--ink-3);font-variant-numeric:tabular-nums;margin-top:1px}.glance .st{border-bottom:1px solid var(--rule);padding:12px 0}.glance .st:first-child{padding-top:0}.glance .st:last-child{border-bottom:none;padding-bottom:0}.glance b{letter-spacing:-.02em;color:var(--ink);font-size:1.75rem;font-weight:800;line-height:1;display:block}.glance span{font-size:var(--t-meta);color:var(--ink-3);margin-top:5px;line-height:1.45;display:block}footer{border-top:1px solid var(--rule);max-width:1060px;font-size:var(--t-small);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px 32px;margin:8px auto 0;padding:26px 24px 52px;line-height:1.7;display:flex}footer p{text-wrap:balance;max-width:62ch;margin:0}footer .f-go{flex:none}footer .f-go a{white-space:nowrap;font-weight:700}footer a{color:var(--accent-ink);border-bottom:1px solid var(--rule-2);padding-bottom:1px;text-decoration:none}footer a:hover{border-bottom-color:var(--accent)}@media (width<=900px){.cols{grid-template-columns:minmax(0,1fr);gap:40px;padding-top:34px}.rail{position:static}.hero{padding:40px 0 34px}.photo{width:116px;height:136px}.card{margin-bottom:42px}}@media (width<=520px){.wrap{padding-inline:18px}.tl{padding-left:20px}.job:before{left:-20px}.hero{padding:32px 0 30px}.profile{font-size:var(--t-body);line-height:1.6}.htop{grid-template-columns:auto 1fr;grid-template-areas:"photo name""photo role""tag tag""contact contact";align-items:center;gap:0 16px;display:grid}.idn{display:contents}.photo{border-radius:12px;grid-area:photo;width:84px;height:98px}.idn .nm{grid-area:name;align-self:end;font-size:2rem}.idn .rl{font-size:var(--t-body);grid-area:role;align-self:start;margin-top:4px;line-height:1.3}.idn .tg{grid-area:tag;margin-top:18px;line-height:1.4}.hcontact{grid-area:contact;grid-template-columns:1fr;gap:8px;margin-top:16px}.cta{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:24px;display:grid}.cta a{min-height:46px;font-size:var(--t-meta);border-radius:12px;justify-content:center;gap:7px;padding:0 8px}.cta .pri{font-size:var(--t-small);grid-column:1/-1}.cta .x{display:none}.cta .cap{text-transform:capitalize}footer{text-align:center;flex-direction:column;align-items:center;gap:14px}footer p{margin-inline:auto}}@media (width<=360px){.cta .sec svg{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media print{.hero{color:var(--ink);background:0 0}.cta,footer{display:none}}.stk{font-size:var(--t-small);color:var(--ink-3);margin:6px 0 0 17px;line-height:1.5}.stk b{color:var(--ink);font-weight:700}.skills-wrap{margin-top:6px;overflow-x:auto}.skills{border-collapse:collapse;width:100%;font-size:var(--t-small);min-width:520px;line-height:1.5}.skills thead th{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:0 8px 6px;font-size:12px}.skills tbody tr{border-top:1px solid var(--rule)}.skills tbody th{text-align:left;vertical-align:top;color:var(--ink);width:22%;padding:8px 8px 8px 0;font-weight:700}.skills td{vertical-align:top;width:39%;padding:8px}
