| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599 |
- /* ============================================================
- * lib/theme/base.css · 全局基础层
- * reset + 全屏 .screen 容器 + 通用演绎类(暗/浅由 tokens.css 驱动)
- * 纪律:本文件不出现十六进制色值,只用 var(--...)。
- * ============================================================ */
- /* ---------- Reset ---------- */
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
- html, body { height: 100%; }
- body {
- font-family: var(--font-body);
- background: var(--bg-0);
- color: var(--text-2);
- overflow: hidden; /* 屏内定位,不滚动页面 */
- -webkit-font-smoothing: antialiased;
- line-height: 1.6;
- }
- h1,h2,h3,h4 { font-family: var(--font-display); font-weight: var(--font-display-weight); color: var(--text-1); line-height: 1.25; }
- img, video { max-width: 100%; display: block; }
- a { color: var(--brand-1); text-decoration: none; }
- button { font-family: inherit; cursor: pointer; }
- /* ---------- 屏幕容器(16:9 / 16:10 全屏) ---------- */
- .screen {
- width: 100vw;
- height: var(--screen-h);
- overflow: hidden;
- position: relative;
- display: flex;
- align-items: center;
- justify-content: center;
- background: var(--bg-0);
- }
- .screen[data-tl] > .s-wrap { visibility: hidden; } /* 初始隐藏,时间线表演(deck 取消) */
- .screen[data-tl].in > .s-wrap { visibility: visible; }
- .s-wrap {
- width: 82%;
- max-width: 1720px;
- height: 88%;
- position: relative; /* 插画/飘浮物定位锚点(absolute 元素贴内容容器而非叠放屏) */
- display: flex;
- flex-direction: column;
- justify-content: center;
- gap: clamp(14px, 2.2vh, 28px);
- }
- /* ---------- 屏内基础元素 ---------- */
- .s-tag {
- font-family: var(--font-mono);
- font-size: clamp(12px, 1.2vw, 16px);
- letter-spacing: .14em;
- color: var(--brand-1);
- text-transform: uppercase;
- }
- .s-title { font-size: clamp(30px, 3.6vw, 52px); }
- .s-sub { font-size: clamp(16px, 1.5vw, 22px); color: var(--text-3); max-width: 78%; }
- .s-body { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, 1.8vh, 22px); }
- /* ---------- 双栏编导布局:内容列 + 插画列(插画参与布局,天然不重叠) ---------- */
- .s-split { flex: 1; min-height: 0; display: flex; flex-direction: row; align-items: center; gap: clamp(20px, 3vw, 44px); }
- .s-split > .s-main { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, 1.8vh, 22px); }
- .s-split > .s-side { flex: none; width: clamp(190px, 24vw, 360px); display: flex; align-items: center; justify-content: center; }
- .s-split > .s-side svg.ill, .s-split > .s-side .ill { position: static; width: 100%; height: auto; }
- /* 窄屏(16:10 或小窗)时插画列收窄、靠边,避免挤压正文 */
- .s-split > .s-side.wide { width: clamp(240px, 30vw, 460px); }
- .s-split > .s-side.narrow { width: clamp(150px, 18vw, 280px); }
- @media (max-width: 1100px) { .s-split { gap: 16px; } .s-split > .s-side { width: clamp(150px, 20vw, 260px); } }
- /* 插画列内部:可叠加角标 / 说明文字(.s-cap 图注) */
- .s-side .s-cap { position: absolute; left: 0; right: 0; bottom: -24px; text-align: center; font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--text-4); }
- .s-foot {
- font-family: var(--font-mono);
- font-size: clamp(12px, 1.1vw, 15px);
- color: var(--text-4);
- letter-spacing: .06em;
- text-align: right;
- }
- /* 素材屏底部来源标注(放 .s-main 内,紧贴卡片下方) */
- .s-foot-note {
- font-family: var(--font-mono);
- font-size: clamp(10px, .9vw, 12px);
- color: var(--text-4);
- margin-top: 6px;
- }
- /* ---------- 通用卡片 / 网格 / 标签 ---------- */
- .card {
- background: var(--bg-2);
- border: 1px solid var(--border-subtle);
- border-radius: var(--radius-card);
- padding: clamp(16px, 2vw, 28px);
- box-shadow: var(--shadow-card);
- }
- .card.gold { border-color: var(--border-strong); }
- .card.warn { border-color: var(--border-focus); }
- .card.hi { box-shadow: var(--shadow-glow); }
- .grid { display: grid; gap: clamp(14px, 1.6vw, 22px); }
- .grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
- .grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
- .grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
- .tag {
- display: inline-flex; align-items: center; gap: 6px;
- font-family: var(--font-mono);
- font-size: clamp(11px, 1vw, 14px);
- color: var(--brand-1);
- border: 1px solid var(--border-strong);
- background: var(--bg-2);
- border-radius: var(--radius-sm);
- padding: 2px 10px;
- white-space: nowrap;
- }
- .tag.ok { color: var(--brand-ok); border-color: rgba(127,209,160,.4); }
- .tag.brand-2 { color: var(--brand-2); border-color: rgba(175,138,232,.4); }
- .notice {
- font-size: clamp(15px, 1.4vw, 19px);
- color: var(--text-2);
- border-left: 3px solid var(--brand-1);
- padding: 6px 0 6px 16px;
- background: var(--bg-2);
- }
- .notice.warn { border-left-color: var(--brand-3); color: var(--brand-3); font-weight: 600; }
- /* ---------- 模型图例(显化思维模型:符号 / 颜色含义) ----------
- 用法:模型图下方放 `.model-legend`,内放 `.model-legend .li`(`.sw` 色块 / `.ln` 线 / `.sym` 符号 + 文字)。
- 图例是「让模型可读」的最小契约:观众先看懂符号,再读图。 */
- .model-legend {
- display: flex; flex-wrap: wrap; gap: clamp(6px, .8vw, 10px) clamp(14px, 2vw, 28px);
- align-items: center; justify-content: center;
- padding: clamp(8px, 1.2vh, 12px) clamp(14px, 1.6vw, 22px);
- background: var(--bg-1); border: 1px solid var(--border-subtle);
- border-radius: var(--radius-sm);
- font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px);
- color: var(--text-3);
- }
- .model-legend .li { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
- .model-legend .li b { color: var(--text-2); font-weight: 600; }
- .model-legend .sw { width: 15px; height: 15px; border-radius: 3px; flex: none; border: 1px solid var(--border-subtle); }
- .model-legend .sw.gold { background: var(--brand-1); }
- .model-legend .sw.purple { background: var(--brand-2); }
- .model-legend .sw.red { background: var(--brand-3); }
- .model-legend .sw.green { background: var(--brand-ok); }
- .model-legend .sw.gray { background: var(--bg-3); border-color: var(--border-subtle); }
- .model-legend .sw.line { background: transparent; border: 1.5px solid var(--brand-1); }
- .model-legend .sw.dash { background: transparent; border: 1.5px dashed var(--brand-3); }
- .model-legend .ln { width: 20px; height: 0; border-top: 3px solid var(--brand-2); flex: none; }
- .model-legend .ln.red { border-color: var(--brand-3); }
- .model-legend .ln.gold { border-color: var(--brand-1); }
- .model-legend .ln.dash { border-top-style: dashed; }
- .model-legend .sym { font-size: clamp(13px, 1.1vw, 16px); color: var(--brand-1-hi); font-weight: 700; flex: none; line-height: 1; }
- .model-legend .sym.red { color: var(--brand-3); }
- /* 模型标签:模型图上方的「点名」小标签(编号 + 模型名) */
- .model-tag {
- display: inline-flex; align-items: center; gap: 8px;
- font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px);
- color: var(--brand-1); letter-spacing: .12em;
- border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
- padding: 4px 12px; margin-bottom: 4px;
- }
- .model-tag .no { color: var(--brand-2); }
- .model-tag.green { color: var(--brand-ok); border-color: rgba(127,209,160,.4); }
- /* ---------- 思维模型卡(显化思维模型:点名屏) ----------
- 结构:.model-map(grid) > .mm-item(card) > .mm-n(模型名) + .mm-t(核心判断) + .mm-d(展开)。
- 层式模型化:编号模型名(mono)+ 核心判断(display 大字)+ 展开(正文),品牌强调色描边,暗/浅双主题。 */
- .model-map {
- display: grid; gap: clamp(12px, 1.6vw, 20px); width: 100%;
- }
- .model-map.cols { grid-template-columns: 1fr 1fr; }
- .mm-item {
- position: relative;
- background: linear-gradient(180deg, var(--bg-2), var(--bg-1));
- border: 1px solid var(--border-subtle);
- border-left: 4px solid var(--brand-2);
- border-radius: var(--radius-card);
- padding: clamp(14px, 1.8vw, 24px) clamp(16px, 2vw, 28px);
- box-shadow: var(--shadow-card);
- }
- .mm-item.hot { border-color: var(--border-strong); border-left-color: var(--brand-1); }
- .mm-item.warn { border-left-color: var(--brand-3); }
- .mm-item.ok { border-left-color: var(--brand-ok); }
- .mm-item .mm-n {
- font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px);
- color: var(--brand-2); letter-spacing: .12em; font-weight: 700;
- }
- .mm-item.hot .mm-n { color: var(--brand-1); }
- .mm-item .mm-t {
- font-family: var(--font-display); font-weight: var(--font-display-weight);
- font-size: clamp(17px, 1.9vw, 26px); color: var(--text-1);
- margin: 6px 0 8px; line-height: 1.35;
- }
- .mm-item .mm-d { font-size: clamp(13px, 1.25vw, 17px); color: var(--text-2); line-height: 1.75; }
- .mm-item .mm-d b { color: var(--brand-1); font-weight: 600; }
- .mm-item .mm-d .hl { color: var(--brand-1-hi); }
- /* ---------- 数据速览(stat-band) ---------- */
- .stat-band { display: flex; gap: clamp(20px, 3vw, 48px); align-items: stretch; }
- .stat {
- flex: 1; min-width: 0;
- background: var(--bg-2);
- border: 1px solid var(--border-subtle);
- border-radius: var(--radius-card);
- padding: clamp(14px, 1.8vw, 24px);
- }
- .stat .num {
- font-family: var(--font-mono);
- font-size: clamp(34px, 4.6vw, 68px);
- font-weight: 800;
- color: var(--brand-1);
- line-height: 1.1;
- font-variant-numeric: tabular-nums;
- }
- .stat .num.hero { color: var(--text-1); }
- .stat .label { margin-top: 6px; font-size: clamp(12px, 1.1vw, 15px); color: var(--text-3); }
- .stat .src { margin-top: 2px; font-size: clamp(10px, .9vw, 12px); color: var(--text-4); }
- /* ---------- 链路 / 流程(chain) ---------- */
- .chain { display: flex; align-items: stretch; gap: clamp(10px, 1.2vw, 18px); }
- .chain .node {
- flex: 1; text-align: center;
- border: 1px solid var(--border-subtle);
- border-radius: var(--radius-card);
- padding: clamp(12px, 1.6vw, 22px);
- background: var(--bg-2);
- position: relative;
- }
- .chain .node .k { font-family: var(--font-mono); font-size: clamp(10px, .95vw, 13px); color: var(--text-4); letter-spacing: .12em; }
- .chain .node .v { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-1); font-weight: 600; margin-top: 4px; }
- .chain .node.on { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
- .chain .node.wall { border-color: rgba(255,0,0,.45); }
- .chain .arrow {
- display: flex; align-items: center; color: var(--brand-1-hi);
- font-size: clamp(16px, 1.5vw, 22px); font-weight: 700;
- }
- /* ---------- 左右对比(duel) ---------- */
- .duel { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2.2vw, 32px); align-items: stretch; }
- .duel .side {
- border-radius: var(--radius-card);
- padding: clamp(16px, 2vw, 28px);
- border: 1px solid var(--border-subtle);
- background: var(--bg-2);
- }
- .duel .side.bad { border-color: rgba(255,0,0,.45); }
- .duel .side.good { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
- .duel .side h3 { font-size: clamp(16px, 1.5vw, 22px); margin-bottom: 10px; }
- .duel .side.bad h3 { color: var(--brand-3); }
- .duel .side.good h3 { color: var(--brand-1); }
- .duel .side .vs { font-family: var(--font-mono); color: var(--text-4); font-size: clamp(12px, 1vw, 14px); letter-spacing: .1em; }
- /* ---------- 金句(quote-line) ---------- */
- .quote-line {
- font-family: var(--font-display);
- font-size: clamp(24px, 2.8vw, 40px);
- font-weight: var(--font-display-weight);
- color: var(--text-1);
- line-height: 1.4;
- }
- .quote-line .hl { background: var(--gradient-text); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
- .quote-line .src { display: block; margin-top: 10px; font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--text-4); -webkit-text-fill-color: var(--text-4); }
- /* ---------- 诚实边界(truth-table) ---------- */
- .truth-table { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2vw, 28px); }
- .truth-table .col { border-radius: var(--radius-card); padding: clamp(16px, 2vw, 26px); background: var(--bg-2); border: 1px solid var(--border-subtle); }
- .truth-table .col.confirmed { border-color: rgba(127,209,160,.4); }
- .truth-table .col.pending { border-color: rgba(175,138,232,.4); }
- .truth-table .col h3 { font-size: clamp(15px, 1.4vw, 20px); margin-bottom: 10px; }
- .truth-table .confirmed h3 { color: var(--brand-ok); }
- .truth-table .pending h3 { color: var(--brand-2); }
- .truth-table li { list-style: none; padding: 4px 0 4px 18px; position: relative; font-size: clamp(13px, 1.2vw, 17px); color: var(--text-2); }
- .truth-table li::before { content: attr(data-mark); position: absolute; left: 0; font-family: var(--font-mono); }
- /* ---------- 步骤带(chip-steps) ---------- */
- .chip-steps { display: flex; gap: clamp(8px, .9vw, 14px); flex-wrap: wrap; }
- .chip {
- font-family: var(--font-mono);
- font-size: clamp(13px, 1.2vw, 17px);
- padding: 8px 18px;
- border-radius: var(--radius-pill);
- border: 1px solid var(--border-subtle);
- background: var(--bg-2);
- color: var(--text-2);
- }
- .chip.on { border-color: var(--border-strong); color: var(--brand-1); box-shadow: var(--shadow-glow); }
- .chip.warn { border-color: rgba(255,0,0,.45); color: var(--brand-3); }
- .chip .n { opacity: .6; margin-right: 6px; }
- /* ---------- 业务三环(loop3) ---------- */
- .loop3 { display: flex; justify-content: center; align-items: center; gap: clamp(18px, 2.4vw, 34px); }
- .loop3 .ring {
- width: clamp(120px, 15vw, 210px); height: clamp(120px, 15vw, 210px);
- border-radius: 50%;
- border: 2px dashed var(--border-subtle);
- display: flex; flex-direction: column; align-items: center; justify-content: center;
- gap: 4px; text-align: center; padding: 10px;
- background: var(--bg-2);
- }
- .loop3 .ring.on { border-color: var(--border-strong); border-style: solid; box-shadow: var(--shadow-glow); }
- .loop3 .ring .t { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-1); font-weight: 700; }
- .loop3 .ring .d { font-size: clamp(10px, .95vw, 13px); color: var(--text-3); }
- .loop3 .loop-arrow { font-size: clamp(18px, 1.8vw, 26px); color: var(--brand-1-hi); font-weight: 700; }
- /* ---------- 反转序列(reversal) ---------- */
- .reversal { display: flex; flex-direction: column; gap: clamp(10px, 1.4vh, 16px); }
- .reversal .rv {
- display: flex; align-items: baseline; gap: 14px;
- border: 1px solid var(--border-subtle);
- border-left: 3px solid var(--brand-2);
- border-radius: var(--radius-card);
- padding: clamp(10px, 1.4vw, 16px) clamp(16px, 1.8vw, 24px);
- background: var(--bg-2);
- }
- .reversal .rv.on { border-left-color: var(--brand-1); }
- .reversal .rv .n { font-family: var(--font-mono); color: var(--brand-2); font-size: clamp(14px, 1.3vw, 18px); font-weight: 700; }
- .reversal .rv.on .n { color: var(--brand-1); }
- .reversal .rv .t { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-2); }
- /* ---------- 目录卡(toccard) ---------- */
- .toccard-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 1.6vw, 22px); }
- .toccard {
- display: block;
- background: var(--bg-2);
- border: 1px solid var(--border-subtle);
- border-radius: var(--radius-card);
- padding: clamp(16px, 1.8vw, 24px);
- color: var(--text-2);
- transition: transform .3s var(--ease-out), border-color .3s, box-shadow .3s;
- }
- .toccard:hover { transform: translateY(-4px); border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
- .toccard .no { font-family: var(--font-mono); color: var(--brand-1); font-size: clamp(11px, 1vw, 14px); letter-spacing: .12em; }
- .toccard .ti { font-size: clamp(16px, 1.5vw, 21px); font-family: var(--font-display); color: var(--text-1); font-weight: var(--font-display-weight); margin: 6px 0 4px; }
- .toccard .de { font-size: clamp(12px, 1.1vw, 15px); color: var(--text-3); }
- /* ---------- 画像对拍(profile-match) ---------- */
- .match { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2vw, 28px); }
- .match .col { border-radius: var(--radius-card); border: 1px solid var(--border-subtle); background: var(--bg-2); padding: clamp(16px, 1.8vw, 24px); }
- .match .col h3 { font-size: clamp(15px, 1.4vw, 20px); margin-bottom: 12px; }
- .match .col.worker h3 { color: var(--brand-1); }
- .match .col.job h3 { color: var(--brand-2); }
- .match .col .tags { display: flex; flex-wrap: wrap; gap: 8px; }
- .match .col .tags .tag { opacity: .55; }
- .match .col .tags .tag.on { opacity: 1; }
- /* ---------- 通用演绎类 · 增补(卡片/对比/引文/数据) ---------- */
- .card.ok { border-color: var(--border-ok); }
- .card.danger{ border-color: var(--border-danger); }
- .card .k {
- font-family: var(--font-mono);
- font-size: clamp(11px, .95vw, 13px);
- letter-spacing: .14em;
- color: var(--brand-1);
- margin-bottom: 8px;
- text-transform: uppercase;
- }
- .card .k.red { color: var(--brand-3); }
- .card .k.gold { color: var(--brand-1-hi); }
- .card .k.green { color: var(--brand-ok); }
- .card .k.purple{ color: var(--brand-2); }
- .s-tag.red { color: var(--brand-3); }
- .s-tag.purple{ color: var(--brand-2); }
- .hl { background: var(--gradient-text); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
- .red { color: var(--brand-3); }
- .green { color: var(--brand-ok); }
- /* ---------- 金句卡(quote) ---------- */
- .quote {
- border-left: 3px solid var(--brand-1);
- background: var(--bg-2);
- padding: clamp(14px, 1.8vw, 22px) clamp(18px, 2vw, 28px);
- border-radius: var(--radius-card);
- }
- .quote p {
- font-family: var(--font-display);
- font-size: clamp(18px, 1.9vw, 26px);
- color: var(--text-1);
- line-height: 1.5;
- font-weight: var(--font-display-weight);
- }
- .quote p b { color: var(--brand-1); }
- .quote .q-src {
- display: block;
- margin-top: 10px;
- font-family: var(--font-mono);
- font-size: clamp(11px, 1vw, 14px);
- color: var(--text-4);
- }
- /* ---------- 左右分栏(split) ---------- */
- .split { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(18px, 2.2vw, 32px); align-items: center; }
- .split > * { min-width: 0; }
- /* ---------- 编号步骤带(steps) ---------- */
- .steps { display: flex; gap: clamp(8px, .9vw, 14px); align-items: stretch; flex-wrap: wrap; }
- .step {
- flex: 1; min-width: 150px;
- border: 1px solid var(--border-subtle);
- background: var(--bg-2);
- border-radius: var(--radius-card);
- padding: clamp(12px, 1.4vw, 18px);
- position: relative;
- }
- .step .s-n { font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--brand-1); }
- .step .s-n.red { color: var(--brand-3); }
- .step .s-t { font-size: clamp(14px, 1.3vw, 18px); color: var(--text-1); font-weight: 600; margin: 4px 0 4px; }
- .step p { font-size: clamp(11px, 1vw, 14px); color: var(--text-3); }
- .step::after {
- content: '→';
- position: absolute; right: -9px; top: 50%;
- transform: translateY(-50%);
- color: var(--brand-1-hi);
- font-family: var(--font-mono);
- z-index: 2;
- }
- .step:last-child::after { content: ''; }
- /* ---------- 前后对比(ba) ---------- */
- .ba { display: grid; grid-template-columns: 1fr 46px 1fr; align-items: stretch; }
- .ba-box {
- border: 1px solid var(--border-subtle);
- background: var(--bg-2);
- border-radius: var(--radius-card);
- padding: clamp(14px, 1.6vw, 22px);
- }
- .ba-before { border-color: var(--border-danger); }
- .ba-after { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
- .ba-arrow { display: flex; align-items: center; justify-content: center; font-size: clamp(18px, 1.8vw, 26px); color: var(--brand-1-hi); }
- .ba-box .bh { font-family: var(--font-mono); font-size: clamp(10px, .95vw, 13px); letter-spacing: .12em; margin-bottom: 8px; color: var(--brand-3); }
- .ba-after .bh { color: var(--brand-1); }
- .ba-box .bv { font-size: clamp(13px, 1.2vw, 17px); font-weight: 600; color: var(--text-1); line-height: 1.55; }
- .ba-box .bv b { color: var(--brand-1); }
- /* ---------- 业务三环 · 方块变体(loop3.l3) ---------- */
- .loop3 .l3 {
- width: clamp(150px, 18vw, 260px);
- border: 1px solid var(--border-subtle);
- background: var(--bg-2);
- border-radius: var(--radius-card);
- padding: clamp(14px, 1.8vw, 22px);
- text-align: center;
- }
- .loop3 .l3.on { border-color: var(--border-strong); box-shadow: var(--shadow-glow); }
- .loop3 .l3-k { font-family: var(--font-mono); font-size: clamp(10px, .9vw, 13px); color: var(--brand-2); letter-spacing: .12em; }
- .loop3 .l3.on .l3-k { color: var(--brand-1); }
- .loop3 .l3-t { font-size: clamp(15px, 1.4vw, 20px); color: var(--text-1); font-weight: 700; margin: 4px 0; }
- .loop3 .l3 p { font-size: clamp(11px, 1vw, 14px); color: var(--text-3); }
- /* ---------- 反转序列 · 正文变体 ---------- */
- .reversal .rv .d { font-size: clamp(12px, 1.1vw, 15px); color: var(--text-3); margin-top: 2px; }
- /* ---------- 翻车版 vs 人味版(rw) ---------- */
- .rw { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(12px, 1.4vw, 18px); }
- .rw-box { border: 1px solid var(--border-subtle); border-radius: var(--radius-card); padding: clamp(14px, 1.6vw, 20px); }
- .rw-o { border-color: var(--border-danger); }
- .rw-n { border-color: var(--border-ok); }
- .rw-h { font-family: var(--font-mono); font-size: clamp(10px, .95vw, 13px); letter-spacing: .1em; margin-bottom: 8px; color: var(--brand-3); }
- .rw-n .rw-h { color: var(--brand-ok); }
- .rw-t { font-size: clamp(13px, 1.2vw, 17px); line-height: 1.7; color: var(--text-1); }
- .rw-t b { color: var(--brand-1); }
- .rw-d { font-size: clamp(11px, 1vw, 14px); color: var(--text-4); margin-top: 8px; font-family: var(--font-mono); }
- /* ---------- KPI 数字条(kpis) ---------- */
- .kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(10px, 1.2vw, 16px); }
- .kpi {
- border: 1px solid var(--border-subtle);
- background: var(--bg-2);
- border-radius: var(--radius-card);
- padding: clamp(12px, 1.4vw, 18px);
- text-align: center;
- }
- .kpi .kp-v { font-family: var(--font-mono); font-weight: 900; font-size: clamp(20px, 2.4vw, 34px); color: var(--brand-1); line-height: 1.1; font-variant-numeric: tabular-nums; }
- .kpi .kp-v.up { color: var(--brand-ok); }
- .kpi .kp-v.down { color: var(--brand-3); }
- .kpi .kp-l { font-family: var(--font-mono); font-size: clamp(10px, .9vw, 12px); color: var(--text-3); margin-top: 6px; }
- .kpi .kp-s { font-size: clamp(10px, .9vw, 12px); color: var(--text-4); margin-top: 2px; }
- /* ---------- 小标签行(vtag) ---------- */
- .vtag {
- display: inline-flex; align-items: center; gap: 8px;
- margin-bottom: 10px;
- font-family: var(--font-mono);
- font-size: clamp(10px, .95vw, 13px);
- color: var(--brand-1);
- letter-spacing: .12em;
- }
- .vtag::before { content: ''; width: 26px; height: 1px; background: var(--brand-1); }
- /* ---------- 顶栏(主题按钮 / 章节 tab,deck 渲染) ---------- */
- .deck-topbar {
- position: fixed; top: 0; left: 0; right: 0; z-index: 50;
- display: flex; align-items: center; justify-content: space-between; gap: 14px;
- padding: 10px 22px;
- pointer-events: none;
- }
- .deck-left { display: flex; align-items: center; flex-shrink: 0; }
- .deck-tabs {
- display: flex; gap: 6px; overflow-x: auto; pointer-events: auto;
- flex: 1 1 auto; min-width: 0;
- /* 两侧预留位:右 = 品牌 logo,左 = 主题按钮;并隐藏 x 滚动条 */
- padding-left: clamp(12px, 1.5vw, 32px);
- padding-right: clamp(56px, 6vw, 120px);
- scrollbar-width: none;
- }
- .deck-tabs::-webkit-scrollbar { display: none; }
- .deck-tab {
- font-family: var(--font-mono);
- font-size: 12px;
- padding: 4px 12px;
- border-radius: var(--radius-pill);
- border: 1px solid transparent;
- color: var(--text-3);
- background: transparent;
- white-space: nowrap;
- }
- .deck-tab.cur { color: var(--brand-1); border-color: var(--border-strong); background: var(--bg-2); }
- .theme-toggle {
- pointer-events: auto;
- display: inline-flex; align-items: center; justify-content: center;
- width: 34px; height: 30px; padding: 0;
- color: var(--text-3);
- border: 1px solid var(--border-subtle);
- border-radius: var(--radius-pill);
- background: var(--glass-bg);
- backdrop-filter: blur(var(--glass-blur));
- cursor: pointer;
- }
- .theme-toggle:hover { color: var(--brand-1); border-color: var(--border-strong); }
- .theme-toggle svg { flex-shrink: 0; }
- .deck-right { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
- /* 右上角品牌 logo(960×105 横条,theme.js 随主题切换暗/浅两图) */
- .hd-logo {
- height: clamp(20px, 2.4vh, 30px);
- width: auto;
- aspect-ratio: 960 / 105;
- object-fit: contain;
- flex-shrink: 0;
- }
- /* ---------- 底部进度条(deck 渲染) ---------- */
- .deck-bottom {
- position: fixed; bottom: 0; left: 0; right: 0; z-index: 50;
- display: flex; align-items: center; gap: 16px;
- padding: 10px 22px;
- pointer-events: none;
- }
- .deck-progress {
- flex: 1; height: 3px; border-radius: 2px;
- background: var(--bg-2); overflow: hidden;
- }
- .deck-progress .bar {
- height: 100%; width: 0%;
- background: var(--brand-1);
- transition: width .4s var(--ease-out);
- }
- .deck-pos { font-family: var(--font-mono); font-size: 12px; color: var(--text-4); font-variant-numeric: tabular-nums; }
- .deck-pagename { font-family: var(--font-mono); font-size: 12px; color: var(--text-3); }
- /* ---------- 水平柱状(bar-row)渠道价 / 对比 ---------- */
- .bar-row { display: grid; grid-template-columns: 130px 1fr 96px; gap: clamp(8px, .9vw, 14px); align-items: center; }
- .bar-l { font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--text-3); text-align: right; }
- .bar-track { height: clamp(14px, 2vh, 20px); background: var(--bg-2); border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); overflow: hidden; }
- .bar { height: 100%; width: 0%; background: var(--gradient-brand); border-radius: var(--radius-sm); }
- .bar.on { background: var(--brand-1-hi); }
- .bar-v { font-family: var(--font-mono); font-size: clamp(11px, 1vw, 14px); color: var(--brand-1); font-variant-numeric: tabular-nums; }
- /* ---------- 环形仪表(gauge)线上化率 ---------- */
- .gauge-wrap { display: flex; flex-direction: column; align-items: center; gap: clamp(12px, 1.6vh, 18px); margin: 6px 0; }
- .gauge {
- width: clamp(150px, 18vw, 240px); height: clamp(150px, 18vw, 240px);
- border-radius: 50%;
- display: flex; align-items: center; justify-content: center;
- position: relative;
- background:
- radial-gradient(closest-side, var(--bg-0) 79%, transparent 80% 99%),
- conic-gradient(var(--brand-1) var(--g, 13%), var(--bg-2) 0);
- }
- .gauge-num { font-family: var(--font-mono); font-size: clamp(34px, 4.6vw, 64px); font-weight: 800; color: var(--brand-1); font-variant-numeric: tabular-nums; }
- .gauge-tags { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
- /* ---------- 多镜头转场(frames,同屏多幕推进) ---------- */
- .frames { flex: 1; display: flex; flex-direction: column; justify-content: center; }
- .frames .frame { display: flex; flex-direction: column; justify-content: center; gap: clamp(12px, 1.8vh, 22px); }
- /* ---------- 辅助 ---------- */
- .mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
- .big { font-size: clamp(40px, 6vw, 88px); }
- .gold { color: var(--brand-1); }
- .center { text-align: center; }
- .flex { display: flex; align-items: center; gap: 14px; }
- .between { justify-content: space-between; }
- .wrap { flex-wrap: wrap; }
- .mt { margin-top: 16px; }
|