:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Display", system-ui, sans-serif;--font-mono: "SF Mono", ui-monospace, "Cascadia Code", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--space-10: 120px;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 999px;--ease-apple: cubic-bezier(.25, .1, .25, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 24px rgba(0, 0, 0, .06);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .1);--shadow-card: 0 2px 12px rgba(0, 0, 0, .08);--header-h: 52px;--subnav-h: 48px;--content-max: 980px;--transition-fast: .15s var(--ease-apple);--transition-base: .22s var(--ease-apple);--transition-slow: .32s var(--ease-apple)}:root,[data-theme=light]{--bg: #ffffff;--bg-elev: #f5f5f7;--bg-glass: rgba(255, 255, 255, .72);--bg-glass-hover: rgba(255, 255, 255, .88);--fg: #1d1d1f;--fg-secondary: #6e6e73;--fg-tertiary: #86868b;--border: rgba(0, 0, 0, .08);--border-strong: rgba(0, 0, 0, .15);--accent: #0071e3;--accent-hover: #0077ed;--accent-fg: #ffffff;--overlay: rgba(0, 0, 0, .4);--shadow-color: rgba(0, 0, 0, .08)}[data-theme=dark]{--bg: #000000;--bg-elev: #1d1d1f;--bg-glass: rgba(0, 0, 0, .72);--bg-glass-hover: rgba(0, 0, 0, .88);--fg: #f5f5f7;--fg-secondary: #a1a1a6;--fg-tertiary: #6e6e73;--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .18);--accent: #2997ff;--accent-hover: #40a9ff;--accent-fg: #ffffff;--overlay: rgba(0, 0, 0, .6);--shadow-color: rgba(0, 0, 0, .3)}@media(prefers-reduced-motion:reduce){:root{--ease-apple: linear;--ease-out: linear;--ease-spring: linear}}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--font-sans);font-size:17px;line-height:1.5;color:var(--fg);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-base),color var(--transition-base)}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{background:none;border:none;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--fg-tertiary)}::selection{background:var(--accent);color:var(--accent-fg)}#root{min-height:100dvh}.header{position:fixed;top:0;left:0;right:0;height:var(--header-h);z-index:100;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);background:var(--bg-glass);border-bottom:1px solid transparent;transition:background var(--transition-base),border-color var(--transition-base)}.header--scrolled{border-bottom-color:var(--border)}.header__inner{max-width:var(--content-max);margin:0 auto;height:100%;padding:0 var(--space-5);display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;align-items:baseline;gap:0;font-size:18px;font-weight:600;letter-spacing:-.02em;cursor:pointer;color:var(--fg);transition:opacity var(--transition-fast)}.header__logo:hover{opacity:.7}.header__logo-dot{color:var(--accent)}.header__logo-tld{color:var(--fg-secondary);font-weight:400}.header__controls{display:flex;align-items:center;gap:var(--space-1)}.header__icon-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);color:var(--fg-secondary);transition:color var(--transition-fast),background var(--transition-fast);cursor:pointer}.header__icon-btn:hover{color:var(--fg);background:var(--bg-elev)}.header__theme-toggle{margin-left:var(--space-1)}.subnav{position:fixed;top:var(--header-h);left:0;right:0;height:var(--subnav-h);z-index:99;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);background:var(--bg-glass);border-bottom:1px solid var(--border);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.subnav::-webkit-scrollbar{display:none}.subnav__inner{max-width:var(--content-max);margin:0 auto;height:100%;padding:0 var(--space-5);display:flex;align-items:center;gap:var(--space-3);position:relative}.subnav__item{position:relative;display:flex;align-items:center;height:32px;padding:0 var(--space-2);font-size:13px;font-weight:400;color:var(--fg-secondary);white-space:nowrap;cursor:pointer;transition:font-weight var(--transition-fast),color var(--transition-fast)}.subnav__item--active{font-weight:600;color:var(--fg)}.subnav__item:hover:not(.subnav__item--active){color:var(--fg)}@media(max-width:768px){.header__inner{padding:0 var(--space-4)}.subnav{height:44px}.subnav__inner{padding:0 var(--space-3);gap:2px}.subnav__item{font-size:11px;height:28px;padding:0 var(--space-1)}}.pager{position:fixed;top:calc(var(--header-h) + var(--subnav-h));left:0;right:0;bottom:0;overflow-x:scroll;overflow-y:hidden;scroll-behavior:smooth;overscroll-behavior:contain;display:flex;min-height:0;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}.section{flex:0 0 100vw;width:100vw;height:100%;overflow-y:auto;overflow-x:hidden;scroll-snap-align:start;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.section:focus{outline:none}.section-inner{width:100%;min-height:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-10) var(--space-5);display:flex;flex-direction:column;justify-content:center;box-sizing:border-box}.btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 var(--space-6);border-radius:var(--radius-full);font-size:16px;font-weight:500;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast);text-decoration:none}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-elev);color:var(--fg);border:1px solid var(--border-strong)}.btn-secondary:hover{background:var(--border)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-up{opacity:0;animation:fadeUp .5s ease forwards}.animate-fade-in{opacity:0;animation:fadeIn .4s ease forwards}.section-hero .section-inner{text-align:center;align-items:center}.hero-eyebrow{font-size:13px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-4);opacity:0;animation:fadeIn .4s ease .1s forwards}.hero-headline{font-size:clamp(32px,5.5vw,64px);font-weight:600;letter-spacing:-.03em;line-height:1.15;color:var(--fg);max-width:820px;margin-bottom:var(--space-4);opacity:0;animation:fadeUp .6s ease .2s forwards}.hero-subhead{font-size:clamp(16px,2vw,20px);color:var(--fg-secondary);margin-bottom:var(--space-7);max-width:480px;line-height:1.5;opacity:0;animation:fadeUp .6s ease .35s forwards}.hero-actions{display:flex;gap:var(--space-4);flex-wrap:wrap;justify-content:center;opacity:0;animation:fadeUp .6s ease .5s forwards}.section-header{margin-bottom:var(--space-8)}.section-eyebrow{font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-2);display:block}.section-title{font-size:clamp(28px,4vw,40px);font-weight:600;letter-spacing:-.02em;color:var(--fg);line-height:1.1}.section-subtitle{font-size:17px;color:var(--fg-secondary);margin-top:var(--space-3);max-width:560px;line-height:1.6}.section-experience .section-inner{max-width:780px}.experience-list{display:flex;flex-direction:column;gap:var(--space-6)}.experience-item{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}.experience-item.visible{opacity:1;transform:translateY(0)}.experience-item:nth-child(2){transition-delay:.1s}.exp-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap}.exp-meta{display:flex;flex-direction:column;gap:4px}.exp-company{font-size:13px;font-weight:500;color:var(--fg-secondary);display:flex;align-items:center;gap:var(--space-3)}.exp-badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);padding:2px 8px;border-radius:var(--radius-full)}.exp-period{font-size:13px;color:var(--fg-tertiary);white-space:nowrap}.exp-title{font-size:18px;font-weight:600;color:var(--fg);margin-bottom:var(--space-3)}.exp-points{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.exp-point{display:flex;align-items:flex-start;gap:var(--space-3);font-size:15px;color:var(--fg-secondary);line-height:1.5}.exp-point:before{content:"→";color:var(--accent);font-weight:600;flex-shrink:0;margin-top:1px}.exp-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.exp-tag{font-size:12px;font-weight:500;color:var(--fg-secondary);background:var(--bg-elev);padding:4px 12px;border-radius:var(--radius-full)}.section-projects .section-inner{max-width:1100px}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-5)}.project-card{background:var(--bg-elev);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3);opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease,box-shadow .2s ease,background .2s ease}.project-card.visible{opacity:1;transform:translateY(0)}.project-card:nth-child(2){transition-delay:.1s}.project-card:nth-child(3){transition-delay:.2s}.project-card:hover{background:color-mix(in srgb,var(--bg-elev) 80%,var(--accent) 20%);box-shadow:var(--shadow-md)}.project-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3)}.project-title{font-size:18px;font-weight:600;color:var(--fg)}.project-link{color:var(--fg-tertiary);transition:color .15s ease;flex-shrink:0}.project-link:hover{color:var(--accent)}.project-desc{font-size:14px;color:var(--fg-secondary);line-height:1.6;flex:1}.project-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:auto}.project-tag{font-size:12px;font-weight:500;color:var(--fg-secondary);background:var(--bg-glass);padding:3px 10px;border-radius:var(--radius-full)}.project-actions{display:flex;gap:var(--space-4);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.project-action{display:inline-flex;align-items:center;gap:var(--space-2);font-size:13px;font-weight:500;color:var(--fg-secondary);transition:color .15s ease}.project-action:hover{color:var(--accent)}.section-skills .section-inner{max-width:900px}.skills-legend{display:flex;flex-wrap:wrap;gap:var(--space-5);margin-bottom:var(--space-8)}.legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:12px;color:var(--fg-secondary)}.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.skills-groups{display:flex;flex-direction:column;gap:var(--space-7)}.skill-group-title{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-tertiary);margin-bottom:var(--space-4)}.skills-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.skill-chip{display:inline-flex;align-items:center;gap:var(--space-2);font-size:14px;font-weight:500;color:var(--fg);background:var(--bg-elev);padding:6px 14px;border-radius:var(--radius-full);opacity:0;transform:translateY(8px);transition:opacity .3s ease,transform .3s ease,background .15s ease}.skill-chip.visible{opacity:1;transform:translateY(0)}.skill-chip:hover{background:var(--border)}.skill-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.section-about .section-inner{max-width:900px}.about-grid{display:grid;grid-template-columns:1fr 280px;gap:var(--space-10);align-items:start}@media(max-width:700px){.about-grid{grid-template-columns:1fr;gap:var(--space-8)}}.about-text{display:flex;flex-direction:column;gap:var(--space-4)}.about-p{font-size:17px;color:var(--fg-secondary);line-height:1.7}.about-p strong{color:var(--fg);font-weight:600}.about-stats{display:flex;flex-direction:column;gap:var(--space-4)}.about-stat{background:var(--bg-elev);border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-1)}.stat-number{font-size:42px;font-weight:700;letter-spacing:-.02em;line-height:1}.stat-label{font-size:13px;color:var(--fg-secondary)}.section-contact .section-inner{text-align:center;align-items:center}.contact-headline{font-size:clamp(40px,7vw,64px);font-weight:600;letter-spacing:-.03em;color:var(--fg);margin-bottom:var(--space-4)}.contact-sub{font-size:18px;color:var(--fg-secondary);margin-bottom:var(--space-7);max-width:480px}.contact-email{display:inline-block;font-size:clamp(18px,2.5vw,24px);font-weight:500;color:var(--accent);text-decoration:none;margin-bottom:var(--space-8);transition:opacity .15s ease}.contact-email:hover{opacity:.75}.contact-social{display:flex;gap:var(--space-4);justify-content:center;margin-bottom:var(--space-10)}.contact-social-link{display:flex;align-items:center;gap:var(--space-2);font-size:14px;font-weight:500;color:var(--fg-secondary);transition:color .15s ease}.contact-social-link:hover{color:var(--fg)}.contact-footer{padding-top:var(--space-6);border-top:1px solid var(--border);width:100%;max-width:400px}.contact-copyright{font-size:13px;color:var(--fg-tertiary)}@media(max-width:768px){.experience-item .exp-header{flex-direction:column;gap:var(--space-2)}.projects-grid{grid-template-columns:1fr}.about-stats{flex-direction:row;flex-wrap:wrap}.about-stat{flex:1;min-width:140px}}@media(prefers-reduced-motion:reduce){.animate-fade-up,.animate-fade-in,.experience-item,.project-card,.skill-chip{opacity:1;transform:none;animation:none;transition:none}}:root{--header-h: 52px;--subnav-h: 48px}
