feat: ship dual-signed online module marketplace

This commit is contained in:
冰朔 2026-08-19 18:24:50 +08:00
commit b0eeade03d
40 changed files with 5774 additions and 111 deletions

View file

@ -331,6 +331,49 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
.receipt-row b { color: var(--content-secondary); font-size: 14px; font-weight: 590; }
.receipt-row small { margin-top: 6px; color: var(--content-muted); font-size: 12px; }
.system-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.human-authorization-layout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr); gap: 18px; margin-bottom: 18px; }
.authorization-primary { grid-row: span 2; }
.plain-panel header .kicker { display: block; margin-bottom: 8px; color: var(--accent-light); font-size: 10px; font-weight: 750; letter-spacing: .14em; }
.status-chip.attention { border-color: color-mix(in srgb, var(--warn) 48%, transparent); color: var(--warn); background: color-mix(in srgb, var(--warn) 10%, transparent); }
.authorization-empty { display: grid; gap: 7px; min-height: 128px; place-content: center; margin-top: 18px; padding: 24px; border: 1px dashed var(--panel-edge); border-radius: 14px; text-align: center; }
.authorization-empty b { color: var(--content-primary); font-size: 16px; }
.authorization-empty span { color: var(--content-muted); font-size: 13px; }
.authorization-empty.compact { min-height: 94px; }
.authorization-list { display: grid; gap: 14px; margin-top: 20px; }
.authorization-card { padding: 18px; border: 1px solid color-mix(in srgb, var(--accent-light) 24%, var(--panel-edge)); border-radius: 14px; background: color-mix(in srgb, var(--primitive-glass) 80%, transparent); }
.authorization-card-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.authorization-card-title small { color: var(--accent-light); font-weight: 700; }
.authorization-card-title h3 { margin: 5px 0 4px; color: var(--content-primary); font-size: 18px; }
.authorization-card-title code { color: var(--content-muted); font-size: 11px; overflow-wrap: anywhere; }
.authorization-card-title > span { flex: none; padding: 5px 9px; border-radius: 999px; color: var(--warn); background: color-mix(in srgb, var(--warn) 10%, transparent); font-size: 11px; }
.authorization-card dl { display: grid; gap: 10px; margin: 18px 0; }
.authorization-card dl div { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 12px; }
.authorization-card dt { color: var(--content-muted); font-size: 12px; }
.authorization-card dd { margin: 0; color: var(--content-secondary); font-size: 13px; line-height: 1.55; }
.authorization-actions { display: flex; justify-content: flex-end; gap: 10px; }
.authorization-actions button { min-height: 38px; padding: 0 15px; }
.collaboration-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 20px 0 14px; }
.collaboration-summary div { display: grid; gap: 3px; padding: 13px 10px; border-radius: 11px; background: var(--primitive-glass); text-align: center; }
.collaboration-summary b { color: var(--content-primary); font-size: 18px; }
.collaboration-summary span { color: var(--content-muted); font-size: 11px; }
.session-projection-list { display: grid; gap: 7px; }
.session-projection-list article { display: grid; grid-template-columns: 9px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 10px 2px; border-bottom: 1px solid var(--panel-edge); }
.session-projection-list i { width: 8px; height: 8px; border-radius: 50%; background: var(--content-muted); }
.session-projection-list i.live { background: var(--good); box-shadow: 0 0 10px color-mix(in srgb, var(--good) 70%, transparent); }
.session-projection-list div { display: grid; gap: 3px; min-width: 0; }
.session-projection-list b { overflow: hidden; color: var(--content-primary); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.session-projection-list span, .session-projection-list em { color: var(--content-muted); font-size: 11px; font-style: normal; }
.authorization-history, .system-diagnostics { grid-column: 1 / -1; border: 1px solid var(--panel-edge); border-radius: 13px; background: var(--primitive-glass); }
.authorization-history > summary, .system-diagnostics > summary { padding: 14px 17px; color: var(--content-secondary); font-size: 13px; font-weight: 650; cursor: pointer; }
.authorization-history > div { display: grid; gap: 1px; padding: 0 14px 14px; }
.authorization-history article { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 14px; padding: 11px; border-radius: 9px; background: color-mix(in srgb, var(--primitive-glass-hover) 55%, transparent); }
.authorization-history article div { display: flex; gap: 9px; }
.authorization-history article b { color: var(--content-primary); font-size: 13px; }
.authorization-history article span, .authorization-history article small, .authorization-history article em { color: var(--content-muted); font-size: 11px; font-style: normal; }
.authorization-history article small { grid-column: 1 / -1; }
.system-diagnostics { margin-top: 4px; }
.system-diagnostics[open] > summary { border-bottom: 1px solid var(--panel-edge); }
.system-diagnostics .system-grid { padding: 18px; }
.connection-panel { grid-row: span 2; }
.status-chip { padding: 6px 9px; border: 1px solid var(--panel-edge); border-radius: 999px; color: var(--content-muted); background: var(--primitive-glass); font-size: 12px; }
.status-chip.online { color: var(--state-ready); }
@ -366,7 +409,7 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
.knowledge-page { grid-template-columns: 250px minmax(390px, 1fr); }
.document-inspector { display: none; }
.code-workbench { grid-template-columns: 220px 230px minmax(0, 1fr); }
.overview-grid, .system-grid { grid-template-columns: 1fr; }
.overview-grid, .system-grid, .human-authorization-layout { grid-template-columns: 1fr; }
.overview-columns { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
@ -783,6 +826,45 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
}
.receipt-message { color: var(--accent-light) !important; font-weight: 650; text-align: right; }
/* 分域商城是一张可核验清单,不伪装成促销卡片。 */
.marketplace-page { max-width: 1180px; }
.marketplace-title { align-items: flex-end; }
.marketplace-title > button { flex: 0 0 auto; margin-bottom: 7px; }
.marketplace-proof { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 22px; border: 1px solid var(--panel-edge); border-radius: 14px; overflow: hidden; background: color-mix(in srgb, var(--panel-bg) 78%, transparent); }
.marketplace-proof > div { min-width: 0; padding: 14px 17px; border-right: 1px solid var(--panel-edge); }
.marketplace-proof > div:last-child { border-right: 0; }
.marketplace-proof span, .marketplace-proof b { display: block; }
.marketplace-proof span { margin-bottom: 6px; color: var(--content-faint); font-size: 10px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.marketplace-proof b { overflow: hidden; color: var(--content-primary); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.marketplace-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.marketplace-tabs button { display: grid; gap: 6px; padding: 16px 18px; border: 1px solid var(--panel-edge); border-radius: 13px; color: var(--content-secondary); background: var(--primitive-glass); text-align: left; cursor: pointer; }
.marketplace-tabs button.active { border-color: color-mix(in srgb, var(--primitive-cool-glow) 58%, var(--panel-edge)); background: color-mix(in srgb, var(--primitive-cool-glow) 11%, var(--panel-bg)); box-shadow: inset 0 0 22px color-mix(in srgb, var(--primitive-cool-glow) 5%, transparent); }
.marketplace-tabs b { color: var(--content-primary); font-size: 15px; }
.marketplace-tabs span { color: var(--content-muted); font-size: 11.5px; line-height: 1.55; }
.marketplace-boundary { margin: 12px 0 20px; padding: 11px 14px; border-left: 2px solid var(--accent-light); color: var(--content-muted); background: color-mix(in srgb, var(--primitive-glass) 58%, transparent); font-size: 11.5px; line-height: 1.7; }
.marketplace-list { display: grid; border-top: 1px solid var(--panel-edge); }
.marketplace-item { padding: 22px 2px; border-bottom: 1px solid var(--panel-edge); }
.marketplace-item > header { display: flex; justify-content: space-between; gap: 28px; }
.marketplace-item > header > div { min-width: 0; }
.marketplace-item > header span { color: var(--accent-light); font-size: 9.5px; font-weight: 750; letter-spacing: .15em; }
.marketplace-item h2 { margin: 6px 0; color: var(--content-primary); font-size: 19px; }
.marketplace-item header p { max-width: 760px; margin: 0; color: var(--content-muted); font-size: 12px; line-height: 1.65; }
.marketplace-item header em { align-self: start; flex: 0 0 auto; padding: 5px 9px; border: 1px solid var(--panel-edge); border-radius: 999px; color: var(--content-faint); font-size: 10px; font-style: normal; }
.marketplace-item header em.installed { border-color: color-mix(in srgb, var(--primitive-cool-glow) 45%, var(--panel-edge)); color: var(--accent-light); }
.marketplace-item dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px 26px; margin: 16px 0 0; }
.marketplace-item dl div { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 10px; padding: 8px 0; border-bottom: 1px solid color-mix(in srgb, var(--panel-edge) 62%, transparent); }
.marketplace-item dt { color: var(--content-faint); font-size: 10.5px; }
.marketplace-item dd { overflow-wrap: anywhere; margin: 0; color: var(--content-secondary); font-size: 10.5px; }
.marketplace-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 16px; }
.marketplace-actions button { min-height: 36px; padding: 0 13px; border: 1px solid var(--panel-edge); border-radius: 9px; color: var(--content-secondary); background: var(--primitive-glass); font-size: 11px; font-weight: 680; cursor: pointer; }
.marketplace-actions button:disabled { opacity: .52; cursor: default; }
.marketplace-actions .primary-button { color: var(--button-primary-text); background: var(--button-primary-bg); }
.marketplace-empty { padding: 52px 18px; color: var(--content-muted); text-align: center; }
.marketplace-empty b { color: var(--content-primary); }
.marketplace-empty p { font-size: 12px; }
.marketplace-message { margin-top: 18px; }
.marketplace-receipt { padding: 15px 2px 0; color: var(--content-faint); font-size: 10px; overflow-wrap: anywhere; }
@media (max-width: 900px) {
.d-main { left: 2%; } .d-sub { left: 22%; } .d-zero { right: 22%; } .d-zs { right: 2%; }
.domain-info-card.info-main { left: 18px; } .domain-info-card.info-sub { left: calc(22% - 75px); }
@ -791,6 +873,10 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
.channel-knowledge { left: 4%; } .channel-code { left: 25%; } .channel-light { right: 25%; } .channel-status { right: 4%; }
.broadcast-stream { left: 5%; }
.personal-node-guide ol { grid-template-columns: 1fr; }
.marketplace-proof { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.marketplace-proof > div:nth-child(2) { border-right: 0; }
.marketplace-proof > div:nth-child(-n+2) { border-bottom: 1px solid var(--panel-edge); }
.marketplace-item dl { grid-template-columns: 1fr; }
}
@media (max-height: 720px) {
.official-hero { top: 14px; } .official-hero h1 { font-size: 24px; }