:root{--bg-primary: #FFFFFF;--bg-secondary: #F7F7F7;--bg-tertiary: #F0F0F0;--text-primary: #0D0D0D;--text-secondary: #7A7A7A;--border-color: #E0E0E0;--border-light: #F0F0F0;--accent-yellow: #0D0D0D;--accent-yellow-dark: #FFFFFF;--link-bg: #EDEDED;--link-bg-hover: #E5E5E5}:root.dark-mode{--bg-primary: #0D0D0D;--bg-secondary: #1A1A1A;--bg-tertiary: #2D2D2D;--text-primary: #FFFFFF;--text-secondary: #808080;--border-color: #3D3D3D;--border-light: #2D2D2D;--accent-yellow: #FFFFFF;--accent-yellow-dark: #0D0D0D;--link-bg: #2D2D2D;--link-bg-hover: #3D3D3D}*{margin:0;padding:0;box-sizing:border-box}*:focus{outline:none}*:focus-visible{outline:none}button:focus,a:focus,input:focus,select:focus,textarea:focus{outline:none;box-shadow:none}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:Inter,sans-serif;background-color:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;color:var(--text-primary);transition:background-color .3s ease,color .3s ease;min-width:320px;overflow-x:hidden;letter-spacing:-.02em}.header{background:var(--bg-primary);border-bottom-color:var(--border-light)}.hero-section,.stack-section,.experience-card,.project-card{background:var(--bg-primary);border-color:var(--border-color)}:root.dark-mode .project-card{background:#1a1a1a;border-color:var(--border-color)}:root.dark-mode .experience-header{background:#1a1a1a;border-color:var(--border-color)}h1,h2,h3,h4,h5,h6,.section-title,.hero-title,.hero-subtitle,.experience-title,.project-title,.work-name,.stack-name{color:var(--text-primary);letter-spacing:.05em}.section-subtitle,.nav-link,.experience-company,.experience-period,.experience-description,.project-description,.content-subtitle,.showcase-story p,.stack-description,.blog-label{color:var(--text-secondary)}.link-card,.blog-link{background:var(--link-bg)}.link-card:hover,.blog-link:hover{background:var(--link-bg-hover)}.inline-text{color:var(--text-primary)}.email-button{border:1px solid var(--border-color);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;font-family:Inter,sans-serif;font-size:13px;border-radius:100px}.email-button:hover{background-color:var(--text-primary);color:var(--bg-primary);border-color:var(--text-primary)}.dark-mode-toggle{border-color:var(--border-color)}.dark-mode-toggle:hover{background:var(--bg-tertiary)}.newsletter-input{background:var(--bg-tertiary);color:var(--text-primary)}.newsletter-input:focus{background:var(--link-bg)}.newsletter-input::placeholder{color:var(--text-secondary)}.newsletter-button{background:var(--text-primary);color:var(--bg-primary);text-transform:uppercase;letter-spacing:.08em;font-family:Inter,sans-serif}.stack-item{background:var(--bg-primary);border-color:var(--border-color)}.stack-item:hover,.project-card:hover{border-color:var(--text-secondary)}.project-badge,.experience-type{background:transparent;color:var(--text-secondary)}.upcoming-badge,.tech-tag{background:var(--accent-yellow);color:var(--accent-yellow-dark)}:root.dark-mode .header:before{opacity:.9}:root.dark-mode .social-icon{background:var(--bg-tertiary);border-color:var(--border-color)}:root.dark-mode .work-image-wrapper{opacity:.9}:root.dark-mode .work-image-wrapper:hover{opacity:1}:root.dark-mode .external-icon svg path{stroke:var(--text-primary)}.grid-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(circle,rgba(0,0,0,.12) 1px,transparent 1px);background-size:24px 24px;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 10%,#000 90%,transparent),linear-gradient(to right,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(to bottom,transparent,#000 10%,#000 90%,transparent),linear-gradient(to right,transparent,#000 10%,#000 90%,transparent);-webkit-mask-composite:destination-in;mask-composite:intersect}:root.dark-mode .grid-bg{background-image:radial-gradient(circle,rgba(255,255,255,.15) 1px,transparent 1px)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--text-secondary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-primary)}*{scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{display:none;width:0;background:transparent}*::-webkit-scrollbar-track{display:none}*::-webkit-scrollbar-thumb{display:none}html{overflow-x:hidden;scroll-behavior:smooth}body{margin:0;padding:0;overflow-x:hidden}#root{max-width:100%;margin:0;padding:0}.app{position:relative;min-height:100vh;display:flex;flex-direction:column}.cv-top-dock{position:fixed;top:20px;right:24px;z-index:99}@media (max-width: 768px){.cv-top-dock{top:16px;right:16px}}.main-content{position:relative;z-index:1;padding:0 40px;max-width:860px;margin-left:auto;margin-right:auto;flex:1}.page-body{position:relative;z-index:1;background:var(--bg-primary);border-radius:0 0 24px 24px;box-shadow:0 12px 40px #0000001a;padding-bottom:40px;margin-bottom:100vh;isolation:isolate;overflow-x:hidden}:root.dark-mode .page-body{box-shadow:0 12px 40px #0006}@media (max-width: 768px){.page-body{margin-bottom:100vh}.main-content{padding:0 20px;max-width:100%;width:100%;overflow-x:hidden}.main-content>*{max-width:100%;width:100%;box-sizing:border-box;overflow-x:hidden}}@media (max-width: 480px){.page-body{margin-bottom:100vh}.main-content{padding:0 16px;max-width:100%;width:100%;overflow-x:hidden}.main-content>*{max-width:100%;width:100%;box-sizing:border-box;overflow-x:hidden}}.lang-switching{opacity:.97;transition:opacity .15s ease}#works{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:80px 0;color:var(--text-secondary)}.bottom-blur-layers{position:fixed;bottom:0;left:0;right:0;height:160px;pointer-events:none;z-index:30;overflow:hidden;transition:opacity .3s ease-out}.blur-layer-1{position:absolute;inset:0;z-index:1;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,1) 12.5%,rgba(0,0,0,1) 25%,rgba(0,0,0,0) 37.5%);mask-image:linear-gradient(to bottom,#0000,#000 12.5% 25%,#0000 37.5%);backdrop-filter:blur(.078125px);-webkit-backdrop-filter:blur(.078125px)}.blur-layer-2{position:absolute;inset:0;z-index:2;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 12.5%,rgba(0,0,0,1) 25%,rgba(0,0,0,1) 37.5%,rgba(0,0,0,0) 50%);mask-image:linear-gradient(to bottom,#0000 12.5%,#000 25% 37.5%,#0000 50%);backdrop-filter:blur(.15625px);-webkit-backdrop-filter:blur(.15625px)}.blur-layer-3{position:absolute;inset:0;z-index:3;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 25%,rgba(0,0,0,1) 37.5%,rgba(0,0,0,1) 50%,rgba(0,0,0,0) 62.5%);mask-image:linear-gradient(to bottom,#0000 25%,#000 37.5% 50%,#0000 62.5%);backdrop-filter:blur(.3125px);-webkit-backdrop-filter:blur(.3125px)}.blur-layer-4{position:absolute;inset:0;z-index:4;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 37.5%,rgba(0,0,0,1) 50%,rgba(0,0,0,1) 62.5%,rgba(0,0,0,0) 75%);mask-image:linear-gradient(to bottom,#0000 37.5%,#000 50% 62.5%,#0000 75%);backdrop-filter:blur(.625px);-webkit-backdrop-filter:blur(.625px)}.blur-layer-5{position:absolute;inset:0;z-index:5;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 50%,rgba(0,0,0,1) 62.5%,rgba(0,0,0,1) 75%,rgba(0,0,0,0) 87.5%);mask-image:linear-gradient(to bottom,#0000 50%,#000 62.5% 75%,#0000 87.5%);backdrop-filter:blur(1.25px);-webkit-backdrop-filter:blur(1.25px)}.blur-layer-6{position:absolute;inset:0;z-index:6;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 62.5%,rgba(0,0,0,1) 75%,rgba(0,0,0,1) 87.5%,rgba(0,0,0,0) 100%);mask-image:linear-gradient(to bottom,#0000 62.5%,#000 75% 87.5%,#0000);backdrop-filter:blur(2.5px);-webkit-backdrop-filter:blur(2.5px)}.blur-layer-7{position:absolute;inset:0;z-index:7;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 75%,rgba(0,0,0,1) 87.5%,rgba(0,0,0,1) 100%);mask-image:linear-gradient(to bottom,#0000 75%,#000 87.5% 100%);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.blur-layer-8{position:absolute;inset:0;z-index:8;opacity:1;-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,0) 87.5%,rgba(0,0,0,1) 100%);mask-image:linear-gradient(to bottom,#0000 87.5%,#000);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}@media (max-width: 768px){.main-content{padding:40px 20px;margin-top:80px}}.scroll-reveal{opacity:0;transform:translateY(40px);transition:opacity .6s cubic-bezier(.12,.23,.5,1),transform .6s cubic-bezier(.12,.23,.5,1);will-change:opacity,transform}.scroll-reveal.is-visible{opacity:1;transform:translateY(0)}.scroll-reveal-stagger>*{opacity:0;transform:translateY(30px);transition:opacity .5s cubic-bezier(.12,.23,.5,1),transform .5s cubic-bezier(.12,.23,.5,1)}.scroll-reveal-stagger.is-visible>*:nth-child(1){transition-delay:0ms;opacity:1;transform:translateY(0)}.scroll-reveal-stagger.is-visible>*:nth-child(2){transition-delay:80ms;opacity:1;transform:translateY(0)}.scroll-reveal-stagger.is-visible>*:nth-child(3){transition-delay:.16s;opacity:1;transform:translateY(0)}.scroll-reveal-stagger.is-visible>*:nth-child(4){transition-delay:.24s;opacity:1;transform:translateY(0)}.scroll-reveal-stagger.is-visible>*:nth-child(5){transition-delay:.32s;opacity:1;transform:translateY(0)}.scroll-reveal-stagger.is-visible>*:nth-child(6){transition-delay:.4s;opacity:1;transform:translateY(0)}.scroll-reveal-up{opacity:0;transform:translateY(20px);transition:opacity .5s cubic-bezier(.12,.23,.5,1),transform .5s cubic-bezier(.12,.23,.5,1)}.scroll-reveal-up.is-visible{opacity:1;transform:translateY(0)}.scroll-reveal-fade{opacity:0;transition:opacity .6s cubic-bezier(.12,.23,.5,1)}.scroll-reveal-fade.is-visible{opacity:1}@media (prefers-reduced-motion: reduce){.scroll-reveal,.scroll-reveal-stagger>*,.scroll-reveal-up,.scroll-reveal-fade{opacity:1;transform:none;transition:none}}.lic-cookie-banner{position:fixed;bottom:16px;left:16px;right:16px;z-index:1000;display:flex;justify-content:center;pointer-events:none;animation:lic-cookie-in .42s cubic-bezier(.22,1,.36,1) .6s both}@keyframes lic-cookie-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.lic-cookie-banner-inner{pointer-events:auto;max-width:880px;width:100%;background:#fff;border:1px solid #E5E7EB;border-radius:16px;box-shadow:0 24px 56px -16px #0b0b0f2e,0 4px 14px #0b0b0f0d;padding:18px 22px;display:grid;grid-template-columns:1fr;gap:14px;font-family:Inter,sans-serif}@media (min-width: 760px){.lic-cookie-banner-inner{grid-template-columns:1fr auto;align-items:center;gap:24px;padding:20px 24px}}.lic-cookie-banner-content{display:flex;flex-direction:column;gap:6px}.lic-cookie-banner-eyebrow{margin:0;display:inline-flex;align-items:center;gap:6px;font-family:JetBrains Mono,ui-monospace,Menlo,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#6e737b}.lic-cookie-banner-num{color:#1e78ff;font-weight:600}.lic-cookie-banner-sep{color:#c7cbd2}.lic-cookie-banner-text{margin:0;font-size:13px;color:#3e3e44;line-height:1.5}.lic-cookie-banner-text a{color:#1e78ff;text-decoration:none;font-weight:500}.lic-cookie-banner-text a:hover{text-decoration:underline}.lic-cookie-banner-actions{display:flex;gap:8px;flex-wrap:wrap}.lic-cookie-banner-btn{padding:9px 16px;border-radius:100px;font-family:Inter,sans-serif;font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .16s ease,transform .16s ease,box-shadow .16s ease,border-color .16s ease;white-space:nowrap}.lic-cookie-banner-btn--ghost{background:transparent;border-color:#e5e7eb;color:#3e3e44}.lic-cookie-banner-btn--ghost:hover{background:#fafbfc;border-color:#c7cbd2}.lic-cookie-banner-btn--primary{background:#1e78ff;color:#fff;border-color:#1e78ff;box-shadow:0 6px 18px -4px #1e78ff73}.lic-cookie-banner-btn--primary:hover{background:#005aff;transform:translateY(-1px);box-shadow:0 10px 22px -4px #1e78ff8c}:root.dark-mode .lic-cookie-banner-inner{background:#14141a;border-color:#ffffff14}:root.dark-mode .lic-cookie-banner-text{color:#ffffffb3}:root.dark-mode .lic-cookie-banner-btn--ghost{border-color:#ffffff1f;color:#ffffffd9}:root.dark-mode .lic-cookie-banner-btn--ghost:hover{background:#ffffff0a}
