:root{color-scheme:light;--bg:#f7f1e7;--panel:#fffaf2;--line:#dcc8bd;--muted:#795d56;--gold:#900f1b;--text:#351c1b}
body{background:var(--bg);color:var(--text)}header{background:#850c18;color:#fff5e6;border-bottom:4px solid #b84b50;height:94px}.brand{color:#fff5e6;gap:12px}.brand-icon{background:#fff1e0;color:#940f20;border-radius:50%;font-size:24px}.brand-text{font:700 18px/1.5 'Be Vietnam Pro',Arial,sans-serif;letter-spacing:.5px}.brand-text small{display:block;font-size:10px;letter-spacing:1px;color:#f2c9be;margin-top:3px}.header-note{color:#f4d7cb;font-size:12px;letter-spacing:1px}.secondary{color:#fff4e7;border-color:#eab7ad80;background:#ffffff08}.secondary:hover{background:#ffffff18}main{max-width:1550px;grid-template-columns:300px minmax(0,1fr)}aside{background:#eee3d7;padding:27px 22px;border-right:1px solid #dac3b7}.aside-title h2{font-size:16px}.result-group{background:#faf5ed;border:1px solid #ddc7bc;border-radius:5px;padding:15px}.result-group.active{background:#fffaf2;border-color:#920e1e;box-shadow:inset 4px 0 #920e1e}.result-head{font-size:13px}.result-head .symbol{color:#980d1b}.result-head small,.result-numbers:empty:after{color:#86675e}.winner{background:#900e1d;color:#fff4e5;font-size:16px;letter-spacing:1px}.aside-note{color:#795d56;font-size:12px;margin:20px 0}.ticket-reference{margin:24px 0 0;padding-top:22px;border-top:1px solid #ceb2a5}.ticket-reference img{display:block;width:100%;height:auto;border-radius:3px}.ticket-reference figcaption{font-size:12px;text-align:center;color:#805950;margin-top:10px}
.stage{padding:32px 5% 28px;background:none}.eyebrow{color:#930e1c;letter-spacing:2px;font-size:12px;line-height:1.8}.stage h1{font:800 clamp(32px,4.2vw,61px)/1.4 'Be Vietnam Pro',Arial,sans-serif;letter-spacing:-1px;color:#890b18;margin:8px 0}.intro{font:400 16px/1.7 'Be Vietnam Pro',Arial,sans-serif;color:#795b53;margin:0 0 18px}.event-strip{display:flex;justify-content:center;gap:24px;color:#795b53;font-size:12px;margin-bottom:25px}.event-strip strong{color:#8c1020;margin-left:7px}.event-strip>span+span{border-left:1px solid #c5aaa0;padding-left:24px}
.draw-panel{padding:24px 26px 20px;border:1px solid #a94d52;border-radius:5px;background:#fffbf4;box-shadow:0 10px 40px #703c2710,inset 0 0 0 5px #f3e8dd}.prize-label{color:#8e0d1c;font-size:21px}.round{color:#795d56;margin:7px 0 21px}.ticket-code-label{font-size:12px;letter-spacing:3px;color:#886056;margin-bottom:12px}.number-ticket{display:flex;align-items:center;justify-content:center;gap:10px;background:#890b16;border:4px double #ffedd9;outline:1px solid #890b16;border-radius:8px;padding:18px 16px;color:#fff0df}.ticket-prefix{font:800 clamp(34px,5.8vw,78px)/1.2 'Be Vietnam Pro',Arial,sans-serif;letter-spacing:-3px;flex-shrink:0}.digits{gap:7px;min-width:0}.digit{width:clamp(40px,5.5vw,80px);height:104px;background:#a52a32;color:#fff3e6;border:1px solid #bc5b60;border-radius:4px;box-shadow:none;text-shadow:none;font:800 clamp(34px,5.6vw,74px)/1.2 'Be Vietnam Pro',Arial,sans-serif;font-variant-numeric:tabular-nums}.digit:after{border-color:#ffe9d810}.digit.locked{background:#fff1dc;color:#890b16;border-color:#fff9ed}.digit.rolling{color:#ffdec7}.reveal-hint{color:#795d56;font-size:12px;margin-top:22px}.announcement{color:#8c0a19;min-height:64px;font-size:20px}.spin{background:#8c0d1b;color:#fff7eb;border-color:#8c0d1b;border-radius:5px;box-shadow:0 4px 0 #590813;max-width:365px}.spin:hover:enabled{background:#ac1e2d}.next{color:#795d56}.progress-label{color:#795d56}.progress{background:#e4cfc3}.progress>div{background:#920f20}.steps{color:#795d56;text-transform:capitalize}.steps .current{color:#920f20;font-weight:700}.new-ticket{margin:30px 0 0;padding-top:25px;border-top:1px solid #dac3b7}.new-ticket img{width:100%;height:auto;display:block;border-radius:3px}.new-ticket figcaption{font-size:11px;letter-spacing:2px;color:#956559;margin-top:12px}footer{background:#850c18;color:#f2d9cd;border-top:0;font-size:12px;gap:15px}
 dialog{background:#fff8ef;color:#42211e;border-color:#b88376;border-radius:10px}dialog::backdrop{background:#2e060bad}.modal-head h2{font-size:23px}.close{color:#8c1020}.format-options label{border-color:#c6a096}.format-options label:has(input:checked){background:#f6dfd7;border-color:#900f1d}.format-options input{accent-color:#900f1d}.quota-row{border-color:#dec6bb}.quota-row input,.range-options input{background:#fffdfa;color:#54151c;border-color:#bd9489}.config-note{color:#795d56}.reset-note,#config-error{color:#a81521}
@media(min-width:1450px){.stage{padding-top:40px}}@media(max-width:1100px){main{grid-template-columns:265px minmax(0,1fr)}.stage{padding:28px 4%}.number-ticket{padding:15px 10px;gap:7px}.digit{height:89px}.ticket-prefix{letter-spacing:-2px}.draw-panel{padding:22px 16px}.digits{gap:5px}.brand-text{font-size:16px}}
@media(max-width:700px){header{height:86px;padding:0 15px;gap:8px}.brand{gap:8px}.brand-icon{width:32px;height:32px;font-size:18px;flex-shrink:0}.brand-text{font-size:13px;letter-spacing:0}.brand-text small{font-size:9px;letter-spacing:0;max-width:190px}.secondary{font-size:12px;padding:9px;white-space:nowrap}.stage{padding:25px 15px}.stage>.eyebrow{font-size:10px;letter-spacing:1px}.stage h1{font-size:clamp(28px,7vw,42px);letter-spacing:-.5px}.intro{font-size:14px}.event-strip{font-size:11px;gap:12px}.event-strip>span+span{padding-left:12px}.draw-panel{padding:20px 12px}.number-ticket{padding:14px 7px;gap:5px}.ticket-prefix{font-size:clamp(27px,7vw,45px);letter-spacing:-1px}.digit{width:clamp(29px,8.5vw,55px);height:76px;font-size:clamp(29px,7vw,43px)}.digits{gap:4px}.announcement{font-size:17px}.prize-label{font-size:18px}.steps{font-size:11px;flex-wrap:wrap;justify-content:center;gap:10px}.ticket-reference{max-width:320px;margin:24px auto 0}.new-ticket{margin-top:25px}.result-head{font-size:12px}.winner{font-size:14px}footer{flex-wrap:wrap;justify-content:center;text-align:center;font-size:11px}.config-note{font-size:13px}}
.btn-label{margin-left:6px}.prize-amount{margin:6px 0 0;color:#8e0d1c;font-size:16px;font-weight:700}.result-amount{margin-top:6px;color:#8e0d1c;font-size:13px;font-weight:700}
.config-caption,.quota-row{display:grid;grid-template-columns:minmax(0,1fr) 130px 76px;gap:10px;align-items:center}.config-caption span+span{text-align:center}.quota-row input{box-sizing:border-box;width:100%}.quota-row .amount{text-align:right;padding:8px;border:1px solid;border-radius:6px;font:inherit}
.winner.landing{visibility:hidden}.winner.fresh{animation:land .7s ease-out}@keyframes land{0%{transform:scale(1.4);box-shadow:0 0 0 0 #edbf65}100%{transform:none;box-shadow:0 0 0 12px #edbf6500}}
#congrats{width:min(94vw,860px);padding:38px 30px 32px;text-align:center;border:1px solid #a94d52;box-shadow:0 30px 80px #2e060b55,inset 0 0 0 6px #f3e8dd}#congrats[open],#congrats[open]::backdrop{animation:fade-in .35s ease-out}@keyframes fade-in{from{opacity:0}}.congrats-prize{display:inline-flex;align-items:center;gap:12px;margin-top:14px;color:#8e0d1c;font:800 clamp(24px,3.4vw,40px)/1.3 'Be Vietnam Pro',Arial,sans-serif}.congrats-amount{margin:6px 0 0;color:#8e0d1c;font-size:clamp(18px,2.2vw,26px);font-weight:700}.congrats-title{margin:22px 0 14px;color:#795d56;font-size:clamp(15px,1.8vw,20px)}.congrats-number{display:inline-block;padding:.08em .35em;background:#890b16;color:#fff4e5;border:6px double #ffedd9;outline:2px solid #890b16;border-radius:12px;font:800 clamp(52px,10vw,140px)/1.2 'Be Vietnam Pro',Arial,sans-serif;letter-spacing:2px;font-variant-numeric:tabular-nums;white-space:nowrap}.congrats-note{margin:22px 0 24px;color:#795d56;font-size:13px}.congrats-confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden}.congrats-confetti i{position:absolute;top:-20px;width:8px;height:14px;animation:fall 2.8s ease-in forwards}
@media(max-width:700px){.btn-label{display:none}.config-caption,.quota-row{grid-template-columns:minmax(0,1fr) 110px 60px;gap:8px}#congrats{padding:28px 16px 22px}}
main{max-width:none}body:not([data-screen=draw]) main,body:not([data-screen=welcome]) #welcome,body:not([data-screen=final]) #final,body:not([data-screen=final]) #restart{display:none}
.welcome{min-height:calc(100vh - 160px);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center}.welcome .start{font-size:22px;padding:22px 30px;margin-top:8px}.welcome .new-ticket{width:min(100%,720px)}
.final{min-height:calc(100vh - 160px);box-sizing:border-box}.final-grid{display:flex;flex-wrap:wrap;gap:20px;margin-top:12px;text-align:left}.final-card{flex:1 1 340px;box-sizing:border-box;background:#fffbf4;border:1px solid #a94d52;border-radius:8px;padding:22px 24px;box-shadow:inset 0 0 0 5px #f3e8dd}.final-card.special{flex-basis:100%;text-align:center;background:#890b16;border-color:#890b16;box-shadow:inset 0 0 0 5px #a52a32}.final-head{display:flex;align-items:center;gap:12px;color:#8e0d1c;font:800 clamp(22px,2.4vw,34px)/1.3 'Be Vietnam Pro',Arial,sans-serif}.special .final-head{justify-content:center;color:#fff4e5}.final-amount{margin:4px 0 0;color:#8e0d1c;font-size:clamp(16px,1.6vw,22px);font-weight:700}.special .final-amount{color:#ffe3c4}.final-numbers{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}.special .final-numbers{justify-content:center}.final-numbers .num{padding:6px 14px;border-radius:6px;background:#890b16;color:#fff4e5;font:800 clamp(30px,3.4vw,52px)/1.2 'Be Vietnam Pro',Arial,sans-serif;font-variant-numeric:tabular-nums}.special .final-numbers .num{background:#fff1dc;color:#890b16;font-size:clamp(48px,6vw,96px)}
.result-numbers{justify-content:center;text-align:center}.winner-item{display:flex;flex-direction:column;align-items:center;gap:4px}.winner-item small{color:#86675e;font-size:11px}.winner-item:has(.landing) small{visibility:hidden}
.final-card{text-align:center}.final-head,.final-numbers{justify-content:center}.final-numbers{gap:16px 20px}.final-item{display:flex;flex-direction:column;align-items:center;gap:6px}.final-item small{color:#795d56;font-size:clamp(14px,1.3vw,18px);font-weight:600}.special .final-item small{color:#ffe3c4}
.final-card.multi{flex-basis:100%}.final-card{padding:18px 24px}
#congrats::backdrop{backdrop-filter:none;background:#2e060bc4}.congrats-number{will-change:transform}.congrats-number.flying{position:fixed;z-index:20;margin:0;box-sizing:border-box;transform-origin:0 0;pointer-events:none}
