.nvpe-poll, .nvpe-calendar {
  --nvpe-green: #00e51c;
  --nvpe-dark: #101313;
  --nvpe-muted: #5d6665;
  font-family: inherit;
  color: var(--nvpe-dark);
  box-sizing: border-box;
}
.nvpe-poll *, .nvpe-calendar * { box-sizing: border-box; }
.nvpe-poll {
  background: #101313;
  color: #fff;
  border-radius: 0;
  padding: clamp(24px, 4vw, 48px);
  position: relative;
  left: 50%;
  width: 100vw;
  max-width: none;
  margin-left: -50vw;
  margin-right: -50vw;
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(24px, 4vw, 56px);
  align-items: center;
}
.nvpe-eyebrow { display: block; font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #147d28; margin-bottom: 12px; }
.nvpe-poll .nvpe-eyebrow { color: var(--nvpe-green); }
.nvpe-poll h2, .nvpe-calendar h2 { font-family: inherit; font-size: clamp(25px, 3vw, 38px); line-height: 1.18; font-weight: 600; letter-spacing: -.025em; margin: 0; color: inherit; }
.nvpe-poll fieldset { border: 0; margin: 0 0 16px; padding: 0; display: grid; gap: 10px; }
.nvpe-poll-choice { position: relative; display: flex; align-items: center; gap: 12px; border: 1px solid #49504d; border-radius: 0; padding: 13px 16px; cursor: pointer; color: #fff; transition: border-color .2s, background .2s; }
.nvpe-poll-choice:hover, .nvpe-poll-choice:focus-within { border-color: var(--nvpe-green); background: #1c2920; }
.nvpe-poll-choice input { accent-color: var(--nvpe-green); width: 17px; height: 17px; flex: 0 0 auto; margin: 0; }
.nvpe-poll-choice span { font-size: 15px; line-height: 1.4; }
.nvpe-button { font: inherit; font-size: 14px; font-weight: 700; background: var(--nvpe-green); color: #091409; border: 0; border-radius: 0; padding: 13px 22px; cursor: pointer; }
.nvpe-button:hover, .nvpe-button:focus-visible { background: #4df35e; color: #091409; }
.nvpe-button:disabled { opacity: .6; cursor: wait; }
.nvpe-poll-message { font-size: 13px; min-height: 18px; margin: 10px 0 0; color: #e1e9e1; }
.nvpe-result { margin: 0 0 16px; }
.nvpe-result-labels { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; margin: 0 0 7px; }
.nvpe-result-track { height: 9px; border-radius: 0; background: #404b42; overflow: hidden; }
.nvpe-result-fill { height: 100%; border-radius: 0; background: #85968a; min-width: 0; transition: width .35s; }
.nvpe-result-fill.is-selected { background: var(--nvpe-green); }
.nvpe-vote-total { font-size: 13px; color: #d4ddd5; margin: 18px 0 0; }
.nvpe-next-poll { margin-top: 18px; }
.nvpe-calendar { width: 100%; max-width: 100%; min-width: 0; overflow: hidden; background: #fff; border: 1px solid #e3e9e4; border-radius: 0; padding: clamp(20px, 3vw, 36px); }
.nvpe-calendar-header { display: flex; justify-content: space-between; align-items: end; gap: 20px; flex-wrap: wrap; margin-bottom: 30px; }
.nvpe-calendar-nav { display: flex; align-items: center; gap: 12px; }
.nvpe-calendar-nav button { font: inherit; line-height: 1; font-size: 26px; width: 38px; height: 38px; border: 1px solid #dbe3dc; border-radius: 0; background: #fff; color: var(--nvpe-dark); cursor: pointer; }
.nvpe-calendar-nav button:hover, .nvpe-calendar-nav button:focus-visible { border-color: #137b28; background: #edf8ee; color: #145f25; }
.nvpe-month { font-size: 16px; font-weight: 700; min-width: 145px; text-align: center; }
.nvpe-calendar-weekdays, .nvpe-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.nvpe-calendar-weekdays span { text-align: center; color: var(--nvpe-muted); font-size: 12px; font-weight: 700; padding-bottom: 12px; }
.nvpe-calendar-grid { gap: 6px; }
.nvpe-day { position: relative; font: inherit; border: 1px solid transparent; background: #f5f7f5; border-radius: 0; min-height: 48px; color: var(--nvpe-dark); cursor: pointer; }
.nvpe-day:hover, .nvpe-day:focus-visible { border-color: #137b28; }
.nvpe-day.has-event { font-weight: 700; background: #e5f8e8; color: #126b24; }
.nvpe-day.has-event::after { content: ''; position: absolute; left: calc(50% - 3px); bottom: 5px; width: 6px; height: 6px; border-radius: 50%; background: #148b2b; }
.nvpe-day.is-today { outline: 1px solid #56665a; }
.nvpe-day.is-selected { color: #fff; background: #166a29; }
.nvpe-day.is-selected::after { background: #fff; }
.nvpe-calendar-list { width: 100%; max-width: 100%; min-width: 0; border-top: 1px solid #e5ebe6; margin-top: 26px; padding-top: 22px; display: grid; gap: 16px; }
.nvpe-empty { margin: 0; color: var(--nvpe-muted); font-size: 15px; }
.nvpe-event { width: 100%; max-width: 100%; min-width: 0; display: grid; grid-template-columns: 160px minmax(0, 1fr); height: 160px; overflow: hidden; background: #f7f9f7; border: 1px solid #e8eee9; border-radius: 0; }
.nvpe-event:not(.has-image) { grid-template-columns: 1fr; }
.nvpe-event-image { display: block; width: 100%; height: 100% !important; min-height: 0; object-fit: cover; }
.nvpe-event-content { min-width: 0; max-width: 100%; overflow: hidden; padding: 20px; align-self: center; }
.nvpe-event-date { color: #137b28; font-size: 13px; font-weight: 700; letter-spacing: .03em; }
.nvpe-event h3 { font-family: inherit; color: var(--nvpe-dark); font-size: 20px; line-height: 1.25; margin: 5px 0 7px; }
.nvpe-event p { min-width: 0; max-width: 100%; max-height: 4.65em; font-size: 14px; line-height: 1.55; white-space: normal; overflow-wrap: anywhere; color: #4c5550; margin: 0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
.nvpe-poll [hidden], .nvpe-calendar [hidden] { display: none !important; }
@media (max-width: 767px) {
  .nvpe-poll { grid-template-columns: 1fr; }
  .nvpe-calendar-header { align-items: start; }
  .nvpe-calendar-nav { width: 100%; justify-content: space-between; }
  .nvpe-calendar-grid { gap: 3px; }
  .nvpe-day { min-height: 40px; border-radius: 0; font-size: 13px; }
  .nvpe-event { grid-template-columns: 1fr; height: auto; }
  .nvpe-event-image { height: auto !important; min-height: 0; aspect-ratio: 3 / 2; object-fit: cover; }
  .nvpe-event-content { padding: 16px; }
  .nvpe-event h3 { font-size: 17px; }
  .nvpe-event p { white-space: pre-line; overflow-wrap: break-word; }
}
