Archived
feat(w05): 三张工单件视图层重设计 —— 电路板夜景 hero + 精密检测报告版面,功能绑定逐项保留
用户定:中央工作区不要后台管理端的样子,按 C 端界面重设计,可加主题 SVG 与动画, 只保留功能。三张件换成「精密检测报告」语言: · 题头深色电路板 hero,三张各一幕 —— 建档台(两颗料的芯片铭牌,由 mine:sub_eval.part 铺行,不在库虚线描边)/ 对决量尺(原 PN → 候选 PN + 推荐等级徽章)/ 落账席(慢转 印章环 + 一句话结论);信号点流动、晶粒呼吸、入场浮起,全部 transform/opacity, prefers-reduced-motion 全静。 · 正文瓷白报告版面:丝印小标 + 简报卡 + 报告表格;比对光谱(四态分布带 + 刻度)、 落账三卡(大数)、四态计数丸。验收两件仍是用户定的验收绿 #0aa294,数据工单数据蓝。 · 设计系统收进 views/style.ts;目标件时代的 target-style.ts 退役(报表样式只此一处真源); report.ts 里与 badge.ts 重复的 vtok/badgeCss 收归一处(销一笔 debt)。 功能一个不动:可编辑表的 DOM 结构逐字节保留(data-rows/data-edit/data-col/编辑闸/ 种子行/主键钥匙/thead 后置/红带),机制规则(序号计数器、jc-row-static 显隐、 gate-bar :has(:empty)、overflow-x)逐字保留并仍被包内测试钉着。 修掉三个自审逮到的洞:kv 占位破折号只认直接子级(嵌套徽标被「—」盖掉)、光谱条里 不渗计数字、加行钮补 base display:none(从前没开编辑就露着)。 104 包内测 + 2516 全仓测绿;两条新锚(主题色/hero 外壳)变异验证各红过一次; 2.6.0 已装库并 SQL 核过(hero/主题色/种子行/vtok/零脚本逐件中)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
@@ -0,0 +1,260 @@
|
||||
/**
|
||||
* ACT-WORK-05 三张工单件的设计系统(2026-08-31 视图层整体重设计。用户定:
|
||||
* 「中间这一块不要搞的像后台管理端,要像给客户使用的 C 端界面;可以按主题加 SVG 图形,
|
||||
* 可以有动画,加强交互 —— 只保留功能,视图层可以推翻重新设计」)。
|
||||
*
|
||||
* 设计语言:「精密检测报告」——
|
||||
* · 题头是一块深色电路板夜景(hero):芯片封装、铜引脚、流动的走线信号,
|
||||
* 三张件各有一幕对应自己职能的场景(建档台 / 对决量尺 / 落账席);
|
||||
* · 正文回到瓷白纸面,报告化排版:丝印体小标(silkscreen)、mono 料号、
|
||||
* 引脚号式的序号列 —— 用电子行业自己的版面语汇,不借后台管理端的灰表格;
|
||||
* · 动画只做 transform / opacity(信号点流动、晶粒呼吸、印章环慢转、入场浮起),
|
||||
* prefers-reduced-motion 下全部静止 —— 与工作台动画同一条纪律。
|
||||
*
|
||||
* 旧的 target-style.ts(逐字节抽自目标件的三段样式)随本次重设计退役:目标件是
|
||||
* 「照着做」时代的锚,这一版是活动自己的设计,样式只此一处真源。
|
||||
*
|
||||
* **这一整段活在 TS 模板字符串里 —— 不许出现反引号**(一个反引号就把串截断,
|
||||
* esbuild 报在几行之外;本仓踩过)。注释里也别写星号斜杠连排。
|
||||
*
|
||||
* 几条被包内测试钉死的**机制规则逐字保留**,别「顺手整理」:
|
||||
* · 序号计数器五连(.jc-tbl-wrap table, .tbl-wrap table 成对出现);
|
||||
* · table:not(.on) tr.jc-row-static { display: none; }(种子行只在编辑态露面);
|
||||
* · .jc-gate-bar:has(.jc-gate-text:empty) 显隐(gate_reason 是中文自由文本,
|
||||
* data-class-of 在它上面永远算不出 v-token,显隐只认 data-blank 出的空文本节点);
|
||||
* · .jc-tbl-wrap 不许 overflow:hidden(表宽超出要能横着滑)。
|
||||
*/
|
||||
|
||||
/** 件① 数据工单的强调色 —— 数据蓝(与治理台「数据」语义同族) */
|
||||
export const ACCENT_DATA = `
|
||||
:root{
|
||||
--acc:#2e6bff; --acc-deep:#1f52d6; --acc-soft:#e3ecff; --acc-line:#c2d5ff; --acc-wash:#f3f7ff;
|
||||
--glow:#6fa1ff; --glow-line:rgba(111,161,255,.36); --hero-tint:rgba(46,107,255,.34);
|
||||
}
|
||||
`;
|
||||
|
||||
/** 件②③ 验收工单的强调色 —— 验收绿 #0aa294(2026-08-27 用户定:与对话区验收卡同色) */
|
||||
export const ACCENT_LEDGER = `
|
||||
:root{
|
||||
--acc:#0aa294; --acc-deep:#07857a; --acc-soft:#dcf5f1; --acc-line:#aee5dd; --acc-wash:#f0fbf9;
|
||||
--glow:#2fd4c2; --glow-line:rgba(47,212,194,.34); --hero-tint:rgba(10,162,148,.32);
|
||||
--ledger:#0aa294;
|
||||
}
|
||||
`;
|
||||
|
||||
export const SHELL_CSS = `
|
||||
/* ================= 令牌与底 ================= */
|
||||
:root{
|
||||
--ink:#182430; --ink-2:#3d4c5c; --ink-3:#67788a; --ink-4:#97a5b3;
|
||||
--line:#dbe3ea; --line-soft:#e8edf3; --soft:#f5f8fa; --paper:#edf1f5;
|
||||
--board:#0e1b27; --board-2:#15263a;
|
||||
--cu:#d99a5b; --cu-deep:#b57632;
|
||||
--ok:#1e9e56; --ok-soft:#e4f7ec;
|
||||
--danger:#dd4a3a; --danger-soft:#feecea;
|
||||
--amber:#b07a10; --amber-soft:#fdf3d8;
|
||||
--cond:#5661f0; --cond-soft:#e9ebfe;
|
||||
--hero-ink:#f4f8fc; --hero-dim:rgba(226,238,248,.62);
|
||||
--mono:"SF Mono",Menlo,Consolas,monospace;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--paper);color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
|
||||
.page{margin:0;padding:0}
|
||||
.card{background:#fff;overflow:hidden;border:0;border-radius:0}
|
||||
.mono{font-family:var(--mono)}
|
||||
i{font-style:normal}
|
||||
|
||||
/* ================= 题头:电路板夜景 hero ================= */
|
||||
.card-head{
|
||||
position:relative;display:flex;flex-direction:column;gap:12px;padding:20px 22px 22px;color:var(--hero-ink);
|
||||
background:
|
||||
repeating-linear-gradient(0deg, rgba(255,255,255,.03) 0 1px, transparent 1px 28px),
|
||||
repeating-linear-gradient(90deg, rgba(255,255,255,.03) 0 1px, transparent 1px 28px),
|
||||
radial-gradient(900px 340px at 18% -40%, var(--hero-tint), transparent 62%),
|
||||
linear-gradient(158deg, #13212f 0%, var(--board) 56%, #0f1d2b 100%);
|
||||
}
|
||||
.hero-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
|
||||
.hero-sys{flex:1 1 auto;min-width:0;font-size:10.5px;font-weight:800;letter-spacing:.17em;color:var(--hero-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.hero-chips{flex:none;display:flex;gap:6px}
|
||||
.hero-tag{font-size:11px;font-weight:800;padding:2px 11px;border-radius:999px;color:#fff;background:var(--acc);box-shadow:0 4px 14px var(--glow-line);white-space:nowrap}
|
||||
.hero-step{font-size:11px;font-weight:700;padding:2px 11px;border-radius:999px;color:var(--hero-dim);border:1px solid rgba(255,255,255,.22);white-space:nowrap}
|
||||
.hero-title{margin:0;font-size:23px;font-weight:800;line-height:1.25;letter-spacing:.01em;color:#fff}
|
||||
.hero-meta{font-size:11.5px;color:var(--hero-dim)}
|
||||
.hero-meta b{font-weight:700;color:#fff}
|
||||
|
||||
/* ── hero 舞台:芯片铭牌 + 信号走线 ── */
|
||||
.stage{position:relative;display:flex;align-items:stretch;justify-content:center;gap:clamp(20px,7vw,72px);padding:14px 6px 6px}
|
||||
.stage::before{content:"";position:absolute;left:5%;right:5%;top:52%;border-top:2px dashed var(--glow-line)}
|
||||
.stage::after{content:"";position:absolute;top:52%;left:5%;width:9px;height:9px;margin-top:-4px;border-radius:999px;background:var(--glow);box-shadow:0 0 14px 3px var(--glow-line),0 0 4px 1px var(--glow);animation:sig 3.4s linear infinite}
|
||||
.stage-lab{padding-bottom:8px}
|
||||
.stage-duel{padding-top:28px}
|
||||
.hchip{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 1 176px;min-width:128px;padding:13px 12px 11px;border-radius:14px;background:rgba(255,255,255,.97);color:var(--ink);box-shadow:0 14px 30px rgba(3,10,18,.5),inset 0 1px 0 rgba(255,255,255,.7)}
|
||||
.hchip.v-absent{background:rgba(255,252,246,.97);outline:2px dashed var(--cu);outline-offset:-6px}
|
||||
.hchip-role{font-size:10.5px;font-weight:800;letter-spacing:.08em;color:var(--ink-4)}
|
||||
.hchip-pn{font-size:14.5px;font-weight:800;color:var(--ink);overflow-wrap:anywhere;text-align:center;line-height:1.3}
|
||||
.hchip-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
|
||||
.csvg{width:86px;height:auto;display:block}
|
||||
.c-body{fill:var(--board-2);stroke:rgba(217,154,91,.55);stroke-width:1.4}
|
||||
.c-pin{fill:var(--cu)}
|
||||
.c-die{fill:var(--acc);opacity:.9;animation:breathe 2.8s ease-in-out infinite}
|
||||
.c-dot{fill:rgba(255,255,255,.85)}
|
||||
.duel-type{position:absolute;z-index:1;left:50%;top:-4px;transform:translateX(-50%);font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--hero-dim);border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:2px 12px;background:rgba(10,20,30,.55);white-space:nowrap}
|
||||
.duel-type i{font-style:normal;color:#fff}
|
||||
.hero-verdict{display:flex;justify-content:center;padding:2px 0 0}
|
||||
|
||||
/* ── hero 落账席(件③):印章 + 一句话结论 ── */
|
||||
.stage-seal{position:relative;display:flex;align-items:center;justify-content:center;gap:22px;padding:12px 4px 4px;flex-wrap:wrap}
|
||||
.seal{position:relative;flex:none;width:112px;height:112px;border-radius:999px;display:grid;place-items:center}
|
||||
.seal::before{content:"";position:absolute;inset:0;border:1.6px dashed rgba(255,255,255,.34);border-radius:999px;animation:sealspin 16s linear infinite}
|
||||
.seal-core{display:grid;place-items:center;padding:7px 11px;border-radius:999px;background:rgba(255,255,255,.97);box-shadow:0 12px 26px rgba(3,10,18,.5)}
|
||||
.seal-sum{flex:1 1 240px;min-width:200px;max-width:420px;margin:0;font-size:13px;line-height:1.85;color:var(--hero-dim)}
|
||||
.seal-sum:empty::after{content:"—"}
|
||||
|
||||
/* ================= 正文分区 ================= */
|
||||
.card-bd{padding:20px 22px 8px}
|
||||
.sec{display:flex;align-items:baseline;gap:9px;margin:26px 0 10px;flex-wrap:wrap}
|
||||
.sec:first-child{margin-top:4px}
|
||||
.sec-pin{flex:none;align-self:center;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;background:var(--acc-soft);color:var(--acc-deep)}
|
||||
.zic{width:13px;height:13px;display:block}
|
||||
.sec-t{font-size:13.5px;font-weight:800;color:var(--ink);letter-spacing:.02em}
|
||||
.sec-d{flex:1 1 200px;min-width:0;font-size:11.5px;color:var(--ink-3)}
|
||||
|
||||
/* 简报卡(做什么 / 纪律…) */
|
||||
.brief{border:1px solid var(--line-soft);border-left:3px solid var(--acc);border-radius:10px;background:var(--acc-wash);padding:13px 16px;margin:0 0 4px}
|
||||
.brief p{margin:0 0 7px;font-size:12.5px;line-height:1.75;color:var(--ink-2)}
|
||||
.brief p:last-child{margin-bottom:0}
|
||||
.brief b{color:var(--ink)}
|
||||
.done,.need{display:inline-block;font-size:10.5px;font-weight:800;padding:0 8px;border-radius:999px;vertical-align:1px;margin-right:2px}
|
||||
.done{color:var(--ok);background:var(--ok-soft)}
|
||||
.need{color:var(--acc-deep);background:var(--acc-soft)}
|
||||
|
||||
/* 收尾指引 */
|
||||
.flow{margin:24px 0 14px;padding:12px 16px;border-radius:10px;border:1px dashed var(--acc-line);background:var(--acc-wash);font-size:12.5px;color:var(--ink-2);line-height:1.8}
|
||||
.flow b{color:var(--acc-deep)}
|
||||
|
||||
/* 页脚:丝印条 */
|
||||
.card-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 22px;border-top:1px solid var(--line-soft);background:var(--soft);font-size:11px;color:var(--ink-4);flex-wrap:wrap}
|
||||
.foot-r{letter-spacing:.04em}
|
||||
|
||||
/* ================= 顶部「还差什么」红带(机制:显隐认 data-blank 的空文本节点) ================= */
|
||||
.jc-gate-bar{display:flex;align-items:flex-start;gap:8px;margin:0 0 16px;padding:11px 14px;border-radius:10px;background:var(--danger-soft);border:1px solid #f5c0ba;color:var(--danger);font-size:12.5px;line-height:1.7}
|
||||
.jc-gate-bar b{font-weight:800}
|
||||
.jc-gate-bar:has(.jc-gate-text:empty){display:none}
|
||||
|
||||
/* 缺项红带 —— 与提交闸同源的必填提示,只在待处理态出现 */
|
||||
.jc-gapbar{display:none}
|
||||
html.editable .jc-gapbar{display:flex;align-items:flex-start;gap:8px;margin:0 0 10px;padding:9px 13px;border-radius:9px;background:var(--danger-soft);border:1px solid #f5c0ba;color:var(--danger);font-size:12px;line-height:1.7}
|
||||
.jc-gapbar b{font-weight:800}
|
||||
.jc-gapbar span{color:#a03d34}
|
||||
html.editable .jc-gapbar.v-0{display:none}
|
||||
|
||||
/* ================= 编辑闸与加行(只在待处理态露面) ================= */
|
||||
html:not(.editable) .jc-editgate, html:not(.editable) .jc-addrow { display: none !important; }
|
||||
.jc-editgate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;border-radius:10px;background:var(--soft);border:1px solid var(--line-soft);font-size:12px;color:var(--ink-3)}
|
||||
.jc-editgate-t{flex:1 1 auto;min-width:0}
|
||||
.jc-editgate-t b{color:var(--ink-2);font-weight:700}
|
||||
.jc-egbtn{flex:none;display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px solid var(--line);border-radius:999px;padding:6px 15px;font:inherit;font-size:12px;font-weight:700;color:var(--ink-2);background:#fff;transition:border-color .16s,color .16s,background .16s,box-shadow .16s}
|
||||
.jc-egbtn:hover{border-color:var(--acc);color:var(--acc-deep);box-shadow:0 0 0 3px var(--acc-soft)}
|
||||
.jc-egbtn:active{transform:scale(.96)}
|
||||
.jc-egbtn.save{color:#fff;background:var(--acc);border-color:var(--acc)}
|
||||
.jc-egbtn.save:hover{filter:brightness(1.06);color:#fff}
|
||||
.jc-editgate .eg-cancel,.jc-editgate .eg-save{display:none}
|
||||
.jc-editgate.on{background:var(--acc-wash);border-color:var(--acc-line);color:var(--acc-deep)}
|
||||
.jc-editgate.on .eg-open{display:none}
|
||||
.jc-editgate.on .eg-cancel,.jc-editgate.on .eg-save{display:inline-flex}
|
||||
.jc-addrow{display:none;margin:8px 0 0}
|
||||
.jc-tbl-wrap:has(table.on) + .jc-addrow { display: flex; align-items: center; gap: 8px; }
|
||||
.jc-addrow button{cursor:pointer;border:1px dashed var(--acc-line);border-radius:999px;background:var(--acc-wash);color:var(--acc-deep);font:inherit;font-size:12px;font-weight:700;padding:6px 15px;transition:border-color .16s,box-shadow .16s}
|
||||
.jc-addrow button:hover{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
|
||||
.jc-addrow button:active{transform:scale(.96)}
|
||||
.jc-addrow em{font-style:normal;font-size:11px;color:var(--ink-4)}
|
||||
|
||||
/* ================= 报告表格 ================= */
|
||||
.jc-tbl-wrap{border:1px solid var(--line-soft);border-radius:12px;background:#fff;overflow-x:auto;overflow-y:hidden}
|
||||
.jc-tbl-wrap, .tbl-wrap { overflow-x: auto; overflow-y: hidden; }
|
||||
table{width:100%;border-collapse:collapse;font-size:12.5px}
|
||||
thead th{position:static;text-align:left;font-size:10.5px;font-weight:800;letter-spacing:.07em;color:var(--ink-4);background:var(--soft);padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
|
||||
th.req::after{content:" *";color:var(--danger);font-size:10px}
|
||||
tbody td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:top;color:var(--ink-2)}
|
||||
tbody tr:last-child td{border-bottom:0}
|
||||
tbody tr:hover td{background:var(--acc-wash)}
|
||||
td.rn,td.num{font-family:var(--mono);font-size:11px;color:var(--ink-4);white-space:nowrap}
|
||||
td.mono{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
|
||||
td.cust{font-weight:700;color:var(--ink)}
|
||||
td.desc,.desc{color:var(--ink-3);font-size:12px;line-height:1.6}
|
||||
|
||||
/* 序号列交给 CSS 计数器(沙箱零脚本,增删行后自己数对;两种列名、两种包装类都接) */
|
||||
.jc-tbl-wrap table, .tbl-wrap table { counter-reset: rn; }
|
||||
.jc-tbl-wrap table td.rn, .tbl-wrap table td.rn { counter-increment: rn; }
|
||||
.jc-tbl-wrap table td.rn .jc-rn-num::before, .tbl-wrap table td.rn .jc-rn-num::before { content: counter(rn); }
|
||||
.jc-tbl-wrap table td.num, .tbl-wrap table td.num { counter-increment: rn; }
|
||||
.jc-tbl-wrap table td.num::before, .tbl-wrap table td.num::before { content: counter(rn); }
|
||||
|
||||
/* ── 看与改是两件事:只读份 / 输入孪生件由 .on 二选一 ── */
|
||||
.jc-vcell{display:block;font-size:12.5px;color:var(--ink);line-height:1.55;overflow-wrap:anywhere}
|
||||
.jc-vcell.mono{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
|
||||
.jc-vcell:empty::after{content:"—";color:var(--ink-4)}
|
||||
.jc-cell{display:none;width:100%;min-width:72px;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font:inherit;font-size:12.5px;color:var(--ink);background:#fff}
|
||||
.jc-cell:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft);outline:none}
|
||||
.jc-cell.mono{font-family:var(--mono);font-size:12px}
|
||||
input.jc-cell, select.jc-cell { height: 32px; box-sizing: border-box; padding-top: 0; padding-bottom: 0; vertical-align: middle; }
|
||||
table.on td>.jc-vcell{display:none}
|
||||
table.on td>.jc-vcell.ro{display:block}
|
||||
table.on td>.jc-cell{display:block}
|
||||
table.on td>.jc-vcell:empty::after{content:none}
|
||||
|
||||
/* 增删行的痕(取消还原三件套的可视面) */
|
||||
table.on tr.jc-row-new td { background: #f0fbf5; }
|
||||
table.on tr.jc-row-gone td { background: #fff6f5; opacity: .55; }
|
||||
table.on tr.jc-row-gone .jc-cell { text-decoration: line-through; color: var(--ink-3); }
|
||||
.jc-rowdel{display:none;cursor:pointer;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink-3);width:20px;height:20px;line-height:1;font-size:12px;padding:0;margin-left:5px;vertical-align:middle}
|
||||
table.on .jc-rowdel{display:inline-grid;place-items:center}
|
||||
.jc-rowdel:hover{border-color:var(--danger);color:var(--danger)}
|
||||
table.on tr.jc-row-gone .jc-rowdel { border-color: var(--danger); color: var(--danger); background: #fff; }
|
||||
|
||||
/* 静态种子行:零行也加得出第一行 —— 只在编辑态露面(读态看见空壳子是界面撒谎) */
|
||||
table:not(.on) tr.jc-row-static { display: none; }
|
||||
table.on tr.jc-row-static td{background:var(--acc-wash);border-top:1px dashed var(--acc-line)}
|
||||
|
||||
/* 主键钥匙格:不给人看,但真挂 data-col(漏了钥匙,这一行凑不出主键) */
|
||||
.rowkey{display:none}
|
||||
|
||||
/* ================= 徽标基座(取值上色一律 data-class-of 投影,选择器从值算) ================= */
|
||||
.stx,.ct,.rl,.st,.risk-badge{display:inline-block;font-size:11px;font-weight:700;padding:1px 9px;border-radius:999px;border:1px solid transparent;white-space:nowrap}
|
||||
.rl{background:var(--soft);border-color:var(--line-soft);color:var(--ink-3);font-size:10.5px;letter-spacing:.03em}
|
||||
.rec{display:inline-block;font-size:11.5px;font-weight:800;padding:2px 13px;border-radius:999px;border:1px solid transparent;white-space:nowrap}
|
||||
.rec.rec-lg{font-size:14.5px;padding:7px 20px;letter-spacing:.03em}
|
||||
|
||||
/* kv 行(收口结论 / 待验项共用的键值版式) */
|
||||
.kv{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px}
|
||||
.kv:last-child{border-bottom:0}
|
||||
.kv i{flex:0 0 84px;font-style:normal;color:var(--ink-4);font-size:11px;font-weight:700;letter-spacing:.05em;padding-top:2px}
|
||||
.kv > span{flex:1 1 auto;color:var(--ink-2);line-height:1.7;overflow-wrap:anywhere}
|
||||
.kv > span:empty::after{content:"—";color:var(--ink-4)}
|
||||
.kv-box{border:1px solid var(--line-soft);border-radius:12px;background:var(--soft);padding:4px 16px;margin-bottom:4px}
|
||||
|
||||
/* ================= 动画(全部 transform / opacity;reduced-motion 全静) ================= */
|
||||
@keyframes sig{0%{transform:translateX(0);opacity:0}7%{opacity:1}93%{opacity:1}100%{transform:translateX(min(86vw,760px));opacity:0}}
|
||||
@keyframes breathe{0%,100%{opacity:.55}50%{opacity:1}}
|
||||
@keyframes sealspin{to{transform:rotate(360deg)}}
|
||||
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
|
||||
.hero-top{animation:rise .5s cubic-bezier(.2,.7,.3,1) both}
|
||||
.hero-title{animation:rise .5s .06s cubic-bezier(.2,.7,.3,1) both}
|
||||
.stage,.stage-seal{animation:rise .55s .14s cubic-bezier(.2,.7,.3,1) both}
|
||||
.hero-verdict,.hero-meta{animation:rise .55s .22s cubic-bezier(.2,.7,.3,1) both}
|
||||
@media (prefers-reduced-motion: reduce){
|
||||
*{animation:none !important;transition:none !important}
|
||||
}
|
||||
|
||||
/* ================= 窄屏 ================= */
|
||||
@media(max-width:620px){
|
||||
.card-head{padding:16px 14px 18px}
|
||||
.card-bd{padding:16px 14px 6px}
|
||||
.hero-title{font-size:19.5px}
|
||||
.stage{gap:14px}
|
||||
.hchip{min-width:108px;padding:10px 8px 9px}
|
||||
.csvg{width:68px}
|
||||
.kv i{flex-basis:72px}
|
||||
.card-foot{padding:10px 14px}
|
||||
}
|
||||
`;
|
||||
Reference in New Issue
Block a user