/* Dent-X interface foundations. Shared by every shortcode; never styles the host page. */
.dx-ds, #dx-modal, body.dentx-um-page, body.dentx-commerce-page {
  --dx-font-body: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --dx-font-heading: var(--dx-font-body);
  --dx-font-head: var(--dx-font-heading);
  --dx-bg: #f7f7f8;
  --dx-surface: #fff;
  --dx-surface-soft: #f3f3f5;
  --dx-text: #242228;
  --dx-text-body: var(--dx-text);
  --dx-text-soft: #65636c;
  --dx-text-faint: #77747e;
  --dx-border: rgba(36,34,40,.10);
  --dx-border-strong: rgba(36,34,40,.18);
  --dx-brand: var(--dentx-primary, #380a19);
  --dx-brand-hover: var(--dentx-primary-hover, #582034);
  --dx-brand-soft: var(--dentx-primary-soft, #f6eff1);
  --dx-brand-line: rgb(var(--dentx-primary-rgb, 56 10 25) / .28);
  --dx-gold: var(--dentx-accent, #f6e073);
  --dx-gold-soft: var(--dentx-accent-soft, #fbf7e7);
  --dx-edition-gold: var(--dx-gold);
  --dx-blue: var(--dx-brand);
  --dx-dark: var(--dx-text);
  --dx-accent: var(--dx-brand);
  --dx-success: #267256;
  --dx-success-soft: #f0f7f3;
  --dx-warning: #86601f;
  --dx-warning-soft: #fbf6e9;
  --dx-danger: #b33c46;
  --dx-danger-soft: #fcf1f2;
  --dx-radius-xs: 8px;
  --dx-radius-sm: 10px;
  --dx-radius-md: 16px;
  --dx-radius-lg: 20px;
  --dx-shadow-sm: 0 1px 2px rgba(36,34,40,.035);
  --dx-shadow-md: 0 8px 32px rgba(36,34,40,.08);
  --dx-shadow-focus: 0 0 0 3px rgb(var(--dentx-primary-rgb, 56 10 25) / .12);
  --dx-space-1: 4px; --dx-space-2: 8px; --dx-space-3: 12px; --dx-space-4: 16px;
  --dx-space-5: 20px; --dx-space-6: 24px; --dx-space-7: 28px; --dx-space-8: 32px;
  --dx-ease: cubic-bezier(.23,1,.32,1);
  --dx-dur-fast: 140ms; --dx-dur: 180ms; --dx-dur-slow: 240ms;
  --dx-control-h: 44px;
  --dx-width-auth: 920px;
  --dx-width-account: 1180px;
  --dx-width-catalog: 1280px;
  --dx-layout-gutter: 24px;
  --dx-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2365636c' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  --dx-control-shell-bg: var(--dx-surface-soft);
  --dx-control-shell-border: var(--dx-border);
  --dx-control-shell-shadow: none;
  --dx-segment-shell-bg: var(--dx-surface-soft);
  --dx-segment-shell-border: transparent;
  --dx-segment-shell-shadow: none;
  --dx-segment-shell-radius: 12px;
  --dx-segment-shell-pad: 4px;
  --dx-chip-gap: 4px; --dx-chip-pad-y: 10px; --dx-chip-pad-x: 14px;
  --dx-pill-fs: 14px; --dx-pill-weight: 500; --dx-pill-weight-active: 600; --dx-pill-letter-spacing: 0;
  --dx-focus-ring-color: var(--dx-brand-line); --dx-focus-ring-shadow: var(--dx-shadow-focus);
  --dx-console-bg: var(--dx-surface);
  --dx-console-border: var(--dx-border);
  --dx-console-radius: 16px; --dx-console-shadow: none; --dx-console-blur: 0px; --dx-console-pad: 16px;
  --dx-console-sticky-top: 8px; --dx-console-sticky-top-mobile: 0px;
  --dx-console-fade-w: 16px; --dx-console-fade-inset: 2px;
}
.dx-ds { color: var(--dx-text); font: 400 15px/1.5 var(--dx-font-body); -webkit-font-smoothing: antialiased; }
.dx-ds, .dx-ds *, .dx-ds *::before, .dx-ds *::after { box-sizing: border-box; }
.dx-ds :is(h1,h2,h3,h4,h5,h6) { font-family: var(--dx-font-heading) !important; color: var(--dx-text); text-wrap: balance; }
.dx-ds :is(button,input,select,textarea) { font-family: var(--dx-font-body); }
.dx-ds .material-symbols-rounded { font-family: "Material Symbols Rounded"; font-weight: 400; font-style: normal; font-size: 24px; line-height: 1; letter-spacing: normal; text-transform: none; white-space: nowrap; word-wrap: normal; display: inline-block; -webkit-font-feature-settings: "liga"; -webkit-font-smoothing: antialiased; }
/* Elementor flex widgets need a definite width before sizing their content.
 * Otherwise responsive shortcodes can reserve their narrowest layout's height,
 * leaving empty space below the final, wider layout. Only Dent-X widgets opt in. */
.elementor .elementor-widget-shortcode:has(.dx-ds) {
  width: 100%; min-width: 0; max-width: 100%;
}
/* Ohio's full-width Elementor breakout uses the viewport despite the boxed page
 * and sidebar. Keep Dent-X containers in the space their page actually provides. */
body:is(.theme-ohio,.wp-theme-ohio) #content .elementor .e-con.e-parent:has(.elementor-widget-shortcode .dx-ds) {
  min-width: 0 !important; left: auto !important;
}

/* Shortcodes size themselves inside the host widget; they never widen its page.
 * Content density selects the cap. Container queries also cover narrow Elementor columns. */
.dx-ds:is(.dx-access:not(.dx-maintenance),.dx-profile,.dx-passes,.dx-market,.dx-time-wrapper) {
  width: 100%; min-width: 0; max-width: var(--dx-layout-width,var(--dx-width-catalog));
  margin-inline: auto; padding: var(--dx-layout-gutter); container: dentx-layout / inline-size;
}
@media (max-width: 959px) { .dx-ds { --dx-layout-gutter: 16px; } }
.dx-ds [hidden] { display: none !important; }
.dx-ds :is(a,button,input,select,textarea,summary):focus-visible { outline: 2px solid var(--dx-brand); outline-offset: 3px; }
.dx-ds :is(button,input,select,textarea) { font-variant-numeric: tabular-nums; }
.dx-ds .dx-shell, .dx-ds .dx-card { background: var(--dx-surface); border: 1px solid var(--dx-border); border-radius: var(--dx-radius-md); box-shadow: var(--dx-shadow-sm); }
.dx-ds .dx-title { margin: 0; font-size: clamp(28px,2.5vw,36px); font-weight: 700; letter-spacing: -.035em; line-height: 1.15; }
.dx-ds .dx-subtitle { margin: 8px 0 0; color: var(--dx-text-soft); font-size: 15px; line-height: 1.5; }
.dx-ds .dx-control-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.dx-ds .dx-control { height: var(--dx-control-h); border: 1px solid var(--dx-control-shell-border); background: var(--dx-control-shell-bg); border-radius: var(--dx-radius-sm); padding: 0 16px; color: var(--dx-text); font-size: 15px; line-height: 1.4; box-shadow: none; }
.dx-ds .dx-control:focus-visible { border-color: var(--dx-brand); box-shadow: var(--dx-shadow-focus); outline: none; }
.dx-ds .dx-control::placeholder { color: var(--dx-text-faint); }
.dx-ds .dx-pillbar, .dx-ds .dx-segment-shell { display: flex; gap: var(--dx-chip-gap); padding: var(--dx-segment-shell-pad); border: 1px solid var(--dx-segment-shell-border); border-radius: var(--dx-segment-shell-radius); background: var(--dx-segment-shell-bg); box-shadow: none; }
.dx-ds .dx-pillbar { overflow-x: auto; scrollbar-width: none; }
.dx-ds .dx-pillbar::-webkit-scrollbar { display: none; }
.dx-ds .dx-pillbar-shell { position: relative; min-width: 0; }
.dx-ds .dx-pill { border: 0; background: transparent !important; border-radius: var(--dx-radius-xs); min-height: 40px; padding: var(--dx-chip-pad-y) var(--dx-chip-pad-x); color: var(--dx-text-soft) !important; font-size: var(--dx-pill-fs); font-weight: var(--dx-pill-weight); white-space: nowrap; cursor: pointer; transition: background 140ms, color 140ms; }
.dx-ds .dx-pill:is(:hover,:focus-visible) { color: var(--dx-brand) !important; background: var(--dx-brand-soft) !important; }
.dx-ds .dx-pill.is-active { background: var(--dx-surface) !important; color: var(--dx-brand) !important; box-shadow: var(--dx-shadow-sm); font-weight: var(--dx-pill-weight-active); }
.dx-ds .dx-control-shell { border: 1px solid var(--dx-control-shell-border); background: var(--dx-control-shell-bg); border-radius: var(--dx-radius-sm); box-shadow: none; }
.dx-ds .dx-console-shell { border: 1px solid var(--dx-console-border); border-radius: var(--dx-console-radius); background: var(--dx-console-bg); box-shadow: none; }
.dx-ds .dx-console-sticky { position: sticky; top: var(--dx-console-sticky-top); z-index: 30; }
body.admin-bar .dx-ds .dx-console-sticky { top: calc(32px + var(--dx-console-sticky-top)); }
.dx-ds .dx-chip-rhythm { padding: var(--dx-chip-pad-y) var(--dx-chip-pad-x); font-size: 14px; font-weight: 500; }
/* Buttons own their state colors. Narrow !important boundaries keep theme/Elementor
 * link and button hover rules from repainting shortcode actions; variants use tokens. */
.dx-ds .dx-btn {
  --dx-button-bg: var(--dx-surface); --dx-button-fg: var(--dx-text); --dx-button-border: var(--dx-border-strong);
  --dx-button-hover-bg: var(--dx-surface-soft); --dx-button-hover-fg: var(--dx-text); --dx-button-hover-border: var(--dx-border-strong);
  min-height: 44px; height: auto; border-radius: var(--dx-radius-sm); border: 1px solid;
  background: var(--dx-button-bg) !important; color: var(--dx-button-fg) !important; border-color: var(--dx-button-border) !important;
  padding: 10px 16px; font-weight: 600; font-size: 14px; line-height: 1.4; text-transform: none; letter-spacing: 0;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer;
  transition: background-color 140ms, border-color 140ms, color 140ms;
}
.dx-ds .dx-btn:is(:hover,:focus-visible,:active) { background: var(--dx-button-hover-bg) !important; border-color: var(--dx-button-hover-border) !important; color: var(--dx-button-hover-fg) !important; }
.dx-ds .dx-btn--primary { --dx-button-bg: var(--dx-brand); --dx-button-fg: #fff; --dx-button-border: var(--dx-brand); --dx-button-hover-bg: var(--dx-brand-hover); --dx-button-hover-fg: #fff; --dx-button-hover-border: var(--dx-brand-hover); }
.dx-ds .dx-btn--ghost { --dx-button-bg: transparent; --dx-button-fg: var(--dx-text-soft); --dx-button-border: transparent; --dx-button-hover-border: transparent; }
.dx-ds .dx-btn:is([disabled],[aria-disabled="true"],.is-disabled,.dx-btn--disabled) { opacity: .5; cursor: not-allowed; pointer-events: none; }
.dx-ds :is(.dx-btn,.dx-pill), .dx-ds :is(.dx-btn,.dx-pill):is(:hover,:focus,:active,:visited) { -webkit-text-fill-color: currentColor !important; text-decoration: none !important; text-shadow: none !important; box-shadow: none !important; filter: none !important; transform: none !important; }
.dx-ds :is(.dx-btn,.dx-pill)::before, .dx-ds :is(.dx-btn,.dx-pill)::after { content: none !important; }
.dx-ds .dx-btn > :is(span,i,svg) { color: inherit !important; -webkit-text-fill-color: currentColor !important; }
/* Small controls share the same boundary; ticket foil and loading indicators retain their own layers. */
:is(.dx-ds,#dx-modal) :is(.dx-day-btn,.dx-chip,.dx-day-empty-reset,.dx-filter-reset,.dx-search-clear,.dx-modal-close,.dxp-modal-close,.dx-sponsor-close,.dx-e-slotseg), .dx-um-scope .um .um-button, .dx-commerce :is(.wc-block-components-button,.woocommerce .button) { -webkit-text-fill-color: currentColor !important; text-decoration: none !important; text-shadow: none !important; filter: none !important; box-shadow: none !important; transform: none !important; }
:is(.dx-ds,#dx-modal) :is(.dx-day-btn,.dx-chip,.dx-day-empty-reset,.dx-filter-reset,.dx-search-clear,.dx-modal-close,.dxp-modal-close,.dx-sponsor-close,.dx-e-slotseg)::before, :is(.dx-ds,#dx-modal) :is(.dx-day-btn,.dx-chip,.dx-day-empty-reset,.dx-filter-reset,.dx-search-clear,.dx-modal-close,.dxp-modal-close,.dx-sponsor-close,.dx-e-slotseg)::after { content: none !important; }

.dx-ds .dx-badge { display: inline-flex; align-items: center; gap: 6px; min-height: 24px; border-radius: 6px; padding: 3px 8px; border: 0; background: var(--dx-surface-soft); color: var(--dx-text-soft); font-size: 12px; line-height: 1.4; font-weight: 500; letter-spacing: 0; white-space: nowrap; }
.dx-ds .dx-badge--brand { color: var(--dx-brand); background: var(--dx-brand-soft); }
.dx-ds .dx-badge--success { color: var(--dx-success); background: var(--dx-success-soft); }
.dx-ds .dx-badge--warning { color: var(--dx-warning); background: var(--dx-warning-soft); }
.dx-ds .dx-badge--danger { color: var(--dx-danger); background: var(--dx-danger-soft); }
.dx-ds .dx-card-title { margin: 0; font-size: 20px; line-height: 1.3; font-weight: 650; color: var(--dx-text); letter-spacing: -.02em; }
.dx-ds .dx-muted { color: var(--dx-text-soft); }
@media (max-width: 782px) { body.admin-bar .dx-ds .dx-console-sticky { top: calc(46px + var(--dx-console-sticky-top-mobile)); } }
@media (prefers-reduced-motion: reduce) { .dx-ds *, .dx-ds *::before, .dx-ds *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }
