/* CIPHR nav: the bar is the helmet visor slit. Loaded last, scoped to .cvisor.
   Static texture moves by transform only, stepped; paused when the tab is hidden, frozen under reduced motion. */
.cvisor{--cv-step:6px;--cv-frame:color-mix(in srgb,var(--glow,#8EE303) 42%,#141A12);--cv-slit:#0C100E;--cv-lime:var(--glow,#8EE303);--cv-mono:var(--font-mono,ui-monospace,"Cascadia Mono",Consolas,monospace);
 --cv-clip:polygon(calc(var(--cv-step)*2) 0,calc(100% - var(--cv-step)*2) 0,calc(100% - var(--cv-step)*2) var(--cv-step),calc(100% - var(--cv-step)) var(--cv-step),calc(100% - var(--cv-step)) calc(var(--cv-step)*2),100% calc(var(--cv-step)*2),100% calc(100% - var(--cv-step)*2),calc(100% - var(--cv-step)) calc(100% - var(--cv-step)*2),calc(100% - var(--cv-step)) calc(100% - var(--cv-step)),calc(100% - var(--cv-step)*2) calc(100% - var(--cv-step)),calc(100% - var(--cv-step)*2) 100%,calc(var(--cv-step)*2) 100%,calc(var(--cv-step)*2) calc(100% - var(--cv-step)),var(--cv-step) calc(100% - var(--cv-step)),var(--cv-step) calc(100% - var(--cv-step)*2),0 calc(100% - var(--cv-step)*2),0 calc(var(--cv-step)*2),var(--cv-step) calc(var(--cv-step)*2),var(--cv-step) var(--cv-step),calc(var(--cv-step)*2) var(--cv-step));
 --cv-key:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 7 9' shape-rendering='crispEdges'%3E%3Cpath fill='%238EE303' d='M2 0h3v1h1v3h-1v1h-1v1h1v3h-3v-3h1v-1h-1v-1h-1v-3h1z'/%3E%3C/svg%3E");
 backdrop-filter:none;-webkit-backdrop-filter:none;filter:none;transform:none}
.cvisor .cv-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* the slit */
.cvisor .cv-bar{position:relative;isolation:isolate;min-height:64px;padding:8px 20px;gap:16px;background:transparent!important;border:0;border-radius:0;box-shadow:none;transition:padding 260ms var(--ease-out-expo,cubic-bezier(.16,1,.3,1))}
.cvisor .cv-visor{position:absolute;inset:0;z-index:-1;display:block;overflow:hidden;background:var(--cv-frame);clip-path:var(--cv-clip);pointer-events:none;filter:drop-shadow(0 10px 24px rgba(0,0,0,.45))}
.cvisor .cv-visor::before{content:"";position:absolute;inset:2px;background:var(--cv-slit);clip-path:var(--cv-clip)}
.cvisor .cv-visor::after{content:"";position:absolute;inset:-24px 0 -24px -96px;background-image:var(--cv-noise,none);background-size:192px 48px;image-rendering:pixelated;opacity:.13;clip-path:none;animation:cv-static 900ms steps(6,end) infinite;will-change:transform}
.cvisor.cv-hold .cv-visor::after,.cvisor .cv-term:not(.is-open) .cv-visor::after{animation-play-state:paused}
@keyframes cv-static{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(96px,24px,0)}}
/* one pass of the scanline on load */
.cvisor .cv-scan{position:absolute;inset:1px 0;width:100%;border-left:2px solid var(--cv-lime);box-shadow:-8px 0 16px -6px var(--cv-lime);opacity:0;transform:translateX(-4px);animation:cv-scan 1400ms var(--ease-out-expo,cubic-bezier(.16,1,.3,1)) 250ms 1 both}
@keyframes cv-scan{0%{opacity:.9;transform:translateX(-4px)}85%{opacity:.7}100%{opacity:0;transform:translateX(100%)}}
.cvisor.is-tight .cv-bar,.cvisor.cv-tight .cv-bar{padding-block:2px;min-height:52px}
.cvisor.is-tight .cv-visor,.cvisor.cv-tight .cv-visor{--cv-step:4px}

/* site nav resets the shared pill */
.site-nav.cvisor .page-progress{inset:auto 14px 1px;height:2px;clip-path:none;border-radius:0;overflow:hidden}
.site-nav.cvisor .page-progress span{height:2px;background:var(--cv-lime)}
.site-nav.cvisor .nav-wordmark span:last-child{font-family:var(--cv-mono);font-weight:700;font-size:20px;letter-spacing:.14em}
.site-nav.cvisor .nav-wordmark .brand-ground{border-radius:4px}
.site-nav.cvisor .cv-readout{display:none;padding:0 0 0 12px;border:0;border-left:1px solid var(--line);border-radius:0;background:none;color:var(--ink-soft);font:400 12px/1 var(--cv-mono);letter-spacing:.04em}
.site-nav.cvisor .cv-readout::before{content:"[";color:var(--accent-deep)}.site-nav.cvisor .cv-readout::after{content:"]";color:var(--accent-deep)}

/* links in the terminal voice */
.cvisor .cv-bar .cv-links{gap:2px;margin:0;padding:0;background:none;box-shadow:none;list-style:none}
.cvisor .cv-bar .cv-links li{display:flex;align-items:center;margin:0}
.cvisor .cv-bar .cv-links a{position:relative;display:inline-flex;align-items:center;gap:0;min-height:44px;padding:8px 10px;border-radius:0;background:transparent!important;color:var(--ink);font:400 14px/1.2 var(--cv-mono);letter-spacing:0;text-transform:lowercase;text-decoration:none;white-space:nowrap}
.cvisor .cv-bar .cv-links a::before{content:"./";color:var(--accent-deep)}
.cvisor .cv-bar .cv-links a::after{content:"";display:block;position:absolute;left:50%;bottom:-3px;width:7px;height:9px;margin-left:-3px;background:var(--cv-key) center/7px 9px no-repeat;opacity:0;transform:translateY(3px);transition:opacity 160ms ease,transform 160ms ease}
.cvisor .cv-bar .cv-links a:hover::after{opacity:.45;transform:none}
.cvisor .cv-bar .cv-links a[aria-current]::after{opacity:1;transform:none}
.cvisor .cv-bar .cv-links a[aria-current]{color:var(--ink)}
.cvisor .cv-bar .cv-links a:focus-visible{outline:2px solid var(--cv-lime);outline-offset:-2px}
html.lang-zh .cvisor .cv-bar .cv-links a{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",var(--cv-mono)}
html.lang-zh .cvisor .cv-bar .cv-links a::before{font-family:var(--cv-mono)}

/* right side: language and wallet */
.cvisor .cv-bar .lang-switch{border-radius:0;border-color:var(--line);background:transparent;clip-path:polygon(4px 0,calc(100% - 4px) 0,calc(100% - 4px) 4px,100% 4px,100% calc(100% - 4px),calc(100% - 4px) calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,4px calc(100% - 4px),0 calc(100% - 4px),0 4px,4px 4px)}
.cvisor .cv-bar .lang-switch button{border-radius:0;font-family:var(--cv-mono);font-size:13px}
.cvisor .cv-bar .lang-switch button[lang="zh-Hans"]{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",var(--cv-mono)}
.cvisor .cv-connect,.site-nav.cvisor .nav-connect.cv-connect{display:inline-flex;align-items:center;justify-content:center;min-height:44px;height:44px;padding:0 16px!important;border:0;border-radius:0;background:var(--ink);color:var(--ground);font:500 14px/1.2 var(--cv-mono)!important;letter-spacing:0;text-decoration:none;white-space:nowrap;border-radius:0!important;clip-path:polygon(6px 0,calc(100% - 6px) 0,calc(100% - 6px) 6px,100% 6px,100% calc(100% - 6px),calc(100% - 6px) calc(100% - 6px),calc(100% - 6px) 100%,6px 100%,6px calc(100% - 6px),0 calc(100% - 6px),0 6px,6px 6px);transition:background-color 160ms ease}
.cvisor .cv-connect:hover,.site-nav.cvisor .nav-connect.cv-connect:hover{background:var(--cv-lime);color:var(--ground);text-decoration:none}
.cvisor .cv-connect:focus-visible{outline:2px solid var(--cv-lime);outline-offset:3px;clip-path:none}
.site-nav.cvisor .nav-connect.cv-connect{width:auto;min-width:160px}
html.lang-zh .cvisor .cv-connect{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",var(--cv-mono)!important}

/* keyhole menu button */
.cvisor .cv-keybtn{display:none;place-items:center;flex:none;width:44px;height:44px;min-height:44px;margin:0 0 0 auto;padding:0;border:1px solid var(--cv-frame);border-radius:0;background:var(--cv-slit);color:var(--cv-lime);cursor:pointer;clip-path:polygon(4px 0,calc(100% - 4px) 0,calc(100% - 4px) 4px,100% 4px,100% calc(100% - 4px),calc(100% - 4px) calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,4px calc(100% - 4px),0 calc(100% - 4px),0 4px,4px 4px)}
.cvisor .cv-key{display:block;width:14px;height:18px;background:var(--cv-key) center/14px 18px no-repeat;transition:transform 220ms var(--ease-out-expo,cubic-bezier(.16,1,.3,1))}
.cvisor .cv-keybtn[aria-expanded="true"] .cv-key{transform:rotate(90deg)}
.cvisor .cv-keybtn:hover{border-color:var(--cv-lime)}
.cvisor .cv-keybtn:focus-visible{outline:2px solid var(--cv-lime);outline-offset:2px;clip-path:none}

/* full screen terminal menu */
.cvisor .cv-term{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;gap:24px;max-width:none;max-height:none;margin:0;padding:24px 24px calc(32px + env(safe-area-inset-bottom));overflow-y:auto;background:var(--cv-slit);border:0;border-radius:0;box-shadow:none;font-family:var(--cv-mono)}
.cvisor .cv-term[hidden]{display:none}
.cvisor .cv-term .cv-visor{position:fixed;clip-path:none;filter:none;background:var(--cv-slit)}
.cvisor .cv-term .cv-visor::before{display:none}
.cvisor .cv-term .cv-visor::after{opacity:.12}
.cvisor .cv-term-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.cvisor .cv-prompt{font:400 14px/1.4 var(--cv-mono);color:var(--accent-deep);background:none;padding:0}
.cvisor .cv-term-head button,.cvisor .cv-term .cv-term-head button{display:inline-flex;align-items:center;width:auto;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);font:400 14px/1 var(--cv-mono);cursor:pointer}
.cvisor .cv-term-head button::before{content:"[esc]";margin-right:.6em;color:var(--ink-soft)}
.cvisor .cv-term-head button:hover{border-color:var(--cv-lime)}
.cvisor .cv-term .lang-switch{align-self:flex-start;margin:0;border-radius:0}
.cvisor .cv-term .lang-switch button{display:inline-flex;align-items:center;justify-content:center;width:auto;min-height:40px;border-radius:0;font-family:var(--cv-mono);font-size:14px}
.cvisor .cv-term .lang-switch button[lang="zh-Hans"]{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",var(--cv-mono)}
.cvisor .cv-ls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 24px}
.cvisor .cv-ls a,.cvisor .cv-term .cv-ls a{display:flex;align-items:center;width:auto;min-height:48px;padding:8px 0;border:0;border-radius:0;background:none;color:var(--ink);font:400 20px/1.3 var(--cv-mono);text-transform:lowercase;text-decoration:none}
.cvisor .cv-ls a::before{content:"./";color:var(--accent-deep)}
.cvisor .cv-ls a:hover,.cvisor .cv-ls a:focus-visible{background:none;color:var(--cv-lime);outline:none}
.cvisor .cv-ls a:focus-visible::after,.cvisor .cv-ls a:hover::after{content:"";display:inline-block;width:.55em;height:1em;margin-left:.3em;background:var(--cv-lime)}
.cvisor .cv-ls a[aria-current]{color:var(--ink)}
.cvisor .cv-ls a[aria-current]::after{content:"";display:inline-block;width:10px;height:13px;margin-left:10px;background:var(--cv-key) center/10px 13px no-repeat}
html.lang-zh .cvisor .cv-ls a{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Noto Sans CJK SC",var(--cv-mono)}
.cvisor .cv-term-foot{display:flex;align-items:center;margin:auto 0 0;padding-top:16px;border-top:1px solid var(--line)}
.cvisor .cv-cursor{display:inline-block;width:.62em;height:1.05em;margin-left:.4em;background:var(--cv-lime);animation:cv-blink 1.1s steps(1,end) infinite}
@keyframes cv-blink{0%{opacity:1}50%{opacity:0}}
body.sheet-open,body.cv-sheet-open{overflow:hidden}

/* which of links or keyhole shows. Site bar is a container (navpill). */
@container navpill (min-width:1160px){.site-nav.cvisor .nav-links{display:none}.site-nav.cvisor .nav-menu{display:grid}}
@container navpill (min-width:1240px){.site-nav.cvisor .nav-links{display:flex}.site-nav.cvisor .nav-menu{display:none}.site-nav.cvisor .nav-bar:has(#navCa:not([hidden])) .nav-links{display:none}.site-nav.cvisor .nav-bar:has(#navCa:not([hidden])) .nav-menu{display:grid}}
@container navpill (min-width:1420px){.site-nav.cvisor .nav-bar:has(#navCa:not([hidden])) .nav-links{display:flex}.site-nav.cvisor .nav-bar:has(#navCa:not([hidden])) .nav-menu{display:none}}
@container navpill (min-width:1460px){.site-nav.cvisor .cv-readout{display:inline-flex}}
.site-nav.cvisor .nav-menu.cv-keybtn{display:grid}
@container navpill (min-width:1240px){.site-nav.cvisor .nav-menu.cv-keybtn{display:none}.site-nav.cvisor .nav-bar:has(#navCa:not([hidden])) .nav-menu.cv-keybtn{display:grid}}
@container navpill (min-width:1420px){.site-nav.cvisor .nav-bar:has(#navCa:not([hidden])) .nav-menu.cv-keybtn{display:none}}

/* docs pages share the visor */
.docs-nav.cvisor .cv-bar{max-width:1180px;min-height:60px;padding:8px 20px}
.docs-nav.cvisor .docs-nav-mark span{font-family:var(--cv-mono);font-weight:700;font-size:19px;letter-spacing:.14em}
.docs-nav.cvisor .docs-nav-mark img{border-radius:4px}
.docs-nav.cvisor .cv-links{margin:0 auto 0 8px}
.docs-nav.cvisor .cv-connect{min-width:0}

@media (max-width:768px){
 .docs-nav.cvisor .cv-bar>.lang-switch,.docs-nav.cvisor .cv-bar>.cv-links{display:none}
 .docs-nav.cvisor .cv-keybtn{display:grid;order:2}
 .docs-nav.cvisor .cv-connect{order:3}
 .cvisor .cv-bar{padding-inline:14px;gap:8px}
 .cvisor .cv-connect,.site-nav.cvisor .nav-connect.cv-connect{padding:0 12px!important;font-size:13px!important}
 .site-nav.cvisor .nav-connect.cv-connect{min-width:0}
 .site-nav.cvisor .nav-wordmark span:last-child{font-size:17px;letter-spacing:.1em}
}
@media (max-width:479px){
 .cvisor{--cv-step:4px}
 .cvisor .cv-bar{padding-inline:10px;gap:6px}
 .site-nav.cvisor .nav-connect.cv-connect{width:auto;white-space:nowrap;font-size:12px!important;padding:0 10px!important}
 .cvisor .cv-ls a,.cvisor .cv-term .cv-ls a{font-size:18px}
 .cvisor .cv-term{padding-inline:18px}
}
@media (max-width:359px){.site-nav.cvisor .nav-wordmark span:last-child{display:none}}

@media (prefers-reduced-motion:reduce){
 .cvisor .cv-visor::after,.cvisor .cv-cursor{animation:none}
 .cvisor .cv-scan{animation:none;opacity:0}
 .cvisor .cv-bar,.cvisor .cv-key,.cvisor .cv-bar .cv-links a::after{transition:none}
}
@media (forced-colors:active){.cvisor .cv-visor{background:Canvas;border:1px solid CanvasText}.cvisor .cv-bar .cv-links a[aria-current]{text-decoration:underline}}
