/* ═══════════════════════════════════════════════════════════
   Dentisity Congress 2026 — Registration Styles
   ═══════════════════════════════════════════════════════════ */

/* ── Layout wrapper ────────────────────────────────────────── */

.dentisity-register-wrapper {
	max-width: 700px;
	margin: 24px auto 40px;
}

/* ── Header ────────────────────────────────────────────────── */

.dentisity-header {
	text-align: center;
	margin-bottom: 20px;
}

.dentisity-badge {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 10px;
	font-weight: 700;
	color: #4f46e5;
	background: #f5f3ff;
	border: 1px solid #e0e7ff;
	border-radius: 999px;
	padding: 4px 12px;
	margin-bottom: 12px;
	letter-spacing: .7px;
	text-transform: uppercase;
}

.dentisity-header h1 {
	font-size: 30px;
	line-height: 1.1;
	margin: 0 0 8px;
	color: #0f172a;
	font-weight: 800;
}

.dentisity-header p {
	max-width: 460px;
	margin: 0 auto;
	font-size: 13.5px;
	color: #64748b;
	line-height: 1.5;
}

/* ── Mini steps ────────────────────────────────────────────── */

/* ── Mini steps progress bar ───────────────────────────────── */

.dentisity-mini-steps {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: nowrap;
	gap: 0;
	margin: 0 0 18px;
	padding: 0;
	overflow: hidden; /* no wrapping ever */
}

/* Connector line between steps */
.dms-connector {
	flex: 1;
	min-width: 8px;
	max-width: 32px;
	height: 2px;
	background: #e2e8f0;
	border-radius: 1px;
	transition: background .4s ease;
	flex-shrink: 1;
}
.dms-connector.dms-conn-done {
	background: #16a34a;
}

/* Step pill */
.dms-step {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 12px 5px 5px;
	border-radius: 999px;
	background: #f1f5f9;
	color: #94a3b8;
	font-size: 11px;
	font-weight: 700;
	white-space: nowrap;
	flex-shrink: 1;
	min-width: 0;
	transition: background .35s ease, color .35s ease, box-shadow .35s ease;
	cursor: default;
}

/* Number/icon circle */
.dms-dot {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: #cbd5e1;
	color: #fff;
	font-size: 10px;
	font-weight: 800;
	flex-shrink: 0;
	transition: background .35s ease, transform .25s ease;
}

/* Label — hidden on inactive steps via max-width collapse */
.dms-label {
	display: inline-block;
	max-width: 0;
	overflow: hidden;
	opacity: 0;
	/* impeccable-disable-next-line layout-transition -- max-width collapse is needed to reclaim layout space; grid-template-columns would require changing the parent from inline-flex */
	transition: max-width .35s ease, opacity .25s ease;
	white-space: nowrap;
}

/* ── Done ─────────────────────────────────────────────────── */
.dms-step.done {
	background: #f0fdf4;
	color: #15803d;
	padding: 5px 12px 5px 5px;
}
.dms-step.done .dms-dot {
	background: #16a34a;
}
.dms-step.done .dms-label {
	max-width: 120px;
	opacity: .75;
}

/* ── Active (current step) ────────────────────────────────── */
.dms-step.active {
	background: #4f46e5;
	color: #fff;
	box-shadow: 0 2px 10px rgba(79,70,229,.35);
	padding: 5px 14px 5px 5px;
}
.dms-step.active .dms-dot {
	background: rgba(255,255,255,.25);
	color: #fff;
}
.dms-step.active .dms-label {
	max-width: 140px;
	opacity: 1;
}

/* Loading + active (waiting for async step) */
.dms-step.loading.active {
	background: #f59e0b;
	color: #fff;
	box-shadow: 0 2px 10px rgba(245,158,11,.35);
}
.dms-step.loading.active .dms-dot {
	background: rgba(255,255,255,.25);
	/* spinning indicator */
	position: relative;
}
.dms-step.loading.active .dms-dot::after {
	content: '';
	position: absolute;
	inset: 2px;
	border: 2px solid rgba(255,255,255,.6);
	border-top-color: #fff;
	border-radius: 50%;
	animation: dentisitySpin .7s linear infinite;
}

/* ── Rejected ─────────────────────────────────────────────── */
.dms-step.rejected {
	background: #fef2f2;
	color: #dc2626;
}
.dms-step.rejected .dms-dot {
	background: #dc2626;
}
.dms-step.rejected .dms-label {
	max-width: 120px;
	opacity: 1;
}

@keyframes dentisitySpin {
	to { transform: rotate(360deg); }
}

.dentisity-step-note {
	margin: -12px 0 18px;
	text-align: center;
	font-size: 12.5px;
	color: #64748b;
	line-height: 1.4;
}

.dentisity-step-note.success { color: #16a34a; }
.dentisity-step-note.warning { color: #d97706; }
.dentisity-step-note.error   { color: #dc2626; }

@keyframes dentisitySpin {
	to { transform: rotate(360deg); }
}

/* ── Form card ─────────────────────────────────────────────── */

.dentisity-form-card {
	background: #fff;
	border: 1px solid #e8ecf0;
	border-radius: 14px;
	padding: 28px 32px 32px;
	box-shadow: 0 1px 3px rgba(15, 23, 42, .04), 0 6px 24px rgba(15, 23, 42, .05);
}
.dentisity-form-card:has(.dnt-v2-reg),
.dentisity-form-card:has(.dnt-v2-pass-wrap),
.dentisity-form-card:has(.dnt-v2-ws-wrap) {
	padding: 0;
}

/* ── Card title ────────────────────────────────────────────── */

.card-title {
	margin-bottom: 22px;
}

.card-title h2 {
	font-size: 18px;
	font-weight: 700;
	margin: 0 0 3px;
	color: #0f172a;
	line-height: 1.2;
}

.card-title p {
	font-size: 13px;
	color: #64748b;
	margin: 0;
}

/* ── Form section groups ───────────────────────────────────── */

.dentisity-form-section {
	margin-bottom: 20px;
}

.dentisity-form-section-label {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .8px;
	color: #94a3b8;
	margin-bottom: 10px;
	padding-bottom: 7px;
	border-bottom: 1px solid #f1f5f9;
}

/* ── Registration form ─────────────────────────────────────── */

.dentisity-registration-form {
	display: block;
}

/* ── Field wrapper ─────────────────────────────────────────── */

/* Ensure [hidden] isn't overridden by display:flex below */
[hidden] { display: none !important; }

.dentisity-field {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.dentisity-registration-form p,
.dentisity-registration-form .dentisity-field {
	margin: 0;
}

.dentisity-registration-form label {
	display: block;
	font-size: 11px;
	font-weight: 600;
	color: #475569;
	letter-spacing: .1px;
	line-height: 1.4;
}

/* Required asterisk */
.dentisity-required {
	color: #e11d48;
	margin-left: 1px;
}

abbr[title] {
	text-decoration: none;
	cursor: default;
}

/* ── Two-column form grid ───────────────────────────────────── */

.dnt-form-grid-2col {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px 16px;
}

/* ── Base input / select ───────────────────────────────────── */

.dentisity-registration-form input:not([type="file"]):not([type="checkbox"]),
.dentisity-registration-form select {
	width: 100%;
	height: 44px !important;
	min-height: 44px !important;
	padding: 0 14px !important;
	border: 1.5px solid #e2e8f0 !important;
	border-radius: 8px !important;
	background: #fafbfc !important;
	color: #0f172a !important;
	font-size: 14px !important;
	line-height: 44px !important;
	box-sizing: border-box !important;
	transition: border-color .15s, background .15s, box-shadow .15s;
	appearance: auto !important;
	-webkit-appearance: auto !important;
	outline: none !important;
}

.dentisity-registration-form select {
	transition: border-color .15s !important;
	background-image: none !important;
}

.dentisity-registration-form select option {
	color: #0f172a;
	background: #fff;
}

.dentisity-registration-form input::placeholder {
	color: #b0bac4 !important;
	font-size: 13px !important;
}

.dentisity-registration-form input:focus:not([type="file"]) {
	outline: none !important;
	border-color: #4f46e5 !important;
	background: #fff !important;
	box-shadow: 0 0 0 3px rgba(79, 70, 229, .1) !important;
}

.dentisity-registration-form select:focus {
	outline: none !important;
	border-color: #4f46e5 !important;
	background: #fafbfc !important;
	box-shadow: none !important;
}

/* ── Password field with show/hide toggle ──────────────────── */

.dentisity-password-wrap {
	position: relative;
}

.dentisity-password-wrap input {
	padding-right: 40px !important;
}

.dentisity-pw-toggle {
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);
	background: none;
	border: none;
	cursor: pointer;
	color: #94a3b8;
	padding: 2px;
	display: flex;
	align-items: center;
	line-height: 1;
	transition: color .15s;
}

.dentisity-pw-toggle:hover {
	color: #4f46e5;
}

.dentisity-pw-toggle svg {
	width: 16px;
	height: 16px;
	pointer-events: none;
}

.dentisity-pw-match-hint {
	display: block;
	margin-top: 4px;
	font-size: 11.5px;
	font-weight: 600;
	min-height: 16px;
	transition: color .15s;
}

.dentisity-pw-match-hint.ok  { color: #16a34a; }
.dentisity-pw-match-hint.err { color: #dc2626; }

/* ── Password strength bar ─────────────────────────────────── */

.dentisity-pw-strength {
	display: flex;
	gap: 4px;
	margin-top: 6px;
}

.dentisity-pw-strength-seg {
	flex: 1;
	height: 4px;
	border-radius: 2px;
	background: #e5e7eb;
	transition: background .2s;
}

.dentisity-pw-strength-seg.active.pw-weak   { background: #ef4444; }
.dentisity-pw-strength-seg.active.pw-fair   { background: #f97316; }
.dentisity-pw-strength-seg.active.pw-good   { background: #eab308; }
.dentisity-pw-strength-seg.active.pw-strong { background: #22c55e; }

.dentisity-pw-strength-label {
	display: block;
	font-size: 11px;
	font-weight: 600;
	margin-top: 3px;
	min-height: 15px;
	transition: color .2s;
}

.dentisity-pw-strength-label.pw-weak   { color: #ef4444; }
.dentisity-pw-strength-label.pw-fair   { color: #f97316; }
.dentisity-pw-strength-label.pw-good   { color: #eab308; }
.dentisity-pw-strength-label.pw-strong { color: #22c55e; }

/* ── Form messages container (pre-allocated to prevent layout shifts) ── */

.dentisity-form-messages {
	display: none;
}

.dentisity-form-messages:not(:empty) {
	display: block;
	margin-bottom: 12px;
}

/* ── File upload area ──────────────────────────────────────── */

.dentisity-upload-area {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 16px;
	border: 1.5px dashed #cbd5e1;
	border-radius: 8px;
	background: #f8fafc;
	cursor: pointer;
	transition: border-color .15s, background .15s;
}

.dentisity-upload-area:hover {
	border-color: #4f46e5;
	background: #fafbff;
}

.dentisity-upload-area:has(input:focus) {
	border-color: #4f46e5;
	box-shadow: 0 0 0 3px rgba(79, 70, 229, .1);
}

.dentisity-upload-icon {
	flex-shrink: 0;
	width: 34px;
	height: 34px;
	background: #eef2ff;
	border-radius: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #4f46e5;
}

.dentisity-upload-icon svg {
	width: 18px;
	height: 18px;
}

.dentisity-upload-text {
	flex: 1;
	min-width: 0;
}

.dentisity-upload-text strong {
	display: block;
	font-size: 13px;
	font-weight: 600;
	color: #0f172a;
	margin-bottom: 2px;
}

.dentisity-upload-text small {
	font-size: 11.5px;
	color: #94a3b8;
}

.dentisity-upload-area input[type="file"] {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
}

/* Selected file name */
.dentisity-upload-area.has-file {
	border-color: #4f46e5;
	background: #fafbff;
}

.dentisity-upload-area.has-file .dentisity-upload-icon {
	background: #4f46e5;
	color: #fff;
}

/* ── Full-width fields ─────────────────────────────────────── */

#dentisity_university_other_field,
.dentisity-registration-form .dentisity-full,
.dentisity-field--full,
.dentisity-form-section,
.woocommerce-error,
.woocommerce-message {
	grid-column: 1 / -1;
}

/* ── Error messages ────────────────────────────────────────── */

.dentisity-registration-form .woocommerce-error {
	background: #fef2f2;
	border: 1px solid #fecaca;
	border-radius: 8px;
	padding: 12px 16px;
	color: #dc2626;
	font-size: 13px;
	list-style: none;
	margin: 0 !important;
}

.dentisity-registration-form .woocommerce-error li {
	margin: 0;
	padding: 3px 0;
}

.dentisity-registration-form .woocommerce-error li::before {
	content: '· ';
}

/* Redesigned error list (replaces woocommerce-error inside .dentisity-form-messages) */
.dentisity-error-list {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	background: #fef2f2;
	border: 1px solid #fecaca;
	border-radius: 10px;
	padding: 14px 16px;
	color: #dc2626;
	font-size: 13px;
}

.dentisity-error-list svg {
	flex-shrink: 0;
	margin-top: 1px;
	color: #dc2626;
}

.dentisity-error-list ul {
	margin: 0;
	padding: 0;
	list-style: none;
	flex: 1;
}

.dentisity-error-list li {
	margin: 0;
	padding: 2px 0;
	line-height: 1.5;
}

.dentisity-error-list li + li {
	border-top: 1px solid rgba(220, 38, 38, .1);
}

/* ── Textarea inside registration forms ────────────────────── */

.dentisity-registration-form textarea {
	width: 100%;
	min-height: 96px;
	padding: 10px 14px;
	border: 1.5px solid #e2e8f0;
	border-radius: 8px;
	background: #fafbfc;
	color: #0f172a;
	font-size: 14px;
	line-height: 1.5;
	box-sizing: border-box;
	resize: vertical;
	font-family: inherit;
	transition: border-color .15s, box-shadow .15s;
}

.dentisity-registration-form textarea:focus {
	outline: none;
	border-color: #4f46e5;
	background: #fff;
	box-shadow: 0 0 0 3px rgba(79, 70, 229, .1);
}

/* ── Pre-submit notice ─────────────────────────────────────── */

.dentisity-reg-notice {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	padding: 10px 14px;
	background: #f0f9ff;
	border: 1px solid #bae6fd;
	border-radius: 8px;
	font-size: 13px;
	color: #0c4a6e;
	line-height: 1.5;
	margin-top: 4px;
}

.dentisity-reg-notice__icon {
	flex-shrink: 0;
	margin-top: 1px;
	color: #0284c7;
}

.dentisity-reg-notice__text {
	flex: 1;
}

/* ── Captcha (Turnstile) ────────────────────────────────────── */

.dentisity-field--captcha {
	margin-top: 8px;
	display: flex;
	justify-content: center;
}

.dentisity-field--captcha .cf-turnstile {
	border-radius: 10px;
	overflow: hidden;
}

.dentisity-reg-notice + .dentisity-field--captcha,
.dentisity-reg-notice + .dentisity-field--submit {
	margin-top: 20px;
}

/* ── Submit field wrapper ───────────────────────────────────── */

.dentisity-field--submit {
	margin-top: 8px;
}

/* ── Submit button ─────────────────────────────────────────── */

.dentisity-registration-form button[type="submit"],
.dentisity-submit-btn {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	height: 48px;
	border: none;
	border-radius: 10px;
	background: linear-gradient(135deg, #4f46e5, #6d28d9);
	color: #fff;
	font-size: 15px;
	font-weight: 700;
	cursor: pointer;
	letter-spacing: .2px;
	transition: opacity .15s, transform .1s, box-shadow .15s;
	box-shadow: 0 2px 12px rgba(79, 70, 229, .32);
	overflow: hidden;
}

.dentisity-registration-form button[type="submit"]:hover,
.dentisity-submit-btn:hover {
	opacity: .92;
	box-shadow: 0 4px 18px rgba(79, 70, 229, .42);
}

.dentisity-registration-form button[type="submit"]:active,
.dentisity-submit-btn:active {
	transform: scale(.99);
}

.dentisity-registration-form button[type="submit"]:focus-visible,
.dentisity-submit-btn:focus-visible {
	outline: 3px solid #818cf8;
	outline-offset: 2px;
}

.dentisity-submit-btn__arrow {
	flex-shrink: 0;
	transition: transform .2s;
}

.dentisity-submit-btn:hover .dentisity-submit-btn__arrow {
	transform: translateX(3px);
}

/* Loading state */
.dentisity-submit-btn__spinner {
	display: none;
	width: 18px;
	height: 18px;
	border: 2.5px solid rgba(255, 255, 255, .35);
	border-top-color: #fff;
	border-radius: 50%;
	animation: dentisitySpin .65s linear infinite;
	flex-shrink: 0;
}

.is-submitting .dentisity-submit-btn .dentisity-submit-btn__label,
.is-submitting .dentisity-submit-btn .dentisity-submit-btn__arrow {
	opacity: 0;
}

.is-submitting .dentisity-submit-btn .dentisity-submit-btn__spinner {
	display: block;
	position: absolute;
}

.dentisity-submit-btn:disabled {
	opacity: .7;
	cursor: not-allowed;
}

/* ── Focus visible (keyboard nav) ──────────────────────────── */

.dentisity-registration-form input:focus-visible:not([type="file"]),
.dentisity-registration-form select:focus-visible,
.dentisity-registration-form textarea:focus-visible {
	outline: none;
	border-color: #4f46e5 !important;
	box-shadow: 0 0 0 3px rgba(79, 70, 229, .15) !important;
}

.dentisity-pw-toggle:focus-visible {
	outline: 2px solid #818cf8;
	outline-offset: 2px;
	border-radius: 4px;
}

/* ── Upload drag state ──────────────────────────────────────── */

.dentisity-upload-area.is-dragging {
	border-color: #4f46e5;
	background: #f0f0ff;
	box-shadow: 0 0 0 3px rgba(79, 70, 229, .15);
}

/* ── OTP verification screen ───────────────────────────────── */

.dentisity-otp-wrapper {
	text-align: center;
	padding: 40px 32px 32px;
	border: 1px solid #e8ecf0;
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 1px 3px rgba(15, 23, 42, .04), 0 6px 24px rgba(15, 23, 42, .05);
}

.dentisity-otp-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 60px;
	height: 60px;
	background: linear-gradient(135deg, #eef2ff, #f5f3ff);
	border-radius: 16px;
	font-size: 28px;
	margin-bottom: 18px;
}

.dentisity-otp-wrapper h2 {
	margin: 0 0 8px;
	font-size: 22px;
	font-weight: 700;
	color: #0f172a;
}

.dentisity-otp-desc {
	margin: 0 auto 28px;
	max-width: 400px;
	font-size: 13.5px;
	color: #64748b;
	line-height: 1.55;
}

.dentisity-otp-notice {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 20px;
	padding: 9px 16px;
	background: #f0fdf4;
	border: 1px solid #bbf7d0;
	border-radius: 8px;
	font-size: 13px;
	color: #16a34a;
	font-weight: 600;
}

.dentisity-otp-error {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 20px;
	padding: 9px 16px;
	background: #fef2f2;
	border: 1px solid #fecaca;
	border-radius: 8px;
	font-size: 13px;
	color: #dc2626;
	font-weight: 600;
}

.dentisity-otp-form {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 20px;
}

/* 5-digit input boxes */
.dentisity-otp-digits {
	display: flex;
	gap: 10px;
}

.otp-digit {
	width: 56px !important;
	height: 64px !important;
	min-height: 64px !important;
	padding: 0 !important;
	border: 2px solid #e2e8f0 !important;
	border-radius: 10px !important;
	background: #fafbfc !important;
	color: #0f172a !important;
	font-size: 28px !important;
	font-weight: 700 !important;
	line-height: 64px !important;
	text-align: center !important;
	box-sizing: border-box !important;
	caret-color: #4f46e5;
	transition: border-color .15s, box-shadow .15s, background .15s;
}

.otp-digit:focus {
	outline: none !important;
	border-color: #4f46e5 !important;
	background: #fff !important;
	box-shadow: 0 0 0 3px rgba(79, 70, 229, .12) !important;
}

.dentisity-otp-submit {
	height: 44px;
	padding: 0 36px;
	border: none;
	border-radius: 8px;
	background: linear-gradient(135deg, #4f46e5, #6d28d9);
	color: #fff !important;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	letter-spacing: .2px;
	box-shadow: 0 2px 8px rgba(79, 70, 229, .3);
	transition: opacity .15s;
}

.dentisity-otp-submit:hover {
	opacity: .9;
}

.dentisity-otp-resend {
	margin: 0;
	font-size: 12.5px;
	color: #94a3b8;
}

.dentisity-otp-resend a {
	color: #4f46e5;
	text-decoration: none;
	font-weight: 600;
}

.dentisity-otp-resend a:hover {
	text-decoration: underline;
}

/* ── Dashboard status placeholders ────────────────────────── */

.dentisity-dashboard-placeholder {
	text-align: center;
	padding: 40px 24px;
	border: 1px solid #e8ecf0;
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 1px 3px rgba(15, 23, 42, .04), 0 6px 24px rgba(15, 23, 42, .05);
}

.dentisity-dashboard-placeholder h2 {
	margin: 0 0 10px;
	font-size: 21px;
	font-weight: 700;
}

.dentisity-dashboard-placeholder p {
	margin: 5px 0;
	color: #64748b;
	font-size: 13.5px;
	line-height: 1.5;
}

.dentisity-dashboard-placeholder.success { border-top: 3px solid #16a34a; }
.dentisity-dashboard-placeholder.warning { border-top: 3px solid #d97706; }
.dentisity-dashboard-placeholder.error   { border-top: 3px solid #dc2626; }

.dentisity-dashboard-placeholder.success h2 { color: #16a34a; }
.dentisity-dashboard-placeholder.warning h2 { color: #d97706; }
.dentisity-dashboard-placeholder.error h2   { color: #dc2626; }

/* ── Responsive ────────────────────────────────────────────── */

@media (max-width: 700px) {
	.dentisity-register-wrapper {
		max-width: 100%;
		margin: 12px 0 24px;
	}

	.dentisity-header h1 {
		font-size: 24px;
	}

	.dentisity-form-card {
		padding: 20px 18px 24px;
		border-radius: 10px;
	}

	.dentisity-mini-steps {
		gap: 0;
	}
	.dms-step {
		font-size: 10px;
		padding: 4px 10px 4px 4px;
	}
	.dms-dot {
		width: 20px;
		height: 20px;
		font-size: 9px;
	}
	.dms-step.active {
		padding: 4px 12px 4px 4px;
	}
	.dms-connector {
		min-width: 4px;
		max-width: 16px;
	}
	/* Truncate labels with ellipsis when space is tight */
	.dms-label {
		max-width: 60px;
		text-overflow: ellipsis;
		overflow: hidden;
	}
	.dms-step.active .dms-label {
		max-width: 80px;
	}

	/* Single column grid on mobile */
	.dnt-form-grid-2col {
		grid-template-columns: 1fr;
		gap: 12px;
	}

	/* Larger touch targets + prevent iOS auto-zoom (needs ≥16px) */
	.dentisity-registration-form input:not([type="file"]):not([type="checkbox"]),
	.dentisity-registration-form select,
	.dentisity-registration-form textarea {
		height: 48px !important;
		min-height: 48px !important;
		line-height: 48px !important;
		font-size: 16px !important;
		padding: 0 14px !important;
		border-radius: 10px !important;
	}

	.dentisity-registration-form textarea {
		height: auto !important;
		min-height: 96px !important;
		line-height: 1.5 !important;
		padding: 12px 14px !important;
	}

	.dentisity-form-card {
		padding: 18px 16px 22px;
	}

	.dentisity-submit-btn,
	.dentisity-registration-form button[type="submit"] {
		height: 52px;
		font-size: 16px;
	}

	.dentisity-otp-wrapper {
		padding: 28px 18px 24px;
	}

	.dentisity-otp-digits {
		gap: 7px;
	}

	.otp-digit {
		width: 46px !important;
		height: 54px !important;
		min-height: 54px !important;
		font-size: 22px !important;
		line-height: 54px !important;
		border-radius: 8px !important;
	}
}

/* ── STEP 4: PASS SELECTION ─────────────────────────────── */
.dentisity-pass-grid {
    display: flex;
    flex-direction: column;
    gap: 16px;
    max-width: 680px;
    margin: 0 auto;
}

/* Mobile-only meta row: hidden on desktop */
.pass-card-mobile-meta { display: none; }

.dentisity-pass-card {
    width: 100%;
    display: grid;
    grid-template-columns: 200px 1fr;
    border: 2px solid #e2e8f0;
    border-radius: 16px;
    cursor: pointer;
    overflow: hidden;
    position: relative;
    transition: border-color .2s, box-shadow .2s;
    background: #fff;
    min-height: 120px;
}

.dentisity-pass-card:hover {
    border-color: #4f46e5;
    box-shadow: 0 4px 20px rgba(79,70,229,.12);
}
@media (hover: hover) and (pointer: fine) {
    .dentisity-pass-card:hover {
        transform: translateY(-2px);
    }
}

.dentisity-pass-card.pass-selected {
    border-color: #4f46e5;
    border-width: 3px;
    box-shadow: 0 0 0 3px rgba(79,70,229,.18), 0 8px 24px rgba(79,70,229,.15);
}

.dentisity-pass-card.pass-recommended {
    border-color: #f59e0b;
}
.dentisity-pass-card.pass-recommended:hover,
.dentisity-pass-card.pass-recommended.pass-selected {
    border-color: #d97706;
    box-shadow: 0 0 0 3px rgba(245,158,11,.18), 0 8px 24px rgba(245,158,11,.15);
}

/* Header strip */
.pass-card-header {
    background: linear-gradient(160deg,#4f46e5,#7c3aed);
    padding: 46px 16px 20px;
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}
.dentisity-pass-card[data-tier="1"] .pass-card-header { background: linear-gradient(135deg,#0ea5e9,#0284c7); }
.dentisity-pass-card[data-tier="2"] .pass-card-header { background: linear-gradient(135deg,#4f46e5,#7c3aed); }
.dentisity-pass-card[data-tier="3"] .pass-card-header { background: linear-gradient(135deg,#0d9488,#0f766e); }
.dentisity-pass-card[data-tier="4"] .pass-card-header { background: linear-gradient(135deg,#dc2626,#b91c1c); }
.dentisity-pass-card.pass-recommended .pass-card-header { background: linear-gradient(135deg,#f59e0b,#d97706); }

.pass-tier {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .8px;
    opacity: .75;
    display: block;
    margin-bottom: 6px;
}
.pass-card-name {
    font-size: 18px;
    font-weight: 800;
    line-height: 1.2;
    margin-bottom: 8px;
}
.pass-card-price {
    font-size: 24px;
    font-weight: 800;
    margin-top: 10px;
    margin-bottom: 6px;
}
.pass-card-price .woocommerce-Price-amount,
.pass-card-price bdi,
.pass-card-price .amount {
    color: #fff !important;
    font-size: inherit !important;
}

/* Slots badge — bottom of header column on desktop */
.pass-card-header .pass-slots-left {
    margin-top: auto;
    background: rgba(255,255,255,.18);
    color: #fff;
    border-color: rgba(255,255,255,.35);
    font-size: 11px;
}
.pass-card-header .pass-slots-left.pass-slots-urgent {
    background: rgba(254,202,202,.25);
    color: #fff;
    border-color: rgba(254,202,202,.5);
}

/* Checkmark overlay in header */
.pass-card-check {
    position: absolute;
    bottom: 12px;
    right: 12px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #4f46e5;
    border: 2.5px solid #fff;
    box-shadow: 0 2px 6px rgba(79,70,229,.45);
    opacity: 0;
    transform: scale(.6);
    transition: opacity .18s, transform .18s;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}
.dentisity-pass-card.pass-selected .pass-card-check {
    opacity: 1;
    transform: scale(1);
}

/* Top badge strip */
.pass-card-top-badges {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 4;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 6px;
    padding: 9px 12px;
    pointer-events: none;
}
.pass-card-top-badges-left {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}
.pass-card-top-badges-right {
    flex-shrink: 0;
}

/* Mobile custom badges — hidden on desktop, shown below name on mobile */
.pass-card-mobile-badges {
    display: none;
}

/* Body */
.pass-card-body {
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
}

.pass-card-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.pass-badge {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 99px;
    font-size: 11px;
    font-weight: 700;
    border: 1px solid transparent;
}
.pass-badge-recommended {
    background: #fef3c7;
    color: #92400e;
    border-color: #fcd34d;
}
.pass-badge-upgrade {
    background: #f0fdf4;
    color: #166534;
    border-color: #86efac;
}
.pass-badge-custom {
    background: #f1f5f9;
    color: #334155;
    border-color: #e2e8f0;
}

.pass-card-excerpt {
    font-size: 13px;
    color: #64748b;
    margin: 0;
    line-height: 1.5;
    max-height: 6em;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
    mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
    /* impeccable-disable-next-line layout-transition -- excerpt expand from em-truncated to full; dynamic content height, no inner wrapper for grid approach */
    transition: max-height .35s cubic-bezier(.4,0,.2,1),
                -webkit-mask-image .3s ease,
                mask-image .3s ease;
}

.pass-card-excerpt.excerpt-expanded {
    max-height: 600px;
    -webkit-mask-image: none;
    mask-image: none;
}

.pass-card-excerpt p { margin: 0 0 6px; }
.pass-card-excerpt ul, .pass-card-excerpt ol { margin: 0 0 6px; padding-left: 18px; }
.pass-card-excerpt strong { font-weight: 700; }
.pass-card-excerpt em { font-style: italic; }

.pass-free-ws-pill {
    display: inline-block;
    background: #f0fdf4;
    color: #166534;
    border: 1px solid #86efac;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 600;
    padding: 4px 12px;
    align-self: flex-start;
}

/* ── Passes left at current wave price ──────────────────────── */
.pass-slots-left {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: rgba(249,115,22,.08);
    color: #c2410c;
    border: 1px solid rgba(249,115,22,.3);
    border-radius: 99px;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 10px;
    align-self: flex-start;
}
.pass-slots-left.pass-slots-urgent {
    background: rgba(220,38,38,.08);
    color: #991b1b;
    border-color: rgba(220,38,38,.35);
    animation: pulse-urgent .9s ease-in-out infinite alternate;
}
@keyframes pulse-urgent {
    from { opacity: 1; }
    to   { opacity: .65; }
}

/* Sold-out badge */
.pass-slots-left.pass-slots-sold-out {
    background: rgba(100,116,139,.15);
    color: #64748b;
    border-color: rgba(100,116,139,.35);
}
.pass-card-header .pass-slots-left.pass-slots-sold-out {
    background: rgba(0,0,0,.22);
    color: rgba(255,255,255,.75);
    border-color: rgba(255,255,255,.2);
}

/* Sold-out card */
.dentisity-pass-card.pass-sold-out {
    opacity: .6;
    cursor: not-allowed;
    pointer-events: none;
}
.dentisity-pass-card.pass-sold-out .pass-card-header {
    filter: grayscale(.6);
}
.dnt-wave-border-wrap--sold-out {
    filter: grayscale(.6);
    opacity: .65;
}

/* Continue button */
.dentisity-pass-continue-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #4f46e5;
    color: #fff;
    border: none;
    border-radius: 10px;
    padding: 13px 32px;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: background .18s, opacity .18s;
}
.dentisity-pass-continue-btn:disabled {
    opacity: .4;
    cursor: not-allowed;
}

/* ── Pass card: mobile layout ≤560px ────────────────────────── */
@media (max-width: 560px) {
    /* Card: vertical — 72px color strip on top, info section below */
    .dentisity-pass-card {
        grid-template-columns: 1fr;
        grid-template-rows: 72px auto;
        min-height: unset;
    }

    /* Colored top strip — hide desktop text, keep only check + slots */
    .pass-card-header {
        position: relative;
        padding: 10px 12px;
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: flex-start;
        justify-content: flex-start;
        min-height: 72px;
    }
    .pass-card-header .pass-tier,
    .pass-card-header .pass-card-name,
    .pass-card-header .pass-card-price {
        display: none;
    }
    /* Slots badge: top-left of color strip */
    .pass-card-header .pass-slots-left {
        position: absolute;
        top: 10px;
        left: 10px;
        margin-top: 0;
        font-size: 10px;
        padding: 3px 9px;
        max-width: calc(100% - 50px);
    }
    .pass-card-check {
        position: absolute;
        top: 10px;
        right: 10px;
    }

    /* Body */
    .pass-card-body {
        padding: 12px 14px;
        gap: 8px;
        justify-content: flex-start;
    }

    /* Mobile meta row: tier+name left, price right */
    .pass-card-mobile-meta {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        padding-bottom: 10px;
        border-bottom: 1px solid #f1f5f9;
    }
    .pass-card-mobile-meta-left {
        display: flex;
        flex-direction: column;
        gap: 2px;
        min-width: 0;
        flex: 1;
    }
    .pass-tier-mob {
        font-size: 10px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .6px;
        color: #94a3b8;
    }
    .pass-card-name-mob {
        font-size: 16px;
        font-weight: 800;
        color: #0f172a;
        line-height: 1.2;
        word-break: break-word;
    }
    .pass-card-price-mob {
        flex-shrink: 0;
        text-align: right;
    }
    .pass-card-price-mob .dnt-wave-price-wrap { align-items: flex-end; }
    .pass-card-price-mob .dnt-wave-current    { font-size: 18px; color: #0f172a; text-shadow: none; }
    .pass-card-price-mob .dnt-wave-regular    { font-size: 11px; color: #94a3b8; text-decoration: line-through; }
    .pass-card-price-mob .dnt-wave-label      { font-size: 9px; }
    /* Regular (struck-through) price inside wave: keep it muted, never override */
    .pass-card-price-mob .dnt-wave-regular .woocommerce-Price-amount,
    .pass-card-price-mob .dnt-wave-regular bdi,
    .pass-card-price-mob .dnt-wave-regular .amount {
        color: #94a3b8 !important;
        font-size: inherit !important;
        font-weight: inherit !important;
    }
    /* Current wave price and plain (no-wave) price: dark bold */
    .pass-card-price-mob .dnt-wave-current .woocommerce-Price-amount,
    .pass-card-price-mob .dnt-wave-current bdi,
    .pass-card-price-mob .dnt-wave-current .amount,
    .pass-card-price-mob > .woocommerce-Price-amount,
    .pass-card-price-mob > bdi,
    .pass-card-price-mob > .amount {
        color: #0f172a !important;
        font-size: 18px !important;
        font-weight: 800 !important;
    }

    /* Hide top badge strip on mobile (wave label stays next to price; custom badges moved below name) */
    .pass-card-top-badges {
        display: none;
    }

    /* Custom badges below pass name — same compact size as wave label */
    .pass-card-mobile-badges {
        display: flex;
        flex-wrap: wrap;
        gap: 4px;
        margin-top: 3px;
    }
    .pass-card-mobile-badges .pass-badge {
        font-size: 9px;
        padding: 1px 6px;
    }
}
/* ── Workshop selection actions + pricing summary ──────── */

/* ── Mini pass card ── */
.dnt-mini-pass-card {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 24px;
    padding: 10px 14px 10px 10px;
    background: linear-gradient(135deg,#4f46e5,#7c3aed);
    border-radius: 12px;
    overflow: hidden;
    color: #fff;
}
.dnt-mini-pass-card[data-tier="1"] { background: linear-gradient(135deg,#0ea5e9,#0284c7); }
.dnt-mini-pass-card[data-tier="2"] { background: linear-gradient(135deg,#4f46e5,#7c3aed); }
.dnt-mini-pass-card[data-tier="3"] { background: linear-gradient(135deg,#0d9488,#0f766e); }
.dnt-mini-pass-card[data-tier="4"] { background: linear-gradient(135deg,#dc2626,#b91c1c); }
.dnt-mini-pass-thumb {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: 8px;
    background-size: cover;
    background-position: center;
    background-color: rgba(255,255,255,.15);
    border: 1.5px solid rgba(255,255,255,.25);
}
.dnt-mini-pass-thumb--gradient { background-image: none; }
.dnt-mini-pass-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.dnt-mini-pass-tier {
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .8px;
    opacity: .7;
}
.dnt-mini-pass-name {
    font-size: 14px;
    font-weight: 800;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.dnt-mini-pass-free {
    font-size: 11px;
    opacity: .85;
}
.dnt-mini-pass-price {
    flex-shrink: 0;
    font-size: 16px;
    font-weight: 800;
    text-align: right;
}
.dnt-mini-pass-price .woocommerce-Price-amount,
.dnt-mini-pass-price bdi,
.dnt-mini-pass-price .amount { color: #fff !important; font-size: inherit !important; }
.dnt-mini-pass-price .dnt-wave-current { font-size: 16px; color: #fff; }
.dnt-mini-pass-price .dnt-wave-regular { font-size: 11px; color: rgba(255,255,255,.6); text-decoration: line-through; }

/* ── Order summary card ── */
.dnt-ws-order-summary {
    margin-top: 10px;
    background: #f8fafc;
    border: 1.5px solid #e2e8f0;
    border-radius: 12px;
    padding: 14px 18px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.dnt-ws-order-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 13px;
    color: #475569;
}
.dnt-ws-order-ws,
.dnt-ws-order-ao {
    color: #334155;
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    /* impeccable-disable-next-line layout-transition -- row reveal; grid-template-rows requires inner wrapper (HTML change in PHP template) */
    transition: max-height 0.28s ease, opacity 0.22s ease, margin 0.28s ease;
    margin-top: -8px;
}
.dnt-ws-order-ws.dnt-ws-row-visible,
.dnt-ws-order-ao.dnt-ws-row-visible {
    max-height: 48px;
    opacity: 1;
    margin-top: 0;
}
.dnt-ws-order-pass { color: #64748b; font-size: 12px; }
.dnt-ws-order-divider {
    border: none;
    border-top: 1.5px solid #e2e8f0;
    margin: 2px 0;
}
.dnt-ws-order-total { font-size: 15px; font-weight: 800; color: #0f172a; }
.dnt-ws-order-total-val { color: #4f46e5; display: inline-block; }
.dnt-ws-order-total-val.dnt-total-pop { animation: dnt-total-pop 0.3s ease; }
@keyframes dnt-total-pop {
	0%   { transform: scale(1);    color: #4f46e5; }
	40%  { transform: scale(1.12); color: #7c3aed; }
	100% { transform: scale(1);    color: #4f46e5; }
}
.dnt-ws-order-value { font-weight: 700; display: inline-block; }
.dnt-ws-order-value.dnt-val-pop { animation: dnt-total-pop 0.25s ease; }
.dnt-ws-order-hint { margin: 0; font-size: 12px; color: #94a3b8; }

/* ── Workshop row overlay badges ── */
.ws-wave-badge-overlay {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 3;
    pointer-events: none;
    animation: dnt-wave-pulse 2s ease-in-out infinite;
}
.ws-slots-badge-overlay {
    position: absolute;
    bottom: 8px;
    left: 8px;
    z-index: 3;
    pointer-events: none;
}

.dentisity-pricing-summary {
    margin-top: 20px;
    padding: 14px 18px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    font-size: 14px;
    color: #475569;
}

.dentisity-ws-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 20px;
    flex-wrap: wrap;
}

.dentisity-ws-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 11px 22px;
    border-radius: 10px;
    border: 1.5px solid #cbd5e1;
    background: #f8fafc;
    color: #475569;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: background .15s, border-color .15s, color .15s;
    cursor: pointer;
}

.dentisity-ws-back-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    color: #1e293b;
    text-decoration: none;
}

.dentisity-ws-continue-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 28px;
    border-radius: 10px;
    border: none;
    background: #4f46e5;
    color: #fff;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s, opacity .15s;
}

.dentisity-ws-continue-btn:hover {
    background: #4338ca;
}

.dentisity-ws-continue-btn:disabled {
    opacity: .4;
    cursor: not-allowed;
}

/* ── Workshop catalogue grid ────────────────────────────── */

.dentisity-workshop-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 20px;
	margin-bottom: 24px;
}

@media (max-width: 640px) {
	.dentisity-workshop-grid {
		grid-template-columns: 1fr 1fr;
		gap: 12px;
	}
}

@media (max-width: 400px) {
	.dentisity-workshop-grid {
		grid-template-columns: 1fr;
	}
}

/* Day group header */
.dnt-day-group {
	margin-bottom: 8px;
	display: grid;
	grid-template-rows: auto 1fr;
	transition: grid-template-rows 0.38s cubic-bezier(0.4,0,0.2,1);
}
.dnt-day-group.dnt-day-collapsed {
	grid-template-rows: auto 0fr;
}
.dnt-cat-day-header {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 28px 0 12px;
	width: 100%;
	background: none;
	border: none;
	padding: 0;
	cursor: pointer;
	text-align: left;
}
.dnt-day-group:first-child .dnt-cat-day-header { margin-top: 0; }
.dnt-cat-day-label {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #64748b;
	white-space: nowrap;
}
.dnt-cat-day-header::before { display: none; }
.dnt-cat-day-header::after {
	content: '';
	flex: 1;
	height: 1px;
	background: #e2e8f0;
}
.dnt-day-chevron {
	flex-shrink: 0;
	color: #94a3b8;
	transition: transform 0.22s ease;
}
.dnt-cat-day-header[aria-expanded="false"] .dnt-day-chevron {
	transform: rotate(-90deg);
}
.dnt-day-group-body {
	overflow: hidden;
	transition: opacity 0.3s ease;
	opacity: 1;
	padding-bottom: 4px;
}
.dnt-day-group.dnt-day-collapsed .dnt-day-group-body {
	opacity: 0;
	padding-bottom: 0;
}

/* Empty state */
.dnt-cat-empty {
	color: #64748b;
	font-size: 15px;
	text-align: center;
	padding: 48px 0;
}

/* ── Workshop card ──────────────────────────────────────────── */
.dentisity-workshop-card {
	border-radius: 0 16px 16px 0;
	overflow: hidden;
	background: #1e293b;
	border: 1px solid rgba(255,255,255,.08);
	box-shadow: 0 2px 12px rgba(0,0,0,.18);
	transition: transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s cubic-bezier(.4,0,.2,1);
	/* Force GPU compositing so overflow:hidden clips the thumb zoom correctly */
	transform: translateZ(0);
	display: flex;
	flex-direction: column;
}

@media (hover: hover) {
	.dentisity-workshop-card:hover {
		transform: translateY(-5px);
		box-shadow: 0 20px 48px rgba(0,0,0,.28);
		transition: transform .3s cubic-bezier(.4,0,.2,1), box-shadow .3s cubic-bezier(.4,0,.2,1);
	}
	.dentisity-workshop-card:hover .ws-card-thumb {
		transform: scale(1.04);
		transition: transform .3s cubic-bezier(.4,0,.2,1);
	}
}

/* Low-stock urgency accent — pulsing amber glow via box-shadow */
@keyframes dnt-low-stock-pulse {
	0%, 100% { box-shadow: 0 2px 12px rgba(0,0,0,.18), -4px 0 14px 2px rgba(245,158,11,.55); }
	50%       { box-shadow: 0 2px 12px rgba(0,0,0,.18), -1px 0  4px 0  rgba(245,158,11,.15); }
}
.dentisity-workshop-card:has(.ws-slots-low):not(.ws-enrolled) {
	animation: dnt-low-stock-pulse 2s ease-in-out infinite;
}
/* When also animating in, the combined rule above takes over */
.dentisity-workshop-card:has(.ws-slots-low):not(.ws-enrolled).dnt-anim-pop {
	animation: dnt-pop-in .45s cubic-bezier(.22,1,.36,1) var(--dnt-pop-delay, 0ms) both,
	           dnt-low-stock-pulse 2s calc(var(--dnt-pop-delay, 0ms) + .5s) ease-in-out infinite;
}

/* Thumbnail — image/gradient area */
.ws-card-thumb {
	position: relative;
	min-height: 148px;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	flex-shrink: 0;
	overflow: hidden;
	transition: transform .3s cubic-bezier(.4,0,.2,1);
}

.ws-card-thumb-link {
	display: block;
	text-decoration: none;
	color: inherit;
	overflow: hidden;
}


/* Stronger gradient — anchors text, prevents wash-out on bright images */
.ws-card-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(
		to bottom,
		rgba(0,0,0,.08) 0%,
		rgba(0,0,0,.04) 40%,
		rgba(15,23,42,.55) 100%
	);
	pointer-events: none;
}

/* Badges — top of thumb */
.ws-card-badges {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 6px;
	padding: 10px 10px 0;
	z-index: 3;
	pointer-events: none;
}

.ws-status-pill {
	padding: 3px 9px;
	border-radius: 99px;
	font-size: 10px;
	font-weight: 700;
	line-height: 1.4;
	backdrop-filter: blur(6px);
}
.ws-status-enrolled { background: rgba(209,250,229,.92); color: #065f46; }
.ws-status-unavail  { background: rgba(241,245,249,.92); color: #64748b; }
.ws-status-full     { background: rgba(254,226,226,.92); color: #991b1b; }

.ws-slots-badge {
	padding: 3px 9px;
	border-radius: 99px;
	font-size: 10px;
	font-weight: 700;
	line-height: 1.4;
	backdrop-filter: blur(6px);
	margin-left: auto;
}
.ws-slots-ok   { background: rgba(209,250,229,.92); color: #065f46; }
.ws-slots-low  { background: rgba(254,243,199,.95); color: #92400e; }
.ws-slots-full { background: rgba(254,226,226,.92); color: #991b1b; }

/* Content — below image */
.ws-card-content {
	padding: 14px 16px 10px;
	color: #fff;
	flex: 1;
	display: flex;
	flex-direction: column;
}

.ws-card-title {
	font-size: 15px;
	font-weight: 700;
	margin: 0 0 7px;
	line-height: 1.35;
	color: #fff;
	/* 3-line clamp keeps grid uniform across variable-length titles */
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.ws-card-title-link {
	color: #fff;
	text-decoration: none;
}

.ws-card-thumb-link:hover .ws-card-title,
.ws-card-title-link:hover {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ws-card-host,
.ws-card-date {
	display: flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	color: rgba(255,255,255,.85);
	margin-bottom: 3px;
}

.ws-meta-icon {
	width: 12px;
	height: 12px;
	flex-shrink: 0;
	opacity: .75;
}

/* Price row — pinned to bottom via flex */
.ws-card-price {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 8px;
	margin-top: 10px;
	padding-top: 10px;
	font-size: 20px;
	font-weight: 800;
	color: #fff;
	letter-spacing: -.02em;
	line-height: 1.1;
	/* Hairline separator that doesn't scream */
	border-top: 1px solid rgba(255,255,255,.08);
}

/* Push the separator line to the same height on cards without wave pricing.
   Wave-price cards have an extra strikethrough line (~16 px) above the main price;
   matching that padding makes border-top sit at the same level across all cards. */
.ws-card-price:not(:has(.dnt-wave-price-wrap)) {
	padding-top: 26px;
}

.ws-card-wave-badge {
	flex-shrink: 0;
	align-self: flex-end;
}

.ws-price-free { color: #4ade80; }

.ws-free-pass-badge {
	display: inline-block;
	margin-top: 4px;
	padding: 2px 8px;
	background: rgba(236,253,245,.15);
	color: #6ee7b7;
	border: 1px solid rgba(110,231,183,.4);
	border-radius: 999px;
	font-size: 10px;
	font-weight: 600;
	white-space: nowrap;
}

/* Footer — buttons */
.ws-card-footer {
	padding: 10px 14px;
	background: rgba(255,255,255,.04);
	border-top: 1px solid rgba(255,255,255,.07);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
}

.ws-detail-btn {
	flex: 1;
	text-align: center;
	font-size: 13px;
	padding: 8px 14px !important;
	border-radius: 9px !important;
	border: 1.5px solid rgba(255,255,255,.15) !important;
	background: rgba(255,255,255,.07) !important;
	color: rgba(255,255,255,.9) !important;
	font-weight: 600;
	text-decoration: none;
	transition: background .15s ease, border-color .15s ease;
}
.ws-detail-btn:hover {
	background: rgba(255,255,255,.13) !important;
	border-color: rgba(255,255,255,.28) !important;
	color: #fff !important;
}

.ws-enroll-btn {
	flex: 1;
	text-align: center;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 6px;
	font-size: 13px !important;
	font-weight: 700 !important;
	padding: 8px 16px !important;
	border-radius: 9px !important;
	background: linear-gradient(135deg, #4f46e5, #7c3aed) !important;
	color: #fff !important;
	border: none !important;
	text-decoration: none !important;
	white-space: nowrap;
	transition: background .15s ease, box-shadow .15s ease;
	box-shadow: 0 2px 10px rgba(79,70,229,.35);
}
.ws-enroll-btn:hover {
	background: linear-gradient(135deg, #4338ca, #6d28d9) !important;
	box-shadow: 0 4px 16px rgba(79,70,229,.5) !important;
	color: #fff !important;
}
.ws-enroll-icon { flex-shrink: 0; }

/* ── Button loading state ───────────────────────────────────── */
@keyframes dnt-btn-dot-pulse {
	0%, 80%, 100% { transform: scale(.55); opacity: .4; }
	40%            { transform: scale(1);   opacity: 1; }
}
.ws-detail-btn,
.ws-enroll-btn {
	position: relative;
	overflow: hidden;
}
.ws-detail-btn .dnt-btn-inner,
.ws-enroll-btn .dnt-btn-inner {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	transition: opacity .2s ease, transform .2s ease;
}
.ws-detail-btn.dnt-btn-loading,
.ws-enroll-btn.dnt-btn-loading {
	pointer-events: none;
	min-width: 0 !important;
	width: 44px !important;
	flex: 0 0 44px !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	transition: background .15s ease,
	            box-shadow .15s ease !important;
}
.ws-detail-btn.dnt-btn-loading .dnt-btn-inner,
.ws-enroll-btn.dnt-btn-loading .dnt-btn-inner {
	opacity: 0;
	transform: scale(.6);
}
.dnt-btn-dots {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	opacity: 0;
	pointer-events: none;
	transition: opacity .15s ease .15s;
}
.dnt-btn-loading .dnt-btn-dots {
	opacity: 1;
}
.dnt-btn-dots span {
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: currentColor;
	animation: dnt-btn-dot-pulse .9s ease-in-out infinite;
}
.dnt-btn-dots span:nth-child(2) { animation-delay: .15s; }
.dnt-btn-dots span:nth-child(3) { animation-delay: .3s; }

/* ── Mobile: single-column horizontal card ──────────────────── */
@media (max-width: 640px) {
	.dentisity-workshop-grid {
		grid-template-columns: 1fr;
	}

	.dentisity-workshop-card {
		display: grid;
		grid-template-columns: 110px 1fr;
		grid-template-rows: 1fr auto;
		min-height: 120px;
		border-radius: 16px 0 0 16px;
		/* No zoom effect on mobile — thumb overflow would clip awkwardly */
	}

	/* Thumb spans both rows on the left */
	.ws-card-thumb-link {
		grid-column: 1;
		grid-row: 1 / 3;
	}

	.ws-card-thumb {
		height: 100%;
		min-height: 120px;
		border-radius: 14px 0 0 14px;
	}

	/* Content top-right — no line-clamp on mobile so nothing is cut */
	.ws-card-content {
		grid-column: 2;
		grid-row: 1;
		padding: 10px 12px 6px;
	}

	.ws-card-title {
		font-size: 13px;
		-webkit-line-clamp: 4;
	}

	/* Price smaller on horizontal mobile card */
	.ws-card-price {
		font-size: 16px;
	}

	/* Hide date on mobile */
	.ws-card-date { display: none; }

	/* On mobile: status badge top-left, slots badge bottom-left */
	.ws-card-badges {
		flex-direction: column;
		align-items: flex-start;
		justify-content: space-between;
		gap: 4px;
		top: 0;
		bottom: 0;
		padding-bottom: 10px;
	}
	.ws-slots-badge {
		margin-left: 0;
		margin-top: auto;
	}

	/* Footer bottom-right */
	.ws-card-footer {
		grid-column: 2;
		grid-row: 2;
		padding: 6px 10px 10px;
		justify-content: flex-end;
		gap: 6px;
		background: transparent;
		border-top: none;
	}

	/* Buttons not full-width on mobile horizontal layout */
	.ws-detail-btn,
	.ws-enroll-btn { flex: unset; }

	/* Show full enroll button on mobile cards */
	.ws-enroll-label { display: inline; }
	.ws-enroll-btn { padding: 7px 12px !important; gap: 5px; }

	/* Low-stock bar: pulsing glow on right on mobile */
	.dentisity-workshop-card:has(.ws-slots-low):not(.ws-enrolled) {
		animation: dnt-low-stock-pulse-right 2s ease-in-out infinite;
	}
	@keyframes dnt-low-stock-pulse-right {
		0%, 100% { box-shadow: 0 2px 12px rgba(0,0,0,.18), 4px 0 14px 2px rgba(245,158,11,.55); }
		50%       { box-shadow: 0 2px 12px rgba(0,0,0,.18),  1px 0  4px 0  rgba(245,158,11,.15); }
	}

}

/* Enrolled card highlight */
.dentisity-workshop-card.ws-enrolled {
	box-shadow: 0 0 0 2px #059669;
}


/* ── Fullwidth workshop row (registration selector) ─── */
.dentisity-workshop-list {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin-bottom: 20px;
}
.dnt-day-group-body .dentisity-ws-row,
.dentisity-workshop-list > .dentisity-ws-row {
    margin-bottom: 10px;
}

.dentisity-ws-row {
    position: relative;
    display: flex;
    align-items: stretch;
    background: #fff;
    border: 1.5px solid #e2e8f0;
    border-radius: 14px;
    overflow: hidden;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
    user-select: none;
}

.dentisity-ws-row:hover {
    border-color: #a5b4fc;
    box-shadow: 0 2px 10px rgba(79,70,229,.1);
}

.dentisity-ws-row.ws-row-selected {
    border-color: #4f46e5;
    box-shadow: 0 0 0 3px rgba(79,70,229,.15);
}

.dentisity-ws-row.ws-owned {
    opacity: 0.6;
    pointer-events: none;
    cursor: default;
}

.ws-row-thumb {
    position: relative;
    flex-shrink: 0;
    width: 120px;
    min-height: 90px;
    background-size: cover;
    background-position: center;
    background-color: #334155;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    padding: 8px;
    gap: 4px;
}

.dentisity-ws-row .ws-selected-check {
    position: absolute;
    bottom: 10px;
    right: 10px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #4f46e5;
    border: 2.5px solid #fff;
    box-shadow: 0 2px 6px rgba(79,70,229,.4);
    opacity: 0;
    transform: scale(.6);
    transition: opacity .18s, transform .18s;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.dentisity-ws-row .ws-selected-check::after {
    content: '';
    display: block;
    width: 10px;
    height: 6px;
    border-left: 2.5px solid #fff;
    border-bottom: 2.5px solid #fff;
    transform: rotate(-45deg) translate(1px, -1px);
}

.dentisity-ws-row.ws-row-selected .ws-selected-check {
    opacity: 1;
    transform: scale(1);
}

.ws-row-body {
    flex: 1;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    min-width: 0;
}

.ws-row-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
}
.dentisity-ws-row.ws-has-wave .ws-row-body {
    padding-top: 36px;
}

.ws-row-title {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.3;
}

.ws-row-price {
    font-size: 15px;
    font-weight: 700;
    color: #4f46e5;
    white-space: nowrap;
}

.ws-row-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.ws-row-meta-item {
    font-size: 12px;
    color: #64748b;
}

.ws-row-slots {
    font-size: 11px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 99px;
    white-space: nowrap;
}

.dentisity-ws-row.ws-has-conflict {
    border-color: #f59e0b !important;
    animation: ws-conflict-pulse 2s ease-in-out infinite;
}

.dentisity-ws-row.ws-row-selected.ws-has-conflict {
    border-color: #f59e0b !important;
    animation: none;
}

.dentisity-ws-row.ws-unavailable,
.dentisity-ws-row.ws-soldout {
    opacity: .6;
    cursor: not-allowed;
    pointer-events: none;
}

.dentisity-ws-row.ws-unavailable .ws-row-title,
.dentisity-ws-row.ws-soldout .ws-row-title {
    color: #94a3b8;
}

@media (max-width: 560px) {
    /* Workshop selector rows: tighter thumb, smaller text */
    .ws-row-thumb {
        width: 90px;
        min-height: 80px;
    }
    .ws-row-title {
        font-size: 14px;
        line-height: 1.3;
    }
    .ws-row-body {
        padding: 10px 12px;
    }
    .ws-row-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }
    .ws-row-meta {
        flex-wrap: wrap;
        gap: 4px;
    }
    .ws-row-meta-item {
        font-size: 11px;
    }
    .ws-row-slots {
        font-size: 10px;
        padding: 2px 8px;
    }
    .ws-row-price .dnt-wave-price-wrap { gap: 1px; }
    .ws-row-price .dnt-wave-current    { font-size: 15px; }
    .ws-row-price .dnt-wave-regular    { font-size: 11px; }
    .ws-row-price .dnt-wave-label      { font-size: 9px; padding: 1px 6px; }

    /* Pricing summary and action buttons */
    .dentisity-ws-actions {
        flex-direction: column;
        gap: 10px;
    }
    .dentisity-ws-back-btn,
    .dentisity-ws-continue-btn {
        width: 100%;
        text-align: center;
    }
}

/* Legacy catalogue card selected-check (not fullwidth row) */
.ws-selectable.ws-card-selected .ws-selected-check {
    opacity: 1;
}

.ws-selectable.ws-card-selected {
    border: 3px solid #4f46e5;
    box-shadow: 0 0 0 3px rgba(79,70,229,.2);
}

.ws-selectable.ws-card-selected .ws-card-overlay {
    background: linear-gradient(to bottom, rgba(79,70,229,.15) 0%, rgba(0,0,0,0.75) 100%);
}

/* Conflict pulse animation */
@keyframes ws-conflict-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(245,158,11,.5), 0 4px 16px rgba(0,0,0,.12); }
    50%       { box-shadow: 0 0 0 7px rgba(245,158,11,0), 0 4px 16px rgba(0,0,0,.12); }
}

.ws-has-conflict {
    border-color: #f59e0b !important;
    animation: ws-conflict-pulse 2s ease-in-out infinite;
}

.ws-selectable.ws-card-selected.ws-has-conflict {
    border-color: #f59e0b !important;
    box-shadow: 0 0 0 3px rgba(245,158,11,.25);
    animation: none;
}


.ws-owned {
    opacity: 0.6;
    pointer-events: none;
}

.ws-owned-badge {
    display: inline-flex;
    align-items: center;
    background: rgba(22,163,74,.92);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 99px;
}

/* Conflict chip badge in registration selector cards */
@keyframes dnt-conflict-slide-in {
    from { opacity: 0; transform: translateX(-16px); }
    to   { opacity: 1; transform: translateX(0); }
}
@keyframes dnt-conflict-label-out {
    from { max-width: 90px; opacity: 1; margin-left: 4px; }
    to   { max-width: 0;    opacity: 0; margin-left: 0; }
}
@keyframes dnt-conflict-leave {
    from { opacity: 1; transform: translateX(0) scale(1); }
    to   { opacity: 0; transform: translateX(-12px) scale(.9); }
}
.ws-conflict-chip {
    position: absolute;
    top: 7px;
    left: 7px;
    display: inline-flex;
    align-items: center;
    background: #f59e0b;
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .3px;
    text-transform: uppercase;
    padding: 3px 7px;
    border-radius: 99px;
    white-space: nowrap;
    z-index: 4;
    pointer-events: none;
    box-shadow: 0 1px 4px rgba(0,0,0,.18);
    animation: dnt-conflict-slide-in .22s cubic-bezier(.22,1,.36,1) both;
    overflow: hidden;
}
.ws-conflict-icon {
    flex-shrink: 0;
    line-height: 1;
}
.ws-conflict-label {
    display: inline-block;
    overflow: hidden;
    max-width: 90px;
    margin-left: 4px;
    animation: dnt-conflict-label-out .25s ease forwards 2.4s;
}
.ws-conflict-chip.ws-conflict-leaving {
    animation: dnt-conflict-leave .18s ease both;
}

/* Workshop detail page */
/* ── Workshop detail page ──────────────────────────────────── */

.dentisity-ws-detail-wrap {
    max-width: 960px;
    margin: 0 auto;
}

/* Back link — top of page, above the hero */
.dentisity-ws-back-top {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    text-decoration: none;
    margin-bottom: 16px;
    transition: color .15s;
}
.dentisity-ws-back-top:hover { color: #4f46e5; }

/* Wrapper keeps avatars+tooltips outside overflow:hidden hero */
.dentisity-ws-hero-wrap {
    position: relative;
    margin-bottom: 32px;
}

.dentisity-ws-hero {
    position: relative;
    border-radius: 18px;
    overflow: hidden;
    min-height: 340px;
    background-size: cover;
    background-position: center;
    display: flex;
    align-items: flex-end;
    box-shadow: 0 8px 32px rgba(0,0,0,.18);
}

.dentisity-ws-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to bottom,
        rgba(0,0,0,.05) 0%,
        rgba(0,0,0,.18) 40%,
        rgba(10,14,28,.82) 100%
    );
}

/* Lector avatars — top-left of hero */
.dentisity-ws-hero-avatars {
    position: absolute;
    top: 16px;
    left: 20px;
    display: flex;
    gap: 0;
    z-index: 5;
}

.dentisity-ws-hero-avatar-wrap {
    position: relative;
    margin-right: -8px;
}
.dentisity-ws-hero-avatar-wrap:last-child { margin-right: 0; }

.dentisity-ws-hero-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2.5px solid rgba(255,255,255,.8);
    object-fit: cover;
    display: block;
    box-shadow: 0 2px 8px rgba(0,0,0,.25);
}

.dentisity-ws-hero-avatar--initials {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2.5px solid rgba(255,255,255,.8);
    background: rgba(255,255,255,.22);
    backdrop-filter: blur(6px);
    color: #fff;
    font-size: 15px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 8px rgba(0,0,0,.25);
}

/* Tooltip */
.dentisity-ws-hero-avatar-wrap::after {
    content: attr(data-tooltip);
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    background: rgba(15,23,42,.92);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    padding: 4px 9px;
    border-radius: 6px;
    pointer-events: none;
    opacity: 0;
    transition: opacity .15s;
    z-index: 20;
}
.dentisity-ws-hero-avatar-wrap:hover::after { opacity: 1; }

.dentisity-ws-hero-content {
    position: relative;
    z-index: 2;
    padding: 36px 40px;
    color: #fff;
    width: 100%;
}

.dentisity-ws-hero-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 10px;
}

.dentisity-ws-hero-date,
.dentisity-ws-hero-location {
    font-size: 13px;
    font-weight: 500;
    color: rgba(255,255,255,.82);
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: rgba(255,255,255,.12);
    backdrop-filter: blur(4px);
    border-radius: 99px;
    padding: 3px 10px;
}
.dentisity-ws-hero-location svg { flex-shrink: 0; }

.dentisity-ws-hero-title {
    font-size: 34px;
    font-weight: 800;
    margin: 0;
    color: #fff;
    line-height: 1.2;
    text-shadow: 0 2px 12px rgba(0,0,0,.35);
}

.dentisity-ws-hero-price {
    font-size: 22px;
    font-weight: 700;
    color: #fff;
}

/* Two-column body */
.dentisity-ws-detail-body {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 36px;
    align-items: start;
}

/* Mobile: single column, sidebar (CTA) comes first */
@media (max-width: 700px) {
    .dentisity-ws-detail-body {
        grid-template-columns: 1fr;
    }
    .dentisity-ws-detail-sidebar {
        order: -1;
    }
    .dentisity-ws-enroll-card {
        position: static;
    }
    .dentisity-ws-hero-title { font-size: 22px; }
    .dentisity-ws-hero-content { padding: 24px 20px; }
    .dentisity-ws-back-top { margin-bottom: 12px; }
}

/* Main content */
.dentisity-ws-description {
    font-size: 15px;
    color: #334155;
    line-height: 1.75;
    margin-bottom: 28px;
}

/* Section headings */
.dentisity-ws-section-title {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 36px 0 14px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e2e8f0;
}

/* Lector cards — left accent border for identity */
.dentisity-ws-lector-card {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    background: #f5f3ff;
    border: 1px solid #c7d2fe;
    border-radius: 12px;
    padding: 18px;
    margin-bottom: 14px;
    box-shadow: 0 1px 4px rgba(0,0,0,.05);
}

.dentisity-ws-lector-avatar {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(0,0,0,.1);
}

.dentisity-ws-lector-name {
    font-weight: 700;
    font-size: 15px;
    color: #0f172a;
}

.dentisity-ws-lector-specialty {
    font-size: 11px;
    color: #4f46e5;
    font-weight: 700;
    margin-top: 2px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.dentisity-ws-lector-bio {
    font-size: 13px;
    color: #64748b;
    margin-top: 5px;
    line-height: 1.55;
}

/* Sidebar — sticky enroll card */
.dentisity-ws-enroll-card {
    background: #fff;
    border: 1.5px solid #e2e8f0;
    border-radius: 16px;
    padding: 24px;
    position: sticky;
    top: 24px;
    box-shadow: 0 4px 24px rgba(0,0,0,.08);
}

.dentisity-ws-enroll-card .ws-enroll-btn {
    width: 100%;
    justify-content: center;
}

.dentisity-ws-enroll-price {
    font-size: 30px;
    font-weight: 800;
    color: #0f172a;
    margin-bottom: 4px;
    letter-spacing: -.02em;
}

.dentisity-ws-slots {
    font-size: 13px;
    color: #64748b;
    margin-bottom: 18px;
    display: flex;
    align-items: center;
    gap: 5px;
}

/* Sponsors — separated below CTA */
.dentisity-ws-sponsor {
    font-size: 12px;
    color: #94a3b8;
    margin-top: 12px;
}

.dentisity-ws-sponsors-block {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid #f1f5f9;
}

.dentisity-ws-sponsors-label {
    font-size: 10px;
    font-weight: 800;
    color: #cbd5e1;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 12px;
}

.dentisity-ws-sponsor-item {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
    padding: 10px 12px;
    background: #f8fafc;
    border-radius: 10px;
    border: 1px solid #e2e8f0;
}

.dentisity-ws-sponsor-logo {
    height: 36px;
    width: auto;
    max-width: 80px;
    object-fit: contain;
    flex-shrink: 0;
}

.dentisity-ws-sponsor-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.dentisity-ws-sponsor-name {
    font-size: 13px;
    color: #0f172a;
    font-weight: 600;
    text-decoration: none;
}

a.dentisity-ws-sponsor-name:hover {
    color: #4f46e5;
    text-decoration: underline;
}

.dentisity-ws-sponsor-socials {
    display: flex;
    gap: 5px;
    align-items: center;
}

.dentisity-ws-sponsor-social {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 6px;
    background: #f1f5f9;
    color: #475569;
    text-decoration: none;
    transition: background .15s, color .15s;
}

.dentisity-ws-sponsor-social:hover {
    background: #4f46e5;
    color: #fff;
}

/* Old back link — kept for legacy but hidden; replaced by dentisity-ws-back-top */
.dentisity-ws-back {
    display: none;
}

/* ── Detail page conflict card ──────────────────────────── */
.dentisity-conflict-card {
    background: #fffbeb;
    border: 1.5px solid #f59e0b;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 14px;
    font-size: 13px;
}

.dentisity-conflict-card-header {
    display: flex;
    align-items: center;
    gap: 7px;
    background: #fef3c7;
    padding: 10px 14px;
    font-weight: 700;
    font-size: 13px;
    color: #78350f;
    border-bottom: 1px solid #fde68a;
}

.dentisity-conflict-card-icon {
    font-size: 16px;
    line-height: 1;
}

.dentisity-conflict-card-desc {
    margin: 10px 14px 8px;
    color: #92400e;
    font-size: 12px;
    line-height: 1.5;
}

.dentisity-conflict-rows {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 0 10px 10px;
}

.dentisity-conflict-row {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 8px;
    background: rgba(255,255,255,.7);
    border: 1px solid #fde68a;
    border-radius: 8px;
    padding: 8px 10px;
}

.dentisity-conflict-row-time {
    display: flex;
    align-items: center;
    gap: 4px;
    color: #a16207;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}

.dentisity-conflict-link {
    color: #92400e;
    font-weight: 700;
    text-decoration: underline;
    font-size: 12px;
}

.dentisity-conflict-link:hover {
    color: #78350f;
}

.dentisity-conflict-row-name {
    font-size: 12px;
    color: #1e293b;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dentisity-conflict-row-badge {
    display: inline-block;
    background: #4f46e5;
    color: #fff;
    border-radius: 99px;
    font-size: 10px;
    font-weight: 700;
    padding: 2px 8px;
    white-space: nowrap;
}

@media (max-width: 400px) {
    .dentisity-conflict-row {
        grid-template-columns: 1fr auto;
        grid-template-rows: auto auto;
    }
    .dentisity-conflict-row-time {
        grid-column: 1 / -1;
    }
}

/* ── Catalogue conflict alert banner ────────────────────── */

.dentisity-catalogue-conflict-banner {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    background: #fef9c3;
    border: 1.5px solid #fbbf24;
    border-radius: 12px;
    padding: 16px 20px;
    margin-bottom: 24px;
    color: #78350f;
}

.dentisity-catalogue-conflict-banner-icon {
    font-size: 22px;
    flex-shrink: 0;
    line-height: 1;
    margin-top: 2px;
}

.dentisity-catalogue-conflict-banner-body {
    font-size: 13px;
    line-height: 1.6;
}

.dentisity-catalogue-conflict-banner-body strong {
    display: block;
    font-size: 14px;
    margin-bottom: 6px;
    color: #78350f;
}

.dentisity-catalogue-conflict-banner-list {
    margin: 0;
    padding: 0 0 0 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.dentisity-catalogue-conflict-banner-list li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
}

.dentisity-catalogue-conflict-wslink {
    font-weight: 700;
    color: #78350f;
    text-decoration: underline;
}

.dentisity-catalogue-conflict-wslink:hover { color: #451a03; }

.dentisity-catalogue-conflict-enrolledlink {
    color: #1d4ed8;
    font-weight: 600;
    text-decoration: underline;
}

.dentisity-catalogue-conflict-enrolledlink:hover { color: #1e40af; }

.dentisity-catalogue-conflict-sep {
    color: #a16207;
    font-size: 12px;
}

.dentisity-catalogue-conflict-badge {
    display: inline-block;
    background: #065f46;
    color: #fff;
    border-radius: 99px;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 7px;
    white-space: nowrap;
}

.dentisity-catalogue-conflict-badge.dentisity-catalogue-conflict-badge-enrolled {
    background: #4f46e5;
}

.dentisity-ws-enrolled {
    border: 2px solid #16a34a;
}

/* ── Pricing summary bar ────────────────────────────────── */

.dentisity-pricing-summary {
	padding: 14px 18px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: 8px;
	font-size: 14px;
	color: #0f172a;
	margin-top: 16px;
}

/* ── Wave pricing display ───────────────────────────────────── */

.dnt-wave-price-wrap {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
}

@keyframes dnt-wave-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(249,115,22,.45); }
	60%       { box-shadow: 0 0 0 5px rgba(249,115,22,0); }
}
.dnt-wave-label {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: #fff;
	background: linear-gradient(90deg, #f97316, #ef4444);
	border: none;
	border-radius: 999px;
	padding: 3px 10px;
	line-height: 1.4;
	box-shadow: 0 2px 8px rgba(249,115,22,.4);
	animation: dnt-wave-pulse 2s ease-in-out infinite;
}

.dnt-wave-regular {
	font-size: 12px;
	color: #94a3b8;
	text-decoration: line-through;
	line-height: 1.2;
}

.dnt-wave-current {
	font-size: 20px;
	font-weight: 800;
	color: #22d3ee;
	line-height: 1.1;
	letter-spacing: -.02em;
	text-shadow: 0 0 14px rgba(34,211,238,.4);
}

/* Hero context (workshop detail sidebar) */
.dnt-wave-hero .dnt-wave-regular {
	font-size: 14px;
}
.dnt-wave-hero .dnt-wave-current {
	font-size: 28px;
	text-shadow: 0 0 18px rgba(79,70,229,.45);
}
.dnt-wave-hero .dnt-wave-label {
	font-size: 11px;
	padding: 3px 10px;
}

/* ── Pass card: active wave animated border ─────────────────── */

@property --dnt-angle {
	syntax: '<angle>';
	initial-value: 0deg;
	inherits: false;
}

/* ── Page load pop-in animations ───────────────────────────── */
@keyframes dnt-pop-in {
	from { opacity: 0; transform: scale(.94) translateY(12px); }
	to   { opacity: 1; transform: scale(1)  translateY(0); }
}
@keyframes dnt-fade-up {
	from { opacity: 0; transform: translateY(18px); }
	to   { opacity: 1; transform: translateY(0); }
}
.dnt-anim-pop {
	animation: dnt-pop-in .45s cubic-bezier(.22,1,.36,1) var(--dnt-pop-delay, 0ms) both;
}
.dnt-anim-fade-up {
	animation: dnt-fade-up .4s cubic-bezier(.22,1,.36,1) var(--dnt-pop-delay, 0ms) both;
}


@keyframes dnt-border-spin {
	to { --dnt-angle: 360deg; }
}

/*
 * The wrapper handles the spinning border so the card itself can keep
 * overflow:hidden (needed to clip the header gradient to the card shape).
 * Wrapper is the same size as the card + 2px padding on each side.
 */
.dnt-wave-border-wrap {
	position: relative;
	border-radius: calc(16px + 3px);
	padding: 3px;
	background: conic-gradient(
		from var(--dnt-angle),
		#4f46e5 0%,
		#7c3aed 25%,
		#f97316 50%,
		#7c3aed 75%,
		#4f46e5 100%
	);
	animation: dnt-border-spin 3s linear infinite;
}

/* Card inside the wrapper needs no border of its own */
.dnt-wave-border-wrap .dentisity-pass-card {
	border: none;
	border-radius: 16px;
}


/* Free workshop credit badges */
.ws-free-pass-badge {
	display: inline-block;
	margin-top: 4px;
	padding: 2px 8px;
	background: #ecfdf5;
	color: #065f46;
	border: 1px solid #6ee7b7;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 600;
	white-space: nowrap;
}

.ws-detail-free-badge {
	background: #ecfdf5;
	color: #065f46;
	border: 1px solid #6ee7b7;
	border-radius: 8px;
	padding: 10px 14px;
	font-size: 13px;
	margin-bottom: 8px;
}

/* ── Trending workshops shortcode ──────────────────────── */
@media (max-width: 768px) {
	.dentisity-trending-grid {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: 12px !important;
	}
}
@media (max-width: 440px) {
	.dentisity-trending-grid {
		grid-template-columns: 1fr !important;
	}
}

/* ── Add-on card overrides ───────────────────────────────────── */
.dnt-addon-card .ws-card-thumb {
	min-height: 120px;
}
.dnt-addon-card .ws-card-footer .ws-detail-btn--purchased {
	pointer-events: none;
	opacity: .75;
}
@media (max-width: 640px) {
	.dnt-addon-card {
		display: grid;
		grid-template-columns: 110px 1fr;
		grid-template-rows: 1fr auto;
		min-height: 120px;
		border-radius: 16px 0 0 16px;
	}
	.dnt-addon-card .ws-card-thumb-link {
		grid-column: 1;
		grid-row: 1 / 3;
	}
	.dnt-addon-card .ws-card-thumb {
		height: 100%;
		min-height: 120px;
		border-radius: 14px 0 0 14px;
	}
	.dnt-addon-card .ws-card-content {
		grid-column: 2;
		grid-row: 1;
		padding: 10px 12px 6px;
	}
	.dnt-addon-card .ws-card-title {
		font-size: 13px;
	}
	.dnt-addon-card .ws-card-footer {
		grid-column: 2;
		grid-row: 2;
		padding: 6px 10px 10px;
		justify-content: flex-end;
		gap: 6px;
		background: transparent;
		border-top: none;
	}
	.dnt-addon-card .ws-detail-btn,
	.dnt-addon-card .ws-enroll-btn { flex: unset; }
}
@media (max-width: 440px) {
	.dentisity-addons-grid {
		grid-template-columns: 1fr !important;
	}
}

/* ── Add-on registration form slim cards ─────────────────────── */
.dnt-addon-reg-section {
	margin: 16px 0 8px;
}
.dnt-addon-reg-header {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 8px;
}
.dnt-addon-reg-title {
	font-size: 13px;
	font-weight: 600;
	color: #64748b;
	text-transform: uppercase;
	letter-spacing: .04em;
}
.dnt-ao-reg-item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 10px 8px 8px;
	border-radius: 10px;
	border: 1.5px solid #e2e8f0;
	background: #f8fafc;
	cursor: pointer;
	margin-bottom: 6px;
	position: relative;
	transition: border-color .15s, background .15s, box-shadow .15s;
	user-select: none;
}
.dnt-ao-reg-item:hover:not(.dnt-ao-reg-disabled) {
	border-color: #6366f1;
	background: #f0f0ff;
}
.dnt-ao-reg-item.dnt-ao-reg-selected {
	border-color: #6366f1;
	background: #eef2ff;
	box-shadow: 0 0 0 3px rgba(99,102,241,.12);
}
.dnt-ao-reg-item.dnt-ao-reg-disabled {
	opacity: .65;
	cursor: default;
}
.dnt-ao-reg-item.dnt-ao-reg-owned {
	opacity: .85;
}
.dnt-ao-reg-thumb {
	width: 36px;
	height: 36px;
	border-radius: 7px;
	background-size: cover;
	background-position: center;
	flex-shrink: 0;
}
.dnt-ao-reg-body {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 1px;
}
.dnt-ao-reg-name {
	font-size: 13px;
	font-weight: 600;
	color: #1e293b;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.dnt-ao-reg-meta {
	font-size: 11px;
	color: #64748b;
}
.dnt-ao-reg-price-wrap {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 2px;
	flex-shrink: 0;
}
.dnt-ao-reg-price {
	font-size: 13px;
	font-weight: 700;
	color: #1e293b;
	white-space: nowrap;
}
.dnt-ao-reg-wave-badge {
	font-size: 10px;
	color: #d97706;
	white-space: nowrap;
}
.dnt-ao-reg-owned-badge {
	font-size: 10px;
	font-weight: 600;
	color: #059669;
	background: #d1fae5;
	border-radius: 4px;
	padding: 1px 5px;
}
.dnt-ao-reg-soldout-badge {
	color: #dc2626;
	background: #fee2e2;
}
.dnt-ao-reg-item.dnt-ao-reg-free .dnt-ao-reg-price {
	color: #059669;
}

/* pass-card-check used inline (static) inside add-on reg flex row */
.dnt-ao-reg-item .pass-card-check {
	position: static;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: #e2e8f0;
	border: 2px solid #cbd5e1;
	box-shadow: none;
	opacity: 1;
	transform: scale(1);
	flex-shrink: 0;
	transition: background .15s, border-color .15s;
}
.dnt-ao-reg-item.dnt-ao-reg-selected .pass-card-check,
.dnt-ao-reg-item.dnt-ao-reg-owned .pass-card-check {
	background: #4f46e5;
	border-color: #4f46e5;
	box-shadow: 0 2px 6px rgba(79,70,229,.4);
}
.dnt-ao-reg-item .pass-card-check svg path {
	stroke: #cbd5e1;
	transition: stroke .15s;
}
.dnt-ao-reg-item.dnt-ao-reg-selected .pass-card-check svg path,
.dnt-ao-reg-item.dnt-ao-reg-owned .pass-card-check svg path {
	stroke: #fff;
}

/* ── Workshop card v2 (modern design) ─────────────────────────────────── */
.dnt-ws-card-v2 {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 10px 8px 8px;
	border-radius: 10px;
	border: 1.5px solid #e2e8f0;
	background: #f8fafc;
	cursor: pointer;
	margin-bottom: 6px;
	position: relative;
	transition: border-color .15s, background .15s, box-shadow .15s;
	user-select: none;
}
.dnt-ws-card-v2:hover:not(.dnt-ws-v2-soldout):not(.ws-selected):not(.dnt-ws-v2-selected) {
	border-color: #6366f1;
}
.dnt-ws-card-v2.ws-selected,
.dnt-ws-card-v2.dnt-ws-v2-selected {
	border-color: #6366f1;
	background: #eef2ff;
	box-shadow: 0 0 0 3px rgba(99,102,241,.12);
}
.dnt-ws-card-v2.dnt-ws-v2-soldout {
	opacity: .65;
	cursor: default;
}
.dnt-ws-card-v2.dnt-ws-v2-owned {
	opacity: .85;
}

.dnt-ws-v2-thumb {
	width: 36px;
	height: 36px;
	border-radius: 7px;
	background-size: cover;
	background-position: center;
	background-color: #334155;
	flex-shrink: 0;
}

.dnt-ws-v2-body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 1px;
	min-width: 0;
}

.dnt-ws-v2-name {
	font-size: 13px;
	font-weight: 600;
	color: #1e293b;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.dnt-ws-v2-meta {
	display: flex;
	align-items: center;
	gap: 4px;
	font-size: 10px;
	color: #64748b;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.dnt-ws-v2-meta svg {
	flex-shrink: 0;
	color: #94a3b8;
}

.dnt-ws-v2-price-wrap {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 2px;
	flex-shrink: 0;
}

.dnt-ws-v2-wave-badge {
	font-size: 9px;
	font-weight: 700;
	background: linear-gradient(90deg,#f59e0b,#ef4444);
	color: #fff;
	border-radius: 4px;
	padding: 1px 5px;
	white-space: nowrap;
	margin-bottom: 0;
}

.dnt-ws-v2-price {
	font-size: 13px;
	font-weight: 700;
	color: #1e293b;
	white-space: nowrap;
}
.dnt-ws-v2-old-price {
	display: block;
	font-size: 10px;
	font-weight: 500;
	color: #94a3b8;
	text-decoration: line-through;
	margin-bottom: -10px;
	text-align: right;
}

.dnt-ws-v2-slots {
	font-size: 10px;
	font-weight: 600;
	padding: 1px 7px;
	border-radius: 20px;
	white-space: nowrap;
}

.dnt-ws-v2-info-btn {
	flex-shrink: 0;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1.5px solid #e2e8f0;
	background: #fff;
	color: #64748b;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	padding: 0;
	transition: border-color .15s, color .15s, background .15s;
	position: relative;
	z-index: 2;
}
.dnt-ws-v2-info-btn:hover {
	border-color: #6366f1;
	color: #6366f1;
	background: #eef2ff;
}

/* stacked selector + info group */
.dnt-ws-v2-actions {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	flex-shrink: 0;
	padding-right: 2px;
}

/* selector check — static flex item, same as pass-card-check on add-on cards */
.dnt-ws-v2-check {
	position: static;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: #e2e8f0;
	border: 2px solid #cbd5e1;
	box-shadow: none;
	opacity: 1;
	transform: scale(1);
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .15s, border-color .15s;
	pointer-events: none;
}
.dnt-ws-card-v2.ws-selected .dnt-ws-v2-check,
.dnt-ws-card-v2.dnt-ws-v2-selected .dnt-ws-v2-check {
	background: #4f46e5;
	border-color: #4f46e5;
	box-shadow: 0 2px 6px rgba(79,70,229,.4);
}
.dnt-ws-v2-check svg path {
	stroke: #cbd5e1;
	transition: stroke .15s;
}
.dnt-ws-card-v2.ws-selected .dnt-ws-v2-check svg path,
.dnt-ws-card-v2.dnt-ws-v2-selected .dnt-ws-v2-check svg path {
	stroke: #fff;
}

/* ── Workshop modal v2 ──────────────────────────────────────────────────── */
.dnt-ws-modal-wrap { position:fixed; inset:0; z-index:2147483632; display:flex; align-items:center; justify-content:center; opacity:0; pointer-events:none; transition:opacity .2s ease; }
.dnt-ws-modal-wrap.is-open { opacity:1; pointer-events:all; }
.dnt-ws-modal-backdrop { position:fixed; inset:0; background:rgba(15,23,42,.55); backdrop-filter:blur(4px); }
.dnt-ws-modal-dialog { position:relative; background:#1e293b; border-radius:16px; max-width:520px; width:calc(100% - 32px); max-height:min(600px, calc(100vh - 48px)); overflow:hidden; box-shadow:0 24px 60px rgba(0,0,0,.45); transform:scale(.94) translateY(8px); transition:transform .22s ease; display:flex; flex-direction:column; margin:24px 0; }
.dnt-ws-modal-wrap.is-open .dnt-ws-modal-dialog { transform:scale(1) translateY(0); }
.dnt-ws-modal-thumb { height:200px; background-size:cover; background-position:center; background-color:#334155; position:relative; flex-shrink:0; }
.dnt-ws-modal-close { position:absolute; top:12px; right:12px; z-index:2; background:rgba(0,0,0,.55); border:none; color:#fff; width:32px; height:32px; border-radius:50%; cursor:pointer; font-size:18px; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .15s; }
.dnt-ws-modal-close:hover { background:rgba(0,0,0,.8); }
.dnt-ws-modal-body { padding:20px 20px 16px; flex:1; overflow-y:auto; overflow-x:hidden; }
.dnt-ws-modal-title { color:#fff; font-size:20px; font-weight:800; margin:0 0 12px; line-height:1.3; }
.dnt-ws-modal-meta { display:flex; flex-direction:column; gap:7px; margin-bottom:14px; }
.dnt-ws-modal-meta-row { display:flex; align-items:flex-start; gap:8px; font-size:13px; color:rgba(255,255,255,.65); }
.dnt-ws-modal-meta-row svg { flex-shrink:0; margin-top:1px; }
.dnt-ws-modal-desc { color:rgba(255,255,255,.72); font-size:13px; line-height:1.65; margin-bottom:16px; white-space:pre-wrap; word-break:break-word; border-top:1px solid rgba(255,255,255,.08); padding-top:14px; }
.dnt-ws-modal-lectors { display:flex; flex-direction:column; gap:10px; margin-bottom:16px; border-top:1px solid rgba(255,255,255,.08); padding-top:14px; }
.dnt-ws-modal-lector { display:flex; align-items:center; gap:10px; }
.dnt-ws-modal-lector-img { width:40px; height:40px; border-radius:50%; object-fit:cover; background:#334155; flex-shrink:0; }
.dnt-ws-modal-lector-img-placeholder { width:40px; height:40px; border-radius:50%; background:#334155; display:flex; align-items:center; justify-content:center; flex-shrink:0; color:rgba(255,255,255,.4); }
.dnt-ws-modal-lector-info { display:flex; flex-direction:column; }
.dnt-ws-modal-lector-name { font-size:13px; font-weight:700; color:#fff; }
.dnt-ws-modal-lector-flag { font-size:14px; margin-right:5px; vertical-align:middle; line-height:1; }
.dnt-ws-modal-lector-bio { font-size:11px; color:rgba(255,255,255,.5); line-height:1.45; }
.dnt-ws-modal-price-row { border-top:1px solid rgba(255,255,255,.1); padding-top:14px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dnt-ws-modal-price-footer { flex-shrink:0; display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:14px 20px 18px; border-top:1px solid rgba(255,255,255,.1); background:#1e293b; border-radius:0 0 16px 16px; }
.dnt-ws-modal-price, .dnt-ws-modal-price-footer .dnt-ws-modal-price { color:#fff; font-size:22px; font-weight:800; }
.dnt-ws-modal-old-price { font-size:13px; color:rgba(255,255,255,.4); text-decoration:line-through; }
.dnt-ws-modal-wave { font-size:12px; font-weight:700; background:linear-gradient(90deg,#f59e0b,#ef4444); color:#fff; border-radius:20px; padding:3px 10px; }
.dnt-ws-modal-sponsors { border-top:1px solid rgba(255,255,255,.08); padding-top:12px; margin-bottom:4px; }
.dnt-ws-modal-spon-label { display:block; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:rgba(255,255,255,.4); margin-bottom:8px; }
.dnt-ws-modal-spon-logos { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.dnt-ws-modal-spon-logos a { display:inline-flex; align-items:center; opacity:.8; transition:opacity .15s; }
.dnt-ws-modal-spon-logos a:hover { opacity:1; }
.dnt-ws-modal-spon-logos img { display:block; height:28px; width:auto; max-width:80px; object-fit:contain; }

/* Info button on add-on reg cards */
.dnt-ao-reg-info-btn {
	flex-shrink: 0;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1.5px solid #e2e8f0;
	background: #fff;
	color: #64748b;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	padding: 0;
	transition: border-color .15s, color .15s, background .15s;
}
.dnt-ao-reg-info-btn:hover {
	border-color: #6366f1;
	color: #6366f1;
	background: #eef2ff;
}

/* ═══════════════════════════════════════════════════════════
   V2 Registration Form — Step 1
   All selectors are scoped to .dnt-v2-reg to avoid
   bleeding into legacy styles.
   ═══════════════════════════════════════════════════════════ */


/* ── V2 tokens ─────────────────────────────────────────────── */
.dnt-v2-reg {
	--v2-bg:           #f8fafc;
	--v2-card-bg:      #ffffff;
	--v2-border:       #6366f1;
	--v2-border-light: #e2e8f0;
	--v2-accent:       #6366f1;
	--v2-accent-dark:  #4f46e5;
	--v2-text:         #0f172a;
	--v2-text-muted:   #64748b;
	--v2-font-display: 'DM Sans', system-ui, sans-serif;
	--v2-radius:       14px;
	--v2-input-radius: 10px;
}

/* ── Outer container ───────────────────────────────────────── */
.dnt-v2-reg {
	background: var(--v2-card-bg);
	border: 2px solid var(--v2-border);
	border-radius: var(--v2-radius);
	overflow: hidden;
	font-family: inherit;
	color: var(--v2-text);
}

/* ── Header ────────────────────────────────────────────────── */
.dnt-v2-header {
	padding: 28px 32px 0;
}

.dnt-v2-eyebrow {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--v2-text-muted);
	margin-bottom: 6px;
}

.dnt-v2-title {
	font-family: var(--v2-font-display);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: -.02em;
	line-height: 1.15;
	color: var(--v2-text);
	margin: 0 0 6px;
}

.dnt-v2-subtitle {
	font-size: 13px;
	color: var(--v2-text-muted);
	margin: 0 0 14px;
}

.dnt-v2-header-meta-row {
	display: flex;
	justify-content: flex-end;
	margin-bottom: 12px;
}

.dnt-v2-login-link {
	font-size: 11px;
	color: var(--v2-text-muted);
	text-decoration: none;
	opacity: .75;
	transition: opacity .15s;
}
.dnt-v2-login-link:hover { opacity: 1; }

.dnt-v2-divider {
	border: none;
	border-top: 1.5px dashed var(--v2-border-light);
	margin: 0 0 0;
}

/* ── Error summary (sticky top-right) ──────────────────────── */
.dnt-v2-error-summary {
	background: #fef2f2;
	border: 1.5px solid #fca5a5;
	border-radius: 8px;
	padding: 10px 14px;
	margin-bottom: 14px;
	font-size: 12.5px;
	color: #991b1b;
	display: flex;
	align-items: flex-start;
	gap: 8px;
}
.dnt-v2-error-summary svg { flex-shrink: 0; margin-top: 2px; }
.dnt-v2-error-summary ul {
	margin: 0;
	padding: 0 0 0 14px;
	list-style: disc;
}
.dnt-v2-error-summary li { margin: 2px 0; }

/* ── Form body: two-column grid ────────────────────────────── */
.dnt-v2-form {
	padding: 0;
}

.dnt-v2-body {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0;
	border-top: 1.5px dashed var(--v2-border-light);
}

/* ── Column ────────────────────────────────────────────────── */
.dnt-v2-col {
	padding: 24px 32px;
}

.dnt-v2-col + .dnt-v2-col {
	border-left: 1.5px dashed var(--v2-border-light);
}

/* Desktop: accordion trigger hidden, col-title shown */
.dnt-v2-acc-trigger { display: none; }
/* Section completion pill: only meaningful inside the mobile accordion header */
.dnt-v2-acc-status { display: none; }
.dnt-v2-col-title {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--v2-text-muted);
	margin-bottom: 18px;
}

/* ── Fields inside V2 ──────────────────────────────────────── */
.dnt-v2-reg .dentisity-field {
	margin-bottom: 14px;
}
.dnt-v2-reg .dentisity-field label {
	display: block;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--v2-text);
	margin-bottom: 5px;
}
.dnt-v2-reg .dentisity-field input:not([type="checkbox"]),
.dnt-v2-reg .dentisity-field select,
.dnt-v2-reg .dentisity-field textarea {
	width: 100%;
	border: 1.5px solid var(--v2-border-light);
	border-radius: var(--v2-input-radius);
	padding: 9px 12px;
	font-size: 14px;
	color: var(--v2-text);
	background: var(--v2-card-bg);
	transition: border-color .15s, box-shadow .15s;
	box-sizing: border-box;
}
.dnt-v2-reg .dentisity-field input:focus,
.dnt-v2-reg .dentisity-field select:focus {
	outline: none;
	border-color: var(--v2-border);
	box-shadow: 0 0 0 3px rgba(99,102,241,.15);
}

/* Custom field toggles */
.dnt-v2-reg .dentisity-field label.dnt-v2-toggle-label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	cursor: pointer;
	font-size: 14px;
	font-weight: 400;
	color: var(--v2-text);
	margin-bottom: 0;
	line-height: 1.4;
}
.dnt-v2-reg .dnt-v2-toggle-label > span {
	flex: 1;
	min-width: 0;
}
.dnt-v2-reg .dnt-v2-toggle-label input[type="checkbox"] {
	width: 16px;
	height: 16px;
	min-width: 16px;
	min-height: 16px;
	margin: 2px 0 0;
	flex-shrink: 0;
	cursor: pointer;
	accent-color: var(--v2-accent, #f5c030);
}

/* Two-col sub-grid inside a column */
.dnt-v2-row-2col {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

/* Conditional note */
.dnt-v2-conditional-note {
	display: flex;
	align-items: center;
	gap: 5px;
	font-size: 11.5px;
	color: var(--v2-text-muted);
	border: 1.5px dashed var(--v2-border-light);
	border-radius: 7px;
	padding: 6px 10px;
	margin-bottom: 14px;
}

/* Conditional fields box (university block, shown only for relevant participant types) */
.dnt-v2-conditional-box { margin-bottom: 15px !important; }
.dnt-v2-conditional-box .dnt-v2-conditional-inner { display: none; }
.dnt-v2-conditional-box.is-active .dnt-v2-conditional-empty { display: none; }
.dnt-v2-conditional-box.is-active .dnt-v2-conditional-inner {
	display: block;
	animation: dnt-v2-cond-reveal .26s ease both;
}
.dnt-v2-conditional-box.is-active .dnt-v2-conditional-inner > .dentisity-field:last-child { margin-bottom: 0; }
@keyframes dnt-v2-cond-reveal {
	from { opacity: 0; transform: translateY(-6px); }
	to   { opacity: 1; transform: translateY(0); }
}
@keyframes dnt-v2-acc-slide {
	from { opacity: 0; transform: translateY(-10px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* ── Docs box ──────────────────────────────────────────────── */
.dnt-v2-docs-box {
	margin-top: 18px;
	margin-bottom: 15px;
	border: 1.5px dashed var(--v2-border-light);
	border-radius: 10px;
	overflow: hidden;
}

.dnt-v2-docs-trigger {
	display: flex !important;
	width: 100%;
	background: var(--v2-bg);
	border: none;
	border-radius: 0;
	padding: 11px 14px;
	font-size: 13px;
	font-weight: 600;
	color: var(--v2-text);
	cursor: pointer;
	text-align: left;
	align-items: center;
	gap: 8px;
}
.dnt-v2-docs-trigger:hover { background: #f1f5f9; }

.dnt-v2-docs-badge {
	font-size: 10px;
	font-weight: 600;
	background: #eef2ff;
	border: 1px solid #c7d2fe;
	color: #4f46e5;
	border-radius: 5px;
	padding: 2px 7px;
	margin-left: auto;
	white-space: nowrap;
}

.dnt-v2-docs-body {
	padding: 14px;
}

/* accordion arrow */
.dnt-v2-acc-arrow {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	transition: transform .2s;
}
.dnt-v2-acc-trigger[aria-expanded="true"] .dnt-v2-acc-arrow {
	transform: rotate(180deg);
}

/* ── Footer bar ────────────────────────────────────────────── */
.dnt-v2-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 18px 32px;
	border-top: 1.5px dashed var(--v2-border-light);
	background: var(--v2-bg);
}

.dnt-v2-footer-left {
	flex: 1;
	min-width: 0;
}

.dnt-v2-lock-notice {
	display: flex;
	align-items: flex-start;
	gap: 7px;
	font-size: 12px;
	color: var(--v2-text-muted);
	line-height: 1.4;
}
.dnt-v2-lock-notice svg { flex-shrink: 0; margin-top: 1px; }

.dnt-v2-footer-right {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
}

.dnt-v2-submit-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background-color: var(--theme-button-background-initial-color);
	color: var(--theme-button-text-initial-color);
	border: var(--theme-button-border);
	border-radius: 10px;
	padding: 12px 24px;
	font-family: var(--v2-font-display);
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
	transition: background-color .15s, color .15s, border-color .15s, transform .1s;
	white-space: nowrap;
}
.dnt-v2-submit-btn:hover {
	background-color: var(--theme-button-background-hover-color);
	color: var(--theme-button-text-hover-color);
	border-color: var(--theme-button-border-hover-color);
	transform: translateY(-1px);
}
.dnt-v2-submit-btn:active { transform: translateY(0); }
.dnt-v2-submit-btn.dnt-submit-incomplete {
	opacity: 0.48;
	cursor: not-allowed;
	filter: grayscale(0.12);
}
.dnt-v2-submit-btn.dnt-submit-incomplete:hover {
	background-color: var(--theme-button-background-initial-color);
	color: var(--theme-button-text-initial-color);
	transform: none;
}

/* ── V2 form validation feedback ── */
@keyframes dnt-shake {
	0%, 100% { transform: translateX(0); }
	15%       { transform: translateX(-6px); }
	30%       { transform: translateX(6px); }
	45%       { transform: translateX(-4px); }
	60%       { transform: translateX(4px); }
	75%       { transform: translateX(-2px); }
	90%       { transform: translateX(2px); }
}
.dnt-shake { animation: dnt-shake 0.45s ease; }
.dnt-v2-submit-btn.dnt-submit-error {
	background: #ef4444 !important;
	border-color: #dc2626 !important;
}
.dnt-v2-reg .dentisity-field.dnt-field-error input,
.dnt-v2-reg .dentisity-field.dnt-field-error select,
.dnt-v2-reg .dentisity-field.dnt-field-error textarea {
	border-color: #ef4444 !important;
	box-shadow: 0 0 0 3px rgba(239,68,68,.12) !important;
}
.dnt-v2-reg .dnt-field-error-msg {
	display: block;
	font-size: 11px;
	color: #ef4444;
	margin-top: 4px;
	font-weight: 500;
	letter-spacing: .01em;
}

/* ── Desktop: widen the container beyond the theme's content column ─ */
@media (min-width: 768px) {
	/* Only widen the form-card when it actually wraps V2 content — legacy
	   forms keep their original width. */
	.dentisity-form-card:has(.dnt-v2-reg, .dnt-v2-pass-wrap, .dnt-v2-ws-wrap),
	.dnt-v2-reg,
	.dnt-v2-pass-wrap,
	.dnt-v2-ws-wrap {
		/* Centres on the column midpoint and expands to 1100 px max.
		   Works in standard WP themes where content is centred. */
		max-width: 1100px;
		width: min(1100px, calc(100vw - 48px));
		margin-left: calc(50% - min(550px, (100vw - 48px) / 2));
		margin-right: 0;
	}
	/* When the form-card already provides the wide frame, the inner V2
	   wrappers just fill it (avoids a double breakout offset). */
	.dentisity-form-card .dnt-v2-reg,
	.dentisity-form-card .dnt-v2-pass-wrap,
	.dentisity-form-card .dnt-v2-ws-wrap {
		max-width: none;
		width: auto;
		margin-left: 0;
	}
}

/* ── Mobile ≤767px ─────────────────────────────────────────── */
@media (max-width: 767px) {

	.dnt-v2-header { padding: 20px 18px 0; }
	.dnt-v2-title  { font-size: 26px; }

	.dnt-v2-body {
		grid-template-columns: 1fr;
	}

	.dnt-v2-col {
		padding: 0;
		border-left: none !important;
		border-bottom: 1.5px dashed var(--v2-border-light);
	}
	.dnt-v2-col:last-child { border-bottom: none; }

	/* Show accordion trigger, hide desktop title */
	.dnt-v2-acc-trigger {
		display: flex !important;
		width: 100%;
		align-items: center;
		gap: 10px;
		background: var(--v2-bg);
		border: none;
		border-bottom: 1.5px dashed var(--v2-border-light);
		padding: 14px 18px;
		font-family: var(--v2-font-display);
		font-size: 18px;
		font-weight: 700;
		color: var(--v2-text);
		cursor: pointer;
		text-align: left;
		min-height: 52px;
	}
	.dnt-v2-acc-trigger[aria-expanded="true"] {
		background: var(--v2-accent);
		color: #fff;
	}
	.dnt-v2-acc-trigger[aria-disabled="true"] {
		cursor: default;
	}
	.dnt-v2-acc-trigger svg.dnt-v2-acc-arrow { margin-left: 8px; }

	/* Section completion pill (green = complete, red = incomplete) */
	.dnt-v2-acc-status {
		display: inline-flex;
		align-items: center;
		margin-left: auto;
		font-size: 10px;
		font-weight: 800;
		letter-spacing: .06em;
		padding: 3px 9px;
		border-radius: 999px;
		border: 1.5px solid;
		white-space: nowrap;
		font-family: var(--v2-font-body, inherit);
	}
	.dnt-v2-acc-status[data-status="complete"] {
		color: #15803d; background: #dcfce7; border-color: #86efac;
	}
	.dnt-v2-acc-status[data-status="incomplete"] {
		color: #b91c1c; background: #fee2e2; border-color: #fca5a5;
	}

	.dnt-v2-col-title { display: none; }

	/* Accordion body: hidden by default on mobile; JS controls display */
	.dnt-v2-acc-body {
		padding: 18px 18px;
	}
	/* Slide-in animation when an accordion section opens */
	.dnt-v2-acc-body.dnt-v2-acc-in {
		animation: dnt-v2-acc-slide .28s ease both;
	}

	/* Footer right: stack Turnstile above submit button on mobile */
	.dnt-v2-footer-right {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
	}
	.dnt-v2-submit-btn {
		width: 100%;
		justify-content: center;
	}

	/* Docs trigger stays visible always on mobile */
	.dnt-v2-docs-trigger { display: flex !important; }

	.dnt-v2-row-2col { grid-template-columns: 1fr; }

	.dnt-v2-footer {
		flex-direction: column;
		align-items: stretch;
		padding: 16px 18px;
		gap: 12px;
	}

	.dnt-v2-footer-right { justify-content: flex-end; }

	.dnt-v2-submit-btn {
		width: 100%;
		justify-content: center;
		font-size: 20px;
		padding: 14px 20px;
	}
}

/* ═══════════════════════════════════════════════════════════
   V2 Pass Selection — Step 3/4
   ═══════════════════════════════════════════════════════════ */

/* ── Wrapper & header ──────────────────────────────────────── */
.dnt-v2-pass-wrap {
	padding: 0;
}
.dnt-v2-pass-header {
	padding: 28px 32px 20px;
	border-bottom: 1.5px dashed var(--v2-border-light, #d4c9a8);
}

/* ── Pass grid: equal-height columns ───────────────────────── */
.dnt-v2-pass-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 20px;
	padding: 24px 32px;
	align-items: stretch;
}

/* ── Wave border wrapper: keep existing animation ──────────── */
.dnt-v2-pass-grid .dnt-wave-border-wrap {
	display: flex;
	flex-direction: column;
}

/* ── Pass card ─────────────────────────────────────────────── */
.dnt-v2-pass-card {
	background: var(--v2-card-bg, #faf7f0);
	border: 2px solid var(--v2-border, #2a1f0e);
	border-radius: 14px;
	display: flex;
	flex-direction: column;
	flex: 1;
	position: relative;
	cursor: pointer;
	transition: box-shadow .15s, transform .1s;
	overflow: visible;
}
@media (hover: hover) {
	.dnt-v2-pass-card:hover:not(.dnt-v2-pass-card--sold-out) {
		box-shadow: 0 4px 20px rgba(42,31,14,.12);
		transform: translateY(-2px);
	}
}
.dnt-v2-pass-card--selected {
	border-color: var(--v2-accent, #f5c030);
	box-shadow: 0 0 0 3px var(--v2-accent, #f5c030), 0 4px 20px rgba(245,192,48,.2);
}
.dnt-v2-pass-card--recommended {
	border-color: #c99810;
}
.dnt-v2-pass-card--sold-out {
	opacity: .55;
	cursor: not-allowed;
	filter: grayscale(.4);
}

/* ── Recommended badge (tab) ───────────────────────────────── */
.dnt-v2-pass-rec-badge {
	position: absolute;
	top: -14px;
	left: 14px;
	transform: none;
	background: var(--v2-accent, #f5c030);
	border: 2px solid var(--v2-border, #2a1f0e);
	border-radius: 6px;
	padding: 3px 12px;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .08em;
	color: var(--v2-text, #2a1f0e);
	white-space: nowrap;
	z-index: 1;
}

/* ── Selected check badge (top-right box, animated) ────────── */
.dnt-v2-pass-check-badge {
	position: absolute;
	top: -13px;
	right: 14px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	background: var(--v2-accent, #f5c030);
	border: 2px solid var(--v2-border, #2a1f0e);
	border-radius: 6px;
	padding: 3px 10px 3px 8px;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .08em;
	color: var(--v2-text, #2a1f0e);
	white-space: nowrap;
	/* Hidden by default; animate in/out on selection */
	opacity: 0;
	transform: translateY(6px) scale(.7);
	transform-origin: 80% 100%;
	pointer-events: none;
	transition: opacity .16s ease, transform .16s ease;
}
.dnt-v2-pass-check-badge svg {
	width: 13px;
	height: 13px;
	flex-shrink: 0;
}
.dnt-v2-pass-card--selected .dnt-v2-pass-check-badge {
	opacity: 1;
	transform: translateY(0) scale(1);
	transition: opacity .2s ease, transform .26s cubic-bezier(.22,1,.36,1);
}

/* ── Workshop selected badge ───────────────────────────────── */
.dnt-v2-ws-selectat-badge {
	position: absolute;
	top: -13px;
	left: 14px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	background: var(--v2-accent, #f5c030);
	border: 2px solid var(--v2-border, #2a1f0e);
	border-radius: 6px;
	padding: 3px 10px 3px 8px;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .08em;
	color: var(--v2-text, #2a1f0e);
	white-space: nowrap;
	opacity: 0;
	transform: translateY(6px) scale(.7);
	transform-origin: 20% 100%;
	pointer-events: none;
	transition: opacity .16s ease, transform .16s ease;
}
.dnt-v2-ws-selectat-badge svg {
	width: 13px;
	height: 13px;
	flex-shrink: 0;
}
.dnt-v2-ws-card.ws-selected .dnt-v2-ws-selectat-badge {
	opacity: 1;
	transform: translateY(0) scale(1);
	transition: opacity .2s ease, transform .26s cubic-bezier(.22,1,.36,1);
}

/* ── Card inner ────────────────────────────────────────────── */
.dnt-v2-pass-card-inner {
	padding: 20px 20px 20px;
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: 10px;
}

/* ── Eyebrow (wave label · tier) ───────────────────────────── */
.dnt-v2-pass-eyebrow {
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--v2-text-muted, #7a6a4a);
}

/* ── Name + price row ──────────────────────────────────────── */
.dnt-v2-pass-name-row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 8px;
}
.dnt-v2-pass-name {
	font-family: var(--v2-font-display);
	font-size: 30px;
	font-weight: 700;
	line-height: 1;
	color: var(--v2-text, #2a1f0e);
}
.dnt-v2-pass-price {
	font-family: var(--v2-font-display);
	font-size: 26px;
	font-weight: 700;
	color: var(--v2-text, #2a1f0e);
	white-space: nowrap;
	text-align: right;
	flex-shrink: 0;
}
.dnt-v2-pass-price-old {
	text-decoration: line-through;
	opacity: .45;
	font-size: .75em;
	display: block;
}
.dnt-v2-pass-price-current {
	color: var(--v2-text, #2a1f0e);
}

/* ── Capacity bar ──────────────────────────────────────────── */
.dnt-v2-pass-slots {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.dnt-v2-pass-slots-bar {
	height: 8px;
	background: #e5e0d0;
	border-radius: 99px;
	overflow: hidden;
}
.dnt-v2-pass-slots-fill {
	height: 100%;
	border-radius: 99px;
	/* impeccable-disable-next-line layout-transition -- progress bar fill; width IS the data value */
	transition: width .4s ease;
}
.dnt-v2-pass-slots-text {
	font-size: 12px;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-pass-slots-text--soldout {
	font-size: 12px;
	color: #dc2626;
	font-weight: 600;
}

/* ── Excerpt: truncated with expand ───────────────────────────*/
.dnt-v2-pass-excerpt-wrap {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.dnt-v2-pass-excerpt {
	font-size: 13px;
	color: var(--v2-text-muted, #7a6a4a);
	line-height: 1.55;
	max-height: 5.5em;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
	mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
	/* impeccable-disable-next-line layout-transition -- excerpt expand; dynamic content height, no inner wrapper for grid approach */
	transition: max-height .3s ease, -webkit-mask-image .3s, mask-image .3s;
}
.dnt-v2-pass-excerpt--expanded {
	max-height: 600px;
	-webkit-mask-image: none;
	mask-image: none;
}
.dnt-v2-pass-see-more {
	background: none;
	border: none;
	padding: 0;
	font-size: 12px;
	color: var(--v2-accent-dark, #c99810);
	cursor: pointer;
	text-align: left;
	font-weight: 600;
}
.dnt-v2-pass-see-more:hover { text-decoration: underline; }

/* ── Select button ─────────────────────────────────────────── */
.dnt-v2-pass-select-btn {
	display: block;
	width: 100%;
	margin-top: auto;
	padding: 11px 16px;
	border: 2px solid var(--v2-border, #2a1f0e);
	border-radius: 10px;
	background: transparent;
	font-family: var(--v2-font-display);
	font-size: 17px;
	font-weight: 700;
	color: var(--v2-text, #2a1f0e);
	cursor: pointer;
	transition: background .15s, color .15s;
}
.dnt-v2-pass-select-btn:hover:not(:disabled) {
	background: var(--v2-border, #2a1f0e);
	color: var(--v2-card-bg, #faf7f0);
}
.dnt-v2-pass-select-btn--disabled {
	opacity: .4;
	cursor: not-allowed;
}
.dnt-v2-pass-card--selected .dnt-v2-pass-select-btn {
	background: var(--v2-accent, #f5c030);
	border-color: var(--v2-accent-dark, #c99810);
}

/* ── Bottom sticky bar ─────────────────────────────────────── */
.dnt-v2-pass-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 16px 32px;
	border-top: 1.5px dashed var(--v2-border-light, #d4c9a8);
	background: var(--v2-bg, #f5f0e4);
	position: sticky;
	bottom: 0;
	z-index: 10;
}
.dnt-v2-pass-bar-left {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 8px;
}
.dnt-v2-pass-bar-cart { flex-shrink: 0; opacity: .7; }
.dnt-v2-pass-bar-label {
	font-size: 12px;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-pass-bar-name {
	font-size: 15px;
	font-family: var(--v2-font-display);
	font-weight: 700;
	color: var(--v2-text, #2a1f0e);
}

/* ── Mobile ≤767px ─────────────────────────────────────────── */
@media (max-width: 767px) {
	.dnt-v2-pass-header { padding: 20px 18px 16px; }

	.dnt-v2-pass-grid {
		grid-template-columns: 1fr;
		padding: 16px 18px;
		gap: 24px;
	}

	.dnt-v2-pass-bar {
		flex-direction: column;
		align-items: stretch;
		padding: 14px 18px;
		gap: 10px;
	}

	.dnt-v2-pass-bar .dnt-v2-submit-btn {
		width: 100%;
		justify-content: center;
	}
}

/* ═══════════════════════════════════════════════════════════
   V2 STEP 5 — Workshop + Add-on selection
   ═══════════════════════════════════════════════════════════ */

.dnt-v2-ws-wrap {
	font-family: var(--v2-font-display, 'DM Sans', system-ui, sans-serif);
	color: var(--v2-text, #2a1f0e);
	background: var(--v2-bg, #f5f0e4);
	min-height: 100%;
}

/* ── Step 5 header ─────────────────────────────────────────── */
.dnt-v2-ws-header {
	padding: 28px 32px 20px;
	border-bottom: 1.5px dashed var(--v2-border-light, #d4c9a8);
	margin-bottom: 24px;
}
@media (max-width: 767px) {
	.dnt-v2-ws-header { padding: 20px 18px 16px; margin-bottom: 16px; }
}

/* ── Two-column layout (desktop) ───────────────────────────── */
.dnt-v2-ws-layout {
	display: grid;
	grid-template-columns: 1fr 340px;
	gap: 32px;
	align-items: start;
	padding: 28px 32px;
}

.dnt-v2-ws-left {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

/* ── Day accordion ─────────────────────────────────────────── */
.dnt-v2-ws-day-accordion {
	background: var(--v2-card-bg, #faf7f0);
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 12px;
	transition: border-color .15s;
}
.dnt-v2-ws-day-accordion.is-open { border-color: var(--v2-border, #2a1f0e); }

.dnt-v2-ws-day-trigger {
	width: 100%;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 18px;
	background: none;
	border: none;
	cursor: pointer;
	text-align: left;
	font-family: inherit;
	color: var(--v2-text, #2a1f0e);
}
.dnt-v2-ws-day-trigger:hover { background: rgba(0,0,0,.03); }

.dnt-v2-ws-day-name { font-size: 15px; font-weight: 600; flex: 1; }
.dnt-v2-ws-day-meta { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--v2-text-muted, #7a6a4a); }

.dnt-v2-ws-day-slot {
	display: inline-grid;
	align-items: center;
	clip-path: inset(-3px);
}
.dnt-v2-ws-day-count {
	grid-column: 1; grid-row: 1;
	white-space: nowrap;
	transition: transform .22s cubic-bezier(.4,0,.2,1), opacity .18s ease;
	will-change: transform;
}
.dnt-v2-ws-day-chosen {
	grid-column: 1; grid-row: 1;
	justify-self: start;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	background: var(--v2-accent, #f5c030);
	border: 1.5px solid var(--v2-border, #2a1f0e);
	border-radius: 20px;
	padding: 1px 10px 1px 8px;
	font-size: 11px;
	font-weight: 700;
	color: var(--v2-text, #2a1f0e);
	white-space: nowrap;
	transform: translateY(-120%);
	opacity: 0;
	pointer-events: none;
	transition: transform .22s cubic-bezier(.4,0,.2,1), opacity .18s ease;
	will-change: transform;
}
.dnt-v2-ws-day-slot.has-selection .dnt-v2-ws-day-count {
	transform: translateY(120%);
	opacity: 0;
	pointer-events: none;
}
.dnt-v2-ws-day-slot.has-selection .dnt-v2-ws-day-chosen {
	transform: translateY(0);
	opacity: 1;
	pointer-events: auto;
}
.dnt-v2-ws-day-chosen strong { font-weight: 800; }

.dnt-v2-ws-day-chevron {
	flex-shrink: 0;
	transition: transform .2s;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-ws-day-accordion.is-open .dnt-v2-ws-day-chevron { transform: rotate(180deg); }

.dnt-v2-ws-day-body {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows .28s cubic-bezier(.4,0,.2,1);
	border-top: 1px solid transparent;
}
.dnt-v2-ws-day-accordion.is-open .dnt-v2-ws-day-body {
	grid-template-rows: 1fr;
	border-top-color: var(--v2-border-light, #d4c9a8);
}
.dnt-v2-ws-day-body-inner { overflow: hidden; }

/* ── Workshop cards ────────────────────────────────────────── */
.dnt-v2-ws-cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 12px;
	padding: 16px;
}

.dnt-v2-ws-card {
	background: var(--v2-card-bg, #faf7f0);
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 10px;
	overflow: visible;
	position: relative;
	cursor: pointer;
	transition: border-color .15s, box-shadow .15s, transform .1s;
	position: relative;
	display: flex;
	flex-direction: column;
	user-select: none;
}
.dnt-v2-ws-card:hover:not(.ws-soldout):not(.ws-owned) {
	border-color: var(--v2-accent, #f5c030);
	box-shadow: 0 2px 12px rgba(0,0,0,.08);
}
.dnt-v2-ws-card.ws-selected {
	border-color: var(--v2-accent, #f5c030);
	background: #fffbee;
	box-shadow: 0 0 0 3px rgba(245,192,48,.2);
}
.dnt-v2-ws-card.dnt-v2-has-conflict { border-color: #fcd34d; background: #fffbeb; }
.dnt-v2-ws-card.dnt-v2-has-conflict.ws-selected { box-shadow: 0 0 0 3px rgba(252,211,77,.35); }
.dnt-v2-ws-card.ws-owned { opacity: .75; cursor: default; }
.dnt-v2-ws-card.ws-soldout { opacity: .5; cursor: not-allowed; }

.dnt-v2-ws-thumb {
	height: 90px;
	background: var(--v2-border-light, #d4c9a8) center/cover no-repeat;
	background-size: cover;
	background-position: center;
	border-radius: 8px 8px 0 0;
	flex-shrink: 0;
}

.dnt-v2-ws-card-body {
	padding: 10px 12px 12px;
	display: flex;
	flex-direction: column;
	gap: 2px;
	flex: 1;
}
.dnt-v2-ws-card-body .dnt-v2-ws-name { margin-top: 2px; }
.dnt-v2-ws-card-body .dnt-v2-ws-speakers { margin-top: 0; }

.dnt-v2-ws-card-meta {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 11px;
	color: var(--v2-text-muted, #7a6a4a);
	flex-wrap: wrap;
}
.dnt-v2-ws-room::before { content: '·'; margin-right: 4px; }

.dnt-v2-ws-name {
	font-size: 13px;
	font-weight: 600;
	margin: 0;
	line-height: 1.3;
	word-break: break-word;
	overflow-wrap: break-word;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.dnt-v2-ws-speakers {
	font-size: 11px;
	color: var(--v2-text-muted, #7a6a4a);
	margin: 0;
	min-width: 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 100%;
}

.dnt-v2-card-spon-logos {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin-top: 4px;
	margin-bottom: 2px;
}

.dnt-v2-card-spon-logos a {
	display: inline-flex;
	align-items: center;
	opacity: 0.7;
	transition: opacity .15s ease;
}

.dnt-v2-card-spon-logos a:hover { opacity: 1; }

.dnt-v2-card-spon-logos img {
	display: block;
	height: 18px;
	width: auto;
	max-width: 56px;
	object-fit: contain;
}

.dnt-v2-ws-card-footer {
	display: flex;
	align-items: flex-end;
	gap: 6px;
	margin-top: auto;
	padding-top: 8px;
	flex-wrap: wrap;
}

.dnt-v2-ws-wave-badge {
	font-size: 10px;
	background: #fff3e0;
	color: #c95c00;
	border-radius: 4px;
	padding: 2px 6px;
	font-weight: 600;
}

.dnt-v2-ws-price { font-size: 13px; font-weight: 700; margin-left: auto; display: grid; justify-items: end; }
.dnt-v2-ws-price-old { font-size: 11px; font-weight: 500; text-decoration: line-through; opacity: .5; margin-right: 0; margin-bottom: -8px; }
.dnt-v2-ws-free { color: #16a34a; }

.dnt-v2-ws-info-btn {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: none;
	border: none;
	padding: 2px;
	margin-left: 4px;
	cursor: pointer;
	color: var(--v2-text, #2a1f0e);
	opacity: .45;
	border-radius: 50%;
	transition: opacity .15s, background .15s;
}
.dnt-v2-ws-info-btn:hover { opacity: 1; background: rgba(42,31,14,.08); }

.dnt-v2-ws-badge {
	font-size: 11px;
	border-radius: 4px;
	padding: 2px 7px;
	font-weight: 600;
}
.dnt-v2-ws-badge--select { background: var(--v2-accent, #f5c030); color: var(--v2-text, #2a1f0e); }
.dnt-v2-ws-card.ws-selected .dnt-v2-ws-badge--select { background: var(--v2-text, #2a1f0e); color: #fff; }
.dnt-v2-ws-badge--owned { background: #dcfce7; color: #166534; }
.dnt-v2-ws-badge--soldout { background: #fee2e2; color: #991b1b; }

/* ── Add-ons box ───────────────────────────────────────────── */
.dnt-v2-ws-addons-box {
	border: 1.5px dashed var(--v2-border-light, #d4c9a8);
	border-radius: 12px;
	padding: 16px;
	background: var(--v2-card-bg, #faf7f0);
}
.dnt-v2-ws-addons-title {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--v2-text-muted, #7a6a4a);
	margin: 0 0 12px;
}
.dnt-v2-ws-addons-list { display: flex; flex-direction: column; gap: 8px; }

.dnt-v2-ao-card {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 8px;
	background: var(--v2-bg, #f5f0e4);
	cursor: pointer;
	transition: border-color .15s, background .15s;
	position: relative;
	user-select: none;
}
.dnt-v2-ao-card:hover:not(.ao-owned):not(.ao-soldout) {
	border-color: var(--v2-accent, #f5c030);
	background: #fffbee;
}
.dnt-v2-ao-card.ao-selected { border-color: var(--v2-accent, #f5c030); background: #fffbee; }
.dnt-v2-ao-card.ao-owned, .dnt-v2-ao-card.ao-soldout { cursor: default; opacity: .7; }

.dnt-v2-ao-thumb {
	width: 48px;
	height: 48px;
	border-radius: 6px;
	background: var(--v2-border-light, #d4c9a8) center/cover no-repeat;
	flex-shrink: 0;
}
.dnt-v2-ao-info { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dnt-v2-ao-name { font-size: 13px; font-weight: 600; }
.dnt-v2-ao-meta { font-size: 11px; color: var(--v2-text-muted, #7a6a4a); }
.dnt-v2-ao-price { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; white-space: nowrap; flex-shrink: 0; }
.dnt-v2-ao-price-cur { font-size: 13px; font-weight: 700; color: var(--v2-text, #2a1f0e); line-height: 1.3; }
.dnt-ws-modal-price-stack { display: flex; flex-direction: row; align-items: baseline; gap: 8px; }
.dnt-v2-ao-check {
	width: 20px;
	height: 20px;
	border-radius: 50%;
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	transition: background .12s, border-color .12s;
}
.dnt-v2-ao-info-btn {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	padding: 0;
	background: none;
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 50%;
	color: var(--v2-text-muted, #7a6a4a);
	cursor: pointer;
	transition: border-color .15s, color .15s;
}
.dnt-v2-ao-info-btn:hover { border-color: var(--v2-border, #2a1f0e); color: var(--v2-text, #2a1f0e); }

.dnt-v2-ao-actions {
	flex-shrink: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
}

.dnt-v2-ao-card.ao-selected .dnt-v2-ao-check {
	background: var(--v2-text, #2a1f0e);
	border-color: var(--v2-text, #2a1f0e);
}



/* ── Right sidebar ─────────────────────────────────────────── */
.dnt-v2-ws-sidebar {
	position: sticky;
	top: 20px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.dnt-v2-ws-pass-recap {
	background: var(--v2-card-bg, #faf7f0);
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 12px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.dnt-v2-ws-pass-thumb {
	height: 80px;
	background: var(--v2-border-light, #d4c9a8) center/cover no-repeat;
}
.dnt-v2-ws-pass-info {
	padding: 10px 14px;
	display: flex;
	flex-direction: column;
	gap: 3px;
}
.dnt-v2-ws-pass-tier {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-ws-pass-name { font-size: 14px; font-weight: 700; }
.dnt-v2-ws-pass-free { font-size: 12px; color: var(--v2-text-muted, #7a6a4a); }

.dnt-v2-ws-pass-change {
	margin: 0 14px 12px;
	background: none;
	border: 1px solid var(--v2-border-light, #d4c9a8);
	border-radius: 6px;
	padding: 6px 10px;
	font-size: 12px;
	font-family: inherit;
	color: var(--v2-text-muted, #7a6a4a);
	cursor: pointer;
	transition: border-color .12s;
}
.dnt-v2-ws-pass-change:hover { border-color: var(--v2-border, #2a1f0e); color: var(--v2-text, #2a1f0e); }

.dnt-v2-ws-summary {
	background: var(--v2-card-bg, #faf7f0);
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 12px;
	padding: 14px 16px;
}
.dnt-v2-ws-summary-title {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--v2-text-muted, #7a6a4a);
	margin: 0 0 10px;
}
.dnt-v2-ws-summary-rows { display: flex; flex-direction: column; gap: 6px; }
.dnt-v2-sum-row { display: flex; justify-content: space-between; font-size: 13px; }
.dnt-v2-sum-discount { color: #16a34a; }
.dnt-v2-sum-divider { height: 1px; background: var(--v2-border-light, #d4c9a8); margin: 10px 0; }
.dnt-v2-sum-total { display: flex; justify-content: space-between; font-size: 15px; font-weight: 700; }

/* Reuse legacy pop animations on V2 summary values */
.dnt-v2-ws-summary #dnt_summary_ws_row,
.dnt-v2-ws-summary #dnt_summary_ao_row,
.dnt-v2-ws-summary #dnt_dp_summary_ws_row,
.dnt-v2-ws-summary #dnt_dp_summary_ao_row {
	overflow: hidden;
	max-height: 0;
	opacity: 0;
	/* impeccable-disable-next-line layout-transition -- row reveal; grid-template-rows requires inner wrapper (HTML change in PHP template) */
	transition: max-height .28s ease, opacity .22s ease, margin .28s ease;
	margin-top: -6px;
}
.dnt-v2-ws-summary #dnt_summary_ws_row.dnt-ws-row-visible,
.dnt-v2-ws-summary #dnt_summary_ao_row.dnt-ws-row-visible,
.dnt-v2-ws-summary #dnt_dp_summary_ws_row.dnt-ws-row-visible,
.dnt-v2-ws-summary #dnt_dp_summary_ao_row.dnt-ws-row-visible {
	max-height: 48px;
	opacity: 1;
	margin-top: 0;
}
.dnt-v2-sum-total-val { display: inline-block; }
.dnt-v2-sum-total-val.dnt-total-pop { animation: dnt-total-pop .3s ease; }
#dnt_summary_ws_price.dnt-val-pop,
#dnt_summary_ao_price.dnt-val-pop,
#dnt_dp_summary_ws_price.dnt-val-pop,
#dnt_dp_summary_ao_price.dnt-val-pop,
#v2_drawer_ws_price.dnt-val-pop,
#v2_drawer_ao_price.dnt-val-pop { animation: dnt-total-pop .25s ease; }
#dnt_dp_summary_total.dnt-total-pop,
#v2_drawer_total.dnt-total-pop { animation: dnt-total-pop .3s ease; }

.dnt-v2-ws-cta { display: flex; flex-direction: column; gap: 8px; }

.dnt-v2-ws-pay-btn {
	width: 100%;
	padding: 13px 20px;
	background-color: var(--theme-button-background-initial-color);
	color: var(--theme-button-text-initial-color);
	border: var(--theme-button-border);
	border-radius: 10px;
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
	transition: background-color .15s, color .15s, border-color .15s, transform .1s;
}
.dnt-v2-ws-pay-btn:hover {
	background-color: var(--theme-button-background-hover-color);
	color: var(--theme-button-text-hover-color);
	border-color: var(--theme-button-border-hover-color);
	transform: translateY(-1px);
}
.dnt-v2-ws-pay-btn:active { transform: none; }
.dnt-v2-ws-pay-btn:disabled,
.dnt-v2-ws-pay-btn[disabled] {
	opacity: 0.48;
	cursor: not-allowed;
	filter: grayscale(0.12);
}
.dnt-v2-ws-pay-btn:disabled:hover,
.dnt-v2-ws-pay-btn[disabled]:hover {
	background-color: var(--theme-button-background-initial-color);
	color: var(--theme-button-text-initial-color);
	transform: none;
}

.dnt-v2-ws-back-link {
	background: none;
	border: none;
	font-family: inherit;
	font-size: 13px;
	color: var(--v2-text-muted, #7a6a4a);
	cursor: pointer;
	text-align: center;
	padding: 4px;
}
.dnt-v2-ws-back-link:hover { color: var(--v2-text, #2a1f0e); }

/* ── Mobile: bar/pill hidden by default ────────────────────── */
.dnt-v2-ws-bar { display: none; }
.dnt-v2-ws-pill { display: none; }

/* Bottom drawer — hidden on desktop ───────────────────────── */
.dnt-v2-ws-drawer {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 9999;
	pointer-events: none;
}
.dnt-v2-ws-drawer.is-open { pointer-events: auto; }
.dnt-v2-ws-drawer-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0,0,0,.45);
	opacity: 0;
	transition: opacity .25s;
}
.dnt-v2-ws-drawer.is-open .dnt-v2-ws-drawer-backdrop { opacity: 1; }
.dnt-v2-ws-drawer-sheet {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	background: var(--v2-card-bg, #faf7f0);
	border-radius: 20px 20px 0 0;
	padding: 12px 20px 28px;
	max-height: 90vh;
	overflow-y: auto;
	transform: translateY(calc(100% + 100px));
	transition: transform .3s cubic-bezier(.32,.72,0,1);
}
.dnt-v2-ws-drawer.is-open .dnt-v2-ws-drawer-sheet { transform: translateY(0); }
.dnt-v2-ws-drawer-handle {
	width: 40px;
	height: 4px;
	border-radius: 2px;
	background: var(--v2-border-light, #d4c9a8);
	margin: 0 auto 16px;
}
.dnt-v2-ws-drawer-pass {
	display: flex;
	gap: 12px;
	align-items: center;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--v2-border-light, #d4c9a8);
	margin-bottom: 14px;
}
.dnt-v2-ws-drawer-thumb {
	width: 56px;
	height: 56px;
	border-radius: 8px;
	background: var(--v2-border-light, #d4c9a8) center/cover no-repeat;
	flex-shrink: 0;
}
.dnt-v2-ws-drawer-pass-info { display: flex; flex-direction: column; gap: 2px; }
.dnt-v2-ws-drawer-tier {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-ws-drawer-pass-name { font-size: 14px; font-weight: 700; }
.dnt-v2-ws-drawer-pass-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.dnt-v2-ws-drawer-pass-price { font-size: 13px; font-weight: 600; color: var(--v2-text-muted, #7a6a4a); }
.dnt-v2-ws-drawer-free { font-size: 12px; color: var(--v2-text-muted, #7a6a4a); }
.dnt-v2-drawer-change-pass {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	gap: 5px;
	padding: 6px 11px;
	background: none;
	border: 1.5px solid var(--v2-border, #2a1f0e);
	border-radius: 20px;
	font-family: inherit;
	font-size: 12px;
	font-weight: 600;
	color: var(--v2-text, #2a1f0e);
	cursor: pointer;
	white-space: nowrap;
	transition: background .15s;
}
.dnt-v2-drawer-change-pass:hover { background: var(--v2-accent, #f5c030); }
.dnt-v2-ws-drawer-rows { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.dnt-v2-drow { display: flex; justify-content: space-between; font-size: 13px; }
.dnt-v2-ws-drawer-divider { height: 1px; background: var(--v2-border-light, #d4c9a8); margin: 10px 0; }
.dnt-v2-ws-drawer-total {
	display: flex;
	justify-content: space-between;
	font-size: 16px;
	font-weight: 700;
	margin-bottom: 16px;
}
.dnt-v2-ws-drawer-pay-btn {
	width: 100%;
	padding: 14px;
	background-color: var(--theme-button-background-initial-color);
	color: var(--theme-button-text-initial-color);
	border: var(--theme-button-border);
	border-radius: 10px;
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
	transition: background-color .15s, color .15s, border-color .15s;
}
.dnt-v2-ws-drawer-pay-btn:hover {
	background-color: var(--theme-button-background-hover-color);
	color: var(--theme-button-text-hover-color);
	border-color: var(--theme-button-border-hover-color);
}

/* ── Mobile ≤767px ─────────────────────────────────────────── */
@media (max-width: 767px) {
	.dnt-v2-ws-layout {
		grid-template-columns: 1fr;
		padding: 16px;
		gap: 16px;
		padding-bottom: 90px;
	}

	.dnt-v2-ws-sidebar { display: none; }

	.dnt-v2-ws-mobile-bar_drawer .dnt-v2-ws-bar.dnt-v2-ws-bar--bar_drawer { display: flex; }
	.dnt-v2-ws-mobile-pill .dnt-v2-ws-pill.dnt-v2-ws-bar--pill { display: flex; }

	.dnt-v2-ws-bar {
		position: fixed;
		bottom: 0;
		left: 0;
		right: 0;
		z-index: 100;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 12px 18px;
		background: var(--v2-card-bg, #faf7f0);
		border-top: 1.5px solid var(--v2-border-light, #d4c9a8);
		box-shadow: 0 -4px 20px rgba(0,0,0,.1);
	}
	.dnt-v2-ws-bar-info { display: flex; flex-direction: column; gap: 2px; }
	.dnt-v2-ws-bar-count { font-size: 12px; color: var(--v2-text-muted, #7a6a4a); }
	.dnt-v2-ws-bar-total { font-size: 16px; font-weight: 700; }
	.dnt-v2-ws-bar-actions { display: flex; gap: 8px; }
	.dnt-v2-ws-bar-details-btn {
		padding: 10px 18px;
		background: var(--v2-accent, #f5c030);
		border: 2px solid var(--v2-border, #2a1f0e);
		border-radius: 8px;
		font-family: inherit;
		font-size: 14px;
		font-weight: 700;
		cursor: pointer;
	}

	.dnt-v2-ws-pill {
		position: fixed;
		bottom: 24px;
		right: 20px;
		z-index: 100;
		align-items: center;
		gap: 8px;
		padding: 12px 18px;
		background: var(--v2-text, #2a1f0e);
		color: #fff;
		border: none;
		border-radius: 50px;
		font-family: inherit;
		font-size: 14px;
		font-weight: 700;
		cursor: pointer;
		box-shadow: 0 4px 20px rgba(0,0,0,.2);
	}
	.dnt-v2-ws-pill-count {
		background: var(--v2-accent, #f5c030);
		color: var(--v2-text, #2a1f0e);
		border-radius: 50%;
		width: 22px;
		height: 22px;
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 12px;
		font-weight: 700;
	}
	.dnt-v2-ws-pill-sep { opacity: .5; }
	.dnt-v2-ws-pill-cart { flex-shrink: 0; opacity: .85; }

	.dnt-v2-ws-drawer { display: block; }

	.dnt-v2-ws-cards { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════
   V2 STEP 5 — Dual Panel desktop layout (B)
   ═══════════════════════════════════════════════════════════ */

/* Hide accordion, show dual panel based on desktop design class */
.dnt-v2-ws-desktop-accordion .dnt-v2-ws-dualpanel { display: none; }
.dnt-v2-ws-desktop-dual_panel .dnt-v2-ws-layout   { display: none; }

/* ── Dual panel container ──────────────────────────────────── */
.dnt-v2-ws-dualpanel {
	display: grid;
	grid-template-columns: 160px 1fr 340px;
	gap: 0;
	align-items: start;
	min-height: 0;
}

/* ── Day nav (left column) ─────────────────────────────────── */
.dnt-v2-dp-daynav {
	display: flex;
	flex-direction: column;
	gap: 0;
	padding: 24px 0 24px 24px;
	position: sticky;
	top: 20px;
}

.dnt-v2-dp-daybtn {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 12px 14px;
	background: none;
	border: 1.5px solid transparent;
	border-radius: 10px;
	cursor: pointer;
	text-align: left;
	font-family: inherit;
	color: var(--v2-text, #2a1f0e);
	transition: background .12s, border-color .12s;
	margin-bottom: 4px;
}
.dnt-v2-dp-daybtn:hover { background: rgba(0,0,0,.04); }
.dnt-v2-dp-daybtn.is-active {
	background: var(--v2-accent, #f5c030);
	border-color: var(--v2-border, #2a1f0e);
	font-weight: 600;
}

.dnt-v2-dp-dayname {
	font-size: 13px;
	font-weight: 600;
	line-height: 1.2;
}
.dnt-v2-dp-daybtn.is-active .dnt-v2-dp-dayname { color: var(--v2-text, #2a1f0e); }

.dnt-v2-dp-daychosen {
	font-size: 11px;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-dp-daybtn.is-active .dnt-v2-dp-daychosen { color: var(--v2-text, #2a1f0e); opacity: .7; }

/* ── Workshop list column (middle) ─────────────────────────── */
.dnt-v2-dp-list-wrap {
	padding: 24px 20px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	border-left: 1px solid var(--v2-border-light, #d4c9a8);
	border-right: 1px solid var(--v2-border-light, #d4c9a8);
	min-height: 400px;
}

.dnt-v2-dp-daylist { display: none; flex-direction: column; gap: 8px; }
.dnt-v2-dp-daylist.is-active { display: flex; }

/* ── Workshop row ──────────────────────────────────────────── */
.dnt-v2-dp-row {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 14px;
	padding: 14px 16px;
	background: var(--v2-card-bg, #faf7f0);
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 10px;
	cursor: pointer;
	transition: border-color .12s, background .12s, box-shadow .12s;
	user-select: none;
}
.dnt-v2-dp-row:hover:not(.ws-soldout):not(.ws-owned):not(.ao-owned):not(.ao-soldout) {
	border-color: var(--v2-accent, #f5c030);
	background: #fffdf5;
}
.dnt-v2-dp-row.ws-selected,
.dnt-v2-dp-row.ao-selected {
	border-color: var(--v2-accent, #f5c030);
	background: #fffbee;
	box-shadow: 0 0 0 3px rgba(245,192,48,.18);
}
.dnt-v2-dp-row.ws-owned,
.dnt-v2-dp-row.ao-owned { opacity: .75; cursor: default; }
.dnt-v2-dp-row.ws-soldout,
.dnt-v2-dp-row.ao-soldout { opacity: .5; cursor: not-allowed; }
.dnt-v2-dp-row.dnt-v2-has-conflict { border-color: #fcd34d; background: #fffbeb; }
.dnt-v2-dp-row.dnt-v2-has-conflict.ws-selected { box-shadow: 0 0 0 3px rgba(252,211,77,.35); }

/* Checkbox circle */
.dnt-v2-dp-check {
	width: 22px;
	height: 22px;
	border-radius: 5px;
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	margin-top: 1px;
	transition: background .12s, border-color .12s;
}
.dnt-v2-dp-check-icon { display: none; }
.dnt-v2-dp-row.ws-selected .dnt-v2-dp-check,
.dnt-v2-dp-row.ao-selected .dnt-v2-dp-check {
	background: var(--v2-text, #2a1f0e);
	border-color: var(--v2-text, #2a1f0e);
}
.dnt-v2-dp-row.ws-selected .dnt-v2-dp-check .dnt-v2-dp-check-icon,
.dnt-v2-dp-row.ao-selected .dnt-v2-dp-check .dnt-v2-dp-check-icon { display: block; color: #fff; }
.dnt-v2-dp-row.ws-owned .dnt-v2-dp-check,
.dnt-v2-dp-row.ao-owned .dnt-v2-dp-check {
	background: #dcfce7;
	border-color: #166534;
}
.dnt-v2-dp-row.ws-owned .dnt-v2-dp-check .dnt-v2-dp-check-icon,
.dnt-v2-dp-row.ao-owned .dnt-v2-dp-check .dnt-v2-dp-check-icon { display: block; color: #166534; }

/* Main content area */
.dnt-v2-dp-main {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 5px;
	min-width: 0;
}

.dnt-v2-dp-top {
	display: flex;
	align-items: baseline;
	gap: 8px;
	flex-wrap: wrap;
}

.dnt-v2-dp-title {
	font-size: 15px;
	font-weight: 600;
	flex: 1;
	min-width: 0;
	line-height: 1.3;
}

.dnt-v2-dp-wave-badge {
	font-size: 10px;
	background: var(--v2-accent, #f5c030);
	color: var(--v2-text, #2a1f0e);
	border: 1px solid var(--v2-border, #2a1f0e);
	border-radius: 4px;
	padding: 2px 7px;
	font-weight: 700;
	white-space: nowrap;
}

.dnt-v2-dp-price-col {
	display: grid;
	justify-items: end;
	flex-shrink: 0;
	margin-left: auto;
}

.dnt-v2-dp-price-old {
	font-size: 11px;
	font-weight: 500;
	color: var(--v2-text-muted, #7a6a4a);
	text-decoration: line-through;
	opacity: .55;
	margin-bottom: -9px;
}

.dnt-v2-dp-price {
	font-size: 17px;
	font-weight: 700;
}

.dnt-v2-dp-price-free {
	font-size: 14px;
	font-weight: 700;
	color: #16a34a;
}
.dnt-v2-dp-price-free-note {
	font-size: 11px;
	font-weight: 400;
	color: var(--v2-text-muted, #7a6a4a);
}

.dnt-v2-dp-badge {
	font-size: 11px;
	border-radius: 4px;
	padding: 2px 7px;
	font-weight: 600;
}
.dnt-v2-dp-badge--owned   { background: #dcfce7; color: #166534; }
.dnt-v2-dp-badge--soldout { background: #fee2e2; color: #991b1b; }

.dnt-v2-dp-speakers {
	font-size: 12px;
	color: var(--v2-text-muted, #7a6a4a);
	margin: 0;
}

.dnt-v2-dp-tags {
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
	align-items: center;
}

.dnt-v2-dp-tag {
	font-size: 11px;
	background: var(--v2-bg, #f5f0e4);
	color: var(--v2-text-muted, #7a6a4a);
	border: 1px solid var(--v2-border-light, #d4c9a8);
	border-radius: 20px;
	padding: 2px 9px;
	white-space: nowrap;
}
.dnt-v2-dp-tag--time {
	background: #fff9e6;
	border-color: #e8d96e;
	color: var(--v2-text, #2a1f0e);
	font-weight: 500;
}

.dnt-v2-dp-slots {
	font-size: 11px;
	color: var(--v2-text-muted, #7a6a4a);
}

.dnt-v2-dp-info-btn {
	flex-shrink: 0;
	align-self: center;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	padding: 0;
	background: none;
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 50%;
	color: var(--v2-text-muted, #7a6a4a);
	cursor: pointer;
	transition: border-color .15s, color .15s;
}
.dnt-v2-dp-info-btn:hover { border-color: var(--v2-border, #2a1f0e); color: var(--v2-text, #2a1f0e); }

/* ── Add-ons in dual panel ──────────────────────────────────── */
.dnt-v2-dp-addons-box {
	margin-top: 8px;
	border: 1.5px dashed var(--v2-border-light, #d4c9a8);
	border-radius: 12px;
	padding: 14px 16px;
	background: var(--v2-bg, #f5f0e4);
}

/* ── Dual panel sidebar ─────────────────────────────────────── */
.dnt-v2-dp-sidebar {
	padding: 24px 24px 24px 20px;
}

/* ── Mobile: hide dual panel + timetable, show accordion ────── */
@media (max-width: 767px) {
	.dnt-v2-ws-dualpanel   { display: none !important; }
	.dnt-v2-ws-timetable   { display: none !important; }
	.dnt-v2-ws-layout      { display: grid !important; }
}

/* ═══════════════════════════════════════════════════════════
   V2 STEP 5 — Timetable layout (C)
   ═══════════════════════════════════════════════════════════ */

/* Show/hide based on desktop design class */
.dnt-v2-ws-desktop-accordion  .dnt-v2-ws-timetable { display: none; }
.dnt-v2-ws-desktop-dual_panel .dnt-v2-ws-timetable { display: none; }
.dnt-v2-ws-desktop-timetable  .dnt-v2-ws-layout    { display: none; }
.dnt-v2-ws-desktop-timetable  .dnt-v2-ws-dualpanel { display: none; }

/* ── Timetable outer layout ────────────────────────────────── */
.dnt-v2-ws-timetable {
	display: grid;
	grid-template-columns: 1fr 340px;
	gap: 0;
	align-items: start;
}

/* ── Left: main timeline content ───────────────────────────── */
.dnt-v2-tt-main {
	padding: 28px 0 28px 28px;
	display: flex;
	flex-direction: column;
	gap: 32px;
}

/* ── Day section ────────────────────────────────────────────── */
.dnt-v2-tt-day {}

.dnt-v2-tt-day-heading {
	font-size: 20px;
	font-weight: 700;
	font-style: italic;
	letter-spacing: -.01em;
	color: var(--v2-text, #2a1f0e);
	margin: 0 0 12px 0;
	padding-left: 90px; /* align with cards past the time axis */
}

/* ── Rows container ─────────────────────────────────────────── */
.dnt-v2-tt-rows {
	display: flex;
	flex-direction: column;
	gap: 0;
}

/* ── Single timetable row ───────────────────────────────────── */
.dnt-v2-tt-row {
	display: grid;
	grid-template-columns: 88px 1px 1fr;
	gap: 0 0;
	align-items: stretch;
	position: relative;
	cursor: pointer;
	user-select: none;
}
.dnt-v2-tt-row.ws-soldout { cursor: not-allowed; opacity: .55; }
.dnt-v2-tt-row.ws-owned   { cursor: default; opacity: .75; }

/* ── Time label ─────────────────────────────────────────────── */
.dnt-v2-tt-time {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: flex-start;
	padding: 14px 14px 14px 0;
	gap: 2px;
	color: var(--v2-text-muted, #7a6a4a);
	white-space: nowrap;
	line-height: 1;
	min-width: 52px;
}
.dnt-v2-tt-time-block {
	display: flex;
	align-items: flex-start;
	gap: 0;
}
.dnt-v2-tt-time-h {
	font-size: 19px;
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--v2-text, #2a1f0e);
}
.dnt-v2-tt-time-m {
	font-size: 14px;
	font-weight: 500;
	opacity: .6;
	vertical-align: super;
	line-height: 1;
}
.dnt-v2-tt-time-sep {
	font-size: 9px;
	opacity: .35;
	text-align: right;
	line-height: 1;
}

/* ── Vertical axis line ─────────────────────────────────────── */
.dnt-v2-tt-axis {
	width: 1px;
	background: var(--v2-border-light, #d4c9a8);
	position: relative;
}
/* Dot on the axis at each row */
.dnt-v2-tt-axis::before {
	content: '';
	position: absolute;
	top: 16px;
	left: 50%;
	transform: translateX(-50%);
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--v2-border-light, #d4c9a8);
	border: 1.5px solid var(--v2-bg, #f5f0e4);
	transition: background .15s;
}
.dnt-v2-tt-row.ws-selected .dnt-v2-tt-axis::before {
	background: var(--v2-accent, #f5c030);
	border-color: var(--v2-border, #2a1f0e);
}
.dnt-v2-tt-row.dnt-v2-has-conflict .dnt-v2-tt-axis::before {
	background: #ef4444;
	border-color: #fff;
}

/* ── Workshop card (right of axis) ─────────────────────────── */
.dnt-v2-tt-card {
	margin: 6px 16px 6px 12px;
	padding: 12px 14px;
	background: var(--v2-card-bg, #faf7f0);
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	border-radius: 10px;
	display: flex;
	align-items: flex-start;
	gap: 10px;
	position: relative;
	transition: border-color .12s, background .12s, box-shadow .12s;
}
.dnt-v2-tt-row:hover:not(.ws-soldout):not(.ws-owned) .dnt-v2-tt-card {
	border-color: var(--v2-accent, #f5c030);
	background: #fffdf5;
}
.dnt-v2-tt-row.ws-selected .dnt-v2-tt-card {
	border-color: var(--v2-accent, #f5c030);
	background: #fffbee;
	box-shadow: 0 0 0 3px rgba(245,192,48,.18);
}
.dnt-v2-tt-row.dnt-v2-has-conflict .dnt-v2-tt-card {
	border-color: #fca5a5;
	background: #fff5f5;
}

/* Checkbox dot inside card */
.dnt-v2-tt-check {
	width: 20px;
	height: 20px;
	border-radius: 5px;
	border: 1.5px solid var(--v2-border-light, #d4c9a8);
	background: #fff;
	flex-shrink: 0;
	margin-top: 1px;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .12s, border-color .12s;
}
.dnt-v2-tt-check-icon { display: none; }
.dnt-v2-tt-row.ws-selected .dnt-v2-tt-check {
	background: var(--v2-text, #2a1f0e);
	border-color: var(--v2-text, #2a1f0e);
}
.dnt-v2-tt-row.ws-selected .dnt-v2-tt-check .dnt-v2-tt-check-icon { display: block; color: #fff; }
.dnt-v2-tt-row.ws-owned .dnt-v2-tt-check {
	background: #dcfce7; border-color: #166534;
}
.dnt-v2-tt-row.ws-owned .dnt-v2-tt-check .dnt-v2-tt-check-icon { display: block; color: #166534; }

.dnt-v2-tt-card-body { flex: 1; min-width: 0; }

.dnt-v2-tt-card-top {
	display: flex;
	align-items: baseline;
	gap: 8px;
	flex-wrap: wrap;
}

.dnt-v2-tt-card-title {
	font-size: 14px;
	font-weight: 600;
	flex: 1;
	min-width: 0;
	line-height: 1.3;
}

.dnt-v2-tt-price-wrap {
	display: grid;
	justify-items: end;
	margin-left: auto;
	flex-shrink: 0;
}
.dnt-v2-tt-price-old {
	font-size: 11px;
	font-weight: 500;
	color: var(--v2-text-muted, #7a6a4a);
	text-decoration: line-through;
	opacity: .55;
	margin-bottom: -9px;
}
.dnt-v2-tt-price {
	font-size: 16px;
	font-weight: 700;
	white-space: nowrap;
}
.dnt-v2-tt-price--free {
	font-size: 14px;
	font-weight: 700;
	color: #16a34a;
	margin-left: auto;
	white-space: nowrap;
}

.dnt-v2-tt-badge {
	font-size: 11px;
	border-radius: 4px;
	padding: 2px 7px;
	font-weight: 600;
	margin-left: auto;
}
.dnt-v2-tt-badge--owned   { background: #dcfce7; color: #166534; }
.dnt-v2-tt-badge--soldout { background: #fee2e2; color: #991b1b; }

.dnt-v2-tt-card-sub {
	margin: 3px 0 0;
	font-size: 12px;
	color: var(--v2-text-muted, #7a6a4a);
}
.dnt-v2-tt-card-footer {
	display: flex;
	align-items: flex-end;
	gap: 6px;
	margin-top: 6px;
	flex-wrap: wrap;
}
.dnt-v2-tt-info-btn {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: none;
	border: none;
	padding: 2px;
	cursor: pointer;
	color: var(--v2-text, #2a1f0e);
	opacity: .45;
	border-radius: 50%;
	transition: opacity .15s, background .15s;
}
.dnt-v2-tt-info-btn:hover { opacity: 1; background: rgba(42,31,14,.08); }

/* Wave badge — inline in card footer row, like accordion */
.dnt-v2-tt-wave-badge {
	display: inline-flex;
	align-items: center;
	font-size: 10px;
	font-weight: 700;
	background: var(--v2-accent, #f5c030);
	color: var(--v2-text, #2a1f0e);
	border: 1px solid var(--v2-border, #2a1f0e);
	border-radius: 4px;
	padding: 2px 6px;
	white-space: nowrap;
}

/* V2 conflict chip — shared by accordion, dual-panel, and timetable */
@keyframes dnt-v2-conflict-in {
	from { opacity: 0; transform: scale(.7) translateY(-4px); }
	to   { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes dnt-v2-conflict-out {
	from { opacity: 1; transform: scale(1); }
	to   { opacity: 0; transform: scale(.7); }
}
.dnt-v2-conflict-chip {
	position: absolute;
	top: -13px;
	right: 14px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: .06em;
	line-height: 1;
	color: var(--v2-text, #2a1f0e);
	background: #fde68a;
	border: 2px solid var(--v2-border, #2a1f0e);
	border-radius: 6px;
	padding: 3px 7px 3px 8px;
	white-space: nowrap;
	animation: dnt-v2-conflict-in .2s cubic-bezier(.22,1,.36,1) both;
}
.dnt-v2-conflict-chip svg {
	width: 12px;
	height: 12px;
	flex-shrink: 0;
	color: var(--v2-text, #2a1f0e);
}
/* Label fades in with the chip then disappears after ~2.5s, leaving icon-only badge */
.dnt-v2-conflict-label {
	display: inline-block;
	overflow: hidden;
	max-width: 8em;
	animation: dnt-v2-label-show 3.2s cubic-bezier(.4,0,.6,1) forwards;
	white-space: nowrap;
}
@keyframes dnt-v2-label-show {
	0%   { opacity: 0; max-width: 0; margin-left: 0; }
	12%  { opacity: 1; max-width: 8em; margin-left: 0; }
	70%  { opacity: 1; max-width: 8em; margin-left: 0; }
	100% { opacity: 0; max-width: 0;   margin-left: -4px; }
}
.dnt-v2-conflict-chip.dnt-v2-conflict-leaving {
	animation: dnt-v2-conflict-out .15s ease both;
}
.dnt-v2-tt-row.dnt-v2-has-conflict .dnt-v2-tt-wave-badge { display: none; }

/* ── Add-ons section in timetable ───────────────────────────── */
.dnt-v2-tt-addons-section {
	padding-left: 90px;
	border: 1.5px dashed var(--v2-border-light, #d4c9a8);
	border-radius: 12px;
	padding: 16px 16px 16px calc(90px + 16px);
	background: var(--v2-card-bg, #faf7f0);
	margin-right: 16px;
}

/* ── Right sidebar ─────────────────────────────────────────── */
.dnt-v2-tt-sidebar {
	padding: 28px 24px 28px 20px;
	border-left: 1px solid var(--v2-border-light, #d4c9a8);
}

/* ── Timetable summary row animation ───────────────────────── */
.dnt-v2-ws-summary #dnt_tt_summary_ws_row,
.dnt-v2-ws-summary #dnt_tt_summary_ao_row {
	overflow: hidden;
	max-height: 0;
	opacity: 0;
	/* impeccable-disable-next-line layout-transition -- row reveal; grid-template-rows requires inner wrapper (HTML change in PHP template) */
	transition: max-height .28s ease, opacity .22s ease, margin .28s ease;
	margin-top: -6px;
}
.dnt-v2-ws-summary #dnt_tt_summary_ws_row.dnt-ws-row-visible,
.dnt-v2-ws-summary #dnt_tt_summary_ao_row.dnt-ws-row-visible {
	max-height: 48px;
	opacity: 1;
	margin-top: 0;
}
#dnt_tt_summary_ws_price.dnt-val-pop,
#dnt_tt_summary_ao_price.dnt-val-pop { animation: dnt-total-pop .25s ease; }
#dnt_tt_summary_total.dnt-total-pop  { animation: dnt-total-pop .3s ease; }

/* ═══════════════════════════════════════════════════════════════
   SHOP CATALOGUE — [dentisity_shop_catalogue]
   ═══════════════════════════════════════════════════════════════ */

/* ── Wrapper ───────────────────────────────────────────────── */
.dnt-shop-cat {
	--sc-sidebar-w: 300px;
	--sc-gap: 20px;
	--sc-radius: 12px;
	--sc-border: #e2e8f0;
	--sc-bg: #fff;
	--sc-shadow: 0 2px 12px rgba(15,23,42,.07);
	--sc-primary: #4f46e5;
	--sc-success: #16a34a;
	--sc-muted: #64748b;
	--sc-text: #0f172a;
	font-family: inherit;
	color: var(--sc-text);
}

/* ── Conflict banner ───────────────────────────────────────── */
.dnt-conflict-banner {
	background: #eef2ff;
	border: 1px solid #c7d2fe;
	border-radius: var(--sc-radius);
	margin-bottom: 16px;
	overflow: hidden;
	animation: dnt-conflict-in 280ms cubic-bezier(0.32, 0.72, 0, 1) both;
}
@keyframes dnt-conflict-in {
	from { opacity: 0; transform: translateY(-6px); }
	to   { opacity: 1; transform: none; }
}
/* header is now a <button> */
.dnt-conflict-hdr {
	display: flex;
	align-items: center;
	gap: 7px;
	width: 100%;
	padding: 9px 12px;
	background: none;
	border: none;
	cursor: pointer;
	text-align: left;
	-webkit-tap-highlight-color: transparent;
}
.dnt-conflict-hdr:hover { background: #e0e7ff; }
.dnt-conflict-ico { color: var(--sc-primary); flex-shrink: 0; }
.dnt-conflict-hdr strong {
	flex: 1;
	font-size: 12.5px;
	font-weight: 700;
	color: #312e81;
	letter-spacing: -0.01em;
}
.dnt-conflict-cnt {
	background: var(--sc-primary);
	color: #fff;
	font-size: 10.5px;
	font-weight: 700;
	line-height: 1;
	border-radius: 99px;
	padding: 2px 7px;
}
.dnt-conflict-chevron {
	color: #6366f1;
	flex-shrink: 0;
	transition: transform 200ms cubic-bezier(0.32, 0.72, 0, 1);
}
.dnt-conflict-banner:not(.is-collapsed) .dnt-conflict-chevron {
	transform: rotate(180deg);
}
/* list area */
.dnt-conflict-list {
	list-style: none;
	margin: 0;
	padding: 0 12px 10px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.dnt-conflict-list[hidden] { display: none; }
.dnt-conflict-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 3px 5px;
	font-size: 12px;
	color: #374151;
	line-height: 1.4;
}
.dnt-conflict-name {
	font-weight: 600;
	color: #1e1b4b;
}
.dnt-conflict-x {
	color: #818cf8;
	font-weight: 700;
	font-size: 10px;
}
.dnt-conflict-enrolled {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	flex-wrap: nowrap;
}
.dnt-conflict-ename {
	font-weight: 500;
	color: #374151;
}
.dnt-conflict-chip {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	background: var(--sc-primary);
	color: #fff;
	font-size: 9.5px;
	font-weight: 700;
	border-radius: 99px;
	padding: 2px 6px;
	white-space: nowrap;
	line-height: 1;
}
.dnt-conflict-multi {
	font-size: 11.5px;
	font-weight: 600;
	color: #4338ca;
	width: 100%;
}
@media (prefers-reduced-motion: reduce) {
	.dnt-conflict-banner { animation: none; }
	.dnt-conflict-chevron { transition: none; }
}

/* ── Header: tabs + credits ────────────────────────────────── */
.dnt-sc-header {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
	margin-bottom: 20px;
}
.dnt-sc-tabs {
	display: flex;
	gap: 4px;
	background: #f1f5f9;
	border-radius: 10px;
	padding: 4px;
	position: relative;
}
.dnt-sc-tab-pill {
	position: absolute;
	top: 4px;
	left: 4px;
	height: calc(100% - 8px);
	background: #fff;
	border-radius: 7px;
	box-shadow: 0 1px 4px rgba(15,23,42,.1);
	pointer-events: none;
	transition: transform .22s cubic-bezier(0.4,0,.2,1), width .22s cubic-bezier(0.4,0,.2,1);
}
.dnt-sc-tab {
	position: relative;
	z-index: 1;
	background: none;
	border: none;
	padding: 7px 16px;
	border-radius: 7px;
	font-size: 13px;
	font-weight: 500;
	color: var(--sc-muted);
	cursor: pointer;
	transition: color .18s;
	display: flex;
	align-items: center;
	gap: 6px;
	white-space: nowrap;
}
.dnt-sc-tab:hover { color: var(--sc-text); }
.dnt-sc-tab.is-active {
	color: var(--sc-primary);
}
.dnt-sc-tab-count {
	background: var(--sc-primary);
	color: #fff;
	border-radius: 20px;
	font-size: 11px;
	font-weight: 700;
	padding: 1px 7px;
	min-width: 20px;
	text-align: center;
	line-height: 1.5;
}
.dnt-sc-credits-info {
	display: flex;
	align-items: center;
	gap: 6px;
	background: #f0fdf4;
	border: 1px solid #bbf7d0;
	border-radius: 8px;
	padding: 6px 12px;
	font-size: 13px;
	color: #166534;
	margin-left: auto;
}
.dnt-sc-credits-info svg { flex-shrink: 0; }

/* ── Two-column layout ─────────────────────────────────────── */
.dnt-sc-layout {
	display: grid;
	grid-template-columns: 1fr var(--sc-sidebar-w);
	gap: var(--sc-gap);
	align-items: start;
}
.dnt-sc-main { min-width: 0; }
.dnt-sc-sidebar { position: sticky; top: 144px; /* 120px sticky navbar + 24px gap */ }

/* ── Section headers ───────────────────────────────────────── */
.dnt-sc-section { margin-bottom: 32px; }
.dnt-sc-section-head { margin-bottom: 14px; }
.dnt-sc-section-title {
	font-size: 14px;
	font-weight: 700;
	color: var(--sc-muted);
	text-transform: uppercase;
	letter-spacing: .06em;
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 0;
}
.dnt-sc-section-title svg { flex-shrink: 0; }

/* ── Day header selection counter ──────────────────────────── */
.dnt-sc-day-sel {
	font-size: 12px;
	font-weight: 500;
	color: var(--sc-primary);
	margin-left: 4px;
}

/* ── Selection overlay on cards ────────────────────────────── */
.dnt-sc-card { cursor: default; position: relative; }
.dnt-sc-card.dnt-sc-selectable { cursor: pointer; }
.dnt-sc-card.dnt-sc-selectable:hover { box-shadow: 0 4px 20px rgba(79,70,229,.15); }
.dnt-sc-card.dnt-sc-owned { opacity: .82; }
.dnt-sc-card.dnt-sc-owned .ws-card-footer { pointer-events: none; opacity: .6; }

/* ── Trending widgets: reuse catalogue card styling without the ────
      shop-catalogue page layout (no sidebar, no bottom cart bar). ── */
.dnt-sc-trending { padding: 0; }
.dnt-shop-cat.dnt-sc-trending { padding-bottom: 0; }
.dnt-sc-trending .dentisity-trending-grid { margin: 0; }
/* "Add to cart" here is a deep-link, not a selection toggle */
.dnt-sc-add-link,
.dnt-sc-add-link:hover { text-decoration: none; }

/* Highlight pulse for the card targeted by ?dnt_add= */
@keyframes dnt-sc-flash {
	0%   { box-shadow: 0 0 0 0 rgba(79,70,229,0); }
	18%  { box-shadow: 0 0 0 4px rgba(79,70,229,.38); }
	100% { box-shadow: 0 0 0 0 rgba(79,70,229,0); }
}
.dnt-sc-card.dnt-sc-flash { animation: dnt-sc-flash 1.5s ease-out; }

/* Checkmark in thumb when selected */
.dnt-sc-sel-check {
	position: absolute;
	top: 8px;
	right: 8px;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--sc-primary);
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	transform: scale(.6);
	transition: opacity .18s, transform .18s;
	color: #fff;
	z-index: 2;
}
.dnt-sc-card.dnt-sc-sel .dnt-sc-sel-check {
	opacity: 1;
	transform: scale(1);
}

/* Whole card highlight when selected */
.dnt-sc-card.dnt-sc-sel {
	outline: 2.5px solid var(--sc-primary);
	outline-offset: 2px;
	box-shadow: 0 4px 20px rgba(79,70,229,.18);
}
.dnt-sc-card.dnt-sc-sel .ws-card-thumb::after {
	content: '';
	position: absolute;
	inset: 0;
	background: rgba(79,70,229,.08);
	border-radius: inherit;
	pointer-events: none;
}

/* ── Add button states (see one-zone grid section below) ────── */

/* ── Conflict chip on card ──────────────────────────────────── */
.dnt-sc-conflict-chip {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 11px;
	font-weight: 600;
	color: #b45309;
	background: #fef3c7;
	border: 1px solid #fcd34d;
	border-radius: 5px;
	padding: 2px 7px;
	/* hidden by default — animated in via .is-visible */
	max-height: 0;
	opacity: 0;
	overflow: hidden;
	margin-top: 0;
	pointer-events: none;
	transition: max-height 240ms cubic-bezier(0.32, 0.72, 0, 1),
	            opacity 200ms ease,
	            margin-top 240ms cubic-bezier(0.32, 0.72, 0, 1);
}
.dnt-sc-conflict-chip.is-visible {
	max-height: 28px;
	opacity: 1;
	margin-top: 5px;
	pointer-events: auto;
}

/* ── Cart panel (sidebar) ──────────────────────────────────── */
.dnt-sc-cart-panel {
	background: var(--sc-bg);
	border: 1.5px solid var(--sc-border);
	border-radius: var(--sc-radius);
	box-shadow: var(--sc-shadow);
	overflow: hidden;
}
.dnt-sc-cart-hdr {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 14px 16px 10px;
	border-bottom: 1px solid var(--sc-border);
}
.dnt-sc-cart-title {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 13px;
	font-weight: 700;
	color: var(--sc-text);
}
.dnt-sc-cart-cnt {
	font-size: 11px;
	font-weight: 600;
	color: var(--sc-muted);
}
.dnt-sc-cred-row {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 8px 16px;
	background: #f0fdf4;
	border-bottom: 1px solid #dcfce7;
	font-size: 12px;
	color: #166534;
}
.dnt-sc-cart-empty {
	padding: 28px 20px;
	text-align: center;
	color: var(--sc-muted);
}
.dnt-sc-cart-empty svg { margin-bottom: 10px; opacity: .35; }
.dnt-sc-cart-empty p { font-size: 13px; line-height: 1.5; margin: 0; }
.dnt-sc-cart-items { padding: 8px 0; max-height: 340px; overflow-y: auto; overflow-x: hidden; }

/* Cart item row */
.dnt-sc-ci {
	display: grid;
	grid-template-columns: auto 1fr auto auto;
	align-items: center;
	gap: 8px;
	padding: 8px 16px;
	border-bottom: 1px solid #f1f5f9;
	font-size: 12px;
	animation: dnt-sc-ci-in 0.22s cubic-bezier(0.22,1,0.36,1) both;
}
.dnt-sc-ci:last-child { border-bottom: none; }
.dnt-sc-ci-tag {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .05em;
	background: #ede9fe;
	color: var(--sc-primary);
	border-radius: 4px;
	padding: 2px 5px;
	flex-shrink: 0;
}
.dnt-sc-ci-ao { background: #fef9c3; color: #854d0e; }
.dnt-sc-ci-nm {
	font-weight: 500;
	color: var(--sc-text);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}
.dnt-sc-ci-pr {
	font-size: 12px;
	font-weight: 600;
	color: var(--sc-text);
	white-space: nowrap;
	flex-shrink: 0;
}
.dnt-sc-ci-del {
	background: none;
	border: none;
	color: #94a3b8;
	cursor: pointer;
	font-size: 16px;
	line-height: 1;
	padding: 2px 4px;
	border-radius: 4px;
	transition: color .15s, background .15s;
}
.dnt-sc-ci-del:hover { color: #b91c1c; background: #fee2e2; }

/* Cart footer (totals) */
.dnt-sc-cart-foot {
	padding: 10px 16px 0;
}

/* Checkout button */
.dnt-sc-pay-btn {
	display: flex;
	margin: 12px 16px;
	width: calc(100% - 32px);
	padding: 12px 20px;
	background: var(--sc-primary);
	color: #fff;
	border: none;
	border-radius: 9px;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: background .18s, transform .12s, box-shadow .18s;
	justify-content: center;
	align-items: center;
	gap: 8px;
	letter-spacing: .01em;
}
.dnt-sc-pay-btn.dnt-sc-pay-entering {
	animation: dnt-sc-pay-in 240ms cubic-bezier(0.32, 0.72, 0, 1) both;
}
.dnt-sc-pay-btn:hover:not(:disabled) {
	background: #4338ca;
	box-shadow: 0 4px 14px rgba(79,70,229,.35);
	transform: translateY(-1px);
}
.dnt-sc-pay-btn:active:not(:disabled) { transform: translateY(0); }
.dnt-sc-pay-btn:disabled { opacity: .5; cursor: not-allowed; }
@keyframes dnt-sc-pay-in {
	from { opacity: 0; transform: translateY(10px) scale(0.98); }
	to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Cart foot entrance */
.dnt-sc-cart-foot {
	animation: dnt-sc-foot-in 200ms ease-out both;
}
@keyframes dnt-sc-foot-in {
	from { opacity: 0; transform: translateY(5px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Cart item exit */
.dnt-sc-ci.dnt-sc-ci-out {
	animation: dnt-sc-ci-out 180ms cubic-bezier(0.4, 0, 1, 1) both;
	pointer-events: none;
}
@keyframes dnt-sc-ci-out {
	to { opacity: 0; transform: translateX(12px); }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
	.dnt-sc-mob-bar { transition: none; }
	.dnt-sc-pay-btn.dnt-sc-pay-entering { animation: none; }
	.dnt-sc-cart-foot { animation: none; }
	.dnt-sc-ci { animation: none; }
	.dnt-sc-ci.dnt-sc-ci-out { animation: none; }
}

/* Login hint */
.dnt-sc-hint {
	font-size: 12px;
	color: var(--sc-muted);
	text-align: center;
	padding: 10px 16px 14px;
	margin: 0;
	line-height: 1.5;
}
.dnt-sc-hint a { color: var(--sc-primary); }

/* ── Mobile sticky bar ──────────────────────────────────────── */
.dnt-sc-mob-bar {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	background: #1e293b;
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 12px 20px;
	z-index: 400;
	box-shadow: 0 -4px 20px rgba(15,23,42,.2);
	transform: translateY(calc(100% + 100px));
	transition: transform 380ms cubic-bezier(0.32, 0.72, 0, 1);
	will-change: transform;
}
.dnt-sc-mob-bar.is-visible {
	transform: translateY(0);
}
.dnt-sc-mob-info { display: flex; flex-direction: column; gap: 1px; }
.dnt-sc-mob-info span { font-size: 12px; }
.dnt-sc-mob-price { font-weight: 700; font-size: 15px !important; }
.dnt-sc-mob-open {
	display: flex;
	align-items: center;
	gap: 8px;
	background: var(--sc-primary);
	color: #fff;
	border: none;
	border-radius: 8px;
	padding: 10px 18px;
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	transition: background .18s;
}
.dnt-sc-mob-open:hover { background: #4338ca; }

/* ── Mobile drawer ──────────────────────────────────────────── */
.dnt-sc-drawer {
	position: fixed;
	inset: 0;
	z-index: 500;
	pointer-events: none;
}
.dnt-sc-drawer.is-open { pointer-events: auto; }
.dnt-sc-drawer-bd {
	position: absolute;
	inset: 0;
	background: rgba(15,23,42,.5);
	opacity: 0;
	transition: opacity .25s;
}
.dnt-sc-drawer.is-open .dnt-sc-drawer-bd { opacity: 1; }
.dnt-sc-drawer-panel {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	background: #fff;
	border-radius: 16px 16px 0 0;
	box-shadow: 0 -8px 40px rgba(15,23,42,.18);
	max-height: 85vh;
	display: flex;
	flex-direction: column;
	transform: translateY(calc(100% + 100px));
	transition: transform .3s cubic-bezier(.32,.72,0,1);
}
.dnt-sc-drawer.is-open .dnt-sc-drawer-panel { transform: translateY(0); }
.dnt-sc-drawer-hdr {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px 20px 12px;
	border-bottom: 1px solid #e2e8f0;
	flex-shrink: 0;
}
.dnt-sc-drawer-close {
	background: #f1f5f9;
	border: none;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	font-size: 18px;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #475569;
	transition: background .15s;
}
.dnt-sc-drawer-close:hover { background: #e2e8f0; color: #0f172a; }
.dnt-sc-drawer-body {
	flex: 1;
	overflow-y: auto;
	overflow-x: hidden;
	padding: 8px 0;
}
.dnt-sc-drawer-foot {
	flex-shrink: 0;
	padding: 0 16px 20px;
	border-top: 1px solid #f1f5f9;
}
.dnt-sc-dr-foot { padding-top: 10px; }
.dnt-sc-dr-empty {
	text-align: center;
	padding: 32px 20px;
	color: #64748b;
	font-size: 14px;
}

/* ── Responsive: collapse sidebar below 860px ──────────────── */
@media (max-width: 860px) {
	.dnt-sc-layout {
		grid-template-columns: 1fr;
	}
	.dnt-sc-sidebar { display: none; }
	.dnt-shop-cat { padding-bottom: 80px; }
}
@media (min-width: 861px) {
	.dnt-sc-mob-bar { display: none !important; }
	.dnt-sc-drawer  { display: none !important; }
}

/* ── Grids — single column list ─────────────────────────────── */
.dnt-sc-ws-grid,
.dnt-sc-ao-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 6px;
}

/* ── Section head: visible in "all" tab, hidden in single-tab via JS ─ */
.dnt-sc-section-head {
	margin-bottom: 12px;
}
.dnt-sc-section-title {
	font-size: 11px;
	font-weight: 600;
	color: #94a3b8;
	text-transform: uppercase;
	letter-spacing: .08em;
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 0 2px;
}
.dnt-sc-section-title svg { flex-shrink: 0; opacity: .7; }

/* ── Day accordion — themed for shop catalogue ──────────────── */
.dnt-sc-section .dnt-day-group {
	margin-bottom: 4px;
}
.dnt-sc-section .dnt-day-group:first-child .dnt-cat-day-header {
	margin-top: 0;
}
.dnt-sc-section .dnt-cat-day-header {
	margin: 12px 0 5px;
	gap: 8px;
	padding: 5px 10px 5px 12px;
	background: #f1f5f9;
	border-radius: 8px;
	border: 1px solid #e2e8f0;
	transition: background .15s;
}
.dnt-sc-section .dnt-cat-day-header:hover {
	background: #e8eef6;
}
.dnt-sc-section .dnt-cat-day-label {
	font-size: 11.5px;
	font-weight: 600;
	color: #475569;
	letter-spacing: .03em;
	text-transform: uppercase;
	flex: 1;
}
.dnt-sc-section .dnt-sc-day-sel {
	font-size: 11px;
	font-weight: 600;
	line-height: 1;
	color: #4f46e5;
	background: #ede9fe;
	border-radius: 4px;
	padding: 2px 6px;
}
.dnt-sc-section .dnt-cat-day-header::after {
	display: none;
}
.dnt-sc-section .dnt-day-chevron {
	color: #94a3b8;
	flex-shrink: 0;
}

/* ══════════════════════════════════════════════════════════════
   COMPACT CARD OVERRIDES — shop catalogue only
   ══════════════════════════════════════════════════════════════ */

/* Base card: horizontal 3-column grid */
.dnt-shop-cat .dentisity-workshop-card.dnt-sc-card {
	display: grid;
	grid-template-columns: 72px 1fr auto;
	grid-template-rows: 1fr;
	flex-direction: unset;
	min-height: 80px;
	background: #fff;
	border: 1.5px solid #e8edf5;
	border-radius: 10px;
	box-shadow: 0 1px 3px rgba(15,23,42,.05);
	overflow: hidden;
	transform: none;
	color: #0f172a;
}

.dnt-shop-cat.dnt-sc-no-images .dentisity-workshop-card.dnt-sc-card {
	grid-template-columns: 1fr auto;
}

.dnt-shop-cat.dnt-sc-no-images .ws-card-thumb,
.dnt-shop-cat.dnt-sc-no-images .ws-card-thumb-link {
	display: none;
}

.dnt-shop-cat.dnt-sc-no-images .ws-card-content {
	grid-column: 1;
}

.dnt-shop-cat.dnt-sc-no-images .ws-card-footer {
	grid-column: 2;
}

/* Suppress translateY hover (too large for compact cards) */
@media (hover: hover) {
	.dnt-shop-cat .dentisity-workshop-card.dnt-sc-card:hover {
		transform: none;
		box-shadow: 0 3px 10px rgba(79,70,229,.1);
		border-color: #a5b4fc;
	}
}

/* ── Thumb ──────────────────────────────────────────────────── */
.dnt-shop-cat .ws-card-thumb,
.dnt-shop-cat .ws-card-thumb-link {
	grid-column: 1;
	grid-row: 1;
	width: 72px;
	flex: none;
	border-radius: 0;
	min-height: 0;
	position: relative;
	overflow: hidden;
	align-self: stretch;
}
/* Add-on: thumb is nested inside the link wrapper */
.dnt-shop-cat .ws-card-thumb-link .ws-card-thumb {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 0;
}

/* Status badges: tiny, bottom of thumb */
.dnt-shop-cat .ws-card-badges {
	position: absolute;
	inset: auto 0 0;
	padding: 3px 4px;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	background: linear-gradient(to top, rgba(0,0,0,.45), transparent);
}
.dnt-shop-cat .ws-card-badges .ws-status-pill {
	font-size: 9px;
	padding: 1px 5px;
	line-height: 1.4;
}
.dnt-shop-cat .ws-card-badges .ws-slots-badge { display: none; }

/* Sel-check: smaller */
.dnt-shop-cat .dnt-sc-sel-check {
	width: 20px;
	height: 20px;
	top: 5px;
	right: 5px;
}
.dnt-shop-cat .dnt-sc-sel-check svg {
	width: 11px;
	height: 11px;
}

/* ── Content ────────────────────────────────────────────────── */
.dnt-shop-cat .ws-card-content {
	grid-column: 2;
	grid-row: 1;
	padding: 10px 10px 10px 12px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 3px;
	min-width: 0;
	border-right: 1px solid #f1f5f9;
	color: #0f172a !important;
}
.dnt-shop-cat .ws-card-title {
	font-size: 13px;
	font-weight: 600;
	color: #0f172a !important;
	margin: 0;
	line-height: 1.35;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	white-space: normal;
}
/* Trending cards link the title; it must take the dark card-title colour,
   not the white inherited from the legacy dark-card .ws-card-title-link. */
.dnt-shop-cat .ws-card-title-link,
.dnt-shop-cat .ws-card-title-link:hover,
.dnt-shop-cat .ws-card-thumb-link:hover .ws-card-title { color: inherit; }
/* Speaker/host hidden by default; description fallback uses same class with inline display override */
.dnt-shop-cat .ws-card-host { display: none; color: #64748b; }
.dnt-shop-cat .ws-card-date {
	font-size: 11px;
	color: #64748b;
	gap: 4px;
	margin: 0;
}
.dnt-shop-cat .ws-card-price {
	margin-top: 3px;
	font-size: 12px;
	gap: 5px;
	flex-wrap: wrap;
	align-items: center;
	color: #0f172a;
	border-top-color: #f1f5f9;
}
.dnt-shop-cat .ws-card-price .ws-free-pass-badge {
	font-size: 10px;
	padding: 1px 6px;
	margin-left: 5px;
}
.dnt-shop-cat .ws-card-price .ws-card-wave-badge {
	font-size: 10px;
	padding: 2px 6px;
}
.dnt-shop-cat .dnt-sc-conflict-chip {
	font-size: 10px;
	padding: 1px 6px;
}
.dnt-shop-cat .dnt-sc-conflict-chip.is-visible {
	margin-top: 3px;
}

/* ── Action column (replaces footer) ────────────────────────── */
.dnt-shop-cat .ws-card-footer {
	grid-column: 3;
	grid-row: 1;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	justify-content: center;
	gap: 6px;
	padding: 10px 10px;
	background: #f8f9fc;
	min-width: 84px;
	max-width: 115px;
	flex-direction: column;
	border-left: none;
}

/* Detalii — visible secondary button */
.dnt-shop-cat .ws-detail-btn.dnt-btn {
	flex-grow: 1 !important;
	background: #f1f5f9 !important;
	border: 1.5px solid #e2e8f0 !important;
	border-radius: 7px !important;
	box-shadow: none !important;
	padding: 6px 8px !important;
	font-size: 11px !important;
	font-weight: 500 !important;
	color: #475569 !important;
	text-align: center;
	cursor: pointer;
	text-decoration: none !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100%;
	min-height: 32px;
	white-space: nowrap;
	transition: background .15s, border-color .15s, color .15s !important;
}
.dnt-shop-cat .ws-detail-btn.dnt-btn:hover {
	background: #e2e8f0 !important;
	border-color: #94a3b8 !important;
	color: #0f172a !important;
}

/* ── Add button: one-zone grid, 5 states ─────────────────────── */
.dnt-shop-cat .dnt-sc-add-btn,
.dnt-sc-mv2-cta .dnt-sc-add-btn {
	display: grid;
	grid-template-areas: "zone";
	place-items: center;
	border-radius: 7px;
	font-size: 12px;
	font-weight: 600;
	cursor: pointer;
	box-shadow: none;
	border: 1.5px solid transparent;
	transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
}
.dnt-shop-cat .dnt-sc-add-btn {
	padding: 7px 10px;
	width: 100%;
}
.dnt-shop-cat .dnt-sc-add-btn .dnt-sc-st,
.dnt-sc-mv2-cta .dnt-sc-add-btn .dnt-sc-st {
	grid-area: zone;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 5px;
	opacity: 0;
	transition: opacity 160ms ease;
	white-space: nowrap;
}
.dnt-shop-cat .dnt-sc-add-btn .dnt-sc-st svg,
.dnt-sc-mv2-cta .dnt-sc-add-btn .dnt-sc-st svg {
	width: 12px;
	height: 12px;
	flex-shrink: 0;
}

/* Show the active state span */
.dnt-sc-add-btn[data-sc-state="add"]      .dnt-sc-st--add      { opacity: 1; }
.dnt-sc-add-btn[data-sc-state="added"]    .dnt-sc-st--added    { opacity: 1; }
.dnt-sc-add-btn[data-sc-state="enrolled"] .dnt-sc-st--enrolled { opacity: 1; }
.dnt-sc-add-btn[data-sc-state="bought"]   .dnt-sc-st--bought   { opacity: 1; }
.dnt-sc-add-btn[data-sc-state="inclus"]   .dnt-sc-st--inclus   { opacity: 1; }

/* State: Adaugă */
.dnt-sc-add-btn[data-sc-state="add"] {
	background: #4f46e5;
	border-color: transparent;
	color: #fff;
}
.dnt-sc-add-btn[data-sc-state="add"]:hover  { background: #4338ca; }
.dnt-sc-add-btn[data-sc-state="add"]:active { transform: scale(0.94); }

/* State: Adăugat */
.dnt-sc-add-btn[data-sc-state="added"] {
	background: #059669;
	border-color: transparent;
	color: #fff;
}
.dnt-sc-add-btn[data-sc-state="added"]:hover  { background: #047857; }
.dnt-sc-add-btn[data-sc-state="added"]:active { transform: scale(0.94); }

/* States: owned (non-interactive) */
.dnt-sc-add-btn[data-sc-state="enrolled"],
.dnt-sc-add-btn[data-sc-state="bought"],
.dnt-sc-add-btn[data-sc-state="inclus"] {
	background: #f0fdf4;
	border-color: #bbf7d0;
	color: #15803d;
	cursor: default;
	pointer-events: none;
}

/* ── Card state modifiers ───────────────────────────────────── */

/* Selected */
.dnt-shop-cat .dnt-sc-card.dnt-sc-sel {
	border-color: #4f46e5;
	background: #f5f3ff;
	box-shadow: 0 3px 14px rgba(79,70,229,.14);
	outline: none;
	outline-offset: unset;
}
.dnt-shop-cat .dnt-sc-card.dnt-sc-sel .ws-card-content { border-right-color: #c7d2fe; }
.dnt-shop-cat .dnt-sc-card.dnt-sc-sel .ws-card-footer { background: #ede9fe; }
/* No thumb overlay needed at compact size */
.dnt-shop-cat .dnt-sc-card.dnt-sc-sel .ws-card-thumb::after { display: none; }

/* Enrolled/owned */
.dnt-shop-cat .dnt-sc-card.dnt-sc-owned {
	opacity: 1;
	background: #f8fffe;
	border-color: #d1fae5;
}
.dnt-shop-cat .dnt-sc-card.dnt-sc-owned .ws-card-footer {
	background: #ecfdf5;
	opacity: 1;
	pointer-events: auto;
}

/* Low-stock: border accent instead of side shadow (side-tab removed globally) */
.dnt-shop-cat .dentisity-workshop-card:has(.ws-slots-low):not(.ws-enrolled) {
	border-color: #fbbf24;
	animation: none;
}
.dnt-shop-cat .dentisity-workshop-card.dnt-anim-pop:has(.ws-slots-low):not(.ws-enrolled) {
	animation: dnt-pop-in .45s cubic-bezier(.22,1,.36,1) var(--dnt-pop-delay, 0ms) both;
}

/* Mobile: slightly wider thumb */
@media (max-width: 480px) {
	.dnt-shop-cat .dentisity-workshop-card.dnt-sc-card {
		grid-template-columns: 60px 1fr auto;
	}
	.dnt-shop-cat.dnt-sc-no-images .dentisity-workshop-card.dnt-sc-card {
		grid-template-columns: 1fr auto;
	}
	.dnt-shop-cat .ws-card-thumb,
	.dnt-shop-cat .ws-card-thumb-link {
		width: 60px;
	}
	.dnt-shop-cat .ws-card-footer {
		min-width: 70px;
		padding: 8px 7px;
	}
	.dnt-shop-cat .dnt-sc-add-btn .dnt-sc-st-lbl { display: none; }
}

/* ── Wave badge: subdue the heavy orange pill for compact cards ─ */
.dnt-shop-cat .ws-card-price .ws-card-wave-badge.dnt-wave-label {
	background: #fff7ed;
	color: #c2410c;
	box-shadow: none;
	animation: none;
	font-size: 10px;
	font-weight: 600;
	padding: 1px 6px;
	border: 1px solid #fed7aa;
	border-radius: 4px;
	letter-spacing: 0;
	text-transform: none;
}

/* ── Owned label badge in action column ─────────────────────── */
.dnt-sc-owned-label {
	font-size: 11px;
	font-weight: 600;
	color: #059669;
	text-align: center;
	display: block;
	white-space: nowrap;
	animation: dnt-sc-owned-in 0.35s cubic-bezier(0.22,1,0.36,1) both;
	animation-delay: var(--dnt-pop-delay, 0ms);
}
@keyframes dnt-sc-owned-in {
	from { opacity: 0; transform: scale(0.7); }
	to   { opacity: 1; transform: scale(1); }
}

/* ── Add/Remove button pop when toggled ─────────────────────── */
@keyframes dnt-sc-btn-pop {
	0%   { transform: scale(0.86); }
	55%  { transform: scale(1.06); }
	100% { transform: scale(1); }
}
.dnt-sc-btn-pop {
	animation: dnt-sc-btn-pop 0.28s cubic-bezier(0.22,1,0.36,1) !important;
}


/* Detalii text link press feedback */
.dnt-shop-cat .ws-detail-btn.dnt-btn:active {
	flex-grow: 1 !important;
	opacity: 0.55;
}

/* ── Cart receipt: item entry animation ─────────────────────── */
@keyframes dnt-sc-ci-in {
	from { opacity: 0; transform: translateX(10px); }
	to   { opacity: 1; transform: translateX(0); }
}

/* ── Hide owned toggle button ───────────────────────────────── */
.dnt-sc-hide-owned-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	font-weight: 500;
	color: #64748b;
	background: none;
	border: 1.5px solid #e2e8f0;
	border-radius: 7px;
	padding: 5px 10px;
	cursor: pointer;
	transition: color .15s, border-color .15s, background .15s;
	white-space: nowrap;
}
.dnt-sc-hide-owned-btn:hover {
	color: #4f46e5;
	border-color: #a5b4fc;
	background: #f5f3ff;
}
.dnt-sc-hide-owned-btn.is-active {
	color: #4f46e5;
	background: #ede9fe;
	border-color: #a5b4fc;
}

/* Hide owned cards when toggle is active */
.dnt-sc-hide-owned .dnt-sc-card.dnt-sc-owned {
	display: none;
}

/* ── Reduced motion ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.dnt-sc-btn-pop,
	.dnt-sc-ci,
	.dnt-sc-owned-label {
		animation: none !important;
	}
}

/* ── "Gratuit cu pass" badge: light card context ────────────── */
.dnt-shop-cat .ws-free-pass-badge {
	background: #dcfce7;
	color: #15803d;
	border-color: #86efac;
}


/* ── Detalii loading: prevent layout collapse ───────────────── */
.dnt-shop-cat .ws-detail-btn.dnt-btn-loading {
	width: 100% !important;
	flex: unset !important;
	flex-grow: 1 !important;
	min-width: 0 !important;
}

/* ── Mobile header: stack tabs full-width, compact second row ── */
@media (max-width: 600px) {
	.dnt-sc-header {
		gap: 8px;
		margin-bottom: 14px;
		align-items: stretch;
	}
	.dnt-sc-tabs {
		width: 100%;
		order: 1;
	}
	.dnt-sc-tab {
		flex: 1;
		justify-content: center;
		padding: 6px 8px;
		font-size: 12px;
	}
	.dnt-sc-credits-info {
		order: 2;
		margin-left: 0;
		flex: 1;
		font-size: 11px;
		padding: 5px 8px;
		white-space: nowrap;
	}
	.dnt-sc-hide-owned-btn {
		order: 3;
		font-size: 11px;
		padding: 5px 8px;
		flex-shrink: 0;
	}
	.dnt-sc-hide-owned-btn .dnt-sc-hob-lbl { display: none; }
}

/* ── Speaker name chip ───────────────────────────────────────── */
.dnt-sc-speaker {
	font-size: 10px;
	color: #94a3b8;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	line-height: 1.4;
	display: flex;
	align-items: center;
	gap: 3px;
}

/* ── Slot availability chip ──────────────────────────────────── */
.dnt-sc-slots-chip {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	font-size: 10px;
	font-weight: 600;
	padding: 1px 5px;
	border-radius: 4px;
	margin-top: 1px;
}
.dnt-sc-slots-chip.ws-slots-ok {
	color: #64748b;
	background: #f1f5f9;
}
.dnt-sc-slots-chip.ws-slots-low {
	color: #c2410c;
	background: #fff7ed;
	border: 1px solid #fed7aa;
}
.dnt-sc-slots-chip.ws-slots-full {
	color: #dc2626;
	background: #fef2f2;
	border: 1px solid #fecaca;
}

/* ── Conflict card: modal redesign (clean, animated) ─────────── */
#dnt-ws-modal-body .dentisity-conflict-card {
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: 10px;
	overflow: hidden;
	margin-top: 16px;
	font-size: 13px;
}
#dnt-ws-modal-body .dentisity-conflict-card-header {
	display: flex;
	align-items: center;
	gap: 8px;
	background: #fff7ed;
	padding: 9px 14px;
	font-size: 12px;
	font-weight: 600;
	color: #9a3412;
	border-bottom: 1px solid #fed7aa;
}
#dnt-ws-modal-body .dentisity-conflict-card-desc {
	margin: 9px 14px 6px;
	color: #64748b;
	font-size: 11.5px;
	line-height: 1.5;
}
#dnt-ws-modal-body .dentisity-conflict-rows {
	padding: 0 10px 10px;
	gap: 4px;
}
#dnt-ws-modal-body .dentisity-conflict-row {
	background: #f8fafc;
	border: 1px solid #e8edf5;
	border-radius: 8px;
	padding: 8px 10px;
	animation: dnt-confl-row-in .32s cubic-bezier(0.22,1,0.36,1) both;
}
@keyframes dnt-confl-row-in {
	from { opacity: 0; transform: translateY(5px); }
	to   { opacity: 1; transform: translateY(0); }
}
#dnt-ws-modal-body .dentisity-conflict-row-time {
	color: #94a3b8;
	font-size: 11px;
	font-weight: 500;
}
#dnt-ws-modal-body .dentisity-conflict-link {
	color: #1e293b;
	font-weight: 600;
	text-decoration: none;
	font-size: 12px;
	transition: color .15s;
}
#dnt-ws-modal-body .dentisity-conflict-link:hover { color: #4f46e5; text-decoration: underline; }
#dnt-ws-modal-body .dentisity-conflict-row-badge {
	background: #d1fae5;
	color: #065f46;
	font-size: 10px;
	font-weight: 600;
	padding: 2px 7px;
}
@media (prefers-reduced-motion: reduce) {
	#dnt-ws-modal-body .dentisity-conflict-row { animation: none !important; }
}


/* ═══════════════════════════════════════════════════════════════
   SHOP CATALOGUE — Modal V2
   Mobile-first bottom sheet · Desktop centered dialog
   ═══════════════════════════════════════════════════════════════ */

/* ── Overlay wrapper ──────────────────────────────────────────── */
#dnt-sc-modal-v2 {
	position: fixed;
	inset: 0;
	margin: 0;
	z-index: 2147483632;
	display: flex;
	align-items: flex-end;
	pointer-events: none;
	visibility: hidden;
	/* keep visible long enough for the exit animation to play */
	transition: visibility 0s 300ms, pointer-events 0s 300ms;
}
#dnt-sc-modal-v2.is-open {
	pointer-events: auto;
	visibility: visible;
	transition: visibility 0s, pointer-events 0s;
}

/* ── Backdrop ─────────────────────────────────────────────────── */
.dnt-sc-mv2-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(15,23,42,.55);
	backdrop-filter: blur(3px);
	-webkit-backdrop-filter: blur(3px);
	opacity: 0;
	transition: opacity 220ms ease-in; /* exit: faster fade-out */
}
#dnt-sc-modal-v2.is-open .dnt-sc-mv2-backdrop {
	opacity: 1;
	transition: opacity 280ms ease-out; /* enter: gentle fade-in */
}

/* ── Sheet (mobile = bottom sheet) ───────────────────────────── */
.dnt-sc-mv2-sheet {
	position: relative;
	width: 100%;
	max-height: 92dvh;
	max-height: 92vh; /* fallback */
	background: #ffffff;
	border-radius: 20px 20px 0 0;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	transform: translateY(100%);
	/* exit: snappier ease-in so it feels intentional, not just reversed entrance */
	transition: transform 260ms cubic-bezier(0.4, 0, 1, 0.8);
	will-change: transform;
	box-shadow: 0 -8px 40px rgba(15,23,42,.14);
}
#dnt-sc-modal-v2.is-open .dnt-sc-mv2-sheet {
	transform: translateY(0);
	/* enter: spring ease-out */
	transition: transform 380ms cubic-bezier(0.32, 0.72, 0, 1);
}
@media (prefers-reduced-motion: reduce) {
	.dnt-sc-mv2-sheet,
	#dnt-sc-modal-v2.is-open .dnt-sc-mv2-sheet { transition: none; }
	.dnt-sc-mv2-backdrop,
	#dnt-sc-modal-v2.is-open .dnt-sc-mv2-backdrop { transition: opacity 120ms ease; }
	#dnt-sc-modal-v2 { transition: visibility 0s 120ms; }
}

/* ── Drag handle ─────────────────────────────────────────────── */
.dnt-sc-mv2-handle {
	position: absolute;
	top: 8px;
	left: 50%;
	transform: translateX(-50%);
	width: 36px;
	height: 4px;
	background: #cbd5e1;
	border-radius: 2px;
	z-index: 3;
	pointer-events: none;
	flex-shrink: 0;
}

/* ── Hero image ──────────────────────────────────────────────── */
.dnt-sc-mv2-hero {
	width: 100%;
	height: 160px;
	flex-shrink: 0;
	background: #0f172a center/cover no-repeat;
	position: relative;
}
.dnt-sc-mv2-hero::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to bottom, rgba(15,23,42,0) 30%, rgba(15,23,42,.6) 100%);
}

/* ── Close button ────────────────────────────────────────────── */
.dnt-sc-mv2-close {
	position: absolute;
	top: 14px;
	right: 14px;
	z-index: 4;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: rgba(255,255,255,.9);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #0f172a;
	box-shadow: 0 1px 6px rgba(0,0,0,.18);
	transition: background 140ms ease, transform 140ms ease;
	padding: 0;
}
.dnt-sc-mv2-close:hover { background: #fff; }
.dnt-sc-mv2-close:active { transform: scale(0.91); }

/* ── Scrollable body ─────────────────────────────────────────── */
.dnt-sc-mv2-body {
	flex: 1;
	overflow-y: auto;
	overflow-x: hidden;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior: contain;
	padding: 18px 18px 0;
}

/* ── Title ───────────────────────────────────────────────────── */
.dnt-sc-mv2-title {
	font-size: 18px;
	font-weight: 700;
	color: #0f172a;
	line-height: 1.3;
	margin: 0 0 10px;
	text-wrap: balance;
}

/* ── Meta row ────────────────────────────────────────────────── */
.dnt-sc-mv2-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
	font-size: 12px;
	color: #64748b;
	margin-bottom: 14px;
}
.dnt-sc-mv2-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 4px;
}
.dnt-sc-mv2-slots-chip {
	display: inline-flex;
	align-items: center;
	font-size: 11px;
	font-weight: 600;
	padding: 2px 8px;
	border-radius: 100px;
}
.dnt-sc-mv2-slots-chip.ok  { background: #f1f5f9; color: #475569; }
.dnt-sc-mv2-slots-chip.low { background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa; }
.dnt-sc-mv2-slots-chip.full{ background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; }

/* ── Divider ─────────────────────────────────────────────────── */
.dnt-sc-mv2-divider {
	height: 1px;
	background: #f1f5f9;
	margin: 14px -18px;
}

/* ── Speaker chips ───────────────────────────────────────────── */
.dnt-sc-mv2-speakers {
	display: flex;
	flex-wrap: nowrap;
	gap: 8px;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	padding-bottom: 2px;
	padding-right: 32px;
	margin-bottom: 14px;
	-webkit-mask-image: linear-gradient(to right, black calc(100% - 28px), transparent 100%);
	mask-image: linear-gradient(to right, black calc(100% - 28px), transparent 100%);
}
.dnt-sc-mv2-speakers::-webkit-scrollbar { display: none; }
.dnt-sc-mv2-speaker-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: 100px;
	padding: 4px 12px 4px 4px;
	opacity: 0;
	transform: translateY(5px);
	animation: dnt-mv2-chip-in 280ms cubic-bezier(0.23,1,0.32,1) forwards;
	flex-shrink: 0;
}
.dnt-sc-mv2-speaker-chip[data-affil] { cursor: help; }
.dnt-sc-mv2-speaker-chip {
	-webkit-user-select: none;
	user-select: none;
	-webkit-touch-callout: none;
}
@keyframes dnt-mv2-chip-in {
	to { opacity: 1; transform: translateY(0); }
}
.dnt-sc-mv2-speaker-avatar {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	object-fit: cover;
	background: #1e293b;
	color: #fff;
	font-size: 11px;
	font-weight: 600;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	overflow: hidden;
}
.dnt-sc-mv2-speaker-name {
	font-size: 12px;
	font-weight: 600;
	color: #0f172a;
	white-space: nowrap;
	line-height: 1.3;
}
.dnt-sc-mv2-speaker-spec {
	font-size: 11px;
	color: #64748b;
	white-space: nowrap;
	line-height: 1.3;
}

/* ── Description ─────────────────────────────────────────────── */
.dnt-sc-mv2-desc {
	font-size: 14px;
	color: #334155;
	line-height: 1.65;
	margin-bottom: 14px;
	text-wrap: pretty;
}
.dnt-sc-mv2-desc p { margin: 0 0 10px; }
.dnt-sc-mv2-desc p:last-child { margin-bottom: 0; }
.dnt-sc-mv2-desc a { color: #2563eb; text-decoration: underline; }
.dnt-sc-mv2-desc strong, .dnt-sc-mv2-desc b { font-weight: 700; color: #1e293b; }
.dnt-sc-mv2-desc em, .dnt-sc-mv2-desc i { font-style: italic; }
.dnt-sc-mv2-desc ul, .dnt-sc-mv2-desc ol { margin: 0 0 10px; padding-left: 20px; }
.dnt-sc-mv2-desc li { margin: 0 0 4px; }
.dnt-sc-mv2-desc h1, .dnt-sc-mv2-desc h2, .dnt-sc-mv2-desc h3, .dnt-sc-mv2-desc h4 {
	font-size: 15px; font-weight: 700; color: #1e293b; margin: 12px 0 6px; line-height: 1.3;
}
.dnt-sc-mv2-desc img { max-width: 100%; height: auto; border-radius: 8px; margin: 6px 0; }
.dnt-sc-mv2-desc :first-child { margin-top: 0; }

/* ── Sponsors ────────────────────────────────────────────────── */
.dnt-sc-mv2-sponsors {
	margin-bottom: 14px;
}
.dnt-sc-mv2-sponsors-label {
	font-size: 10px;
	font-weight: 600;
	color: #94a3b8;
	text-transform: uppercase;
	letter-spacing: .08em;
	margin-bottom: 8px;
}
.dnt-sc-mv2-sponsors-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
}
.dnt-sc-mv2-sponsor-logo {
	height: 26px;
	max-width: 80px;
	object-fit: contain;
}
.dnt-sc-mv2-sponsor-name {
	font-size: 12px;
	color: #475569;
}

/* ── Conflict block ──────────────────────────────────────────── */
.dnt-sc-mv2-conflict {
	background: #fffbeb;
	border: 1px solid #fde68a;
	border-radius: 10px;
	overflow: hidden;
	margin-bottom: 14px;
}
.dnt-sc-mv2-conflict-hdr {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 9px 12px;
	background: #fef3c7;
	border-bottom: 1px solid #fde68a;
	font-size: 12px;
	font-weight: 600;
	color: #78350f;
}
.dnt-sc-mv2-conflict-rows {
	padding: 8px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.dnt-sc-mv2-conflict-row {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 7px 8px;
	background: #fff;
	border: 1px solid #fde68a;
	border-radius: 7px;
	opacity: 0;
	transform: translateY(4px);
	animation: dnt-mv2-row-in 300ms cubic-bezier(0.23,1,0.32,1) forwards;
}
@keyframes dnt-mv2-row-in {
	to { opacity: 1; transform: translateY(0); }
}
.dnt-sc-mv2-conflict-time {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	font-size: 11px;
	color: #92400e;
	white-space: nowrap;
	flex-shrink: 0;
}
.dnt-sc-mv2-conflict-name {
	flex: 1;
	min-width: 0;
	font-size: 12px;
	color: #0f172a;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.dnt-sc-mv2-conflict-name a {
	color: #0f172a;
	text-decoration: none;
}
.dnt-sc-mv2-conflict-name a:hover { text-decoration: underline; }
.dnt-sc-mv2-conflict-badge {
	flex-shrink: 0;
	font-size: 10px;
	font-weight: 600;
	padding: 2px 7px;
	border-radius: 100px;
	background: #d1fae5;
	color: #065f46;
}

/* ── Sticky footer ───────────────────────────────────────────── */
.dnt-sc-mv2-footer {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 18px;
	border-top: 1px solid #f1f5f9;
	background: #fff;
}
.dnt-sc-mv2-price-block {
	flex: 1;
	min-width: 0;
}
.dnt-sc-mv2-price-old {
	display: block;
	font-size: 11px;
	color: #94a3b8;
	text-decoration: line-through;
	line-height: 1.2;
}
.dnt-sc-mv2-price-current {
	display: block;
	font-size: 20px;
	font-weight: 700;
	color: #0f172a;
	line-height: 1.2;
}
.dnt-sc-mv2-price-wave {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	margin-top: 3px;
	font-size: 11px;
	font-weight: 600;
	color: #c2410c;
	background: #fff7ed;
	border: 1px solid #fed7aa;
	border-radius: 4px;
	padding: 1px 6px;
}
.dnt-sc-mv2-cta {
	flex-shrink: 0;
}
@keyframes dnt-mv2-cta-in {
	from { opacity: 0; transform: scale(0.92) translateY(2px); }
	to   { opacity: 1; transform: scale(1) translateY(0); }
}
.dnt-sc-mv2-cta .dnt-btn {
	white-space: nowrap;
	padding: 10px 22px !important;
	min-height: 44px;
	min-width: 120px;
	animation: dnt-mv2-cta-in 220ms cubic-bezier(0.23,1,0.32,1) both;
	transition: transform 100ms ease, background 180ms ease, border-color 180ms ease !important;
}
.dnt-sc-mv2-cta .dnt-btn:active { transform: scale(0.94) !important; }
.dnt-sc-mv2-cta .dnt-btn-inner {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
}

/* ── Desktop overrides ───────────────────────────────────────── */
@media (min-width: 640px) {
	#dnt-sc-modal-v2 {
		align-items: center;
		justify-content: center;
	}
	.dnt-sc-mv2-sheet {
		width: min(580px, calc(100vw - 32px));
		max-height: 88vh;
		border-radius: 16px;
		transform: scale(0.97);
		opacity: 0;
		transition: transform 260ms cubic-bezier(0.23,1,0.32,1),
		            opacity 200ms ease;
		box-shadow: 0 24px 64px rgba(15,23,42,.22), 0 4px 16px rgba(15,23,42,.1);
	}
	#dnt-sc-modal-v2.is-open .dnt-sc-mv2-sheet {
		transform: scale(1);
		opacity: 1;
	}
	.dnt-sc-mv2-handle { display: none; }
	.dnt-sc-mv2-hero   { height: 200px; }
	.dnt-sc-mv2-close  { top: 16px; right: 16px; }
}

/* ── Speaker affiliation tooltip ─────────────────────────────── */
.dnt-sc-mv2-tip {
	position: fixed;
	z-index: 2147483633;
	background: #1e293b;
	color: #f1f5f9;
	font-size: 11px;
	line-height: 1.5;
	padding: 5px 10px;
	border-radius: 7px;
	max-width: 200px;
	text-align: center;
	pointer-events: none;
	opacity: 0;
	transition: opacity 140ms ease;
	box-shadow: 0 4px 14px rgba(0,0,0,.22);
	display: none;
}

/* ── Reduced motion ──────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.dnt-sc-mv2-sheet {
		transition: opacity 150ms ease !important;
		transform: none !important;
		opacity: 0;
	}
	#dnt-sc-modal-v2.is-open .dnt-sc-mv2-sheet {
		opacity: 1 !important;
		transform: none !important;
	}
	.dnt-sc-mv2-speaker-chip,
	.dnt-sc-mv2-conflict-row {
		animation: none !important;
		opacity: 1 !important;
		transform: none !important;
	}
}
