:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#282c33;--panel:#23272e;--panel-2:#21252b;--fg:#abb2bf;--dim:#5c6370;--bright:#fff;--line:171, 178, 191;--red:#e06c75;--yellow:#e5c07b;--green:#98c379;--nav-bg:#282c33db;--menu-bg:#282c33f7;--ov:#181a1fb3;--ov-strong:#181a1fbd;--nav-shadow:0 8px 24px #00000059;--card:#21252b66;--card-shot:#21252b8c;--inp-bg:#282c33cc;--scroll-thumb:#454b54;--cursor-ring:#fff6;--noise-op:.05;--glitch-a:#61afefd9;--glitch-b:#e06c75d9}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fafafa;--panel:#fff;--panel-2:#f0f0f1;--fg:#545b67;--dim:#9ca1aa;--bright:#24292e;--line:60, 66, 80;--red:#e45649;--yellow:#c18401;--green:#50a14f;--nav-bg:#fafafae0;--menu-bg:#fafafaf7;--ov:#282c3359;--ov-strong:#282c3366;--nav-shadow:0 8px 24px #23272e1a;--card:#ffffffa8;--card-shot:#f0f1f3b3;--inp-bg:#ffffffd9;--scroll-thumb:#c6c9ce;--cursor-ring:#282c3359;--noise-op:.035;--glitch-a:#4078f2bf;--glitch-b:#e45649bf}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-x:hidden}::selection{background:color-mix(in oklab, var(--ac,#c778dd) 35%, transparent)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--panel-2)}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:2px solid var(--panel-2);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--ac,#c778dd)}a{color:var(--ac,#c778dd)}a:hover{color:var(--bright)}button{cursor:pointer;background:0 0;border:none}button,input,textarea{font:inherit;color:inherit}input::placeholder,textarea::placeholder{color:var(--dim)}:focus-visible{outline:1px dashed var(--ac,#c778dd);outline-offset:3px}a:hover [data-nl-t]{color:var(--bright)!important}@keyframes blink{0%,55%{opacity:1}56%,to{opacity:0}}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes mqJitter{0%{transform:skew(-9deg)translateY(-2px)}30%{transform:skew(6deg)translate(2px)}60%{transform:skew(-3deg)translateY(1px)}85%{transform:translate(-1px)skew(1deg)}to{transform:none}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(18px)scale(.965)}to{opacity:1;transform:none}}@keyframes menuIn{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@keyframes wipeIn{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes riseIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes spin360{to{rotate:360deg}}@keyframes pulseSq{0%{box-shadow:0 0 0 0 color-mix(in oklab, var(--ac,#c778dd) 45%, transparent)}70%{box-shadow:0 0 0 9px #0000}to{box-shadow:0 0 #0000}}.acc{color:var(--ac,#c778dd)}.white{color:var(--bright)}.ok{color:var(--green)}.site{background:var(--bg);min-height:100vh;color:var(--fg);font-family:Fira Code,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:15px;line-height:1.6;position:relative;overflow-x:hidden}@media (hover:hover) and (pointer:fine){[data-cfx="1"],[data-cfx="1"] a,[data-cfx="1"] button,[data-cfx="1"] input,[data-cfx="1"] textarea{cursor:none}}.skip{z-index:1000;background:var(--panel);border:1px solid var(--ac,#c778dd);color:var(--bright);padding:9px 14px;font-size:13px;text-decoration:none;transition:top .25s;position:fixed;top:-64px;left:18px}.skip:focus{top:18px}.boot{z-index:600;background:var(--panel-2);justify-content:center;align-items:center;transition:transform .55s cubic-bezier(.7,0,.3,1),opacity .55s;display:flex;position:fixed;inset:0}.boot-lines{min-width:300px;font-size:13px;line-height:2.1}.boot-lines [data-bl]{opacity:0}.boot-caret{background:var(--ac,#c778dd);vertical-align:-2px;width:9px;height:15px;animation:1s step-end infinite blink;display:inline-block}.bg{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg-grid{background-image:linear-gradient(rgba(var(--line), .05) 1px, transparent 1px), linear-gradient(90deg, rgba(var(--line), .05) 1px, transparent 1px);background-size:56px 56px;position:absolute;inset:-80px}.bg-noise{opacity:var(--noise-op);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");position:absolute;inset:0}.bg-spot{background:radial-gradient(circle closest-side, color-mix(in oklab, var(--ac,#c778dd) 9%, transparent), transparent);opacity:0;border-radius:50%;width:720px;height:720px;transition:opacity .6s;position:absolute;top:0;left:0}.progress{background:var(--ac,#c778dd);z-index:400;width:0%;height:2px;box-shadow:0 0 8px var(--ac,#c778dd);position:fixed;top:0;left:0}.cursor-trail{z-index:998;pointer-events:none;opacity:0;border-radius:50%;width:8px;height:8px;position:fixed;top:0;left:0}.cursor-trail--a{background:var(--glitch-a)}.cursor-trail--b{background:var(--glitch-b)}.cursor-dot{background:var(--ac,#c778dd);outline:1px solid var(--cursor-ring);z-index:999;pointer-events:none;opacity:0;width:10px;height:10px;box-shadow:0 0 14px color-mix(in oklab, var(--ac,#c778dd) 75%, transparent);border-radius:50%;transition:opacity .3s;position:fixed;top:0;left:0}.social-rail{z-index:50;flex-direction:column;align-items:center;gap:12px;display:flex;position:fixed;top:0;left:26px}.rail-line{background:rgba(var(--line), .4);width:1px;height:176px}.rail-link{color:var(--fg);transition:color .2s,transform .2s;display:flex}.rail-link:hover{color:var(--bright);transform:translateY(-2px)}.nav{z-index:100;background:var(--nav-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid rgba(var(--line), .14);justify-content:space-between;align-items:center;padding:22px 56px;transition:padding .3s,box-shadow .3s;display:flex;position:fixed;top:0;left:0;right:0}.nav--raised{z-index:260}.logo{color:var(--bright);align-items:center;gap:10px;text-decoration:none;display:flex}.logo-mark{width:19px;height:19px;display:inline-block;position:relative}.logo-sq1{border:1.6px solid var(--bright);width:11px;height:11px;position:absolute;top:5px;left:0}.logo-sq2{border:1.6px solid var(--ac,#c778dd);width:11px;height:11px;position:absolute;top:0;left:7px}.logo-text{color:var(--bright);letter-spacing:.02em;font-size:16px;font-weight:700}.logo-cursor{color:var(--ac,#c778dd);animation:1.1s step-end infinite blink}.nav-right{align-items:center;gap:16px;display:flex}.nav-links{align-items:center;gap:30px;display:flex}.nav-link{font-size:14px;text-decoration:none}.nl{color:var(--fg);transition:color .2s}.ctrlk-btn{border:1px solid rgba(var(--line), .35);color:var(--fg);background:0 0;align-items:center;gap:7px;padding:6px 12px;font-size:12px;transition:color .2s,border-color .2s;display:flex}.ctrlk-btn:hover{color:var(--bright);border-color:var(--ac,#c778dd)}.theme-btn{border:1px solid rgba(var(--line), .35);width:34px;height:30px;color:var(--fg);background:0 0;justify-content:center;align-items:center;transition:color .2s,border-color .2s,box-shadow .2s;display:flex}.theme-btn:hover{color:var(--ac,#c778dd);border-color:var(--ac,#c778dd);box-shadow:0 0 12px color-mix(in oklab, var(--ac,#c778dd) 35%, transparent)}.burger{color:var(--bright);background:0 0;border:none;align-items:center;padding:4px 8px;font-size:24px;line-height:1;display:none}.mmenu{z-index:250;background:var(--menu-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-direction:column;justify-content:center;padding:0 44px;animation:.25s fadeIn;display:flex;position:fixed;inset:0}.mmenu-links{flex-direction:column;gap:26px;animation:.35s menuIn;display:flex}.mmenu-link{color:var(--bright);font-size:26px;text-decoration:none}.mmenu-social{color:var(--fg);gap:18px;margin-top:52px;font-size:13px;animation:.45s menuIn;display:flex}.mmenu-social a{color:var(--fg)}.main{z-index:1;max-width:1160px;margin:0 auto;padding:0 56px;position:relative}.hero{grid-template-columns:1.05fr .95fr;align-items:center;gap:40px;min-height:100vh;padding-top:120px;scroll-margin-top:90px;display:grid}.hero-title{color:var(--bright);letter-spacing:-.01em;text-wrap:pretty;font-size:clamp(26px,3.4vw,34px);font-weight:600;line-height:1.5}.hero-title [data-gl]{color:var(--ac,#c778dd);display:inline-block}.hero-term{align-items:center;gap:8px;margin-top:18px;font-size:15px;display:flex}.caret{background:var(--ac,#c778dd);width:9px;height:17px;animation:1s step-end infinite blink;display:inline-block}.hero-desc{max-width:480px;color:var(--fg);text-wrap:pretty;margin-top:24px;font-size:15px;line-height:1.8}.hero-cta{flex-wrap:wrap;align-items:center;gap:22px;margin-top:30px;display:flex}.btn-acc{color:var(--bright);border:1px solid var(--ac,#c778dd);padding:11px 18px;font-size:14px;font-weight:500;text-decoration:none;transition:background .2s,box-shadow .2s}.btn-acc:hover{background:color-mix(in oklab, var(--ac,#c778dd) 16%, transparent);box-shadow:4px 4px 0 color-mix(in oklab, var(--ac,#c778dd) 30%, transparent)}.link-plain{color:var(--fg);font-size:14px;text-decoration:none;transition:color .2s}.link-plain:hover{color:var(--bright)}.hero-right{justify-self:end;width:100%;max-width:420px;position:relative}.hero-photo{z-index:1;object-fit:cover;object-position:50% 38%;border:1px solid rgba(var(--line), .3);width:100%;height:440px;animation:1.1s cubic-bezier(.22,1,.36,1) .3s both wipeIn;display:block;position:relative}.hero-chip{z-index:3;border:1px solid rgba(var(--line), .35);background:var(--bg);border-top:none;align-items:center;gap:10px;padding:9px 12px;font-size:13px;animation:.7s 1.1s both riseIn;display:flex;position:relative}.chip-sq{background:color-mix(in oklab, var(--ac,#c778dd) 55%, transparent);border:1px solid var(--ac,#c778dd);flex:none;width:12px;height:12px;animation:2.6s ease-out 2s infinite pulseSq}.quote-sec{flex-direction:column;align-items:center;padding:40px 0 10px;display:flex}.quote-wrap{width:100%;max-width:720px;position:relative}.quote-inner{border:1px solid rgba(var(--line), .4);padding:26px 32px;position:relative}.quote-mark{background:var(--bg);color:rgba(var(--line), .7);padding:0 10px;font-size:26px;font-weight:700;line-height:1;position:absolute}.quote-mark--open{top:-15px;left:22px}.quote-mark--close{bottom:-13px;right:22px}.quote-text{color:var(--bright);text-align:center;text-wrap:pretty;font-size:clamp(16px,2.2vw,22px);font-weight:500}.quote-author-row{justify-content:flex-end;display:flex}.quote-author{border:1px solid rgba(var(--line), .4);color:var(--bright);border-top:none;padding:12px 22px;font-size:15px}.marquee{border-top:1px solid rgba(var(--line), .35);border-bottom:1px solid rgba(var(--line), .35);background:rgba(var(--line), .04);width:100vw;margin-top:72px;margin-left:calc(50% - 50vw);padding:26px 0 20px;position:relative}.marquee:after{content:"";pointer-events:none;background:repeating-linear-gradient(0deg, rgba(var(--line), .07) 0 1px, transparent 1px 4px);opacity:.45;position:absolute;inset:0}.mq-label{z-index:2;background:var(--bg);white-space:nowrap;color:var(--dim);letter-spacing:.14em;padding:0 14px;font-size:13px;line-height:1.45;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.mq-row{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.mq-row--ghost{margin-top:4px}.mq-track{white-space:nowrap;width:max-content;animation:marquee var(--mq-dur,52s) linear infinite;display:flex}.mq-track--rev{animation-direction:reverse}.mq-row:hover .mq-track{animation-play-state:paused}.mq-seg,.mq-cell{align-items:center;display:inline-flex}.mq-item{color:var(--bright);letter-spacing:.01em;padding:2px 0;font-size:clamp(30px,4.6vw,54px);font-weight:700;line-height:1.3;transition:color .22s,text-shadow .22s;display:inline-block}.mq-item:hover,.mq-item.is-glitch{color:var(--ac,#c778dd);text-shadow:3px 0 var(--glitch-a), -3px 0 var(--glitch-b)}.mq-item.is-glitch{animation:.46s step-end both mqJitter}.mq-dot{opacity:.9;margin:0 clamp(18px,2.4vw,34px);font-size:clamp(12px,1.4vw,18px)}.mq-row--ghost .mq-item{color:#0000;-webkit-text-stroke:1px rgba(var(--line), .65);font-size:clamp(20px,3vw,34px);font-weight:600}.mq-row--ghost .mq-item:hover,.mq-row--ghost .mq-item.is-glitch{color:var(--ac,#c778dd);-webkit-text-stroke-color:transparent}.mq-row--ghost .mq-dot{opacity:.5}@media (prefers-reduced-motion:reduce){.mq-track{animation:none}}.sec{padding:110px 0 20px;scroll-margin-top:70px}.sec--contacts{padding-bottom:90px}.sec-head{align-items:center;gap:18px;margin-bottom:44px;display:flex}.sec-head--tight{margin-bottom:24px}.sec-title{color:var(--bright);white-space:nowrap;font-size:30px;font-weight:600}.sec-line{background:var(--ac,#c778dd);opacity:.5;flex:1;height:1px}.sec-spacer{flex:1}.view-all{color:var(--fg);white-space:nowrap;background:0 0;border:none;padding:4px 0;font-size:14px;transition:color .2s}.view-all:hover{color:var(--bright)}.proj-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:26px;display:grid}.proj-grid--more{margin-top:26px}.pcard{border:1px solid rgba(var(--line), .3);background:var(--card);flex-direction:column;transition:transform .25s,border-color .25s,box-shadow .25s;display:flex}.pcard:hover{border-color:var(--ac,#c778dd);box-shadow:8px 8px 0 color-mix(in oklab, var(--ac,#c778dd) 18%, transparent)}.pcard--in1{animation:.4s modalIn}.pcard--in2{animation:.5s modalIn}.pcard--in3{animation:.6s modalIn}.pcard-shot{border-bottom:1px solid rgba(var(--line), .3);background:var(--card-shot);background-image:radial-gradient(rgba(var(--line), .14) 1.2px, transparent 1.2px);background-size:16px 16px;justify-content:center;align-items:center;width:100%;height:172px;display:flex;overflow:hidden}.pcard-shot img{object-fit:cover;width:100%;height:100%;transition:transform .9s cubic-bezier(.22,1,.36,1);display:block}.pcard:hover .pcard-shot img{animation:6.5s ease-in-out .9s infinite alternate shotPan;transform:scale(1.28)translateY(6%)}.pcard-shot{position:relative}.pcard-shot:before{content:"";z-index:1;pointer-events:none;opacity:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");position:absolute;inset:0}.pcard:hover .pcard-shot:before{animation:.34s step-end .82s both shotStatic}.pcard-shot:after{content:"";z-index:1;pointer-events:none;opacity:0;background:linear-gradient(180deg, transparent, color-mix(in oklab, var(--ac,#c778dd) 14%, transparent) 55%, rgba(var(--line), .25) 72%, transparent);height:32px;position:absolute;top:-32px;left:0;right:0}.pcard:hover .pcard-shot:after{animation:2.6s linear .9s infinite shotScan}@keyframes shotPan{0%{transform:scale(1.28)translateY(6%)}to{transform:scale(1.28)translateY(-6%)}}@keyframes shotStatic{0%{opacity:0}20%{opacity:.4}45%{opacity:.14}70%{opacity:.42}to{opacity:0}}@keyframes shotScan{0%{opacity:0;transform:translateY(0)}12%{opacity:1}88%{opacity:1}to{opacity:0;transform:translateY(238px)}}.shot-ph{color:var(--dim);letter-spacing:.04em;text-align:center;padding:0 14px;font-size:12px}.pcard-tags{border-bottom:1px solid rgba(var(--line), .3);color:var(--fg);letter-spacing:.02em;padding:8px 14px;font-size:12.5px}.pcard-body{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex}.pcard-titlerow{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.pcard-name{color:var(--bright);font-size:17px;font-weight:600}.pcard-year{color:var(--ac,#c778dd);white-space:nowrap;font-size:11px}.pcard-desc{color:var(--fg);flex:1;font-size:13.5px;line-height:1.65}.pcard-actions{flex-wrap:wrap;gap:10px;display:flex}.btn-case{border:1px solid var(--ac,#c778dd);color:var(--bright);background:0 0;padding:8px 14px;font-size:13px;transition:background .2s}.btn-case:hover{background:color-mix(in oklab, var(--ac,#c778dd) 16%, transparent)}.btn-gh{border:1px solid rgba(var(--line), .4);color:var(--fg);padding:8px 14px;font-size:13px;text-decoration:none;transition:color .2s,border-color .2s}.btn-gh:hover{color:var(--bright);border-color:var(--bright)}.skills-grid{grid-template-columns:.8fr 1.4fr;align-items:start;gap:44px;display:grid}.skills-deco{min-height:300px;position:relative}.skills-cards{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px;display:grid}.skill-box{border:1px solid rgba(var(--line), .35)}.skill-box-title{border-bottom:1px solid rgba(var(--line), .35);color:var(--bright);padding:8px 12px;font-size:14.5px;font-weight:600}.skill-box-body{color:var(--fg);padding:10px 12px;font-size:13.5px;line-height:1.9}.sk-item{margin-right:18px;display:inline-block}@media (hover:hover) and (pointer:fine){[data-chip]{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}}.chip-drag{z-index:5;color:var(--bright);text-shadow:2px 0 var(--glitch-a), -2px 0 var(--glitch-b);position:relative;cursor:grabbing!important}.about-grid{grid-template-columns:1.1fr .9fr;align-items:start;gap:64px;display:grid}.about-text{color:var(--fg);flex-direction:column;gap:18px;font-size:14.5px;line-height:1.85;display:flex}.mini-label{letter-spacing:.18em;text-transform:uppercase;color:var(--ac,#c778dd);font-size:12px}.exploring-label{margin-bottom:12px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid rgba(var(--line), .4);padding:4px 12px;font-size:12.5px}.about-right{position:relative}.stats-grid{z-index:1;grid-template-columns:1fr 1fr;gap:14px;display:grid;position:relative}.stat{border:1px solid rgba(var(--line), .35);padding:18px 16px}.stat-num{color:var(--bright);font-size:26px;font-weight:700}.stat-label{color:var(--fg);margin-top:4px;font-size:11.5px}.now-box{border:1px solid rgba(var(--line), .35);z-index:1;margin-top:14px;padding:16px;position:relative}.now-label{letter-spacing:.18em;text-transform:uppercase;color:var(--ac,#c778dd);font-size:11px}.now-role{color:var(--bright);margin-top:6px;font-size:15px;font-weight:600}.now-org{color:var(--fg);margin-top:2px;font-size:12.5px}.exp-list{flex-direction:column;display:flex}.exp-item{grid-template-columns:180px 1fr;gap:28px;display:grid}.exp-date{color:var(--ac,#c778dd);padding-top:2px;font-size:12.5px}.exp-body{border-left:1px solid rgba(var(--line), .3);padding:0 0 44px 26px;position:relative}.exp-body--last{padding-bottom:8px}.exp-dot{background:var(--bg);border:1.5px solid var(--ac,#c778dd);width:9px;height:9px;position:absolute;top:5px;left:-5px}.exp-dot--fill{background:var(--ac,#c778dd)}.exp-role{color:var(--bright);font-size:16px;font-weight:600}.exp-org{margin-top:2px;font-size:13px}.exp-desc{max-width:640px;color:var(--fg);margin-top:10px;font-size:13.5px;line-height:1.75}.cv-term{background:var(--panel);border:1px solid rgba(var(--line), .35);max-width:720px;box-shadow:10px 10px 0 color-mix(in oklab, var(--ac,#c778dd) 12%, transparent)}.cv-body{padding:20px 24px 24px}.cv-cmd{font-size:13.5px}.cv-file{flex-wrap:wrap;align-items:baseline;gap:14px;margin-top:12px;display:flex}.cv-name{color:var(--bright);font-size:15px;font-weight:600}.cv-meta{color:var(--dim);font-size:12px}.cv-desc{color:var(--fg);max-width:560px;margin-top:10px;font-size:13.5px;line-height:1.75}.cv-actions{flex-wrap:wrap;align-items:center;gap:22px;margin-top:24px;display:flex}.ai-intro{max-width:560px;color:var(--fg);text-wrap:pretty;margin-bottom:36px;font-size:14px;line-height:1.8}.ai-grid{grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:24px;display:grid}.ai-card{border:1px solid rgba(var(--line), .35);padding:22px;transition:border-color .25s}.ai-card:hover{border-color:var(--ac,#c778dd)}.ai-head{align-items:baseline;gap:10px;display:flex}.ai-name{color:var(--bright);font-size:16px;font-weight:600}.ai-vendor{color:var(--fg);font-size:12px}.ai-tag{color:var(--ac,#c778dd);margin-top:4px;font-size:12.5px}.ai-list{color:var(--fg);flex-direction:column;gap:9px;margin-top:16px;font-size:13.5px;line-height:1.6;display:flex}.ai-li{gap:10px;display:flex}.ai-li .acc{flex:none}.contact-grid{grid-template-columns:1.1fr .9fr;align-items:start;gap:60px;display:grid}.contact-desc{max-width:460px;color:var(--fg);text-wrap:pretty;font-size:14.5px;line-height:1.85}.contact-rows{flex-direction:column;max-width:460px;margin-top:30px;display:flex}.contact-row{border-top:1px solid rgba(var(--line), .22);justify-content:space-between;align-items:baseline;gap:16px;padding:13px 2px;text-decoration:none;transition:background .2s;display:flex}.contact-row:hover{background:color-mix(in oklab, var(--ac,#c778dd) 6%, transparent)}.contact-row--last{border-bottom:1px solid rgba(var(--line), .22)}.contact-key{letter-spacing:.16em;text-transform:uppercase;color:var(--fg);font-size:11.5px}.contact-val{color:var(--bright);font-size:13.5px}.cform{border:1px solid rgba(var(--line), .35);background:var(--card);flex-direction:column;gap:16px;padding:24px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--fg);font-size:12.5px}.inp{background:var(--inp-bg);border:1px solid rgba(var(--line), .3);color:var(--bright);width:100%;padding:10px 12px;font-size:13.5px;transition:border-color .2s}.inp:focus{border-color:var(--ac,#c778dd);outline:none}.inp--bad{border-color:var(--red)}textarea.inp{resize:vertical;min-height:96px}.ferr{color:var(--red);font-size:12px}.btn-send{border:1px solid var(--ac,#c778dd);color:var(--bright);background:0 0;padding:12px;font-size:14px;transition:background .2s,box-shadow .2s}.btn-send:hover{background:color-mix(in oklab, var(--ac,#c778dd) 16%, transparent);box-shadow:4px 4px 0 color-mix(in oklab, var(--ac,#c778dd) 30%, transparent)}.top-btn{z-index:120;background:var(--bg);border:1px solid rgba(var(--line), .4);color:var(--fg);opacity:0;pointer-events:none;padding:9px 14px;font-size:13px;transition:opacity .3s,transform .3s,color .2s,border-color .2s;position:fixed;bottom:26px;right:26px;transform:translateY(12px)}[data-top]:hover{color:var(--bright)!important;border-color:var(--ac,#c778dd)!important}.footer{border-top:1px solid rgba(var(--line), .2);z-index:1;position:relative}.footer-in{max-width:1160px;margin:0 auto;padding:30px 56px 36px}.footer-top{flex-wrap:wrap;justify-content:space-between;gap:32px;display:flex}.footer-id{align-items:center;gap:10px;display:flex}.footer-name{color:var(--bright);font-size:15px;font-weight:700}.footer-mail{color:var(--fg);margin-left:8px;font-size:13px;text-decoration:none}.footer-mail:hover{color:var(--bright)}.footer-tag{color:var(--fg);margin-top:10px;font-size:13px}.footer-media-title{color:var(--bright);margin-bottom:10px;font-size:14px;font-weight:600}.footer-social{gap:14px;display:flex}.footer-social a{color:var(--fg);display:flex}.footer-social a:hover{color:var(--bright)}.sysmon{border:1px dashed rgba(var(--line), .35);color:var(--dim);flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:28px;padding:10px 16px;font-size:12px;display:flex}.sysmon i{color:rgba(var(--line), .6);font-style:normal}.sysmon b{font-weight:600}.sys-dot{background:var(--green);border-radius:50%;width:8px;height:8px;animation:2.2s step-end infinite blink}.footer-copy{text-align:center;color:rgba(var(--line), .65);margin-top:30px;font-size:12.5px}.term-bar{border-bottom:1px solid rgba(var(--line), .25);align-items:center;gap:8px;padding:9px 14px;display:flex}.term-dot{opacity:.85;border-radius:50%;width:10px;height:10px}.term-dot--r{background:var(--red)}.term-dot--y{background:var(--yellow)}.term-dot--g{background:var(--green)}.term-title{text-align:center;color:var(--fg);flex:1;font-size:12px}.term-win{border:1px solid rgba(var(--line), .35);background:var(--panel);max-width:780px;box-shadow:10px 10px 0 color-mix(in oklab, var(--ac,#c778dd) 10%, transparent)}.term-out{height:280px;padding:14px 18px 4px;font-size:13px;line-height:1.75;overflow-y:auto}.tline{white-space:pre-wrap;word-break:break-word;color:var(--fg)}.tline--dim{color:var(--dim)}.tline--ok{color:var(--green)}.tline--err{color:var(--red)}.tline--acc{color:var(--ac,#c778dd)}.term-in{align-items:center;gap:10px;padding:10px 18px 16px;display:flex}.term-prompt{color:var(--ac,#c778dd);white-space:nowrap;font-size:13px}.term-input{min-width:0;color:var(--bright);caret-color:var(--ac,#c778dd);background:0 0;border:none;outline:none;flex:1;font-size:13px}.pal-ov{z-index:500;background:var(--ov);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);justify-content:center;align-items:flex-start;padding:13vh 20px 20px;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.pal{background:var(--panel);border:1px solid rgba(var(--line), .35);width:min(620px,100%);box-shadow:12px 12px 0 color-mix(in oklab, var(--ac,#c778dd) 14%, transparent);animation:.28s cubic-bezier(.22,1,.36,1) modalIn}.pal-input-row{border-bottom:1px solid rgba(var(--line), .25);align-items:center;gap:10px;padding:13px 16px;display:flex}.pal-input{color:var(--bright);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:14px}.pal-caret{background:var(--ac,#c778dd);flex:none;width:8px;height:16px;animation:1s step-end infinite blink;display:inline-block}.pal-list{max-height:320px;padding:6px 0;overflow:auto}.pal-item{text-align:left;background:0 0;border:none;border-left:2px solid #0000;justify-content:space-between;align-items:baseline;gap:14px;width:100%;padding:9px 16px;font-size:13.5px;transition:background .15s;display:flex}.pal-item:hover{background:color-mix(in oklab, var(--ac,#c778dd) 8%, transparent)}.pal-item--sel{background:color-mix(in oklab, var(--ac,#c778dd) 12%, transparent);border-left:2px solid var(--ac,#c778dd)}.pal-cmd{color:var(--bright)}.pal-desc{color:var(--dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.pal-empty{color:var(--red);padding:12px 16px;font-size:13px}.pal-foot{border-top:1px solid rgba(var(--line), .25);color:var(--dim);gap:18px;padding:9px 16px;font-size:11.5px;display:flex}.toast{z-index:700;background:var(--panel);border:1px solid var(--ac,#c778dd);color:var(--bright);box-shadow:6px 6px 0 color-mix(in oklab, var(--ac,#c778dd) 18%, transparent);white-space:nowrap;text-overflow:ellipsis;max-width:92vw;padding:10px 18px;font-size:13px;animation:.3s riseIn;position:fixed;bottom:28px;left:50%;overflow:hidden;transform:translate(-50%)}.modal-ov{z-index:300;background:var(--ov-strong);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);justify-content:center;align-items:center;padding:24px;animation:.22s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid rgba(var(--line), .35);width:min(860px,100%);max-height:86vh;box-shadow:14px 14px 0 color-mix(in oklab, var(--ac,#c778dd) 14%, transparent);flex-direction:column;animation:.38s cubic-bezier(.22,1,.36,1) modalIn;display:flex}.modal .term-bar{flex:none;padding:10px 14px}.modal .term-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.modal-x{color:var(--fg);background:0 0;border:none;padding:2px 6px;font-size:15px;transition:color .2s}.modal-x:hover{color:var(--bright)}.modal-body{padding:26px 30px 30px;overflow:auto}.modal-toprow{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.modal-name{color:var(--bright);font-size:20px;font-weight:700}.badge{border:1px solid var(--ac,#c778dd);color:var(--ac,#c778dd);padding:2px 10px;font-size:11px}.modal-type{color:var(--fg);font-size:12px}.modal-meta{flex-wrap:wrap;gap:34px;margin-top:12px;display:flex}.meta-key{letter-spacing:.14em;text-transform:uppercase;color:var(--dim);font-size:11px}.meta-val{color:var(--fg);font-size:13px}.cmdline{margin-top:24px;font-size:13px}.cmdline--first{margin-top:26px}.cmd-arg{color:var(--fg)}.modal-p{color:var(--fg);text-wrap:pretty;margin-top:8px;font-size:14px;line-height:1.8}.metrics{flex-wrap:wrap;gap:14px;margin-top:12px;display:flex}.metric{border:1px solid rgba(var(--line), .35);min-width:140px;padding:12px 18px}.metric-num{color:var(--ac,#c778dd);font-size:21px;font-weight:700}.metric-label{color:var(--fg);margin-top:3px;font-size:11.5px}.modal-list{flex-direction:column;gap:9px;margin-top:10px;display:flex}.modal-li{color:var(--fg);gap:10px;font-size:13.5px;line-height:1.7;display:flex}.modal-li .acc{flex:none}.modal-tags{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.mtag{border:1px solid rgba(var(--line), .35);color:var(--fg);padding:3px 10px;font-size:12px}.modal-actions{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.btn-src{border:1px solid var(--ac,#c778dd);color:var(--bright);padding:10px 18px;font-size:13.5px;text-decoration:none;transition:background .2s}.btn-src:hover{background:color-mix(in oklab, var(--ac,#c778dd) 16%, transparent)}.btn-close{border:1px solid rgba(var(--line), .4);color:var(--fg);background:0 0;padding:10px 18px;font-size:13.5px;transition:color .2s,border-color .2s}.btn-close:hover{color:var(--bright);border-color:var(--bright)}.glitch-veil{z-index:900;pointer-events:none;position:fixed;inset:0}.glitch-veil>*{display:block;position:absolute;inset:0}.glitch-veil .gv-a{-webkit-backdrop-filter:invert()hue-rotate(18deg);backdrop-filter:invert()hue-rotate(18deg);animation:.62s step-end both glitchSliceA}.glitch-veil .gv-b{-webkit-backdrop-filter:hue-rotate(140deg)saturate(2.4)contrast(1.15);backdrop-filter:hue-rotate(140deg)saturate(2.4)contrast(1.15);animation:.62s step-end both glitchSliceB}.glitch-veil .gv-static{opacity:0;background:repeating-linear-gradient(0deg, color-mix(in oklab, var(--ac,#c778dd) 8%, transparent) 0 1px, transparent 1px 3px), url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");animation:.62s step-end both glitchStatic}.is-glitching .main,.is-glitching .nav,.is-glitching .footer{animation:.62s step-end both glitchJitter}@keyframes glitchSliceA{0%{clip-path:inset(6% 0 84%)}12%{clip-path:inset(58% 0 30%)}24%{clip-path:inset(28% 0 62%)}36%{clip-path:inset(0)}46%{clip-path:inset(82% 0 8%)}60%{clip-path:inset(14% 0 76%)}74%{clip-path:inset(44% 0)}88%{clip-path:inset(68% 0 22%)}to{clip-path:inset(50% 0)}}@keyframes glitchSliceB{0%{clip-path:inset(74% 0 16%)}16%{clip-path:inset(20% 0 72%)}32%{clip-path:inset(88% 0 4%)}48%{clip-path:inset(34% 0 56%)}64%{clip-path:inset(8% 0 86%)}80%{clip-path:inset(60% 0 32%)}to{clip-path:inset(50% 0)}}@keyframes glitchStatic{0%{opacity:0}8%{opacity:.5}18%{opacity:.18}30%{opacity:.6}42%{opacity:.28}54%{opacity:.55}70%{opacity:.22}84%{opacity:.4}to{opacity:0}}.glitch-veil--melt .gv-a,.glitch-veil--melt .gv-b,.glitch-veil--melt .gv-static,.is-melting .main,.is-melting .nav,.is-melting .footer{animation-iteration-count:2}.glitch-veil--mini .gv-a{animation:.3s step-end both glitchSliceMini}.glitch-veil--mini .gv-static{animation-duration:.3s}@keyframes glitchSliceMini{0%{clip-path:inset(8% 0 80%)}25%{clip-path:inset(62% 0 24%)}50%{clip-path:inset(30% 0 58%)}75%{clip-path:inset(78% 0 10%)}to{clip-path:inset(50% 0)}}.tour-hud{z-index:650;white-space:nowrap;background:var(--menu-bg);border:1px solid rgba(var(--line), .45);box-shadow:var(--nav-shadow);color:var(--fg);align-items:center;gap:12px;padding:10px 16px;font-size:13px;animation:.3s riseIn;display:flex;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.tour-hud .tour-run{font-size:10px}.tour-hud .tour-path{color:var(--bright);font-weight:600}.tour-hud .tour-idx{color:var(--dim)}.tour-hud .tour-exit{color:var(--dim);border-left:1px solid rgba(var(--line), .3);padding-left:12px;font-size:11.5px}@media (width<=560px){.tour-hud .tour-exit{display:none}}.tour-btn--on{color:var(--ac,#c778dd);border-color:var(--ac,#c778dd);animation:1.8s infinite pulseSq}@keyframes glitchJitter{0%{transform:translate(0)}10%{transform:translate(-7px)skew(-1.2deg)}22%{transform:translate(5px)}34%{transform:translate(-3px)skew(.8deg)}48%{transform:translate(6px)}62%{transform:translate(-5px)skew(-.6deg)}78%{transform:translate(2px)}to{transform:none}}@media (width<=920px){.social-rail{display:none}.hero{grid-template-columns:1fr;gap:56px}.about-grid,.skills-grid{grid-template-columns:1fr}.skills-deco{display:none}.contact-grid,.ai-grid{grid-template-columns:1fr}}@media (width<=820px){.nav-links{display:none}.burger{display:flex}.nav-right{gap:12px}.exp-item{grid-template-columns:1fr;gap:8px}.pad-x{padding-left:22px;padding-right:22px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}html{scroll-behavior:auto}}
