.fwab-voting { --fwab-voting-bg:#f8f8f8; --fwab-voting-text:#2d3748; width:100%; box-sizing:border-box; padding:16px; background:var(--fwab-voting-bg); color:var(--fwab-voting-text); }
.fwab-voting h2,.fwab-voting h3,.fwab-voting p,.fwab-voting label { color:var(--fwab-voting-text); }
.fwab-voting-status { font-size:13px; }
.fwab-voting-slider { display:flex; align-items:flex-start; gap:12px; }
.fwab-voting-main { flex:1; min-width:0; }
.fwab-voting-viewport { width:100%; height:var(--fwab-voting-height, calc(100dvh - 100px)); min-height:180px; overflow:hidden; touch-action:pan-y; }
.fwab-voting-navigation { display:flex; align-items:center; justify-content:center; gap:20px; margin-top:8px; }
.fwab-voting .fwab-voting-prev,.fwab-voting .fwab-voting-next { background:transparent; color:var(--fwab-voting-text); border:0; padding:6px 12px; font-size:26px; line-height:1; cursor:pointer; }
.fwab-voting .fwab-voting-prev:hover,.fwab-voting .fwab-voting-next:hover { background:#767676; color:#fff; }
.fwab-voting-count { font-size:13px; }
.fwab-voting-side { flex:0 0 160px; width:160px; font-size:12px; overflow-wrap:anywhere; }
.fwab-voting-side.has-panel.with-comment { flex-basis:160px; width:160px; }
.fwab-voting .fwab-vote-open { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; padding:5px; border:1px solid currentColor; border-radius:4px; background:var(--fwab-voting-bg); color:var(--fwab-voting-text); cursor:pointer; }
.fwab-vote-open svg { width:24px; height:24px; fill:#F4C542; stroke:#946C00; stroke-width:.7; }
.fwab-voting .fwab-vote-panel { position:relative; padding:26px 8px 8px; border:1px solid var(--fwab-voting-text); border-radius:5px; background:var(--fwab-voting-bg); color:var(--fwab-voting-text); box-sizing:border-box; width:100%; }
.fwab-voting .fwab-vote-panel h3 { font-size:13px; margin:0 0 8px; }
.fwab-voting .fwab-vote-close { position:absolute; top:2px; right:2px; padding:0; width:24px; height:24px; line-height:1; font-size:23px; background:transparent; color:var(--fwab-voting-text); border:0; cursor:pointer; }
.fwab-vote-stars { display:flex; flex-direction:column; align-items:center; gap:2px; max-height:40vh; overflow-y:auto; padding:3px; }
.fwab-voting .fwab-vote-star { flex:0 0 28px; display:inline-flex; padding:1px; width:28px; height:28px; background:transparent; border:0; cursor:pointer; }
.fwab-vote-star svg { width:26px; height:26px; fill:#b8bbc2; stroke:#6b7280; stroke-width:.7; }
.fwab-vote-star.is-lit svg { fill:#F4C542; stroke:#946C00; }
.fwab-vote-panel label { display:block; font-size:12px; }
.fwab-voting .fwab-vote-panel textarea { display:block; box-sizing:border-box; width:100%; min-width:0; margin:5px 0 8px; padding:5px; font:inherit; resize:vertical; color:var(--fwab-voting-text); background:var(--fwab-voting-bg); }
.fwab-voting .fwab-vote-save,.fwab-voting .fwab-vote-delete { display:block; width:100%; padding:5px 3px; margin:6px 0 0; border:1px solid #2E4396; border-radius:3px; background:#2E4396; color:#fff; font-size:12px; cursor:pointer; }
.fwab-voting .fwab-vote-delete { background:var(--fwab-voting-bg); color:var(--fwab-voting-text); border-color:currentColor; }
.fwab-voting button:disabled { opacity:.55; cursor:default; }
.fwab-voting button:focus-visible { outline:2px solid #2E4396; outline-offset:2px; }
.fwab-voting [hidden] { display:none !important; }
.fwab-vote-message { font-size:12px; line-height:1.4; white-space:pre-line; }
@media(max-width:480px) { .fwab-voting { padding:8px; } .fwab-voting-slider { gap:8px; }  }
@media(prefers-reduced-motion:reduce) { .fwab-voting-track { transition:none; } }

.fwab-voting-controlbox { border:1px solid var(--fwab-voting-text); border-radius:5px; padding:6px; text-align:center; }
.fwab-voting-controlbox .fwab-voting-navigation { gap:4px; margin:0 0 8px; justify-content:space-between; }
.fwab-voting-controlbox .fwab-voting-prev,.fwab-voting-controlbox .fwab-voting-next { padding:12px; width:44px; height:44px; min-width:44px; min-height:44px; box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; font-size:20px; }
.fwab-voting-controlbox .fwab-voting-count { white-space:nowrap; font-size:12px; }
.fwab-voting .fwab-vote-save,.fwab-voting .fwab-vote-save:hover,.fwab-voting .fwab-vote-save:focus { background:var(--fwab-voting-text); border-color:var(--fwab-voting-text); color:var(--fwab-voting-bg); }
.fwab-vote-message:empty { display:block; }

.fwab-voting > h2 { text-align:right; }
.fwab-voting-status:empty { display:none; }

.fwab-voting .fwab-vote-panel h3,
.fwab-vote-panel .fwab-vote-stars + p { text-align:center; }

.fwab-voting-side { max-height:var(--fwab-voting-height, calc(100dvh - 100px)); overflow-y:auto; }

.fwab-vote-zero-box{margin-top:12px;padding:12px;border:1px solid currentColor;border-radius:4px;text-align:center}.fwab-voting .fwab-vote-zero{width:100%;padding:10px;cursor:pointer}.fwab-voting .fwab-voting-completion{padding:12px 0;margin-left:0;margin-right:0;text-align:right;line-height:1.5;overflow-wrap:anywhere}

.fwab-voting-completion{max-height:120px;overflow-y:auto;box-sizing:border-box}.fwab-voting-completion[hidden],.fwab-vote-zero-box[hidden]{display:none}

.fwab-voting-progress{width:100%;margin:16px 0;box-sizing:border-box}
.fwab-voting-progress progress{display:block;width:100%;height:16px;accent-color:#33439a}
.fwab-voting-progress p{text-align:right;font-size:14px;line-height:1.5;margin:8px 0}
.fwab-voting-pending{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:#b94700;color:white;font-size:20px;line-height:26px;font-weight:700;text-align:center;border:2px solid white}
.fwab-voting-dialog{position:fixed;inset:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;padding:50px 20px 20px}
.fwab-voting-dialog::backdrop{background:rgba(0,0,0,.9)}
.fwab-voting .fwab-voting-dialog-close{position:absolute;right:20px;top:6px;font-size:28px;background:transparent;color:var(--fwab-voting-text);border:0;cursor:pointer}
@media(max-width:620px){.fwab-voting-dialog{padding:44px 8px 8px}}

.fwab-voting-status.fwab-voting-unavailable{text-align:center;font-size:34px;line-height:44px;font-weight:400}

.fwab-voting-progress progress{appearance:none;border:0;border-radius:4px;overflow:hidden;background:#e5e7eb}.fwab-voting-progress progress::-webkit-progress-bar{background:#e5e7eb}.fwab-voting-progress progress::-webkit-progress-value{background:#33439a}.fwab-voting-progress progress::-moz-progress-bar{background:#33439a}

.fwab-voting-controlbox .fwab-voting-count{min-width:0;white-space:normal;overflow-wrap:anywhere;flex:1}
.fwab-voting-controlbox .fwab-voting-prev,.fwab-voting-controlbox .fwab-voting-next{flex:0 0 auto}
.fwab-voting-progress progress::-webkit-progress-value{background:linear-gradient(to right,var(--fwab-progress-start,#33439a),var(--fwab-progress-end,#141b40));background-size:var(--fwab-progress-gradient-width,100%) 100%}
.fwab-voting-progress progress::-moz-progress-bar{background:linear-gradient(to right,var(--fwab-progress-start,#33439a),var(--fwab-progress-end,#141b40));background-size:var(--fwab-progress-gradient-width,100%) 100%}

/* Same image inset as the public square-box gallery. */

.fwab-voting.fwab-voting-dialog{padding-top:76px}
.fwab-voting .fwab-voting-dialog-close{top:12px;width:44px;height:44px;padding:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;line-height:1}

.fwab-voting-side > .fwab-voting-controlbox{margin-top:12px}

.fwab-voting .fwab-vote-message{min-height:1.4em;margin:8px 0 0}

/* Keep theme hover shadows off the box; shade only the visible image. */

.fwab-voting .fwab-voting-noticebox{box-sizing:border-box;width:100%;height:150px;overflow-y:auto;border:1px solid var(--fwab-voting-text);border-radius:5px;padding:10px;margin:12px 0 0;color:var(--fwab-voting-text)}
.fwab-voting .fwab-voting-noticebox.is-error{border:3px solid #e53935;padding:8px}
.fwab-voting .fwab-voting-noticebox p{color:var(--fwab-voting-text);font-size:12px;line-height:1.4;margin:0 0 8px}
.fwab-voting .fwab-voting-noticebox p:last-child{margin-bottom:0}

.fwab-voting-rating-value{display:inline-block;white-space:nowrap;overflow-wrap:normal}

/* Personal ratings appear only after the participant has completed the ballot. */
.fwab-voting-own-badge{position:absolute;top:8px;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:6px;width:max-content;max-width:calc(100% - 16px);padding:5px 10px;border-radius:999px;background:rgba(0,0,0,.72);color:#fff;font-size:13px;line-height:20px;font-weight:500;white-space:nowrap;pointer-events:none;box-sizing:border-box}
.fwab-voting-own-badge[hidden]{display:none}
.fwab-voting-own-badge-star{display:flex;flex:none;color:#ffc629}
.fwab-voting-own-badge-star svg{width:16px;height:16px;fill:currentColor}

.fwab-voting-own-badge-star[hidden]{display:none}

.fwab-voting-status.fwab-voting-unavailable{margin-top:114px}

/* Centre the numeric scale and stars as a single pair of columns. */
.fwab-voting .fwab-vote-star{width:58px;align-items:center;justify-content:center;gap:8px;color:var(--fwab-voting-text)}
.fwab-voting .fwab-vote-star-number{flex:0 0 22px;text-align:right;font-size:13px;line-height:26px;font-weight:400;font-variant-numeric:tabular-nums}
.fwab-voting .fwab-vote-star svg{flex:0 0 26px}

.fwab-voting-sections>.fwab-total-progress{margin:0 0 24px}
.fwab-voting-sections>.fwab-total-progress[hidden]{display:none}

.fwab-voting-sections.fwab-competition-ended>h2,
.fwab-voting-sections.fwab-competition-ended>.fwab-section-tabs,
.fwab-voting-sections.fwab-competition-ended>.fwab-total-progress,
.fwab-voting-sections.fwab-competition-ended>[role="tabpanel"]{display:none!important}
.fwab-voting-ended>.fwab-ended-competition{font-size:34px;line-height:44px;font-weight:700;text-align:center;margin:0 0 8px;padding:0}
