/* ================================================================ Fastway BBS — Wait For Call (WFC) Screen ================================================================ */ /* ---- Header ---- */ .wfc-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; background: var(--bg-secondary); border-bottom: 1px solid var(--border); } .wfc-bbs-name { font-size: 1.25rem; font-weight: 700; margin: 0; } .wfc-node-label { font-size: 0.8rem; color: var(--text-muted); font-family: 'Courier New', Courier, monospace; } .wfc-header-right { text-align: right; } .wfc-date { font-size: 0.75rem; color: var(--text-muted); } .wfc-time { font-size: 1.75rem; font-weight: 700; font-family: 'Courier New', Courier, monospace; color: var(--accent); letter-spacing: 0.08em; line-height: 1; } /* ---- Content ---- */ .wfc-content { padding: 1rem 1.5rem 3rem; max-width: 1400px; margin: 0 auto; } /* ---- Summary Bar ---- */ .wfc-summary { display: flex; gap: 1rem; margin-bottom: 1.25rem; } .wfc-summary-item { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 0.75rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; } .wfc-summary-value { font-size: 1.5rem; font-weight: 700; font-family: 'Courier New', Courier, monospace; line-height: 1.2; } .wfc-summary-label { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-top: 0.125rem; } /* ---- Sections ---- */ .wfc-section { margin-bottom: 1.25rem; } .wfc-section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; } .wfc-section-title { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-muted); font-weight: 600; } .wfc-section-badge { font-size: 0.7rem; font-family: 'Courier New', Courier, monospace; color: var(--text-muted); } /* ---- Node Grid ---- */ .wfc-node-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 0.5rem; } .wfc-node { display: flex; align-items: center; padding: 0.6rem 0.75rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 6px; transition: border-color 0.3s, background 0.3s; min-height: 48px; } .wfc-node.active { border-color: var(--success); background: linear-gradient(135deg, rgba(16, 185, 129, 0.06) 0%, transparent 100%); } .wfc-node.waiting { opacity: 0.45; } .wfc-node-left { display: flex; align-items: center; gap: 0.5rem; min-width: 52px; } .wfc-node-num { font-family: 'Courier New', Courier, monospace; font-size: 1.1rem; font-weight: 700; color: var(--text-muted); min-width: 1.5rem; text-align: right; } .wfc-node.active .wfc-node-num { color: var(--success); } .wfc-node-dot-wrap { display: flex; align-items: center; width: 12px; } .wfc-node-center { flex: 1; min-width: 0; padding: 0 0.75rem; } .wfc-node-user { font-weight: 600; font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .wfc-node-meta { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: var(--text-muted); margin-top: 1px; } .wfc-node-addr { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .wfc-node-waiting { font-size: 0.8rem; color: var(--text-muted); font-style: italic; } .wfc-node-right { text-align: right; min-width: 60px; } .wfc-node-dur { font-family: 'Courier New', Courier, monospace; font-size: 0.8rem; color: var(--text-secondary); } .wfc-proto-badge { display: inline-block; font-size: 0.6rem; padding: 1px 5px; border-radius: 3px; text-transform: uppercase; font-weight: 700; letter-spacing: 0.03em; background: rgba(59, 130, 246, 0.15); color: var(--accent); } /* ---- Panels ---- */ .wfc-panels { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0.75rem; } .wfc-panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; overflow: hidden; } .wfc-panel-header { padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border); } .wfc-panel-title { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-muted); font-weight: 600; margin: 0; } .wfc-panel-body { padding: 0.25rem 0; } /* ---- Panel Rows ---- */ .wfc-row { display: flex; justify-content: space-between; align-items: center; padding: 0.375rem 0.75rem; font-size: 0.825rem; } .wfc-row.muted { color: var(--text-muted); font-style: italic; justify-content: center; padding: 1rem; } .wfc-row-left { display: flex; align-items: center; gap: 0.4rem; min-width: 0; } .wfc-row-name { color: var(--text-secondary); } .wfc-row-ver { font-size: 0.7rem; color: var(--text-muted); } .wfc-row-right { font-family: 'Courier New', Courier, monospace; font-size: 0.8rem; color: var(--text-secondary); white-space: nowrap; } .wfc-row-right.mono { font-family: 'Courier New', Courier, monospace; } .wfc-row-url { font-size: 0.7rem; max-width: 200px; overflow: hidden; text-overflow: ellipsis; } .wfc-row-status-ok { color: var(--success); font-weight: 600; } .wfc-row-status-err { color: var(--danger); font-weight: 600; } /* ---- Status Dots ---- */ .wfc-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .wfc-dot.online { background: var(--success); box-shadow: 0 0 6px rgba(16, 185, 129, 0.5); } .wfc-dot.offline { background: var(--danger); box-shadow: 0 0 6px rgba(239, 68, 68, 0.3); } .wfc-dot.idle { background: var(--text-muted); opacity: 0.4; } .wfc-dot.pulse { animation: wfc-pulse 2s ease-in-out infinite; } @keyframes wfc-pulse { 0%, 100% { opacity: 1; box-shadow: 0 0 6px rgba(16, 185, 129, 0.5); } 50% { opacity: 0.6; box-shadow: 0 0 12px rgba(16, 185, 129, 0.8); } } /* ---- Status Bar ---- */ .wfc-statusbar { position: fixed; bottom: 0; left: 0; right: 0; display: flex; justify-content: space-between; align-items: center; padding: 0.35rem 1.5rem; background: var(--bg-secondary); border-top: 1px solid var(--border); font-size: 0.7rem; color: var(--text-muted); z-index: 10; } .wfc-statusbar .wfc-dot { width: 6px; height: 6px; vertical-align: middle; margin-right: 4px; } /* ---- Responsive ---- */ @media (max-width: 640px) { .wfc-header { flex-direction: column; gap: 0.5rem; text-align: center; } .wfc-header-right { text-align: center; } .wfc-summary { flex-wrap: wrap; } .wfc-summary-item { min-width: 80px; } .wfc-node-grid { grid-template-columns: 1fr; } .wfc-panels { grid-template-columns: 1fr; } .wfc-content { padding: 0.75rem; padding-bottom: 3rem; } }