/* Shared visual rules for every redesigned page. Loaded after layout styles.
   Existing Elementor, Gutenberg and plugin classes are adapters to these rules;
   source HTML and the original comparison view remain unchanged. */

@font-face {
  font-family: ADInter;
  src: url('assets/inter-var.woff2') format('woff2');
  font-weight: 100 900;
  font-display: swap;
}

:root {
  color-scheme: light;
  --ad-surface: #fff;
  --ad-group: #f4f5f7;
  --ad-ink: #171b20;
  --ad-muted: #60666f;
  --ad-line: #8a919c;
  --ad-card-line: #d9dde2;
  --ad-gold: #f5d752;
  --ad-gold-hover: #efc93b;
  --ad-gold-active: #e6bc2a;
  --ad-night: #161826;
  --ad-focus: #145ac8;
  --ad-font: system-ui, -apple-system, BlinkMacSystemFont, ADInter, sans-serif;
  --ad-max: 1200px;
  --ad-pad: clamp(1.25rem, 4vw, 3.5rem);
  --ad-radius: 1.5rem;
  --ad-radius-small: 1rem;
  --ad-pill-radius: 999px;
  --ad-heading-weight: 650;
  --ad-h1-size: clamp(2.35rem, 4.5vw, 3.9rem);
  --ad-h1-line: 1.1;
  --ad-h2-size: clamp(1.7rem, 3vw, 2.6rem);
  --ad-h2-line: 1.2;
  --ad-h3-size: 1.25rem;
  --ad-h3-line: 1.3;
  --ad-control-height: 3rem;
  --ad-button-font-size: 1rem;
  --ad-button-line: 1.45;
  --ad-button-weight: 600;
  --ad-button-padding: .75rem 1.25rem;
  --ad-button-small-size: .8125rem;
  --ad-button-small-padding: .75rem 1rem;
  --ad-card-padding: clamp(1.25rem, 3vw, 2rem);
  --ad-card-padding-compact: 1rem 1.25rem;
  --ad-field-padding: .8rem .95rem;
  --ad-field-radius: .75rem;
  --ad-field-line: 1.5;
  --ad-textarea-height: 10rem;
  /* Legacy components consume the same palette and page dimensions. */
  --rt-papir: var(--ad-surface);
  --rt-kort: var(--ad-surface);
  --rt-stripe: var(--ad-group);
  --rt-blekk: var(--ad-ink);
  --rt-sekundaer: var(--ad-muted);
  --rt-dempet: var(--ad-muted);
  --rt-dempet-alt: var(--ad-muted);
  --rt-linje: var(--ad-card-line);
  --rt-pad: var(--ad-pad);
  --rt-maxw: var(--ad-max);
}

/* Important component rules in this layer take precedence over the original
   WordPress styles. :where keeps adapters weak so explicit variants win. */

@layer roalds-components {
html { scroll-padding-top: 2rem; }

body {
  background: var(--ad-surface) !important;
  color: var(--ad-ink);
  font: 400 1.0625rem/1.65 var(--ad-font) !important;
  -webkit-font-smoothing: antialiased;
}

body #content { font-family: var(--ad-font); max-width: 100%; padding: 0; }

body :is(.rtcp-page, .rtgp-info, .rtgp-purchase-form) { font-family: var(--ad-font) !important; }

body :is(#content, main.site-main) img { max-width: 100% !important; height: auto; }

body :is(#content, main.site-main) :is(h1, h2, h3) {
  font-family: var(--ad-font) !important;
  font-weight: var(--ad-heading-weight) !important;
  text-wrap: balance;
  overflow-wrap: anywhere;
}

body :is(#content, main.site-main) h1 {
  font-size: var(--ad-h1-size) !important;
  line-height: var(--ad-h1-line) !important;
  letter-spacing: -.045em !important;
}

body :is(#content, main.site-main) h2 {
  font-size: var(--ad-h2-size) !important;
  line-height: var(--ad-h2-line) !important;
  letter-spacing: -.035em !important;
}

body :is(#content, main.site-main) h3 {
  font-size: var(--ad-h3-size) !important;
  line-height: var(--ad-h3-line) !important;
  letter-spacing: -.02em !important;
}

/* Some existing card titles are paragraphs; give them the same title role. */

body #content :where(.rt-ks-tittel, .rt-pr-sk-tittel, .rt-kv-tittel, .rt-pm-steg,
  .rt-oo-instr-navn, .rt-tr-tittel, .rt-pr-navn) {
  font: var(--ad-heading-weight) var(--ad-h3-size)/var(--ad-h3-line) var(--ad-font) !important;
  letter-spacing: -.02em !important;
  color: var(--ad-card-title, var(--ad-ink)) !important;
  text-transform: none !important;
}

body #content :is(p, li, dd) { overflow-wrap: anywhere; }
}

@layer roalds-components {
/* Buttons: shared geometry, with primary/outline/selected semantic variants.
   Never select bare .button: cookie controls and image viewers also use it. */

body :is(#content, .rtgp-purchase-form, .rt-next-course-dialog) :where(.elementor-button, .wp-block-button__link,
  .rh-button, .primary-button, .closing-button, .rt-btn-gull, .rt-btn-gull-liten,
  .rt-vl-avbryt, .rt-pr-fane, .rt-kal-knapp, .rt-pm-sidekort-tlf,
  .rtcp-page .button, .rt-kursfilter button, .single_add_to_cart_button,
  [data-rt="cta-knapper"] a, .rt-nestekurs > a, .rt-next-course-action,
  .rt-next-dialog-actions button) {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  box-sizing: border-box !important;
  min-height: var(--ad-control-height) !important;
  max-width: 100%;
  min-width: 0;
  padding: var(--ad-button-padding) !important;
  border-radius: var(--ad-pill-radius) !important;
  font: var(--ad-button-weight) var(--ad-button-font-size)/var(--ad-button-line) var(--ad-font) !important;
  text-align: center;
  text-decoration: none !important;
  white-space: normal !important;
  overflow-wrap: anywhere;
  transition: background .16s, border-color .16s, transform .16s;
}

body :is(#content, .rtgp-purchase-form, .rt-next-course-dialog) :where(.rt-btn-gull, .rt-btn-gull-liten, .rh-button, .primary-button,
  .closing-button, .rt-pm-ga .wp-block-button__link, .single_add_to_cart_button,
  .rtcp-page .button:not(.outline):not([aria-pressed="true"]),
  .rt-next-course > .rt-next-course-action, .rt-next-dialog-actions button[type="submit"]) {
  border: 1px solid var(--ad-gold) !important;
  background: var(--ad-gold) !important;
  color: var(--ad-night) !important;
}

body :is(#content, .rtgp-purchase-form, .rt-next-course-dialog) :where(.rt-btn-gull, .rt-btn-gull-liten, .rh-button, .primary-button,
  .closing-button, .rt-pm-ga .wp-block-button__link, .single_add_to_cart_button,
  .rtcp-page .button:not(.outline):not([aria-pressed="true"]),
  .rt-next-course > .rt-next-course-action, .rt-next-dialog-actions button[type="submit"]):hover {
  background: var(--ad-gold-hover) !important;
  border-color: var(--ad-gold-hover) !important;
}

body :is(#content, .rtgp-purchase-form, .rt-next-course-dialog) :where(.rt-btn-gull, .rt-btn-gull-liten, .rh-button, .primary-button,
  .closing-button, .rt-pm-ga .wp-block-button__link, .single_add_to_cart_button,
  .rtcp-page .button:not(.outline):not([aria-pressed="true"]),
  .rt-next-course > .rt-next-course-action, .rt-next-dialog-actions button[type="submit"]):active {
  background: var(--ad-gold-active) !important;
}

body :is(#content, .rt-next-course-dialog) :where(.rt-vl-avbryt, .rt-pr-fane, .rt-kal-knapp, .rt-pm-sidekort-tlf,
  .rt-kursfilter button, .rt-nestekurs > a, .rtcp-page .button.outline:not([aria-pressed="true"]),
  .rt-next-course-alternative .rt-next-course-action, .rt-next-dialog-actions button:not([type="submit"])) {
  border: 1px solid var(--ad-line) !important;
  background: var(--ad-surface) !important;
  color: var(--ad-ink) !important;
}

body :is(#content, .rt-next-course-dialog) :where(.rt-vl-avbryt, .rt-pr-fane, .rt-kal-knapp, .rt-pm-sidekort-tlf,
  .rt-kursfilter button, .rt-nestekurs > a, .rtcp-page .button.outline:not([aria-pressed="true"]),
  .rt-next-course-alternative .rt-next-course-action, .rt-next-dialog-actions button:not([type="submit"])):hover { background: var(--ad-group) !important; }

body #content :is(.rt-pr-fane.er-valgt, .rt-kursfilter button.er-valgt,
  .rtcp-page .button[aria-pressed="true"]) {
  background: var(--ad-night) !important;
  border-color: var(--ad-night) !important;
  color: var(--ad-surface) !important;
}

/* Full courses retain their visible status and existing event behaviour. */

body #content .rt-kal-knapp.er-fullt { background: var(--ad-group) !important; color: var(--ad-muted) !important; }

body :is(#content, .rtgp-purchase-form) :is(button:disabled, input:disabled, select:disabled, textarea:disabled) { cursor: not-allowed; }
}

@layer roalds-components {
body :is(a, button, input, textarea, select, summary):focus-visible {
  outline: 3px solid var(--ad-focus) !important;
  outline-offset: 4px !important;
}

body :is(header, footer, .rh-package, .rt-closing26, .rtcp-page .closing,
  .rt-native-hero .elementor-element-1ba9f80) :is(a, button, summary):focus-visible { outline-color: var(--ad-gold) !important; }

body header.elementor-241 .rt-student-links a:focus-visible { outline-offset: 0 !important; }
}

/* Campaign artwork is shown in full, including text embedded in the image. */

.rt-campaign-shell {
  box-sizing: border-box;
  width: min(1200px, calc(100% - 2 * var(--ad-pad)));
  margin-inline: auto;
  padding-block: 48px 64px;
}

.rt-campaign-intro { max-width: 850px; margin-bottom: 44px; }

.rt-campaign-page #content .rt-campaign-eyebrow { margin: 0 0 14px; font-size: .75rem; font-weight: 650; letter-spacing: .1em; text-transform: uppercase; color: var(--ad-muted); }

.rt-campaign-intro h1 { margin: 0 0 16px; }

.rt-campaign-intro > p:not(.rt-campaign-eyebrow) { margin: 0; color: var(--ad-muted); }

.rt-campaign-benefits { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-top: 20px; font-size: .875rem; }

.rt-campaign-benefits > * { color: var(--ad-muted); }

.rt-campaign-benefits a { text-decoration: underline; text-underline-offset: 4px; }

.rt-campaign-section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 24px; }

.rt-campaign-section-heading h2 { margin: 0; }

.rt-campaign-section-heading > a { color: var(--ad-ink); font-size: .875rem; text-decoration: underline; text-underline-offset: 4px; }

.rt-campaign-cards { display: grid; gap: 28px; }

.rt-campaign-card, .rt-campaign-detail { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); overflow: hidden; border: 1px solid var(--ad-card-line); border-radius: 24px; background: var(--ad-surface); }

.rt-campaign-visual { display: grid; place-items: center; min-width: 0; margin: 0; padding: 24px; background: var(--ad-group); }

.rt-campaign-visual > a { display: grid; place-items: center; width: 100%; height: 100%; }

body #content .rt-campaign-visual img { display: block; width: 100%; height: auto; max-height: 620px; object-fit: contain; }

.rt-campaign-card-body, .rt-campaign-detail-body { min-width: 0; padding: clamp(24px, 3.5vw, 44px); }

.rt-campaign-badge { display: inline-block; padding: 5px 12px; border-radius: 999px; background: var(--ad-gold); color: var(--ad-ink); font-size: .75rem; font-weight: 650; }

@layer roalds-components {
  body #content .rt-campaign-card h3 { margin: 16px 0 !important; font-size: clamp(1.6rem, 2.5vw, 2.25rem) !important; line-height: 1.2 !important; }
}

.rt-campaign-pricing { display: flex; flex-direction: column; gap: 2px; margin-bottom: 22px; }

.rt-campaign-before { color: var(--ad-muted); font-size: .875rem; }

.rt-campaign-price { color: var(--ad-ink); font-size: clamp(2rem, 3vw, 2.75rem); font-weight: 700; line-height: 1.25; letter-spacing: -.04em; }

.rt-campaign-label { margin: 0 0 10px; font-weight: 650; font-size: .875rem; }

.rt-campaign-includes ul, .rt-campaign-content .checklist { list-style: none; margin: 0; padding: 0; }

.rt-campaign-includes li, .rt-campaign-content .checklist li { position: relative; margin: 0; padding: 4px 0 4px 24px; color: var(--ad-muted); font-size: .9375rem; }

.rt-campaign-includes li::before, .rt-campaign-content .checklist li::before { content: '✓'; position: absolute; top: 4px; left: 0; color: var(--ad-ink); font-weight: 650; }

.rt-campaign-terms { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 22px 0; color: var(--ad-muted); font-size: .8125rem; }

.rt-campaign-card-body > .rt-btn-gull { display: inline-flex; align-items: center; justify-content: center; gap: 24px; }

.rt-campaign-no-image { display: grid; gap: 16px; padding: 48px 24px; color: var(--ad-muted); text-align: center; }

.rt-campaign-no-image span { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }

.rt-campaign-no-image strong { color: var(--ad-ink); font-size: 2rem; line-height: 1.2; }

.rt-campaign-card.is-sold-out .rt-campaign-image { filter: grayscale(1); }

.rt-campaign-card.is-sold-out .rt-campaign-badge { background: var(--ad-group); }

.rt-campaign-help { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-top: 40px; padding: 28px 32px; border-radius: 20px; background: var(--ad-group); }

@layer roalds-components {
  body #content .rt-campaign-help h2 { margin: 0 0 8px !important; font-size: 1.35rem !important; }
}

.rt-campaign-help p { margin: 0; color: var(--ad-muted); font-size: .9375rem; }

.rt-campaign-help-actions { display: flex; flex-wrap: wrap; gap: 12px; flex-shrink: 0; }

.rt-campaign-single { padding-top: 32px; }

.rt-campaign-back { display: inline-block; margin-bottom: 24px; color: var(--ad-muted); font-size: .875rem; text-decoration: underline; text-underline-offset: 4px; }

.rt-campaign-detail h1 { margin: 0 0 24px; }

@layer roalds-components {
  body #content .rt-campaign-detail h1 { font-size: clamp(2rem, 3.2vw, 2.75rem) !important; }
}

@layer roalds-components {
  body #content .rt-campaign-content h2 { font-size: 1.125rem !important; margin: 0 0 12px !important; letter-spacing: -.015em !important; }
}

.rt-campaign-detail .rt-ka-kjop { margin-top: 28px; padding: 24px 0 0; border: 0; border-top: 1px solid var(--ad-card-line); border-radius: 0; box-shadow: none; background: transparent; }

.rt-campaign-detail .rt-ka-priser { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }

.rt-campaign-detail .rt-ka-forpris { color: var(--ad-muted); font-size: .875rem; }

.rt-campaign-detail .rt-ka-pris { color: var(--ad-ink); font-size: 2.5rem; line-height: 1.2; font-weight: 700; letter-spacing: -.04em; }

.rt-campaign-detail .rt-ka-detaljer { margin: 12px 0 20px; color: var(--ad-muted); font-size: .8125rem; }

.rt-campaign-delbetaling { display: inline-block; margin-top: 20px; color: var(--ad-muted); font-size: .875rem; text-decoration: underline; text-underline-offset: 4px; }

.rt-campaign-detail.has-no-image { grid-template-columns: minmax(0, 1fr); }

@media (max-width: 760px) {
  .rt-campaign-shell { width: calc(100% - 40px); padding-block: 32px 40px; }
  .rt-campaign-intro { margin-bottom: 32px; }
  .rt-campaign-benefits { gap: 8px 16px; font-size: .8125rem; }
  .rt-campaign-section-heading { align-items: flex-start; flex-direction: column; gap: 10px; }
  .rt-campaign-card, .rt-campaign-detail { grid-template-columns: minmax(0, 1fr); border-radius: 20px; }
  .rt-campaign-visual { padding: 20px; }
  body #content .rt-campaign-visual img { max-height: 400px; }
  .rt-campaign-card-body, .rt-campaign-detail-body { padding: 24px; }
  .rt-campaign-card-body > .rt-btn-gull { width: 100%; }
  .rt-campaign-help { align-items: flex-start; flex-direction: column; padding: 24px; }
  .rt-campaign-help-actions { width: 100%; }
  .rt-campaign-help-actions > * { flex: 1 1 auto; }
}
