.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:0 auto auto 0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}:root{--color-bg-base: #f8fbfc;--color-bg-surface: #eff6f7;--color-bg-elevated: #dce8eb;--color-bg-overlay: #cfdde1;--color-accent-primary: #3b7a85;--color-accent-secondary: #2a6470;--color-accent-tertiary: #1c4e58;--color-text-primary: #10282e;--color-text-secondary: #4a6a70;--color-text-muted: #83b1b9;--color-text-accent: var(--color-accent-primary);--color-border: #d5e6e9;--color-border-accent: rgba(59, 122, 133, .3);--glow-primary: 0 4px 16px rgba(59, 122, 133, .25);--glow-secondary: 0 4px 16px rgba(42, 100, 112, .2);--glow-subtle: 0 2px 8px rgba(59, 122, 133, .15);--font-main: "DM Sans", system-ui, sans-serif;--font-mono: "Martian Mono", "Courier New", monospace;--font-size-xs: .65rem;--font-size-sm: .75rem;--font-size-base: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-size-3xl: 2.8rem;--line-height-tight: 1.3;--line-height-base: 1.65;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--sidebar-width: 256px;--skill-panel-width: 380px;--skill-panel-duration: .28s;--header-height: 52px;--content-max-width: 860px;--border-radius-sm: 3px;--border-radius-md: 6px;--border-radius-lg: 10px;--transition-fast: .12s ease;--transition-base: .22s ease;--transition-slow: .4s ease;--reveal-distance: 24px;--reveal-duration: .6s;--reveal-ease: cubic-bezier(.25, .46, .45, .94);--reveal-stagger: 70ms;--lang-morph-duration: .4s;--lang-morph-ease: cubic-bezier(.2, .8, .2, 1);--terminal-dot-red: #ff5f57;--terminal-dot-yellow: #febc2e;--terminal-dot-green: #28c840;--terminal-prompt: var(--color-accent-primary);--page-offset: var(--sidebar-width);--page-w: calc(100vw - var(--page-offset))}@media screen and (max-width:768px){:root{--page-offset: 0px}}[data-theme=dark]{--color-bg-base: #f8fbfc;--color-bg-surface: #eff6f7;--color-bg-elevated: #dce8eb;--color-bg-overlay: #cfdde1;--color-accent-primary: #3b7a85;--color-accent-secondary: #2a6470;--color-accent-tertiary: #1c4e58;--color-text-primary: #10282e;--color-text-secondary: #4a6a70;--color-text-muted: #83b1b9;--color-text-accent: var(--color-accent-primary);--color-border: #d5e6e9;--color-border-accent: rgba(59, 122, 133, .3);--glow-primary: 0 4px 16px rgba(59, 122, 133, .25);--glow-secondary: 0 4px 16px rgba(42, 100, 112, .2);--glow-subtle: 0 2px 8px rgba(59, 122, 133, .15);--font-main: "DM Sans", system-ui, sans-serif;--font-mono: "Martian Mono", "Courier New", monospace;--font-size-xs: .65rem;--font-size-sm: .75rem;--font-size-base: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-size-3xl: 2.8rem;--line-height-tight: 1.3;--line-height-base: 1.65;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--sidebar-width: 256px;--skill-panel-width: 380px;--skill-panel-duration: .28s;--header-height: 52px;--content-max-width: 860px;--border-radius-sm: 3px;--border-radius-md: 6px;--border-radius-lg: 10px;--transition-fast: .12s ease;--transition-base: .22s ease;--transition-slow: .4s ease;--reveal-distance: 24px;--reveal-duration: .6s;--reveal-ease: cubic-bezier(.25, .46, .45, .94);--reveal-stagger: 70ms;--lang-morph-duration: .4s;--lang-morph-ease: cubic-bezier(.2, .8, .2, 1);--terminal-dot-red: #ff5f57;--terminal-dot-yellow: #febc2e;--terminal-dot-green: #28c840;--terminal-prompt: var(--color-accent-primary);--color-bg-base: #0d1e22;--color-bg-surface: #152a2f;--color-bg-elevated: #1c3840;--color-bg-overlay: #243e46;--color-accent-primary: #4fa8b5;--color-accent-secondary: #3d8f9c;--color-accent-tertiary: #2d6b78;--color-text-primary: #e0eef1;--color-text-secondary: #7aaab2;--color-text-muted: #3d6a72;--color-border: #1e3c44;--color-border-accent: rgba(79, 168, 181, .3);--glow-primary: 0 0 8px rgba(79, 168, 181, .35), 0 0 20px rgba(79, 168, 181, .12);--glow-secondary: 0 0 8px rgba(61, 143, 156, .35), 0 0 20px rgba(61, 143, 156, .12);--glow-subtle: 0 0 4px rgba(79, 168, 181, .2)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-behavior:smooth;overscroll-behavior-y:none;background-color:var(--color-bg-base)}html::-webkit-scrollbar{width:3px}html::-webkit-scrollbar-track{background:transparent}html::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}html::-webkit-scrollbar-thumb:hover{background:var(--color-accent-primary)}body{background-color:var(--color-bg-base);color:var(--color-text-primary);font-family:var(--font-main);font-size:var(--font-size-base);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-main);font-weight:700;color:var(--color-text-primary);margin:0 0 var(--space-4);line-height:var(--line-height-tight)}p{margin:0 0 var(--space-4)}a{color:var(--color-accent-primary);text-decoration:none;transition:opacity var(--transition-fast)}a:hover{opacity:.8}button{font-family:var(--font-main);cursor:pointer}.reveal,.stagger-reveal{--reveal-transition: opacity var(--reveal-duration) var(--reveal-ease) var(--reveal-delay, 0s), translate var(--reveal-duration) var(--reveal-ease) var(--reveal-delay, 0s);opacity:0;translate:0 var(--reveal-distance);transition:var(--reveal-transition)}.reveal.revealed,.stagger-reveal.revealed{opacity:1;translate:none}.stagger-reveal{--reveal-delay: calc(var(--stagger-index, 0) * var(--reveal-stagger))}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:var(--lang-morph-duration);animation-timing-function:var(--lang-morph-ease)}::view-transition-old(.lang-box){display:none}::view-transition-new(.lang-box){animation:none;width:100%;height:100%}::view-transition-old(.lang-text),::view-transition-new(.lang-text){height:100%;object-fit:none;object-position:left top}::view-transition-old(.lang-toggle){display:none}::view-transition-new(.lang-toggle){animation:none}::view-transition-group(.layer-panel){z-index:1}::view-transition-group(.in-panel){z-index:2}::view-transition-group(.layer-top){z-index:3}::view-transition-group(.in-top){z-index:4}::view-transition-group(.layer-drawer){z-index:5}::view-transition-group(.in-drawer){z-index:6}html[data-vt=lang] .panel-item *,html[data-vt=theme] *{view-transition-name:none!important}html[data-vt=skills] app-skills .page-container *,html[data-vt=skills] .panel-item *{view-transition-name:none!important}::view-transition-new(.panel-card):only-child{animation-name:vt-slide-in-right}::view-transition-old(.panel-card):only-child{animation-name:vt-slide-out-right}@keyframes vt-slide-in-right{0%{translate:110% 0;opacity:0}}@keyframes vt-slide-out-right{to{translate:110% 0;opacity:0}}html[data-vt^=page] .shell-main *{view-transition-name:none!important}html:not([data-vt=page]) app-page-sweep{display:none}:root[data-vt=page]::view-transition-old(root),:root[data-vt=page]::view-transition-new(root),:root[data-vt=page]::view-transition-new(.page-sweep){animation:vt-page-strip var(--page-slide-duration) cubic-bezier(.65,0,.35,1) both}:root[data-vt=page]::view-transition-old(root){--strip-from: 0;--strip-to: calc(var(--vt-sign) * var(--vt-pages) * -1)}:root[data-vt=page]::view-transition-new(root){--strip-from: calc(var(--vt-sign) * var(--vt-pages));--strip-to: 0}:root[data-vt=page]::view-transition-new(page-sweep-1){--strip-from: calc(var(--vt-sign) * 1);--strip-to: calc(var(--vt-sign) * (1 - var(--vt-pages)))}:root[data-vt=page]::view-transition-new(page-sweep-2){--strip-from: calc(var(--vt-sign) * 2);--strip-to: calc(var(--vt-sign) * (2 - var(--vt-pages)))}:root[data-vt=page]::view-transition-new(page-sweep-3){--strip-from: calc(var(--vt-sign) * 3);--strip-to: calc(var(--vt-sign) * (3 - var(--vt-pages)))}:root[data-vt=page]::view-transition-new(page-sweep-4){--strip-from: calc(var(--vt-sign) * 4);--strip-to: calc(var(--vt-sign) * (4 - var(--vt-pages)))}:root[data-vt=page]::view-transition-group(.page-sweep){z-index:0}@keyframes vt-page-strip{0%{translate:calc(var(--strip-from) * var(--page-w)) 0}to{translate:calc(var(--strip-to) * var(--page-w)) 0}}body.custom-cursor-active *{cursor:none!important}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes glitch{0%{clip-path:inset(40% 0 61% 0);transform:translate(-4px)}20%{clip-path:inset(92% 0 1% 0);transform:translate(4px)}40%{clip-path:inset(43% 0 1% 0);transform:translate(-2px)}60%{clip-path:inset(25% 0 58% 0);transform:translate(2px)}80%{clip-path:inset(54% 0 7% 0);transform:translate(-1px)}to{clip-path:inset(58% 0 43% 0);transform:translate(0)}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}.cursor-blink{animation:cursorBlink 1s step-end infinite}.cursor-blink.hidden{display:none}
