:root{color-scheme:light dark;--c-white: #fff;--c-black: #292f2f;--c-surface: light-dark(var(--c-white), var(--c-black));--c-surface-on: light-dark(var(--c-black), var(--c-white));--c-surface-on-alt: color-mix(in lab, var(--c-surface-on) 50%, var(--c-surface));--c-border: color-mix(in lab, var(--c-surface-on) 20%, var(--c-surface));--s-line: 1px;--s-line--fat: 2px;font-family:Iosevka Web,Iosevka,ui-monospace,SF Mono,Cascadia Code,monospace;font-weight:300;font-size:calc(.75rem + .3vw);line-height:1.5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-color:var(--c-surface-on) var(--c-surface);scrollbar-width:thin}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--c-surface);color:var(--c-surface-on);padding:1rem}::selection{background:var(--c-surface-on);color:var(--c-surface)}h1,h2,h3,label{font-family:inherit;font-weight:400;font-style:normal;margin:0}label{font-size:.75em;letter-spacing:.02em}.palette-viz{display:block;image-rendering:pixelated}.cursor-probe{position:fixed;left:0;top:0;z-index:1000;display:none;grid-template-columns:auto 1fr;align-items:center;gap:.1rem .5rem;padding:.35rem .5rem;border:var(--s-line) solid var(--c-surface-on);background:color-mix(in lab,var(--c-surface) 85%,transparent);color:var(--c-surface-on);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;white-space:nowrap}.cursor-probe.is-visible{display:inline-grid}.cursor-probe__dot{width:.8rem;height:.8rem;border-radius:50%;border:var(--s-line) solid var(--c-surface-on);grid-row:1 / -1}.cursor-probe__label{font-size:.7em}.cursor-probe__oklab{font-size:.6em;opacity:.7;grid-column:2}.cursor-probe__oklab:empty{display:none}.app{position:relative;border:var(--s-line) solid var(--c-surface-on);overflow:hidden}.sidebar{position:absolute;top:0;left:0;bottom:0;z-index:10;display:flex;flex-direction:column;align-items:stretch;width:clamp(200px,35vw,320px);background:var(--c-surface);border-right:var(--s-line) solid var(--c-surface-on)}.sidebar__palette{overflow-y:scroll;flex:1 1 auto;min-height:0}.sidebar__tools{flex:0 0 auto;display:flex;flex-direction:column;gap:0;border-bottom:var(--s-line) solid var(--c-surface-on)}.sidebar__tools label{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;border-bottom:var(--s-line) solid var(--c-border);gap:1rem}.sidebar__tools label:last-child{border-bottom:none}select,input[type=range],input[type=checkbox],button,textarea{font-family:inherit;font-size:inherit;font-weight:inherit;color:inherit}select{background:var(--c-surface);border:var(--s-line) solid var(--c-surface-on);padding:.2rem 1.4rem .2rem .4rem;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='currentColor'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .4rem center;background-size:.5rem;min-width:8rem}select:focus{outline:var(--s-line) solid var(--c-surface-on);outline-offset:1px}.position-group{display:inline-flex;align-items:center;gap:.4rem}.play-btn{background:none;border:none;color:var(--c-surface-on);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:.7em;line-height:1;flex:0 0 auto;padding:0;opacity:.6;transition:opacity .15s}.play-btn:hover{opacity:1}input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;cursor:pointer;height:1.2rem;min-width:8rem}input[type=range]::-webkit-slider-runnable-track{height:var(--s-line);background:var(--c-surface-on)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:.5rem;height:.5rem;background:var(--c-surface);border:var(--s-line) solid var(--c-surface-on);border-radius:50%;margin-top:calc(-.5rem / 2 + var(--s-line) / 2);box-shadow:0 0 0 var(--s-line--fat) var(--c-surface)}input[type=range]::-moz-range-track{height:var(--s-line);background:var(--c-surface-on)}input[type=range]::-moz-range-thumb{width:.5rem;height:.5rem;background:var(--c-surface);border:var(--s-line) solid var(--c-surface-on);border-radius:50%;box-shadow:0 0 0 var(--s-line--fat) var(--c-surface)}input[type=checkbox]{width:2rem;height:.7rem;border:var(--s-line) solid var(--c-surface-on);background:var(--c-surface);border-radius:999px;position:relative;cursor:pointer;appearance:none;-webkit-appearance:none;flex:0 0 auto;transition:background .1s linear .1s,border-color .1s linear .1s}input[type=checkbox]:after{content:"";position:absolute;top:1px;left:1px;width:calc(1.1rem - 4px);height:calc(.7rem - 4px);border-radius:2rem;background:var(--c-surface-on);transition:transform .45s cubic-bezier(.3,.7,0,1)}input[type=checkbox]:checked{background:var(--c-surface-on);border-color:var(--c-surface-on)}input[type=checkbox]:checked:after{transform:translate(.85rem);background:var(--c-surface)}input[type=checkbox]:focus{outline:var(--s-line) solid var(--c-surface-on);outline-offset:1px}.palette-paste{flex:0 0 auto;resize:none;width:100%;padding:.6rem .75rem;border:none;border-bottom:var(--s-line) solid var(--c-surface-on);background:var(--c-surface);color:var(--c-surface-on);font-size:.8em;height:4em;outline:none;font-family:inherit}.palette-paste::placeholder{color:var(--c-surface-on-alt)}.palette-paste:focus{background:color-mix(in lab,var(--c-surface-on) 4%,var(--c-surface))}.sidebar__beam{display:flex;flex-wrap:wrap;flex:0 0 auto;border-bottom:var(--s-line) solid var(--c-surface-on)}.beam__token{flex:1 1 auto;padding:.6rem .75rem;border:none;background:var(--c-surface);color:var(--c-surface-on);font-family:inherit;font-size:.8em;outline:none;min-width:0}.beam__token::placeholder{color:var(--c-surface-on-alt)}.beam__token:focus{background:color-mix(in lab,var(--c-surface-on) 4%,var(--c-surface))}.beam__token:disabled{opacity:.5}.beam__connect{flex:0 0 auto;padding:0 .75rem;border:none;border-left:var(--s-line) solid var(--c-surface-on);background:var(--c-surface);color:var(--c-surface-on-alt);font-family:inherit;font-size:.75em;cursor:pointer;transition:background .05s linear,color .05s linear}.beam__connect:hover:not(:disabled){background:var(--c-surface-on);color:var(--c-surface)}.beam__connect:disabled{opacity:.4;cursor:not-allowed}.beam__status{display:none;width:100%;padding:.25rem .75rem;font-size:.75em;color:color-mix(in lab,tomato 60%,var(--c-surface-on));border-top:var(--s-line) solid var(--c-border)}.beam__status[data-state=error]{display:block}.palette__color{background:var(--color)}.color-picker{display:flex;border-bottom:var(--s-line) solid var(--c-border);transition:transform .15s ease,box-shadow .15s linear;position:relative;overflow:hidden}.color-picker:hover{z-index:1;transform:translateY(-1px);box-shadow:0 var(--s-line--fat) 0 0 var(--c-surface-on)}.color-picker input[type=color]{flex:1 1 auto;border:none;cursor:pointer;height:2rem;padding:0 .1rem;background:var(--color);opacity:0}.color-picker button{flex:0 0 auto;width:1.8rem;padding:0;border:none;border-left:var(--s-line) solid var(--c-border);background:var(--c-surface);color:var(--c-surface-on-alt);cursor:pointer;font-size:.65rem;font-family:inherit;transition:background .05s linear,color .05s linear,box-shadow .15s linear,transform .15s cubic-bezier(.3,.7,0,1)}.color-picker button:hover{background:var(--c-surface-on);color:var(--c-surface)}@media(hover:hover){.color-picker button{transform:translate(100%)}.color-picker:hover button{transform:translate(0)}}.palette__add{display:flex;align-items:center;justify-content:center;width:100%;height:2rem;border:none;border-bottom:var(--s-line) solid var(--c-border);background:var(--c-surface);color:var(--c-surface-on-alt);cursor:pointer;font-size:1rem;font-family:inherit;transition:background .05s linear,color .05s linear}.palette__add:hover{background:var(--c-surface-on);color:var(--c-surface)}.viz{display:flex;flex-wrap:wrap;gap:0;align-content:flex-start;overflow:hidden;margin-left:clamp(200px,35vw,320px)}.viz .viz-cell{position:relative;overflow:hidden;width:33.3333%;aspect-ratio:1;border-right:var(--s-line) solid var(--c-surface-on);border-bottom:var(--s-line) solid var(--c-surface-on)}.viz .viz-cell .palette-viz{width:100%!important;height:100%!important;display:block}.viz .palette-viz-3d{width:100%!important;height:100%!important;cursor:grab;display:block}.viz .palette-viz-3d:active{cursor:grabbing}.viz .viz-cell:nth-child(3n){border-right:none}.viz .viz-cell:nth-child(n+4){border-bottom:none}.axis-overlay{position:absolute;inset:0;pointer-events:none}.axis-line{position:absolute;display:flex;align-items:center;font-size:.55em;line-height:1;color:var(--c-surface-on);opacity:0;transition:transform .3s cubic-bezier(.3,.7,0,1),opacity .3s ease}.viz-cell:hover .axis-line{transform:translate(0);opacity:1}.axis-line__min,.axis-line__max{flex:0 0 auto;white-space:nowrap}.axis-line__label{flex:0 0 auto;width:1.6em;height:1.6em;border-radius:50%;background:var(--c-surface-on);color:var(--c-surface);border:var(--s-line) solid currentColor;display:flex;align-items:center;justify-content:center;font-weight:400;z-index:1}.axis-line--x{bottom:.5rem;left:2rem;right:.5rem;flex-direction:row;gap:.3em;transform:translateY(200%)}.axis-line--x:before,.axis-line--x:after{content:"";flex:1 1 0;height:var(--s-line);background:currentColor}.axis-line--x:before{order:1}.axis-line--x:after{order:3}.axis-line--x .axis-line__min{order:0}.axis-line--x .axis-line__label{order:2}.axis-line--x .axis-line__max{order:4}.axis-line--y{top:.5rem;bottom:2rem;left:.5rem;flex-direction:column;gap:.3em;transform:translate(-200%)}.axis-line--y:before,.axis-line--y:after{content:"";flex:1 1 0;width:var(--s-line);background:currentColor}.axis-line--y:before{order:1}.axis-line--y:after{order:3}.axis-line--y .axis-line__min{order:0}.axis-line--y .axis-line__label{order:2}.axis-line--y .axis-line__max{order:4}.viz-cell--polar .axis-line--y{bottom:50%;left:50%;transform:translate(-50%) translateY(-200%)}.viz-cell--polar:hover .axis-line--y{transform:translate(-50%) translateY(0);opacity:1}.viz-cell--polar .axis-line--x{inset:50% auto auto 50%;flex-direction:column;align-items:center;transform:translate(-50%) translateY(3rem);z-index:2}.viz-cell--polar:hover .axis-line--x{transform:translate(-50%) translateY(-50%);opacity:1}.viz-cell--polar .axis-line--x:before,.viz-cell--polar .axis-line--x:after{display:none}.viz-cell--polar .axis-line--x .axis-line__min,.viz-cell--polar .axis-line--x .axis-line__max{display:none}.viz-cell--polar .axis-line--x .axis-line__label{position:relative;width:2em;height:2em;z-index:2}.viz-cell--polar .axis-line--x .axis-line__label:before{content:"";position:absolute;inset:-.6em;border-radius:50%;border:var(--s-line) solid currentColor;clip-path:inset(0 0 50% 50%)}.shader-select,.axis-select{display:none}.about{max-width:40rem;margin:5vmin auto;font-size:.9rem;line-height:1.6}.about h1,.about h2{letter-spacing:-.03em;font-weight:200}.about h2{margin-top:2em;margin-bottom:0}.about h2+p,.about h2+figure,.about h2+pre{margin-top:.75em}.about p+p{margin-top:.75em}.about table{margin-top:1.5em;width:100%;border-collapse:collapse;text-align:left;font-size:.85em}.about table caption{text-align:left;font-size:.8em;color:var(--c-surface-on-alt);margin-bottom:.4em;caption-side:top}.about table th{font-weight:400;color:var(--c-surface-on-alt);padding:.3em .75em .3em 0;border-bottom:var(--s-line) solid var(--c-border)}.about table td{padding:.35em .75em .35em 0;border-bottom:var(--s-line) solid var(--c-border);vertical-align:top}.about table tr[data-color-model]{cursor:pointer}.about table tr[data-color-model] td:last-child{position:relative}.about table tr[data-color-model]:hover td:last-child:after,.about table tr[data-color-model]:focus td:last-child:after{content:"→";position:absolute;right:.5em;top:50%;transform:translateY(-50%)}.about table tr[data-color-model]:hover td,.about table tr[data-color-model]:focus td{background:var(--c-border)}.about table tr[data-color-model]:focus{outline:none}.about figure{margin:0}.about figcaption{font-size:.8em;color:var(--c-surface-on-alt);margin-bottom:.4em}.about__header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.5rem}.about__header h1{margin:0;line-height:1}a{color:inherit;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}.kofi{width:2.5em;height:2.5em;margin-top:1em;margin-left:-.4em;margin-right:1em;display:block}.kofi:hover img{animation:.5s shakeup}.kofi img{transform-origin:50%;width:100%}@keyframes shakeup{0%,to{transform:translateY(0) rotate(0)}10%,30%,50%,70%,90%{transform:translateY(-10px) rotate(-6deg)}20%,40%,60%,80%{transform:translateY(-8px) rotate(10deg)}}.about a[href^=http]:not(:has(img)):after{content:" ↗";font-size:.75em;vertical-align:top;display:inline-block;transform:translate(2px,-2px);transition:transform .2s cubic-bezier(.3,.7,0,1)}.about a[href^=http]:not(:has(img)):hover:after{transform:translate(4px,-4px)}.code{display:block;background:var(--c-surface-on);color:var(--c-surface);border:var(--s-line) solid var(--c-border);padding:1rem;font-size:.75rem;line-height:1.5;overflow-x:auto;white-space:pre}.code ::selection{background:var(--c-surface);color:var(--c-surface-on)}pre,code{font:inherit}@media(orientation:portrait){.about{max-width:min(100%,30rem)}}@media(orientation:portrait){body{padding:.5rem}.app{display:flex;flex-direction:column;overflow:visible}.sidebar{position:static;width:100%;border-right:none;border-bottom:var(--s-line) solid var(--c-surface-on)}.viz{margin-left:0}.sidebar__palette{display:flex;flex-wrap:wrap;overflow:visible}.sidebar__palette .color-picker{width:2rem;flex-direction:column}.sidebar__palette .color-picker input[type=color]{height:1.5rem}.sidebar__palette .color-picker button{width:100%;height:1rem;border-left:none;border-top:var(--s-line) solid var(--c-border);transform:none}.sidebar__palette .palette__add{width:2rem;height:2.5rem;border-bottom:none;border-right:var(--s-line) solid var(--c-border)}.viz .viz-cell{width:50%}.viz .viz-cell:nth-child(3n){border-right:var(--s-line) solid var(--c-surface-on)}.viz .viz-cell:nth-child(2n){border-right:none!important}.viz .viz-cell:nth-child(n+4){border-bottom:var(--s-line) solid var(--c-surface-on)}.viz .viz-cell:nth-child(n+5){border-bottom:none}}
