/* ==========================================================================
   DEKA Dental Academy — events catalog (accordion), single course, registration.
   Loads after pages.css. Uses the global --deka-* tokens.
   ========================================================================== */

/* ---------- Overview: "Why the Academy" intro ----------
   Was the sticky left column of a two-column grid with the course accordion on
   the right. The courses now live in their own sections below (.acad-courses +
   .acad-elite-courses), so this runs full width and no longer sticks.
   .academy-overview__grid is kept for any page still authored the old way. */
.academy-overview { padding: clamp(64px, 8vh, 110px) 0 clamp(56px, 7vh, 90px); background: var(--deka-ivory); }
.academy-overview__grid { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(40px, 5vw, 88px); align-items: start; }
@media (max-width: 960px) { .academy-overview__grid { grid-template-columns: 1fr; gap: 48px; } }

.academy-overview__intro { max-width: 78ch; }
.academy-overview__grid .academy-overview__intro { max-width: none; }
.academy-overview__intro .kicker { font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--deka-sapphire); font-weight: 500; }
.academy-intro__title { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(30px, 3.4vw, 46px); line-height: 1.08; letter-spacing: -0.02em; color: var(--deka-ink); margin-top: 14px; text-wrap: balance; }
.academy-intro__title em { font-family: var(--deka-serif); font-style: italic; font-weight: 400; color: var(--deka-sapphire); }
.academy-intro__body { margin-top: 28px; }
.academy-intro__body p { font-size: 16px; line-height: 1.7; color: var(--hm-muted, rgba(4,5,65,0.72)); margin-bottom: 18px; }
.academy-intro__body p:last-child { margin-bottom: 0; }
.academy-intro__body em { font-style: italic; color: var(--deka-ink); }

/* ---------- Catalog / accordion (right column) ---------- */
.academy-overview__courses-head { margin-bottom: 8px; }
.academy-overview__courses-head .kicker { font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--deka-sapphire); font-weight: 500; }
.academy-overview__courses-title { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(26px, 3vw, 36px); letter-spacing: -0.01em; color: var(--deka-ink); margin: 10px 0 20px; }
/* Group = full-width, transparent container. Padding now lives on each card. */
.academy-group {
    background: transparent; border: 0; border-radius: 0; padding: 0;
    margin-bottom: clamp(28px, 4vh, 48px);
}
.academy-group:last-child { margin-bottom: 0; }
.academy-group__title {
    font-family: var(--deka-serif); font-weight: 500;
    font-size: clamp(22px, 2.5vw, 30px); letter-spacing: -0.01em; color: #fff;
    background: var(--deka-ink); border-radius: 14px;
    padding: 16px 24px; margin: 0 0 18px;
}

/* Each course is its own white card. */
.academy-accordion { display: flex; flex-direction: column; gap: 16px; }
.academy-item {
    background: #fff; border: 1px solid var(--deka-rule); border-radius: 16px;
    padding: clamp(18px, 2.2vw, 26px);
    transition: border-color .25s ease, box-shadow .25s ease;
}
.academy-item:hover { border-color: rgba(4,5,65,0.28); box-shadow: 0 18px 42px -30px rgba(4,5,65,0.4); }

.academy-item__head {
    width: 100%; min-width: 0;
    display: grid; grid-template-columns: auto 1fr auto; align-items: center;
    gap: clamp(14px, 1.8vw, 22px);
    padding: 0; text-align: left; cursor: pointer;
    background: none; border: 0; color: var(--deka-ink);
}
.academy-item__title {
    font-family: var(--deka-serif); font-weight: 400;
    font-size: clamp(18px, 2vw, 24px); line-height: 1.25; letter-spacing: -0.01em;
    min-width: 0;
}
.academy-item__icon { color: var(--deka-ink); transition: transform .35s ease; font-size: 13px; }
.academy-item__head[aria-expanded="true"] .academy-item__icon { transform: rotate(180deg); }

/* Sold-out badge next to the title */
.academy-item__soldout {
    display: inline-block; vertical-align: middle; margin-left: 10px;
    font-family: var(--deka-mono); font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--hm-muted, rgba(4,5,65,0.55)); background: rgba(4,5,65,0.06);
    border-radius: 999px; padding: 4px 9px;
}

/* Calendar-style date card */
.cal-card {
    display: flex; flex-direction: column; text-align: center;
    width: 66px; flex-shrink: 0; overflow: hidden; line-height: 1;
    border: 1px solid var(--deka-rule); border-radius: 11px; background: #fff;
}
.cal-card__month {
    background: var(--deka-sapphire-soft); color: var(--deka-ink);
    font-family: var(--deka-mono); font-size: 10px; font-weight: 600;
    letter-spacing: 0.14em; text-transform: uppercase; padding: 5px 0 4px;
}
.cal-card__day {
    font-family: var(--deka-serif); font-weight: 500; font-size: 30px;
    color: var(--deka-ink); padding: 7px 0 0;
}
.cal-card__year {
    font-family: var(--deka-mono); font-size: 9.5px; letter-spacing: 0.1em;
    color: var(--hm-muted-2, rgba(4,5,65,0.45)); padding: 3px 0 8px;
}
.cal-card--soon .cal-card__day { font-size: 22px; padding-top: 10px; color: var(--deka-sapphire-soft); }

/* expanding panel */
.academy-item__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .4s cubic-bezier(.2,.7,.2,1); }
.academy-item__panel.is-open { grid-template-rows: 1fr; }
.academy-item__panel-inner { overflow: hidden; min-height: 0; }
/* Top separator + spacing lives on an always-present inner wrapper so it is
   clipped by the height animation (no instant jump when collapsing). */
.academy-item__panel-body { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--deka-rule); }
.academy-item.is-closed .academy-item__title { color: var(--hm-muted, rgba(4,5,65,0.55)); }

/* instructor + CE tags row (CE moved out of the header into the card content) */
.academy-item__tags { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 14px; }
.academy-item__instructor { font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--deka-ink); margin: 0; }
.academy-item__ce {
    font-family: var(--deka-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600;
    color: var(--deka-ink); background: var(--deka-sapphire-soft); border-radius: 999px; padding: 5px 12px; white-space: nowrap;
}
.academy-item__excerpt { font-size: 15px; line-height: 1.65; color: var(--hm-muted, rgba(4,5,65,0.7)); max-width: 70ch; margin: 0 0 18px; }
.academy-item__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.academy-item__foot-meta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.academy-item__date-full { font-family: var(--deka-mono); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--deka-ink); }
.academy-item__loc { font-family: var(--deka-mono); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--hm-muted-2, rgba(4,5,65,0.42)); }
.academy-item__link {
    display: inline-flex; align-items: center; gap: 9px;
    padding: 11px 22px; border-radius: 999px;
    background: var(--deka-ink); color: #fff;
    font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 600;
    transition: background .25s ease, box-shadow .25s ease;
}
.academy-item__link:hover { background: var(--deka-ink-2, #0a0b4e); box-shadow: 0 12px 26px -12px rgba(4,5,65,0.6); }
.academy-item__link svg { transition: transform .3s ease; }
.academy-item__link:hover svg { transform: translateX(4px); }

/* ==========================================================================
   WHY THE ACADEMY — the three-card block from the laser pages.
   Replaces the old prose intro. The design is .laser-page .lp-practice .lp-card
   (gradient face, hairline border, inset highlight, brass glyph on an ink tile,
   soft lift on hover) — reproduced here rather than reused, because laser.css is
   scoped to .laser-page AND is only enqueued on the laser page IDs, so none of
   it reaches this page.
   Every rule below is scoped to .acad-why. academy.css loads site-wide, so an
   unscoped .lp-card here would reach into the laser pages and the home-alt
   "Beyond" block, which share those class names.
   ========================================================================== */
.acad-why { padding: clamp(72px, 9vw, 120px) 0 clamp(56px, 7vh, 90px); background: var(--deka-ivory); }
.acad-why .lp-practice-head { max-width: 62ch; margin: 0 auto; text-align: center; }
.acad-why .lp-eyebrow {
    font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
    color: var(--deka-sapphire); font-weight: 500; display: inline-flex; align-items: center; gap: 10px;
}
.acad-why .lp-eyebrow::before { content: ''; width: 24px; height: 1px; background: var(--deka-sapphire); }
.acad-why .lp-h2 {
    font-family: var(--deka-serif); font-weight: 300; font-size: clamp(30px, 3.6vw, 46px);
    line-height: 1.08; letter-spacing: -0.02em; color: var(--deka-ink); margin-top: 16px; text-wrap: balance;
}
.acad-why .lp-h2 em { font-style: italic; }
@media (min-width: 1000px) { .acad-why .lp-h2 { font-size: var(--deka-h2); } }

.acad-why .lp-cards {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
    margin-top: clamp(40px, 5vw, 60px);
}
.acad-why .lp-card {
    padding: 30px 26px;
    background: linear-gradient(180deg, #ffffff 0%, #faf9f5 100%);
    border: 1px solid rgba(4, 5, 65, 0.10); border-radius: 14px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 12px 26px -20px rgba(4, 5, 65, 0.30);
    transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.acad-why .lp-card:hover {
    transform: translateY(-3px);
    border-color: rgba(4, 5, 65, 0.18);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95), 0 26px 50px -30px rgba(4, 5, 65, 0.40);
}
/* The ink tile is the dark surface that licenses the brass glyph — brass is the
   one warm accent and never appears directly on ivory. */
.acad-why .lp-card__icon {
    width: 46px; height: 46px; border-radius: 13px;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--deka-ink); color: var(--deka-brass);
    font-size: 18px; line-height: 1; margin-bottom: 20px;
    transition: transform .25s ease;
}
.acad-why .lp-card:hover .lp-card__icon { transform: scale(1.06); }
.acad-why .lp-card-tag {
    font-family: var(--deka-mono); font-size: 10px; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--deka-sapphire); margin-bottom: 10px;
}
.acad-why .lp-card h3 {
    font-family: var(--deka-serif); font-weight: 400; font-size: 20px; line-height: 1.28;
    color: var(--deka-ink); margin-bottom: 10px; letter-spacing: -0.01em;
}
.acad-why .lp-card p { font-size: 14px; line-height: 1.6; color: var(--hm-muted, rgba(4,5,65,0.7)); }

@media (max-width: 860px) { .acad-why .lp-cards { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) {
    .acad-why .lp-card, .acad-why .lp-card__icon { transition: none; }
    .acad-why .lp-card:hover { transform: none; }
    .acad-why .lp-card:hover .lp-card__icon { transform: none; }
}


/* ==========================================================================
   COURSE CARDS — both catalogs are sliders (Courses, then ELITE).
   One card design (.acad-card) in one track design (.acad-el-*), lifted from
   the home-alt "Beyond Traditional Dentistry" block: head + prompt + arrows,
   a clipped viewport, drag / trackpad / arrow paging (academy.js).
   The card is image + date + title only; everything else lives on the event
   page, which is what the card links to.
   ========================================================================== */

/* ---------- Section shells + heads ---------- */
/* Leads the page directly off the hero now (the "Why" block moved below the
   catalogs), so it needs the deeper top breathing room the intro used to give. */
.acad-courses { background: var(--deka-ivory); padding: clamp(72px, 9vh, 120px) 0 clamp(64px, 8vh, 110px); }
.acad-elite-courses { background: var(--deka-bone); padding: clamp(64px, 8vh, 110px) 0; }

/* The kicker owns row 1 alone, so the nav column starts in ROW 2 and its top
   edge is the h2's top edge exactly — no magic padding to guess at. */
.acad-el-head {
    display: grid; grid-template-columns: 1fr auto;
    column-gap: 48px; row-gap: 14px;
    align-items: start; margin-bottom: clamp(28px, 4vw, 44px);
}
.acad-el-head > .kicker {
    grid-column: 1; grid-row: 1;
    display: inline-flex; align-items: center; gap: 10px;
    font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--deka-ink); font-weight: 500;
}
.acad-el-head > .kicker::after { content: ''; width: 24px; height: 1px; background: var(--deka-ink); }
.acad-el-head-copy { grid-column: 1; grid-row: 2; max-width: 62ch; }
.acad-el-head-copy h2 {
    margin-top: 0; font-family: var(--deka-serif); font-weight: 300;
    font-size: clamp(30px, 3.6vw, 46px); line-height: 1.08; letter-spacing: -0.02em; color: var(--deka-ink);
}
.acad-el-head-copy h2 em { font-style: italic; }
.acad-el-head-copy > p { margin-top: 16px; font-size: 15.5px; line-height: 1.7; color: var(--hm-muted, rgba(4,5,65,0.72)); }

/* right column: the prompt sits level with the h2, arrows beneath it */
.acad-el-nav {
    grid-column: 2; grid-row: 2;
    display: flex; flex-direction: column; align-items: flex-end;
    gap: 22px; text-align: right;
}
.acad-el-prompt {
    margin: 0; max-width: 30ch; font-family: var(--deka-serif); font-weight: 300;
    font-size: clamp(18px, 1.6vw, 22px); line-height: 1.35; color: var(--deka-ink);
}
.acad-el-prompt em { font-style: italic; }
.acad-el-arrows { display: flex; gap: 10px; }
.acad-el-arrow {
    width: 46px; height: 46px; border-radius: 999px; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent; color: var(--deka-ink);
    border: 1px solid var(--deka-rule); cursor: pointer;
    transition: background .25s ease, color .25s ease, border-color .25s ease;
}
.acad-el-arrow:hover:not(:disabled) { background: var(--deka-ink); color: var(--deka-ivory); border-color: var(--deka-ink); }
.acad-el-arrow:disabled { opacity: .3; cursor: default; }
.acad-el-arrow:focus-visible { outline: 2px solid var(--deka-ink); outline-offset: 3px; }

/* ---------- Track ---------- */
/* The clip is load-bearing — it makes the cards peek past the edge — so
   overflow:visible is not an option. The bottom padding is sized to hold the
   hover Register button (which hangs BELOW the card) plus the card shadow; the
   equal negative margin pulls the box back so the layout below is unchanged. */
.acad-el-viewport { overflow: hidden; padding: 8px 0 84px; margin: -8px 0 -84px; }
.acad-el-track {
    --acad-gap: 24px;
    display: flex; gap: var(--acad-gap); align-items: stretch;
    transition: transform .5s cubic-bezier(.22, .61, .36, 1);
    will-change: transform;
    /* pan-y: horizontal gestures belong to the slider, vertical ones still
       scroll the page. Without this, touch devices never deliver the swipe. */
    touch-action: pan-y;
}
.acad-el-track .acad-card {
    --acad-per: 4;
    flex: 0 0 calc((100% - (var(--acad-gap) * (var(--acad-per) - 1))) / var(--acad-per));
}
/* a drag must not select text or ghost-drag the photos */
.acad-el-track.is-dragging .acad-card { user-select: none; }

@media (max-width: 1100px) { .acad-el-track .acad-card { --acad-per: 2.2; } }
@media (max-width: 760px) {
    /* single column: kicker, copy, then the prompt + arrows stacked beneath */
    .acad-el-head { grid-template-columns: 1fr; row-gap: 18px; }
    .acad-el-nav { grid-column: 1; grid-row: 3; align-items: flex-start; text-align: left; }
    .acad-el-prompt { max-width: none; }
    .acad-el-track .acad-card { --acad-per: 1.1; }
}

/* ---------- The card ---------- */
/* overflow MUST stay visible — the Register button hangs below the card. The
   rounding/clipping lives on .acad-card__media instead. */
.acad-card {
    position: relative; display: flex; flex-direction: column;
    background: linear-gradient(180deg, #ffffff 0%, #faf9f5 100%);
    border: 1px solid rgba(4, 5, 65, 0.10);
    border-radius: 14px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 12px 26px -20px rgba(4, 5, 65, 0.30);
    transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.acad-card:hover {
    z-index: 2;   /* lift above the neighbouring cards so the button isn't clipped by them */
    transform: translateY(-3px);
    border-color: rgba(4, 5, 65, 0.18);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95), 0 26px 50px -30px rgba(4, 5, 65, 0.40);
}
.acad-card__open { display: flex; flex-direction: column; flex: 1 1 auto; color: inherit; }

/* Media: a cover-cropped photograph. Every source is a real photo — no
   transparent cutouts, no pattern behind. */
.acad-card__media {
    position: relative; display: block; overflow: hidden;
    /* Square. The sources are portrait headshots (400x528, 214x300, 288x432 …),
       so cover trims their top and bottom — fine, and far better than the 4:3
       landscape crop that decapitated people. The two in-office trainings have
       no instructor and fall back to a landscape course photo; cover crops its
       sides, which is harmless. */
    aspect-ratio: 1 / 1;
    border-radius: 13px 13px 0 0;
    background: var(--deka-bone, #f5f4ef);
}
.acad-card__img {
    display: block; width: 100%; height: 100%;
    /* 22% from the top keeps the face in frame on every headshot; dead-centre
       crops foreheads on the tighter ones. */
    object-fit: cover; object-position: 50% 22%;
    -webkit-user-drag: none; user-drag: none;
    transition: transform .55s cubic-bezier(.2, .7, .2, 1);
}
.acad-card:hover .acad-card__img { transform: scale(1.05); }
/* a soft floor so the date chip and any light photo still separate */
.acad-card__media::after {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(4,5,65,0.20) 0%, rgba(4,5,65,0) 42%);
}

/* Date chip — the card leads with it. */
.acad-card__date {
    position: absolute; z-index: 2; top: 14px; left: 14px;
    display: flex; flex-direction: column; align-items: center; text-align: center;
    width: 62px; line-height: 1; overflow: hidden;
    background: rgba(255, 255, 255, 0.95);
    border-radius: 10px;
    box-shadow: 0 10px 22px -12px rgba(4, 5, 65, 0.55);
}
.acad-card__date-m {
    width: 100%; padding: 5px 0 4px; background: rgba(4, 5, 65, 0.07);
    font-family: var(--deka-mono); font-size: 9.5px; font-weight: 600;
    letter-spacing: 0.14em; text-transform: uppercase; color: var(--deka-ink);
}
.acad-card__date-d { padding: 6px 0 0; font-family: var(--deka-serif); font-weight: 500; font-size: 26px; color: var(--deka-ink); }
.acad-card__date-y { padding: 3px 0 7px; font-family: var(--deka-mono); font-size: 9px; letter-spacing: 0.1em; color: rgba(4, 5, 65, 0.45); }
.acad-card__date--soon .acad-card__date-d {
    font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.1em;
    padding: 8px 0 9px; color: rgba(4, 5, 65, 0.55);
}

.acad-card__soldout {
    position: absolute; z-index: 2; top: 16px; right: 14px;
    padding: 6px 11px; border-radius: 999px;
    background: rgba(4, 5, 65, 0.85); color: var(--deka-ivory);
    font-family: var(--deka-mono); font-size: 9px; font-weight: 600;
    letter-spacing: 0.14em; text-transform: uppercase;
}

/* Course-length badge ("2 Day Course") — the Anchor Events duration label.
   Bottom-left of the media, so it clears the date chip (top-left, 62px) and the
   Sold out pill (top-right) even when a card carries all three. Same ink pill
   as Sold out so the two read as one badge family.

   It carries its own opaque ground on purpose: .acad-card__media::after only
   darkens the TOP 42% of the photo, so a chip down here sits on raw image.
   Scoped under .acad-card — .anchor-event-label is a plugin-side class that
   also renders on the single-event page, which styles it separately. */
.acad-card .anchor-event-label-duration {
    position: absolute; z-index: 2; bottom: 14px; left: 14px;
    max-width: calc(100% - 28px);
    padding: 6px 11px; border-radius: 999px;
    background: rgba(4, 5, 65, 0.85); color: var(--deka-ivory);
    font-family: var(--deka-mono); font-size: 9px; font-weight: 600;
    letter-spacing: 0.14em; text-transform: uppercase;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.acad-card__body { display: flex; flex-direction: column; flex: 1 1 auto; padding: 20px 22px 22px; }
.acad-card__title {
    margin: 0; font-family: var(--deka-serif); font-weight: 400;
    font-size: 20px; line-height: 1.28; letter-spacing: -0.01em; color: var(--deka-ink);
    text-wrap: balance;
}
.acad-card__open:hover .acad-card__title { text-decoration: underline; text-underline-offset: 3px; }
.acad-card.is-closed .acad-card__title { color: rgba(4, 5, 65, 0.55); }
/* The photo is a person — name them, or the card is a stranger's face.
   margin-top:auto pins the name to the bottom of the body, so it sits on the
   same baseline across every card regardless of whether the title above it runs
   to one line or three. */
.acad-card__instr {
    display: block; margin-top: auto; padding-top: 12px;
    font-family: var(--deka-mono); font-size: 10px; font-weight: 500;
    letter-spacing: 0.14em; text-transform: uppercase; color: rgba(4, 5, 65, 0.5);
}

/* ---------- Hover: Register Now, below the card ----------
   Two things keep this from collapsing the instant the pointer heads for it:
   1. It is a DESCENDANT of .acad-card, so hovering it still satisfies
      `.acad-card:hover` — an absolutely-positioned child outside the parent's
      box still counts.
   2. It is anchored at `top: 100%` with a TRANSPARENT padding-top. That padding
      is the bridge: the button's hit area starts exactly at the card's bottom
      edge, so the pointer never crosses a dead gap on the way down. Set a
      margin or a `translateY` offset instead and you reintroduce the gap — the
      button disappears before it can be clicked.
   ------------------------------------------------------------------------- */
.acad-card__register {
    position: absolute; z-index: 3; top: 100%; left: 0; right: 0;
    display: flex; justify-content: center;
    padding-top: 12px;               /* the bridge — MUST be padding, not margin */
    opacity: 0; pointer-events: none;
    transform: translateY(-6px);
    transition: opacity .22s ease, transform .22s ease;
}
.acad-card__register > span {
    display: inline-flex; align-items: center; gap: 9px;
    padding: 13px 24px; border-radius: 999px;
    background: var(--deka-ink); color: var(--deka-ivory);
    font-family: var(--deka-mono); font-size: 10.5px; font-weight: 500;
    letter-spacing: 0.16em; text-transform: uppercase; white-space: nowrap;
    box-shadow: 0 14px 30px -14px rgba(4, 5, 65, 0.6);
    transition: gap .25s ease;
}
.acad-card__register:hover > span { gap: 13px; }
.acad-card__register svg { flex: none; }
.acad-card:hover .acad-card__register,
.acad-card:focus-within .acad-card__register {
    opacity: 1; pointer-events: auto; transform: translateY(0);
}
/* Touch devices have no hover — show it always rather than never. */
@media (hover: none) {
    .acad-card__register { position: static; opacity: 1; pointer-events: auto; transform: none; padding: 0 22px 22px; justify-content: flex-start; }
    .acad-el-viewport { padding-bottom: 30px; margin-bottom: -30px; }
}

@media (prefers-reduced-motion: reduce) {
    .acad-card, .acad-card__img, .acad-el-track, .acad-card__register { transition: none; }
    .acad-card:hover { transform: none; }
    .acad-card:hover .acad-card__img { transform: none; }
}

/* ---------- Single course ---------- */
/* Chips are still used on the single-course hero (the catalog list no longer uses them). */
.academy-chip {
    font-family: var(--deka-mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--deka-ink); background: var(--hm-sky, #e8eefb); border-radius: 999px;
    padding: 6px 12px; white-space: nowrap;
}
.academy-chip--closed { background: rgba(4,5,65,0.06); color: var(--hm-muted, rgba(4,5,65,0.58)); }
.event-hero__chips { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 22px; }
.event-hero__chips .academy-chip { background: rgba(255,255,255,0.1); color: var(--deka-ivory); }
/* Blue retired to dark purple; on the dark hero, keep the date chip legible with brand lavender. */
.event-hero__chips .academy-chip--date { background: var(--deka-sapphire-soft); border-color: var(--deka-sapphire-soft); color: var(--deka-ink); }
.event-hero__chips .academy-chip--closed { background: rgba(255,255,255,0.08); color: rgba(245,244,239,0.7); }

.event-body { padding: clamp(56px, 7vh, 96px) 0; background: var(--deka-ivory); }
.event-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: 56px; align-items: start; }
@media (max-width: 900px) { .event-grid { grid-template-columns: 1fr; gap: 36px; } }

.event-content { font-size: 16.5px; line-height: 1.75; color: rgba(4,5,65,0.86); }
/* Lead paragraph — the course overview opens larger + darker. */
.event-content > p:first-child { font-size: 20px; line-height: 1.55; color: var(--deka-ink); font-family: var(--deka-serif); font-weight: 400; }
/* Section headings (serif) with a hairline divider so blocks read as sections. */
.event-content h2, .event-content h3 {
    font-family: var(--deka-serif); font-weight: 500; letter-spacing: -0.01em; color: var(--deka-ink);
    margin: 44px 0 14px; padding-top: 30px; border-top: 1px solid var(--deka-rule);
}
.event-content h2 { font-size: clamp(26px, 3vw, 34px); }
.event-content h3 { font-size: clamp(22px, 2.4vw, 28px); }
/* Sub-labels (mono, brand color) — "OFFICE LOCATION", "RECOMMENDED HOTEL", etc. */
.event-content h4 {
    font-family: var(--deka-mono); font-weight: 500; font-size: 11.5px; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--deka-sapphire); margin: 30px 0 8px;
}
.event-content p { margin-bottom: 17px; }
.event-content strong { font-weight: 600; color: var(--deka-ink); }
.event-content em { font-style: italic; }
.event-content a { color: var(--deka-sapphire); border-bottom: 1px solid rgba(43,82,159,0.3); }
.event-content a:hover { border-bottom-color: currentColor; }
.event-content ul, .event-content ol { margin: 0 0 20px 1.1em; }
.event-content li { margin-bottom: 8px; padding-left: 4px; }
.event-content li::marker { color: var(--deka-sapphire); }
/* Instructor headshot — floats right beside the "About the Instructor" section. */
.event-content .event-instructor__photo {
    float: right; width: 250px; max-width: 40%;
    margin: 4px 0 22px 32px; border-radius: 14px;
    box-shadow: 0 26px 54px -28px rgba(4,5,65,0.55);
}
@media (max-width: 600px) {
    /* Un-floated on mobile — add generous top space so it clearly starts the
       "About the Instructor" section (separates it from the register-below text). */
    .event-content .event-instructor__photo { float: none; display: block; width: 62%; min-width: 180px; margin: 44px 0 20px; }
}
/* Contain the float so it can't bleed past the content column. */
.event-content::after { content: ''; display: block; clear: both; }

.event-aside { position: sticky; top: 110px; }
@media (max-width: 900px) { .event-aside { position: static; } }
.event-card { background: #fff; border: 1px solid var(--deka-rule); border-radius: 20px; padding: 28px; box-shadow: 0 30px 70px -45px rgba(4,5,65,0.3); }
.event-card__title { font-family: var(--deka-serif); font-weight: 400; font-size: 22px; color: var(--deka-ink); margin-bottom: 18px; }
/* NOTE: base.css resets `ul,ol { margin:0 !important; padding:0 !important }`, so spacing
   on this <ul> is ignored. Put the divider gap on the last <li> + the button <a> instead. */
.event-detail-list { list-style: none; display: flex; flex-direction: column; gap: 16px; border-bottom: 1px solid var(--deka-rule); }
.event-detail-list li:last-child { padding-bottom: 24px; }
.event-detail-list li { display: grid; grid-template-columns: 90px 1fr; gap: 12px; align-items: start; }
.event-detail-list .k { font-family: var(--deka-mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--hm-muted-2, rgba(4,5,65,0.45)); padding-top: 2px; }
.event-detail-list .v { font-size: 14.5px; line-height: 1.5; color: var(--deka-ink); }
.event-card__cta { display: block; margin-top: 24px; text-align: center; padding: 15px 24px; border-radius: 10px; background: var(--deka-sapphire); color: #fff; font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; transition: background .2s ease; }
.event-card__cta:hover { background: var(--deka-ink-2, var(--deka-ink)); }

/* ---------- Registration ---------- */
.event-register { padding: clamp(56px, 7vh, 100px) 0 clamp(80px, 10vh, 140px); background: var(--deka-bone); }
.event-register__head { text-align: center; margin-bottom: 40px; }
.event-register__title { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(28px, 3.5vw, 44px); letter-spacing: -0.025em; color: var(--deka-ink); margin-top: 8px; }
.event-register__embed { max-width: 860px; margin: 0 auto; }
.event-register__embed iframe { width: 100% !important; min-width: 0; border: 0; border-radius: 16px; background: #fff; box-shadow: 0 30px 70px -45px rgba(4,5,65,0.3); }
.event-register__closed { text-align: center; max-width: 52ch; margin: 0 auto; font-size: 16px; line-height: 1.65; color: var(--hm-muted, rgba(4,5,65,0.7)); }
.event-register__closed a { color: var(--deka-sapphire); border-bottom: 1px solid currentColor; }

/* ==========================================================================
   ACADEMY — ELITE program + challenges + pricing + benefits + how-to-join.
   ========================================================================== */
/* ELITE program top band */
.elite-hero { background: var(--deka-ink); color: var(--deka-ivory); padding: clamp(40px,5vh,72px) 0; }
.elite-hero__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; }
@media (max-width: 820px){ .elite-hero__grid { grid-template-columns: 1fr; gap: 20px; } }
.elite-hero__kicker { font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--deka-sapphire-soft); }
.elite-hero__title { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(30px,3.6vw,48px); letter-spacing: -0.01em; color: var(--deka-ivory); margin-top: 8px; }
.elite-hero__title em { font-family: var(--deka-serif); font-style: italic; font-weight: 400; color: var(--deka-sapphire-soft); }
.elite-hero__points { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.elite-hero__points li { font-family: var(--deka-mono); font-size: 13px; letter-spacing: 0.06em; padding-left: 22px; position: relative; }
.elite-hero__points li::before { content: ''; position: absolute; left: 0; top: 0.55em; width: 11px; height: 2px; background: var(--deka-sapphire-soft); }

.elite-offer { background: var(--deka-ivory); padding: clamp(56px,7vh,100px) 0; }
.elite-offer__grid { display: grid; grid-template-columns: 1fr 1.3fr; gap: clamp(40px,5vw,80px); align-items: start; }
@media (max-width: 880px){ .elite-offer__grid { grid-template-columns: 1fr; gap: 36px; } }
.elite-offer__display { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(52px,7.4vw,104px); letter-spacing: -0.02em; color: var(--deka-ink); line-height: 1; }
.elite-offer__lead p { font-size: 16px; line-height: 1.7; color: var(--hm-muted, rgba(4,5,65,0.72)); margin: 18px 0 24px; }
/* ELITE — single dark-purple block: program CTA + offer cards; orbs span the whole section */
.elite { --elite-purple: #040541; position: relative; overflow: hidden; background: var(--elite-purple); color: var(--deka-ivory); padding: clamp(56px,7vh,104px) 0 clamp(64px,8vh,112px); }
.elite > .container { position: relative; z-index: 1; }
.elite__offer { margin-top: clamp(52px,7vh,96px); }
.elite__orbs { position: absolute; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(540px 480px at 42% 38%, rgba(43,82,159,0.22), transparent 70%), radial-gradient(480px 460px at 60% 82%, rgba(108,76,168,0.17), transparent 72%), radial-gradient(420px 420px at 9% 60%, rgba(43,82,159,0.20), transparent 72%); }
.elite__orbs::before, .elite__orbs::after { content: ''; position: absolute; border-radius: 50%; pointer-events: none; filter: blur(64px); }
.elite__orbs::before { width: 560px; height: 560px; top: -100px; left: -70px; opacity: 0.5; background: radial-gradient(circle, rgba(43,82,159,0.55), transparent 68%); animation: elite-orb-a 18s ease-in-out infinite; }
.elite__orbs::after { width: 520px; height: 520px; top: 26%; right: -60px; opacity: 0.5; background: radial-gradient(circle, rgba(108,76,168,0.5), transparent 68%); animation: elite-orb-b 22s ease-in-out infinite; }
.elite-cta__grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(40px,5vw,80px); align-items: center; }
@media (max-width: 900px){ .elite-cta__grid { grid-template-columns: 1fr; gap: 40px; } }
.elite-cta__kicker { font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--deka-sapphire-soft); }
.elite-cta__title { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(48px,6.2vw,88px); line-height: 1.0; letter-spacing: -0.01em; color: var(--deka-ivory); margin: 10px 0 0; }
.elite-cta__title em { font-family: var(--deka-serif); font-style: italic; font-weight: 400; color: var(--deka-sapphire-soft); }
.elite-cta__points { list-style: none !important; padding: 0 !important; margin: 34px 0 0 !important; display: flex; flex-direction: column; gap: 15px; }
.elite-cta__points li { position: relative; padding-left: 36px; font-family: var(--deka-sans); font-size: 16px; line-height: 1.5; color: rgba(245,244,239,0.92); }
.elite-cta__points li::before { content: ''; position: absolute; left: 0; top: 1px; width: 22px; height: 22px; border-radius: 50%; background: var(--deka-sapphire) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f5f4ef' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 13px no-repeat; }
.elite-cta__text { font-size: 16px; line-height: 1.7; color: rgba(245,244,239,0.72); margin: 26px 0 28px; max-width: 54ch; }
.elite-cta__text strong { color: var(--deka-ivory); font-weight: 600; }
.elite-cta__media { position: relative; aspect-ratio: 1 / 1; }
.elite-cta__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 900px){ .elite-cta__media { max-width: 460px; margin: 0 auto; } }
.elite-offer__head { margin-bottom: clamp(22px,3vh,34px); }
.elite-offer__kicker { font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--deka-sapphire-soft); }
.elite-cards { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px,1.6vw,22px); }
@media (max-width: 760px){ .elite-cards { grid-template-columns: 1fr; } }
.elite-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.14); border-radius: 16px; padding: 26px; }
/* Card titles are h3 under the section h2 (h4 kept so older markup still styles). */
.elite-card h3, .elite-card h4 { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(20px,2vw,25px); color: var(--deka-ivory); margin-bottom: 10px; }
.elite-card p { font-size: 15px; line-height: 1.6; color: rgba(245,244,239,0.66); }
@keyframes elite-orb-a { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(46px, 34px); } }
@keyframes elite-orb-b { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(-38px, -44px); } }
@media (prefers-reduced-motion: reduce) { .elite__orbs::before, .elite__orbs::after { animation: none; } }

/* Challenges */
.academy-challenges { background: var(--deka-bone); padding: clamp(56px,7vh,100px) 0; }
.challenge-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; }
@media (max-width: 900px){ .challenge-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px){ .challenge-grid { grid-template-columns: 1fr; } }
.challenge { background: #fff; border: 1px solid var(--deka-rule); border-radius: 16px; padding: 24px; }
.challenge h4 { font-family: var(--deka-serif); font-weight: 400; font-size: 20px; color: var(--deka-ink); margin-bottom: 8px; }
.challenge p { font-size: 14.5px; line-height: 1.6; color: var(--hm-muted, rgba(4,5,65,0.7)); }

.academy-band { background: var(--deka-sapphire-soft); color: var(--deka-ink); padding: clamp(32px,4vh,56px) 0; }
.academy-band p { font-size: clamp(18px,2.2vw,26px); line-height: 1.4; color: #fff; max-width: 70ch; }
.academy-band strong { color: var(--deka-ink); }

/* Pricing */
.academy-pricing { background: var(--deka-ivory); padding: clamp(56px,7vh,100px) 0; }
.pricing-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: clamp(32px,4vw,64px); align-items: start; }
@media (max-width: 820px){ .pricing-grid { grid-template-columns: 1fr; gap: 32px; } }
.pricing-card { background: var(--deka-ink); color: var(--deka-ivory); border-radius: 22px; padding: 36px; }
.pricing-card .kicker { color: var(--deka-sapphire-soft); }
.pricing-tier { display: flex; justify-content: space-between; align-items: baseline; padding: 22px 0; border-bottom: 1px solid var(--deka-rule-light, rgba(245,244,239,0.18)); }
.pricing-tier:last-child { border-bottom: 0; }
.pricing-tier__label { font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: rgba(245,244,239,0.7); }
.pricing-tier__price { font-family: var(--deka-serif); font-size: 34px; color: var(--deka-sapphire-soft); }
.pricing-tier__price small { font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.06em; color: rgba(245,244,239,0.55); margin-left: 8px; }
.pricing-benefits ul { list-style: none; padding: 0; margin: 16px 0 0; display: flex; flex-direction: column; gap: 16px; }
.pricing-benefits li { font-size: 15.5px; line-height: 1.6; color: var(--deka-ink); padding-left: 24px; position: relative; }
.pricing-benefits li::before { content: ''; position: absolute; left: 0; top: 0.6em; width: 13px; height: 2px; background: var(--deka-sapphire); }

/* Benefits / Without */
.academy-benefits { background: var(--deka-bone); padding: clamp(56px,7vh,100px) 0; }
.benefits-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px,4vw,56px); }
@media (max-width: 820px){ .benefits-grid { grid-template-columns: 1fr; gap: 32px; } }
.benefits-col h3 { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(24px,2.8vw,32px); letter-spacing: -0.01em; color: var(--deka-ink); margin-bottom: 22px; }
.benefits-col--no h3 { color: var(--hm-muted, rgba(4,5,65,0.6)); }
.benefit { padding: 16px 0; border-bottom: 1px solid var(--deka-rule); }
.benefit h4 { font-family: var(--deka-serif); font-weight: 400; font-size: 18px; color: var(--deka-ink); margin-bottom: 4px; }
.benefits-col--no .benefit h4 { color: rgba(4,5,65,0.7); }
.benefit p { font-size: 14.5px; line-height: 1.55; color: var(--hm-muted, rgba(4,5,65,0.68)); }

/* How to join + form */
.academy-join { background: var(--deka-ink); color: var(--deka-ivory); padding: clamp(56px,7vh,100px) 0 clamp(72px,9vh,120px); }
.center-head--light .kicker { color: var(--deka-sapphire-soft); }
.center-head--light h2 { color: var(--deka-ivory); }
.join-steps { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; margin-bottom: 48px; }
@media (max-width: 760px){ .join-steps { grid-template-columns: 1fr; gap: 20px; } }
.join-step { text-align: center; }
.join-step__n { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(245,244,239,0.3); font-family: var(--deka-serif); font-size: 20px; color: var(--deka-sapphire-soft); margin-bottom: 14px; }
.join-step h4 { font-family: var(--deka-serif); font-weight: 500; font-size: 21px; letter-spacing: 0; text-transform: none; color: var(--deka-ivory); margin-bottom: 8px; }
.join-step p { font-size: 14.5px; line-height: 1.6; color: rgba(245,244,239,0.75); max-width: 32ch; margin: 0 auto; }
.join-foot { display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; align-items: center; padding: 28px 0; border-top: 1px dashed rgba(245,244,239,0.3); border-bottom: 1px dashed rgba(245,244,239,0.3); margin-bottom: 40px; }
.join-foot__lead { font-family: var(--deka-serif); font-size: clamp(20px,2.2vw,28px); color: var(--deka-ivory); max-width: 22ch; }
.join-foot__call { font-family: var(--deka-mono); font-size: 13px; letter-spacing: 0.06em; color: rgba(245,244,239,0.8); }
.join-foot__call a { color: var(--deka-sapphire-soft); }
.join-form { max-width: 760px; margin: 0 auto; }

/* ==========================================================================
   ENROLL — merged "how to join" flow + pricing/benefits card (dark navy)
   ========================================================================== */
.academy-enroll { background: var(--deka-ink); color: var(--deka-ivory); padding: clamp(64px,8vh,110px) 0 clamp(72px,9vh,120px); }
.academy-enroll__grid { display: grid; grid-template-columns: 1fr 0.92fr; gap: clamp(40px,5vw,80px); align-items: start; }
@media (max-width: 900px){ .academy-enroll__grid { grid-template-columns: 1fr; gap: 48px; } }
.enroll-flow > .kicker { display: inline-flex; align-items: center; gap: 10px; font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--deka-sapphire-soft); font-weight: 500; }
.enroll-flow > .kicker::after { content: ''; width: 24px; height: 1px; background: var(--deka-sapphire-soft); }
.enroll-flow > h2 { font-family: var(--deka-serif); font-weight: 300; font-size: clamp(30px,4vw,46px); line-height: 1.05; letter-spacing: -0.02em; color: var(--deka-ivory); margin-top: 14px; }
@media (min-width: 1000px) { .enroll-flow > h2 { font-size: var(--deka-h2); } }
.enroll-steps { list-style: none !important; padding: 0 !important; margin: clamp(28px,4vh,40px) 0 0 !important; }
.enroll-step { position: relative; display: grid; grid-template-columns: 46px 1fr; gap: 20px; align-items: start; padding-bottom: 30px; }
.enroll-step:last-of-type { padding-bottom: 0; }
.enroll-step:not(:last-of-type)::after { content: ''; position: absolute; left: 22px; top: 52px; bottom: 4px; width: 2px; background: linear-gradient(rgba(43,82,159,0.7), rgba(245,244,239,0.12)); }
.enroll-step__n { width: 46px; height: 46px; border-radius: 50%; background: var(--deka-sapphire); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-family: var(--deka-mono); font-size: 15px; font-weight: 500; line-height: 1; position: relative; z-index: 1; }
.enroll-step__body h3, .enroll-step__body h4 { font-family: var(--deka-serif); font-weight: 500; font-size: 21px; color: var(--deka-ivory); margin: 9px 0 5px; }
.enroll-step__body p { font-size: 14.5px; line-height: 1.6; color: rgba(245,244,239,0.72); max-width: 38ch; }
.enroll-cta { display: inline-flex; align-items: center; gap: 12px; margin-top: clamp(30px,4vh,40px); padding: 16px 30px; border-radius: 999px; background: var(--deka-sapphire); color: #fff; font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 500; transition: background .25s ease, color .25s ease, transform .25s ease; }
.enroll-cta:hover { background: var(--deka-ivory); color: var(--deka-ink); transform: translateY(-1px); }
.enroll-cta svg { flex: none; }
.enroll-call { margin-top: 16px; font-family: var(--deka-mono); font-size: 12px; letter-spacing: 0.04em; color: rgba(245,244,239,0.6); }
.enroll-call a { color: var(--deka-sapphire-soft); }
.enroll-card { background: var(--deka-ivory); color: var(--deka-ink); border-radius: 20px; padding: clamp(28px,3vw,40px); box-shadow: 0 50px 100px -50px rgba(0,0,0,0.55); }
.enroll-card__eyebrow { font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--deka-sapphire); font-weight: 500; }
.enroll-card__tiers { margin-top: 14px; }
.enroll-tier { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--deka-rule); }
.enroll-tier:last-child { border-bottom: 0; padding-bottom: 2px; }
.enroll-tier__label { font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(4,5,65,0.6); }
.enroll-tier__price { font-family: var(--deka-serif); font-weight: 500; font-size: clamp(30px,3vw,40px); line-height: 1; letter-spacing: -0.01em; color: var(--deka-ink); text-align: right; font-variant-numeric: lining-nums tabular-nums; }
.enroll-tier__price small { display: block; margin-top: 6px; font-family: var(--deka-mono); font-size: 10px; font-weight: 400; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(4,5,65,0.45); }
.enroll-card__divider { height: 1px; background: var(--deka-rule); margin: 24px 0; }
.enroll-card__benefits { list-style: none !important; padding: 0 !important; margin: 16px 0 0 !important; display: flex; flex-direction: column; gap: 14px; }
.enroll-card__benefits li { font-size: 14.5px; line-height: 1.55; color: var(--deka-ink); padding-left: 28px; position: relative; }
.enroll-card__benefits li::before { content: ''; position: absolute; left: 0; top: 2px; width: 17px; height: 17px; background: var(--deka-sapphire); -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M4 12l5 5 11-11'/></svg>") center / contain no-repeat; mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M4 12l5 5 11-11'/></svg>") center / contain no-repeat; }

/* ------------------------------------------------------------------
 * Speaker pages (single-speaker.php). Reuses the event two-column shell;
 * only the photo and the course list need their own rules.
 * ------------------------------------------------------------------ */
.speaker-photo {
	margin: 0 0 2rem;
	max-width: 320px;
	border-radius: var(--anchor-radius-lg, 12px);
	overflow: hidden;
}
.speaker-photo img { display: block; width: 100%; height: auto; }

.speaker-courses { list-style: none; margin: 0; padding: 0; }
.speaker-courses li {
	padding: .75rem 0;
	border-bottom: 1px solid rgba(0, 0, 0, .08);
	display: flex;
	flex-direction: column;
	gap: .15rem;
}
.speaker-courses li:last-child { border-bottom: 0; padding-bottom: 0; }
.speaker-courses a { font-weight: 500; text-decoration: none; }
.speaker-courses a:hover { text-decoration: underline; }
.speaker-courses__date { font-size: .85rem; opacity: .7; }

@media (max-width: 640px) {
	.speaker-photo { max-width: 100%; }
}

/* ==========================================================================
   PICK-ONE OFFERINGS (multi-date events)
   The plugin's Occurrences engine renders a parent's dates via
   render_choose_date_list() / render_sibling_dates() (.anchor-event-choose-date
   …). Those carry no DEKA classes, so they're styled here to sit in the Academy
   look. Also: the hero "+N more dates" chip and the aside session list.
   ========================================================================== */

/* hero chip — same treatment as the date chip, on the dark hero ground */
.event-hero__chips .academy-chip--more { background: rgba(255,255,255,0.14); color: var(--deka-ivory); }

/* aside "When": one row per live occurrence, date over muted city */
.event-detail--sessions .v { width: 100%; }
.event-sessions { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.event-session { display: flex; flex-direction: column; }
.event-session__date { font-size: 14.5px; line-height: 1.4; color: var(--deka-ink); }
.event-session__loc  { font-size: 12.5px; color: var(--hm-muted, rgba(4,5,65,0.55)); }

/* the plugin's choose-a-date / other-dates picker, on the bone register band */
.event-register__choose,
.event-register__siblings { max-width: 720px; margin: 0 auto; }
.event-register__siblings { margin-top: 40px; }

.anchor-event-other-dates-title {
	font-family: var(--deka-serif); font-weight: 500; font-size: 20px;
	color: var(--deka-ink); text-align: center; margin: 0 0 22px;
}
/* The DEKA register head already prints a "Choose a date" title above the
   picker, so the plugin's own duplicate is hidden. (The child "Other dates"
   title above stays — it heads a distinct section.) */
.event-register__choose .anchor-event-choose-date-title { display: none; }
.anchor-event-choose-date-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.anchor-event-choose-date-row {
	display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
	background: #fff; border: 1px solid var(--deka-rule); border-radius: 14px;
	padding: 18px 22px; box-shadow: 0 20px 44px -34px rgba(4,5,65,0.30);
}
.anchor-event-choose-date-link { text-decoration: none; display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; min-width: 0; }
.anchor-event-choose-date-date { font-family: var(--deka-serif); font-size: 19px; color: var(--deka-ink); }
.anchor-event-choose-date-label { font-family: var(--deka-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--hm-muted, rgba(4,5,65,0.55)); }
.anchor-event-choose-date-availability { font-size: 13px; color: var(--hm-muted, rgba(4,5,65,0.6)); white-space: nowrap; }
.anchor-event-choose-date-cta {
	flex: 0 0 auto; padding: 11px 22px; border-radius: 999px;
	background: var(--deka-ink); color: var(--deka-ivory);
	font-family: var(--deka-sans); font-weight: 600; font-size: 14px; text-decoration: none;
	transition: filter .2s ease;
}
.anchor-event-choose-date-cta:hover { filter: brightness(1.4); }
.anchor-event-choose-date-empty,
.anchor-event-other-dates-empty { text-align: center; color: var(--hm-muted, rgba(4,5,65,0.6)); }
.anchor-event-other-dates-all { text-align: center; margin-top: 20px; }
.anchor-event-other-dates-link { color: var(--deka-sapphire); border-bottom: 1px solid currentColor; text-decoration: none; }

@media (max-width: 560px) {
	.anchor-event-choose-date-row { gap: 10px; }
	.anchor-event-choose-date-availability { flex-basis: 100%; }
}

/* ── ELITE CTA button ───────────────────────────────────────────────────
   .anchor-btn--primary fills with brand ink, which is the same value as
   the .elite band behind it — the 'Register now' CTA read as invisible
   (client feedback, Jul 2026). Brass is the house accent on dark grounds.
   Scoped to .elite so the shared button component is untouched elsewhere. */
.elite .anchor-btn--primary {
  background: var(--deka-brass);
  color: var(--deka-ink);
  font-weight: 600;
}
.elite .anchor-btn--primary:hover {
  background: var(--deka-brass-deep);
  color: var(--deka-ivory);
}

/* ── .lp-cards layout ──────────────────────────────────────────────────────
   Flex-wrap instead of a fixed column count, so a set of any size fills the
   rows it can and centres whatever is left over on the last row. Cards are
   min 300px and grow to share the row, capped at 420px so a lone card on a
   final row sits at card width rather than stretching across the whole row.

   align-items: stretch — NOT flex-start — is what makes every card match the
   height of the tallest card in its OWN row. align-content: flex-start is the
   rule doing the "don't stretch vertically" job: it packs the rows to the top
   instead of spreading them down the container. */
.acad-why .lp-cards {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    align-content: flex-start;
    gap: 16px;
}
.acad-why .lp-cards > * {
    flex: 1 1 300px;
    /* min() so the floor can never exceed the container on a narrow screen */
    min-width: min(300px, 100%);
    max-width: 420px;
}

/* ── .lp-cards → peek slider on mobile ─────────────────────────────────────
   Client feedback (Jul 2026): stacked cards on a phone hide how much is in
   the set. Same read as the "Beyond Traditional Dentistry" deck on the
   homepage — a horizontal strip with the next card part-showing as the only
   affordance needed.

   Mirrors the rule in laser.css (see the full rationale there for why this
   is scroll-snap and not the .ha-bt transform slider). Kept in both sheets
   rather than hoisted to a shared one because laser.css and academy.css have
   no guaranteed print order relative to each other — each copy sits in the
   same file as the grid rule it overrides, so the cascade is certain.

   The flex-basis clamp carries the responsive story: 82% of the strip on a
   phone (one card plus a ~50px peek), capped at 420px so a 700-860px viewport
   shows two cards and a peek rather than one oversized card. */
@media (max-width: 860px) {
    .acad-why .lp-cards {
        justify-content: flex-start;
        flex-wrap: nowrap;
        gap: 12px;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
        scrollbar-width: none;
        /* Room for the card shadow + hover lift INSIDE the clip (it is an
           overflow container), with the bottom pulled back so the rhythm
           below is unchanged.
           Deliberately NOT the margin-block shorthand: that also sets
           margin-top, which wiped the section's clamp(40px,5vw,60px) gap and
           ran the cards straight into the paragraph above. Only the bottom
           needs compensating. */
        padding-block: 6px 16px;
        margin-bottom: -16px;
    }
    .acad-why .lp-cards::-webkit-scrollbar { display: none; }

    .acad-why .lp-cards > * {
        flex: 0 0 clamp(240px, 82%, 420px);
        /* drop the 300px desktop floor: in slider mode the clamp above is
           what sets the card width, and the floor would eat the peek */
        min-width: 0;
        max-width: none;
        scroll-snap-align: start;
    }
}

/* ── "How to join" CTAs — brass fill + ghost pair ──────────────────────────
   .enroll-cta was filled with --deka-sapphire, which the token file long ago
   remapped to ink — the same value as this section's background — so the
   button read as bare white text on navy. Brass is the house accent on dark
   grounds; the phone line becomes its ghost counterpart so the two read as a
   matched pair rather than a button and a footnote. */
.enroll-actions {
    display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
    margin-top: clamp(30px, 4vh, 40px);
}
.academy-enroll .enroll-cta {
    margin-top: 0;                      /* the row owns the spacing now */
    border: 1px solid var(--deka-brass);
    background: var(--deka-brass);
    color: var(--deka-ink);
}
.academy-enroll .enroll-cta:hover {
    background: var(--deka-brass-deep);
    border-color: var(--deka-brass-deep);
    color: var(--deka-ivory);
}
.academy-enroll .enroll-cta--ghost {
    background: transparent;
    border-color: rgba(255, 255, 255, 0.38);
    color: #fff;
}
.academy-enroll .enroll-cta--ghost:hover {
    background: rgba(255, 255, 255, 0.10);
    border-color: rgba(255, 255, 255, 0.65);
    color: #fff;
}

/* ── Registration section (JotForm) ────────────────────────────────────────
   Ivory ground so the embedded form's own light chrome sits correctly, and a
   measure cap so the form doesn't stretch the full container on desktop. */
.academy-register { background: var(--deka-bone); padding: clamp(64px, 8vh, 110px) 0; }
.academy-register__head { max-width: 62ch; margin: 0 auto; text-align: center; }
.academy-register__head > .kicker {
    display: inline-flex; align-items: center; gap: 10px;
    font-family: var(--deka-mono); font-size: 11px; letter-spacing: 0.16em;
    text-transform: uppercase; color: var(--deka-ink); font-weight: 500;
}
.academy-register__head > .kicker::after { content: ''; width: 24px; height: 1px; background: var(--deka-ink); }
.academy-register__head h2 {
    font-family: var(--deka-serif); font-weight: 300;
    font-size: clamp(30px, 4vw, 46px); line-height: 1.05; letter-spacing: -0.02em;
    color: var(--deka-ink); margin-top: 14px;
}
.academy-register__head h2 em { font-style: italic; }
.academy-register__head p {
    font-size: 16px; line-height: 1.7; color: var(--hm-muted, rgba(4,5,65,0.7));
    margin-top: 16px;
}
.academy-register__head p a { color: var(--deka-ink); text-decoration: underline; text-underline-offset: 3px; }
.academy-register__form {
    max-width: 820px;
    margin: clamp(32px, 4vh, 48px) auto 0;
    /* white card so the embedded JotForm reads as part of the page rather
       than pasted onto it — matches the .enroll-card treatment opposite. */
    background: #fff;
    border: 1px solid var(--deka-rule);
    border-radius: 18px;
    padding: clamp(24px, 4vw, 44px);
    box-shadow: 0 24px 60px -40px rgba(4, 5, 65, 0.45);
}
/* JotForm injects its own wrapper — keep it inside the measure and let it be
   responsive rather than fighting its inline widths. */
.academy-register__form .jotform-form,
.academy-register__form form,
.academy-register__form iframe { max-width: 100% !important; width: 100% !important; }
