.max-h-\[85vh\]{max-height:85vh}.max-h-\[94vh\]{max-height:94vh}.max-h-\[calc\(85vh-6rem\)\]{max-height:calc(85vh - 6rem)}.max-h-\[calc\(85vh-7rem\)\]{max-height:calc(85vh - 7rem)}.max-h-\[calc\(94vh-2rem\)\]{max-height:calc(94vh - 2rem)}.w-\[96vw\]{width:96vw}.max-w-\[500px\]{max-width:500px}.max-w-\[96vw\]{max-width:96vw}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[26px\]{font-size:26px}.text-\[9px\]{font-size:9px}.tracking-\[0\.10em\]{letter-spacing:.1em}.tracking-\[0\.12em\]{letter-spacing:.12em}.\!delay-\[0ms\]{transition-delay:0ms!important}.\!duration-\[0ms\]{transition-duration:0ms!important}.hover\:z-\[40\]:hover{z-index:40}.hover\:z-\[30\]:hover{z-index:30}.hover\:z-\[20\]:hover{z-index:20}@media (min-width:640px){.sm\:max-w-\[1200px\]{max-width:1200px}}@media (min-width:1024px){.lg\:w-\[270px\]{width:270px}}@media (min-width:1280px){.xl\:w-\[315px\]{width:315px}.xl\:grid-cols-\[repeat\(2\2c minmax\(0\2c 18rem\)\)\]{grid-template-columns:repeat(2,minmax(0,18rem))}}
/* ─── tokens: public --dgm-* (the site may set them), private --edp-* aliases with the portal's defaults; the CV dialog
   is teleported to the body element, so it carries the same tokens.
   No angle bracket followed by a letter may appear in this style block or in an attribute: the compiler client's
   pre-check reads it as a tag and then skips compiling the whole widget (hence the escaped syntax string below) ─── */
@property --edp-header { syntax: '\3c length>'; inherits: true; initial-value: 0px; }
/* motion tokens: one curve for arrivals, the house curve for hovers and exits; routine changes 200 ms, feedback 160 ms.
   Also on the dialogs' overlays (direct children of the body element): their exit animation is what keeps a closing
   dialog on screen until it has faded */
.edp, .edp-dialog, .edp-price-dialog {
    --edp-ease: cubic-bezier(.2, .7, .2, 1);
    --edp-ease-out: cubic-bezier(.16, 1, .3, 1);
    --edp-dur: 200ms;
    --edp-dur-fast: 160ms;
}
body > div:has(> .edp-dialog), body > div:has(> .edp-price-dialog) {
    --edp-ease: cubic-bezier(.2, .7, .2, 1);
    --edp-ease-out: cubic-bezier(.16, 1, .3, 1);
    --edp-dur: 200ms;
    --edp-dur-fast: 160ms;
}
.edp, .edp-dialog, .edp-price-dialog {
    --edp-navy: var(--dgm-navy, #003e52);
    --edp-ink: var(--dgm-ink, #284b59);
    --edp-mute: var(--dgm-mute, #4f6b78);
    --edp-blue: var(--dgm-blue, #00abe3);
    --edp-blue-hover: var(--dgm-blue-hover, #0096c9);
    --edp-red: var(--dgm-red, #b42318);
    --edp-band: var(--dgm-band, #edf7fc);
    --edp-band-2: var(--dgm-band-2, #e2f3fa);
    --edp-line: var(--dgm-line, rgba(0, 62, 82, .13));
    --edp-line-hi: rgba(0, 171, 227, .5);
    --edp-lift: 0 1px 2px rgba(0, 40, 60, .06), 0 18px 36px -22px rgba(0, 40, 60, .38);
    --edp-r: var(--dgm-radius, 16px);
    --edp-r-s: var(--dgm-radius-s, 10px);
    --edp-font-display: var(--dgm-font-display, "Heading-Font", "Inter Tight", "Theme-Font", Inter, system-ui, sans-serif);
    --edp-font: var(--dgm-font, "Theme-Font", Inter, system-ui, sans-serif);
    --edp-wide: var(--dgm-wide, 1152px);
    --edp-text: var(--dgm-text, 760px);
    --edp-side: 340px;
    --edp-tabs-h: 52px;
    --edp-gut: 24px;
    /* the floating header: free space at the top and how far the hero pulls itself up under it. Only where the page
       says so (the portal theme sets --ak-over, a page may set --dgm-header); everywhere else 0, the hero starts flush
       under whatever stands above it and the tab bar pins at the very top */
    --edp-header: var(--dgm-header, var(--ak-over, 0px));
    --edp-pull: var(--dgm-header-pull, var(--edp-header));
    /* the portal's header while scrolled: 70 px, 64 px below 1180, 60 px below 720 (the hook measures the real one);
       with no header space the bar pins at the very top */
    --edp-head-px: 70px;
    --edp-sticky: var(--dgm-sticky-top, min(var(--edp-head-px), var(--edp-header) * 100));
    --edp-sticky-now: var(--edp-sticky);
    /* the site's type scale (theme.css): h1 28 … 52, h2 22 … 28, h3 18 … 20, lead 17 … 19 */
    --edp-h1: clamp(1.75rem, 1.1rem + 2.7vw, 3.25rem);
    --edp-h2: clamp(1.375rem, 1.2rem + .6vw, 1.75rem);
    --edp-h3: clamp(1.125rem, 1.05rem + .3vw, 1.25rem);
    --edp-lead: clamp(1.0625rem, 1rem + .25vw, 1.1875rem);
    --edp-track: -.022em;
    --edp-measure: 62ch;
    /* one focus ring everywhere: navy (3:1 on white and on the band, unlike the brand blue) */
    --edp-ring: 2px solid var(--edp-navy);
    /* roles of the accent: coloured text (links), marks (icons, bullets, the selected tab), fills (the primary button)
       and the text on a fill; edges of outlined controls and fields; shadows and the dialog's overlay. The portal
       draws all of them from its blue and navy; the default look sets them from the event's colour */
    --edp-link: var(--edp-blue);
    /* small coloured text that must read (the tag line): the brand blue taken half way to the navy, 4.8:1 on the band */
    --edp-tag: color-mix(in srgb, var(--edp-blue) 50%, var(--edp-navy));
    --edp-mark: var(--edp-blue);
    --edp-fill: var(--edp-blue);
    --edp-fill-hover: var(--edp-blue-hover);
    --edp-on-fill: #fff;
    --edp-select: rgba(0, 171, 227, .22);
    --edp-edge: rgb(0 62 82 / .35);
    --edp-field: rgb(0 62 82 / .55);
    --edp-shade-bar: rgb(0 40 60 / .5);
    --edp-shade-dialog: rgb(0 30 40 / .45);
}
@media (max-width: 1179.98px) { .edp { --edp-head-px: 64px; } }
@media (max-width: 719.98px) { .edp { --edp-head-px: 60px; } }
@media (max-width: 639.98px) { .edp { --edp-gut: 16px; } }
/* without the hook: the portal's header slides away while the page scrolls down, the pinned bar and card follow it */
:root:has(.ak-head.is-hidden) .edp :is(.edp-tabs, .edp-card) { --edp-sticky-now: 0px; }
/* the default look inside a page column: the site's card radius (the hook marks it; edge to edge it stays square) */
.edp--default[data-edp-inset] { border-radius: var(--edp-r); overflow: clip; }

/* ─── motion ─── */
@keyframes edp-rise { from { opacity: 0; transform: translateY(8px); } }
@keyframes edp-fade-in { from { opacity: 0; } }
@keyframes edp-fade-out { to { opacity: 0; } }
@keyframes edp-card-in { from { opacity: 0; transform: translateY(8px) scale(.98); } }
@keyframes edp-card-out { to { opacity: 0; transform: translateY(4px) scale(.98); } }

/* ─── base ─── */
.edp { position: relative; overflow-x: clip; background: #fff; color: var(--edp-ink); font-family: var(--edp-font); font-size: 16px; font-weight: 400; line-height: 1.6; text-align: left; caret-color: var(--edp-navy); accent-color: var(--edp-fill); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
.edp *, .edp *::before, .edp *::after { box-sizing: border-box; }
.edp :where(h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure, blockquote) { margin: 0; }
.edp :where(ul.edp-plain, ol.edp-plain) { padding: 0; list-style: none; }
.edp :where(img, video) { display: block; max-width: 100%; }
.edp :where(button) { margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
.edp :where(a, button, summary, video, input, [tabindex]):focus-visible { outline: var(--edp-ring); outline-offset: 2px; border-radius: 4px; }
.edp ::selection { background: var(--edp-select); color: var(--edp-navy); }
.edp-wrap { width: min(var(--edp-wide), 100% - 2 * var(--edp-gut)); margin-inline: auto; }
.edp-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* office texts: the "@" of a masked address is drawn here until the hook restores the text */
.edp .ww-at { margin-inline: .08em; font-size: .88em; font-weight: inherit; line-height: 1; vertical-align: -.02em; }
/* inside running text the sign is part of the word: inline (the icon font makes it a box), no side space, so a linked
   address keeps one unbroken underline */
.edp .edp-prose .ww-at { display: inline; margin-inline: 0; }
/* the host gives the page's first element 8 px of top padding (v2.css); the hero runs to the top edge instead */
body #crm__widgets > :is(.event-container, custom-compiled-plugin-element):first-child:has(.edp-hero) { padding-top: 0; }

/* ─── hero: under the floating header, text on the pale band at the left, the course picture at the right ─── */
.edp-hero { position: relative; z-index: 0; isolation: isolate; container-type: inline-size; margin-top: calc(-1 * var(--edp-pull)); padding-top: var(--edp-header); background: var(--edp-band); color: var(--edp-navy); }
.edp-hero__media { position: absolute; z-index: 0; top: 0; right: 0; bottom: 0; width: var(--edp-media-w, 50%); overflow: hidden; background: var(--edp-band-2); }
.edp-hero__img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 45%; }
/* the scrim: the band runs into the picture from the left (white to transparent, as the topic heroes) */
.edp-hero__media::before { content: ""; position: absolute; z-index: 1; inset: 0; pointer-events: none; background: linear-gradient(90deg, var(--edp-band) 0%, color-mix(in srgb, var(--edp-band) 88%, transparent) 14%, color-mix(in srgb, var(--edp-band) 40%, transparent) 34%, color-mix(in srgb, var(--edp-band) 0%, transparent) 58%); }
/* legibility at scroll 0: the short light fade under the header (overlay.css gives photo heroes the same) */
/* the promo video: below 1024 at the top of the first tab, from 1024 as a card in the hero (see the 1024 query) */
.edp .edp-hero__video { display: none; }
.edp-hero__media::after { content: ""; position: absolute; z-index: 1; inset: 0 0 auto; height: calc(var(--edp-header) * 1.65); pointer-events: none; background: linear-gradient(180deg, color-mix(in srgb, var(--edp-band) 90%, transparent) 0%, color-mix(in srgb, var(--edp-band) 82%, transparent) 55%, color-mix(in srgb, var(--edp-band) 0%, transparent) 100%); }
.edp-hero__inner { position: relative; z-index: 2; display: flex; align-items: center; min-height: 480px; padding-block: 48px 64px; }
.edp-hero__copy { width: 100%; max-width: 620px; }
.edp-hero--plain .edp-hero__copy { max-width: var(--edp-text); }
/* the display headline as theme.css sets the portal's heroes: 800, line-height 1.04, -.022em, word spacing .06em */
.edp .edp-h1 { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h1); font-weight: 800; line-height: 1.04; letter-spacing: var(--edp-track); word-spacing: .06em; text-wrap: balance; -webkit-hyphens: manual; hyphens: manual; overflow-wrap: break-word; }
.edp .edp-h1--long { font-size: clamp(1.625rem, 1.15rem + 1.9vw, 2.625rem); line-height: 1.1; }
@supports (width: 1cqi) {
    .edp .edp-hero .edp-h1 { font-size: clamp(1.75rem, 1.1rem + 2.7cqi, 3.25rem); }
    .edp .edp-hero .edp-h1--long { font-size: clamp(1.625rem, 1.15rem + 1.9cqi, 2.625rem); }
}
.edp .edp-lead { margin-top: 16px; color: var(--edp-ink); font-size: var(--edp-lead); line-height: 1.55; text-wrap: pretty; }

/* the past notice: calm, on white, above the headline */
/* the tag line over the headline: the event's kind in a readable accent (4.5:1 on the band), normal case, two lines at most */
.edp .edp-kicker { display: -webkit-box; max-width: 100%; margin: 0 0 12px; overflow: hidden; color: var(--edp-tag); font-family: var(--edp-font); font-size: 15px; font-weight: 600; line-height: 1.4; letter-spacing: 0; text-transform: none; text-wrap: balance; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.edp-notice { display: flex; align-items: flex-start; gap: 12px; width: fit-content; max-width: 100%; margin-bottom: 24px; padding: 12px 16px; border: 1px solid var(--edp-line); border-radius: var(--edp-r-s); background: #fff; color: var(--edp-navy); font-size: 15px; line-height: 1.5; }
.edp-notice > i { flex: none; margin-top: 3px; color: var(--edp-mark); }
.edp .edp-notice a { color: var(--edp-navy); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }

/* ─── facts: one line of plain text with small icons, not a box; states in the portal's tones (events.css) ─── */
.edp-facts { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-top: 24px; color: var(--edp-navy); font-size: 16px; font-weight: 500; line-height: 1.45; }
.edp-fact { display: inline-flex; align-items: baseline; gap: 9px; }
.edp-fact > i { flex: none; width: 1.1em; color: var(--edp-mark); text-align: center; }
.edp-fact--danger { color: var(--edp-red); font-weight: 600; }
.edp-fact--planning, .edp-fact--past { color: var(--edp-mute); font-weight: 600; }
.edp-fact--note { font-weight: 600; }
.edp-fact--danger > i, .edp-fact--planning > i, .edp-fact--past > i { color: inherit; }

/* ─── buttons: one filled primary, an outlined secondary, quiet text buttons; no glow (the portal strips button
   shadows), colour and a 1 px lift on hover ─── */
.edp-actions { --edp-quiet-pad: 12px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 28px; }
/* the quiet buttons as one group whose text starts on the column's edge, beside the buttons or on a line of their own */
.edp-actions__more { display: flex; flex-wrap: wrap; gap: 4px; margin-inline: calc(-1 * var(--edp-quiet-pad)); }
.edp .edp-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 12px 22px; border: 1px solid transparent; border-radius: var(--edp-r-s); font-family: var(--edp-font); font-size: 16px; font-weight: 700; line-height: 1.2; text-align: center; text-decoration: none; white-space: nowrap; cursor: pointer; transition: background-color var(--edp-dur-fast) ease, border-color var(--edp-dur-fast) ease, color var(--edp-dur-fast) ease, transform var(--edp-dur-fast) var(--edp-ease); }
.edp .edp-btn > i { flex: none; font-size: 15px; }
.edp .edp-btn--primary { background: var(--edp-fill); color: var(--edp-on-fill); }
.edp .edp-btn--primary:hover { background: var(--edp-fill-hover); color: var(--edp-on-fill); transform: translateY(-1px); }
.edp .edp-btn--outline { border-color: var(--edp-edge); background: #fff; color: var(--edp-navy); }
.edp .edp-btn--outline:hover { border-color: var(--edp-navy); color: var(--edp-navy); }
.edp .edp-btn--outline > i { color: var(--edp-mark); }
.edp .edp-btn--quiet { min-height: 44px; padding: 10px var(--edp-quiet-pad, 12px); background: transparent; color: var(--edp-navy); font-weight: 600; }
.edp .edp-btn--quiet > i { color: var(--edp-mark); }
/* the hero's links: the programme (a list: it opens the tab) and the two PDF downloads (a file mark), in the regular
   weight at 18 px so they hold their own beside the semibold label */
.edp .edp-actions .edp-btn--quiet { gap: 8px; }
.edp .edp-actions .edp-btn--quiet > i { font-size: 18px; }
.edp .edp-btn--quiet:hover { background: color-mix(in srgb, var(--edp-mark) 10%, transparent); color: var(--edp-navy); }
.edp .edp-btn--block { width: 100%; }
.edp .edp-btn:focus-visible { outline: var(--edp-ring); outline-offset: 2px; border-radius: var(--edp-r-s); }

/* ─── who runs it: the lead group under the buttons, the people as the speakers tab shows them (portrait, name with
   title, institution), at most four, as wide as the text column; on phones one under the other, names in full ─── */
.edp-leads { margin-top: 28px; padding-top: 14px; border-top: 1px solid var(--edp-line); }
/* the label and the link to everyone share one line */
.edp-leads__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 16px; min-height: 36px; }
.edp .edp-leads__label { color: var(--edp-mute); font-size: 13px; font-weight: 600; line-height: 1.4; }
.edp .edp-leads__more { font-size: 14px; }
/* the link to everyone in the readable accent (4.5:1 on the band at every width; the brand blue is not) */
.edp .edp-leads .edp-leads__more { color: var(--edp-tag); }
/* one person takes the whole row; two side by side; tops aligned when an institution wraps */
.edp-leads__people { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 248px), 1fr)); align-items: start; gap: 12px 24px; margin-top: 8px; }
.edp-leads .edp-who { align-items: flex-start; }
.edp-leads .edp-who > .edp-avatar { margin-top: 2px; }
/* the portraits stand clear of the band and the picture: a white ring and a fine edge in the accent */
.edp-leads .edp-avatar { background: #fff; box-shadow: 0 0 0 2px #fff, 0 0 0 3px color-mix(in srgb, var(--edp-mark) 35%, transparent); }
@media (max-width: 639.98px) {
    /* phones: the same people, one under the other, the full name wrapping where it must (never cut), the institution
       below it; the label and the link to everyone on one line above */
    .edp-leads { margin-top: 16px; padding-top: 4px; }
    .edp-leads__people { grid-template-columns: minmax(0, 1fr); gap: 10px; margin-top: 4px; }
    .edp-leads .edp-who__name { line-height: 1.3; }
    .edp-leads .edp-who__org { line-height: 1.35; }
}

/* ─── layout: one 1152 column. From 1024 px one grid: the tab bar across the column, the panel and the sections after
   it in the main column (760), the card beside both (340). The extra height of a tall card goes to the last row, so
   the sections always follow the panel at the same distance and the card never hangs out of the widget ─── */
.edp-body { padding-block: 48px 80px; }
.edp-main, .edp-side, .edp-after, .edp-tabarea { min-width: 0; }
@media (min-width: 1024px) {
    .edp-main { display: grid; grid-template-columns: minmax(0, 1fr) var(--edp-side); grid-template-rows: auto auto 1fr; column-gap: max(40px, 100% - var(--edp-text) - var(--edp-side)); }
    /* the tab area (bar + panel) is its own box on both rows, so the bar lets go when the panel ends */
    .edp-tabarea { display: grid; grid-column: 1 / -1; grid-row: 1 / 3; grid-template-columns: subgrid; grid-template-rows: subgrid; }
    .edp-tabs { grid-column: 1 / -1; grid-row: 1; }
    .edp-panels { grid-column: 1; grid-row: 2; min-width: 0; }
    .edp-side { grid-column: 2; grid-row: 2 / 4; padding-top: 40px; }
    .edp-after { grid-column: 1; grid-row: 3; align-self: start; }
}

/* ─── tabs: a calm text bar, pinned under the header while its panel is in view. The list keeps 4 px around the tabs
   so the focus ring is never clipped; the tab text still starts on the column's edge ─── */
.edp-tabs { position: sticky; top: var(--edp-sticky-now); z-index: 30; background: #fff; box-shadow: inset 0 -1px 0 var(--edp-line); transition: top var(--edp-dur) var(--edp-ease); }
.edp-tabs__list { position: relative; display: flex; gap: 16px; margin-inline: -10px; padding: 4px; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; }
.edp-tabs__list::-webkit-scrollbar { display: none; }
.edp .edp-tab { position: relative; flex: none; display: inline-flex; align-items: center; min-height: calc(var(--edp-tabs-h) - 8px); padding: 2px 6px 0; border-radius: 6px; color: var(--edp-mute); font-family: var(--edp-font); font-size: 16px; font-weight: 600; line-height: 1.25; text-decoration: none; white-space: nowrap; transition: color var(--edp-dur-fast) ease; }
/* the underline under the text only, on the bar's hairline */
.edp .edp-tab::after { content: ""; position: absolute; left: 6px; right: 6px; bottom: -4px; height: 2px; border-radius: 2px 2px 0 0; background: var(--edp-mark); transform: scaleX(0); transition: transform var(--edp-dur) var(--edp-ease); }
.edp .edp-tab:hover, .edp .edp-tab[aria-selected="true"] { color: var(--edp-navy); }
.edp .edp-tab[aria-selected="true"]::after { transform: none; }
.edp .edp-tab:focus-visible { outline: var(--edp-ring); outline-offset: 2px; border-radius: 6px; }
/* without the runtime (and until the hook runs) the first tab and its panel stand selected */
.edp:not([data-edp-ready]) .edp-tab:first-child { color: var(--edp-navy); }
.edp:not([data-edp-ready]) .edp-tab:first-child::after { transform: none; }
/* the fade at an edge that hides more tabs (set by the hook; before it, on narrow screens) */
.edp-tabs::before, .edp-tabs::after { content: ""; position: absolute; z-index: 1; top: 0; bottom: 1px; width: 44px; pointer-events: none; opacity: 0; transition: opacity var(--edp-dur-fast) ease; }
.edp-tabs::before { left: 0; background: linear-gradient(90deg, #fff 15%, rgb(255 255 255 / 0)); }
.edp-tabs::after { right: 0; background: linear-gradient(270deg, #fff 15%, rgb(255 255 255 / 0)); }
.edp-tabs[data-more~="l"]::before, .edp-tabs[data-more~="r"]::after { opacity: 1; }

.edp-panel { padding-top: 40px; }
.edp-panel:focus { outline: none; }
.edp-panel:focus-visible { outline: var(--edp-ring); outline-offset: 2px; border-radius: 4px; }
/* the runtime's fallback (no compiler) evaluates no tab state: the first panel stands until the hook marks the root
   ready (in the compiled page the first panel is the visible one at that moment anyway) */
.edp:not([data-edp-ready]) .edp-panel:first-child { display: block !important; }
.edp-block + .edp-block { margin-top: 56px; }
/* the course video opens the first tab: the introduction follows it closely (from 1024 px the video sits in the hero) */
.edp--video .edp-panel > .edp-media:first-child + .edp-block { margin-top: 32px; }

/* ─── headings and running text (16 px at 1.6, paragraphs 16 px and list items 10 px apart, strong terms navy,
   lines of at most 62ch, as the portal sets its leads: the column reaches that width from about 690 px) ─── */
.edp .edp-h2 { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h2); font-weight: 700; line-height: 1.15; letter-spacing: var(--edp-track); text-wrap: balance; -webkit-hyphens: manual; hyphens: manual; }
.edp .edp-h3 { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h3); font-weight: 700; line-height: 1.25; letter-spacing: -.012em; text-wrap: balance; -webkit-hyphens: manual; hyphens: manual; }
.edp .edp-h2 + *, .edp .edp-h3 + * { margin-top: 16px; }
.edp .edp-prose { max-width: var(--edp-measure); color: var(--edp-ink); font-size: 16px; line-height: 1.6; overflow-wrap: break-word; text-wrap: pretty; }
.edp .edp-prose :where(p, ul, ol, h3, h4, h5, h6) { margin: 0; }
.edp .edp-prose > * + * { margin-top: 16px; }
.edp .edp-prose ul { display: grid; gap: 10px; padding: 0; list-style: none; }
.edp .edp-prose ul > li { position: relative; padding-left: 24px; }
.edp .edp-prose ul > li::before { content: ""; position: absolute; left: 5px; top: .635em; width: 6px; height: 6px; border-radius: 50%; background: var(--edp-mark); }
.edp .edp-prose ol { display: grid; gap: 10px; padding-left: 24px; list-style: decimal; }
.edp .edp-prose ol > li::marker { color: var(--edp-mute); font-weight: 600; }
.edp .edp-prose li > :where(ul, ol) { margin-top: 8px; }
.edp .edp-prose :where(strong, b) { color: var(--edp-navy); font-weight: 600; }
.edp .edp-prose a { color: var(--edp-link); font-weight: 500; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); text-decoration-thickness: 1px; text-underline-offset: 3px; overflow-wrap: anywhere; -webkit-hyphens: manual; hyphens: manual; transition: color var(--edp-dur-fast) ease, text-decoration-color var(--edp-dur-fast) ease; }
.edp .edp-prose a:hover { color: var(--edp-navy); text-decoration-color: currentColor; }
/* office texts: indices and exponents stay readable (12 px and up) */
.edp .edp-prose :where(sub, sup) { font-size: max(.8em, 12px); }
/* an address arrives as a link without href (restored in the browser): it looks like a link, the cursor stays plain */
.edp .edp-prose a:not([href]), .edp .edp-contact__row:not([href]) { cursor: default; }
.edp .edp-contact__row:not([href]) { color: var(--edp-ink); }
.edp .edp-prose :where(h3) { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h3); font-weight: 700; line-height: 1.3; letter-spacing: -.012em; }
.edp .edp-prose :where(h4, h5, h6) { color: var(--edp-navy); font-size: 17px; font-weight: 600; line-height: 1.4; }
.edp .edp-prose > * + :where(h3, h4, h5, h6) { margin-top: 28px; }
.edp .edp-prose > :where(h3, h4, h5, h6) + * { margin-top: 8px; }
.edp .edp-prose img { height: auto; border-radius: var(--edp-r-s); }
.edp .edp-prose--small { font-size: 15px; line-height: 1.6; }
/* the introduction's lead: its short first paragraph at the portal's lead size */
.edp .edp-prose--lead > p:first-child { font-size: var(--edp-lead); line-height: 1.55; }

/* ─── goals tab: the video on top (16:9, uncropped, an edge of its own), then the intro and the goals ─── */
.edp .edp-media { position: relative; overflow: hidden; border-radius: var(--edp-r); background: var(--edp-band-2); }
.edp .edp-media::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px var(--edp-line); pointer-events: none; }
.edp .edp-video { width: 100%; height: auto; aspect-ratio: 16 / 9; background: var(--edp-band-2); object-fit: contain; }
.edp .edp-video:focus-visible { outline-offset: -4px; border-radius: var(--edp-r); }
@supports selector(:has(*)) {
    .edp .edp-video:focus-visible { outline: none; }
    .edp .edp-media:has(> .edp-video:focus-visible) { outline: var(--edp-ring); outline-offset: 2px; }
}
.edp-goals { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 16px; }
.edp-goal { padding: 20px 24px; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; }
.edp .edp-goal__q { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: 17px; font-weight: 700; line-height: 1.35; letter-spacing: -.01em; }
.edp-goal .edp-prose { margin-top: 8px; }
.edp-goals-wrap { margin-top: 32px; }

/* ─── programme: a closed overview, days, items on one time axis ─── */
.edp-toc { margin-bottom: 40px; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; }
.edp .edp-toc > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 56px; padding: 0 20px; color: var(--edp-navy); font-size: 16px; font-weight: 600; line-height: 1.3; list-style: none; cursor: pointer; border-radius: var(--edp-r); }
.edp .edp-toc > summary::-webkit-details-marker { display: none; }
.edp .edp-toc > summary::after { content: ""; flex: none; width: 9px; height: 9px; margin-top: -4px; border-right: 2px solid var(--edp-mark); border-bottom: 2px solid var(--edp-mark); transform: rotate(45deg); transition: transform var(--edp-dur-fast) var(--edp-ease); }
.edp .edp-toc[open] > summary::after { margin-top: 4px; transform: rotate(225deg); }
.edp-toc__count { margin-left: 8px; color: var(--edp-mute); font-weight: 500; }
/* open: the days in two newspaper columns, each day kept whole */
.edp-toc__body { column-count: 2; column-gap: 32px; padding: 4px 20px 22px; }
.edp-toc__group { break-inside: avoid; padding-bottom: 20px; }
.edp-toc__day { margin-bottom: 6px; color: var(--edp-mute); font-size: 14px; font-weight: 600; line-height: 1.4; }
.edp .edp-toc__link { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 10px; padding: 4px 0; color: var(--edp-navy); font-size: 15px; line-height: 1.4; text-decoration: none; }
.edp .edp-toc__link:hover { color: var(--edp-link); }
.edp .edp-toc__link--plain { grid-template-columns: minmax(0, 1fr); }
.edp-toc__time { color: var(--edp-mute); font-variant-numeric: tabular-nums; }
.edp-day + .edp-day { margin-top: 48px; }
.edp-day__h { padding-bottom: 14px; }
.edp-items { border-top: 1px solid var(--edp-line); }
.edp-item { display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 20px; padding: 20px 0 22px; border-bottom: 1px solid var(--edp-line); scroll-margin-top: calc(var(--edp-sticky) + 72px); }
.edp-item > * { grid-column: 2; }
.edp-item__meta { display: contents; }
.edp-item__time { grid-column: 1; grid-row: 1 / span 4; color: var(--edp-navy); font-size: 16px; font-weight: 600; line-height: 1.5; font-variant-numeric: tabular-nums; align-self: baseline; }
.edp-item__type { grid-column: 2; display: flex; align-items: baseline; gap: 8px; color: var(--edp-mute); font-size: 14px; line-height: 1.5; align-self: baseline; }
.edp-item__type > i { width: 1.1em; color: var(--edp-mark); text-align: center; }
.edp .edp-item__name { margin-top: 4px; color: var(--edp-navy); font-family: var(--edp-font-display); font-size: 18px; font-weight: 700; line-height: 1.35; letter-spacing: -.01em; text-wrap: pretty; }
.edp-item__desc { margin-top: 8px; }
.edp-item__people { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 232px), 1fr)); gap: 10px 20px; margin-top: 14px; }
/* the programme's authors: the people rows at a smaller size (32 px portrait, name and institution on the same two
   tight lines, both clamped to two lines), no frame */
.edp-item__people .edp-who { align-items: flex-start; gap: 10px; }
.edp-item__people .edp-who > .edp-avatar { margin-top: 1px; }
.edp-item__people .edp-who__name, .edp-item__people .edp-who__org { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.edp-item__people .edp-who__name { font-size: 15px; line-height: 1.3; }
.edp-item__people .edp-who__org { margin-top: 1px; font-size: 14px; line-height: 1.35; }
.edp-item--brief { padding-block: 14px 15px; }
.edp-item--brief .edp-item__type { display: none; }
.edp .edp-item--brief .edp-item__name { margin-top: 0; color: var(--edp-mute); font-family: var(--edp-font); font-size: 16px; font-weight: 500; line-height: 1.5; letter-spacing: 0; }
.edp-item--brief .edp-item__time { color: var(--edp-mute); font-weight: 500; }
/* without times (the widget's hideTimes setting) the items stand on the full width under their session's name */
.edp-items--untimed { border-top: 0; }
.edp-items--untimed .edp-item { grid-template-columns: minmax(0, 1fr); }
.edp-items--untimed .edp-item > *, .edp-items--untimed .edp-item__type { grid-column: 1; }
.edp-items__group { padding: 36px 0 14px; border-bottom: 1px solid var(--edp-line); }
.edp-items__group:first-child { padding-top: 0; }

/* ─── people: portraits as small renditions, initials where there is no picture ─── */
.edp-avatar { position: relative; flex: none; display: inline-grid; place-items: center; width: 40px; height: 40px; overflow: hidden; border-radius: 50%; background: var(--edp-band-2); color: var(--edp-navy); font-size: 14px; font-weight: 700; line-height: 1; }
.edp-avatar > img { width: 100%; height: 100%; object-fit: cover; }
.edp-avatar--32 { width: 32px; height: 32px; font-size: 12px; }
.edp-avatar--28 { width: 28px; height: 28px; font-size: 12px; }
.edp-avatar--64 { width: 64px; height: 64px; font-size: 19px; }
.edp-avatar--48 { width: 48px; height: 48px; font-size: 16px; }
/* a hairline on top of the picture: a portrait on white keeps its circle */
.edp-avatar::after, .edp-dialog .edp-dialog__avatar::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px var(--edp-line); pointer-events: none; }
.edp-who { display: flex; align-items: center; gap: 12px; min-width: 0; }
.edp-who__text { min-width: 0; }
.edp-who__name, .edp-who__org { display: block; overflow-wrap: anywhere; }
.edp-who__name { color: var(--edp-navy); font-size: 15px; font-weight: 600; line-height: 1.35; }
.edp-who__org { color: var(--edp-mute); font-size: 14px; line-height: 1.4; }
/* the people (speakers tab): compact rows on one grid (portrait | name and institution | small actions): every name
   starts on the same line, the two rows side by side are equal, a hairline frame; rows with a CV are buttons (soft lift
   on hover), the others stay still */
.edp .edp-h2 + .edp-group { margin-top: 20px; }
.edp-group + .edp-group { margin-top: 36px; }
.edp-group { container-type: inline-size; }
.edp-group__head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.edp .edp-group__title { margin: 0; font-size: var(--edp-h3); line-height: 1.25; }
.edp .edp-group__title + .edp-count { margin-top: 0; }
.edp-people { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.edp-person { position: relative; display: grid; grid-template-columns: 62px minmax(0, 1fr) auto; align-items: start; column-gap: 0; min-width: 0; padding: 12px 10px 12px 14px; border: 1px solid var(--edp-line); border-radius: var(--edp-r-s); background: #fff; transition: border-color var(--edp-dur-fast) ease, box-shadow var(--edp-dur-fast) ease, transform var(--edp-dur-fast) var(--edp-ease); }
.edp-person > .edp-avatar { margin-right: 14px; }
.edp-person__text { display: flex; flex-direction: column; justify-content: flex-start; min-width: 0; min-height: 48px; padding-top: 3px; }
.edp-person__text:not(:has(.edp-person__org)) { justify-content: center; padding-top: 0; }
.edp-person__name, .edp-person__org { overflow-wrap: anywhere; }
/* the institution: two lines at most where the CV dialog shows it in full; complete where there is no CV */
.edp-person--cv .edp-person__org { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.edp-person__name { color: var(--edp-navy); font-size: 16px; font-weight: 600; line-height: 1.3; }
.edp-person__org { margin-top: 1px; color: var(--edp-mute); font-size: 14px; line-height: 1.4; }
.edp .edp-person__open { margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; line-height: inherit; text-align: left; cursor: pointer; }
.edp .edp-person__open::after { content: ""; position: absolute; z-index: 0; inset: -1px; border-radius: inherit; }
.edp .edp-person__open:focus-visible { outline: none; }
.edp .edp-person__open:focus-visible::after { outline: var(--edp-ring); outline-offset: 2px; }
.edp-person--cv:hover { border-color: var(--edp-line-hi); box-shadow: var(--edp-lift); transform: translateY(-1px); }
.edp-person--cv:hover .edp-person__name { color: var(--edp-tag); }
.edp-person__end { display: flex; align-items: center; height: 48px; margin-left: 8px; }
.edp-person__cue { display: inline-grid; place-items: center; width: 24px; height: 32px; color: var(--edp-mute); font-size: 15px; transition: color var(--edp-dur-fast) ease; }
.edp-person--cv:hover .edp-person__cue { color: var(--edp-mark); }
.edp .edp-person__web { position: relative; z-index: 1; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--edp-r-s); color: var(--edp-link); font-size: 16px; text-decoration: none; }
.edp .edp-person__web:hover { background: color-mix(in srgb, var(--edp-mark) 10%, transparent); }
.edp .edp-person__web:focus-visible { outline: var(--edp-ring); outline-offset: 0; }
.edp-person--dead .edp-avatar > img { filter: grayscale(1); }
/* two columns where each row keeps at least about 330 px (a 760 px column, a tablet); one column in the narrow column
   between 1024 and 1199 and on phones */
@container (min-width: 680px) { .edp-people { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; } }
.edp .edp-textlink { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; color: var(--edp-link); font-size: 15px; font-weight: 600; line-height: 1.3; text-decoration: none; }
.edp .edp-textlink:hover { color: var(--edp-navy); }
.edp .edp-textlink > i { font-size: 14px; transition: transform var(--edp-dur-fast) var(--edp-ease); }
.edp .edp-textlink:hover > .fa-arrow-right { transform: translateX(2px); }

/* ─── the booking card: date, button, deadline, leaders, contact; a hairline, no shadow; prices only in the booking tab ─── */
.edp-card { border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; }
@media (min-width: 1024px) {
    /* pinned beside the tabs; a card taller than the window scrolls with the page until its end is in view */
    .edp-card { position: sticky; top: min(var(--edp-sticky-now) + var(--edp-tabs-h) + 24px, 100vh - var(--edp-card-h, 0px) - 24px); transition: top var(--edp-dur) var(--edp-ease); }
}
.edp-card__sec { padding: 20px 24px; }
.edp-card__sec + .edp-card__sec { border-top: 1px solid var(--edp-line); }
/* the opening: the date as one line (what the card is about while the hero is out of view), a state where there is
   one, then the button and the deadline */
.edp-card__when { display: flex; align-items: baseline; gap: 10px; color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-when-size, 18px); font-weight: 700; line-height: 1.35; letter-spacing: -.01em; }
.edp-card__when > i { flex: none; width: 18px; color: var(--edp-mark); font-size: 16px; text-align: center; }
.edp-card__whentext { flex: 1 1 auto; min-width: 0; }
/* the dates on one line: 18 px where they fit, a step smaller where they must (17, 16, 15: the class is the server's
   estimate, the hook measures and sets the size exactly) */
.edp-card__when--17 { --edp-when-size: 17px; }
.edp-card__when--16 { --edp-when-size: 16px; }
.edp-card__when--15 { --edp-when-size: 15px; }
.edp-card__date { display: block; }
/* the number of days: its own line under the dates (not under the icon), quieter */
.edp-card__days { display: block; margin-top: 2px; color: var(--edp-mute); font-family: var(--edp-font); font-size: 14px; font-weight: 400; line-height: 1.4; letter-spacing: 0; }
.edp-card__state { display: flex; align-items: baseline; gap: 10px; margin-top: 8px; font-size: 15px; font-weight: 600; line-height: 1.45; }
.edp-card__state > i { flex: none; width: 1.1em; text-align: center; }
.edp-card__state--danger { color: var(--edp-red); }
.edp-card__state--planning { color: var(--edp-mute); }
.edp-card .edp-btn--block { margin-top: 18px; }
.edp-card__when + .edp-btn--block { margin-top: 20px; }
.edp-card__deadline { display: flex; align-items: baseline; gap: 8px; margin-top: 10px; color: var(--edp-mute); font-size: 14px; line-height: 1.45; }
.edp-card__deadline > i { color: var(--edp-mute); }
/* the card's section labels ("Kontakt") read as the leaders label does: quiet, the content under them navy */
.edp .edp-card__h { color: var(--edp-mute); font-family: var(--edp-font); font-size: 14px; font-weight: 600; line-height: 1.4; letter-spacing: 0; }
.edp .edp-card__h + * { margin-top: 8px; }
/* the place: the next fact under the date (same icon column, regular text) */
.edp-card__place { display: flex; align-items: baseline; gap: 10px; margin-top: 8px; color: var(--edp-navy); font-size: 15px; font-weight: 500; line-height: 1.4; }
.edp-card__place > i { flex: none; width: 18px; color: var(--edp-mark); font-size: 15px; text-align: center; }
/* the leaders: a quiet label, one tight row per person (28 px portrait, full name with title, wrapping, never cut) */
.edp-card__leaders { padding-block: 16px 18px; }
.edp-card__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0 12px; min-height: 28px; }
.edp .edp-card__label { color: var(--edp-mute); font-size: 14px; font-weight: 600; line-height: 1.4; }
.edp-card__people { display: grid; gap: 6px; margin-top: 6px; }
.edp-card__lead { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.edp-card__lead > .edp-avatar { background: #fff; }
.edp .edp-card__name { min-width: 0; padding-top: 5px; color: var(--edp-navy); font-size: 14px; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.edp .edp-card__all { min-height: 28px; gap: 6px; font-size: 14px; }
.edp .edp-card .edp-card__all { color: var(--edp-tag); }
.edp .edp-card .edp-card__all--short, .edp .edp-card .edp-card__all--tiny { display: none; }
/* how many people the pinned card shows is the hook's call (data-edp-fit: as many as the window has room for, the link
   whenever somebody is left out); without it these height steps keep the card fitting (checked at 1024 x 700 with a
   deadline, contact and certificate): up to four from 860 px of height, two below that, one below 720 */
@media (max-height: 859.98px) {
    .edp:not([data-edp-fit]) .edp-card__lead:nth-child(n+3) { display: none; }
    .edp:not([data-edp-fit]) .edp-card .edp-card__all--short { display: inline-flex; }
}
@media (max-height: 719.98px) {
    .edp:not([data-edp-fit]) .edp-card__lead:nth-child(n+2) { display: none; }
    .edp:not([data-edp-fit]) .edp-card .edp-card__all--tiny { display: inline-flex; }
}
.edp[data-edp-fit] .edp-card__lead[data-edp-off] { display: none; }
.edp[data-edp-fit] .edp-card .edp-card__all { display: inline-flex; }
.edp[data-edp-fit] .edp-card .edp-card__all[data-edp-off] { display: none; }
/* the speakers tab shows them all: the card does not repeat them there */
.edp[data-tab="speakers"] .edp-card__leaders { display: none; }
.edp-card__more { margin-top: 6px; }
.edp-count { display: inline-grid; place-items: center; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 12px; background: var(--edp-band-2); color: var(--edp-navy); font-size: 13px; font-weight: 700; }
.edp-contact__name { color: var(--edp-navy); font-size: 15px; font-weight: 600; line-height: 1.4; }
.edp-contact__rows { margin-top: 4px; }
.edp .edp-contact__row { display: flex; align-items: center; gap: 10px; min-height: 34px; color: var(--edp-tag); font-size: 15px; font-weight: 600; line-height: 1.35; text-decoration: none; overflow-wrap: anywhere; }
.edp .edp-contact__row[href]:hover { color: var(--edp-navy); }
.edp-contact__row > i { flex: none; width: 18px; color: var(--edp-mark); text-align: center; }
.edp-card__cert { display: flex; align-items: center; gap: 10px; padding: 14px 24px; border-top: 1px solid var(--edp-line); border-radius: 0 0 var(--edp-r) var(--edp-r); background: var(--edp-band); color: var(--edp-navy); font-size: 15px; font-weight: 500; line-height: 1.4; }
.edp-card__cert > i { color: var(--edp-mark); }
/* the card does not repeat the open tab: no button beside the booking tab (the people are in the hero and the
   speakers tab, not in the card) */
.edp[data-tab="booking"] .edp-card__book { display: none; }
.edp[data-tab="booking"] .edp-card__when + .edp-card__deadline { margin-top: 12px; }

/* ─── booking tab: the package overview restyled into the family, the contact below ─── */
.edp .booking-package-overview { --bpo-ink: var(--edp-navy); --bpo-ink-muted: var(--edp-mute); --bpo-ink-mute2: var(--edp-mute); --bpo-ink-border: var(--edp-line); --bpo-primary: var(--edp-link); --bpo-primary-700: var(--edp-navy); --bpo-primary-100: var(--edp-band-2); width: auto; max-width: none; margin: 28px 0 0; padding: 0; }
.edp-booking-deadline { display: flex; align-items: baseline; gap: 10px; margin-top: 10px; color: var(--edp-mute); font-size: 15px; line-height: 1.45; }
.edp-booking-deadline > i { flex: none; width: 1.1em; text-align: center; }
/* one level of boxes: each participant group is a plain heading with its packages as hairline cards */
.edp .booking-package-overview > .space-y-3 { display: grid; gap: 36px; }
.edp .booking-package-overview > .space-y-3 > * { margin: 0; }
.edp .booking-package-overview section { padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
.edp .booking-package-overview section > header { margin: 0 0 14px; }
.edp .booking-package-overview section > header > .rounded-xl { display: none; }
.edp .booking-package-overview h3 { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h3); font-weight: 700; letter-spacing: -.012em; }
.edp .booking-package-overview header p { margin-top: 4px; color: var(--edp-mute); font-size: 15px; line-height: 1.45; }
.edp .booking-package-overview .grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 12px; }
.edp .booking-package-overview .bp-tier { --bp-ink: var(--edp-navy); --bp-ink-muted: var(--edp-mute); --bp-ink-mute2: var(--edp-mute); --bp-primary: var(--edp-link); --bp-primary-700: var(--edp-navy); padding: 20px 24px; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; box-shadow: none; color: var(--edp-ink); text-decoration: none; transition: border-color var(--edp-dur-fast) ease, box-shadow var(--edp-dur-fast) ease, transform var(--edp-dur-fast) var(--edp-ease); }
.edp .booking-package-overview a.bp-tier:hover { border-color: var(--edp-line-hi); box-shadow: var(--edp-lift); transform: translateY(-2px); }
.edp .booking-package-overview a.bp-tier:focus-visible { outline: var(--edp-ring); outline-offset: 2px; border-radius: var(--edp-r); }
.edp .booking-package-overview .bp-tier .bp-divider { border-color: var(--edp-line); }
.edp .booking-package-overview .bp-tier .font-heading { font-family: var(--edp-font-display); }
.edp .booking-package-overview .bp-tier p.font-heading.text-base { color: var(--edp-navy); font-size: 17px; line-height: 1.3; letter-spacing: -.01em; }
/* the small print of the shared partial (9 … 12.5 px mono capitals) in the family's text sizes */
.edp .booking-package-overview .bp-tier .font-mono { font-family: var(--edp-font); font-size: 13px; font-weight: 600; letter-spacing: 0; text-transform: none; }
.edp .booking-package-overview .bp-tier :is(.text-\[9px\], .text-\[10px\], .text-\[11px\]) { font-size: 13px; }
.edp .booking-package-overview .bp-tier .text-\[12\.5px\] { font-size: 14px; line-height: 1.45; }
.edp .booking-package-overview .bp-tier .bp-desc { color: var(--edp-mute); }
.edp .booking-package-overview .bp-tier .text-\[14px\] { color: var(--edp-mute); font-size: 14px; }
.edp .booking-package-overview .bp-tier .text-\[14px\] .ml-1 { font-weight: 500; }
/* the price figure: the one large number of the page */
.edp .booking-package-overview .bp-tier .text-\[26px\] { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: 28px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
/* the next price level: a pale note instead of a boxed panel with micro capitals */
.edp .booking-package-overview .bp-tier .rounded-lg.border { padding: 10px 12px; border: 0; border-radius: var(--edp-r-s); background: var(--edp-band); }
.edp .booking-package-overview .bp-tier .rounded-lg.border .text-primary-700 { color: var(--edp-navy); }
/* sold out: the portal's red as text, not an amber pill */
.edp .booking-package-overview .bp-tier .border-amber-200 { padding: 0; border: 0; background: none; color: var(--edp-red); }
.edp .booking-package-overview .bp-tier .bp-book { color: var(--edp-link); opacity: 1; font-size: 15px; }
/* the tax note's info button: a light icon like every other icon of the page */
.edp .booking-package-overview .bp-tier .bp-info { width: 28px; height: 28px; }
.edp .booking-package-overview .bp-tier .bp-info > i { color: var(--edp-mute); font-size: 15px; font-weight: 300; }
/* the booking tab keeps its contact block where the card is not beside it (below 1024 px); there the card's own
   contact steps back while the booking tab is open, so the contact never stands twice */
.edp-contact-box { margin-top: 36px; padding: 20px 24px; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; }

/* ─── after the tabs: more dates, topics and industries, the way back; a hairline marks the start ─── */
.edp-after { margin-top: 64px; padding-top: 48px; border-top: 1px solid var(--edp-line); }
.edp-sec + .edp-sec { margin-top: 64px; }
.edp-taglists { display: grid; grid-template-columns: minmax(0, 1fr); gap: 48px; }
@media (min-width: 640px) { .edp-taglists { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.edp-links { margin-top: 14px; border-top: 1px solid var(--edp-line); }
.edp-links > li { border-bottom: 1px solid var(--edp-line); }
.edp .edp-links a { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 44px; padding: 9px 0; color: var(--edp-navy); font-size: 15px; font-weight: 500; line-height: 1.35; text-decoration: none; transition: color var(--edp-dur-fast) ease; }
.edp .edp-links a > i { flex: none; color: var(--edp-mark); font-size: 14px; transition: transform var(--edp-dur-fast) var(--edp-ease); }
.edp .edp-links a:hover { color: var(--edp-link); }
.edp .edp-links a:hover > i { transform: translateX(2px); }
.edp-dates { margin-top: 16px; display: grid; gap: 12px; }
.edp .edp-date { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 20px; padding: 16px 20px; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; color: var(--edp-ink); text-decoration: none; transition: border-color var(--edp-dur-fast) ease, box-shadow var(--edp-dur-fast) ease, transform var(--edp-dur-fast) var(--edp-ease); }
.edp a.edp-date:hover { border-color: var(--edp-line-hi); box-shadow: var(--edp-lift); transform: translateY(-2px); }
.edp a.edp-date:focus-visible { border-radius: var(--edp-r); }
.edp-date.is-current { background: var(--edp-band); }
.edp-date__when { display: block; color: var(--edp-navy); font-size: 16px; font-weight: 600; line-height: 1.4; }
.edp-date__meta { display: block; color: var(--edp-mute); font-size: 15px; line-height: 1.45; }
.edp-date__go { display: inline-flex; align-items: center; gap: 8px; color: var(--edp-link); font-size: 15px; font-weight: 600; white-space: nowrap; }
.edp-date__go > i { transition: transform var(--edp-dur-fast) var(--edp-ease); }
.edp a.edp-date:hover .edp-date__go > i { transform: translateX(2px); }
.edp-date__tag { color: var(--edp-navy); font-size: 14px; font-weight: 600; white-space: nowrap; }
.edp-back { margin-top: 40px; }
.edp-back > .edp-btn--quiet { margin-left: -12px; }

/* ─── phone bar (below 1024 px, see there): the booking button at the bottom of the screen ─── */
.edp-bar { display: none; }

/* ─── the interest form (a toast after 8 s) in the family: hairline card, navy title, 44 px controls, the brand button.
   The shared partial's inline styles are removed in the template; its classes are addressed from here ─── */
.edp .eips { position: fixed; z-index: 61; left: 0; right: 0; bottom: 24px; display: flex; justify-content: center; padding: 0 var(--edp-gut); pointer-events: none; }
/* from 1024 the interest note stands under the text column, clear of the pinned card */
@media (min-width: 1024px) { .edp .eips { justify-content: flex-start; padding-left: max(var(--edp-gut), (100% - var(--edp-wide)) / 2); } }
:root:has(.edp[data-edp-toast]) { scroll-padding-bottom: calc(var(--edp-toast-h, 0px) + 24px + 24px); }
.edp .eips > .w-full { width: 100%; max-width: 560px; pointer-events: auto; }
.edp .eips .eips-card { position: relative; padding: 20px 20px 18px; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; box-shadow: var(--edp-lift); -webkit-backdrop-filter: none; backdrop-filter: none; font-family: var(--edp-font); }
.edp .eips .eips-card > .flex { gap: 14px; padding-right: 40px; }
.edp .eips .eips-icon { width: 40px; height: 40px; border-radius: var(--edp-r-s); background: var(--edp-band-2); color: var(--edp-navy); }
.edp .eips .eips-card p.font-heading { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: 16px; font-weight: 700; line-height: 1.3; letter-spacing: -.01em; }
.edp .eips .eips-card p.text-xs { margin-top: 4px; color: var(--edp-ink); font-size: 14px; line-height: 1.5; }
.edp .eips .eips-card p.text-xs b { color: var(--edp-navy); font-weight: 600; }
.edp .eips form { margin-top: 14px; }
.edp .eips form > .flex { gap: 8px; }
.edp .eips .eips-close { position: absolute; top: 6px; right: 6px; display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: var(--edp-r-s); background: transparent !important; color: var(--edp-mute) !important; cursor: pointer; }
.edp .eips .eips-close > i { font-size: 16px; }
/* (the partial colours its close button with !important; the family's tones need the same weight) */
.edp .eips .eips-close:hover { background: var(--edp-band) !important; color: var(--edp-navy) !important; }
.edp .eips .eips-input { display: block; width: 100%; height: 44px; margin: 0; padding: 0 14px; border: 1px solid var(--edp-field); border-radius: var(--edp-r-s); background: #fff; color: var(--edp-navy) !important; font-family: var(--edp-font); font-size: 16px; line-height: 1.3; -webkit-appearance: none; appearance: none; }
.edp .eips .eips-input::placeholder { color: var(--edp-mute); }
.edp .eips .eips-input:focus { border-color: var(--edp-navy) !important; box-shadow: none !important; outline: var(--edp-ring); outline-offset: 2px; }
.edp .eips .eips-btn { display: inline-flex; align-items: center; justify-content: center; height: 44px; margin: 0; padding: 0 18px; border: 0; border-radius: var(--edp-r-s); background: var(--edp-fill); color: var(--edp-on-fill); box-shadow: none; font-family: var(--edp-font); font-size: 15px; font-weight: 700; line-height: 1.2; white-space: nowrap; cursor: pointer; filter: none; transform: none; transition: background-color var(--edp-dur-fast) ease, transform var(--edp-dur-fast) var(--edp-ease); }
.edp .eips .eips-btn:hover { background: var(--edp-fill-hover); filter: none; transform: none; }
.edp .eips .eips-btn:focus-visible { outline: var(--edp-ring); outline-offset: 2px; }
.edp .eips label { gap: 10px; margin-top: 12px; }
.edp .eips .eips-checkbox { flex: none; width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--edp-fill); }
.edp .eips label > span { margin-left: 0; font-size: 13px; font-weight: 400; line-height: 1.5; }
.edp .eips label > span.text-gray-600 { color: var(--edp-ink); }
.edp .eips .text-red-500, .edp .eips .text-red-600 { color: var(--edp-red); }

/* ─── breakpoints: 1024–1199 (narrow desktop), 1200+, 1024+, below 1024 (tablets, phones), below 640, below 380 ─── */
@media (min-width: 1024px) {
    /* the video card: its right edge on the content column's, 24 px clear of the picture's left edge (40 px from the
       text column at 1024-1199, 44 px from 1200), centred in the band under the site header */
    .edp-hero { --edp-video-r: max(var(--edp-gut), (100% - var(--edp-wide)) / 2); }
    .edp .edp-hero__video { display: block; position: absolute; z-index: 3; top: calc(var(--edp-header) + (100% - var(--edp-header)) / 2); right: var(--edp-video-r); width: min(560px, var(--edp-media-w, 50%) - var(--edp-video-r) - 24px); transform: translateY(-50%); box-shadow: 0 1px 2px color-mix(in srgb, var(--edp-shade-dialog) 20%, transparent), 0 24px 48px -24px var(--edp-shade-dialog); }
    .edp--video .edp-panel > .edp-media { display: none; }
    .edp--video .edp-panel > .edp-media:first-child + .edp-block { margin-top: 0; }
}
@media (min-width: 1024px) and (max-width: 1199.98px) {
    .edp-hero { --edp-media-w: calc(100% - var(--edp-gut) - 640px); }
    /* with a video card the text column gives up 40 px, so the card is not a thumbnail at 1024 */
    .edp-hero--video { --edp-media-w: calc(100% - var(--edp-gut) - 600px); }
    .edp-hero--video .edp-hero__copy { max-width: 584px; }
    .edp-hero--video .edp-actions { column-gap: 12px; }
}
@media (min-width: 1200px) {
    .edp-hero { --edp-media-w: max(40%, 100% - max(var(--edp-gut), (100% - var(--edp-wide)) / 2) - 680px); }
    .edp-hero__copy { max-width: 660px; }
    /* the hero answers to its own width where it can (a host frame narrower than the window, as on dgm.de at 1200-1279):
       under 1200 px it keeps the 1024-1199 columns. Without container queries the window decides, as before */
    @container (max-width: 1199.98px) {
        .edp-hero__media, .edp-hero__video { --edp-media-w: calc(100% - var(--edp-gut) - 640px); }
        .edp-hero__copy { max-width: 620px; }
        .edp-hero--video .edp-hero__media, .edp-hero--video .edp-hero__video { --edp-media-w: calc(100% - var(--edp-gut) - 600px); }
        .edp-hero--video .edp-hero__copy { max-width: 584px; }
        .edp-hero--video .edp-actions { column-gap: 12px; }
    }
}
@media (min-width: 1024px) {
    .edp-contact-box, .edp-booking-deadline { display: none; }
    /* without a picture: a compact band; the people stand in a column of their own on the right, as wide as the card
       below and on its line */
    .edp-hero--plain .edp-hero__inner { min-height: 0; padding-block: 56px 64px; }
    .edp-hero--plain .edp-hero__copy:has(> .edp-leads) { display: grid; grid-template-columns: minmax(0, 1fr) var(--edp-side); column-gap: max(40px, 100% - var(--edp-text) - var(--edp-side)); align-items: start; max-width: none; }
    .edp-hero--plain .edp-hero__copy:has(> .edp-leads) > * { grid-column: 1; }
    .edp-hero--plain .edp-hero__copy > .edp-leads { grid-column: 2; grid-row: 1 / span 8; align-self: center; max-width: none; margin: 0; padding: 4px 0 4px 24px; border-top: 0; border-left: 1px solid var(--edp-line); }
    .edp-hero--plain .edp-leads__people { grid-template-columns: minmax(0, 1fr); }
    /* the old Akademie page keeps a margin around its widgets (lg:mx-2, 2xl:mx-1; the portal theme, body.ak-theme, sets
       it to 0): this widget alone takes it back, so its hero runs from edge to edge and the other widgets keep theirs.
       On the main site the widget sits in a content frame with its own margins (.frame) and keeps to that column */
    body:not(.ak-theme) #crm__widgets[class~="lg:mx-2"] > :not(.frame) .edp { margin-inline: -.5rem; }
}
@media (max-width: 1023.98px) {
    /* below 1024 the picture is the hero's background across the whole hero, behind the text, as the desktop and the
       classic page show it. Readability is built in, not covered up: the picture's tones are first compressed into the
       light end (saturate first, then contrast .3 and brightness 1.76: black becomes about #9d9d9d, white stays white),
       then a light, graded veil of the band goes on (32 % everywhere text can stand, more at the left; from below
       the title it thickens steadily, so the picture is strongest behind the title and faintest behind the details
       and the leaders). On top of that the lower half fades into the page's white and is fully white at the bottom
       edge, so the hero hands over to the content below without an edge (white only lightens the background, so the
       contrast figures stay a lower bound). Worst case, a black pixel under the text: background luminance at least 0.47,
       so the weakest hero text (the ink colour, the accent and the red a shade deeper, below) keeps 4.6:1 or more over
       any picture, the brightest included */
    .edp-hero { --edp-hero-accent: color-mix(in srgb, var(--edp-tag) 70%, var(--edp-navy)); }
    .edp-hero__inner { min-height: 0; padding-block: 28px 32px; }
    .edp-hero--no-picture .edp-hero__inner { padding-bottom: 40px; }
    .edp-hero__copy { max-width: var(--edp-text); }
    .edp-hero__media { left: 0; width: auto; background: var(--edp-band); }
    .edp .edp-hero__img { object-position: 62% 40%; filter: saturate(1.25) contrast(.3) brightness(1.76); }
    .edp-hero__media::before { background: linear-gradient(180deg, rgb(255 255 255 / 0) 45%, rgb(255 255 255 / .3) 66%, rgb(255 255 255 / .72) 84%, rgb(255 255 255 / .94) 95%, #fff 100%), linear-gradient(90deg, color-mix(in srgb, var(--edp-band) 30%, transparent) 0%, color-mix(in srgb, var(--edp-band) 0%, transparent) 70%), linear-gradient(180deg, color-mix(in srgb, var(--edp-band) 0%, transparent) 20%, color-mix(in srgb, var(--edp-band) 42%, transparent) 52%, color-mix(in srgb, var(--edp-band) 58%, transparent) 100%), linear-gradient(180deg, color-mix(in srgb, var(--edp-band) 0%, transparent) 0, color-mix(in srgb, var(--edp-band) 32%, transparent) calc(var(--edp-header) + 12px), color-mix(in srgb, var(--edp-band) 32%, transparent) 100%); }
    .edp-hero__media::after { height: var(--edp-header); background: linear-gradient(180deg, color-mix(in srgb, var(--edp-band) 40%, transparent) 0%, color-mix(in srgb, var(--edp-band) 0%, transparent) 100%); }
    /* text over the picture a shade deeper: the accent (kicker, link to everyone) mostly navy, the quiet greys as ink,
       the red a little darker; on a hero without a picture the accent stays nearer its own colour */
    .edp .edp-hero .edp-kicker, .edp .edp-hero .edp-leads .edp-leads__more { color: var(--edp-hero-accent); }
    .edp .edp-hero:not(.edp-hero--no-picture) { --edp-hero-accent: color-mix(in srgb, var(--edp-tag) 30%, var(--edp-navy)); }
    .edp .edp-hero:not(.edp-hero--no-picture) .edp-leads__label, .edp .edp-hero:not(.edp-hero--no-picture) .edp-who__org, .edp .edp-hero:not(.edp-hero--no-picture) .edp-fact--planning, .edp .edp-hero:not(.edp-hero--no-picture) .edp-fact--past { color: var(--edp-ink); }
    .edp .edp-hero:not(.edp-hero--no-picture) .edp-fact--danger { color: color-mix(in srgb, var(--edp-red) 60%, var(--edp-navy)); }
    .edp .edp-hero__book { display: none; }
    .edp .edp-person__web { width: 44px; height: 44px; }
    .edp-body { padding-block: 24px 64px; }
    .edp-tabs { margin-inline: calc(-1 * var(--edp-gut)); }
    .edp-tabs__list { gap: 12px; margin-inline: 0; padding-inline: calc(var(--edp-gut) - 6px); scroll-padding-inline: var(--edp-gut); }
    .edp:not([data-edp-ready]) .edp-tabs::after { opacity: 1; }
    .edp-panel { padding-top: 32px; }
    /* the card does not repeat on phones: its opening (date, button, deadline) is the hero and the bar, leaders and
       contact stand once after the tabs */
    .edp-side { margin-top: 72px; padding-top: 56px; border-top: 1px solid var(--edp-line); }
    .edp-side--bare,
    .edp[data-tab="booking"] .edp-side:not(:has(.edp-card__cert)),
    .edp[data-tab="speakers"] .edp-side:not(:has(.edp-card__contact, .edp-card__cert)) { display: none; }
    .edp-card { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 48px; border: 0; border-radius: 0; background: none; }
    .edp-card__top, .edp-card__leaders, .edp[data-tab="booking"] .edp-card__contact { display: none; }
    .edp-card__sec { padding: 0; }
    .edp-card__sec + .edp-card__sec { border-top: 0; }
    .edp .edp-card__h { color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h3); font-weight: 700; letter-spacing: -.012em; }
    .edp .edp-card__h + * { margin-top: 12px; }
    .edp-card__cert { grid-column: 1 / -1; padding: 14px 16px; border: 1px solid var(--edp-line); border-radius: var(--edp-r-s); }
    .edp .edp-contact__row, .edp .edp-textlink { min-height: 44px; }
    .edp .edp-notice a { display: inline-flex; align-items: center; min-height: 44px; }
    .edp .edp-toc__link { min-height: 44px; align-items: center; }
    .edp .booking-package-overview .bp-tier .bp-info { width: 44px; height: 44px; margin: -8px -8px -8px -4px; }
    .edp-after { margin-top: 72px; padding-top: 0; border-top: 0; }
    .edp-side--bare + .edp-after,
    .edp[data-tab="booking"] .edp-side:not(:has(.edp-card__cert)) + .edp-after,
    .edp[data-tab="speakers"] .edp-side:not(:has(.edp-card__contact, .edp-card__cert)) + .edp-after { padding-top: 56px; border-top: 1px solid var(--edp-line); }
    /* pinned to the bottom of the screen while the course is in view (sticky at the widget's end, so at the end of
       the page it stops above the site's footer instead of covering it); gone while the booking tab is open */
    .edp-bar { position: sticky; z-index: 60; bottom: 0; display: block; padding: 12px var(--edp-gut) calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--edp-line); background: #fff; box-shadow: 0 -14px 30px -24px var(--edp-shade-bar); }
    .edp[data-tab="booking"] .edp-bar { display: none; }
    .edp-bar__in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 10px; max-width: var(--edp-wide); margin: 0 auto; }
    /* left: the deadline as label and value, or the sold-out state; it wraps rather than hiding under the button
       (larger text spacing); without either the button takes the whole width */
    .edp-bar__info { flex: 1 1 96px; min-width: 0; margin: 0; color: var(--edp-navy); line-height: 1.3; }
    .edp-bar__label { display: block; color: var(--edp-mute); font-size: 12px; font-weight: 500; }
    .edp-bar__value { display: block; font-size: 15px; font-weight: 600; }
    /* the row never wraps for an ordinary deadline; a longer text (another language, larger text spacing) breaks
       inside its own column instead of being cut */
    .edp-bar__label, .edp-bar__value, .edp-bar__info--danger { overflow-wrap: anywhere; }
    .edp-bar__info--danger { color: var(--edp-red); font-size: 15px; font-weight: 600; }
    .edp-bar__info--danger > i { margin-right: 8px; }
    .edp-bar .edp-btn { flex: 0 0 auto; margin-left: auto; padding-inline: 22px; }
    .edp-bar__in > .edp-btn:only-child { flex: 1 1 auto; }
    /* the interest toast stands above the bar on the same gutters, 12 px apart, never on top of it */
    .edp.has-bar:not([data-tab="booking"]) .eips { bottom: calc(var(--edp-bar-h, 73px) + 12px + env(safe-area-inset-bottom)); }
    .edp.has-bar:not([data-tab="booking"]) .eips .eips-btn { border: 1px solid var(--edp-edge); background: #fff; color: var(--edp-navy); }
    .edp.has-bar:not([data-tab="booking"]) .eips .eips-btn:hover { border-color: var(--edp-navy); background: #fff; color: var(--edp-navy); }
    /* while the bar is there: focused elements scroll clear of it (and of the toast while that is open), the site's
       back-to-top button sits above it */
    :root:has(.edp.has-bar:not([data-tab="booking"])) { scroll-padding-bottom: calc(var(--edp-bar-h, 73px) + 24px + env(safe-area-inset-bottom)); }
    :root:has(.edp.has-bar[data-edp-toast]:not([data-tab="booking"])) { scroll-padding-bottom: calc(var(--edp-bar-h, 73px) + 12px + var(--edp-toast-h, 0px) + 24px + env(safe-area-inset-bottom)); }
    :root:has(.edp.has-bar:not([data-tab="booking"])) .dgm-scroll-top { bottom: calc(var(--edp-bar-h, 73px) + 16px + env(safe-area-inset-bottom)); }
}
@media (max-width: 639.98px) {
    .edp .edp-prose { -webkit-hyphens: auto; hyphens: auto; hyphenate-limit-chars: 12 5 5; }
    /* phones: a calmer hero, so the tab bar starts on the first screen, above the phone bar: tighter steps, the
       picture behind them (see above), the three hero links on one line (in a column under 340 px the last one wraps as a
       second row of the same list) */
    .edp-hero__inner { padding-block: 20px 24px; }
    .edp-hero--no-picture .edp-hero__inner { padding-bottom: 32px; }
    .edp .edp-kicker { margin-bottom: 8px; font-size: 14px; line-height: 1.35; }
    .edp .edp-lead { margin-top: 12px; }
    .edp-body { padding-top: 8px; }
    .edp-facts { gap: 6px 20px; margin-top: 16px; }
    .edp-fact--date { flex-basis: 100%; }
    .edp-actions { --edp-quiet-pad: 8px; margin-top: 12px; gap: 8px 0; }
    .edp-actions__more { gap: 0; }
    .edp .edp-actions .edp-btn--quiet { font-size: 15px; }
    .edp-item { grid-template-columns: minmax(0, 1fr); }
    .edp-item > *, .edp-item__time, .edp-item__type { grid-column: 1; grid-row: auto; }
    .edp-item__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; }
    .edp-item__time { font-size: 15px; }
    /* a break (no text, no speaker) stays one row: time and title on one baseline */
    .edp-item--brief { display: flex; align-items: baseline; gap: 14px; }
    .edp-item--brief .edp-item__meta { display: block; flex: none; }
    .edp-goal, .edp .booking-package-overview .bp-tier, .edp-contact-box { padding: 16px; }
    .edp-person { grid-template-columns: 56px minmax(0, 1fr) auto; padding: 12px 4px 12px 12px; }
    .edp-person > .edp-avatar { margin-right: 12px; }
    .edp-avatar--48 { width: 44px; height: 44px; font-size: 15px; }
    .edp-person__text { min-height: 44px; }
    .edp-person__end { height: 44px; }
    .edp-person__cue { width: 28px; }
    .edp .edp-date { grid-template-columns: minmax(0, 1fr); padding: 14px 16px; }
    .edp-toc__body { column-count: 1; padding-inline: 16px; }
    .edp .edp-toc > summary { padding-inline: 16px; }
    .edp .eips .eips-card { padding: 16px 16px 14px; }
    .edp .eips .eips-icon { display: none; }
    .edp .eips form > .flex { flex-direction: column; align-items: stretch; }
}
@media (min-width: 1024px) and (pointer: coarse) {
    .edp .edp-contact__row, .edp .edp-textlink { min-height: 44px; }
    .edp .edp-person__web { width: 44px; height: 44px; }
    .edp .edp-toc__link { min-height: 44px; align-items: center; }
    .edp .booking-package-overview .bp-tier .bp-info { width: 44px; height: 44px; margin: -8px -8px -8px -4px; }
}
@media (min-width: 1536px) {
    body:not(.ak-theme) #crm__widgets[class~="2xl:mx-1"] > :not(.frame) .edp { margin-inline: -.25rem; }
}
/* short screens (a phone held sideways, a small phone, 200 % zoom): the toast keeps title, field and button; on very
   short ones it stays away, the page comes first */
@media (max-height: 640px), (max-width: 639.98px) and (max-height: 760px) {
    .edp .eips .eips-icon, .edp .eips .eips-card p.text-xs { display: none; }
    .edp .eips .eips-card { padding: 14px 16px 12px; }
    .edp .eips form { margin-top: 10px; }
}
@media (max-height: 500px) {
    .edp.edp .eips { display: none; }
}
@media (max-width: 419.98px) {
    .edp-bar .edp-btn { padding-inline: 14px; }
    /* the hero's three links stay on one line on a 390 phone, also in the main site's narrower frame */
    .edp-actions { --edp-quiet-pad: 6px; }
    .edp .edp-actions .edp-btn--quiet { gap: 6px; }
    .edp .edp-actions .edp-btn--quiet > i { font-size: 17px; }
}

/* ─── the CV dialog (teleported to the body element): the family's card, a calm overlay, a 44 px close button ─── */
body > div:has(> .edp-dialog.edp-dialog) { background: rgb(0 30 40 / .55); }
body > div:has(> .edp-dialog--default.edp-dialog) { background: var(--edp-dialog-overlay, rgb(15 20 25 / .55)); }
/* the price breakdown (the booking package's own dialog, teleported): the CV dialog's card and veil in the page's own
   tokens (its shadcn colour utilities would otherwise follow the host page's theme), a 44 px close button, the
   figures in the page's face with even digits, the small notes at 12 px in normal case (no 10 px capitals) */
body > div:has(> .edp-price-dialog) { background: rgb(0 30 40 / .55); }
body > div:has(> .edp-price-dialog--default) { background: var(--edp-dialog-overlay, rgb(15 20 25 / .55)); }
.edp-price-dialog.edp-price-dialog { gap: 0; border-color: var(--edp-line); border-radius: var(--edp-r); background: #fff; box-shadow: 0 30px 60px -30px var(--edp-shade-dialog); color: var(--edp-ink); font-family: var(--edp-font); text-align: left; }
.edp-price-dialog :is(.text-foreground, .text-primary) { color: var(--edp-navy); }
.edp-price-dialog .text-muted-foreground { color: var(--edp-mute); }
.edp-price-dialog :is(.border-border, .divide-border > *) { border-color: var(--edp-line); }
.edp-price-dialog .bg-background { background: #fff; }
.edp-price-dialog .bg-muted\/30 { background: var(--edp-band); }
.edp-price-dialog > .border-b:first-child { padding: 20px 64px 16px 20px; }
.edp-price-dialog > .border-b:first-child + * { padding: 20px; }
.edp-price-dialog .font-mono { font-family: inherit; letter-spacing: 0; text-transform: none; font-variant-numeric: tabular-nums; }
.edp-price-dialog .text-\[10px\] { font-size: 12px; line-height: 1.4; }
.edp-price-dialog .text-xl { font-family: var(--edp-font-display); font-size: 20px; font-weight: 700; line-height: 1.25; letter-spacing: -.012em; text-wrap: balance; }
.edp-price-dialog > button:last-child { top: 12px; right: 12px; display: inline-grid; place-items: center; width: 44px; height: 44px; padding: 0; border-radius: var(--edp-r-s); color: var(--edp-mute); opacity: 1; transition: background-color var(--edp-dur-fast) ease, color var(--edp-dur-fast) ease; }
.edp-price-dialog > button:last-child:hover { background: var(--edp-band); color: var(--edp-navy); }
.edp-price-dialog > button:last-child > svg { width: 18px; height: 18px; }
.edp-price-dialog :where(a, button, [tabindex]):focus-visible { outline: var(--edp-ring); outline-offset: 2px; box-shadow: none; }
@media (max-width: 639.98px) {
    .edp-price-dialog.edp-price-dialog { width: calc(100% - 32px); }
    .edp-price-dialog > .border-b:first-child { padding: 16px 64px 16px 16px; }
    .edp-price-dialog > .border-b:first-child + * { padding: 16px; }
    .edp-price-dialog > button:last-child { top: 8px; right: 8px; }
}
.edp-dialog.edp-dialog { width: min(720px, 100% - 32px); max-width: none; margin: 32px auto; padding: 0; gap: 0; overflow: hidden; border: 1px solid var(--edp-line); border-radius: var(--edp-r); background: #fff; box-shadow: 0 30px 60px -30px var(--edp-shade-dialog); color: var(--edp-ink); font-family: var(--edp-font); font-size: 16px; line-height: 1.6; text-align: left; }
.edp-dialog.edp-dialog[data-wide="true"] { width: min(1200px, 100% - 32px); }
.edp-dialog > button:last-child:not(.edp-dialog__close) { display: none; }
.edp-dialog .edp-dialog__close { position: absolute; z-index: 1; top: 12px; right: 12px; display: inline-grid; place-items: center; width: 44px; height: 44px; margin: 0; padding: 0; border: 0; border-radius: var(--edp-r-s); background: transparent; color: var(--edp-mute); font-size: 18px; cursor: pointer; }
.edp-dialog .edp-dialog__close:hover { background: var(--edp-band); color: var(--edp-navy); }
.edp-dialog :where(a, button, [tabindex]):focus-visible { outline: var(--edp-ring); outline-offset: 2px; }
/* the text is its own scroll region (Tab reaches it, arrows and Page Down scroll it): its ring sits inside its edge */
.edp-dialog .edp-dialog__body:focus-visible { outline-offset: -6px; border-radius: 12px; }
.edp-dialog .edp-dialog__head { display: flex; flex-direction: row; align-items: center; gap: 16px; padding: 24px 72px 20px 24px; border-bottom: 1px solid var(--edp-line); text-align: left; }
.edp-dialog .edp-dialog__avatar { position: relative; flex: none; display: inline-grid; place-items: center; width: 64px; height: 64px; overflow: hidden; border-radius: 50%; background: var(--edp-band-2); color: var(--edp-navy); font-size: 19px; font-weight: 700; }
.edp-dialog .edp-dialog__avatar > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.edp-dialog .edp-dialog__who { display: grid; gap: 2px; min-width: 0; }
.edp-dialog .edp-dialog__prefix { color: var(--edp-mute); font-size: 13px; font-weight: 600; }
.edp-dialog .edp-dialog__title { margin: 0; color: var(--edp-navy); font-family: var(--edp-font-display); font-size: var(--edp-h3, 20px); font-weight: 700; line-height: 1.25; letter-spacing: -.012em; text-wrap: balance; overflow-wrap: anywhere; }
.edp-dialog .edp-dialog__org { margin: 0; color: var(--edp-mute); font-size: 15px; line-height: 1.45; overflow-wrap: anywhere; }
.edp-dialog .edp-dialog__committee { display: inline-flex; align-items: baseline; gap: 6px; margin-top: 4px; color: var(--edp-navy); font-size: 14px; font-weight: 500; }
.edp-dialog .edp-dialog__body { max-height: calc(100vh - 220px); overflow-y: auto; overscroll-behavior: contain; padding: 20px 24px 24px; }
.edp-dialog .edp-dialog__body--wide { max-height: calc(100vh - 96px); padding: 16px; }
.edp-dialog .edp-dialog__lead { margin: 0 0 8px; color: var(--edp-navy); font-size: 17px; font-weight: 600; }
.edp-dialog .edp-dialog__text { max-width: 70ch; color: var(--edp-ink); font-size: 16px; line-height: 1.6; text-wrap: pretty; }
.edp-dialog .edp-dialog__text :where(p) { margin: 0; }
.edp-dialog .edp-dialog__text > * + * { margin-top: 12px; }
.edp-dialog .edp-dialog__text :where(strong, b) { color: var(--edp-navy); font-weight: 600; }
.edp-dialog .edp-dialog__text a { color: var(--edp-link); font-weight: 500; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); text-underline-offset: 3px; }
@media (max-width: 639.98px) {
    .edp-dialog.edp-dialog { width: calc(100% - 32px); margin: 16px auto; }
    .edp-dialog .edp-dialog__head { padding: 18px 64px 16px 16px; gap: 12px; }
    .edp-dialog .edp-dialog__avatar { width: 48px; height: 48px; font-size: 16px; }
    .edp-dialog .edp-dialog__body { max-height: calc(100vh - 180px); padding: 16px; }
    .edp-dialog .edp-dialog__close { top: 8px; right: 8px; }
}

/* Windows high-contrast: backgrounds are dropped there, so the selected tab's mark and the buttons' edges come back in
   system colours */
@media (forced-colors: active) {
    .edp .edp-tab::after, .edp .edp-tabs__ink { forced-color-adjust: none; background: Highlight; }
    .edp .edp-btn { border: 1px solid CanvasText; }
}
/* ─── motion: every state change of the widget, 160–200 ms, transform and opacity only, nothing under reduced motion ─── */
/* tab change: the panel that comes in rises 8 px and fades in (only after the visitor's first tab change: never the
   first panel on load, the server markup or the fallback, which have no data-edp-motion) */
.edp[data-edp-motion] .edp-panel { animation: edp-rise var(--edp-dur) var(--edp-ease-out); }
/* the programme overview: its list rises in when the visitor opens it (the hook flags that moment only, so it does not
   rise again with its panel) */
.edp .edp-toc[open][data-edp-opening] > .edp-toc__body { animation: edp-rise var(--edp-dur) var(--edp-ease-out); }
/* the selected-tab mark slides from tab to tab: one element the hook places under the selected tab's text; until it
   does (server markup, fallback) each tab draws its own mark */
.edp-tabs__ink { position: absolute; z-index: 1; top: 0; left: 0; width: 100px; height: 2px; border-radius: 2px 2px 0 0; background: var(--edp-mark); transform-origin: 0 0; opacity: 0; pointer-events: none; }
.edp[data-edp-ink] .edp-tabs__ink { opacity: 1; transition: transform var(--edp-dur) var(--edp-ease-out); }
.edp[data-edp-ink] .edp-tab::after { visibility: hidden; transition: none; }
/* press feedback on every button (also where the hover colour equals the fill) */
.edp .edp-btn:active, .edp .edp-btn--primary:active, .edp .eips .eips-btn:active { transform: scale(.98); }
/* dialogs (the CV and the price breakdown): the overlay fades, the card rises in and sinks out */
.edp-dialog.edp-dialog[data-state="open"], .edp-price-dialog[data-state="open"] { animation: edp-card-in var(--edp-dur) var(--edp-ease-out); }
.edp-dialog.edp-dialog[data-state="closed"], .edp-price-dialog[data-state="closed"] { animation: edp-card-out var(--edp-dur-fast) var(--edp-ease) forwards; }
body > div:has(> .edp-dialog.edp-dialog)[data-state="open"], body > div:has(> .edp-price-dialog)[data-state="open"] { animation: edp-fade-in var(--edp-dur) var(--edp-ease-out); }
body > div:has(> .edp-dialog.edp-dialog)[data-state="closed"], body > div:has(> .edp-price-dialog)[data-state="closed"] { animation: edp-fade-out var(--edp-dur-fast) var(--edp-ease) forwards; }
/* the interest toast: a short rise in, a quicker fade out (instead of its own 750 ms spring) */
.edp .eips-enter-active { transition: opacity var(--edp-dur) var(--edp-ease-out), transform var(--edp-dur) var(--edp-ease-out); }
.edp .eips-leave-active { transition: opacity var(--edp-dur-fast) var(--edp-ease), transform var(--edp-dur-fast) var(--edp-ease); }
.edp .eips-enter-from, .edp .eips-leave-to { opacity: 0; transform: translateY(12px); }
.edp .eips-enter-to, .edp .eips-leave-from { opacity: 1; transform: none; }
/* pinned: while the page runs under them the tab bar takes a white floor across the widget (a second tier of the
   header: hairline and a soft shade) and the card the site's lift; at rest both stay flat (the hook sets data-edp-stuck) */
.edp-tabs__floor { position: absolute; z-index: -1; top: 0; bottom: 0; left: calc(50% - 50vw); right: calc(50% - 50vw); background: #fff; box-shadow: inset 0 -1px 0 var(--edp-line), 0 14px 24px -22px var(--edp-shade-bar); opacity: 0; pointer-events: none; transition: opacity var(--edp-dur) var(--edp-ease); }
.edp[data-edp-stuck] .edp-tabs__floor { opacity: 1; }
@media (min-width: 1024px) {
    .edp .edp-card { transition: top var(--edp-dur) var(--edp-ease), box-shadow var(--edp-dur) var(--edp-ease); }
    .edp[data-edp-stuck] .edp-card { box-shadow: var(--edp-lift); }
}
/* the videos' play mark (pointer screens; touch screens draw their own): a clear centre to start the film. Only a
   picture, the click goes through to the video; shown once the hook runs, gone for good once a film plays */
.edp-play { display: none; }
@media (pointer: fine) {
    .edp[data-edp-ready] .edp-play { position: absolute; z-index: 2; top: calc(50% - 20px); left: 50%; display: grid; place-items: center; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; background: rgb(255 255 255 / .94); box-shadow: 0 0 0 1px rgb(0 30 40 / .06), 0 12px 32px -12px rgb(0 30 40 / .55); color: var(--edp-tag); font-size: 20px; pointer-events: none; transition: opacity var(--edp-dur) var(--edp-ease), scale var(--edp-dur) var(--edp-ease-out); }
    .edp-play > i { translate: 2px 0; }
    .edp .edp-media:hover > .edp-play { scale: 1.06; }
    .edp[data-edp-ready][data-edp-played] .edp-play { opacity: 0; scale: .9; }
}
/* pictures (the hero's, the portraits) fade in as they arrive; the hook marks only those still loading, so nothing is
   hidden without script */
.edp .edp-avatar > img { transition: opacity var(--edp-dur) var(--edp-ease-out); }
.edp [data-edp-pending] { opacity: 0; }
@media (max-width: 1023.98px) {
    /* the phone bar slides away while the booking tab is open and back when it closes (after a first tab change) */
    .edp[data-edp-motion] .edp-bar { transition: transform var(--edp-dur) var(--edp-ease-out), opacity var(--edp-dur) var(--edp-ease-out), display var(--edp-dur) allow-discrete; }
    .edp[data-edp-motion][data-tab="booking"] .edp-bar { transform: translateY(100%); opacity: 0; transition-duration: var(--edp-dur-fast); transition-timing-function: var(--edp-ease); }
    @starting-style {
        .edp[data-edp-motion] .edp-bar { transform: translateY(100%); opacity: 0; }
    }
}
@media (prefers-reduced-motion: reduce) {
    .edp, .edp *, .edp *::before, .edp *::after, .edp-dialog, .edp-dialog *, .edp-price-dialog { animation: none !important; transition: none !important; }
    body > div:has(> .edp-dialog), body > div:has(> .edp-price-dialog) { animation: none !important; transition: none !important; }
    .edp .edp-btn--primary:hover, .edp .edp-btn:active, .edp .edp-btn--primary:active, .edp .eips .eips-btn:active, .edp a.edp-date:hover, .edp .booking-package-overview a.bp-tier:hover, .edp .edp-links a:hover > i, .edp a.edp-date:hover .edp-date__go > i, .edp .edp-textlink:hover > .fa-arrow-right, .edp-person--cv:hover { transform: none; }
    .edp [data-edp-pending] { opacity: 1; }
}
.ede {
        --primary: #19a6e0;
        --ede-primary-700: color-mix(in oklab, var(--primary) 78%, black);
        --ede-primary-100: color-mix(in oklab, var(--primary) 12%, transparent);
        --ede-primary-50: color-mix(in oklab, var(--primary) 6%, transparent);
        --ede-ink: var(--foreground, #0d1b26);
        --ede-ink-muted: var(--muted-foreground, #4b5b69);
        --ede-ink-mute2: color-mix(in oklab, var(--muted-foreground, #4b5b69) 78%, transparent);
        --ede-ink-border: var(--border, #e4e8ec);
    }

    .ede .font-heading {
        font-family: "Inter Tight", "Inter", system-ui, sans-serif;
        letter-spacing: -0.015em;
    }

    .ede h1, .ede h2, .ede h3 {
        overflow-wrap: anywhere;
        hyphens: auto;
    }

    .ede-eyebrow {
        display: inline-flex;
        align-items: center;
        gap: .4rem;
        border-radius: 999px;
        padding: .35rem .75rem;
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .12em;
        color: var(--ede-primary-700);
        background: var(--ede-primary-100);
        white-space: nowrap;
    }

    .ede-label {
        font-size: 10px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .1em;
        color: var(--ede-ink-mute2);
    }

    .ede-glass {
        background: rgba(255, 255, 255, .64);
        backdrop-filter: blur(18px) saturate(160%);
        -webkit-backdrop-filter: blur(18px) saturate(160%);
        border: 1px solid rgba(255, 255, 255, .7);
    }

    .ede-shadow-soft {
        box-shadow:
            0 1px 0 color-mix(in oklab, var(--ede-ink) 3%, transparent),
            0 10px 28px -12px color-mix(in oklab, var(--ede-ink) 22%, transparent);
    }

    .ede-shadow-lift:hover {
        box-shadow:
            0 1px 0 color-mix(in oklab, var(--ede-ink) 3%, transparent),
            0 22px 44px -16px color-mix(in oklab, var(--ede-ink) 26%, transparent);
    }

    .ede-frame {
        position: relative;
        overflow: hidden;
        border-radius: 1.5rem 1.5rem 0 0;
    }

    .ede-frame::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 3px;
        z-index: 5;
        background: linear-gradient(90deg, transparent, var(--primary) 18%, color-mix(in oklab, var(--primary) 55%, white) 50%, var(--primary) 82%, transparent);
    }

    .ede-hero-bg {
        position: absolute;
        inset: 0 0 auto 0;
        top: 0;
        height: 26rem;
        -webkit-mask-image: linear-gradient(to bottom, black 0%, black 38%, rgba(0, 0, 0, .45) 60%, transparent 96%);
        mask-image: linear-gradient(to bottom, black 0%, black 38%, rgba(0, 0, 0, .45) 60%, transparent 96%);
    }

    @media (min-width: 1024px) {
        .ede-hero-bg { height: 30rem; }
    }

    .ede-hero-bg img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        display: block;
        filter: saturate(1.12) contrast(1.05);
    }

    .ede-hero-scrim {
        position: absolute;
        inset: 0;
        background: linear-gradient(to bottom, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .78) 60%, rgba(255, 255, 255, .98) 100%);
    }

    @media (min-width: 1024px) {
        .ede-hero-scrim {
            background: linear-gradient(110deg, rgba(255, 255, 255, .94) 0%, rgba(255, 255, 255, .8) 32%, rgba(255, 255, 255, .32) 56%, rgba(255, 255, 255, .05) 76%);
        }
    }

    .ede-hero-glow {
        position: absolute;
        inset: 0;
        pointer-events: none;
        background:
            radial-gradient(44rem 26rem at 6% 26%, color-mix(in oklab, var(--primary) 16%, transparent), transparent 70%),
            radial-gradient(26rem 18rem at 96% 4%, color-mix(in oklab, var(--primary) 20%, transparent), transparent 72%);
    }

    .ede-hero-grain {
        position: absolute;
        inset: 0;
        pointer-events: none;
        opacity: .05;
        mix-blend-mode: overlay;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    }

    .ede-ribbon {
        display: inline-flex;
        align-items: center;
        border-radius: 999px;
        padding: .4rem .9rem;
        font-size: 12px;
        font-weight: 700;
        color: #fff;
        background: #dc2626;
        box-shadow: 0 8px 20px -6px rgba(220, 38, 38, .55);
    }

    .ede-h1 {
        font-weight: 800;
        line-height: 1.08;
        letter-spacing: -0.01em;
        color: var(--ede-ink);
    }

    .ede-manifest {
        border-radius: 1.1rem;
        padding: 1.1rem 1.35rem;
        box-shadow:
            inset 0 1px 0 rgba(255, 255, 255, .8),
            0 1px 0 color-mix(in oklab, var(--ede-ink) 3%, transparent),
            0 18px 34px -16px color-mix(in oklab, var(--ede-ink) 24%, transparent);
    }

    .ede-meta-row {
        display: flex;
        align-items: center;
        gap: .55rem;
        padding: .4rem 0;
    }

    .ede-meta-row + .ede-meta-row {
        border-top: 1px solid color-mix(in oklab, var(--ede-ink-border) 70%, transparent);
    }

    .ede-meta-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 1.75rem;
        height: 1.75rem;
        border-radius: .55rem;
        background: var(--ede-primary-100);
        color: var(--ede-primary-700);
        flex-shrink: 0;
        font-size: 12px;
        box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 7%, transparent);
    }

    .ede-btn-primary {
        position: relative;
        overflow: hidden;
        display: inline-flex;
        align-items: center;
        gap: .5rem;
        border-radius: .5rem;
        font-weight: 600;
        color: #fff;
        background: var(--primary);
        box-shadow: 0 10px 24px -8px color-mix(in oklab, var(--primary) 55%, transparent);
        transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
        text-decoration: none;
    }

    .ede-btn-primary::after {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(115deg, transparent 30%, rgba(255, 255, 255, .32) 50%, transparent 70%);
        transform: translateX(-120%);
        transition: transform .55s ease;
    }

    .ede-btn-primary:hover::after {
        transform: translateX(120%);
    }

    .ede-btn-primary:hover {
        background: var(--ede-primary-700);
        color: #fff;
        transform: translateY(-1px);
    }

    .ede-btn-ghost {
        display: inline-flex;
        align-items: center;
        gap: .5rem;
        border-radius: .5rem;
        font-weight: 600;
        color: var(--ede-ink);
        background: #fff;
        border: 1px solid var(--ede-ink-border);
        transition: border-color .2s ease, background-color .2s ease, transform .2s ease;
        text-decoration: none;
    }

    .ede-btn-ghost:hover {
        border-color: color-mix(in oklab, var(--primary) 40%, transparent);
        background: var(--ede-primary-50);
        color: var(--ede-ink);
        transform: translateY(-1px);
    }

    .ede-card {
        border-radius: 1rem;
        border: 1px solid var(--ede-ink-border);
        background: #fff;
        transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
    }

    .ede-card:hover {
        transform: translateY(-2px);
        border-color: color-mix(in oklab, var(--primary) 35%, transparent);
    }

    .ede-person-avatar {
        position: relative;
        flex-shrink: 0;
        overflow: hidden;
        border-radius: 999px;
        background: var(--ede-primary-100);
    }

    .ede-person-name {
        overflow-wrap: anywhere;
    }

    .ede-person-avatar img {
        position: relative;
        z-index: 1;
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .4s ease;
    }

    .ede-card:hover .ede-person-avatar img {
        transform: scale(1.05);
    }

    .ede-chip {
        display: inline-flex;
        align-items: center;
        gap: .3rem;
        border-radius: 999px;
        border: 1px solid var(--ede-ink-border);
        background: #fff;
        padding: .2rem .55rem;
        font-size: 11px;
        font-weight: 500;
        color: var(--ede-ink-muted);
        text-decoration: none;
        transition: border-color .2s ease, background-color .2s ease, color .2s ease;
    }

    .ede-chip:hover {
        border-color: color-mix(in oklab, var(--primary) 40%, transparent);
        background: var(--ede-primary-50);
        color: var(--ede-primary-700);
    }

    .ede-badge-count {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 1.15rem;
        height: 1.15rem;
        padding: 0 .3rem;
        border-radius: 999px;
        background: var(--ede-primary-100);
        color: var(--ede-primary-700);
        font-size: 10px;
        font-weight: 700;
    }

    .ede-tab-scroll-target {
        scroll-margin-top: 1rem;
    }

    /* Named uniquely (not "fade") to avoid colliding with an unrelated,
       accidentally-global .fade-enter-active > * {...} staggered-list
       rule shipped by another component in the shared webwidgets
       bundle, which was leaking a "slide up from below" stagger onto
       these tab panels. Enter uses a Motion-generated low-bounce
       spring (bounce .15, 350ms) for a subtle, lively swap; leave is a
       fast plain ease since it should just get out of the way. */
    .ede-tabfade-enter-from,
    .ede-tabfade-leave-to {
        opacity: 0;
        transform: translateY(6px);
    }

    .ede-tabfade-enter-to,
    .ede-tabfade-leave-from {
        opacity: 1;
        transform: translateY(0);
    }

    .ede-tabfade-enter-active {
        transition:
            opacity 350ms linear(0, 0.3772, 0.8604, 1.0738, 1.0846, 1.0353, 1.0006, 0.991, 0.9941, 0.9985, 1.0006, 1),
            transform 350ms linear(0, 0.3772, 0.8604, 1.0738, 1.0846, 1.0353, 1.0006, 0.991, 0.9941, 0.9985, 1.0006, 1);
    }

    .ede-tabfade-leave-active {
        transition:
            opacity 150ms cubic-bezier(.4, 0, 1, 1),
            transform 150ms cubic-bezier(.4, 0, 1, 1);
    }

    .ede-tabnav {
        position: sticky;
        top: .5rem;
        z-index: 40;
        display: flex;
        gap: .4rem;
        overflow-x: auto;
        overscroll-behavior-x: contain;
        padding: .35rem;
        border-radius: .5rem;
        background: rgba(255, 255, 255, .85);
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
        border: 1px solid var(--ede-ink-border);
        box-shadow: 0 8px 24px -14px color-mix(in oklab, var(--ede-ink) 30%, transparent);
        scrollbar-width: none;
    }

    .ede-tabnav::-webkit-scrollbar {
        display: none;
    }

    .ede-tab {
        display: inline-flex;
        align-items: center;
        gap: .4rem;
        white-space: nowrap;
        border-radius: .375rem;
        padding: .5rem 1rem;
        font-size: 13px;
        font-weight: 600;
        color: var(--ede-ink-muted);
        cursor: pointer;
        transition: background-color .2s ease, color .2s ease;
    }

    .ede-tab:hover {
        color: var(--ede-ink);
    }

    .ede-tab-on {
        background: var(--primary);
        color: #fff !important;
        box-shadow: 0 6px 16px -6px color-mix(in oklab, var(--primary) 60%, transparent);
    }

    .ede-day-sticky {
        position: sticky;
        top: 3.75rem;
        z-index: 30;
        display: inline-block;
    }

    .ede-day-badge {
        display: inline-flex;
        align-items: center;
        gap: .4rem;
        border-radius: 999px;
        padding: .35rem .8rem;
        font-size: 11px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .1em;
        color: #fff;
        background: var(--ede-primary-700);
        white-space: nowrap;
    }

    .ede [id^="eventItem_"] {
        scroll-margin-top: 8.5rem;
    }

    .ede-toc a {
        text-decoration: none;
        color: var(--ede-ink-muted);
    }

    .ede-toc a:hover {
        color: var(--ede-primary-700);
    }
.booking-package-overview {
            --bpo-ink: var(--foreground, #0d1b26);
            --bpo-ink-muted: var(--muted-foreground, #4b5b69);
            --bpo-ink-mute2: color-mix(in oklab, var(--muted-foreground, #4b5b69) 78%, transparent);
            --bpo-ink-border: var(--border, #e4e8ec);
            --bpo-primary: #19a6e0;
            --bpo-primary-700: color-mix(in oklab, var(--bpo-primary) 78%, black);
            --bpo-primary-100: color-mix(in oklab, var(--bpo-primary) 12%, transparent);
            text-wrap: pretty;
        }

        .booking-package-overview .font-heading {
            font-family: "Inter Tight", "Inter", system-ui, sans-serif;
            letter-spacing: -0.01em;
        }

        /* Neutralize host page heading and header element styles inside the widget
           (the site CSS gives bare `header` a top margin, max-width and centering). */
        .booking-package-overview :where(h2, h3, h4) { margin: 0; }
        .booking-package-overview header {
            margin: 0 0 1rem;
            max-width: none;
            width: auto;
        }

        .booking-package-overview .text-ink { color: var(--bpo-ink); }
        .booking-package-overview .text-ink-muted { color: var(--bpo-ink-muted); }
        .booking-package-overview .text-ink-mute2 { color: var(--bpo-ink-mute2); }
        .booking-package-overview .text-primary-700 { color: var(--bpo-primary-700); }
        .booking-package-overview .border-ink-border { border-color: var(--bpo-ink-border); }
        .booking-package-overview .bg-primary\/10 { background-color: var(--bpo-primary-100); }

        .booking-package-overview .shadow-mse-soft {
            box-shadow:
                0 1px 0 color-mix(in oklab, var(--bpo-ink) 2%, transparent),
                0 8px 24px color-mix(in oklab, var(--bpo-ink) 4%, transparent);
        }
.bp-tier {
            --bp-ink: var(--foreground, #0d1b26);
            --bp-ink-muted: var(--muted-foreground, #4b5b69);
            --bp-ink-mute2: color-mix(in oklab, var(--muted-foreground, #4b5b69) 78%, transparent);
            --bp-ink-border: var(--border, #e4e8ec);
            --bp-primary: var(--primary, #40834d);
            --bp-primary-700: color-mix(in oklab, var(--bp-primary) 78%, black);
            border: 1px solid color-mix(in oklab, var(--bp-primary) 20%, transparent);
            background:
                linear-gradient(135deg,
                    color-mix(in oklab, var(--bp-primary) 10%, transparent) 0%,
                    color-mix(in oklab, var(--bp-primary) 4%, transparent) 45%,
                    rgba(255, 255, 255, 0) 100%),
                #fff;
            box-shadow:
                0 1px 0 color-mix(in oklab, var(--bp-ink) 2%, transparent),
                0 8px 24px color-mix(in oklab, var(--bp-ink) 4%, transparent);
            transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease;
            text-wrap: pretty;
        }
        a.bp-tier:hover {
            border-color: color-mix(in oklab, var(--bp-primary) 40%, transparent);
            box-shadow:
                0 1px 0 color-mix(in oklab, var(--bp-ink) 2%, transparent),
                0 24px 48px color-mix(in oklab, var(--bp-ink) 7%, transparent);
        }

        .bp-tier .font-heading {
            font-family: "Inter Tight", "Inter", system-ui, sans-serif;
            letter-spacing: -0.01em;
        }
        .bp-tier .font-mono { font-family: ui-monospace, monospace; }

        .bp-tier .text-ink { color: var(--bp-ink); }
        .bp-tier .text-ink-muted { color: var(--bp-ink-muted); }
        .bp-tier .text-ink-mute2 { color: var(--bp-ink-mute2); }
        .bp-tier .text-primary-700 { color: var(--bp-primary-700); }

        .bp-tier .bp-divider { border-color: color-mix(in oklab, var(--bp-primary) 10%, transparent); }

        .bp-tier .bp-desc :where(p) { margin: 0 0 .45em; }
        .bp-tier .bp-desc :where(p:last-child) { margin-bottom: 0; }
        .bp-tier .bp-desc :where(ul, ol) { margin: 0 0 .45em; padding-left: 1.1em; }
        .bp-tier .bp-desc :where(a) {
            color: var(--bp-primary-700);
            text-decoration: underline;
            text-underline-offset: 2px;
        }

        .bp-tier .bp-book { transition: opacity .2s ease, transform .2s ease; }
        a.bp-tier:hover .bp-book { opacity: 1; transform: translateX(2px); }

        .bp-tier .bp-info:hover { background: color-mix(in oklab, var(--bp-primary) 10%, transparent); }
        .bp-tier .bp-info:hover i { color: var(--bp-primary-700); }

        @media (prefers-reduced-motion: reduce) {
            .bp-tier, .bp-tier .bp-book { transition: none !important; }
        }
.eips {
            --eips-primary: #19a6e0;
            --eips-primary-700: color-mix(in oklab, var(--eips-primary) 78%, black);
            --eips-primary-100: color-mix(in oklab, var(--eips-primary) 12%, transparent);
        }

        .eips .font-heading {
            font-family: "Inter Tight", "Inter", system-ui, sans-serif;
            letter-spacing: -0.01em;
        }

        /* Motion-generated spring (bounce .28, 750ms) for the entrance — a
           lively pop-up feel appropriate for an attention-grabbing toast.
           The leave uses a plain fast ease-in instead: dismissing should feel
           quick and get out of the way, not linger through a spring settle. */
        .eips-enter-from,
        .eips-leave-to {
            opacity: 0;
            transform: translateY(24px) scale(.97);
        }

        .eips-enter-to,
        .eips-leave-from {
            opacity: 1;
            transform: translateY(0) scale(1);
        }

        .eips-enter-active {
            transition:
                opacity 750ms linear(0, 0.1405, 0.4453, 0.7687, 1.0195, 1.1627, 1.2053, 1.1775, 1.1153, 1.0487, 0.9968, 0.967, 0.9578, 0.9633, 0.976, 0.9897, 1.0005, 1.0067, 1.0087, 1.0076, 1.005, 1.0022, 0.9999, 0.9986, 1),
                transform 750ms linear(0, 0.1405, 0.4453, 0.7687, 1.0195, 1.1627, 1.2053, 1.1775, 1.1153, 1.0487, 0.9968, 0.967, 0.9578, 0.9633, 0.976, 0.9897, 1.0005, 1.0067, 1.0087, 1.0076, 1.005, 1.0022, 0.9999, 0.9986, 1);
        }

        .eips-leave-active {
            transition:
                opacity 240ms cubic-bezier(.4, 0, 1, 1),
                transform 240ms cubic-bezier(.4, 0, 1, 1);
        }

        .eips-card {
            position: relative;
            background: rgba(255, 255, 255, .92);
            backdrop-filter: blur(20px) saturate(160%);
            -webkit-backdrop-filter: blur(20px) saturate(160%);
            border: 1px solid rgba(255, 255, 255, .8);
            border-radius: 1.25rem;
            box-shadow:
                0 1px 0 rgba(13, 27, 38, .03),
                0 24px 48px -16px rgba(13, 27, 38, .28);
        }

        .eips-icon {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 2.25rem;
            height: 2.25rem;
            border-radius: .75rem;
            background: var(--eips-primary-100);
            color: var(--eips-primary-700);
            flex-shrink: 0;
        }

        /* Class-based !important still lost to the host page's own rules in
           practice (equal or higher specificity, possibly also !important, in
           unknown source order we don't control) — sizing/typography for every
           form control is now set inline instead (see the PHP block above),
           since nothing on the host page can out-specificity an inline
           !important. Colour stays class-based here purely so :hover/:focus
           can still change it — inline styles can't express pseudo-classes,
           and an inline !important background would permanently block any
           class-based hover override. */
        .eips-close {
            color: #6b7280 !important;
            background: rgba(15, 23, 42, .05) !important;
            transition: background-color .2s ease, color .2s ease;
        }

        .eips-close:hover {
            background: rgba(15, 23, 42, .1) !important;
            color: #111827 !important;
        }

        .eips-input {
            color: #111827 !important;
            transition: border-color .2s ease, box-shadow .2s ease;
        }

        .eips-input:focus {
            border-color: var(--eips-primary) !important;
            box-shadow: 0 0 0 3px var(--eips-primary-100) !important;
        }

        .eips-btn {
            box-shadow: 0 6px 16px -8px var(--eips-primary);
            transition: transform .2s ease, filter .2s ease;
        }

        /* Background/colour are inlined with !important on the element itself
           (see $eipsBtnStyle) since a host-page `button[type="submit"]` rule
           can legitimately out-specificity a plain `.eips-btn` class — but
           that means this class can no longer swap the background colour on
           hover (inline always wins). A brightness filter + lift gives hover
           feedback without needing to touch background-color at all. */
        .eips-btn:hover {
            filter: brightness(.92);
            transform: translateY(-1px);
        }