.artifacts{--hairline-plate:var(--bg-solid);--hairline-hi:var(--text-body);--hairline-edge:var(--figure-edge);--hairline-mid:var(--figure-mid);--hairline-lo:var(--figure-lo);--hairline-stroke:.9;--artifact-fade:.3s;--artifact-gutter:48px;min-height:100dvh;padding-top:calc(max(1.25rem,env(safe-area-inset-top,0px)) + 4.75rem);padding-right:env(safe-area-inset-right,0px);padding-bottom:calc(var(--artifact-gutter) + env(safe-area-inset-bottom,0px));padding-left:env(safe-area-inset-left,0px)}.artifacts-grid{border-top:1px solid var(--hairline);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.artifact:nth-child(3n){border-right:0}@media (max-width:1099px){.artifacts{--artifact-gutter:32px}.artifacts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.artifact:nth-child(3n){border-right:1px solid var(--hairline)}.artifact:nth-child(2n){border-right:0}.artifact-filler{display:none}}@media (max-width:699px){.artifacts{--artifact-gutter:16px;padding-top:calc(max(1.25rem,env(safe-area-inset-top,0px)) + 4rem)}.artifacts-grid{grid-template-columns:minmax(0,1fr)}.artifact:nth-child(n){border-right:0}}.artifact{border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:var(--hairline-plate);padding:8px 8px 16px}.artifact-plate{background:var(--hairline-plate);position:relative;overflow:hidden}.artifact-stage{aspect-ratio:5/4;touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;opacity:0;transition:opacity var(--artifact-fade)var(--ease-out);display:block;position:relative}.artifact[data-phase=live] .artifact-stage,.artifact[data-phase=settled] .artifact-stage{opacity:1}.artifact-meta{justify-content:space-between;align-items:baseline;gap:16px;margin-top:4px;padding-inline:12px;font-size:14px;line-height:20px;display:flex}.artifact-name{color:var(--text-body)}.artifact-read{min-width:0;color:var(--text-muted);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;opacity:0;transition:opacity var(--artifact-fade)var(--ease-out);overflow:hidden}.artifact:not([data-phase=waiting]) .artifact-read{opacity:1}.sk{pointer-events:none;width:100%;height:100%;transition:opacity var(--artifact-fade)var(--ease-out);position:absolute;inset:0}.artifact[data-phase=live] .sk{opacity:0}.artifact[data-far] .sk *,.artifact[data-phase=failed] .sk *{animation-play-state:paused}.sk-line{fill:none;stroke-width:var(--hairline-stroke);vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.sk-lo{stroke:var(--hairline-lo)}.sk-mid{stroke:var(--hairline-mid)}.sk-reveal,.sk-runner{fill:none;stroke:currentColor;stroke-width:4px;stroke-linecap:butt;stroke-linejoin:round}.sk-reveal{stroke-dasharray:1 1;stroke-dashoffset:1px;animation:sk-draw .9s var(--ease-draw)var(--sk-delay)forwards}.sk-reveal-crease{animation-delay:calc(var(--sk-delay) + .2s)}.sk-runner{stroke-dasharray:.07 .93;animation:sk-run 2.6s linear calc(var(--sk-delay) + .9s)infinite}.sk-glint{opacity:0;animation:sk-in .4s var(--ease-out)calc(var(--sk-delay) + .9s)forwards}@keyframes sk-draw{to{stroke-dashoffset:0}}@keyframes sk-run{to{stroke-dashoffset:-1px}}@keyframes sk-in{to{opacity:1}}.sk[data-kind=volume] .sk-body,.sk[data-kind=field] .sk-body{opacity:0;animation:sk-in .42s var(--ease-out)var(--sk-delay)forwards}.sk-march{stroke-dasharray:2 4;animation:1.8s linear infinite sk-march}@keyframes sk-march{to{stroke-dashoffset:-6px}}.sk-dot{fill:var(--hairline-lo);stroke:none;animation:3s ease-in-out infinite sk-wave;animation-delay:calc(var(--i)*.11s - 3s)}@keyframes sk-wave{0%,44%,to{fill:var(--hairline-lo)}18%{fill:var(--hairline-mid)}}@media (prefers-reduced-motion:reduce){.sk-body{opacity:0;animation:sk-in .32s var(--ease-out)forwards}.sk-reveal{stroke-dashoffset:0;animation:none}.sk-runner{stroke-dasharray:none;animation:none}.sk-glint,.sk[data-kind=volume] .sk-mid{animation:3.2s ease-in-out .32s infinite both sk-breathe}.sk-march{animation:none}.sk-dot{animation-duration:3.2s;animation-delay:.32s}}@keyframes sk-breathe{0%,to{opacity:.4}50%{opacity:1}}
