.ondulo-beams[data-v-f9bcfd16]{pointer-events:none}.ondulo-beam__halo[data-v-f9bcfd16],.ondulo-beam__seg[data-v-f9bcfd16]{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px}.ondulo-beam__halo[data-v-f9bcfd16]{stroke:var(--game-ondulo-beam-halo);stroke-width:2.6px}.ondulo-beam__seg[data-v-f9bcfd16]{stroke:var(--beam);stroke-width:1.3px}.ondulo-beam__mark[data-v-f9bcfd16]{transform-box:fill-box;transform-origin:50%;animation:ondulo-mark-in-f9bcfd16 .26s var(--ease-bounce) both}.ondulo-beam__mark circle[data-v-f9bcfd16]{fill:var(--color-success);stroke:var(--color-white);stroke-width:.6px}.ondulo-beam__mark path[data-v-f9bcfd16]{fill:none;stroke:var(--color-white);stroke-width:.85px;stroke-linecap:round;stroke-linejoin:round}.ondulo-beam--miss .ondulo-beam__mark circle[data-v-f9bcfd16]{fill:var(--color-error)}.ondulo-beams--success .ondulo-beam__seg[data-v-f9bcfd16]{animation:ondulo-beam-glow-f9bcfd16 .7s var(--ease-out)}.ondulo-beams--failed .ondulo-beam[data-v-f9bcfd16]:not(.ondulo-beam--miss){opacity:.35;transition:opacity .2s var(--ease-default)}.ondulo-beams--failed .ondulo-beam--miss .ondulo-beam__seg[data-v-f9bcfd16]{animation:.52s step-end 2 ondulo-beam-miss-f9bcfd16}@keyframes ondulo-mark-in-f9bcfd16{0%{opacity:0;transform:scale(.2)}}@keyframes ondulo-beam-glow-f9bcfd16{40%{stroke-width:2.6px}}@keyframes ondulo-beam-miss-f9bcfd16{0%,50%{stroke:var(--color-error)}}@media (prefers-reduced-motion:reduce){.ondulo-beam__halo[data-v-f9bcfd16],.ondulo-beam__seg[data-v-f9bcfd16]{stroke-dashoffset:0}.ondulo-beam__mark[data-v-f9bcfd16],.ondulo-beams--failed .ondulo-beam--miss .ondulo-beam__seg[data-v-f9bcfd16],.ondulo-beams--success .ondulo-beam__seg[data-v-f9bcfd16]{animation:none}}[data-fx-wave=tint][data-v-759b630a]{animation:fx-wave-tint-759b630a .5s var(--ease-default) var(--fx-wave-delay,0s)}[data-fx-wave=hop][data-v-759b630a]{animation:fx-wave-hop-759b630a var(--fx-hop-duration) var(--ease-bounce) var(--fx-wave-delay,0s)}[data-fx-wave=pulse][data-v-759b630a]{transform-box:fill-box;transform-origin:50%;animation:fx-wave-pulse-759b630a var(--fx-bump-duration) var(--ease-bounce) var(--fx-wave-delay,0s)}[data-fx=pop][data-v-759b630a]{animation:fx-pop-759b630a var(--fx-pop-duration) ease}[data-fx=bump][data-v-759b630a]{animation:fx-bump-759b630a var(--fx-bump-duration) var(--ease-bounce)}[data-fx=shake][data-v-759b630a]{animation:fx-shake-759b630a var(--fx-shake-duration) ease}[data-fx=flash][data-v-759b630a]{animation:fx-flash-759b630a var(--duration-pulse) var(--ease-default)}[data-fx=glint][data-v-759b630a]{position:relative;overflow:hidden}[data-fx=glint][data-v-759b630a]:after{content:"";pointer-events:none;background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--color-surface) var(--tint-line),transparent) 50%,transparent 70%);animation:fx-glint-759b630a var(--fx-glint-duration) ease-out both;position:absolute;inset:0}@keyframes fx-wave-tint-759b630a{35%{background:color-mix(in srgb,var(--accent) var(--tint-fill-strong),var(--color-surface))}}@keyframes fx-wave-hop-759b630a{40%{transform:translateY(-5px)scale(1.06)}70%{transform:translateY(1px)scale(.99)}}@keyframes fx-wave-pulse-759b630a{40%{transform:scale(1.14)}}@keyframes fx-pop-759b630a{0%{transform:scale(.86)}60%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes fx-bump-759b630a{40%{transform:scale(1.18)}}@keyframes fx-shake-759b630a{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-3px)}40%,60%{transform:translate(3px)}}@keyframes fx-flash-759b630a{20%,70%{background:color-mix(in srgb,var(--accent) var(--tint-fill-strong),var(--color-surface))}}@keyframes fx-glint-759b630a{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){[data-fx-wave][data-v-759b630a],[data-fx][data-v-759b630a]{animation:none}[data-fx=glint][data-v-759b630a]:after{content:none}}.ondulo-board[data-v-759b630a]{aspect-ratio:1;-webkit-user-select:none;user-select:none;touch-action:none;width:min(100%,52vh,440px);margin:0 auto}.ondulo-board--readonly[data-v-759b630a]{pointer-events:none}.ondulo-board__svg[data-v-759b630a]{width:100%;height:100%;display:block;overflow:visible}.ondulo-board__field[data-v-759b630a]{fill:var(--game-ondulo-field);stroke:var(--game-ondulo-field-border);stroke-width:.8px;transition:stroke var(--duration-fast) var(--ease-default)}.ondulo-board--placing .ondulo-board__field[data-v-759b630a]{stroke:var(--game-ondulo-primary);cursor:crosshair}.ondulo-board--noting .ondulo-board__field[data-v-759b630a]{fill:color-mix(in srgb,var(--game-ondulo-primary) 10%,var(--game-ondulo-field));stroke:var(--game-ondulo-primary);stroke-dasharray:2 1.4;cursor:cell}.ondulo-board__lines line[data-v-759b630a]{stroke:var(--game-ondulo-field-line);stroke-width:.35px;pointer-events:none}.ondulo-board__notes[data-v-759b630a]{pointer-events:none}.ondulo-board__note-empty[data-v-759b630a]{fill:none;stroke:color-mix(in srgb,var(--color-text) 45%,transparent);stroke-width:.7px;stroke-linecap:round}.ondulo-board__note-lead[data-v-759b630a]{fill:var(--game-ondulo-port)}.ondulo-board__note-empty[data-v-759b630a],.ondulo-board__note-lead[data-v-759b630a]{transform-box:fill-box;transform-origin:50%;animation:ondulo-note-in-759b630a .16s var(--ease-bounce) both}.ondulo-board__module[data-v-759b630a]{fill:color-mix(in srgb,var(--module) 62%,transparent);stroke:color-mix(in oklab,var(--module) 65%,var(--game-ondulo-module-edge));stroke-width:.7px;stroke-linejoin:round;cursor:grab;transition:fill var(--duration-fast) var(--ease-default),stroke var(--duration-fast) var(--ease-default);animation:ondulo-module-in-759b630a .22s var(--ease-bounce) both;transform-box:fill-box;transform-origin:50%;outline:none}.ondulo-board__module--selected[data-v-759b630a],.ondulo-board__module[data-v-759b630a]:focus-visible{stroke:var(--game-ondulo-select);stroke-width:1px;stroke-dasharray:2 1.2;filter:drop-shadow(0 0 1.6px var(--module))}.ondulo-board__module--lifted[data-v-759b630a]{opacity:.22;cursor:grabbing}.ondulo-board__module--clash[data-v-759b630a]{stroke:var(--color-error);stroke-width:1.1px;stroke-dasharray:none}.ondulo-board--readonly .ondulo-board__module[data-v-759b630a]{animation:none}.ondulo-board__preview[data-v-759b630a]{fill:color-mix(in srgb,var(--module) 28%,transparent);stroke:var(--module);stroke-width:.8px;stroke-dasharray:1.6 1.1;stroke-linejoin:round;pointer-events:none;animation:ondulo-preview-in-759b630a .12s var(--ease-out) both;transform-box:fill-box;transform-origin:50%}.ondulo-board__preview--clash[data-v-759b630a]{stroke:var(--color-error);fill:color-mix(in srgb,var(--color-error) 18%,transparent)}.ondulo-board__solution-shape[data-v-759b630a]{fill:none;stroke:var(--module);stroke-width:.9px;stroke-dasharray:1.6 1.2;stroke-linejoin:round;filter:drop-shadow(0 0 1.2px var(--module));animation:ondulo-solution-in-759b630a .5s var(--ease-default) both}.ondulo-board__port[data-v-759b630a]{cursor:pointer;transition:opacity var(--duration-fast) var(--ease-default);outline:none}.ondulo-board--dimmed .ondulo-board__port[data-v-759b630a]:not(.ondulo-board__port--lit){opacity:.45}.ondulo-board--replaying .ondulo-board__port[data-v-759b630a]{opacity:.35}.ondulo-board--success .ondulo-board__port[data-v-759b630a]{opacity:1}.ondulo-board__port:focus-visible .ondulo-board__port-dot[data-v-759b630a]{stroke:var(--game-ondulo-primary);stroke-width:1px}.ondulo-board__port-hit[data-v-759b630a]{fill:#0000}.ondulo-board__port-dot[data-v-759b630a]{fill:var(--color-surface);stroke:var(--game-ondulo-port);stroke-width:.6px;transition:fill var(--duration-fast) var(--ease-default),stroke var(--duration-fast) var(--ease-default),transform var(--duration-fast) var(--ease-out);transform-box:fill-box;transform-origin:50%}.ondulo-board__port:hover:not(.ondulo-board__port--known) .ondulo-board__port-dot[data-v-759b630a]{fill:color-mix(in srgb,var(--game-ondulo-primary) 14%,var(--color-surface))}.ondulo-board__port--known .ondulo-board__port-dot[data-v-759b630a]{fill:var(--beam);stroke:var(--game-ondulo-swatch-ring)}.ondulo-board__port--selected .ondulo-board__port-dot[data-v-759b630a]{fill:var(--game-ondulo-primary);stroke:var(--game-ondulo-primary);animation:.9s ease-in-out infinite ondulo-port-armed-759b630a}.ondulo-board__port--lit .ondulo-board__port-dot[data-v-759b630a]{stroke:var(--color-text);stroke-width:.9px;transform:scale(1.18)}.ondulo-board__port--charging .ondulo-board__port-dot[data-v-759b630a]{animation:ondulo-port-charge-759b630a .5s var(--ease-out) both}.ondulo-board__port--emit .ondulo-board__port-dot[data-v-759b630a]{animation:ondulo-port-emit-759b630a .4s var(--ease-bounce) both}.ondulo-board__port--arrive .ondulo-board__port-dot[data-v-759b630a],.ondulo-board__port--arrive .ondulo-board__port-num[data-v-759b630a]{animation:ondulo-port-arrive-759b630a .42s var(--ease-bounce) .5s both}.ondulo-board__arrive[data-v-759b630a],.ondulo-board__port--arrive .ondulo-board__port-num[data-v-759b630a],.ondulo-board__ripple[data-v-759b630a]{transform-box:fill-box;transform-origin:50%}.ondulo-board__port-arrow[data-v-759b630a]{fill:none;stroke:var(--game-ondulo-port);stroke-width:.75px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.ondulo-board__port--selected .ondulo-board__port-arrow[data-v-759b630a]{stroke:var(--game-ondulo-fg)}.ondulo-board__port-num[data-v-759b630a]{font-family:var(--font-mono);font-size:3.6px;font-weight:var(--weight-bold);fill:var(--color-text);paint-order:stroke;stroke:var(--color-surface);stroke-width:.9px;pointer-events:none}.ondulo-board__pulse[data-v-759b630a]{pointer-events:none}.ondulo-board__sweep[data-v-759b630a]{animation:.55s cubic-bezier(.45,0,.25,1) 80ms both ondulo-sweep-759b630a}.ondulo-board__sweep-edge[data-v-759b630a]{stop-color:var(--game-ondulo-primary);stop-opacity:0}.ondulo-board__sweep-core[data-v-759b630a]{stop-color:var(--game-ondulo-primary);stop-opacity:.34}.ondulo-board__ripple[data-v-759b630a]{stroke:var(--game-ondulo-primary);stroke-width:.7px;animation:ondulo-ripple-759b630a .42s var(--ease-out) both}.ondulo-board__arrive[data-v-759b630a],.ondulo-board__ripple[data-v-759b630a]{fill:none}.ondulo-board__arrive[data-v-759b630a]{stroke:var(--beam);stroke-width:1.2px;animation:ondulo-arrive-759b630a .4s var(--ease-out) .5s both}.ondulo-board__spark[data-v-759b630a]{fill:var(--beam);stroke:var(--game-ondulo-swatch-ring);stroke-width:.25px;animation:ondulo-spark-759b630a .42s var(--ease-out) .52s both}@keyframes ondulo-sweep-759b630a{0%{opacity:0;transform:translate(0)}20%{opacity:1}85%{opacity:1}to{opacity:0;transform:translate(var(--tx),var(--ty))}}@keyframes ondulo-ripple-759b630a{0%{opacity:.9;transform:translate(0)scale(.6)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1.5)}}@keyframes ondulo-arrive-759b630a{0%{opacity:0;transform:scale(.4)}40%{opacity:1}to{opacity:0;transform:scale(2)}}@keyframes ondulo-spark-759b630a{0%{opacity:0;transform:translate(0)}25%{opacity:1}to{opacity:0;transform:translate(var(--sx),var(--sy))}}@keyframes ondulo-port-charge-759b630a{60%{transform:scale(.82)}to{transform:scale(.9)}}@keyframes ondulo-port-emit-759b630a{0%{transform:scale(.9)}45%{transform:scale(1.35)}}@keyframes ondulo-port-arrive-759b630a{0%{opacity:0;transform:scale(0)}1%{opacity:1}}@keyframes ondulo-port-armed-759b630a{50%{transform:scale(1.15)}}@keyframes ondulo-module-in-759b630a{0%{opacity:.4;transform:scale(.85)}}@keyframes ondulo-preview-in-759b630a{0%{opacity:.3;transform:scale(.94)}}@keyframes ondulo-solution-in-759b630a{0%{opacity:0}}@keyframes ondulo-note-in-759b630a{0%{opacity:0;transform:scale(.4)}}@media (prefers-reduced-motion:reduce){.ondulo-board__note-empty[data-v-759b630a],.ondulo-board__note-lead[data-v-759b630a]{animation:none}.ondulo-board__module[data-v-759b630a],.ondulo-board__port-dot[data-v-759b630a],.ondulo-board__port-num[data-v-759b630a],.ondulo-board__preview[data-v-759b630a],.ondulo-board__ripple[data-v-759b630a],.ondulo-board__solution-shape[data-v-759b630a],.ondulo-board__spark[data-v-759b630a],.ondulo-board__sweep[data-v-759b630a]{animation:none!important}.ondulo-board__ripple[data-v-759b630a],.ondulo-board__spark[data-v-759b630a],.ondulo-board__sweep[data-v-759b630a]{opacity:0}.ondulo-board__arrive[data-v-759b630a]{animation:none;transform:scale(1.4)}}
