:root{--bg-primary: #000000;--bg-secondary: #0a0a0a;--text-primary: #ffffff;--text-secondary: #9ca3af;--accent-green: #22c55e;--accent-cyan: #06b6d4;--accent-purple: #a855f7;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px)}.light-theme{--bg-primary: #f8fafc;--bg-secondary: #ffffff;--text-primary: #0f172a;--text-secondary: #64748b}.glass-nav{background:#000000d9;backdrop-filter:blur(24px) saturate(200%);-webkit-backdrop-filter:blur(24px) saturate(200%);border:1px solid rgba(34,197,94,.15);box-shadow:0 8px 32px #0006,0 0 0 1px #ffffff14 inset,0 0 60px #22c55e14}.light-theme .glass-nav{background:#ffffffd9;border:1px solid rgba(34,197,94,.2);box-shadow:0 8px 32px #00000026,0 0 0 1px #fffc inset,0 0 40px #22c55e1a}.noise-texture{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}.mobile-drawer-glass{background:#0a0a0af2;backdrop-filter:blur(24px) saturate(200%);-webkit-backdrop-filter:blur(24px) saturate(200%);border-left:1px solid rgba(255,255,255,.1);box-shadow:-10px 0 40px #00000080}.light-theme .mobile-drawer-glass{background:#fffffff2;border-left:1px solid rgba(0,0,0,.1);box-shadow:-10px 0 40px #00000026}.mobile-nav-item{opacity:0;transform:translate(20px);animation:slideInFromRight .4s ease-out forwards}@keyframes slideInFromRight{to{opacity:1;transform:translate(0)}}.pt-safe-top{padding-top:max(1rem,var(--safe-area-top))}.pb-safe-bottom{padding-bottom:max(1rem,var(--safe-area-bottom))}.will-change-transform{will-change:transform,opacity}.duration-400{transition-duration:.4s}.touch-manipulation{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}@keyframes spin-once{0%{transform:rotate(0)}to{transform:rotate(180deg)}}.animate-spin-once{animation:spin-once .3s ease-out forwards}@keyframes ping-slow{0%{transform:scale(1);opacity:.5}75%,to{transform:scale(1.3);opacity:0}}.animate-ping-slow{animation:ping-slow 1.5s cubic-bezier(0,0,.2,1) infinite}.mobile-bottom-nav-glass{background:#000000eb;backdrop-filter:blur(24px) saturate(200%);-webkit-backdrop-filter:blur(24px) saturate(200%);border:1px solid rgba(34,197,94,.2);box-shadow:0 -8px 32px #00000080,0 0 0 1px #ffffff1a inset,0 0 40px #22c55e1a}.light-theme .mobile-bottom-nav-glass{background:#fffffff2;border:1px solid rgba(34,197,94,.25);box-shadow:0 -8px 32px #00000026,0 0 0 1px #fffc inset,0 0 30px #22c55e1f}.drop-shadow-glow{filter:drop-shadow(0 0 12px rgba(34,197,94,.7)) drop-shadow(0 0 4px rgba(34,197,94,.9))}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fadeIn{animation:fadeIn .3s ease-out forwards}.stagger-animation>*{opacity:0;animation:fadeSlideIn .5s ease-out forwards}.stagger-animation>*:nth-child(1){animation-delay:0ms}.stagger-animation>*:nth-child(2){animation-delay:.1s}.stagger-animation>*:nth-child(3){animation-delay:.2s}.stagger-animation>*:nth-child(4){animation-delay:.3s}.stagger-animation>*:nth-child(5){animation-delay:.4s}.stagger-animation>*:nth-child(6){animation-delay:.5s}@keyframes skillFill{0%{width:0%}}.skill-bar{animation:skillFill 1s ease-out forwards}.glow-green{box-shadow:0 0 20px #22c55e4d}.glow-purple{box-shadow:0 0 20px #a855f74d}@keyframes heroTextReveal{0%{opacity:0;letter-spacing:.5em;filter:blur(10px)}50%{opacity:.6;filter:blur(3px)}to{opacity:1;letter-spacing:.05em;filter:blur(0px)}}@keyframes heroSubtitleGlow{0%,to{opacity:.6;text-shadow:0 0 10px rgba(34,197,94,.3)}50%{opacity:1;text-shadow:0 0 20px rgba(34,197,94,.6),0 0 40px rgba(168,85,247,.3)}}@keyframes heroSlideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes heroPulseRing{0%{transform:scale(.8);opacity:.6;box-shadow:0 0 #22c55e66}70%{transform:scale(1);opacity:.2;box-shadow:0 0 0 15px #a855f700}to{transform:scale(.8);opacity:.6;box-shadow:0 0 #22c55e00}}.hero-text-glow{text-shadow:0 0 10px rgba(255,255,255,.5),0 0 30px rgba(34,197,94,.3),0 0 60px rgba(168,85,247,.2)}.hero-subtitle-animate{animation:heroSubtitleGlow 3s ease-in-out infinite}.hero-title-reveal{animation:heroTextReveal 2s ease-out forwards}.hero-slide-up{animation:heroSlideUp .8s ease-out forwards}.hero-slide-up-delay-1{opacity:0;animation:heroSlideUp .8s ease-out .3s forwards}.hero-slide-up-delay-2{opacity:0;animation:heroSlideUp .8s ease-out .6s forwards}.hero-slide-up-delay-3{opacity:0;animation:heroSlideUp .8s ease-out .9s forwards}.hero-slide-up-delay-4{opacity:0;animation:heroSlideUp .8s ease-out 1.2s forwards}@keyframes heroAvatarFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.hero-avatar-shell{cursor:pointer;-webkit-user-select:none;user-select:none;perspective:1400px}.hero-avatar-3d-stage{position:relative;aspect-ratio:631 / 1024;transform-style:preserve-3d;will-change:transform}.hero-avatar-layer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;transform-style:preserve-3d;transition:transform .17s ease-out,filter .17s ease-out,opacity .17s ease-out}.hero-avatar-back{opacity:.26;filter:blur(2px) saturate(.9)}.hero-avatar-mid{z-index:2}.hero-avatar-front{z-index:3;opacity:.18;mix-blend-mode:screen;filter:brightness(1.18) saturate(1.08)}.hero-avatar-shell:hover .hero-avatar-back{opacity:.34}.avatar-eye{position:absolute;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle,#141414b3 40%,#1414144d);z-index:10;pointer-events:none;transition:transform .12s ease-out;will-change:transform}.avatar-eye-left{top:30.5%;left:40.5%}.avatar-eye-right{top:30.5%;left:53.5%}@keyframes avatarBreathe{0%,to{transform:scale(1) translateY(0)}50%{transform:scale(1.015) translateY(-3px)}}.avatar-idle-breathe{animation:avatarBreathe 3s ease-in-out infinite}@keyframes avatarEyeBlink{0%,40%,to{transform:scaleY(1);opacity:1}20%{transform:scaleY(.1);opacity:.5}}.avatar-eye-blink{animation:avatarEyeBlink .3s ease-in-out}.avatar-dragging{cursor:grabbing!important;z-index:100}.avatar-dragging .hero-avatar-mid{filter:drop-shadow(0 30px 40px rgba(0,0,0,.7)) drop-shadow(0 0 30px rgba(34,197,94,.35))!important}.hero-avatar-shell{cursor:grab}.avatar-tooltip{position:absolute;top:-24px;left:50%;transform:translate(-50%) translateY(-100%);z-index:50;animation:tooltipPopIn .35s cubic-bezier(.34,1.56,.64,1) forwards;pointer-events:none}.avatar-tooltip-inner{background:#0a0a0aeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(34,197,94,.35);border-radius:10px;padding:6px 12px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;color:#d1d5db;white-space:nowrap;box-shadow:0 6px 20px #00000080,0 0 15px #22c55e1f}.avatar-tooltip-arrow{width:12px;height:12px;background:#0a0a0aeb;border-right:1px solid rgba(34,197,94,.35);border-bottom:1px solid rgba(34,197,94,.35);transform:rotate(45deg);position:absolute;bottom:-6px;left:50%;margin-left:-6px}@keyframes tooltipPopIn{0%{opacity:0;transform:translate(-50%) translateY(-80%) scale(.7)}to{opacity:1;transform:translate(-50%) translateY(-100%) scale(1)}}.avatar-hint{position:absolute;bottom:-28px;left:50%;transform:translate(-50%);z-index:20;opacity:0;transition:opacity .4s ease;pointer-events:none}.hero-avatar-shell:hover .avatar-hint{opacity:1}.avatar-hint span{font-family:JetBrains Mono,ui-monospace,monospace;font-size:10px;color:#22c55e80;letter-spacing:.05em;white-space:nowrap}.avatar-fact-bubble{position:absolute;left:50%;top:74%;transform:translate(-50%);z-index:30;width:min(88vw,320px);padding:9px 12px;border-radius:10px;border:1px solid rgba(74,222,128,.38);background:#020806c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#dcfce7;font-size:12px;line-height:1.45;text-align:center;box-shadow:0 0 22px #22c55e47;pointer-events:none;animation:fadeSlideIn .22s ease-out}.info-panel{position:absolute;top:8px;left:50%;transform:translate(calc(50% + 160px));width:min(92vw,420px);max-height:72vh;z-index:60;border-radius:14px;border:1px solid rgba(34,197,94,.28);background:#05080cd9;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 20px 44px #0000008c,0 0 28px #22c55e1a;overflow:hidden;animation:infoPanelIn .22s ease-out}.info-panel-compact{width:min(92vw,360px)}@keyframes infoPanelIn{0%{opacity:0;transform:translate(calc(50% + 148px)) translateY(8px) scale(.98)}to{opacity:1;transform:translate(calc(50% + 160px)) translateY(0) scale(1)}}.info-panel-close{position:absolute;top:8px;right:10px;width:26px;height:26px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:#ffffff14;color:#e5e7ebe6;font-size:18px;line-height:1;cursor:pointer}.info-panel-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:12px 12px 10px;border-bottom:1px solid rgba(255,255,255,.08)}.info-panel-tab{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#ffffff08;color:#d1d5dbe0;font-size:11px;cursor:pointer}.info-panel-tab-active{border-color:#22c55e66;background:#22c55e1f;color:#d1fae5}.info-panel-content{max-height:calc(72vh - 24px);overflow-y:auto;padding:14px}.info-tab-body{display:flex;flex-direction:column;gap:10px}.info-heading{font-size:16px;font-weight:700;color:#f8fafc}.info-subheading{font-size:12px;font-weight:700;color:#d1d5db}.info-text{font-size:12px;color:#cbd5e1;line-height:1.55}.info-badge-row,.info-skill-chips{display:flex;flex-wrap:wrap;gap:6px}.info-badge,.info-chip{padding:4px 8px;border-radius:999px;font-size:11px;border:1px solid transparent}.info-badge-green,.info-chip-green{color:#86efac;border-color:#4ade8066;background:#14532d59}.info-badge-purple,.info-chip-purple{color:#d8b4fe;border-color:#c084fc66;background:#581c8759}.info-badge-blue{color:#93c5fd;border-color:#60a5fa66;background:#1e40af59}.info-exp,.info-project{padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:#ffffff05}.info-exp-item,.info-project-header{display:flex;justify-content:space-between;gap:8px}.info-exp-role,.info-project-name{font-size:12px;font-weight:700;color:#f8fafc}.info-exp-date,.info-project-tech{font-size:11px;color:#94a3b8}.info-exp-desc,.info-project-desc,.info-cert{font-size:11px;color:#cbd5e1;line-height:1.5}.info-cert-list{display:flex;flex-direction:column;gap:6px}.info-cert span{color:#94a3b8}.info-project-link{color:#86efac;text-decoration:none}.info-contact-list{display:flex;flex-direction:column;gap:8px}.info-contact-item{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#d1d5db;padding:8px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.09);background:#ffffff08;text-decoration:none}.info-contact-item:hover{border-color:#22c55e59}.info-location{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:11px;color:#94a3b8}.info-status{color:#86efac}@media(max-width:1024px){.info-panel{left:50%;transform:translate(-50%);top:calc(100% + 10px);width:min(94vw,430px)}@keyframes infoPanelIn{0%{opacity:0;transform:translate(-50%) translateY(8px) scale(.98)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}}@media(max-width:640px){.hero-avatar-shell{cursor:default}.hero-avatar-back,.hero-avatar-front{display:none}.hero-avatar-mid{filter:drop-shadow(0 14px 24px rgba(0,0,0,.52)) drop-shadow(0 0 14px rgba(34,197,94,.18))!important}.avatar-hint,.avatar-eye{display:none}.avatar-fact-bubble{top:auto;bottom:-20px;width:min(92vw,300px);padding:8px 10px;border-radius:9px;font-size:11px;line-height:1.4}.info-panel{position:fixed;left:50%;right:auto;top:auto;bottom:88px;transform:translate(-50%);width:min(94vw,360px);max-height:58vh;border-radius:12px}.info-panel-close{width:24px;height:24px;font-size:16px}.info-panel-content{max-height:calc(58vh - 20px);padding:12px}.info-heading{font-size:15px}.info-text{font-size:11px;line-height:1.45}.info-chip,.info-badge{font-size:10px;padding:3px 7px}}.text-glow:hover{text-shadow:0 0 10px currentColor}*{transition-property:background-color,border-color;transition-duration:.3s;transition-timing-function:ease-in-out}.preload *{transition:none!important}
