@import "https://fonts.googleapis.com/css2?family=Dancing+Script:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap";:root{--accent:#1f4590;--accent-rgb:31 69 144;--accent-soft:#1f459024;--gradient-accent:white;--bg:#fff;--text:#1d1d1f;--text-secondary:#474747;--dock-bg:#ffffff26;--skill-item-bg:#fff;--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}[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:#1e1e2366;--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}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;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:flex-start;gap:35px;display:flex}.hero-img{object-fit:cover;border-radius:50%;width:130px;height:130px}.hero-info{flex-direction:column;justify-content:center;display:flex}.hero-name{margin:10px 0;font-size:1.9rem;font-weight:900}.hero-title{color:var(--accent);flex-wrap:wrap;justify-content:center;gap:6px;font-weight:600;display:flex}.hero-title .divider{opacity:.5}.hero-desc{color:var(--text-secondary)}@media (width<=768px){.hero-container{gap:3px}.hero-top{text-align:center;flex-direction:column;align-items:center;gap:5px}.hero-img{width:110px;height:110px}}@media (width<=480px){.hero-container{gap:10px}.hero-title{flex-direction:column}.hero-title .divider{display:none}.hero-info p{margin:10px}}.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);align-items:baseline;padding:4px 8px 4px 0;line-height:1.6;display:flex;position:relative}.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:800}.bio-text{color:var(--text-secondary)}@media (width<=768px){.bio-year{min-width:130px}}@media (width<=480px){.bio-item{flex-direction:column;gap:0;padding-bottom:8px}.bio-year{color:var(--accent)}}.dock-wrapper{position:fixed;bottom:15px;left:50%;transform:translate(-50%)}.dock{-webkit-backdrop-filter:blur(22px)saturate(180%);background:#ffffff2e;border:1px solid #00000014;border-radius:18px;gap:20px;padding:0 10px;display:flex;box-shadow:0 12px 30px #0000002e,0 2px 8px #00000014}.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}}@media (hover:none) and (pointer:coarse){.dock-item:active{transform:scale(1.15)}.dock-item:hover{transform:none}}.skill-wrapper{--skill-fade-width:96px;align-items:center;display:flex;position:relative;overflow:hidden}.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{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffff14;border-radius:18px;flex-direction:column;flex:0 0 280px;justify-content:flex-start;gap:22px;height:250px;padding:15px;transition:transform .25s,box-shadow .25s;display:flex;box-shadow:0 8px 10px #0000002e,0 2px 10px #0000001a}.skill-card:hover{transform:translateY(-2.5px);box-shadow:0 10px 10px #00000040}.skill-header h3{margin:0;font-size:1.1rem;font-weight:800}.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);background:var(--skill-item-bg);border-radius:6px;align-items:center;gap:10px;padding:6px 10px;font-size:.8rem;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 3px 8px #0000001f}.skill-item:hover{transform:translateY(-2px);box-shadow:0 6px 14px #0000002e}.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)}@media (prefers-reduced-motion:reduce){.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}}.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)}}@media (prefers-reduced-motion:reduce){.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}}.projects-phone-container{isolation:isolate;flex-direction:row;justify-content:center;align-items:center;gap:50px;padding:30px 10px 0;display:flex;position:relative}#projects .global-section-title{display:block}.projects-phone-container:before,.project-laptop-container:before{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-phone-ui{aspect-ratio:9/19.5;border:var(--projects-phone-ui-border);border-radius:40px;flex:none;width:300px;transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s;overflow:hidden;box-shadow:0 20px 50px #00000073}.project-phone-ui video{object-fit:cover;width:100%;height:100%}.project-phone-info{flex-direction:column;gap:25px;min-width:0;max-width:400px;display:flex}.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-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-laptop-container{isolation:isolate;padding-top:clamp(40px,6vw,75px);padding-inline:clamp(6px,13% - 34px,70px);flex-direction:column;align-items:center;gap:25px;padding-bottom:0;display:flex;position:relative}.project-laptop-ui{background:#202124;border-radius:18px;width:900px;max-width:100%;padding:14px 14px 0;transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s;position:relative;box-shadow:0 20px 50px #00000059}.project-laptop-ui:before{content:"";background:#444;border-radius:999px;width:50px;height:8px;position:absolute;top:3px;left:50%;transform:translate(-50%)}.project-laptop-ui video{aspect-ratio:1272/720;object-fit:cover;border-radius:8px;width:100%;display:block}.project-laptop-ui:after{content:"";background:linear-gradient(#d6d6d6,#a7a7a7);border-radius:0 0 16px 16px;width:112%;height:20px;margin-left:-6%;display:block}.project-laptop-info{text-align:center;flex-direction:column;align-items:center;gap:20px;max-width:600px;display:flex}.project-laptop-info h2{margin-top:15px}@media (hover:hover){.project-phone-ui:hover{transform:translateY(-6px);box-shadow:0 28px 60px #00000080}.project-laptop-ui:hover{transform:translateY(-6px);box-shadow:0 28px 60px #0000006b}}@media (width<=767px){.projects-phone-container{text-align:center;flex-direction:column;gap:35px}.project-phone-info{align-items:center;gap:12px}.project-phone-ui{width:260px}.project-laptop-container{padding-bottom:20px}.project-laptop-ui{padding:8px 8px 0}.project-laptop-ui:after{height:12px}}@media (prefers-reduced-motion:reduce){.project-phone-ui,.project-laptop-ui,.project-link{transition:none}.project-phone-ui:hover,.project-laptop-ui:hover,.project-link:hover{transform:none}}.name-card{width:100%;max-width:620px;margin:0 auto 2rem}.name-card__stage{aspect-ratio:16/10;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 (width<=640px){.name-card__stage{aspect-ratio:4/3}}@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-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:all .3s;display:flex}.connect-social-links a:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000014}@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:2.2s forwards auraIn,16s ease-in-out 2.2s 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:1s cubic-bezier(.16,1,.3,1) .3s 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:.55s cubic-bezier(.16,1,.3,1) charIn;display:inline-block}.cursor{color:var(--text);margin-left:.06em;font-weight:300;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:1.1s cubic-bezier(.16,1,.3,1) 3.9s forwards riseIn}.splash-screen.is-exiting{animation:.9s 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}}
