:root {
	--ceremony-purple: #4b176f;
	--ceremony-purple-dark: #2f0c49;
	--ceremony-purple-soft: #f2eaf7;
	--ceremony-gold: #c8a24d;
	--ceremony-gold-light: #f4df9c;
	--ceremony-ivory: #fffaf0;
	--ceremony-ink: #281c2f;
	--ceremony-muted: #6d6472;
}

html {
	scroll-behavior: smooth;
}

body.ceremony-page {
	min-height: 100vh;
	background:
		radial-gradient(circle at top right, rgba(200, 162, 77, .14), transparent 28rem),
		linear-gradient(180deg, #fffdf9 0, #f8f3fa 100%);
	color: var(--ceremony-ink);
	font-size: 1rem;
}

.ceremony-page .container {
	font-size: 1rem;
}

.ceremony-page a {
	color: #5f2585;
}

.ceremony-page a:hover {
	color: var(--ceremony-purple-dark);
}

.ceremony-header {
	position: relative;
	overflow: hidden;
	background: linear-gradient(120deg, var(--ceremony-purple-dark), var(--ceremony-purple) 62%, #71349a);
	border-bottom: 4px solid var(--ceremony-gold);
	color: #fff;
}

.ceremony-header::after {
	position: absolute;
	top: -8rem;
	right: -5rem;
	width: 22rem;
	height: 22rem;
	border: 1px solid rgba(244, 223, 156, .25);
	border-radius: 50%;
	box-shadow: 0 0 0 2.5rem rgba(255, 255, 255, .025), 0 0 0 5rem rgba(255, 255, 255, .02);
	content: "";
}

.ceremony-header .container {
	position: relative;
	z-index: 1;
}

.ceremony-logo {
	width: min(100%, 76px);
	height: auto;
	filter: drop-shadow(0 5px 12px rgba(0, 0, 0, .22));
}

.ceremony-eyebrow {
	color: var(--ceremony-gold-light);
	font-size: .72rem;
	font-weight: 600;
	letter-spacing: .16em;
}

.ceremony-site-title {
	color: #fff;
	font-size: clamp(1.05rem, 2.2vw, 1.75rem);
	font-weight: 500;
	line-height: 1.35;
}

.ceremony-site-title span {
	color: var(--ceremony-gold-light);
	white-space: nowrap;
}

.ceremony-site-subtitle,
.ceremony-date {
	color: rgba(255, 255, 255, .84);
	font-size: clamp(.78rem, 1.4vw, 1rem);
}

.ceremony-page .navbar {
	margin-top: .85rem;
	padding: .55rem .7rem;
	background: rgba(255, 255, 255, .88) !important;
	border: 1px solid rgba(75, 23, 111, .09);
	border-radius: 1rem;
	box-shadow: 0 8px 30px rgba(56, 27, 71, .07);
	backdrop-filter: blur(12px);
}

.ceremony-page .navbar .btn-light {
	background: var(--ceremony-purple-soft);
	border: 0;
	border-radius: .75rem;
	color: var(--ceremony-purple);
}

.ceremony-container {
	max-width: 1380px;
}

@media (min-width: 1200px) {
	.ceremony-content > aside {
		flex: 0 0 24%;
		max-width: 24%;
	}

	.ceremony-content > .ceremony-main-content {
		flex: 0 0 76%;
		max-width: 76%;
	}
}

.ceremony-content {
	padding-top: 1.25rem;
	padding-bottom: 3rem;
}

.ceremony-login-stack {
	display: grid;
	gap: 1rem;
	margin-bottom: 1rem;
}

.ceremony-login-card,
.ceremony-info-card,
.ceremony-main-content .card {
	border-radius: 1.15rem;
	box-shadow: 0 12px 36px rgba(50, 25, 62, .09);
}

.ceremony-login-card {
	position: relative;
	overflow: hidden;
	background: rgba(255, 255, 255, .96);
}

.ceremony-login-card::before {
	display: block;
	height: 4px;
	background: linear-gradient(90deg, var(--ceremony-gold), var(--ceremony-purple));
	content: "";
}

.ceremony-card-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	margin-bottom: .8rem;
	background: var(--ceremony-purple-soft);
	border-radius: .85rem;
	color: var(--ceremony-purple);
	font-size: 1.15rem;
}

.ceremony-card-heading {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-bottom: .8rem;
}

.ceremony-card-heading .ceremony-card-icon {
	margin-bottom: 0;
}

.ceremony-card-heading .ceremony-card-title {
	margin-bottom: 0;
	font-size: 1rem;
	white-space: nowrap;
}

.ceremony-card-title {
	margin-bottom: .45rem;
	color: var(--ceremony-purple-dark);
	font-size: 1.15rem;
	font-weight: 600;
	line-height: 1.45;
}

.ceremony-card-description {
	margin-bottom: 1rem;
	color: var(--ceremony-muted);
	font-size: .9rem;
	line-height: 1.55;
}

.ceremony-login-card .form-control {
	min-height: 3.45rem;
	border-color: #ded5e3;
	border-radius: .8rem;
	font-size: 1rem;
}

.ceremony-login-card .form-control:focus {
	border-color: #8a58aa;
	box-shadow: 0 0 0 .25rem rgba(75, 23, 111, .12);
}

.ceremony-login-card .form-floating > label {
	color: var(--ceremony-muted);
}

.btn-ceremony {
	min-height: 3rem;
	padding: .7rem 1rem;
	background: linear-gradient(120deg, var(--ceremony-purple-dark), #6d2c91);
	border: 0;
	border-radius: .8rem;
	box-shadow: 0 7px 18px rgba(75, 23, 111, .2);
	color: #fff;
	font-weight: 500;
}

.btn-ceremony:hover,
.btn-ceremony:focus {
	background: linear-gradient(120deg, #3b1058, #5c227d);
	color: #fff;
	transform: translateY(-1px);
}

.ceremony-info-card {
	background: rgba(255, 255, 255, .78);
}

.ceremony-section-title {
	margin: 0;
	padding-bottom: .7rem;
	border-bottom: 1px solid rgba(200, 162, 77, .45);
	color: var(--ceremony-purple-dark);
	font-size: 1rem;
	font-weight: 600;
	letter-spacing: .02em;
}

.ceremony-info-card .list-group-item {
	padding: .65rem .25rem;
	background: transparent;
	line-height: 1.45;
}

.ceremony-related-link {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	color: var(--ceremony-purple) !important;
	font-size: .9rem;
	font-weight: 550;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

.ceremony-related-link i {
	width: 1rem;
	flex: 0 0 1rem;
	margin-top: .2rem;
	color: var(--ceremony-gold);
	text-align: center;
}

.ceremony-related-link:hover,
.ceremony-related-link:focus-visible {
	background: var(--ceremony-purple-soft);
	color: var(--ceremony-purple-dark) !important;
	transform: translateX(2px);
}

.ceremony-related-link-featured {
	margin-top: .35rem;
	border-top: 1px solid rgba(200, 162, 77, .35) !important;
	color: var(--ceremony-purple-dark) !important;
	font-weight: 650;
}

.ceremony-related-link-featured i {
	color: var(--ceremony-purple);
}

.ceremony-contact-details {
	display: grid;
	gap: .85rem;
	margin-top: 1rem;
}

.ceremony-contact-row {
	display: grid;
	grid-template-columns: 1.25rem minmax(0, 1fr);
	gap: .65rem;
	color: var(--ceremony-purple-dark);
	font-size: .84rem;
	line-height: 1.45;
}

.ceremony-contact-icon {
	margin-top: .2rem;
	color: var(--ceremony-gold);
	text-align: center;
}

.ceremony-contact-row strong,
.ceremony-contact-row span,
.ceremony-contact-row a {
	display: block;
}

.ceremony-contact-row strong {
	font-weight: 650;
}

.ceremony-contact-row span {
	color: var(--ceremony-muted);
}

.ceremony-contact-row a {
	color: var(--ceremony-purple) !important;
	text-decoration: none;
}

.ceremony-contact-row a:hover,
.ceremony-contact-row a:focus-visible {
	color: var(--ceremony-purple-dark) !important;
	text-decoration: underline;
}

.ceremony-staff-link {
	display: flex;
	align-items: center;
	gap: .55rem;
	margin-top: 1rem;
	padding-top: .8rem;
	border-top: 1px solid rgba(200, 162, 77, .35);
	color: var(--ceremony-purple) !important;
	font-size: .88rem;
	font-weight: 650;
}

.ceremony-staff-link i {
	color: var(--ceremony-gold);
}

.ceremony-faculty-page {
	padding: 1.25rem 0 3rem;
}

.ceremony-faculty-header {
	display: flex;
	align-items: flex-start;
	gap: .85rem;
	margin-bottom: 1rem;
	padding: 1rem 1.1rem;
	background: linear-gradient(145deg, #fbf8fd, #fffaf0);
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1rem;
}

.ceremony-faculty-header-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.8rem;
	height: 2.8rem;
	flex: 0 0 auto;
	background: var(--ceremony-purple-soft);
	border-radius: .8rem;
	color: var(--ceremony-purple);
	font-size: 1.1rem;
}

.ceremony-faculty-header h1 {
	margin: .2rem 0 .35rem;
	color: var(--ceremony-purple-dark);
	font-size: clamp(1.15rem, 2.2vw, 1.65rem);
	font-weight: 650;
	line-height: 1.35;
}

.ceremony-faculty-header p {
	margin: 0;
	color: var(--ceremony-muted);
	font-size: .86rem;
	line-height: 1.5;
}

.ceremony-faculty-auth-required {
	display: flex;
	align-items: center;
	gap: .65rem;
	margin-top: .85rem;
	padding: .75rem;
	background: #fff9ed;
	border: 1px solid rgba(200, 162, 77, .35);
	border-radius: .75rem;
	color: #75551b;
	font-size: .82rem;
	line-height: 1.4;
}

.ceremony-faculty-auth-required > i {
	color: #9a6710;
}

.ceremony-faculty-auth-required span {
	flex: 1;
}

.ceremony-faculty-auth-button {
	flex: 0 0 auto;
	background: var(--ceremony-purple);
	border-radius: .65rem;
	color: #fff !important;
	font-size: .8rem;
	font-weight: 650;
}

.ceremony-faculty-auth-button:hover,
.ceremony-faculty-auth-button:focus-visible {
	background: var(--ceremony-purple-dark);
	color: #fff !important;
}

.ceremony-faculty-logout {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	margin-top: .7rem;
	color: #c0392b !important;
	font-size: .78rem;
	font-weight: 500;
	text-decoration: none;
}

.ceremony-faculty-logout:hover,
.ceremony-faculty-logout:focus-visible {
	color: #8e1f14 !important;
	text-decoration: underline;
}

.ceremony-faculty-search,
.ceremony-faculty-downloads,
.ceremony-faculty-results {
	padding: 1rem;
	background: rgba(255, 255, 255, .94);
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1rem;
	box-shadow: 0 10px 30px rgba(50, 25, 62, .06);
}

.ceremony-faculty-search .form-label {
	margin-bottom: .35rem;
	color: var(--ceremony-purple-dark) !important;
	font-size: .82rem;
}

.ceremony-faculty-search .form-select,
.ceremony-faculty-search .form-control {
	min-height: 2.85rem;
	border-color: #ded5e3;
	border-radius: .75rem;
}

.ceremony-faculty-search .form-select:focus,
.ceremony-faculty-search .form-control:focus {
	border-color: #8a58aa;
	box-shadow: 0 0 0 .2rem rgba(75, 23, 111, .11);
}

.ceremony-faculty-submit {
	min-height: 2.85rem;
	background: var(--ceremony-purple);
	border: 0;
	border-radius: .75rem;
	box-shadow: 0 7px 18px rgba(75, 23, 111, .18);
	color: #fff;
	font-weight: 650;
}

.ceremony-faculty-submit:hover,
.ceremony-faculty-submit:focus-visible {
	background: var(--ceremony-purple-dark);
	color: #fff;
}

.ceremony-faculty-downloads {
	margin-bottom: 1rem;
}

.ceremony-faculty-downloads h5 {
	margin-bottom: .75rem !important;
	color: var(--ceremony-purple-dark);
}

.ceremony-faculty-downloads .list-group-item {
	padding: .65rem .25rem;
	background: transparent;
	border-color: #eee7f1;
}

.ceremony-faculty-downloads a,
.ceremony-faculty-downloads .btn-text-only {
	color: var(--ceremony-purple) !important;
	font-weight: 550;
}

.ceremony-faculty-toolbar {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin: 1rem 0;
}

.ceremony-faculty-toolbar .form-select {
	max-width: 28rem;
	min-height: 2.75rem;
	border-color: #ded5e3;
	border-radius: .75rem;
}

.ceremony-export-button {
	min-height: 2.75rem;
	margin-left: auto;
	border-color: #26734a;
	border-radius: .75rem;
	color: #26734a;
	font-weight: 650;
}

.ceremony-export-button:hover,
.ceremony-export-button:focus-visible {
	background: #eff9f3;
	color: #1d5a3a;
}

.ceremony-faculty-results {
	overflow: hidden;
}

.ceremony-faculty-results .table-responsive {
	margin: -.25rem;
}

.ceremony-faculty-results table {
	margin-bottom: .75rem;
	font-size: .86rem;
}

.ceremony-faculty-results thead th {
	background: var(--ceremony-purple-soft);
	border-color: #dfd1e6;
	color: var(--ceremony-purple-dark);
	font-weight: 650;
	white-space: nowrap;
}

.ceremony-faculty-results tbody td {
	border-color: #eee7f1;
	vertical-align: middle;
}

.ceremony-faculty-results tbody tr:hover {
	background: #fcf9fd;
}

.ceremony-faculty-results > span {
	color: var(--ceremony-muted) !important;
	font-size: .72rem !important;
}

@media (max-width: 575.98px) {
	.ceremony-faculty-page {
		padding-top: .75rem;
	}

	.ceremony-faculty-header {
		padding: .85rem;
	}

	.ceremony-faculty-auth-required {
		align-items: flex-start;
		flex-wrap: wrap;
	}

	.ceremony-faculty-auth-button {
		width: 100%;
	}

	.ceremony-faculty-toolbar {
		align-items: stretch;
		flex-direction: column;
	}

	.ceremony-faculty-toolbar .form-select {
		max-width: none;
	}

	.ceremony-export-button {
		margin-left: 0;
	}
}

.ceremony-stat-card {
	padding: 1rem;
	background: rgba(255, 255, 255, .94);
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1.15rem;
	box-shadow: 0 12px 36px rgba(50, 25, 62, .09);
}

.ceremony-stat-heading {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-bottom: 1rem;
}

.ceremony-stat-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.65rem;
	height: 2.65rem;
	flex: 0 0 auto;
	background: var(--ceremony-purple-soft);
	border-radius: .85rem;
	color: var(--ceremony-purple);
	font-size: 1.05rem;
}

.ceremony-stat-eyebrow {
	display: block;
	color: var(--ceremony-muted);
	font-size: .62rem;
	font-weight: 700;
	letter-spacing: .12em;
}

.ceremony-stat-title {
	margin: .15rem 0 0;
	color: var(--ceremony-purple-dark);
	font-size: 1rem;
	font-weight: 650;
	line-height: 1.35;
}

.ceremony-stat-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: .5rem;
	margin: 0;
}

.ceremony-stat-metric {
	min-width: 0;
	padding: .7rem .55rem;
	background: #faf8fc;
	border-radius: .75rem;
}

.ceremony-stat-metric dt {
	min-height: 2.5em;
	color: var(--ceremony-muted);
	font-size: .7rem;
	line-height: 1.25;
}

.ceremony-stat-metric dd {
	margin: .3rem 0 0;
	color: var(--ceremony-purple-dark);
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1;
}

.ceremony-stat-metric-pending {
	background: #fff9ed;
}

.ceremony-stat-metric-pending dd {
	color: #9a6710;
}

.ceremony-stat-metric-registered {
	background: #eff9f3;
}

.ceremony-stat-metric-registered dd {
	color: #26734a;
}

.ceremony-stat-updated {
	margin: .9rem 0 0;
	color: var(--ceremony-muted);
	font-size: .72rem;
	line-height: 1.4;
	text-align: right;
}

.ceremony-stat-updated i {
	margin-right: .2rem;
}

@media (max-width: 575.98px) {
	.ceremony-stat-card {
		padding: .85rem;
	}

	.ceremony-stat-grid {
		grid-template-columns: 1fr;
	}

	.ceremony-stat-metric {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: .75rem;
	}

	.ceremony-stat-metric dt {
		min-height: 0;
	}

	.ceremony-stat-metric dd {
		margin: 0;
	}
}

.ceremony-main-content {
	min-width: 0;
}

.ceremony-main-content img {
	max-width: 100%;
	height: auto;
}

.ceremony-hero-panel {
	padding: clamp(.75rem, 2vw, 1.5rem);
	background: rgba(255, 255, 255, .76);
	border: 1px solid rgba(75, 23, 111, .08);
	border-radius: 1.25rem;
	box-shadow: 0 12px 36px rgba(50, 25, 62, .08);
}

.ceremony-hero-panel img {
	border-radius: 1rem !important;
}

.ceremony-hero-media {
	display: flex;
	align-items: stretch;
}

/* กรอบภาพประกาศ: ม่วง-ทองเข้ากับภาพ ยืดสูงเท่าคอลัมน์ขวา (md+) ภาพอยู่กึ่งกลาง */
.ceremony-banner-frame {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	/* ไม่ใส่ overflow:hidden — zoom.js ขยายรูปในที่ จะโดนตัด */
	padding: clamp(.6rem, 1.5vw, 1rem);
	/* พื้นม่วงจาง (ลาเวนเดอร์) ขอบทอง */
	background:
		radial-gradient(circle at 50% 15%, rgba(255, 255, 255, .55), transparent 60%),
		linear-gradient(160deg, #ebdff5, #dccbec 55%, #cbb4e2);
	border-radius: 1.25rem;
	box-shadow:
		inset 0 0 0 1px rgba(200, 162, 77, .45),
		inset 0 0 0 6px rgba(255, 255, 255, .6),
		0 14px 34px rgba(75, 23, 111, .1);
}

/* ลายจุดทองจาง ๆ ให้พื้นที่ว่างรอบภาพไม่โล่ง */
.ceremony-banner-frame::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background-image: radial-gradient(rgba(200, 162, 77, .3) 1px, transparent 1.4px);
	background-size: 18px 18px;
	pointer-events: none;
}

.ceremony-banner {
	position: relative;
	display: block;
	width: 100%;
	height: auto;
	cursor: zoom-in;
	box-shadow: 0 10px 26px rgba(75, 23, 111, .18);
}

.ceremony-survey {
	display: block;
	overflow: hidden;
	border-radius: 1rem;
	box-shadow: 0 10px 28px rgba(50, 25, 62, .12);
	transition: transform .2s ease, box-shadow .2s ease;
}

.ceremony-survey img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 0 !important;
}

.ceremony-survey:hover,
.ceremony-survey:focus-visible {
	transform: translateY(-3px);
	box-shadow: 0 16px 36px rgba(50, 25, 62, .18);
}

@media (prefers-reduced-motion: reduce) {
	.ceremony-survey {
		transition: none;
	}

	.ceremony-survey:hover {
		transform: none;
	}
}

.ceremony-hero-content {
	display: grid;
	gap: 1rem;
	align-content: start;
}

.ceremony-countdown-panel {
	position: relative;
	overflow: hidden;
	padding: 1.25rem 1rem 1.1rem;
	background: linear-gradient(145deg, #fbf8fd, #fffaf0);
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1rem;
	box-shadow: 0 10px 28px rgba(50, 25, 62, .07);
	text-align: center;
}

/* แถบทอง-ม่วงด้านบน เข้าชุดกับการ์ดเข้าสู่ระบบ */
.ceremony-countdown-panel::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	height: 4px;
	background: linear-gradient(90deg, var(--ceremony-gold), var(--ceremony-purple));
}

.ceremony-countdown-eyebrow,
.ceremony-resource-eyebrow {
	display: block;
	color: var(--ceremony-muted);
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.ceremony-countdown-eyebrow i {
	color: var(--ceremony-gold);
}

.ceremony-countdown-title {
	margin: .45rem auto 1rem;
	max-width: 30rem;
	color: var(--ceremony-purple-dark);
	font-size: clamp(1rem, 1.8vw, 1.35rem);
	font-weight: 650;
	line-height: 1.4;
}

.ceremony-resource-card {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .85rem 1rem;
	background: #fff;
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: .9rem;
	box-shadow: 0 8px 22px rgba(50, 25, 62, .05);
}

.ceremony-resource-icon {
	color: #b33b3b;
	font-size: 1.3rem;
}

.ceremony-resource-copy {
	min-width: 0;
	flex: 1;
}

.ceremony-resource-copy a {
	display: block;
	margin-top: .2rem;
	color: var(--ceremony-purple) !important;
	font-size: .88rem;
	font-weight: 600;
	line-height: 1.45;
}

.ceremony-resource-action {
	color: var(--ceremony-muted);
	font-size: .8rem;
}

.ceremony-line-panel {
	padding: .75rem;
	background: #fff;
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1rem;
	box-shadow: 0 10px 28px rgba(50, 25, 62, .07);
}

.ceremony-line-panel img {
	cursor: zoom-in;
}

.ceremony-line-label {
	display: flex;
	align-items: center;
	gap: .4rem;
	margin: 0 .2rem .65rem;
	color: var(--ceremony-purple-dark);
	font-size: .82rem;
	font-weight: 650;
}

.ceremony-line-label small {
	margin-left: auto;
	color: var(--ceremony-muted);
	font-size: .72rem;
	font-weight: 500;
}

.ceremony-line-label i {
	color: #08a44c;
}

.ceremony-line-panel img {
	display: block;
	width: 100%;
	height: auto;
}

.ceremony-announcements {
	overflow: hidden;
	background: rgba(255, 255, 255, .94);
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1.2rem;
	box-shadow: 0 14px 38px rgba(50, 25, 62, .09);
}

.ceremony-announcement-header {
	position: relative;
	overflow: hidden;
	padding: clamp(1rem, 2.5vw, 1.5rem);
	background: linear-gradient(120deg, var(--ceremony-purple-dark), var(--ceremony-purple));
	color: #fff;
}

.ceremony-announcement-header::after {
	position: absolute;
	top: -4.5rem;
	right: -3rem;
	width: 11rem;
	height: 11rem;
	border: 1px solid rgba(244, 223, 156, .3);
	border-radius: 50%;
	box-shadow: 0 0 0 1.5rem rgba(255, 255, 255, .025);
	content: "";
}

.ceremony-announcement-heading {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: 1rem;
}

.ceremony-announcement-heading-icon {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	background: rgba(244, 223, 156, .16);
	border: 1px solid rgba(244, 223, 156, .42);
	border-radius: .9rem;
	color: var(--ceremony-gold-light);
	font-size: 1.2rem;
}

.ceremony-announcement-heading h2 {
	margin: 0 0 .2rem;
	color: #fff;
	font-size: clamp(1.1rem, 2vw, 1.35rem);
	font-weight: 600;
	line-height: 1.4;
}

.ceremony-announcement-heading p {
	margin: 0;
	color: rgba(255, 255, 255, .76);
	font-size: .9rem;
	line-height: 1.5;
}

.ceremony-announcement-list {
	padding: .45rem clamp(.45rem, 1.3vw, .8rem);
}

.ceremony-announcement-item + .ceremony-announcement-item {
	border-top: 1px solid #eee7f1;
}

.ceremony-announcement-link {
	display: grid;
	grid-template-columns: 3rem minmax(0, 1fr) auto;
	align-items: center;
	gap: 1rem;
	min-height: 5.2rem;
	padding: .85rem .8rem;
	border-radius: .9rem;
	color: var(--ceremony-ink) !important;
	text-decoration: none;
	transition: background-color .2s ease, transform .2s ease;
}

a.ceremony-announcement-link:hover {
	background: linear-gradient(90deg, rgba(242, 234, 247, .72), rgba(255, 250, 240, .7));
	transform: translateX(.2rem);
}

a.ceremony-announcement-link:focus-visible {
	outline: 3px solid rgba(200, 162, 77, .55);
	outline-offset: -3px;
}

.ceremony-announcement-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	background: var(--ceremony-purple-soft);
	border-radius: .9rem;
	color: var(--ceremony-purple);
	font-size: 1.15rem;
}

.ceremony-announcement-content {
	display: block;
	min-width: 0;
}

.ceremony-announcement-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .4rem .65rem;
	margin-bottom: .3rem;
	color: var(--ceremony-muted);
	font-size: .76rem;
}

.ceremony-document-type {
	color: #765323;
	font-weight: 500;
	letter-spacing: .02em;
	text-transform: uppercase;
}

.ceremony-new-badge {
	display: inline-flex;
	align-items: center;
	gap: .32rem;
	padding: .16rem .5rem;
	background: #fff0ee;
	border-radius: 999px;
	color: #b32828;
	font-weight: 600;
}

.ceremony-new-badge > span {
	width: .38rem;
	height: .38rem;
	background: #df3838;
	border-radius: 50%;
	box-shadow: 0 0 0 .2rem rgba(223, 56, 56, .1);
}

.ceremony-news-date {
	color: var(--ceremony-muted);
}

.ceremony-announcement-name {
	display: block;
	color: var(--ceremony-ink);
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.55;
	overflow-wrap: anywhere;
}

.ceremony-announcement-action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	color: #8e7899;
	font-size: .8rem;
	transition: background-color .2s ease, color .2s ease;
}

a.ceremony-announcement-link:hover .ceremony-announcement-action {
	background: #fff;
	color: var(--ceremony-purple);
}

.ceremony-announcement-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .65rem;
	padding: 2.5rem 1rem;
	color: var(--ceremony-muted);
	text-align: center;
}

.ceremony-announcement-empty i {
	color: #aa98b3;
	font-size: 2rem;
}

.ceremony-page .table-responsive {
	border-radius: .85rem;
}

.ceremony-page .table {
	--bs-table-striped-bg: rgba(75, 23, 111, .035);
	vertical-align: middle;
}

.ceremony-page .cf-turnstile-wrapper {
	width: 100%;
	overflow: hidden;
	transform: none;
}

/* Signed-in area */
.ceremony-inside-page {
	padding-bottom: max(2rem, env(safe-area-inset-bottom));
}

.ceremony-inside-nav {
	display: flex;
	margin-top: 1rem;
	padding: .7rem !important;
	background: rgba(255, 255, 255, .94) !important;
	border: 1px solid rgba(75, 23, 111, .1) !important;
	border-radius: 1rem !important;
	box-shadow: 0 10px 30px rgba(50, 25, 62, .08) !important;
}

.ceremony-inside-nav .container-fluid {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: space-between;
}

.ceremony-nav-user {
	display: flex;
	min-width: 0;
	align-items: center;
	gap: .7rem;
}

.ceremony-nav-avatar {
	display: inline-flex;
	flex: 0 0 2.7rem;
	align-items: center;
	justify-content: center;
	width: 2.7rem;
	height: 2.7rem;
	background: linear-gradient(135deg, var(--ceremony-purple), #7c3ca0);
	border-radius: .8rem;
	color: #fff;
	font-size: 1.05rem;
}

.ceremony-nav-user-text {
	display: flex;
	min-width: 0;
	flex-direction: column;
	line-height: 1.3;
}

.ceremony-nav-user-text strong {
	overflow: hidden;
	color: var(--ceremony-purple-dark);
	font-size: .92rem;
	font-weight: 600;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ceremony-nav-user-text small {
	color: var(--ceremony-muted);
	font-size: .74rem;
}

.ceremony-nav-label {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	color: var(--ceremony-purple-dark);
	font-weight: 500;
}

.ceremony-nav-actions {
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	gap: .55rem;
	margin-left: auto;
}

.ceremony-nav-staff {
	display: flex;
	min-width: 0;
	align-items: center;
}

.ceremony-inside-nav .ceremony-staff-button {
	border: 1px dashed #d9a520 !important;
	background: #fff8e1 !important;
	color: #7a5a00 !important;
	font-weight: 600;
}

.ceremony-inside-nav .ceremony-staff-button:hover,
.ceremony-inside-nav .ceremony-staff-button:focus-visible {
	background: #ffefb8 !important;
	color: #5c4300 !important;
}

.ceremony-language-switch {
	display: inline-flex;
	align-items: center;
	padding: .25rem;
	background: #f1edf3;
	border: 1px solid #e2d8e7;
	border-radius: .8rem;
}

.ceremony-language-option {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	min-height: 2.35rem;
	padding: .45rem .7rem;
	border-radius: .6rem;
	color: #665b6c !important;
	font-size: .8rem;
	line-height: 1;
	text-decoration: none;
	transition: background-color .2s ease, box-shadow .2s ease, color .2s ease;
}

.ceremony-language-option:hover {
	background: rgba(255, 255, 255, .75);
}

.ceremony-language-option.active {
	background: #fff;
	box-shadow: 0 3px 10px rgba(50, 25, 62, .12);
	color: var(--ceremony-purple) !important;
	font-weight: 600;
}

.ceremony-language-option.active::before {
	width: .38rem;
	height: .38rem;
	background: var(--ceremony-gold);
	border-radius: 50%;
	content: "";
}

.ceremony-language-code {
	font-weight: 700;
	letter-spacing: .04em;
}

.ceremony-language-name {
	color: inherit;
}

.ceremony-nav-button {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	min-height: 2.85rem;
	padding: .55rem .85rem;
	border-radius: .75rem;
	font-size: .85rem;
	font-weight: 500;
}

.ceremony-guide-button {
	background: #fffaf0;
	border: 1px solid rgba(200, 162, 77, .35);
	color: #8a641d !important;
}

.ceremony-guide-button:hover,
.ceremony-guide-button:focus-visible {
	background: #fff3d6;
	border-color: rgba(200, 162, 77, .6);
	color: #704d12 !important;
}

.ceremony-home-button {
	background: var(--ceremony-purple-soft);
	border: 1px solid rgba(75, 23, 111, .12);
	color: var(--ceremony-purple) !important;
}

.ceremony-home-button:hover,
.ceremony-home-button:focus-visible {
	background: #eadcf0;
	color: var(--ceremony-purple-dark) !important;
}

.ceremony-profile-button {
	background: var(--ceremony-purple-soft);
	border-color: transparent;
	color: var(--ceremony-purple);
}

.ceremony-profile-button:hover,
.ceremony-profile-button:focus {
	background: #e8d9f0;
	color: var(--ceremony-purple-dark);
}

.ceremony-logout-button {
	background: #fff4f3;
	border-color: #f1d0cd;
	color: #a23732 !important;
}

.ceremony-logout-button:hover,
.ceremony-logout-button:focus {
	background: #a23732;
	border-color: #a23732;
	color: #fff !important;
}

.ceremony-welcome-card {
	position: relative;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 1rem;
	overflow: hidden;
	padding: clamp(1rem, 2.5vw, 1.5rem);
	background: linear-gradient(120deg, #fff 0%, #fbf6fd 62%, #fff8e9 100%);
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1.1rem;
	box-shadow: 0 12px 34px rgba(50, 25, 62, .08);
}

.ceremony-welcome-card::after {
	position: absolute;
	top: -5rem;
	right: 12%;
	width: 11rem;
	height: 11rem;
	border: 1px solid rgba(200, 162, 77, .2);
	border-radius: 50%;
	content: "";
}

.ceremony-welcome-icon {
	display: inline-flex;
	position: relative;
	z-index: 1;
	align-items: center;
	justify-content: center;
	width: 3.3rem;
	height: 3.3rem;
	background: var(--ceremony-purple);
	border-radius: .95rem;
	box-shadow: 0 8px 18px rgba(75, 23, 111, .2);
	color: var(--ceremony-gold-light);
	font-size: 1.25rem;
}

.ceremony-welcome-content {
	position: relative;
	z-index: 1;
	min-width: 0;
}

.ceremony-welcome-eyebrow {
	color: #8a672d;
	font-size: .68rem;
	font-weight: 600;
	letter-spacing: .1em;
}

.ceremony-welcome-content h2 {
	margin: .15rem 0;
	color: var(--ceremony-purple-dark);
	font-size: clamp(1.05rem, 2.3vw, 1.4rem);
	font-weight: 600;
}

.ceremony-welcome-content p {
	margin: 0;
	color: var(--ceremony-muted);
	font-size: .86rem;
}

.ceremony-student-badge {
	position: relative;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	padding: .55rem .8rem;
	background: #fff;
	border: 1px solid #e6dce9;
	border-radius: 999px;
	color: var(--ceremony-purple-dark);
	font-size: .78rem;
	font-weight: 500;
	white-space: nowrap;
}

.ceremony-dashboard-shell {
	padding: clamp(.8rem, 2vw, 1.25rem);
	background: rgba(255, 255, 255, .72);
	border: 1px solid rgba(75, 23, 111, .08);
	border-radius: 1.2rem;
	box-shadow: 0 14px 40px rgba(50, 25, 62, .08);
}

.ceremony-status-card,
.ceremony-workspace {
	border: 0;
}

.ceremony-status-card {
	background: linear-gradient(180deg, #fff, #fcf9fd);
	border: 1px solid #ebe2ef;
	border-radius: 1rem;
	box-shadow: none;
}

.ceremony-panel-title {
	display: flex;
	align-items: center;
	gap: .55rem;
	margin: 0 0 1rem;
	padding-bottom: .75rem;
	border-bottom: 1px solid #eadfef;
	color: var(--ceremony-purple-dark);
	font-size: 1.05rem;
	font-weight: 600;
}

.ceremony-panel-title i {
	color: var(--ceremony-gold);
}

.ceremony-status-label {
	width: 43%;
	color: var(--ceremony-muted);
	font-size: .84rem;
	line-height: 1.45;
}

.ceremony-status-card .table {
	margin-bottom: .5rem;
}

.ceremony-status-card .table > :not(caption) > * > * {
	padding: .55rem .4rem;
	vertical-align: middle;
}

.ceremony-status-card .badge-min {
	max-width: 100%;
	margin: 0;
	padding: .45rem .65rem;
	line-height: 1.35;
	white-space: normal;
}

.badge-min--purple,
.badge-min--reg {
	border-color: #d8c5e2;
	background: #f7f0fa;
	color: var(--ceremony-purple-dark);
}

.diploma-summary {
	margin-top: .75rem;
	padding-top: 1rem;
	border-top: 1px solid #eadfef;
}

.diploma-summary-heading {
	display: flex;
	align-items: center;
	gap: .7rem;
	margin-bottom: .8rem;
}

.diploma-summary-icon,
.diploma-summary-state-icon,
.diploma-summary-detail-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
}

.diploma-summary-icon {
	width: 2.35rem;
	height: 2.35rem;
	border-radius: .75rem;
	background: #f3eaf7;
	color: var(--ceremony-purple);
}

.diploma-summary-heading h3 {
	margin: 0;
	color: var(--ceremony-purple-dark);
	font-size: .98rem;
	font-weight: 700;
}

.diploma-summary-heading p {
	margin: .12rem 0 0;
	color: var(--ceremony-muted);
	font-size: .78rem;
}

.diploma-summary-state {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	padding: .8rem;
	border: 1px solid #e7ddea;
	border-radius: .85rem;
	background: #fff;
}

.diploma-summary-state-icon {
	width: 1.85rem;
	height: 1.85rem;
	border-radius: .55rem;
	background: rgba(75, 23, 111, .08);
	color: var(--ceremony-purple);
}

.diploma-summary-state > div,
.diploma-summary-detail > div {
	min-width: 0;
}

.diploma-summary-state strong,
.diploma-summary-state span,
.diploma-summary-detail strong,
.diploma-summary-detail span,
.diploma-summary-detail small {
	display: block;
}

.diploma-summary-state strong,
.diploma-summary-detail strong {
	margin-bottom: .12rem;
	color: #33123f;
	font-size: .86rem;
}

.diploma-summary-state span,
.diploma-summary-detail span,
.diploma-summary-detail small {
	color: var(--ceremony-muted);
	font-size: .78rem;
	line-height: 1.45;
	overflow-wrap: anywhere;
}

.diploma-summary-state.is-pending {
	border-color: #ead89d;
	background: #fffbeb;
}

.diploma-summary-state.is-pending .diploma-summary-state-icon,
.diploma-summary-state.is-warning .diploma-summary-state-icon {
	background: #fff3c4;
	color: #9a6700;
}

.diploma-summary-state.is-selected {
	border-color: #d8c5e2;
	background: #faf6fc;
}

.diploma-summary-state.is-complete {
	border-color: #b8dfca;
	background: #f0faf4;
}

.diploma-summary-state.is-complete .diploma-summary-state-icon {
	background: #dff3e7;
	color: #157347;
}

.diploma-summary-action {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: .45rem;
	width: 100%;
	margin-top: .65rem;
	padding: .6rem .75rem;
	border: 1px solid #d8c5e2;
	border-radius: .7rem;
	background: #fff;
	color: var(--ceremony-purple-dark);
	font-size: .82rem;
	font-weight: 600;
}

.diploma-summary-action:hover,
.diploma-summary-action:focus {
	border-color: var(--ceremony-purple);
	background: #f7f0fa;
	color: var(--ceremony-purple-dark);
}

.diploma-summary-details {
	margin-top: .75rem;
	border: 1px solid #e7ddea;
	border-radius: .85rem;
	background: #fff;
	overflow: hidden;
}

.diploma-summary-detail {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	padding: .75rem;
}

.diploma-summary-detail + .diploma-summary-detail {
	border-top: 1px solid #eee6f1;
}

.diploma-summary-detail-icon {
	width: 1.75rem;
	height: 1.75rem;
	border-radius: .5rem;
	background: #f3eaf7;
	color: var(--ceremony-purple);
}

.diploma-summary-link {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	color: var(--ceremony-purple);
	font-size: .8rem;
	font-weight: 600;
}

.diploma-summary-note {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	margin-top: .7rem;
	padding: .7rem;
	border-radius: .7rem;
	background: #f5f2f6;
	color: var(--ceremony-muted);
	font-size: .72rem;
	line-height: 1.45;
}

.diploma-summary-note > i {
	margin-top: .12rem;
	color: var(--ceremony-gold);
}

.diploma-summary-note a {
	display: inline;
	color: var(--ceremony-purple);
	font-weight: 600;
}

.diploma-summary-confirmed {
	display: flex;
	align-items: center;
	gap: .45rem;
	margin-top: .7rem;
	padding: .65rem .75rem;
	border-radius: .7rem;
	background: #eaf7ef;
	color: #157347;
	font-size: .8rem;
	font-weight: 600;
}

.nonattendance-flow {
	margin-top: 1.5rem;
	padding: clamp(1rem, 2.5vw, 1.75rem);
	border: 1px solid #eadfef;
	border-radius: 1.2rem;
	background: linear-gradient(180deg, #fcf9fd 0%, #f8f4fa 100%);
	box-shadow: 0 14px 40px rgba(50, 25, 62, .07);
}

.attendance-preference {
	padding: clamp(1rem, 2.5vw, 1.4rem);
	border: 1px solid #e5d9e9;
	border-radius: 1rem;
	background: #fff;
	box-shadow: 0 10px 28px rgba(50, 25, 62, .07);
}

.attendance-preference-heading {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-bottom: 1rem;
	padding-bottom: .85rem;
	border-bottom: 1px solid #eee5f0;
}

.attendance-preference-heading > span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 2.6rem;
	height: 2.6rem;
	border-radius: .75rem;
	background: #f3eaf7;
	color: var(--ceremony-purple);
}

.attendance-preference-heading h2 {
	margin: 0;
	color: var(--ceremony-purple-dark);
	font-size: 1.05rem;
	font-weight: 700;
}

.attendance-preference-heading p {
	margin: .1rem 0 0;
	color: var(--ceremony-muted);
	font-size: .8rem;
}

.attendance-choice {
	display: flex;
	align-items: center;
	gap: .75rem;
	width: 100%;
	min-height: 5rem;
	padding: .85rem;
	border: 1px solid #e1d4e6;
	border-radius: .85rem;
	background: #fcfafc;
	color: var(--ceremony-purple-dark);
	text-align: left;
	transition: border-color .2s ease, background .2s ease, transform .2s ease, box-shadow .2s ease;
}

.attendance-choice:not(:disabled):hover,
.attendance-choice:not(:disabled):focus {
	border-color: #b88dca;
	background: #f8f1fa;
	box-shadow: 0 8px 18px rgba(75, 23, 111, .1);
	transform: translateY(-1px);
}

.attendance-choice.is-selected {
	border-color: #9e6eb5;
	background: #f5ebf8;
	opacity: 1;
}

.attendance-choice-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: .7rem;
	background: #efe1f4;
	color: var(--ceremony-purple);
}

.attendance-choice-content {
	min-width: 0;
	flex: 1;
}

.attendance-choice-content strong,
.attendance-choice-content small {
	display: block;
}

.attendance-choice-content strong {
	font-size: .9rem;
	line-height: 1.35;
}

.attendance-choice-content small {
	margin-top: .18rem;
	color: var(--ceremony-muted);
	font-size: .75rem;
	line-height: 1.4;
}

.attendance-choice-status {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 1.8rem;
	height: 1.8rem;
	border-radius: 50%;
	background: #fff;
	color: var(--ceremony-purple);
}

/* Attendance flow: a clean, link-free progress treatment. */
.ceremony-attendance-title {
	margin: 1.25rem 0 .65rem;
	color: var(--ceremony-purple-dark);
	font-size: clamp(1.1rem, 2vw, 1.45rem);
	font-weight: 750;
	line-height: 1.45;
	text-align: center;
}

.ceremony-attendance-steps {
	min-height: 7.5rem;
	margin: 0 auto 1.2rem;
	padding: 1rem .75rem .8rem;
	border: 1px solid #e8deeb;
	border-radius: 1rem;
	background: rgba(255, 255, 255, .86);
	box-shadow: 0 8px 24px rgba(63, 27, 79, .04);
}

.ceremony-attendance-steps a,
.ceremony-attendance-steps a:hover,
.ceremony-attendance-steps a:focus,
.ceremony-attendance-steps .step-text {
	text-decoration: none !important;
}

.ceremony-attendance-steps .step-text {
	color: #9b949f;
	font-size: .78rem !important;
	font-weight: 700;
	line-height: 1.35;
	text-align: center;
}

.ceremony-attendance-steps .step-active .step-text {
	color: #1878d1;
}

.ceremony-attendance-steps .step-success .step-text {
	color: #27845a;
}

.ceremony-attendance-content {
	border: 1px solid #e8e2ee;
	border-radius: .9rem;
	background: #fff;
}

.ceremony-attendance-content h3 {
	display: flex;
	align-items: center;
	gap: .55rem;
	margin: 0 0 1rem;
	padding-bottom: .75rem;
	border-bottom: 1px solid #eee8f2;
	color: var(--ceremony-purple-dark);
	font-size: 1.05rem;
	font-weight: 750;
	text-decoration: none !important;
}

.ceremony-attendance-content h3 i {
	color: var(--ceremony-gold);
}

.ceremony-attendance-content p {
	color: #4e4755;
	line-height: 1.7;
}

.ceremony-attendance-flow {
	margin-top: 1.5rem;
}

.ceremony-attendance-heading .nonattendance-heading-icon {
	background: #eee6fa;
	color: #5b2583;
}

.ceremony-attendance-content .nonattendance-form-heading h3 {
	display: block;
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 1.02rem;
}

.ceremony-guideline-text {
	color: #4e4755;
	font-size: .94rem;
	line-height: 1.75;
}

.ceremony-attendance-flow > .shadow-sm,
.ceremony-attendance-flow > .card {
	border: 1px solid #e7e2ef;
	border-radius: 1rem;
	background: #fff !important;
	box-shadow: 0 16px 38px rgba(46, 24, 66, .06) !important;
}

.ceremony-attendance-notice {
	margin: 0 auto 1rem;
	padding: .85rem 1rem;
	border: 1px solid #eadca8;
	border-radius: .75rem;
	background: #fffbeb;
	box-shadow: none;
	color: #7a5c12;
	font-size: .9rem;
	font-weight: 650;
	line-height: 1.55;
	text-align: center;
}

.ceremony-attendance-notice br + * {
	color: #806a30;
}

/* Keep the attendance stepper visually identical to the non-attendance flow. */
.ceremony-inside-page .ceremony-attendance-steps {
	position: relative;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	gap: 0;
	min-height: 7.5rem;
	padding: 1rem .75rem .8rem;
	overflow: visible;
	border: 1px solid #e8deeb;
	border-radius: 1rem;
	background: rgba(255, 255, 255, .9);
}

.ceremony-inside-page .ceremony-attendance-steps .step {
	position: relative;
	display: flex;
	justify-content: center;
	width: min(11rem, 25%);
	min-width: 0 !important;
	flex: 1 1 0;
}

.ceremony-inside-page .attendance-preference {
	border-color: #e5d9e9;
	background: linear-gradient(180deg, #fcf9fd 0%, #f8f4fa 100%);
	box-shadow: 0 14px 40px rgba(50, 25, 62, .07);
}

.ceremony-inside-page .attendance-choice {
	border-color: #e1d4e6;
	background: #fff;
	color: var(--ceremony-purple-dark);
	box-shadow: 0 6px 16px rgba(50, 25, 62, .05);
}

.ceremony-inside-page .attendance-choice:hover,
.ceremony-inside-page .attendance-choice:focus-visible {
	border-color: #aa83c0;
	background: #f8f1fc;
	box-shadow: 0 10px 22px rgba(75, 23, 111, .12);
}

.ceremony-inside-page .attendance-choice.is-selected {
	border: 2px solid #8b5cc2;
	background: #f3eafd;
	box-shadow: 0 8px 20px rgba(107, 70, 159, .12);
}

.ceremony-inside-page .attendance-choice-status {
	background: #fff;
	color: #65409c;
}

.ceremony-inside-page .ceremony-attendance-steps .step-active .step-text {
	color: var(--ceremony-purple-dark);
}

.ceremony-inside-page .ceremony-attendance-steps .step-disabled .step-circle {
	border-style: dashed;
	background: #faf9fb;
	opacity: .75;
}

.ceremony-inside-page .ceremony-attendance-content .btn-primary {
	border: 0;
	border-radius: .75rem;
	background: linear-gradient(135deg, var(--ceremony-purple-dark), var(--ceremony-purple));
	box-shadow: 0 8px 18px rgba(75, 23, 111, .18);
	font-weight: 700;
}

.ceremony-inside-page .ceremony-attendance-content .btn-primary:hover,
.ceremony-inside-page .ceremony-attendance-content .btn-primary:focus-visible {
	background: var(--ceremony-purple-dark);
	transform: translateY(-1px);
}

.ceremony-attendance-actions {
	display: flex;
	justify-content: center;
	margin-top: 1.25rem;
	padding-top: 1rem;
	border-top: 1px solid #eee8f2;
}

.ceremony-inside-page .ceremony-attendance-steps .step:not(:first-child)::before {
	content: "";
	position: absolute;
	top: 1.225rem;
	left: -50%;
	z-index: 0;
	width: 100%;
	height: 2px;
	background: #d9d4dc;
}

.ceremony-inside-page .ceremony-attendance-steps .step.step-active::before,
.ceremony-inside-page .ceremony-attendance-steps .step.step-success::before {
	background: var(--ceremony-purple);
}

.ceremony-inside-page .ceremony-attendance-steps .step-content {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	width: 100%;
	min-width: 0;
	max-width: none;
	padding: 0;
}

.ceremony-inside-page .ceremony-attendance-steps .step-circle {
	width: 2.45rem;
	height: 2.45rem;
	border: 2px solid #d9d4dc;
	background: #fff;
	box-shadow: 0 2px 4px rgba(55, 24, 68, .04);
	font-size: 1rem;
	font-weight: 700;
}

.ceremony-inside-page .ceremony-attendance-steps .step-circle::before {
	display: none;
}

.ceremony-inside-page .ceremony-attendance-steps .step-active .step-circle {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple);
	color: #fff;
}

.ceremony-inside-page .ceremony-attendance-steps .step-success .step-circle {
	border-color: #27845a;
	background: #fff;
	color: #27845a;
	font-size: 0;
}

.ceremony-inside-page .ceremony-attendance-steps .step-success .step-circle::after {
	content: "\2713";
	display: block;
	font-size: 1.1rem;
}

@media (max-width: 767.98px) {
	.ceremony-attendance-flow {
		padding: .8rem;
	}

	.ceremony-guideline-text {
		font-size: .9rem;
	}

	.ceremony-inside-page .ceremony-attendance-steps {
		justify-content: flex-start;
		overflow-x: auto;
	}

	.ceremony-inside-page .ceremony-attendance-steps .step {
		width: 8.5rem;
		min-width: 8.5rem;
		flex: 0 0 8.5rem;
	}
}

.nonattendance-heading {
	display: flex;
	align-items: flex-start;
	gap: .9rem;
	max-width: 56rem;
	margin: 0 auto 1rem;
}

.nonattendance-heading-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 3rem;
	height: 3rem;
	border-radius: .9rem;
	background: #f1e5f6;
	color: var(--ceremony-purple);
	font-size: 1.15rem;
}

.nonattendance-eyebrow {
	display: block;
	margin-bottom: .12rem;
	color: var(--ceremony-gold-dark);
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .08em;
}

.nonattendance-heading h2 {
	margin: 0;
	color: var(--ceremony-purple-dark);
	font-size: clamp(1.1rem, 2vw, 1.4rem);
	font-weight: 700;
	line-height: 1.4;
}

.nonattendance-heading p {
	margin: .25rem 0 0;
	color: var(--ceremony-muted);
	font-size: .88rem;
}

.ceremony-inside-page .nonattendance-steps {
	height: auto;
	min-height: 7.5rem;
	margin: 0 auto 1.25rem !important;
	padding: 1rem .75rem .85rem;
	overflow: visible;
	border: 1px solid #e8deeb;
	border-radius: 1rem;
	background: rgba(255, 255, 255, .82);
}

.ceremony-inside-page .nonattendance-steps .step-content {
	width: 10rem;
	min-width: 10rem;
	max-width: 10rem;
	padding-top: 0;
}

.ceremony-inside-page .nonattendance-steps .step-circle {
	width: 2.35rem;
	height: 2.35rem;
	border-color: #cbbfd0;
	color: #7c6f82;
}

.ceremony-inside-page .nonattendance-steps .step-active .step-circle {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple);
	color: #fff;
}

.ceremony-inside-page .nonattendance-steps .step-active .step-circle::before {
	color: var(--ceremony-purple);
}

.ceremony-inside-page .nonattendance-steps .step-active .step-text {
	color: var(--ceremony-purple-dark);
}

.ceremony-inside-page .nonattendance-steps .step-success .step-circle {
	border-color: #27845a;
	color: #27845a;
}

.ceremony-inside-page .nonattendance-steps .step-success .step-circle::before,
.ceremony-inside-page .nonattendance-steps .step-success .step-text {
	color: #27845a;
}

.ceremony-inside-page .nonattendance-steps .step-text {
	max-width: 9rem;
	margin-top: .45rem;
	color: #8a7f8f;
	font-size: .8rem;
	font-weight: 600;
	line-height: 1.35;
	word-break: normal;
}

.ceremony-inside-page .nonattendance-steps .step-disabled {
	cursor: not-allowed;
	opacity: .55;
}

.ceremony-inside-page .nonattendance-steps .step-disabled .step-circle {
	border-style: dashed;
	background: #f5f2f6;
}

.nonattendance-form {
	padding: clamp(1rem, 2.5vw, 1.5rem);
	border: 1px solid #e5d9e9;
	border-radius: 1rem;
	background: #fff;
	box-shadow: 0 10px 28px rgba(50, 25, 62, .07);
}

.nonattendance-form-heading {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-bottom: 1.1rem;
	padding-bottom: .9rem;
	border-bottom: 1px solid #eee5f0;
}

.nonattendance-form-heading > span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 2.55rem;
	height: 2.55rem;
	border-radius: .75rem;
	background: #f3eaf7;
	color: var(--ceremony-purple);
}

.nonattendance-form-heading h3 {
	margin: 0;
	color: var(--ceremony-purple-dark);
	font-size: 1.02rem;
	font-weight: 700;
}

.nonattendance-form-heading p {
	margin: .12rem 0 0;
	color: var(--ceremony-muted);
	font-size: .8rem;
}

/* Diploma collection appointment slots */
.nonattendance-form .row > .col-md-12 > h3.text-center {
	margin: .15rem 0 .35rem;
	color: var(--ceremony-purple-dark);
	font-size: clamp(1rem, 1.8vw, 1.18rem);
	font-weight: 700;
}

.nonattendance-form .booking-slot {
	width: 9.4rem !important;
	min-height: 6rem;
	margin: .45rem !important;
	padding: .75rem .45rem !important;
	border: 1px solid transparent;
	border-radius: .55rem;
	box-shadow: none;
	color: #092b37;
	font-family: inherit;
	font-size: .92rem !important;
	font-weight: 700;
	line-height: 1.42;
	text-align: center;
	transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.nonattendance-form .booking-slot-available {
	background: #16bedc;
}

.nonattendance-form .booking-slot-available:hover,
.nonattendance-form .booking-slot-available:focus {
	background: #0baeca;
	box-shadow: 0 8px 18px rgba(8, 159, 190, .25);
	color: #061f28;
	transform: translateY(-2px);
}

.nonattendance-form .booking-slot-selected {
	border-color: #14865b;
	background: #eaf8f0;
	color: #146a48;
}

.nonattendance-form .booking-slot-full {
	border-color: #efc6ca;
	background: #fff1f2;
	color: #a3323d;
	opacity: .78;
}

.nonattendance-form .booking-slot-legend {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .45rem;
	margin: 1rem .45rem;
	color: var(--ceremony-muted) !important;
	font-size: .8rem !important;
}

.nonattendance-form .booking-slot-legend .btn {
	width: 1.6rem;
	height: .8rem;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 999px;
	pointer-events: none;
}

.nonattendance-form .booking-current-status-divider {
	margin: 1rem 0 0;
	border-top: 1px dashed #cfc4d2;
	opacity: 1;
}

.nonattendance-form .booking-current-status {
	min-height: 3.5rem;
	margin: 0;
	padding: 1rem .45rem 0;
}

.nonattendance-form .booking-current-status > span {
	display: block;
	font-size: 1.05rem !important;
}

/* Refined appointment palette: calm, accessible and consistent with the
   ceremony dashboard instead of high-saturation Bootstrap colors. */
.nonattendance-form {
	border-color: #e7e2ef;
	background: #fff;
	box-shadow: 0 16px 38px rgba(46, 24, 66, .06);
}

.nonattendance-form-heading > span {
	background: #f1edff;
	color: #6043a5;
}

.nonattendance-form .booking-slot {
	position: relative;
	overflow: hidden;
	border: 1px solid transparent;
	box-shadow: 0 4px 12px rgba(38, 56, 112, .06);
	color: #26345c;
	font-weight: 650;
}

.nonattendance-form .booking-slot-available {
	border-color: #b9d4f2;
	background: linear-gradient(145deg, #eef6ff, #e5f0ff);
	color: #24436e;
}

.nonattendance-form .booking-slot-available::after {
	content: "";
	position: absolute;
	top: -.8rem;
	right: -.8rem;
	width: 2.6rem;
	height: 2.6rem;
	border-radius: 50%;
	background: rgba(106, 151, 222, .12);
}

.nonattendance-form .booking-slot-available:hover,
.nonattendance-form .booking-slot-available:focus-visible {
	border-color: #6b8fd5;
	background: linear-gradient(145deg, #e3efff, #d8e8ff);
	box-shadow: 0 8px 20px rgba(63, 105, 180, .18);
	color: #1d3860;
	outline: 3px solid rgba(93, 122, 196, .2);
	outline-offset: 2px;
}

.nonattendance-form .booking-slot-selected {
	border: 2px solid #7654c7;
	background: linear-gradient(145deg, #f2edff, #e9e1ff);
	box-shadow: 0 8px 20px rgba(108, 76, 177, .14);
	color: #4c328d;
}

.nonattendance-form .booking-slot-full {
	border-color: #dfe2e8;
	background: #f5f6f8;
	box-shadow: none;
	color: #7d8491;
	opacity: .9;
}

.nonattendance-form .booking-slot-legend {
	color: #6f7180 !important;
}

.nonattendance-form .booking-slot-legend .btn-info {
	background: #9fc3ec;
}

.nonattendance-form .booking-slot-legend .btn-success {
	background: #7654c7;
}

.nonattendance-form .booking-slot-legend .btn-danger {
	background: #aeb5c0;
}

.nonattendance-form .booking-current-status-divider {
	border-top-color: #ddd9e5;
}

.nonattendance-form .booking-current-status p[style] {
	color: #2f7a61 !important;
	font-size: .9rem !important;
}

.nonattendance-form .booking-current-status > span[style] {
	color: #b5475b !important;
	font-size: 1rem !important;
}

.booking-confirmation {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: .8rem 1rem;
	max-width: 50rem;
	margin: .5rem auto 0;
	padding: 1.15rem 1.25rem;
	border: 1px solid #cce8d9;
	border-radius: .9rem;
	background: linear-gradient(135deg, #f3fcf7, #f8fbf9);
	box-shadow: 0 8px 22px rgba(35, 112, 74, .08);
}

.booking-confirmation-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.7rem;
	height: 2.7rem;
	border-radius: 50%;
	background: #dcf4e5;
	color: #168154;
	font-size: 1.35rem;
}

.booking-confirmation-content { min-width: 0; }

.booking-confirmation-label {
	margin: 0 0 .15rem;
	color: #168154;
	font-size: .75rem;
	font-weight: 800;
	letter-spacing: .03em;
}

.booking-confirmation h3 {
	margin: 0;
	color: #176b46;
	font-size: clamp(.95rem, 1.8vw, 1.15rem);
	font-weight: 700;
	line-height: 1.5;
}

.booking-confirmation-print {
	grid-column: 2;
	justify-self: start;
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	padding: .62rem 1rem;
	border-radius: .55rem;
	background: #168154;
	box-shadow: 0 5px 12px rgba(22, 129, 84, .2);
	color: #fff !important;
	font-size: .84rem;
	font-weight: 700;
	text-decoration: none;
	transition: background .18s ease, transform .18s ease;
}

.booking-confirmation-print:hover,
.booking-confirmation-print:focus-visible {
	background: #10633f;
	color: #fff !important;
	transform: translateY(-1px);
	text-decoration: none;
}

@media (max-width: 575.98px) {
	.booking-confirmation {
		padding: 1rem;
	}

	.booking-confirmation-print {
		grid-column: 1 / -1;
		justify-self: stretch;
		justify-content: center;
	}
}

.nonattendance-select {
	font-weight: 500;
}

.nonattendance-selection-hint {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin-top: .75rem;
	padding: .7rem .8rem;
	border-radius: .7rem;
	background: #f7f3f8;
	color: var(--ceremony-muted);
	font-size: .8rem;
}

.nonattendance-selection-hint i {
	color: var(--ceremony-gold);
}

.nonattendance-option-panel {
	margin-top: 1rem;
	padding: 1rem;
	border: 1px solid #e8deeb;
	border-radius: .85rem;
	background: #fcfafc;
}

.ceremony-inside-page .nonattendance-option-panel .form-control,
.ceremony-inside-page .nonattendance-option-panel .form-select {
	min-height: 2.65rem;
	border-radius: .65rem;
}

.nonattendance-option-panel .row + .row {
	margin-top: .4rem !important;
}

.nonattendance-option-panel h4 {
	margin: 0 0 .75rem;
	color: var(--ceremony-purple-dark);
	font-size: .95rem;
	font-weight: 700;
}

.nonattendance-option-panel h4 i {
	margin-right: .35rem;
	color: var(--ceremony-gold);
}

.nonattendance-panel-help {
	margin: 0 0 .85rem;
	color: var(--ceremony-muted);
	font-size: .8rem;
}

.foreign-address-field {
	padding: .9rem;
	border: 1px solid #e2d6e7;
	border-radius: .75rem;
	background: #fff;
}

.foreign-address-field textarea {
	min-height: 7rem;
	resize: vertical;
}

.foreign-address-field small {
	display: block;
	margin-top: .45rem;
	color: var(--ceremony-muted);
	font-size: .75rem;
}

.foreign-address-field small i {
	margin-right: .3rem;
	color: var(--ceremony-gold);
}

.nonattendance-option-panel .input-group-text {
	border-color: #ded5e3;
	background: #f3eaf7;
	color: var(--ceremony-purple);
}

.nonattendance-option-panel input[readonly] {
	background: #f7f4f8;
	color: #4c3c52;
}

.nonattendance-field-label {
	color: #4c3c52;
	font-size: .82rem;
	font-weight: 600;
	text-align: right;
}

.nonattendance-note {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	margin-top: 1rem;
	padding: .85rem;
	border: 1px solid #ead89d;
	border-radius: .8rem;
	background: #fffbeb;
	color: #66551c;
}

.nonattendance-note-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 1.8rem;
	height: 1.8rem;
	color: #9a6700;
}

.nonattendance-note strong {
	display: block;
	margin-bottom: .2rem;
	font-size: .86rem;
}

.nonattendance-note p {
	margin: 0;
	font-size: .78rem;
	line-height: 1.5;
}

.nonattendance-note p + p {
	margin-top: .35rem;
}

.nonattendance-form-actions {
	display: flex;
	justify-content: flex-end;
	margin-top: 1.25rem;
	padding-top: 1rem;
	border-top: 1px solid #eee5f0;
}

.payment-method-card {
	display: flex;
	flex-direction: column;
	gap: .7rem;
	height: 100%;
	padding: 1rem;
	border: 1px solid #e5d9e9;
	border-radius: .85rem;
	background: #fcfafc;
}

.payment-method-card > strong {
	color: var(--ceremony-purple-dark);
	font-size: .92rem;
}

.payment-method-card > strong i {
	margin-right: .35rem;
	color: var(--ceremony-gold);
}

.payment-method-card iframe {
	width: 100%;
	min-height: 20rem;
	border: 0;
	border-radius: .65rem;
	background: #fff;
}

.payment-method-card.is-paid {
	align-items: center;
	justify-content: center;
	min-height: 12rem;
	border-color: #b8dfca;
	background: #f0faf4;
	color: #157347;
	text-align: center;
}

.payment-method-card.is-paid > i {
	font-size: 2rem;
}

.payment-method-card.is-paid > strong {
	color: #157347;
}

.payment-method-link {
	display: flex;
	align-items: center;
	gap: .55rem;
	padding: .75rem;
	border: 1px solid #e1d4e6;
	border-radius: .7rem;
	background: #fff;
	color: var(--ceremony-purple-dark);
	font-size: .82rem;
	font-weight: 600;
	text-decoration: none;
}

.payment-method-link:hover,
.payment-method-link:focus {
	border-color: var(--ceremony-purple);
	background: #f7f0fa;
	color: var(--ceremony-purple-dark);
}

.payment-method-link i {
	width: 1.2rem;
	color: var(--ceremony-purple);
	text-align: center;
}

.payment-nonrefundable {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	margin-top: .75rem;
	padding: .7rem .8rem;
	border-radius: .7rem;
	background: #fff1f1;
	color: #b42318;
	font-size: .78rem;
	font-weight: 600;
}

.btn-ceremony-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .45rem;
	min-height: 2.8rem;
	padding: .65rem 1.15rem;
	border: 0;
	border-radius: .75rem;
	background: linear-gradient(135deg, var(--ceremony-purple-dark), var(--ceremony-purple));
	box-shadow: 0 8px 18px rgba(75, 23, 111, .18);
	color: #fff;
	font-weight: 600;
}

.btn-ceremony-primary:hover,
.btn-ceremony-primary:focus {
	background: var(--ceremony-purple-dark);
	color: #fff;
	transform: translateY(-1px);
}

@media (max-width: 767.98px) {
	.nonattendance-flow {
		margin-top: 1rem;
		padding: .8rem;
		border-radius: 1rem;
	}

	.nonattendance-heading {
		gap: .7rem;
	}

	.nonattendance-heading-icon {
		width: 2.5rem;
		height: 2.5rem;
		border-radius: .7rem;
	}

	.nonattendance-heading p {
		font-size: .8rem;
	}

	.ceremony-inside-page .nonattendance-steps {
		min-height: 7rem;
		padding: .85rem .5rem 1rem;
		overflow-x: auto;
		overflow-y: hidden;
		scrollbar-width: thin;
	}

	.ceremony-inside-page .nonattendance-steps .step:first-child {
		margin-left: 0;
	}

	.ceremony-inside-page .nonattendance-steps .step:last-child {
		margin-right: 0;
	}

	.ceremony-inside-page .nonattendance-steps .step-content {
		width: 8.5rem;
		min-width: 8.5rem;
		max-width: 8.5rem;
	}

	.nonattendance-field-label {
		margin-top: .35rem;
		text-align: left;
	}

	.nonattendance-form-actions .btn {
		width: 100%;
	}
}

.ceremony-inside-page .ceremony-workspace {
	padding: clamp(.25rem, 1vw, .75rem);
}

.ceremony-inside-page .form-control,
.ceremony-inside-page .form-select {
	min-height: 3rem;
	border-color: #ded5e3;
	border-radius: .75rem;
}

.ceremony-inside-page .form-control:focus,
.ceremony-inside-page .form-select:focus {
	border-color: #8a58aa;
	box-shadow: 0 0 0 .25rem rgba(75, 23, 111, .11);
}

.ceremony-inside-page .modal-content {
	overflow: hidden;
	border: 0;
	border-radius: 1.1rem;
	box-shadow: 0 20px 60px rgba(35, 16, 44, .22);
}

.ceremony-inside-page .modal-header {
	background: linear-gradient(120deg, var(--ceremony-purple-dark), var(--ceremony-purple));
	border: 0;
	color: #fff;
}

.ceremony-inside-page .modal-header .btn-close {
	filter: invert(1) grayscale(1);
}

.ceremony-inside-page .btn-purple-minimal,
.ceremony-inside-page .recivenotrecive {
	min-height: 3.3rem;
	padding: .8rem 1rem;
	border: 1px solid #d8c5e2;
	border-radius: .85rem;
	background: #f7f0fa;
	color: var(--ceremony-purple-dark);
	white-space: normal;
}

.ceremony-inside-page .steps {
	overflow-x: auto;
	padding: .5rem .2rem 1rem;
	scrollbar-width: thin;
}

.ceremony-inside-page .step {
	min-width: 8.5rem;
}

/* Modern progress stepper */
.ceremony-inside-page .nonattendance-steps {
	position: relative;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	gap: 0;
	min-height: 7.5rem;
	padding: 1rem clamp(.35rem, 4vw, 2rem) .8rem;
	border: 1px solid #eadff0;
	border-radius: 1rem;
	background: rgba(255, 255, 255, .9);
	box-shadow: 0 8px 24px rgba(63, 27, 79, .04);
}

.ceremony-inside-page .nonattendance-steps .step {
	position: relative;
	display: flex;
	justify-content: center;
	min-width: 0;
	width: min(11rem, 32%);
	flex: 1 1 0;
}

/* Connectors span the gap between step columns, not the circle itself. */
.ceremony-inside-page .nonattendance-steps .step:not(:first-child)::before {
	content: "";
	position: absolute;
	z-index: 0;
	top: 1.225rem;
	left: -50%;
	width: 100%;
	height: 2px;
	background: #d9d4dc;
}

.ceremony-inside-page .nonattendance-steps .step.step-active::before,
.ceremony-inside-page .nonattendance-steps .step.step-success::before {
	background: var(--ceremony-purple);
}

.ceremony-inside-page .nonattendance-steps .step-content {
	position: relative;
	display: flex;
	align-items: center;
	width: 100%;
	min-width: 0;
	max-width: none;
	padding: 0;
}

.ceremony-inside-page .nonattendance-steps .step-content > a,
.ceremony-inside-page .nonattendance-steps .step-content > .step-circle {
	position: relative;
	z-index: 1;
	flex: 0 0 auto;
}

.ceremony-inside-page .nonattendance-steps .step-circle {
	width: 2.45rem;
	height: 2.45rem;
	border: 2px solid #d9d4dc;
	background: #fff;
	box-shadow: 0 2px 4px rgba(55, 24, 68, .04);
	font-size: 1rem;
	font-weight: 700;
}

.ceremony-inside-page .nonattendance-steps .step-circle::before {
	display: none;
}

.ceremony-inside-page .nonattendance-steps .step:first-child .step-circle::before {
	display: none;
}

.ceremony-inside-page .nonattendance-steps .step-active .step-circle,
.ceremony-inside-page .nonattendance-steps .step-active .step-circle::before {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple);
	color: #fff;
}

.ceremony-inside-page .nonattendance-steps .step-active .step-circle::before {
	background: var(--ceremony-purple);
}

.ceremony-inside-page .nonattendance-steps .step-success .step-circle {
	border-color: #27845a;
	background: #fff;
	color: #27845a;
}

/* Completed steps use the familiar international checkmark treatment. */
.ceremony-inside-page .nonattendance-steps .step-success .step-circle {
	font-size: 0;
}

.ceremony-inside-page .nonattendance-steps .step-success .step-circle::after {
	content: "\2713";
	display: block;
	font-size: 1.1rem;
	font-weight: 800;
	line-height: 1;
}

.ceremony-inside-page .nonattendance-steps .step-success .step-text {
	color: #27845a;
}

.ceremony-inside-page .nonattendance-steps .step-text {
	max-width: 10rem;
	margin-top: .55rem;
	color: #9b949f;
	font-size: .78rem;
	font-weight: 700;
	line-height: 1.35;
	text-align: center;
}

.ceremony-inside-page .nonattendance-steps .step-active .step-text {
	color: var(--ceremony-purple-dark);
}

.ceremony-inside-page .nonattendance-steps .step-disabled .step-circle {
	border-style: dashed;
	background: #faf9fb;
}

@media (max-width: 767.98px) {
	.ceremony-inside-page .nonattendance-steps {
		justify-content: flex-start;
		padding-right: .8rem;
		padding-left: .8rem;
		overflow-x: auto;
	}

	.ceremony-inside-page .nonattendance-steps .step {
		width: 8.5rem;
		min-width: 8.5rem;
		flex: 0 0 8.5rem;
	}

}

@media (min-width: 992px) {
	.ceremony-inside-page .ceremony-dashboard aside {
		position: relative;
	}

	.ceremony-inside-page .ceremony-status-card {
		position: sticky;
		top: 1rem;
	}
}

@media (max-width: 767.98px) {
	.ceremony-inside-nav .container-fluid {
		flex-wrap: wrap;
	}

	.ceremony-nav-user {
		width: 100%;
		padding-bottom: .65rem;
		border-bottom: 1px solid #eee7f1;
	}

	.ceremony-nav-actions {
		width: 100%;
		flex-wrap: wrap;
	}

	.ceremony-nav-staff,
	.ceremony-nav-staff .ceremony-staff-button {
		width: 100%;
	}

	.ceremony-language-switch {
		flex: 1 1 100%;
	}

	.ceremony-language-option {
		flex: 1 1 50%;
		justify-content: center;
	}

	.ceremony-nav-button {
		flex: 1 1 calc(50% - .3rem);
		justify-content: center;
	}

	.ceremony-welcome-card {
		grid-template-columns: auto minmax(0, 1fr);
	}

	.ceremony-student-badge {
		grid-column: 1 / -1;
		justify-self: start;
	}

	.ceremony-dashboard-shell {
		padding: .75rem;
	}
}

@media (max-width: 420px) {
	.ceremony-language-name {
		display: inline;
	}

	.ceremony-nav-button span {
		font-size: .78rem;
	}

	.ceremony-welcome-icon {
		width: 2.8rem;
		height: 2.8rem;
	}

	.ceremony-welcome-content p {
		font-size: .78rem;
	}
}

@media (min-width: 1200px) {
	.ceremony-page aside {
		position: sticky;
		top: 1rem;
	}
}

@media (max-width: 991.98px) {
	.ceremony-content {
		padding-top: 1rem;
	}

	.ceremony-page aside {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 1rem;
	}

	.ceremony-page aside #count_student,
	.ceremony-page aside .ceremony-login-stack {
		grid-column: 1 / -1;
	}

	.ceremony-page aside .ceremony-info-card {
		margin-bottom: 0 !important;
	}
}

@media (max-width: 575.98px) {
	body.ceremony-page {
		font-size: .95rem;
	}

	.ceremony-header .container,
	.ceremony-container {
		padding-right: max(.85rem, env(safe-area-inset-right));
		padding-left: max(.85rem, env(safe-area-inset-left));
	}

	.ceremony-logo {
		width: 58px;
	}

	.ceremony-eyebrow {
		font-size: .6rem;
		letter-spacing: .1em;
	}

	.ceremony-site-title {
		font-size: 1rem;
	}

	.ceremony-site-subtitle {
		font-size: .7rem;
	}

	.ceremony-page aside {
		display: block;
	}

	.ceremony-page aside .ceremony-info-card {
		margin-bottom: 1rem !important;
	}

	.ceremony-login-card,
	.ceremony-info-card,
	.ceremony-hero-panel,
	.ceremony-main-content .card {
		border-radius: 1rem;
	}

	.ceremony-announcements {
		border-radius: 1rem;
	}

	.ceremony-announcement-header {
		padding: 1rem;
	}

	.ceremony-announcement-heading {
		align-items: flex-start;
		gap: .75rem;
	}

	.ceremony-announcement-heading-icon {
		width: 2.6rem;
		height: 2.6rem;
	}

	.ceremony-announcement-heading p {
		font-size: .8rem;
	}

	.ceremony-announcement-list {
		padding: .3rem;
	}

	.ceremony-announcement-link {
		grid-template-columns: 2.65rem minmax(0, 1fr) auto;
		gap: .75rem;
		min-height: 4.8rem;
		padding: .8rem .55rem;
	}

	.ceremony-announcement-icon {
		width: 2.65rem;
		height: 2.65rem;
		border-radius: .75rem;
	}

	.ceremony-announcement-name {
		font-size: .94rem;
	}

	.ceremony-news-date {
		width: 100%;
	}

	.hvr-grow:hover,
	.hvr-grow:focus,
	.hvr-grow:active {
		transform: none;
	}
}

/* Attendance confirmed (yStep5) */
.confirmed-banner {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin: .5rem 0 1.5rem;
	padding: 1.1rem 1.25rem;
	border: 1px solid #cfe8da;
	border-radius: 1rem;
	background: #f2faf5;
}

.confirmed-banner-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 3rem;
	height: 3rem;
	border-radius: 50%;
	background: #27845a;
	color: #fff;
	font-size: 1.5rem;
}

.confirmed-banner h3 {
	margin: 0;
	color: #1f6b49;
	font-size: 1.12rem;
	font-weight: 700;
}

.confirmed-banner p {
	margin: .2rem 0 0;
	color: #4b6b5a;
	font-size: .9rem;
	line-height: 1.55;
}

.confirmed-card {
	height: 100%;
	padding: 1.25rem;
	border: 1px solid #e8e2ee;
	border-radius: 1rem;
	background: #fff;
}

.confirmed-facts {
	display: grid;
	grid-template-columns: 1fr;
	gap: .75rem;
	margin-bottom: 1.1rem;
}

@media (min-width: 768px) {
	.confirmed-facts {
		grid-template-columns: 2fr 1fr;
	}
}

.confirmed-fact {
	display: flex;
	flex-direction: column;
	gap: .25rem;
	padding: .8rem 1rem;
	border-left: 4px solid var(--ceremony-gold);
	border-radius: .6rem;
	background: #faf8f3;
}

.confirmed-fact-label {
	color: var(--ceremony-muted);
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .02em;
}

.confirmed-fact-label i {
	margin-right: .25rem;
	color: var(--ceremony-gold);
}

.confirmed-fact-value {
	color: var(--ceremony-purple-dark);
	font-size: .98rem;
	font-weight: 700;
	line-height: 1.5;
}

.confirmed-figure {
	position: relative;
	display: block;
	overflow: hidden;
	border: 1px solid #eee8f2;
	border-radius: .8rem;
	text-decoration: none;
}

.confirmed-figure img {
	display: block;
	width: 100%;
	height: auto;
}

.confirmed-figure-hint {
	position: absolute;
	right: .6rem;
	bottom: .6rem;
	padding: .3rem .7rem;
	border-radius: 999px;
	background: rgba(40, 28, 47, .72);
	color: #fff;
	font-size: .75rem;
	opacity: 0;
	transition: opacity .2s ease;
}

.confirmed-figure:hover .confirmed-figure-hint,
.confirmed-figure:focus-visible .confirmed-figure-hint {
	opacity: 1;
}

@media (hover: none) {
	.confirmed-figure-hint {
		opacity: 1;
	}
}

.confirmed-survey {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	text-align: center;
}

.confirmed-survey .nonattendance-form-heading {
	text-align: left;
}

.confirmed-survey-text {
	margin: 0 0 1rem;
	color: #4e4755;
	font-size: .9rem;
	line-height: 1.6;
}

.confirmed-survey .btn-ceremony-primary,
.confirmed-survey .btn-ceremony-primary:hover,
.confirmed-survey .btn-ceremony-primary:focus {
	color: #fff;
}

.confirmed-survey-qr {
	width: 100%;
	max-width: 180px;
	margin: 0 auto 1rem;
	padding: .6rem;
	border: 1px solid #eee8f2;
	border-radius: .8rem;
	background: #fff;
}

/* Special conditions (yStep3) */
.special-info-choices {
	display: grid;
	grid-template-columns: 1fr;
	gap: .75rem;
}

@media (min-width: 768px) {
	.special-info-choices {
		grid-template-columns: 1fr 1fr;
	}
}

.ceremony-page a.special-info-choice {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: .8rem;
	padding: 1rem 2.75rem 1rem 1rem;
	border: 1.5px solid #e4dcea;
	border-radius: .9rem;
	background: #fff;
	color: var(--ceremony-ink);
	text-decoration: none;
	transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}

.ceremony-page a.special-info-choice:hover,
.ceremony-page a.special-info-choice:focus-visible {
	border-color: #b99ccc;
	box-shadow: 0 6px 18px rgba(50, 25, 62, .08);
	color: var(--ceremony-ink);
}

.ceremony-page a.special-info-choice.is-selected {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple-soft);
}

.special-info-choice-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 2.4rem;
	height: 2.4rem;
	border-radius: .7rem;
	background: #f3eef6;
	color: var(--ceremony-purple);
	font-size: 1.1rem;
}

.special-info-choice.is-selected .special-info-choice-icon {
	background: var(--ceremony-purple);
	color: #fff;
}

.special-info-choice-text {
	display: flex;
	flex-direction: column;
	gap: .15rem;
	min-width: 0;
}

.special-info-choice-text strong {
	color: var(--ceremony-purple-dark);
	font-size: .98rem;
	font-weight: 700;
}

.special-info-choice-text small {
	color: var(--ceremony-muted);
	font-size: .8rem;
	line-height: 1.45;
}

.special-info-choice-mark {
	position: absolute;
	top: 1rem;
	right: 1rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.35rem;
	height: 1.35rem;
	border: 1.5px solid #d6cbdd;
	border-radius: 50%;
	color: transparent;
	font-size: .7rem;
}

.special-info-choice.is-selected .special-info-choice-mark {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple);
	color: #fff;
}

.special-info-form {
	margin-top: 1.5rem;
	padding-top: 1.25rem;
	border-top: 1px solid #eee8f2;
}

.special-info-hint {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	margin: 0 0 1.25rem;
	padding: .75rem 1rem;
	border-radius: .7rem;
	background: #fffbeb;
	color: #7a5c12 !important;
	font-size: .88rem;
	font-weight: 600;
}

.special-info-hint i {
	margin-top: .2rem;
}

.special-info-section {
	margin: 0 0 1.25rem;
	padding: 0 0 1.25rem;
	border: 0;
	border-bottom: 1px dashed #e8e0ee;
}

.special-info-section legend {
	display: flex;
	align-items: center;
	gap: .55rem;
	float: none;
	width: auto;
	margin: 0 0 .5rem;
	padding: 0;
	color: var(--ceremony-purple-dark);
	font-size: 1rem;
	font-weight: 700;
}

.special-info-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.7rem;
	height: 1.7rem;
	padding: 0 .4rem;
	border-radius: .5rem;
	background: #f7efdb;
	color: #8a6a1f;
	font-size: .8rem;
	font-weight: 700;
}

.ceremony-attendance-content p.special-info-help {
	margin: -.2rem 0 .7rem;
	color: var(--ceremony-muted);
	font-size: .82rem;
}

.special-info-section textarea.form-control {
	border-color: #e2dae8;
	border-radius: .7rem;
	font-size: .92rem;
}

.special-info-section textarea.form-control::placeholder {
	color: #a59cab;
}

.special-info-section textarea.form-control:focus {
	border-color: #9d74b8;
	box-shadow: 0 0 0 .2rem rgba(75, 23, 111, .12);
}

.special-info-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin-bottom: .8rem;
}

.special-info-chip {
	position: relative;
	margin: 0;
	cursor: pointer;
}

.special-info-chip input {
	position: absolute;
	opacity: 0;
}

.special-info-chip span {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	padding: .45rem .85rem;
	border: 1.5px solid #e2dae8;
	border-radius: 999px;
	background: #fff;
	color: #4e4755;
	font-size: .88rem;
	transition: border-color .2s ease, background-color .2s ease, color .2s ease;
}

.special-info-chip span::before {
	content: "\f00c";
	display: inline-block;
	width: 0;
	overflow: hidden;
	font-family: "Font Awesome 7 Free", "Font Awesome 6 Free";
	font-weight: 900;
	font-size: .75rem;
	transition: width .15s ease;
}

.special-info-chip:hover span {
	border-color: #b99ccc;
}

.special-info-chip input:checked + span {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple-soft);
	color: var(--ceremony-purple-dark);
	font-weight: 600;
}

.special-info-chip input:checked + span::before {
	width: .8rem;
}

.special-info-chip input:focus-visible + span,
.special-info-option input:focus-visible + span {
	outline: 2px solid var(--ceremony-purple);
	outline-offset: 2px;
}

.special-info-options {
	display: grid;
	grid-template-columns: 1fr;
	gap: .6rem;
}

@media (min-width: 768px) {
	.special-info-options {
		grid-template-columns: 1fr 1fr;
	}
}

.special-info-option {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	margin: 0;
	padding: .8rem 1rem;
	border: 1.5px solid #e2dae8;
	border-radius: .8rem;
	background: #fff;
	cursor: pointer;
	transition: border-color .2s ease, background-color .2s ease;
}

.special-info-option:hover {
	border-color: #b99ccc;
}

.special-info-option:has(input:checked) {
	border-color: var(--ceremony-purple);
	background: var(--ceremony-purple-soft);
}

.special-info-option input {
	flex: 0 0 auto;
	width: 1.1rem;
	height: 1.1rem;
	margin-top: .2rem;
	accent-color: var(--ceremony-purple);
}

.special-info-option span {
	display: flex;
	flex-direction: column;
	gap: .1rem;
}

.special-info-option strong {
	color: var(--ceremony-purple-dark);
	font-size: .92rem;
}

.special-info-option small {
	color: var(--ceremony-muted);
	font-size: .8rem;
}

.special-info-clear {
	margin-top: .6rem;
	padding: .2rem 0;
	border: 0;
	background: none;
	color: var(--ceremony-muted);
	font-size: .82rem;
	text-decoration: underline;
	cursor: pointer;
}

.special-info-clear[hidden],
.special-info-cleared[hidden] {
	display: none !important;
}

.ceremony-attendance-content p.special-info-cleared {
	margin: .6rem 0 0;
	color: #7a5c12;
	font-size: .82rem;
	font-weight: 600;
}

.special-info-clear:hover {
	color: var(--ceremony-purple);
}

.special-info-actions {
	display: flex;
	justify-content: center;
	padding-top: .25rem;
}

.special-info-actions .btn-ceremony-primary,
.special-info-actions .btn-ceremony-primary:hover,
.special-info-actions .btn-ceremony-primary:focus {
	color: #fff;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		transition-duration: .01ms !important;
	}
}

/* ---------- ปุ่มดาวน์โหลดหนังสือแจ้งกำหนดการ (detail.php → printnotice.php) ---------- */
.ceremony-notice-btn {
	display: flex;
	align-items: center;
	gap: .8rem;
	width: 100%;
	padding: .8rem .9rem;
	color: #fff !important;
	text-decoration: none;
	background: linear-gradient(120deg, #14804a, #1f9d5c 60%, #34b36f);
	border-radius: .9rem;
	box-shadow: 0 8px 20px rgba(20, 128, 74, .25), inset 0 1px 0 rgba(255, 255, 255, .18);
	transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

.ceremony-notice-btn:hover,
.ceremony-notice-btn:focus-visible {
	color: #fff !important;
	transform: translateY(-2px);
	box-shadow: 0 12px 26px rgba(20, 128, 74, .32), inset 0 1px 0 rgba(255, 255, 255, .18);
	filter: brightness(1.04);
}

.ceremony-notice-btn:focus-visible {
	outline: 3px solid rgba(31, 157, 92, .35);
	outline-offset: 2px;
}

.ceremony-notice-btn__icon {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 2.6rem;
	height: 2.6rem;
	font-size: 1.25rem;
	background: rgba(255, 255, 255, .18);
	border-radius: .7rem;
}

/* หัวข้อสั้น + บรรทัดรอง: ภาษาไทยยาวตัดเป็น 2 บรรทัดอย่างเป็นระเบียบ ไม่ตกบรรทัดกลางข้อความ */
.ceremony-notice-btn__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	min-width: 0;
	line-height: 1.3;
	text-align: left;
}

.ceremony-notice-btn__text strong {
	font-size: 1rem;
	font-weight: 600;
}

.ceremony-notice-btn__text small {
	font-size: .8rem;
	opacity: .9;
}

.ceremony-notice-btn__go {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	font-size: .85rem;
	background: rgba(255, 255, 255, .16);
	border-radius: 50%;
}

@media (prefers-reduced-motion: reduce) {
	.ceremony-notice-btn {
		transition: none;
	}

	.ceremony-notice-btn:hover {
		transform: none;
	}
}

/* =====================================================================
   ระบบหน้าผู้ดูแล (admin/*) — ใช้ร่วมกับ admin/_header.php
   หน้าแอดมินใส่ <body class="adm-page"> แล้วใช้คลาส adm-* ด้านล่าง
   ===================================================================== */
body.adm-page {
	min-height: 100vh;
	color: var(--ceremony-ink);
	background: linear-gradient(180deg, #f4eef9 0, #faf8fc 320px, #fbfaf7 100%);
}

.adm-hero {
	position: relative;
	overflow: hidden;
	color: #fff;
	background: linear-gradient(120deg, var(--ceremony-purple-dark), var(--ceremony-purple) 60%, #7a3aa8);
}

.adm-hero::after {
	content: "";
	position: absolute;
	top: -8rem;
	right: -5rem;
	width: 22rem;
	height: 22rem;
	pointer-events: none;
	background: radial-gradient(circle, rgba(244, 223, 156, .18), transparent 70%);
}

.adm-hero > .container-fluid {
	position: relative;
	z-index: 1;
}

.adm-hero__logo {
	width: 3.25rem;
	height: 3.25rem;
	object-fit: contain;
	padding: .3rem;
	background: rgba(255, 255, 255, .95);
	border-radius: .9rem;
}

.adm-hero__eyebrow {
	color: var(--ceremony-gold-light);
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.adm-hero h1 {
	margin: .15rem 0 0;
	color: #fff;
	font-size: clamp(1.15rem, 2.4vw, 1.55rem);
	font-weight: 600;
}

.adm-hero p {
	margin: .2rem 0 0;
	color: rgba(255, 255, 255, .8);
	font-size: .92rem;
}

.adm-hero__date {
	color: var(--ceremony-gold-light) !important;
}

/* แถบเมนู */
.adm-nav {
	position: sticky;
	top: 0;
	z-index: 1020;
	background: rgba(255, 255, 255, .96);
	border-bottom: 3px solid var(--ceremony-gold);
	box-shadow: 0 6px 18px rgba(50, 25, 62, .06);
	backdrop-filter: blur(6px);
}

.adm-nav .navbar-brand {
	color: var(--ceremony-purple-dark);
	font-weight: 700;
}

.adm-nav .nav-link {
	color: var(--ceremony-ink);
	font-size: .92rem;
	border-radius: .6rem;
}

.adm-nav .nav-link:hover,
.adm-nav .nav-link.show,
.adm-nav .nav-link.active {
	color: var(--ceremony-purple);
	background: var(--ceremony-purple-soft);
}

.adm-nav .dropdown-menu {
	padding: .4rem;
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: .8rem;
	box-shadow: 0 14px 34px rgba(50, 25, 62, .14);
}

.adm-nav .dropdown-item {
	font-size: .9rem;
	white-space: normal;
	border-radius: .5rem;
}

.adm-nav .dropdown-item:hover,
.adm-nav .dropdown-item:focus {
	color: var(--ceremony-purple-dark);
	background: var(--ceremony-purple-soft);
}

@media (min-width: 992px) {
	.adm-nav .dropdown-menu {
		min-width: 22rem;
	}
}

/* การ์ด */
.adm-card {
	background: #fff;
	border: 1px solid rgba(75, 23, 111, .1);
	border-radius: 1rem;
	box-shadow: 0 10px 28px rgba(50, 25, 62, .06);
}

.adm-card__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: .75rem;
	padding: 1rem 1.15rem .8rem;
	border-bottom: 1px solid rgba(75, 23, 111, .08);
}

.adm-card__title {
	display: flex;
	align-items: center;
	gap: .6rem;
	margin: 0;
	color: var(--ceremony-purple-dark);
	font-size: 1rem;
	font-weight: 600;
}

.adm-card__body {
	padding: 1rem 1.15rem;
}

.adm-icon {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	color: var(--ceremony-purple);
	background: var(--ceremony-purple-soft);
	border-radius: .6rem;
}

.adm-icon--green { color: #157347; background: #e6f4ec; }
.adm-icon--amber { color: #9a4a00; background: #fff1e0; }
.adm-icon--red { color: #b42318; background: #fdecec; }
.adm-icon--blue { color: #1d4ed8; background: #e8efff; }

/* ตัวเลขสรุป */
.adm-stat {
	display: flex;
	align-items: center;
	gap: .85rem;
	height: 100%;
	padding: .95rem 1.1rem;
}

.adm-stat__value {
	color: var(--ceremony-purple-dark);
	font-size: 1.6rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	line-height: 1;
}

.adm-stat__label {
	color: var(--ceremony-muted);
	font-size: .82rem;
}

/* ตาราง */
.adm-table {
	margin: 0;
	font-size: .88rem;
}

.adm-table > thead th {
	padding: .65rem .75rem;
	color: #4a3477;
	font-size: .8rem;
	font-weight: 500;
	white-space: nowrap;
	background: #f3effa;
	border-bottom: 1px solid #ddd3ee;
}

.adm-table > tbody td,
.adm-table > tbody th {
	padding: .6rem .75rem;
	border-color: rgba(75, 23, 111, .07);
}

.adm-table > tbody tr:hover > * {
	background: #faf8fd;
}

.adm-table > tfoot td {
	font-weight: 600;
	background: #f8f6fb;
}

.adm-num {
	font-variant-numeric: tabular-nums;
	text-align: end;
	white-space: nowrap;
}

.adm-id {
	display: inline-block;
	padding: .05rem .45rem;
	color: var(--ceremony-purple-dark);
	font-size: .82rem;
	font-variant-numeric: tabular-nums;
	font-weight: 500;
	background: var(--ceremony-purple-soft);
	border-radius: .4rem;
}

.adm-muted {
	color: var(--ceremony-muted);
}

.adm-email {
	color: var(--ceremony-muted);
	overflow-wrap: anywhere;
}

.adm-search {
	max-width: 16rem;
}

.adm-empty {
	padding: 2.5rem 1rem;
	color: var(--ceremony-muted);
	text-align: center;
}

.adm-empty > .fa-solid {
	display: block;
	margin-bottom: .6rem;
	color: #c9b8e2;
	font-size: 2.2rem;
}

.adm-btn-pill {
	border-radius: 999px;
}

.adm-page .form-control:focus,
.adm-page .form-select:focus {
	border-color: rgba(75, 23, 111, .45);
	box-shadow: 0 0 0 .2rem rgba(75, 23, 111, .12);
}

/* เมนูย่อยแนวตั้งในหน้า (เช่น รอบการแจ้งเตือน) */
.adm-menu {
	margin: 0;
	padding: .5rem;
	list-style: none;
}

.adm-menu a {
	display: flex;
	align-items: center;
	gap: .65rem;
	padding: .65rem .75rem;
	color: var(--ceremony-ink);
	font-size: .92rem;
	text-decoration: none;
	border-radius: .7rem;
	transition: background-color .15s ease;
}

.adm-menu a:hover {
	background: #faf6fd;
}

.adm-menu a.active {
	color: #fff;
	background: linear-gradient(120deg, var(--ceremony-purple-dark), var(--ceremony-purple));
}

.adm-menu__num {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 1.7rem;
	height: 1.7rem;
	color: var(--ceremony-purple);
	font-size: .8rem;
	font-weight: 600;
	background: var(--ceremony-purple-soft);
	border-radius: 50%;
}

.adm-menu a.active .adm-menu__num {
	color: var(--ceremony-purple-dark);
	background: var(--ceremony-gold-light);
}

@media (min-width: 992px) {
	.adm-sticky {
		position: sticky;
		top: 5rem;
	}
}

@media print {
	.adm-nav,
	.adm-noprint {
		display: none !important;
	}

	body.adm-page {
		background: #fff;
	}
}

/* หน้าผู้ดูแล: ใช้ไอคอนน้อย ๆ — ซ่อนไอคอนตกแต่ง (หัวการ์ด เมนู ปุ่ม ตัวเลขสรุป ตาราง)
   คงไว้เฉพาะ: ข้อความตอนไม่มีข้อมูล (.adm-empty) และแถบประเภทการสแกน (.sc-type ใน scanreport.php)
   ปุ่มทุกปุ่มมีข้อความกำกับอยู่แล้ว ไม่มีปุ่มที่เป็นไอคอนอย่างเดียว */
body.adm-page .adm-icon {
	display: none;
}

body.adm-page :is(.fa-solid, .fa-regular, .fa-brands):not(.adm-empty *):not(.sc-type *) {
	display: none !important;
}

body.adm-page .adm-stat {
	padding-left: 1.25rem;
	border-left: 4px solid var(--ceremony-purple-soft);
}
