.ambient-backdrop{--amb-x: .5;--amb-y: .5;--amb-scroll: 0;--amb-pulse-x: .5;--amb-pulse-y: .5;position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;contain:strict}.ambient-backdrop__mesh,.ambient-backdrop__blob{position:absolute;inset:-20%}.ambient-backdrop__mesh{opacity:.42;background:radial-gradient(ellipse 90% 70% at calc(12% + (var(--amb-x) - .5) * 26%) calc(18% + (var(--amb-y) - .5) * 20% - var(--amb-scroll) * 8%),color-mix(in srgb,var(--accent) 38%,transparent),transparent 58%),radial-gradient(ellipse 80% 65% at calc(88% + (var(--amb-x) - .5) * -18%) calc(72% + (var(--amb-y) - .5) * 14% - var(--amb-scroll) * 5%),color-mix(in srgb,var(--accent2, var(--accent)) 28%,transparent),transparent 55%),radial-gradient(circle at calc(50% + (var(--amb-x) - .5) * 58%) calc(42% + (var(--amb-y) - .5) * 48% + var(--amb-scroll) * 6%),color-mix(in srgb,var(--accent) 12%,transparent),transparent 42%),radial-gradient(circle 42vmin at calc(var(--amb-pulse-x) * 100%) calc(var(--amb-pulse-y) * 100%),color-mix(in srgb,var(--accent) 0%,transparent),transparent 70%);animation:ambient-mesh-drift 22s ease-in-out infinite}.ambient-backdrop--pulse .ambient-backdrop__mesh{animation:ambient-mesh-drift 22s ease-in-out infinite,ambient-pulse-flash .55s ease-out}html[data-theme=light] .ambient-backdrop__mesh{opacity:.28}.ambient-backdrop__blob{filter:blur(72px);opacity:.38;transform:translate(calc((var(--amb-x) - .5) * min(32vw,260px)),calc((var(--amb-y) - .5) * min(26vh,200px) + var(--amb-scroll) * min(12vh,100px)));background:radial-gradient(circle at 40% 42%,color-mix(in srgb,var(--accent) 52%,transparent),transparent 58%),radial-gradient(circle at 78% 64%,color-mix(in srgb,var(--accent2, var(--accent)) 36%,transparent),transparent 52%);animation:ambient-blob-pulse 14s ease-in-out infinite;transition:transform .35s ease-out}@keyframes ambient-pulse-flash{0%{filter:brightness(1)}35%{filter:brightness(1.12)}to{filter:brightness(1)}}html[data-theme=light] .ambient-backdrop__blob{opacity:.22;filter:blur(88px)}.ambient-backdrop--static .ambient-backdrop__mesh,.ambient-backdrop--static .ambient-backdrop__blob{animation:none}@keyframes ambient-mesh-drift{0%,to{transform:translate(0) scale(1)}33%{transform:translate(1.2%,-.8%) scale(1.02)}66%{transform:translate(-.9%,1.1%) scale(.99)}}@keyframes ambient-blob-pulse{0%,to{opacity:.36}50%{opacity:.48}}html[data-theme=light] .ambient-backdrop__blob{animation-name:ambient-blob-pulse-light}@keyframes ambient-blob-pulse-light{0%,to{opacity:.2}50%{opacity:.3}}.ambient-click-layer{position:fixed;inset:0;z-index:3;pointer-events:none;overflow:hidden;contain:strict}.ambient-click-ripple{position:absolute;left:0;top:0;width:140px;height:140px;margin-left:-70px;margin-top:-70px;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 42%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent2, var(--accent)) 22%,transparent),0 0 48px color-mix(in srgb,var(--accent) 28%,transparent);transform:scale(.08);opacity:.92;animation:ambient-click-ripple-out .72s cubic-bezier(.22,.82,.28,1) forwards;will-change:transform,opacity}@keyframes ambient-click-ripple-out{to{transform:scale(2.85);opacity:0}}html[data-theme=light] .ambient-click-ripple{border-color:color-mix(in srgb,var(--accent) 32%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent2, var(--accent)) 16%,transparent),0 0 36px color-mix(in srgb,var(--accent) 18%,transparent)}.reading-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:205;pointer-events:none;overflow:hidden}.reading-progress__fill{height:100%;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,color-mix(in srgb,var(--nav-accent) 75%,transparent),color-mix(in srgb,var(--accent) 80%,transparent));transition:transform .12s linear}.reading-progress--reduced .reading-progress__fill{transition:none}html{scroll-padding-bottom:calc(5.25rem + env(safe-area-inset-bottom,0px))}body.portfolio-atmo{padding-bottom:calc(4.85rem + env(safe-area-inset-bottom,0px))}.dock-pill-nav.dock-nav{--dock-pill-h: 40px;--dock-pill-gap: 4px;--dock-pill-pad-x: clamp(13px, 3.2vw, 17px);position:fixed;z-index:185;left:50%;bottom:calc(1rem + env(safe-area-inset-bottom,0px));transform:translate(-50%);max-width:min(calc(100vw - 1.25rem),680px);width:max-content}html[data-theme=dark] .dock-pill-nav.dock-nav,html:not([data-theme]) .dock-pill-nav.dock-nav{--dock-pill-bg: color-mix(in srgb, var(--bg) 28%, #050607);--dock-pill-base: color-mix(in srgb, var(--dock-pill-bg) 82%, var(--text) 18%);--dock-pill-text: color-mix(in srgb, var(--text) 96%, var(--dock-pill-bg));--dock-pill-hover-text: color-mix(in srgb, var(--text) 94%, var(--dock-pill-bg));--dock-pill-active-dot: color-mix(in srgb, var(--nav-accent) 72%, var(--text));--dock-pill-shell-border: var(--line2)}html[data-theme=light] .dock-pill-nav.dock-nav{--dock-pill-bg: color-mix(in srgb, var(--text) 90%, var(--bg3) 10%);--dock-pill-base: color-mix(in srgb, var(--dock-pill-bg) 72%, var(--bg) 28%);--dock-pill-text: color-mix(in srgb, var(--bg) 93%, #fff);--dock-pill-hover-text: color-mix(in srgb, var(--dock-pill-bg) 78%, var(--text));--dock-pill-active-dot: color-mix(in srgb, var(--nav-accent) 58%, var(--text));--dock-pill-shell-border: var(--line2)}.dock-pill-nav__shell{display:flex;align-items:center;padding:5px 3px;border-radius:999px;background:var(--dock-pill-base);border:1px solid var(--dock-pill-shell-border);box-shadow:0 10px 28px -6px var(--shadow-card)}.dock-pill-nav__row{list-style:none;margin:0;padding:0;display:flex;flex-direction:row;align-items:stretch;gap:var(--dock-pill-gap);height:var(--dock-pill-h);min-height:var(--dock-pill-h);max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.dock-pill-nav__row::-webkit-scrollbar{display:none}.dock-pill-nav__cell{flex-shrink:0;display:flex;align-items:stretch}.dock-pill-nav__cell--theme{flex-shrink:0}.dock-pill-nav__sep-cell{flex-shrink:0;display:flex;align-items:center;padding:0 1px}.dock-pill-nav__vsep{width:1px;height:56%;align-self:center;background:color-mix(in srgb,var(--dock-pill-bg) 22%,var(--dock-pill-base));border-radius:1px;opacity:.55}.dock-pill-nav__pill{position:relative;display:inline-flex;align-items:center;justify-content:center;height:100%;min-height:100%;padding:0 var(--dock-pill-pad-x);border:none;border-radius:999px;background:var(--dock-pill-bg);color:var(--dock-pill-text);font-family:var(--mono, "Space Mono", monospace);font-size:clamp(8px,2.2vw,10px);font-weight:700;letter-spacing:.11em;text-transform:uppercase;text-decoration:none;cursor:pointer;overflow:hidden;white-space:nowrap;-webkit-tap-highlight-color:transparent;box-sizing:border-box;transition:box-shadow .22s ease}.dock-pill-nav__pill--home{letter-spacing:0;min-width:var(--dock-pill-h);padding:0 clamp(11px,3vw,15px)}.dock-pill-nav__home-icon{position:relative;z-index:3;display:flex;align-items:center;justify-content:center;line-height:0;color:inherit}.dock-pill-nav__home-icon svg{display:block}.dock-pill-nav__pill--theme{width:var(--dock-pill-h);min-width:var(--dock-pill-h);padding:0}.dock-pill-nav__pill:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--nav-accent) 50%,transparent)}.dock-pill-nav__pill:before{content:"";position:absolute;inset:-6px;border-radius:999px;background:var(--dock-pill-base);z-index:1;clip-path:circle(0% at 50% calc(100% + 4px));transition:clip-path .5s cubic-bezier(.33,1,.64,1);pointer-events:none}.dock-pill-nav__pill:hover:before,.dock-pill-nav__pill:focus-visible:before{clip-path:circle(185% at 50% calc(100% + 4px))}@media(prefers-reduced-motion:reduce){.dock-pill-nav__pill:before{transition-duration:.01ms}}.dock-pill-nav__label-stack{position:relative;z-index:3;display:inline-block;height:1.12em;line-height:1.12;overflow:hidden}.dock-pill-nav__label{display:block;transition:transform .38s cubic-bezier(.33,1,.64,1)}.dock-pill-nav__label--hover{position:absolute;left:0;top:0;color:var(--dock-pill-hover-text);transform:translateY(110%);transition:transform .38s cubic-bezier(.33,1,.64,1)}@media(prefers-reduced-motion:reduce){.dock-pill-nav__label,.dock-pill-nav__label--hover{transition:none}.dock-pill-nav__pill:hover .dock-pill-nav__label,.dock-pill-nav__pill:focus-visible .dock-pill-nav__label{transform:none}.dock-pill-nav__pill:hover .dock-pill-nav__label--hover,.dock-pill-nav__pill:focus-visible .dock-pill-nav__label--hover{transform:none;opacity:0}}.dock-pill-nav__pill:hover .dock-pill-nav__label,.dock-pill-nav__pill:focus-visible .dock-pill-nav__label{transform:translateY(-108%)}.dock-pill-nav__pill:hover .dock-pill-nav__label--hover,.dock-pill-nav__pill:focus-visible .dock-pill-nav__label--hover{transform:translateY(0)}.dock-pill-nav__theme-swap{position:relative;z-index:3;width:17px;height:17px;flex-shrink:0}.dock-pill-nav__theme-icon{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;line-height:0;color:var(--dock-pill-text);transition:opacity .34s cubic-bezier(.4,0,.2,1),transform .48s cubic-bezier(.33,1.28,.64,1),color .28s ease}.dock-pill-nav__pill--theme:hover .dock-pill-nav__theme-icon,.dock-pill-nav__pill--theme:focus-visible .dock-pill-nav__theme-icon{color:var(--dock-pill-hover-text)}.dock-pill-nav__theme-icon svg{display:block}html[data-theme=dark] .dock-pill-nav__theme-icon--sun,html:not([data-theme]) .dock-pill-nav__theme-icon--sun{opacity:0;transform:scale(.52) rotate(78deg);pointer-events:none}html[data-theme=dark] .dock-pill-nav__theme-icon--moon,html:not([data-theme]) .dock-pill-nav__theme-icon--moon{opacity:1;transform:scale(1) rotate(0)}html[data-theme=light] .dock-pill-nav__theme-icon--moon{opacity:0;transform:scale(.52) rotate(-78deg);pointer-events:none}html[data-theme=light] .dock-pill-nav__theme-icon--sun{opacity:1;transform:scale(1) rotate(0)}.dock-pill-nav__active-dot{position:absolute;left:50%;bottom:5px;z-index:4;width:5px;height:5px;border-radius:50%;background:var(--dock-pill-active-dot);transform:translate(-50%) scale(0);opacity:0;pointer-events:none;transition:transform .28s cubic-bezier(.33,1,.64,1),opacity .22s ease;box-shadow:0 0 8px color-mix(in srgb,var(--nav-accent) 35%,transparent)}.dock-nav__section--active.dock-pill-nav__pill .dock-pill-nav__active-dot{transform:translate(-50%) scale(1);opacity:1}.dock-nav__section--active.dock-pill-nav__pill:hover .dock-pill-nav__active-dot,.dock-nav__section--active.dock-pill-nav__pill:focus-visible .dock-pill-nav__active-dot{opacity:.35}@media(prefers-reduced-motion:reduce){.dock-pill-nav__theme-icon{transition:opacity .16s ease}html[data-theme=dark] .dock-pill-nav__theme-icon--sun,html:not([data-theme]) .dock-pill-nav__theme-icon--sun,html[data-theme=light] .dock-pill-nav__theme-icon--moon,html[data-theme=dark] .dock-pill-nav__theme-icon--moon,html:not([data-theme]) .dock-pill-nav__theme-icon--moon,html[data-theme=light] .dock-pill-nav__theme-icon--sun{transform:none}}@media(max-width:768px){.dock-pill-nav.dock-nav{--dock-pill-h: 36px;bottom:calc(.75rem + env(safe-area-inset-bottom,0px));max-width:calc(100vw - .85rem)}.dock-pill-nav__shell{padding:4px 2px}.dock-pill-nav__pill{padding:0 clamp(10px,2.8vw,14px);font-size:8px;letter-spacing:.09em}.dock-pill-nav__pill--theme{width:var(--dock-pill-h);min-width:var(--dock-pill-h)}}body.portfolio-atmo{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body.portfolio-atmo:after{content:"";position:fixed;inset:0;z-index:4;pointer-events:none;opacity:.045;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}body.portfolio-atmo :where(a,button):focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:color-mix(in srgb,var(--accent) 34%,transparent);color:var(--text)}body.portfolio-atmo :is(.anime-split-char,.anime-split-word){display:inline-block}@media(max-width:768px){body.portfolio-atmo{cursor:auto!important}body.portfolio-atmo #cursor,body.portfolio-atmo #cursor-ring{display:none!important;visibility:hidden;pointer-events:none}}
