.ncv-voting { --ncv-ink: #17191d; --ncv-accent: #315ce8; --ncv-line: #dfe3eb; color: var(--ncv-ink); margin: 2rem auto; max-width: 1240px; }
.ncv-voting *, .ncv-voting *::before, .ncv-voting *::after { box-sizing: border-box; }
.ncv-voting .ncv-heading { font-size: clamp(1.75rem, 4vw, 2.7rem); line-height: 1.12; letter-spacing: -.04em; margin: 0 0 .75rem; }
.ncv-voting .ncv-intro { margin: 0 0 1.5rem; color: #555e70; }
.ncv-voting .ncv-categories { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); gap: .75rem; }
.ncv-voting button { font: inherit; cursor: pointer; text-transform: none; letter-spacing: normal; white-space: normal; }
.ncv-voting .ncv-category { border: 1px solid var(--ncv-line); border-radius: 12px; background: #fff; color: var(--ncv-ink); padding: 1rem 1.2rem; text-align: left; line-height: 1.4; transition: border-color .15s, background .15s; box-shadow: none; }
.ncv-voting .ncv-category span { display: block; font-weight: 700; }
.ncv-voting .ncv-category small { display: block; margin-top: .2rem; font-size: .8rem; color: #596274; }
.ncv-voting .ncv-category:hover:not(:disabled), .ncv-voting .ncv-category[aria-pressed="true"] { border-color: var(--ncv-accent); background: #f0f4ff; }
.ncv-voting .ncv-category:disabled { background: #f3f4f6; color: #636976; cursor: not-allowed; opacity: .8; }
.ncv-voting .ncv-status { margin: 1.25rem 0; min-height: 1.5em; }
.ncv-voting .ncv-error { color: #a21d30; }
.ncv-voting .ncv-category-title { font-size: 1.5rem; margin: 1.75rem 0 1rem; }
.ncv-voting .ncv-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: 1.25rem; }
.ncv-voting .ncv-card { min-width: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--ncv-line); border-radius: 16px; background: #fff; }
.ncv-voting .ncv-image-link { display: block; background: #f0f1f4; }
.ncv-voting .ncv-image { display: block; width: 100%; height: 340px; object-fit: contain; margin: 0; border: 0; }
.ncv-voting .ncv-card-body { display: flex; flex-direction: column; flex: 1; padding: 1.25rem; }
.ncv-voting .ncv-entry-title { margin: 0 0 .6rem; font-size: 1.2rem; line-height: 1.3; overflow-wrap: anywhere; }
.ncv-voting .ncv-card-body p { margin: 0 0 .25rem; line-height: 1.5; overflow-wrap: anywhere; }
.ncv-voting .ncv-studio, .ncv-voting .ncv-booth { color: #596274; font-size: .9rem; }
.ncv-voting .ncv-vote { display: block; width: 100%; border: 1px solid transparent; border-radius: 9px; padding: .85rem 1rem; background: var(--ncv-accent); color: #fff; margin-top: 1.25rem; line-height: 1.4; font-weight: 700; box-shadow: none; }
.ncv-voting .ncv-card-body .ncv-vote { margin-top: auto; align-self: stretch; }
.ncv-voting .ncv-card-body p:last-of-type { margin-bottom: 1.25rem; }
.ncv-voting .ncv-vote:hover:not(:disabled) { background: #2447bd; }
.ncv-voting .ncv-vote:disabled { background: #e8ebf0; color: #555e70; cursor: not-allowed; }
.ncv-voting .ncv-chosen { border: 2px solid #287449; }
.ncv-voting .ncv-chosen .ncv-vote { background: #e5f3ea; color: #21603c; }
.ncv-voting button:focus-visible, .ncv-voting a:focus-visible { outline: 3px solid var(--ncv-accent); outline-offset: 4px; }
.ncv-voting .ncv-group-title {
    grid-column: 1 / -1;
    margin: 1.5rem 0 .25rem;
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.3;
}

.ncv-voting .ncv-group-title:first-child {
    margin-top: 0;
}
@media (max-width: 960px) { .ncv-voting .ncv-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .ncv-voting .ncv-grid { grid-template-columns: 1fr; } .ncv-voting .ncv-image { height: 380px; max-height: 65vh; } }
