*{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}:root{--tr:.5s cubic-bezier(.4,0,.2,1);--display:"Syne",sans-serif;--sans:"Space Grotesk",sans-serif;--mono:"JetBrains Mono",monospace}[data-theme=light]{--bg:#f6f5f2;--bg2:#eeede9;--bg3:#e5e4df;--fg:#111110;--muted:#5c5b57;--muted2:#44433f;--accent:#9ccbea;--accent2:#2a6a9a;--accentText:#2a6a9a;--accentRgb:42,106,154;--onAccent:#0e2233;--border:#1111101a;--borderHov:#2a6a9a66;--card:#fff;--shadow:0 8px 40px #11111014;--gridColor:#ebeae5;--navBg:#f6f5f2d6;--socialBg:#fff9;--particleColor:#6bb4e3;--particleColor2:#111110;--particleGlow:#2f7fbf;--loaderBg:#f6f5f2}[data-theme=dark]{--bg:#111110;--bg2:#171715;--bg3:#1e1e1c;--fg:#f6f5f2;--muted:#8d8c86;--muted2:#b0afa8;--accent:#a8d4f0;--accent2:#a8d4f0;--accentText:#a8d4f0;--accentRgb:168,212,240;--onAccent:#07131f;--border:#f6f5f217;--borderHov:#a8d4f059;--card:#181816;--shadow:0 0 80px #000000e6;--gridColor:#1a1a18;--navBg:#111110cc;--socialBg:#0003;--particleColor:#a8d4f0;--particleColor2:#f6f5f2;--particleGlow:#fff;--loaderBg:#111110}html{scroll-behavior:smooth;cursor:none;font-size:16px}body{background:var(--bg);color:var(--fg);font-family:var(--sans);cursor:none;transition:background var(--tr),color var(--tr);background-image:linear-gradient(var(--gridColor) 1px, transparent 1px), linear-gradient(90deg, var(--gridColor) 1px, transparent 1px);background-size:50px 50px;overflow-x:hidden}:focus-visible{outline:2px solid var(--accentText);outline-offset:3px}.scanline{background:linear-gradient(transparent 50%,rgba(var(--accentRgb),.06) 50%);z-index:9999;pointer-events:none;opacity:.4;background-size:100% 3px;position:fixed;inset:0}a{color:inherit;text-decoration:none}.skip-link{z-index:10001;background:var(--accent);color:var(--onAccent);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border-radius:.6rem;padding:.7rem 1.1rem;font-size:.7rem;transition:top .2s;position:fixed;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}img{max-width:100%;height:auto;display:block}#cur{z-index:9999;pointer-events:none;mix-blend-mode:normal;position:fixed;top:0;left:0}.c-ring{border:1.5px solid rgba(var(--accentRgb),.6);border-radius:50%;width:44px;height:44px;transition:width .35s,height .35s,border-color .35s,opacity .35s;position:absolute;transform:translate(-50%,-50%)}.c-dot{background:var(--accentText);border-radius:50%;width:7px;height:7px;transition:width .2s,height .2s;position:absolute;transform:translate(-50%,-50%)}.c-label{font-family:var(--mono);letter-spacing:.15em;color:var(--accentText);opacity:0;white-space:nowrap;text-transform:uppercase;font-size:9px;transition:opacity .2s;position:absolute;transform:translate(-50%,-50%)}body.cur-hover .c-ring{border-color:var(--accentText);width:64px;height:64px}body.cur-hover .c-dot{width:3px;height:3px}body.cur-view .c-ring{width:80px;height:80px}body.cur-view .c-label{opacity:1}.no-loader #loader{display:none!important}.alt-lang{color:var(--muted2);border-bottom:1px solid var(--border);transition:color .2s,border-color .2s}.alt-lang:hover{color:var(--accentText);border-color:var(--accentText)}#loader{z-index:10000;background:var(--loaderBg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.ld-mark{place-items:center;width:120px;height:120px;animation:2.4s ease-in-out infinite ldBreathe;display:grid;position:relative}.ld-icon{border-radius:16px;width:64px;height:64px;display:block}.ld-ring{width:100%;height:100%;animation:1.6s linear infinite ldSpin;position:absolute;inset:0}.ld-ring circle{stroke-width:1.5px}.ld-track{stroke:var(--border)}.ld-arc{stroke:var(--accentText);stroke-linecap:round;stroke-dasharray:24 76}@keyframes ldSpin{to{transform:rotate(360deg)}}@keyframes ldBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.035)}}nav{z-index:100;justify-content:space-between;align-items:center;padding:1.4rem 3rem;transition:all .4s;display:flex;position:fixed;top:0;left:0;right:0}nav.sticky{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:var(--navBg);border-bottom:1px solid var(--border)}.brand{align-items:center;display:flex}.logo{width:auto;height:32px;display:block}.logo-for-dark,[data-theme=dark] .logo-for-light{display:none}[data-theme=dark] .logo-for-dark{display:block}.brand .logo{transition:transform .3s cubic-bezier(.2,.7,.2,1)}.brand:hover .logo{transform:translateY(-1px)scale(1.03)}.foot-brand{align-items:center;gap:.8rem;display:inline-flex}.foot-brand .logo{opacity:.85;height:22px}.nav-links{gap:2.5rem;list-style:none;display:flex}.nav-links a{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--muted2);font-size:.65rem;transition:color .2s}.nav-links a:hover{color:var(--fg)}.nav-right{align-items:center;gap:1.2rem;display:flex}.nav-cta{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--borderHov);color:var(--accentText);border-radius:2rem;padding:.5rem 1.2rem;font-size:.65rem;transition:all .25s}.nav-cta:hover{background:var(--accent);color:var(--onAccent);border-color:var(--accent)}.lang-btn{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--border);color:var(--muted2);cursor:pointer;background:0 0;border-radius:2rem;padding:.4rem .75rem;font-size:.65rem;transition:all .25s}.lang-btn b{color:var(--accentText);font-weight:500}.lang-btn:hover{border-color:var(--borderHov);color:var(--fg)}.theme-btn{border:1px solid var(--border);background:var(--bg3);cursor:pointer;border-radius:12px;width:44px;height:24px;transition:all .3s;position:relative}.theme-thumb{background:var(--accent);border:1px solid rgba(var(--accentRgb),.35);border-radius:50%;width:18px;height:18px;transition:transform .3s;position:absolute;top:2px;left:2px}[data-theme=light] .theme-thumb{transform:translate(0)}[data-theme=dark] .theme-thumb{transform:translate(20px)}#c3d{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}#hero,#about,#experience,#training,#skills,#projects,#testimonials,#contact,footer{z-index:1;position:relative}#hero{flex-direction:column;justify-content:flex-end;height:100svh;padding:0 3rem 4.5rem;display:flex;overflow:hidden}.hero-eyebrow{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:1.2rem;font-size:.65rem}.hero-h1{font-family:var(--display);z-index:1;color:var(--fg);margin-bottom:2rem;font-size:clamp(1.15rem,5.8vw,5.5rem);font-weight:800;line-height:.95}.hero-h1 .line{padding-bottom:.06em;display:block;overflow:hidden}.hero-h1 .word{color:var(--fg);display:inline-block}.hero-h1 .outline .word{color:#0000;-webkit-text-stroke:1.5px var(--accentText)}.hero-sub{max-width:460px;color:var(--muted2);z-index:1;margin-bottom:2.5rem;font-size:.95rem;line-height:1.75}.hero-pills{z-index:1;flex-wrap:wrap;gap:.6rem;display:flex}.hero-pill{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--border);color:var(--muted2);background:var(--navBg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:2rem;align-items:center;gap:.4rem;padding:.35rem .8rem;font-size:.6rem;display:flex}.pill-ico{width:14px;height:14px;color:var(--accentText);flex-shrink:0}.hero-scroll{flex-direction:column;align-items:center;gap:.5rem;display:flex;position:absolute;bottom:5rem;right:3rem}.hero-scroll span{font-family:var(--mono);letter-spacing:.15em;color:var(--muted);text-transform:uppercase;writing-mode:vertical-lr;font-size:.6rem}.scroll-bar{background:linear-gradient(to bottom,var(--accentText),transparent);width:1px;height:56px;animation:2s ease-in-out infinite sb}@keyframes sb{0%{transform-origin:top;transform:scaleY(0)}50%{transform-origin:top;transform:scaleY(1)}51%{transform-origin:bottom}to{transform-origin:bottom;transform:scaleY(0)}}.mqwrap{border-top:1px solid var(--border);z-index:1;padding:.9rem 0;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.mqtrack{white-space:nowrap;gap:3rem;width:max-content;animation:26s linear infinite mq;display:flex}.mqitem{font-family:var(--display);letter-spacing:.2em;text-transform:uppercase;color:#0000;-webkit-text-stroke:1px rgba(var(--accentRgb),.45);font-size:.9rem;font-weight:700}@keyframes mq{0%{transform:translate(0)}to{transform:translate(-50%)}}.hero-status{text-align:right;z-index:1;flex-direction:column;align-items:flex-end;gap:1.2rem;display:flex;position:absolute;top:24%;right:6rem}@media (width<=1200px){.hero-status{display:none}}.stat-line{font-family:var(--mono);color:var(--muted);letter-spacing:.08em;cursor:default;align-items:center;gap:.6rem;font-size:.62rem;transition:color .2s;display:flex}.stat-line:hover{color:var(--fg)}.section-wrap{max-width:1440px;margin:0 auto;padding:8rem 5rem 8rem 3rem}.s-label{font-weight:400;font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accentText);margin-bottom:1.2rem;font-size:.62rem}.s-title{font-family:var(--display);font-size:clamp(2.2rem,4.5vw,3.8rem);font-weight:800;line-height:1.02}.reveal{opacity:0;transform:translateY(32px)}#about{background:var(--bg2);border-top:1px solid var(--border);border-bottom:1px solid var(--border);transition:background var(--tr);align-items:center;min-height:min(100svh,880px);display:flex}#about .section-wrap{width:100%}.about-statement{font-family:var(--display);letter-spacing:-.018em;max-width:30ch;color:var(--fg);margin-top:1.6rem;font-size:clamp(1.65rem,3.7vw,3.3rem);font-weight:700;line-height:1.2}@media (width>=1100px){.about-statement{max-width:24em}}.about-statement em{color:var(--accentText);font-style:normal}.ab-photo{object-fit:cover;object-position:50% 20%;vertical-align:-.2em;border:1px solid var(--border);background:var(--card);border-radius:50%;width:1.12em;height:1.12em;margin:0 .14em 0 .08em;display:inline-block}.about-meta{border-top:1px solid var(--border);align-items:baseline;gap:1rem;max-width:30rem;margin-top:3.2rem;padding-top:1.4rem;display:flex}.about-big{font-family:var(--display);color:var(--fg);font-size:clamp(2.4rem,4vw,3.2rem);font-weight:800;line-height:1}.about-big em{font-style:normal}.about-sub{font-family:var(--mono);letter-spacing:.15em;color:var(--muted);text-transform:uppercase;font-size:.65rem}#experience{border-bottom:1px solid var(--border)}.xp-lead{color:var(--muted2);max-width:540px;margin-top:1.3rem;font-size:.97rem;line-height:1.75}.xp-layout{grid-template-columns:minmax(0,.7fr) minmax(0,1.5fr);align-items:start;gap:4.5rem;margin-top:4.5rem;display:grid}.xp-layout.no-3d{grid-template-columns:1fr}.xp-layout.no-3d .xp-stage{display:none}.xp-stage{border:1px solid var(--border);background:radial-gradient(120% 80% at 50% 0%,rgba(var(--accentRgb),.1),transparent 60%), linear-gradient(180deg,var(--card),var(--bg2));border-radius:24px;height:min(70vh,600px);position:sticky;top:12vh;overflow:hidden}#xpCanvas{width:100%;height:100%;display:block;position:absolute;inset:0}.xp-cap{pointer-events:none;background:linear-gradient(to top,var(--bg2) 30%,transparent);padding:3rem 1.5rem 1.4rem;position:absolute;bottom:0;left:0;right:0}.xp-cap.swap>*{animation:.7s cubic-bezier(.2,.7,.2,1) both capIn}.xp-cap.swap>:nth-child(2){animation-delay:60ms}.xp-cap.swap>:nth-child(3){animation-delay:.12s}@keyframes capIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.xp-cap-date{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accentText);margin-bottom:.4rem;font-size:.6rem}.xp-cap-role{font-family:var(--display);font-size:1.05rem;font-weight:700;line-height:1.3}.xp-cap-org{color:var(--muted2);margin-top:.2rem;font-size:.8rem}.xp-r{opacity:0;transition:opacity .9s cubic-bezier(.2,.7,.2,1) var(--d,0s),transform .9s cubic-bezier(.2,.7,.2,1) var(--d,0s);transform:translateY(20px)}.xp-r.in{opacity:1;transform:none}.xp-timeline{padding-left:2.2rem;position:relative}.xp-timeline:before{content:"";background:var(--border);width:1px;position:absolute;top:.4rem;bottom:.4rem;left:5px}.xp-fill{width:1px;height:var(--xp-fill,0px);background:linear-gradient(to bottom,rgba(var(--accentRgb),.15),var(--accentText));max-height:calc(100% - .8rem);transition:height .25s linear;position:absolute;top:.4rem;left:5px}.xp-item{padding:0 0 3.2rem;position:relative}.xp-item:last-child{padding-bottom:.5rem}.xp-item.xp-r.in{opacity:.5}.xp-item.xp-r.in.active{opacity:1}.xp-item:before{content:"";background:var(--bg);border:1.5px solid rgba(var(--accentRgb),.5);border-radius:50%;width:11px;height:11px;transition:all .5s;position:absolute;top:.35rem;left:-2.2rem}.xp-item.active:before{background:var(--accentText);border-color:var(--accentText);box-shadow:0 0 0 6px rgba(var(--accentRgb),.14)}.xp-meta{flex-wrap:wrap;align-items:center;gap:.6rem .9rem;margin-bottom:.7rem;display:flex}.xp-date{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accentText);background:rgba(var(--accentRgb),.08);border-radius:2rem;padding:.22rem .7rem;font-size:.58rem}.xp-org{color:var(--muted2);font-size:.85rem}.xp-role{font-family:var(--display);margin-bottom:.9rem;font-size:1.3rem;font-weight:700;line-height:1.3}.xp-list{flex-direction:column;gap:.55rem;list-style:none;display:flex}.xp-list li{color:var(--muted2);padding-left:1.1rem;font-size:.86rem;line-height:1.7;position:relative}.xp-list li:before{content:"";background:var(--accentText);opacity:.7;width:5px;height:1px;position:absolute;top:.8em;left:0}.xp-side{flex-direction:column;gap:3rem;margin-top:3.5rem;display:flex}.xp-col-title{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:1.2rem;font-size:.6rem;font-weight:400}.xp-edu-grid{grid-template-columns:repeat(2,1fr);gap:1rem;margin-bottom:1rem;display:grid}.xp-card{background:rgba(var(--accentRgb),.04);border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:border-color .3s,transform .5s cubic-bezier(.2,.7,.2,1),opacity .9s cubic-bezier(.2,.7,.2,1) var(--d,0s);border-radius:18px;padding:1.5rem}.xp-card.in:hover{border-color:var(--borderHov);transform:translateY(-3px)}.xp-card .xp-date{margin-bottom:.8rem;display:inline-block}.xp-card-title{font-family:var(--display);margin-bottom:.4rem;font-size:1rem;font-weight:700;line-height:1.35}.xp-mini{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.9rem;font-size:.58rem}.lang-row{grid-template-columns:1fr auto;align-items:center;gap:.5rem 1rem;padding:.85rem 0;font-size:.92rem;display:grid}.lang-row+.lang-row{border-top:1px solid var(--border)}.lang-lvl{font-family:var(--mono);letter-spacing:.1em;color:var(--accentText);text-transform:uppercase;font-size:.58rem}.lang-bar{background:var(--border);border-radius:3px;grid-column:1/-1;height:3px;overflow:hidden}.lang-bar i{background:linear-gradient(90deg,var(--accent),var(--accentText));transform-origin:0;border-radius:3px;height:100%;transition:transform 1.4s cubic-bezier(.2,.7,.2,1) .3s;display:block;transform:scaleX(0)}.xp-r.in .lang-bar i{transform:scaleX(var(--lvl,1))}#training{border-bottom:1px solid var(--border)}.tr-grid{grid-template-columns:1.5fr 1fr;align-items:start;gap:1.5rem;margin-top:3.5rem;display:grid}.tr-card{background:var(--card);border:1px solid var(--border);border-radius:1.4rem;padding:2rem;transition:border-color .3s,transform .5s cubic-bezier(.2,.7,.2,1)}.tr-card:hover{border-color:var(--borderHov);transform:translateY(-3px)}.tr-head{align-items:center;gap:1.1rem;margin-bottom:1.2rem;display:flex}.tr-logo{border:1px solid var(--border);background:#fff;border-radius:1rem;flex:none;justify-content:center;align-items:center;width:64px;height:64px;display:flex;overflow:hidden}.tr-logo img{object-fit:cover;width:100%;height:100%}.tr-logo.wide{width:auto;height:64px;padding:.4rem .9rem}.tr-logo.wide img{object-fit:contain;width:auto;height:100%}.tr-org{font-family:var(--display);font-size:1.25rem;font-weight:700;line-height:1.25}.tr-role{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accentText);margin-top:.35rem;font-size:.62rem}.tr-intro{color:var(--muted2);margin-bottom:1.2rem;font-size:.88rem;line-height:1.7}.tr-sessions{border-top:1px solid var(--border);flex-direction:column;list-style:none;display:flex}.tr-sessions li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1.2rem;padding:.95rem 0;font-size:.92rem;line-height:1.5;display:flex}.tr-stars{flex:none;gap:2px;display:inline-flex}.tr-stars i{background:var(--accentText);clip-path:polygon(50% 0,62% 36%,100% 38%,70% 60%,80% 100%,50% 76%,20% 100%,30% 60%,0 38%,38% 36%);width:14px;height:14px}.tr-stars i.half{opacity:.4}.tr-stars i.off{opacity:.2}.tr-quotes{border-top:1px solid var(--border);margin-top:1.8rem;padding-top:1.4rem}.tr-quotes-title{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:1rem;font-size:.6rem;font-weight:400}.tr-quotes blockquote{background:rgba(var(--accentRgb),.05);border-left:2px solid var(--accentText);border-radius:0 .8rem .8rem 0;margin-bottom:.8rem;padding:1rem 1.2rem}.tr-quotes blockquote .tr-stars{margin-bottom:.5rem}.tr-quotes blockquote p{color:var(--fg);font-size:.88rem;line-height:1.7}.tr-quotes-note{font-family:var(--mono);letter-spacing:.1em;color:var(--muted);margin-top:.6rem;font-size:.56rem}.tr-note{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:1rem;font-size:.58rem}@media (width<=900px){.tr-grid{grid-template-columns:1fr}.tr-card{padding:1.5rem}.tr-sessions li{flex-direction:column;align-items:flex-start;gap:.5rem}}#skills{border-bottom:1px solid var(--border)}.skills-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:4rem;display:flex}.skills-grid{background:var(--border);grid-template-columns:repeat(3,1fr);gap:1.5px;display:grid}.sk-card{background:var(--card);cursor:default;padding:2.2rem;transition:background .3s;position:relative;overflow:hidden}.skills-grid .sk-card:last-child:nth-child(3n+1){grid-column:1/-1}.sk-card:after{content:"";background:linear-gradient(135deg,rgba(var(--accentRgb),.06),transparent);opacity:0;pointer-events:none;transition:opacity .3s;position:absolute;inset:0}.sk-card:hover{background:var(--bg2)}.sk-card:hover:after{opacity:1}.sk-cat{font-family:var(--mono);letter-spacing:.2em;color:var(--accentText);text-transform:uppercase;margin-bottom:1.2rem;font-size:.58rem}.sk-name{font-family:var(--display);margin-bottom:1.4rem;font-size:1.3rem;font-weight:700}.sk-icons{flex-wrap:wrap;gap:.8rem;display:flex}.sk-icon-item{border:1px solid var(--border);cursor:default;border-radius:.6rem;flex-direction:column;align-items:center;gap:.35rem;min-width:60px;padding:.5rem .6rem;transition:all .25s;display:flex}.sk-icon-item:hover{border-color:var(--borderHov);transform:translateY(-3px)scale(1.05)}.sk-icon-item img{object-fit:contain;width:28px;height:28px}.sk-tile{color:#fff;background:linear-gradient(135deg,var(--t1),var(--t2));width:28px;height:28px;box-shadow:0 6px 14px -4px var(--t2),inset 0 1px 0 #ffffff59;border-radius:9px;place-items:center;transition:transform .3s cubic-bezier(.2,.7,.2,1);display:grid}.sk-tile svg{width:16px;height:16px}.sk-icon-item:hover .sk-tile{transform:rotate(-6deg)scale(1.08)}.sk-icon-label{font-family:var(--mono);letter-spacing:.05em;color:var(--muted);text-align:center;font-size:.52rem;line-height:1.2}#projects{border-bottom:1px solid var(--border)}.proj-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:4rem;display:flex}.proj-card{background:var(--card);border:1px solid var(--border);cursor:default;border-radius:.75rem;flex-direction:column;transition:border-color .3s,transform .3s,box-shadow .3s;display:flex;overflow:hidden}.proj-card:hover{border-color:var(--borderHov);box-shadow:0 12px 40px rgba(var(--accentRgb),.12);transform:translateY(-4px)}.proj-card-img{background:var(--bg2);border-bottom:1px solid var(--border);width:100%;height:200px;position:relative;overflow:hidden}.proj-card-img img{object-fit:cover;object-position:top;width:100%;height:100%;transition:transform .5s}.proj-card:hover .proj-card-img img{transform:scale(1.05)}.proj-card-img.shots{background:radial-gradient(70% 70% at 50% 25%,rgba(var(--accentRgb),.16),transparent 70%), linear-gradient(135deg,var(--bg2),var(--bg3));justify-content:center;align-items:flex-start;gap:14px;height:300px;padding-top:26px;display:flex}.proj-shot{background:var(--card);border:1px solid var(--border);border-bottom:none;border-radius:18px 18px 0 0;flex:none;width:min(150px,29%);transition:transform .5s cubic-bezier(.2,.7,.2,1);overflow:hidden;box-shadow:0 18px 40px #11111033}.proj-card-img.one .proj-shot{width:min(170px,50%)}.proj-shot img,.proj-card:hover .proj-shot img{object-fit:initial;width:100%;height:auto;transform:none}.proj-card-img.many .proj-shot:nth-child(2){transform:translateY(22px)}.proj-card:hover .proj-card-img.many .proj-shot:first-child{transform:translate(-6px)rotate(-2deg)}.proj-card:hover .proj-card-img.many .proj-shot:nth-child(2){transform:translateY(10px)}.proj-card:hover .proj-card-img.many .proj-shot:nth-child(3){transform:translate(6px)rotate(2deg)}.proj-card-img.slides>img{object-fit:cover;object-position:50% 0;opacity:0;width:100%;height:100%;transition:opacity .9s,transform .5s;position:absolute;inset:0}.proj-card-img.slides>img.on{opacity:1}.slide-dots{z-index:2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#11111080;border-radius:1rem;gap:.45rem;padding:.35rem .6rem;display:flex;position:absolute;bottom:.7rem;left:50%;transform:translate(-50%)}.slide-dot{cursor:pointer;background:#f6f5f273;border:none;border-radius:50%;width:7px;height:7px;padding:0;transition:background .3s,transform .3s}.slide-dot.on{background:#f6f5f2;transform:scale(1.25)}.proj-card-img.combo{height:300px}.proj-card-img.combo>img{object-position:0 0}.proj-shots{z-index:2;align-items:flex-start;gap:10px;width:min(46%,290px);display:flex;position:absolute;top:26px;bottom:0;right:16px}.proj-shots .proj-shot{flex:1 1 0;width:auto;min-width:0}.proj-shots .proj-shot:nth-child(2){transform:translateY(22px)}.proj-card:hover .proj-shots .proj-shot:first-child{transform:translateY(-4px)rotate(-2deg)}.proj-card:hover .proj-shots .proj-shot:nth-child(2){transform:translateY(14px)rotate(2deg)}.proj-card-img.combo .slide-dots{left:1rem;transform:none}.proj-card-img.contain,.gal .proj-card-img.contain{background:#fff}.proj-card-img.contain>img{object-fit:contain;padding:1.4rem}.proj-placeholder{background:radial-gradient(circle at 30% 30%,rgba(var(--accentRgb),.18),transparent 60%), linear-gradient(135deg,var(--bg2),var(--bg3));justify-content:center;align-items:center;width:100%;height:100%;display:flex}.proj-mono{font-family:var(--display);letter-spacing:-.03em;color:rgba(var(--accentRgb),.55);font-size:3.4rem;font-weight:800}.proj-card-body{flex-direction:column;flex:1;gap:.6rem;padding:1.5rem;display:flex}.proj-card-num{font-family:var(--mono);color:var(--accentText);letter-spacing:.15em;text-transform:uppercase;font-size:.6rem}.proj-name{font-family:var(--display);font-size:1.2rem;font-weight:700;line-height:1.3;transition:color .2s}.proj-card:hover .proj-name{color:var(--accentText)}.proj-desc{color:var(--muted2);font-size:.85rem;line-height:1.6}.proj-tags{flex-wrap:wrap;gap:.35rem;margin-top:auto;padding-top:.6rem;display:flex}.ptag{font-family:var(--mono);color:var(--muted);border:1px solid var(--border);border-radius:1rem;padding:.2rem .55rem;font-size:.55rem;transition:border-color .2s}.proj-card:hover .ptag{border-color:var(--borderHov)}.proj-card-actions{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.8rem;display:flex}.proj-link-btn{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:2rem;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.65rem;text-decoration:none;transition:all .25s;display:inline-flex}.proj-link-btn svg{flex-shrink:0;width:14px;height:14px}.proj-web-btn{background:rgba(var(--accentRgb),.1);color:var(--accentText);border:1px solid rgba(var(--accentRgb),.25)}.proj-web-btn:hover{background:var(--accent);color:var(--onAccent);border-color:var(--accent)}.proj-git-btn{color:var(--muted2);border:1px solid var(--border);background:0 0}.proj-git-btn:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.proj-badge{z-index:1;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--onAccent);background:var(--accent);box-shadow:0 4px 14px rgba(var(--accentRgb),.25);border-radius:2rem;padding:.3rem .75rem;font-size:.58rem;position:absolute;top:1rem;left:1rem}.proj-confidential{font-family:var(--mono);letter-spacing:.06em;color:var(--muted);border:1px solid var(--border);background:rgba(var(--accentRgb),.05);border-radius:2rem;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.62rem;display:inline-flex}.proj-confidential svg{width:13px;height:13px;color:var(--accentText);flex-shrink:0}.proj-contact-link{color:var(--accentText);text-underline-offset:2px;text-decoration:underline;transition:color .2s}.proj-contact-link:hover{color:var(--fg)}#testimonials{background:var(--bg2);border-bottom:1px solid var(--border);transition:background var(--tr)}.testi-grid{grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-top:4rem;display:grid}.testi-card{border:1px solid var(--border);background:var(--card);animation:float var(--float-dur,4s) ease-in-out infinite;animation-delay:var(--float-delay,0s);border-radius:.25rem;padding:2.5rem;transition:border-color .3s,transform .4s}.testi-card:hover{border-color:var(--borderHov)}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.tq{font-family:var(--display);color:var(--border);margin-bottom:.8rem;font-size:2.5rem;line-height:1}.tt{color:var(--muted2);margin-bottom:2rem;font-size:.9rem;line-height:1.8}.ta{align-items:center;gap:.9rem;display:flex}.tav{background:var(--accent);width:38px;height:38px;font-family:var(--display);color:var(--onAccent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}.tn{font-size:.9rem;font-weight:500}.tr2{font-family:var(--mono);color:var(--muted);letter-spacing:.05em;margin-top:.15rem;font-size:.6rem}#contact{border-bottom:1px solid var(--border)}.contact-big{font-family:var(--display);color:var(--fg);perspective:1000px;opacity:0;margin:3rem 0 2rem;font-size:clamp(1.5rem,7.4vw,5rem);font-weight:800;line-height:1.08}.contact-big .cw{white-space:nowrap;display:inline-block}.contact-big .cw:last-child{color:var(--accentText)}.contact-big .cw span{color:inherit;display:inline-block}.contact-sub{color:var(--muted2);max-width:460px;margin-bottom:2.5rem;font-size:.95rem;line-height:1.8}.contact-email-btn{font-family:var(--display);overflow-wrap:anywhere;max-width:100%;color:var(--fg);border-bottom:2px solid var(--borderHov);align-items:center;gap:.8rem;padding-bottom:.4rem;font-size:clamp(.95rem,4.6vw,1.3rem);font-weight:700;transition:color .25s,border-color .25s;display:inline-flex}.contact-email-btn:hover{color:var(--accentText);border-color:var(--accentText)}.contact-links-row{flex-wrap:wrap;gap:2rem;margin-top:3rem;display:flex}.contact-lnk{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);border-bottom:1px solid var(--border);align-items:center;gap:.5rem;padding-bottom:.3rem;font-size:.7rem;transition:color .2s,border-color .2s;display:flex}.contact-lnk:hover{color:var(--accentText);border-color:var(--accentText)}footer{background:var(--bg);font-family:var(--mono);color:var(--muted);letter-spacing:.08em;border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:2rem 6rem 2rem 3rem;font-size:.6rem;display:flex}#chatbot-widget{z-index:600;font-family:var(--sans);position:fixed;bottom:2rem;right:2rem}.chat-btn{background:var(--accent);width:56px;height:56px;color:var(--onAccent);border:1px solid rgba(var(--accentRgb),.3);cursor:pointer;box-shadow:0 4px 20px rgba(var(--accentRgb),.3);transform-origin:50%;border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;transition:all .3s;display:flex}.chat-btn:hover{box-shadow:0 6px 30px rgba(var(--accentRgb),.5);transform:scale(1.1)}.chat-btn.active{background:var(--bg2);color:var(--accentText)}.chat-window{background:var(--card);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(380px,100vw - 2rem);height:520px;animation:.35s slideUp;display:none;position:absolute;bottom:70px;right:0;overflow:hidden;box-shadow:0 20px 60px #143c6440}.chat-window.active{display:flex}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.chat-header{background:var(--bg2);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.2rem;display:flex}.chat-title{color:var(--fg);font-size:.95rem;font-weight:600}.chat-close{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:1.2rem;transition:color .2s}.chat-close:hover{color:var(--fg)}.chat-messages{flex-direction:column;flex:1;gap:1rem;padding:1.2rem;display:flex;overflow-y:auto}.msg{gap:.6rem;animation:.3s fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.msg.user{justify-content:flex-end}.msg.assistant{justify-content:flex-start}.msg-bubble{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px;max-width:75%;padding:.75rem 1rem;font-size:.85rem;line-height:1.5}.msg.user .msg-bubble{background:var(--accent);color:var(--onAccent);border-radius:10px 2px 10px 10px}.msg.assistant .msg-bubble{background:var(--bg2);color:var(--fg);border:1px solid var(--border);border-radius:2px 10px 10px}.typing{align-items:center;gap:.3rem;display:inline-flex}.typing span{background:var(--muted);border-radius:50%;width:6px;height:6px;animation:1.4s infinite typing}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{opacity:.3}30%{opacity:1}}.chat-input-wrap{border-top:1px solid var(--border);gap:.5rem;padding:1rem;display:flex}.chat-input{background:var(--bg);border:1px solid var(--border);color:var(--fg);font-family:var(--sans);border-radius:6px;outline:none;flex:1;padding:.6rem .8rem;font-size:.85rem;transition:border-color .2s}.chat-input:focus{border-color:var(--accentText)}.chat-input::placeholder{color:var(--muted)}.chat-send{background:var(--accent);color:var(--onAccent);cursor:pointer;border:none;border-radius:6px;padding:.6rem 1rem;font-size:.85rem;font-weight:500;transition:all .2s}.chat-send:hover:not(:disabled){filter:brightness(.95);box-shadow:0 0 0 2px rgba(var(--accentRgb),.25)}.chat-send:disabled{opacity:.5;cursor:not-allowed}#social-dock{z-index:550;flex-direction:column;gap:.7rem;display:flex;position:fixed;top:50%;right:1.2rem;transform:translateY(-50%)}.social-btn{background:var(--socialBg);border:1px solid var(--border);width:46px;height:46px;color:var(--muted2);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:14px;justify-content:center;align-items:center;transition:transform .25s,border-color .25s,color .25s,background .25s;display:flex}.social-btn:hover{border-color:var(--borderHov);color:var(--accentText);background:rgba(var(--accentRgb),.1);transform:translate(-4px)}.social-btn svg{width:18px;height:18px;display:block}@media (width<=900px){.xp-layout{gap:2.5rem;margin-top:3rem}.xp-stage{display:none}.xp-edu-grid{grid-template-columns:1fr}nav{padding:1.2rem 1.5rem}.nav-links{display:none}.section-wrap{padding:5rem 1.5rem}#hero{padding:0 1.5rem 4rem}.testi-grid,.xp-layout{grid-template-columns:1fr}.xp-layout{gap:3rem}.skills-grid{grid-template-columns:1fr}.proj-card-img{height:180px}.hero-status{display:none}footer{text-align:center;flex-direction:column}.chat-window{left:1rem;right:1rem;bottom:calc(1rem + 56px + max(env(safe-area-inset-bottom), 0px));width:auto;height:min(70vh,520px);max-height:calc(100svh + -2rem - 56px);margin:0;position:fixed}#chatbot-widget{right:1rem;bottom:calc(1rem + max(env(safe-area-inset-bottom), 0px))}}@media (width<=600px){.nav-right{gap:.8rem}.nav-cta{padding:.45rem .85rem}.hero-h1{margin-bottom:1.3rem}.hero-sub{margin-bottom:1.6rem}.hero-scroll,#social-dock{display:none}}@media (width<=420px){.nav-cta{display:none}.section-wrap{padding:4rem 1.15rem}#hero{padding:0 1.15rem 3.5rem}}@media (hover:none),(pointer:coarse){html,body{cursor:auto}#cur{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.mqtrack,.scroll-bar,.testi-card{animation:none}.xp-r,.xp-item.xp-r.in{transition:none;opacity:1!important;transform:none!important}.xp-cap.swap>*{animation:none}}.gal{position:relative}.gal-mark{z-index:0;pointer-events:none;font-family:var(--display);white-space:nowrap;text-align:center;color:#0000;-webkit-text-stroke:1.5px rgba(var(--accentRgb),.3);font-size:clamp(4rem,13vw,11rem);font-weight:800;line-height:1;position:absolute;top:3.4rem;left:0;right:0;overflow:hidden}.gal-mark.swap{animation:.9s cubic-bezier(.2,.7,.2,1) both markIn}@keyframes markIn{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}.gal-filters{z-index:2;flex-wrap:wrap;gap:.5rem;margin-bottom:2.2rem;display:flex;position:relative}.gal-filter{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;background:var(--navBg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--muted2);cursor:pointer;border:1px solid var(--border);border-radius:2rem;padding:.5rem 1rem;font-size:.62rem;transition:all .3s}.gal-filter:hover{color:var(--fg);border-color:var(--borderHov)}.gal-filter.on{background:var(--accent);color:var(--onAccent);border-color:var(--accent)}.gal-track{z-index:1;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;cursor:grab;outline:none;align-items:stretch;gap:1.6rem;margin:0 calc(-1*max(3rem,50vw - 720px + 3rem));padding:4.6rem max(3rem,50vw - min(440px,82vw)/2) 2rem;display:flex;position:relative;overflow-x:auto}.gal-track::-webkit-scrollbar{display:none}.gal-track:focus-visible{box-shadow:inset 0 0 0 2px rgba(var(--accentRgb),.35)}.gal-track.dragging{scroll-snap-type:none;cursor:grabbing;-webkit-user-select:none;user-select:none}.gal-track.dragging *{pointer-events:none}.gal .proj-card{scroll-snap-align:center;scroll-snap-stop:always;border-radius:1.4rem;flex:0 0 min(440px,82vw);padding:.7rem;transition:transform .6s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .6s;position:relative;transform:scale(.93)}.gal .proj-card>*{opacity:.42;transition:opacity .6s}.gal .proj-card.is-active>*{opacity:1}.gal .proj-card.is-active{border-color:var(--borderHov);box-shadow:0 24px 60px rgba(var(--accentRgb),.16);transform:none}.gal .proj-card:not(.is-active){cursor:pointer}.gal .proj-card:hover{transform:scale(.95)}.gal .proj-card.is-active:hover{transform:translateY(-4px)}.gal .proj-card:before,.gal .proj-card:after{content:"";pointer-events:none;border-top:1.5px solid var(--accentText);opacity:0;width:14px;height:14px;transition:opacity .5s;position:absolute;top:-7px}.gal .proj-card:before{border-left:1.5px solid var(--accentText);left:-7px}.gal .proj-card:after{border-right:1.5px solid var(--accentText);right:-7px}.gal .proj-card.is-active:before,.gal .proj-card.is-active:after{opacity:1}.gal .proj-card-img{background:var(--bg2);border:none;border-radius:1rem;height:270px}.gal .proj-card-img.shots{padding-top:22px}.gal .proj-card-img.combo{height:270px}.gal .proj-card-body{gap:.55rem;padding:1.3rem .9rem .8rem}.gal .proj-name{font-size:1.35rem}.gal .proj-desc{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.gal .proj-card-num{letter-spacing:.2em}.gal-bar{z-index:2;align-items:center;gap:1.4rem;margin-top:.4rem;display:flex;position:relative}.gal-progress{background:var(--border);border-radius:2px;flex:1;height:2px;overflow:hidden}.gal-progress i{background:var(--accentText);transform-origin:0;height:100%;transition:transform .35s;display:block;transform:scaleX(.06)}.gal-hint{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:.58rem}.gal-count{font-family:var(--mono);letter-spacing:.12em;color:var(--muted2);text-align:right;min-width:3.6rem;font-size:.62rem}.gal-btns{gap:.6rem;display:flex}.gal-btn{cursor:pointer;width:48px;height:48px;color:var(--fg);border:1px solid var(--borderHov);background:0 0;border-radius:50%;justify-content:center;align-items:center;transition:all .3s cubic-bezier(.2,.7,.2,1);display:flex}.gal-btn svg{width:18px;height:18px}.gal-btn:hover:not(:disabled){background:var(--accent);color:var(--onAccent);border-color:var(--accent);transform:scale(1.06)}.gal-btn:disabled{opacity:.3;cursor:default}@media (width<=900px){.gal-track{margin:0 -1.5rem;padding:1.5rem max(1.5rem,50vw - min(440px,82vw)/2) 2rem}.gal-hint,.gal-mark{display:none}}@media (width<=420px){.gal-track{margin:0 -1.15rem}}@media (prefers-reduced-motion:reduce){.gal .proj-card,.gal .proj-card>*,.gal-mark.swap{transition:none;animation:none}}
