/* gummy rail: scroll progress made of floating gummies */
.gr{position:fixed;right:clamp(8px,1.4vw,22px);top:50%;transform:translateY(-50%);z-index:60;display:flex;flex-direction:column;align-items:center;gap:14px;pointer-events:none}
.gr-track{position:relative;height:min(52vh,460px);width:30px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;pointer-events:auto;cursor:ns-resize;touch-action:none}
.gr-thread{position:absolute;left:50%;top:6px;bottom:6px;width:2px;margin-left:-1px;border-radius:2px;background:rgba(31,26,21,.12)}
.gr-fill{position:absolute;left:50%;top:6px;bottom:6px;width:2px;margin-left:-1px;border-radius:2px;background:linear-gradient(#F5A54A,#E9751C 60%,#B8402A);transform-origin:top;transform:scaleY(0);transition:transform .25s linear}
.gr-g{all:unset;position:relative;z-index:1;width:16px;height:14px;cursor:pointer;display:grid;place-items:center;animation:grbob 3.2s ease-in-out infinite;animation-delay:calc(var(--d) * -1)}
.gr-g span{display:block;width:100%;height:100%;border-radius:38% 38% 44% 44% / 44% 44% 50% 50%;background:rgba(255,255,255,.55);border:1.5px solid rgba(31,26,21,.18);box-shadow:inset 0 -2px 3px rgba(31,26,21,.06);transition:background .45s,border-color .45s,transform .5s cubic-bezier(.34,1.56,.64,1),box-shadow .45s;transform:rotate(calc(var(--i) * 23deg)) scale(.86)}
.gr-g.on span{border-color:transparent;background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.85) 0 9%,transparent 10%),radial-gradient(circle at 50% 55%,color-mix(in srgb,var(--c) 70%,#fff) 0%,var(--c) 58%,color-mix(in srgb,var(--c) 75%,#000) 100%);box-shadow:0 3px 8px -2px color-mix(in srgb,var(--c) 60%,transparent),inset 0 -2px 3px rgba(0,0,0,.12);transform:rotate(calc(var(--i) * 23deg)) scale(1)}
.gr-g.cur span{transform:rotate(calc(var(--i) * 23deg + 12deg)) scale(1.45);box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 25%,transparent),0 6px 14px -3px color-mix(in srgb,var(--c) 70%,transparent),inset 0 -2px 3px rgba(0,0,0,.12)}
.gr-g:hover span{transform:rotate(calc(var(--i) * 23deg)) scale(1.3)}
.gr-g:focus-visible{outline:2px solid var(--accent,#B8402A);outline-offset:3px;border-radius:6px}
@keyframes grbob{0%,100%{translate:0 0}50%{translate:2px -3px}}
.gr-pct{position:absolute;right:30px;top:0;transform:translateY(-50%);font-family:var(--mono,ui-monospace),monospace;font-size:10px;letter-spacing:.1em;color:rgba(31,26,21,.65);background:rgba(255,252,246,.85);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(31,26,21,.08);padding:3px 7px;border-radius:999px;opacity:0;transition:opacity .3s,top .25s linear;pointer-events:none;white-space:nowrap}
.gr:hover .gr-pct,.gr.auto .gr-pct{opacity:1}
.gr-auto{all:unset;pointer-events:auto;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-family:var(--mono,ui-monospace),monospace;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:rgba(31,26,21,.7)}
.gr-auto svg{width:30px;height:30px;padding:8px;box-sizing:border-box;border-radius:50%;background:rgba(255,252,246,.9);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(31,26,21,.12);fill:#1F1A15;box-shadow:0 6px 16px -8px rgba(31,26,21,.35);transition:transform .3s,background .3s}
.gr-auto:hover svg{transform:scale(1.08)}
.gr-auto:focus-visible svg{outline:2px solid var(--accent,#B8402A);outline-offset:2px}
.gr-auto .pa{display:none}.gr-auto.run .pa{display:block}.gr-auto.run .pl{display:none}
.gr-auto.run svg{background:#1F1A15;fill:#FFF8EF;animation:grpulse 2s ease-in-out infinite}
@keyframes grpulse{0%,100%{box-shadow:0 0 0 0 rgba(240,138,43,.45)}50%{box-shadow:0 0 0 7px rgba(240,138,43,0)}}
/* on dark stages the rail stays legible */
.gr-thread{box-shadow:0 0 0 1px rgba(255,255,255,.35)}
@media (max-width:700px){
  .gr{right:1px;top:46%;gap:0}
  .gr-track{height:34vh;width:12px;opacity:.75}
  .gr-g{width:8px;height:7px}
  .gr-g.cur span{transform:rotate(calc(var(--i) * 23deg)) scale(1.35)}
  .gr-pct{display:none}
  .gr-auto{position:fixed;left:10px;bottom:calc(14px + env(safe-area-inset-bottom,0px));flex-direction:row;gap:6px;background:rgba(255,252,246,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(31,26,21,.12);border-radius:999px;padding:4px 10px 4px 4px;box-shadow:0 8px 20px -10px rgba(31,26,21,.4)}
  .gr-auto svg{width:28px;height:28px;padding:7px;box-shadow:none;border:0}
}
@media (prefers-reduced-motion:reduce){.gr-g{animation:none}.gr-fill{transition:none}.gr-auto.run svg{animation:none}}
@media print{.gr{display:none}}
