.o2-header { display: flex; justify-content: space-between; align-items: end; gap: 12px; margin-bottom: 16px; } .o2-title { font-size: 28px; font-weight: 700; line-height: 1.1; margin: 0; } .o2-sub { font-size: 14px; color: var(--muted); margin-top: 6px; } .o2-row { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; } .o2-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; } label { font-size: 12px; color: var(--muted); font-weight: 700; } input, select, textarea, button { font: inherit; } input, select, textarea { width: 100%; padding: 10px 12px; border-radius: 12px; border: 1px solid rgba(255,255,255,0.18); background: rgba(255,255,255,0.96); color: #2b0000; outline: none; } textarea { min-height: 110px; resize: vertical; } .o2-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 10px; } button { border: 0; border-radius: 12px; padding: 10px 14px; cursor: pointer; background: #fff; color: #7a0000; font-weight: 700; } button.o2-secondary { background: rgba(255,255,255,0.18); color: var(--text); border: 1px solid rgba(255,255,255,0.18); } .o2-preset-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; } .o2-preset-btns button { padding: 6px 12px; font-size: 12px; background: rgba(255,255,255,0.18); color: var(--text); border: 1px solid rgba(255,255,255,0.28); border-radius: 999px; font-weight: 700; cursor: pointer; } .o2-preset-btns button:hover { background: rgba(255,255,255,0.30); } .o2-stats { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; } .o2-stat { background: rgba(255,255,255,0.09); border: 1px solid rgba(255,255,255,0.14); border-radius: 14px; padding: 14px; } .o2-stat .k { font-size: 12px; color: var(--muted); margin-bottom: 6px; font-weight: 700; } .o2-stat .v { font-size: 24px; font-weight: 700; line-height: 1; } .o2-note { margin-top: 12px; font-size: 12px; color: var(--muted); line-height: 1.45; } .o2-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; justify-content: flex-end; } .o2-tag { font-size: 12px; background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.12); border-radius: 999px; padding: 5px 8px; color: var(--accent); } .o2-divider { height: 1px; background: rgba(255,255,255,0.14); margin: 14px 0; } .o2-full { grid-column: 1 / -1; } .o2-chart-label { font-size: 11px; font-weight: 700; color: var(--muted); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 6px; margin-top: 14px; } .o2-tc-svg { width: 100%; display: block; } .o2-dist-legend { display: flex; gap: 14px; margin-bottom: 8px; flex-wrap: wrap; } .o2-dist-legend span { font-size: 11px; color: var(--muted); display: flex; align-items: center; gap: 5px; } .o2-dist-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; flex-shrink: 0; } .o2-bar-wrap { display: flex; align-items: flex-end; gap: 5px; height: 130px; margin-top: 4px; } .o2-bar-col { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; gap: 2px; } .o2-bar { width: 100%; border-radius: 4px 4px 0 0; min-height: 2px; } .o2-bar-lbl { font-size: 10px; color: var(--muted); } .o2-bar-pct { font-size: 10px; font-weight: 700; color: var(--text); line-height: 1.2; } .o2-bar-cnt { font-size: 9px; color: var(--muted); line-height: 1.2; } .o2-no-data { font-size: 13px; color: var(--muted); padding: 10px 0; } .o2-approx-note { font-size: 11px; color: var(--muted); margin-bottom: 8px; } @media (max-width: 900px) { .o2-header { align-items: flex-start; flex-direction: column; } .o2-tags { justify-content: flex-start; } } @media (max-width: 640px) { .o2-row, .o2-stats { grid-template-columns: 1fr; } .o2-title { font-size: 24px; } } /* Draggable Collapsible Block Styles */ .blocks-container { display: flex; flex-direction: column; gap: 16px; margin-top: 16px; } .drag-block { background: var(--card); border: 1px solid var(--card-border); border-radius: 16px; box-shadow: var(--shadow); backdrop-filter: blur(4px); transition: opacity 0.2s ease, transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; } .drag-block.dragging { opacity: 0.4; transform: scale(0.98); border: 2px dashed rgba(255, 255, 255, 0.4); } .drag-block.drag-over { border-color: #ffd9d9; box-shadow: 0 0 15px rgba(255, 217, 217, 0.3); } .block-header { display: flex; align-items: center; padding: 14px 18px; border-bottom: 1px solid rgba(255, 255, 255, 0.08); user-select: none; } .block-header.collapsible { cursor: pointer; } .block-header h3 { margin: 0; font-size: 16px; font-weight: 700; flex: 1; } .drag-handle { font-size: 18px; color: var(--muted); cursor: grab; margin-right: 12px; padding: 0 4px; } .drag-handle:active { cursor: grabbing; } .collapse-toggle { font-size: 10px; color: var(--muted); transition: transform 0.2s ease; margin-left: 10px; } .block-header.collapsed .collapse-toggle { transform: rotate(-90deg); } .block-header.collapsed { border-bottom-color: transparent; } .block-content { padding: 18px; overflow: hidden; } .block-content.collapsed { display: none; }

Omega II Assistant

Ace-neutral level-two count. Betting uses granular betting TC rather than rounded TC for better accuracy. Rounded TC is displayed only as an extra reference.
T/J/Q/K:-2 A:0 side

Card Entry

10 becomes T. Aces are side-counted and used only for betting true count adjustment.

Live Stats

Running count
Ace side count
Decks remaining
Main true count
Ace adjustment
Betting true count
Rounded TC

Relevant Settings

Edit directly or tap a preset above to load it. Each line: TC<=0:1, TC>=1:2, TC>=4:12 etc. Insurance uses main true count. Betting uses ace-adjusted true count.

History & Stats