/* DOB Finance | assets/dob-finance.css | v0.4.0 | 2026-07-01 | Generated by Claude, DOB-S11 (Phase C-E); DOB-S21 (Phase APPROVE: review checklist, error-notice modifier, quiet button, self-review + info-requested notes) */
/* Payment form, steward/APS queues, and project ledger. Uses the theme --c-*
   tokens (loaded on every blog-3 page) with hardcoded fallbacks. Input borders
   are >=3:1 on white (WCAG 1.4.11); the dob-forms 1.77:1 border is not reused.
   DOB-S21 contrast (sRGB-linearized, re-derived by a11y-auditor): #8a5b00 on
   white = 6.13:1, on cream #FAF6F0 = 5.69:1 (AA at 0.8rem+); #8B1F1F border on
   cream = 8.58:1 (1.4.11 needs 3:1); stone #6B5D54 on cream = 6.17:1, on white
   = 6.65:1; brick summary text on the cream-mix check surface = 7.61:1. */

:root {
	--dobf-brick: var(--c-brick, #8B3A1E);
	--dobf-brick-dark: var(--c-brick-dark, #6E2D17);
	--dobf-ink: var(--c-ink, #1F1B17);
	--dobf-stone: var(--c-stone, #6B5D54);
	--dobf-white: var(--c-white, #ffffff);
	--dobf-cream: var(--c-cream, #FAF6F0);
	--dobf-rule: #7d7468; /* >=3:1 on white for control borders */
	--dobf-tt: var(--tt-min, 44px);
}

/* ---- Payment form ---- */
.dob-pay-form {
	max-width: 640px;
	margin: 0 0 2rem;
}

.dob-pay-form__section {
	margin: 0 0 1.15rem;
	padding: 0.9rem 1rem 0.4rem;
	border: 1px solid var(--dobf-rule);
	border-radius: 4px;
	background: color-mix(in srgb, var(--dobf-cream) 60%, transparent);
}

.dob-pay-form__section[hidden] {
	display: none;
}

.dob-pay-form__legend {
	font-weight: 700;
	color: var(--dobf-ink);
	padding: 0 0.4rem;
}

.dob-pay-form__fund {
	font-weight: 600;
	color: var(--dobf-ink);
	margin: 0 0 1.25rem;
	padding: 0.6rem 0.9rem;
	background: var(--dobf-cream);
	border-left: 3px solid var(--dobf-brick);
}

.dob-pay-form__row {
	margin: 0 0 1.15rem;
}

.dob-pay-form__label {
	display: block;
	font-weight: 600;
	color: var(--dobf-ink);
	margin: 0 0 0.35rem;
}

.dob-pay-form__req {
	color: var(--dobf-brick);
}

.dob-pay-form__input,
.dob-pay-form__textarea {
	width: 100%;
	padding: 0.6rem 0.7rem;
	font: inherit;
	color: var(--dobf-ink);
	background: var(--dobf-white);
	border: 1px solid var(--dobf-rule);
	border-radius: 4px;
	min-height: var(--dobf-tt);
}

.dob-pay-form__textarea {
	min-height: 6rem;
	resize: vertical;
}

.dob-pay-form__input:focus,
.dob-pay-form__textarea:focus {
	outline: 2px solid var(--dobf-brick);
	outline-offset: 1px;
	border-color: var(--dobf-brick);
}

.dob-pay-form__hint {
	font-size: 0.875rem;
	color: #5A544A; /* 7.5:1 on white */
	margin: 0.3rem 0 0;
}

.dob-pay-form__err {
	font-size: 0.9rem;
	color: #8B1F1F; /* 9:1 on white */
	margin: 0.3rem 0 0;
	font-weight: 500;
}

.dob-pay-form__row--check .dob-pay-form__check {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
	cursor: pointer;
}

.dob-pay-form__check input {
	margin-top: 0.25rem;
	min-width: 18px;
	min-height: 18px;
}

.dob-pay-form__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--dobf-tt);
	padding: 0.7rem 1.6rem;
	font: inherit;
	font-weight: 600;
	color: var(--dobf-white);
	background: var(--dobf-brick);
	border: 1.5px solid var(--dobf-brick);
	border-radius: 4px;
	cursor: pointer;
	transition: background-color 0.15s, border-color 0.15s;
}

.dob-pay-form__submit:hover,
.dob-pay-form__submit:focus {
	background: var(--dobf-brick-dark);
	border-color: var(--dobf-brick-dark);
}

.dob-pay-form__submit:disabled {
	opacity: 0.6;
	cursor: default;
}

.dob-pay-form__status {
	margin: 1rem 0 0;
	padding: 0.75rem 1rem;
	border-radius: 4px;
	font-weight: 500;
}

.dob-pay-form__status.is-success {
	background: #E8F1E8;
	color: #1F4A26; /* 8.8:1 */
	border-left: 3px solid #1F4A26;
}

.dob-pay-form__status.is-error {
	background: #F7E8E8;
	color: #8B1F1F;
	border-left: 3px solid #8B1F1F;
}

.dob-pay-form__hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.dob-pay-form__empty,
.dob-fin-empty {
	color: var(--dobf-stone);
	font-style: italic;
}

/* ---- Queues + ledger (logged-in staff/steward/APS) ---- */
.dob-fin-wrap {
	margin: 0 0 2.5rem;
}

.dob-fin-wrap__title {
	font-size: 1.25rem;
	margin: 0 0 0.25rem;
	color: var(--dobf-ink);
}

.dob-fin-notice {
	padding: 0.75rem 1rem;
	background: var(--dobf-cream);
	border-left: 3px solid var(--dobf-brick);
	margin: 0 0 1.25rem;
}

.dob-fin-notice--error {
	border-left-color: #8B1F1F; /* debit red; 8.58:1 on cream (border needs 3:1) */
}

.dob-fin-table {
	width: 100%;
	border-collapse: collapse;
	margin: 0.5rem 0 1.5rem;
	font-size: 0.95rem;
}

.dob-fin-table caption {
	text-align: left;
	font-weight: 600;
	color: var(--dobf-ink);
	margin: 0 0 0.5rem;
}

.dob-fin-table th,
.dob-fin-table td {
	text-align: left;
	padding: 0.5rem 0.65rem;
	border-bottom: 1px solid color-mix(in srgb, var(--dobf-stone) 25%, transparent);
	vertical-align: top;
}

.dob-fin-table th[scope="col"] {
	border-bottom: 2px solid var(--dobf-stone);
	font-family: var(--f-label, inherit);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-size: 0.8rem;
}

.dob-fin-table td.num,
.dob-fin-table th.num {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.dob-fin-status {
	display: inline-block;
	font-size: 0.78rem;
	font-weight: 600;
	padding: 0.12rem 0.5rem;
	border-radius: 999px;
	border: 1px solid currentColor;
}

.dob-fin-status--submitted { color: #8a5b00; }
.dob-fin-status--approved  { color: #1F4A26; }
.dob-fin-status--confirmed { color: #15506b; }
.dob-fin-status--paid      { color: #14532d; }
.dob-fin-status--declined  { color: #8B1F1F; }
.dob-fin-status--expected  { color: #8a5b00; }
.dob-fin-status--received  { color: #14532d; }

.dob-fin-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	align-items: center;
}

.dob-fin-btn {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	padding: 0.35rem 0.8rem;
	font: inherit;
	font-size: 0.85rem;
	font-weight: 600;
	border-radius: 4px;
	cursor: pointer;
	border: 1.5px solid var(--dobf-brick);
	background: var(--dobf-brick);
	color: var(--dobf-white);
}

.dob-fin-btn--ghost {
	background: transparent;
	color: var(--dobf-brick);
}

.dob-fin-btn--danger {
	border-color: #8B1F1F;
	background: transparent;
	color: #8B1F1F;
}

.dob-fin-btn--quiet {
	border-color: var(--dobf-rule);
	background: transparent;
	color: var(--dobf-ink);
	font-weight: 500;
}

/* ---- Steward review checklist (Phase APPROVE) ---- */
.dob-fin-check {
	margin: 0 0 0.5rem;
	border: 1px solid var(--dobf-rule);
	border-radius: 4px;
	background: color-mix(in srgb, var(--dobf-cream) 60%, transparent);
	max-width: 30rem;
}

.dob-fin-check summary {
	display: flex;
	align-items: center;
	min-height: var(--dobf-tt);
	padding: 0.3rem 0.85rem;
	font-weight: 600;
	color: var(--dobf-brick);
	cursor: pointer;
}

.dob-fin-check summary:focus-visible {
	outline: 3px solid var(--dobf-brick);
	outline-offset: -2px;
}

.dob-fin-check .dob-fin-actform {
	display: block;
	padding: 0 0.85rem 0.85rem;
}

.dob-fin-check__list {
	list-style: none;
	margin: 0 0 0.75rem;
	padding: 0;
}

.dob-fin-check__list li {
	margin: 0 0 0.45rem;
}

.dob-fin-check__list label,
.dob-fin-check__attest label {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
	font-size: 0.9rem;
	line-height: 1.45;
	color: var(--dobf-ink);
}

.dob-fin-check__list input[type="checkbox"],
.dob-fin-check__attest input[type="checkbox"] {
	margin-top: 0.2rem;
	flex: none;
}

.dob-fin-check__attest {
	margin: 0 0 0.75rem;
	padding-top: 0.6rem;
	border-top: 1px solid color-mix(in srgb, var(--dobf-stone) 25%, transparent);
	font-weight: 600;
}

.dob-fin-check__row {
	margin: 0 0 0.75rem;
}

/* Self-review block note + info-requested annotation (Phase APPROVE). */
.dob-fin-selfnote {
	margin: 0;
	font-size: 0.85rem;
	font-style: italic;
	color: var(--dobf-stone); /* 6.17:1 on cream, 6.65:1 on white */
}

.dob-fin-inforeq {
	margin: 0.3rem 0 0;
	font-size: 0.8rem;
	font-weight: 600;
	color: #8a5b00; /* 6.13:1 on white, 5.69:1 on cream */
}

.dob-fin-field {
	padding: 0.35rem 0.45rem;
	border: 1px solid var(--dobf-rule);
	border-radius: 4px;
	font: inherit;
	min-height: 36px;
}

.dob-fin-actform {
	display: inline-flex;
	gap: 0.35rem;
	align-items: center;
	margin: 0;
}

.dob-fin-ledger__totals {
	margin: 1rem 0;
	font-size: 1.05rem;
}

.dob-fin-ledger__net {
	font-weight: 700;
	color: var(--dobf-ink);
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
