.gl-ruler{--gl-glass:color-mix(in srgb, var(--color-canvas) 72%, transparent);top:calc(var(--spacing-nav) + 12px);width:40px;height:calc(100svh - var(--spacing-nav) - 112px);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;flex-direction:column;justify-content:center;padding-block:8px;display:flex}.gl-ruler:before{content:"";border-radius:var(--radius-full);background:var(--gl-glass);box-shadow:var(--shadow-ring);-webkit-backdrop-filter:blur(14px)saturate(1.6);backdrop-filter:blur(14px)saturate(1.6);opacity:0;transition:opacity var(--duration-fast) var(--ease-out);position:absolute;inset:0 4px 0 6px}.gl-ruler[data-dragging]:before{opacity:1}.gl-ruler-slot{--wave:0;--tick:8px;max-height:36px;color:var(--color-ink-muted);flex:1 1 0;justify-content:flex-end;align-items:center;gap:4px;padding-right:10px;text-decoration:none;display:flex;position:relative}.gl-ruler-slot:after{content:"";width:calc(var(--tick) + var(--wave) * 8px);height:2px;transition:width var(--duration-fast) var(--ease-out);background:currentColor;border-radius:1px;flex:none}.gl-ruler-slot[data-current]{--tick:16px;color:var(--color-ink)}.gl-ruler-letter{font-family:var(--font-mono);opacity:0;font-size:10px;font-weight:600;line-height:1}.gl-ruler-slot[data-current] .gl-ruler-letter{opacity:1}.gl-ruler[data-dragging] .gl-ruler-slot:after{transition:none}.gl-ruler-bubble{border-radius:var(--radius-full);background:var(--gl-glass);width:52px;height:52px;box-shadow:var(--shadow-float);-webkit-backdrop-filter:blur(16px)saturate(1.8);backdrop-filter:blur(16px)saturate(1.8);color:var(--color-ink);font-family:var(--font-mono);opacity:0;scale:.8;translate:0 calc(var(--bubble-y,0px) - 26px);transition:opacity var(--duration-fast) var(--ease-out), scale var(--duration-fast) var(--ease-out), translate 90ms var(--ease-out);pointer-events:none;place-items:center;font-size:22px;font-weight:500;display:grid;position:absolute;top:0;right:calc(100% + 8px)}.gl-ruler[data-dragging] .gl-ruler-bubble{opacity:1;scale:1}@media (prefers-reduced-motion:reduce){.gl-ruler:before,.gl-ruler-slot:after,.gl-ruler-bubble{transition:none}}
