:root{--bg:#0c0d10;--surface:#14161b;--surface-2:#1a1d24;--text:#f2f4f7;--muted:#a4aab5;--line:#2b303a;--accent:#75a7ff;--accent-strong:#4e83ef;--max:1180px;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.13;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(to bottom,black,transparent 70%);z-index:-1}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.container{width:min(calc(100% - 48px),var(--max));margin-inline:auto}.skip-link{position:fixed;left:16px;top:-80px;background:var(--accent);color:#06132b;padding:12px 16px;z-index:20}.skip-link:focus{top:16px}.site-header{position:sticky;top:0;z-index:10;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(12,13,16,.84);backdrop-filter:blur(18px)}.nav-wrap{display:flex;align-items:center;justify-content:space-between;min-height:82px}.brand{display:flex;align-items:center;gap:12px;font-size:11px;line-height:1.2;letter-spacing:.06em;text-transform:uppercase}.brand strong{font-weight:700}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--accent);border-radius:50%;color:var(--accent);font:500 11px 'JetBrains Mono',monospace}.site-nav{display:flex;align-items:center;gap:30px;font-size:13px;color:var(--muted)}.site-nav a{min-height:44px;display:inline-flex;align-items:center;transition:color .2s ease}.site-nav a:hover,.site-nav a:focus-visible{color:var(--text)}.nav-cta{border:1px solid var(--line);padding:0 15px;color:var(--text)!important}.nav-cta span{margin-left:8px;color:var(--accent)}.menu-toggle{display:none;background:none;border:0;color:var(--text);width:44px;height:44px}.hero{min-height:calc(100vh - 82px);display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:40px;padding-block:90px 110px}.eyebrow,.section-label,.timeline-date,.tech-items,.project-meta span,.hero-caption{font:500 11px 'JetBrains Mono',monospace;letter-spacing:.09em;text-transform:uppercase}.eyebrow{color:var(--muted);display:flex;align-items:center;gap:10px}.status-dot{width:7px;height:7px;border-radius:50%;background:#7bf0a3;box-shadow:0 0 14px #7bf0a3}.hero h1{font-size:clamp(60px,8.2vw,118px);line-height:.92;letter-spacing:-.08em;margin:28px 0 32px;max-width:740px}.hero h1 em,.contact-section h2 em{font-style:normal;color:var(--accent)}.hero-lede{color:var(--muted);max-width:460px;font-size:18px;line-height:1.65}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:38px}.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;min-height:50px;padding:0 21px;border:1px solid transparent;cursor:pointer;transition:transform .25s var(--ease),background .25s ease,border-color .25s ease}.button:hover{transform:translateY(-3px)}.button-primary{background:var(--accent);color:#08142a;font-weight:700}.button-primary:hover{background:#9bc0ff}.text-link{border-bottom:1px solid var(--line);padding-bottom:5px;font-size:14px}.text-link span,.email-link span{color:var(--accent);margin-left:8px}.hero-visual{position:relative;min-height:530px;display:grid;place-items:center}.hero-image-frame{width:min(74%,430px);aspect-ratio:4/5;overflow:hidden;background:linear-gradient(145deg,#263954,#0c0d10);border:1px solid #35435c;position:relative;z-index:1}.hero-image-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(12,13,16,.45));pointer-events:none}.hero-image-frame img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:grayscale(1) contrast(1.08);mix-blend-mode:screen}.hero-orbit{position:absolute;border:1px solid rgba(117,167,255,.3);border-radius:50%;transform:rotate(-22deg)}.orbit-one{width:92%;height:43%;}.orbit-two{width:72%;height:74%;transform:rotate(58deg);border-color:rgba(117,167,255,.15)}.code-card{position:absolute;z-index:2;right:0;bottom:82px;display:flex;gap:16px;padding:16px 20px;background:rgba(20,22,27,.9);border:1px solid var(--line);box-shadow:0 18px 40px #0005;font:12px 'JetBrains Mono',monospace;line-height:1.55}.code-card span{color:var(--accent)}.hero-caption{position:absolute;bottom:8px;left:0;color:var(--muted)}.hero-caption span{color:var(--accent);padding-inline:7px}.tech-strip{border-block:1px solid var(--line);background:rgba(20,22,27,.65)}.tech-items{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:72px;color:var(--muted)}.tech-items i{width:4px;height:4px;background:var(--accent);border-radius:50%}.section{padding-block:140px}.section-label{display:flex;gap:14px;color:var(--muted);white-space:nowrap}.section-label span:first-child{color:var(--accent)}.about-grid,.experience-grid{display:grid;grid-template-columns:170px 1fr;gap:55px}.about-content h2,.projects-heading h2{font-size:clamp(38px,5vw,68px);line-height:1.02;letter-spacing:-.06em;margin:0 0 40px;max-width:760px}.about-content h2 span,.projects-heading h2 span{color:var(--muted)}.about-columns{display:grid;grid-template-columns:1fr 1fr;gap:36px;max-width:800px;color:var(--muted)}.about-columns p{margin:0}.stats{display:flex;gap:70px;border-top:1px solid var(--line);margin-top:55px;padding-top:28px}.stats div{display:grid;gap:5px}.stats strong{font-size:34px;letter-spacing:-.04em}.stats span{font:11px 'JetBrains Mono',monospace;text-transform:uppercase;color:var(--muted)}.section-dark{background:var(--surface);border-block:1px solid var(--line)}.timeline{border-top:1px solid var(--line)}.timeline-item{display:grid;grid-template-columns:180px 1fr;gap:20px;padding:29px 0;border-bottom:1px solid var(--line);position:relative}.timeline-item.current:before{content:"";position:absolute;left:-13px;top:35px;width:6px;height:6px;border-radius:50%;background:#7bf0a3;box-shadow:0 0 14px #7bf0a3}.timeline-item h3{font-size:23px;margin:0 0 4px}.timeline-item p{margin:0;color:var(--muted)}.timeline-date{color:var(--muted);padding-top:5px}.projects-heading{display:grid;grid-template-columns:170px 1fr;gap:55px;align-items:start}.projects-heading p{color:var(--muted);max-width:420px;margin:0}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:48px 24px;margin-top:75px}.project-card{display:block}.project-image{position:relative;overflow:hidden;background:var(--surface);aspect-ratio:1.35;border:1px solid var(--line)}.project-large{grid-column:span 2}.project-wide{grid-column:span 2}.project-large .project-image,.project-wide .project-image{aspect-ratio:2.15}.project-image img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.75);transition:transform .5s var(--ease),filter .5s ease}.project-card:hover .project-image img{transform:scale(1.04);filter:saturate(1)}.project-arrow{position:absolute;right:18px;top:18px;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--accent);color:#08142a;opacity:0;transform:translateY(8px);transition:opacity .25s ease,transform .25s var(--ease)}.project-card:hover .project-arrow,.project-card:focus-visible .project-arrow{opacity:1;transform:none}.project-meta{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding-top:15px;border-bottom:1px solid var(--line);padding-bottom:16px}.project-meta h3{font-size:21px;margin:0;letter-spacing:-.03em}.project-meta span{color:var(--muted);font-size:10px;text-align:right}.project-note{min-height:180px;padding:28px;background:var(--accent);color:#08142a;display:flex;flex-direction:column;align-items:flex-start}.project-note .note-number{font:28px 'JetBrains Mono',monospace}.project-note h3{font-size:26px;line-height:1.05;margin:20px 0 8px;letter-spacing:-.04em}.project-note p{margin:0 0 20px}.project-note .text-link{margin-top:auto;border-color:#08142a}.contact-section{background:#e9edf4;color:#0c0d10;padding-block:120px}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:90px}.contact-section .section-label{color:#626c7c}.contact-section .section-label span:first-child{color:var(--accent-strong)}.contact-section h2{font-size:clamp(48px,6vw,82px);line-height:.95;letter-spacing:-.07em;margin:50px 0 28px}.contact-section p{color:#626c7c;max-width:350px}.email-link{display:inline-block;margin-top:32px;font:500 15px 'JetBrains Mono',monospace;border-bottom:1px solid #aab2c0;padding-bottom:7px}.contact-form{display:grid;align-content:center;gap:10px}.contact-form label{font:500 11px 'JetBrains Mono',monospace;text-transform:uppercase;color:#626c7c;margin-top:14px}.contact-form input,.contact-form textarea{width:100%;border:0;border-bottom:1px solid #aab2c0;background:transparent;padding:10px 0;outline:none;color:#0c0d10;resize:vertical}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent-strong);box-shadow:0 2px 0 var(--accent-strong)}.contact-form .button{justify-self:start;margin-top:25px}.site-footer{background:var(--bg);color:var(--muted);font:11px 'JetBrains Mono',monospace;text-transform:uppercase}.site-footer .container{display:flex;align-items:center;justify-content:space-between;min-height:90px}.site-footer a{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.reveal{animation:rise .8s var(--ease) both}.reveal-delay{animation-delay:.12s}@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@media(max-width:760px){.container{width:min(calc(100% - 32px),var(--max))}.site-header{position:sticky}.menu-toggle{display:grid;place-content:center;gap:6px}.menu-toggle span{display:block;width:22px;height:1px;background:var(--text)}.site-nav{display:none;position:absolute;inset:82px 0 auto;background:rgba(12,13,16,.98);padding:16px;flex-direction:column;align-items:stretch;border-bottom:1px solid var(--line)}.site-nav.is-open{display:flex}.site-nav a{justify-content:space-between;padding:12px 8px}.hero{min-height:auto;grid-template-columns:1fr;padding-block:76px 90px;gap:54px}.hero h1{font-size:clamp(58px,17vw,90px)}.hero-lede{font-size:16px}.hero-visual{min-height:430px}.hero-image-frame{width:72%;}.code-card{right:0;bottom:58px}.tech-items{overflow:hidden;justify-content:flex-start;white-space:nowrap;gap:20px}.tech-items span:nth-of-type(n+5),.tech-items i:nth-of-type(n+5){display:none}.section{padding-block:88px}.about-grid,.experience-grid,.projects-heading{grid-template-columns:1fr;gap:28px}.about-content h2,.projects-heading h2{font-size:46px}.about-columns{grid-template-columns:1fr;gap:20px}.stats{gap:25px;justify-content:space-between}.stats strong{font-size:27px}.stats span{font-size:9px}.timeline-item{grid-template-columns:1fr;gap:6px;padding-block:24px}.timeline-item.current:before{left:-9px;top:30px}.project-grid{grid-template-columns:1fr;gap:38px;margin-top:52px}.project-large,.project-wide{grid-column:auto}.project-large .project-image,.project-wide .project-image{aspect-ratio:1.35}.project-meta{display:block}.project-meta span{display:block;text-align:left;margin-top:7px}.contact-section{padding-block:85px}.contact-grid{grid-template-columns:1fr;gap:50px}.contact-section h2{margin-top:35px}.site-footer .container{min-height:100px;gap:15px;flex-wrap:wrap}.site-footer span:nth-child(2){display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{animation:none}.button,.project-image img,.project-arrow{transition:none}}
 .apps-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:75px}.app-card{background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;min-height:100%}.app-art{position:relative;min-height:245px;display:grid;place-items:center;overflow:hidden}.uikli-art{background:radial-gradient(circle at 50% 30%,#6e84ad 0,#24314b 34%,#121621 75%)}.uikli-art img{width:min(75%,300px);height:auto;filter:brightness(1.15);object-fit:contain}.road-art{background:radial-gradient(circle at 55% 42%,#3b6d98 0,#142538 38%,#10141b 74%)}.road-globe{width:150px;height:150px;border:1px solid #9ad0ff;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(160,220,255,.55),transparent 16%),linear-gradient(135deg,transparent 44%,rgba(126,191,255,.7) 45%,transparent 49%),linear-gradient(30deg,transparent 58%,rgba(126,191,255,.5) 59%,transparent 63%);box-shadow:0 0 35px rgba(117,167,255,.42),inset 12px -10px 24px rgba(0,0,0,.35);transform:rotate(-18deg)}.app-badge{position:absolute;left:20px;bottom:18px;font:500 10px 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--text);background:rgba(12,13,16,.7);padding:8px 10px;border:1px solid rgba(255,255,255,.18)}.app-content{padding:28px;display:flex;flex:1;flex-direction:column;justify-content:space-between;gap:30px}.app-kicker{margin:0 0 12px;color:var(--accent);font:500 10px 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase}.app-content h3{font-size:27px;letter-spacing:-.04em;margin:0 0 12px}.app-content p:not(.app-kicker){color:var(--muted);margin:0;max-width:460px}.store-links{display:flex;flex-wrap:wrap;gap:10px}.store-button{display:inline-flex;align-items:center;justify-content:space-between;gap:15px;min-height:44px;border:1px solid var(--line);padding:0 14px;color:var(--text);font-size:12px;transition:background .2s ease,border-color .2s ease,transform .2s var(--ease)}.store-button:hover,.store-button:focus-visible{background:var(--accent);border-color:var(--accent);color:#08142a;transform:translateY(-2px)}
@media(max-width:760px){.apps-grid{grid-template-columns:1fr;margin-top:52px}.app-art{min-height:210px}.app-content{padding:22px}}
.skills-content h2{font-size:clamp(38px,5vw,68px);line-height:1.02;letter-spacing:-.06em;margin:0 0 20px}.skills-content h2 span{color:var(--muted)}.skills-intro{color:var(--muted);max-width:520px;margin:0 0 52px}.skills-grid{display:grid;grid-template-columns:170px 1fr;gap:55px}.skill-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:0 24px;border-top:1px solid var(--line)}.skill-group{position:relative;padding:28px 0 30px;border-bottom:1px solid var(--line)}.skill-group:last-child{grid-column:span 2}.skill-index{color:var(--accent);font:500 11px 'JetBrains Mono',monospace}.skill-group h3{font-size:22px;letter-spacing:-.03em;margin:12px 0 7px}.skill-group p{color:var(--muted);font-size:14px;line-height:1.55;margin:0 0 18px;max-width:430px}.skill-tags{display:flex;flex-wrap:wrap;gap:7px}.skill-tags span{border:1px solid var(--line);padding:5px 8px;color:#c5cad4;font:10px 'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:.04em}
@media(max-width:760px){.skills-grid{grid-template-columns:1fr;gap:28px}.skills-content h2{font-size:46px}.skills-intro{margin-bottom:35px}.skill-groups{grid-template-columns:1fr}.skill-group:last-child{grid-column:auto}}
.projects-section .project-grid{display:block;margin-top:56px}.projects-section .portfolio-row{display:block;border-top:1px solid var(--line);padding:22px 18px;transition:background .25s ease,padding .25s var(--ease)}.projects-section .portfolio-row:last-of-type{border-bottom:1px solid var(--line)}.projects-section .portfolio-row:hover,.projects-section .portfolio-row:focus-visible{background:var(--surface);padding-inline:26px}.projects-section .portfolio-row .project-image{display:none}.projects-section .portfolio-row .project-meta{border:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px}.projects-section .portfolio-row .project-meta h3{font-size:24px}.projects-section .portfolio-row .project-meta span{text-align:right}.projects-section .portfolio-row .project-meta:after{content:'↗';color:var(--accent);font-size:22px;line-height:1}.projects-section .project-note{margin-top:48px}
@media(max-width:760px){.projects-section .portfolio-row{padding:18px 4px}.projects-section .portfolio-row:hover,.projects-section .portfolio-row:focus-visible{padding-inline:10px}.projects-section .portfolio-row .project-meta{grid-template-columns:1fr auto;gap:12px}.projects-section .portfolio-row .project-meta h3{font-size:20px}.projects-section .portfolio-row .project-meta span{text-align:left;grid-column:1 / -1;grid-row:2}.projects-section .portfolio-row .project-meta:after{grid-column:2;grid-row:1}}
