.frame-corners>i{position:absolute;width:var(--fc-size);height:var(--fc-size);border:0 solid;transition:transform var(--t-spring-ui) var(--ease-spring-ui)}.frame-corners>i[data-c=tl]{top:var(--fc-inset);left:var(--fc-inset);border-top-width:var(--fc-stroke);border-left-width:var(--fc-stroke);border-top-left-radius:calc(var(--fc-size) * .45)}.frame-corners>i[data-c=tr]{top:var(--fc-inset);right:var(--fc-inset);border-top-width:var(--fc-stroke);border-right-width:var(--fc-stroke);border-top-right-radius:calc(var(--fc-size) * .2)}.frame-corners>i[data-c=bl]{bottom:var(--fc-inset);left:var(--fc-inset);border-bottom-width:var(--fc-stroke);border-left-width:var(--fc-stroke);border-bottom-left-radius:calc(var(--fc-size) * .12)}.frame-corners>i[data-c=br]{bottom:var(--fc-inset);right:var(--fc-inset);border-bottom-width:var(--fc-stroke);border-right-width:var(--fc-stroke);border-bottom-right-radius:calc(var(--fc-size) * .45)}@media (prefers-reduced-motion:no-preference){:is(.group:hover,.group:focus-visible,[data-active]) .frame-corners>i[data-c=tl],:is(.group:hover,.group:focus-visible,[data-active])>.frame-corners>i[data-c=tl]{transform:translate(var(--fc-tighten),var(--fc-tighten))}:is(.group:hover,.group:focus-visible,[data-active]) .frame-corners>i[data-c=tr]{transform:translate(calc(var(--fc-tighten) * -1),var(--fc-tighten))}:is(.group:hover,.group:focus-visible,[data-active]) .frame-corners>i[data-c=bl]{transform:translate(var(--fc-tighten),calc(var(--fc-tighten) * -1))}:is(.group:hover,.group:focus-visible,[data-active]) .frame-corners>i[data-c=br]{transform:translate(calc(var(--fc-tighten) * -1),calc(var(--fc-tighten) * -1))}}.frame-canvas{position:fixed;inset:0;z-index:30;pointer-events:none}.frame-canvas canvas{display:block}@supports (height:100lvh){.frame-canvas{bottom:auto;height:100lvh}}@media not all and (pointer:fine) and (hover:hover) and (min-width:1024px){section:has(.hero-frame[data-3d=on]){-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}}.hero-frame-svg{transition:opacity .6s var(--ease-out)}.hero-frame[data-3d=on] .hero-frame-svg{opacity:0}@media (prefers-reduced-motion:no-preference){.hero-frame-svg{animation:hero-frame-float 9s ease-in-out infinite}.hero-frame[data-3d=on] .hero-frame-svg{animation-play-state:paused}}@keyframes hero-frame-float{0%,to{transform:translateZ(0) rotate(0deg)}33%{transform:translate3d(0,-2.2%,0) rotate(-1.2deg)}66%{transform:translate3d(0,1.2%,0) rotate(.8deg)}}.hero-frame-glow{transition:transform .7s var(--ease-spring-ui),opacity .7s var(--ease-out)}html[data-shatter=blast] .hero-frame-glow{transform:scale(1.4);transition-duration:.3s}.hero-frame[data-3d=on] .hero-frame-glow{opacity:.14}@media (prefers-reduced-motion:no-preference){.hero-frame:not([data-3d=off]) .hero-frame-glow,.hero-frame:not([data-3d=off]) .hero-frame-svg,html[data-shatter] .hero-frame:not([data-3d=off]) .hero-frame-glow{opacity:0;transition:none}section:has(.hero-frame:not([data-3d=off]))>canvas{visibility:hidden}}html[data-shatter=blast] .hero-frame[data-3d=on] .hero-frame-glow{opacity:.15;transform:none}@media (prefers-reduced-motion:no-preference){.hero-frame-glow>*{animation:hero-glow-breathe 4.8s ease-in-out infinite}}@keyframes hero-glow-breathe{0%,to{opacity:.85}50%{opacity:1}}html[data-shatter]{user-select:none;-webkit-user-select:none}html[data-shatter],html[data-shatter] body{overflow-x:clip}#main,body>header,header.fixed{transition:transform .9s var(--ease-spring-ui);transform-origin:50% 50vh}html[data-shatter=charge] #main{transform:perspective(1600px) rotateX(1deg) rotateY(-1.2deg) scale(.995);transition-duration:.3s;transition-timing-function:var(--ease-out)}html[data-shatter=blast] #main,html[data-shatter=blast] header.fixed{transform:perspective(1400px) rotateX(7deg) rotateY(-11deg) rotate(-3.5deg) skewX(-6deg) scale(.94);transition-duration:.52s;transition-timing-function:var(--ease-expo)}@media (prefers-reduced-motion:no-preference){html[data-shatter=charge] #main{animation:frame-rumble 90ms linear infinite}html[data-shatter=blast] #main,html[data-shatter=blast] header.fixed{animation:frame-shake .14s linear 3,frame-sway 3.2s ease-in-out .42s infinite}}@keyframes frame-rumble{0%,to{translate:0 0}50%{translate:1px -1px}}@keyframes frame-sway{0%,to{translate:0 0;rotate:0deg}30%{translate:-10px 6px;rotate:-.8deg}70%{translate:8px -4px;rotate:.6deg}}@keyframes frame-shake{0%{translate:0 0}25%{translate:-4px 2px}50%{translate:3px -3px}75%{translate:-2px -1px}to{translate:0 0}}html[data-intro=done] .frame-loader:not(.fl-handover){display:none}html[data-loader=playing]{overflow:hidden}.frame-loader{--fl-s:clamp(180px,30vmin,300px);position:fixed;inset:0;z-index:90;display:grid;place-items:center;color:hsl(var(--paper));animation:fl-failsafe .3s 6s forwards}.fl-bg{position:absolute;inset:0;background:hsl(var(--ink))}.fl-stage{position:relative;width:var(--fl-s);height:var(--fl-s);animation:fl-breathe .3s 1.7s var(--ease-out) both}.fl-corner{position:absolute;width:18%;height:18%;border:0 solid;animation:fl-corner-in .6s var(--ease-expo) both}.fl-corner[data-c=tl]{top:0;left:0;border-top-width:2px;border-left-width:2px;border-top-left-radius:40%;--fl-from:translate(-34vw,-34vh)}.fl-corner[data-c=tr]{top:0;right:0;border-top-width:2px;border-right-width:2px;border-top-right-radius:18%;--fl-from:translate(34vw,-34vh);animation-delay:40ms}.fl-corner[data-c=bl]{bottom:0;left:0;border-bottom-width:2px;border-left-width:2px;border-bottom-left-radius:10%;--fl-from:translate(-34vw,34vh);animation-delay:80ms}.fl-corner[data-c=br]{bottom:0;right:0;border-bottom-width:2px;border-right-width:2px;border-bottom-right-radius:40%;--fl-from:translate(34vw,34vh);animation-delay:.12s}.fl-line{position:absolute;background:hsl(var(--paper)/.4);animation:fl-line .6s .3s var(--ease-glide) both}.fl-line[data-l=t]{top:0;left:18%;right:18%;height:1px;transform-origin:left}.fl-line[data-l=b]{bottom:0;left:18%;right:18%;height:1px;transform-origin:right}.fl-line[data-l=l]{left:0;transform-origin:bottom}.fl-line[data-l=l],.fl-line[data-l=r]{top:18%;bottom:18%;width:1px;--fl-axis:y}.fl-line[data-l=r]{right:0;transform-origin:top}.fl-line[data-l=l],.fl-line[data-l=r]{animation-name:fl-line-y}.fl-mark{position:absolute;inset:21%;width:58%;height:58%;overflow:visible}.fl-outline path{stroke:hsl(var(--paper)/.75);stroke-width:1.1;stroke-dasharray:1;stroke-dashoffset:1;animation:fl-draw .7s .45s var(--ease-glide) forwards,fl-fade-out .25s 1.45s linear forwards}.fl-outline path+path{animation-delay:.65s,1.45s}.fl-fill path{stroke:hsl(var(--paper));stroke-width:24;stroke-dasharray:1;stroke-dashoffset:1;animation:fl-draw .52s .85s var(--ease-glide) forwards}.fl-fill path[data-i="1"]{animation-delay:1.15s;animation-duration:.26s}.fl-fill path[data-i="2"]{animation-delay:1.2s;animation-duration:.35s}.fl-solid{fill:hsl(var(--paper));opacity:0;animation:fl-show .15s linear 1.52s forwards}.fl-foot{position:absolute;inset:auto var(--gutter) 2rem;display:flex;align-items:flex-end;justify-content:space-between;gap:2rem}.fl-count{display:flex;flex-direction:column;gap:.5rem;font-family:var(--font-mono),ui-monospace,monospace}.fl-count .tabular{font-size:clamp(2.5rem,5vw,4.5rem);line-height:.9;letter-spacing:-.04em;color:hsl(var(--paper))}.fl-progress{position:relative;width:min(32vw,22rem);height:1px;margin-bottom:.5rem;background:hsl(var(--paper)/.15);overflow:hidden}.fl-progress>i{position:absolute;inset:0;background:hsl(var(--paper));transform-origin:left;animation:fl-progress 1.7s var(--ease-glide) both}@keyframes fl-corner-in{0%{transform:var(--fl-from);opacity:0}30%{opacity:1}to{transform:none;opacity:1}}@keyframes fl-line{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes fl-line-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes fl-draw{to{stroke-dashoffset:0}}@keyframes fl-show{to{opacity:1}}@keyframes fl-fade-out{to{opacity:0}}@keyframes fl-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes fl-breathe{0%{transform:scale(1)}45%{transform:scale(1.045)}to{transform:scale(1)}}@keyframes fl-failsafe{to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion:reduce){.frame-loader *,.frame-loader :before{animation:none!important}.fl-outline path{opacity:0}.fl-fill path{stroke-dashoffset:0}.fl-solid{opacity:1}.fl-progress>i{transform:none}}html[data-transition=frame]::view-transition-old(root){animation:ft-close .52s var(--ease-glide) both}html[data-transition=frame]::view-transition-new(root){animation:ft-open .64s .4s var(--ease-glide) both}html[data-transition=frame]::view-transition-group(root){animation-duration:1.04s}@keyframes ft-close{0%{clip-path:inset(0 round 0)}to{clip-path:inset(calc(50% - 3.5rem) calc(50% - 3.5rem) round 1.5rem);transform:scale(.94);opacity:.4}}@keyframes ft-open{0%{clip-path:inset(calc(50% - 3.5rem) calc(50% - 3.5rem) round 1.5rem);transform:scale(1.06)}to{clip-path:inset(0 round 0);transform:none}}.frame-transition{position:fixed;inset:0;z-index:100;pointer-events:none;visibility:hidden;overflow:hidden}.frame-transition>i{position:absolute;background:hsl(var(--ink));will-change:transform}.frame-transition>i[data-p=t]{inset:0 0 50% 0;transform:translateY(-100%)}.frame-transition>i[data-p=b]{inset:50% 0 0 0;transform:translateY(100%)}.frame-transition>i[data-p=l]{inset:0 50% 0 0;transform:translateX(-100%)}.frame-transition>i[data-p=r]{inset:0 0 0 50%;transform:translateX(100%)}.ft-frame{position:absolute;left:50%;top:50%;width:7rem;height:7rem;margin:-3.5rem 0 0 -3.5rem;color:hsl(var(--paper))}.ft-frame>b{position:absolute;width:1.5rem;height:1.5rem;border:0 solid;opacity:0}.ft-frame>b[data-c=tl]{top:0;left:0;border-top-width:2px;border-left-width:2px;border-top-left-radius:40%;transform-origin:3.5rem 3.5rem}.ft-frame>b[data-c=tr]{top:0;right:0;border-top-width:2px;border-right-width:2px;border-top-right-radius:18%;transform-origin:-2rem 3.5rem}.ft-frame>b[data-c=bl]{bottom:0;left:0;border-bottom-width:2px;border-left-width:2px;border-bottom-left-radius:10%;transform-origin:3.5rem -2rem}.ft-frame>b[data-c=br]{bottom:0;right:0;border-bottom-width:2px;border-right-width:2px;border-bottom-right-radius:40%;transform-origin:-2rem -2rem}html.has-frame-cursor,html.has-frame-cursor *{cursor:none!important}html.has-frame-cursor :is(input:not([type=checkbox],[type=radio],[type=range],[type=button],[type=submit]),textarea,[contenteditable=""],[contenteditable=true],[data-cursor=native]){cursor:text!important}.frame-cursor{position:fixed;inset:0;z-index:80;pointer-events:none;color:hsl(var(--paper));mix-blend-mode:difference;opacity:0;transition:opacity var(--t-ui) var(--ease-out)}.frame-cursor[data-visible]{opacity:1}.frame-cursor[data-mode=native]{opacity:0}.fc-c,.fc-dot,.fc-label{position:absolute;left:0;top:0;will-change:transform}.fc-dot:before{content:"";position:absolute;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:999px;background:currentColor;transition:transform var(--t-spring-ui) var(--ease-spring-ui)}.frame-cursor:is([data-mode=link],[data-mode=view]) .fc-dot:before{transform:scale(.5)}.frame-cursor[data-down] .fc-dot:before{transform:scale(.7);transition-duration:var(--t-press)}.fc-c{width:9px;height:9px;border:0 solid;opacity:0;transition:opacity var(--t-hover) var(--ease-out)}.frame-cursor:is([data-mode=link],[data-mode=view]) .fc-c{opacity:1}.fc-c[data-c=tl]{border-top-width:1.5px;border-left-width:1.5px;border-top-left-radius:4px}.fc-c[data-c=tr]{border-top-width:1.5px;border-right-width:1.5px;border-top-right-radius:2px}.fc-c[data-c=bl]{border-bottom-width:1.5px;border-left-width:1.5px;border-bottom-left-radius:1px}.fc-c[data-c=br]{border-bottom-width:1.5px;border-right-width:1.5px;border-bottom-right-radius:4px}.fc-label>span{display:block;translate:-50% -50%;font-family:var(--font-mono),ui-monospace,monospace;font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:0;scale:.6;transition:opacity var(--t-hover) var(--ease-out),scale var(--t-spring-ui) var(--ease-spring-ui)}.frame-cursor[data-mode=view] .fc-label>span{opacity:1;scale:1}.frame-cursor[data-mode=view] .fc-dot{opacity:0}.page-dust{position:absolute;left:-40px;top:-40px;pointer-events:none}@media (prefers-reduced-motion:no-preference){.page-dust{animation:page-dust-drift 48s ease-in-out infinite alternate}}@keyframes page-dust-drift{0%{transform:translate3d(-14px,8px,0)}to{transform:translate3d(18px,-12px,0)}}