:root{font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:#161b25;background:#f3f3f8;--blue:#2f80f7;--muted:#8290a7;--green:#28c755;--red:#ff4038;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a,input,select{-webkit-tap-highlight-color:transparent}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button{border:0;background:none;color:inherit}a{text-decoration:none;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #86b8ff;outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.page-header{max-width:600px;margin:24px auto 0;background:#fff;padding:17px 24px 15px;box-shadow:0 4px 12px #2530530a}.header-line{display:flex;align-items:center;justify-content:space-between;gap:12px}.wordmark{font-size:15px;font-weight:700;display:flex;align-items:center;gap:7px}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 4px #2f80f710}#clock{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.page-header p{margin:13px 0 0;text-align:center;font-size:16px;font-weight:600;letter-spacing:1px}.page-shell{max-width:600px;margin:24px auto 0;padding:0 12px 100px}.cards{display:grid;gap:12px}.draw-card{background:#fff;border-radius:20px;padding:18px 16px 15px;box-shadow:0 9px 24px #25253409}.card-header{display:flex;align-items:center;gap:10px}.badge{width:44px;height:44px;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#fff;position:relative;isolation:isolate;border:2px solid #ffffff80;box-shadow:0 0 0 1px #efedf1;overflow:hidden;background:radial-gradient(circle at 28% 20%,#ff886d,#f12543 72%)}.badge:before{content:"";position:absolute;inset:5px;border:1px solid #ffffff85;border-radius:50%;z-index:-1}.badge small{font-size:9px;font-weight:600;line-height:12px;transform:rotate(-12deg)}.badge b{font-size:16px;font-style:italic;transform:rotate(-12deg);letter-spacing:-1px;line-height:17px}.badge.ca28{background:radial-gradient(circle at 25% 20%,#ffc6a2,#ff884e 65%,#f07148)}.badge.ca28 b{font-size:22px;transform:none}.badge.ca28 small{transform:none}.badge.tw5{background:radial-gradient(circle at 28% 20%,#ffd6e8,#fc98c4 75%)}.badge.tw5 b{font-size:14px;transform:none}.badge.tw5 small{transform:none}.identity{min-width:0}.identity h2{margin:0 0 4px;font-size:18px;line-height:24px;font-weight:600}.issue{color:#74859d;font-size:14px;line-height:18px;font-variant-numeric:tabular-nums}.issue span{font-family:Arial,sans-serif}.timer{margin-left:auto;min-width:55px;min-height:36px;padding:8px 10px;display:grid;place-items:center;background:var(--blue);color:#fff;border-radius:12px;font:600 14px Arial,sans-serif;white-space:nowrap;font-variant-numeric:tabular-nums}.timer.drawing{color:#ff3349;background:#fff0f2;font-family:inherit}.timer.stale{background:#edf0f6;color:#7a879b;font-family:inherit;font-size:12px}.result-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:78px;padding:22px 0 20px}.numbers{display:flex;align-items:center;flex-wrap:wrap;gap:5px;min-width:0}.ball{width:36px;height:36px;border:2px solid var(--blue);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:#fff;color:#111;font:18px Arial,sans-serif;font-variant-numeric:tabular-nums}.ball.sum{color:#fff;background:var(--blue);font-weight:600}.operator{font-size:20px;color:#b6c5d9;font-weight:300}.result-tags{display:flex;gap:5px;flex-shrink:0;align-items:center}.tag{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:21px;background:var(--blue)}.tag.green{background:var(--green)}.tag.red{background:var(--red)}.tag.pending{background:#edf0f6;color:#a5afbf}.sum-label{font-size:11px;color:var(--muted);text-align:center;line-height:15px}.sum-label b{display:block;font:600 17px Arial,sans-serif;color:var(--blue)}.card-actions{display:flex;gap:10px;padding-top:15px;border-top:1px solid #f0f1f6}.card-actions button{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;background:#f3f3f8;border-radius:22px;color:#76849c;min-height:34px;padding:7px 5px;font-size:13px;transition:background .15s,color .15s}.card-actions button:first-child{color:var(--blue)}.card-actions button:hover{background:#eaf2ff;color:var(--blue)}.icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.waiting{color:#a0adbf;font-size:13px;min-height:36px;display:flex;align-items:center}.connection{text-align:center;color:#8c98ad;font-size:11px;margin:20px 0}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);max-width:600px;width:100%;background:#fffffff5;border-top:1px solid #ebeef5;display:flex;justify-content:space-around;padding:9px 12px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -5px 20px #292d4405;z-index:5;backdrop-filter:blur(12px)}.bottom-nav>a,.bottom-nav>button{font-size:11px;color:#8a94a6;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:80px}.bottom-nav .active{color:var(--blue)}.nav-symbol{font:24px Arial,sans-serif;line-height:25px}.rolling{overflow:hidden;align-items:flex-start;position:relative}.reel{width:100%;height:100%;flex-shrink:0;animation:reel-scroll .72s linear infinite;animation-delay:var(--delay)}.reel span{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:inherit;background:transparent}.rolling.sum{background:var(--blue);box-shadow:none}@keyframes reel-scroll{to{transform:translateY(calc(-100% * var(--steps)))}}dialog{width:calc(100% - 24px);max-width:600px;max-height:85dvh;border:0;border-radius:22px;padding:24px;color:#232b3b;box-shadow:0 20px 90px #172c5433}dialog::backdrop{background:#15213866;backdrop-filter:blur(3px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-header small{color:var(--blue);font-size:12px}.dialog-header h2{font-size:21px;margin:6px 0 0}.close{font-size:28px;color:#8995a8;border-radius:50%;width:36px;height:36px;background:#f3f3f8}.detail-controls{display:flex;gap:10px}.detail-controls select,.detail-controls input{width:50%;min-width:0;padding:10px 8px;border:1px solid #e5eaf2;border-radius:9px;background:#fff;color:#68778f;font-size:13px}.view-switch{display:flex;padding:4px;background:#f3f3f8;border-radius:12px;margin:18px 0}.view-switch button{flex:1;border-radius:9px;font-size:13px;padding:10px}.view-switch .active{background:#fff;color:var(--blue);box-shadow:0 2px 6px #21314e08}.history-scroll{overflow:auto;max-height:48dvh}.history-table{width:100%;border-collapse:collapse;white-space:nowrap;text-align:center;font-size:12px}.history-table th{font-weight:400;color:#8c99ae;background:#f7f8fb;padding:12px 8px;position:sticky;top:0}.history-table td{border-bottom:1px solid #f1f3f7;padding:12px 8px;color:#62738e}.history-table td small{display:block;font-size:10px;color:#a3afc0;margin-top:4px}.history-table .numbers{flex-wrap:nowrap;justify-content:center;gap:3px}.history-table .ball{width:24px;height:24px;font-size:12px;border-width:1px}.history-table .operator{font-size:14px}.empty{text-align:center;color:#8996aa;padding:40px 10px;font-size:13px;line-height:1.8}.trend-note{font-size:12px;color:#8a97ad;line-height:1.8;margin:14px 0}.chart{width:100%;height:auto;display:block}.chart text{font:11px Arial,sans-serif;fill:#8b99ae}.chart .grid{stroke:#edf0f6;stroke-width:1}.chart .line{fill:none;stroke:var(--blue);stroke-width:2}.chart .point{fill:#fff;stroke:var(--blue);stroke-width:2}.trend-stats{display:flex;justify-content:space-around;text-align:center;background:#f7f9fd;border-radius:12px;padding:14px}.trend-stats small{display:block;color:#91a0b4;font-size:11px;margin-bottom:6px}.trend-stats b{color:var(--blue);font-size:19px}#toast{position:fixed;bottom:88px;left:50%;transform:translateX(-50%);background:#263753ee;color:#fff;border-radius:12px;padding:12px 20px;font-size:13px;z-index:20;opacity:0;pointer-events:none;transition:opacity .2s;white-space:nowrap}#toast.visible{opacity:1}@media(max-width:600px){.page-header{margin-top:0;padding:17px 20px}.page-shell{margin-top:18px}.draw-card{padding:17px 15px 15px}.identity h2{font-size:17px}.result-row{gap:8px}.card-actions{gap:8px}.wide-result{flex-wrap:wrap}.wide-result .result-tags{margin-left:auto}.wide-result .numbers{gap:5px}.wide-result .ball{width:32px;height:32px;font-size:16px}.wide-result{min-height:95px}.page-shell{padding-left:12px;padding-right:12px}}@media(max-width:370px){.ball,.tag{width:32px;height:32px;font-size:18px}.numbers{gap:3px}.operator{font-size:17px}.identity h2{font-size:16px}.issue{font-size:12px}.card-actions button{font-size:12px}.wide-result .ball{width:29px;height:29px;font-size:15px}.wide-result .numbers{gap:4px}.badge{width:40px;height:40px}.draw-card{padding:16px 12px}.wide-result{padding:18px 0 16px}.result-tags{gap:4px}dialog{padding:18px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* 台湾宾果：主号码固定十列两行，附加号码靠右下方。 */
.badge.twbingo{background:radial-gradient(circle at 28% 20%,#87c6ff,#2f80f7 75%)}
.badge.twbingo b,.badge.twbingo small{transform:none}
.bingo-result{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:10px;align-items:end;padding:22px 0 20px}
.numbers.bingo-numbers{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:7px 5px;justify-items:center;width:100%}
.bingo-numbers>.ball{width:100%;max-width:36px;height:auto;aspect-ratio:1;font-size:16px}
.bingo-result .result-tags{display:block;margin:0}
.bingo-extra{display:block}
.bingo-extra>.ball{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:none}
.history-table .bingo-numbers{min-width:260px;gap:5px 3px}
.history-table .bingo-numbers>.ball{width:24px;height:24px;font-size:12px}
@media(max-width:600px){.bingo-result{grid-template-columns:minmax(0,1fr) 28px;gap:8px}.bingo-numbers>.ball{font-size:12px;border-width:1.5px}.numbers.bingo-numbers{gap:6px 3px}.bingo-extra>.ball{width:28px;height:28px;font-size:14px}}
@media(max-width:370px){.bingo-numbers>.ball{font-size:11px}.bingo-result{grid-template-columns:minmax(0,1fr) 24px;gap:6px}.bingo-extra>.ball{width:24px;height:24px;font-size:12px}}
