Files
iAOP/web/mobile/mobile.css
T

90 lines
5.2 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* iAOP 移动端样式(issue #136):竖屏卡片流,字号档 sm/md/lg 由配置驱动。
* 调色与 Web 驾驶舱 THEME_TOKENS dark 一致(共享 themeTokens 注入)。 */
:root {
--cockpit-bg: #0b1220; --cockpit-surface: #13203a; --cockpit-fg: #e6edf6;
--cockpit-fg-muted: #8aa0bd; --cockpit-accent: #18d3c8; --cockpit-warn: #f5a623;
--cockpit-grid-line: rgba(255,255,255,0.06);
--fs-body: 14px;
}
.fontsize-sm { --fs-body: 12px; } .fontsize-lg { --fs-body: 16px; }
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
body { margin: 0; font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
background: var(--cockpit-bg); color: var(--cockpit-fg); font-size: var(--fs-body);
padding-bottom: calc(56px + env(safe-area-inset-bottom)); }
#topbar { display: flex; align-items: center; justify-content: space-between;
padding: 12px 14px; padding-top: calc(12px + env(safe-area-inset-top));
background: var(--cockpit-surface); border-bottom: 1px solid var(--cockpit-grid-line);
position: sticky; top: 0; z-index: 2; }
#topbar h1 { font-size: 17px; margin: 0; color: var(--cockpit-accent); }
#ro-badge { font-size: 11px; color: var(--cockpit-warn); border: 1px solid var(--cockpit-warn);
border-radius: 10px; padding: 2px 8px; margin-left: 8px; }
.ghost-btn { background: none; border: 1px solid var(--cockpit-grid-line); border-radius: 8px;
color: var(--cockpit-accent); font-size: 12px; padding: 4px 10px; cursor: pointer; }
.view { display: none; padding: 10px 12px; }
.view.active { display: block; }
.card { background: var(--cockpit-surface); border: 1px solid var(--cockpit-grid-line);
border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
.card-title { font-size: 13px; color: var(--cockpit-fg-muted); margin-bottom: 8px; }
.hint { font-size: 11px; color: #64748b; }
.row { display: flex; gap: 8px; align-items: center; }
/* 四状态工艺(横向滑动卡片) */
#m-stages { display: flex; gap: 8px; overflow-x: auto; }
.stage-chip { min-width: 96px; border-radius: 8px; padding: 10px; text-align: center;
border: 1px solid var(--cockpit-grid-line); flex-shrink: 0; }
.stage-chip .n { font-weight: 600; }
.stage-chip .d { font-size: 11px; color: var(--cockpit-fg-muted); margin-top: 3px; }
.stage-chip .s { font-size: 11px; margin-top: 5px; padding: 1px 8px; border-radius: 9px;
display: inline-block; }
.s-running { box-shadow: inset 0 0 0 1px #2ecc71; }
.s-running .s { background: rgba(46,204,113,.15); color: #2ecc71; }
.s-warning { box-shadow: inset 0 0 0 1px var(--cockpit-warn); }
.s-warning .s { background: rgba(245,166,35,.15); color: var(--cockpit-warn); }
.s-alarm { box-shadow: inset 0 0 0 1px #ff3b30; }
.s-alarm .s { background: rgba(255,59,48,.15); color: #ff3b30; }
.s-offline { opacity: .55; }
.s-offline .s { background: rgba(138,160,189,.15); color: var(--cockpit-fg-muted); }
/* KPI 两列网格 */
.kpi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.kpi { background: var(--cockpit-surface); border: 1px solid var(--cockpit-grid-line);
border-radius: 10px; padding: 10px 12px; }
.kpi .v { font-size: 22px; font-weight: 700; color: var(--cockpit-accent); }
.kpi .l { font-size: 12px; margin-top: 2px; }
.kpi .d { font-size: 10px; color: var(--cockpit-fg-muted); margin-top: 3px; }
/* 告警(只读,severity 配色同源 alarm_panel.ti.yaml) */
.alarm { border-radius: 6px; padding: 8px 10px; margin-bottom: 6px; font-size: 12px;
border-left: 3px solid transparent; display: flex; gap: 8px; }
.alarm .sev { font-weight: 700; }
/* 交接班摘要 */
.brief-sec { margin-bottom: 8px; }
.brief-sec .sec-title { color: var(--cockpit-accent); font-size: 13px; margin-bottom: 4px; }
.brief-sec .sec-body { color: var(--cockpit-fg); white-space: pre-wrap; line-height: 1.6; }
.event { display: flex; gap: 8px; font-size: 12px; padding: 4px 0;
border-bottom: 1px solid var(--cockpit-grid-line); }
.event .t { color: var(--cockpit-fg-muted); flex-shrink: 0; }
.todo { font-size: 12px; padding: 4px 0; }
.todo .pri { color: var(--cockpit-warn); }
.fold-btn { background: none; border: none; color: var(--cockpit-accent);
font-size: 12px; padding: 4px 0; cursor: pointer; }
.confirm-tag { display: inline-block; background: rgba(245,166,35,.15); color: var(--cockpit-warn);
padding: 2px 8px; border-radius: 9px; font-size: 11px; margin-top: 6px; }
select, button { padding: 9px 12px; border-radius: 8px; font-size: 14px; }
select { border: 1px solid var(--cockpit-grid-line); background: var(--cockpit-bg);
color: var(--cockpit-fg); flex: 1; }
button.primary { border: none; background: var(--cockpit-accent); color: #04202a; }
button:disabled { opacity: .5; }
/* 底部页签 */
#tabbar { position: fixed; bottom: 0; left: 0; right: 0; display: flex;
background: var(--cockpit-surface); border-top: 1px solid var(--cockpit-grid-line);
padding-bottom: env(safe-area-inset-bottom); }
#tabbar .tab { flex: 1; padding: 12px; background: none; border: none;
color: var(--cockpit-fg-muted); font-size: 14px; cursor: pointer; }
#tabbar .tab.active { color: var(--cockpit-accent); }