:root{--black: #0B0B0D;--white: #FAFAFB;--silver: #B4B9C1;--black-dim: rgba(11, 11, 13, .62);--white-dim: rgba(250, 250, 251, .62);--silver-dark: #17181C;--silver-light: #E8EAEE;--silver-ink: #6E747E;--ground: var(--black);--raised: var(--silver-dark);--ink: var(--white);--ink-dim: var(--silver);--on-ink: var(--black);--wash: rgba(250, 250, 251, .06);--hair: rgba(250, 250, 251, .16);--edge: rgba(250, 250, 251, .34);--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", "Segoe UI", Roboto, Inter, Arial, sans-serif;--ty-hero-size: clamp(2.5rem, 8.4vw, 8.6rem);--ty-hero-lh: .98;--ty-hero-ls: -.03em;--ty-title-size: clamp(1.85rem, 3.9vw, 3.5rem);--ty-title-lh: 1.06;--ty-title-ls: -.02em;--ty-body-size: 1.0625rem;--ty-body-lh: 1.6;--ty-body-ls: -.005em;--ty-label-size: 1rem;--ty-label-lh: 1.4;--ty-meta-size: .875rem;--ty-meta-lh: 1.5;--optical-lead: -.0524em;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-both: cubic-bezier(.76, 0, .24, 1);--t-press: .1s;--t-state: .18s;--t-chrome: .32s;--t-reveal: .62s;--container: clamp(20rem, 86vw, 100rem);--pad-x: clamp(1.25rem, 4vw, 4rem);--panel-y: clamp(4rem, 10vh, 8rem);--nav-h: 4rem;--nav-inset: .75rem;--nav-max: 112rem;--radius: 22px;--radius-sm: 12px;--radius-pill: 999px;--z-base: 0;--z-raised: 1;--z-nav: 200;--z-float: 250;--z-preloader: 300;--z-pointer: 400;--cursor-size: 10px;--cursor-aura: 38px}:root{--accent: var(--ink);--accent-dim: var(--ink-dim);--accent-deep: var(--ink-dim);--on-accent: var(--on-ink);--tint-wash: var(--wash);--tint-hairline: var(--hair);--tint-edge: var(--edge);--tint-glow: rgba(180, 185, 193, .5);--tint-faint: rgba(180, 185, 193, .12);--glow-core: rgba(180, 185, 193, .3);--edge-fade: rgba(11, 11, 13, .5);--c-border: var(--hair);--c-text-1: var(--ink);--c-text-2: var(--ink-dim);--c-text-3: var(--ink-dim);--g-accent: linear-gradient(135deg, var(--ink), var(--ink));--g-accent-text: linear-gradient(135deg, var(--ink) 0%, var(--ink) 42%, var(--ink-dim) 100%);--g-accent-soft: linear-gradient(135deg, var(--wash), transparent);--mat-base: var(--ground);--mat-raised: var(--raised);--mat-sunken: color-mix(in srgb, var(--ground) 86%, #000);--mat-chrome: color-mix(in srgb, var(--ground) 72%, transparent);--mat-sheet: color-mix(in srgb, var(--raised) 92%, transparent);--blur-chrome: blur(20px) saturate(1.5);--blur-sheet: blur(24px) saturate(1.5);--shadow-card: 0 20px 60px rgba(0, 0, 0, .34);--shadow-sheet: 0 24px 70px rgba(0, 0, 0, .44);--shadow-chrome: 0 1px 24px rgba(0, 0, 0, .24);--font: var(--font-sans);--ty-display-size: var(--ty-hero-size);--ty-display-lh: var(--ty-hero-lh);--ty-display-ls: var(--ty-hero-ls);--ty-headline-size: clamp(1.15rem, 1.7vw, 1.4rem);--ty-headline-lh: 1.3;--ty-headline-ls: -.015em;--ty-body-lg-size: var(--ty-body-size);--ty-body-lg-lh: var(--ty-body-lh);--ty-body-lg-ls: var(--ty-body-ls);--ty-body-ls: -.005em;--ty-callout-size: clamp(.97rem, 1.25vw, 1.08rem);--ty-callout-lh: 1.5;--ty-caption-size: var(--ty-meta-size);--ty-caption-lh: var(--ty-meta-lh);--ty-caption-ls: 0;--ty-label-ls: 0;--nav-h: 64px;--section-gap: var(--panel-y);--max-w: var(--container);--gutter: var(--pad-x);--gutter-wide: var(--pad-x);--grid-gap: 1.25rem;--ease-in: cubic-bezier(.64, 0, .78, 0);--ease-both: cubic-bezier(.76, 0, .24, 1);--z-chrome: var(--z-nav);--z-transition: 280}@media(prefers-reduced-transparency:reduce){:root{--mat-chrome: var(--ground);--mat-sheet: var(--raised);--blur-chrome: none;--blur-sheet: none}}@media(prefers-contrast:more){.panel--dark{--hair: rgba(180, 185, 193, .45);--edge: rgba(180, 185, 193, .75);--ink-dim: #D6DAE0}.panel--light{--hair: rgba(110, 116, 126, .5);--edge: rgba(110, 116, 126, .8);--ink-dim: #4A4F58}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:clamp(100%,.96rem + .18vw,1.25rem);background:var(--black)}body{font-family:var(--font-sans);font-size:var(--ty-body-size);line-height:var(--ty-body-lh);letter-spacing:var(--ty-body-ls);font-weight:400;font-optical-sizing:auto;background:var(--black);color:var(--white);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:none}html.is-locked body{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;cursor:none}img,svg,video,canvas{display:block;max-width:100%}::selection{background:var(--ink);color:var(--on-ink)}a:focus-visible,button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--edge);outline-offset:3px;border-radius:6px}.display,.section-title,.hero-title{font-weight:600;color:var(--ink);text-wrap:balance}.hero-title{font-size:var(--ty-hero-size);line-height:var(--ty-hero-lh);letter-spacing:var(--ty-hero-ls);margin-inline-start:var(--optical-lead)}.section-title{font-size:var(--ty-title-size);line-height:var(--ty-title-lh);letter-spacing:var(--ty-title-ls);margin-inline-start:var(--optical-lead);margin-bottom:1.1rem}.section-body{font-size:var(--ty-body-size);line-height:var(--ty-body-lh);letter-spacing:var(--ty-body-ls);color:var(--ink-dim);max-width:46ch}.section-body strong{font-weight:600;color:var(--ink)}.section-label,.eyebrow{display:flex;align-items:center;gap:.6em;font-size:var(--ty-label-size);line-height:var(--ty-label-lh);letter-spacing:0;font-weight:400;color:var(--ink-dim);margin-bottom:1.1rem}.section-label:before,.eyebrow:before{content:"";flex:none;width:.66em;aspect-ratio:1;border-radius:50%;border:.2em solid currentColor;opacity:.85}.meta{font-size:var(--ty-meta-size);line-height:var(--ty-meta-lh);color:var(--ink-dim)}.tag{display:inline-block;font-size:var(--ty-meta-size);line-height:1.35;font-weight:400;padding:.4em .95em;border-radius:var(--radius-pill);background:var(--wash);border:1px solid var(--hair);color:var(--ink-dim);transition:border-color var(--t-state) var(--ease-out),color var(--t-state) var(--ease-out)}.tag:hover{border-color:var(--edge);color:var(--ink)}.btn-primary,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.95em 1.9em;border-radius:var(--radius-pill);font-size:var(--ty-callout-size);line-height:1;font-weight:400;transition:background var(--t-state) var(--ease-out),border-color var(--t-state) var(--ease-out),color var(--t-state) var(--ease-out)}.btn-primary{background:var(--ink);color:var(--on-ink);font-weight:600;letter-spacing:-.01em;border:1px solid var(--ink)}.btn-primary:hover{background:transparent;color:var(--ink)}.btn-ghost{border:1px solid var(--hair);color:var(--ink);background:transparent}.btn-ghost:hover{background:var(--wash);border-color:var(--edge)}.btn-primary:active,.btn-ghost:active,.nav-btn:active,.nav-menu-link:active,.contact-link:active,.chip:active,.skill-link:active,.project-link:active,.back-link:active,#chat-send:active,#chat-trigger:active,#nav-menu-toggle:active{transform:scale(.97);transition:transform var(--t-press) var(--ease-out)}.site-footer{margin-top:clamp(3rem,7vh,5.5rem);padding-top:1.6rem;border-top:1px solid var(--hair);display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;justify-content:space-between;align-items:baseline}.site-footer p{font-size:var(--ty-meta-size);line-height:var(--ty-meta-lh);color:var(--ink-dim)}.site-footer strong{font-weight:400;color:var(--ink)}.container{width:min(var(--container),100% - 2 * var(--pad-x));margin-inline:auto}.panel{position:relative;min-height:100vh;min-height:100svh;overflow:clip;display:flex;align-items:center;isolation:isolate}.panel--dark{background:var(--black);color:var(--white);--ground: var(--black);--raised: var(--silver-dark);--ink: var(--white);--ink-dim: var(--silver);--on-ink: var(--black);--wash: rgba(180, 185, 193, .08);--hair: rgba(180, 185, 193, .22);--edge: rgba(180, 185, 193, .45)}.panel--light{background:var(--white);color:var(--black);--ground: var(--white);--raised: var(--silver-light);--ink: var(--black);--ink-dim: var(--silver-ink);--on-ink: var(--white);--wash: rgba(110, 116, 126, .08);--hair: rgba(110, 116, 126, .26);--edge: rgba(110, 116, 126, .5)}.panel__inner{width:min(var(--container),100% - 2 * var(--pad-x));margin-inline:auto;padding-block:var(--panel-y);position:relative;z-index:1}.panel__inner--wide{width:min(1560px,100% - 2 * var(--pad-x))}.panel__shade{position:absolute;top:0;right:0;bottom:0;left:0;background:#071b06;opacity:0;pointer-events:none;z-index:2}@media(min-width:681px){.panel--sticky{position:sticky}}.chapter--hero{position:relative;height:140svh;background:var(--black);color:var(--white)}.hero__scene{position:sticky;top:0;height:100vh;height:100svh;overflow:clip;display:flex;align-items:center;isolation:isolate}@media(prefers-reduced-motion:reduce){.chapter--hero{height:100svh}}.grain:before{content:"";position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:3;pointer-events:none;opacity:.19;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");animation:grain-shift .7s steps(1,end) infinite}@keyframes grain-shift{0%{transform:translate(0)}10%{transform:translate(-4%,-3%)}20%{transform:translate(-8%,2%)}30%{transform:translate(3%,-6%)}40%{transform:translate(-2%,7%)}50%{transform:translate(-9%,-3%)}60%{transform:translate(6%,1%)}70%{transform:translate(-1%,5%)}80%{transform:translate(4%,-4%)}90%{transform:translate(-6%,3%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.grain:before{animation:none}}#cursor-dot,#cursor-aura{position:fixed;top:0;left:0;width:0;height:0;pointer-events:none;will-change:transform}#cursor-dot{z-index:calc(var(--z-pointer) + 1)}#cursor-aura{z-index:var(--z-pointer)}#cursor-dot i,#cursor-aura i{position:absolute;top:0;left:0;display:block;border-radius:50%;transform:translate(-50%,-50%)}#cursor-dot i,#cursor-aura i{--cursor-ink: #FAFAFB}body[data-cursor-over=light] #cursor-dot i,body[data-cursor-over=light] #cursor-aura i{--cursor-ink: #0B0B0D}#cursor-dot i{width:var(--cursor-size);height:var(--cursor-size);background:var(--cursor-ink);transition:width var(--t-state) var(--ease-out),height var(--t-state) var(--ease-out),background-color var(--t-state) var(--ease-out),opacity var(--t-state) var(--ease-out)}#cursor-aura i{width:var(--cursor-aura);height:var(--cursor-aura);border:1px solid color-mix(in srgb,var(--cursor-ink) 55%,transparent);background:transparent;transition:width var(--t-chrome) var(--ease-out),height var(--t-chrome) var(--ease-out),border-color var(--t-state) var(--ease-out),background var(--t-state) var(--ease-out),opacity var(--t-state) var(--ease-out)}body.cursor-hover #cursor-dot i{width:calc(var(--cursor-size) * .4);height:calc(var(--cursor-size) * .4)}body.cursor-hover #cursor-aura i{width:3.5rem;height:3.5rem;border-color:color-mix(in srgb,var(--cursor-ink) 85%,transparent);background:color-mix(in srgb,var(--cursor-ink) 10%,transparent)}body.cursor-press #cursor-dot i{width:calc(var(--cursor-size) * 1.5);height:calc(var(--cursor-size) * 1.5);transition-duration:var(--t-press)}body.cursor-press #cursor-aura i{width:1.5rem;height:1.5rem;opacity:.6;transition-duration:var(--t-press)}@media(pointer:coarse){#cursor-dot,#cursor-aura{display:none}}#nav{position:fixed;top:var(--nav-inset);inset-inline:var(--nav-inset);max-width:var(--nav-max);margin-inline:auto;z-index:var(--z-nav);min-height:var(--nav-h);display:flex;align-items:center;gap:clamp(.75rem,2vw,2rem);padding-inline:clamp(.9rem,1.6vw,1.5rem);border-radius:var(--radius-pill);border:1px solid var(--hair);-webkit-backdrop-filter:blur(20px) saturate(1.5);backdrop-filter:blur(20px) saturate(1.5);transition:background-color var(--t-chrome) var(--ease-out),border-color var(--t-chrome) var(--ease-out),color var(--t-chrome) var(--ease-out)}#nav[data-over=dark]{--ink: var(--white);--ink-dim: var(--silver);--hair: rgba(250, 250, 251, .16);--edge: rgba(250, 250, 251, .34);--wash: rgba(250, 250, 251, .08);--on-ink: var(--black);--nav-sheet: rgba(20, 21, 25, .94);background-color:#0b0b0d6b;color:var(--white)}#nav[data-over=light]{--ink: var(--black);--ink-dim: var(--silver-ink);--hair: rgba(11, 11, 13, .16);--edge: rgba(11, 11, 13, .34);--wash: rgba(11, 11, 13, .06);--on-ink: var(--white);--nav-sheet: rgba(250, 250, 251, .96);background-color:#fafafb85;color:var(--black)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){#nav[data-over=dark]{background-color:#0b0b0df0}#nav[data-over=light]{background-color:#fafafbf5}}@media(prefers-reduced-transparency:reduce){#nav{-webkit-backdrop-filter:none;backdrop-filter:none}#nav[data-over=dark]{background-color:var(--black)}#nav[data-over=light]{background-color:var(--white)}}.nav-brand{display:flex;align-items:center;gap:.6rem;flex:none;padding-block:.9rem}.nav-mark{width:17px;aspect-ratio:1;border-radius:50%;border:5px solid currentColor;flex:none;transition:transform var(--t-state) var(--ease-out)}.nav-brand:hover .nav-mark{transform:scale(1.12)}.nav-wordmark{font-size:var(--ty-meta-size);font-weight:600;letter-spacing:-.015em;white-space:nowrap}.nav-links{display:flex;align-items:center;gap:clamp(.4rem,1.2vw,1.1rem);list-style:none;margin-inline:auto}.nav-links li{position:relative;display:flex;align-items:center}.nav-links>li>a{font-size:var(--ty-meta-size);color:var(--ink-dim);padding:.5rem .2rem;transition:color var(--t-state) var(--ease-out)}.nav-links>li>a:hover,.nav-links>li>a.is-active{color:var(--ink)}.nav-dd-wrap{gap:.1rem}.nav-dd-toggle{display:grid;place-items:center;width:20px;height:20px;color:var(--ink-dim);border-radius:50%;transition:color var(--t-state) var(--ease-out),background var(--t-state) var(--ease-out),transform var(--t-state) var(--ease-out)}.nav-dd-toggle svg{width:13px;height:13px}.nav-dd-toggle:hover{color:var(--ink);background:var(--wash)}.nav-dd-toggle.is-open{color:var(--ink);transform:rotate(180deg)}.nav-dd{position:absolute;top:calc(100% + .9rem);left:50%;min-width:12.5rem;display:flex;flex-direction:column;gap:.15rem;padding:.45rem;border-radius:var(--radius-sm);background:var(--nav-sheet);border:1px solid var(--hair);box-shadow:var(--shadow-sheet);-webkit-backdrop-filter:var(--blur-sheet);backdrop-filter:var(--blur-sheet)}.nav-right{display:flex;align-items:center;gap:.5rem;flex:none}.nav-actions{display:flex;align-items:center;gap:.4rem}.nav-btn{font-size:var(--ty-meta-size);color:var(--ink);padding:.5em 1em;border-radius:var(--radius-pill);border:1px solid var(--hair);white-space:nowrap;transition:background var(--t-state) var(--ease-out),border-color var(--t-state) var(--ease-out)}.nav-btn:hover{background:var(--wash);border-color:var(--edge)}.nav-menu-link{display:block;font-size:var(--ty-meta-size);color:var(--ink-dim);padding:.6rem .75rem;border-radius:8px;transition:background var(--t-state) var(--ease-out),color var(--t-state) var(--ease-out)}.nav-menu-link:hover{background:var(--wash);color:var(--ink)}.nav-menu-link.is-active{color:var(--ink)}#nav-menu-toggle{display:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--hair);place-items:center;gap:4px;flex-direction:column}#nav-menu-toggle span{display:block;width:13px;height:1.5px;background:currentColor;transition:transform var(--t-state) var(--ease-out),opacity var(--t-state) var(--ease-out)}#nav-menu-toggle.is-open span:first-child{transform:translateY(2.75px) rotate(45deg)}#nav-menu-toggle.is-open span:last-child{transform:translateY(-2.75px) rotate(-45deg)}#nav-menu{position:absolute;top:calc(100% + .6rem);inset-inline-end:0;min-width:15rem;padding:.5rem;border-radius:var(--radius);background:var(--nav-sheet);border:1px solid var(--hair);box-shadow:var(--shadow-sheet);-webkit-backdrop-filter:var(--blur-sheet);backdrop-filter:var(--blur-sheet)}#nav-menu ul{list-style:none}.nav-menu-group,.nav-menu-external{margin-top:.35rem;padding-top:.35rem;border-top:1px solid var(--hair)}@media(max-width:940px){.nav-links,.nav-actions{display:none}#nav-menu-toggle{display:flex}.nav-brand{margin-inline-end:auto}}@media(max-width:420px){.nav-wordmark{display:none}}#chatbot{position:fixed;bottom:3.75rem;right:3.125rem;z-index:var(--z-float);display:flex;flex-direction:column;align-items:flex-end;gap:.625rem}#chat-trigger{position:relative;width:3.4375rem;height:3.4375rem;border-radius:50%;background:var(--mat-raised);border:1px solid var(--tint-hairline);display:flex;align-items:center;justify-content:center;transition:border-color var(--t-state) var(--ease-out),background var(--t-state) var(--ease-out)}#chat-trigger:hover{border-color:var(--tint-edge);background:var(--mat-sunken)}.chat-trigger-icon{font-family:var(--font);font-size:var(--ty-caption-size);font-weight:600;color:var(--c-text-1);letter-spacing:-.05em;line-height:1;-webkit-user-select:none;user-select:none;position:relative;z-index:var(--z-raised);transition:opacity var(--t-state) var(--ease-out)}.chat-close-icon{font-family:var(--font);font-size:1.125rem;font-weight:400;color:var(--c-text-1);line-height:1;-webkit-user-select:none;user-select:none;position:absolute;opacity:0;transform:rotate(-90deg) scale(.6);transition:opacity var(--t-state) var(--ease-out),transform var(--t-state) var(--ease-out)}#chatbot.open .chat-trigger-icon{opacity:0}#chatbot.open .chat-close-icon{opacity:1;transform:rotate(0) scale(1)}.chat-orbit{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:1px solid var(--tint-faint);animation:chat-spin 12s linear infinite;pointer-events:none;will-change:transform}.chat-orbit:before{content:"";position:absolute;width:4px;height:4px;background:var(--accent);border-radius:50%;top:50%;left:-2px;transform:translateY(-50%);box-shadow:0 0 6px 2px var(--glow-core)}@keyframes chat-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#chatbot.open .chat-orbit{animation-play-state:paused}.chat-notify{position:absolute;top:2px;right:2px;width:8px;height:8px;background:var(--accent);border-radius:50%;border:1.5px solid var(--mat-base);animation:notify-pop var(--t-chrome) var(--ease-out) 1.2s both;z-index:2}@keyframes notify-pop{0%{transform:scale(0)}to{transform:scale(1)}}#chatbot.open .chat-notify,#chatbot.seen .chat-notify{display:none}#chat-panel{width:20rem;height:26.25rem;background:var(--mat-sheet);backdrop-filter:var(--blur-sheet);-webkit-backdrop-filter:var(--blur-sheet);border:1px solid var(--c-border);border-radius:20px;box-shadow:var(--shadow-sheet);display:flex;flex-direction:column;overflow:hidden;will-change:transform}.chat-grabber{display:none;width:2.25rem;height:4px;border-radius:2px;background:var(--tint-edge);margin:.5rem auto 0;flex-shrink:0}.chat-header{padding:1rem 1.125rem .875rem;border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:.625rem;flex-shrink:0}.chat-header-avatar{width:1.875rem;height:1.875rem;border-radius:50%;border:1px solid var(--tint-hairline);object-fit:cover;filter:grayscale(1);flex-shrink:0}.chat-header-info{flex:1;min-width:0}.chat-header-name{font-size:var(--ty-caption-size);font-weight:600;letter-spacing:.01em;color:var(--c-text-1);line-height:1.2}.chat-header-status{font-size:.6875rem;color:var(--c-text-3);display:flex;align-items:center;gap:5px;margin-top:1px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.75;animation:status-breathe 3.4s ease-in-out infinite;flex-shrink:0}@keyframes status-breathe{0%,to{opacity:.75}50%{opacity:.55}}.chat-messages{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:1rem .875rem;display:flex;flex-direction:column;gap:.625rem;scroll-behavior:smooth}.chat-messages::-webkit-scrollbar{width:3px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:var(--tint-hairline);border-radius:3px}.msg{max-width:85%;font-size:var(--ty-caption-size);line-height:1.5;font-weight:400;padding:.5625rem .8125rem;border-radius:14px}.msg.bot{background:var(--tint-wash);border:1px solid var(--tint-hairline);color:var(--c-text-2);border-bottom-left-radius:4px;align-self:flex-start}.msg.user{background:var(--accent);border:1px solid transparent;color:var(--on-accent);border-bottom-right-radius:4px;align-self:flex-end}.msg a{text-decoration:underline;text-underline-offset:2px;color:var(--c-text-1)}.chat-chips{display:flex;flex-wrap:wrap;gap:.375rem;padding:0 .875rem .625rem;flex-shrink:0}.chip{font-size:.6875rem;font-weight:400;padding:.3125rem .6875rem;border-radius:var(--radius-pill);border:1px solid var(--tint-hairline);color:var(--c-text-1);background:transparent;white-space:nowrap;transition:background var(--t-state) var(--ease-out),border-color var(--t-state) var(--ease-out)}.chip:hover{background:var(--tint-wash);border-color:var(--tint-edge)}.typing-indicator{display:flex;align-items:center;gap:4px;padding:.5625rem .8125rem;background:var(--tint-wash);border:1px solid var(--tint-hairline);border-radius:14px 14px 14px 4px;align-self:flex-start}.typing-dot{width:5px;height:5px;border-radius:50%;background:var(--c-text-2);opacity:.4}.typing-dot:nth-child(1){animation:type-wave 1.1s ease-in-out infinite 0s}.typing-dot:nth-child(2){animation:type-wave 1.1s ease-in-out infinite .18s}.typing-dot:nth-child(3){animation:type-wave 1.1s ease-in-out infinite .36s}@keyframes type-wave{0%,60%,to{transform:translateY(0);opacity:.35}30%{transform:translateY(-4px);opacity:.9}}.chat-input-row{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem .75rem;border-top:1px solid var(--c-border);flex-shrink:0}#chat-input{flex:1;min-width:0;background:var(--tint-wash);border:1px solid var(--tint-hairline);border-radius:var(--radius-sm);padding:.5rem .75rem;font-family:var(--font);font-size:var(--ty-caption-size);color:var(--c-text-1);outline:none;resize:none;line-height:1.4;transition:border-color var(--t-state) var(--ease-out),background var(--t-state) var(--ease-out)}#chat-input::placeholder{color:var(--c-text-3)}#chat-input:focus{border-color:var(--tint-edge);background:var(--tint-wash)}#chat-send{width:2rem;height:2rem;border-radius:8px;background:var(--tint-wash);border:1px solid var(--tint-hairline);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--t-state) var(--ease-out),border-color var(--t-state) var(--ease-out)}#chat-send:hover{background:var(--accent);border-color:transparent}#chat-send svg{width:14px;height:14px;stroke:var(--c-text-1);fill:none;transition:stroke var(--t-state) var(--ease-out)}#chat-send:hover svg{stroke:var(--on-accent)}@media(pointer:coarse){#chatbot{bottom:1.25rem;right:1rem;left:1rem;align-items:flex-end}#chat-panel{width:100%;height:min(24rem,70svh);touch-action:pan-y}.chat-grabber{display:block}.chat-header{padding-top:.75rem}.chip{padding:.5rem .875rem;font-size:var(--ty-label-size)}#chat-send{width:2.5rem;height:2.5rem}}.page-curtain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-transition);pointer-events:none;background:radial-gradient(60% 45% at 50% 50%,rgba(180,185,193,.1),transparent 70%),var(--black);will-change:transform}.page-curtain:before,.page-curtain:after{content:"";position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 5%,var(--silver) 50%,transparent 95%);opacity:.6}.page-curtain:before{top:0}.page-curtain:after{bottom:0}@property --g1{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --g2{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --gb{syntax: "<number>"; inherits: false; initial-value: 1;}@property --pl-tint{syntax: "<number>"; inherits: false; initial-value: 1;}@property --pl-blur{syntax: "<length>"; inherits: false; initial-value: 0px;}.preloader{--pl-tint: 1;--pl-blur: 0px;position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-preloader);display:grid;place-items:center;overflow:clip;background:rgb(11 11 13 / var(--pl-tint));-webkit-backdrop-filter:blur(var(--pl-blur)) saturate(1.35);backdrop-filter:blur(var(--pl-blur)) saturate(1.35)}.pl-stage{position:relative;display:flex;flex-direction:column;align-items:center;gap:1.2rem;padding-inline:var(--pad-x);text-align:center;will-change:transform,filter,opacity}.pl-mark{position:absolute;top:50%;left:50%;translate:-50% -50%;display:grid;place-items:center;pointer-events:none;z-index:0}.pl-mark i{grid-area:1 / 1;display:block;aspect-ratio:1;border-radius:50%;border:1px solid var(--white);opacity:0}.pl-mark i:nth-child(1){width:clamp(120px,15vw,210px);border-width:2px}.pl-mark i:nth-child(2){width:clamp(200px,25vw,350px)}.pl-mark i:nth-child(3){width:clamp(280px,35vw,490px)}.pl-mark i:nth-child(4){width:clamp(360px,45vw,630px)}.pl-mark i:nth-child(5){width:clamp(440px,55vw,770px)}.pl-lockup{position:relative;z-index:1;display:grid;font-size:clamp(2rem,6.4vw,5rem);line-height:1;letter-spacing:-.03em;font-weight:600;white-space:nowrap;filter:drop-shadow(0 0 var(--g1) rgba(250,250,251,.95)) drop-shadow(0 0 var(--g2) rgba(250,250,251,.55)) brightness(var(--gb));will-change:transform,opacity,filter}.pl-layer{grid-area:1 / 1;display:block}.pl-layer--a{color:transparent;-webkit-text-stroke:1.4px var(--white)}.pl-layer--b{color:var(--black);background:var(--white);padding:.08em .3em;margin:-.08em -.3em;border-radius:.12em}.pl-layer--c{color:var(--white)}.pl-tag{position:relative;z-index:1;font-size:clamp(.92rem,1.5vw,1.2rem);line-height:1.4;letter-spacing:0;color:var(--silver)}.pl-tag span{display:inline-block;white-space:pre;will-change:transform,opacity}@media(prefers-reduced-motion:reduce){.preloader{display:none}}.hero-canvas,.hero-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.hero-video{display:none;object-fit:cover}.hero-content{position:relative;z-index:2;width:min(var(--container),100% - 2 * var(--pad-x));margin-inline:auto;padding-block:calc(var(--nav-h) + var(--nav-inset) + 1.25rem) clamp(3.5rem,8vh,5rem);will-change:transform,opacity}.hero-content .hero-title{font-size:min(var(--ty-hero-size),16vh)}.hero-content .eyebrow{margin-bottom:1.1rem}.hero-title-dim{color:var(--silver)}.hero-sub{margin-top:1.2rem;font-size:var(--ty-body-size);line-height:var(--ty-body-lh);letter-spacing:var(--ty-body-ls);color:var(--silver);max-width:46ch}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.8rem}.scroll-hint{position:absolute;bottom:clamp(1.6rem,4vh,2.8rem);left:50%;translate:-50% 0;z-index:2;display:flex;flex-direction:column;align-items:center;gap:.7rem;font-size:var(--ty-meta-size);color:var(--silver);pointer-events:none}.scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,var(--silver),transparent);transform-origin:top;animation:scroll-line-run 2.1s var(--ease-out) infinite}@keyframes scroll-line-run{0%{transform:scaleY(0);opacity:0}22%{opacity:1}62%,to{transform:scaleY(1);opacity:0}}@media(prefers-reduced-motion:reduce){.scroll-line{animation:none}}@media(max-width:680px){.hero-actions{gap:.6rem}.hero-actions .btn-primary,.hero-actions .btn-ghost{padding:.85em 1.5em}.scroll-hint{display:none}}.about-grid{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}.about-avatar-wrap{position:relative;width:100%;max-width:320px;aspect-ratio:1}.about-avatar{width:100%;height:100%;object-fit:cover;border-radius:50%;filter:grayscale(1) contrast(1.05);mix-blend-mode:multiply}.about-avatar-ring{position:absolute;top:-14px;right:-14px;bottom:-14px;left:-14px;border-radius:50%;border:1px solid var(--hair);pointer-events:none}.about-avatar-ring:after{content:"";position:absolute;top:-16px;right:-16px;bottom:-16px;left:-16px;border-radius:50%;border:1px solid var(--hair);opacity:.55}.about-text .section-body+.section-body{margin-top:1.1rem}.about-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.9rem}@media(max-width:860px){.about-grid{grid-template-columns:minmax(0,1fr);gap:2.4rem}.about-avatar-wrap{max-width:200px}}.skills-header{margin-bottom:clamp(2.2rem,5vh,3.6rem)}.skills-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(.75rem,1.4vw,1.1rem)}@media(min-width:34rem){.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:56rem){.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.skill-card{position:relative;display:flex;flex-direction:column;gap:.55rem;padding:clamp(1.4rem,2.4vw,2rem);min-height:13.5rem;border-radius:var(--radius);background:var(--raised);border:1px solid var(--hair);overflow:clip;transition:border-color var(--t-state) var(--ease-out),transform var(--t-chrome) var(--ease-out)}.skill-card:hover{border-color:var(--edge);transform:translateY(-3px)}.skill-icon{position:absolute;inset-block-start:-.6rem;inset-inline-end:-.6rem;width:7.5rem;aspect-ratio:1;background-color:var(--ink);opacity:.09;pointer-events:none;-webkit-mask-image:var(--icon);mask-image:var(--icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;transition:opacity var(--t-chrome) var(--ease-out),transform var(--t-chrome) var(--ease-out)}.skill-card:hover .skill-icon{opacity:.16;transform:scale(1.06) rotate(-4deg)}.skill-name{position:relative;font-size:var(--ty-headline-size);line-height:var(--ty-headline-lh);letter-spacing:var(--ty-headline-ls);font-weight:600;color:var(--ink);margin-top:auto}.skill-desc{position:relative;font-size:var(--ty-meta-size);line-height:var(--ty-meta-lh);color:var(--ink-dim)}.skill-link{position:relative;display:inline-flex;align-items:center;gap:.5rem;font-size:var(--ty-meta-size);color:var(--ink-dim);width:fit-content;transition:color var(--t-state) var(--ease-out)}.skill-card:hover .skill-link{color:var(--ink)}.skill-link-circle{display:grid;place-items:center;width:1.55em;aspect-ratio:1;border-radius:50%;border:1px solid var(--hair);font-size:.85em;transition:background var(--t-state) var(--ease-out),border-color var(--t-state) var(--ease-out),color var(--t-state) var(--ease-out)}.skill-card:hover .skill-link-circle{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.reveal-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1.5rem;padding-block:clamp(1.1rem,2.4vh,1.9rem);border-top:1px solid var(--hair)}.reveal-row:last-child{border-bottom:1px solid var(--hair)}.reveal-row__surface{position:relative;display:inline-block;width:fit-content;max-width:100%;padding:.12em .34em;margin-inline-start:-.34em;border-radius:.16em;overflow:clip;transform-origin:left center;transition:transform var(--t-reveal) var(--ease-out)}.reveal-row__fill{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.reveal-row__fill:before{content:"";position:absolute;left:var(--mx, 50%);top:var(--my, 50%);width:var(--d, 0px);height:var(--d, 0px);margin-left:calc(var(--d, 0px) / -2);margin-top:calc(var(--d, 0px) / -2);border-radius:50%;transform:scale(0);transition:transform var(--t-reveal) var(--ease-out);background:radial-gradient(50% 60% at 22% 26%,rgba(180,185,193,.3),transparent 70%),radial-gradient(46% 56% at 78% 18%,rgba(180,185,193,.16),transparent 72%),radial-gradient(56% 66% at 30% 84%,rgba(180,185,193,.22),transparent 70%),radial-gradient(52% 62% at 86% 78%,rgba(180,185,193,.12),transparent 70%),var(--black)}.reveal-row__label{position:relative;z-index:1;display:block;font-size:var(--ty-title-size);line-height:var(--ty-title-lh);letter-spacing:var(--ty-title-ls);font-weight:600;color:var(--ink);transition:color var(--t-state) var(--ease-out) .1s}.reveal-row__meta{margin-inline-start:auto;display:flex;align-items:center;gap:.9rem;font-size:var(--ty-meta-size);color:var(--ink-dim)}.reveal-row__desc{flex-basis:100%;font-size:var(--ty-meta-size);line-height:var(--ty-meta-lh);color:var(--ink-dim);max-width:62ch}@media(pointer:fine){.reveal-row:hover .reveal-row__fill:before{transform:scale(1)}.reveal-row:hover .reveal-row__surface{transform:scale(1.035)}.reveal-row:hover .reveal-row__label{color:var(--white)}}@media(prefers-reduced-motion:reduce){.reveal-row__surface,.reveal-row__fill:before,.reveal-row__label{transition-duration:1ms}.reveal-row:hover .reveal-row__surface{transform:none}}@media(max-width:680px){.reveal-row__meta{margin-inline-start:0;flex-basis:100%}}.projects-header{margin-bottom:clamp(1.8rem,4vh,3rem)}.projects-list{display:flex;flex-direction:column}.project-lang{display:inline-flex;align-items:center;gap:.45rem;white-space:nowrap}.lang-dot{width:.55em;aspect-ratio:1;border-radius:50%;background:currentColor;opacity:.5}.lang-dot.lang-c{border-radius:50%}.lang-dot.lang-docker{border-radius:2px}.lang-dot.lang-bash{border-radius:2px;transform:rotate(45deg)}.project-badge{font-size:var(--ty-meta-size);padding:.25em .8em;border-radius:var(--radius-pill);border:1px solid var(--hair);white-space:nowrap}.reveal-row__arrow{width:1.1rem;height:1.1rem;flex:none;transition:transform var(--t-state) var(--ease-out)}@media(pointer:fine){.reveal-row:hover .reveal-row__arrow{transform:translate(4px)}}@media(max-width:680px){.reveal-row__arrow{display:none}}.creative-header{margin-bottom:clamp(2rem,4.5vh,3.2rem)}.exp-list{display:flex;flex-direction:column}.exp-item{display:grid;grid-template-columns:minmax(0,11rem) minmax(0,1fr);gap:clamp(1rem,3vw,2.5rem);padding-block:clamp(1.4rem,3vh,2.2rem);border-top:1px solid var(--hair)}.exp-item:last-child{border-bottom:1px solid var(--hair)}.exp-date{font-size:var(--ty-meta-size);line-height:var(--ty-meta-lh);color:var(--ink-dim);padding-top:.35rem}.exp-role{font-size:var(--ty-headline-size);line-height:var(--ty-headline-lh);letter-spacing:var(--ty-headline-ls);font-weight:600;color:var(--ink)}.exp-company{font-size:var(--ty-meta-size);line-height:var(--ty-meta-lh);color:var(--ink-dim);margin-top:.2rem}.exp-body{font-size:var(--ty-meta-size);line-height:1.6;color:var(--ink-dim);max-width:62ch;margin-top:.8rem}.exp-tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.1rem}@media(max-width:680px){.exp-item{grid-template-columns:minmax(0,1fr);gap:.5rem}.exp-date{padding-top:0}}.contact-inner{display:flex;flex-direction:column;min-height:calc(100svh - 2 * var(--panel-y))}.contact-body{margin-block:auto}.contact-body .section-title{font-size:var(--ty-hero-size);line-height:var(--ty-hero-lh);letter-spacing:var(--ty-hero-ls);margin-bottom:1.5rem}.contact-links{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2.4rem}.contact-link{display:inline-flex;align-items:center;gap:.6rem;padding:.85em 1.6em;border-radius:var(--radius-pill);border:1px solid var(--hair);font-size:var(--ty-callout-size);color:var(--ink);transition:background var(--t-state) var(--ease-out),border-color var(--t-state) var(--ease-out),color var(--t-state) var(--ease-out)}.contact-link svg{width:1.1em;height:1.1em;fill:currentColor}.contact-link:hover{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.back-link{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--ty-meta-size);color:var(--ink-dim);margin-bottom:2rem;width:fit-content;transition:color var(--t-state) var(--ease-out)}.back-link:hover{color:var(--ink)}.deepdive-title{font-size:clamp(2.6rem,7.2vw,5.6rem)}.deepdive-intro{margin-top:1.4rem;max-width:54ch}.deepdive-header{display:flex;align-items:baseline;gap:1.5rem;margin-bottom:3rem}.deepdive-index{font-size:var(--ty-callout-size);font-weight:600;font-variant-numeric:tabular-nums;color:var(--c-text-3)}.deepdive-name{font-size:clamp(1.625rem,3vw,2.25rem);line-height:1.15;letter-spacing:var(--ty-title-ls);font-weight:600;color:var(--ink);margin-bottom:.375rem}.deepdive-tagline{font-size:var(--ty-callout-size);color:var(--c-text-2)}.deepdive-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:3.5rem;align-items:start}.deepdive-subhead{font-size:var(--ty-caption-size);line-height:var(--ty-label-lh);letter-spacing:.01em;font-weight:600;color:var(--c-text-3);margin-bottom:.75rem;margin-top:1.75rem}.deepdive-subhead:first-child{margin-top:0}.deepdive-body{font-size:var(--ty-body-size);line-height:var(--ty-body-lh);color:var(--c-text-2)}.deepdive-list{list-style:none;display:flex;flex-direction:column;gap:.875rem}.deepdive-list li{position:relative;padding-left:1.25rem;font-size:var(--ty-callout-size);line-height:var(--ty-callout-lh);color:var(--c-text-2)}.deepdive-list li:before{content:"";position:absolute;left:0;top:.5rem;width:5px;height:5px;border-radius:50%;background:var(--tint-edge)}.deepdive-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.75rem}.deepdive-github{margin-top:1.75rem}.deepdive-visual{background:var(--mat-raised);border:1px solid var(--c-border);border-radius:var(--radius);padding:2rem;display:flex;align-items:center;justify-content:center;min-height:20rem}.diagram{width:100%;display:flex;flex-direction:column;align-items:center;gap:1.25rem}.diagram-svg{width:100%;max-width:16.25rem}.diagram-spoke{stroke:var(--c-border);stroke-width:1}.diagram-fork{fill:var(--c-text-2);opacity:.7}.diagram-node{fill:var(--mat-sunken);stroke:var(--tint-edge);stroke-width:1.5}.diagram-node-label{font-size:9px;font-weight:600;fill:var(--c-text-1)}.diagram-hub{fill:var(--tint-wash);stroke:var(--accent);stroke-width:1.5}.diagram-hub-label{font-size:8px;font-weight:600;fill:var(--c-text-1);letter-spacing:.02em}.diagram-legend{display:flex;align-items:center;gap:.5rem;font-size:.6875rem;color:var(--c-text-3)}.diagram-legend-item{padding:.25rem .625rem;border-radius:var(--radius-pill);border:1px solid var(--c-border);color:var(--c-text-2)}.diagram-legend-arrow{color:var(--c-text-2)}.raycast-diagram{flex-direction:row;align-items:stretch;gap:1rem}.raycast-map{max-width:8.75rem;flex-shrink:0}.diagram-frame{fill:none;stroke:var(--c-border)}.diagram-wall{stroke:var(--accent);stroke-width:2;opacity:.45}.diagram-ray{stroke:var(--tint-edge);stroke-width:1}.diagram-player{fill:var(--accent)}.raycast-columns{flex:1;display:flex;align-items:flex-end;gap:4px;min-height:8.125rem}.raycast-column{flex:1;background:linear-gradient(180deg,var(--tint-glow),var(--tint-hairline));border-radius:3px 3px 0 0;opacity:.85}.shell-diagram{flex-direction:row;flex-wrap:wrap;justify-content:center}.shell-stage{display:flex;align-items:center;gap:.625rem}.shell-box{background:var(--mat-sunken);border:1px solid var(--tint-hairline);border-radius:var(--radius-sm);padding:.875rem 1rem;text-align:center}.shell-box-title{font-size:var(--ty-caption-size);font-weight:600;color:var(--c-text-1)}.shell-box-sub{font-size:.625rem;color:var(--c-text-3);margin-top:.25rem}.shell-pipe{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.5625rem;color:var(--c-text-3)}.shell-pipe-arrow{color:var(--c-text-2);font-size:1rem}.compose-diagram{gap:.75rem}.compose-client{display:flex;align-items:center;gap:.5rem;font-size:var(--ty-label-size);color:var(--c-text-3)}.compose-client-arrow{color:var(--c-text-2)}.compose-network{width:100%;border:1px dashed var(--c-border);border-radius:var(--radius-sm);padding:1.5rem 1.125rem 1.125rem;display:flex;flex-direction:column;align-items:center;gap:.375rem;position:relative}.compose-network-label{position:absolute;top:-9px;left:.875rem;background:var(--mat-raised);padding:0 .5rem;font-size:.6875rem;letter-spacing:.01em;color:var(--c-text-3)}.compose-node{width:100%;max-width:12.5rem;background:var(--mat-sunken);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:.625rem .875rem;display:flex;align-items:center;justify-content:space-between;gap:.625rem}.compose-node-nginx{border-color:var(--tint-edge)}.compose-node-title{font-size:var(--ty-caption-size);font-weight:600;color:var(--c-text-1)}.compose-node-sub{font-size:.625rem;color:var(--c-text-3)}.compose-edge{width:1px;height:.875rem;background:var(--c-border)}.compose-volume{margin-top:.625rem;font-size:.625rem;color:var(--c-text-2);border:1px solid var(--tint-hairline);border-radius:var(--radius-pill);padding:.1875rem .75rem}.hardening-diagram{gap:.625rem;width:100%}.hardening-layer{width:100%;display:flex;align-items:center;gap:.875rem;background:var(--mat-sunken);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:.75rem 1rem}.hardening-layer-index{font-size:.6875rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--c-text-3)}.hardening-layer-label{font-size:var(--ty-caption-size);font-weight:600;color:var(--c-text-1)}.hardening-layer-sub{font-size:.6875rem;color:var(--c-text-3);margin-top:2px}@media(max-width:860px){.deepdive-grid{grid-template-columns:1fr;gap:2.5rem}.deepdive-visual{position:static;min-height:16rem}}.closing-inner{display:flex;flex-direction:column;min-height:calc(100svh - 2 * var(--panel-y))}.closing-body{margin-block:auto}.closing-body .section-title{font-size:var(--ty-hero-size);line-height:var(--ty-hero-lh);letter-spacing:var(--ty-hero-ls)}.closing-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.4rem}@media(max-width:680px){.closing-inner{min-height:0}}.video-section{border-top:1px solid var(--c-border)}.video-section-title{margin-bottom:2.5rem}.video-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(21.25rem,1fr));gap:2rem}.video-card{background:var(--mat-raised);border:1px solid var(--c-border);border-radius:var(--radius);padding:1rem;transition:border-color var(--t-state) var(--ease-out),transform var(--t-state) var(--ease-out),box-shadow var(--t-state) var(--ease-out)}.video-card:hover{border-color:var(--tint-edge);transform:translateY(-3px);box-shadow:var(--shadow-card)}.video-embed{position:relative;width:100%;padding-top:56.25%;border-radius:var(--radius-sm);overflow:hidden;background:var(--mat-sunken)}.video-embed iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.video-title{font-size:1rem;line-height:1.4;letter-spacing:-.01em;font-weight:600;color:var(--c-text-1);margin-top:1rem}.video-desc{font-size:var(--ty-caption-size);line-height:var(--ty-caption-lh);color:var(--c-text-3);margin-top:.5rem}.video-placeholder{display:block;width:100%;height:100%;background:var(--raised)}.design-client-header{align-items:center;gap:1.5rem;flex-wrap:wrap}.design-client-info{flex:1;min-width:14rem}.design-site-btn{flex-shrink:0;white-space:nowrap}.design-group{margin-top:3rem}.design-group .section-label{margin-bottom:1.25rem}.design-frame{background:var(--mat-raised);border:1px solid var(--c-border);border-radius:var(--radius);overflow:hidden;aspect-ratio:16 / 9;transition:border-color var(--t-state) var(--ease-out),transform var(--t-state) var(--ease-out),box-shadow var(--t-state) var(--ease-out)}.design-frame img{width:100%;height:100%;object-fit:cover;display:block}.design-frame:hover{border-color:var(--tint-edge);transform:translateY(-3px);box-shadow:var(--shadow-card)}.design-frame-featured{border-color:var(--tint-hairline);box-shadow:var(--shadow-card)}.design-carousel{outline:none}.design-carousel:focus-visible{outline:2px solid var(--tint-edge);outline-offset:6px;border-radius:var(--radius)}.design-viewport{position:relative;overflow:hidden;margin:0 calc(-1 * var(--gutter) / 2);padding:0 calc(var(--gutter) / 2)}.design-track{display:flex;gap:1rem;touch-action:pan-y;cursor:grab;will-change:transform}.design-track:active{cursor:grabbing}.design-slide{flex:0 0 100%;min-width:0}.design-slide .design-frame:hover{transform:none}.design-arrow{position:absolute;top:50%;transform:translateY(-50%);width:2.75rem;height:2.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--mat-sheet);backdrop-filter:var(--blur-chrome);-webkit-backdrop-filter:var(--blur-chrome);border:1px solid var(--tint-hairline);color:var(--c-text-1);z-index:var(--z-raised);transition:border-color var(--t-state) var(--ease-out),background var(--t-state) var(--ease-out),opacity var(--t-state) var(--ease-out)}.design-arrow svg{width:1.125rem;height:1.125rem}.design-arrow:hover:not(:disabled){border-color:var(--tint-edge);background:var(--mat-raised)}.design-arrow:active:not(:disabled){transform:translateY(-50%) scale(.94);transition:transform var(--t-press) var(--ease-out)}.design-arrow:disabled{opacity:.3;cursor:auto}.design-arrow-prev{left:1rem}.design-arrow-next{right:1rem}.design-dots{display:flex;justify-content:center;gap:.625rem;margin-top:1.25rem}.design-dot{width:.5rem;height:.5rem;padding:0;border-radius:50%;border:none;background:var(--tint-hairline);transition:background var(--t-state) var(--ease-out),transform var(--t-state) var(--ease-out)}.design-dot:hover{background:var(--tint-edge)}.design-dot.is-active{background:var(--accent);transform:scale(1.25)}@media(max-width:768px){.design-client-header{flex-direction:column;align-items:flex-start}.design-arrow{width:2.25rem;height:2.25rem}.design-arrow-prev{left:.5rem}.design-arrow-next{right:.5rem}}.version-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(1.25rem,2.4vw,2rem)}@media(min-width:56rem){.version-grid[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}}.version-card{display:flex;flex-direction:column;gap:.9rem}.version-frame{position:relative;display:block;aspect-ratio:16 / 10;overflow:clip;border-radius:var(--radius);background:var(--raised);border:1px solid var(--hair);transition:border-color var(--t-state) var(--ease-out),transform var(--t-chrome) var(--ease-out),box-shadow var(--t-chrome) var(--ease-out)}.version-frame img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;object-position:top center}.version-fallback{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;display:grid;place-items:center;padding-inline:1.5rem;text-align:center;font-size:var(--ty-meta-size);color:var(--ink-dim)}.version-bar{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.version-label{font-size:var(--ty-headline-size);line-height:var(--ty-headline-lh);letter-spacing:var(--ty-headline-ls);font-weight:600;color:var(--ink)}.version-cta{font-size:var(--ty-meta-size);color:var(--ink-dim);white-space:nowrap;transition:color var(--t-state) var(--ease-out)}@media(pointer:fine){.version-card:hover .version-frame{border-color:var(--edge);transform:translateY(-4px);box-shadow:var(--shadow-card)}.version-card:hover .version-cta{color:var(--ink)}}@media(prefers-reduced-motion:reduce){.version-card:hover .version-frame{transform:none}}@media(prefers-reduced-motion:reduce){html,.chat-messages{scroll-behavior:auto}.grain:before,.about-avatar-ring,.chat-orbit,.chat-notify,.scroll-line,.status-dot,.typing-dot{animation:none!important}.typing-dot{opacity:.55}.skill-card:hover,.video-card:hover,.contact-link:hover,.skill-link:hover,.reveal-row:hover .reveal-row__surface{transform:none}.btn-primary:active,.btn-ghost:active,.nav-btn:active,.nav-menu-link:active,.contact-link:active,.chip:active,.skill-link:active,.project-link:active,.back-link:active,#chat-send:active,#chat-trigger:active,#nav-menu-toggle:active{transform:none;opacity:.65}*,*:before,*:after{animation-iteration-count:1!important;transition-timing-function:var(--ease-out)!important}}@media(max-width:48rem){.video-grid{grid-template-columns:minmax(0,1fr);gap:1.25rem}.skill-card{padding:1.5rem;min-height:0}.hero-actions{width:100%}.hero-actions a{flex:1 1 auto}}@media(max-width:680px){.panel,.contact-inner{min-height:0}}@media(pointer:coarse){body,button,.chip,#chat-trigger,#chat-send{cursor:auto}.skill-card:hover,.video-card:hover{transform:none;box-shadow:none}.btn-primary,.btn-ghost,.contact-link{min-height:2.75rem}}
