:root{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;color:#fff;background:#080a19;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100dvh;overflow-x:hidden}button,select{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:3px solid #ffdb5f;outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.6}.workspace{min-height:100dvh;display:flex;gap:clamp(10px,2vw,28px);align-items:center;justify-content:center;padding:12px;background:radial-gradient(ellipse at 15% 20%,#301025 0,transparent 43%),radial-gradient(ellipse at 80% 75%,#102b55 0,transparent 45%),#080a19}.stage-shell{position:relative;flex:none;border-radius:17px;overflow:hidden;background:#08091b;box-shadow:0 35px 80px #000a,0 0 0 1px #ffffff26;isolation:isolate}.stage{height:854px;width:480px;position:absolute;top:0;left:0;overflow:hidden;transform-origin:top left;isolation:isolate;background:linear-gradient(90deg,#2b0719 0%,#8c0e30 42%,#371126 49.8%,#122c68 50.2%,#0358a0 67%,#0b1738 100%)}.stage:before{content:"";position:absolute;z-index:-2;inset:0;opacity:.36;background:repeating-conic-gradient(from 22deg at 50% 38%,transparent 0 15deg,#fff3 16deg 18deg,transparent 19deg 36deg),linear-gradient(180deg,transparent 10%,#1d0923 70%,#06051a)}.stage:after{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;background:linear-gradient(to bottom,transparent 0 37%,#050b2585 57%,transparent 84%,#05051288 99%)}.spotlight{position:absolute;top:125px;width:225px;height:380px;filter:blur(40px);z-index:-2;pointer-events:none}.spotlight--left{left:-40px;background:radial-gradient(circle,#ff3954b0,transparent 70%)}.spotlight--right{right:-40px;background:radial-gradient(circle,#27a0ffb0,transparent 70%)}.split-line{position:absolute;left:239px;top:70px;width:3px;height:382px;background:linear-gradient(transparent,#fff8,#e8e1ff,transparent);box-shadow:0 0 20px #fff9,0 0 30px #538ff8;z-index:1}.arena-beams{position:absolute;inset:0 0 280px;opacity:.14;pointer-events:none;background:repeating-linear-gradient(160deg,transparent 0 28px,#fff4 29px 32px,transparent 33px 65px)}.ambient-dots{position:absolute;inset:0;pointer-events:none;opacity:.67;background-image:radial-gradient(#f7c16c 2px,transparent 3px),radial-gradient(#8ebdff 2px,transparent 3px),radial-gradient(#ff5d85 2px,transparent 3px);background-size:107px 163px,139px 184px,151px 219px;background-position:4px 48px,22px 79px,93px 112px}.live-header{position:absolute;top:12px;left:13px;right:12px;display:flex;align-items:center;gap:8px;z-index:12}.live-marker{font-weight:900;font-size:11px;display:flex;align-items:center;gap:5px;background:linear-gradient(110deg,#f7285d,#dd1944);padding:7px 9px;border-radius:8px;box-shadow:0 4px 12px #fc28606b}.live-marker small{font-size:8px;background:#fff;color:#cf2551;border-radius:3px;padding:2px 3px}.blink-dot{height:7px;width:7px;background:white;border-radius:50%;animation:blink 2s infinite}.live-counter{display:flex;align-items:center;gap:4px;padding:7px 8px;background:#0007;border:1px solid #ffffff33;border-radius:8px;font-size:10px;font-weight:850}.live-counter svg{width:14px;height:14px;fill:none;stroke:#fff;stroke-width:2}.settings-trigger{margin-left:auto;border:1px solid #ffffff40;color:white;background:#0008;border-radius:8px;font-size:16px;line-height:1;padding:6px;width:28px;height:29px}.brand-title{position:absolute;top:49px;left:85px;width:310px;height:105px;z-index:7;text-align:center;filter:drop-shadow(0 5px 3px #111a40)}.tiny-stars{position:absolute;top:-8px;left:0;width:100%;display:flex;justify-content:space-evenly;font-size:19px;color:#ffdb48;text-shadow:0 0 11px #ff8735}.tiny-stars span{transform:translateY(-7px)}.brand-main{transform:rotate(-2deg);font-family:'Barlow Condensed','Arial Narrow',Impact,sans-serif;font-style:italic;font-weight:900;font-size:52px;letter-spacing:.2px;line-height:1.06;color:white;-webkit-text-stroke:2px #113370;text-shadow:3px 3px #07478f,4px 5px #081944,0 0 20px #1580ed}.brand-main span{background:none;color:#f7fcff;-webkit-text-stroke:1px #8ed8ff;text-shadow:2px 2px #154cb6,3px 5px #020c2a,0 0 15px #299eff}.brand-sub{display:inline-block;padding:0 13px 4px;margin-top:-2px;background:linear-gradient(180deg,#ea1b45,#a30b36);border:3px solid #ffe37c;border-radius:8px;box-shadow:0 3px 0 #5e0a2d,0 8px 22px #160518;font-family:'Barlow Condensed',Impact,sans-serif;font-size:28px;font-weight:900;line-height:1;color:#ffdf52;-webkit-text-stroke:.5px #49101d;transform:rotate(1deg)}.brand-sub span:first-child{font-size:17px;color:white}.brand-lightning{font-size:24px}.versus{position:absolute;top:153px;left:215px;z-index:6;font-size:28px;font-family:Impact,'Arial Narrow',sans-serif;font-style:italic;color:#ffec65;-webkit-text-stroke:2px #782712;text-shadow:3px 4px 0 #151226,0 0 20px #f9a72f;transform:rotate(-7deg)}
/* Hero art is its own translucent asset, not a flattened scene. */
.arena{position:absolute;inset:135px 0 auto;height:308px;z-index:3;display:flex;pointer-events:none}.candidate{position:relative;width:50%;height:100%;isolation:isolate}.arena-disc{position:absolute;inset:8px -30px 15px;z-index:-2;border-radius:50%;background:radial-gradient(ellipse at 50% 52%,#f3405d55 10%,transparent 68%);filter:blur(6px)}.candidate--flavio .arena-disc{background:radial-gradient(ellipse at 50% 52%,#3aa7ff85 10%,transparent 68%)}.candidate-picture{display:block;position:absolute;bottom:-6px;left:-8px;width:261px;height:auto;max-width:none;transform-origin:50% 89%;animation:breathe 4.1s ease-in-out infinite;filter:drop-shadow(0 0 11px #24021f99) drop-shadow(2px 8px 1px #25001577);-webkit-mask-image:linear-gradient(180deg,#000 0% 92%,transparent 100%);mask-image:linear-gradient(180deg,#000 0% 92%,transparent 100%)}.candidate--flavio .candidate-picture{left:-3px;width:260px;animation-delay:.7s;filter:drop-shadow(0 0 10px #00142a) drop-shadow(2px 8px 1px #061a33)}.candidate-plaque{position:absolute;bottom:-2px;left:13px;right:10px;height:51px;display:flex;align-items:center;justify-content:space-evenly;border-radius:12px;border:3px solid #ff94aa;background:linear-gradient(180deg,#fc325b,#c90930 70%,#8d0f30);font:900 30px/1 'Barlow Condensed',Impact,sans-serif;letter-spacing:.4px;text-shadow:2px 2px 1px #520519;box-shadow:0 5px 0 #670c27,0 0 20px #ff183670;z-index:3}.candidate--flavio .candidate-plaque{font-size:27px;left:4px;right:13px;border-color:#83e0ff;background:linear-gradient(180deg,#168cfb,#0552c7 76%,#133385);box-shadow:0 5px 0 #102660,0 0 21px #26acff7a}.plaque-symbol{font-size:25px;color:#ffe3a4;text-shadow:0 0 12px #ffd77e}.plaque-symbol--blue{color:#ffe2a3}.character-emoji{position:absolute;z-index:9;right:9px;top:48px;font-size:45px;opacity:0;transform:translateY(12px) scale(.7);text-shadow:0 3px 15px #000b}.candidate--flavio .character-emoji{left:1px;right:auto}.candidate-reaction{position:absolute;z-index:9;bottom:64px;right:8px;border-radius:20px;padding:5px 9px;background:#191322ca;box-shadow:0 3px 15px #03030a94;border:1px solid #ffffff68;font-weight:800;font-size:11px;opacity:0;transform:translateY(6px)}.candidate--flavio .candidate-reaction{left:8px;right:auto}.character-glow{position:absolute;z-index:-1;inset:10px 10px 20px;opacity:0;transition:opacity .2s;background:radial-gradient(#fff9,transparent 65%)}.candidate.is-happy .candidate-picture{animation:celebrate .7s ease-in-out 2}.candidate.is-happy .character-emoji,.candidate.is-sad .character-emoji,.candidate.is-angry .character-emoji,.candidate.is-neutral .character-emoji{animation:reaction-pop 1.7s ease-out forwards}.candidate.is-happy .character-glow{opacity:1}.candidate.is-sad .candidate-picture{animation:sad-wobble 1.5s ease-in-out 1;filter:grayscale(.42) drop-shadow(0 5px 5px #0009)}.candidate.is-angry .candidate-picture{animation:angry-shake .18s linear 0s 7}.candidate.is-angry .character-glow{opacity:1;background:radial-gradient(#fe3a425e,transparent 65%)}.candidate.is-idle .candidate-picture{animation:breathe 4.1s ease-in-out infinite}.candidate-reaction.is-visible{animation:reaction-pop 2.5s ease-out forwards}
.scoreboard{position:absolute;left:24px;top:449px;width:432px;height:65px;z-index:7;background:linear-gradient(180deg,#101125ed,#080e26f5);border:1px solid #c2d8ff8a;border-radius:15px;padding:5px 12px 8px;box-shadow:0 0 0 3px #070b14a5,0 8px 14px #04051d99,0 -4px 16px #fff2}.score-label{text-align:center;font-size:9px;font-weight:900;letter-spacing:3px;color:#d7e4ff}.score-flash{font-size:7px;color:#43fc95}.score-row{display:flex;align-items:center;gap:8px;height:43px}.score-value{width:96px;display:flex;align-items:baseline;gap:4px;font-family:'Barlow Condensed',Impact,sans-serif;white-space:nowrap;font-size:36px;font-weight:900;line-height:1;color:#fff}.score-value--right{justify-content:flex-end}.score-value--left{text-shadow:0 0 10px #ff1d58}.score-value--right{text-shadow:0 0 10px #2878ff}.score-value small{font:900 8px 'Inter',sans-serif;color:#d6e8ff}.score-track{height:16px;flex:1;overflow:visible;display:flex;position:relative;border:2px solid #b8caee;border-radius:20px;background:#1f2d55;box-shadow:inset 0 1px 5px #000b}.score-track .bar-lula{width:50%;background:linear-gradient(180deg,#ff648c,#df1748);border-radius:20px 0 0 20px;transition:width .55s cubic-bezier(.18,.8,.2,1)}.score-track .bar-flavio{flex:1;background:linear-gradient(180deg,#57c7fe,#0d4cdd);border-radius:0 20px 20px 0;transition:width .55s}.score-track-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:19px;filter:drop-shadow(0 1px 2px #050324)}
.ballot-machine{position:absolute;left:19px;top:531px;width:442px;height:216px;z-index:4;border:7px solid #c6cada;border-bottom:13px solid #adb2c9;border-radius:17px 17px 21px 21px;background:linear-gradient(146deg,#f7f8fd,#d1d6e3 48%,#aab5ca);box-shadow:0 9px 0 #485879,0 16px 24px #02051ddd,0 0 21px #fffc}.ballot-header{height:31px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;color:#172044;font-size:11px;font-weight:900;letter-spacing:.3px}.ballot-brand{display:flex;align-items:center;gap:6px}.badge-ballot{width:22px;height:22px;border-radius:7px;background:#182f69;color:#ffd66b;display:grid;place-items:center;font-size:15px}.ballot-official{text-align:right;font-size:9px;line-height:1.05;color:#3c4b64}.ballot-content{display:flex;gap:9px;height:160px;padding:0 9px}.ballot-display{flex:1;min-width:0;border:5px solid #2b3043;border-radius:8px;background:linear-gradient(135deg,#deebff,#fcffff 63%,#b5d8fa);box-shadow:inset 0 1px 4px #0009,0 2px 1px #fff6;position:relative;overflow:hidden;color:#183055}.display-top{height:24px;background:linear-gradient(180deg,#0b48a3,#092775);text-align:center;display:flex;justify-content:center;align-items:center;font:900 16px 'Barlow Condensed',sans-serif;letter-spacing:.7px;color:white;text-shadow:0 2px #092354}.display-inner{height:calc(100% - 40px);position:relative;display:flex;align-items:center;justify-content:center}.display-bottom{height:16px;padding:1px 8px;display:flex;justify-content:space-between;align-items:center;background:#d5e9f9;font-weight:900;font-size:8px;letter-spacing:1px}.signal-bars{color:#078d50}.waiting-visual{display:flex;align-items:center;flex-direction:column;text-align:center;gap:4px}.waiting-symbol{font-size:38px;color:#e9a026;text-shadow:0 2px 15px #ffdc85}.waiting-visual strong{font-size:15px;line-height:1.1;color:#244881}.waiting-visual small{font-size:9px;color:#677b99}.ballot-vote{height:100%;width:100%;display:grid;grid-template-columns:90px 1fr;gap:5px;align-items:center;padding:5px 5px}.ballot-vote-photo{width:88px;height:92px;align-self:end;overflow:hidden;position:relative;border:2px solid #90a8cc;background:linear-gradient(#c6dafa,#e5effc);border-radius:7px}.ballot-vote-photo img{width:100%;height:140%;object-fit:cover;object-position:center 10%;transform:translateY(-11px)}.ballot-vote-photo[data-candidate="flavio"] img{height:134%;transform:translateY(-9px)}.ballot-vote-text{display:flex;flex-direction:column;gap:3px;min-width:0}.ballot-vote-text .mini-label{font-size:8px;font-weight:800;color:#6a7994}.ballot-vote-text .big-number{font:900 49px/1 'Barlow Condensed',sans-serif;color:#122c62}.ballot-vote-text .voted-for{font:900 13px/1.1 'Barlow Condensed',sans-serif;color:#122f68}.ballot-vote-text .voted-quantity{font:900 13px 'Inter',sans-serif;color:#16a362}.display-error{font-size:15px;font-weight:900;color:#a73134;text-align:center;padding:0 15px}.keyboard{width:153px;border-radius:6px;background:linear-gradient(135deg,#20222f,#333846);padding:7px 5px;box-shadow:inset 0 0 8px #000a;display:flex;flex-direction:column;gap:6px}.number-keys{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,24px);gap:4px;justify-items:stretch}.number-keys button{border:1px solid #434851;border-bottom:3px solid #0b0d17;background:linear-gradient(#353946,#111523);border-radius:5px;color:#fff;font:700 17px/1 'Barlow Condensed',sans-serif;box-shadow:0 1px 2px #0006;padding:0}.number-keys button:active,.action-keys button:active{transform:translateY(2px);border-bottom-width:1px}.action-keys{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;flex:1}.action-keys button{min-width:0;min-height:0;border:0;border-bottom:4px solid #0008;border-radius:4px;padding:2px 0;font:900 8px 'Barlow Condensed',sans-serif;color:#111;text-shadow:0 1px #fff5}.key-blank{background:linear-gradient(#fff,#d9dce6)}.key-correct{background:linear-gradient(#ffab51,#f36c1b)}.key-confirm{background:linear-gradient(#3ef59c,#08bf60)}.ballot-lights{position:absolute;right:16px;bottom:2px;display:flex;gap:4px}.ballot-lights i{height:3px;width:8px;background:#b7f5db;border-radius:2px}
.vote-notification{position:absolute;z-index:9;left:57px;top:696px;width:367px;min-height:70px;border-radius:18px;background:linear-gradient(110deg,#091b47ed,#103b77f7 60%,#0e1c52ed);border:2px solid #84e5ff;box-shadow:0 0 0 2px #0e4270,0 0 16px #53cbffcc,0 10px 15px #010313aa;display:flex;align-items:center;gap:9px;padding:9px 12px;opacity:0;transform:translateY(22px) scale(.9);pointer-events:none}.vote-notification.is-visible{animation:toast-enter 3s forwards}.notification-icon{font-size:32px;filter:drop-shadow(0 2px 6px #0005)}.notification-copy{display:flex;flex-direction:column;gap:5px;min-width:0}.notification-copy strong{font-weight:900;font-size:13px;color:white}.notification-copy span{font-size:10px;color:#d9ecff;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-bonus{margin-left:auto;font:900 28px 'Barlow Condensed',sans-serif;color:#fff19b}.recent-votes{position:absolute;top:762px;left:14px;right:14px;height:57px;z-index:2;border:1px solid #ffd6b13b;border-radius:10px;background:linear-gradient(180deg,#05091b99,#030613cc);padding:6px 9px;box-shadow:0 0 15px #0008}.recent-label{font-weight:900;letter-spacing:.8px;font-size:9px;color:#d3e4fe;display:flex;align-items:center;gap:6px}.live-pulse{width:7px;height:7px;background:#59ffb0;border-radius:50%;box-shadow:0 0 7px #71ffb2}.recent-list{display:flex;gap:5px;margin-top:7px;overflow:hidden;white-space:nowrap}.recent-entry{display:inline-flex;align-items:center;gap:4px;border:1px solid #a9bffb50;border-radius:9px;background:#172248b9;padding:4px 7px;font-size:9px;font-weight:700;flex-shrink:0;max-width:190px}.recent-entry strong{color:#fff}.recent-entry--lula{border-color:#fb829d88}.recent-entry--flavio{border-color:#70c3ff88}.empty-feed{font-size:10px;color:#c0c8de}.stage-footer{position:absolute;left:17px;right:18px;bottom:13px;display:flex;justify-content:space-between;align-items:center;color:#e0e5fa;letter-spacing:1px;font-size:10px;font-weight:900;text-shadow:1px 1px 5px #000}
.confetti-layer{position:absolute;inset:0;z-index:10;pointer-events:none;overflow:hidden}.confetti{position:absolute;top:300px;height:10px;width:6px;opacity:0;transform-origin:center;animation:fall var(--duration) cubic-bezier(.12,.5,.36,1) forwards;background:var(--color);border-radius:2px}
/* Control surface deliberately sits OUTSIDE the 9:16 captured scene on desktop. */
.control-deck{width:350px;max-height:calc(100dvh - 24px);overflow-y:auto;flex-shrink:0;background:linear-gradient(150deg,#151a34,#0d1026);border:1px solid #ffffff26;border-radius:20px;padding:19px;box-shadow:0 18px 40px #0006;scrollbar-color:#36436c transparent}.deck-heading{display:flex;align-items:start;gap:6px;justify-content:space-between}.eyebrow{font-size:10px;color:#64c5ff;font-weight:900;letter-spacing:2px}.deck-heading h1{font-size:19px;letter-spacing:-.6px;margin:6px 0 4px}.deck-heading p{color:#a9b6d0;font-size:11px;margin:0}.version{font-size:11px;vertical-align:middle;color:#f5d975}.close-deck{display:none}.deck-notice{margin:18px 0;display:flex;gap:8px;align-items:start;color:#c1cdeb;background:#1f305186;border:1px solid #5a86d05a;border-radius:11px;padding:10px;font-size:11px;line-height:1.5}.deck-notice span:first-child{font-size:19px;color:#81cffb}.deck-section-title{font-size:10px;font-weight:900;color:#c8d6ee;letter-spacing:1.5px;margin:16px 0 9px}.gift-buttons{display:grid;grid-template-columns:1fr 1fr;gap:9px}.gift-control{text-align:left;min-height:75px;display:flex;align-items:center;gap:6px;color:white;border-radius:13px;padding:9px;background:#151e38;border:1px solid #505c7c;transition:transform .16s,background .16s,border-color .16s;min-width:0}.gift-control:hover{transform:translateY(-2px);background:#223058}.gift-control:active{transform:translateY(1px)}.gift-control--red:hover{border-color:#ff6687}.gift-control--blue:hover{border-color:#5dbbff}.gift-control .gift-icon{font-size:28px}.gift-control span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:4px}.gift-control strong{font-size:12px}.gift-control small{font-size:9px;color:#adbbd5}.gift-control em{font-style:normal;font-size:9px;font-weight:900;align-self:end;margin-left:auto;color:#8ef4bd}.reaction-selector{padding:12px;border-radius:12px;background:#11172d;border:1px solid #34405b}.reaction-selector label{font-size:10px;font-weight:800;color:#b4c4df}.reaction-selector select{margin:8px 0 12px;width:100%;border-radius:8px;padding:10px;background:#212c4a;border:1px solid #536186;color:#fff}.reactions{display:flex;gap:6px;flex-wrap:wrap}.reactions button{background:#263358;border:1px solid #617099;color:#fff;border-radius:8px;padding:7px 9px;font-size:10px;font-weight:800}.reactions button:hover{background:#4263a3}.utility-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.utility-buttons button{background:#1b2945;border:1px solid #52607a;border-radius:9px;color:#e8f2ff;padding:9px 5px;font-size:10px;font-weight:800}.utility-buttons button span{font-size:16px;vertical-align:middle;margin-right:3px}.utility-buttons #reset-votes{grid-column:1/-1;border-color:#d5667095;color:#ffc8cf}.deck-tip{font-size:11px;line-height:1.7;color:#aebed8;margin:18px 0 8px}.deck-tip kbd{padding:3px 5px;background:#2a3451;border:1px solid #526083;border-radius:4px;font:900 9px 'Inter',sans-serif}.deck-credit{font-size:10px;color:#8e9ab7;line-height:1.6}.stage-shell:fullscreen{background:linear-gradient(90deg,#2b0719 0%,#8c0e30 49%,#122c68 51%,#0358a0 100%);border-radius:0}.mobile-backdrop{display:none}
@keyframes breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.012)}}@keyframes celebrate{0%,100%{transform:translateY(0) rotate(0)}20%,60%{transform:translateY(-15px) rotate(3deg)}40%,80%{transform:translateY(-4px) rotate(-3deg)}}@keyframes angry-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}@keyframes sad-wobble{0%,100%{transform:translateY(0)}50%{transform:translateY(8px) rotate(-2deg)}}@keyframes blink{50%{opacity:.35}}@keyframes reaction-pop{0%{opacity:0;transform:translateY(12px) scale(.7)}10%,70%{opacity:1;transform:translateY(-16px) scale(1.12)}100%{opacity:0;transform:translateY(-32px) scale(.9)}}@keyframes toast-enter{0%{opacity:0;transform:translateY(22px) scale(.9)}10%,78%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-12px) scale(.97)}}@keyframes fall{0%{opacity:0;transform:translateY(-90px) rotate(0)}6%{opacity:1}100%{opacity:0;transform:translate(var(--drift),360px) rotate(var(--spin))}}
@media(max-width:930px){.workspace{padding:0;gap:0;background:linear-gradient(90deg,#330e27 0%,#7b133a 49%,#112859 51%,#073875)}.stage-shell{border-radius:0;box-shadow:none}.control-deck{display:none;position:fixed;z-index:50;bottom:10px;left:10px;right:10px;width:auto;max-width:480px;margin:0 auto;max-height:min(80dvh,680px);border:1px solid #7188b8;box-shadow:0 0 0 200vmax #030714a9,0 15px 50px #000;overscroll-behavior:contain}.control-deck.is-open{display:block}.close-deck{display:inline-grid;place-items:center;flex:none;border:1px solid #7186af;border-radius:8px;background:#233153;color:white;height:28px;width:28px;font-size:21px;line-height:1}.mobile-backdrop{position:fixed;inset:0;z-index:40}.mobile-backdrop:not([hidden]){display:block}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.vote-notification.is-visible{opacity:1;transform:none}.candidate-reaction.is-visible{opacity:1;transform:none}}

/* v0.2.1: real expression sprites, synchronized movement and zero-flash crossfade. */
.character-motion{position:absolute;bottom:-6px;left:-13px;width:282px;height:306px;transform-origin:50% 91%;animation:actor-idle 4.2s ease-in-out infinite;will-change:transform}
.candidate--flavio .character-motion{left:-11px;width:280px;animation-delay:.65s}
.candidate .character-motion .candidate-picture,.candidate--flavio .character-motion .candidate-picture{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:bottom center;max-width:none;display:block;opacity:0;z-index:1;transform:none;transform-origin:center;animation:none!important;transition:opacity .23s ease;filter:drop-shadow(0 4px 7px #090a24ab);-webkit-mask-image:linear-gradient(180deg,#000 0% 86%,transparent 100%);mask-image:linear-gradient(180deg,#000 0% 86%,transparent 100%)}
.candidate .character-motion .candidate-picture.is-active{opacity:1;z-index:2}
.candidate.is-idle .character-motion{animation:actor-idle 4.2s ease-in-out infinite}
.candidate.is-neutral .character-motion{animation:none;transform:translateY(0) rotate(0deg)}
.candidate.is-happy .character-motion{animation:actor-happy .78s cubic-bezier(.18,.7,.21,1) 3 both}
.candidate.is-sad .character-motion{animation:actor-sad 2.35s ease-in-out both}
.candidate.is-angry .character-motion{animation:actor-angry .38s ease-in-out 6 both}
.candidate.is-happy .character-glow{opacity:1;background:radial-gradient(ellipse at 50% 44%,#ffef9088,transparent 70%)}
.candidate.is-sad .character-glow{opacity:.32;background:radial-gradient(#6f90e775,transparent 70%)}
.candidate.is-angry .character-glow{opacity:1;background:radial-gradient(#ff4e6680,transparent 67%)}
.reaction-hint{font-size:10px;line-height:1.45;color:#a7b9da;margin:10px 0 0}
@keyframes actor-idle{0%,100%{transform:translateY(0) rotate(-.35deg) scale(1)}50%{transform:translateY(-3px) rotate(.35deg) scale(1.014)}}
@keyframes actor-happy{0%,100%{transform:translateY(0) rotate(0) scale(1)}19%{transform:translateY(-19px) rotate(-4deg) scale(1.07)}42%{transform:translateY(-4px) rotate(3deg) scale(1.025)}65%{transform:translateY(-13px) rotate(-2deg) scale(1.055)}85%{transform:translateY(-3px) rotate(1deg) scale(1.01)}}
@keyframes actor-sad{0%{transform:translateY(0) rotate(0) scale(1)}28%{transform:translateY(9px) rotate(-2deg) scale(.96)}70%{transform:translateY(9px) rotate(-1deg) scale(.96)}100%{transform:translateY(7px) rotate(-1deg) scale(.97)}}
@keyframes actor-angry{0%,100%{transform:translateX(0) rotate(0deg) scale(1.045)}20%{transform:translateX(-5px) rotate(-1.5deg) scale(1.05)}50%{transform:translateX(4px) rotate(1.5deg) scale(1.07)}80%{transform:translateX(-3px) rotate(-1deg) scale(1.05)}}
@media(prefers-reduced-motion:reduce){.candidate .character-motion,.candidate.is-idle .character-motion,.candidate.is-neutral .character-motion,.candidate.is-happy .character-motion,.candidate.is-sad .character-motion,.candidate.is-angry .character-motion{animation:none!important;transform:none!important}.candidate .character-motion .candidate-picture{transition:none!important}}
/* Keep portraits dominant in the upper half, as in the approved 0.1 layout. */
.arena{overflow:hidden}
.character-motion{left:-44px;width:350px;height:380px;bottom:-76px}
.candidate--flavio .character-motion{left:-29px;width:342px;height:372px;bottom:-76px}

/* v0.3: cinematic but clearly fictional numbered ballot. */
.ballot-display{transition:box-shadow .2s ease}
.ballot-display.is-typing{box-shadow:inset 0 0 15px #258eff40,0 0 11px #1b7cff77}
.ballot-display.is-reviewing{box-shadow:inset 0 0 8px #a8edff90,0 0 12px #7bbcff7a}
.ballot-display.is-confirmed{box-shadow:inset 0 0 13px #66e7b580,0 0 14px #3afbafa8;animation:ballot-confirm-pulse .7s ease-out 2}
.ballot-display.is-confirmed .display-top{background:linear-gradient(#1bba78,#037c58);font-size:14px;letter-spacing:.35px}
.ballot-display.is-reviewing .display-top{background:linear-gradient(#236ee1,#113982)}
.digit-entry{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:4px}
.digit-eyebrow{font-weight:900;letter-spacing:1.2px;color:#547094;font-size:7px}
.digit-slots{display:flex;gap:9px;justify-content:center;width:100%}
.digit-slot{display:grid;place-items:center;width:54px;height:61px;border-radius:8px;background:#bed3ee;border:2px dashed #80a8ce;color:#7593b9;font:900 53px/1 'Barlow Condensed',Impact,sans-serif;box-shadow:inset 0 2px 6px #5272a53a}
.digit-slot.is-filled{background:linear-gradient(#19457e,#071a43);color:#fff;border:2px solid #78c8ff;box-shadow:0 0 12px #3a89eeaa;animation:digit-snap .28s cubic-bezier(.15,.7,.2,1)}
.digit-caption{font:900 9px 'Inter',sans-serif;letter-spacing:1px;color:#25477e}
.number-keys button.is-auto-pressed{animation:keyboard-auto-key .26s ease-out both}
.key-confirm.is-auto-pressed{animation:confirm-key-press .75s cubic-bezier(.19,.8,.26,1) both}
.score-flash.is-scoring{animation:score-burst .6s ease-out 2}
.ballot-vote-photo{box-shadow:0 0 13px #2e91ff65;animation:portrait-arrive .35s ease-out both}
.ballot-vote-text{animation:portrait-arrive .3s ease-out both}
.ballot-display.is-confirmed .voted-quantity{background:#0c9a64;color:#fff;display:inline-block;width:max-content;padding:4px 6px;border-radius:6px;box-shadow:0 0 10px #34f5ae96;animation:confirm-label .4s ease-out both}
.queue-status{display:flex;align-items:center;gap:8px;margin-top:10px;padding:9px 10px;border-radius:9px;background:#0f2731;border:1px solid #1f7e73;color:#9fe2d1;font-weight:800;font-size:10px;line-height:1.3}
.queue-status.is-busy{background:#29223b;color:#f8e5a5;border-color:#ac8b35}
.queue-status-dot{height:8px;width:8px;flex:none;border-radius:50%;background:#1fe2a4;box-shadow:0 0 8px #1fe2a4}
.queue-status.is-busy .queue-status-dot{background:#ffc963;box-shadow:0 0 8px #ffc963;animation:blink .7s ease-in-out infinite}
@keyframes keyboard-auto-key{0%,100%{transform:translateY(0);box-shadow:none}25%,72%{transform:translateY(2px);background:#fbd366;color:#17162c;box-shadow:0 0 17px #ffe86d}}
@keyframes confirm-key-press{0%,100%{transform:translateY(0)}18%,57%{transform:translateY(3px);background:#9cffd5;box-shadow:0 0 16px #00f59f}}
@keyframes portrait-arrive{from{transform:scale(.87) translateY(9px);opacity:.1}to{transform:scale(1);opacity:1}}
@keyframes digit-snap{0%{transform:scale(.72)}65%{transform:scale(1.1)}100%{transform:scale(1)}}
@keyframes ballot-confirm-pulse{0%,100%{filter:none}50%{filter:brightness(1.16)}}
@keyframes confirm-label{from{transform:scale(.82);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes score-burst{0%,100%{transform:scale(1);color:#43fc95}50%{transform:scale(1.7);color:#faff66}}
@media(prefers-reduced-motion:reduce){.digit-slot.is-filled,.ballot-display.is-confirmed,.score-flash.is-scoring,.number-keys button.is-auto-pressed,.key-confirm.is-auto-pressed,.ballot-vote-photo,.ballot-vote-text{animation:none!important}}
/* Confirmation notification stays below the numbered photo and most of the screen. */
.vote-notification{top:740px;min-height:54px;height:54px;padding:6px 10px;gap:7px;border-radius:13px}
.notification-icon{font-size:25px}
.notification-copy{gap:3px}
.notification-copy strong{font-size:12px}
.notification-bonus{font-size:25px}


/* v0.3.1 — compact, measured ballot screen layout.
   The printable area is ~238×150 px (at design resolution 480×854).
   Header 24 + footer 16 + content 110: everything stays in its lane. */
.ballot-display { display:flex; flex-direction:column; }
.ballot-display .display-top {
  flex:0 0 24px;
  min-height:24px;
  padding:0 5px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  line-height:1;
  font:900 13px/1 'Arial Narrow',Impact,'Segoe UI',sans-serif;
  letter-spacing:.4px;
}
.ballot-display.is-confirmed .display-top {font-size:13px;letter-spacing:.35px;}
.ballot-display .display-inner {
  flex:1 1 0;
  height:auto;
  min-height:0;
  overflow:hidden;
}
.ballot-display .display-bottom {
  flex:0 0 16px;
  min-height:16px;
  position:relative;
  z-index:2;
}
.ballot-vote {
  display:grid;
  grid-template-columns:78px minmax(0,1fr);
  align-items:center;
  justify-items:stretch;
  gap:7px;
  height:100%;
  max-height:100%;
  min-width:0;
  padding:3px 5px;
  overflow:hidden;
}
.ballot-vote-photo {
  width:76px;
  height:96px;
  max-height:100%;
  align-self:center;
  flex:none;
}
.ballot-vote-text {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:2px;
  height:100%;
  min-height:0;
  min-width:0;
  max-width:100%;
  overflow:hidden;
}
.ballot-vote-text .mini-label {
  display:block;
  width:100%;
  font:900 8px/10px 'Segoe UI',Arial,sans-serif;
  letter-spacing:.15px;
  color:#526986;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ballot-vote-text .big-number {
  font:900 42px/40px Impact,'Arial Narrow',sans-serif;
  letter-spacing:.5px;
  flex:0 0 40px;
}
.ballot-vote-text .voted-for {
  display:block;
  font:900 12px/12px 'Arial Narrow',Impact,'Segoe UI',sans-serif;
  letter-spacing:0;
  max-width:100%;
  overflow-wrap:break-word;
}
.ballot-vote-text .voted-quantity {
  display:block;
  max-width:100%;
  color:#0a9565;
  font:900 9px/12px 'Segoe UI',Arial,sans-serif;
  letter-spacing:-.1px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ballot-display.is-confirmed .voted-quantity {
  padding:2px 5px;
  border-radius:4px;
  flex:0 0 auto;
  line-height:11px;
}

/* v0.4: presentation-only stage; administrative controls are hosted separately. */
.workspace{gap:0}.stage-shell{max-width:100vw}
