/* ----------------------------------------------------------------
   Tyler's Hope Board Portal — Phase 3 styles
   Brand palette:
     #2b5ea7  primary blue
     #1e4d8c  dark blue
     #e8942e  orange
     #f5c842  gold
     #7dc8c4  teal
   Portal is a full-page takeover (no theme chrome) so we own the reset.
   ---------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
	--th-blue:        #2b5ea7;
	--th-blue-dark:   #1e4d8c;
	--th-orange:      #e8942e;
	--th-gold:        #f5c842;
	--th-teal:        #7dc8c4;
	--th-ink:         #1a2540;
	--th-ink-soft:    #4a5578;
	--th-line:        #e5e9f2;
	--th-bg:          #f8fafc;
	--th-card:        #ffffff;
	--th-error:       #b3261e;
	--th-error-bg:    #fdecea;
	--th-info-bg:     #e7f0fb;
	--th-radius:      10px;
	--th-shadow:      0 6px 24px rgba(30, 77, 140, 0.10);
	--th-font:        'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
	                  "Helvetica Neue", Arial, sans-serif;
}

html, body {
	margin: 0;
	padding: 0;
	min-height: 100vh;
	background: var(--th-bg);
	color: #1e293b;
	font: 16px/1.5 var(--th-font);
	-webkit-font-smoothing: antialiased;
}

a {
	color: var(--th-blue);
	text-decoration: underline;
	text-underline-offset: 2px;
}

a:hover { color: var(--th-blue-dark); }

a:focus-visible,
button:focus-visible,
input:focus-visible {
	outline: 3px solid var(--th-gold);
	outline-offset: 2px;
	border-radius: 4px;
}

/* Skip link (WCAG) */
.th-skiplink {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--th-ink);
	color: #fff;
	padding: 10px 16px;
	text-decoration: none;
	z-index: 1000;
}
.th-skiplink:focus {
	left: 16px;
	top: 16px;
}

.th-portal {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

.th-main {
	flex: 1 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 48px 16px;
}

.th-footer {
	flex-shrink: 0;
	text-align: center;
	padding: 16px;
	color: var(--th-ink-soft);
	background: #fff;
	border-top: 1px solid var(--th-line);
}

/* ----------------------------- Login card ---------------------------- */

.th-login { width: 100%; max-width: 440px; }

.th-login__card {
	background: var(--th-card);
	border-radius: var(--th-radius);
	box-shadow: var(--th-shadow);
	padding: 40px 36px 32px;
	border: 1px solid var(--th-line);
}

.th-login__brand {
	display: flex;
	justify-content: center;
	margin-bottom: 20px;
}

.th-login__logo {
	width: 56px;
	height: 56px;
	border-radius: 14px;
	background: linear-gradient(135deg, var(--th-blue), var(--th-blue-dark));
	color: #fff;
	font-weight: 700;
	font-size: 20px;
	letter-spacing: 0.5px;
	display: grid;
	place-items: center;
	box-shadow: 0 6px 14px rgba(30, 77, 140, 0.25);
}

.th-login__title {
	text-align: center;
	margin: 0 0 6px;
	font-size: 22px;
	color: var(--th-ink);
}

.th-login__subtitle {
	text-align: center;
	margin: 0 0 24px;
	color: var(--th-ink-soft);
	font-size: 14px;
}

/* Override core's wp_login_form() markup with minimal rules */
#th-loginform p { margin: 0 0 14px; }
#th-loginform label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	margin-bottom: 6px;
	color: var(--th-ink);
}
#th-loginform input[type="text"],
#th-loginform input[type="password"],
#th-loginform input[type="email"] {
	width: 100%;
	padding: 10px 12px;
	font-size: 15px;
	border: 1px solid var(--th-line);
	border-radius: 8px;
	background: #fbfcff;
	color: var(--th-ink);
	font-family: inherit;
}
#th-loginform input[type="text"]:focus,
#th-loginform input[type="password"]:focus,
#th-loginform input[type="email"]:focus {
	border-color: var(--th-blue);
	background: #fff;
}

#th-loginform .login-remember {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	color: var(--th-ink-soft);
}
#th-loginform .login-remember label {
	display: inline;
	font-weight: 400;
	margin: 0;
}

#th-loginform .login-submit { margin-top: 20px; }
#th-loginform input[type="submit"] {
	width: 100%;
	background: var(--th-blue);
	color: #fff;
	border: 0;
	padding: 12px 16px;
	font-size: 15px;
	font-weight: 600;
	border-radius: 8px;
	cursor: pointer;
	font-family: inherit;
	transition: background 120ms ease;
}
#th-loginform input[type="submit"]:hover { background: var(--th-blue-dark); }

.th-login__lost {
	text-align: center;
	margin: 20px 0 0;
	font-size: 14px;
}
.th-login__help {
	text-align: center;
	margin: 24px 0 0;
	padding-top: 20px;
	border-top: 1px solid var(--th-line);
	font-size: 13px;
	color: var(--th-ink-soft);
}

/* ------------------------------ Alerts ------------------------------- */

.th-alert {
	padding: 10px 14px;
	border-radius: 8px;
	margin-bottom: 16px;
	font-size: 14px;
}
.th-alert--error { background: var(--th-error-bg); color: var(--th-error); border-left: 4px solid var(--th-error); }
.th-alert--info  { background: var(--th-info-bg);  color: var(--th-blue-dark); border-left: 4px solid var(--th-blue); }

/* ----------------------- Placeholder portal page --------------------- */

.th-placeholder { width: 100%; max-width: 560px; }

.th-placeholder__card {
	background: var(--th-card);
	border-radius: var(--th-radius);
	box-shadow: var(--th-shadow);
	padding: 40px;
	border: 1px solid var(--th-line);
}

.th-placeholder__brand {
	width: 44px; height: 44px;
	border-radius: 10px;
	background: linear-gradient(135deg, var(--th-blue), var(--th-blue-dark));
	color: #fff;
	font-weight: 700;
	font-size: 15px;
	display: grid;
	place-items: center;
	margin-bottom: 20px;
}

.th-placeholder__title {
	margin: 0 0 16px;
	font-size: 26px;
	color: var(--th-ink);
}

.th-placeholder__status {
	background: #fff6e0;
	border-left: 4px solid var(--th-orange);
	padding: 12px 14px;
	border-radius: 6px;
	margin: 0 0 24px;
	font-size: 14px;
	line-height: 1.5;
}

.th-placeholder__checklist {
	list-style: none;
	padding: 0;
	margin: 0 0 28px;
}
.th-placeholder__checklist li {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 0;
	border-bottom: 1px solid var(--th-line);
	font-size: 14px;
	color: var(--th-ink-soft);
}
.th-placeholder__checklist li:last-child { border-bottom: 0; }
.th-check {
	display: inline-grid;
	place-items: center;
	width: 20px; height: 20px;
	border-radius: 50%;
	background: var(--th-teal);
	color: #fff;
	font-size: 12px;
	flex-shrink: 0;
}

.th-placeholder__actions { margin: 0; }

/* ------------------------------- Buttons ----------------------------- */

.th-btn {
	display: inline-block;
	padding: 10px 18px;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	background: var(--th-blue);
	color: #fff !important;
	border: 1px solid var(--th-blue);
	transition: background 120ms ease;
}
.th-btn:hover, .btn-primary:hover { background: var(--th-blue-dark); color: #fff !important; }
.btn-primary {
	display: inline-block;
	padding: 10px 18px;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	background: var(--th-blue);
	color: #fff !important;
	border: 1px solid var(--th-blue);
	transition: background 120ms ease;
}
.th-btn--ghost {
	background: transparent;
	color: var(--th-blue) !important;
	border-color: var(--th-line);
}
.th-btn--ghost:hover {
	background: var(--th-bg);
	color: var(--th-blue-dark) !important;
}

/* ------------------------ Generic message card ---------------------- */

.th-message { width: 100%; max-width: 520px; }
.th-message__card {
	background: var(--th-card);
	border-radius: var(--th-radius);
	box-shadow: var(--th-shadow);
	padding: 40px;
	border: 1px solid var(--th-line);
	text-align: center;
}
.th-message__title { margin: 0 0 16px; font-size: 22px; color: var(--th-ink); }
.th-message__card code {
	background: var(--th-bg);
	padding: 2px 6px;
	border-radius: 4px;
	font-size: 0.9em;
}
.th-message__actions {
	margin: 24px 0 0;
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
}

/* --------------------------- Mobile tweaks (centered pages) --------- */

@media (max-width: 520px) {
	.th-main { padding: 24px 12px; }
	.th-login__card,
	.th-placeholder__card,
	.th-message__card { padding: 28px 22px; }
}

/* ====================================================================
   DASHBOARD LAYOUT  (Phase 3)
   ====================================================================
   The dashboard uses a fixed sidebar + scrollable main area.
   Login / no-access pages keep the centered .th-main above.
   ==================================================================== */

/* ----------------------------------------------------------------
   SIDEBAR
   ---------------------------------------------------------------- */
.th-sidebar {
	position: fixed;
	left: 0; top: 0; bottom: 0;
	width: 260px;
	background: #fff;
	border-right: 1px solid #e2e8f0;
	padding: 1.5rem 1rem;
	z-index: 10;
	display: flex;
	flex-direction: column;
	overflow-y: auto;
}

.sidebar-logo {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: 0 .5rem;
	text-decoration: none;
}
.sidebar-logo-mark {
	width: 36px; height: 36px;
	background: var(--th-blue);
	border-radius: .5rem;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	font-weight: 700;
	font-size: .875rem;
	flex-shrink: 0;
	transition: box-shadow .15s ease;
}
.sidebar-logo span {
	font-weight: 700;
	font-size: 1.1rem;
	color: var(--th-blue);
	transition: opacity .15s ease;
}
.sidebar-logo:hover span {
	opacity: .7;
}
.sidebar-logo:hover .sidebar-logo-mark {
	box-shadow: 0 0 0 2px rgba(37, 99, 235, .25);
}

.sidebar-nav-item {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .75rem 1rem;
	border-radius: .5rem;
	font-size: .875rem;
	font-weight: 500;
	color: #64748b;
	text-decoration: none;
	margin-bottom: .25rem;
	transition: background .12s, color .12s;
}
.sidebar-nav-item:hover {
	background: #f1f5f9;
	color: #334155;
	text-decoration: none;
}
.sidebar-nav-item.active {
	background: var(--th-blue);
	color: #fff;
}
.sidebar-nav-item svg { width: 20px; height: 20px; flex-shrink: 0; }

.sidebar-nav-badge {
	margin-left: auto;
	background: #ef4444;
	color: #fff;
	font-size: .7rem;
	font-weight: 600;
	padding: .125rem .5rem;
	border-radius: 9999px;
}

.sidebar-nav-section {
	font-size: .7rem;
	font-weight: 600;
	color: #94a3b8;
	text-transform: uppercase;
	letter-spacing: .05em;
	padding: 1.5rem 1rem .5rem;
}

.sidebar-committee-tag {
	display: block;
	padding: .4rem 1rem;
	font-size: .8rem;
	color: #64748b;
	line-height: 1.4;
}

.sidebar-badge-new {
	margin-left: auto;
	background: #dbeafe;
	color: #1e40af;
	font-size: .65rem;
	font-weight: 600;
	padding: .125rem .375rem;
	border-radius: .25rem;
}

.sidebar-user {
	margin-top: auto;
	padding-top: 1rem;
}
.sidebar-user-box {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .75rem;
	background: #f8fafc;
	border-radius: .75rem;
}
.sidebar-avatar {
	width: 36px; height: 36px;
	border-radius: 50%;
	background: var(--th-blue);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: .75rem;
	flex-shrink: 0;
}
.sidebar-user-name { font-size: .8125rem; font-weight: 600; color: #334155; }
.sidebar-user-role { font-size: .7rem; color: #94a3b8; }

/* ----------------------------------------------------------------
   DASHBOARD MAIN WRAP
   ---------------------------------------------------------------- */
.th-dashboard {
	margin-left: 260px;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}
.th-dashboard-content {
	padding: 2rem;
	flex: 1;
}
.th-dashboard-footer {
	text-align: center;
	padding: 16px 2rem;
	color: var(--th-ink-soft);
	background: #fff;
	border-top: 1px solid var(--th-line);
	font-size: .8125rem;
}

/* ----------------------------------------------------------------
   WELCOME BANNER
   ---------------------------------------------------------------- */
.welcome-banner {
	background: linear-gradient(135deg, #2b5ea7 0%, #1e4d8c 100%);
	border-radius: 1rem;
	padding: 2rem;
	color: #fff;
	margin-bottom: 1.5rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.welcome-left { display: flex; align-items: center; gap: 1.5rem; }
.welcome-photo {
	width: 80px; height: 80px;
	border-radius: 50%;
	border: 3px solid rgba(255,255,255,.3);
	background: rgba(255,255,255,.2);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.5rem;
	font-weight: 700;
	flex-shrink: 0;
}
.welcome-greeting { font-size: .875rem; opacity: .8; }
.welcome-name { font-size: 1.75rem; font-weight: 700; margin-top: .25rem; }
.committee-pills { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: .5rem; }
.committee-pill {
	background: rgba(255,255,255,.18);
	padding: .2rem .6rem;
	border-radius: 9999px;
	font-size: .7rem;
	font-weight: 500;
}
.committee-pill.chair { background: rgba(245,200,66,.3); }
.welcome-right { text-align: right; flex-shrink: 0; }
.welcome-date { font-size: .875rem; opacity: .8; }
.next-meeting {
	margin-top: .75rem;
	background: rgba(255,255,255,.15);
	border-radius: .5rem;
	padding: .75rem 1rem;
}
.next-meeting-label {
	font-size: .7rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	opacity: .7;
}
.next-meeting-value { font-size: .875rem; font-weight: 600; margin-top: .25rem; }

/* ----------------------------------------------------------------
   ATTENTION BANNER
   ---------------------------------------------------------------- */
.attention-banner {
	background: #fef3c7;
	border: 1px solid #fde68a;
	border-radius: .75rem;
	padding: .75rem 1rem;
	margin-bottom: 1.5rem;
	display: flex;
	align-items: center;
	gap: .75rem;
	font-size: .85rem;
	color: #92400e;
}
.attention-banner strong { color: #78350f; }
.attention-banner svg { width: 20px; height: 20px; flex-shrink: 0; }
.attention-banner .ab-action {
	margin-left: auto;
	background: #92400e;
	color: #fff;
	padding: .4rem .8rem;
	border-radius: .4rem;
	font-size: .75rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.attention-banner .ab-action:hover { background: #78350f; }

/* ----------------------------------------------------------------
   REPORT ROW (report card + quick actions)
   ---------------------------------------------------------------- */
.report-row {
	display: grid;
	grid-template-columns: 1fr 2fr;
	gap: 1.5rem;
	margin-bottom: 1.5rem;
}
.report-card {
	background: #fff;
	border-radius: 1rem;
	padding: 1.5rem;
	border: 1px solid #e2e8f0;
}
.report-title { font-size: 1rem; font-weight: 600; color: #334155; margin-bottom: 1rem; }
.report-subtitle { font-size: .75rem; color: #94a3b8; margin-top: -.5rem; margin-bottom: 1rem; }

.circular-progress { display: flex; align-items: center; gap: 1.5rem; }
.circle-wrap { position: relative; width: 120px; height: 120px; flex-shrink: 0; }
.circle-bg   { fill: none; stroke: #f1f5f9; stroke-width: 8; }
.circle-fill  { fill: none; stroke: #10b981; stroke-width: 8; stroke-linecap: round; transform: rotate(-90deg); transform-origin: center; }
.circle-text  { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.circle-percent { font-size: 1.75rem; font-weight: 700; color: #10b981; }
.circle-label   { font-size: .7rem; color: #94a3b8; font-weight: 500; }

.stat-list { flex: 1; }
.stat-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: .75rem 0;
	border-bottom: 1px solid #f1f5f9;
}
.stat-item:last-child { border-bottom: none; }
.stat-item-left { display: flex; align-items: center; gap: .75rem; }
.stat-dot { width: 10px; height: 10px; border-radius: 50%; }
.stat-item-label { font-size: .875rem; color: #475569; }
.stat-item-value { font-size: 1.125rem; font-weight: 700; }

.quick-actions { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
.quick-action {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: 1rem;
	border-radius: .75rem;
	border: 1px solid #e2e8f0;
	cursor: pointer;
	transition: border-color .15s, background .15s;
	text-decoration: none;
	color: inherit;
	background: #fff;
}
.quick-action:hover { border-color: var(--th-blue); background: #f8fafc; }
.quick-action-icon {
	width: 40px; height: 40px;
	border-radius: .5rem;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.quick-action-text { font-size: .8rem; font-weight: 600; color: #334155; }
.quick-action-desc { font-size: .7rem; color: #94a3b8; margin-top: .125rem; }

/* ----------------------------------------------------------------
   CONTENT GRID + CARDS
   ---------------------------------------------------------------- */
.content-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.5rem;
	margin-bottom: 1.5rem;
}
.dash-card {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	overflow: hidden;
}
.dash-card-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1rem 1.5rem;
	border-bottom: 1px solid #f1f5f9;
}
.dash-card-title { font-size: .875rem; font-weight: 600; color: #334155; }
.dash-card-link {
	font-size: .75rem;
	color: var(--th-blue);
	text-decoration: none;
	font-weight: 500;
}
.dash-card-link:hover { text-decoration: underline; }
.dash-card-body { padding: 0; }
.dash-card-empty {
	padding: 2rem 1.5rem;
	text-align: center;
	font-size: .8125rem;
	color: #94a3b8;
}

/* Task items */
.task-item {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .875rem 1.5rem;
	border-bottom: 1px solid #f8fafc;
}
.task-item:last-child { border-bottom: none; }
.task-check {
	width: 20px; height: 20px;
	border-radius: 50%;
	border: 2px solid #d1d5db;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: .65rem;
	color: transparent;
}
.task-check.overdue { border-color: #ef4444; }
.task-check.done { border-color: #10b981; background: #10b981; color: #fff; }
.task-info { flex: 1; min-width: 0; }
.task-name { font-size: .8125rem; font-weight: 500; color: #334155; }
.task-meta { font-size: .7rem; color: #94a3b8; margin-top: .125rem; }
.task-due {
	font-size: .7rem;
	font-weight: 500;
	padding: .125rem .5rem;
	border-radius: 9999px;
	white-space: nowrap;
}
.task-due.overdue { background: #fee2e2; color: #991b1b; }
.task-due.soon    { background: #fef3c7; color: #92400e; }
.task-due.ok      { background: #ecfdf5; color: #065f46; }

/* Announcement items */
.announce-item { padding: .875rem 1.5rem; border-bottom: 1px solid #f8fafc; }
.announce-item:last-child { border-bottom: none; }
.announce-priority {
	display: inline-block;
	font-size: .65rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .05em;
	padding: .125rem .5rem;
	border-radius: .25rem;
	margin-bottom: .375rem;
}
.announce-priority.urgent    { background: #fee2e2; color: #991b1b; }
.announce-priority.important { background: #fef3c7; color: #92400e; }
.announce-priority.normal    { background: #e0f2fe; color: #075985; }
.announce-title { font-size: .8125rem; font-weight: 600; color: #334155; }
.announce-snippet { font-size: .75rem; color: #64748b; margin-top: .25rem; }
.announce-time { font-size: .7rem; color: #94a3b8; margin-top: .375rem; }

/* Event items */
.event-item {
	display: flex;
	gap: 1rem;
	padding: .875rem 1.5rem;
	border-bottom: 1px solid #f8fafc;
}
.event-item:last-child { border-bottom: none; }
.event-date-box {
	width: 48px; height: 52px;
	border-radius: .5rem;
	background: #eff6ff;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.event-month { font-size: .6rem; font-weight: 700; text-transform: uppercase; color: var(--th-blue); }
.event-day   { font-size: 1.25rem; font-weight: 700; color: #1e3a5f; line-height: 1; }
.event-info  { flex: 1; }
.event-name  { font-size: .8125rem; font-weight: 600; color: #334155; }
.event-location { font-size: .7rem; color: #94a3b8; margin-top: .125rem; }

/* Document items (reuses task-item layout) */
.doc-type-badge {
	width: 36px; height: 36px;
	border-radius: .5rem;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	font-size: .7rem;
	font-weight: 700;
}
.doc-type-badge.pdf { background: #fee2e2; color: #dc2626; }
.doc-type-badge.doc { background: #dbeafe; color: #2563eb; }
.doc-type-badge.xls { background: #d1fae5; color: #059669; }
.doc-type-badge.img { background: #fef3c7; color: #d97706; }

/* ----------------------------------------------------------------
   DOCUMENT LIST (Documents page)
   ---------------------------------------------------------------- */
.doc-list-card {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	overflow: hidden;
}
.doc-row {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 1rem 1.5rem;
	border-bottom: 1px solid #f1f5f9;
	transition: background .1s;
}
.doc-row:last-child { border-bottom: none; }
.doc-row:hover { background: #f8fafc; }
.doc-details { flex: 1; min-width: 0; }
.doc-title { font-size: .875rem; font-weight: 600; color: #334155; }
.doc-desc  { font-size: .75rem; color: #94a3b8; margin-top: .125rem; }
.vis-tag {
	font-size: .7rem;
	font-weight: 600;
	padding: .15rem .5rem;
	border-radius: .25rem;
	white-space: nowrap;
	flex-shrink: 0;
}
.vis-tag.public    { background: #d1fae5; color: #065f46; }
.vis-tag.board     { background: #dbeafe; color: #1e40af; }
.vis-tag.committee { background: #fef3c7; color: #92400e; }
.doc-dl {
	font-size: .75rem;
	font-weight: 600;
	color: var(--th-blue);
	cursor: pointer;
	white-space: nowrap;
	padding: .35rem .75rem;
	border: 1px solid #e2e8f0;
	border-radius: .375rem;
	background: #fff;
	text-decoration: none;
	font-family: inherit;
	flex-shrink: 0;
	transition: border-color .12s, background .12s;
}
.doc-dl:hover { border-color: var(--th-blue); background: #eff6ff; color: var(--th-blue); }
.doc-list-empty {
	padding: 3rem 1.5rem;
	text-align: center;
	font-size: .875rem;
	color: #94a3b8;
}

/* Help bar */
.help-bar {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	padding: 1rem 1.5rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.help-left { display: flex; align-items: center; gap: .875rem; }
.help-icon {
	width: 40px; height: 40px;
	border-radius: .5rem;
	background: #eff6ff;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.help-text { font-size: .8125rem; color: #64748b; line-height: 1.5; }
.help-text strong { color: #334155; display: block; margin-bottom: .125rem; }
.help-actions { display: flex; gap: .5rem; flex-shrink: 0; }
.help-btn {
	background: var(--th-blue);
	color: #fff;
	border: none;
	padding: .5rem 1rem;
	border-radius: .5rem;
	font-size: .8125rem;
	font-weight: 500;
	cursor: pointer;
	text-decoration: none;
	font-family: inherit;
	display: inline-block;
}
.help-btn:hover { background: var(--th-blue-dark); color: #fff; }
.help-btn.secondary {
	background: #fff;
	color: var(--th-blue);
	border: 1px solid var(--th-blue);
}
.help-btn.secondary:hover { background: #eff6ff; }

/* ----------------------------------------------------------------
   PAGE HEADER
   ---------------------------------------------------------------- */
.page-header { margin-bottom: 1.5rem; }
.page-header h1 { font-size: 1.5rem; font-weight: 700; color: #1e293b; margin: 0; }
.page-header p  { font-size: .875rem; color: #64748b; margin-top: .25rem; }

/* ----------------------------------------------------------------
   STATS ROW (reusable stat boxes)
   ---------------------------------------------------------------- */
.stats-row {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1rem;
	margin-bottom: 1.25rem;
}
.stat-box {
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: .75rem;
	padding: 1.25rem;
	text-align: center;
}
.stat-box__label {
	font-size: .7rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: #94a3b8;
	font-weight: 600;
	margin-bottom: .375rem;
}
.stat-box__value { font-size: 1.75rem; font-weight: 700; color: #1e293b; }

/* ----------------------------------------------------------------
   FILTER BAR
   ---------------------------------------------------------------- */
.filter-bar {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin-bottom: 1.25rem;
	flex-wrap: wrap;
}
.filter-btn {
	padding: .4rem .875rem;
	border-radius: 9999px;
	font-size: .8rem;
	font-weight: 500;
	cursor: pointer;
	border: 1px solid #e2e8f0;
	background: #fff;
	color: #64748b;
	font-family: inherit;
	transition: border-color .12s, color .12s, background .12s;
}
.filter-btn:hover { border-color: var(--th-blue); color: var(--th-blue); }
.filter-btn.active { background: var(--th-blue); color: #fff; border-color: var(--th-blue); }

/* ----------------------------------------------------------------
   TASK TABLE (My Tasks page)
   ---------------------------------------------------------------- */
.task-table-card {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	overflow: hidden;
}
.task-table {
	width: 100%;
	border-collapse: collapse;
	font-size: .8125rem;
}
.task-table thead tr { border-bottom: 2px solid #e2e8f0; }
.task-table th {
	padding: .75rem 1.5rem;
	text-align: left;
	font-size: .7rem;
	font-weight: 600;
	color: #94a3b8;
	text-transform: uppercase;
	letter-spacing: .05em;
}
.task-table th:first-child { width: 30px; }
.task-table th:nth-child(2),
.task-table th:nth-child(3) { padding-left: .5rem; padding-right: .5rem; }
.task-table td { padding: .75rem 1.5rem; vertical-align: middle; }
.task-table td:nth-child(2),
.task-table td:nth-child(3) { padding-left: .5rem; padding-right: .5rem; }
.task-table tbody tr { border-bottom: 1px solid #f1f5f9; }
.task-table tbody tr:last-child { border-bottom: none; }
.task-table tbody tr.completed-row { opacity: .55; }
.task-table .task-title { font-weight: 600; color: #334155; }
.task-table .task-title.done { text-decoration: line-through; }
.task-table .task-desc { font-size: .7rem; color: #94a3b8; margin-top: .125rem; }
.task-table .due-date { font-weight: 600; }
.task-table .due-sub { font-size: .65rem; margin-top: .125rem; }
.task-table .status-pill {
	display: inline-block;
	font-size: .7rem;
	font-weight: 500;
	padding: .125rem .5rem;
	border-radius: 9999px;
	white-space: nowrap;
}
.status-pill.overdue    { background: #fee2e2; color: #991b1b; }
.status-pill.pending    { background: #fef3c7; color: #92400e; }
.status-pill.in-progress { background: #dbeafe; color: #1e40af; }
.status-pill.completed  { background: #ecfdf5; color: #065f46; }

.task-table-empty {
	padding: 3rem 1.5rem;
	text-align: center;
	font-size: .875rem;
	color: #94a3b8;
}

/* Toggle checkbox button (replaces static .task-check in task table) */
.task-check-btn {
	width: 22px; height: 22px;
	border-radius: 50%;
	border: 2px solid #d1d5db;
	background: #fff;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: .65rem;
	color: transparent;
	padding: 0;
	transition: all .15s ease;
}
.task-check-btn:hover {
	border-color: #10b981;
	background: #ecfdf5;
}
.task-check-btn.overdue { border-color: #ef4444; }
.task-check-btn.overdue:hover { border-color: #10b981; background: #ecfdf5; }
.task-check-btn.done {
	border-color: #10b981;
	background: #10b981;
	color: #fff;
}
.task-check-btn.done:hover {
	background: #059669;
	border-color: #059669;
}
.th-toggle-form { display: inline; }

/* Completed tasks section (collapsible) */
.task-completed-section {
	margin-top: 1rem;
}
.task-completed-toggle {
	display: flex;
	align-items: center;
	gap: .5rem;
	background: none;
	border: none;
	cursor: pointer;
	font-size: .8125rem;
	font-weight: 600;
	color: #64748b;
	padding: .5rem .75rem;
	border-radius: .5rem;
	transition: background .15s ease;
}
.task-completed-toggle:hover { background: #f1f5f9; }
.task-completed-chevron {
	transition: transform .2s ease;
	flex-shrink: 0;
}
.task-completed-list {
	margin-top: .5rem;
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	overflow: hidden;
}

/* ----------------------------------------------------------------
   ANNOUNCEMENTS LIST (Announcements page)
   ---------------------------------------------------------------- */
.ann-list-card {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	overflow: hidden;
}
.ann-row {
	padding: 1.25rem 1.5rem;
	border-bottom: 1px solid #f1f5f9;
	transition: background .1s;
}
.ann-row:last-child { border-bottom: none; }
.ann-row:hover { background: #f8fafc; }
.ann-row-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: .5rem;
	gap: .5rem;
}
.ann-badges {
	display: flex;
	align-items: center;
	gap: .375rem;
	flex-wrap: wrap;
}
.ann-pin {
	display: inline-flex;
	align-items: center;
	gap: .25rem;
	font-size: .65rem;
	font-weight: 600;
	color: #7c3aed;
	background: #ede9fe;
	padding: .125rem .5rem;
	border-radius: .25rem;
	text-transform: uppercase;
	letter-spacing: .03em;
}
.ann-pin svg { width: 12px; height: 12px; }
.ann-time {
	font-size: .7rem;
	color: #94a3b8;
	white-space: nowrap;
	flex-shrink: 0;
}
.ann-title {
	font-size: .9375rem;
	font-weight: 600;
	color: #1e293b;
	margin: 0 0 .375rem;
}
.ann-snippet {
	font-size: .8125rem;
	color: #64748b;
	line-height: 1.5;
	margin: 0 0 .5rem;
}
.ann-footer {
	display: flex;
	align-items: center;
	gap: 1rem;
}
.ann-author {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	font-size: .7rem;
	color: #94a3b8;
	font-weight: 500;
}
.ann-author svg { width: 14px; height: 14px; color: #cbd5e1; }
.ann-list-empty {
	padding: 3rem 1.5rem;
	text-align: center;
	font-size: .875rem;
	color: #94a3b8;
}

/* ----------------------------------------------------------------
   BOARD DIRECTORY — Member profile cards
   ---------------------------------------------------------------- */
.dir-search-bar {
	display: flex;
	align-items: center;
	gap: .75rem;
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: .75rem;
	padding: .625rem 1rem;
	margin-bottom: 1.5rem;
	transition: border-color .12s;
}
.dir-search-bar:focus-within { border-color: var(--th-blue); }
.dir-search-bar input {
	flex: 1;
	border: none;
	outline: none;
	font-size: .875rem;
	font-family: inherit;
	color: #1e293b;
	background: transparent;
}
.dir-search-bar input::placeholder { color: #94a3b8; }

/* Legacy class kept for admin roster table avatars */
.dir-avatar {
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--th-blue);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: .75rem;
	flex-shrink: 0;
}

/* Card grid — 3 columns on desktop */
.dir-cards-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.25rem;
}
@media (max-width: 960px) {
	.dir-cards-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.dir-cards-grid { grid-template-columns: 1fr; }
}

.dir-card {
	background: #fff;
	border-radius: var(--th-radius, .75rem);
	border: 1px solid #e2e8f0;
	padding: 1.5rem;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	transition: box-shadow .15s, transform .15s;
}
.dir-card:hover {
	box-shadow: 0 4px 20px rgba(0,0,0,.06);
	transform: translateY(-2px);
}

/* Photo */
.dir-card__photo-wrap {
	width: 90px;
	height: 90px;
	border-radius: 50%;
	overflow: hidden;
	margin-bottom: .75rem;
	background: #f0f0f0;
	flex-shrink: 0;
}
.dir-card__photo {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.dir-card__photo--initials {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.75rem;
	font-weight: 700;
	color: #fff;
	background: var(--th-blue);
}

/* Name */
.dir-card__name {
	font-size: 1rem;
	font-weight: 700;
	color: #1e293b;
	margin: 0 0 .2rem;
	display: flex;
	align-items: center;
	gap: .4rem;
	flex-wrap: wrap;
	justify-content: center;
}
.dir-card__admin-badge {
	font-size: .6rem;
	font-weight: 700;
	padding: .15rem .45rem;
	border-radius: 9999px;
	background: var(--th-blue-bg, #e8f0fe);
	color: var(--th-blue);
	text-transform: uppercase;
	letter-spacing: .03em;
}

/* Subtitle (title + company) */
.dir-card__subtitle {
	font-size: .8125rem;
	color: #64748b;
	margin: 0 0 .6rem;
	line-height: 1.4;
}

/* Committee badges */
.dir-card__committees {
	display: flex;
	flex-wrap: wrap;
	gap: .35rem;
	justify-content: center;
	margin-bottom: .6rem;
}
.dir-card__committee-badge {
	font-size: .7rem;
	font-weight: 600;
	padding: .2rem .55rem;
	border-radius: 9999px;
	background: #f1f5f9;
	color: #475569;
}
.dir-card__committee-role {
	font-weight: 400;
	color: #94a3b8;
}

/* Bio */
.dir-card__bio {
	font-size: .8rem;
	color: #64748b;
	line-height: 1.5;
	margin: .35rem 0 .6rem;
	text-align: left;
	width: 100%;
}

/* Contact links */
.dir-card__contact {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: .35rem;
	margin-top: auto;
	padding-top: .6rem;
	border-top: 1px solid #f1f5f9;
}
.dir-card__contact-link {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	font-size: .75rem;
	color: var(--th-blue);
	text-decoration: none;
	transition: color .12s;
	word-break: break-all;
}
.dir-card__contact-link:hover { color: #1e40af; text-decoration: underline; }
.dir-card__contact-link--linkedin { color: #0A66C2; }
.dir-card__contact-link--linkedin:hover { color: #004182; }

.dir-empty {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	padding: 3rem 1.5rem;
	text-align: center;
	font-size: .875rem;
	color: #94a3b8;
	grid-column: 1 / -1;
}

/* ====================================================================
   EVENTS PAGE  (Phase 8)
   ==================================================================== */

.evt-list {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.evt-card {
	display: flex;
	gap: 1.25rem;
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	padding: 1.5rem;
	transition: box-shadow .15s, border-color .15s;
}
.evt-card:hover { border-color: #cbd5e1; box-shadow: 0 4px 16px rgba(30, 77, 140, 0.06); }
.evt-card--past { opacity: .7; }
.evt-card--past:hover { opacity: .85; }

.evt-card-left { flex-shrink: 0; }

.evt-date-box {
	width: 60px;
	height: 68px;
	border-radius: .75rem;
	background: linear-gradient(135deg, #eff6ff, #dbeafe);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	border: 1px solid #bfdbfe;
}
.evt-date-box--past {
	background: linear-gradient(135deg, #f8fafc, #f1f5f9);
	border-color: #e2e8f0;
}
.evt-month {
	font-size: .65rem;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--th-blue);
	letter-spacing: .05em;
}
.evt-date-box--past .evt-month { color: #94a3b8; }
.evt-day {
	font-size: 1.5rem;
	font-weight: 700;
	color: #1e3a5f;
	line-height: 1;
}
.evt-date-box--past .evt-day { color: #64748b; }

.evt-card-body { flex: 1; min-width: 0; }

.evt-card-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: .75rem;
	margin-bottom: .5rem;
}
.evt-title {
	font-size: 1.0625rem;
	font-weight: 700;
	color: #1e293b;
	margin: 0;
}
.evt-badges {
	display: flex;
	align-items: center;
	gap: .375rem;
	flex-shrink: 0;
	flex-wrap: wrap;
}
.evt-location-badge {
	font-size: .65rem;
	font-weight: 600;
	padding: .15rem .5rem;
	border-radius: .25rem;
	text-transform: uppercase;
	letter-spacing: .03em;
}
.evt-location-badge.virtual  { background: #ede9fe; color: #7c3aed; }
.evt-location-badge.hybrid   { background: #dbeafe; color: #1e40af; }
.evt-location-badge.in-person { background: #d1fae5; color: #065f46; }

.evt-past-badge {
	font-size: .65rem;
	font-weight: 600;
	padding: .15rem .5rem;
	border-radius: .25rem;
	background: #f1f5f9;
	color: #64748b;
	text-transform: uppercase;
	letter-spacing: .03em;
}

.evt-meta {
	display: flex;
	flex-wrap: wrap;
	gap: .75rem;
	margin-bottom: .625rem;
}
.evt-meta-item {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	font-size: .8125rem;
	color: #64748b;
}
.evt-meta-item svg { width: 16px; height: 16px; flex-shrink: 0; color: #94a3b8; }

.evt-desc {
	font-size: .8125rem;
	color: #64748b;
	line-height: 1.5;
	margin: 0 0 .625rem;
}

.evt-virtual-link {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	font-size: .8125rem;
	font-weight: 600;
	color: #7c3aed;
	text-decoration: none;
	padding: .375rem .75rem;
	border-radius: .5rem;
	background: #f5f3ff;
	transition: background .12s;
	margin-bottom: .625rem;
}
.evt-virtual-link svg { width: 16px; height: 16px; }
.evt-virtual-link:hover { background: #ede9fe; color: #6d28d9; }

.evt-card-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-top: .75rem;
	border-top: 1px solid #f1f5f9;
}

.evt-attend-count {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	font-size: .8125rem;
	color: #64748b;
	font-weight: 500;
}
.evt-attend-count svg { width: 16px; height: 16px; color: #94a3b8; }

.evt-rsvp-buttons {
	display: flex;
	gap: .375rem;
}
.evt-rsvp-form { display: inline; }
.evt-rsvp-btn {
	display: inline-flex;
	align-items: center;
	gap: .25rem;
	padding: .375rem .75rem;
	border-radius: 9999px;
	font-size: .75rem;
	font-weight: 600;
	border: 1px solid #e2e8f0;
	background: #fff;
	color: #64748b;
	cursor: pointer;
	font-family: inherit;
	transition: background .12s, border-color .12s, color .12s;
}
.evt-rsvp-btn:hover { border-color: #cbd5e1; background: #f8fafc; }

.evt-rsvp-btn.active.attending  { background: #ecfdf5; color: #065f46; border-color: #a7f3d0; }
.evt-rsvp-btn.active.tentative  { background: #fef3c7; color: #92400e; border-color: #fde68a; }
.evt-rsvp-btn.active.declined   { background: #fef2f2; color: #991b1b; border-color: #fecaca; }

.evt-my-rsvp {
	font-size: .75rem;
	font-weight: 500;
	padding: .25rem .625rem;
	border-radius: 9999px;
}
.evt-my-rsvp--attending  { background: #ecfdf5; color: #065f46; }
.evt-my-rsvp--tentative  { background: #fef3c7; color: #92400e; }
.evt-my-rsvp--declined   { background: #f1f5f9; color: #64748b; }

.evt-empty {
	background: #fff;
	border-radius: 1rem;
	border: 1px solid #e2e8f0;
	padding: 3rem 1.5rem;
	text-align: center;
	font-size: .875rem;
	color: #94a3b8;
}

/* ====================================================================
   ADMIN CONSOLE  (Phase 7)
   ==================================================================== */

/* Document folder groups — board member view */
.doc-folder-group {
	margin-bottom: 1.5rem;
}
.doc-folder-header {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin: 0 0 .5rem;
	font-size: .95rem;
	font-weight: 600;
	color: var(--th-ink);
}
.doc-folder-count {
	font-size: .75rem;
	font-weight: 500;
	color: var(--th-ink-soft);
	background: var(--th-line);
	border-radius: 10px;
	padding: .1rem .5rem;
}

/* Folder chips — Admin Console */
.adm-folder-chip {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	background: var(--th-info-bg);
	border: 1px solid var(--th-line);
	border-radius: 8px;
	padding: .3rem .65rem;
	font-size: .82rem;
	font-weight: 500;
	color: var(--th-ink);
}
.adm-folder-x {
	background: none;
	border: none;
	color: #b3261e;
	cursor: pointer;
	font-size: 1.1rem;
	line-height: 1;
	padding: 0 0 0 .25rem;
	font-weight: 700;
}
.adm-folder-x:hover {
	color: #8c1d18;
}

/* Sticky top bar — Admin Console */
.adm-topbar {
	position: sticky;
	top: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	background: var(--th-blue-dark);
	color: #fff;
	padding: .55rem 1.25rem;
	border-radius: var(--th-radius);
	margin-bottom: 1rem;
	box-shadow: 0 2px 12px rgba(30, 77, 140, .18);
	font-size: .82rem;
}
.adm-topbar-left {
	display: flex;
	align-items: center;
	gap: .75rem;
	min-width: 0;
}
.adm-topbar-logo {
	text-decoration: none !important;
}
.adm-topbar-mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	background: var(--th-blue);
	color: #fff;
	font-weight: 700;
	font-size: .7rem;
	border-radius: 8px;
	letter-spacing: .5px;
}
.adm-topbar-breadcrumb {
	display: flex;
	align-items: center;
	gap: .4rem;
	flex-wrap: wrap;
}
.adm-topbar-breadcrumb a {
	color: rgba(255,255,255,.75);
	text-decoration: none;
	font-weight: 500;
}
.adm-topbar-breadcrumb a:hover {
	color: #fff;
	text-decoration: underline;
}
.adm-topbar-sep {
	color: rgba(255,255,255,.35);
	font-size: 1rem;
}
.adm-topbar-current {
	color: #fff;
	font-weight: 600;
}
.adm-topbar-right {
	display: flex;
	align-items: center;
	gap: .75rem;
	flex-shrink: 0;
}
.adm-topbar-back {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	color: #fff;
	text-decoration: none;
	font-weight: 600;
	font-size: .78rem;
	background: rgba(255,255,255,.12);
	padding: .35rem .85rem;
	border-radius: 6px;
	transition: background 150ms ease;
}
.adm-topbar-back:hover {
	background: rgba(255,255,255,.22);
	color: #fff;
}
.adm-topbar-wp {
	color: rgba(255,255,255,.6);
	text-decoration: none;
	font-size: .72rem;
	font-weight: 500;
	padding: .25rem .6rem;
	border: 1px solid rgba(255,255,255,.2);
	border-radius: 5px;
	transition: all 150ms ease;
}
.adm-topbar-wp:hover {
	color: #fff;
	border-color: rgba(255,255,255,.45);
	background: rgba(255,255,255,.08);
}

/* Tab navigation bar */
.adm-tabs {
	display: flex;
	gap: .25rem;
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: .75rem;
	padding: .375rem;
	margin-bottom: 1.5rem;
	overflow-x: auto;
}
.adm-tab {
	padding: .5rem 1rem;
	border-radius: .5rem;
	font-size: .8125rem;
	font-weight: 500;
	color: #64748b;
	text-decoration: none;
	white-space: nowrap;
	transition: background .12s, color .12s;
}
.adm-tab:hover { background: #f1f5f9; color: #334155; text-decoration: none; }
.adm-tab.active { background: var(--th-blue); color: #fff; }
.adm-tab-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px; height: 18px;
	border-radius: 9px;
	background: #ef4444;
	color: #fff;
	font-size: .625rem;
	font-weight: 700;
	padding: 0 4px;
	margin-left: .25rem;
	line-height: 1;
}
.adm-tab.active .adm-tab-badge { background: rgba(255,255,255,.3); }

/* Admin content area */
.adm-content { /* wrapper class if needed */ }

/* Cards */
.adm-card {
	background: #fff;
	border-radius: .75rem;
	border: 1px solid #e2e8f0;
	padding: 1.5rem;
	margin-bottom: 1.25rem;
}
.adm-card-title {
	font-size: 1rem;
	font-weight: 700;
	color: #1e293b;
	margin: 0 0 1.25rem;
}

/* Collapsible card sections */
.adm-collapsible { padding: 0; }
.adm-collapsible__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1rem 1.5rem;
	cursor: pointer;
	user-select: none;
	transition: background .12s;
	border-radius: .75rem;
}
.adm-collapsible__header:hover { background: #f8fafc; }
.adm-collapsible__title {
	display: flex;
	align-items: center;
	gap: .5rem;
	font-size: 1rem;
	font-weight: 700;
	color: #1e293b;
}
.adm-collapsible__title svg { color: var(--th-blue); flex-shrink: 0; }
.adm-collapsible__chevron {
	width: 20px;
	height: 20px;
	color: #94a3b8;
	transition: transform .2s ease;
	flex-shrink: 0;
}
.adm-collapsible__header.is-open .adm-collapsible__chevron {
	transform: rotate(180deg);
}
.adm-collapsible__body {
	padding: 0 1.5rem 1.5rem;
}

/* Tables */
.adm-table {
	width: 100%;
	border-collapse: collapse;
	font-size: .8125rem;
}
.adm-table thead tr { border-bottom: 2px solid #e2e8f0; }
.adm-table th {
	padding: .625rem .75rem;
	text-align: left;
	font-size: .7rem;
	font-weight: 600;
	color: #94a3b8;
	text-transform: uppercase;
	letter-spacing: .05em;
}
.adm-table td {
	padding: .75rem;
	vertical-align: middle;
	color: #334155;
}
.adm-table tbody tr { border-bottom: 1px solid #f1f5f9; }
.adm-table tbody tr:last-child { border-bottom: none; }
.adm-table tbody tr:hover { background: #fafbfc; }

/* Row actions (Edit / Delete links) */
.adm-row-actions {
	display: flex;
	align-items: center;
	gap: .75rem;
	white-space: nowrap;
}
.adm-row-actions a {
	font-size: .8125rem;
	font-weight: 500;
	color: var(--th-blue);
	text-decoration: none;
}
.adm-row-actions a:hover { text-decoration: underline; }
.adm-link-btn {
	background: none;
	border: none;
	cursor: pointer;
	font-family: inherit;
	font-size: .8125rem;
	font-weight: 500;
	padding: 0;
}
.adm-link-btn.adm-danger { color: #dc2626; }
.adm-link-btn.adm-danger:hover { text-decoration: underline; }

/* Form fields */
.adm-field {
	margin-bottom: 1rem;
}
.adm-field label {
	display: block;
	font-size: .8125rem;
	font-weight: 600;
	color: #334155;
	margin-bottom: .375rem;
}
.adm-field input[type="text"],
.adm-field input[type="url"],
.adm-field input[type="number"],
.adm-field input[type="datetime-local"],
.adm-field textarea,
.adm-field select {
	width: 100%;
	padding: .5rem .75rem;
	font-size: .875rem;
	border: 1px solid #e2e8f0;
	border-radius: .5rem;
	background: #fff;
	color: #1e293b;
	font-family: inherit;
	transition: border-color .12s;
}
.adm-field input:focus,
.adm-field textarea:focus,
.adm-field select:focus {
	border-color: var(--th-blue);
	outline: none;
	box-shadow: 0 0 0 3px rgba(43, 94, 167, .1);
}
.adm-field small {
	display: block;
	font-size: .7rem;
	color: #94a3b8;
	margin-top: .25rem;
}
.adm-field input[type="checkbox"] {
	width: auto;
	margin-right: .375rem;
}

/* Two-column field row */
.adm-row-2 {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
}

/* Inline form (for "add member" style) */
.adm-inline-form {
	display: flex;
	align-items: flex-end;
	gap: 1rem;
	flex-wrap: wrap;
}
.adm-inline-form .adm-field { flex: 1; min-width: 180px; margin-bottom: 0; }

/* Action buttons */
.adm-actions {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-top: 1.25rem;
}
.adm-btn {
	display: inline-block;
	padding: .5rem 1.25rem;
	border-radius: .5rem;
	font-size: .8125rem;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
	border: 1px solid #e2e8f0;
	background: #fff;
	color: #334155;
	font-family: inherit;
	transition: background .12s, border-color .12s;
}
.adm-btn:hover { background: #f1f5f9; border-color: #cbd5e1; text-decoration: none; color: #334155; }
.adm-btn--primary {
	background: var(--th-blue);
	color: #fff;
	border-color: var(--th-blue);
}
.adm-btn--primary:hover { background: var(--th-blue-dark); border-color: var(--th-blue-dark); color: #fff; }

/* Sticky save bar (bottom of event edit) */
.adm-sticky-save {
	position: sticky;
	bottom: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .75rem 1.25rem;
	background: #f8fafc;
	border-top: 1px solid #e2e8f0;
	box-shadow: 0 -2px 6px rgba(0,0,0,.06);
	margin: 1.5rem -1.5rem -1.5rem;
	border-radius: 0 0 .75rem .75rem;
}

/* Toolbar (above tables, holds "+ New" button) */
.adm-toolbar {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	margin-bottom: 1rem;
}

/* Notices */
.adm-notice {
	padding: .75rem 1rem;
	border-radius: .5rem;
	margin-bottom: 1rem;
	font-size: .8125rem;
	font-weight: 500;
}
.adm-notice--success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.adm-notice--error   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }

/* Overview grid (stat cards) */
.adm-overview-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1rem;
	margin-bottom: 1.5rem;
}
.adm-stat-card {
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: .75rem;
	padding: 1.25rem;
	text-align: center;
	border-top: 3px solid var(--th-blue);
}
.adm-stat-card .adm-stat-value {
	font-size: 2rem;
	font-weight: 700;
	color: #1e293b;
}
.adm-stat-card .adm-stat-label {
	font-size: .75rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: #94a3b8;
	margin-top: .25rem;
}

/* Colour variants for stat cards */
.adm-stat-card.blue    { border-top-color: var(--th-blue); }
.adm-stat-card.teal    { border-top-color: var(--th-teal); }
.adm-stat-card.orange  { border-top-color: var(--th-orange); }
.adm-stat-card.gold    { border-top-color: var(--th-gold); }
.adm-stat-card.green   { border-top-color: #10b981; }
.adm-stat-card.red     { border-top-color: #ef4444; }
.adm-stat-card.purple  { border-top-color: #8b5cf6; }
.adm-stat-card.slate   { border-top-color: #64748b; }

/* Quick actions in overview */
.adm-quick-actions {
	display: flex;
	gap: .75rem;
	flex-wrap: wrap;
}

/* Count badge (member count etc.) */
.adm-count {
	font-size: .75rem;
	font-weight: 500;
	color: #94a3b8;
}

/* File upload field (WP Media Library) */
.adm-file-upload {
	display: flex;
	flex-direction: column;
	gap: .5rem;
}
.adm-file-preview {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .75rem 1rem;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: .5rem;
}
.adm-file-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: .5rem;
	font-size: .7rem;
	font-weight: 700;
	flex-shrink: 0;
	background: #fee2e2;
	color: #dc2626;
}
.adm-file-name {
	flex: 1;
	font-size: .8125rem;
	font-weight: 500;
	color: #334155;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.adm-file-remove {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	border: 1px solid #e2e8f0;
	background: #fff;
	color: #94a3b8;
	font-size: 1.125rem;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	transition: background .12s, color .12s;
}
.adm-file-remove:hover { background: #fef2f2; color: #dc2626; border-color: #fecaca; }

/* Checkbox grid (multi-select committees) */
.adm-checkbox-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: .5rem;
	padding: .75rem;
	border: 1px solid #e2e8f0;
	border-radius: .5rem;
	background: #fafbfc;
}
.adm-checkbox-item {
	display: flex;
	align-items: center;
	gap: .5rem;
	font-size: .8125rem;
	font-weight: 500;
	color: #334155;
	padding: .375rem .5rem;
	border-radius: .375rem;
	cursor: pointer;
	transition: background .1s;
}
.adm-checkbox-item:hover { background: #f1f5f9; }
.adm-checkbox-item input[type="checkbox"] {
	width: 16px;
	height: 16px;
	accent-color: var(--th-blue);
	cursor: pointer;
}

/* Empty state */
.adm-empty {
	text-align: center;
	color: #94a3b8;
	font-size: .8125rem;
	padding: 1.5rem .75rem;
}

/* Status pills (reuse from tasks page for admin tasks tab) */
.status-pill.canceled { background: #f1f5f9; color: #64748b; }

/* ----------------------------------------------------------------
   ADMIN GALLERY — event image management
   ---------------------------------------------------------------- */
.adm-gallery-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 1rem;
	margin-top: .75rem;
}
.adm-gallery-item {
	position: relative;
	border-radius: var(--th-radius);
	overflow: hidden;
	background: var(--th-line);
	aspect-ratio: 4/3;
}
.adm-gallery-item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.adm-gallery-caption {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: .35rem .5rem;
	background: rgba(0, 0, 0, .55);
	color: #fff;
	font-size: .75rem;
	line-height: 1.3;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.adm-gallery-remove-form {
	position: absolute;
	top: .35rem;
	right: .35rem;
}
.adm-gallery-remove-btn {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	border: none;
	background: rgba(179, 38, 30, .85);
	color: #fff;
	font-size: 14px;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .15s;
}
.adm-gallery-remove-btn:hover { background: #b3261e; }

/* Gallery bulk-select toolbar */
.adm-gallery-toolbar {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: .625rem .75rem;
	margin-top: .75rem;
	background: var(--th-bg);
	border: 1px solid var(--th-line);
	border-radius: var(--th-radius);
}
.adm-gallery-select-all {
	display: flex;
	align-items: center;
	gap: .4rem;
	cursor: pointer;
	font-size: .875rem;
	font-weight: 500;
	color: var(--th-ink-soft);
	user-select: none;
}
.adm-gallery-select-all input[type="checkbox"] {
	width: 16px;
	height: 16px;
	accent-color: var(--th-primary);
	cursor: pointer;
}
.adm-gallery-selected-count {
	font-size: .8125rem;
	color: var(--th-primary);
	font-weight: 600;
}
.adm-btn--danger {
	background: var(--th-error-bg, #fef2f2);
	color: var(--th-error, #dc2626);
	border: 1px solid var(--th-error, #dc2626);
	font-weight: 600;
	font-size: .8125rem;
	padding: .4rem .75rem;
	border-radius: var(--th-radius);
	cursor: pointer;
	transition: background .15s, color .15s;
}
.adm-btn--danger:hover {
	background: var(--th-error, #dc2626);
	color: #fff;
}

/* Gallery image checkboxes */
.adm-gallery-checkbox {
	position: absolute;
	top: .4rem;
	left: .4rem;
	z-index: 2;
	width: 20px;
	height: 20px;
	accent-color: var(--th-primary);
	cursor: pointer;
	opacity: 0;
	transition: opacity .15s;
}
.adm-gallery-item:hover .adm-gallery-checkbox,
.adm-gallery-checkbox:checked {
	opacity: 1;
}
.adm-gallery-item.is-selected {
	outline: 3px solid var(--th-primary);
	outline-offset: -3px;
}
.adm-gallery-item.is-selected img {
	opacity: .75;
}

/* Hero image preview in admin event form */
.adm-hero-preview {
	margin-top: .5rem;
	max-width: 320px;
	border-radius: var(--th-radius);
	overflow: hidden;
}
.adm-hero-preview img {
	width: 100%;
	height: auto;
	display: block;
}

/* Public event toggle visual feedback */
.adm-public-fields {
	margin-top: 1rem;
	padding: 1rem;
	background: var(--th-info-bg);
	border-radius: var(--th-radius);
	border-left: 3px solid var(--th-blue);
}

/* ----------------------------------------------------------------
   PUBLIC EVENT PAGE — front-facing display
   ---------------------------------------------------------------- */
.th-public-events {
	max-width: 960px;
	margin: 0 auto;
	padding: 2rem 1rem;
}
.th-public-events h2 {
	font-size: 1.75rem;
	color: var(--th-ink);
	margin-bottom: 1.5rem;
}
.th-pub-evt-card {
	background: var(--th-card);
	border-radius: var(--th-radius);
	box-shadow: var(--th-shadow);
	overflow: hidden;
	margin-bottom: 1.5rem;
	transition: transform .15s, box-shadow .15s;
}
.th-pub-evt-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 32px rgba(30, 77, 140, 0.14);
}
.th-pub-evt-hero-wrap {
	position: relative;
	overflow: hidden;
	display: block;
	text-decoration: none;
}
.th-pub-evt-hero-wrap:hover { text-decoration: none; }
.th-pub-evt-hero-wrap:hover .th-pub-evt-hero { transform: scale(1.03); }
.th-pub-evt-hero-wrap .th-pub-evt-hero { transition: transform .3s ease; }
.th-pub-evt-hero {
	width: 100%;
	max-height: 250px;
	object-fit: cover;
	display: block;
}
.th-pub-evt-hero-title {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	margin: 0;
	padding: 2.5rem 1.5rem 1rem;
	background: linear-gradient(transparent, rgba(0,0,0,.65));
	color: #fff;
	font-size: 3rem;
	font-weight: 500;
	line-height: 1.3;
	text-shadow: 0 1px 4px rgba(0,0,0,.4);
}
.th-pub-evt-body {
	padding: 1.25rem 1.5rem;
}
.th-pub-evt-body h3 {
	font-size: 1.25rem;
	margin-bottom: .5rem;
	color: var(--th-ink);
}
.th-pub-evt-meta {
	display: flex;
	gap: 1.25rem;
	flex-wrap: wrap;
	font-size: .875rem;
	color: var(--th-ink-soft);
	margin-bottom: .75rem;
}
.th-pub-evt-meta svg {
	width: 16px;
	height: 16px;
	vertical-align: text-bottom;
	margin-right: .25rem;
}
.th-pub-evt-desc {
	font-size: .9rem;
	color: var(--th-ink-soft);
	line-height: 1.65;
}
.th-pub-evt-link {
	display: inline-flex;
	align-items: center;
	gap: .25rem;
	padding: 8px 18px;
	background: var(--th-blue);
	color: #fff !important;
	font-weight: 600;
	font-size: .85rem;
	text-decoration: none !important;
	border-radius: 6px;
	transition: background 120ms ease;
}
.th-pub-evt-link:hover { background: var(--th-blue-dark); color: #fff !important; }

/* ── Layout A: Featured hero + 2-column grid ─────── */

/* Featured / next event hero */
.th-evt-featured {
	position: relative;
	border-radius: 16px;
	overflow: hidden;
	margin-bottom: 2.5rem;
	box-shadow: 0 8px 32px rgba(30, 77, 140, 0.15);
	background: var(--th-blue-dark);
}
.th-evt-featured-img {
	width: 100%;
	height: 400px;
	object-fit: cover;
	display: block;
}
.th-evt-featured-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(30, 77, 140, 0.92) 0%, rgba(30, 77, 140, 0.4) 50%, transparent 100%);
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 2.5rem;
}
.th-evt-featured-badge {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	background: var(--th-gold);
	color: var(--th-ink);
	font-size: .7rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	padding: .3rem .7rem;
	border-radius: 6px;
	margin-bottom: .75rem;
	width: fit-content;
}
.th-evt-featured-title {
	font-size: 2.25rem;
	font-weight: 800;
	color: #fff !important;
	line-height: 1.15;
	margin: 0 0 .5rem;
	text-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
.th-evt-featured-meta {
	display: flex;
	gap: 1.5rem;
	flex-wrap: wrap;
	color: rgba(255, 255, 255, 0.8);
	font-size: .9rem;
	margin-bottom: .75rem;
}
.th-evt-featured-meta span {
	display: flex;
	align-items: center;
	gap: .35rem;
}
.th-evt-featured-meta svg {
	stroke: rgba(255, 255, 255, 0.7);
}
.th-evt-featured-desc {
	color: rgba(255, 255, 255, 0.75);
	font-size: .95rem;
	line-height: 1.55;
	max-width: 600px;
	margin: 0 0 1.25rem;
}
.th-evt-featured-actions {
	display: flex;
	gap: .75rem;
	flex-wrap: wrap;
}
.th-evt-featured-btn {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	background: var(--th-gold);
	color: var(--th-ink);
	padding: .7rem 1.5rem;
	border-radius: 10px;
	font-weight: 700;
	font-size: .95rem;
	text-decoration: none !important;
	transition: all 150ms ease;
}
.th-evt-featured-btn:hover {
	background: #ffda5c;
	color: var(--th-ink) !important;
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(245, 200, 66, 0.4);
}
.th-evt-featured-btn--register {
	background: rgba(255, 255, 255, 0.15);
	color: #fff;
	border: 1px solid rgba(255, 255, 255, 0.3);
	backdrop-filter: blur(4px);
}
.th-evt-featured-btn--register:hover {
	background: rgba(255, 255, 255, 0.25);
	color: #fff !important;
	box-shadow: none;
}

/* "More Events" section label */
.th-evt-section-label {
	font-size: .8rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .08em;
	color: #94a3b8;
	margin-bottom: 1.25rem;
	display: flex;
	align-items: center;
	gap: .5rem;
}
.th-evt-section-label::after {
	content: '';
	flex: 1;
	height: 1px;
	background: #e2e8f0;
}

/* 2-column event grid */
.th-evt-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.25rem;
}
.th-evt-grid-card {
	background: var(--th-card);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
	transition: all 200ms ease;
	display: flex;
	flex-direction: column;
}
.th-evt-grid-card:hover {
	box-shadow: 0 8px 28px rgba(30, 77, 140, 0.12);
	transform: translateY(-3px);
}
.th-evt-grid-img-wrap {
	display: block;
	overflow: hidden;
	text-decoration: none !important;
}
.th-evt-grid-img-wrap img {
	width: 100%;
	height: 180px;
	object-fit: cover;
	display: block;
	transition: transform 300ms ease;
}
.th-evt-grid-img-wrap:hover img {
	transform: scale(1.03);
}
.th-evt-grid-body {
	padding: 1.25rem;
	flex: 1;
	display: flex;
	flex-direction: column;
}
.th-evt-grid-date {
	font-size: .75rem;
	font-weight: 600;
	color: var(--th-blue);
	text-transform: uppercase;
	letter-spacing: .04em;
	margin-bottom: .35rem;
	display: flex;
	align-items: center;
	gap: .35rem;
}
.th-evt-grid-date svg {
	stroke: var(--th-blue);
}
.th-evt-grid-title {
	font-size: 1.15rem;
	font-weight: 700;
	color: var(--th-ink);
	margin: 0 0 .35rem;
	line-height: 1.3;
}
.th-evt-grid-location {
	font-size: .8rem;
	color: #94a3b8;
	margin-bottom: .5rem;
	display: flex;
	align-items: center;
	gap: .3rem;
}
.th-evt-grid-location svg {
	stroke: #94a3b8;
	flex-shrink: 0;
}
.th-evt-grid-desc {
	font-size: .85rem;
	color: #64748b;
	line-height: 1.5;
	flex: 1;
	margin: 0 0 .75rem;
}
.th-evt-grid-link {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	color: var(--th-blue);
	font-weight: 600;
	font-size: .85rem;
	text-decoration: none !important;
	transition: gap 150ms ease;
}
.th-evt-grid-link:hover {
	gap: .6rem;
	color: var(--th-blue-dark) !important;
}

@media (max-width: 700px) {
	.th-evt-grid { grid-template-columns: 1fr; }

	/* Featured card becomes a regular card on mobile */
	.th-evt-featured {
		background: var(--th-card);
		border-radius: 14px;
		box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
	}
	.th-evt-featured-img {
		height: 180px;
		position: relative;
	}
	.th-evt-featured-overlay {
		position: relative;
		inset: auto;
		background: none;
		padding: 1.25rem;
	}
	.th-evt-featured-badge {
		margin-bottom: .5rem;
	}
	.th-evt-featured-title {
		font-size: 1.15rem !important;
		color: var(--th-ink) !important;
		text-shadow: none !important;
		margin-bottom: .35rem;
	}
	.th-evt-featured-meta {
		color: var(--th-blue);
		font-size: .75rem;
		font-weight: 600;
		gap: .75rem;
		margin-bottom: .5rem;
	}
	.th-evt-featured-meta svg {
		stroke: var(--th-blue);
	}
	.th-evt-featured-desc {
		color: #64748b;
		font-size: .85rem;
		margin-bottom: .75rem;
	}
	.th-evt-featured-btn {
		padding: .5rem 1.15rem;
		font-size: .85rem;
		border-radius: 8px;
	}
	.th-evt-featured-btn--register {
		background: var(--th-blue);
		color: #fff;
		border-color: var(--th-blue);
	}
	.th-evt-featured-btn--register:hover {
		background: var(--th-blue-dark);
	}
}

/* Single public event page */
.th-pub-single {
	max-width: 800px;
	margin: 0 auto;
	padding: 2rem 1rem;
}
.th-pub-single:has(.th-pub-single-hero-full) {
	max-width: none;
	padding-top: 0;
}
.th-pub-single .th-pub-single-hero-full ~ * {
	max-width: 800px;
	margin-left: auto;
	margin-right: auto;
}
/* Full-bleed hero for single event page */
.th-pub-single-hero-full {
	position: relative;
	width: 100vw;
	margin-left: calc(-50vw + 50%);
	margin-top: -200px;
	padding-top: 200px;
	min-height: 300px;
	max-height: 500px;
	height: 60vh;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	margin-bottom: 2rem;
}
.th-pub-single-hero-overlay {
	position: absolute;
	inset: 0;
	background: rgba(0,0,0,.20);
}
.th-pub-single-hero-title {
	position: relative;
	z-index: 1;
	color: #fff !important;
	font-size: 5.5rem;
	font-weight: 700;
	text-align: center;
	text-shadow: 0 3px 16px rgba(0,0,0,.5);
	padding: 0 2rem;
	margin: 0;
	line-height: 1.15;
	letter-spacing: -0.02em;
}
.th-pub-single-hero-chevron {
	position: absolute;
	bottom: 1.5rem;
	left: 50%;
	transform: translateX(-50%);
	z-index: 1;
	color: rgba(255,255,255,.6);
	animation: th-chevron-bounce 2s ease-in-out infinite;
}
@keyframes th-chevron-bounce {
	0%, 100% { transform: translateX(-50%) translateY(0); }
	50%      { transform: translateX(-50%) translateY(8px); }
}
.th-pub-single h1 {
	font-size: 3rem;
	color: var(--th-ink);
	margin-bottom: 1rem;
}
.th-pub-single-details {
	display: flex;
	gap: 2rem;
	flex-wrap: wrap;
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--th-ink);
	background: #f1f5f9;
	border-left: 4px solid var(--th-blue);
	border-radius: 0 8px 8px 0;
	padding: 1.25rem 1.5rem;
	margin-bottom: 2rem;
}
.th-pub-single-details svg {
	width: 20px;
	height: 20px;
	vertical-align: text-bottom;
	margin-right: .4rem;
	color: var(--th-blue);
}
.th-pub-single-desc {
	font-size: 1rem;
	line-height: 1.75;
	color: var(--th-ink);
	margin-bottom: 2rem;
}

/* YouTube Video Embed */
.th-pub-video {
	margin-bottom: 2.5rem;
}
.th-pub-video-wrap {
	position: relative;
	padding-bottom: 56.25%; /* 16:9 aspect ratio */
	height: 0;
	overflow: hidden;
	border-radius: var(--th-radius);
	box-shadow: 0 4px 24px rgba(0,0,0,.12);
}
.th-pub-video-wrap iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border-radius: var(--th-radius);
}

/* Event Highlights */
.th-pub-highlights {
	margin-bottom: 2rem;
}
.th-pub-highlight {
	margin-bottom: 2rem;
	text-align: center;
}
.th-pub-highlight-title {
	font-size: 1.5rem;
	font-weight: 600;
	color: var(--th-orange, #d97706);
	margin-bottom: 1rem;
}
.th-pub-highlight img {
	max-width: 100%;
	border-radius: var(--th-radius);
	box-shadow: var(--th-shadow);
}

/* Public gallery grid */
.th-pub-gallery {
	margin-top: 2rem;
}
.th-pub-gallery h2 {
	font-size: 1.35rem;
	margin-bottom: 1rem;
	color: var(--th-ink);
}
.th-carousel-wrap {
	position: relative;
	overflow: hidden;
}
.th-carousel-track {
	display: flex;
	gap: .75rem;
	overflow-x: auto;
	scroll-behavior: smooth;
	scroll-snap-type: x mandatory;
	-ms-overflow-style: none;
	scrollbar-width: none;
	padding: .25rem 0;
}
.th-carousel-track::-webkit-scrollbar { display: none; }
.th-carousel-slide {
	flex: 0 0 calc(50% - .375rem);
	scroll-snap-align: start;
	border-radius: var(--th-radius);
	overflow: hidden;
	aspect-ratio: 4/3;
	cursor: pointer;
	transition: transform .15s;
}
@media (min-width: 768px) {
	.th-carousel-slide { flex: 0 0 calc(33.333% - .5rem); }
}
.th-carousel-slide:hover { transform: scale(1.02); }
.th-carousel-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.th-carousel-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 5;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: none;
	background: rgba(0,0,0,.5);
	color: #fff;
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .15s;
}
.th-carousel-arrow:hover { background: rgba(0,0,0,.7); }
.th-carousel-prev { left: .5rem; }
.th-carousel-next { right: .5rem; }

/* Lightbox overlay — !important overrides theme styles on public pages */
.th-lightbox {
	position: fixed !important;
	inset: 0 !important;
	z-index: 999999 !important;
	background: rgba(0,0,0,.92) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	opacity: 0;
	pointer-events: none;
	transition: opacity .25s;
}
.th-lightbox.active {
	opacity: 1 !important;
	pointer-events: auto !important;
}
.th-lightbox img {
	max-width: 90vw !important;
	max-height: 85vh !important;
	object-fit: contain !important;
	border-radius: 6px;
	box-shadow: 0 4px 40px rgba(0,0,0,.6);
}
.th-lightbox-close {
	position: fixed !important;
	top: 100px !important;
	right: 1.5rem !important;
	background: rgba(0,0,0,.6) !important;
	border: none !important;
	color: #fff !important;
	font-size: 2rem !important;
	cursor: pointer !important;
	line-height: 1;
	z-index: 9999999 !important;
	width: 48px;
	height: 48px;
	display: flex !important;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	padding: 0;
	-webkit-tap-highlight-color: transparent;
}
.th-lightbox-close:hover { background: rgba(255,255,255,.25) !important; }
.th-lightbox-nav {
	position: fixed !important;
	top: 50% !important;
	transform: translateY(-50%) !important;
	background: rgba(255,255,255,.15) !important;
	border: none !important;
	color: #fff !important;
	font-size: 2.5rem;
	padding: .5rem 1rem;
	cursor: pointer !important;
	border-radius: 6px;
	z-index: 9999999 !important;
	-webkit-tap-highlight-color: transparent;
}
.th-lightbox-nav:hover { background: rgba(255,255,255,.3) !important; }
.th-lightbox-prev { left: .75rem !important; }
.th-lightbox-next { right: .75rem !important; }

/* Lightbox mobile adjustments */
@media (max-width: 600px) {
	.th-lightbox img {
		max-width: 96vw !important;
		max-height: 75vh !important;
	}
	.th-lightbox-close {
		top: 12px !important;
		right: 12px !important;
	}
	.th-lightbox-nav {
		font-size: 2rem;
		padding: .4rem .75rem;
	}
	.th-lightbox-prev { left: .25rem !important; }
	.th-lightbox-next { right: .25rem !important; }
}

/* Carousel mobile adjustments */
@media (max-width: 480px) {
	.th-carousel-slide { flex: 0 0 85%; }
	.th-carousel-arrow { width: 36px; height: 36px; font-size: 1.25rem; }
}

/* ----------------------------------------------------------------
   DASHBOARD RESPONSIVE
   ---------------------------------------------------------------- */
@media (max-width: 1024px) {
	.content-grid, .report-row { grid-template-columns: 1fr; }
	.quick-actions { grid-template-columns: 1fr; }
	.stats-row { grid-template-columns: 1fr 1fr; }
	.dir-grid { grid-template-columns: 1fr; }
	.adm-overview-grid { grid-template-columns: 1fr 1fr; }
	.adm-row-2 { grid-template-columns: 1fr; }
	.adm-inline-form { flex-direction: column; align-items: stretch; }
}
/* ─── Public Event: Listing actions row ──────────────────────── */
.th-pub-evt-actions {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-top: .5rem;
}
.th-pub-evt-register {
	display: inline-flex;
	align-items: center;
	gap: .25rem;
	padding: 6px 14px;
	background: #e8942e;
	color: #fff !important;
	font-size: .85rem;
	font-weight: 600;
	text-decoration: none !important;
	border-radius: 6px;
	transition: background 120ms ease;
}
.th-pub-evt-register:hover { background: #d17e22; color: #fff !important; }

/* ─── Public Event: Registration Button ──────────────────────── */
.th-pub-register-cta {
	margin: 1.5rem 0;
	text-align: center;
}
.th-pub-register-btn {
	display: inline-flex !important;
	align-items: center;
	gap: .5rem;
	padding: 14px 32px !important;
	background: #e8942e !important;
	color: #fff !important;
	font-size: 1.125rem !important;
	font-weight: 700 !important;
	text-decoration: none !important;
	border-radius: 8px;
	border: none;
	transition: background 150ms ease, transform 100ms ease;
	box-shadow: 0 2px 8px rgba(232, 148, 46, .35);
}
.th-pub-register-btn:hover {
	background: #d17e22 !important;
	color: #fff !important;
	transform: translateY(-1px);
}
.th-pub-register-btn svg {
	flex-shrink: 0;
}

/* ─── Public Event: Get Directions Link ──────────────────────── */
.th-pub-directions-link {
	margin-left: .5rem;
	font-size: .875rem;
	color: #2b5ea7 !important;
	text-decoration: none !important;
	font-weight: 600;
}
.th-pub-directions-link:hover {
	text-decoration: underline !important;
	color: #1e4d8c !important;
}

/* ─── Admin Edit Button (floating, admin-only) ─────────────────── */
.th-admin-edit-btn {
	position: fixed;
	bottom: 2rem;
	right: 2rem;
	z-index: 999999 !important;
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .625rem 1.25rem;
	background: #1B2A4A;
	color: #fff !important;
	font-size: .875rem;
	font-weight: 600;
	border-radius: 2rem;
	text-decoration: none !important;
	box-shadow: 0 4px 16px rgba(0,0,0,.25);
	transition: background .2s, transform .2s;
}
.th-admin-edit-btn:hover {
	background: #2563EB;
	transform: translateY(-2px);
	color: #fff !important;
}
.th-admin-edit-btn svg {
	flex-shrink: 0;
}
@media (max-width: 600px) {
	.th-admin-edit-btn {
		bottom: 1rem;
		right: 1rem;
		padding: .5rem 1rem;
		font-size: .8125rem;
	}
}

/* ─── Public Event: Sponsor Levels ───────────────────────────── */
.th-pub-sponsors {
	margin-top: 2.5rem;
	padding-top: 2rem;
	border-top: 2px solid #e2e8f0;
}
.th-pub-sponsor-level {
	margin-bottom: 2rem;
}
.th-pub-sponsor-level-header {
	text-align: center;
	padding: 1rem 1.5rem;
	background: #f1f5f9;
	border-radius: 8px 8px 0 0;
	margin-bottom: 0;
}
.th-pub-sponsor-level-header h3 {
	margin: 0 !important;
	padding: 0 !important;
	font-size: 1.25rem !important;
	font-weight: 700 !important;
	color: #4b6a2e !important;
	font-style: italic;
	letter-spacing: .02em;
}
.th-pub-sponsor-logos {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 2rem;
	padding: 2rem 1.5rem;
	background: #fff;
	border: 1px solid #e2e8f0;
	border-top: none;
	border-radius: 0 0 8px 8px;
}
.th-pub-sponsor-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	text-decoration: none !important;
}
.th-pub-sponsor-logo img {
	max-width: 200px !important;
	max-height: 120px !important;
	width: auto !important;
	height: auto !important;
	object-fit: contain !important;
	transition: transform 150ms ease;
}
a.th-pub-sponsor-logo:hover img {
	transform: scale(1.05);
}

/* ----------------------------------------------------------------
   [th_featured_events] — Homepage featured events shortcode
   Uses the SAME class names (upcoming-events, ue__*) as the existing
   hand-coded section so it inherits the theme CSS perfectly.
   These fallback rules only apply when the theme styles aren't loaded.
   ---------------------------------------------------------------- */
.upcoming-events:not([data-theme-styled]) {
	background: linear-gradient(180deg, #1363a3, #0f4f86 55%, #0b3e66);
	padding: 28px 16px;
	display: flex;
	justify-content: center;
}

/* ----------------------------------------------------------------
   Admin Documents — Hybrid sidebar + card grid layout
   ---------------------------------------------------------------- */

/* Overall layout: sidebar + main */
.adm-docs-layout {
	display: flex;
	gap: 0;
	min-height: 500px;
	background: var(--th-card);
	border-radius: var(--th-radius);
	box-shadow: var(--th-shadow);
	overflow: hidden;
	position: relative;
}

/* ── Sidebar collapse toggle ──────────────────────── */
.adm-docs-collapse-btn {
	position: absolute;
	top: 50%;
	left: 240px;
	transform: translate(-50%, -50%);
	z-index: 5;
	width: 24px;
	height: 48px;
	border: 1px solid var(--th-line);
	border-radius: 0 8px 8px 0;
	background: var(--th-card);
	color: #94a3b8;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	transition: all 200ms ease;
	box-shadow: 2px 0 6px rgba(0,0,0,.06);
}
.adm-docs-collapse-btn:hover {
	color: var(--th-blue);
	background: #f1f5f9;
}
.adm-docs-collapse-icon {
	width: 14px;
	height: 14px;
	transition: transform 200ms ease;
}

/* Collapsed state */
.adm-docs-collapsed .adm-docs-sidebar {
	width: 0;
	min-width: 0;
	overflow: hidden;
	border-right: none;
	padding: 0;
}
.adm-docs-collapsed .adm-docs-collapse-btn {
	left: 0;
	border-radius: 0 8px 8px 0;
}
.adm-docs-collapsed .adm-docs-collapse-icon {
	transform: rotate(180deg);
}

/* ── Sidebar ──────────────────────────────────────── */
.adm-docs-sidebar {
	width: 240px;
	min-width: 240px;
	background: #f1f5f9;
	border-right: 1px solid var(--th-line);
	display: flex;
	flex-direction: column;
	transition: width 200ms ease, min-width 200ms ease;
}

.adm-docs-sidebar-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: .75rem 1rem;
	font-weight: 600;
	font-size: .85rem;
	color: var(--th-ink-soft);
	text-transform: uppercase;
	letter-spacing: .04em;
	border-bottom: 1px solid var(--th-line);
}

.adm-docs-sidebar-add {
	width: 24px;
	height: 24px;
	border-radius: 6px;
	border: 1px solid var(--th-line);
	background: var(--th-card);
	color: var(--th-blue);
	font-size: 1.1rem;
	font-weight: 700;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 150ms ease;
}
.adm-docs-sidebar-add:hover {
	background: var(--th-blue);
	color: #fff;
	border-color: var(--th-blue);
}

/* New folder inline form */
.adm-docs-new-folder {
	display: flex;
	gap: .4rem;
	padding: .5rem .75rem;
	border-bottom: 1px solid var(--th-line);
	background: #e8edf3;
}
.adm-docs-new-folder input[type="text"] {
	flex: 1;
	padding: .3rem .5rem;
	border: 1px solid var(--th-line);
	border-radius: 6px;
	font-size: .8rem;
	font-family: var(--th-font);
}
.adm-docs-new-folder input[type="text"]:focus {
	outline: none;
	border-color: var(--th-blue);
	box-shadow: 0 0 0 2px rgba(43, 94, 167, 0.15);
}

/* Folder list */
.adm-docs-folder-list {
	flex: 1;
	overflow-y: auto;
	padding: .5rem 0;
}

.adm-docs-folder-item {
	display: flex;
	align-items: center;
	gap: .5rem;
	padding: .5rem 1rem;
	cursor: pointer;
	font-size: .875rem;
	color: var(--th-ink);
	position: relative;
	transition: background 120ms ease;
}
.adm-docs-folder-item:hover {
	background: #e2e8f0;
}
.adm-docs-folder-item.active {
	background: var(--th-blue);
	color: #fff;
}
.adm-docs-folder-item.active .adm-docs-folder-count {
	background: rgba(255,255,255,.25);
	color: #fff;
}
.adm-docs-folder-item.active .adm-docs-folder-name {
	color: #fff !important;
	font-style: normal !important;
}
.adm-docs-folder-item.active svg {
	stroke: #fff;
}

.adm-docs-folder-icon {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

.adm-docs-folder-name {
	flex: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.adm-docs-folder-count {
	font-size: .7rem;
	font-weight: 600;
	background: #cbd5e1;
	color: #475569;
	border-radius: 10px;
	padding: .1rem .45rem;
	min-width: 20px;
	text-align: center;
	flex-shrink: 0;
}

.adm-docs-event-badge {
	font-size: .6rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .03em;
	background: var(--th-teal);
	color: #0f3d3a;
	border-radius: 4px;
	padding: .1rem .35rem;
	flex-shrink: 0;
}

.adm-docs-assoc-badge {
	font-size: .55rem;
	font-weight: 700;
	background: #E8942A;
	color: #fff;
	border-radius: 3px;
	padding: .05rem .25rem;
	flex-shrink: 0;
	line-height: 1;
}

/* Folder delete button */
.adm-docs-folder-del {
	display: inline;
	flex-shrink: 0;
	opacity: 0;
	transition: opacity 150ms ease;
}
.adm-docs-folder-item:hover .adm-docs-folder-del {
	opacity: 1;
}
.adm-docs-folder-del button {
	border: none;
	background: none;
	color: #94a3b8;
	font-size: 1rem;
	cursor: pointer;
	padding: 0 .15rem;
	line-height: 1;
}
.adm-docs-folder-del button:hover {
	color: var(--th-error);
}
.adm-docs-folder-item.active .adm-docs-folder-del button {
	color: rgba(255,255,255,.5);
}
.adm-docs-folder-item.active .adm-docs-folder-del button:hover {
	color: #fff;
}

/* Sidebar footer */
.adm-docs-sidebar-foot {
	padding: .6rem 1rem;
	font-size: .75rem;
	color: #94a3b8;
	border-top: 1px solid var(--th-line);
}
.adm-docs-sidebar-foot strong {
	color: var(--th-ink-soft);
}

/* ── Main content area ────────────────────────────── */
.adm-docs-main {
	flex: 1;
	display: flex;
	flex-direction: column;
	padding: 1.25rem 1.5rem;
	min-width: 0;
}

.adm-docs-main-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1rem;
}

.adm-docs-main-title {
	display: flex;
	align-items: center;
	gap: .5rem;
	font-size: 1.15rem;
	font-weight: 700;
	color: var(--th-ink);
	margin: 0;
}
.adm-docs-main-title svg {
	color: var(--th-blue);
	flex-shrink: 0;
}
.adm-docs-main-count {
	font-weight: 400;
	font-size: .9rem;
	color: #94a3b8;
}

/* Toolbar: search + view toggle */
.adm-docs-toolbar {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-bottom: 1rem;
}

.adm-docs-search {
	flex: 1;
	padding: .5rem .75rem;
	border: 1px solid var(--th-line);
	border-radius: 8px;
	font-size: .875rem;
	font-family: var(--th-font);
	background: var(--th-bg);
	transition: border-color 150ms ease, box-shadow 150ms ease;
}
.adm-docs-search:focus {
	outline: none;
	border-color: var(--th-blue);
	box-shadow: 0 0 0 3px rgba(43, 94, 167, 0.12);
}

.adm-docs-view-toggle {
	display: flex;
	border: 1px solid var(--th-line);
	border-radius: 8px;
	overflow: hidden;
}
.adm-docs-view-toggle button {
	padding: .45rem .6rem;
	border: none;
	background: var(--th-card);
	color: #94a3b8;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 120ms ease;
}
.adm-docs-view-toggle button + button {
	border-left: 1px solid var(--th-line);
}
.adm-docs-view-toggle button:hover {
	color: var(--th-ink-soft);
	background: #f8fafc;
}
.adm-docs-view-toggle button.active {
	background: var(--th-blue);
	color: #fff;
}

/* ── Card grid ────────────────────────────────────── */
.adm-docs-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1rem;
}

.adm-docs-card {
	border: 1px solid var(--th-line);
	border-radius: var(--th-radius);
	overflow: hidden;
	background: var(--th-card);
	transition: box-shadow 150ms ease, transform 150ms ease;
}
.adm-docs-card:hover {
	box-shadow: 0 4px 16px rgba(30, 77, 140, 0.12);
	transform: translateY(-2px);
}

/* Colored top bar by file type */
.adm-docs-card-top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: .5rem .75rem;
	font-size: .7rem;
	font-weight: 700;
}
.adm-docs-ft-pdf .adm-docs-card-top,
.adm-docs-card-top.adm-docs-ft-pdf {
	background: #fef2f2;
	border-bottom: 2px solid #ef4444;
}
.adm-docs-ft-doc .adm-docs-card-top,
.adm-docs-card-top.adm-docs-ft-doc {
	background: #eff6ff;
	border-bottom: 2px solid #3b82f6;
}
.adm-docs-ft-xls .adm-docs-card-top,
.adm-docs-card-top.adm-docs-ft-xls {
	background: #f0fdf4;
	border-bottom: 2px solid #22c55e;
}
.adm-docs-ft-img .adm-docs-card-top,
.adm-docs-card-top.adm-docs-ft-img {
	background: #fefce8;
	border-bottom: 2px solid #eab308;
}
.adm-docs-ft-file .adm-docs-card-top,
.adm-docs-card-top.adm-docs-ft-file {
	background: #f8fafc;
	border-bottom: 2px solid #94a3b8;
}

.adm-docs-card-type {
	text-transform: uppercase;
	letter-spacing: .05em;
	color: #475569;
}

/* Visibility badges */
.adm-docs-card-vis,
.adm-docs-list-vis {
	font-size: .65rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .04em;
	padding: .15rem .4rem;
	border-radius: 4px;
}
.adm-docs-vis-board {
	background: #dbeafe;
	color: #1e40af;
}
.adm-docs-vis-committee {
	background: #fef3c7;
	color: #92400e;
}
.adm-docs-vis-public {
	background: #dcfce7;
	color: #166534;
}

/* Card body */
.adm-docs-card-body {
	padding: .75rem;
}

.adm-docs-card-title {
	font-weight: 600;
	font-size: .875rem;
	color: var(--th-ink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	margin-bottom: .25rem;
}

.adm-docs-card-meta {
	font-size: .75rem;
	color: #94a3b8;
	margin-bottom: .6rem;
}

.adm-docs-card-actions {
	display: flex;
	gap: .4rem;
	flex-wrap: wrap;
}

.adm-docs-card-btn {
	padding: .25rem .6rem;
	font-size: .75rem;
	font-weight: 500;
	border: 1px solid var(--th-line);
	border-radius: 6px;
	background: var(--th-card);
	color: var(--th-ink-soft);
	cursor: pointer;
	text-decoration: none;
	transition: all 120ms ease;
	font-family: var(--th-font);
	line-height: 1.4;
	display: inline-flex;
	align-items: center;
}
.adm-docs-card-btn:hover {
	background: var(--th-bg);
	color: var(--th-ink);
	border-color: #cbd5e1;
}

.adm-docs-card-btn-primary {
	background: var(--th-blue);
	color: #fff;
	border-color: var(--th-blue);
}
.adm-docs-card-btn-primary:hover {
	background: var(--th-blue-dark);
	color: #fff;
	border-color: var(--th-blue-dark);
}

.adm-docs-card-btn-danger {
	color: #94a3b8;
	font-size: .85rem;
	font-weight: 700;
	padding: .15rem .45rem;
}
.adm-docs-card-btn-danger:hover {
	color: var(--th-error);
	border-color: var(--th-error);
	background: var(--th-error-bg);
}

/* ── List view ────────────────────────────────────── */
.adm-docs-list {
	display: flex;
	flex-direction: column;
	gap: 0;
}

.adm-docs-list-row {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .65rem .75rem;
	border-bottom: 1px solid var(--th-line);
	transition: background 120ms ease;
}
.adm-docs-list-row:first-child {
	border-top: 1px solid var(--th-line);
}
.adm-docs-list-row:hover {
	background: #f8fafc;
}

/* File type badge in list view */
.adm-docs-list-type {
	font-size: .65rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	padding: .25rem .5rem;
	border-radius: 6px;
	min-width: 38px;
	text-align: center;
	flex-shrink: 0;
}
.adm-docs-list-type.adm-docs-ft-pdf {
	background: #fef2f2;
	color: #dc2626;
}
.adm-docs-list-type.adm-docs-ft-doc {
	background: #eff6ff;
	color: #2563eb;
}
.adm-docs-list-type.adm-docs-ft-xls {
	background: #f0fdf4;
	color: #16a34a;
}
.adm-docs-list-type.adm-docs-ft-img {
	background: #fefce8;
	color: #ca8a04;
}
.adm-docs-list-type.adm-docs-ft-file {
	background: #f1f5f9;
	color: #64748b;
}

.adm-docs-list-info {
	flex: 1;
	min-width: 0;
}

.adm-docs-list-title {
	font-weight: 600;
	font-size: .875rem;
	color: var(--th-ink);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.adm-docs-list-meta {
	font-size: .75rem;
	color: #94a3b8;
}

.adm-docs-list-vis {
	flex-shrink: 0;
}

.adm-docs-list-actions {
	display: flex;
	gap: .35rem;
	flex-shrink: 0;
}

/* ── Empty state ──────────────────────────────────── */
.adm-docs-empty {
	grid-column: 1 / -1;
	text-align: center;
	padding: 3rem 1rem;
	color: #94a3b8;
}
.adm-docs-empty p {
	margin-bottom: 1rem;
	font-size: 1rem;
}

/* ── File-type colored card tops (applied to .adm-docs-card-top parent) ── */
.adm-docs-card.adm-docs-ft-pdf > .adm-docs-card-top,
.adm-docs-card > .adm-docs-card-top.adm-docs-ft-pdf {
	background: #fef2f2;
	border-bottom: 2px solid #ef4444;
}
.adm-docs-card.adm-docs-ft-doc > .adm-docs-card-top,
.adm-docs-card > .adm-docs-card-top.adm-docs-ft-doc {
	background: #eff6ff;
	border-bottom: 2px solid #3b82f6;
}
.adm-docs-card.adm-docs-ft-xls > .adm-docs-card-top,
.adm-docs-card > .adm-docs-card-top.adm-docs-ft-xls {
	background: #f0fdf4;
	border-bottom: 2px solid #22c55e;
}
.adm-docs-card.adm-docs-ft-img > .adm-docs-card-top,
.adm-docs-card > .adm-docs-card-top.adm-docs-ft-img {
	background: #fefce8;
	border-bottom: 2px solid #eab308;
}

/* Mobile hamburger toggle */
.th-mobile-toggle {
	display: none;
	position: fixed;
	top: .75rem; left: .75rem;
	z-index: 50;
	border: none;
	background: #fff;
	box-shadow: 0 1px 4px rgba(0,0,0,.12);
	border-radius: .5rem;
	padding: .5rem;
	cursor: pointer;
	color: #334155;
	line-height: 0;
}
.th-mobile-close {
	display: none;
	border: none;
	background: none;
	cursor: pointer;
	color: #94a3b8;
	padding: .25rem;
	line-height: 0;
	flex-shrink: 0;
}
.th-mobile-close:hover { color: #334155; }
.sidebar-top-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 2rem;
}
.sidebar-top-row .sidebar-logo { margin-bottom: 0; }
.th-sidebar-backdrop {
	display: none;
	position: fixed;
	inset: 0;
	background: rgba(0,0,0,.35);
	z-index: 9;
}
.th-sidebar-backdrop.open { display: block; }

@media (max-width: 768px) {
	.th-mobile-toggle { display: block; }
	.th-mobile-close { display: block; }
	.th-sidebar {
		transform: translateX(-100%);
		transition: transform .25s ease;
		z-index: 20;
	}
	.th-sidebar.open {
		transform: translateX(0);
	}
	.th-dashboard { margin-left: 0; }
	.th-dashboard-content { padding-top: 3.5rem; }
	.welcome-banner { flex-direction: column; text-align: center; }
	.welcome-left { flex-direction: column; }
	.welcome-right { text-align: center; }
	.evt-card { flex-direction: column; gap: .75rem; }
	.evt-card-footer { flex-direction: column; align-items: flex-start; }
	.evt-rsvp-buttons { flex-wrap: wrap; }
	.adm-overview-grid { grid-template-columns: 1fr; }
	.th-pub-sponsor-logos { gap: 1rem; padding: 1rem; }
	.th-pub-sponsor-logo img { max-width: 140px !important; max-height: 80px !important; }
	.th-pub-register-btn { padding: 12px 24px !important; font-size: 1rem !important; }
	.adm-topbar { flex-direction: column; gap: .5rem; text-align: center; padding: .5rem .75rem; }
	.adm-topbar-left { flex-direction: column; gap: .4rem; }
	.adm-topbar-right { justify-content: center; }
	.adm-topbar-wp { display: none; }
	/* Documents layout — stack sidebar above main on mobile */
	.adm-docs-layout { flex-direction: column; }
	.adm-docs-collapse-btn { display: none; }
	.adm-docs-sidebar { width: 100% !important; min-width: 0 !important; border-right: none; border-bottom: 1px solid var(--th-line); overflow: visible !important; }
	.adm-docs-folder-list { display: flex; flex-wrap: wrap; gap: 0; padding: .25rem .5rem; }
	.adm-docs-folder-item { padding: .35rem .65rem; font-size: .8rem; border-radius: 6px; }
	.adm-docs-folder-item.active { border-radius: 6px; }
	.adm-docs-folder-del { display: none !important; }
	.adm-docs-sidebar-foot { text-align: center; }
	.adm-docs-main { padding: 1rem; }
	.adm-docs-grid { grid-template-columns: 1fr 1fr; }
	.adm-docs-main-header { flex-direction: column; gap: .5rem; align-items: flex-start; }
}

/* ----------------------------------------------------------------
   Profile photo avatars
   ---------------------------------------------------------------- */
img.welcome-photo {
	width: 80px;
	height: 80px;
	border-radius: 50%;
	border: 3px solid rgba(255,255,255,.3);
	object-fit: cover;
	flex-shrink: 0;
}
img.sidebar-avatar {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	object-fit: cover;
	flex-shrink: 0;
}
img.dir-avatar {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	object-fit: cover;
	flex-shrink: 0;
}

/* Profile page */
.profile-photo-section { text-align: center; margin-bottom: 1.5rem; }
.profile-photo-current { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; margin: 0 auto 1rem; display: block; border: 3px solid var(--th-blue); }
.profile-photo-initials { width: 120px; height: 120px; border-radius: 50%; background: var(--th-blue); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 2.5rem; margin: 0 auto 1rem; }

/* Profile page two-column layout */
.profile-layout {
	display: grid;
	grid-template-columns: 320px 1fr;
	gap: 1.5rem;
	align-items: start;
}
@media (max-width: 768px) {
	.profile-layout {
		grid-template-columns: 1fr;
	}
}
.profile-photo-card { min-width: 0; }
.profile-details-card { min-width: 0; }

.profile-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
	margin-bottom: 1rem;
}
@media (max-width: 600px) {
	.profile-form-row {
		grid-template-columns: 1fr;
	}
}

/* Committee badges on profile */
.profile-committees-list {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin-top: .5rem;
}
.profile-committee-badge {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	padding: .35rem .75rem;
	background: var(--th-blue-bg, #e8f0fe);
	border-radius: 20px;
	font-size: .8125rem;
}
.profile-committee-name {
	font-weight: 600;
	color: var(--th-blue);
}
.profile-committee-role {
	font-weight: 400;
	color: var(--th-ink-soft);
	font-size: .75rem;
}

/* ----------------------------------------------------------------
   REPORT CARDS (Admin tab)
   ---------------------------------------------------------------- */
.rc-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 1rem;
	margin-top: 1rem;
}
.rc-card {
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: .75rem;
	padding: 1.25rem;
}
.rc-card-header {
	display: flex;
	align-items: center;
	gap: .75rem;
	margin-bottom: .75rem;
}
.rc-avatar {
	width: 40px; height: 40px;
	border-radius: 50%;
	object-fit: cover;
	flex-shrink: 0;
}
.rc-avatar--initials {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--th-blue);
	color: #fff;
	font-weight: 700;
	font-size: .75rem;
}
.rc-name-block { min-width: 0; }
.rc-name {
	font-weight: 600;
	font-size: .875rem;
	color: #334155;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.rc-pct { font-size: .75rem; color: #64748b; }

/* Progress bar */
.rc-progress-track {
	height: 8px;
	background: #f1f5f9;
	border-radius: 4px;
	overflow: hidden;
	margin-bottom: .75rem;
}
.rc-progress-fill {
	height: 100%;
	border-radius: 4px;
	transition: width .3s ease;
	min-width: 2px;
}

/* Stat chips */
.rc-stats {
	display: flex;
	gap: .5rem;
	flex-wrap: wrap;
}
.rc-stat {
	font-size: .75rem;
	font-weight: 600;
	color: #334155;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: .375rem;
	padding: .25rem .5rem;
	display: flex;
	align-items: center;
	gap: .25rem;
}
.rc-stat small {
	font-weight: 400;
	color: #94a3b8;
}
.rc-stat--green { color: #059669; background: #ecfdf5; border-color: #a7f3d0; }
.rc-stat--amber { color: #d97706; background: #fffbeb; border-color: #fde68a; }
.rc-stat--red   { color: #dc2626; background: #fef2f2; border-color: #fecaca; }

/* Zero-task members */
.rc-zero-members {
	grid-column: 1 / -1;
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	align-items: center;
	font-size: .8125rem;
	color: #94a3b8;
	padding: .5rem 0;
}
.rc-zero-label { font-weight: 500; }
.rc-zero-name {
	background: #f1f5f9;
	padding: .125rem .5rem;
	border-radius: .25rem;
	font-size: .75rem;
}

/* Activity feed */
.rc-feed {
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: .75rem;
	overflow: hidden;
	margin-top: .75rem;
}
.rc-feed-item {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .75rem 1rem;
	border-bottom: 1px solid #f1f5f9;
	font-size: .8125rem;
}
.rc-feed-item:last-child { border-bottom: none; }
.rc-feed-icon {
	width: 24px; height: 24px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: .7rem;
	flex-shrink: 0;
}
.rc-feed-icon--done { background: #ecfdf5; color: #059669; }
.rc-feed-icon--reopen { background: #fffbeb; color: #d97706; }
.rc-feed-body {
	flex: 1;
	min-width: 0;
	color: #334155;
}
.rc-feed-body em {
	font-style: normal;
	color: #64748b;
}
.rc-feed-time {
	font-size: .7rem;
	color: #94a3b8;
	white-space: nowrap;
	flex-shrink: 0;
}

/* ================================================================
   View As – floating toolbar + active banner
   ================================================================ */

/* Trigger button — fixed at bottom-right */
.th-view-as-toolbar {
	position: fixed;
	bottom: 24px;
	right: 24px;
	z-index: 9000;
}
.th-view-as-trigger {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 14px;
	background: #1e293b;
	color: #fff;
	border: none;
	border-radius: 8px;
	font-size: .8rem;
	font-weight: 600;
	cursor: pointer;
	box-shadow: 0 4px 12px rgba(0,0,0,.25);
	transition: background .15s;
}
.th-view-as-trigger:hover {
	background: #334155;
}
.th-view-as-trigger svg {
	flex-shrink: 0;
}

/* Dropdown panel */
.th-view-as-panel {
	position: absolute;
	bottom: calc(100% + 10px);
	right: 0;
	width: 300px;
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: 10px;
	box-shadow: 0 8px 24px rgba(0,0,0,.15);
	padding: 16px;
}

.th-va-field {
	margin-bottom: 12px;
}
.th-va-label {
	display: block;
	font-size: .75rem;
	font-weight: 600;
	color: #475569;
	margin-bottom: 4px;
	text-transform: uppercase;
	letter-spacing: .04em;
}
.th-va-select {
	width: 100%;
	padding: 7px 10px;
	border: 1px solid #cbd5e1;
	border-radius: 6px;
	font-size: .82rem;
	color: #1e293b;
	background: #fff;
}
.th-va-select:focus {
	outline: none;
	border-color: #6366f1;
	box-shadow: 0 0 0 3px rgba(99,102,241,.15);
}

.th-va-checkbox-group {
	display: flex;
	flex-direction: column;
	gap: 4px;
	max-height: 140px;
	overflow-y: auto;
	padding: 4px 0;
}
.th-va-checkbox-label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: .8rem;
	color: #334155;
	cursor: pointer;
}
.th-va-checkbox-label input[type="checkbox"] {
	accent-color: #6366f1;
}
.th-va-hint {
	display: block;
	font-size: .7rem;
	color: #94a3b8;
	margin-top: 4px;
}

.th-va-start-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	width: 100%;
	justify-content: center;
	padding: 8px 14px;
	background: #6366f1;
	color: #fff;
	border: none;
	border-radius: 6px;
	font-size: .82rem;
	font-weight: 600;
	cursor: pointer;
	transition: background .15s;
}
.th-va-start-btn:hover {
	background: #4f46e5;
}

/* Active banner — fixed at top of viewport */
.th-view-as-banner {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 9100;
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 20px;
	background: linear-gradient(135deg, #6366f1, #8b5cf6);
	color: #fff;
	font-size: .82rem;
	font-weight: 500;
	box-shadow: 0 2px 8px rgba(99,102,241,.3);
}
.th-view-as-banner svg {
	flex-shrink: 0;
}
.th-view-as-label {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.th-view-as-exit-form {
	flex-shrink: 0;
}
.th-view-as-exit-btn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 4px 12px;
	background: rgba(255,255,255,.2);
	color: #fff;
	border: 1px solid rgba(255,255,255,.3);
	border-radius: 5px;
	font-size: .78rem;
	font-weight: 600;
	cursor: pointer;
	transition: background .15s;
}
.th-view-as-exit-btn:hover {
	background: rgba(255,255,255,.35);
}

/* Push dashboard content down when banner is active */
body.th-portal.th-view-as-active .th-sidebar {
	top: 40px;
	height: calc(100vh - 40px);
}
body.th-portal.th-view-as-active .th-dashboard-content {
	padding-top: 56px;
}
body.th-portal.th-view-as-active .th-mobile-toggle {
	top: 52px;
}

/* Mobile adjustments */
@media (max-width: 768px) {
	.th-view-as-toolbar {
		bottom: 16px;
		right: 16px;
	}
	.th-view-as-panel {
		width: 280px;
		right: -8px;
	}
	.th-view-as-banner {
		font-size: .75rem;
		padding: 6px 12px;
		gap: 6px;
	}
}
