/* Home entry views (assets/home-3d.js): Helix (default) · Ring · 无限流, plus the Nova robot companion on Helix.
   Scoped to html[data-home-3d]. No transform / filter on .grid / .card. Do not edit focus.js. */
html[data-home-3d] .h3d-dock{position: fixed; z-index: 3200; left: 50%; bottom: 14px; translate: -50% 0; display: flex; gap: 2px; padding: 3px;
  border: 1px solid var(--line); border-radius: min(var(--radius), 999px); background: color-mix(in srgb, var(--card) 92%, transparent); box-shadow: var(--shadow);
  font: 700 12px/1 var(--font)}
html[data-home-3d] .h3d-dock button{appearance: none; border: 0; background: none; color: var(--fg); font: inherit; padding: 8px 13px; border-radius: min(var(--radius), 999px); cursor: pointer; white-space: nowrap}
html[data-home-3d] .h3d-dock button[aria-checked="true"]{background: var(--fg); color: var(--bg)}
html[data-home-3d] .h3d-dock button:focus-visible{outline: 2px solid var(--accent); outline-offset: 2px}
/* lattice mode: the dock steps left of the lattice HUD instead of covering it */
html[data-home-3d] body.h3d-stream .h3d-dock{left: 16px; translate: none}
@media (max-width: 719px){
  html[data-home-3d] body.h3d-stream .h3d-dock{left: 50%; translate: -50% 0; bottom: 64px}
}

/* ---- Helix + Nova ---- */
html[data-home-3d] .hx-stage .hx-options{display: none}
html[data-home-3d] .hx-stage.h3d-nova .hx-tilt{left: 66%}
html[data-home-3d] .hx-stage.h3d-nova{perspective-origin: 66% 46%}
html[data-home-3d] .h3d-bot{position: absolute; z-index: 0; left: 21%; top: 0; bottom: 0; width: 34%; height: 100%; border: 0; pointer-events: none;
  opacity: 0; transition: opacity .6s cubic-bezier(.2,.8,.2,1)}
html[data-home-3d] .h3d-bot.h3d-in{opacity: 1}
/* the robot's speech replaces the Helix HUD on wide screens (same text, typed) */
html[data-home-3d] .hx-stage.h3d-nova .hx-hud{display: none}
html[data-home-3d] .h3d-say{position: absolute; z-index: 3000; left: clamp(16px, 4vw, 56px); top: clamp(14px, 5vh, 44px); width: min(300px, 22vw);
  display: grid; gap: 6px; padding: 14px 16px 12px; pointer-events: none;
  border: 1px solid var(--line); background: color-mix(in srgb, var(--card) 86%, transparent); color: var(--fg);
  font: 500 12px/1.45 ui-monospace, "IBM Plex Mono", SFMono-Regular, Menlo, "PingFang SC", "Noto Sans SC", monospace}
html[data-home-3d] .h3d-say .h3d-tick,
html[data-home-3d] .h3d-say::after{content: ""; position: absolute; width: 7px; height: 7px; border: 1.5px solid var(--fg)}
html[data-home-3d] .h3d-say .h3d-tick{left: -4px; top: -4px; border-right: 0; border-bottom: 0}
html[data-home-3d] .h3d-say::after{right: -4px; bottom: -4px; border-left: 0; border-top: 0}
html[data-home-3d] .h3d-say .h3d-stage{font-size: 10px; letter-spacing: .14em; color: var(--mu)}
html[data-home-3d] .h3d-say .h3d-no{font-size: 11px; letter-spacing: .08em; color: var(--mu)}
html[data-home-3d] .h3d-say .h3d-t{font: 700 clamp(15px, 1.5vw, 19px)/1.35 var(--font-d, var(--font)); min-height: 2.7em; text-transform: none}
html[data-home-3d] .h3d-say .h3d-t::after{content: ""; display: inline-block; width: .5em; height: 1.05em; margin-left: 2px; vertical-align: -.15em; background: currentColor; animation: h3d-caret 1s steps(1) infinite}
html[data-home-3d] .h3d-say .h3d-k{justify-self: start; font: 600 10px/18px var(--font); font-style: normal; padding: 0 8px; border-radius: 999px; color: #fff; background: var(--c, var(--accent))}
html[data-home-3d] .h3d-say .h3d-k:empty{display: none}
html[data-home-3d] .h3d-say .h3d-k.c-ui{--c: var(--ui)} html[data-home-3d] .h3d-say .h3d-k.c-web{--c: var(--web)}
html[data-home-3d] .h3d-say .h3d-k.c-motion{--c: var(--motion)} html[data-home-3d] .h3d-say .h3d-k.c-news{--c: var(--news)}
html[data-home-3d] .h3d-say .h3d-k.c-brand{--c: var(--brand)} html[data-home-3d] .h3d-say .h3d-k.c-remix{--c: var(--remix)}
html[data-home-3d] .h3d-say small{color: var(--mu); font-size: 10.5px}
html[data-home-3d] .h3d-say.h3d-end small::before{content: "今天就这些 · "; color: var(--fg)}
@keyframes h3d-caret{50%{opacity: 0}}

@media (max-width: 719px){
  /* phone: the helix keeps the centre and its own HUD; Nova stands behind it, bottom-left, and still watches the last tap */
  html[data-home-3d] .hx-stage.h3d-nova .hx-tilt{left: 50%}
  html[data-home-3d] .hx-stage.h3d-nova{perspective-origin: 50% 46%}
  html[data-home-3d] .hx-stage.h3d-nova .hx-hud{display: grid}
  html[data-home-3d] .h3d-say{display: none}
  html[data-home-3d] .h3d-bot{top: auto; left: -8vw; width: 52vw; height: 40%}
  html[data-home-3d] body.fav-helix-mode .h3d-dock,
  html[data-home-3d] body.fav-ring-mode .h3d-dock{bottom: 10px}
}
@media (prefers-reduced-motion: reduce){
  html[data-home-3d] .h3d-bot{transition: none}
  html[data-home-3d] .h3d-say .h3d-t::after{animation: none}
}
html.dd-rm[data-home-3d] .h3d-bot{transition: none}
html.dd-rm[data-home-3d] .h3d-say .h3d-t::after{animation: none}
