@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/atkinson-hyperlegible-400-BrHNak5F.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/atkinson-hyperlegible-700-GZI4o3u0.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/jetbrains-mono-400-6fWv1k7M.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/jetbrains-mono-400-6fWv1k7M.woff2) format("woff2")}@font-face{font-family:Zilla Slab;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/zilla-slab-600-BRgn6X7z.woff2) format("woff2")}@font-face{font-family:Zilla Slab;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/zilla-slab-700-CEKI1vVu.woff2) format("woff2")}:root{--void: #0e1420;--bone: #f2ede4;--ember: #e8833a;--rust: #a34a2a;--saber: #6fe3c1;--haze: #2a3448;--haze-lift: #333f57;--void-lift: #131b2b;--hairline: rgba(242, 237, 228, .12);--ink: var(--bone);--ink-soft: rgba(242, 237, 228, .66);--ink-faint: rgba(242, 237, 228, .42);--display: "Zilla Slab", ui-serif, Georgia, serif;--body: "Atkinson Hyperlegible", ui-sans-serif, system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--gap: 1.25rem;--radius: 10px;--shell: 78rem;--ease: cubic-bezier(.22, .61, .36, 1);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;display:flex;flex-direction:column;background:var(--void);color:var(--ink);font-family:var(--body);font-size:clamp(.95rem,.9rem + .2vw,1.02rem);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.015em;line-height:1.12;margin:0}p{margin:0}a{color:var(--saber);text-decoration-color:#6fe3c166;text-underline-offset:3px}a:hover{text-decoration-color:currentColor}button,input,select{font:inherit;color:inherit}:where(a,button,input,select,[tabindex]):focus-visible{outline:2px solid var(--saber);outline-offset:3px;border-radius:4px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;left:-9999px;top:0;z-index:20;padding:.6rem 1rem;background:var(--haze);border-radius:0 0 var(--radius) 0}.skip-link:focus{left:0}.chevron{display:block;background-image:repeating-linear-gradient(186deg,var(--bone) 0 2.5px,transparent 2.5px 6px)}.chevron--rule{height:14px;width:100%;clip-path:polygon(0 0,100% 38%,100% 62%,0 100%);-webkit-mask-image:linear-gradient(to right,#000 0 42%,transparent 100%);mask-image:linear-gradient(to right,#000 0 42%,transparent 100%);opacity:.85}.chevron--edge{position:absolute;inset:0 auto 0 0;z-index:1;width:14px;background-image:repeating-linear-gradient(186deg,var(--ember) 0 3px,transparent 3px 9px);clip-path:polygon(0 0,100% 0,30% 100%,0 100%);opacity:0;transition:opacity .22s var(--ease)}.chevron--loading{height:16px;width:150px;clip-path:polygon(0 0,100% 32%,100% 68%,0 100%);background-image:repeating-linear-gradient(186deg,var(--saber) 0 2.5px,transparent 2.5px 6px);animation:chevron-drift 1.1s linear infinite}@keyframes chevron-drift{to{background-position:60px 0}}.masthead{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--gap);padding:.85rem clamp(1rem,3vw,2rem) .7rem;border-bottom:1px solid var(--hairline);background:linear-gradient(180deg,var(--void-lift),var(--void))}.wordmark{display:block;text-decoration:none;color:var(--bone);min-width:9.5rem}.wordmark__text{display:block;font-family:var(--display);font-weight:700;font-size:clamp(1.4rem,1.1rem + 1.4vw,2rem);letter-spacing:.14em;line-height:1}.wordmark .chevron--rule{margin-top:.42rem}.masthead__nav{display:flex;flex-wrap:wrap;gap:.3rem;padding-bottom:.2rem}.masthead__link{padding:.32rem .7rem;border-radius:999px;font-size:.86rem;color:var(--ink-soft);text-decoration:none;border:1px solid transparent;transition:color .16s var(--ease),border-color .16s var(--ease),background .16s var(--ease)}.masthead__link:hover{color:var(--bone);border-color:var(--hairline);background:#2a344880}.masthead__link[aria-current=page]{color:var(--void);background:var(--saber);border-color:var(--saber);font-weight:700}#view{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}#view:focus{outline:none}.colophon{padding:1.1rem clamp(1rem,3vw,2rem) 1.5rem;border-top:1px solid var(--hairline);color:var(--ink-faint);font-size:.82rem}.colophon strong{color:var(--ink-soft);letter-spacing:.06em}.gallery{width:min(var(--shell),100%);margin-inline:auto;padding:clamp(1.5rem,4vw,3rem) clamp(1rem,3vw,2rem) 2rem}.gallery__lede{max-width:46ch;margin-bottom:clamp(1.5rem,3vw,2.5rem);color:var(--ink-soft);font-size:clamp(1rem,.95rem + .35vw,1.2rem)}.gallery__lede strong{color:var(--bone);font-weight:400}.cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(.9rem,2vw,1.4rem)}.card{position:relative;border-radius:var(--radius);background:var(--haze);border:1px solid var(--hairline);overflow:hidden;transition:transform .22s var(--ease),border-color .22s var(--ease)}.card__link{display:block;color:inherit;text-decoration:none}.card__thumb{position:relative;aspect-ratio:16 / 10;background:var(--void);border-bottom:1px solid var(--hairline);overflow:hidden}.card__body{padding:.9rem 1.05rem 1.1rem}.card__name{font-size:1.15rem;margin-bottom:.25rem}.card__rule{font-family:var(--mono);font-size:.82rem;color:var(--ember)}.card:hover,.card:focus-within{transform:translateY(-2px);border-color:#6fe3c173}.card:hover .chevron--edge,.card:focus-within .chevron--edge{opacity:.75}.card__fallback{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink-faint);font-family:var(--mono);font-size:.75rem}.sim{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.stage{position:relative;flex:1 1 auto;min-height:min(52vh,30rem);background:var(--void);overflow:hidden;contain:strict}.stage__canvas{position:absolute;inset:0;display:block;width:100%;height:100%}.stage__canvas[hidden]{display:none}.stage--igniting .stage__canvas{animation:ignite .82s var(--ease) both}@keyframes ignite{0%{opacity:0;filter:brightness(2.2) saturate(.4);transform:scale(1.012)}to{opacity:1;filter:none;transform:none}}.stage__loading{position:absolute;inset:0;display:grid;place-items:center;gap:.7rem;align-content:center;color:var(--ink-faint);font-family:var(--mono);font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;pointer-events:none}.stage__error{position:absolute;inset:0;display:grid;place-items:center;padding:2rem;text-align:center;color:var(--ink-soft);max-width:40ch;margin-inline:auto}.panel{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.75rem clamp(1rem,2.5vw,2rem);padding:.8rem clamp(1rem,3vw,2rem);background:var(--haze);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}.transport{display:flex;align-items:center;gap:.4rem}.panel__controls{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.7rem clamp(.9rem,2vw,1.6rem);flex:1 1 24rem}.panel__meta{display:flex;align-items:center;gap:.9rem;margin-left:auto;font-family:var(--mono);font-size:.72rem;color:var(--ink-faint)}.fps{min-width:6.5ch}.button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.25rem;padding:.35rem .8rem;border-radius:8px;border:1px solid var(--hairline);background:var(--haze-lift);color:var(--bone);cursor:pointer;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease)}.button:hover{background:var(--rust);border-color:var(--rust)}.button--icon{min-width:2.5rem;padding:.35rem;font-size:1rem;line-height:1}.button--primary[aria-pressed=true]{background:var(--ember);border-color:var(--ember);color:var(--void)}.button--ghost{background:transparent;font-size:.85rem}.control{display:flex;flex-direction:column;gap:.25rem;min-width:9.5rem;max-width:14rem;flex:1 1 9.5rem}.control--button,.control--toggle{flex:0 0 auto;justify-content:center;min-width:0}.control__head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.control__label{font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}.control__value{font-family:var(--mono);font-size:.78rem;color:var(--ember)}.control__hint{font-size:.72rem;color:var(--ink-faint)}.control__range{--fill: 50%;appearance:none;-webkit-appearance:none;width:100%;height:1.15rem;background:transparent;cursor:pointer}.control__range::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:linear-gradient(to right,var(--ember) 0 var(--fill),rgba(242,237,228,.18) var(--fill) 100%)}.control__range::-moz-range-track{height:4px;border-radius:999px;background:#f2ede42e}.control__range::-moz-range-progress{height:4px;border-radius:999px;background:var(--ember)}.control__range::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:var(--bone);border:2px solid var(--void);transition:background .14s var(--ease)}.control__range::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--bone);border:2px solid var(--void)}.control__range:hover::-webkit-slider-thumb{background:var(--saber)}.control__range:hover::-moz-range-thumb{background:var(--saber)}.control__select{appearance:none;width:100%;padding:.35rem 1.8rem .35rem .6rem;border-radius:8px;border:1px solid var(--hairline);background-color:var(--haze-lift);background-image:linear-gradient(45deg,transparent 50%,var(--ink-soft) 50%),linear-gradient(135deg,var(--ink-soft) 50%,transparent 50%);background-position:right .85rem center,right .55rem center;background-size:5px 5px,5px 5px;background-repeat:no-repeat;cursor:pointer;font-size:.85rem}.control__select option{background:var(--haze);color:var(--bone)}.control__switch{display:inline-flex;align-items:center;gap:.55rem;padding:.3rem 0;background:none;border:0;cursor:pointer}.control__track{position:relative;width:2.4rem;height:1.15rem;border-radius:999px;background:#f2ede429;transition:background .16s var(--ease)}.control__track:after{content:"";position:absolute;top:3px;left:3px;width:.75rem;height:.75rem;border-radius:50%;background:var(--bone);transition:transform .16s var(--ease)}.control__switch[aria-checked=true] .control__track{background:var(--saber)}.control__switch[aria-checked=true] .control__track:after{transform:translate(1.25rem);background:var(--void)}.explainer{width:min(var(--shell),100%);margin-inline:auto;padding:clamp(1.1rem,3vw,1.8rem) clamp(1rem,3vw,2rem) 2rem;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(1rem,3vw,2.4rem)}.explainer__rule{font-family:var(--mono);font-size:clamp(1rem,.9rem + .5vw,1.35rem);color:var(--ember);margin-bottom:.5rem}.explainer__eyebrow{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.35rem}.explainer__why{color:var(--ink-soft);max-width:62ch}.explainer__try{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.explainer__try li{position:relative;padding-left:1.1rem;color:var(--ink-soft);font-size:.94rem}.explainer__try li:before{content:"";position:absolute;left:0;top:.62em;width:.5rem;height:2px;background:var(--saber)}@media(max-width:52rem){.masthead__link:not([data-route=""]){display:none}.masthead__link[data-route=""]:before{content:"← "}.masthead__link[data-route=""][aria-current=page]{display:none}.cards,.explainer{grid-template-columns:minmax(0,1fr)}.panel__meta{margin-left:0}.stage{min-height:58vh}}@media(max-width:30rem){.masthead{align-items:center}.masthead__link{padding:.3rem .55rem;font-size:.8rem}.control{max-width:none}}.sim:fullscreen{background:var(--void)}.sim:fullscreen .explainer{display:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.stage--igniting .stage__canvas{animation:plain-fade .3s linear both!important}@keyframes plain-fade{0%{opacity:0}to{opacity:1}}}
