/* RJK publication / archive UI. Scoped: .rjk-archive-*, .rjk-publication-*, .rjk-public-week-picker.
   Uses existing --rjk-* tokens when present; fallbacks follow the warm off-white / dark green palette. */

.rjk-archive,
.rjk-archive-dialog,
.rjk-publication-schedule,
.rjk-publication-status,
.rjk-publication-banner {
	--rjk-pv-bg: var(--rjk-bg, #faf7f0);
	--rjk-pv-surface: var(--rjk-surface, #ffffff);
	--rjk-pv-text: var(--rjk-text, #1f2a24);
	--rjk-pv-muted: var(--rjk-muted, #5b6660);
	--rjk-pv-border: var(--rjk-border, #ddd6c8);
	--rjk-pv-accent: var(--rjk-accent, #1f4d3a);
	--rjk-pv-accent-soft: var(--rjk-accent-soft, #e3eee7);
	--rjk-pv-warn-bg: #fdf3dc;
	--rjk-pv-warn: #7a5200;
	--rjk-pv-error-bg: #fbe9e7;
	--rjk-pv-error: #9b1c12;
	--rjk-pv-radius: var(--rjk-radius, 8px);
	--rjk-pv-focus: var(--rjk-focus, #1f4d3a);
	color: var(--rjk-pv-text);
}

.rjk-publication-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.rjk-publication-icon {
	display: inline-flex;
	align-items: center;
	margin-inline-end: 0.35em;
	line-height: 1;
	vertical-align: middle;
}

/* Shared focus ring for new controls */
.rjk-archive a:focus-visible,
.rjk-archive button:focus-visible,
.rjk-archive select:focus-visible,
.rjk-archive-dialog :is(a, button, input, select):focus-visible,
.rjk-publication-schedule :is(input, select):focus-visible,
.rjk-publication-status button:focus-visible {
	outline: 2px solid var(--rjk-pv-focus);
	outline-offset: 2px;
}

.rjk-archive button[disabled],
.rjk-archive-dialog button[disabled],
.rjk-publication-status button[disabled] {
	cursor: not-allowed;
	opacity: 0.6;
}

/* ---------- archive page ---------- */

/* A: use full management content width (no fixed cap) */
.rjk-archive {
	display: grid;
	gap: 1rem;
	width: 100%;
	max-width: none;
	min-width: 0;
	box-sizing: border-box;
}

.rjk-archive > * { min-width: 0; }

.rjk-archive-header {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: 0.75rem 1.5rem;
}

.rjk-archive-title {
	margin: 0 0 0.25rem;
	font-size: 1.35rem;
	color: var(--rjk-pv-accent);
}

.rjk-archive-intro {
	margin: 0;
	max-width: 65ch;
	color: var(--rjk-pv-muted);
}

.rjk-archive-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	padding: 0.75rem 1rem;
	background: var(--rjk-pv-bg);
	border: 1px solid var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-filter {
	display: grid;
	gap: 0.25rem;
	min-width: 0;
	flex: 1 1 11rem;
}

/* Branch/offer take the spare width; year/month stay compact and wrap together. */
.rjk-archive-filter--wide { flex: 3 1 14rem; }
.rjk-archive-filter--narrow { flex: 1 1 7.5rem; max-width: 12rem; }

.rjk-archive-filter label,
.rjk-archive-cal-field legend,
.rjk-archive-dialog-field label,
.rjk-publication-field label {
	font-weight: 600;
	font-size: 0.875rem;
}

.rjk-archive-filter select,
.rjk-archive-dialog-field :is(input, select),
.rjk-publication-field select {
	width: 100%;
	max-width: 100%;
	min-height: 2.25rem;
	box-sizing: border-box;
}

.rjk-archive-messages:empty {
	display: none;
}

.rjk-publication-msg {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
	margin: 0 0 0.5rem;
	padding: 0.6rem 0.85rem;
	border-radius: var(--rjk-pv-radius);
	border-inline-start: 4px solid currentColor;
}

.rjk-publication-msg--error { background: var(--rjk-pv-error-bg); color: var(--rjk-pv-error); }
.rjk-publication-msg--success { background: var(--rjk-pv-accent-soft); color: var(--rjk-pv-accent); }
.rjk-publication-msg--warning { background: var(--rjk-pv-warn-bg); color: var(--rjk-pv-warn); }

.rjk-archive-loading {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	color: var(--rjk-pv-muted);
}

.rjk-archive-spinner {
	width: 1rem;
	height: 1rem;
	border: 2px solid var(--rjk-pv-border);
	border-top-color: var(--rjk-pv-accent);
	border-radius: 50%;
	animation: rjk-archive-spin 0.8s linear infinite;
}

@keyframes rjk-archive-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
	.rjk-archive-spinner { animation: none; }
}

.rjk-archive-empty {
	display: grid;
	justify-items: center;
	gap: 0.5rem;
	padding: 2rem 1rem;
	text-align: center;
	color: var(--rjk-pv-muted);
	background: var(--rjk-pv-bg);
	border: 1px dashed var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-empty p { margin: 0; }

.rjk-archive-table-wrap {
	overflow-x: auto;
	background: var(--rjk-pv-surface);
	border: 1px solid var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9rem;
}

.rjk-archive-table th,
.rjk-archive-table td {
	padding: 0.6rem 0.75rem;
	text-align: start;
	vertical-align: top;
	border-bottom: 1px solid var(--rjk-pv-border);
}

.rjk-archive-table thead th {
	background: var(--rjk-pv-bg);
	font-size: 0.8rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--rjk-pv-muted);
}

.rjk-archive-table tbody tr:last-child > * { border-bottom: 0; }

.rjk-archive-period {
	font-weight: 700;
	font-size: 0.95rem;
	color: var(--rjk-pv-accent);
	white-space: nowrap;
}

.rjk-archive-row.is-restored { background: var(--rjk-pv-accent-soft); }

.rjk-archive-counts,
.rjk-archive-status {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	align-items: flex-start;
}

.rjk-archive-badge {
	display: inline-block;
	padding: 0.1rem 0.5rem;
	border-radius: 999px;
	font-size: 0.78rem;
	font-weight: 600;
	border: 1px solid transparent;
	white-space: nowrap;
}

.rjk-archive-badge--archived { background: var(--rjk-pv-bg); border-color: var(--rjk-pv-border); color: var(--rjk-pv-muted); }
.rjk-archive-badge--restored { background: var(--rjk-pv-accent); color: #fff; }
.rjk-archive-badge--legacy { background: var(--rjk-pv-warn-bg); color: var(--rjk-pv-warn); }

.rjk-archive-muted { color: var(--rjk-pv-muted); font-size: 0.82rem; }

.rjk-archive-action-group {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	align-items: center;
}

/* Open stays a link but matches the adjacent rjk-button actions. */
.rjk-archive-open.rjk-button,
.rjk-archive-open.rjk-button:hover,
.rjk-archive-open.rjk-button:focus,
.rjk-archive-open.rjk-button:visited {
	display: inline-flex;
	align-items: center;
	font-weight: 400;
	text-decoration: none;
}

.rjk-archive-note {
	display: flex;
	gap: 0.5rem;
	align-items: flex-start;
	margin: 0;
	padding: 0.6rem 0.85rem;
	font-size: 0.85rem;
	background: var(--rjk-pv-warn-bg);
	color: var(--rjk-pv-warn);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem 1rem;
}

.rjk-archive-total { margin: 0; }

.rjk-archive-pages {
	display: flex;
	flex-wrap: wrap;
	gap: 0.3rem;
	align-items: center;
}

.rjk-archive-page.is-current {
	background: var(--rjk-pv-accent);
	border-color: var(--rjk-pv-accent);
	color: #fff;
	opacity: 1;
	cursor: default;
}

.rjk-archive-ellipsis { padding: 0 0.25rem; color: var(--rjk-pv-muted); }

/* Small viewport: stacked row cards, labels from data-label */
@media (max-width: 782px) {
	.rjk-archive-table-wrap { overflow: visible; background: transparent; border: 0; }
	.rjk-archive-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.rjk-archive-table,
	.rjk-archive-table tbody,
	.rjk-archive-table tr,
	.rjk-archive-table th,
	.rjk-archive-table td { display: block; width: auto; }
	.rjk-archive-table tr {
		margin-bottom: 0.75rem;
		background: var(--rjk-pv-surface);
		border: 1px solid var(--rjk-pv-border);
		border-radius: var(--rjk-pv-radius);
	}
	.rjk-archive-table tr.is-restored { background: var(--rjk-pv-accent-soft); }
	.rjk-archive-table tbody th,
	.rjk-archive-table tbody td {
		display: grid;
		grid-template-columns: 7.5rem 1fr;
		gap: 0.5rem;
		border-bottom: 1px solid var(--rjk-pv-border);
	}
	.rjk-archive-table tbody tr > :last-child { border-bottom: 0; }
	.rjk-archive-table tbody [data-label]::before {
		content: attr(data-label);
		font-size: 0.78rem;
		font-weight: 600;
		color: var(--rjk-pv-muted);
	}
	.rjk-archive-period { white-space: normal; font-size: 1.05rem; }
	.rjk-archive-actions { grid-template-columns: 1fr !important; }
	.rjk-archive-actions::before { display: none; }
	.rjk-archive-action-group > * { flex: 1 1 auto; justify-content: center; min-height: 2.75rem; }
	.rjk-archive-pagination { justify-content: center; }
}

/* ---------- native dialog content ---------- */

dialog.rjk-archive-dialog {
	width: min(34rem, calc(100vw - 2rem));
	max-height: calc(100vh - 2rem);
	padding: 0;
	background: var(--rjk-pv-surface);
	border: 1px solid var(--rjk-pv-border);
	border-radius: calc(var(--rjk-pv-radius) + 4px);
	box-shadow: 0 12px 40px rgba(20, 35, 28, 0.25);
	overflow: auto;
}

dialog.rjk-archive-dialog::backdrop { background: rgba(20, 35, 28, 0.45); }

.rjk-archive-dialog-form { display: grid; }

.rjk-archive-dialog-title {
	margin: 0;
	padding: 1rem 1.25rem 0.5rem;
	font-size: 1.15rem;
	color: var(--rjk-pv-accent);
}

.rjk-archive-dialog-body {
	display: grid;
	gap: 0.85rem;
	padding: 0 1.25rem 1rem;
}

.rjk-archive-dialog-body > p { margin: 0; }

.rjk-archive-dialog-summary {
	display: grid;
	gap: 0.35rem;
	margin: 0;
	padding: 0.75rem 0.9rem;
	background: var(--rjk-pv-bg);
	border: 1px solid var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-dialog-summary > div {
	display: grid;
	grid-template-columns: 8.5rem 1fr;
	gap: 0.5rem;
}

.rjk-archive-dialog-summary dt { font-weight: 600; color: var(--rjk-pv-muted); font-size: 0.85rem; }
.rjk-archive-dialog-summary dd { margin: 0; font-weight: 600; }

.rjk-archive-dialog-field { display: grid; gap: 0.3rem; }

.rjk-archive-hint { margin: 0; font-size: 0.82rem; color: var(--rjk-pv-muted); }

/* Dialog scrolls; actions stay pinned to its bottom edge. */
.rjk-archive-dialog-actions {
	position: sticky;
	bottom: 0;
	z-index: 1;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 0.5rem;
	padding: 0.85rem 1.25rem;
	background: var(--rjk-pv-bg);
	border-top: 1px solid var(--rjk-pv-border);
}

/* ---------- week calendar ---------- */

.rjk-archive-cal-field {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.rjk-archive-cal-field legend { padding: 0; margin-bottom: 0.3rem; }

.rjk-archive-cal {
	display: grid;
	gap: 0.5rem;
	padding: 0.6rem;
	background: var(--rjk-pv-surface);
	border: 1px solid var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-cal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
}

.rjk-archive-cal-month {
	flex: 1 1 auto;
	margin: 0;
	text-align: center;
	font-weight: 700;
	color: var(--rjk-pv-accent);
}

.rjk-archive-cal-nav.rjk-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	min-height: 2.75rem;
	padding: 0;
	font-size: 1.35rem;
	line-height: 1;
}

.rjk-archive-cal-grid {
	width: 100%;
	table-layout: fixed;
	border-collapse: separate;
	border-spacing: 0 2px;
}

.rjk-archive-cal-grid th {
	padding: 0 0 0.25rem;
	font-size: 0.75rem;
	font-weight: 600;
	text-align: center;
	text-transform: uppercase;
	color: var(--rjk-pv-muted);
}

.rjk-archive-cal-grid td { padding: 0; }

.rjk-archive-cal-day {
	display: block;
	width: 100%;
	min-height: 2.75rem;
	margin: 0;
	padding: 0;
	font: inherit;
	font-variant-numeric: tabular-nums;
	color: var(--rjk-pv-text);
	background: transparent;
	border: 0;
	border-radius: 0;
	cursor: pointer;
}

.rjk-archive-cal-day.is-outside { color: var(--rjk-pv-muted); }

/* Hovering any day previews its whole week. */
.rjk-archive-cal-grid tbody tr:hover .rjk-archive-cal-day:not([disabled]) { background: var(--rjk-pv-accent-soft); }
.rjk-archive-cal-grid tbody tr > td:first-child .rjk-archive-cal-day { border-start-start-radius: var(--rjk-pv-radius); border-end-start-radius: var(--rjk-pv-radius); }
.rjk-archive-cal-grid tbody tr > td:last-child .rjk-archive-cal-day { border-start-end-radius: var(--rjk-pv-radius); border-end-end-radius: var(--rjk-pv-radius); }

/* Selected week: one solid band Monday–Sunday. */
.rjk-archive-cal-grid tr.is-selected-week .rjk-archive-cal-day,
.rjk-archive-cal-grid tbody tr.is-selected-week:hover .rjk-archive-cal-day {
	background: var(--rjk-pv-accent);
	color: #fff;
	font-weight: 700;
}

.rjk-archive-cal-grid tr.is-selected-week .rjk-archive-cal-day.is-outside { color: #e3eee7; font-weight: 600; }

.rjk-archive-dialog .rjk-archive-cal-day:focus-visible {
	position: relative;
	z-index: 1;
	outline: 3px solid var(--rjk-pv-focus);
	outline-offset: -3px;
	box-shadow: inset 0 0 0 5px var(--rjk-pv-surface);
}

.rjk-archive-dialog tr.is-selected-week .rjk-archive-cal-day:focus-visible {
	outline-color: #fff;
	box-shadow: inset 0 0 0 5px var(--rjk-pv-accent), 0 0 0 2px var(--rjk-pv-focus);
}

.rjk-archive-cal-range {
	margin: 0;
	padding: 0.45rem 0.65rem;
	font-size: 0.9rem;
	color: var(--rjk-pv-muted);
	background: var(--rjk-pv-bg);
	border-radius: var(--rjk-pv-radius);
}

.rjk-archive-cal-range.is-set {
	font-weight: 600;
	color: var(--rjk-pv-accent);
	background: var(--rjk-pv-accent-soft);
}

@media (max-width: 480px) {
	.rjk-archive-dialog-body { padding-inline: 0.85rem; }
	.rjk-archive-cal { padding: 0.4rem; }
}

.rjk-publication-button--primary {
	background: var(--rjk-pv-accent);
	border-color: var(--rjk-pv-accent);
	color: #fff;
}

@media (max-width: 480px) {
	.rjk-archive-dialog-summary > div { grid-template-columns: 1fr; gap: 0; }
	.rjk-archive-dialog-actions { flex-direction: column-reverse; }
	.rjk-archive-dialog-actions > * { width: 100%; min-height: 2.75rem; }
}

/* ---------- schedule fields ---------- */

.rjk-publication-schedule {
	margin: 0.75rem 0 0;
	padding: 0.75rem 1rem 1rem;
	border: 1px solid var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
	background: var(--rjk-pv-bg);
}

.rjk-publication-schedule legend {
	padding: 0 0.35rem;
	font-weight: 700;
	color: var(--rjk-pv-accent);
}

.rjk-publication-help {
	margin: 0 0 0.75rem;
	font-size: 0.85rem;
	color: var(--rjk-pv-muted);
	max-width: 70ch;
}

.rjk-publication-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
	gap: 0.75rem 1rem;
}

.rjk-publication-field { display: grid; gap: 0.25rem; }

.rjk-publication-check {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 0.75rem;
}

.rjk-publication-check input { margin: 0; width: 1.1rem; height: 1.1rem; }

/* ---------- editor status ---------- */

.rjk-publication-status {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	padding: 0.6rem 0.85rem;
	background: var(--rjk-pv-bg);
	border: 1px solid var(--rjk-pv-border);
	border-radius: var(--rjk-pv-radius);
}

.rjk-publication-status .rjk-publication-help { margin: 0; flex: 1 1 18rem; }

.rjk-publication-chip {
	display: inline-flex;
	align-items: center;
	padding: 0.15rem 0.6rem;
	border-radius: 999px;
	font-size: 0.82rem;
	font-weight: 700;
}

.rjk-publication-chip--draft { background: var(--rjk-pv-warn-bg); color: var(--rjk-pv-warn); }
.rjk-publication-chip--prepared { background: var(--rjk-pv-accent); color: #fff; }

.rjk-publication-chip--published-at {
	flex-wrap: wrap;
	gap: 0.25rem;
	max-width: 100%;
	box-sizing: border-box;
	font-weight: 500;
	color: var(--rjk-pv-muted);
	background: var(--rjk-pv-surface);
	border: 1px solid var(--rjk-pv-border);
}

.rjk-publication-week { font-weight: 600; }

/* B: one aligned read-only panel; text left, actions right; stacks when narrow */
.rjk-publication-banner {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1.25rem;
	align-items: center;
	justify-content: space-between;
	margin: 0;
	padding: 0.85rem 1rem;
	box-sizing: border-box;
	max-width: 100%;
	background: var(--rjk-pv-warn-bg);
	color: var(--rjk-pv-warn);
	border: 1px solid currentColor;
	border-inline-start-width: 5px;
	border-radius: var(--rjk-pv-radius);
}

.rjk-publication-banner-body {
	display: flex;
	gap: 0.75rem;
	align-items: flex-start;
	flex: 1 1 22rem;
	min-width: 0;
}

.rjk-publication-banner-text { min-width: 0; overflow-wrap: anywhere; }

.rjk-publication-banner p { margin: 0.25rem 0 0; color: var(--rjk-pv-text); max-width: 75ch; }
.rjk-publication-banner-title { font-size: 1rem; }

.rjk-publication-banner-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	align-items: center;
	justify-content: flex-end;
	flex: 0 1 auto;
	min-width: 0;
	margin-inline-start: auto;
}

.rjk-publication-banner-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 2.25rem;
	max-width: 100%;
	box-sizing: border-box;
	text-align: center;
	white-space: normal;
	text-decoration: none;
}

.rjk-publication-banner a:focus-visible {
	outline: 2px solid var(--rjk-pv-focus);
	outline-offset: 2px;
}

@media (max-width: 600px) {
	.rjk-publication-banner { align-items: stretch; }
	.rjk-publication-banner-body { flex-basis: 100%; }
	.rjk-publication-banner-actions {
		flex: 1 1 100%;
		flex-direction: column;
		align-items: stretch;
		margin-inline-start: 0;
	}
	.rjk-publication-banner-link { width: 100%; min-height: 2.75rem; }
}

/* ---------- public week picker (server markup) ---------- */

.rjk-public-week-picker {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.5rem 0.75rem;
	margin: 0 0 1rem;
}

.rjk-public-week-picker label {
	flex: 1 0 100%;
	font-weight: 600;
}

.rjk-public-week-picker select {
	flex: 1 1 14rem;
	min-width: 0;
	max-width: 100%;
	min-height: 2.5rem;
	font: inherit;
}

.rjk-public-week-picker button,
.rjk-public-week-picker [type="submit"] {
	flex: 0 0 auto;
	min-height: 2.5rem;
	font: inherit;
	cursor: pointer;
}

.rjk-public-week-picker select:focus-visible,
.rjk-public-week-picker button:focus-visible,
.rjk-public-week-picker [type="submit"]:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

@media (max-width: 480px) {
	.rjk-public-week-picker button,
	.rjk-public-week-picker [type="submit"] { flex: 1 1 100%; }
}

/* Match the existing editor header/day-content gutters for the historical panel. */
.rjk-editor-v2 > .rjk-publication-banner--archived { margin-inline: 28px; }
.rjk-editor-v2.is-archive .rjk-readable-copy > span { display: block; font-size: 16px; font-weight: 600; line-height: 1.45; overflow-wrap: anywhere; }
@media (max-width: 680px) {
 .rjk-editor-v2 > .rjk-publication-banner--archived { margin-inline: 14px; }
}
