| |
| |
| |
| |
|
|
| @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap'); |
|
|
| |
| :root { |
| --bg: #0a0a0a; |
| --bg-pane: #0d0d0d; |
| --bg-card: #0f0f0f; |
|
|
| --primary: #33ff00; |
| --secondary: #ffb000; |
| --muted: #1f521f; |
| --error: #ff3333; |
| --border: #1f521f; |
| --border-dim:#152b15; |
|
|
| |
| --cto-color: #33ff00; |
| --cfo-color: #ffb000; |
| --inv-color: #00e5ff; |
| --ind-color: #b0b0b0; |
|
|
| --text-primary: #33ff00; |
| --text-secondary: #1f9900; |
| --text-muted: #0d4d0d; |
|
|
| --glow: 0 0 6px rgba(51,255,0,0.45); |
| --glow-sm: 0 0 3px rgba(51,255,0,0.3); |
| --amber-glow:0 0 6px rgba(255,176,0,0.5); |
|
|
| --font-mono: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace; |
| --transition: all 0.12s ease; |
| } |
|
|
| |
| *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } |
|
|
| html { font-size: 14px; } |
|
|
| body { |
| font-family: var(--font-mono); |
| background: var(--bg); |
| color: var(--text-primary); |
| min-height: 100vh; |
| line-height: 1.5; |
| -webkit-font-smoothing: none; |
| text-shadow: var(--glow-sm); |
| overflow-x: hidden; |
| } |
|
|
| |
| body::after { |
| content: ''; |
| position: fixed; |
| inset: 0; |
| background: repeating-linear-gradient( |
| 0deg, |
| transparent, |
| transparent 2px, |
| rgba(0, 0, 0, 0.08) 2px, |
| rgba(0, 0, 0, 0.08) 4px |
| ); |
| pointer-events: none; |
| z-index: 9999; |
| } |
|
|
| |
| ::-webkit-scrollbar { width: 4px; height: 4px; } |
| ::-webkit-scrollbar-track { background: transparent; } |
| ::-webkit-scrollbar-thumb { background: var(--muted); border-radius: 0; } |
|
|
| |
| .app-shell { |
| position: relative; |
| z-index: 1; |
| min-height: 100vh; |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| |
| .metrics-strip { |
| background: var(--bg-pane); |
| border-bottom: 1px solid var(--border); |
| display: flex; |
| overflow-x: auto; |
| } |
|
|
| .metrics-strip .metric-tile { |
| flex: 1; |
| min-width: 90px; |
| border-right: 1px solid var(--border-dim); |
| background: transparent; |
| padding: 0.5rem 0.75rem; |
| transition: var(--transition); |
| } |
|
|
| .metrics-strip .metric-tile:last-child { border-right: none; } |
| .metrics-strip .metric-tile:hover { background: rgba(51,255,0,0.04); } |
|
|
| .metrics-strip .m-value { |
| font-size: 1.1rem; |
| font-weight: 700; |
| } |
|
|
| .metrics-strip .m-label { |
| font-size: 0.55rem; |
| letter-spacing: 0.12em; |
| text-transform: uppercase; |
| } |
|
|
| .metrics-strip .m-delta { |
| font-size: 0.62rem; |
| font-weight: 700; |
| } |
|
|
| |
| .main-grid { |
| display: grid; |
| grid-template-columns: 260px 1fr 280px; |
| gap: 1px; |
| flex: 1; |
| background: var(--border-dim); |
| height: calc(100vh - 48px - 38px - 60px); |
| overflow: hidden; |
| } |
|
|
| .col-left, .col-center, .col-right { |
| background: var(--bg); |
| overflow-y: auto; |
| padding: 0.75rem; |
| display: flex; |
| flex-direction: column; |
| gap: 0.75rem; |
| } |
|
|
| |
| .card { |
| background: var(--bg-card); |
| border: 1px solid var(--border); |
| padding: 0; |
| } |
|
|
| |
| .section-label { |
| font-size: 0.6rem; |
| font-weight: 700; |
| letter-spacing: 0.1em; |
| text-transform: uppercase; |
| color: var(--text-primary); |
| text-shadow: var(--glow); |
| background: var(--bg-pane); |
| border-bottom: 1px solid var(--border); |
| padding: 0.3rem 0.6rem; |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| } |
|
|
| .section-label::before { content: '+--'; color: var(--muted); margin-right: 0.15rem; } |
| .section-label::after { content: '--+'; color: var(--muted); margin-left: 0.15rem; } |
|
|
| .card-body { padding: 0.625rem; } |
|
|
| |
| .topbar { |
| height: 48px; |
| background: var(--bg-pane); |
| border-bottom: 1px solid var(--border); |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| padding: 0 1rem; |
| position: sticky; |
| top: 0; |
| z-index: 50; |
| } |
|
|
| .topbar-brand { |
| display: flex; |
| align-items: center; |
| gap: 0.6rem; |
| } |
|
|
| .brand-logo { |
| font-size: 0.8rem; |
| color: var(--primary); |
| text-shadow: var(--glow); |
| letter-spacing: 0; |
| white-space: pre; |
| line-height: 1; |
| } |
|
|
| .brand-name { |
| font-size: 0.85rem; |
| font-weight: 700; |
| color: var(--primary); |
| text-shadow: var(--glow); |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| .brand-ceo { |
| font-size: 0.58rem; |
| color: var(--text-secondary); |
| text-shadow: none; |
| margin-top: 0.05rem; |
| text-transform: uppercase; |
| letter-spacing: 0.04em; |
| } |
|
|
| .topbar-center { |
| display: flex; |
| align-items: center; |
| gap: 1.25rem; |
| } |
|
|
| .round-badge { |
| font-size: 0.7rem; |
| font-weight: 700; |
| color: var(--secondary); |
| text-shadow: var(--amber-glow); |
| border: 1px solid var(--secondary); |
| padding: 0.2rem 0.55rem; |
| letter-spacing: 0.06em; |
| text-transform: uppercase; |
| } |
|
|
| .score-display { text-align: center; } |
|
|
| .score-label { |
| font-size: 0.5rem; |
| text-transform: uppercase; |
| letter-spacing: 0.1em; |
| color: var(--text-secondary); |
| } |
|
|
| .score-value { |
| font-size: 1rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| text-shadow: var(--glow); |
| } |
|
|
| .score-value.good { color: var(--primary); text-shadow: var(--glow); } |
| .score-value.warn { color: var(--secondary); text-shadow: var(--amber-glow); } |
| .score-value.bad { color: var(--error); text-shadow: 0 0 6px rgba(255,51,51,0.5); } |
|
|
| .topbar-right { |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| } |
|
|
| .health-indicator { |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| font-size: 0.58rem; |
| color: var(--text-secondary); |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| .health-dot { |
| width: 7px; |
| height: 7px; |
| background: var(--text-muted); |
| } |
|
|
| .health-dot.online { background: var(--primary); box-shadow: var(--glow); animation: blink-dot 1.8s step-end infinite; } |
| .health-dot.offline { background: var(--error); } |
|
|
| @keyframes blink-dot { |
| 0%, 100% { opacity: 1; } |
| 50% { opacity: 0.3; } |
| } |
|
|
| |
| .playback-bar { |
| background: var(--bg-pane); |
| border-bottom: 1px solid var(--border); |
| padding: 0.45rem 1rem; |
| display: flex; |
| align-items: center; |
| gap: 0.75rem; |
| font-size: 0.7rem; |
| } |
|
|
| .pb-btn { |
| height: 28px; |
| padding: 0 0.75rem; |
| border: 1px solid var(--border); |
| background: transparent; |
| color: var(--text-primary); |
| font-family: var(--font-mono); |
| font-size: 0.68rem; |
| font-weight: 700; |
| cursor: pointer; |
| transition: var(--transition); |
| display: flex; |
| align-items: center; |
| gap: 0.3rem; |
| text-transform: uppercase; |
| letter-spacing: 0.05em; |
| text-shadow: var(--glow-sm); |
| } |
|
|
| |
| .pb-btn::before { content: '['; color: var(--muted); margin-right: 0.1rem; } |
| .pb-btn::after { content: ']'; color: var(--muted); margin-left: 0.1rem; } |
|
|
| .pb-btn:hover:not(:disabled) { |
| background: var(--primary); |
| color: #000; |
| text-shadow: none; |
| border-color: var(--primary); |
| box-shadow: var(--glow); |
| } |
|
|
| .pb-btn:disabled { opacity: 0.25; cursor: not-allowed; } |
|
|
| .pb-btn.primary { |
| color: var(--secondary); |
| border-color: var(--secondary); |
| text-shadow: var(--amber-glow); |
| } |
|
|
| .pb-btn.primary::before { content: '['; color: var(--secondary); opacity: 0.5; } |
| .pb-btn.primary::after { content: ']'; color: var(--secondary); opacity: 0.5; } |
|
|
| .pb-btn.primary:hover:not(:disabled) { |
| background: var(--secondary); |
| color: #000; |
| text-shadow: none; |
| border-color: var(--secondary); |
| box-shadow: var(--amber-glow); |
| } |
|
|
| .pb-divider { |
| width: 1px; |
| height: 18px; |
| background: var(--border-dim); |
| } |
|
|
| .speed-control { |
| display: flex; |
| align-items: center; |
| gap: 0.4rem; |
| font-size: 0.62rem; |
| color: var(--text-secondary); |
| text-transform: uppercase; |
| letter-spacing: 0.05em; |
| } |
|
|
| .speed-control input[type=range] { |
| width: 72px; |
| accent-color: var(--primary); |
| cursor: pointer; |
| } |
|
|
| .speed-label { |
| font-size: 0.62rem; |
| color: var(--primary); |
| min-width: 32px; |
| text-shadow: var(--glow-sm); |
| } |
|
|
| .pb-status { |
| margin-left: auto; |
| font-size: 0.62rem; |
| color: var(--text-secondary); |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| .status-dot { |
| width: 6px; |
| height: 6px; |
| background: var(--text-muted); |
| } |
|
|
| .status-dot.running { background: var(--primary); box-shadow: var(--glow); animation: blink-dot 1s step-end infinite; } |
| .status-dot.paused { background: var(--secondary); box-shadow: var(--amber-glow); } |
|
|
| |
| @keyframes pulse { |
| 0%, 100% { opacity: 1 } |
| 50% { opacity: 0.4 } |
| } |
|
|
| @keyframes cursor-blink { |
| 0%, 100% { opacity: 1; } |
| 50% { opacity: 0; } |
| } |
|
|
| |
| .metrics-grid { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 0.4rem; |
| } |
|
|
| .metric-tile { |
| background: var(--bg-pane); |
| border: 1px solid var(--border-dim); |
| padding: 0.5rem 0.65rem; |
| transition: var(--transition); |
| } |
|
|
| .metric-tile.wide { grid-column: 1 / -1; } |
|
|
| .metric-tile:hover { border-color: var(--border); background: rgba(51,255,0,0.03); } |
|
|
| .m-icon-label { |
| display: flex; |
| align-items: center; |
| gap: 0.25rem; |
| margin-bottom: 0.15rem; |
| } |
|
|
| .m-icon { font-size: 0.75rem; filter: grayscale(1) brightness(2); } |
|
|
| .m-label { |
| font-size: 0.52rem; |
| font-weight: 700; |
| letter-spacing: 0.1em; |
| text-transform: uppercase; |
| color: var(--text-secondary); |
| } |
|
|
| .m-value-row { |
| display: flex; |
| align-items: baseline; |
| gap: 0.3rem; |
| } |
|
|
| .m-value { |
| font-size: 0.88rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| text-shadow: var(--glow-sm); |
| } |
|
|
| .m-value.good { color: var(--primary); text-shadow: var(--glow); } |
| .m-value.warn { color: var(--secondary); text-shadow: var(--amber-glow); } |
| .m-value.bad { color: var(--error); text-shadow: 0 0 5px rgba(255,51,51,0.4); } |
|
|
| .m-delta { font-size: 0.55rem; font-weight: 700; } |
| .m-delta.pos { color: var(--primary); } |
| .m-delta.neg { color: var(--error); } |
|
|
| |
| .trust-list { |
| display: flex; |
| flex-direction: column; |
| gap: 0.55rem; |
| padding: 0.6rem; |
| } |
|
|
| .trust-row { |
| display: flex; |
| align-items: center; |
| gap: 0.4rem; |
| } |
|
|
| .trust-role { |
| font-size: 0.6rem; |
| font-weight: 700; |
| width: 74px; |
| flex-shrink: 0; |
| color: var(--text-secondary); |
| text-transform: uppercase; |
| letter-spacing: 0.04em; |
| } |
|
|
| .trust-track { |
| flex: 1; |
| height: 6px; |
| background: var(--border-dim); |
| overflow: hidden; |
| font-family: var(--font-mono); |
| position: relative; |
| } |
|
|
| |
| .trust-fill { |
| height: 100%; |
| transition: width 0.7s cubic-bezier(0.4, 0, 0.2, 1); |
| } |
|
|
| .trust-fill.cto { background: var(--cto-color); box-shadow: 0 0 4px rgba(51,255,0,0.5); } |
| .trust-fill.cfo { background: var(--cfo-color); box-shadow: 0 0 4px rgba(255,176,0,0.5); } |
| .trust-fill.inv { background: var(--inv-color); box-shadow: 0 0 4px rgba(0,229,255,0.5); } |
| .trust-fill.ind { background: var(--ind-color); } |
|
|
| .trust-pct { |
| font-size: 0.58rem; |
| color: var(--text-secondary); |
| width: 28px; |
| text-align: right; |
| } |
|
|
| .trust-delta { font-size: 0.55rem; width: 18px; text-align: right; } |
| .trust-delta.pos { color: var(--primary); } |
| .trust-delta.neg { color: var(--error); } |
|
|
| |
| .event-banner { |
| border: 1px solid var(--secondary); |
| background: var(--bg-card); |
| padding: 0.75rem 0.875rem; |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .event-banner::before { |
| content: ''; |
| position: absolute; |
| top: 0; right: 0; |
| width: 100px; height: 100%; |
| background: linear-gradient(to left, rgba(255,176,0,0.04), transparent); |
| pointer-events: none; |
| } |
|
|
| .event-tag { |
| font-size: 0.55rem; |
| font-weight: 700; |
| letter-spacing: 0.14em; |
| text-transform: uppercase; |
| color: var(--secondary); |
| text-shadow: var(--amber-glow); |
| margin-bottom: 0.4rem; |
| display: flex; |
| align-items: center; |
| gap: 0.3rem; |
| } |
|
|
| .event-tag::before { content: '//'; color: var(--muted); margin-right: 0.2rem; } |
|
|
| .event-title { |
| font-size: 0.88rem; |
| font-weight: 700; |
| color: var(--primary); |
| text-shadow: var(--glow); |
| margin-bottom: 0.4rem; |
| line-height: 1.3; |
| text-transform: uppercase; |
| letter-spacing: 0.02em; |
| } |
|
|
| .event-desc { |
| font-size: 0.72rem; |
| color: var(--text-secondary); |
| line-height: 1.55; |
| } |
|
|
| |
| .npc-grid { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 0.5rem; |
| padding: 0.6rem; |
| } |
|
|
| .npc-card { |
| background: var(--bg-pane); |
| padding: 0.6rem; |
| border: 1px solid var(--border-dim); |
| display: flex; |
| flex-direction: column; |
| gap: 0.45rem; |
| transition: var(--transition); |
| border-top: 2px solid; |
| } |
|
|
| .npc-card:hover { border-color: var(--border); } |
|
|
| .npc-card.cto { border-top-color: var(--cto-color); } |
| .npc-card.cfo { border-top-color: var(--cfo-color); } |
| .npc-card.inv { border-top-color: var(--inv-color); } |
| .npc-card.ind { border-top-color: var(--ind-color); } |
|
|
| .npc-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| } |
|
|
| .npc-avatar-role { |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| } |
|
|
| .npc-avatar { |
| width: 22px; |
| height: 22px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 0.6rem; |
| font-weight: 700; |
| flex-shrink: 0; |
| border: 1px solid; |
| } |
|
|
| .npc-avatar.cto { border-color: var(--cto-color); color: var(--cto-color); } |
| .npc-avatar.cfo { border-color: var(--cfo-color); color: var(--cfo-color); } |
| .npc-avatar.inv { border-color: var(--inv-color); color: var(--inv-color); } |
| .npc-avatar.ind { border-color: var(--ind-color); color: var(--ind-color); } |
|
|
| .npc-role { |
| font-size: 0.6rem; |
| font-weight: 700; |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| .npc-role.cto { color: var(--cto-color); text-shadow: var(--glow-sm); } |
| .npc-role.cfo { color: var(--cfo-color); text-shadow: 0 0 4px rgba(255,176,0,0.4); } |
| .npc-role.inv { color: var(--inv-color); text-shadow: 0 0 4px rgba(0,229,255,0.4); } |
| .npc-role.ind { color: var(--ind-color); } |
|
|
| .npc-vote-chip { |
| font-size: 0.52rem; |
| font-weight: 700; |
| background: transparent; |
| border: 1px solid var(--border-dim); |
| padding: 0.1rem 0.35rem; |
| color: var(--text-secondary); |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| max-width: 90px; |
| text-transform: uppercase; |
| letter-spacing: 0.04em; |
| } |
|
|
| .npc-statement { |
| font-size: 0.68rem; |
| color: var(--text-secondary); |
| line-height: 1.5; |
| font-style: normal; |
| border-left: 2px solid var(--border-dim); |
| padding-left: 0.45rem; |
| } |
|
|
| |
| .npc-statement::before { content: '> '; color: var(--muted); } |
|
|
| .npc-conf-row { |
| display: flex; |
| align-items: center; |
| gap: 0.35rem; |
| } |
|
|
| .conf-label { |
| font-size: 0.52rem; |
| color: var(--text-muted); |
| width: 38px; |
| flex-shrink: 0; |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| .conf-track { |
| flex: 1; |
| height: 4px; |
| background: var(--border-dim); |
| overflow: hidden; |
| } |
|
|
| .conf-fill { height: 100%; transition: width 0.5s ease; } |
|
|
| .npc-card.cto .conf-fill { background: var(--cto-color); } |
| .npc-card.cfo .conf-fill { background: var(--cfo-color); } |
| .npc-card.inv .conf-fill { background: var(--inv-color); } |
| .npc-card.ind .conf-fill { background: var(--ind-color); } |
|
|
| .conf-pct { |
| font-size: 0.55rem; |
| color: var(--text-secondary); |
| width: 24px; |
| text-align: right; |
| } |
|
|
| |
| .npc-agenda-tags { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 0.2rem; |
| } |
|
|
| .agenda-tag { |
| font-size: 0.5rem; |
| font-weight: 700; |
| letter-spacing: 0.04em; |
| padding: 0.08rem 0.3rem; |
| background: transparent; |
| border: 1px solid var(--border-dim); |
| color: var(--text-muted); |
| text-transform: lowercase; |
| transition: var(--transition); |
| } |
|
|
| .agenda-tag:hover { border-color: var(--border); color: var(--text-secondary); } |
|
|
| |
| .agent-decision-panel { |
| display: flex; |
| flex-direction: column; |
| gap: 0.6rem; |
| padding: 0.6rem; |
| } |
|
|
| .decision-options-grid { |
| display: grid; |
| grid-template-columns: repeat(3, 1fr); |
| gap: 0.4rem; |
| } |
|
|
| .decision-option { |
| border: 1px solid var(--border-dim); |
| padding: 0.6rem 0.4rem; |
| text-align: center; |
| transition: var(--transition); |
| position: relative; |
| background: var(--bg-pane); |
| cursor: default; |
| } |
|
|
| .decision-option:hover { border-color: var(--border); } |
|
|
| .decision-option .opt-icon { |
| font-size: 1rem; |
| margin-bottom: 0.25rem; |
| filter: grayscale(1) brightness(1.5); |
| } |
|
|
| .decision-option .opt-label { |
| font-size: 0.58rem; |
| font-weight: 700; |
| text-transform: uppercase; |
| color: var(--text-secondary); |
| word-break: break-word; |
| line-height: 1.3; |
| letter-spacing: 0.03em; |
| } |
|
|
| .decision-option.ai-pick { |
| border-color: var(--secondary); |
| background: rgba(255,176,0,0.06); |
| } |
|
|
| .decision-option.ai-pick .opt-label { |
| color: var(--secondary); |
| text-shadow: var(--amber-glow); |
| } |
|
|
| .decision-option.ai-pick::before { |
| content: 'AI>'; |
| position: absolute; |
| top: 3px; right: 4px; |
| font-size: 0.48rem; |
| font-weight: 700; |
| color: var(--secondary); |
| letter-spacing: 0.04em; |
| } |
|
|
| .decision-option.board-winner.board-match { |
| border-color: var(--primary); |
| background: rgba(51,255,0,0.06); |
| } |
|
|
| .decision-option.board-winner.board-mismatch { |
| border-color: var(--error); |
| background: rgba(255,51,51,0.06); |
| } |
|
|
| .decision-option.board-winner .opt-label { color: var(--text-primary); font-weight: 700; } |
|
|
| .coalition-pitch-block { |
| background: var(--bg-pane); |
| border: 1px solid var(--border-dim); |
| padding: 0.5rem 0.65rem; |
| } |
|
|
| .pitch-header { |
| font-size: 0.55rem; |
| font-weight: 700; |
| letter-spacing: 0.12em; |
| text-transform: uppercase; |
| color: var(--text-secondary); |
| margin-bottom: 0.3rem; |
| } |
|
|
| .pitch-text { |
| font-size: 0.68rem; |
| color: var(--text-secondary); |
| line-height: 1.5; |
| white-space: pre-wrap; |
| word-break: break-word; |
| } |
|
|
| .pitch-text::before { content: '$ '; color: var(--muted); } |
|
|
| .pitch-text.empty { font-style: italic; color: var(--text-muted); } |
| .pitch-text.empty::before { content: ''; } |
|
|
| |
| .ai-thinking { |
| display: flex; |
| align-items: center; |
| gap: 0.5rem; |
| font-size: 0.7rem; |
| color: var(--secondary); |
| text-shadow: var(--amber-glow); |
| padding: 0.6rem; |
| } |
|
|
| .ai-thinking::before { content: '>_'; color: var(--secondary); animation: cursor-blink 0.8s step-end infinite; } |
|
|
| .thinking-dots span { |
| display: inline-block; |
| width: 6px; |
| height: 6px; |
| background: var(--secondary); |
| animation: blink 1.2s ease infinite; |
| margin: 0 1px; |
| } |
|
|
| .thinking-dots span:nth-child(2) { animation-delay: 0.2s; } |
| .thinking-dots span:nth-child(3) { animation-delay: 0.4s; } |
|
|
| @keyframes blink { |
| 0%, 80%, 100% { opacity: 0.2 } |
| 40% { opacity: 1 } |
| } |
|
|
| |
| .vote-tally { |
| display: flex; |
| flex-direction: column; |
| gap: 0.4rem; |
| padding: 0.6rem; |
| } |
|
|
| .tally-row { |
| display: flex; |
| align-items: center; |
| gap: 0.4rem; |
| } |
|
|
| .tally-label { |
| font-size: 0.6rem; |
| font-weight: 700; |
| color: var(--text-secondary); |
| width: 100px; |
| flex-shrink: 0; |
| text-transform: uppercase; |
| letter-spacing: 0.03em; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
|
|
| .tally-track { |
| flex: 1; |
| height: 8px; |
| background: var(--border-dim); |
| overflow: hidden; |
| position: relative; |
| } |
|
|
| .tally-fill { |
| height: 100%; |
| background: var(--text-secondary); |
| transition: width 0.5s ease; |
| } |
|
|
| .tally-fill.winner { |
| background: var(--primary); |
| box-shadow: var(--glow); |
| } |
|
|
| .tally-value { |
| font-size: 0.58rem; |
| color: var(--text-secondary); |
| width: 28px; |
| text-align: right; |
| } |
|
|
| .tally-winner-row { |
| font-size: 0.58rem; |
| color: var(--text-muted); |
| margin-top: 0.35rem; |
| padding: 0.6rem; |
| padding-top: 0; |
| font-family: var(--font-mono); |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| |
| .history-list { |
| display: flex; |
| flex-direction: column; |
| gap: 0.3rem; |
| padding: 0.6rem; |
| } |
|
|
| .history-item { |
| display: grid; |
| grid-template-columns: 22px 1fr auto; |
| align-items: center; |
| gap: 0.4rem; |
| padding: 0.4rem 0.5rem; |
| background: var(--bg-pane); |
| border: 1px solid var(--border-dim); |
| animation: slideIn 0.2s ease; |
| transition: var(--transition); |
| } |
|
|
| .history-item:hover { border-color: var(--border); } |
|
|
| .h-round { |
| font-size: 0.58rem; |
| font-weight: 700; |
| color: var(--secondary); |
| text-shadow: var(--amber-glow); |
| } |
|
|
| .h-info { min-width: 0; } |
|
|
| .h-event { |
| font-size: 0.6rem; |
| color: var(--text-secondary); |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| text-transform: uppercase; |
| letter-spacing: 0.03em; |
| } |
|
|
| .h-picks { |
| font-size: 0.58rem; |
| color: var(--text-muted); |
| display: flex; |
| align-items: center; |
| gap: 0.2rem; |
| margin-top: 0.1rem; |
| } |
|
|
| .h-ai-pick { color: var(--secondary); } |
| .h-win-pick { color: var(--text-secondary); } |
| .h-mismatch { color: var(--error); font-size: 0.58rem; } |
|
|
| .h-reward { |
| font-size: 0.62rem; |
| font-weight: 700; |
| text-align: right; |
| min-width: 36px; |
| } |
|
|
| .h-reward.pos { color: var(--primary); text-shadow: var(--glow-sm); } |
| .h-reward.neg { color: var(--error); } |
|
|
| .history-empty { |
| font-size: 0.68rem; |
| color: var(--text-muted); |
| text-align: center; |
| padding: 1rem; |
| } |
|
|
| .history-empty::before { content: '// '; } |
|
|
| @keyframes slideIn { |
| from { opacity: 0; transform: translateX(-6px); } |
| to { opacity: 1; transform: none; } |
| } |
|
|
| |
| .end-overlay { |
| position: fixed; |
| inset: 0; |
| z-index: 200; |
| background: rgba(0,0,0,0.92); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| animation: fadeIn 0.3s ease; |
| } |
|
|
| .end-modal { |
| background: var(--bg-pane); |
| border: 1px solid var(--primary); |
| box-shadow: 0 0 40px rgba(51,255,0,0.15), var(--glow); |
| padding: 1.75rem; |
| max-width: 520px; |
| width: 90%; |
| max-height: 80vh; |
| overflow-y: auto; |
| animation: slideUp 0.3s cubic-bezier(0.4,0,0.2,1); |
| } |
|
|
| .end-icon { |
| font-size: 0.75rem; |
| text-align: center; |
| margin-bottom: 0.5rem; |
| color: var(--primary); |
| text-shadow: var(--glow); |
| letter-spacing: 0.1em; |
| } |
|
|
| .end-title { |
| font-size: 1.25rem; |
| font-weight: 700; |
| text-align: center; |
| letter-spacing: 0.06em; |
| text-transform: uppercase; |
| margin-bottom: 0.4rem; |
| color: var(--primary); |
| text-shadow: var(--glow); |
| } |
|
|
| .end-reason { |
| display: block; |
| text-align: center; |
| font-size: 0.65rem; |
| font-weight: 700; |
| letter-spacing: 0.14em; |
| text-transform: uppercase; |
| padding: 0.25rem 1rem; |
| margin: 0 auto 1.25rem; |
| width: fit-content; |
| border: 1px solid; |
| } |
|
|
| .end-reason.ipo { color: var(--primary); border-color: var(--primary); } |
| .end-reason.acquisition { color: var(--secondary); border-color: var(--secondary); } |
| .end-reason.bankruptcy { color: var(--error); border-color: var(--error); } |
| .end-reason.default { color: var(--text-secondary); border-color: var(--border); } |
|
|
| .end-stats { |
| display: grid; |
| grid-template-columns: repeat(3, 1fr); |
| gap: 0.5rem; |
| margin-bottom: 1rem; |
| } |
|
|
| .end-stat { |
| background: var(--bg-card); |
| border: 1px solid var(--border-dim); |
| padding: 0.65rem; |
| text-align: center; |
| } |
|
|
| .es-label { |
| font-size: 0.52rem; |
| text-transform: uppercase; |
| letter-spacing: 0.1em; |
| color: var(--text-muted); |
| } |
|
|
| .es-value { |
| font-size: 0.9rem; |
| font-weight: 700; |
| margin-top: 0.15rem; |
| color: var(--text-primary); |
| text-shadow: var(--glow-sm); |
| } |
|
|
| .replay-btn { |
| display: block; |
| width: 100%; |
| padding: 0.6rem; |
| background: transparent; |
| border: 1px solid var(--primary); |
| color: var(--primary); |
| font-family: var(--font-mono); |
| font-size: 0.78rem; |
| font-weight: 700; |
| cursor: pointer; |
| transition: var(--transition); |
| letter-spacing: 0.08em; |
| text-transform: uppercase; |
| text-shadow: var(--glow-sm); |
| } |
|
|
| .replay-btn::before { content: '[ '; } |
| .replay-btn::after { content: ' ]'; } |
|
|
| .replay-btn:hover { |
| background: var(--primary); |
| color: #000; |
| text-shadow: none; |
| box-shadow: var(--glow); |
| } |
|
|
| |
| .toast { |
| position: fixed; |
| bottom: 1rem; |
| right: 1rem; |
| background: #0a0000; |
| border: 1px solid var(--error); |
| padding: 0.5rem 0.875rem; |
| color: var(--error); |
| font-size: 0.7rem; |
| font-weight: 700; |
| z-index: 300; |
| max-width: 300px; |
| animation: slideUp 0.2s ease; |
| text-transform: uppercase; |
| letter-spacing: 0.06em; |
| } |
|
|
| .toast::before { content: '[ERR] '; } |
|
|
| |
| .spinner { |
| display: inline-block; |
| width: 10px; |
| height: 14px; |
| background: var(--secondary); |
| animation: cursor-blink 0.7s step-end infinite; |
| vertical-align: middle; |
| } |
|
|
| |
| @keyframes fadeIn { |
| from { opacity: 0; } |
| to { opacity: 1; } |
| } |
|
|
| @keyframes slideUp { |
| from { opacity: 0; transform: translateY(12px); } |
| to { opacity: 1; transform: none; } |
| } |
|
|
| |
| .round-badge:hover { |
| animation: glitch 0.3s ease; |
| } |
|
|
| @keyframes glitch { |
| 0% { transform: none; } |
| 20% { transform: translateX(-2px); text-shadow: 2px 0 var(--primary), -2px 0 var(--secondary); } |
| 40% { transform: translateX(2px); text-shadow: -2px 0 var(--primary), 2px 0 var(--secondary); } |
| 60% { transform: translateX(-1px); } |
| 80% { transform: translateX(1px); } |
| 100%{ transform: none; } |
| } |
|
|
| |
| @media (max-width: 1100px) { |
| .main-grid { grid-template-columns: 240px 1fr 260px; } |
| } |
|
|
| @media (max-width: 860px) { |
| .main-grid { |
| grid-template-columns: 1fr; |
| grid-template-rows: auto; |
| height: auto; |
| } |
|
|
| .npc-grid { grid-template-columns: 1fr; } |
| .decision-options-grid { grid-template-columns: 1fr; } |
| } |
| |
| .reward-bars { |
| display: grid; |
| grid-template-columns: repeat(10, 1fr); |
| gap: 4px; |
| height: 72px; |
| padding: 0.15rem 0.1rem 1.05rem; |
| border: 1px solid var(--border-dim); |
| background: linear-gradient(180deg, rgba(51,255,0,0.04), rgba(0,0,0,0.0)); |
| position: relative; |
| } |
| .reward-bar-slot { |
| position: relative; |
| height: 100%; |
| border-left: 1px dashed var(--border-dim); |
| } |
| .reward-bar-slot:first-child { border-left: none; } |
| .reward-bar-slot.empty { opacity: 0.35; } |
|
|
| .reward-bar-up, |
| .reward-bar-down { |
| position: absolute; |
| left: 12%; |
| right: 12%; |
| transition: height 0.25s ease; |
| } |
| .reward-bar-up { background: var(--primary); box-shadow: var(--glow-sm); } |
| .reward-bar-down { background: var(--error); box-shadow: 0 0 4px rgba(255,51,51,0.45); } |
|
|
| .reward-bar-zero { |
| position: absolute; |
| left: 0; right: 0; |
| height: 1px; |
| background: var(--muted); |
| pointer-events: none; |
| } |
| .reward-bar-label { |
| position: absolute; |
| bottom: -1.1rem; |
| left: 0; right: 0; |
| text-align: center; |
| font-size: 0.55rem; |
| color: var(--text-muted); |
| letter-spacing: 0; |
| } |
|
|