html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}

/* 参考站没写画布的 CSS 尺寸：scene.js 用 renderer.setSize(w, h, false) —— 第三个
   参数 false 只改 drawing buffer，不改样式，于是 canvas 元素按属性尺寸
   (w×dpr, h×dpr) 铺开，比容器大 dpr 倍。粒子场景和鼠标光斑都因此整体朝右下
   偏（dpr 越高偏得越多）。这里把画布钉回它那个 fixed inset-0 的容器。 */
#gl-scene-root>canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}

/* 字标尺寸。SVG 是 2450x250（9.8:1），高度 11px -> 宽约 107px，与原来 1.52rem
   黑体 EYAS 的视觉宽度相当。必须写在这里：参考站那份预编译 Tailwind 里
   没有我们临时用的任意值类（h-[...]），挂上去不生效会让图片按原尺寸铺开。 */
.nullity-wordmark{display:block;height:11px;width:auto;max-width:none}
@media (min-width:640px){.nullity-wordmark{height:12.5px}}
/* 顶栏 lockup：图标 + 字标横排（与页脚同构，尺寸小一档） */
.nullity-brand{display:inline-flex;flex-direction:row;align-items:center;gap:9px;line-height:1}
.nullity-brand__icon{display:block;height:24px;width:24px;filter:invert(1);opacity:.92}
.nullity-brand__word{height:12px}
@media (min-width:640px){.nullity-brand__icon{height:26px;width:26px}.nullity-brand__word{height:13px}}
.nullity-wordmark--footer{height:13px}
/* #cta 锚区：竖向 logo 组合需要的高度（参考站原来只给它 18svh/26svh）。 */
.nullity-cta-anchor{height:38svh}
@media (min-width:640px){.nullity-cta-anchor{height:46svh}}
/* 页脚 logo：图标在左、字标在右，横排一行。图标 svg 是 #000 填充，
   深底上必须 invert 才看得见（页头那件是 textlogo.svg，浅色填充，反过来不需要）。 */
.nullity-lockup{display:inline-flex;flex-direction:row;align-items:center;gap:11px}
.nullity-lockup__icon{display:block;height:28px;width:28px;filter:invert(1);opacity:.9}
@media (min-width:640px){.nullity-lockup__icon{height:32px;width:32px}}
/* 页脚法律入口（服务条款 / 隐私政策）。参考站那块的导航是 gap-6 的 flex 行，
   我们沿用同样的排法，只把颜色降一档避免抢 CTA 的注意力。 */
.nullity-legal-nav{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}
.nullity-legal-link{color:#a1a1aa;font-size:12px;letter-spacing:.02em;text-decoration:none;transition:color .18s ease}
.nullity-legal-link:hover{color:#f4f4f5}
.nullity-legal-dot{color:#52525b;font-size:12px;line-height:1}
html.dark body{background-color:#0b0d12;color:#fafafa}
.shadow-\[0_0_40px_rgba\(38\,187\,116\,0\.35\)\]{box-shadow:0 0 40px rgba(38,187,116,.35)}

/* hero 标语「乱码落定」。字号/字重/颜色都沿用 h1 上既有的类，这里只补两处：
   解码时字口的绿色微光，和 h1 里那行等宽小字副行。 */
.nullity-hero-title{line-height:1}
.nullity-hero-decode{display:inline-block;white-space:pre-wrap;transition:text-shadow .25s ease}
.nullity-hero-decode.is-decoding{text-shadow:0 0 30px rgba(38,187,116,.6)}
.nullity-hero-note{display:block;margin-top:1.15rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(.62rem,1.15vw,.78rem);font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:rgba(250,250,250,.52)}

/* ── 顶栏：汉堡按钮（三条线 → 叉） ─────────────────────────────────────── */
.nl-mnav{display:block}
@media (min-width:768px){.nl-mnav{display:none}}

.nl-burger{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:42px;padding:0;border:0;background:transparent;
  color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;
  border-radius:6px;transition:background .2s ease;
}
.nl-burger:hover{background:rgba(255,255,255,.06)}
.nl-burger:focus-visible{outline:2px solid rgba(38,187,116,.75);outline-offset:2px}

/* 三条线用绝对定位各画一根：只有每根自己动，才能做出「上翘、中隐、下落」的叉。
   用背景做线的话，展开动画只能整体旋转，看起来像整个按钮歪了。 */
.nl-burger__box{position:relative;display:block;width:22px;height:16px}
.nl-burger__box span{
  position:absolute;left:0;display:block;height:2px;border-radius:2px;
  background:currentColor;
  transition:transform .34s cubic-bezier(.22,1,.36,1),
             opacity .18s linear,
             width .24s ease;
}
.nl-burger__box span:nth-child(1){top:0;width:22px}
.nl-burger__box span:nth-child(2){top:7px;width:15px}
.nl-burger__box span:nth-child(3){top:14px;width:22px}
.nl-burger:hover .nl-burger__box span:nth-child(2){width:22px}

/* 展开形态：上下两根各转 45°/−45° 向中间收，中间那根先缩没再淡出。
   顺序很重要 —— 一起动会看到「米」字形的中间帧。 */
.nl-mnav-open .nl-burger__box span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nl-mnav-open .nl-burger__box span:nth-child(2){width:0;opacity:0;transition:width .16s ease,opacity .12s linear}
.nl-mnav-open .nl-burger__box span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ── 顶栏：移动菜单面板 ──────────────────────────────────────────────────── */
.nl-mnav__scrim{
  position:fixed;inset:0;z-index:60;
  background:rgba(5,6,10,.58);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .26s ease;
}
.nl-mnav__scrim.is-open{opacity:1}

.nl-mnav__panel{
  position:fixed;z-index:61;left:12px;right:12px;
  top:calc(env(safe-area-inset-top,0px) + 64px);
  max-height:calc(100dvh - 88px);overflow:auto;overscroll-behavior:contain;
  padding:10px;border-radius:16px;
  background:
    radial-gradient(120% 90% at 0% 0%,rgba(38,187,116,.14),transparent 62%),
    rgba(10,11,15,.94);
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 26px 70px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.07);
  opacity:0;transform:translateY(-10px) scale(.985);transform-origin:top center;
  transition:opacity .22s ease,transform .3s cubic-bezier(.22,1,.36,1);
}
.nl-mnav__panel.is-open{opacity:1;transform:translateY(0) scale(1)}

.nl-mnav__list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}
.nl-mnav__item{
  display:flex;align-items:center;gap:12px;
  padding:12px 12px;border-radius:10px;
  color:rgba(255,255,255,.86);text-decoration:none;
  opacity:0;transform:translateY(-6px);
  transition:background .18s ease,color .18s ease;
}
.nl-mnav__panel.is-open .nl-mnav__item{
  animation:nl-mnav-in .34s cubic-bezier(.22,1,.36,1) forwards;
  animation-delay:calc(var(--i,0) * 38ms + 40ms);
}
@keyframes nl-mnav-in{to{opacity:1;transform:translateY(0)}}
.nl-mnav__item:active{background:rgba(255,255,255,.07)}
.nl-mnav__item:hover{background:rgba(255,255,255,.05);color:#fff}
.nl-mnav__idx{
  min-width:20px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:10.5px;letter-spacing:.12em;color:rgba(38,187,116,.85);
}
.nl-mnav__label{flex:1;font-size:15px;font-weight:600;letter-spacing:-.01em}
.nl-mnav__hint{font-size:11px;color:rgba(255,255,255,.34);letter-spacing:.02em}
.nl-mnav__chev{color:rgba(255,255,255,.28);flex:none}

.nl-mnav__foot{
  display:flex;flex-direction:column;gap:8px;
  margin-top:8px;padding:10px 4px 4px;border-top:1px solid rgba(255,255,255,.09);
}
.nl-mnav__cta{
  display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;border-radius:10px;
  background:linear-gradient(120deg,#26bb74,#1f9d63);
  color:#04120b;font-size:14px;font-weight:800;letter-spacing:.01em;
  text-decoration:none;
  box-shadow:0 10px 26px rgba(38,187,116,.28);
}
.nl-mnav__cta:active{transform:translateY(1px)}
.nl-mnav__ghost{
  display:flex;align-items:center;justify-content:center;min-height:40px;
  border-radius:10px;border:1px solid rgba(255,255,255,.14);
  color:rgba(255,255,255,.78);font-size:13px;font-weight:600;text-decoration:none;
}

/* 面板展开时锁住滚动：不然手指一滑，背后整页跟着跑，菜单像是浮在滚动条上 */
html.nl-mnav-open,html.nl-mnav-open body{overflow:hidden}

/* ── 顶栏：登录后的头像 ──────────────────────────────────────────────────── */
.nl-auth-chip{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:26%;overflow:hidden;
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);
  transition:border-color .2s ease,transform .2s ease;
}
.nl-auth-chip:hover{border-color:rgba(38,187,116,.8);transform:translateY(-1px)}
/* 头像统一圆角方形（和站内 .dc-avatar 同一套语言，圆头像在信息流里认不出是账号） */
.nl-auth-chip__img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
@media (max-width:380px){.nl-auth-chip{width:30px;height:30px}}
