/* Fonts: self-hosted (SIL Open Font License, via Fontsource) */
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:200 900;font-display:swap;src:url(fonts/source-serif-4-latin-opsz-normal.woff2) format('woff2-variations'),url(fonts/source-serif-4-latin-opsz-normal.woff2) format('woff2')}
@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:200 900;font-display:swap;src:url(fonts/source-serif-4-latin-opsz-italic.woff2) format('woff2-variations'),url(fonts/source-serif-4-latin-opsz-italic.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/ibm-plex-sans-latin-300-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-sans-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibm-plex-sans-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format('woff2')}

*{box-sizing:border-box}
html{font-optical-sizing:auto}
body{margin:0;background:#0a1220;-webkit-font-smoothing:antialiased}
html{scroll-behavior:smooth}
a{color:#6f94ff}a:hover{color:#a9c0ff}
::selection{background:#3b6cf6;color:#fff}
@keyframes rvUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes rvIn{from{opacity:0}to{opacity:1}}
@keyframes rvBlink{50%{opacity:0}}
@keyframes rvSpin{to{transform:rotate(360deg)}}
@keyframes rvPulse{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}
@keyframes rvTape{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes rvPacket{0%{left:0;opacity:0}8%{opacity:1}92%{opacity:1}100%{left:100%;opacity:0}}
@keyframes rvGlow{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes rvProgress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.rv-up{opacity:0;animation:rvUp .9s cubic-bezier(.2,.7,.2,1) forwards}
.rv-in{opacity:0;animation:rvIn .6s ease-out forwards}
.rv-caret{display:inline-block;width:9px;height:1.1em;background:#6f94ff;vertical-align:-3px;margin-left:2px;animation:rvBlink 1s step-end infinite}
.rv-spin{animation:rvSpin .8s linear infinite}
.rv-pulse{animation:rvPulse 1.4s ease-in-out infinite}
.rv-tape{display:flex;width:max-content;animation:rvTape 60s linear infinite}
.rv-tape:hover{animation-play-state:paused}
.rv-packet{position:absolute;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:#6f94ff;box-shadow:0 0 14px #6f94ff;animation:rvPacket 3.2s linear infinite}
.rv-glow{animation:rvGlow 3s ease-in-out infinite}
.rv-line{transition:stroke-dashoffset .12s linear}
.rv-move{transition:cx .12s linear,cy .12s linear}
.rv-w{transition:width .15s linear}
.rv-row{transition:background .3s ease,padding .3s ease}
.rv-row:hover{background:#f4f5f7;padding-left:20px !important}
.rv-row:hover .rv-arrow{transform:translateX(6px)}
.rv-arrow{transition:transform .3s ease}
.rv-tile{transition:border-color .25s ease,transform .25s ease}
.rv-tile:hover{border-color:#3b6cf6 !important;transform:translateY(-3px)}
.rv-btn{transition:background .2s ease,color .2s ease,transform .2s ease}
.rv-btn:hover{transform:translateY(-1px)}
.rv-ul{background-image:linear-gradient(currentColor,currentColor);background-size:0 1px;background-repeat:no-repeat;background-position:0 100%;transition:background-size .3s ease}
.rv-ul:hover{background-size:100% 1px}
input[type=range]{accent-color:#6f94ff;width:100%;height:28px}
.rv-progress{position:fixed;top:0;left:0;right:0;height:2px;background:#3b6cf6;transform-origin:0 50%;transform:scaleX(0);z-index:50}
.rv-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
@supports (animation-timeline: scroll()){
.rv-progress{animation:rvProgress linear both;animation-timeline:scroll(root)}
.rv-reveal{animation:rvUp linear both;animation-timeline:view();animation-range:entry 0% cover 25%}
}
@media (max-width:700px){
.rv-nav{display:none !important}
.rv-hide-sm{display:none !important}
}
@media (prefers-reduced-motion: reduce){
.rv-up,.rv-in,.rv-reveal{animation:none !important;opacity:1 !important;transform:none !important}
.rv-tape,.rv-packet,.rv-glow,.rv-pulse,.rv-spin{animation:none !important}
}
.rv-dots{background-image:radial-gradient(rgba(255,255,255,0.045) 1px,transparent 1px);background-size:18px 18px}
@keyframes rvPop{0%{opacity:0;transform:translateY(4px) scale(.6)}100%{opacity:1;transform:none}}
.rv-pop{display:inline-block;animation:rvPop .35s cubic-bezier(.2,.8,.2,1.3) both}
.rv-kv{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.rv-kv>span:last-child{text-align:right}
@media (max-width:700px){
.rv-kv{flex-direction:column;align-items:flex-start;gap:2px}
.rv-kv>span:last-child{text-align:left}
.rv-pad{padding:24px 16px !important}
}
