/* NC calendar: a single source layout, shared by desktop and mobile. */
.nc-ax-calendar {
    --nc-ax-blue: #4285f4;
    --nc-ax-columns: minmax(175px, 1.2fr) minmax(165px, 1fr) minmax(75px, .5fr) minmax(215px, 1.35fr);
    width: 100%;
    margin: 20px 0;
    color: #20272d;
    font-family: "Open Sans", Arial, sans-serif;
    font-size: 15.5px;
    line-height: 1.5;
}
.nc-ax-calendar--3 { --nc-ax-columns: minmax(0,1.6fr) minmax(0,.6fr) minmax(0,1.4fr); }
.nc-ax-calendar--5 { --nc-ax-columns: 1.2fr 1fr 1fr .6fr 1.4fr; }
.nc-ax-calendar--6 { --nc-ax-columns: 1fr 1.2fr 1fr .8fr .5fr 1.4fr; }
.nc-ax-calendar-head, .nc-ax-calendar-row { display: grid; grid-template-columns: var(--nc-ax-columns); }
.nc-ax-calendar-head { background: var(--nc-ax-blue); color: #fff; border-radius: 8px 8px 0 0; font-size: 14.5px; font-weight: 700; }
.nc-ax-calendar-head > div, .nc-ax-calendar-row > div { min-width: 0; padding: 11px 12px; overflow-wrap: anywhere; }
.nc-ax-calendar-row { align-items: center; background: #fff; border: 1px solid #dfe3e7; border-top: 0; }
.nc-ax-calendar-row:nth-child(even) { background: #f7f9fb; }
.nc-ax-calendar-day { display: block; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #526174; }
.nc-ax-calendar-date-text { font-weight: 700; }
.nc-ax-calendar-session-time { display:block; margin-top:4px; white-space:nowrap; }
.nc-ax-calendar-label { display: none; }
.nc-ax-calendar-actions { display: grid; grid-template-columns: .65fr 1.35fr; align-items: stretch; gap: 10px; }
.nc-ax-calendar-actions > :only-child { grid-column: 1 / -1; }
.nc-ax-action { display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 36px; padding: 7px 10px; border: 1px solid transparent; border-radius: 6px; font: 600 13.5px/1.3 "Open Sans", Arial, sans-serif; text-align: center; text-decoration: none; }
.nc-ax-info { background: #fff; border-color: #b8c1cc; color: #3c4653; }
.nc-ax-info:hover { background: #edf0f4; color: #20272d; }
.nc-ax-enrol { background: #4285f4; border-color: #4285f4; color: #fff; }
.nc-ax-enrol:hover { background: #2868cf; border-color: #2868cf; color: #fff; }
.nc-ax-full { background: #606873; border-color: #606873; color: #fff; pointer-events: none; }
.nc-ax-action:focus-visible { outline: 3px solid #20272d; outline-offset: 3px; }
@media (min-width: 769px) and (max-width: 1100px) {
    .nc-ax-calendar { font-size: 14px; }
    .nc-ax-calendar--5 { --nc-ax-columns: 1.2fr 1fr 1fr .6fr 1.4fr; }
    .nc-ax-calendar--6 { --nc-ax-columns: 1fr 1.2fr 1fr .8fr .5fr 1.4fr; }
    .nc-ax-calendar-head > div, .nc-ax-calendar-row > div { padding: 12px 8px; }
    .nc-ax-calendar-actions { gap: 6px; }
    .nc-ax-action { padding: 7px 6px; }
}
/* Keep the existing mobile card layout for class date-range calendars. */
@media (max-width: 768px) {
    .nc-ax-calendar-date-range .nc-ax-calendar { margin: 12px 0; font-size: 15.5px; }
    .nc-ax-calendar-date-range .nc-ax-calendar-head { display: none; }
    .nc-ax-calendar-date-range .nc-ax-calendar-body { display: grid; gap: 12px; }
    .nc-ax-calendar-date-range .nc-ax-calendar-row { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); grid-template-areas: "date date" "name name" "location location" "time cost" "actions actions"; align-items: start; background: #fff; border: 1px solid #d4dce2; border-radius: 12px; box-shadow: 0 2px 7px rgb(25 40 55 / 8%); overflow: hidden; }
    .nc-ax-calendar-date-range .nc-ax-calendar-row:nth-child(even) { background: #fff; }
    .nc-ax-calendar-date-range .nc-ax-calendar-row > div { padding: 10px 14px; }
    .nc-ax-calendar-date-range .nc-ax-calendar-row .nc-ax-calendar-date { grid-column: 1 / -1; grid-row: 1; background: #f1f4f7; border-bottom: 1px solid #e0e5e9; padding: 12px 14px; }
    .nc-ax-calendar-date-range .nc-ax-calendar-day { margin-bottom: 3px; color: #2c62aa; font-size: 11px; }
    .nc-ax-calendar-date-range .nc-ax-calendar-date-text { font-size: 18px; line-height: 1.25; }
    .nc-ax-calendar-date-range .nc-ax-calendar-name { grid-area: name; }
    .nc-ax-calendar-date-range .nc-ax-calendar-location { grid-area: location; }
    .nc-ax-calendar-date-range .nc-ax-calendar-row .nc-ax-calendar-name, .nc-ax-calendar-date-range .nc-ax-calendar-row .nc-ax-calendar-location { padding-bottom: 0; }
    .nc-ax-calendar-date-range .nc-ax-calendar-time { grid-area: time; }
    .nc-ax-calendar-date-range .nc-ax-calendar-cost { grid-area: cost; }
    .nc-ax-calendar-date-range .nc-ax-calendar-label { display: block; margin-bottom: 5px; color: #657181; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
    .nc-ax-calendar-date-range .nc-ax-calendar-row .nc-ax-calendar-actions { grid-area: actions; padding: 6px 14px 14px; gap: 10px; }
    .nc-ax-calendar-date-range .nc-ax-action { min-height: 44px; }
}

/* Calendar-owned defaults; no Bricks selectors or external font required. */
.nc-ax-calendar-shell { width:100%; min-width:0; font-size:15.5px; line-height:1.5; }
.nc-ax-calendar-shell, .nc-ax-calendar-shell *, .nc-ax-calendar-shell *::before, .nc-ax-calendar-shell *::after { box-sizing:border-box; }
.nc-ax-calendar-shell [hidden] { display:none; }
.nc-ax-calendar-configured { font-family:var(--nc-ax-font, system-ui, sans-serif); color:#20272d; container-type:inline-size; }
.nc-ax-calendar-configured .nc-ax-calendar { --nc-ax-blue:inherit; --nc-ax-columns:inherit; font-family:inherit; }
.nc-ax-calendar-configured .nc-ax-action { font-family:inherit; font-size:13.5px; }
.nc-ax-calendar-configured .nc-ax-enrol { background:var(--nc-ax-blue); border-color:var(--nc-ax-blue); }
.nc-ax-calendar-configured .nc-ax-enrol:hover { filter:brightness(.88); }
.nc-ax-calendar-configured .nc-ax-calendar-head { font-size:14.5px; }
.nc-ax-calendar-filters { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; margin:12px 0; }
.nc-ax-calendar-filters label { display:flex; flex:1 1 180px; flex-direction:column; gap:6px; margin:0; font-family:inherit; font-size:14px; font-weight:600; line-height:1.5; }
.nc-ax-calendar-filters select { width:100%; min-height:38px; padding:7px 12px; border:1px solid #8995a4; border-radius:6px; background:#fff; color:#20272d; font:inherit; font-size:14px; }
.nc-ax-calendar-filters select { appearance:auto; }
.nc-ax-calendar-view-home select[data-nc-ax-location] optgroup { background:#edf0f4; color:#526174; font-weight:700; }
.nc-ax-calendar-view-home select[data-nc-ax-location] option { background:#fff; color:#20272d; font-weight:400; }
.nc-ax-calendar-filters :focus-visible { outline:3px solid #20272d; outline-offset:3px; }
.nc-ax-calendar-status, .nc-ax-calendar-notice, .nc-ax-calendar-message { font:inherit; margin:12px 0; }
.nc-ax-calendar-notice { padding:12px; background:#f1f4f7; border-radius:6px; }
.nc-ax-calendar-row[data-nc-ax-stripe="0"] { background:#fff; }
.nc-ax-calendar-row[data-nc-ax-stripe="1"] { background:#f7f9fb; }
/* Existing configured class calendars also retain cards in narrow containers. */
@container (max-width:900px) {
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-head { display:none; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-body { display:grid; gap:12px; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-row { grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); grid-template-areas:"date date" "name name" "state location" "time cost" "actions actions"; border:1px solid #d4dce2; border-radius:12px; background:#fff; overflow:hidden; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-row > div { padding:10px 14px; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-date { grid-area:date; background:#f1f4f7; border-bottom:1px solid #e0e5e9; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-state { grid-area:state; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-location { grid-area:location; }
 .nc-ax-calendar-date-range.nc-ax-calendar-view-state .nc-ax-calendar-row .nc-ax-calendar-location { grid-column:1 / -1; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-name { grid-area:name; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-time { grid-area:time; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-cost { grid-area:cost; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-actions { grid-area:actions; padding:6px 14px 14px; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-label { display:block; color:#526174; font-size:12px; font-weight:700; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-date-text { font-size:18px; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-action { min-height:44px; }
}
@media(max-width:768px) {
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-row { grid-template-areas:"date date" "name name" "state location" "time cost" "actions actions"; }
 .nc-ax-calendar-configured.nc-ax-calendar-date-range .nc-ax-calendar-state { grid-area:state; }
 .nc-ax-calendar-date-range.nc-ax-calendar-view-state .nc-ax-calendar-row .nc-ax-calendar-location { grid-column:1 / -1; }
 .nc-ax-calendar-date-range .nc-ax-calendar-row[data-nc-ax-stripe] { background:#fff; }
}

/* Workshop rows reuse every data cell and booking action at narrow widths. */
.nc-ax-calendar-mobile-head { display:none; }
/* Legacy pages size their shortcode wrapper from its contents, so they use a viewport breakpoint. */
@media (max-width:900px) {
 .nc-ax-calendar-workshops .nc-ax-calendar { --nc-ax-mobile-columns:minmax(0,1fr) minmax(0,1fr); margin:12px 0; font-size:14px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-details { --nc-ax-mobile-columns:minmax(8.75em,1.25fr) minmax(0,1.2fr) minmax(0,1fr); }
 /* Retain the real table headers for screen readers; the compact legend is visual only. */
 .nc-ax-calendar-workshops .nc-ax-calendar-head { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
 .nc-ax-calendar-mobile-head { display:grid; grid-template-columns:var(--nc-ax-mobile-columns); background:var(--nc-ax-blue); color:#fff; border-radius:8px 8px 0 0; font-size:12px; font-weight:700; }
 .nc-ax-calendar-mobile-head > span { padding:10px 7px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-row { grid-template-columns:var(--nc-ax-mobile-columns); grid-template-areas:"date actions" "cost actions"; grid-template-rows:auto 1fr; align-items:start; padding:12px 0; row-gap:5px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-details .nc-ax-calendar-row { grid-template-areas:"date name actions" "cost location actions"; }
 .nc-ax-calendar-workshops .nc-ax-calendar-row > div { padding:0 7px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-date { grid-area:date; }
 .nc-ax-calendar-workshops .nc-ax-calendar-day { font-size:10px; letter-spacing:.02em; color:#2c62aa; margin-bottom:3px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-date-text { display:block; font-size:13px; line-height:1.4; }
 .nc-ax-calendar-workshops .nc-ax-calendar-session-time { font-size:12px; color:#526174; }
 .nc-ax-calendar-workshops .nc-ax-calendar-name { grid-area:name; font-weight:600; }
 .nc-ax-calendar-workshops .nc-ax-calendar-location { grid-area:location; font-size:12px; color:#526174; }
 .nc-ax-calendar-workshops .nc-ax-calendar-cost { grid-area:cost; font-weight:700; font-size:15px; text-align:left; }
 .nc-ax-calendar-workshops .nc-ax-calendar-actions { grid-area:actions; grid-template-columns:minmax(0,1fr); gap:6px; }
 .nc-ax-calendar-workshops .nc-ax-action { min-height:44px; padding:6px 4px; font-size:12px; }
}

/* Saved calendars also adapt when embedded in a narrow desktop column. */
@container (max-width:900px) {
 .nc-ax-calendar-workshops .nc-ax-calendar { --nc-ax-mobile-columns:minmax(0,1fr) minmax(0,1fr); margin:12px 0; font-size:14px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-details { --nc-ax-mobile-columns:minmax(8.75em,1.25fr) minmax(0,1.2fr) minmax(0,1fr); }
 /* Retain the real table headers for screen readers; the compact legend is visual only. */
 .nc-ax-calendar-workshops .nc-ax-calendar-head { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
 .nc-ax-calendar-mobile-head { display:grid; grid-template-columns:var(--nc-ax-mobile-columns); background:var(--nc-ax-blue); color:#fff; border-radius:8px 8px 0 0; font-size:12px; font-weight:700; }
 .nc-ax-calendar-mobile-head > span { padding:10px 7px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-row { grid-template-columns:var(--nc-ax-mobile-columns); grid-template-areas:"date actions" "cost actions"; grid-template-rows:auto 1fr; align-items:start; padding:12px 0; row-gap:5px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-details .nc-ax-calendar-row { grid-template-areas:"date name actions" "cost location actions"; }
 .nc-ax-calendar-workshops .nc-ax-calendar-row > div { padding:0 7px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-date { grid-area:date; }
 .nc-ax-calendar-workshops .nc-ax-calendar-day { font-size:10px; letter-spacing:.02em; color:#2c62aa; margin-bottom:3px; }
 .nc-ax-calendar-workshops .nc-ax-calendar-date-text { display:block; font-size:13px; line-height:1.4; }
 .nc-ax-calendar-workshops .nc-ax-calendar-session-time { font-size:12px; color:#526174; }
 .nc-ax-calendar-workshops .nc-ax-calendar-name { grid-area:name; font-weight:600; }
 .nc-ax-calendar-workshops .nc-ax-calendar-location { grid-area:location; font-size:12px; color:#526174; }
 .nc-ax-calendar-workshops .nc-ax-calendar-cost { grid-area:cost; font-weight:700; font-size:15px; text-align:left; }
 .nc-ax-calendar-workshops .nc-ax-calendar-actions { grid-area:actions; grid-template-columns:minmax(0,1fr); gap:6px; }
 .nc-ax-calendar-workshops .nc-ax-action { min-height:44px; padding:6px 4px; font-size:12px; }
}

/* Both labels occupy the same grid cell, so flashing never resizes the button. */
.nc-ax-calendar .nc-ax-action.flashing-text { display:grid; }
.nc-ax-calendar .nc-ax-action.flashing-text > span { grid-area:1 / 1; }
.nc-ax-limited-label { animation:nc-ax-limited-label 2s steps(1,end) infinite; }
.nc-ax-enrol-label { animation:nc-ax-enrol-label 2s steps(1,end) infinite; }
@keyframes nc-ax-limited-label { 0%,100% { opacity:1; } 50% { opacity:0; } }
@keyframes nc-ax-enrol-label { 0%,100% { opacity:0; } 50% { opacity:1; } }
@media(prefers-reduced-motion:reduce) {
 .nc-ax-limited-label { animation:none; opacity:1; }
 .nc-ax-enrol-label { animation:none; opacity:0; }
}
.nc-ax-calendar-more { display:flex; justify-content:center; margin:10px 0; font:inherit; font-size:14px; }
.nc-ax-calendar-more button { min-height:36px; padding:6px 12px; border:1px solid #8995a4; border-radius:6px; background:#fff; color:#20272d; font:inherit; cursor:pointer; }
.nc-ax-calendar-more button:focus-visible { outline:3px solid #20272d; outline-offset:3px; }

@media (max-width:768px), (pointer:coarse) {
 .nc-ax-calendar-filters select, .nc-ax-calendar-more button { min-height:44px; }
}
