:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{--color-primary: #ffffff;--color-secondary: #a0a0a0;--color-accent: #ff2a2a;--color-accent-secondary: #ff6b35;--color-background: #0e1116;--color-background-secondary: #1a1f26;--color-background-tertiary: #252b33;--color-border: rgba(255, 255, 255, .1);--color-border-hover: rgba(255, 255, 255, .2);--font-primary: "JetBrains Mono", "Fira Code", "SF Mono", "Monaco", "Inconsolata", "Roboto Mono", "Source Code Pro", monospace;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Monaco", "Inconsolata", "Roboto Mono", "Source Code Pro", monospace;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--spacing-3xl: 4rem;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1);--border-radius-sm: 4px;--border-radius-md: 8px;--border-radius-lg: 12px;--border-radius-xl: 16px;--transition-fast: .15s ease-in-out;--transition-normal: .3s ease-in-out;--transition-slow: .5s ease-in-out}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:var(--font-primary);background-color:var(--color-background);color:var(--color-primary);overflow-x:hidden;line-height:1.6}#root{height:100%}.app{position:relative;height:100vh;overflow:hidden}.landing-page{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at center,#ff2a2a0d,#0a0a0c66 60%,#0a0a0cf2)}.landing-content{text-align:center;cursor:default;padding:var(--spacing-2xl);transition:transform .3s ease}.landing-content:hover{transform:scale(1.02)}.landing-title{font-family:var(--font-sans);font-size:clamp(4rem,15vw,12rem);font-weight:800;letter-spacing:-.04em;line-height:.8;color:#fff;margin:0;text-shadow:0 0 40px rgba(255,255,255,.1);opacity:0;transform:translateY(20px)}.landing-subtitle{font-family:var(--font-mono);font-size:clamp(.8rem,2vw,1.2rem);letter-spacing:.2em;text-transform:uppercase;color:var(--color-accent);margin-top:var(--spacing-lg);margin-bottom:var(--spacing-2xl);opacity:0;transform:translateY(20px)}.landing-warning{font-family:var(--font-mono);font-size:clamp(.75rem,2vw,.95rem);letter-spacing:.08em;text-transform:uppercase;color:#ffffffbf;margin:0 0 var(--spacing-xl);opacity:0;transform:translateY(20px)}.landing-cta{display:inline-block;padding:12px 24px;border:1px solid rgba(255,255,255,.1);border-radius:999px;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:#fff9;transition:all .3s ease;background:transparent;cursor:pointer;opacity:0;transform:translateY(20px)}.landing-content:hover .landing-cta{background:#ffffff1a;border-color:#fff;color:#fff}.landing-language{display:flex;justify-content:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);opacity:0;transform:translateY(20px)}.language-button{border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:6px 14px;background:transparent;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#ffffff8c;cursor:pointer;transition:all .2s ease}.language-button:hover{color:#fff;border-color:#fff9}.language-button.is-active{color:#fff;border-color:#fff;background:#ffffff1a}.experience-wrapper{position:relative;width:100%;height:100%;background-color:#0e1116;opacity:0;animation:experience-fade-in 1.2s ease-out forwards;animation-delay:.1s}@keyframes experience-fade-in{0%{opacity:0;transform:scale(1.02)}to{opacity:1;transform:scale(1)}}.experience-canvas{position:fixed!important;top:0;left:0;width:100%;height:100%;z-index:1}.experience-canvas canvas{opacity:0;transition:opacity 2.5s ease-out}.experience-canvas.is-visible canvas{opacity:1}.hud-grid{position:fixed;inset:0;z-index:2;pointer-events:none}.hud-grid .grid-overlay{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:40px 40px,40px 40px;-webkit-mask-image:radial-gradient(ellipse at center,rgba(255,255,255,.5) 0%,rgba(255,255,255,.15) 60%,transparent 80%);mask-image:radial-gradient(ellipse at center,rgba(255,255,255,.5) 0%,rgba(255,255,255,.15) 60%,transparent 80%)}.hud-grid.dimmed .grid-overlay{opacity:.35}.stage-overlay{position:fixed;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden}.stage-panel{position:relative;width:100%;height:100%;max-width:100%;max-height:100%;padding:var(--spacing-2xl);background:#0a0a0cd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);pointer-events:auto;display:flex;flex-direction:column;overflow:visible;opacity:0;will-change:opacity,transform}.section-loading{width:100%;height:100%;min-height:200px}.stage-close{position:absolute;top:48px;right:48px;z-index:10;width:72px;height:72px;display:flex;align-items:center;justify-content:center;background:#0f0f0f66;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);border-radius:50%;box-shadow:0 10px 30px #0000004d;color:#fff;cursor:pointer;transition:all .4s cubic-bezier(.16,1,.3,1);outline:none!important}.stage-close:focus,.stage-close:active,.stage-close:focus-visible{outline:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent}.stage-close:hover{background:#ffffff0d;border-color:var(--color-accent);color:var(--color-accent);transform:translateY(-2px) scale(1.05);box-shadow:0 15px 40px #00000080}.stage-close svg{width:32px;height:32px}.stage-content{position:relative;z-index:1;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-inline:var(--spacing-xl);max-width:1200px;margin:0 auto;width:100%}.about-section,.projects-section,.skills-section,.contact-section,.projects-grid,.skills-container,.contact-content,.contact-methods{overflow:visible}.project-card,.skill-category,.highlight-item{transform-origin:center;will-change:transform}.stage-content::-webkit-scrollbar{width:6px}.stage-content::-webkit-scrollbar-track{background:transparent}.stage-content::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.stage-content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.hotspot-label{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;color:var(--color-primary);padding:6px 10px;border:1px solid var(--color-border);border-radius:999px;background:#141418cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #ff2a2a2e;white-space:nowrap}.debug-coords{position:fixed;left:50%;bottom:86px;transform:translate(-50%);z-index:120;padding:6px 10px;border-radius:6px;border:1px dashed rgba(255,255,255,.25);background:#101014b3;color:#ffffffd9;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;pointer-events:none}.nav-rail{position:fixed;top:0;left:0;bottom:0;width:64px;z-index:100;display:flex;flex-direction:column;background:#0a0a0c99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-right:1px solid rgba(255,255,255,.05);transition:width .4s cubic-bezier(.16,1,.3,1),background .4s ease;overflow:hidden;will-change:width,backdrop-filter}.nav-rail:hover,.nav-rail.open{width:240px;background:#0a0a0ce6}.nav-item,.nav-item:focus,.nav-item:active,.nav-item:focus-visible{outline:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent}.nav-track{display:flex;flex-direction:column;height:100%;width:240px}.nav-trigger{height:80px;display:flex;align-items:center;padding-left:20px;color:var(--color-accent)}.nav-items{flex:1;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:0 12px}.nav-item{display:flex;align-items:center;height:48px;padding:0 12px;background:transparent;border:1px solid transparent;border-radius:8px;cursor:pointer;color:var(--color-secondary);transition:all .2s ease;text-align:left;outline:none}.nav-item:disabled{opacity:.5;cursor:default!important}.nav-item:hover{background:#ffffff0d;color:#fff}.nav-item.active{background:#ff2a2a1a;border-color:#ff2a2a33;color:var(--color-accent)}.nav-item-icon{width:24px;display:flex;align-items:center;justify-content:center;margin-right:16px}.dot{width:6px;height:6px;background:currentColor;border-radius:50%;opacity:.5;transition:transform .2s ease}.nav-item:hover .dot,.nav-item.active .dot{transform:scale(1.5);opacity:1}.nav-item-text{font-family:var(--font-mono);font-size:.9rem;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;opacity:0;transform:translate(-10px);transition:opacity .3s ease,transform .3s ease}.nav-rail:hover .nav-item-text,.nav-rail.open .nav-item-text{opacity:1;transform:translate(0)}.nav-rail:hover .nav-item:nth-child(1) .nav-item-text,.nav-rail.open .nav-item:nth-child(1) .nav-item-text{transition-delay:.1s}.nav-rail:hover .nav-item:nth-child(2) .nav-item-text,.nav-rail.open .nav-item:nth-child(2) .nav-item-text{transition-delay:.15s}.nav-rail:hover .nav-item:nth-child(3) .nav-item-text,.nav-rail.open .nav-item:nth-child(3) .nav-item-text{transition-delay:.2s}.nav-rail:hover .nav-item:nth-child(4) .nav-item-text,.nav-rail.open .nav-item:nth-child(4) .nav-item-text{transition-delay:.25s}.nav-footer{height:60px;display:flex;align-items:center;padding-left:24px;border-top:1px solid rgba(255,255,255,.05)}.nav-version{font-family:var(--font-mono);font-size:.7rem;color:var(--color-secondary);opacity:.5}html.is-fallback,body.is-fallback,.app.is-fallback{height:auto!important;overflow:visible!important;overflow-y:auto!important}.fallback-layout{background-color:var(--color-bg);color:var(--color-text);min-height:100vh;width:100%;overflow-x:hidden;padding-left:64px}@media (min-width: 1024px){.fallback-layout{padding-left:240px}}.fallback-header{position:fixed;top:0;left:64px;width:calc(100% - 64px);z-index:100;padding:var(--spacing-md) var(--spacing-lg);transition:all .3s ease;background:transparent}@media (min-width: 1024px){.fallback-header{left:240px;width:calc(100% - 240px)}}.fallback-header.is-scrolled{background:#0a0a0ad9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:var(--spacing-sm) var(--spacing-lg);border-bottom:1px solid rgba(255,255,255,.1)}.fallback-header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.fallback-language{display:flex;gap:var(--spacing-md)}.fallback-language .language-button{background:transparent;border:none;color:var(--color-secondary);font-family:var(--font-mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);transition:all .3s ease;opacity:.5}.fallback-language .language-button.is-active{color:var(--color-accent);opacity:1}.fallback-language .language-button:hover:not(.is-active){opacity:.8;color:#fff}.fallback-logo{font-family:var(--font-primary);font-weight:800;letter-spacing:.2em;font-size:1.2rem;color:var(--color-text)}.fallback-warning{position:sticky;top:80px;z-index:90;padding:var(--spacing-sm) var(--spacing-md);margin-top:20px;display:flex;justify-content:center;transition:all .3s ease}.fallback-warning.is-scrolled{top:70px;padding:var(--spacing-xs) var(--spacing-md);opacity:.9}.warning-content{background:#ffd70014;border:1px solid rgba(255,215,0,.15);color:#ffd700cc;padding:var(--spacing-xs) var(--spacing-md);border-radius:4px;display:flex;align-items:center;gap:var(--spacing-sm);font-size:.8rem;max-width:800px;text-align:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.warning-close{background:transparent;border:none;color:currentColor;opacity:.5;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:2px;margin-left:8px;border-radius:4px;transition:all .2s ease}.warning-close:hover{opacity:1;background:#ffffff1a}.fallback-main{max-width:1400px;margin:0 auto;padding:0 var(--spacing-lg)}.fallback-section-wrapper{margin-bottom:var(--spacing-xxl);padding-top:100px;min-height:80vh;display:flex;align-items:center;justify-content:center}.fallback-footer{padding:var(--spacing-xl);text-align:center;opacity:.5;font-size:.8rem;border-top:1px solid rgba(255,255,255,.05)}.fallback-layout .about-section,.fallback-layout .projects-section,.fallback-layout .skills-section,.fallback-layout .contact-section{width:100%;position:relative;z-index:1}.fallback-layout .stage-panel{position:relative;width:100%;max-width:none;background:transparent;box-shadow:none}.portfolio-section{position:fixed;top:0;right:0;width:100%;max-width:600px;height:100%;background:#0e1116f2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-left:1px solid var(--color-border);z-index:50;overflow-y:auto;padding:var(--spacing-3xl) var(--spacing-xl);opacity:0;transform:translate(100%)}.portfolio-section.transitioning{pointer-events:none}.section-container{max-width:500px;margin:0 auto}.section-title{font-size:2.5rem;font-weight:800;margin-bottom:var(--spacing-xl);background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-accent) 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.about-section{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}.about-compact{width:100%;max-width:1200px;height:100%;max-height:85vh;padding:var(--spacing-xl);display:flex;flex-direction:column;justify-content:center}.compact-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--spacing-2xl);height:100%;border:1px solid var(--color-border);background:#0003;overflow:hidden}.compact-col-left{display:flex;flex-direction:column;justify-content:space-between;padding:var(--spacing-xl);border-right:1px solid var(--color-border);background:#ffffff05;position:relative;overflow:hidden;min-height:0}.compact-title-wrapper{flex-grow:1;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}.compact-title{display:flex;flex-direction:column;font-size:clamp(3rem,6vw,5.5rem);line-height:.85;font-weight:900;letter-spacing:-.04em;color:#fff;margin:0;text-transform:uppercase;position:relative;z-index:2;transform:translateY(70%);mix-blend-mode:difference}.compact-title span{display:block}.profile-image-container{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:clamp(200px,30vw,400px);height:clamp(200px,30vw,400px);border-radius:50%;overflow:hidden;z-index:1;opacity:.9;filter:grayscale(100%) contrast(1.1);transition:opacity .35s ease;background-color:#ffffff0d}.profile-image-container:after{content:"";position:absolute;inset:0;background:var(--color-accent);mix-blend-mode:multiply;opacity:0}.profile-image{width:100%;height:100%;object-fit:cover;filter:grayscale(100%) contrast(1.1);transition:filter .25s ease}.compact-id{margin-top:var(--spacing-xl);font-family:var(--font-mono);font-size:.8rem;color:var(--color-accent);letter-spacing:.1em;border-top:1px solid var(--color-border);padding-top:var(--spacing-md);position:relative;z-index:2}.compact-col-right.bento-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr auto auto;gap:0;min-height:0}.compact-block{padding:var(--spacing-xl)}.bio-block{grid-column:1 / -1;grid-row:1;display:flex;flex-direction:column;justify-content:flex-start;gap:var(--spacing-md);overflow:hidden;min-height:0}.contact-divider{grid-column:1 / -1;grid-row:2;display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-xl);margin:0}.block-header{display:flex;align-items:center;gap:var(--spacing-md)}.bio-decoration{height:1px;flex-grow:1;background:var(--color-border);opacity:.5}.bio-lead p{font-size:clamp(1rem,1.4vw,1.25rem);line-height:1.4;font-weight:400;color:var(--color-primary);margin:0;letter-spacing:0}.bio-details{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-md);padding-top:var(--spacing-lg);border-top:1px solid rgba(255,255,255,.1)}.bio-details p{font-size:.85rem;line-height:1.5;color:#ffffffb7;margin:0;font-weight:400;max-width:55ch}.bio-link{color:var(--color-primary);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:#ffffff4d;cursor:pointer;transition:all .2s ease}.bio-link:hover{color:var(--color-accent);text-decoration-color:var(--color-accent)}.contact-block{grid-column:1 / -1;grid-row:3;display:flex;align-items:center;justify-content:center;gap:0;cursor:pointer;transition:color .3s ease;position:relative;overflow:hidden;padding:var(--spacing-lg) var(--spacing-xl) var(--spacing-xl) var(--spacing-xl);margin-top:calc(-1 * var(--spacing-sm))}.contact-content{display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.contact-text{font-family:var(--font-mono);font-size:clamp(1.75rem,2.5vw,2.5rem);font-weight:700;letter-spacing:0;line-height:1;color:var(--color-primary);transition:color .3s ease}.contact-block:hover .contact-text{color:var(--color-accent)}.contact-icon{color:var(--color-secondary);transition:all .3s cubic-bezier(.23,1,.32,1);display:flex;align-items:center}.contact-block:hover .contact-icon{color:var(--color-accent);transform:translate(8px)}.block-label{font-family:var(--font-mono);font-size:.85rem;font-weight:700;color:var(--color-secondary);letter-spacing:.1em;text-transform:uppercase}.block-label.large{font-size:1.5rem}@media (max-width: 900px){.about-section{overflow-y:auto;display:block}.about-compact{height:auto;max-height:none;padding:var(--spacing-lg)}.compact-grid{grid-template-columns:1fr;height:auto;border:none;background:none;gap:var(--spacing-xl)}.compact-col-left{border-right:none;border-bottom:1px solid var(--color-border);padding:0 0 var(--spacing-xl) 0;background:none;min-height:400px}.compact-col-right.bento-grid{display:flex;flex-direction:column;gap:var(--spacing-lg)}.compact-block{padding:0;border-bottom:none}.bio-block,.contact-block{grid-column:auto;grid-row:auto;border-right:none}.contact-block{flex-direction:column;align-items:center;gap:var(--spacing-lg)}.contact-block .block-label{margin-bottom:var(--spacing-md)}.contact-content{width:auto;justify-content:center}}.projects-section{width:100%;max-width:1025px;margin:0 auto;padding:0 var(--spacing-lg) var(--spacing-sm)}.projects-catalog{display:flex;flex-direction:column;gap:var(--spacing-md)}.projects-section button,.projects-section button:focus,.projects-section button:active,.projects-section button:focus-visible{outline:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent}.catalog-shell{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:var(--spacing-lg);align-items:stretch}.catalog-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:4px solid white;padding-bottom:var(--spacing-lg)}.catalog-title{font-size:clamp(2rem,4vw,3.5rem);font-weight:900;color:#fff;margin:0;line-height:.8;letter-spacing:-.03em}.catalog-meta{display:flex;gap:var(--spacing-lg);font-family:var(--font-mono);font-size:.85rem;color:var(--color-accent)}.catalog-list{display:flex;flex-direction:column;height:100%;gap:2px}.catalog-item{background:transparent;border:none;display:grid;grid-template-columns:70px 1fr auto 40px;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) 0;width:100%;max-width:100%;border-bottom:1px solid var(--color-border);cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease;text-align:left;color:inherit;flex:1;outline:none}.catalog-item:hover{background:#ffffff0d;border-bottom-color:var(--color-accent)}.catalog-item:hover .item-title{color:var(--color-accent);transform:translate(6px)}.catalog-item:hover .item-index{color:var(--color-accent)}.catalog-footer{margin-top:auto;padding-top:var(--spacing-sm);border-top:1px solid var(--color-border);font-family:var(--font-mono);font-size:.75rem;color:var(--color-accent);letter-spacing:.1em;text-transform:lowercase}.catalog-item.is-active .item-title{color:var(--color-accent);transform:translate(6px)}.catalog-item.is-active .item-index{color:var(--color-accent)}.catalog-item:hover .arrow{transform:translate(-1px);color:var(--color-accent)}.catalog-item.is-active{background:#ffffff0a;border-bottom-color:var(--color-accent);box-shadow:inset 0 1px #ffffff0d,inset 0 -1px #ffffff0d}.item-index{font-family:var(--font-mono);color:#ffffff80;font-size:1rem;letter-spacing:.2em;text-transform:uppercase;writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;align-self:stretch;display:flex;align-items:center;justify-content:center}.item-main{display:flex;flex-direction:column;gap:var(--spacing-xs);transition:transform .3s ease;min-width:0;overflow:hidden}.item-title{font-size:1.7rem;font-weight:700;color:#fff;margin:0;text-transform:uppercase;transition:color .3s ease}.item-desc{color:var(--color-secondary);font-size:.95rem;font-weight:300;margin:0;max-width:60ch;line-height:1.5}.item-tags{font-family:var(--font-mono);display:flex;gap:var(--spacing-xs);opacity:0;pointer-events:none;white-space:nowrap}.tag{border:1px solid var(--color-border);padding:4px 9px;font-size:.78rem;color:var(--color-secondary);text-transform:uppercase}.item-action{display:flex;justify-content:flex-end;align-self:stretch;align-items:center;padding-left:var(--spacing-xs);padding-right:var(--spacing-xs)}.arrow{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;font-size:1.55rem;color:#fff;transition:transform .25s ease,color .25s ease;transform:translate(-3px)}.catalog-item.is-active .arrow{color:var(--color-accent);font-size:1.75rem}.category-gallery{position:relative;display:flex;flex-direction:column;gap:var(--spacing-md);padding:0;border:none;background:transparent;box-shadow:none;height:100%}.gallery-top-bar{display:flex;align-items:stretch;width:100%;margin-bottom:var(--spacing-sm);min-height:44px}.track-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));width:100%;gap:6px;background:#ffffff0d;padding:6px;border-radius:var(--border-radius-lg);border:1px solid rgba(255,255,255,.12);box-shadow:inset 0 1px #ffffff0f}.track-tab{padding:12px 14px;border-radius:var(--border-radius-md);border:none;background:transparent;color:#fff;font-family:var(--font-mono);font-size:.9rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;display:flex;align-items:center;justify-content:center;transition:all .22s ease;cursor:pointer;outline:none}.track-tab:hover{color:#000;background:#ffffff26}.track-tab.is-active{background:linear-gradient(120deg,#fff,#d5e7ff);color:#0c0c0c;box-shadow:0 10px 25px #00000026}.gallery-stage{position:relative;display:grid;grid-template-columns:1fr;gap:var(--spacing-md)}.gallery-viewport{position:relative;width:100%;aspect-ratio:16 / 9;background:#000;border-radius:var(--border-radius-lg);overflow:hidden;box-shadow:0 20px 40px #00000080;border:1px solid rgba(255,255,255,.1)}.gallery-viewport.is-expanded{aspect-ratio:unset;height:0;padding-bottom:calc(56.25% + 6em + var(--spacing-sm))}.gallery-viewport iframe,.gallery-viewport img{width:100%;height:100%;object-fit:cover;border:none;outline:none}.gallery-viewport.is-expanded iframe,.gallery-viewport.is-expanded img{position:absolute;inset:0}.viewport-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 50%,rgba(0,0,0,.8));pointer-events:none;opacity:.6}.viewport-hint-trigger{position:absolute;inset:0;z-index:30;cursor:zoom-in;display:flex;justify-content:center}.is-embed .viewport-hint-trigger{height:25%;cursor:pointer}.viewport-hint{position:absolute;top:var(--spacing-sm);left:50%;transform:translate(-50%) translateY(-5px);font-family:var(--font-mono);font-size:.65rem;color:#fff;background:#0009;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px 12px;border-radius:4px;letter-spacing:.12em;opacity:0;transition:all .3s cubic-bezier(.23,1,.32,1);z-index:5;pointer-events:none;border:1px solid rgba(255,255,255,.15);white-space:nowrap;will-change:opacity,transform}.gallery-viewport:hover .viewport-hint{opacity:1;transform:translate(-50%) translateY(0)}.gallery-internal-nav{position:absolute;inset:0;display:flex;justify-content:space-between;pointer-events:none;z-index:40}.internal-arrow{width:80px;height:100%;pointer-events:auto;background:transparent;border:none;color:#fff;display:flex;align-items:center;cursor:pointer;transition:all .4s cubic-bezier(.23,1,.32,1);font-size:2.5rem;font-weight:200;opacity:0;text-shadow:0 0 20px rgba(0,0,0,.5);padding:0 var(--spacing-md);position:relative;user-select:none;-webkit-user-select:none;z-index:45}.internal-arrow.prev{justify-content:flex-start;background:linear-gradient(to right,rgba(0,0,0,.4) 0%,transparent 100%)}.internal-arrow.next{justify-content:flex-end;background:linear-gradient(to left,rgba(0,0,0,.4) 0%,transparent 100%)}.gallery-viewport:hover .internal-arrow{opacity:1}.internal-arrow:hover{color:var(--color-accent);transform:scale(1.05)}.internal-arrow.prev:active{transform:translate(-4px)}.internal-arrow.next:active{transform:translate(4px)}.internal-pagination{position:absolute;bottom:0;left:0;right:0;height:4px;display:flex;gap:2px;background:#ffffff1a;pointer-events:none;padding:0;border:none;border-radius:0;-webkit-backdrop-filter:none;backdrop-filter:none}.pagination-dot{flex:1;height:100%;background:#fff3;transition:all .4s ease}.pagination-dot.is-active{background:var(--color-accent);flex:2}.gallery-info{display:flex;flex-direction:column;gap:var(--spacing-sm)}.info-header{display:flex;flex-direction:column;gap:var(--spacing-xs)}.info-meta{display:flex;align-items:center;gap:var(--spacing-xs);font-family:var(--font-mono);font-size:.85rem;color:var(--color-accent)}.meta-sep{opacity:.5}.info-title{font-size:2rem;font-weight:800;line-height:1;margin:0;letter-spacing:-.02em;color:#fff;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2em}.external-link{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:8px;transition:color .2s ease,transform .2s ease}.external-link:hover{color:var(--color-accent)}.link-icon{opacity:.5;transition:opacity .2s ease,transform .2s ease}.external-link:hover .link-icon{opacity:1;transform:translate(2px,-2px)}.summary-link{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px;font-weight:600;transition:opacity .2s ease}.summary-link:hover{opacity:.7}.info-summary{font-size:1rem;line-height:1.5;color:var(--color-secondary);max-width:100%;margin:0;height:6em;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--color-accent) rgba(255,255,255,.05)}.info-summary::-webkit-scrollbar{width:4px}.info-summary::-webkit-scrollbar-track{background:#ffffff0d}.info-summary::-webkit-scrollbar-thumb{background:var(--color-accent);border-radius:2px}.gallery-nav-box{display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.1);background:#0003;border-radius:var(--border-radius-lg);overflow:hidden;margin-top:var(--spacing-sm)}.nav-header{display:flex;justify-content:space-between;align-items:center;padding:6px var(--spacing-sm);border-bottom:1px solid rgba(255,255,255,.1);background:#ffffff05;min-height:32px}.control-pagination{font-family:var(--font-mono);font-size:.9rem;color:var(--color-secondary);display:flex;gap:4px;align-items:center}.control-pagination .current{color:#fff;font-weight:700}.nav-arrow{background:transparent;border:1px solid rgba(255,255,255,.2);color:#fff;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;cursor:pointer;transition:all .2s ease;font-size:.9rem;line-height:1;padding:0;outline:none}.nav-arrow:hover{background:#fff;color:#000;border-color:#fff}.gallery-filmstrip{display:flex;gap:var(--spacing-sm);overflow-x:auto;padding:var(--spacing-sm);scrollbar-width:none}.gallery-filmstrip::-webkit-scrollbar{display:none}.filmstrip-item{flex:0 0 130px;min-width:0;display:flex;flex-direction:column;gap:6px;background:transparent;border:none;padding:0;cursor:pointer;opacity:.5;transition:opacity .2s ease;text-align:left;outline:none}.filmstrip-item:hover,.filmstrip-item.is-active{opacity:1}.filmstrip-thumb{width:100%;aspect-ratio:16 / 9;background:#ffffff0d;border-radius:var(--border-radius-sm);overflow:hidden;position:relative;border:1px solid transparent;transition:border-color .2s ease}.filmstrip-item.is-active .filmstrip-thumb{border-color:var(--color-accent)}.filmstrip-thumb img{width:100%;height:100%;object-fit:cover}.filmstrip-info{width:100%;overflow:hidden;position:relative;mask-image:linear-gradient(to right,black 82%,transparent 100%);-webkit-mask-image:linear-gradient(to right,black 82%,transparent 100%)}.filmstrip-title{font-size:.8rem;color:#fff;white-space:nowrap;font-family:var(--font-mono);display:inline-block;transform:translate(0)}.filmstrip-title.is-overflowing{padding-right:16px;will-change:transform}.filmstrip-item:hover .filmstrip-title.is-overflowing,.filmstrip-item:focus-visible .filmstrip-title.is-overflowing{animation:slide-text 5.2s ease-in-out infinite alternate;animation-delay:.1s}@keyframes slide-text{0%,12%{transform:translate(0)}88%,to{transform:translate(var(--scroll-dist))}}@media (max-width: 1024px){.catalog-shell{grid-template-columns:1fr}.gallery-stage{gap:var(--spacing-md)}.info-title{font-size:2rem}}@media (max-width: 768px){.catalog-item{grid-template-columns:40px 1fr;grid-template-areas:"index main" "index tags";gap:var(--spacing-sm)}.item-index{grid-area:index}.item-main{grid-area:main}.item-tags{grid-area:tags}.item-action{display:none}.item-title{font-size:1.4rem}}.lightbox-overlay{position:fixed;inset:0;z-index:9999;background:#000000eb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);cursor:zoom-out;animation:fadeIn .3s cubic-bezier(.23,1,.32,1);isolation:isolate;will-change:opacity}.lightbox-content{position:relative;max-width:95vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;animation:scaleIn .4s cubic-bezier(.34,1.56,.64,1)}.lightbox-content img,.lightbox-content iframe{max-width:100%;max-height:90vh;object-fit:contain;border-radius:var(--border-radius-md);box-shadow:0 30px 60px #0009;cursor:default}.lightbox-content iframe{width:80vw;aspect-ratio:16 / 9;border:none}.lightbox-close{position:absolute;top:0;right:-100px;background:transparent;border:none;color:#fff;width:120px;height:120px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .4s cubic-bezier(.23,1,.32,1);z-index:100;opacity:0;text-shadow:0 0 30px rgba(0,0,0,1),0 0 10px rgba(0,0,0,.5)}.lightbox-close svg{display:block;transition:transform .4s cubic-bezier(.23,1,.32,1)}.lightbox-content:hover .lightbox-close{opacity:.5}.lightbox-close:hover{opacity:1!important;color:var(--color-accent)}.lightbox-close:hover svg{transform:rotate(90deg) scale(1.1)}.lightbox-close:active{transform:scale(.9)}.lightbox-nav{position:absolute;inset:0;pointer-events:none;z-index:30}.lightbox-arrow{pointer-events:auto;background:transparent;border:none;color:#fff;width:120px;height:120px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:6rem;font-weight:100;transition:all .4s cubic-bezier(.23,1,.32,1);opacity:0;text-shadow:0 0 30px rgba(0,0,0,.9);position:absolute;top:50%;transform:translateY(-50%);z-index:30}.lightbox-content:hover .lightbox-arrow{opacity:.5}.lightbox-arrow:hover{opacity:1!important;color:var(--color-accent);transform:translateY(-50%) scale(1.1)}.lightbox-arrow.prev{left:-170px}.lightbox-arrow.next{right:-170px}.lightbox-pagination{position:absolute;bottom:-40px;left:20%;right:20%;height:4px;display:flex;gap:6px;opacity:0;transition:opacity .4s ease}.lightbox-content:hover .lightbox-pagination{opacity:1}body.lightbox-active .nav-rail{opacity:0;pointer-events:none;transition:opacity .3s ease}body.lightbox-active .stage-close{opacity:0!important;pointer-events:none!important;transition:opacity .3s ease}body.lightbox-active .stage-overlay{z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@media (max-width: 768px){.lightbox-close{top:10px;right:10px;background:#00000080;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:1.2rem}}.skills-section{width:100%;max-width:1200px;margin:0 auto;padding:var(--spacing-xl)}.skills-specs{display:flex;flex-direction:column;gap:var(--spacing-2xl)}.specs-header{display:flex;align-items:start;border-bottom:2px solid white;padding-bottom:var(--spacing-lg);gap:var(--spacing-xl)}.specs-title{width:100%}.specs-title h2{font-size:clamp(2.5rem,6vw,5.5rem);line-height:.9;font-weight:800;margin:0;color:#fff;letter-spacing:-.03em;white-space:nowrap}.specs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-2xl)}.spec-module{display:flex;flex-direction:column;padding-left:var(--spacing-lg);position:relative;height:100%}.spec-module.single-column .module-content{flex-grow:1;gap:var(--spacing-lg)}.split-column{display:flex;flex-direction:column;gap:var(--spacing-xl);height:100%}.split-column .module-content{gap:2px}.split-column .module-header{margin-bottom:var(--spacing-md)}.spec-module:before{content:"";position:absolute;left:-1px;top:0;height:20px;width:2px;background:var(--color-accent)}.module-header{display:flex;align-items:baseline;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.module-index{font-family:var(--font-mono);color:var(--color-accent);font-size:.9rem}.module-title{font-size:1.2rem;font-weight:700;color:#fff;text-transform:uppercase;margin:0}.module-content{display:flex;flex-direction:column;gap:var(--spacing-sm)}.spec-row{display:flex;align-items:center;gap:var(--spacing-sm);font-family:var(--font-mono);font-size:.9rem}.spec-name{color:var(--color-secondary);white-space:nowrap}.spec-line{flex-grow:1;height:1px;background:var(--color-border);opacity:.3;border-bottom:1px dotted var(--color-secondary);background:none}.specs-footer{border-top:1px solid var(--color-border);padding-top:var(--spacing-md);font-family:var(--font-mono);font-size:.75rem;color:var(--color-accent);text-align:right}@media (max-width: 768px){.specs-header{grid-template-columns:1fr;gap:var(--spacing-md)}.specs-grid{border-left:none;padding-left:0}.spec-module{padding-left:0;border-left:1px solid var(--color-border);padding-left:var(--spacing-md)}}.contact-section{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.contact-signal{width:100%;max-width:1200px;margin:0 auto;padding:var(--spacing-xl)}.signal-grid{display:grid;grid-template-columns:1.5fr 1fr;grid-template-rows:1fr auto;gap:var(--spacing-3xl);height:100%}.signal-main{display:flex;flex-direction:column;justify-content:center}.signal-title{font-size:clamp(5rem,12vw,10rem);line-height:.8;font-weight:900;color:#fff;margin:0;letter-spacing:-.05em}.signal-status{display:flex;align-items:center;gap:var(--spacing-md);margin-top:var(--spacing-xl);font-family:var(--font-mono);color:var(--color-accent);font-size:.9rem;letter-spacing:.1em}.status-indicator{width:12px;height:12px;background:var(--color-accent);border-radius:50%;box-shadow:0 0 10px var(--color-accent);animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.7}to{transform:scale(1);opacity:1}}.signal-links{display:flex;flex-direction:column;justify-content:center;gap:var(--spacing-md);border-left:1px solid var(--color-border);padding-left:var(--spacing-2xl)}.signal-link-item{display:flex;align-items:baseline;justify-content:space-between;padding:var(--spacing-md) 0;border-bottom:1px solid rgba(255,255,255,.1);text-decoration:none;transition:border-color .3s ease}.signal-link-item:hover{border-color:var(--color-accent)}.link-label{font-family:var(--font-mono);color:var(--color-secondary);font-size:.85rem;text-transform:uppercase;width:100px;transition:transform .3s ease}.link-handle{font-size:1.5rem;font-weight:700;color:#fff;flex-grow:1;transition:transform .3s ease}.signal-link-item:hover .link-label,.signal-link-item:hover .link-handle{transform:translate(var(--spacing-md))}.signal-footer{grid-column:1 / -1;display:flex;justify-content:flex-end;border-top:1px solid var(--color-border);padding-top:var(--spacing-md);font-family:var(--font-mono);font-size:.75rem;color:var(--color-accent)}@media (max-width: 900px){.signal-grid{grid-template-columns:1fr;gap:var(--spacing-xl)}.signal-links{border-left:none;padding-left:0}.signal-title{font-size:15vw}}.animate-text{opacity:0;transform:translateY(30px)}.model-toggle-button{display:none}.model-toggle-button:hover{background:#ffffff26;border-color:var(--color-border-hover);transform:translateY(-2px)}.model-toggle-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.portfolio-section::-webkit-scrollbar{width:6px}.portfolio-section::-webkit-scrollbar-track{background:transparent}.portfolio-section::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.portfolio-section::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){.portfolio-section{width:100%;max-width:none;padding:var(--spacing-xl) var(--spacing-lg)}.nav-container{padding:0 var(--spacing-sm)}.nav-item{padding:var(--spacing-sm) var(--spacing-md);font-size:.9rem}.nav-label{display:none}.section-title{font-size:2rem}.landing-title{font-size:clamp(2.5rem,12vw,4rem)}.landing-subtitle{font-size:clamp(.875rem,4vw,1.125rem)}.contact-content,.projects-grid{grid-template-columns:1fr}}@media (max-width: 480px){.landing-content{padding:var(--spacing-xl);margin:var(--spacing-lg)}.model-toggle-button{bottom:var(--spacing-sm);right:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);font-size:.75rem}}
