:root{--spacing-unit: 8px;--spacing-0: 0;--spacing-1: 8px;--spacing-2: 16px;--spacing-3: 24px;--spacing-4: 32px;--spacing-5: 40px;--spacing-6: 48px;--spacing-8: 64px;--spacing-10: 80px;--spacing-12: 96px;--spacing-16: 128px;--container-max-width: 1200px;--container-max-width-wide: 1440px;--container-max-width-narrow: 960px;--container-padding-x: clamp(16px, 5vw, 64px);--container-padding-y: clamp(32px, 8vh, 96px);--section-gap: var(--spacing-16);--section-gap-mobile: var(--spacing-12);--card-gap: var(--spacing-4);--card-gap-mobile: var(--spacing-3);--content-gap: var(--spacing-3);--content-gap-small: var(--spacing-2);--touch-target-min: 44px;--touch-target-mobile: 48px;--spacing-google-standard: 72px;--breakpoint-mobile: 479px;--breakpoint-tablet: 767px;--breakpoint-tablet-lg: 1023px;--breakpoint-desktop: 1024px;--breakpoint-desktop-lg: 1440px}@media(max-width:768px){:root{--section-gap: var(--spacing-12);--card-gap: var(--spacing-3)}}@media(max-width:480px){:root{--section-gap: var(--spacing-10);--card-gap: var(--spacing-2);--content-gap: var(--spacing-2)}}:root{--color-primary: #3b82f6;--color-primary-light: #60a5fa;--color-primary-dark: #2563eb;--color-primary-50: #eff6ff;--color-primary-100: #dbeafe;--color-accent: #14b8a6;--color-accent-light: #5eead4;--color-accent-dark: #0f766e;--color-accent-50: #f0fdfa;--color-neutral-50: #fafaf9;--color-neutral-100: #f5f5f4;--color-neutral-200: #e7e5e4;--color-neutral-300: #d6d3d1;--color-neutral-400: #a8a29e;--color-neutral-500: #78716c;--color-neutral-600: #57534e;--color-neutral-700: #44403c;--color-neutral-800: #292524;--color-neutral-900: #1c1917;--color-neutral-950: #0a0a0a;--color-success: #10b981;--color-success-light: #34d399;--color-success-dark: #059669;--color-warning: #f59e0b;--color-warning-light: #fbbf24;--color-warning-dark: #d97706;--color-error: #ef4444;--color-error-light: #f87171;--color-error-dark: #dc2626;--color-info: #3b82f6;--color-info-light: #60a5fa;--color-info-dark: #2563eb;--color-text-primary: #1a1a1a;--color-text-secondary: #666666;--color-text-tertiary: #999999;--color-text-disabled: #cccccc;--color-text-inverse: #ffffff;--color-bg-primary: #ffffff;--color-bg-secondary: #fafaf8;--color-bg-tertiary: #f5f5f7;--color-bg-elevated: #ffffff;--color-bg-overlay: rgba(0, 0, 0, .6);--color-border-light: rgba(0, 0, 0, .08);--color-border-medium: rgba(0, 0, 0, .12);--color-border-dark: rgba(0, 0, 0, .2);--gradient-primary: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);--gradient-primary-soft: linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%);--gradient-accent: linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);--gradient-accent-soft: linear-gradient(135deg, #5eead4 0%, #14b8a6 100%);--gradient-rainbow: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);--gradient-rainbow-bright: linear-gradient(135deg, #fa709a 0%, #fee140 50%, #30cfd0 100%);--gradient-sunset: linear-gradient(135deg, #fa709a 0%, #fee140 100%);--gradient-tech: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-base: 0 4px 6px rgba(0, 0, 0, .05), 0 2px 4px rgba(0, 0, 0, .03);--shadow-md: 0 4px 20px rgba(0, 0, 0, .08), 0 2px 10px rgba(0, 0, 0, .05);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .12), 0 6px 20px rgba(0, 0, 0, .08);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .15), 0 10px 30px rgba(0, 0, 0, .1);--shadow-primary: 0 4px 24px rgba(59, 130, 246, .35), 0 2px 12px rgba(59, 130, 246, .25);--shadow-accent: 0 4px 24px rgba(20, 184, 166, .35), 0 2px 12px rgba(20, 184, 166, .25);--shadow-error: 0 4px 24px rgba(248, 113, 113, .35), 0 2px 12px rgba(248, 113, 113, .25);--opacity-disabled: .4;--opacity-hover: .8;--opacity-active: .6;--color-accent-warm: #FF9A9E;--color-accent-warm-dark: #ff8e53;--color-accent-warm-light: #ffecd2;--color-accent-purple: #a855f7;--color-accent-purple-light: #8b89ff;--color-accent-purple-dark: #7c3aed;--color-accent-rose: #f43f5e;--color-accent-rose-light: #fda4af;--color-accent-rose-dark: #e11d48;--gradient-error: linear-gradient(135deg, #f87171 0%, #ef4444 100%);--gradient-error-hover: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);--gradient-dark: linear-gradient(135deg, #1a1a1a 0%, #374151 100%);--gradient-dark-hover: linear-gradient(135deg, #374151 0%, #4b5563 100%);--gradient-bg-warm: linear-gradient(to bottom, #F5F5F7 0%, #FAFAF8 100%);--gradient-bg-cool: linear-gradient(to bottom, #FAFAF8 0%, #F5F5F7 100%);--gradient-timeline: linear-gradient(to bottom, #14b8a6 0%, #3b82f6 50%, #a855f7 100%);--gradient-skill: linear-gradient(90deg, #14b8a6 0%, #3b82f6 100%);--gradient-progress: linear-gradient(90deg, #3b82f6 0%, #2563eb 100%);--gradient-blob-accent: linear-gradient(135deg, #14b8a6 0%, #0d9488 50%, #0f766e 100%);--gradient-blob-primary: linear-gradient(135deg, #3b82f6 0%, #2563eb 50%, #1d4ed8 100%);--gradient-blob-purple: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 50%, #6d28d9 100%);--gradient-blob-rose: linear-gradient(135deg, #f43f5e 0%, #e11d48 50%, #be123c 100%);--gradient-skill-icon: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);--color-tag-accent-bg: #f0fdf4;--color-tag-primary-bg: #eff6ff;--color-tag-purple-bg: #faf5ff;--color-tag-rose-bg: #fff1f2;--color-decoration-indigo: #667eea;--shadow-warm: 0 4px 24px rgba(255, 154, 158, .35), 0 2px 12px rgba(255, 154, 158, .25);--shadow-purple: 0 4px 24px rgba(168, 85, 247, .35), 0 2px 12px rgba(168, 85, 247, .25);--shadow-rose: 0 4px 24px rgba(244, 63, 94, .35), 0 2px 12px rgba(244, 63, 94, .25);--shadow-card-hover: 0 12px 40px rgba(0, 0, 0, .12), 0 6px 20px rgba(0, 0, 0, .08);--shadow-btn-hover: 0 8px 32px rgba(0, 0, 0, .2), 0 4px 16px rgba(0, 0, 0, .15);--btn-primary-bg: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);--btn-primary-bg-hover: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);--btn-primary-shadow: 0 4px 14px rgba(59, 130, 246, .35);--btn-primary-shadow-hover: 0 8px 24px rgba(59, 130, 246, .45);--btn-secondary-bg: linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);--btn-secondary-bg-hover: linear-gradient(135deg, #0d9488 0%, #0f766e 100%);--btn-secondary-shadow: 0 4px 14px rgba(20, 184, 166, .35);--btn-secondary-shadow-hover: 0 8px 24px rgba(20, 184, 166, .45);--btn-chip-active-bg: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);--btn-chip-active-shadow: 0 4px 12px rgba(59, 130, 246, .3);--btn-ghost-underline: linear-gradient(90deg, rgba(59, 130, 246, .8), rgba(20, 184, 166, .8));--glass-bg: rgba(255, 255, 255, .72);--glass-bg-dark: rgba(0, 0, 0, .72);--glass-border: rgba(255, 255, 255, .18);--glass-border-dark: rgba(255, 255, 255, .08);--glass-blur: blur(20px) saturate(180%);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .08)}:root{--font-family-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-secondary: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;--font-family-serif: "Times New Roman", "Georgia", "Cambria", serif;--font-family-mono: "Monaco", "Menlo", "Consolas", "Courier New", monospace;--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-display-large: clamp(3.5rem, 8vw, 5.5rem);--font-display-medium: clamp(2.5rem, 6vw, 4rem);--font-display-small: clamp(2rem, 5vw, 3rem);--font-display-weight: var(--font-weight-bold);--font-display-line-height: 1.15;--font-display-letter-spacing: -.03em;--font-headline-large: clamp(2.5rem, 5vw, 3.5rem);--font-headline-medium: clamp(2rem, 4vw, 2.75rem);--font-headline-small: clamp(1.75rem, 3.5vw, 2.25rem);--font-headline-weight: var(--font-weight-bold);--font-headline-line-height: 1.1;--font-headline-letter-spacing: -.02em;--font-title-large: 1.75rem;--font-title-medium: 1.375rem;--font-title-small: 1.125rem;--font-title-weight: var(--font-weight-semibold);--font-title-line-height: 1.25;--font-title-letter-spacing: -.01em;--font-body-large: 1.125rem;--font-body-medium: 1rem;--font-body-small: .875rem;--font-body-weight: var(--font-weight-regular);--font-body-weight-medium: var(--font-weight-medium);--font-body-line-height: 1.6;--font-body-letter-spacing: 0;--font-label-large: 1.0625rem;--font-label-medium: .9375rem;--font-label-small: .8125rem;--font-label-weight: var(--font-weight-medium);--font-label-line-height: 1.4;--font-label-letter-spacing: .02em;--font-caption: .75rem;--font-caption-weight: var(--font-weight-regular);--font-caption-line-height: 1.4;--font-overline: .75rem;--font-overline-weight: var(--font-weight-semibold);--font-overline-line-height: 1.4;--font-overline-letter-spacing: .1em;--font-overline-transform: uppercase;--line-height-tight: 1.1;--line-height-snug: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--line-height-loose: 2}@media(max-width:768px){:root{--font-display-large: clamp(2.5rem, 8vw, 3.5rem);--font-display-medium: clamp(2rem, 6vw, 2.75rem);--font-headline-large: clamp(2rem, 5vw, 2.5rem);--font-headline-medium: clamp(1.75rem, 4vw, 2rem)}}@media(max-width:480px){:root{--font-display-large: clamp(2rem, 8vw, 2.5rem);--font-display-medium: clamp(1.75rem, 6vw, 2rem);--font-headline-large: clamp(1.75rem, 5vw, 2rem);--font-headline-medium: clamp(1.5rem, 4vw, 1.75rem);--font-body-medium: .875rem;--font-body-small: .875rem}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1,"liga" 1;font-family:var(--font-family-secondary)}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);letter-spacing:-.02em}.font-serif{font-family:var(--font-family-serif)}button,input,select,textarea{font-family:var(--font-family-secondary)}code,pre{font-family:var(--font-family-mono)}:root{--duration-instant: .1s;--duration-fast: .2s;--duration-base: .3s;--duration-slow: .5s;--duration-slower: .8s;--ease-out: cubic-bezier(.4, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-in-out: cubic-bezier(.4, 0, .6, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-smooth: cubic-bezier(.25, .1, .25, 1);--ease-linear: linear;--transition-button: all var(--duration-fast) var(--ease-out);--transition-card: all var(--duration-slow) var(--ease-out);--transition-color: color var(--duration-base) var(--ease-out), background-color var(--duration-base) var(--ease-out);--transition-transform: transform var(--duration-base) var(--ease-out);--transition-opacity: opacity var(--duration-base) var(--ease-out);--delay-0: 0ms;--delay-100: .1s;--delay-200: .2s;--delay-300: .3s;--delay-500: .5s;--delay-1000: 1s;--gpu-acceleration: translateZ(0);--will-change-transform: transform, opacity}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes rotateIn{0%{opacity:0;transform:rotate(-10deg) scale(.9)}to{opacity:1;transform:rotate(0) scale(1)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes rippleExpand1{0%{transform:scale(.9);opacity:0}10%{opacity:.6}to{transform:scale(1.6);opacity:0}}@keyframes rippleExpand2{0%{transform:scale(.85);opacity:0}15%{opacity:.4}to{transform:scale(1.8);opacity:0}}@keyframes buttonGlow{0%,to{box-shadow:0 4px 24px #3b82f659,0 2px 12px #3b82f640}50%{box-shadow:0 8px 40px #3b82f68c,0 4px 20px #3b82f666,0 0 60px #3b82f64d}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(max-width:768px){:root{--duration-slow: .4s;--duration-slower: .6s}}@keyframes pageEnter{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.8)}70%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes blurIn{0%{opacity:0;filter:blur(10px)}to{opacity:1;filter:blur(0)}}.page-enter{animation:pageEnter var(--duration-slower) var(--ease-out)}.stagger-1{animation-delay:.1s}.stagger-2{animation-delay:.2s}.stagger-3{animation-delay:.3s}.stagger-4{animation-delay:.4s}.stagger-5{animation-delay:.5s}.stagger-6{animation-delay:.6s}.scroll-animate{opacity:0;transform:translateY(20px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}.scroll-animate.visible{opacity:1;transform:translateY(0)}.scroll-animate-left{opacity:0;transform:translate(-20px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}.scroll-animate-left.visible{opacity:1;transform:translate(0)}.scroll-animate-right{opacity:0;transform:translate(20px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}.scroll-animate-right.visible{opacity:1;transform:translate(0)}.scroll-animate-scale{opacity:0;transform:scale(.95);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}.scroll-animate-scale.visible{opacity:1;transform:scale(1)}@keyframes liquidGlass{0%{-webkit-backdrop-filter:blur(10px) saturate(100%);backdrop-filter:blur(10px) saturate(100%);background:#ffffff80}50%{-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:#ffffffb3}to{-webkit-backdrop-filter:blur(10px) saturate(100%);backdrop-filter:blur(10px) saturate(100%);background:#ffffff80}}@keyframes gentleFloat{0%,to{transform:translateY(0) rotate(0)}33%{transform:translateY(-8px) rotate(1deg)}66%{transform:translateY(-4px) rotate(-1deg)}}@keyframes breatheGlow{0%,to{box-shadow:0 0 20px #60a5fa33}50%{box-shadow:0 0 40px #60a5fa66}}@keyframes gradientFlow{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes cardLift{0%{transform:translateY(0) perspective(1000px) rotateX(0);box-shadow:0 4px 20px #0000001a}to{transform:translateY(-8px) perspective(1000px) rotateX(2deg);box-shadow:0 20px 40px #00000026}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}.animate-liquid-glass{animation:liquidGlass 4s var(--ease-smooth) infinite}.animate-float{animation:gentleFloat 6s var(--ease-smooth) infinite}.animate-breathe{animation:breatheGlow 3s var(--ease-smooth) infinite}.animate-gradient-flow{background-size:200% 200%;animation:gradientFlow 8s var(--ease-smooth) infinite}.hero-cinematic-content{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 2rem;min-height:100vh;position:relative}.hero-title-wrapper{display:flex;align-items:flex-start;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.hero-quote{font-family:Times New Roman,Georgia,serif;font-size:clamp(2rem,5vw,4rem);color:#fff6;font-style:italic;line-height:1;margin-top:-.5rem}.hero-title-cinematic{font-family:Times New Roman,Georgia,serif;font-size:clamp(2.5rem,5vw,4.5rem);font-weight:400;font-style:italic;letter-spacing:.02em;color:#fff;line-height:1.15;min-height:1.2em;text-shadow:0 2px 20px rgba(0,0,0,.3),0 4px 40px rgba(0,0,0,.2);white-space:nowrap;margin:0}.typewriter-text{display:inline}.mobile-break{display:none}.typewriter-cursor{display:inline-block;color:#ffffffe6;font-weight:100;margin-left:2px;opacity:0;transition:opacity .1s ease}.typewriter-cursor.visible{opacity:1}.hero-subtitle-cinematic{font-family:var(--font-family-primary);font-size:clamp(1.125rem,3vw,1.75rem);font-weight:300;letter-spacing:.15em;color:#fff8ebf2;margin-bottom:2rem;opacity:0;transform:translateY(15px);transition:all .8s cubic-bezier(.4,0,.2,1);transition-delay:.3s;text-shadow:0 2px 15px rgba(0,0,0,.25)}.hero-subtitle-cinematic.visible{opacity:1;transform:translateY(0)}.hero-description-cinematic{font-family:var(--font-family-primary);font-size:clamp(.9375rem,2vw,1.125rem);font-weight:300;letter-spacing:.05em;color:#fffc;margin-bottom:3rem;max-width:500px;line-height:1.8;opacity:0;transform:translateY(15px);transition:all .8s cubic-bezier(.4,0,.2,1);transition-delay:.5s;text-shadow:0 2px 10px rgba(0,0,0,.2)}.hero-description-cinematic.visible{opacity:1;transform:translateY(0)}.hero-cta-cinematic{display:flex;gap:1.25rem;justify-content:center;flex-wrap:wrap;opacity:0;transform:translateY(15px);transition:all .8s cubic-bezier(.4,0,.2,1);transition-delay:.7s}.hero-cta-cinematic.visible{opacity:1;transform:translateY(0)}.hero-cinematic-footer{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:3rem;font-family:var(--font-family-primary);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:#ffffff8c;opacity:0;transform:translateY(10px);transition:all .8s cubic-bezier(.4,0,.2,1);transition-delay:.9s}.hero-cinematic-footer.visible{opacity:1;transform:translateY(0)}.meta-icon{font-size:.4rem;color:#ffb478e6;animation:hero-pulse-glow 3s ease-in-out infinite}@keyframes hero-pulse-glow{0%,to{opacity:.7}50%{opacity:1;text-shadow:0 0 8px rgba(255,180,120,.6)}}.meta-text{font-weight:400}.meta-divider{width:40px;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent)}@media(max-width:768px){.hero-cinematic-content{padding:0 1.5rem}.hero-subtitle-cinematic{letter-spacing:.1em}.hero-cta-cinematic{flex-direction:column;align-items:center;gap:1rem}.hero-cinematic-footer{margin-top:2.5rem}}@media(max-width:480px){.hero-cinematic-content{padding:0 1rem}.hero-title-wrapper{margin-bottom:1rem}.hero-quote{font-size:clamp(1.5rem,8vw,2.5rem)}.hero-title-cinematic{white-space:normal;font-size:clamp(2rem,10vw,2.75rem);line-height:1.2}.mobile-break{display:block}.hero-subtitle-cinematic{margin-bottom:1.5rem;letter-spacing:.08em}.hero-description-cinematic{margin-bottom:2rem}.hero-cinematic-footer{margin-top:2rem;font-size:.6875rem;gap:.5rem}.meta-divider{width:25px}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Helvetica Neue,Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mt-2{margin-top:.5rem}.block{display:block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-\[70px\]{height:70px}.max-w-screen-xl{max-width:1280px}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:2rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-semibold{font-weight:600}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/60{color:#fff9}.text-white\/80{color:#fffc}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-500{transition-duration:.5s}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;overscroll-behavior:none;overflow-x:clip}@media(pointer:coarse){html{scroll-behavior:auto!important}}@supports (-webkit-overflow-scrolling: touch){html{scroll-behavior:auto!important}}body{margin:0;padding:0;min-width:320px;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg-primary);color:var(--color-text-primary);overflow-x:clip;overscroll-behavior-y:none}.gradient-text-rainbow{background:linear-gradient(90deg,#bc82f3,#f5b9ea,#8d9fff,#aa6eee,#ff6778,#ffba71,#c686ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;background-size:100%}.gradient-text-rainbow-bright{background:linear-gradient(90deg,#d4a5ff,#ffcef3,#a8b6ff,#c89aff,#ff8a9a,#ffd19a,#dba8ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;background-size:100%}.gradient-text-sunset{background:linear-gradient(90deg,#ffb88c,#ff9a9e,#fad0c4);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;background-size:100%}.gradient-text-tech{background:linear-gradient(90deg,#667eea,#764ba2);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;background-size:100%}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:px-8{padding-left:2rem;padding-right:2rem}}:root{--header-ease: cubic-bezier(.4, 0, .2, 1)}.header{--warp-size: 100px;--warp-duration: 1.8s;--warp-blur: 1px;--ray-deep: rgba(42, 74, 122, .5);--ray-mid: rgba(96, 144, 208, .7);--ray-light: rgba(160, 196, 255, .85);--ray-white: rgba(255, 255, 255, 1);--warp-opacity: 1;--warp-opacity-secondary: .9;transition:background-color .5s var(--header-ease),border-color .5s var(--header-ease),box-shadow .5s var(--header-ease),backdrop-filter .5s var(--header-ease)}.header-logo{font-family:Great Vibes,Brush Script MT,Lucida Handwriting,cursive;font-size:1.4rem;letter-spacing:.02em;line-height:1.6;padding:.25em 0;overflow:visible;transition:color .4s var(--header-ease),opacity .4s var(--header-ease)}.header-logo:hover{transform:scale(1.05);filter:brightness(1.1)}.header-transparent{--warp-opacity: 1;--warp-opacity-secondary: .9;background:#0000001a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.1)}.header-scrolled{--warp-opacity: .5;--warp-opacity-secondary: .4;background:#fffffff2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(0,0,0,.08);box-shadow:0 1px 3px #0000000d,0 1px 2px #00000008}.header-scrolled-dark{--warp-opacity: 1;--warp-opacity-secondary: .9;background:#0009;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(255,255,255,.1)}.header-nav-item{position:relative;padding:8px 16px;font-weight:400;border-radius:24px;overflow:visible;z-index:1;transition:color .3s ease,font-weight .3s ease,transform .2s ease}.header-nav-item:before,.header-nav-item:after{content:"";position:absolute;top:50%;left:50%;width:var(--warp-size);height:var(--warp-size);transform:translate(-50%,-50%) scale(0);filter:blur(var(--warp-blur));-webkit-mask:radial-gradient(circle,transparent 3%,black 8%,black 50%,transparent 85%);mask:radial-gradient(circle,transparent 3%,black 8%,black 50%,transparent 85%);opacity:0;pointer-events:none}.header-nav-item:before{z-index:-2;background:repeating-conic-gradient(from 0deg,transparent 0deg,var(--ray-deep) .6deg,var(--ray-mid) 1.2deg,var(--ray-light) 1.8deg,var(--ray-white) 2.4deg,var(--ray-light) 3deg,var(--ray-mid) 3.6deg,var(--ray-deep) 4.2deg,transparent 4.8deg,transparent 45deg),repeating-conic-gradient(from 22.5deg,transparent 0deg,rgba(42,74,122,.35) .5deg,rgba(96,144,208,.5) 1deg,rgba(160,196,255,.65) 1.5deg,rgba(255,255,255,.8) 2deg,rgba(160,196,255,.65) 2.5deg,rgba(96,144,208,.5) 3deg,rgba(42,74,122,.35) 3.5deg,transparent 4deg,transparent 45deg),repeating-conic-gradient(from 11deg,transparent 0deg,rgba(96,144,208,.3) .4deg,rgba(160,196,255,.45) .8deg,rgba(255,255,255,.55) 1.2deg,rgba(160,196,255,.45) 1.6deg,rgba(96,144,208,.3) 2deg,transparent 2.4deg,transparent 45deg)}.header-nav-item:after{z-index:-1;background:repeating-conic-gradient(from 8deg,transparent 0deg,rgba(42,74,122,.45) .6deg,rgba(96,144,208,.65) 1.2deg,rgba(160,196,255,.8) 1.8deg,rgba(255,255,255,.95) 2.4deg,rgba(160,196,255,.8) 3deg,rgba(96,144,208,.65) 3.6deg,rgba(42,74,122,.45) 4.2deg,transparent 4.8deg,transparent 45deg),repeating-conic-gradient(from 30.5deg,transparent 0deg,rgba(42,74,122,.3) .5deg,rgba(96,144,208,.45) 1deg,rgba(160,196,255,.6) 1.5deg,rgba(255,255,255,.75) 2deg,rgba(160,196,255,.6) 2.5deg,rgba(96,144,208,.45) 3deg,rgba(42,74,122,.3) 3.5deg,transparent 4deg,transparent 45deg)}.header-nav-item:is(:hover,.active){transform:translateY(-2px);font-weight:500}.header-nav-item:is(:hover,.active):before{opacity:var(--warp-opacity);animation:warp-drive var(--warp-duration) ease-out infinite}.header-nav-item:is(:hover,.active):after{opacity:var(--warp-opacity-secondary);animation:warp-drive var(--warp-duration) ease-out infinite .9s}.header-nav-item:active{transform:translateY(0) scale(.98);transition:all .1s ease}@keyframes warp-drive{0%{transform:translate(-50%,-50%) scale(.15);opacity:0}10%{opacity:.9}50%{opacity:.6}to{transform:translate(-50%,-50%) scale(1);opacity:0}}@media(prefers-reduced-motion:reduce){.header-nav-item:before,.header-nav-item:after{animation:none!important}.header-nav-item:is(:hover,.active):before,.header-nav-item:is(:hover,.active):after{transform:translate(-50%,-50%) scale(.6)}}.hamburger-button{position:relative;width:44px;height:44px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;background:transparent;border:none;cursor:pointer;z-index:60;transition:all .3s var(--header-ease)}.hamburger-line{width:24px;height:2px;background-color:currentColor;transition:all .3s var(--header-ease);transform-origin:center}.header-transparent .hamburger-button{color:#fff}.header-scrolled .hamburger-button{color:#1f2937}.header-scrolled-dark .hamburger-button{color:#fff}.hamburger-button.active .hamburger-line:nth-child(1){transform:translateY(8px) rotate(45deg)}.hamburger-button.active .hamburger-line:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger-button.active .hamburger-line:nth-child(3){transform:translateY(-8px) rotate(-45deg)}.mobile-menu{position:fixed;inset:0;z-index:50;pointer-events:none;opacity:0;transition:opacity .3s var(--header-ease)}.mobile-menu.active{pointer-events:auto;opacity:1}.mobile-menu-overlay{position:absolute;inset:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;transition:opacity .3s var(--header-ease)}.mobile-menu.active .mobile-menu-overlay{opacity:1}.mobile-menu-panel{position:absolute;inset:0 0 auto;min-height:100vh;background:#000000d9;backdrop-filter:blur(24px) saturate(120%);-webkit-backdrop-filter:blur(24px) saturate(120%);display:flex;flex-direction:column;padding:80px 24px 40px;transform:translateY(-100%);transition:transform .5s var(--header-ease)}.mobile-menu.active .mobile-menu-panel{transform:translateY(0)}.mobile-menu-close{position:absolute;top:20px;right:20px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;transition:all .3s var(--header-ease)}.mobile-menu-close:hover{background:#fff3;transform:rotate(90deg)}.mobile-menu-close:active{transform:rotate(90deg) scale(.95)}.mobile-menu-nav{flex:1;display:flex;flex-direction:column;justify-content:center;gap:8px;margin-top:40px}.mobile-menu-item{display:block;padding:16px 20px;font-family:var(--font-family-primary);font-size:1.5rem;font-weight:400;color:#ffffffb3;text-decoration:none;border-radius:16px;position:relative;overflow:hidden;opacity:0;transform:translateY(-20px);animation:slideInFromTop .5s var(--header-ease) forwards;transition:all .3s var(--header-ease)}.mobile-menu-item:before{content:"";position:absolute;inset:0;border-radius:16px;background:linear-gradient(135deg,#14b8a600,#3b82f600,#8b5cf600);opacity:0;transition:all .4s ease}.mobile-menu-item:hover{color:#fff}.mobile-menu-item:hover:before{background:linear-gradient(135deg,#14b8a626,#3b82f61a,#8b5cf626);opacity:1}.mobile-menu-item.active{background:linear-gradient(135deg,#14b8a64d,#3b82f640,#8b5cf64d);color:#fff;font-weight:500}.mobile-menu-item.active:hover{background:linear-gradient(135deg,#14b8a666,#3b82f659,#8b5cf666)}.mobile-menu-footer{padding:24px 20px;text-align:center;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.mobile-menu-footer p{font-family:Great Vibes,cursive;font-size:1.5rem}.mobile-menu-footer p:last-child{font-family:var(--font-family-secondary);font-size:.875rem;color:#ffffff80;margin-top:.5rem}@keyframes slideInFromTop{to{opacity:1;transform:translateY(0)}}@media(min-width:640px){.header-logo{font-size:1.6rem}}@media(min-width:768px){.header-logo{font-size:1.8rem}.hamburger-button,.mobile-menu{display:none}}.footer{--footer-ease: cubic-bezier(.4, 0, .2, 1);--footer-bg: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);--footer-text: #64748b;--footer-text-hover: #0f172a;--footer-accent: #14b8a6;--footer-border: rgba(0, 0, 0, .06)}.footer{background:var(--footer-bg);border-top:1px solid var(--footer-border);position:relative;overflow:hidden}.footer:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(20,184,166,.3) 20%,rgba(59,130,246,.3) 50%,rgba(139,92,246,.3) 80%,transparent 100%)}.footer-content{max-width:1280px;margin:0 auto;padding:48px 24px 32px}.footer-main{display:grid;grid-template-columns:1fr;gap:40px;margin-bottom:40px}@media(min-width:768px){.footer-main{grid-template-columns:2fr 1fr 1fr;gap:48px}}.footer-brand{max-width:400px}.footer-logo{font-family:Great Vibes,Brush Script MT,cursive;font-size:2rem;color:#0f172a;margin-bottom:12px;display:inline-block;transition:all .3s var(--footer-ease)}.footer-logo:hover{transform:scale(1.02);color:var(--footer-accent)}.footer-tagline{font-size:.9375rem;line-height:1.7;color:var(--footer-text);margin-bottom:20px}.footer-skills{display:flex;flex-wrap:wrap;gap:8px}.footer-skill-tag{padding:6px 14px;font-size:.75rem;font-weight:500;color:#475569;background:#fffc;border:1px solid rgba(0,0,0,.06);border-radius:20px;transition:all .3s var(--footer-ease);cursor:default}.footer-skill-tag:hover{background:#14b8a61a;border-color:#14b8a64d;color:var(--footer-accent);transform:translateY(-2px)}.footer-nav-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:#0f172a;margin-bottom:20px}.footer-nav-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 24px}@media(min-width:768px){.footer-nav-list{grid-template-columns:1fr;gap:12px}}.footer-nav-link{display:inline-flex;align-items:center;gap:8px;font-size:.875rem;color:var(--footer-text);text-decoration:none;transition:all .3s var(--footer-ease)}.footer-nav-link:before{content:"";width:0;height:2px;background:var(--footer-accent);border-radius:1px;transition:width .3s var(--footer-ease)}.footer-nav-link:hover{color:var(--footer-text-hover);transform:translate(4px)}.footer-nav-link:hover:before{width:16px}.footer-social-list{display:flex;flex-direction:column;gap:16px}.footer-social-link{display:flex;align-items:center;gap:12px;font-size:.875rem;color:var(--footer-text);text-decoration:none;transition:all .3s var(--footer-ease)}.footer-social-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#fffc;border:1px solid rgba(0,0,0,.06);border-radius:50%;transition:all .3s var(--footer-ease)}.footer-social-icon svg{width:18px;height:18px;transition:all .3s var(--footer-ease)}.footer-social-link:hover{color:var(--footer-text-hover)}.footer-social-link:hover .footer-social-icon{transform:translateY(-3px);box-shadow:0 4px 12px #0000001a}.footer-social-link[data-social=github]:hover .footer-social-icon{background:#24292f;border-color:#24292f}.footer-social-link[data-social=github]:hover .footer-social-icon svg{color:#fff}.footer-social-link[data-social=email]:hover .footer-social-icon{background:var(--footer-accent);border-color:var(--footer-accent)}.footer-social-link[data-social=email]:hover .footer-social-icon svg{color:#fff}.footer-social-text{transition:transform .3s var(--footer-ease)}.footer-social-link:hover .footer-social-text{transform:translate(4px)}.footer-bottom{padding-top:24px;border-top:1px solid var(--footer-border);display:flex;flex-direction:column;align-items:center;gap:16px;font-size:.75rem;color:#94a3b8}@media(min-width:768px){.footer-bottom{flex-direction:row;justify-content:space-between}}.footer-copyright{text-align:center}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px}.footer-links a{color:#94a3b8;text-decoration:none;transition:color .3s var(--footer-ease)}.footer-links a:hover{color:var(--footer-accent)}.footer-divider{color:#cbd5e1}.footer-built{color:#94a3b8}.back-to-top{position:fixed;bottom:24px;right:24px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#14b8a6,#3b82f6);color:#fff;border:none;border-radius:50%;cursor:pointer;z-index:50;opacity:0;visibility:hidden;transform:translateY(20px);transition:all .3s var(--footer-ease);box-shadow:0 4px 16px #14b8a64d}.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{transform:translateY(-4px);box-shadow:0 8px 24px #14b8a666}.back-to-top:active{transform:translateY(-2px)}.back-to-top svg{width:24px;height:24px;transition:transform .3s var(--footer-ease)}.back-to-top:hover svg{transform:translateY(-2px)}@media(min-width:640px){.footer-content{padding:56px 32px 36px}}@media(min-width:1024px){.footer-content{padding:64px 48px 40px}.back-to-top{bottom:32px;right:32px}}@media(prefers-reduced-motion:reduce){.footer-logo,.footer-skill-tag,.footer-nav-link,.footer-social-link,.footer-social-icon,.back-to-top{transition:none}}.layout{min-height:100vh;display:flex;flex-direction:column}.layout-main{flex:1;padding-top:70px;min-height:calc(100vh - 70px)}#root{width:100%;min-height:100vh;overflow-x:clip}.page-loading{display:flex;justify-content:center;align-items:center;min-height:50vh}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border, #e5e7eb);border-top-color:var(--color-primary, #3b82f6);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.user-inactive .home-btn-primary,.user-inactive .apple-button-primary{animation:buttonGlow 2s ease-in-out infinite}.user-inactive .header-nav-item.active:before{animation:rippleExpand1 2.5s cubic-bezier(.4,0,.2,1) infinite,headerGlow 3s ease-in-out infinite}@keyframes headerGlow{0%,to{opacity:1}50%{opacity:.6}}*:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;transition:outline-offset var(--duration-fast) var(--ease-out)}button:hover:focus-visible,a:hover:focus-visible{outline-offset:6px}*:focus{outline:none}
