.route-lock{--route-lock-cell-px: 44px;--route-lock-cols: 6;box-sizing:border-box;position:relative;background:var(--route-lock-bg, #0b1220);border-radius:6px;font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--route-lock-text, #cbd5e1);touch-action:none;user-select:none}.route-lock__grid{position:absolute;box-sizing:border-box;background:var(--route-lock-grid, #111c2e)}.route-lock__cell{position:absolute;margin:0;padding:0;box-sizing:border-box;border:1px solid var(--route-lock-edge, #1e293b);background:transparent;color:inherit;font:inherit;font-size:calc(var(--route-lock-cell-px) * .38);cursor:pointer}.route-lock__num{position:relative;z-index:1;pointer-events:none}.route-lock__cell[data-node][data-on="1"] .route-lock__num{text-shadow:0 0 6px var(--route-lock-alive, #e9af69),0 0 12px var(--route-lock-alive, #e9af69);animation:rl-alive .5s ease-out}@keyframes rl-alive{0%{transform:scale(1.5);filter:brightness(2.4)}to{transform:scale(1);filter:brightness(1)}}.route-lock__spark{position:absolute;inset:0;pointer-events:none;border-radius:50%;box-shadow:0 0 0 3px var(--route-lock-alive, #e9af69),0 0 34px 10px var(--route-lock-alive, #e9af69);animation:rl-flash .36s ease-out forwards}@keyframes rl-flash{0%{opacity:1;transform:scale(.25)}45%{opacity:.85;transform:scale(.85)}to{opacity:0;transform:scale(1.5)}}.route-lock__spark i{position:absolute;left:50%;top:50%;width:14px;height:3.5px;margin:-1.75px 0 0 -7px;border-radius:2px;background:linear-gradient(to right,#ffffff,var(--route-lock-alive, #e9af69));box-shadow:0 0 10px 2px var(--route-lock-alive, #e9af69);animation:rl-ember .7s cubic-bezier(.06,.85,.28,1) forwards}@keyframes rl-ember{0%{transform:rotate(var(--rl-a, 0deg)) translate(0) scaleX(.4);opacity:1}25%{transform:rotate(var(--rl-a, 0deg)) translate(calc(var(--route-lock-cell-px, 44px) * var(--rl-r, 1) * .55)) scaleX(1.25);opacity:1}70%{opacity:.8}to{transform:rotate(var(--rl-a, 0deg)) translate(calc(var(--route-lock-cell-px, 44px) * var(--rl-r, 1))) scaleX(.5);opacity:0}}@media(prefers-reduced-motion:reduce){.route-lock__spark,.route-lock__spark i{animation:none;opacity:0}.route-lock__cell[data-node][data-on="1"] .route-lock__num{animation:none}}.route-lock__cell[data-node]{color:var(--route-lock-node-text, #e2e8f0);font-weight:800}.route-lock__cell[data-node][data-on="1"]{color:var(--route-lock-node-text-on, #052330);text-shadow:0 0 5px var(--route-lock-wire, #3fd0f5),0 0 3px var(--route-lock-wire, #3fd0f5),0 0 2px var(--route-lock-wire, #3fd0f5)}.route-lock__ink{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.rl-bead{animation:rl-run 1.9s linear infinite;animation-delay:var(--rl-age,0s)}@keyframes rl-run{to{stroke-dashoffset:-220}}.rl-trace{animation:rl-trace .45s ease-out forwards}@keyframes rl-trace{to{stroke-dashoffset:0}}.rl-pass{animation:rl-pass var(--rl-secs, .26s) ease-out forwards}@keyframes rl-pass{0%{stroke-dashoffset:var(--rl-len, 200);opacity:.95}65%{stroke-dashoffset:0;opacity:.95}to{stroke-dashoffset:0;opacity:0}}.rl-surge{animation:rl-surge 1.15s ease-in-out infinite;animation-delay:var(--rl-age,0s)}@keyframes rl-surge{0%,to{opacity:.1}50%{opacity:.42}}.rl-field{animation:rl-breathe 1.9s ease-in-out infinite;animation-delay:var(--rl-age,0s)}@keyframes rl-breathe{50%{opacity:.45}}.rl-arc{animation:rl-arc .9s steps(2,end) infinite;animation-delay:var(--rl-age,0s)}@keyframes rl-arc{50%{opacity:.12}}@media(prefers-reduced-motion:reduce){.rl-bead,.rl-field,.rl-arc,.rl-surge{animation:none}.rl-pass{animation:none;opacity:0}.rl-trace{animation:none;stroke-dashoffset:0}}.route-lock__cell[data-head="1"]{box-shadow:inset 0 0 0 2px var(--route-lock-head, #7dd3fc)}.route-lock[data-head-ink="1"] .route-lock__cell[data-head="1"]{box-shadow:none}.rl-short{animation:rl-short .38s steps(1,end) forwards}@keyframes rl-short{0%{opacity:.9}22%{opacity:0}40%{opacity:.9}70%{opacity:0}to{opacity:0}}.route-lock[data-state=stuck] .route-lock__cell[data-node][data-on="1"] .route-lock__num,.route-lock[data-state=zapped] .route-lock__cell[data-node][data-on="1"] .route-lock__num{color:var(--route-lock-reject, #ff5c4d);text-shadow:0 0 6px var(--route-lock-reject, #ff5c4d),0 0 14px var(--route-lock-reject, #ff5c4d);animation:rl-dead .9s ease-in-out infinite}@keyframes rl-dead{0%,to{opacity:1}50%{opacity:.5}}@media(prefers-reduced-motion:reduce){.rl-short{animation:none;opacity:.9}.route-lock[data-state=stuck] .route-lock__cell[data-node][data-on="1"] .route-lock__num,.route-lock[data-state=zapped] .route-lock__cell[data-node][data-on="1"] .route-lock__num{animation:none}}.route-lock__cell[data-reject="1"]{background:var(--route-lock-reject, #7f1d1d)}.route-lock__controls{position:absolute;box-sizing:border-box}.route-lock__note{position:absolute;box-sizing:border-box;overflow:hidden;color:var(--route-lock-reject, #ff5c4d);letter-spacing:1px}.route-lock[data-stuck="1"] .route-lock__note{animation:rl-note .9s ease-out 2}@keyframes rl-note{0%,to{opacity:1}50%{opacity:.25}}@media(prefers-reduced-motion:reduce){.route-lock[data-stuck="1"] .route-lock__note{animation:none}}.route-lock__timer{position:absolute;box-sizing:border-box;display:flex;align-items:center;font-variant-numeric:tabular-nums;color:var(--route-lock-timer, #7dd3fc)}.route-lock__verb{position:absolute;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:6px 10px;text-align:center;border:1px solid var(--route-lock-edge, #1e293b);border-radius:4px;background:var(--route-lock-verb, #16233a);color:inherit;font:inherit;letter-spacing:1px;cursor:pointer}.route-lock__verb[data-off="1"]{opacity:.32;cursor:not-allowed}.route-lock[data-scale=mini]{pointer-events:none}.rlp-scrim{position:absolute;inset:0;z-index:12;backdrop-filter:blur(7px) saturate(.72) brightness(.62);-webkit-backdrop-filter:blur(7px) saturate(.72) brightness(.62);background:#0409126b;animation:rlp-in .18s ease-out both}.rlp-frame{position:absolute;z-index:13;border-radius:14px;border:1px solid var(--rlp-edge, #38bdf8);box-shadow:0 0 0 1px #020812e6,0 0 26px var(--rlp-glow, rgba(56, 189, 248, .34)),0 0 90px 30px #020812bf;pointer-events:none;animation:rlp-in .18s ease-out both}@keyframes rlp-in{0%{opacity:0}to{opacity:1}}.rlp-pill{position:absolute;z-index:13;transform:translate(-50%,-100%);display:flex;align-items:center;gap:14px;padding:12px 14px 13px 20px;border-radius:999px;border:1px solid #38bdf8;background:#081626f5;color:#eaffff;font:700 17px system-ui;letter-spacing:.2px;white-space:nowrap;cursor:pointer;pointer-events:auto;box-shadow:0 0 18px #38bdf84d,0 6px 18px #02060e99;animation:rlp-breathe 2.2s ease-in-out infinite}.rlp-pill:hover,.rlp-pill:focus-visible{background:#0e2f4a;box-shadow:0 0 26px #38bdf880,0 6px 18px #02060e99}.rlp-go{flex:none;padding:7px 14px 8px;border-radius:999px;background:#0a2a33;border:1px solid #38f0ff;color:#38f0ff;font:800 14px system-ui;letter-spacing:1.6px}.rlp-tail{position:absolute;left:50%;bottom:-5px;width:9px;height:9px;transform:translate(-50%) rotate(45deg);background:#081626f5;border-right:1px solid #38bdf8;border-bottom:1px solid #38bdf8}@keyframes rlp-breathe{0%,to{box-shadow:0 0 14px #38bdf838,0 6px 18px #02060e99}50%{box-shadow:0 0 26px #38bdf87a,0 6px 18px #02060e99}}.rlp-leaving{animation:rlp-shrink var(--rlp-out, .42s) cubic-bezier(.55,0,.35,1) forwards;pointer-events:none}@keyframes rlp-shrink{0%{transform:translate(-50%,-50%) scale(1);opacity:1}22%{transform:translate(-50%,-50%) scale(1.015);opacity:1}to{transform:translate(calc(-50% + var(--rlp-to-x, 0px)),calc(-50% + var(--rlp-to-y, 0px))) scale(.05);opacity:0}}@media(prefers-reduced-motion:reduce){.rlp-pill{animation:none}.rlp-leaving{animation:rlp-fade .26s linear forwards}@keyframes rlp-fade{to{opacity:0}}}.rlp-rule{margin:0 0 8px;color:#9fd8ef;font:600 12px/1.45 system-ui;letter-spacing:.6px;text-align:center;max-width:100%}.rlp-rule b{color:#d8f6ff;font-weight:800;letter-spacing:1.6px;display:block;margin-bottom:3px}.rlp-frame .route-lock__verb{border-radius:999px;border:1px solid #38f0ff;background:#0a2a33;color:#38f0ff;font:700 12px system-ui;letter-spacing:.8px}.rlp-frame .route-lock__verb:hover:not([data-off="1"]){background:#10404d;box-shadow:0 0 14px #38f0ff59}.rlp-frame .route-lock__timer{color:#7dd3fc;font:700 13px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:1px}
