/* 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); }