/* Typing wordmark "ruvo". Font family lives behind one variable. Fonts are loaded via @import ...&display=swap in habitat.css / app-theme.css */
:root{--wordmark-font:Manrope,sans-serif}
.wordmark{position:relative;display:inline-flex;font-family:var(--wordmark-font);font-weight:700;text-transform:lowercase;letter-spacing:-.04em;line-height:1;white-space:nowrap}
.wordmark .wm-l{display:inline-block}
.wm-js .wordmark .wm-l{opacity:0;transform:translateY(2px)}
.wm-js .wordmark .wm-l.on{opacity:1;transform:none;transition:opacity 200ms ease-out,transform 260ms cubic-bezier(.22,1,.36,1)}
.wordmark .wm-cursor{position:absolute;transition:transform 120ms ease-out,opacity 400ms ease;left:0;top:50%;width:2px;height:.74em;margin-top:-.42em;background:currentColor;opacity:0;pointer-events:none;will-change:transform}
.wordmark.typing .wm-cursor{opacity:1}
.wordmark.blinking .wm-cursor{opacity:1;animation:wm-blink 530ms steps(1,end) 2}.wordmark.fading .wm-cursor{opacity:0;transition:opacity 400ms ease}
@keyframes wm-blink{0%{opacity:1}50%{opacity:0}}
.wm-static .wordmark .wm-l{opacity:1!important;transform:none!important;transition:none!important}.wm-static .wordmark .wm-cursor{display:none}
@media(prefers-reduced-motion:reduce){.wordmark .wm-l{opacity:1!important;transform:none!important;transition:none!important}.wordmark .wm-cursor{display:none!important}}
/* Rev 11: halftone-dot seed mark (inline SVG circles, fill currentColor). Square box -> no layout shift; bottom of mark sits on the wordmark baseline. */
.logo,.brand{align-items:baseline!important;gap:9px!important}
svg.ruvo-mark{display:block;flex:none;height:32px;width:32px;aspect-ratio:1/1;overflow:visible;fill:currentColor!important;stroke:none!important}
.logo svg.ruvo-mark{color:inherit}
.sidebar .brand,.sidebar .brand svg.ruvo-mark{color:#F5F5F2}
.logo svg.ruvo-mark,.brand svg.ruvo-mark{height:32px;width:32px}
@media(max-width:650px){.logo svg.ruvo-mark,.brand svg.ruvo-mark,svg.ruvo-mark{height:28px;width:28px}}
