/**
 * Atomicdust Consent — banner + modal styles.
 *
 * Design: minimal, bottom-anchored bar. Three equal-weight buttons.
 * All selectors scoped under #adc-root and use !important on critical visual
 * properties to defend against theme CSS (buttons, forms, etc.) overriding us.
 * Equal-weight buttons are a CPRA requirement (no dark patterns for Reject).
 */

:root {
	--adc-accent: #000;
	--adc-bg: #ffffff;
	--adc-fg: #111418;
	--adc-muted: #6b7280;
	--adc-border: #d1d5db;
	--adc-hover: #f5f5f5;
	--adc-radius: 6px;
	--adc-shadow: 0 -1px 0 rgba(0,0,0,0.04), 0 -8px 32px rgba(0,0,0,0.08);
	--adc-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--adc-fs: 14px;
	--adc-lh: 1.5;
}

#adc-root, #adc-root *, .adc-modal, .adc-modal * { box-sizing: border-box; }

/* ---------- bottom bar ---------- */
#adc-root .adc-bar {
	position: fixed !important;
	left: 0; right: 0; bottom: 0;
	z-index: 2147483000;
	background: var(--adc-bg) !important;
	color: var(--adc-fg) !important;
	border-top: 1px solid var(--adc-border);
	box-shadow: var(--adc-shadow);
	font-family: var(--adc-font) !important;
	font-size: var(--adc-fs);
	line-height: var(--adc-lh);
	transform: translateY(100%);
	transition: transform 260ms cubic-bezier(.2,.8,.2,1);
	text-align: left;
}
#adc-root .adc-bar.adc-bar-visible { transform: translateY(0); }

#adc-root .adc-bar-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 16px 24px;
	display: flex;
	align-items: center;
	gap: 24px;
}
#adc-root .adc-bar-copy { flex: 1; min-width: 0; }
#adc-root .adc-bar-body {
	margin: 0 !important;
	color: var(--adc-fg) !important;
	font-size: var(--adc-fs) !important;
	line-height: var(--adc-lh) !important;
	font-weight: 400 !important;
}
#adc-root .adc-bar-links {
	display: inline-block;
	margin-left: 4px;
	font-size: 13px;
}
#adc-root .adc-bar-links .adc-link {
	color: var(--adc-muted) !important;
	text-decoration: underline !important;
	text-underline-offset: 2px;
}
#adc-root .adc-bar-links .adc-link:hover { color: var(--adc-fg) !important; }

#adc-root .adc-bar-actions {
	display: flex;
	gap: 8px;
	flex-shrink: 0;
}

/* ---------- buttons ---------- */
/* Aggressive reset + explicit styling to beat theme button rules. */
#adc-root .adc-btn,
.adc-modal .adc-btn {
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	font-family: var(--adc-font) !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	text-decoration: none !important;
	padding: 10px 16px !important;
	min-height: 40px !important;
	min-width: 96px !important;
	height: auto !important;
	line-height: 1.2 !important;
	border-radius: var(--adc-radius) !important;
	border: 1px solid var(--adc-border) !important;
	background: var(--adc-bg) !important;
	color: var(--adc-fg) !important;
	cursor: pointer !important;
	transition: background 120ms ease, border-color 120ms ease, transform 80ms ease;
	white-space: nowrap;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	box-shadow: none !important;
	text-shadow: none !important;
	opacity: 1 !important;
}
#adc-root .adc-btn:hover,
.adc-modal .adc-btn:hover { background: var(--adc-hover) !important; }
#adc-root .adc-btn:focus,
.adc-modal .adc-btn:focus,
#adc-root .adc-btn:focus-visible,
.adc-modal .adc-btn:focus-visible {
	outline: 2px solid var(--adc-accent) !important;
	outline-offset: 2px !important;
}
#adc-root .adc-btn:active,
.adc-modal .adc-btn:active { transform: translateY(1px); }

/* Accept is the accent color. Reject + Preferences are outline buttons with
   EQUAL visual weight — same size, same border thickness, same typography.
   Per CPRA guidance, Reject must not be less prominent than Accept. */
#adc-root .adc-btn-accept,
.adc-modal .adc-btn-accept {
	background: var(--adc-accent) !important;
	color: #ffffff !important;
	border-color: var(--adc-accent) !important;
}
#adc-root .adc-btn-accept:hover,
.adc-modal .adc-btn-accept:hover {
	background: var(--adc-accent) !important;
	filter: brightness(1.1);
}

/* Reject is explicitly bordered (no "less than" a button like a text link).
   Same dimensions as Accept; just different color scheme. */
#adc-root .adc-btn-reject,
.adc-modal .adc-btn-reject {
	background: var(--adc-bg) !important;
	color: var(--adc-fg) !important;
	border: 1px solid var(--adc-fg) !important;
}
#adc-root .adc-btn-reject:hover,
.adc-modal .adc-btn-reject:hover {
	background: var(--adc-fg) !important;
	color: var(--adc-bg) !important;
}

#adc-root .adc-btn-prefs,
.adc-modal .adc-btn-prefs {
	background: var(--adc-bg) !important;
	color: var(--adc-fg) !important;
	border: 1px solid var(--adc-border) !important;
}

/* ---------- preferences modal ---------- */
.adc-modal {
	position: fixed !important;
	inset: 0;
	top: 0; left: 0; right: 0; bottom: 0;
	z-index: 2147483001;
	display: flex !important;
	align-items: center;
	justify-content: center;
	font-family: var(--adc-font) !important;
	font-size: var(--adc-fs);
	line-height: var(--adc-lh);
	opacity: 0;
	transition: opacity 200ms ease;
}
.adc-modal.adc-modal-visible { opacity: 1; }
.adc-modal-backdrop {
	position: absolute !important;
	inset: 0;
	top: 0; left: 0; right: 0; bottom: 0;
	background: rgba(15, 18, 23, 0.55);
	backdrop-filter: blur(2px);
}
.adc-modal-panel {
	position: relative !important;
	background: var(--adc-bg) !important;
	color: var(--adc-fg) !important;
	max-width: 560px;
	width: calc(100% - 32px);
	max-height: calc(100vh - 64px);
	overflow-y: auto;
	padding: 28px 28px 24px;
	border-radius: 10px !important;
	box-shadow: 0 20px 60px rgba(0,0,0,0.35) !important;
	transform: translateY(12px);
	transition: transform 240ms cubic-bezier(.2,.8,.2,1);
	text-align: left;
}
.adc-modal.adc-modal-visible .adc-modal-panel { transform: translateY(0); }

.adc-modal-close {
	position: absolute !important;
	top: 10px; right: 12px;
	background: transparent !important;
	border: 0 !important;
	font-size: 28px !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	color: var(--adc-muted) !important;
	cursor: pointer !important;
	padding: 6px 10px !important;
	border-radius: 6px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	box-shadow: none !important;
}
.adc-modal-close:hover { color: var(--adc-fg) !important; background: var(--adc-hover) !important; }

.adc-modal-title {
	margin: 0 0 20px !important;
	font-size: 20px !important;
	font-weight: 600 !important;
	letter-spacing: -0.01em;
	color: var(--adc-fg) !important;
}

.adc-cats { display: flex; flex-direction: column; gap: 2px; }
.adc-cat {
	padding: 14px 0;
	border-top: 1px solid var(--adc-border);
}
.adc-cat:first-child { border-top: 0; padding-top: 8px; }
.adc-cat-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 4px;
}
.adc-cat-label {
	font-weight: 600 !important;
	cursor: pointer;
	color: var(--adc-fg) !important;
}
.adc-cat-desc {
	margin: 0 !important;
	color: var(--adc-muted) !important;
	font-size: 13px !important;
}

/* toggle switch */
.adc-switch {
	position: relative;
	display: inline-block;
	width: 40px;
	height: 22px;
	flex-shrink: 0;
	cursor: pointer;
}
.adc-switch input {
	position: absolute;
	opacity: 0;
	inset: 0;
	cursor: pointer;
	margin: 0;
}
.adc-switch-track {
	position: absolute;
	inset: 0;
	background: var(--adc-border);
	border-radius: 999px;
	transition: background 180ms ease;
}
.adc-switch-thumb {
	position: absolute;
	top: 2px; left: 2px;
	width: 18px; height: 18px;
	background: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 3px rgba(0,0,0,0.2);
	transition: transform 180ms ease;
}
.adc-switch input:checked + .adc-switch-track { background: var(--adc-accent); }
.adc-switch input:checked + .adc-switch-track .adc-switch-thumb { transform: translateX(18px); }
.adc-switch-locked { opacity: 0.6; cursor: not-allowed; }
.adc-switch-locked input { cursor: not-allowed; }
.adc-switch:focus-within .adc-switch-track { box-shadow: 0 0 0 2px var(--adc-accent); }

.adc-modal-actions {
	display: flex;
	gap: 8px;
	justify-content: flex-end;
	margin-top: 24px;
	padding-top: 16px;
	border-top: 1px solid var(--adc-border);
}

/* ---------- persistent floating settings button ---------- */
#adc-root .adc-floater {
	position: fixed !important;
	bottom: 16px; left: 16px;
	z-index: 2147482999;
	width: 44px !important;
	height: 44px !important;
	min-width: 44px !important;
	min-height: 44px !important;
	padding: 0 !important;
	border-radius: 50% !important;
	border: 1px solid var(--adc-border) !important;
	background: var(--adc-bg) !important;
	color: var(--adc-fg) !important;
	font-size: 20px !important;
	cursor: pointer !important;
	box-shadow: 0 2px 8px rgba(0,0,0,0.12) !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	opacity: 0.75;
	transition: opacity 120ms ease, transform 120ms ease;
}
#adc-root .adc-floater:hover { opacity: 1; transform: translateY(-1px); }

/* ---------- responsive ---------- */
@media (max-width: 720px) {
	#adc-root .adc-bar-inner {
		flex-direction: column;
		align-items: stretch;
		padding: 14px 16px;
		gap: 12px;
	}
	#adc-root .adc-bar-actions { flex-wrap: wrap; }
	#adc-root .adc-btn { flex: 1 1 calc(33% - 8px); min-width: 0 !important; padding: 10px 12px !important; }
	.adc-modal-panel { padding: 20px 18px; }
	.adc-modal-actions { flex-wrap: wrap; }
	.adc-modal-actions .adc-btn { flex: 1 1 calc(33% - 8px); min-width: 0 !important; }
}

@media (prefers-reduced-motion: reduce) {
	#adc-root .adc-bar, .adc-modal, .adc-modal-panel, .adc-switch-thumb, .adc-switch-track { transition: none !important; }
}
