/* One Stroke */
.os-board { position: relative; width: min(100%, 420px); aspect-ratio: 1 / 1; margin: 14px auto 10px; background: #fff; border: 2px solid var(--ink); border-radius: 6px; overflow: hidden; touch-action: none; }
.os-board.armed { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(189,46,50,.2); cursor: crosshair; }
.os-canvas, .os-show { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.os-show { padding: 6%; box-sizing: border-box; }
.os-show path, .os-show polyline { fill: none; stroke: var(--ink); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.os-msg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 18px; font-family: var(--sans); font-size: 16px; line-height: 1.45; color: var(--ink-2); background: rgba(255,255,255,.94); }
.os-msg[hidden], .os-show[hidden] { display: none; }
.os-count { font-family: var(--sans); font-weight: 800; font-size: 30px; font-variant-numeric: tabular-nums; margin: 4px 0 0; min-height: 36px; color: var(--ink); }
.os-bar { width: min(100%, 420px); height: 8px; margin: 6px auto 14px; background: #e4e1da; border-radius: 99px; overflow: hidden; }
.os-bar i { display: block; height: 100%; width: 100%; background: var(--brand); transform-origin: left; }
.os-over { width: min(100%, 320px); aspect-ratio: 1 / 1; margin: 6px auto 10px; background: #fff; border: 1px solid var(--rule); border-radius: 6px; display: block; }
.os-over path { fill: none; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.os-over .o { stroke: #9a9791; stroke-width: 3.2; }
.os-over .p { stroke: var(--brand); }
.os-key { font-family: var(--sans); font-size: 13px; color: var(--muted); margin: 0 0 6px; }
.os-key i { display: inline-block; width: 18px; height: 4px; vertical-align: middle; margin: 0 4px 0 10px; border-radius: 2px; }
.os-key i.o { background: #9a9791; } .os-key i.p { background: var(--brand); }
