:root{--color-bg:#0a0b0d;--color-panel:#12151a;--color-panel-raised:#1a1f26;--color-ink:#edefe9;--color-ink-muted:#93a2b4;--color-ink-faint:#5c6874;--color-accent:#0f4ed6;--color-accent-hover:#0a3ca1;--color-line:#232830;--color-tag-bg:#090c11;--color-teal:#4fa69a;--font-display:"Poppins", "Arial", sans-serif;--font-body:"Poppins", sans-serif;--font-mono:"Arial", monospace;--fs-xs:.85rem;--fs-sm:1rem;--fs-base:1.15rem;--fs-lg:1.45rem;--fs-xl:2.1rem;--fs-2xl:3rem;--fs-3xl:4.25rem;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:4rem;--space-2xl:6rem;--max-width:1120px;--radius-sm:2px;--radius-md:4px;--border-width:1px}*{box-sizing:border-box;text-align:left;margin:0;padding:0}body{background-color:var(--color-bg);color:var(--color-ink);font-family:var(--font-body);font-size:var(--fs-base);text-align:left;opacity:1;background-position:50%;background-size:64px 64px;line-height:1.6}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600;line-height:1.15}a{color:inherit;text-decoration:none}button{font-family:inherit}.container{max-width:var(--max-width);padding:0 var(--space-md);margin:0 auto}.section-label{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-accent);text-transform:uppercase;letter-spacing:.12em;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-sm);display:flex}.section-label:before{content:"";width:20px;height:var(--border-width);background:var(--color-accent);display:inline-block}.dim-divider{align-items:center;gap:var(--space-xs);color:var(--color-ink-faint);font-family:var(--font-mono);font-size:var(--fs-xs);display:flex}.dim-divider:before,.dim-divider:after{content:"";height:var(--border-width);background:var(--color-line);flex:1}@media (width<=640px){body{background-size:40px 40px}.section{padding:var(--space-xl) 0}}:root{--bg:#f7f7f5;--surface:#fff;--surface-soft:#f1f1ee;--text:#171717;--text-muted:#6b6b67;--text-light:#8a8a84;--border:#deded8;--border-strong:#c9c9c1;--accent:#171717;--accent-soft:#e9e9e4;--container:1120px;--font-sans:arial, "Segoe UI", sans-serif;--font-mono:"Liberation Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}img{max-width:100%;display:block}.app{min-height:100vh}.container{width:min(calc(100% - 48px), var(--container));margin-inline:auto}.section{padding:72px 0}.section-label{margin:0 0 42px;color:var(--text-light);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin-bottom:28px;font-size:12px;font-weight:600;line-height:1}@media (width<=700px){.container{width:min(calc(100% - 32px), var(--container))}.section{padding:56px 0}.section-label{margin-bottom:24px}}.navbar{z-index:100;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f7f7f5eb;position:sticky;top:0}.navbar__inner{justify-content:space-between;align-items:center;gap:32px;min-height:68px;display:flex}.navbar__mark{color:var(--text);white-space:nowrap;align-items:baseline;gap:10px;text-decoration:none;display:flex}.navbar__mark-code{font-family:var(--font-mono);letter-spacing:.08em;font-size:12px;font-weight:700}.navbar__mark-name{color:var(--text-muted);font-size:13px}.navbar__links{align-items:center;gap:28px;margin-left:auto;display:flex}.navbar__link{color:var(--text-muted);font-size:13px;text-decoration:none;transition:color .2s;position:relative}.navbar__link:after{background:var(--text);content:"";transform-origin:100%;height:1px;transition:transform .2s;position:absolute;bottom:-8px;left:0;right:0;transform:scaleX(0)}.navbar__link:hover{color:var(--text)}.navbar__link:hover:after{transform-origin:0;transform:scaleX(1)}.navbar__cv-btn{border:1px solid var(--text);background:var(--text);color:#fff;cursor:pointer;align-items:center;gap:9px;padding:9px 13px;font-size:12px;font-weight:600;transition:background .2s,color .2s;display:inline-flex}.navbar__cv-btn:hover:not(:disabled){color:var(--text);background:0 0}.navbar__cv-btn:disabled{cursor:wait;opacity:.55}@media (width<=700px){.navbar__inner{min-height:60px}.navbar__links,.navbar__mark-name{display:none}.navbar__cv-btn{padding:8px 11px}}.hero{background:var(--bg);padding:64px 0 72px}.hero__sheet{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) 280px;gap:56px;padding:48px 0;display:grid}.hero__main{max-width:760px}.hero__name{letter-spacing:-.055em;margin:0;font-size:clamp(52px,7vw,82px);font-weight:650;line-height:.98}.hero__title{color:var(--text-muted);font-family:var(--font-mono);letter-spacing:.03em;margin:20px 0 0;font-size:15px;font-weight:500}.hero__tagline{max-width:620px;color:var(--text-muted);margin:18px 0 0;font-size:19px;line-height:1.55}.hero__cta-row{align-items:center;gap:20px;margin-top:38px;display:flex}.hero__cta-primary{border:1px solid var(--text);background:var(--text);color:#fff;cursor:pointer;padding:12px 18px;font-size:13px;font-weight:600;transition:all .2s}.hero__cta-primary:hover:not(:disabled){color:var(--text);background:0 0}.hero__cta-primary:disabled{cursor:wait;opacity:.55}.hero__cta-secondary{color:var(--text);font-size:13px;font-weight:600;text-decoration:none}.hero__cta-secondary:hover{text-underline-offset:5px;text-decoration:underline}.hero__meta{align-self:end;margin:0}.hero__meta-row{border-bottom:1px solid var(--border);grid-template-columns:76px 1fr;gap:12px;padding:13px 0;display:grid}.hero__meta-row:first-child{border-top:1px solid var(--border)}.hero__meta dt{color:var(--text-light);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:600}.hero__meta dd{overflow-wrap:anywhere;margin:0;font-size:12px}.hero__meta a{text-decoration:none}.hero__meta a:hover{text-underline-offset:3px;text-decoration:underline}@media (width<=800px){.hero{padding:64px 0 76px}.hero__sheet{grid-template-columns:1fr;gap:48px;padding:48px 0}.hero__meta{max-width:500px}}@media (width<=500px){.hero__name{font-size:clamp(42px,14vw,64px)}.hero__tagline{font-size:16px}.hero__cta-row{flex-direction:column;align-items:flex-start;gap:16px}}.about{border-bottom:1px solid var(--border);background:#f1f1ee}.about__grid{grid-template-columns:.9fr 1.1fr;gap:64px;display:grid}.about__heading{letter-spacing:-.035em;margin:0 0 14px;font-size:36px;font-weight:600;line-height:1}.about__paragraph{max-width:680px;color:var(--text-muted);margin:0;font-size:16px;line-height:1.7}.about__skills{grid-template-columns:1fr 1fr;gap:42px;display:grid}.skills-block__title{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin:0 0 18px;font-size:11px;font-weight:600}.skills-list{flex-flow:column wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.skills-list__item{color:var(--text-muted);border:1px solid var(--border);border-radius:4px;padding:7px 11px;font-size:13px;line-height:1}.skills-list__item--tech{color:var(--text)}@media (width<=800px){.about__grid{grid-template-columns:1fr;gap:52px}}@media (width<=500px){.about__skills{grid-template-columns:1fr;gap:34px}}.experience{border-bottom:1px solid var(--border)}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline__entry{grid-template-columns:20px minmax(0,1fr);gap:24px;display:grid;position:relative}.timeline__marker{justify-content:center;display:flex;position:relative}.timeline__dot{z-index:2;border:2px solid var(--text);background:var(--bg);border-radius:50%;width:9px;height:9px;margin-top:7px;position:relative}.timeline__rail{background:var(--border);width:1px;position:absolute;top:16px;bottom:0}.timeline__entry:last-child .timeline__rail{display:none}.timeline__content{padding-bottom:36px}.timeline__head{justify-content:space-between;align-items:baseline;gap:24px;display:flex}.timeline__role{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:600}.timeline__dates{color:var(--text-light);font-family:var(--font-mono);white-space:nowrap;flex-shrink:0;font-size:11px}.timeline__company{color:var(--text-muted);margin:6px 0 20px;font-size:13px}.timeline__bullets{max-width:720px;color:var(--text-muted);margin:0;padding-left:18px;font-size:15px;line-height:1.6}.timeline__bullets li{margin-bottom:5px}.timeline-secondary{border-top:1px solid var(--border);margin-top:8px;margin-left:52px}.timeline-secondary__row{border-bottom:1px solid var(--border);color:var(--text-muted);margin:0;padding:17px 0;font-size:12px}.timeline-secondary__role{color:var(--text);font-weight:600}.timeline-secondary__sep{color:var(--text-light);margin:0 7px}.timeline-secondary__dates{font-family:var(--font-mono);font-size:10px}.timeline-secondary__note{color:var(--text-light)}@media (width<=650px){.timeline__head{flex-direction:column;align-items:flex-start;gap:6px}.timeline__entry{grid-template-columns:20px minmax(0,1fr);gap:16px}.timeline-secondary{margin-left:36px}}.credentials{border-bottom:1px solid var(--border);background:#f1f1ee}.credentials__grid{grid-template-columns:1fr 1fr;gap:56px;display:grid}.credentials__title{letter-spacing:-.03em;font-size:25px;font-weight:600}.credentials__title-group{flex-direction:column;gap:8px;display:flex}.credentials__title--spaced{margin-top:64px}.cert-list__sublist{grid-template-columns:1fr auto;gap:8px 24px;margin:0;padding:0 0 0 12px;list-style:none;display:grid}.cert-list__sublist li{grid-template-columns:1fr auto;gap:24px;display:grid}.cert-list__sublist .cert-list__name{justify-self:start}.cert-list__sublist .cert-list__score{justify-self:end}.edu-card{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:20px 0}.edu-card__degree{margin:0;font-size:15px;font-weight:600}.edu-card__school{color:var(--text-muted);margin:6px 0 0;font-size:13px}.edu-card__note{color:var(--text-light);margin:12px 0 0;font-size:12px}.proj-list,.cert-list{margin:0;padding:0;list-style:none}.proj-list__item{border-top:1px solid var(--border);padding:14px 0}.proj-list__item:last-child{border-bottom:1px solid var(--border)}.proj-list__head{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.proj-list__name{font-size:14px;font-weight:600}.proj-list__status{color:var(--text-light);font-family:var(--font-mono);text-transform:uppercase;font-size:10px}.proj-list__desc{color:var(--text-muted);margin:6px 0 0;font-size:15px;line-height:1.65}.cert-group{border-top:1px solid var(--border);padding:20px 0}.cert-group:last-child{border-bottom:1px solid var(--border)}.cert-group__category{color:var(--text-light);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:13px;font-weight:600}.cert-list__item{justify-content:space-between;gap:20px;padding:5px 0;font-size:13px;display:flex}.cert-sublist__item{padding:5px 0;font-size:13px}.cert-list__name{color:var(--text-muted)}.cert-list__prompt{color:var(--text-muted);font-size:12px}.cert-list__base{justify-content:space-between;gap:20px;padding:5px 0;font-size:14px;font-weight:600;display:flex}.cert-list__score{color:var(--text);font-family:var(--font-mono);font-size:11px}@media (width<=800px){.credentials__grid{grid-template-columns:1fr;gap:64px}}.projects{border-bottom:1px solid var(--border)}.projects__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.project-card{border:1px solid var(--border);background:var(--surface);border-radius:4px;transition:border-color .2s,transform .2s;overflow:hidden}.project-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.project-card__image{aspect-ratio:16/9;border:0;border-bottom:1px solid var(--border);background:var(--surface-soft);width:100%;color:var(--text-muted);padding:0;display:block;position:relative;overflow:hidden}.project-card__image--clickable{cursor:zoom-in}.project-card__image img{object-fit:cover;width:100%;height:100%;transition:transform .45s}.project-card:hover .project-card__image img{transform:scale(1.025)}.project-card__zoom-hint{color:#fff;opacity:0;background:#00000080;border:1px solid #ffffff80;place-items:center;width:34px;height:34px;transition:opacity .2s;display:grid;position:absolute;bottom:14px;right:14px}.project-card:hover .project-card__zoom-hint{opacity:1}.project-card__image--placeholder{flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.project-card__placeholder-text{color:var(--text-light);font-family:var(--font-mono);font-size:10px}.project-card__body{padding:24px}.project-card__head{justify-content:space-between;gap:16px;display:flex}.project-card__title{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:600}.project-card__context{color:var(--text-light);font-family:var(--font-mono);letter-spacing:.03em;margin:5px 0 0;font-size:12px}.project-card__desc{color:var(--text-muted);margin:14px 0 20px;font-size:14px;line-height:1.6}.project-card__tags{flex-wrap:wrap;gap:6px;display:flex}.project-card__tag{border:1px solid var(--border);color:var(--text-muted);font-family:var(--font-mono);padding:4px 8px;font-size:12px}.image-modal{z-index:1000;background:#0f0f0feb;justify-content:center;align-items:center;padding:40px;display:flex;position:fixed;inset:0}.image-modal__close{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff4d;place-items:center;width:42px;height:42px;display:grid;position:absolute;top:22px;right:22px}.image-modal__content{max-width:min(1100px,92vw);max-height:90vh;margin:0}.image-modal__content img{object-fit:contain;max-width:100%;max-height:78vh}.image-modal__caption{color:#fff;justify-content:space-between;gap:20px;margin-top:14px;display:flex}.image-modal__title{font-size:13px;font-weight:600}.image-modal__context{color:#fff9;font-family:var(--font-mono);font-size:10px}@media (width<=750px){.projects__grid{grid-template-columns:1fr}.image-modal{padding:20px}.image-modal__caption{flex-direction:column;gap:4px}}.footer{padding:80px 0 40px}.footer__sheet{border-top:1px solid var(--border);padding-top:42px}.footer__grid{grid-template-columns:1fr 320px;gap:80px;display:grid}.footer__heading{letter-spacing:-.05em;max-width:600px;margin:0;font-size:clamp(34px,5vw,56px);font-weight:600;line-height:1}.footer__text{color:var(--text-muted);margin:18px 0 28px;font-size:14px}.footer__cta{border:1px solid var(--text);color:var(--text);cursor:pointer;background:0 0;padding:11px 17px;font-size:12px;font-weight:600;transition:all .2s}.footer__cta:hover:not(:disabled){background:var(--text);color:#fff}.footer__cta:disabled{cursor:wait;opacity:.5}.footer__links{grid-template-columns:1fr 1fr;gap:30px;display:grid}.footer__link-block{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.footer__link-label{color:var(--text-light);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:5px;font-size:10px;font-weight:600}.footer__link{color:var(--text-muted);overflow-wrap:anywhere;font-size:12px;text-decoration:none}.footer__link:hover{color:var(--text);text-underline-offset:4px;text-decoration:underline}.footer__bottom{border-top:1px solid var(--border);color:var(--text-light);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;justify-content:space-between;gap:20px;margin-top:80px;padding-top:18px;font-size:9px;display:flex}@media (width<=700px){.footer{padding-top:60px}.footer__grid{grid-template-columns:1fr;gap:50px}.footer__links{max-width:400px}.footer__bottom{flex-direction:column;gap:7px;margin-top:60px}}
