/* =====================================================================
 * 第二轮：剧本化演示、IDE、实时帧图、光效
 * 拆成一个文件是因为它盖在 styles.css 之上；同名规则以这里为准。
 * =================================================================== */

.fly-list[hidden] { display: none; }
.bk.run { filter: drop-shadow(0 0 2px #fff) drop-shadow(0 0 7px rgb(255 214 0 / 90%)); }
.hero-cap { position: absolute; left: 12px; bottom: 16px; z-index: 5; display: flex; align-items: center; gap: 8px; padding: 6px 12px; font-size: 11.5px; color: #fff; background: rgb(22 25 31 / 88%); border: 1px solid var(--e-line); border-radius: 8px; box-shadow: 0 10px 30px rgb(0 0 0 / 40%); opacity: 0; translate: 0 6px; transition: opacity 0.3s, translate 0.3s var(--ease); }
.hero-cap::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--acc); }
.hero-cap.show { opacity: 1; translate: 0 0; }

/* 通用字幕条（编辑器底部） */
.sd-caption { position: absolute; left: 0; right: 0; bottom: 0; z-index: 6; display: flex; align-items: center; gap: 10px; height: 34px; padding: 0 14px; font-size: 12px; color: #fff; background: var(--e-bg); border-top: 1px solid var(--e-line); }
.sd-caption i { width: 7px; height: 7px; border-radius: 50%; background: var(--acc); box-shadow: 0 0 0 3px var(--acc-soft); flex: none; }
.sd-caption span { transition: opacity 0.25s, translate 0.25s var(--ease); }
.sd-caption span.swap { opacity: 0; translate: 0 6px; }

/* ---- 多场景剧本 ---------------------------------------------------- */
.scene-demo { aspect-ratio: 16 / 6.9; --bs: 0.6; }
.scene-demo .ed-body { position: absolute; inset: 34px 0 34px; display: grid; grid-template-columns: 43% 22% 1fr; gap: 5px; padding: 5px; }
.sd-stage .pn-b { display: flex; flex-direction: column; }
.sd-cv { position: relative; margin: 0 8px 8px; aspect-ratio: 4 / 3; border-radius: 4px; overflow: hidden; background: #fff; flex: none; }
.sd-view { position: absolute; inset: 0; opacity: 0; transition: opacity 0.7s var(--ease); overflow: hidden; }
.sd-view.on { opacity: 1; }
.sd-view[data-scene="菜单"] { background: radial-gradient(60% 50% at 50% 20%, rgb(45 140 255 / 35%), transparent 70%), linear-gradient(#0f1a33, #1b2a4d); }
.sd-title { position: absolute; left: 0; right: 0; top: 16%; text-align: center; font: 800 clamp(14px, 2.2vw, 22px) var(--font-latin); letter-spacing: 0.1em; color: #fff; text-shadow: 0 0 20px #2d8cff; }
.sd-menu { position: absolute; left: 50%; top: 46%; translate: -50% 0; display: grid; gap: 6px; }
.sd-menu span { padding: 4px 22px; font-size: 10px; color: #fff; text-align: center; border: 1px solid rgb(255 255 255 / 30%); border-radius: 999px; }
.sd-menu span:first-child { background: var(--acc); border-color: var(--acc); }
.sd-view[data-scene="菜单"] .sd-moo { position: absolute; right: 8%; bottom: 6%; height: 34%; animation: bob 3s ease-in-out infinite; }
.sd-view[data-scene="第一关"] { background: linear-gradient(#bfe6ff, #e8f6ff 70%); }
.sd-view[data-scene="Boss 战"] { background: radial-gradient(70% 60% at 50% 100%, #5a1f3a, transparent 70%), linear-gradient(#170d24, #2a1b3d); }
.sd-ground { position: absolute; left: 0; right: 0; bottom: 0; height: 22%; background: linear-gradient(#8fdc63, #5fb945); }
.sd-ground.dark { background: linear-gradient(#3c2a52, #22173a); }
.sd-hud { position: absolute; left: 8px; top: 8px; padding: 2px 8px; font: 600 10px var(--font-mono); color: #fff; background: rgb(0 0 0 / 55%); border-radius: 4px; }
.sd-hud b { color: var(--gold); }
.sd-view .sd-moo.run { position: absolute; left: 18%; bottom: 20%; height: 40%; animation: run 0.5s steps(2) infinite; }
@keyframes run { 0% { translate: 0 0; } 50% { translate: 0 -5px; } 100% { translate: 0 0; } }
.sd-coin { position: absolute; width: 8%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff2a8, #ffc107 60%, #e0a000); box-shadow: 0 0 10px rgb(255 193 7 / 55%); animation: bob 1.6s ease-in-out infinite; }
.sd-boss { position: absolute; right: 8%; bottom: 20%; height: 62%; filter: hue-rotate(290deg) saturate(1.4) drop-shadow(0 0 12px #ff4d8a); scale: -1 1; animation: bob 2.4s ease-in-out infinite; }
.sd-msg { position: absolute; left: 50%; top: 14%; translate: -50% 0; padding: 4px 10px; font-size: 10px; color: #fff; background: var(--scene); border-radius: 999px; opacity: 0; transition: opacity 0.3s, translate 0.3s; }
.sd-msg.show { opacity: 1; translate: -50% -4px; }
.sd-fade { position: absolute; inset: 0; background: #000; opacity: 0; pointer-events: none; }
.sd-strip { padding: 6px; display: grid; gap: 6px; align-content: start; }
.sd-card { position: relative; display: grid; grid-template-columns: 38px 1fr auto; gap: 8px; align-items: center; padding: 6px 8px; border-radius: 8px; background: var(--e-panel); border: 1px solid var(--e-line); overflow: hidden; transition: border-color 0.5s, background 0.5s, opacity 0.5s, box-shadow 0.5s; }
.sd-card .th { width: 38px; height: 28px; border-radius: 4px; background: #fff; display: grid; place-items: center; overflow: hidden; transition: filter 0.5s; }
.sd-card .th img { height: 24px; width: auto; }
.sd-card .meta { display: grid; line-height: 1.25; min-width: 0; }
.sd-card .meta b { font-size: 11.5px; color: #fff; }
.sd-card .meta span { font-size: 9.5px; color: var(--e-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sd-card .state { padding: 1px 7px; font-size: 9.5px; font-weight: 700; border-radius: 999px; transition: all 0.4s; }
.sd-card .queue { position: absolute; right: 6px; top: -14px; padding: 1px 6px; font-size: 9px; font-weight: 700; color: #fff; background: var(--scene); border-radius: 999px; transition: top 0.35s var(--spring), opacity 0.3s; opacity: 0; }
.sd-card.q .queue { top: 3px; opacity: 1; }
.sd-card .bar { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: rgb(255 255 255 / 6%); opacity: 0; }
.sd-card .bar i { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--acc); }
.sd-card.loading .bar { opacity: 1; }
.sd-card.loading .bar i { animation: load 0.9s var(--ease) forwards; }
@keyframes load { to { width: 100%; } }
.sd-card[data-s="live"] { border-color: var(--acc); background: linear-gradient(120deg, rgb(45 140 255 / 18%), rgb(45 140 255 / 4%)); }
.sd-card[data-s="live"] .state { color: #fff; background: var(--acc); }
.sd-card[data-s="bg"] { border-color: rgb(70 214 168 / 50%); }
.sd-card[data-s="bg"] .state { color: var(--green); background: rgb(70 214 168 / 14%); }
.sd-card[data-s="sleep"] .state { color: var(--gold); background: rgb(255 180 84 / 14%); }
.sd-card[data-s="sleep"] .th { filter: grayscale(0.6) brightness(0.85); }
.sd-card[data-s="unloaded"] { opacity: 0.5; }
.sd-card[data-s="unloaded"] .state { color: var(--e-dim); background: rgb(255 255 255 / 7%); }
.sd-card[data-s="unloaded"] .th { filter: grayscale(1) brightness(0.55); }
.sd-card.flash { box-shadow: 0 0 0 2px var(--scene); }
.sd-fly { position: absolute; z-index: 9; padding: 2px 9px; font: 600 10px var(--font-mono); color: #fff; background: var(--acc); border-radius: 999px; box-shadow: 0 8px 20px rgb(0 0 0 / 40%); opacity: 0; pointer-events: none; white-space: nowrap; }
.sd-fly.msg { background: var(--scene); font-family: var(--font-cjk); }

/* ---- 资源库剧本 ---------------------------------------------------- */
.lib-ed { aspect-ratio: 16 / 7.6; }
.lib-ed .ed-body { inset: 34px 0 34px; }
.lib-ed .assets { grid-template-columns: 180px minmax(0, 1fr) 260px; }
.lib-ed .detail { min-width: 0; overflow: hidden; }
.lib-ed .detail .k b { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-left: 8px; }
.two.flip { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
@media (max-width: 860px) { .two.flip { grid-template-columns: 1fr; } }
.lib-ed .tree div { position: relative; display: flex; align-items: center; gap: 6px; transition: background 0.3s, color 0.3s; }
.lib-ed .tree div em { margin-left: auto; font-style: normal; font-size: 10px; color: var(--e-dim); }
.lib-ed .tree div.on em { color: rgb(255 255 255 / 80%); }
.lib-ed .tree div i { width: 6px; height: 6px; border-radius: 50%; background: transparent; transition: background 0.3s, box-shadow 0.3s; }
.lib-ed .tree div.mark i { background: var(--acc); box-shadow: 0 0 0 3px var(--acc-soft); }
.lib-ed .tree .hd { margin-top: 8px; color: var(--e-dim); font-size: 10px; }
.grid-wrap { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.grid-bar { display: flex; align-items: center; gap: 8px; height: 30px; padding: 0 10px; border-bottom: 1px solid var(--e-line); flex: none; }
.grid-bar .sp { flex: 1; }
.lib-ed .thumbs { grid-template-columns: repeat(auto-fill, minmax(62px, 1fr)); overflow: hidden; }
.lib-ed .thumbs i { transition: border-color 0.3s, opacity 0.4s, scale 0.4s var(--ease), box-shadow 0.3s; }
.lib-ed .thumbs i img { height: 80%; width: auto; filter: hue-rotate(var(--hue, 0deg)); }
.lib-ed .thumbs i.bd::after { display: none; }
.lib-ed .thumbs i.bd { background: var(--t); }
.lib-ed .thumbs i.hl { border-color: var(--acc); box-shadow: 0 0 0 3px var(--acc-soft); }
.lib-ed .thumbs i.dim { opacity: 0.18; }
.lib-ed .thumbs i.gone { opacity: 0; scale: 0.5; }
.mini-btn { padding: 4px 10px; font-size: 10.5px; font-weight: 600; color: #fff; background: var(--e-input); border: 1px solid var(--e-line); border-radius: 5px; transition: filter 0.2s, opacity 0.3s; }
.mini-btn.pri { background: var(--acc); border-color: var(--acc); }
.mini-btn.danger { background: #fa594c; border-color: #fa594c; }
.mini-btn.press { filter: brightness(0.8); }
.mini-btn[hidden] { display: none; }
.lib-ed .detail { transition: opacity 0.4s, translate 0.4s var(--ease); }
.lib-ed .detail.off { opacity: 0; translate: 14px 0; }
.lib-ed .detail .acts { display: flex; gap: 6px; margin-top: 4px; }
.lib-ed .uses div { opacity: 0; translate: 8px 0; transition: opacity 0.3s, translate 0.3s var(--ease), outline-color 0.3s, background 0.3s; }
.lib-ed .uses div.in { opacity: 1; translate: 0 0; }
.lib-ed .uses div em { margin-left: auto; font-style: normal; font-size: 9.5px; color: var(--green); opacity: 0; transition: opacity 0.3s; }
.lib-ed .uses div.done em { opacity: 1; }
.lib-ed .uses div.done { background: rgb(70 214 168 / 12%); }
.tabs .ic.on { color: var(--acc); }
.dlg { position: absolute; inset: 34px 0 34px; z-index: 9; display: grid; place-items: center; background: rgb(0 0 0 / 45%); opacity: 0; pointer-events: none; transition: opacity 0.3s; }
.dlg.show { opacity: 1; }
.dlg-box { width: 300px; padding: 16px 18px; background: var(--e-panel); border: 1px solid var(--e-line-2); border-radius: 10px; box-shadow: 0 30px 60px rgb(0 0 0 / 60%); scale: 0.94; transition: scale 0.35s var(--spring); }
.dlg.show .dlg-box { scale: 1; }
.dlg-box b { font-size: 13px; color: #fff; }
.dlg-box p { margin: 6px 0 12px; font-size: 11px; color: var(--e-dim); }
.dlg-acts { display: flex; gap: 6px; justify-content: flex-end; }

/* ---- IDE ------------------------------------------------------------ */
.code-ed { aspect-ratio: 16 / 10; }
.code-ed .ed-body { inset: 34px 0 24px; grid-template-columns: 170px 1fr; grid-template-rows: 1fr 140px; }
.files .dir { color: var(--e-dim); padding: 3px 4px; }
.files .i2 { padding-left: 16px; }
.p-editor { display: flex; flex-direction: column; }
.p-editor .crumb { height: 22px; padding: 0 12px; font-size: 10.5px; line-height: 22px; color: var(--e-dim); border-bottom: 1px solid var(--e-line); background: var(--e-page); flex: none; }
.tab .dot { width: 7px; height: 7px; border-radius: 2px; background: var(--fc); }
.tab em { font-style: normal; margin-left: 2px; color: var(--e-dim); }
.tab[hidden] { display: none; }
.tab .badge { display: inline-grid; place-items: center; min-width: 15px; height: 15px; margin-left: 6px; padding: 0 4px; border-radius: 999px; background: #fa594c; color: #fff; font-size: 9px; font-style: normal; }
.tab .badge[hidden] { display: none; }
.code-ed .code { right: 52px; }
.minimap { position: absolute; right: 0; top: 0; bottom: 0; width: 52px; padding: 8px 6px; background: rgb(0 0 0 / 15%); border-left: 1px solid var(--e-line); display: flex; flex-direction: column; gap: 2px; }
.minimap i { height: 2px; border-radius: 1px; background: var(--c, #5b6478); opacity: 0.7; width: var(--w, 60%); }
.statusbar { position: absolute; left: 0; right: 0; bottom: 0; height: 24px; display: flex; align-items: center; gap: 14px; padding: 0 12px; font: 10.5px var(--font-mono); color: #fff; background: var(--acc); }
.statusbar .sp { flex: 1; }
.p-term { transition: border-color 0.3s, box-shadow 0.3s; }
.p-term.alert { border-color: #fa594c; box-shadow: 0 0 0 2px rgb(250 89 76 / 35%); }
.qopen { position: absolute; left: 0; right: 0; top: 34px; z-index: 9; display: flex; justify-content: center; padding-top: 10px; opacity: 0; translate: 0 -6px; pointer-events: none; transition: opacity 0.25s, translate 0.25s var(--ease); }
.qopen.show { opacity: 1; translate: 0 0; }
.qo-box { width: min(420px, 80%); background: var(--e-panel); border: 1px solid var(--e-line-2); border-radius: 8px; box-shadow: 0 20px 50px rgb(0 0 0 / 60%); overflow: hidden; }
.qo-in { display: flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px; font: 12px var(--font-mono); color: #fff; border-bottom: 1px solid var(--e-line); }
.qo-pre { color: var(--e-dim); }
.qo-in .caret { display: inline-block; width: 7px; height: 13px; background: var(--acc-hi); animation: blink 1s steps(2) infinite; }
.qo-list div { display: flex; gap: 8px; align-items: center; padding: 5px 10px; font-size: 11px; color: var(--e-dim); }
.qo-list div.on { background: var(--acc); color: #fff; }
.qo-list div b { color: inherit; font-weight: 600; }
.qo-list div span { margin-left: auto; opacity: 0.7; font-size: 10px; }
.qo-list div i { width: 7px; height: 7px; border-radius: 2px; background: var(--fc, var(--gold)); }

/* ---- 性能：实时帧图 ------------------------------------------------- */
.perf-live { display: grid; gap: 12px; padding: 16px 18px 18px; margin-bottom: 2rem; border-radius: 16px; background: var(--e-bg); border: 1px solid var(--hair-2); }
.pl-head { display: flex; gap: 1rem; align-items: baseline; flex-wrap: wrap; }
.pl-lanes { display: grid; gap: 10px; }
.pl-lane { display: grid; grid-template-columns: 130px 1fr; gap: 12px; align-items: center; }
.pl-meta { display: grid; gap: 0; line-height: 1.2; }
.pl-meta b { font-size: 0.86rem; color: var(--soft); }
.pl-fps { font-size: 1.5rem; font-weight: 700; color: var(--coral); }
.pl-fps.good { color: var(--green); }
.pl-ms { font-size: 0.74rem; color: var(--mute); }
.pl-lane canvas { width: 100%; height: 64px; display: block; border-radius: 8px; background: var(--e-page); border: 1px solid var(--e-line); }
.perf-big::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 35%, rgb(255 255 255 / 5%) 50%, transparent 65%); translate: -100% 0; animation: sweep2 5s ease-in-out infinite; pointer-events: none; }
.perf-big:nth-child(2)::after { animation-delay: 0.6s; }
.perf-big:nth-child(3)::after { animation-delay: 1.2s; }
@keyframes sweep2 { 0% { translate: -100% 0; } 45%, 100% { translate: 100% 0; } }

/* ---- 截图光效 -------------------------------------------------------- */
.shot { transition: transform 0.5s var(--ease), box-shadow 0.5s; }
.shot:hover { box-shadow: 0 70px 130px -50px rgb(0 0 0 / 95%), 0 30px 90px -30px rgb(45 140 255 / 45%); }
.shot .glare { background: radial-gradient(520px circle at var(--gx, 50%) var(--gy, 0%), rgb(255 255 255 / 13%), rgb(255 255 255 / 3%) 35%, transparent 60%); mix-blend-mode: screen; }
.shot::before { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; border-radius: inherit; padding: 1.5px; background: radial-gradient(380px circle at var(--gx, 50%) var(--gy, 0%), rgb(120 190 255 / 95%), rgb(45 140 255 / 25%) 45%, transparent 70%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; opacity: 0; transition: opacity 0.4s; }
.shot:hover::before { opacity: 1; }
.shot .sheen { position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(105deg, transparent 0%, transparent calc(var(--gx, 50%) - 14%), rgb(255 255 255 / 6%) var(--gx, 50%), transparent calc(var(--gx, 50%) + 14%), transparent 100%); opacity: 0; transition: opacity 0.4s; }
.shot:hover .sheen { opacity: 1; }

@media (max-width: 860px) {
  .scene-demo { aspect-ratio: auto; }
  .scene-demo .ed-body { position: relative; inset: auto; grid-template-columns: 1fr; margin-bottom: 34px; }
  .lib-ed { aspect-ratio: auto; min-height: 420px; }
  .lib-ed .assets { grid-template-columns: 1fr 1fr; }
  .pl-lane { grid-template-columns: 1fr; }
}

/* ---- 性能：发布会式对垒 --------------------------------------------- */
:root { --red: #ff4c4c; --red-hi: #ff6b6b; }
.vs-head { display: flex; align-items: center; justify-content: center; gap: clamp(1rem, 3vw, 2.5rem); margin: 0 0 2.5rem; flex-wrap: wrap; }
.ct { display: flex; align-items: center; gap: 0.9rem; padding: 0.8rem 1.3rem 0.8rem 1rem; border-radius: 16px; border: 1px solid; background: var(--ink-2); }
.ct.red { border-color: rgb(255 76 76 / 45%); background: linear-gradient(120deg, rgb(255 76 76 / 12%), rgb(255 76 76 / 3%)); box-shadow: 0 20px 50px -30px rgb(255 76 76 / 50%); }
.ct.blue { border-color: rgb(45 140 255 / 55%); background: linear-gradient(120deg, rgb(45 140 255 / 16%), rgb(45 140 255 / 4%)); box-shadow: 0 20px 50px -30px rgb(45 140 255 / 60%); }
.ct b { display: block; font: 800 1.15rem/1.2 var(--font-latin); letter-spacing: -0.01em; }
.ct.red b { color: var(--red-hi); }
.ct.blue b { color: var(--acc-hi); }
.ct span { display: block; font-size: 0.78rem; color: var(--mute); margin-top: 0.15rem; }
.ct-ico { width: 40px; height: 40px; flex: none; filter: drop-shadow(0 6px 12px rgb(0 0 0 / 40%)); }
.vs-x { font: 900 1.7rem var(--font-latin); font-style: italic; letter-spacing: 0.08em; color: var(--mute); }
.perf-big .n small { color: var(--acc-hi); font-size: 0.34em; letter-spacing: 0; }
.duel { position: relative; display: flex; gap: 1.1rem; align-items: center; margin: 0.2rem 0 0.1rem; font: 600 0.92rem var(--font-mono); }
.duel span { display: inline-flex; align-items: center; gap: 0.4rem; }
.duel i { width: 8px; height: 8px; border-radius: 2px; }
.d-red { color: var(--red-hi); text-decoration: line-through; text-decoration-color: rgb(255 76 76 / 55%); text-decoration-thickness: 1.5px; }
.d-red i { background: var(--red); }
.d-blue { color: var(--acc-hi); }
.d-blue i { background: var(--acc); }
.pl-who { display: flex; align-items: center; gap: 0.45rem; font: 800 0.95rem var(--font-latin); }
.pl-who.red { color: var(--red-hi); }
.pl-who.blue { color: var(--acc-hi); }
.pl-who .ct-ico { width: 22px; height: 22px; filter: none; }
.legend { gap: 1.6rem; align-items: center; }
.legend span { display: inline-flex; align-items: center; gap: 0.45rem; font-weight: 700; }
.legend span::before { display: none; }
.legend .b { color: var(--red-hi); }
.legend .a { color: var(--acc-hi); }
.legend .ct-ico { width: 18px; height: 18px; filter: none; }
.bar.before i { background: var(--red); }
.bar-row .vals span:first-child { color: var(--red-hi); }
.bar-row .vals span:last-child { color: var(--acc-hi); }
.bar-row .x { color: var(--acc-hi); font-size: 0.95rem; white-space: nowrap; }
.pl-fps { color: var(--red-hi); }

/* ---- 品牌字标：G 标保留，字用 Sora ------------------------------------ */
.brand { gap: 0.5rem; }
.brand svg { width: 22px; height: 20px; color: #fff; }
.brand .word { font: 700 1.12rem/1 var(--font-latin); letter-spacing: -0.03em; color: #fff; }
.nav .brand .ver { margin-left: 0.1rem; }
.ed-top .brand { gap: 5px; }
.ed-top .brand svg { width: 15px; height: 14px; }
.ed-top .brand .word { font-size: 12.5px; }
.site-foot .brand .word { font-size: 1rem; color: var(--paper); }

/* 详情栏是个没声明列的 grid，隐式列按 max-content 撑开会顶出面板；钉成一列 */
.lib-ed .detail { grid-template-columns: minmax(0, 1fr); }
.lib-ed .detail > * { min-width: 0; }
.lib-ed .detail .acts { flex-wrap: wrap; }

/* ---- 首屏：Pico 的工作区、跨工作区拖动 --------------------------------- */
.pico { filter: hue-rotate(250deg) saturate(1.1); }
.stage-cv .moo.pico { height: 48%; left: 76%; top: 56%; }
.js .float-ws { width: 46%; max-width: 360px; height: 46%; opacity: 0; }
.float-ws .ws { --bs: 0.62; }
.tab-ghost { position: absolute; z-index: 7; padding: 5px 12px; font-size: 11px; color: #fff; background: var(--e-panel); border: 1px solid var(--acc); border-radius: 6px; box-shadow: 0 12px 30px rgb(0 0 0 / 55%); opacity: 0; pointer-events: none; white-space: nowrap; }
.ghost.bk-stack { position: absolute; }
.hero-ed .stage-cv .moo { transition: none; }

/* ---- 首屏版式：居中、克制、编辑器带落地动画 ----------------------------- */
.hero { padding-top: clamp(3.5rem, 8vh, 6rem); }
.hero-glow { background: radial-gradient(60rem 30rem at 50% -10%, rgb(45 140 255 / 26%), transparent 65%), radial-gradient(40rem 20rem at 85% 60%, rgb(45 140 255 / 8%), transparent 70%); }
.hero-copy { justify-items: center; text-align: center; max-width: 62rem; margin: 0 auto; gap: 1.3rem; }
.hero h1 { font-size: clamp(2.8rem, 6.6vw, 5.8rem); letter-spacing: -0.035em; line-height: 1.04; }
.hero h1 .hi { background: linear-gradient(92deg, #62aaff, #9fd6ff 60%, #62aaff); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.hero-row { flex-direction: column; align-items: center; gap: 1.6rem; }
.hero .sub { max-width: 50ch; text-align: center; font-size: clamp(1.05rem, 1.5vw, 1.22rem); }
.hero-actions { justify-content: center; }
.hero-note { justify-content: center; }
.kicker.pill { padding: 0.45rem 1rem 0.45rem 0.75rem; border: 1px solid var(--hair-2); border-radius: 999px; background: rgb(255 255 255 / 4%); font-family: var(--font-cjk); font-size: 0.82rem; font-weight: 600; letter-spacing: 0.02em; text-transform: none; color: var(--soft); }
.kicker.pill::before { width: 7px; height: 7px; border-radius: 50%; background: var(--acc); box-shadow: 0 0 0 3px var(--acc-soft); }
.hero-ed { position: relative; margin-top: clamp(1rem, 3vh, 2rem); }
.hero-ed::after { content: ""; position: absolute; left: 8%; right: 8%; bottom: -60px; height: 140px; background: radial-gradient(closest-side, rgb(45 140 255 / 28%), transparent); filter: blur(24px); z-index: -1; pointer-events: none; }
.hero-ed .ed { transform-origin: 50% 0; box-shadow: 0 80px 140px -60px rgb(0 0 0 / 95%), 0 0 0 1px rgb(255 255 255 / 4%), 0 40px 120px -40px rgb(45 140 255 / 30%); }
.js .hero-ed .ed { animation: land 1.3s var(--ease) 0.2s backwards; }
@keyframes land { from { transform: perspective(1800px) rotateX(10deg) translateY(36px); opacity: 0; } to { transform: perspective(1800px) rotateX(0) translateY(0); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .js .hero-ed .ed { animation: none; } }

/* ---- 未开源、在线体验 --------------------------------------------------- */
.btn.soon { cursor: default; color: var(--mute); border-style: dashed; }
.btn.soon:hover { background: rgb(255 255 255 / 4%); translate: 0; border-color: var(--hair-2); }
.go-card { position: sticky; top: calc(var(--nav-h) + 1.5rem); display: grid; gap: 1rem; padding: 1.8rem 1.8rem 1.6rem; border-radius: 18px; background: linear-gradient(140deg, rgb(45 140 255 / 14%), rgb(45 140 255 / 3%) 60%), var(--ink-2); border: 1px solid rgb(45 140 255 / 40%); box-shadow: 0 40px 90px -40px rgb(45 140 255 / 45%); }
.go-url { font: 800 clamp(1.6rem, 3.2vw, 2.6rem)/1.1 var(--font-latin); letter-spacing: -0.03em; color: #fff; word-break: break-all; }
.go-url span { color: var(--acc-hi); }
.go-card p { color: var(--soft); font-size: 0.95rem; }
.go-soon { display: flex; align-items: center; gap: 0.5rem; padding-top: 1rem; border-top: 1px solid var(--hair); font-size: 0.86rem; color: var(--mute); }
