@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--accent:#1f4590;--accent-rgb:31 69 144;--accent-soft:#1f459024;--gradient-accent:white;--bg:#fff;--text:#1d1d1f;--text-secondary:#474747;--dock-bg:#ffffff1f;--dock-sheen:#ffffff59;--dock-rim:#fffffff2;--dock-rim-soft:#ffffff80;--dock-glow:#ffffff73;--dock-hairline:#00000014;--dock-glass-filter:blur(2px) saturate(180%) brightness(1.06);--skill-item-bg:#ffffffeb;--skill-item-color:#1d1d1f;--projects-link-button-color:#fff;--projects-link-button-bg:#272727;--projects-link-button-hover-bg:#0b0f13;--projects-phone-ui-border:10px solid #000;--bio-node-border:#0000002e;--clients-shine:#1f45901a;--hero-role-shine:#1f459024;--skill-card-shine:#1f45901f}[data-theme=dark]{--accent:#4788c4;--accent-rgb:71 136 196;--accent-soft:#4788c433;--gradient-accent:linear-gradient(120deg, #7ea6ff, #b18cff 55%, #6fd8f5);--bg:#0b0b0f;--text:#f5f5f7;--text-secondary:#cdcccc;--dock-bg:#28282e38;--dock-sheen:#ffffff1a;--dock-rim:#ffffff80;--dock-rim-soft:#ffffff2e;--dock-glow:#ffffff14;--dock-hairline:#00000080;--dock-glass-filter:blur(2px) saturate(160%) brightness(.92);--skill-item-bg:#ffffff0d;--skill-item-color:#cbd5e1;--projects-link-button-color:#000;--projects-link-button-bg:#dfdfdf;--projects-link-button-hover-bg:#b8b7b7;--projects-phone-ui-border:10px solid #212121;--bio-node-border:#ffffff38;--clients-shine:#ffffff1a;--hero-role-shine:#ffffff29;--skill-card-shine:#ffffff1f}html{visibility:hidden;transition:background-color .3s,color .3s}html[data-theme]{visibility:visible}*{box-sizing:border-box}body{color:var(--text);background:var(--bg);margin:0;font-family:Inter Variable,sans-serif;font-size:1rem;line-height:1.5;transition:all .3s}.global-section-title{letter-spacing:.03em;margin-top:30px;margin-bottom:1.2rem;font-size:clamp(1rem,5vw,1.7rem);font-weight:700}@media (width<=768px){html{font-size:.8rem}}.hero-container{flex-direction:column;gap:14px;margin-top:2px;display:flex}.hero-top{align-items:center;gap:35px;display:flex}@property --gx{syntax:"<percentage>";inherits:true;initial-value:30%}@property --gy{syntax:"<percentage>";inherits:true;initial-value:22%}.hero-avatar{--avatar-size:130px;--avatar-halo:transparent;--avatar-rim:#ffffffbf;--avatar-rim-soft:#ffffff4d;--avatar-glow:#ffffff1a;--avatar-edge:#0000001a;--avatar-shadow:0 10px 24px #11182729, 0 2px 6px #11182714;isolation:isolate;width:var(--avatar-size);height:var(--avatar-size);flex:none;transition:--gx .7s cubic-bezier(.16,1,.3,1),--gy .7s cubic-bezier(.16,1,.3,1);position:relative}[data-theme=dark] .hero-avatar{--avatar-halo:rgb(var(--accent-rgb) / .35);--avatar-rim:var(--dock-rim);--avatar-rim-soft:var(--dock-rim-soft);--avatar-glow:var(--dock-glow);--avatar-edge:var(--dock-hairline);--avatar-shadow:0 12px 28px #0000002e, 0 3px 8px #00000014}.hero-avatar:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(closest-side, var(--avatar-halo) 40%, transparent 72%);border-radius:50%;animation:8s ease-in-out infinite alternate hero-halo;position:absolute;inset:-35%}@keyframes hero-halo{0%{translate:-6px -4px;scale:.94}to{translate:6px 4px;scale:1.06}}.hero-avatar-lens{width:100%;height:100%;box-shadow:var(--avatar-shadow);transform:perspective(520px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));border-radius:50%;transition:transform .7s cubic-bezier(.16,1,.3,1),scale .7s cubic-bezier(.16,1,.3,1);position:relative}.hero-img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.hero-avatar-lens:before{content:"";border-radius:inherit;pointer-events:none;box-shadow:inset 0 1px 1px var(--avatar-rim), inset 0 -1px 1px var(--avatar-rim-soft), inset 0 0 14px var(--avatar-glow), 0 0 0 .5px var(--avatar-edge);position:absolute;inset:0}.hero-avatar-lens:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(135deg, var(--avatar-rim) 0%, transparent 35%, transparent 65%, var(--avatar-rim-soft) 100%);-webkit-mask-composite:xor;padding:2px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.hero-avatar-glare{border-radius:inherit;pointer-events:none;background:radial-gradient(circle at var(--gx) var(--gy), #ffffff52, #ffffff0f 35%, transparent 60%);opacity:.55;transition:opacity .4s;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.hero-avatar:hover .hero-avatar-lens{transition-duration:.25s;scale:1.04}.hero-avatar:hover .hero-avatar-glare{opacity:1}}.hero-info{flex-direction:column;gap:1.5rem;display:flex}.hero-name{letter-spacing:-.01em;margin:0;font-size:1.9rem;font-weight:700;line-height:1.2}.hero-roles{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.hero-role{isolation:isolate;white-space:nowrap;color:var(--text);background:linear-gradient(180deg, var(--dock-sheen) 0%, transparent 55%), rgb(var(--accent-rgb) / .05), var(--dock-bg);-webkit-backdrop-filter:var(--dock-glass-filter);backdrop-filter:var(--dock-glass-filter);box-shadow:inset 0 1px 1px var(--dock-rim), inset 0 -1px 1px var(--dock-rim-soft), inset 0 0 10px var(--dock-glow), 0 0 0 .5px var(--dock-hairline), 0 6px 16px #0000001a, 0 1px 3px #0000000f;border-radius:999px;padding:7px 16px;font-size:.9rem;font-weight:600;position:relative;overflow:hidden}.hero-role:before{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg, var(--dock-rim) 0%, transparent 30%, transparent 70%, var(--dock-rim-soft) 100%);-webkit-mask-composite:xor;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.hero-role:after{content:"";z-index:-1;pointer-events:none;background:linear-gradient(105deg, transparent 30%, var(--hero-role-shine) 50%, transparent 70%);position:absolute;inset:0;translate:-100%}.hero-desc{color:var(--text-secondary)}.hero-avatar{animation:.8s cubic-bezier(.16,1,.3,1) backwards hero-photo-in}.hero-name{animation:.7s cubic-bezier(.16,1,.3,1) .1s backwards hero-rise}.hero-role{animation:hero-rise .7s cubic-bezier(.16, 1, .3, 1) calc(.18s + var(--i,0) * 80ms) backwards}.hero-role:after{animation:hero-role-shine 1s cubic-bezier(.45, 0, .25, 1) calc(.75s + var(--i,0) * .12s) forwards}@keyframes hero-role-shine{to{translate:100%}}.hero-desc{animation:.7s cubic-bezier(.16,1,.3,1) .3s backwards hero-rise}@keyframes hero-photo-in{0%{opacity:0;scale:.92}}@keyframes hero-rise{0%{opacity:0;filter:blur(6px);translate:0 14px}}@media (prefers-reduced-motion:reduce){.hero-avatar,.hero-avatar:before,.hero-name,.hero-role,.hero-role:after,.hero-desc{animation:none}.hero-avatar-lens,.hero-avatar:hover .hero-avatar-lens{transform:scale(1)}.hero-avatar-glare{--gx:30%;--gy:22%}}@media (width<=768px){.hero-container{gap:3px}.hero-top{text-align:center;flex-direction:column;align-items:center;gap:15px}.hero-info{align-items:center}.hero-roles{justify-content:center}.hero-avatar{--avatar-size:110px}}@media (width<=480px){.hero-container{gap:10px}.hero-roles{grid-template-columns:max-content;justify-content:center;display:grid}}.bio-items{flex-direction:column;gap:2px;padding-left:18px;display:flex;position:relative}.bio-item{border-radius:var(--radius-sm);transition:background .25s var(--ease-soft), transform .25s var(--ease);animation:bio-in .6s cubic-bezier(.16, 1, .3, 1) calc(.4s + var(--i,0) * 90ms) backwards;align-items:baseline;padding:4px 8px 4px 0;line-height:1.6;display:flex;position:relative}@keyframes bio-in{0%{opacity:0;translate:-10px}}.bio-item:not(:last-child):before{content:"";background:var(--bio-node-border);border-radius:999px;width:2px;position:absolute;top:calc(.75em + 4px);bottom:calc(-.75em - 6px);left:-15px}.bio-node{background:var(--bg);border:2px solid var(--bio-node-border);width:8px;height:8px;transition:border-color .25s var(--ease-soft), background .25s var(--ease-soft), box-shadow .25s var(--ease-soft);border-radius:50%;position:absolute;top:.75em;left:-18px}.bio-item:nth-last-child(-n+2) .bio-node{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.bio-year{font-variant-numeric:tabular-nums;letter-spacing:-.01em;flex:none;min-width:155px;font-size:.9rem;font-weight:700}.bio-text{color:var(--text-secondary)}@media (width<=768px){.bio-year{min-width:130px}}@media (prefers-reduced-motion:reduce){.bio-item{animation:none}}@media (width<=480px){.bio-item{flex-direction:column;gap:0;padding-bottom:8px}.bio-year{color:var(--accent)}}.dock-wrapper{margin-bottom:5px;position:fixed;bottom:15px;left:50%;transform:translate(-50%)}.dock{background:linear-gradient(180deg, var(--dock-sheen) 0%, transparent 55%), var(--dock-bg);-webkit-backdrop-filter:var(--dock-glass-filter);box-shadow:inset 0 1px 1px var(--dock-rim), inset 0 -1px 1px var(--dock-rim-soft), inset 0 0 14px var(--dock-glow), 0 0 0 .5px var(--dock-hairline), 0 10px 28px #00000024, 0 2px 6px #0000000f;border-radius:24px;gap:20px;padding:0 10px;display:flex;position:relative}.dock.refract{-webkit-backdrop-filter:url(#dock-glass) var(--dock-glass-filter);backdrop-filter:url(#dock-glass) var(--dock-glass-filter)}.dock:before{content:"";z-index:-1;border-radius:inherit;background:linear-gradient(135deg, var(--dock-rim) 0%, transparent 30%, transparent 70%, var(--dock-rim-soft) 100%);-webkit-mask-composite:xor;pointer-events:none;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.dock-glass-defs{width:0;height:0;position:absolute}.dock-item{cursor:pointer;background:0 0;border:none;border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;transition:transform .25s cubic-bezier(.2,.8,.2,1);display:flex;position:relative;overflow:hidden}.dock-item:hover{transform:scale(1.35)translateY(-8px)}.icon{z-index:5;color:#141414d9;justify-content:center;align-items:center;font-size:13px;transition:color .3s;display:flex;position:relative}.vinyl-wrapper{width:70%;height:70%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.vinyl{background:radial-gradient(circle,#2a2a2a 0%,#1a1a1a 45%,#0d0d0d 100%);border-radius:50%;width:100%;height:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 10px #0009,inset 0 0 20px #ffffff0d}.vinyl:before{content:"";opacity:.7;background:repeating-radial-gradient(circle,#ffffff0d 0 1px,#0000 2px 4px);border-radius:50%;position:absolute;inset:0}.vinyl-label{background:radial-gradient(circle,#555,#222);border-radius:50%;width:22%;height:22%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.vinyl-wrapper.spin{animation:2.5s linear infinite spin}@keyframes spin{0%{transform:translate(-50%,-50%)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)}}.vinyl:after{content:"";opacity:.6;background:linear-gradient(120deg,#0000 40%,#ffffff64 50%,#0000 60%);border-radius:50%;position:absolute;inset:0}@media (width<=768px){.dock-wrapper{bottom:7px}.dock{transform-origin:50% 100%;transition:transform .35s cubic-bezier(.2,.8,.2,1)}.dock.compact{transform:scale(.78)}}@media (hover:none) and (pointer:coarse){.dock-item:active{transform:scale(1.15)}.dock-item:hover{transform:none}}.skill-wrapper{--skill-fade-width:96px;isolation:isolate;align-items:center;display:flex;position:relative;overflow:hidden}.skill-halo{z-index:-1;pointer-events:none;background:radial-gradient(closest-side, rgb(var(--accent-rgb) / .28), transparent 75%);width:min(520px,70%);transition:opacity 1s;animation:10s ease-in-out infinite alternate skill-halo;position:absolute;top:0;bottom:0;left:15%}@keyframes skill-halo{0%{translate:-30px -8px;scale:.92}to{translate:50px 8px;scale:1.08}}.skill-wrapper:before,.skill-wrapper:after{content:"";width:var(--skill-fade-width);z-index:5;pointer-events:none;opacity:0;background:var(--bg);-webkit-backdrop-filter:blur(5px);transition:opacity .35s;position:absolute;top:0;bottom:0}.skill-wrapper:before{left:0;-webkit-mask-image:linear-gradient(270deg,#0000 0%,#0000008c 45%,#000 100%);mask-image:linear-gradient(270deg,#0000 0%,#0000008c 45%,#000 100%)}.skill-wrapper:after{right:0;-webkit-mask-image:linear-gradient(90deg,#0000 0%,#0000008c 45%,#000 100%);mask-image:linear-gradient(90deg,#0000 0%,#0000008c 45%,#000 100%)}.skill-wrapper.fade-left:before,.skill-wrapper.fade-right:after{opacity:1}.skill-scroll{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;box-sizing:border-box;gap:16px;padding:10px 7px 18px;display:flex;overflow-x:auto}.skill-scroll::-webkit-scrollbar{display:none}.skill-card{--skill-card-drop:0 6px 12px #0000001a, 0 1px 3px #0000000f;isolation:isolate;background:linear-gradient(180deg, var(--dock-sheen) 0%, transparent 55%), linear-gradient(135deg, rgb(var(--accent-rgb) / .06), transparent 50%), var(--dock-bg);-webkit-backdrop-filter:blur(18px)saturate(160%);backdrop-filter:blur(18px)saturate(160%);height:250px;box-shadow:inset 0 1px 1px var(--dock-rim), inset 0 -1px 1px var(--dock-rim-soft), inset 0 0 14px var(--dock-glow), 0 0 0 .5px var(--dock-hairline), var(--skill-card-drop);border-radius:18px;flex-direction:column;flex:0 0 280px;justify-content:flex-start;gap:22px;padding:15px;transition:transform .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.skill-card:before{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg, var(--dock-rim) 0%, transparent 30%, transparent 70%, var(--dock-rim-soft) 100%);-webkit-mask-composite:xor;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.skill-card:after{content:"";z-index:-1;pointer-events:none;background:linear-gradient(105deg, transparent 30%, var(--skill-card-shine) 50%, transparent 70%);position:absolute;inset:0;translate:-100%}.skill-card:hover{--skill-card-drop:0 8px 12px #00000024, 0 2px 4px #0000000f;transform:translateY(-2.5px)}.skill-header h3{margin:0;font-size:1.1rem;font-weight:700}.skill-header p{color:var(--text-secondary);margin:6px 0 0;font-size:.9rem}.skill-items{flex-flow:wrap;gap:10px;display:flex}.skill-item{width:fit-content;color:var(--skill-item-color);--skill-item-drop:0 2px 6px #00000014;background:linear-gradient(180deg, var(--dock-sheen), transparent 70%), var(--skill-item-bg);box-shadow:inset 0 1px 0 var(--dock-rim-soft), 0 0 0 .5px var(--dock-hairline), var(--skill-item-drop);border-radius:6px;align-items:center;gap:10px;padding:6px 10px;font-size:.8rem;transition:transform .2s,box-shadow .2s;display:flex}.skill-item:hover{--skill-item-drop:0 5px 12px #00000024;transform:translateY(-2px)}.skill-icon{object-fit:contain;width:20px;height:20px}.skill-scroll-btn{--btn-size:42px;--btn-inset:10px;--btn-bg:#ffffffc7;--btn-bg-hover:#fffffff7;--btn-fg:#1d1d1f;--btn-ring:#0000001a;width:var(--btn-size);height:var(--btn-size);border:1px solid var(--btn-ring);font:inherit;background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;z-index:10;-webkit-backdrop-filter:blur(8px);opacity:0;visibility:hidden;border-radius:50%;justify-content:center;align-items:center;transition:opacity .3s,visibility .3s,background-color .2s,box-shadow .2s,transform .2s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 14px #00000029}.skill-scroll-btn__icon{width:20px;height:20px;display:block}[data-theme=dark] .skill-scroll-btn{--btn-bg:#26262cb8;--btn-bg-hover:#383840f2;--btn-fg:#f5f5f7;--btn-ring:#ffffff24}.skill-scroll-btn.is-visible{opacity:1;visibility:visible}.skill-scroll-btn:hover{background:var(--btn-bg-hover);transform:translateY(-50%)scale(1.1);box-shadow:0 6px 20px #00000038}.skill-scroll-btn:active{transform:translateY(-50%)scale(1.02)}.skill-scroll-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skill-scroll-btn.left{left:var(--btn-inset)}.skill-scroll-btn.right{right:var(--btn-inset)}#skills:not(.is-revealed) .global-section-title,#skills:not(.is-revealed) .skill-card,#skills:not(.is-revealed) .skill-halo{opacity:0}#skills.is-revealed .global-section-title{animation:.7s cubic-bezier(.16,1,.3,1) backwards skill-title-in}#skills.is-revealed .skill-card{animation:skill-card-in .8s cubic-bezier(.16, 1, .3, 1) calc(.15s + var(--i,0) * .1s) backwards}#skills.is-revealed .skill-card:after{animation:skill-card-shine 1.2s cubic-bezier(.45, 0, .25, 1) calc(.7s + var(--i,0) * .12s) forwards}@keyframes skill-card-shine{to{translate:100%}}@keyframes skill-title-in{0%{opacity:0;translate:0 18px}}@keyframes skill-card-in{0%{opacity:0;translate:0 16px;scale:.96}}@media (prefers-reduced-motion:reduce){#skills.is-revealed .global-section-title,#skills.is-revealed .skill-card,#skills.is-revealed .skill-card:after,.skill-halo{animation:none}.skill-scroll-btn{transition:opacity .3s,visibility .3s}.skill-scroll-btn:hover,.skill-scroll-btn:active{transform:translateY(-50%)}}@media (width<=768px){.skill-scroll-btn{--btn-size:38px;--btn-inset:6px}.skill-scroll-btn__icon{width:18px;height:18px}.skill-wrapper{--skill-fade-width:56px}.skill-card{flex:0 0 240px}.skill-scroll{gap:12px;padding:10px 10px 18px}}#clients{--clients-space:90px;--connect-title-air:20px;margin-top:var(--clients-space);margin-bottom:calc(var(--clients-space) - var(--connect-title-air));isolation:isolate;position:relative}@media (width<=768px){#clients{--clients-space:95px;--connect-title-air:12px}}#clients:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(closest-side, rgb(var(--accent-rgb) / .38), transparent 75%);width:min(440px,60%);animation:9s ease-in-out infinite alternate clients-halo;position:absolute;top:0;bottom:0;left:0}.clients-panel{isolation:isolate;background:linear-gradient(180deg, var(--dock-sheen) 0%, transparent 55%), linear-gradient(90deg, rgb(var(--accent-rgb) / .08), transparent 45%), var(--dock-bg);-webkit-backdrop-filter:blur(18px)saturate(160%);box-shadow:inset 0 1px 1px var(--dock-rim), inset 0 -1px 1px var(--dock-rim-soft), inset 0 0 14px var(--dock-glow), 0 0 0 .5px var(--dock-hairline), 0 10px 28px #00000024, 0 2px 6px #0000000f;border-radius:18px;grid-template-columns:minmax(200px,.9fr) 2fr;align-items:center;gap:24px 32px;padding:30px 32px 30px 36px;display:grid;position:relative;overflow:hidden}.clients-panel:before{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg, var(--dock-rim) 0%, transparent 30%, transparent 70%, var(--dock-rim-soft) 100%);-webkit-mask-composite:xor;padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}@keyframes clients-halo{0%{translate:0 -12px;scale:.9}to{translate:40px 12px;scale:1.1}}.clients-shine{z-index:2;pointer-events:none;background:linear-gradient(105deg, transparent 30%, var(--clients-shine) 50%, transparent 70%);position:absolute;inset:0;translate:-100%}.clients-panel.is-revealed .clients-shine{animation:1.6s cubic-bezier(.65,0,.35,1) .3s both clients-shine}@keyframes clients-shine{to{translate:100%}}.clients-intro h2{color:color-mix(in srgb, var(--accent) 30%, var(--text));margin:0;font-size:clamp(1.25rem,3vw,1.6rem);font-weight:700;line-height:1.25}.clients-intro p{color:var(--text-secondary);margin:8px 0 0;font-size:.85rem;line-height:1.6}.client-grid{flex-wrap:wrap;justify-content:space-around;align-items:center;gap:20px 28px;display:flex}.client-item{justify-content:center;align-items:center;transition:transform .25s;display:flex}.client-item:hover{transform:scale(1.05)}.client-item:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:6px}.client-item img{object-fit:contain;width:auto;max-width:130px;height:44px;display:block}@media (width<=768px){.clients-panel{grid-template-columns:1fr;gap:18px;padding:28px 20px 18px}#clients:before{width:85%;height:200px;bottom:auto;left:calc(7.5% - 20px)}.clients-intro{text-align:center}.clients-intro p{text-wrap:balance}.client-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0;display:grid}.client-item{height:88px;padding:0 12px}.client-item:focus-visible{outline-offset:-4px}.client-item img{max-width:min(120px,100%);height:auto;max-height:48px}}.clients-panel:not(.is-revealed) .client-item{opacity:0}.clients-panel.is-revealed .client-item{animation:client-in .7s cubic-bezier(.16, 1, .3, 1) calc(var(--i,0) * 90ms) backwards}@keyframes client-in{0%{opacity:0;translate:0 18px}}@media (prefers-reduced-motion:reduce){#clients:before,.clients-panel.is-revealed .client-item,.clients-panel.is-revealed .clients-shine{animation:none}.client-item{transition:none}.client-item:hover{transform:none}}.cert-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:30px;margin-bottom:1.2rem;display:flex}.cert-heading .global-section-title{margin:0}.cert-toggle{border:1px solid var(--bio-node-border);color:var(--text);font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.5rem;padding:.45rem .9rem;font-size:.8rem;font-weight:600;line-height:1;transition:background-color .2s,border-color .2s,transform .2s;display:inline-flex}.cert-toggle:after{content:"";border-bottom:2px solid;border-right:2px solid;width:6px;height:6px;transition:transform .25s;transform:translateY(-2px)rotate(45deg)}.cert-toggle[aria-expanded=true]:after{transform:translateY(1px)rotate(-135deg)}.cert-toggle:hover{background:var(--accent-soft);border-color:var(--accent)}.cert-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cert-wrapper{touch-action:pan-y;cursor:grab;padding-top:10px;padding-bottom:10px;position:relative;overflow:hidden}.cert-wrapper.is-dragging,.cert-wrapper.is-dragging .cert-item{cursor:grabbing}.cert-track{--cert-gap:16px;gap:var(--cert-gap);will-change:transform;-webkit-user-select:none;user-select:none;align-items:center;width:max-content;display:flex}.cert-track>*{flex:none}.cert-item{cursor:pointer;color:inherit;flex-direction:column;text-decoration:none;transition:transform .25s;display:flex}.cert-track .cert-item{width:155px}.cert-item:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:10px}.cert-item:hover{transform:scale(1.05)}.cert-item img{object-fit:contain;width:100%;height:100px;padding:5px}.cert-desc{text-align:center;padding:10px;font-size:.75rem}.cert-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;padding:10px 0 18px;animation:.4s cubic-bezier(.16,1,.3,1) cert-grid-in;display:grid}@keyframes cert-grid-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}#certifications:not(.is-revealed) .cert-heading,#certifications:not(.is-revealed) .cert-track .cert-item{opacity:0}#certifications.is-revealed .cert-heading{animation:.7s cubic-bezier(.16,1,.3,1) .15s backwards cert-rise}#certifications.is-revealed .cert-track .cert-item{animation:cert-rise .7s cubic-bezier(.16, 1, .3, 1) calc(.3s + var(--i,0) * 80ms) backwards}@keyframes cert-rise{0%{opacity:0;translate:0 18px}}@media (prefers-reduced-motion:reduce){#certifications.is-revealed .cert-heading,#certifications.is-revealed .cert-track .cert-item{animation:none}.cert-wrapper{touch-action:auto;cursor:auto;overflow-x:auto}.cert-track{will-change:auto}.cert-item{transition:none}.cert-item:hover{transform:none}.cert-grid{animation:none}.cert-toggle,.cert-toggle:after{transition:none}}.more-projects{--scene-gap:120px;margin-top:calc(-1 * var(--pull,0px))}.more-projects-track{view-timeline:--project-track block;height:160svh;margin-bottom:calc(-1 * var(--trail,0px));pointer-events:none;position:relative}.more-projects-stage{flex-direction:column;justify-content:center;height:100svh;padding:24px 0 90px;display:flex;position:sticky;top:0}.more-projects-stage>*{pointer-events:auto}.more-projects-intro{text-align:center;justify-content:center;margin-bottom:32px;animation-name:more-intro;display:flex}@media (width>=769px){@supports (animation-timeline:view()){.more-projects-intro.scroll-anim{animation-timeline:view();animation-range:cover cover 40%}}}.more-projects-intro h3{margin:0;font-size:clamp(1.5rem,3.5vw,2rem);font-weight:700}.more-projects-preview{--shot-w:min(52%, 420px);--fan-x:55%;--fan-turn:22deg;--fan-scale:.8;perspective:1400px;cursor:pointer;place-items:center;padding-top:10px;display:grid;position:relative;-webkit-mask-image:linear-gradient(#000 35%,#0000 100%);mask-image:linear-gradient(#000 35%,#0000 100%)}.more-projects-glow{z-index:-1;background:radial-gradient(ellipse at center, rgb(var(--accent-rgb) / .22), transparent 70%);filter:blur(30px);pointer-events:none;animation-name:more-glow;position:absolute;inset:10% 15% 0}.more-projects-shot{width:var(--shot-w);aspect-ratio:16/10;border:1px solid var(--bio-node-border);background:var(--bg);border-radius:14px;grid-area:1/1;transition:transform .6s cubic-bezier(.16,1,.3,1),filter .6s;overflow:hidden;box-shadow:0 24px 48px #00000047,0 4px 12px #0000001f}.more-projects-shot.is-left{translate:calc(var(--fan-x) * -1) 0;rotate:y var(--fan-turn);scale:var(--fan-scale);filter:brightness(.9);animation-name:more-fan-left}.more-projects-shot.is-center{z-index:1;animation-name:more-fan-center}.more-projects-shot.is-right{translate:var(--fan-x) 0;rotate:y calc(var(--fan-turn) * -1);scale:var(--fan-scale);filter:brightness(.9);animation-name:more-fan-right}.more-projects-shot img,.project-card-shot img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}@media (hover:hover) and (prefers-reduced-motion:no-preference){.more-projects-preview:hover .more-projects-shot.is-left{transform:translate(-10%)}.more-projects-preview:hover .more-projects-shot.is-right{transform:translate(10%)}.more-projects-preview:hover .more-projects-shot.is-center{transform:translateY(-8px)scale(1.02)}.more-projects-preview:hover .more-projects-shot{filter:none}}.more-projects-cta{z-index:1;justify-content:center;margin-top:-35px;animation-name:more-cta;display:flex;position:relative}.more-projects-btn{font:inherit;cursor:pointer;border:none;padding:12px 22px;font-weight:600;box-shadow:0 10px 24px #0000002e}@keyframes more-intro{0%{opacity:0;translate:0 40px}25%,to{opacity:1;translate:0}}@keyframes more-fan-center{0%,5%{opacity:0;translate:0 90px;scale:.88}50%,to{opacity:1;translate:0;scale:1}}@keyframes more-glow{0%,20%{opacity:0;scale:.6}60%,to{opacity:1;scale:1}}@keyframes more-fan-left{0%,30%{opacity:0;translate:0 60px;rotate:y 0deg;scale:.7}75%,to{opacity:1;translate:calc(var(--fan-x) * -1) 0;rotate:y var(--fan-turn);scale:var(--fan-scale)}}@keyframes more-fan-right{0%,30%{opacity:0;translate:0 60px;rotate:y 0deg;scale:.7}75%,to{opacity:1;translate:var(--fan-x) 0;rotate:y calc(var(--fan-turn) * -1);scale:var(--fan-scale)}}@keyframes more-cta{0%,60%{opacity:0;translate:0 20px}85%,to{opacity:1;translate:0}}@media (width<=768px){.more-projects-preview{--shot-w:66%;--fan-x:38%}.more-projects-intro{margin-bottom:24px}.more-projects-track{height:auto}.more-projects-stage{height:auto;padding:40px 0 0;position:static}@supports (animation-timeline:view()){.more-projects .scroll-anim{animation-range:entry 20% cover 55%}}}@media (prefers-reduced-motion:reduce),(height<=540px){.more-projects-track{height:auto}.more-projects-stage{height:auto;padding:40px 0 70px;position:static}}@media (prefers-reduced-motion:reduce){.more-projects-shot{transition:none}}.projects-dialog{background:linear-gradient(180deg, var(--dock-sheen) 0%, transparent 30%), color-mix(in srgb, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(24px)saturate(160%);width:min(960px,100% - 32px);max-width:none;max-height:min(88vh,900px);color:var(--text);box-shadow:inset 0 1px 1px var(--dock-rim-soft), 0 30px 80px #00000059;border:none;border-radius:20px;padding:0;transition:box-shadow .3s;overflow:hidden}.projects-dialog.is-genie{-webkit-backdrop-filter:none;box-shadow:none;pointer-events:none;background:0 0;transition:none;overflow:visible}.projects-dialog.is-genie>:not(.genie-layer){opacity:0}.genie-layer,.genie-glass,.genie-strip,.genie-page{position:absolute;top:0;left:0}.genie-strip{transform-origin:0 0;overflow:hidden}.projects-dialog::backdrop{-webkit-backdrop-filter:blur(6px);background:#0000008c}.projects-dialog[open]::backdrop{animation:.5s projects-backdrop-in}.projects-dialog.is-closing::backdrop{animation:.48s forwards projects-backdrop-out}@keyframes projects-backdrop-in{0%{opacity:0}}@keyframes projects-backdrop-out{to{opacity:0}}.projects-dialog-inner{max-height:inherit;flex-direction:column;display:flex}.projects-dialog-header{flex:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:18px 24px;display:grid}.projects-dialog-header h2{text-align:center;letter-spacing:.03em;grid-column:2;margin:0;font-size:clamp(1rem,4vw,1.4rem);font-weight:700}.projects-dialog-close{width:36px;height:36px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:50%;grid-column:3;justify-content:center;justify-self:end;align-items:center;padding:0;font-size:20px;transition:background-color .2s;display:flex}.projects-dialog-close:hover{background:var(--accent-soft)}.projects-dialog-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.projects-dialog-grid{--grid-pad:24px;overscroll-behavior:contain;min-height:0;padding:var(--grid-pad);--grid-thumb:color-mix(in srgb, var(--text) 22%, transparent);scrollbar-width:thin;scrollbar-color:var(--grid-thumb) transparent;-webkit-mask-image:linear-gradient(to bottom, transparent, #000 var(--grid-pad), #000 calc(100% - var(--grid-pad)), transparent);-webkit-mask-image:linear-gradient(to bottom, transparent, #000 var(--grid-pad), #000 calc(100% - var(--grid-pad)), transparent);mask-image:linear-gradient(to bottom, transparent, #000 var(--grid-pad), #000 calc(100% - var(--grid-pad)), transparent);flex:auto;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:24px 20px;display:grid;overflow-y:auto}.projects-dialog-grid::-webkit-scrollbar{width:10px}.projects-dialog-grid::-webkit-scrollbar-track{background:0 0}.projects-dialog-grid::-webkit-scrollbar-thumb{background:var(--grid-thumb) padding-box;border:3px solid #0000;border-radius:999px}.project-card{color:inherit;flex-direction:column;text-decoration:none;display:flex}.project-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:12px}.project-card-shot{aspect-ratio:16/10;border-radius:12px;overflow:hidden}.project-card-shot img{transition:transform .4s cubic-bezier(.16,1,.3,1)}.project-card-shot.is-phone{background:var(--bg);place-items:center;display:grid;position:relative}.project-card-shot .project-card-backdrop{filter:blur(18px)saturate(1.2);opacity:.55;position:absolute;inset:0;scale:1.3}[data-theme=dark] .project-card-shot .project-card-backdrop{opacity:.22}.project-card-phone{aspect-ratio:276/600;background:#000;border:4px solid #111;border-radius:16px;height:88%;transition:transform .4s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff14,0 12px 24px #00000047}.project-card-title{align-items:center;gap:6px;margin:12px 0 4px;font-size:1rem;font-weight:700;display:flex}.project-card-title svg{flex-shrink:0;transition:transform .2s}.project-card-desc{color:var(--text-secondary);margin:0;font-size:.85rem}a.project-card:hover .project-card-shot img{transform:scale(1.04)}a.project-card:hover .project-card-phone img{transform:none}a.project-card:hover .project-card-phone{transform:translateY(-3px)scale(1.04)}a.project-card:hover .project-card-title svg{transform:translate(2px,-2px)}@media (width<=768px){.projects-dialog-header{padding:14px 18px}.projects-dialog-grid{--grid-pad:18px}}@media (prefers-reduced-motion:reduce){.projects-dialog[open]::backdrop{animation:none}.project-card-shot img,.project-card-phone,.project-card-title svg{transition:none}a.project-card:hover .project-card-shot img,a.project-card:hover .project-card-phone,a.project-card:hover .project-card-title svg{transform:none}}.projects-phone-container,.project-laptop-container{view-timeline:--project-track block;height:200svh;position:relative}.project-phone-stage,.project-laptop-stage{justify-content:center;align-items:center;height:100svh;padding:24px 0 90px;display:flex;position:sticky;top:0}.project-phone-stage:before,.laptop-glow{content:"";z-index:-1;background:radial-gradient(closest-side, var(--accent-soft), transparent);filter:blur(60px);pointer-events:none;position:absolute;inset:8% 6%}.project-video{position:relative}.project-video__poster{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.project-video video{opacity:0;position:relative}.project-video.is-playing video{opacity:1}.project-phone-info h2,.project-laptop-info h2{margin:0;font-size:clamp(1.5rem,3.5vw,2rem)}.project-phone-info p,.project-laptop-info p{color:var(--text-secondary);margin:0;line-height:1.7}.project-phone-info:focus-within,.project-laptop-info:focus-within{animation:none}.project-link{color:var(--projects-link-button-color);background:var(--projects-link-button-bg);border-radius:8px;align-items:center;gap:6px;margin-top:12px;padding:10px 18px;font-weight:600;text-decoration:none;transition:background-color .2s,transform .2s,box-shadow .2s;display:inline-flex}.project-link:hover{background:var(--projects-link-button-hover-bg);transform:translateY(-2px);box-shadow:0 6px 16px #0000002e}.project-link:active{transform:translateY(0)}.project-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-phone-stage{isolation:isolate;gap:50px;padding-inline:10px}.project-phone-device{flex:none;width:min(300px,46.1538svh - 61.8462px);container-type:inline-size}.phone-3d{perspective:300cqw;perspective-origin:50% 20%}.project-phone-ui{aspect-ratio:9/19.5;border:var(--projects-phone-ui-border);transform-origin:50% 80%;background:#000;border-width:3.4cqw;border-radius:14cqw;animation-name:phone-raise;position:relative;overflow:hidden;box-shadow:0 20px 50px #00000073}.phone-app{animation-name:phone-app;position:absolute;inset:0}.phone-app .project-video{height:100%}.phone-app video{object-fit:cover;width:100%;height:100%;display:block}.phone-lock{color:#fff;text-shadow:0 .3cqw 2cqw #00000040;background:radial-gradient(90% 55% at 15% 10%,#7aa2ff,#0000 65%),radial-gradient(80% 50% at 95% 45%,#c084fc,#0000 65%),radial-gradient(110% 60% at 30% 100%,#22d3ee,#0000 70%),linear-gradient(#1e2a78,#3b1f6e);flex-direction:column;align-items:center;animation-name:phone-unlock;display:flex;position:absolute;inset:0;transform:translateY(-100%)}.phone-status{gap:1.4cqw;font-size:4.2cqw;display:flex;position:absolute;top:4.2cqw;right:8cqw}.phone-padlock{width:6cqw;height:6cqw;margin-top:16cqw;font-size:6cqw;position:relative}.phone-padlock svg{position:absolute;inset:0}.phone-padlock-shut{opacity:0;animation-name:phone-padlock-shut}.phone-padlock-open{animation-name:phone-padlock-open}.phone-date{margin:3cqw 0 0;font-size:5.4cqw;font-weight:600}.phone-time{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:0;font-size:25cqw;font-weight:700;line-height:1.05}.phone-hint{opacity:.8;margin:0;font-size:3.8cqw;position:absolute;bottom:12cqw}.phone-quick{justify-content:space-between;display:flex;position:absolute;bottom:7cqw;left:9cqw;right:9cqw}.phone-quick span{background:#ffffff2e;border-radius:50%;place-items:center;width:13cqw;height:13cqw;font-size:5.5cqw;display:grid}.phone-home-bar{background:#fff;border-radius:999px;width:36cqw;height:1.5cqw;position:absolute;bottom:2.4cqw;left:50%;translate:-50%}.phone-island{background:#000;border-radius:999px;width:28cqw;height:8cqw;position:absolute;top:2.6cqw;left:50%;translate:-50%}.phone-sleep{opacity:0;pointer-events:none;background:linear-gradient(155deg,#2a2b31,#070708 45%,#000);animation-name:phone-wake;position:absolute;inset:0}.project-phone-info{flex-direction:column;gap:25px;min-width:0;max-width:400px;animation-name:phone-copy;display:flex}@keyframes phone-raise{0%{animation-timing-function:ease-out;transform:translateY(22%)rotateX(62deg)scale(.9)}35%,to{transform:translateY(0)rotateX(0)scale(1)}}@keyframes phone-wake{0%,22%{opacity:1}38%,to{opacity:0}}@keyframes phone-padlock-shut{0%,40%{opacity:1}45%,to{opacity:0}}@keyframes phone-padlock-open{0%,40%{opacity:0}45%,to{opacity:1}}@keyframes phone-unlock{0%,45%{animation-timing-function:ease-in-out;transform:translateY(0)}78%,to{transform:translateY(-100%)}}@keyframes phone-app{0%,48%{opacity:.4;animation-timing-function:ease-out;transform:scale(.88)}80%,to{opacity:1;transform:scale(1)}}@keyframes phone-copy{0%,70%{opacity:0;transform:translateY(24px)}90%,to{opacity:1;transform:translateY(0)}}.project-laptop-container{overflow-x:clip}.project-laptop-stage{flex-direction:column;gap:clamp(12px,3vh,28px)}.project-laptop-ui{isolation:isolate;--bezel:2.4cqw;--bezel-side:2.2cqw;--lid-h:calc(var(--bezel) * 2 + (100cqw - var(--bezel-side) * 2) * 720 / 1272);--lid-t:.8cqw;--base-t:1.6cqw;width:min(84%,720px,115svh - 379.5px);position:relative;container-type:inline-size}.laptop-glow{filter:none;animation-name:laptop-glow;inset:-10% -8% 0}.laptop-3d{perspective:360cqw;perspective-origin:50% 40%;padding-bottom:calc(var(--lid-h) * .42)}.laptop-body{transform-style:preserve-3d;animation-name:laptop-body;position:relative;transform:rotateX(-16deg)}.laptop-lid{height:var(--lid-h);transform-style:preserve-3d;transform-origin:50% 100%;animation-name:laptop-lid;position:relative;transform:rotateX(16deg)}.laptop-screen,.laptop-lid-back{border-radius:2.4cqw 2.4cqw .8cqw .8cqw;position:absolute;inset:0}.laptop-screen{padding:var(--bezel) var(--bezel-side);background:#0b0b0d;animation-name:laptop-screen-face;box-shadow:inset 0 0 0 .3cqw #45474d}.laptop-screen video{aspect-ratio:1272/720;object-fit:cover;border-radius:.5cqw;width:100%;display:block}.laptop-screen .project-video__poster{border-radius:.5cqw}.laptop-screen:before{content:"";top:calc(var(--bezel) / 2);background:#1d1e22;border-radius:50%;width:.8cqw;height:.8cqw;position:absolute;left:50%;translate:-50% -50%;box-shadow:inset 0 0 0 .15cqw #2e3036}.laptop-screen-dim{inset:var(--bezel) var(--bezel-side);opacity:0;pointer-events:none;background:#000;border-radius:.5cqw;animation-name:laptop-screen-wake;position:absolute}.laptop-lid-back{transform:translateZ(calc(var(--lid-t) * -1)) rotateY(180deg);opacity:0;background:linear-gradient(160deg,#6b6e75,#44464b 55%,#36383c);animation-name:laptop-lid-back-face}.laptop-lid-edge{height:var(--lid-t);transform-origin:50% 0;background:#2f3135;position:absolute;top:0;left:1.2cqw;right:1.2cqw;transform:rotateX(-90deg)}.laptop-deck{width:100%;height:var(--lid-h);transform-origin:50% 0;background:linear-gradient(#26272b 0 2.5%,#0000 0),linear-gradient(#585b61,#46484d);border-radius:.8cqw .8cqw 2.4cqw 2.4cqw;position:absolute;top:100%;left:0;transform:rotateX(90deg)}.laptop-keyboard{background:linear-gradient(90deg,#1a1b1e .35cqw,#0000 0) 0 0/7.14286% 100%,linear-gradient(#1a1b1e .5cqw,#0000 0) 0 0/100% 16.6667%,#34363b;border:.35cqw solid #1a1b1e;border-radius:.8cqw;height:44%;position:absolute;top:8%;left:8%;right:8%}.laptop-trackpad{background:linear-gradient(#4f5257,#46494e);border-radius:1.2cqw;height:36%;position:absolute;bottom:6%;left:30%;right:30%;box-shadow:inset 0 0 0 .2cqw #00000038}.laptop-base-layer{top:calc(100% + var(--base-t) * var(--depth));transform-origin:50% 0;width:100%;height:6cqw;transform:translateZ(calc(var(--lid-h) - 6cqw)) rotateX(90deg);background:#36383c;background:color-mix(in srgb, #26282b calc(var(--depth) * 100%), #44464b);border-radius:0 0 2.4cqw 2.4cqw;position:absolute;left:0}.laptop-shadow{top:calc(100% + var(--base-t) + .2cqw);width:112%;height:calc(var(--lid-h) * 1.15);transform-origin:50% 0;pointer-events:none;background:radial-gradient(closest-side,#00000052,#0000);position:absolute;left:-6%;transform:rotateX(90deg)translateY(-6%)}.project-laptop-info{text-align:center;flex-direction:column;align-items:center;gap:12px;max-width:600px;animation-name:laptop-copy;display:flex}@keyframes laptop-body{0%{animation-timing-function:ease-in-out;transform:translateY(-10%)scale(.9)rotateX(-32deg)}70%,to{transform:translateY(0)scale(1)rotateX(-16deg)}}@keyframes laptop-lid{0%{animation-timing-function:ease-in-out;transform:rotateX(-90deg)}70%,to{transform:rotateX(16deg)}}@keyframes laptop-screen-face{0%,25.8%{opacity:0}25.81%,to{opacity:1}}@keyframes laptop-lid-back-face{0%,25.8%{opacity:1}25.81%,to{opacity:0}}@keyframes laptop-screen-wake{0%{opacity:.85;animation-timing-function:ease-in-out}70%,to{opacity:0}}@keyframes laptop-glow{0%{opacity:.3;animation-timing-function:ease-in-out}70%,to{opacity:1}}@keyframes laptop-copy{0%,60%{opacity:0;transform:translateY(24px)}85%,to{opacity:1;transform:translateY(0)}}.scroll-anim{animation-duration:1s;animation-timing-function:linear;animation-play-state:paused;animation-fill-mode:both;animation-delay:calc(var(--progress,0) * -1s)}@supports (animation-timeline:view()){.scroll-anim{animation-duration:auto;animation-play-state:running;animation-delay:0s;animation-timeline:--project-track;animation-range:cover 65vh contain}}@media (width<=767px){.project-phone-stage{text-align:center;flex-direction:column;gap:clamp(12px,3vh,28px)}.project-phone-device{width:min(240px,46.1538svh - 138.462px)}.project-phone-info{align-items:center;gap:12px}}@media (prefers-reduced-motion:reduce),(height<=540px){.projects-phone-container,.project-laptop-container{height:auto}.project-phone-stage,.project-laptop-stage{height:auto;position:static}.project-phone-stage{padding:30px 10px 0}.project-laptop-stage{padding:clamp(40px,6vw,75px) 0 20px}.project-phone-device{width:min(280px,100%)}.project-laptop-ui{width:min(84%,720px)}.scroll-anim{animation:none}}@media (prefers-reduced-motion:reduce){.project-link{transition:none}.project-link:hover{transform:none}}.name-card{width:100%;max-width:620px;margin:0 auto 2rem}.name-card__stage{aspect-ratio:4/3;border-radius:18px;width:100%;position:relative;overflow:hidden}.name-card__stage:before{content:"";background:radial-gradient(closest-side, var(--accent-soft), transparent);filter:blur(20px);pointer-events:none;border-radius:50%;width:64%;height:20%;position:absolute;bottom:6%;left:50%;transform:translate(-50%)}.name-card__canvas{cursor:grab}.name-card__canvas:active{cursor:grabbing}.name-card__canvas canvas{touch-action:pan-y!important;touch-action:pan-y pinch-zoom!important}.name-card__loading{background:var(--accent-soft);border-radius:999px;width:min(180px,45%);height:3px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.name-card__loading-bar{border-radius:inherit;background:var(--accent);width:40%;height:100%;animation:1.3s ease-in-out infinite nameCardLoading;display:block}@keyframes nameCardLoading{0%{transform:translate(-110%)}to{transform:translate(360%)}}.name-card .name-card__hint{letter-spacing:.04em;color:var(--text-secondary);margin:.9rem 0 0;font-size:.85rem}.name-card .name-card__fallback{height:100%;color:var(--text-secondary);justify-content:center;align-items:center;margin:0;padding:1rem;font-size:.9rem;display:flex}@media (prefers-reduced-motion:reduce){.name-card__loading-bar{opacity:.5;width:100%;animation:none}}.connect-container{text-align:center;width:100%;max-width:700px;margin:0 auto;padding-bottom:5.5rem}.connect-container h2{margin-top:0;margin-bottom:1.5rem;font-size:clamp(2rem,5vw,2.8rem)}.connect-container p{color:var(--text-secondary);margin-bottom:2rem}.connect-social-links{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.connect-social-links svg{font-size:1.3rem}.connect-social-links a{color:#1d1d1f;background:#fff;border:1px solid #e5e7eb;border-radius:999px;align-items:center;gap:.75rem;padding:1rem 1.5rem;font-weight:500;text-decoration:none;transition:transform .3s,box-shadow .3s;display:flex}.connect-social-links a:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000014}.connect-container:not(.is-revealed)>h2,.connect-container:not(.is-revealed)>p,.connect-social-links:not(.is-revealed) a{opacity:0}.connect-container.is-revealed>h2{animation:.7s cubic-bezier(.16,1,.3,1) backwards connect-rise}.connect-container.is-revealed>p{animation:.7s cubic-bezier(.16,1,.3,1) .12s backwards connect-rise}.connect-social-links.is-revealed a{animation:.55s cubic-bezier(.34,1.56,.64,1) backwards connect-pop}.connect-social-links.is-revealed a:nth-child(2){animation-delay:90ms}.connect-social-links.is-revealed a:nth-child(3){animation-delay:.18s}@keyframes connect-rise{0%{opacity:0;translate:0 18px}}@keyframes connect-pop{0%{opacity:0;translate:0 10px;scale:.9}}@media (prefers-reduced-motion:reduce){.connect-container.is-revealed>h2,.connect-container.is-revealed>p,.connect-social-links.is-revealed a{animation:none}}@media (width<=767px){.connect-container{padding-bottom:6rem}}.splash-screen{z-index:9999;background:var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}.splash-aura{pointer-events:none;opacity:0;background:radial-gradient(40% 44% at 32% 36%, var(--accent-soft), transparent 70%), radial-gradient(34% 38% at 68% 64%, var(--accent-soft), transparent 70%);animation:1.4s forwards auraIn,16s ease-in-out 1.4s infinite alternate auraDrift;position:absolute;inset:-25%}.splash-content{text-align:center;padding:0 24px;position:relative}.intro{letter-spacing:.01em;color:var(--text-secondary);opacity:0;margin:0;font-size:1.5rem;font-weight:500;animation:.6s cubic-bezier(.16,1,.3,1) .1s forwards riseIn}.name{letter-spacing:-.02em;margin:20px 0;font-size:clamp(3rem,8vw,6rem);font-weight:700;line-height:1.15;position:relative}.name:before{content:"";width:0;display:inline-block}.name-char{animation:.45s cubic-bezier(.16,1,.3,1) charIn;display:inline-block}.cursor{color:var(--text);margin-left:.06em;font-weight:400;animation:1s ease-in-out infinite blink;display:inline-block;position:absolute}.welcome{letter-spacing:2px;color:var(--text-secondary);opacity:0;margin:0;font-size:1.2rem;animation:.6s cubic-bezier(.16,1,.3,1) 2.4s forwards riseIn}.splash-screen.is-exiting{animation:.6s cubic-bezier(.65,0,.35,1) forwards splashOut}@keyframes riseIn{0%{opacity:0;filter:blur(12px);transform:translateY(14px)}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes charIn{0%{opacity:0;transform:translateY(.18em)scale(.92)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes auraIn{to{opacity:1}}@keyframes auraDrift{0%{transform:translate(-2%,-1%)scale(1)}to{transform:translate(2%,1%)scale(1.08)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes splashOut{0%{opacity:1;filter:blur();transform:scale(1)}to{opacity:0;filter:blur(10px);transform:scale(1.07)}}@keyframes softIn{0%{opacity:0}to{opacity:1}}@keyframes softOut{0%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.intro,.welcome,.name-char{animation-name:softIn}.splash-aura{animation:.8s forwards softIn}.splash-screen.is-exiting{animation-name:softOut}.cursor{animation-duration:1.6s}}.app-container{flex-direction:column;align-items:stretch;gap:30px;max-width:850px;margin:30px auto;padding:0 25px;display:flex;position:relative}.fade-app{animation:1s appFadeIn}@keyframes appFadeIn{0%{opacity:0}to{opacity:1}}@media (width<=768px){html{font-size:.8rem}.app-container{gap:15px}}
