@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@500;600;700&display=swap";:root{color:#191817;font-synthesis:none;background:#f4f0e8;font-family:Manrope,system-ui,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none}button,input,select{font:inherit}button,select{color:inherit}#scene{touch-action:none;display:block;position:fixed;inset:0}.intro{z-index:100;color:#111;background:#fff;place-content:center;transition:opacity .42s,visibility .42s;display:grid;position:fixed;inset:0;overflow:hidden}.intro.is-finished{opacity:0;visibility:hidden}.intro-name{z-index:2;letter-spacing:-.09em;justify-content:center;gap:.03em;margin:0;font-size:clamp(76px,16vw,220px);font-weight:700;line-height:.78;display:flex;position:relative}.intro-name span{opacity:0;animation:.7s cubic-bezier(.2,.75,.2,1) forwards iris-letter;transform:translateY(24px)}.intro-name span:nth-child(2){animation-delay:80ms}.intro-name span:nth-child(3){animation-delay:.16s}.intro-name span:nth-child(4){animation-delay:.24s}.intro-caption{z-index:2;text-align:center;letter-spacing:.32em;color:#df3428;opacity:0;margin:22px 0 0;font:500 11px/1 DM Mono,monospace;animation:.55s .55s forwards iris-caption;position:relative}.intro-dot{aspect-ratio:1;opacity:0;background:#111;border-radius:50%;width:clamp(42px,7vw,100px);animation:1.35s cubic-bezier(.2,.7,.15,1) .58s forwards iris-dot;position:absolute;top:50%;left:50%}.intro-dot-one{--dot-x:-38vw;--dot-y:-32vh}.intro-dot-two{--dot-x:39vw;--dot-y:28vh;background:#df3428;animation-delay:.66s}.intro-dot-three{--dot-x:-31vw;--dot-y:35vh;width:clamp(28px,4vw,62px);animation-delay:.74s}@keyframes iris-letter{to{opacity:1;transform:translateY(0)}}@keyframes iris-caption{to{opacity:1}}@keyframes iris-dot{0%{opacity:0;transform:translate(-50%,-50%)scale(.15)}22%{opacity:1}to{opacity:1;transform:translate(calc(-50% + var(--dot-x)),calc(-50% + var(--dot-y))) scale(1)}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.panel-toggle{z-index:20;top:max(18px, env(safe-area-inset-top));right:max(18px, env(safe-area-inset-right));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;background:#f4f0e8e0;border:1px solid #19181738;border-radius:50%;width:46px;height:46px;position:fixed;box-shadow:0 8px 30px #14141414}.toggle-icon{font-family:DM Mono,monospace;font-size:20px;line-height:1}.panel{z-index:10;-webkit-backdrop-filter:blur(20px)saturate(1.2);backdrop-filter:blur(20px)saturate(1.2);opacity:0;pointer-events:none;background:#f4f0e8e6;border:1px solid #19181724;border-radius:26px;flex-direction:column;width:min(340px,100vw - 28px);padding:30px 28px 24px;transition:transform .35s cubic-bezier(.2,.8,.2,1),opacity .25s;display:flex;position:fixed;top:14px;bottom:14px;right:14px;overflow-y:auto;transform:translate(calc(100% + 32px));box-shadow:0 20px 70px #1816141f}.panel.is-open{opacity:1;pointer-events:auto;transform:translate(0)}.panel header{padding-right:46px}.eyebrow{letter-spacing:.16em;color:#e6422e;margin:0 0 10px;font:500 10px/1 DM Mono,monospace}h1{letter-spacing:-.065em;margin:0;font-size:clamp(38px,5vh,56px);font-weight:700;line-height:.88}.hint{color:#6d6963;margin:18px 0 0;font:400 11px/1.6 DM Mono,monospace}.preset-row{gap:7px;margin:22px 0 20px;display:flex}.chip{cursor:pointer;background:0 0;border:1px solid #c8c2b8;border-radius:999px;flex:1;padding:8px 5px;font:500 10px DM Mono,monospace;transition:background .2s,color .2s}.chip:hover{color:#f4f0e8;background:#191817}.controls{gap:12px;display:grid}.control{gap:6px;display:grid}.control>span,.select-row{justify-content:space-between;align-items:center;font:500 10px DM Mono,monospace;display:flex}.control b,.select-row b{text-transform:uppercase;letter-spacing:.05em;font-weight:500}.control output{color:#817b72;font-variant-numeric:tabular-nums}input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:12px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:#bdb7ae;height:2px}input[type=range]::-webkit-slider-thumb{appearance:none;background:#191817;border:0;border-radius:50%;width:14px;height:14px;margin-top:-6px}input[type=range]::-moz-range-track{background:#bdb7ae;height:2px}input[type=range]::-moz-range-thumb{background:#191817;border:0;border-radius:50%;width:14px;height:14px}.segmented{border:1px solid #c8c2b8;border-radius:10px;grid-template-columns:1fr 1fr;margin-top:3px;padding:3px;display:grid}.segmented button{cursor:pointer;background:0 0;border:0;border-radius:7px;padding:7px;font:500 10px DM Mono,monospace}.segmented button.active{color:#f4f0e8;background:#191817}.select-row{margin-top:2px}select{background:0 0;border:0;border-bottom:1px solid #a9a39a;padding:4px 20px 4px 4px;font:500 10px DM Mono,monospace}.dedication{text-align:right;letter-spacing:.05em;color:#8a847b;margin:18px 0 -10px;font:400 9px/1 DM Mono,monospace}.dedication span{color:#df3428}.panel footer{grid-template-columns:1.15fr 1fr 1.15fr;gap:7px;margin-top:auto;padding-top:22px;display:grid}.panel footer button{cursor:pointer;background:0 0;border:1px solid #191817;border-radius:10px;padding:10px 4px;font:500 10px DM Mono,monospace}.panel footer button:first-child{color:#f4f0e8;background:#191817}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #e6422e}@media (height<=720px){.panel{padding-top:22px}.hint{display:none}.preset-row{margin:14px 0}.controls{gap:8px}h1{font-size:38px}}@media (width<=720px){.panel{top:auto;left:10px;right:10px;bottom:max(10px, env(safe-area-inset-bottom));border-radius:22px;width:auto;max-height:calc(100dvh - 80px);padding:24px 22px 20px;transform:translateY(calc(100% + 24px))}.panel.is-open{transform:translateY(0)}.panel-toggle{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right))}}@media (prefers-reduced-motion:reduce){.panel,.intro{transition-duration:.01ms}.intro-name span,.intro-caption,.intro-dot{opacity:1;animation:none;transform:none}}
