.pv-magic-bg-stage{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.admin-shell{--pv-ink:#f4f1ea;--pv-bg:#050507;--pv-ink-rgb:244,241,234;--pv-bg-rgb:5,5,7;--pv-accent:#ff5b2e;--pv-mono:ui-monospace,"SF Mono",Menlo,monospace}.admin-shell[data-theme=light]{--pv-ink:#0a0a0a;--pv-bg:#fafaf8;--pv-ink-rgb:10,10,10;--pv-bg-rgb:250,250,248}.pv-magic-bg-scrim{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 22%,transparent 0,rgba(0,0,0,.7) 48%,rgba(0,0,0,.97) 100%),linear-gradient(180deg,rgba(0,0,0,.5) 0,transparent 22%,transparent 62%,rgba(0,0,0,.7))}.pv-magic-bg-stage[data-theme=light] .pv-magic-bg-scrim,body.portfolio-v2.light .pv-magic-bg-scrim{background:radial-gradient(ellipse at 50% 28%,transparent 0,rgba(26,24,20,.18) 55%,rgba(26,24,20,.38) 100%),linear-gradient(180deg,rgba(26,24,20,.1) 0,transparent 24%,transparent 70%,rgba(26,24,20,.22))}.pv-magic-grid{pointer-events:none;position:absolute;inset:0;height:100%;width:100%;fill:rgba(var(--pv-ink-rgb),.04);stroke:rgba(var(--pv-ink-rgb),.045)}.pv-magic-grid-overflow{overflow:visible}.pv-magic-grid-masked{-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 78%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 78%)}.pv-magic-bg-stage[data-theme=light] .pv-magic-grid,body.portfolio-v2.light .pv-magic-grid{fill:rgba(26,24,20,.1);stroke:rgba(26,24,20,.12)}.pv-magic-stripe{pointer-events:none;position:absolute;inset:0;height:100%;width:100%;fill:transparent;stroke:rgba(var(--pv-ink-rgb),.055)}.pv-magic-stripe-masked{-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 78%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 78%)}.pv-magic-bg-stage[data-theme=light] .pv-magic-stripe,body.portfolio-v2.light .pv-magic-stripe{stroke:rgba(26,24,20,.1)}.pv-magic-iha{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border-radius:999px;border:1px solid rgba(var(--pv-ink-rgb),.22);background:transparent;color:var(--pv-ink);font-family:var(--pv-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;line-height:1;cursor:pointer;overflow:hidden;white-space:nowrap;transition:border-color .3s ease,color .3s ease}.pv-magic-iha-dot{position:relative;width:8px;height:8px;border-radius:999px;background:var(--pv-accent);transform-origin:center;transition:transform .45s cubic-bezier(.65,0,.35,1)}.pv-magic-iha-label{position:relative;transition:transform .3s ease,opacity .25s ease}.pv-magic-iha-hover{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;color:var(--pv-bg);opacity:0;transform:translateX(40%);transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .3s ease;pointer-events:none}.pv-magic-iha-arrow{font-family:var(--pv-mono);font-size:13px;line-height:1}.pv-magic-iha:focus-visible,.pv-magic-iha:hover{border-color:var(--pv-accent);outline:none}.pv-magic-iha:focus-visible .pv-magic-iha-dot,.pv-magic-iha:hover .pv-magic-iha-dot{transform:scale(120)}.pv-magic-iha:focus-visible .pv-magic-iha-label,.pv-magic-iha:hover .pv-magic-iha-label{opacity:0;transform:translateX(30%)}.pv-magic-iha:focus-visible .pv-magic-iha-hover,.pv-magic-iha:hover .pv-magic-iha-hover{opacity:1;transform:translateX(0)}.pv-magic-iha:active{transform:translateY(1px)}.pv-magic-iha:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}@media (prefers-reduced-motion:reduce){.pv-magic-iha-dot,.pv-magic-iha-hover,.pv-magic-iha-label{transition:none}}.pv-magic-hex{pointer-events:none;position:absolute;inset:0;height:100%;width:100%;fill:transparent;stroke:rgba(var(--pv-ink-rgb),.06)}.pv-magic-hex-masked{-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 78%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 78%)}.pv-magic-bg-stage[data-theme=light] .pv-magic-hex,body.portfolio-v2.light .pv-magic-hex{stroke:rgba(26,24,20,.1)}.pv-magic-noise{pointer-events:none;position:absolute;inset:0;width:100%;height:100%;opacity:.55;-webkit-user-select:none;-moz-user-select:none;user-select:none;mix-blend-mode:overlay}.pv-magic-bg-stage[data-theme=light] .pv-magic-noise,body.portfolio-v2.light .pv-magic-noise{opacity:.55;mix-blend-mode:multiply}.pv-magic-noise-rect{transform-box:fill-box;will-change:transform}.pv-magic-noise-down{animation:pv-magic-noise-down var(--pv-noise-speed,12s) linear infinite}.pv-magic-noise-up{animation:pv-magic-noise-up var(--pv-noise-speed,12s) linear infinite}@keyframes pv-magic-noise-down{0%{transform:translateY(-50%)}to{transform:translateY(0)}}@keyframes pv-magic-noise-up{0%{transform:translateY(50%)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.pv-magic-noise-down,.pv-magic-noise-up{animation:none}}.pv-magic-rays{pointer-events:none;border-radius:inherit}.pv-magic-rays,.pv-magic-rays-inner{position:absolute;inset:0;overflow:hidden}.pv-magic-rays-glow{position:absolute;inset:0;opacity:.6}.pv-magic-rays-glow-l{background:radial-gradient(circle at 20% 12%,color-mix(in srgb,var(--lr-color) 55%,transparent),transparent 70%)}.pv-magic-rays-glow-r{background:radial-gradient(circle at 82% 8%,color-mix(in srgb,var(--lr-color) 45%,transparent),transparent 75%)}.pv-magic-ray{pointer-events:none;position:absolute;top:-12%;left:var(--ray-left);height:var(--lr-length);width:var(--ray-width);transform-origin:top center;border-radius:9999px;background:linear-gradient(to bottom,transparent 0,color-mix(in srgb,var(--lr-color) 85%,transparent) 30%,color-mix(in srgb,var(--lr-color) 40%,transparent) 55%,transparent 100%);background-size:100% 220%;background-repeat:no-repeat;background-position:0 -120%;opacity:0;mix-blend-mode:screen;filter:blur(var(--lr-blur));animation:pv-magic-ray-fall var(--ray-duration) ease-in-out infinite;animation-delay:var(--ray-delay);will-change:opacity,background-position,transform;transform:translateX(-50%) rotate(var(--ray-rotate))}@keyframes pv-magic-ray-fall{0%{opacity:0;background-position:0 -120%;transform:translateX(-50%) rotate(calc(var(--ray-rotate) - var(--ray-swing) * .4))}20%{opacity:var(--ray-intensity)}80%{opacity:var(--ray-intensity)}to{opacity:0;background-position:0 120%;transform:translateX(-50%) rotate(calc(var(--ray-rotate) + var(--ray-swing) * .4))}}.pv-magic-rays-spotlight{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen}.pv-magic-rays-spotlight-beam{position:absolute;top:-8%;left:50%;width:clamp(360px,36vw,720px);height:var(--lr-length);transform:translateX(-50%);background:linear-gradient(to bottom,color-mix(in srgb,var(--lr-color) 130%,transparent) 0,color-mix(in srgb,var(--lr-color) 90%,transparent) 22%,color-mix(in srgb,var(--lr-color) 50%,transparent) 55%,transparent 88%);background-size:100% 180%;background-repeat:no-repeat;background-position:0 -60%;filter:blur(calc(var(--lr-blur) * 1.2));clip-path:polygon(38% 0,62% 0,100% 100%,0 100%);opacity:.95;animation:pv-magic-rays-spotlight-fall 5s ease-in-out infinite;will-change:background-position,opacity}.pv-magic-rays-spotlight-pool{position:absolute;left:50%;top:0;transform:translateX(-50%);width:clamp(520px,60vw,1100px);height:clamp(360px,55vh,720px);background:radial-gradient(ellipse at 50% 10%,color-mix(in srgb,var(--lr-color) 120%,transparent) 0,color-mix(in srgb,var(--lr-color) 40%,transparent) 28%,transparent 72%);filter:blur(calc(var(--lr-blur) * .8));opacity:.85;animation:pv-magic-rays-spotlight-pulse 4s ease-in-out infinite}@keyframes pv-magic-rays-spotlight-fall{0%{background-position:0 -60%;opacity:.55}45%{opacity:1}to{background-position:0 60%;opacity:.55}}@keyframes pv-magic-rays-spotlight-pulse{0%,to{opacity:.72;transform:translateX(-50%) scale(1)}50%{opacity:1;transform:translateX(-50%) scale(1.04)}}.pv-magic-bg-stage[data-theme=light] .pv-magic-rays,body.portfolio-v2.light .pv-magic-rays{--lr-color:rgba(220,80,30,0.55)}.pv-magic-bg-stage[data-theme=light] .pv-magic-ray,.pv-magic-bg-stage[data-theme=light] .pv-magic-rays-spotlight,body.portfolio-v2.light .pv-magic-ray,body.portfolio-v2.light .pv-magic-rays-spotlight{mix-blend-mode:multiply}@media (prefers-reduced-motion:reduce){.pv-magic-ray,.pv-magic-rays-spotlight-beam,.pv-magic-rays-spotlight-pool{animation:none}.pv-magic-ray{opacity:calc(var(--ray-intensity) * .3);background-position:0 0}}.pv-magic-shimmer{--spread:90deg;--shimmer-color:rgba(255,255,255,0.85);--radius:999px;--speed:3s;--cut:0.05em;--bg:var(--pv-accent);position:relative;z-index:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;overflow:hidden;border:1px solid var(--bg);padding:10px 18px;white-space:nowrap;color:var(--pv-bg);background:var(--bg);border-radius:var(--radius);font-family:var(--pv-mono);font-size:12px;text-transform:uppercase;letter-spacing:.12em;line-height:1;text-decoration:none;transform:translateZ(0);transition:filter .2s ease,transform .2s ease,box-shadow .2s ease}.pv-magic-shimmer:hover{filter:brightness(1.06);transform:translateY(-1px)}.pv-magic-shimmer:active{transform:translateY(1px)}.pv-magic-shimmer-spark{position:absolute;inset:0;z-index:-30;overflow:visible;filter:blur(2px);container-type:size;border-radius:inherit}.pv-magic-shimmer-slide{position:absolute;inset:0;aspect-ratio:1/1;height:100cqh;animation:pv-magic-shimmer-slide var(--speed) ease-in-out infinite alternate}.pv-magic-shimmer-spin{position:absolute;inset:-100%;width:auto;background:conic-gradient(from calc(270deg - (var(--spread) * .5)),transparent 0,var(--shimmer-color) var(--spread),transparent var(--spread));animation:pv-magic-shimmer-spin calc(var(--speed) * 2) linear infinite}.pv-magic-shimmer-content{position:relative;z-index:1;display:inline-flex;align-items:center;gap:6px}.pv-magic-shimmer-highlight{position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 -8px 10px rgba(255,255,255,.12);transition:box-shadow .3s ease;pointer-events:none}.pv-magic-shimmer:hover .pv-magic-shimmer-highlight{box-shadow:inset 0 -6px 10px rgba(255,255,255,.22)}.pv-magic-shimmer:active .pv-magic-shimmer-highlight{box-shadow:inset 0 -10px 10px rgba(255,255,255,.28)}.pv-magic-shimmer-backdrop{position:absolute;inset:var(--cut);z-index:-20;border-radius:inherit;background:var(--bg);pointer-events:none}@keyframes pv-magic-shimmer-slide{to{transform:translateX(calc(100cqw - 100%))}}@keyframes pv-magic-shimmer-spin{0%{transform:translateZ(0) rotate(0deg)}15%,35%{transform:translateZ(0) rotate(90deg)}65%,85%{transform:translateZ(0) rotate(270deg)}to{transform:translateZ(0) rotate(1turn)}}@media (prefers-reduced-motion:reduce){.pv-magic-shimmer-slide,.pv-magic-shimmer-spin{animation:none}}.pv-magic-shimmer.ghost{--bg:transparent;--shimmer-color:var(--pv-accent);border-color:var(--pv-ink);color:var(--pv-ink)}.pv-magic-shimmer.ghost .pv-magic-shimmer-backdrop{background:transparent}.pv-magic-shimmer.ghost:hover{background:var(--pv-ink);color:var(--pv-bg);filter:none}.pv-magic-scroll-progress{position:fixed;top:0;left:0;right:0;z-index:80;height:2px;transform-origin:left center;transform:scaleX(var(--pv-scroll,0));background:linear-gradient(to right,var(--pv-accent),color-mix(in srgb,var(--pv-accent) 35%,transparent));pointer-events:none;will-change:transform}.pv-magic-circ{position:relative;display:inline-flex;align-items:center;justify-content:center;width:120px;height:120px;font-size:22px;font-weight:600;font-family:var(--pv-mono);color:var(--pv-ink)}.pv-magic-circ-svg{width:100%;height:100%}.pv-magic-circ-value{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:.02em}.pv-capacity-grid{margin-top:18px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;padding-top:18px;border-top:1px solid rgba(var(--pv-ink-rgb),.08)}.pv-capacity-ring{display:flex;flex-direction:column;align-items:center;gap:8px}.pv-capacity-ring .pv-magic-circ{width:78px;height:78px;font-size:15px}.pv-capacity-meta{text-align:center;line-height:1.2}.pv-capacity-label{letter-spacing:.14em;text-transform:uppercase;color:var(--pv-ink)}.pv-capacity-label,.pv-capacity-sub{font-family:var(--pv-mono);font-size:10px}.pv-capacity-sub{letter-spacing:.05em;color:var(--pv-ink-dim);margin-top:2px}@media (max-width:540px){.pv-capacity-grid{grid-template-columns:repeat(3,1fr);gap:6px}.pv-capacity-ring .pv-magic-circ{width:64px;height:64px;font-size:13px}}.pv-magic-iphone{--iphone-bezel:#404040;--iphone-back:#262626;--iphone-island:#262626;--iphone-bezel-inner:#404040;position:relative;display:inline-block;width:100%;vertical-align:middle;line-height:0}.pv-magic-iphone:not(.dark){--iphone-bezel:#E5E5E5;--iphone-back:#ffffff;--iphone-island:#F5F5F5;--iphone-bezel-inner:#E5E5E5}.pv-magic-iphone-bezel{fill:var(--iphone-bezel)}.pv-magic-iphone-back{fill:var(--iphone-back)}.pv-magic-iphone-island{fill:var(--iphone-island)}.pv-magic-iphone-bezel-inner{fill:var(--iphone-bezel-inner);stroke:var(--iphone-bezel-inner);stroke-width:.5}.pv-magic-iphone-svg{position:absolute;inset:0;width:100%;height:100%}.pv-magic-iphone-screen{pointer-events:auto;position:absolute;z-index:0;overflow:hidden}.pv-magic-iphone-screen img,.pv-magic-iphone-screen video{display:block;width:100%;height:100%;object-fit:cover;object-position:top}.pv-magic-pixel{position:relative;width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pv-magic-pixel-piece{position:absolute;inset:0;opacity:0;transition-property:opacity;transition-timing-function:ease-out}.pv-magic-pixel-piece.in{opacity:1}.pv-magic-pixel-img{width:100%;height:100%;object-fit:cover;border-radius:14px}.pv-magic-pixel-img.is-grayscale{filter:grayscale(1)}.pv-magic-term{width:100%;max-width:540px;border:1px solid rgba(var(--pv-ink-rgb),.12);background:rgba(0,0,0,.45);border-radius:14px;font-family:var(--pv-mono);font-size:13px;line-height:1.55;color:var(--pv-ink);overflow:hidden;backdrop-filter:blur(20px);z-index:0}body.portfolio-v2.light .pv-magic-term{background:rgba(255,255,255,.7);border-color:rgba(26,24,20,.12)}.pv-magic-term-head{border-bottom:1px solid rgba(var(--pv-ink-rgb),.12);padding:12px 14px;display:flex;gap:8px;align-items:center}.pv-magic-term-dot{width:10px;height:10px;border-radius:999px;display:inline-block}.pv-magic-term-r{background:#ff5f57}.pv-magic-term-y{background:#febc2e}.pv-magic-term-g{background:#28c840}.pv-magic-term-body{padding:14px 16px 18px;margin:0}.pv-magic-term-body code{display:grid;grid-gap:4px;gap:4px;overflow:auto}.pv-magic-term-line{opacity:0;transform:translateY(-5px);transition:opacity .3s ease,transform .3s ease}.pv-magic-term-line.in{opacity:1;transform:translateY(0)}.pv-magic-term-typing{display:inline-block;white-space:pre-wrap}.pv-magic-cursor{position:fixed;left:0;top:0;z-index:100;pointer-events:none;will-change:transform,opacity;transition:opacity .15s ease}@media (any-hover:none),(any-pointer:coarse){.pv-magic-cursor{display:none}}.pv-magic-blur{pointer-events:none;position:absolute;left:0;right:0;z-index:10}.pv-magic-blur-top{top:0}.pv-magic-blur-bottom{bottom:0}.pv-magic-blur-both{top:0;bottom:0}.pv-magic-blur-layer{position:absolute;inset:0}::view-transition-new(root),::view-transition-old(root){animation:none;mix-blend-mode:normal}html[data-magicui-theme-vt=active]::view-transition-new(root){clip-path:var(--magicui-theme-vt-clip-from);animation-duration:var(--magicui-theme-toggle-vt-duration,.4s)}.pv-magic-top-blur{position:fixed;top:0;left:0;right:0;height:92px;z-index:40;pointer-events:none}.pv-cap-terminal-wrap{margin-top:56px;display:flex;justify-content:center}.pv-cap-terminal-wrap .pv-magic-term{max-width:560px}.pv-cap-term-out{padding-left:4px;color:var(--pv-ink)}.pv-cap-term-cursor{display:inline-block;animation:pv-magic-term-blink 1.1s steps(1) infinite}@keyframes pv-magic-term-blink{0%,50%{opacity:1}51%,to{opacity:0}}.pv-magic-hyper{display:inline-flex;flex-wrap:nowrap;overflow:hidden;vertical-align:initial}.pv-magic-hyper-char{display:inline-block;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"tnum";font-family:var(--pv-mono,ui-monospace,monospace);letter-spacing:inherit}.pv-magic-hyper-char.is-space{width:.4em}.pv-magic-globe{position:relative;margin:0 auto;aspect-ratio:1/1;width:100%;max-width:600px}.pv-magic-globe-canvas{width:100%;height:100%;opacity:0;transition:opacity .5s ease;contain:layout paint size;cursor:grab}