/* Nyhemsveckan program 3.1. Prototyp v260802-02 är visuellt facit. */

#nv_program_panel,
#nv_program_detail,
#nv_program_speakers,
#nv_program_bible_plan {
  --nv-program-surface: var(--nv-surface);
  --nv-program-surface-warm: var(--nv-surface-warm);
  --nv-program-surface-muted: var(--nv-surface-muted);
  --nv-program-border: var(--nv-border);
  --nv-program-border-strong: var(--nv-border-strong);
  --nv-program-ink: var(--nv-ink);
  --nv-program-ink-muted: var(--nv-ink-muted);
  --nv-program-primary: var(--nv-brand-primary);
  --nv-program-primary-dark: var(--nv-brand-primary-dark);
  --nv-program-primary-light: var(--nv-brand-primary-light);
  --nv-program-focus: var(--nv-focus-ring);
  --nv-program-control-height: 44px;
  width: 100%;
  color: var(--nv-program-ink);
  font-family: var(--nv-font-body, Inter, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  line-height: var(--nv-leading-body, 1.65);
}

#nv_program_panel .nv-program-content {
  /* 2026-09-07: sidgutter som saknades i programoeversikten (kort/lista lag flush mot skaermkanten pa alla brytpunkter), matchar #nv_program_detail .nv-program-detail-container */
  width: min(100%, var(--nv-content-wide, 75rem));
  margin-inline: auto;
  padding-inline: var(--nv-page-gutter, clamp(1rem, 4vw, 2rem));
}

#nv_program_panel,
#nv_program_panel *,
#nv_program_detail,
#nv_program_detail *,
#nv_program_speakers,
#nv_program_speakers *,
#nv_program_bible_plan,
#nv_program_bible_plan * {
  box-sizing: border-box;
}

#nv_program_panel [hidden],
#nv_program_speakers [hidden],
#nv_program_bible_plan [hidden] {
  display: none !important;
}

#nv_program_panel .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

#nv_program_panel button,
#nv_program_panel input {
  font: inherit;
}

#nv_program_panel button {
  color: inherit;
  cursor: pointer;
}

#nv_program_panel .nv-program-icon {
  display: block;
  flex: 0 0 auto;
}

#nv_program_panel .nv-program-icon-lg {
  width: 24px;
  height: 24px;
}

#nv_program_panel button:focus-visible,
#nv_program_panel input:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
}

/* Dagväljare */

#nv_program_panel .nv-program-days-wrap {
  position: sticky;
  top: var(--nv-program-sticky-offset, 0);
  z-index: 20;
  margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
  border-bottom: 1px solid var(--nv-program-border);
  background: var(--nv-program-surface);
}

#nv_program_panel .nv-program-days {
  display: flex;
  gap: var(--nv-space-3, 0.5rem);
  overflow-x: auto;
  padding: var(--nv-space-5, 0.75rem) var(--nv-space-2, 0.375rem);
  margin-inline: calc(-1 * var(--nv-space-2, 0.375rem));
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}

#nv_program_panel .nv-program-days button {
  flex: 0 0 auto;
  min-width: 3.6rem;
  padding: var(--nv-space-3, 0.5rem) var(--nv-space-2, 0.375rem);
  border: 2px solid var(--nv-program-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  text-align: center;
  transition: border-color var(--nv-transition, 160ms ease), background-color var(--nv-transition, 160ms ease), color var(--nv-transition, 160ms ease);
}

#nv_program_panel .nv-program-days button:hover {
  border-color: var(--nv-program-primary);
}

#nv_program_panel .nv-program-days button[aria-selected="true"] {
  border-color: var(--nv-program-primary);
  background: var(--nv-program-primary);
  color: var(--nv-program-surface);
}

#nv_program_panel .nv-program-days button span {
  display: block;
  font-size: 0.7rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: var(--nv-tracking-label, 0.06em);
  text-transform: uppercase;
  opacity: 0.75;
}

#nv_program_panel .nv-program-days button strong {
  display: block;
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-lg, 1.15rem);
  line-height: 1;
}

/* Alla dagar: ersätter dagväljaren när en medverkande är vald. */
#nv_program_panel .nv-program-all-days {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem) var(--nv-space-5, 0.75rem);
  margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
  padding: 0.7rem var(--nv-space-7, 1rem);
  border-bottom: 1px solid var(--nv-program-border);
  background: var(--nv-brand-primary-light, #f8dfe6);
  color: var(--nv-brand-primary-dark, #780824);
  font-size: var(--nv-text-sm, 0.9375rem);
}

/* Filter */

#nv_program_panel .nv-program-filters {
  display: flex;
  align-items: flex-start;
  gap: var(--nv-space-5, 0.75rem);
  flex-wrap: wrap;
  position: relative;
  z-index: 15;
  margin-bottom: var(--nv-space-8, 1.25rem);
}

#nv_program_panel .nv-program-filter-search input,
#nv_program_panel .nv-program-mobile-dialog fieldset > input {
  width: 100%;
  min-height: 44px;
  padding: var(--nv-space-4, 0.625rem) 0.8rem;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-sm, 0.5rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
}

#nv_program_panel .nv-program-filter-search input::placeholder,
#nv_program_panel .nv-program-mobile-dialog fieldset > input::placeholder {
  color: var(--nv-program-ink-muted);
  opacity: 0.78;
}

#nv_program_panel .nv-program-filter {
  position: relative;
}

#nv_program_panel .nv-program-filter-button,
#nv_program_panel .nv-program-broadcast,
#nv_program_panel .nv-program-mobile-filter {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--nv-space-2, 0.375rem);
  padding: 0.45rem var(--nv-space-7, 1rem);
  border: 1px solid var(--nv-program-border-strong);
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-xs, 0.8125rem);
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}

#nv_program_panel .nv-program-filter-button,
#nv_program_panel .nv-program-broadcast,
#nv_program_panel .nv-program-mobile-filter {
  height: var(--nv-program-control-height);
  min-height: var(--nv-program-control-height);
}

#nv_program_panel .nv-program-filter-button:hover,
#nv_program_panel .nv-program-broadcast:hover {
  border-color: var(--nv-program-ink);
}

#nv_program_panel .nv-program-filter-button.is-selected {
  border-color: var(--nv-program-ink);
  background: var(--nv-program-ink);
  color: var(--nv-program-surface);
}

#nv_program_panel .nv-program-chevron {
  transition: transform var(--nv-transition, 160ms ease);
}

#nv_program_panel .nv-program-filter-button[aria-expanded="true"] .nv-program-chevron {
  transform: rotate(180deg);
}

#nv_program_panel .nv-program-filter-menu {
  position: absolute;
  top: calc(100% + 0.5rem);
  left: 0;
  z-index: 30;
  width: 18rem;
  max-height: 22rem;
  padding: var(--nv-space-5, 0.75rem);
  overflow-y: auto;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface);
  box-shadow: var(--nv-shadow-md, 0 12px 32px rgb(33 28 25 / 12%));
}

#nv_program_panel .nv-program-filter-search {
  display: block;
  margin-bottom: var(--nv-space-4, 0.625rem);
}

#nv_program_panel .nv-program-filter-options {
  display: grid;
  gap: 0.125rem;
}

#nv_program_panel .nv-program-option {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--nv-space-4, 0.625rem);
  width: 100%;
  min-height: 40px;
  padding: var(--nv-space-3, 0.5rem) var(--nv-space-2, 0.375rem);
  border: 0;
  border-radius: var(--nv-radius-sm, 0.5rem);
  background: transparent;
  color: var(--nv-program-ink);
  font-size: var(--nv-text-sm, 0.9375rem);
  text-align: left;
}

#nv_program_panel .nv-program-option::before {
  content: "";
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
  border: 1px solid var(--nv-program-border-strong);
  border-radius: var(--nv-radius-xs, 0.25rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-surface);
  font-size: 0.75rem;
  font-weight: 800;
  line-height: 16px;
  text-align: center;
}

#nv_program_panel .nv-program-option:hover {
  background: var(--nv-program-surface-warm);
}

#nv_program_panel .nv-program-option.is-selected {
  background: var(--nv-program-primary-light);
  font-weight: 700;
}

#nv_program_panel .nv-program-option.is-selected::before {
  content: "✓";
  border-color: var(--nv-program-primary);
  background: var(--nv-program-primary);
}

#nv_program_panel .nv-program-broadcast {
  gap: var(--nv-space-4, 0.625rem);
  padding: var(--nv-space-2, 0.375rem) var(--nv-space-6, 0.875rem) var(--nv-space-2, 0.375rem) var(--nv-space-3, 0.5rem);
  border-color: var(--nv-program-border);
  background: transparent;
  font-family: var(--nv-font-body, Inter, Arial, sans-serif);
  font-weight: 600;
}

#nv_program_panel .nv-program-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex: 0 0 46px;
  width: 46px;
  height: 26px;
  padding: 2px;
  border: 0;
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-border);
  transition: background-color var(--nv-transition, 160ms ease);
}

#nv_program_panel .nv-program-switch span {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--nv-program-surface);
  box-shadow: var(--nv-shadow-sm, 0 1px 2px rgb(33 28 25 / 8%));
  transition: transform var(--nv-transition, 160ms ease);
}

#nv_program_panel .nv-program-broadcast.is-active {
  border-color: var(--nv-program-border);
  background: transparent;
  color: var(--nv-program-ink);
}

#nv_program_panel .nv-program-broadcast.is-active .nv-program-switch {
  background: var(--nv-program-primary);
}

#nv_program_panel .nv-program-broadcast.is-active .nv-program-switch span {
  transform: translateX(20px);
}

#nv_program_panel .nv-program-mobile-filter {
  display: none;
  width: 100%;
  gap: var(--nv-space-3, 0.5rem);
  padding: var(--nv-space-5, 0.75rem) var(--nv-space-7, 1rem);
  border-color: var(--nv-program-border);
  margin-bottom: var(--nv-space-8, 1.25rem);
  border-radius: var(--nv-radius-md, 0.75rem);
}

#nv_program_panel .nv-program-chips {
  display: flex;
  align-items: center;
  gap: var(--nv-space-3, 0.5rem);
  flex-wrap: wrap;
  margin-bottom: var(--nv-space-8, 1.25rem);
}

#nv_program_panel .nv-program-chips button {
  min-height: 34px;
  padding: 0.35rem var(--nv-space-5, 0.75rem);
  border: 1px solid var(--nv-program-primary);
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-primary-light);
  color: var(--nv-program-primary-dark);
  font-size: var(--nv-text-xs, 0.8125rem);
  font-weight: 700;
}

#nv_program_panel .nv-program-chips .nv-program-clear-filters,
#nv_program_panel .nv-program-link {
  min-height: auto;
  padding: var(--nv-space-2, 0.375rem) 0.3rem;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--nv-program-primary);
  font-size: var(--nv-text-xs, 0.8125rem);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* Resultat och kort */

#nv_program_panel .nv-program-results-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--nv-space-7, 1rem);
  flex-wrap: wrap;
  margin-bottom: var(--nv-space-8, 1.25rem);
}

#nv_program_panel .nv-program-results-head h2 {
  margin: 0;
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: 1.6rem;
  font-weight: 700;
  line-height: var(--nv-leading-heading, 1.2);
}

#nv_program_panel .nv-program-results-meta {
  display: flex;
  align-items: center;
  gap: var(--nv-space-5, 0.75rem);
  flex-wrap: wrap;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_panel .nv-program-view-toggle {
  display: inline-flex;
  gap: 0.2rem;
  padding: 0.2rem;
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-surface-muted);
}

#nv_program_panel .nv-program-view-toggle button {
  min-height: 34px;
  padding: 0.4rem var(--nv-space-7, 1rem);
  border: 0;
  border-radius: var(--nv-radius-pill, 999px);
  background: transparent;
  color: var(--nv-program-ink-muted);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-xs, 0.8125rem);
  font-weight: 600;
  white-space: nowrap;
}

#nv_program_panel .nv-program-view-toggle button[aria-pressed="true"] {
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  box-shadow: var(--nv-shadow-sm, 0 1px 2px rgb(33 28 25 / 8%));
}

/* Resultatytan är dagflikarnas tabpanel och därför fokuserbar. */
#nv_program_panel .nv-program-results:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
}

#nv_program_panel .nv-program-list {
  display: grid;
  gap: var(--nv-space-5, 0.75rem);
}

#nv_program_panel .nv-program-card {
  position: relative;
  display: grid;
  grid-template-areas: "image body meta";
  grid-template-columns: 64px minmax(0, 1fr) 190px;
  gap: var(--nv-space-7, 1rem) var(--nv-space-9, 1.5rem);
  align-items: start;
  width: 100%;
  padding: var(--nv-space-8, 1.25rem) var(--nv-space-9, 1.5rem);
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  cursor: pointer;
  text-decoration: none;
  text-align: left;
  transition: transform 180ms ease, box-shadow 180ms ease;
}

@media (hover: hover) {
  #nv_program_panel .nv-program-card:hover {
    box-shadow: 0 12px 32px rgb(33 28 25 / 12%);
    transform: translateY(-4px);
    /* Avadas globala länkdekoration har högre specifikitet vid hover. */
    text-decoration: none !important;
  }
}

#nv_program_panel .nv-program-card:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
  text-decoration: none !important;
}

#nv_program_panel .nv-program-card:active {
  transform: translateY(0);
}

#nv_program_panel .nv-program-card-image {
  grid-area: image;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  overflow: hidden;
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface-muted);
}

#nv_program_panel .nv-program-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

#nv_program_panel .nv-program-card-image-initials {
  background: linear-gradient(135deg, var(--nv-program-primary), var(--nv-program-primary-dark));
  color: var(--nv-program-surface);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: 700;
}

#nv_program_panel .nv-program-card-image-placeholder {
  color: var(--nv-program-ink-muted);
}

#nv_program_panel .nv-program-card-body {
  grid-area: body;
  display: block;
  min-width: 0;
}

#nv_program_panel .nv-program-card-title {
  display: block;
  margin: 0 0 0.3rem;
  padding: 0;
  letter-spacing: normal;
  text-transform: none;
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-xl, 1.25rem);
  font-weight: 700;
  line-height: var(--nv-leading-heading, 1.2);
}

#nv_program_panel .nv-program-card-place,
#nv_program_panel .nv-program-card-people,
#nv_program_panel .nv-program-card-description {
  display: block;
  margin-bottom: var(--nv-space-3, 0.5rem);
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
  line-height: 1.55;
  white-space: pre-line;
}

#nv_program_panel .nv-program-card-place {
  display: flex;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem);
  color: var(--nv-program-ink);
  font-weight: 600;
}

#nv_program_panel .nv-program-card-place .nv-program-icon {
  color: var(--nv-program-ink-muted);
}

#nv_program_panel .nv-program-card-tags {
  display: flex;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem);
  flex-wrap: wrap;
  margin-top: var(--nv-space-3, 0.5rem);
}

#nv_program_panel .nv-program-tag {
  padding: 0.15rem var(--nv-space-3, 0.5rem);
  border-radius: var(--nv-radius-xs, 0.25rem);
  background: var(--nv-program-surface-muted);
  color: var(--nv-program-ink-muted);
  font-size: 0.68rem;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

#nv_program_panel .nv-program-tag[data-tone="meeting"] { background: var(--nv-program-primary-light); color: var(--nv-program-primary-dark); }
#nv_program_panel .nv-program-tag[data-tone="music"] { background: var(--nv-info-surface); color: var(--nv-info); }
#nv_program_panel .nv-program-tag[data-tone="barn"] { background: var(--nv-brand-barn-tint); color: var(--nv-success); }
#nv_program_panel .nv-program-tag[data-tone="youth"] { background: var(--nv-theme-accent-light); color: var(--nv-theme-accent-dark); }
#nv_program_panel .nv-program-tag[data-tone="sport"] { background: var(--nv-warning-surface); color: var(--nv-warning); }

#nv_program_panel .nv-program-collection {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  color: var(--nv-program-ink-muted);
  font-size: 0.78rem;
}

#nv_program_panel .nv-program-card-meta {
  grid-area: meta;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.3rem;
  padding-left: var(--nv-space-9, 1.5rem);
  border-left: 1px solid var(--nv-program-border);
  color: var(--nv-program-ink-muted);
  font-size: 0.82rem;
  text-align: right;
}

#nv_program_panel .nv-program-card-meta > strong {
  color: var(--nv-program-primary);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  line-height: var(--nv-leading-tight, 1.1);
}

#nv_program_panel .nv-program-webtv,
#nv_program_panel .nv-program-radio {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: var(--nv-text-2xs, 0.75rem);
  font-weight: 700;
}

#nv_program_panel .nv-program-webtv { color: var(--nv-info); }
#nv_program_panel .nv-program-radio { color: var(--nv-program-primary); }

#nv_program_panel .nv-program-notice {
  display: flex;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem);
  margin: var(--nv-space-9, 1.5rem) 0 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-xs, 0.8125rem);
}

/* Kompakt sändningsläge: [nv_program broadcast="webtv|radio"]. Prototypens
   schema på Webbsändningar och Radio Nyhem: dagchips följda av programkort, utan
   filter, räknare, vyväxel, verktyg och förbehållstext. Klassen sätts i program.js. */

#nv_program_panel.nv-program-compact .nv-program-content {
  width: 100%;
  padding-inline: 0;
}

#nv_program_panel.nv-program-compact .nv-program-filters,
#nv_program_panel.nv-program-compact .nv-program-mobile-filter,
#nv_program_panel.nv-program-compact .nv-program-chips,
#nv_program_panel.nv-program-compact .nv-program-results-head,
#nv_program_panel.nv-program-compact .nv-program-tools,
#nv_program_panel.nv-program-compact .nv-program-notice {
  display: none;
}

#nv_program_panel.nv-program-compact .nv-program-days-wrap {
  position: static;
  margin-bottom: var(--nv-space-8, 1.25rem);
  border-bottom: 0;
  background: transparent;
}

#nv_program_panel.nv-program-compact .nv-program-days {
  padding: 0 0 var(--nv-space-3, 0.5rem);
  margin-inline: 0;
}

#nv_program_panel.nv-program-compact .nv-program-days button {
  font-weight: 500;
}

#nv_program_panel.nv-program-compact .nv-program-days button[aria-selected="true"] {
  font-weight: 700;
}

#nv_program_panel.nv-program-compact .nv-program-days button span {
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-2xs, 0.75rem);
  font-weight: inherit;
  letter-spacing: normal;
  text-transform: none;
  opacity: 1;
}

#nv_program_panel.nv-program-compact .nv-program-days button strong {
  font-family: inherit;
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: inherit;
  line-height: inherit;
}

#nv_program_panel.nv-program-compact .nv-program-empty {
  display: block;
  padding: 0;
  border: 0;
  text-align: left;
}

#nv_program_panel.nv-program-compact .nv-program-empty-text {
  margin: 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
}

/* Kalender */

#nv_program_panel .nv-program-calendar {
  overflow-x: auto;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-lg, 1.25rem);
}

#nv_program_panel .nv-program-calendar-inner {
  display: grid;
  grid-template-columns: 4.5rem repeat(4, minmax(12rem, 1fr));
  min-width: 58rem;
}

#nv_program_panel .nv-program-calendar-hours {
  position: relative;
  margin-top: 4.5rem;
  background: var(--nv-program-surface-warm);
}

#nv_program_panel .nv-program-calendar-hours span {
  position: absolute;
  right: 0.5rem;
  color: var(--nv-program-ink-muted);
  font-size: 0.75rem;
  font-weight: 600;
  transform: translateY(-50%);
}

#nv_program_panel .nv-program-calendar-column {
  border-left: 1px solid var(--nv-program-border);
}

#nv_program_panel .nv-program-calendar-column h3 {
  height: 4.5rem;
  margin: 0;
  padding: var(--nv-space-7, 1rem);
  border-bottom: 1px solid var(--nv-program-border);
  background: var(--nv-program-surface-warm);
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
}

#nv_program_panel .nv-program-calendar-track {
  position: relative;
  background-image: repeating-linear-gradient(to bottom, var(--nv-program-border) 0 1px, transparent 1px 63px);
}

#nv_program_panel .nv-program-calendar-event {
  position: absolute;
  left: 0.3rem;
  right: 0.3rem;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: var(--nv-space-3, 0.5rem);
  overflow: hidden;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-sm, 0.5rem);
  background: var(--nv-program-primary-light);
  color: var(--nv-program-ink);
  cursor: pointer;
  text-decoration: none;
  text-align: left;
}

#nv_program_panel .nv-program-calendar-event[data-tone="barn"] { background: var(--nv-brand-barn-tint); }
#nv_program_panel .nv-program-calendar-event[data-tone="ung"] { background: var(--nv-theme-accent-light); }
#nv_program_panel .nv-program-calendar-event[data-tone="young"] { background: var(--nv-info-surface); }
#nv_program_panel .nv-program-calendar-event strong { color: var(--nv-program-primary); font-size: var(--nv-text-xs, 0.8125rem); }
#nv_program_panel .nv-program-calendar-event span { font-size: var(--nv-text-sm, 0.9375rem); font-weight: 700; line-height: 1.25; }
#nv_program_panel .nv-program-calendar-event small { color: var(--nv-program-ink-muted); font-size: 0.72rem; }

/* Status, dialoger och tomläge */

#nv_program_panel .nv-program-status,
#nv_program_panel .nv-program-empty {
  display: grid;
  gap: var(--nv-space-5, 0.75rem);
  justify-items: center;
  padding: var(--nv-space-12, 2.5rem) var(--nv-space-7, 1rem);
  border: 1px dashed var(--nv-program-border);
  border-radius: var(--nv-radius-lg, 1.25rem);
  color: var(--nv-program-ink-muted);
  text-align: center;
}

#nv_program_panel .nv-program-status[data-nv-status="loading"] {
  justify-items: stretch;
  border: 0;
  padding-inline: 0;
}

#nv_program_panel .nv-program-skeleton {
  display: block;
  height: 96px;
  border-radius: var(--nv-radius-md, 0.75rem);
  background: linear-gradient(90deg, var(--nv-program-surface-muted) 25%, var(--nv-program-border) 37%, var(--nv-program-surface-muted) 63%);
  background-size: 400% 100%;
  animation: nv-program-pulse 1.6s ease-in-out infinite;
}

@keyframes nv-program-pulse {
  0%, 100% { background-position: 100% 0; }
  50% { background-position: 0 0; }
}

#nv_program_panel .nv-program-primary-button {
  min-height: 44px;
  padding: 0.65rem var(--nv-space-7, 1rem);
  border: 1px solid var(--nv-program-primary);
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-primary);
  color: var(--nv-program-surface);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-sm, 0.9375rem);
  font-weight: 700;
}

#nv_program_panel dialog {
  max-width: min(42rem, calc(100vw - 2rem));
  max-height: calc(100dvh - 2rem);
  padding: 0;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-lg, 1.25rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  box-shadow: var(--nv-shadow-md, 0 12px 32px rgb(33 28 25 / 12%));
}

#nv_program_panel dialog::backdrop {
  background: rgb(13 13 13 / 55%);
}

#nv_program_panel .nv-program-mobile-dialog {
  width: min(38rem, calc(100vw - 1rem));
}

#nv_program_panel .nv-program-dialog-head,
#nv_program_panel .nv-program-dialog-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nv-space-7, 1rem);
  padding: var(--nv-space-7, 1rem) var(--nv-space-8, 1.25rem);
}

#nv_program_panel .nv-program-dialog-head { border-bottom: 1px solid var(--nv-program-border); }
#nv_program_panel .nv-program-dialog-foot { border-top: 1px solid var(--nv-program-border); }
#nv_program_panel .nv-program-dialog-head h2 { margin: 0; font-size: var(--nv-text-xl, 1.25rem); }

#nv_program_panel .nv-program-icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--nv-program-border);
  border-radius: 50%;
  background: var(--nv-program-surface);
}

#nv_program_panel .nv-program-dialog-body {
  display: grid;
  gap: var(--nv-space-9, 1.5rem);
  max-height: calc(100dvh - 11rem);
  padding: var(--nv-space-8, 1.25rem);
  overflow-y: auto;
}

#nv_program_panel .nv-program-mobile-dialog fieldset {
  display: grid;
  gap: var(--nv-space-3, 0.5rem);
  margin: 0;
  padding: 0;
  border: 0;
}

#nv_program_panel .nv-program-mobile-dialog legend {
  margin-bottom: var(--nv-space-4, 0.625rem);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: 700;
}

#nv_program_panel .nv-program-mobile-option,
#nv_program_panel .nv-program-mobile-switch {
  display: flex;
  align-items: center;
  gap: var(--nv-space-4, 0.625rem);
  min-height: 44px;
  padding: var(--nv-space-3, 0.5rem) var(--nv-space-2, 0.375rem);
  border-radius: var(--nv-radius-sm, 0.5rem);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_panel .nv-program-mobile-option input,
#nv_program_panel .nv-program-mobile-switch input {
  width: 18px;
  height: 18px;
  accent-color: var(--nv-program-primary);
}

/* Programpunkt */

#nv_program_detail .nv-program-detail-container,
#nv_program_speakers .nv-program-detail-container,
#nv_program_bible_plan .nv-program-detail-container {
  width: min(100%, var(--nv-content-wide, 75rem));
  margin-inline: auto;
  padding-inline: var(--nv-page-gutter, clamp(1rem, 4vw, 2rem));
}

#nv_program_detail .nv-program-detail-hero-section,
#nv_program_detail .nv-program-related-section {
  background: var(--nv-program-surface-warm);
  box-shadow: 0 0 0 100vmax var(--nv-program-surface-warm);
  clip-path: inset(0 -100vmax);
}

#nv_program_detail .nv-program-detail-hero-section {
  padding: var(--nv-card-pad, 1.5rem) 0 var(--nv-block-space, 3rem);
}

#nv_program_detail .nv-program-backlink,
#nv_program_speakers .nv-program-backlink,
#nv_program_bible_plan .nv-program-backlink {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem);
  margin-bottom: var(--nv-space-9, 1.5rem);
  color: var(--nv-program-ink-muted);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-sm, 0.9375rem);
  font-weight: 600;
  text-decoration: none;
}

#nv_program_detail .nv-program-backlink:hover,
#nv_program_speakers .nv-program-backlink:hover,
#nv_program_bible_plan .nv-program-backlink:hover {
  color: var(--nv-program-primary);
}

#nv_program_detail a:focus-visible,
#nv_program_speakers a:focus-visible,
#nv_program_bible_plan a:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
}

#nv_program_detail .nv-program-detail-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(260px, 1fr);
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: start;
}

#nv_program_detail .nv-program-detail-hero-no-image {
  grid-template-columns: minmax(0, 44rem);
}

#nv_program_detail .nv-program-detail-main {
  min-width: 0;
}

#nv_program_detail .nv-program-detail-tags {
  display: flex;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem);
  flex-wrap: wrap;
  margin-bottom: var(--nv-space-7, 1rem);
}

#nv_program_detail .nv-program-tag {
  padding: 0.2rem var(--nv-space-3, 0.5rem);
  border-radius: var(--nv-radius-xs, 0.25rem);
  background: var(--nv-program-surface-muted);
  color: var(--nv-program-ink-muted);
  font-size: 0.7rem;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

#nv_program_detail .nv-program-tag[data-tone="meeting"] { background: var(--nv-program-primary-light); color: var(--nv-program-primary-dark); }
#nv_program_detail .nv-program-tag[data-tone="music"] { background: var(--nv-info-surface); color: var(--nv-info); }
#nv_program_detail .nv-program-tag[data-tone="barn"] { background: var(--nv-brand-barn-tint); color: var(--nv-success); }
#nv_program_detail .nv-program-tag[data-tone="youth"] { background: var(--nv-theme-accent-light); color: var(--nv-theme-accent-dark); }
#nv_program_detail .nv-program-tag[data-tone="sport"] { background: var(--nv-warning-surface); color: var(--nv-warning); }

#nv_program_detail h1,
#nv_program_detail h2,
#nv_program_detail p,
#nv_program_detail figure {
  margin-top: 0;
}

#nv_program_detail figure {
  margin-right: 0;
  margin-bottom: 0;
  margin-left: 0;
}

#nv_program_detail h1 {
  margin-bottom: var(--nv-space-7, 1rem);
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-3xl, clamp(2rem, 4vw, 2.75rem));
  font-weight: 800;
  line-height: var(--nv-leading-heading, 1.2);
  letter-spacing: var(--nv-tracking-heading, -0.025em);
  text-wrap: pretty;
}

#nv_program_detail h2 {
  margin-bottom: var(--nv-space-9, 1.5rem);
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: var(--nv-leading-heading, 1.2);
}

#nv_program_detail .nv-program-detail-facts {
  display: flex;
  gap: var(--nv-space-8, 1.25rem);
  flex-wrap: wrap;
  margin-bottom: var(--nv-space-9, 1.5rem);
}

#nv_program_detail .nv-program-detail-facts span,
#nv_program_detail .nv-program-detail-broadcasts span,
#nv_program_detail .nv-program-detail-broadcasts a,
#nv_program_detail .nv-program-detail-collection {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-3, 0.5rem);
}

#nv_program_detail .nv-program-detail-facts span {
  color: var(--nv-program-ink);
  font-weight: 600;
}

#nv_program_detail .nv-program-detail-facts svg {
  color: var(--nv-program-primary);
}

#nv_program_detail .nv-program-detail-broadcasts {
  display: flex;
  gap: var(--nv-space-4, 0.625rem);
  flex-wrap: wrap;
  margin-bottom: var(--nv-space-9, 1.5rem);
}

#nv_program_detail .nv-program-detail-broadcasts span,
#nv_program_detail .nv-program-detail-broadcasts a {
  justify-content: center;
  padding: 0.72rem 1.45rem;
  border: 1.5px solid var(--nv-program-border-strong);
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: 700;
  line-height: var(--nv-leading-heading, 1.2);
  white-space: nowrap;
}

#nv_program_detail .nv-program-detail-description {
  max-width: 44rem;
  color: var(--nv-program-ink);
  font-size: var(--nv-text-lg, 1.15rem);
  line-height: var(--nv-leading-body, 1.65);
  text-wrap: pretty;
}

#nv_program_detail .nv-program-detail-description > :last-child {
  margin-bottom: 0;
}

#nv_program_detail .nv-program-detail-collection {
  margin: var(--nv-space-7, 1rem) 0 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_detail .nv-program-detail-image {
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-lg, 1.25rem);
  background: var(--nv-program-surface);
}

#nv_program_detail .nv-program-detail-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
}

#nv_program_detail .nv-program-detail-section {
  padding: var(--nv-section-space-compact, clamp(2.5rem, 6vw, 4rem)) 0;
  background: var(--nv-program-surface);
}

#nv_program_detail .nv-program-people-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--nv-space-7, 1rem);
}

#nv_program_detail .nv-program-person {
  display: flex;
  align-items: center;
  gap: var(--nv-space-7, 1rem);
  padding: var(--nv-space-7, 1rem);
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface);
}

#nv_program_detail .nv-program-person img,
#nv_program_detail .nv-program-person-initial {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 56px;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
}

#nv_program_detail .nv-program-person-initial {
  background: linear-gradient(135deg, var(--nv-program-primary), var(--nv-program-primary-dark));
  color: var(--nv-program-surface);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-weight: 700;
}

#nv_program_detail .nv-program-person div {
  min-width: 0;
}

#nv_program_detail .nv-program-person strong,
#nv_program_detail .nv-program-person div span {
  display: block;
}

#nv_program_detail .nv-program-person strong {
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  line-height: var(--nv-leading-heading, 1.2);
}

#nv_program_detail .nv-program-person div span {
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-xs, 0.8125rem);
}

#nv_program_detail .nv-program-related-section {
  padding-bottom: var(--nv-section-space, clamp(3.5rem, 8vw, 6rem));
  background: var(--nv-program-surface-warm);
}

#nv_program_detail .nv-program-related-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--nv-space-5, 0.75rem);
}

#nv_program_detail .nv-program-related-card {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: var(--nv-space-7, 1rem) 1.1rem;
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  text-decoration: none;
  transition: border-color var(--nv-transition, 160ms ease), box-shadow var(--nv-transition, 160ms ease), transform var(--nv-transition, 160ms ease);
}

#nv_program_detail .nv-program-related-card:hover {
  border-color: var(--nv-program-border-strong);
  box-shadow: var(--nv-shadow-lift, 0 8px 28px rgb(33 28 25 / 8%));
  transform: translateY(-1px);
}

#nv_program_detail .nv-program-related-card strong {
  color: var(--nv-program-primary);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-xs, 0.8125rem);
}

#nv_program_detail .nv-program-related-card > span {
  font-weight: 600;
  line-height: 1.3;
  text-wrap: pretty;
}

#nv_program_detail .nv-program-related-card small {
  color: var(--nv-program-ink-muted);
  font-size: 0.82rem;
}

#nv_program_detail .nv-program-primary-button {
  display: inline-flex;
  margin-top: var(--nv-space-5, 0.75rem);
  padding: 0.75rem 1.1rem;
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-primary);
  color: var(--nv-program-surface);
  font-weight: 700;
  text-decoration: none;
}

/* Status, verktyg och kalenderexport */

#nv_program_panel .nv-program-cache-notice,
#nv_program_detail .nv-program-cache-notice {
  display: flex;
  align-items: center;
  gap: var(--nv-space-3, 0.5rem);
  flex-wrap: wrap;
  margin-bottom: var(--nv-space-8, 1.25rem);
  padding: var(--nv-space-5, 0.75rem) var(--nv-space-7, 1rem);
  border: 1px solid var(--nv-warning-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-warning-surface);
  color: var(--nv-warning);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_panel .nv-program-tools,
#nv_program_detail .nv-program-detail-actions,
#nv_program_panel .nv-program-export-actions {
  display: flex;
  align-items: center;
  gap: var(--nv-space-5, 0.75rem);
  flex-wrap: wrap;
}

#nv_program_panel .nv-program-tools {
  margin: calc(-1 * var(--nv-space-5, 0.75rem)) 0 var(--nv-space-8, 1.25rem);
}

#nv_program_panel .nv-program-secondary-button,
#nv_program_detail .nv-program-secondary-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--nv-space-3, 0.5rem);
  min-height: 44px;
  padding: 0.68rem 1rem;
  border: 1px solid var(--nv-program-border-strong);
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-sm, 0.9375rem);
  font-weight: 700;
  line-height: var(--nv-leading-heading, 1.2);
  text-decoration: none;
}

#nv_program_panel .nv-program-secondary-button:hover,
#nv_program_detail .nv-program-secondary-button:hover {
  border-color: var(--nv-program-primary);
  color: var(--nv-program-primary);
}

#nv_program_panel .nv-program-card-title-row {
  display: flex;
  align-items: flex-start;
  gap: var(--nv-space-3, 0.5rem);
  flex-wrap: wrap;
}

#nv_program_panel .nv-program-status-badge {
  flex: 0 0 auto;
  padding: 0.2rem var(--nv-space-3, 0.5rem);
  border: 1px solid var(--nv-warning-border);
  border-radius: var(--nv-radius-pill, 999px);
  background: var(--nv-warning-surface);
  color: var(--nv-warning);
  font-size: var(--nv-text-2xs, 0.75rem);
  font-weight: 700;
  line-height: 1.3;
  text-transform: uppercase;
}

#nv_program_panel .nv-program-status-badge[data-status="installd"],
#nv_program_detail .nv-program-detail-status[data-status="installd"] {
  border-color: var(--nv-program-primary);
  background: var(--nv-program-primary-light);
  color: var(--nv-program-primary-dark);
}

#nv_program_panel .nv-program-status-badge[data-status="avslutad"] {
  border-color: var(--nv-program-border);
  background: var(--nv-program-surface-muted);
  color: var(--nv-program-ink-muted);
}

#nv_program_panel .nv-program-card[data-status="installd"] .nv-program-card-title,
#nv_program_panel .nv-program-calendar-event[data-status="installd"] span {
  text-decoration: line-through;
}

#nv_program_panel .nv-program-card-change {
  color: var(--nv-warning);
  font-size: var(--nv-text-sm, 0.9375rem);
  font-weight: 600;
}

#nv_program_panel .nv-program-card-meta small {
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-2xs, 0.75rem);
  line-height: 1.35;
}

#nv_program_panel .nv-program-export-dialog {
  width: min(92vw, 36rem);
  max-height: min(88vh, 44rem);
}

#nv_program_panel .nv-program-export-field {
  display: grid;
  gap: var(--nv-space-3, 0.5rem);
  font-weight: 700;
}

#nv_program_panel .nv-program-export-field select {
  width: 100%;
  min-height: 44px;
  padding: 0.65rem 2.5rem 0.65rem 0.8rem;
  border: 1px solid var(--nv-program-border-strong);
  border-radius: var(--nv-radius-sm, 0.5rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink);
  font: inherit;
}

#nv_program_panel .nv-program-export-field select:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
}

#nv_program_panel .nv-program-export-help,
#nv_program_panel .nv-program-copy-status {
  margin: 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_panel .nv-program-copy-status:empty {
  display: none;
}

#nv_program_detail .nv-program-detail-status {
  display: grid;
  gap: var(--nv-space-2, 0.375rem);
  max-width: 44rem;
  margin-bottom: var(--nv-space-8, 1.25rem);
  padding: var(--nv-space-5, 0.75rem) var(--nv-space-7, 1rem);
  border: 1px solid var(--nv-warning-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-warning-surface);
  color: var(--nv-warning);
}

#nv_program_detail .nv-program-detail-status strong {
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  text-transform: uppercase;
}

#nv_program_detail .nv-program-detail-status small {
  color: currentColor;
}

#nv_program_detail .nv-program-detail-broadcasts a {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-3, 0.5rem);
  color: inherit;
  text-decoration: none;
}

#nv_program_detail .nv-program-detail-extra {
  display: flex;
  gap: var(--nv-space-5, 0.75rem);
  flex-wrap: wrap;
  margin: var(--nv-space-7, 1rem) 0 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_detail .nv-program-detail-actions {
  margin-top: var(--nv-space-9, 1.5rem);
}

#nv_program_detail .nv-program-detail-actions .nv-program-primary-button {
  min-height: 44px;
  margin-top: 0;
}

#nv_program_detail .nv-program-share-status {
  min-height: 1.5em;
  margin: var(--nv-space-3, 0.5rem) 0 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-sm, 0.9375rem);
}

#nv_program_detail .nv-program-related-status {
  color: var(--nv-warning);
  font-size: inherit;
  font-weight: 700;
}

@media (max-width: 1000px) {
  #nv_program_panel .nv-program-filters-desktop { display: none; }
  #nv_program_panel .nv-program-mobile-filter { display: inline-flex; }
}

@media (max-width: 760px) {
  #nv_program_panel .nv-program-days-wrap { margin-bottom: var(--nv-space-8, 1.25rem); }
  #nv_program_panel .nv-program-results-head { align-items: flex-start; }
  #nv_program_panel .nv-program-results-meta { align-items: flex-start; flex-direction: column; }
  #nv_program_panel .nv-program-view-toggle { max-width: 100%; overflow-x: auto; }
  #nv_program_panel .nv-program-card {
    grid-template-areas: "meta meta" "image body";
    grid-template-columns: 48px minmax(0, 1fr);
    gap: var(--nv-space-5, 0.75rem) var(--nv-space-7, 1rem);
  }
  #nv_program_panel .nv-program-card-image { width: 48px; height: 48px; }
  /* Tid, dag och sändningsmärken på en rad som radbryts, utan avdelarlinje
     (prototypens .nv-listcard-meta vid 760 px). */
  #nv_program_panel .nv-program-card-meta {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--nv-space-3, 0.5rem);
    padding: 0;
    border-left: 0;
    text-align: left;
  }
  #nv_program_detail .nv-program-detail-hero { grid-template-columns: minmax(0, 1fr); }
  #nv_program_detail .nv-program-detail-image { order: -1; max-width: 22rem; }
  #nv_program_detail .nv-program-detail-facts { flex-direction: column; gap: var(--nv-space-4, 0.625rem); }
  #nv_program_panel .nv-program-tools,
  #nv_program_detail .nv-program-detail-actions { align-items: stretch; flex-direction: column; }
  #nv_program_panel .nv-program-tools > *,
  #nv_program_detail .nv-program-detail-actions > * { width: 100%; }
}

@media print {
  @page { margin: 14mm; }

  /* Allt utanför utskriftsvyn tas ur flödet med display: none. visibility: hidden
     räcker inte: dolda element behåller sin höjd och ger tomma sidor. */
  body.nv-program-printing *:not(:has(.nv-program-printroot)):not(.nv-program-printroot):not(.nv-program-printroot *),
  body.nv-program-detail-printing *:not(:has(#nv_program_detail)):not(#nv_program_detail):not(#nv_program_detail *) {
    display: none !important;
  }

  /* Omslutande Avada-behållare ska varken ge luft, bakgrund eller beskärning. */
  html:has(body.nv-program-printing),
  html:has(body.nv-program-detail-printing),
  body.nv-program-printing,
  body.nv-program-detail-printing,
  body.nv-program-printing :has(.nv-program-printroot),
  body.nv-program-detail-printing :has(#nv_program_detail) {
    position: static !important;
    display: block !important;
    float: none !important;
    width: auto !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
    box-shadow: none !important;
    clip-path: none !important;
    overflow: visible !important;
    transform: none !important;
  }

  body.nv-program-printing :has(.nv-program-printroot)::before,
  body.nv-program-printing :has(.nv-program-printroot)::after,
  body.nv-program-detail-printing :has(#nv_program_detail)::before,
  body.nv-program-detail-printing :has(#nv_program_detail)::after {
    display: none !important;
  }

  body.nv-program-printing #nv_program_panel {
    font-size: 10pt;
  }

  body.nv-program-printing #nv_program_panel .nv-program-printroot {
    display: block !important;
    width: 100%;
    background: var(--nv-program-surface);
    color: var(--nv-program-ink);
  }

  #nv_program_panel .nv-program-print-logo {
    display: block;
    width: auto;
    height: 12mm;
    margin-bottom: 4mm;
  }

  #nv_program_panel .nv-program-printroot header {
    margin-bottom: 8mm;
    padding-bottom: 4mm;
    border-bottom: 2px solid var(--nv-program-ink);
  }

  #nv_program_panel .nv-program-printroot h1,
  #nv_program_panel .nv-program-printroot h2,
  #nv_program_panel .nv-program-printroot p {
    margin-top: 0;
  }

  #nv_program_panel .nv-program-print-event {
    display: grid;
    grid-template-columns: 28mm minmax(0, 1fr);
    gap: 5mm;
    break-inside: avoid;
    padding: 4mm 0;
    border-bottom: 1px solid var(--nv-program-border-strong);
  }

  #nv_program_panel .nv-program-print-event time {
    font-weight: 700;
  }

  #nv_program_panel .nv-program-print-event h2 {
    margin-bottom: 1mm;
    font-size: 12pt;
  }

  #nv_program_panel .nv-program-print-event p {
    margin-bottom: 1mm;
    white-space: pre-line;
  }

  #nv_program_panel .nv-program-printroot footer {
    margin-top: 8mm;
    font-size: 9pt;
  }

  body.nv-program-detail-printing #nv_program_detail .nv-program-backlink,
  body.nv-program-detail-printing #nv_program_detail .nv-program-detail-actions,
  body.nv-program-detail-printing #nv_program_detail .nv-program-share-status,
  body.nv-program-detail-printing #nv_program_detail .nv-program-related-section {
    display: none !important;
  }

  body.nv-program-detail-printing #nv_program_detail .nv-program-detail-hero-section,
  body.nv-program-detail-printing #nv_program_detail .nv-program-detail-section {
    padding: 5mm 0;
    background: transparent;
    box-shadow: none;
    clip-path: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  #nv_program_panel *,
  #nv_program_panel *::before,
  #nv_program_panel *::after {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }
  #nv_program_detail *,
  #nv_program_detail *::before,
  #nv_program_detail *::after {
    transition: none !important;
    animation: none !important;
  }
}


/* ==========================================================================
   Talare & medverkande — [nv_program_speakers]. Byggguide 39. Lagt till
   2026-09-12 tillsammans med det statusstyrda sändningsfiltret (byggguide 40).
   ========================================================================== */

#nv_program_speakers {
  display: block;
}

#nv_program_speakers .nv-program-speakers-intro {
  max-width: 42rem;
  margin: 0;
}

/* Bottenavståndet kommer från sidans sista container (global regel i child
   theme), så innehållssektionen lägger inget eget. */
#nv_program_speakers .nv-section-body {
  padding-bottom: 0;
}

#nv_program_speakers .nv-eyebrow {
  display: block;
  margin-bottom: var(--nv-space-3, 0.5rem);
}

#nv_program_speakers h1 {
  margin: 0 0 var(--nv-space-5, 0.75rem);
  font-size: var(--nv-text-3xl);
}

#nv_program_speakers .nv-program-speakers-lede {
  margin: 0;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-lg, 1.15rem);
  line-height: var(--nv-leading-lede, 1.5);
}

#nv_program_speakers .nv-program-cache-notice {
  margin-bottom: var(--nv-space-9, 1.5rem);
}

#nv_program_speakers .nv-program-api-error {
  padding: var(--nv-space-7, 1rem) var(--nv-space-8, 1.25rem);
  border: 1px solid var(--nv-warning-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-warning-surface);
  color: var(--nv-warning);
}

#nv_program_speakers .nv-program-speakers-empty {
  padding: var(--nv-space-9, 1.5rem);
  border: 1px dashed var(--nv-program-border-strong);
  border-radius: var(--nv-radius-md, 0.75rem);
  color: var(--nv-program-ink-muted);
}

#nv_program_speakers .nv-program-speakers-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: var(--nv-space-8, 1.25rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Avadas standardmarginal på 20 px under kolumnen lägger sig ovanpå sidans
   bottenavstånd. Talarsidans kolumn ska inte ha någon. */
.fusion-body .fusion-layout-column:has(#nv_program_speakers) {
  margin-bottom: 0;
}

/* Lika höga kort per rad: listpunkten är flex så att länken fyller höjden. */
#nv_program_speakers .nv-program-speakers-grid > li {
  display: flex;
}

#nv_program_speakers .nv-program-speaker-card {
  flex: 1 1 auto;
  min-width: 0;
}

#nv_program_speakers .nv-program-speaker-card {
  display: block;
  color: var(--nv-program-ink);
  text-decoration: none;
  transition: transform 180ms ease, box-shadow 180ms ease;
  border-radius: var(--nv-radius-md, 0.75rem);
}

@media (hover: hover) {
  #nv_program_speakers .nv-program-speaker-card:hover {
    box-shadow: var(--nv-shadow-md, 0 12px 32px rgb(33 28 25 / 12%));
    transform: translateY(-4px);
    text-decoration: none !important;
  }
}

#nv_program_speakers .nv-program-speaker-card:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
  text-decoration: none !important;
}

#nv_program_speakers .nv-program-speaker-card:active {
  transform: translateY(0);
}

#nv_program_speakers .nv-program-speaker-image {
  aspect-ratio: 4 / 5;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  margin-bottom: var(--nv-space-5, 0.75rem);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface-muted);
}

#nv_program_speakers .nv-program-speaker-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

#nv_program_speakers .nv-program-speaker-image-placeholder img {
  width: 40%;
  height: 40%;
  object-fit: contain;
  opacity: 0.5;
}

#nv_program_speakers .nv-program-speaker-name {
  display: block;
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: 700;
  line-height: 1.3;
}

/* ==========================================================================
   Bibelläsningsplan — [nv_bible_plan]. Byggguide 38.
   Pixelavstämd 2026-09-12 mot prototypen (index.html #/bibel): elementordning,
   sticky dagväljare, dagbadge, frågepanel och passage-accordion. Passagerna
   återanvänder de globala nv-panel/nv-accordion-btn/nv-accordion-body/
   nv-accordion-icon-klasserna (samma mönster som [nv_faq_list], se avsnitt 5 i
   den här filen) i stället för egna klasser, så rotationen av chevronen på
   <details open> kommer gratis och kräver ingen egen regel här. Ersätter det
   första utkastet, som avvek strukturellt från prototypen (fel elementordning,
   ikonpilar i dagväljaren i stället för sticky bar, platt rubrik i stället för
   badge, punktlista i stället för frågepanel, native-lista i stället för
   löpande verstext).
   ========================================================================== */

#nv_program_bible_plan {
  display: block;
}

#nv_program_bible_plan .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Innehållskolumn. Smalare än nv_program_detail/nv_program_speakers
   (--nv-content-wide, 75rem): bibelläsningsplanen är löpande läsning, inte en
   tvåkolumns hero-layout, och matchar därför samma bredd som nv-prose
   (--nv-content-text, 52rem) på övriga läsvyer. */
#nv_program_bible_plan .nv-program-bible-plan-container {
  max-width: var(--nv-content-text, 52rem);
  margin-inline: auto;
  padding-inline: var(--nv-page-gutter, clamp(1.25rem, 3vw, 2.5rem));
}

/* Header: återlänk, eyebrow, rubrik, ingress, herobild. Ligger på varm botten
   som breder ut sig till viewportens kant (samma knep som
   #nv_program_detail .nv-program-detail-hero-section). */

#nv_program_bible_plan .nv-program-bible-plan-hero-section {
  background: var(--nv-program-surface-warm);
  box-shadow: 0 0 0 100vmax var(--nv-program-surface-warm);
  clip-path: inset(0 -100vmax);
  padding: var(--nv-card-pad, 1.5rem) 0 var(--nv-block-space, 3rem);
}

#nv_program_bible_plan .nv-program-backlink {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-2, 0.375rem);
  margin-bottom: var(--nv-space-9, 1.5rem);
  color: var(--nv-program-ink-muted);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-sm, 0.9375rem);
  font-weight: 600;
  text-decoration: none;
}

#nv_program_bible_plan .nv-program-backlink:hover {
  color: var(--nv-program-primary);
}

#nv_program_bible_plan a:focus-visible,
#nv_program_bible_plan button:focus-visible {
  outline: var(--nv-program-focus);
  outline-offset: var(--nv-focus-offset, 2px);
}

#nv_program_bible_plan .nv-eyebrow {
  display: block;
  margin-bottom: var(--nv-space-3, 0.5rem);
}

#nv_program_bible_plan h1 {
  margin: 0 0 var(--nv-space-5, 0.75rem);
  font-size: var(--nv-text-3xl);
}

#nv_program_bible_plan .nv-program-bible-plan-lede {
  max-width: 42rem;
  color: var(--nv-program-ink-muted);
  font-size: var(--nv-text-base, 1.05rem);
  line-height: var(--nv-leading-lede, 1.5);
}

#nv_program_bible_plan .nv-program-bible-plan-lede p {
  margin: 0 0 var(--nv-space-6, 0.875rem);
}

#nv_program_bible_plan .nv-program-bible-plan-lede p:last-child {
  margin-bottom: 0;
}

#nv_program_bible_plan .nv-program-bible-plan-hero {
  display: block;
  width: 100%;
  height: clamp(14rem, 30vw, 20rem);
  margin-top: var(--nv-space-9, 1.5rem);
  border-radius: var(--nv-radius-lg, 1.25rem);
  object-fit: cover;
}

#nv_program_bible_plan .nv-program-bible-plan-empty {
  padding: var(--nv-space-9, 1.5rem);
  border: 1px dashed var(--nv-program-border-strong);
  border-radius: var(--nv-radius-md, 0.75rem);
  color: var(--nv-program-ink-muted);
}

/* Dagväljare. Sticky under sidhuvudet (.nv-header, min-height 76px, se
   20-components.css avsnitt "Header"), egen vit botten som breder ut sig till
   viewportens kant på samma sätt som hero-sektionen ovan. */

#nv_program_bible_plan .nv-program-bible-plan-nav {
  position: sticky;
  top: 76px;
  z-index: 40;
  background: var(--nv-program-surface);
  box-shadow: 0 0 0 100vmax var(--nv-program-surface);
  clip-path: inset(0 -100vmax);
  border-bottom: 1px solid var(--nv-program-border);
}

#nv_program_bible_plan .nv-program-bible-plan-nav .nv-program-bible-plan-container {
  max-width: 60rem;
  padding-block: var(--nv-space-4, 0.625rem);
}

#nv_program_bible_plan .nv-program-bible-plan-days {
  display: flex;
  gap: var(--nv-space-3, 0.5rem);
  min-width: 0;
  padding: 0.2rem;
  margin: -0.2rem;
  overflow-x: auto;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
  scroll-padding-inline: var(--nv-space-5, 0.75rem);
}

#nv_program_bible_plan .nv-program-bible-plan-day-btn {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
  min-width: 4.5rem;
  min-height: var(--nv-program-control-height, 44px);
  padding: var(--nv-space-3, 0.5rem) var(--nv-space-6, 0.875rem);
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-md, 0.75rem);
  background: var(--nv-program-surface);
  color: var(--nv-program-ink-muted);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  white-space: nowrap;
}

#nv_program_bible_plan .nv-program-bible-plan-day-label {
  font-size: var(--nv-text-2xs, 0.75rem);
  font-weight: 600;
  letter-spacing: var(--nv-tracking-label, 0.06em);
  text-transform: uppercase;
}

#nv_program_bible_plan .nv-program-bible-plan-day-weekday {
  font-size: var(--nv-text-xs, 0.8125rem);
  font-weight: 700;
}

#nv_program_bible_plan .nv-program-bible-plan-day-btn[aria-pressed="true"] {
  border-color: var(--nv-program-primary);
  background: var(--nv-program-primary);
  color: #fff;
}

@media (hover: hover) {
  #nv_program_bible_plan .nv-program-bible-plan-day-btn:not([aria-pressed="true"]):hover {
    border-color: var(--nv-program-primary);
    color: var(--nv-program-primary);
  }
}

/* Vald dag */

#nv_program_bible_plan .nv-program-bible-plan-panel {
  padding-top: var(--nv-space-10, 2rem);
}

#nv_program_bible_plan .nv-program-bible-plan-heading-row {
  display: flex;
  align-items: center;
  gap: var(--nv-space-5, 0.75rem);
  margin-bottom: var(--nv-space-8, 1.25rem);
}

#nv_program_bible_plan .nv-program-bible-plan-badge {
  display: flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 50%;
  background: var(--nv-program-primary);
  color: #fff;
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: 800;
}

#nv_program_bible_plan .nv-program-bible-plan-heading-col {
  min-width: 0;
}

#nv_program_bible_plan .nv-program-bible-plan-weekday {
  margin: 0;
  color: var(--nv-program-primary);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-2xs, 0.75rem);
  font-weight: 700;
  letter-spacing: var(--nv-tracking-label, 0.06em);
  text-transform: uppercase;
}

#nv_program_bible_plan .nv-program-bible-plan-heading-col h2 {
  margin: 0;
  color: var(--nv-program-ink);
}

#nv_program_bible_plan .nv-program-bible-plan-day-empty {
  padding: var(--nv-space-9, 1.5rem);
  border: 1px dashed var(--nv-program-border-strong);
  border-radius: var(--nv-radius-md, 0.75rem);
  color: var(--nv-program-ink-muted);
}

#nv_program_bible_plan .nv-program-bible-plan-reflection {
  max-width: 42rem;
  margin-bottom: var(--nv-space-9, 1.5rem);
  line-height: var(--nv-leading-body, 1.65);
}

#nv_program_bible_plan .nv-program-bible-plan-reflection p {
  margin: 0 0 var(--nv-space-5, 0.75rem);
}

#nv_program_bible_plan .nv-program-bible-plan-reflection p:last-child {
  margin-bottom: 0;
}

/* Frågepanel */

#nv_program_bible_plan .nv-program-bible-plan-questions {
  margin-bottom: var(--nv-space-10, 2rem);
  padding: var(--nv-card-pad, 1.5rem);
  border: 1px solid var(--nv-program-border);
  border-radius: var(--nv-radius-lg, 1.25rem);
  background: var(--nv-program-surface-warm);
}

#nv_program_bible_plan .nv-program-bible-plan-questions-label {
  margin: 0 0 var(--nv-space-6, 0.875rem);
  color: var(--nv-program-ink-muted);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-2xs, 0.75rem);
  font-weight: 700;
  letter-spacing: var(--nv-tracking-label, 0.06em);
  text-transform: uppercase;
}

#nv_program_bible_plan .nv-program-bible-plan-questions-list {
  display: flex;
  flex-direction: column;
  gap: var(--nv-space-6, 0.875rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

#nv_program_bible_plan .nv-program-bible-plan-questions-list li {
  display: flex;
  gap: var(--nv-space-4, 0.625rem);
  align-items: baseline;
  font-weight: 600;
}

#nv_program_bible_plan .nv-program-bible-plan-qmark {
  flex: none;
  color: var(--nv-program-primary);
  font-size: var(--nv-text-base, 1.05rem);
  font-weight: 800;
  line-height: 1;
}

/* Bibeltexter. Panelerna återanvänder nv-panel/nv-accordion-btn/
   nv-accordion-body/nv-accordion-icon rakt av (se avsnitt 5), samma mönster
   som frågor-och-svar i [nv_faq_list]. Endast avståndet i stacken sätts här. */

#nv_program_bible_plan .nv-program-bible-plan-subheading {
  margin: 0 0 var(--nv-space-6, 0.875rem);
  font-family: var(--nv-font-heading, Montserrat, Arial, sans-serif);
  font-size: var(--nv-text-lg, 1.15rem);
  font-weight: 700;
}

#nv_program_bible_plan .nv-program-bible-plan-passages {
  gap: var(--nv-space-5, 0.75rem);
  margin-bottom: var(--nv-space-10, 2rem);
}

#nv_program_bible_plan .nv-program-bible-plan-verses {
  margin: 0;
  line-height: var(--nv-leading-body, 1.65);
}

#nv_program_bible_plan .nv-program-bible-plan-verses sup {
  margin-right: 0.2em;
  color: var(--nv-program-primary);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

#nv_program_bible_plan .nv-program-bible-plan-passage-empty {
  margin: 0;
  color: var(--nv-program-ink-muted);
}

/* Föregående/nästa dag */

#nv_program_bible_plan .nv-program-bible-plan-actions {
  display: flex;
  justify-content: space-between;
  gap: var(--nv-space-7, 1rem);
  padding-top: var(--nv-space-7, 1rem);
  border-top: 1px solid var(--nv-program-border);
}

#nv_program_bible_plan .nv-program-bible-plan-actions button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

@media (max-width: 480px) {
  #nv_program_bible_plan .nv-program-bible-plan-day-btn {
    min-width: 4rem;
  }

  #nv_program_bible_plan .nv-program-bible-plan-actions {
    flex-wrap: wrap;
  }

  #nv_program_bible_plan .nv-program-bible-plan-actions button {
    flex: 1 1 auto;
    justify-content: center;
  }
}
