.infra-iso{--iso:var(--color-primary)}.iso-layer{--c:color-mix(in oklch, var(--iso) var(--tone,100%), white);transition:transform .38s cubic-bezier(.22,1,.36,1),opacity .3s,filter .3s}.iso-top{fill:var(--c);stroke:color-mix(in oklch, var(--c) 70%, white);stroke-width:.6px}.iso-left{fill:color-mix(in oklch, var(--c) 80%, black)}.iso-right{fill:color-mix(in oklch, var(--c) 62%, black)}.iso-tile{opacity:0;transition:translate,opacity;translate:0 -150px}.infra-iso.is-visible .iso-tile{opacity:1;transition:translate .82s cubic-bezier(.34, 1.45, .64, 1) var(--d,0s), opacity .26s ease var(--d,0s);translate:0}.iso-pin{opacity:0;transition:opacity .3s ease var(--d,0s), transform .38s cubic-bezier(.34, 1.56, .64, 1), box-shadow .2s ease;transform:translate(-50%,-50%)scale(.5)}.infra-iso.is-visible .iso-pin{opacity:1;transition:opacity .3s ease var(--d,0s), transform .38s cubic-bezier(.34, 1.56, .64, 1) var(--d,0s), box-shadow .2s ease;transform:translate(-50%,-50%)scale(1)}.iso-pin:focus-visible{outline:3px solid var(--color-secondary);outline-offset:3px}.infra-iso .iso-pin[data-on]{transition-delay:0s;transform:translate(-50%,calc(-50% - 22px))scale(1.12)}.infra-iso[data-active] .iso-layer:not([data-on]){opacity:.32;filter:saturate(.5)}.infra-iso .iso-layer[data-on]{filter:drop-shadow(0 14px 14px color-mix(in oklch, var(--color-primary) 38%, transparent));transform:translateY(-22px)}.infra-row{cursor:pointer;background:0 0;border:1px solid #0000;transition:background .2s,border-color .2s,transform .2s,opacity .2s}.infra-iso[data-active] .infra-row:not([data-on]){opacity:.55}.infra-row[data-on]{background:var(--color-card);border-color:color-mix(in oklch, var(--color-primary) 45%, var(--color-border));box-shadow:0 10px 28px color-mix(in oklch, var(--color-primary) 16%, transparent);transform:translate(6px)}.infra-cap{position:relative}.infra-cap:after{content:"";border-radius:inherit;border:1px solid color-mix(in oklch, var(--color-primary) 35%, transparent);position:absolute;inset:-6px}@media (prefers-reduced-motion:reduce){.iso-tile,.infra-iso.is-visible .iso-tile{opacity:1;transition:none;translate:0}.iso-pin,.infra-iso.is-visible .iso-pin,.iso-layer,.infra-row{transition:none}}.project-wall-tilt{opacity:.85;top:50%;left:-10%;right:-10%;translate:0 -50%;rotate:-6deg}.project-wall-veil{background:radial-gradient(ellipse 60% 55% at 50% 50%, var(--color-background) 30%, color-mix(in oklch, var(--color-background) 55%, transparent) 70%, transparent 100%), linear-gradient(to bottom, var(--color-background), transparent 22%, transparent 78%, var(--color-background))}.project-wall-frame{transition:transform .28s var(--flyout-ease,cubic-bezier(.22, 1, .36, 1))}.project-wall-frame:hover{transform:translateY(-4px)}.project-wall .svc-track{mask-image:none}@media (prefers-reduced-motion:reduce){.project-wall .svc-track-inner{animation:none}}.is-stage{background:radial-gradient(120% 90% at 50% 110%, color-mix(in oklch, var(--color-primary) 22%, transparent), transparent 60%), color-mix(in oklch, var(--color-muted) 55%, transparent)}.is-stage--tile{height:9rem;padding:.5rem}.is-stage--hero{height:12rem;padding:.75rem}.is-svg g,.is-svg rect,.is-svg path,.is-svg circle,.is-svg text,.is-svg line{transform-box:fill-box}.is-card{fill:var(--color-card);stroke:color-mix(in oklch, var(--color-border) 70%, transparent);stroke-width:1px}.is-line{fill:color-mix(in oklch, var(--color-foreground) 38%, transparent)}.is-faint{fill:color-mix(in oklch, var(--color-foreground) 16%, transparent)}.is-p{fill:var(--color-primary)}.is-s{fill:var(--color-secondary)}.is-a{fill:var(--color-accent)}.is-ok{fill:var(--color-success)}.is-tick{fill:none;stroke:var(--color-success-foreground,#fff);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round}.is-grid,.is-axis,.is-wire{stroke:color-mix(in oklch, var(--color-foreground) 18%, transparent);stroke-width:1px;fill:none}.is-wire{stroke-dasharray:4 4}.is-today{stroke:var(--color-secondary);stroke-width:2px;animation:8s linear infinite is-today}.is-chip{fill:color-mix(in oklch, var(--color-foreground) 18%, transparent)}.is-chip-pay{fill:var(--color-success);animation:8s infinite is-chip}.is-stamp-box{fill:none;stroke:var(--color-success);stroke-width:2.4px}.is-stamp-text{fill:var(--color-success);font:700 12px var(--font-mono,monospace);letter-spacing:.1em}.is-sign{fill:none;stroke:var(--color-primary);stroke-width:2.2px;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px;animation:8s .8s infinite is-draw}.is-noise{fill:none;stroke:color-mix(in oklch, var(--color-foreground) 38%, transparent);stroke-width:2px;stroke-linejoin:round;animation:8s infinite is-noise}.is-trend{fill:none;stroke:var(--color-primary);stroke-width:3px;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px;animation:8s .9s infinite is-draw}.is-trend-area{fill:color-mix(in oklch, var(--color-primary) 14%, transparent);opacity:0;animation:8s 1.6s infinite is-fade}.is-num{fill:var(--color-foreground);font:700 15px var(--font-sans,sans-serif)}.is-weave path{fill:none;stroke:var(--color-primary);stroke-width:3px;stroke-linecap:round;opacity:.85}.is-dot{fill:var(--color-secondary-foreground,#17181e);animation:1.1s ease-in-out infinite is-dot}.is-dot--b{animation-delay:.15s}.is-dot--c{animation-delay:.3s}.is-theme-card{animation:8s infinite is-theme-card}.is-theme-btn{fill:var(--color-primary);rx:8px;animation:8s infinite is-theme}.is-ghost{fill:none;stroke:color-mix(in oklch, var(--color-foreground) 40%, transparent);stroke-width:1.5px}.is-arrow{animation:2s ease-in-out infinite is-nudge}.is-ring{fill:none;stroke:color-mix(in oklch, var(--color-foreground) 16%, transparent);stroke-width:1px}.is-sweep{transform-origin:82px 76px;transform-box:view-box;animation:5s linear infinite is-sweep}.is-sweep-fill{fill:color-mix(in oklch, var(--color-success) 38%, transparent)}.is-blip{fill:var(--color-secondary);animation:5s ease-out infinite is-blip;animation-delay:var(--d,0s)}.is-term{fill:color-mix(in oklch, var(--color-foreground) 92%, var(--color-background))}.is-status{fill:color-mix(in oklch, var(--color-foreground) 78%, var(--color-background))}.is-gutter{fill:color-mix(in oklch, var(--color-background) 55%, transparent);font:400 8px var(--font-mono,monospace)}.is-term~.is-line,.is-svg[data-scene=vega] .is-line{fill:color-mix(in oklch, var(--color-background) 70%, transparent)}.is-cursor{fill:var(--color-background);animation:1s steps(2,end) infinite is-blink,8s linear infinite is-cursor}.is-spark{fill:var(--color-secondary);font-size:10px}.is-ghost-line{fill:color-mix(in oklch, var(--color-background) 40%, transparent)}.is-suggest{opacity:0;animation:8s 4s infinite is-suggest}.is-grow{transform-origin:0;animation:8s cubic-bezier(.22,1,.36,1) infinite is-grow;animation-delay:var(--d,0s);transform:scaleX(0)}.is-type{transform-origin:0;animation:8s steps(14,end) infinite is-grow;animation-delay:var(--d,0s);transform:scaleX(0)}.is-pop{transform-origin:50%;opacity:0;animation:8s cubic-bezier(.34,1.56,.64,1) infinite is-pop;animation-delay:var(--d,0s)}.is-stamp{transform-origin:50%;opacity:0;animation:8s cubic-bezier(.34,1.56,.64,1) infinite is-stamp;animation-delay:var(--d,0s)}.is-slide{opacity:0;animation:8s cubic-bezier(.22,1,.36,1) infinite is-slide;animation-delay:var(--d,0s)}.is-lift{animation:8s ease-in-out infinite is-lift;animation-delay:var(--d,0s)}.is-fly{opacity:0;animation:8s ease-in-out infinite is-fly;animation-delay:var(--d,0s)}@keyframes is-grow{0%,4%{transform:scaleX(0)}20%,88%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes is-pop{0%,4%{opacity:0;transform:scale(.4)}12%,88%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.4)}}@keyframes is-stamp{0%,4%{opacity:0;transform:scale(1.8)rotate(-12deg)}12%,88%{opacity:1;transform:scale(1)rotate(-6deg)}to{opacity:0;transform:scale(1.8)rotate(-12deg)}}@keyframes is-slide{0%,3%{opacity:0;transform:translateY(14px)}12%,90%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(14px)}}@keyframes is-lift{0%,40%,to{transform:translateY(0)}12%,28%{transform:translateY(-5px)}}@keyframes is-fly{0%,6%{opacity:0;translate:0}10%{opacity:1}34%{opacity:1;translate:var(--x,90px) 0}38%,to{opacity:0;translate:var(--x,90px) 0}}@keyframes is-draw{0%,5%{stroke-dashoffset:100px}30%,88%{stroke-dashoffset:0}to{stroke-dashoffset:100px}}@keyframes is-noise{0%,14%{opacity:1}34%,to{opacity:0}}@keyframes is-fade{0%,4%{opacity:0}20%,88%{opacity:1}to{opacity:0}}@keyframes is-today{0%{transform:translate(0)}to{transform:translate(210px)}}@keyframes is-chip{0%,24%{fill:color-mix(in oklch, var(--color-foreground) 18%, transparent)}32%,to{fill:var(--color-success)}}@keyframes is-theme{0%,26%{fill:var(--color-primary);rx:8px}34%,60%{fill:var(--color-secondary);rx:4px}68%,92%{fill:var(--color-accent);rx:11px}to{fill:var(--color-primary);rx:8px}}@keyframes is-theme-card{0%,26%{stroke:color-mix(in oklch, var(--color-primary) 55%, transparent)}34%,60%{stroke:color-mix(in oklch, var(--color-secondary) 70%, transparent)}68%,92%{stroke:color-mix(in oklch, var(--color-accent) 60%, transparent)}to{stroke:color-mix(in oklch, var(--color-primary) 55%, transparent)}}@keyframes is-nudge{0%,to{transform:translate(0)}50%{transform:translate(4px)}}@keyframes is-sweep{to{transform:rotate(360deg)}}@keyframes is-blip{0%,8%{opacity:0;transform:scale(.5)}14%{opacity:1;transform:scale(1.6)}40%,to{opacity:0;transform:scale(1)}}@keyframes is-dot{0%,to{opacity:.3}50%{opacity:1}}@keyframes is-blink{50%{opacity:0}}@keyframes is-cursor{0%,4%{transform:translate(0)}18%{transform:translate(180px,-68px)}36%{transform:translate(52px,-34px)}60%,to{transform:translate(190px,-34px)}}@keyframes is-suggest{0%,4%{opacity:0}14%,70%{opacity:1}78%,88%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.is-svg *{animation:none!important}.is-grow,.is-type{transform:scaleX(1)}.is-pop,.is-stamp,.is-slide,.is-trend-area,.is-suggest{opacity:1;transform:none}.is-sign,.is-trend{stroke-dashoffset:0}.is-noise,.is-fly{opacity:0}}html.low-power .is-svg *{animation-play-state:paused}.project-activity-svg{min-width:0;height:4.5rem}.project-shot{padding:clamp(.75rem,2vw,1.25rem)}.project-shot--small{padding:.75rem}.project-shot-frame{background:var(--color-card);border:1px solid color-mix(in oklch, var(--color-border) 70%, transparent);border-radius:.75rem;width:100%;overflow:hidden}.project-shot--phones{padding:clamp(1.5rem,3vw,2.5rem)}.project-shot-phone .project-shot-frame{border-width:3px;border-radius:1.5rem;width:clamp(10rem,22vw,14rem)}.project-shot-bar{background:color-mix(in oklch, var(--color-foreground) 5%, var(--color-card));border-bottom:1px solid var(--color-border)}.project-shot-img{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;height:auto;display:block}.project-shot-phone .project-shot-img{aspect-ratio:390/844}
