.dib-link {
	display: inline;
	padding: 0;
	background: none;
	color: #820422;
	font: inherit;
	text-transform: none;
	text-decoration: underline;
}
.dib-error { color: #820422; margin: 8px 0; }

/* Consents section of the card form: one framed row of three agreements; publication is a state with an action. */
.dib-consents { margin-top: 12px; }
.dib-agreements { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.3fr); margin: 8px 0 4px; border: 1px solid var(--dib-line); background: #fff; }
.dib-consents .dib-agreement {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	padding: 16px 18px;
	font-size: 15px;
	font-weight: 300;
	line-height: 1.45;
	cursor: pointer;
}
.dib-agreement + .dib-agreement { border-left: 1px solid var(--dib-line); }
.dib-consents .dib-agreement input {
	position: static;
	flex: none;
	width: 18px;
	height: 18px;
	margin: 0;
	opacity: 1;
	appearance: auto;
	accent-color: var(--dib-brand);
	transform: translateY(2px);
}
.dib-agreement__text { display: flex; flex: 1 1 auto; flex-direction: column; gap: 2px; min-width: 0; }
.dib-consents .dib-agreement a { color: var(--dib-brand); text-decoration: underline; text-underline-offset: 3px; border: 0; overflow-wrap: normal; word-break: normal; }
.dib-agreement__state { font-size: 13px; color: var(--dib-muted); }
.dib-agreement__state--error { color: var(--dib-brand); }
.dib-agreement.is-missing { background: var(--dib-brand-tint); box-shadow: inset 3px 0 0 var(--dib-brand); }
.dib-agreement.is-missing .dib-agreement__state { color: var(--dib-brand); }
.dib-consents .dib-agreement--publication { flex-wrap: wrap; align-items: center; cursor: default; }
/* A round status mark, deliberately unlike a checkbox: this item is set in the window, not ticked here. */
.dib-agreement__mark { position: relative; flex: none; width: 18px; height: 18px; border: 1.5px dashed #9a9a9e; border-radius: 50%; align-self: flex-start; transform: translateY(2px); }
.dib-agreement.is-done .dib-agreement__mark { border-style: solid; }
.dib-agreement.is-done .dib-agreement__mark { border-color: var(--dib-brand); background: var(--dib-brand); }
.dib-agreement.is-done .dib-agreement__mark::after { content: '\2713'; position: absolute; inset: 0; color: #fff; font-size: 13px; font-weight: 600; line-height: 15px; text-align: center; }
.dib-agreement.is-done .dib-agreement__state { color: var(--dib-ok); }
.dib-consents .dib-agreement__action {
	display: inline-block;
	margin-left: auto;
	padding: 9px 16px;
	border: 1px solid var(--dib-brand);
	background: var(--dib-brand);
	color: #fff;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.2;
	text-transform: none;
	white-space: nowrap;
	transition: background-color .15s ease, color .15s ease;
}
.dib-consents .dib-agreement__action:hover { background: #63031a; border-color: #63031a; }
.dib-consents .is-done .dib-agreement__action { background: transparent; color: var(--dib-brand); }
.dib-consents .is-done .dib-agreement__action:hover { background: var(--dib-brand-tint); border-color: var(--dib-brand); }
.dib-consents :focus-visible { outline: 2px solid var(--dib-ink); outline-offset: 2px; }
@media (max-width: 991px) {
	.dib-agreements { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
	.dib-agreement--publication { grid-column: 1 / -1; border-left: 0 !important; border-top: 1px solid var(--dib-line); }
}
@media (max-width: 575px) {
	.dib-agreements { grid-template-columns: minmax(0, 1fr); }
	.dib-agreement + .dib-agreement { border-left: 0; border-top: 1px solid var(--dib-line); }
}
@media (prefers-reduced-motion: reduce) {
	.dib-consents .dib-agreement__action { transition: none; }
}

/* Consent window: site palette (ink #272c31, burgundy #820422, borders #d0d0d0), Rubik from the template. */
.dib-dialog, .dib-consents, .elk-consent {
	--dib-ink: #272c31;
	--dib-brand: #820422;
	--dib-brand-tint: #f9eef0;
	--dib-line: #d0d0d0;
	--dib-rule: #ececec;
	--dib-muted: #6f6f73;
	--dib-surface: #f6f6f7;
	--dib-ok: #2e6b45;
	--dib-gap: 40px;
}
.dib-dialog {
	width: 880px;
	max-width: 100%;
	padding: 32px var(--dib-gap) 0;
	color: var(--dib-ink);
}
/* Fancybox makes the inline block its content; visible overflow lets the footer stick to the scrolling slide. */
.dib-dialog.fancybox-content { padding: 32px var(--dib-gap) 0; overflow: visible; margin-bottom: var(--dib-notice, 0px); }
.dib-dialog :focus-visible { outline: 2px solid var(--dib-ink); outline-offset: 2px; }

.dib-dialog .dib-dialog__head { position: static; max-width: 62ch; margin: 0; padding: 0; border: 0; background: none; }
.dib-dialog__title { margin: 0 0 8px; font-size: 24px; font-weight: 500; line-height: 1.25; }
.dib-dialog__intro { margin: 0; font-size: 15px; font-weight: 300; line-height: 1.55; color: var(--dib-muted); }

.dib-step { min-width: 0; margin: 28px 0 0; padding: 28px 0 0; border: 0; border-top: 1px solid var(--dib-rule); }
.dib-step__title {
	float: left;
	width: 100%;
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 6px;
	padding: 0;
	font-size: 18px;
	font-weight: 500;
	line-height: 1.3;
	color: var(--dib-ink);
}
.dib-step__title + * { clear: both; }
.dib-step__no {
	display: inline-flex;
	flex: none;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border: 1.5px solid var(--dib-ink);
	border-radius: 50%;
	font-size: 14px;
	font-weight: 500;
	line-height: 1;
}
.dib-step--invalid .dib-step__no { border-color: var(--dib-brand); background: var(--dib-brand); color: #fff; }
.dib-step__body { margin-left: 40px; }
.dib-step__hint { margin: 0 0 12px; font-size: 14px; font-weight: 300; line-height: 1.5; color: var(--dib-muted); }

.dib-dialog__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; padding-top: 8px; }
.dib-dialog .dib-field { display: block; margin: 0; font-size: 14px; font-weight: 400; line-height: 1.4; }
.dib-dialog .dib-field input, .dib-dialog .dib-field textarea { max-width: none; margin-top: 6px; color: var(--dib-ink); }
.dib-dialog .dib-field textarea { height: 88px; }
.dib-dialog .dib-field--invalid input { border-color: var(--dib-brand); box-shadow: inset 3px 0 0 var(--dib-brand); }
.dib-field-error { margin: 6px 0 0; font-size: 13px; font-weight: 400; line-height: 1.4; color: var(--dib-brand); }
.dib-field-hint { display: block; margin-top: 6px; font-size: 13px; font-weight: 300; line-height: 1.4; color: var(--dib-muted); }

.dib-phone { display: flex; align-items: stretch; margin-top: 6px; }
.dib-phone__plus {
	display: flex;
	align-items: center;
	padding: 0 4px 0 14px;
	border: 1px solid var(--dib-line);
	border-right: 0;
	background: #fff;
	font-size: 16px;
	font-weight: 300;
}
.dib-dialog .dib-phone input { margin-top: 0; }
.dib-dialog .dib-phone .dib-phone-code { flex: 0 0 56px; max-width: 56px; padding-left: 4px; padding-right: 8px; border-left: 0; }
.dib-dialog .dib-phone input + input { flex: 1 1 auto; min-width: 0; }
.dib-field--invalid .dib-phone__plus { border-color: var(--dib-brand); box-shadow: inset 3px 0 0 var(--dib-brand); }
.dib-dialog .dib-field--invalid .dib-phone input { box-shadow: none; }

.dib-dialog .dib-choice {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 10px;
	margin: 0;
	padding: 8px 0;
	font-size: 15px;
	font-weight: 300;
	line-height: 1.45;
	cursor: pointer;
}
.dib-dialog .dib-choice input {
	position: static;
	display: inline-block;
	flex: none;
	width: 18px;
	height: 18px;
	margin: 0;
	opacity: 1;
	appearance: auto;
	accent-color: var(--dib-brand);
	transform: translateY(3px);
}
.dib-dialog .dib-choice > input + span:last-child { flex: 1 1 0; min-width: 0; }
.dib-choice__name { font-weight: 400; }
.dib-choice__value { color: var(--dib-muted); overflow-wrap: anywhere; }
.dib-choice__value--empty { font-style: italic; }
.dib-step--invalid .dib-choice input { outline: 1px solid var(--dib-brand); outline-offset: 1px; }
.dib-custom { display: grid; gap: 14px; margin-top: 12px; padding: 16px 0 0 18px; border-left: 2px solid var(--dib-rule); }
.dib-custom .dib-step__hint { margin: 0; }

.dib-dialog__text {
	max-height: min(52vh, 520px);
	overflow: auto;
	padding: 20px 24px;
	border: 1px solid var(--dib-rule);
	background: var(--dib-surface);
	transition: opacity .2s ease;
}
.dib-dialog__text.is-pending { opacity: .55; }
.dib-legal { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.dib-legal p { margin-bottom: 14px; }
.dib-legal table { width: 100%; border-collapse: collapse; background: #fff; }
.dib-legal th, .dib-legal td { border: 1px solid #b9b9bc; padding: 8px; vertical-align: top; }
.dib-legal dt { font-weight: 600; }

/* The memorable part: a sticky footer that always says what is left before the consent can be saved. */
.dib-dialog__footer {
	position: sticky;
	/* Covers the 6px padding of the fancybox HTML slide, so content never peeks below the footer;
	   --dib-notice (set by dib-card.js) lifts it above the site's fixed statistics notice. */
	bottom: calc(var(--dib-notice, 0px) - 6px);
	z-index: 2;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 14px 24px;
	margin: 28px calc(-1 * var(--dib-gap)) 0;
	padding: 16px var(--dib-gap) 22px;
	border-top: 1px solid var(--dib-line);
	background: #fff;
	box-shadow: 0 -10px 18px -14px rgba(39, 44, 49, .35);
}
.dib-status { flex: 1 1 100%; min-width: 0; font-size: 14px; line-height: 1.45; }
.dib-status__gaps { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; }
.dib-status__title { margin: 0; font-weight: 500; }
.dib-status__list { display: flex; flex: 1 1 320px; flex-wrap: wrap; gap: 6px 8px; margin: 0; padding: 0; list-style: none; }
.dib-dialog .dib-status__item {
	display: inline-block;
	padding: 4px 12px;
	border: 1px solid var(--dib-brand);
	border-radius: 999px;
	background: var(--dib-brand-tint);
	color: var(--dib-brand);
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
	text-transform: none;
	transition: background-color .15s ease, color .15s ease;
}
.dib-dialog .dib-status__item:hover { background: var(--dib-brand); color: #fff; }
.dib-status__ready { margin: 0; color: var(--dib-ok); font-weight: 400; }
.dib-status__ready::before { content: '\2713'; margin-right: 8px; font-weight: 600; }
.dib-status .dib-error { margin: 8px 0 0; }

.dib-dialog__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-left: auto; }
.dib-dialog .dib-btn {
	padding: 13px 22px;
	border: 1px solid transparent;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.2;
	text-transform: none;
	transition: background-color .15s ease, color .15s ease;
}
.dib-dialog .dib-btn--primary { background: var(--dib-ink); color: #fff; }
.dib-dialog .dib-btn--primary:hover:not(:disabled) { background: var(--dib-brand); }
.dib-dialog .dib-btn--quiet { border-color: var(--dib-brand); background: transparent; color: var(--dib-brand); }
.dib-dialog .dib-btn--quiet:hover:not(:disabled) { background: var(--dib-brand-tint); }
.dib-dialog .dib-btn--plain { padding-left: 10px; padding-right: 10px; background: transparent; color: var(--dib-muted); text-decoration: underline; }
.dib-dialog .dib-btn--plain:hover { color: var(--dib-ink); }
.dib-dialog .dib-btn:disabled { opacity: .45; cursor: default; }

@media (prefers-reduced-motion: reduce) {
	.dib-dialog__text, .dib-dialog .dib-status__item, .dib-dialog .dib-btn { transition: none; }
}
@media (max-width: 767px) {
	.dib-dialog { --dib-gap: 16px; padding-top: 22px; }
	.dib-dialog.fancybox-content { padding-top: 22px; }
	.dib-dialog__title { font-size: 21px; }
	.dib-step { margin-top: 22px; padding-top: 22px; }
	.dib-step__body { margin-left: 0; }
	.dib-dialog__fields { grid-template-columns: 1fr; }
	.dib-dialog__text { max-height: 45vh; padding: 14px; }
	.dib-legal table { font-size: 12px; }
	.dib-legal th, .dib-legal td { padding: 4px; }
	/* Compact sticky footer: one scrollable row of gaps, save and close side by side. */
	.dib-dialog__footer { gap: 10px; padding-top: 12px; padding-bottom: 18px; }
	.dib-status { font-size: 13px; }
	.dib-status__gaps { gap: 6px; }
	.dib-status__list { flex-basis: 100%; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; }
	.dib-status__list::-webkit-scrollbar { display: none; }
	.dib-status__list li { flex: none; }
	.dib-dialog__actions { width: 100%; gap: 8px; }
	.dib-dialog .dib-btn { padding: 12px 16px; }
	.dib-dialog .dib-btn--primary { flex: 1 1 auto; }
	.dib-dialog .dib-btn--quiet { order: 3; flex: 1 1 100%; }
}

.dib-mail-access { max-width: 640px; margin: 10vh auto; padding: 24px; font: 16px/1.5 Arial, sans-serif; }
.dib-mail-access button { padding: 12px 20px; border: 0; color: #fff; background: #820422; font: inherit; cursor: pointer; }
.dib-mail-access button:disabled { opacity: .5; cursor: wait; }

/* ELK login (DIB item 4): the auth form column; the framed consent row repeats the card form agreements. */
.elk-consent { max-width: 500px; color: var(--dib-ink); }
.elk-consent__title { margin: 0 0 16px; font-size: 28px; font-weight: 500; line-height: 1.25; }
.elk-consent__lead { margin: 0 0 24px; font-size: 16px; font-weight: 300; line-height: 1.5; }
.elk-consent .elk-consent__agree {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	padding: 16px 18px;
	border: 1px solid var(--dib-line);
	background: #fff;
	font-size: 16px;
	font-weight: 300;
	line-height: 1.45;
	cursor: pointer;
}
.elk-consent .elk-consent__agree input {
	position: static;
	flex: none;
	width: 18px;
	height: 18px;
	margin: 0;
	opacity: 1;
	appearance: auto;
	accent-color: var(--dib-brand);
	transform: translateY(2px);
}
.elk-consent .elk-consent__agree a { color: var(--dib-brand); text-decoration: underline; text-underline-offset: 3px; border: 0; }
.elk-consent .elk-consent__agree.is-missing { background: var(--dib-brand-tint); box-shadow: inset 3px 0 0 var(--dib-brand); }
.elk-consent__error { margin: 8px 0 0; color: var(--dib-brand); font-size: 14px; }
.elk-consent__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; margin-top: 24px; }
.elk-consent .elk-btn {
	display: inline-block;
	margin: 0;
	padding: 22px 30px;
	border: 0;
	border-radius: 0;
	background: var(--dib-ink);
	color: #fff;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.2;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color .15s ease;
}
.elk-consent .elk-btn:hover:not(:disabled), .elk-consent .elk-btn:focus-visible { background: var(--dib-brand); color: #fff; }
.elk-consent .elk-btn:disabled { opacity: .45; cursor: default; }
.elk-consent .elk-btn--plain {
	padding: 8px 0;
	background: transparent;
	color: var(--dib-muted);
	font-size: 15px;
	font-weight: 400;
	text-transform: none;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.elk-consent .elk-btn--plain:hover:not(:disabled), .elk-consent .elk-btn--plain:focus-visible { background: transparent; color: var(--dib-ink); }
.elk-consent :focus-visible { outline: 2px solid var(--dib-ink); outline-offset: 2px; }
.elk-consent__message { margin: 0 0 24px; font-size: 16px; font-weight: 300; line-height: 1.5; }
.elk-consent__message--error { padding: 14px 18px; background: var(--dib-brand-tint); box-shadow: inset 3px 0 0 var(--dib-brand); }
.elk-consent__field { margin-bottom: 24px; }
.elk-consent__field select { width: 100%; max-width: 540px; }
/* Full text of the ELK consent: the card consent window without steps; the edition's caps heading is kept verbatim. */
.elk-doc.dib-dialog { width: 760px; }
.elk-doc .dib-dialog__text { margin-top: 16px; }
.elk-doc__footer { display: flex; justify-content: flex-end; padding: 20px 0 28px; }
@media (prefers-reduced-motion: reduce) {
	.elk-consent .elk-btn { transition: none; }
}
@media (max-width: 575px) {
	.elk-consent__title { font-size: 24px; }
	.elk-consent .elk-btn:not(.elk-btn--plain) { flex: 1 1 100%; text-align: center; }
	.elk-consent__actions { gap: 8px; }
	.elk-consent .elk-btn--plain { margin: 0 auto; }
}
