/* assets/v21/legal.css — cookie banner, settings sheet, legal notes and the
   seller strip (inc/v21-legal.php). Tokens from assets/v21.css, DESIGN.md. */

.pl-cc[hidden], .pl-cc-dialog[hidden] { display: none !important; }

/* Banner: non-blocking bottom sheet on phones, floating bar from 768px. */
.pl-cc {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 2147483000; /* above tawk + sticky buy bar */
	font-family: var(--v-font);
	color: var(--v-text);
}
.pl-cc-inner {
	background: var(--v-surface);
	border: 1px solid var(--v-line);
	border-radius: var(--v-radius-lg) var(--v-radius-lg) 0 0;
	box-shadow: 0 -8px 30px -10px rgb(14 32 65 / 0.3);
	padding: 16px var(--v-gutter) calc(14px + env(safe-area-inset-bottom));
}
.pl-cc-title { margin: 0 0 4px; font-size: 1.05rem; font-weight: 700; line-height: 1.25; color: var(--v-ink); }
.pl-cc-text { margin: 0; font-size: 0.88rem; line-height: 1.5; }
.pl-cc-text a { color: var(--v-navy); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.pl-cc-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
.pl-cc-btn {
	min-height: 44px;
	padding: 0 16px;
	border: 0;
	border-radius: 10px;
	font: 600 0.92rem/1.2 var(--v-font);
	cursor: pointer;
	transition: background-color 0.15s ease;
}
.pl-cc-btn:focus-visible, .pl-cc-x:focus-visible, .pl-cc-switch:focus-visible { outline: 2px solid var(--v-accent); outline-offset: 2px; }
/* Accept and reject get the same size, weight and a solid fill each. */
.pl-cc-btn--solid, .pl-cc-btn--solid:focus { background: var(--v-navy); color: #fff; }
.pl-cc-btn--solid:hover { background: var(--v-ink); color: #fff; }
.pl-cc-btn--accent, .pl-cc-btn--accent:focus { background: var(--v-accent); color: #fff; }
.pl-cc-btn--accent:hover { background: var(--v-accent-hover); color: #fff; }
.pl-cc-btn--quiet, .pl-cc-btn--quiet:focus { grid-column: 1 / -1; background: var(--v-panel); color: var(--v-ink); }
.pl-cc-btn--quiet:hover { background: #E2E8F1; color: var(--v-ink); }

@media (min-width: 768px) {
	.pl-cc { left: 20px; right: 20px; bottom: 20px; }
	.pl-cc-inner {
		max-width: var(--v-max);
		margin: 0 auto;
		display: flex;
		align-items: center;
		gap: 24px;
		border-radius: var(--v-radius-lg);
		padding: 18px 20px;
		box-shadow: var(--v-shadow-lg);
	}
	.pl-cc-copy { flex: 1; }
	.pl-cc-actions { display: flex; margin-top: 0; flex: none; }
	.pl-cc-btn--quiet { order: -1; }
}

/* Settings: modal sheet (user-opened). */
.pl-cc-dialog { position: fixed; inset: 0; z-index: 2147483001; display: flex; align-items: flex-end; justify-content: center; font-family: var(--v-font); color: var(--v-text); }
.pl-cc-backdrop { position: absolute; inset: 0; background: rgb(14 32 65 / 0.5); }
.pl-cc-panel {
	position: relative;
	width: 100%;
	max-height: 90dvh;
	overflow-y: auto;
	margin: 0;
	background: var(--v-surface);
	border-radius: var(--v-radius-lg) var(--v-radius-lg) 0 0;
	padding: 18px var(--v-gutter) calc(16px + env(safe-area-inset-bottom));
}
@media (min-width: 768px) {
	.pl-cc-dialog { align-items: center; padding: 20px; }
	.pl-cc-panel { max-width: 560px; border-radius: var(--v-radius-lg); padding: 22px 24px; }
}
.pl-cc-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.pl-cc-head .pl-cc-title { margin: 0; font-size: 1.2rem; }
.pl-cc-x { width: 44px; height: 44px; margin: -8px -10px -8px 0; border: 0; border-radius: 10px; background: transparent; color: var(--v-ink); font-size: 1.6rem; line-height: 1; cursor: pointer; }
.pl-cc-x:focus { background: transparent; color: var(--v-ink); }
.pl-cc-x:hover { background: var(--v-panel); color: var(--v-ink); }
.pl-cc-cats { list-style: none; margin: 0; padding: 0; }
.pl-cc-cat { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--v-line); }
.pl-cc-cat label { cursor: pointer; }
.pl-cc-cat strong { display: block; color: var(--v-ink); font-size: 0.95rem; }
.pl-cc-cat p { margin: 2px 0 0; font-size: 0.84rem; line-height: 1.45; color: var(--v-muted); }
.pl-cc-on { flex: none; font-size: 0.8rem; font-weight: 600; color: var(--v-green); padding-top: 2px; }
.pl-cc-panel .pl-cc-actions { margin-top: 16px; display: grid; }
.pl-cc-panel .pl-cc-btn--accent, .pl-cc-panel .pl-cc-btn--solid { width: 100%; }

/* Toggle switch, 44px wide hit area. */
.pl-cc-switch {
	appearance: none;
	flex: none;
	position: relative;
	width: 44px; height: 26px;
	margin: 0;
	border-radius: 999px;
	background: #C9D2DE;
	cursor: pointer;
	transition: background-color 0.15s ease;
}
.pl-cc-switch::after {
	content: "";
	position: absolute; top: 3px; left: 3px;
	width: 20px; height: 20px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 2px rgb(14 32 65 / 0.3);
	transition: transform 0.15s ease;
}
.pl-cc-switch:checked { background: var(--v-navy); }
.pl-cc-switch:checked::after { transform: translateX(18px); }
@media (prefers-reduced-motion: reduce) { .pl-cc-switch, .pl-cc-switch::after, .pl-cc-btn { transition: none; } }

html.pl-cc-locked { overflow: hidden; }

/* Consent notes injected above form submit buttons. */
.pl-legal-note { margin: 0 0 10px; font-size: 0.8rem; line-height: 1.45; color: var(--v-muted); }
.pl-legal-note a { color: var(--v-navy); text-decoration: underline; text-underline-offset: 2px; }

/* Seller identification strip under the footer. */
.pl-legal-strip { background: var(--v-ink); color: rgb(255 255 255 / 0.62); font: 0.78rem/1.5 var(--v-font); border-top: 1px solid rgb(255 255 255 / 0.12); }
.pl-legal-strip-inner {
	max-width: calc(var(--v-max) + 2 * var(--v-gutter));
	margin: 0 auto;
	padding: 12px var(--v-gutter) 16px;
	display: flex; flex-wrap: wrap; gap: 4px 20px; justify-content: space-between;
}
.pl-legal-strip p { margin: 0; overflow-wrap: anywhere; }
.pl-legal-strip a { color: rgb(255 255 255 / 0.74); text-decoration: underline; text-underline-offset: 2px; }
.pl-legal-strip a:hover { color: #fff; }

/* Chat launcher shown instead of tawk/UnicFlux until the visitor consents or
   presses it (same spot as tawk's own launcher). */
.pl-chat-btn {
	position: fixed; right: 15px; bottom: 70px; z-index: 2147482000;
	width: 60px; height: 60px; border: 0; border-radius: 50%; padding: 0;
	display: grid; place-items: center; cursor: pointer;
	background: var(--v-accent); color: #fff; box-shadow: 0 6px 20px rgba(0,0,0,.2);
}
.pl-chat-btn[hidden] { display: none; }
.pl-chat-btn:hover { background: var(--v-accent-hover); }
.pl-chat-btn:focus-visible { outline: 2px solid var(--v-accent); outline-offset: 3px; }
@media (max-width: 767px) { body:has(.printerland-mobile-buy-bar) .pl-chat-btn { bottom: 84px; } }
