*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:#0f172a;color:#e2e8f0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4;-webkit-text-size-adjust:100%;min-height:100vh}body{display:flex;align-items:flex-start;justify-content:center;padding:16px}.card{width:100%;max-width:480px;background:#111827;border:1px solid #1f2937;border-radius:12px;padding:20px}.card.keno{max-width:640px;padding:16px}h1{margin:0 0 8px;font-size:22px;font-weight:600;letter-spacing:.2px}p{margin:0 0 16px}p:last-child{margin-bottom:0}.muted{color:#94a3b8}.small{font-size:13px;margin-bottom:4px}.strong{font-weight:600;font-size:18px;margin:0}.balance{font-variant-numeric:tabular-nums}.right{text-align:right}.row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #1f2937}.field{display:block;margin-bottom:16px}.field-label{display:block;margin-bottom:8px;font-size:13px;color:#94a3b8}.code-input{width:100%;padding:14px 16px;font-size:18px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;letter-spacing:.15em;text-transform:uppercase;background:#0b1220;color:#f1f5f9;border:1px solid #334155;border-radius:8px;outline:none}.code-input:focus{border-color:#3b82f6}.code-input[aria-invalid=true]{border-color:#ef4444}button{font-family:inherit;cursor:pointer;border-radius:8px;border:1px solid transparent;font-size:16px;font-weight:500;padding:12px 16px;transition:background-color .12s ease,border-color .12s ease,color .12s ease;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.5}.primary{display:block;width:100%;background:#2563eb;color:#fff;margin-top:8px}.primary:not(:disabled):hover{background:#1d4ed8}.ghost{background:transparent;color:#cbd5e1;border-color:#334155}.ghost:not(:disabled):hover{background:#1f2937}.ghost.grow{flex:1 1 0}.link{background:transparent;color:#93c5fd;border:none;padding:6px 8px;font-size:14px}.link:not(:disabled):hover{color:#bfdbfe}.error{background:#2a1414;border:1px solid #7f1d1d;color:#fecaca;padding:10px 12px;border-radius:8px;font-size:14px;margin:0 0 12px}.success{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;background:#0e2a18;border:1px solid #14532d;color:#bbf7d0;padding:10px 12px;border-radius:8px;font-size:14px;margin:0 0 12px}.ticket-serial{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:13px;letter-spacing:.05em;background:#062417;border:1px solid #14532d;padding:2px 6px;border-radius:4px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.game{position:relative;background:#1e293b;color:#e2e8f0;border-color:#334155;padding:24px 12px;font-weight:600;min-height:64px}.game:not(:disabled):hover{background:#334155}.game-emoji{display:block;font-size:28px;margin-bottom:6px;line-height:1}.hero{text-align:center;margin:12px 0 24px}.hero-emoji{display:block;font-size:64px;line-height:1;margin-bottom:12px}.empty{margin:0 0 12px;padding:12px;border:1px dashed #334155;border-radius:8px;text-align:center}.bet-list{list-style:none;margin:0 0 16px;padding:0}.bet-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#0b1220;border:1px solid #1f2937;border-radius:8px;margin-bottom:6px}.bet-odds{font-weight:700;font-variant-numeric:tabular-nums;background:#1e293b;color:#fbbf24;padding:4px 10px;border-radius:6px;font-size:14px}.bet-stake{flex:1 1 auto;font-variant-numeric:tabular-nums;font-weight:600}.bet-remove{background:transparent;color:#94a3b8;border:1px solid #334155;width:32px;height:32px;padding:0;font-size:18px;border-radius:6px}.bet-remove:not(:disabled):hover{background:#1f2937;color:#fecaca;border-color:#7f1d1d}.odds-tier{margin-bottom:12px}.odds-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.odds-cell{background:#1e293b;color:#e2e8f0;border:1px solid #334155;border-radius:6px;padding:0;font-weight:600;font-variant-numeric:tabular-nums;font-size:13px;height:40px}.odds-cell:not(:disabled):hover{background:#334155;border-color:#fbbf24;color:#fbbf24}.diamond-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:16px}@media(min-width:520px){.diamond-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.diamond{display:flex;flex-direction:column;align-items:stretch;gap:4px;background:#0b1220;border:1px solid #334155;border-radius:8px;padding:10px;text-align:left;min-height:96px}.diamond:not(:disabled):hover{background:#1e293b}.diamond.is-picked{background:#1c1917;border-color:#fbbf24;box-shadow:0 0 0 1px #fbbf24}.diamond-swatch{display:block;height:18px;border-radius:4px;border:1px solid rgba(255,255,255,.15)}.diamond-label{font-size:13px;font-weight:600;color:#e2e8f0}.diamond-odds{font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums}.diamond-stake{margin-top:4px;font-size:12px;font-weight:700;color:#fbbf24;font-variant-numeric:tabular-nums}.hint{margin-top:6px}.picker-summary{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:14px}.count{font-variant-numeric:tabular-nums;background:#1e293b;color:#cbd5e1;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:600}.count.count-full{background:#422006;color:#fde68a}.keno-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;margin-bottom:12px}.keno-cell{background:#1e293b;color:#e2e8f0;border:1px solid #334155;border-radius:6px;padding:0;font-weight:600;font-size:14px;font-variant-numeric:tabular-nums;height:40px;display:flex;align-items:center;justify-content:center}.keno-cell:not(:disabled):hover{background:#334155}.keno-cell:disabled:not(.is-selected){opacity:.35}.keno-cell.is-selected{background:#f59e0b;color:#1c1917;border-color:#d97706;box-shadow:0 1px #b45309 inset,0 0 0 1px #fbbf24}.keno-actions{display:flex;gap:8px;margin-bottom:16px}.control-block{margin-bottom:16px}.control-label{margin:0 0 6px;font-size:13px;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{background:#1e293b;color:#e2e8f0;border:1px solid #334155;border-radius:999px;padding:8px 14px;font-weight:600;font-variant-numeric:tabular-nums;font-size:14px;min-width:56px}.chip:not(:disabled):hover{background:#334155}.chip.is-active{background:#2563eb;border-color:#1d4ed8;color:#fff}.stepper{display:flex;align-items:stretch;gap:8px}.step{background:#1e293b;color:#e2e8f0;border:1px solid #334155;width:44px;height:44px;font-size:22px;padding:0}.step:not(:disabled):hover{background:#334155}.step-value{flex:1 1 auto;background:#0b1220;color:#f1f5f9;border:1px solid #334155;border-radius:8px;text-align:center;font-size:16px;font-variant-numeric:tabular-nums;font-weight:600;-moz-appearance:textfield}.step-value::-webkit-outer-spin-button,.step-value::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.step-value:focus{outline:none;border-color:#3b82f6}.place-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid #1f2937}.place{margin-top:0;width:auto;flex:0 0 auto;padding:14px 22px;font-size:16px}@media(max-width:420px){.keno-cell{height:34px;font-size:13px}.keno-grid{gap:4px}.card.keno{padding:12px}.chip{padding:8px 12px;min-width:48px}}@media(min-width:640px){.keno-cell{height:48px;font-size:16px}}
