.voting-table,.vote-recap{--vote-ink:#263940;--vote-paper:#fff8e6;--vote-gold:#ffda4f;width:100%;min-width:0;text-align:left;color:var(--vote-ink);font:400 1rem/1.45 "Trebuchet MS",system-ui,sans-serif}
.voting-table{max-width:880px;padding:clamp(18px,3vw,32px);background:var(--vote-paper);border-radius:18px;box-shadow:0 6px 0 #24383e40;align-self:start}
.vote-heading h3{font:900 clamp(1.5rem,3vw,2.25rem)/1.15 "Trebuchet MS",system-ui,sans-serif;margin:0 0 12px;letter-spacing:-.025em;overflow-wrap:anywhere}
.vote-heading>p{font-size:1rem;line-height:1.5;margin:0 0 24px;max-width:65ch;color:#40545b}
.vote-stages{display:flex;flex-wrap:wrap;gap:6px 18px;margin-bottom:20px;font-size:.85rem;font-weight:800;color:#54656a}
.vote-stages span{padding:5px 0;border-bottom:3px solid transparent}
.vote-stages .is-current{color:#263940;border-color:#263940}
.vote-stages .is-complete::before{content:'✓ ';color:#285744}
.vote-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.vote-choice-grid:not(.is-binary){grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.voting-table .vote-choice{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:9px;min-width:0;min-height:126px;padding:16px 22px 14px;background:#fffdf6;color:#263940;border:2px solid #778178;border-radius:12px;box-shadow:0 3px 0 #bcb9a8;white-space:normal;font:700 1rem/1.3 "Trebuchet MS",sans-serif;transition:transform .16s,background .16s,border-color .16s,box-shadow .16s}
.vote-choice strong{max-width:100%;overflow-wrap:anywhere}
.vote-choice strong small{font-size:.8rem;font-weight:400;display:inline-block}
.voting-table .vote-choice .deduction-person{width:58px;height:58px}
.vote-choice .brush-art{width:120px;height:auto;max-width:100%}
.voting-table .vote-choice[aria-pressed=true]{background:#ffda4f;border-color:#263940;transform:translateY(-3px);box-shadow:0 5px 0 #263940}
.vote-choice-check{position:absolute;right:7px;top:7px;width:23px;height:23px;color:#263940;opacity:0;transform:scale(.6);transition:opacity .15s,transform .2s}
.vote-choice[aria-pressed=true] .vote-choice-check{opacity:1;transform:scale(1)}
.vote-choice-check svg{width:100%;height:100%}
.vote-choice-symbol{font-size:2rem;line-height:1}
.vote-confirm-area{margin:22px 0 26px;text-align:center;display:flex;align-items:center;flex-direction:column;gap:8px}
.vote-selection{font-size:1rem;margin:0;min-height:1.5em;overflow-wrap:anywhere}
.voting-table .vote-confirm{display:flex;justify-content:center;align-items:center;gap:10px;width:min(100%,380px);min-height:54px;padding:12px 18px;font-size:1.1rem;border:2px solid #263940;border-radius:9px;background:#263940;color:#fff8e6;box-shadow:0 3px 0 #102228}
.vote-confirm svg{width:22px;height:22px;flex-shrink:0}
.voting-table .vote-confirm:disabled{background:#e3e1d4;color:#59625f;border-color:#7a8277;box-shadow:none;opacity:1;cursor:default}
.vote-confirm-area>small{font-size:.82rem;color:#40545b}
.vote-progress{border-top:2px solid #d2d0bd;padding-top:20px}
.vote-progress-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 16px;margin-bottom:12px}
.vote-progress-heading strong{font-size:1.2rem;white-space:nowrap}
.vote-progress-heading>span{font-size:.8rem;max-width:34ch;color:#40545b}
.vote-progress-track{display:flex;gap:5px;margin-bottom:15px}
.vote-progress-track>span{flex:1;height:9px;background:#d1d3c5;border-radius:3px}
.vote-progress-track>.is-locked{background:#345d4c;animation:vote-fill .3s ease-out both}
.vote-attendance{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;padding:0;margin:0;gap:6px 18px}
.vote-attendance li{display:flex;align-items:center;gap:7px;min-width:0;font-size:.85rem;padding:7px 0;border-bottom:1px solid #dedac9}
.vote-attendance li>span:nth-child(2){min-width:0;overflow-wrap:anywhere}
.vote-attendance small{font-size:.7rem}
.vote-attendance b{margin-left:auto;white-space:nowrap;font-size:.75rem;font-weight:700;color:#54615d}
.vote-attendance .is-locked>b{color:#285744}
.vote-attendance .is-locked>b::before{content:'✓ '}
.vote-seat-number{display:grid;place-items:center;flex:0 0 25px;height:25px;border:1px solid #66766d;border-radius:50%;font-weight:800;color:#263940}
.vote-attendance .is-locked .vote-seat-number{background:#345d4c;border-color:#345d4c;color:#fff8e6}
.vote-attendance .is-excluded{grid-column:1/-1;color:#54615d}
.vote-receipt{display:flex;align-items:flex-start;gap:17px;border:2px solid #345d4c;border-radius:12px;background:#ecf1dc;padding:22px;margin:0 0 26px}
.vote-receipt-seal{flex:0 0 48px;width:48px;height:48px;background:#345d4c;color:#fff8e6;border-radius:50%;padding:9px;animation:vote-stamp .38s cubic-bezier(.18,.8,.3,1.3) both}
.vote-receipt>div{min-width:0}
.vote-receipt strong{display:block;font-size:1.3rem}
.vote-receipt p{font-size:.85rem;color:#365244;margin:3px 0 12px}
.vote-receipt small{font-size:.82rem}
.vote-receipt-choice{display:flex;align-items:center;gap:12px;overflow-wrap:anywhere}
.vote-receipt-choice b{font-size:1.1rem}
.vote-receipt-choice .deduction-person{flex-shrink:0}
.vote-receipt-choice .brush-art{width:100px;max-width:40%}
.vote-spectator{padding:20px 16px;margin-bottom:22px;text-align:center;background:#ece7d7;border-radius:12px}
.vote-spectator>.deduction-person{margin:auto auto 10px}
.vote-spectator strong{display:block;font-size:1.15rem}
.vote-spectator p{max-width:50ch;margin:9px auto 0;font-size:.9rem}
.vote-recap{max-width:880px;margin:22px auto 0}
.vote-recap:empty{display:none}
.ballot-review{padding:clamp(16px,2.5vw,26px);border-radius:14px;background:var(--vote-paper);margin-bottom:18px;text-align:left;box-shadow:0 4px 0 #24383e30}
.ballot-review>header{display:flex;align-items:start;justify-content:space-between;gap:15px;flex-wrap:wrap;padding-bottom:18px;border-bottom:2px solid #d2d0bd}
.ballot-review h3{font:900 clamp(1.15rem,2vw,1.45rem)/1.25 "Trebuchet MS",sans-serif;margin:0 0 7px;overflow-wrap:anywhere}
.ballot-review header p{margin:0;font-size:.85rem;color:#40545b;max-width:46ch}
.ballot-outcome{display:block;max-width:100%;font-size:1rem;padding:8px 12px;background:#263940;color:#fff8e6;border-radius:6px;overflow-wrap:anywhere}
.ballot-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}
.ballot-row{min-width:0;padding:13px;border:2px solid #b0b5a5;border-radius:9px;background:#fffdf6;animation:vote-row-in .38s ease-out both;animation-delay:calc(var(--reveal-index)*70ms)}
.ballot-row.is-leading{border-color:#263940;background:#fff0b4}
.ballot-review.is-settled .ballot-row,.ballot-review.is-settled .ballot-bar>span{animation:none}
.ballot-row-heading{display:flex;align-items:center;gap:10px;min-height:48px}
.ballot-row-heading>strong{min-width:0;font-size:1rem;overflow-wrap:anywhere}
.ballot-row-heading>.deduction-person{width:40px;height:40px;flex-shrink:0}
.ballot-row-heading>.brush-art{width:65px;max-width:30%;height:auto;flex-shrink:0}
.ballot-count{margin-left:auto;text-align:center;flex-shrink:0;line-height:1;font-size:2rem;font-variant-numeric:tabular-nums}
.ballot-count small{display:block;font-size:.7rem;font-weight:400;margin-top:5px}
.ballot-bar{height:9px;border-radius:3px;background:#d1d3c5;margin:13px 0 10px;overflow:hidden}
.ballot-bar>span{display:block;height:100%;background:#345d4c;transform-origin:left;animation:vote-fill .55s cubic-bezier(.2,.7,.3,1) both;animation-delay:calc(var(--reveal-index)*70ms)}
.is-leading .ballot-bar>span{background:#263940}
.ballot-voters{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:.8rem;min-height:28px}
.ballot-voters>span:first-child{color:#40545b;margin-right:2px}
.ballot-voter{display:inline-flex;align-items:center;gap:5px;max-width:100%;overflow-wrap:anywhere;border:1px solid #8f9d8c;border-radius:5px;padding:3px 6px;color:#263940;background:#fffdf6}
.ballot-voter b{font-size:.7rem;flex-shrink:0}
.ballot-voter small{font-size:.7rem}
.ballot-voter.is-you{border:2px solid #263940}
.ballot-no-votes{color:#54615d}
.ballot-tie-decision{padding:12px 0 0;margin:14px 0 0;border-top:2px solid #d2d0bd;font-size:1rem}
.vote-previous{border:2px solid #fff8e6;border-radius:9px;color:#fff8e6}
.vote-previous>summary{min-height:48px;padding:12px 16px;cursor:pointer;font-size:.95rem;font-weight:800;overflow-wrap:anywhere}
.vote-previous .ballot-review{margin:0;border-radius:0;box-shadow:none}
.vote-previous .ballot-review:last-child{border-radius:0 0 6px 6px}
.vote-recap + .decision{margin-top:18px}
.voting-table :focus-visible,.vote-recap :focus-visible{outline:3px solid #263940;outline-offset:4px}
.vote-previous>summary:focus-visible{outline-color:#ffda4f}
body[data-game=fakeartist] .art-layout.voting-easel{grid-template-columns:minmax(0,1fr) minmax(310px,.9fr);width:100%;max-width:1250px;gap:22px;align-items:start;padding:0}
.voting-easel .art-private{display:none}
.voting-easel .art-canvas-area{width:100%;min-width:0;margin:0;align-self:start}
.voting-easel .art-paper-tools{position:static;display:flex;flex-wrap:wrap;width:auto;justify-content:center;margin-top:10px}
.voting-easel .art-paper-wrap{width:100%;max-width:none;margin:0}
.voting-easel>.voting-table{max-width:none}
.voting-easel .vote-choice-grid:not(.is-binary){grid-template-columns:repeat(2,minmax(0,1fr))}
.voting-easel .vote-choice{min-height:100px;padding:12px 18px;gap:5px}
.voting-easel .vote-choice .brush-art{width:104px}
.voting-easel .vote-heading>p{font-size:.9rem;margin-bottom:18px}
body[data-game=fakeartist] .art-layout:has(.vote-results-aside){display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.8fr);align-items:start;padding:0}
.art-layout .art-private.vote-results-aside{position:static;display:block;min-width:0;width:100%;padding:0;order:0;grid-row:auto;pointer-events:auto}
.art-layout:has(.vote-results-aside) .art-canvas-area{margin:0;align-self:start;width:100%}
.art-layout:has(.vote-results-aside) .art-paper-tools{position:static;display:flex;flex-wrap:wrap;width:auto;justify-content:center}
.vote-results-aside .vote-recap{margin-top:0}
.vote-results-aside .ballot-rows{grid-template-columns:minmax(0,1fr)}
.ballot-zero-votes{font-size:.8rem;line-height:1.6;color:#40545b;margin:14px 0 0}
@media(hover:hover){.voting-table .vote-choice:hover{transform:translateY(-3px);border-color:#263940}.voting-table .vote-confirm:not(:disabled):hover{background:#40545b}.vote-previous>summary:hover{background:#fff8e61a}}
@media(min-width:1200px){.vote-choice-grid:not(.is-binary){grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}
@media(max-width:1050px){body[data-game=fakeartist] .art-layout.voting-easel,body[data-game=fakeartist] .art-layout:has(.vote-results-aside){grid-template-columns:minmax(0,1fr)}.voting-easel .art-canvas-area{max-width:620px;margin:0 auto}.voting-easel .vote-choice-grid:not(.is-binary){grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}
@media(max-width:560px){.voting-table{padding:18px 14px;border-radius:12px}.vote-heading>p{font-size:.9rem;margin-bottom:18px}.vote-choice-grid,.ballot-rows{gap:9px}.voting-table .vote-choice{min-height:110px;padding:14px 12px;font-size:.95rem}.vote-choice-grid:not(.is-binary),.voting-easel .vote-choice-grid:not(.is-binary){grid-template-columns:repeat(2,minmax(0,1fr))}.vote-attendance{grid-template-columns:minmax(0,1fr);gap:0}.vote-progress-heading{gap:7px}.vote-receipt{padding:17px 12px;gap:12px}.vote-receipt strong{font-size:1.1rem}.vote-receipt-seal{flex-basis:38px;width:38px;height:38px;padding:7px}.vote-stages{font-size:.78rem;gap:6px 12px}.ballot-rows{grid-template-columns:minmax(0,1fr)}.ballot-review{padding:16px 12px}.ballot-outcome{font-size:.9rem}.ballot-row-heading>.brush-art{width:80px}.voting-easel .art-canvas-area{max-width:100%}.vote-recap{margin-top:16px}}
@keyframes vote-stamp{0%{opacity:0;transform:scale(1.65) rotate(-20deg)}70%{opacity:1;transform:scale(.94) rotate(3deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@keyframes vote-row-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes vote-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.voting-table *,.vote-recap *{animation:none!important;transition:none!important}}
body.calm .voting-table *,body.calm .vote-recap *{animation:none!important;transition:none!important}
