/* =========================================================================
   Racexotics — admin.css
   Loaded after theme.css on /admin only. Denser and plainer than the public
   site: staff are scanning and editing, not being sold to.
   ========================================================================= */

body.rx-admin { background: var(--rx-paper-2); }

/* ---------- Top bar ---------------------------------------------------- */

.rx-admin-bar {
	position: sticky; top: 0; z-index: 100;
	background: var(--rx-ink); color: #fff;
}
.rx-admin-bar__inner {
	max-width: 1320px; margin: 0 auto; padding: 0 var(--rx-s4);
	display: flex; align-items: center; gap: var(--rx-s5); min-height: 56px; flex-wrap: wrap;
}
.rx-admin-bar__brand { display: inline-flex; align-items: center; gap: .5rem; }
.rx-brand--admin { gap: .45rem; }
body.rx-admin .rx-brand--admin .rx-brand__mark { height: 26px; }
/* The artwork wordmark is black, so the admin bar uses type in white instead. */
.rx-brand--admin .rx-brand__word { color: #fff; font-size: 1rem; }
.rx-brand--admin:hover .rx-brand__word { color: #fff; }
.rx-admin-bar__tag {
	font-size: .65rem; letter-spacing: .12em; text-transform: uppercase;
	background: rgba(255,255,255,.16); padding: .2rem .45rem; border-radius: 4px;
}
.rx-admin-bar__right { display: none; align-items: center; gap: var(--rx-s3); margin-left: auto; }

/* Menu button: phones and tablets only. */
.rx-admin-burger {
	display: inline-flex; flex-direction: column; justify-content: center; gap: 4px;
	width: var(--rx-tap); height: var(--rx-tap); margin-left: calc(-1 * var(--rx-s2));
	background: transparent; border: 0; padding: 0 10px; cursor: pointer; border-radius: var(--rx-radius-sm);
}
.rx-admin-burger span { display: block; height: 2px; background: #fff; border-radius: 1px; }
.rx-admin-burger:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
/* body.rx a (theme.css) would paint this link ink-on-ink; beat its specificity. */
body.rx-admin .rx-admin-bar__view, .rx-admin-bar__who { color: rgba(255,255,255,.7); font-size: .88rem; }
body.rx-admin .rx-admin-bar__view:hover { color: #fff; }
.rx-admin-bar__logout { margin: 0; }
/* theme.css sets basic-button color with !important, so match that here or the
   label disappears against the dark bar. */
body.rx-admin .rx-admin-bar__logout .ui.button,
body.rx-admin .rx-admin-bar__logout .ui.basic.button { background: transparent !important; color: #fff !important; box-shadow: 0 0 0 1px rgba(255,255,255,.35) inset !important; min-height: 32px; }
body.rx-admin .rx-admin-bar__logout .ui.button:hover { background: rgba(255,255,255,.1) !important; color: #fff !important; }

/* ---------- Shell + navigation ------------------------------------------ */

/* Mobile first: the nav is an off-canvas drawer, opened by the menu button. */
.rx-admin-shell { display: block; }
.rx-admin-side {
	position: fixed; top: 0; bottom: 0; left: 0; z-index: 300;
	width: min(84vw, 300px); overflow-y: auto; overscroll-behavior: contain;
	background: var(--rx-paper); border-right: 1px solid var(--rx-line);
	padding: var(--rx-s3) var(--rx-s3) var(--rx-s6);
	transform: translateX(-100%); transition: transform .2s ease; visibility: hidden;
}
.rx-admin-side.is-open { transform: translateX(0); visibility: visible; box-shadow: var(--rx-shadow); }
.rx-admin-scrim { position: fixed; inset: 0; z-index: 250; background: rgba(17,18,20,.45); }
.rx-admin-scrim[hidden] { display: none; }
body.rx-admin.rx-nav-open { overflow: hidden; }

.rx-admin-side__top { display: flex; align-items: center; justify-content: space-between; padding: 0 var(--rx-s2) var(--rx-s3); }
.rx-admin-side__title { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--rx-ink-3); font-weight: 600; }
.rx-admin-side__close {
	width: var(--rx-tap); height: var(--rx-tap); border: 0; background: transparent; cursor: pointer;
	font-size: 1.6rem; line-height: 1; color: var(--rx-ink-2); border-radius: var(--rx-radius-sm);
}
.rx-admin-side__close:hover { background: var(--rx-paper-2); }
.rx-admin-side__group { margin-bottom: var(--rx-s4); }
.rx-admin-side__heading {
	display: block; padding: 0 var(--rx-s3); margin-bottom: var(--rx-s1);
	font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--rx-ink-3); font-weight: 600;
}
.rx-admin-side__list { list-style: none; margin: 0; padding: 0; }
body.rx-admin .rx-admin-side__link {
	display: flex; align-items: center; gap: var(--rx-s3); width: 100%;
	min-height: var(--rx-tap); padding: 0 var(--rx-s3); border-radius: var(--rx-radius-sm);
	color: var(--rx-ink-2); font-weight: 500; font-size: .95rem; text-decoration: none;
	background: transparent; border: 0; cursor: pointer; text-align: left; font-family: var(--rx-font);
}
body.rx-admin .rx-admin-side__link .icon { width: 1.1rem; margin: 0; opacity: .7; }
body.rx-admin .rx-admin-side__link:hover { background: var(--rx-paper-2); color: var(--rx-ink); }
body.rx-admin .rx-admin-side__link.is-active { background: var(--rx-paper-2); color: var(--rx-ink); box-shadow: inset 3px 0 0 var(--rx-accent); }
body.rx-admin .rx-admin-side__link.is-active .icon { opacity: 1; color: var(--rx-accent); }
.rx-admin-side__foot { border-top: 1px solid var(--rx-line); padding-top: var(--rx-s3); margin-top: var(--rx-s3); }
.rx-admin-side__foot form { margin: 0; }

.rx-admin-main { max-width: 1320px; margin: 0 auto; padding: var(--rx-s5) var(--rx-s4) var(--rx-s8); min-width: 0; }
.rx-admin-head {
	display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
	gap: var(--rx-s3); margin-bottom: var(--rx-s5);
}
.rx-admin-head h1 { font-size: 1.6rem; margin: 0; }
.rx-admin-head p { color: var(--rx-ink-2); margin: var(--rx-s1) 0 0; }
.rx-admin-actions { display: flex; flex-wrap: wrap; gap: var(--rx-s2); }

body.rx-admin .ui.segment { background: var(--rx-paper); }
.rx-panel { background: var(--rx-paper); border: 1px solid var(--rx-line); border-radius: var(--rx-radius); padding: var(--rx-s5); margin-bottom: var(--rx-s5); }
.rx-panel__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--rx-s3); margin-bottom: var(--rx-s4); }
.rx-panel__head h2 { font-size: 1.1rem; margin: 0; }
.rx-panel__head p { margin: 0; color: var(--rx-ink-2); font-size: .9rem; }

/* ---------- Stat tiles ------------------------------------------------- */

.rx-stats { display: grid; gap: var(--rx-s3); grid-template-columns: repeat(2, 1fr); margin-bottom: var(--rx-s5); }
.rx-stat { background: var(--rx-paper); border: 1px solid var(--rx-line); border-radius: var(--rx-radius); padding: var(--rx-s4); }
.rx-stat__label { display: block; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--rx-ink-3); }
.rx-stat__value { font-family: var(--rx-font-display); font-size: 1.8rem; line-height: 1.1; margin-top: var(--rx-s1); }
.rx-stat__note { color: var(--rx-ink-2); font-size: .85rem; margin-top: var(--rx-s1); }
.rx-stat--alert { border-color: var(--rx-accent); }
.rx-stat--alert .rx-stat__value { color: var(--rx-accent); }

/* ---------- Tables ----------------------------------------------------- */

.rx-table-wrap { overflow-x: auto; }
body.rx-admin table.rx-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
body.rx-admin .rx-table th {
	text-align: left; font-size: .7rem; letter-spacing: .09em; text-transform: uppercase;
	color: var(--rx-ink-3); font-weight: 600; padding: var(--rx-s2) var(--rx-s3);
	border-bottom: 1px solid var(--rx-line); white-space: nowrap;
}
body.rx-admin .rx-table td { padding: var(--rx-s3); border-bottom: 1px solid var(--rx-line); vertical-align: top; }
body.rx-admin .rx-table tr:last-child td { border-bottom: 0; }
body.rx-admin .rx-table tbody tr:hover { background: var(--rx-paper-2); }
.rx-table__title { font-weight: 600; }
.rx-table__sub { color: var(--rx-ink-3); font-size: .85rem; }
.rx-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Status pills */
.rx-pill {
	display: inline-block; padding: .18rem .5rem; border-radius: 999px;
	font-size: .72rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase;
	background: var(--rx-paper-2); color: var(--rx-ink-2); white-space: nowrap;
}
.rx-pill--open      { background: #e7f5ec; color: #1a7f4b; }
.rx-pill--draft     { background: #eceef1; color: #5b616b; }
.rx-pill--announced { background: #e8effb; color: #2a5db0; }
.rx-pill--waitlist  { background: #fdf2e2; color: #9a6212; }
.rx-pill--closed    { background: #eceef1; color: #5b616b; }
.rx-pill--completed { background: #eceef1; color: #5b616b; }
.rx-pill--cancelled { background: #fdecea; color: #b0281f; }
.rx-pill--private   { background: #fdecea; color: #b0281f; }

.rx-pill--public    { background: #e7f5ec; color: #1a7f4b; }

/* ---------- Rally editor: Kit tab --------------------------------------- */

.rx-kit { list-style: none; margin: 0 0 var(--rx-s5); padding: 0; border-top: 1px solid var(--rx-line); }
.rx-kit__item { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s3); padding: var(--rx-s3) var(--rx-s1); border-bottom: 1px solid var(--rx-line); }
.rx-kit__main { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.rx-kit__name { font-weight: 600; color: var(--rx-ink); }
.rx-kit__desc { font-size: .85rem; }
.rx-kit__label { font-size: .7rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--rx-ink-3); margin-top: 4px; }
.rx-kit__options { display: flex; flex-wrap: wrap; gap: 6px; }
.rx-kit__chip { display: inline-flex; gap: 6px; align-items: baseline; padding: 3px 10px; border-radius: 999px; background: var(--rx-paper-2); font-size: .82rem; color: var(--rx-ink-2); font-variant-numeric: tabular-nums; }
.rx-kit__chip.is-out { background: #fdecea; color: #b0281f; }
.rx-kit__actions { display: flex; align-items: center; gap: var(--rx-s3); }
body.rx .rx-kit__actions .ui.button { margin: 0; height: var(--rx-tap); min-height: 0; padding: 0 1.15em; display: inline-flex; align-items: center; }
.rx-kit__qhead { margin-top: var(--rx-s5); }
.rx-kit__exports { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s2); margin: 0 0 var(--rx-s4); }
.rx-kit__exports .rx-driver__h { flex-basis: 100%; margin: 0; }
body.rx .rx-kit__exports .ui.button { margin: 0; height: var(--rx-tap); min-height: 0; padding: 0 1.15em; display: inline-flex; align-items: center; }

.rx-kit__remind { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s2) var(--rx-s3); margin: 0 0 var(--rx-s4); padding: var(--rx-s3) var(--rx-s4); background: var(--rx-paper-2); border-radius: var(--rx-radius-sm); font-size: .92rem; }
body.rx .rx-kit__remind .ui.button { margin: 0; height: var(--rx-tap); min-height: 0; padding: 0 1.15em; display: inline-flex; align-items: center; }

/* Drivers tab: kit & room inside an expanded driver */
.rx-driver__kit { grid-column: 1 / -1; padding-top: var(--rx-s3); border-top: 1px dashed var(--rx-line); }
.rx-driver__kit .rx-driver__h .rx-pill { margin-left: 6px; vertical-align: middle; }
.rx-driver__handover { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s2); margin-top: var(--rx-s2); }
body.rx .rx-driver__handover .ui.button { margin: 0; height: var(--rx-tap); min-height: 0; padding: 0 1.15em; display: inline-flex; align-items: center; }

.rx-kit-options__rows { display: flex; flex-direction: column; gap: 6px; margin-bottom: var(--rx-s2); }
.rx-kit-options__row { display: grid; grid-template-columns: minmax(0, 1fr) 120px auto; gap: var(--rx-s2); align-items: center; }
body.rx .rx-kit-options__row input { min-height: var(--rx-tap); }
.rx-kit-options__row .rx-linkbutton[disabled] { color: var(--rx-ink-3); text-decoration: none; cursor: default; }
.rx-native-select { width: 100%; min-height: var(--rx-tap); padding: 0 var(--rx-s3); font: inherit; border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); background: var(--rx-paper); }

/* ---------- Person page: duplicates + delete --------------------------- */

.rx-dupes { border-left: 3px solid #e0a43a; }
.rx-dupes__list { list-style: none; margin: 0; padding: 0; }
.rx-dupes__list li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--rx-s3); padding: var(--rx-s2) 0; border-top: 1px solid var(--rx-line); }
.rx-dupes__why { flex-basis: 100%; font-size: .82rem; color: var(--rx-ink-3); }

.rx-danger { border: 1px solid #f3c5c1; }
.rx-danger .rx-panel__head { align-items: center; }
body.rx .ui.button.rx-danger__btn { background: var(--rx-paper); color: var(--rx-accent); box-shadow: 0 0 0 1px var(--rx-accent) inset; white-space: nowrap; }
body.rx .ui.button.rx-danger__btn:hover { background: var(--rx-accent); color: #fff; }

/* ---------- Drivers tab ------------------------------------------------ */

/* Summary strip */
.rx-dstats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--rx-s2); margin-bottom: var(--rx-s4); }
.rx-dstat {
	display: flex; flex-direction: column; gap: 2px;
	padding: var(--rx-s3) var(--rx-s4); background: var(--rx-paper-2); border-radius: var(--rx-radius);
}
.rx-dstat--money { grid-column: 1 / -1; }
.rx-dstat__num { font-family: var(--rx-font-display); font-size: 1.5rem; font-weight: 700; line-height: 1.1; color: var(--rx-ink); font-variant-numeric: tabular-nums; }
.rx-dstat__label { font-size: .8rem; color: var(--rx-ink-3); }

/* Thin progress meter: paid of due */
.rx-meter { display: block; height: 4px; border-radius: 2px; background: var(--rx-line); overflow: hidden; margin-top: 6px; }
.rx-meter > span { display: block; height: 100%; background: var(--rx-ink); border-radius: 2px; }

.rx-dfilter { margin-bottom: var(--rx-s3); }
.rx-dfilter input {
	width: 100%; min-height: var(--rx-tap); padding: 0 var(--rx-s3); font: inherit;
	border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); background: var(--rx-paper);
}
.rx-dfilter input:focus { outline: none; border-color: var(--rx-ink); }

/* The list: one quiet row per driver, details on demand */
.rx-drivers { border-top: 1px solid var(--rx-line); }
.rx-driver { border-bottom: 1px solid var(--rx-line); }
.rx-driver__row {
	display: grid; align-items: center; gap: var(--rx-s2) var(--rx-s3);
	grid-template-columns: 44px 1fr auto;
	grid-template-areas: "avatar who chevron" "avatar status money";
	padding: var(--rx-s3) var(--rx-s1); cursor: pointer; list-style: none;
	min-height: 64px; border-radius: var(--rx-radius-sm); transition: background .12s ease;
}
.rx-driver__row::-webkit-details-marker { display: none; }
.rx-driver__row:hover { background: var(--rx-paper-2); }
.rx-driver__row:focus-visible { outline: 2px solid var(--rx-accent); outline-offset: -2px; }
/* body.rx img (theme.css) sets height:auto; match its specificity so the photo stays a circle. */
body.rx .rx-driver__avatar,
body.rx img.rx-driver__avatar {
	grid-area: avatar; width: 44px; height: 44px; border-radius: 50%; object-fit: cover;
	display: inline-flex; align-items: center; justify-content: center;
	background: var(--rx-paper-2); color: var(--rx-ink-2); font-weight: 700; font-size: .85rem; letter-spacing: .02em;
}
.rx-driver__who { grid-area: who; min-width: 0; display: flex; flex-direction: column; }
.rx-driver__name { font-weight: 600; color: var(--rx-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rx-driver__meta { font-size: .82rem; color: var(--rx-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rx-driver__row > .rx-pill { grid-area: status; justify-self: start; }
.rx-driver__money { grid-area: money; justify-self: end; text-align: right; min-width: 120px; }
.rx-driver__amount { font-size: .9rem; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rx-driver__due { display: block; font-size: .75rem; color: var(--rx-ink-3); }
.rx-driver__due.is-paid { color: #1a7f4b; }
.rx-driver__chevron { grid-area: chevron; color: var(--rx-ink-3); transition: transform .15s ease; margin: 0 !important; }
.rx-driver[open] .rx-driver__chevron { transform: rotate(180deg); }
.rx-driver[open] .rx-driver__row { background: transparent; }

/* Expanded detail */
.rx-driver__body { padding: 0 var(--rx-s1) var(--rx-s5); }
.rx-driver__grid { display: grid; grid-template-columns: 1fr; gap: var(--rx-s4); }
.rx-driver__grid p { margin: 0 0 2px; font-size: .92rem; }
.rx-driver__h { display: block; margin: 0 0 6px; font-size: .7rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--rx-ink-3); }

.rx-paylist { list-style: none; margin: 6px 0 0; padding: 0; font-size: .88rem; }
.rx-paylist li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 2px var(--rx-s3); padding: 6px 0; border-top: 1px solid var(--rx-line); }
.rx-paylist__void { opacity: .55; }
.rx-paylist__note { flex-basis: 100%; font-size: .82rem; }

.rx-driver__actions {
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s2);
	margin-top: var(--rx-s4); padding-top: var(--rx-s4); border-top: 1px solid var(--rx-line);
}
body.rx .rx-driver__actions .ui.button {
	margin: 0 !important; height: var(--rx-tap); min-height: 0; padding: 0 1.15em;
	display: inline-flex; align-items: center; justify-content: center; align-self: center;
}
.rx-driver__status { display: flex; margin: 0; }
.rx-status-select {
	min-height: var(--rx-tap); min-width: 180px; padding: 0 var(--rx-s3); font: inherit; font-size: .92rem;
	color: var(--rx-ink); border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); background: var(--rx-paper); cursor: pointer;
}
.rx-status-select:focus-visible { outline: 2px solid var(--rx-accent); outline-offset: 1px; }
.rx-driver__remove { margin-left: auto; min-height: var(--rx-tap); }

.rx-linkbutton {
	padding: 0; margin-left: 6px; border: 0; background: none; font: inherit; font-size: inherit;
	color: var(--rx-accent); text-decoration: underline; text-underline-offset: 2px; cursor: pointer;
}
.rx-linkbutton:hover { color: var(--rx-accent-hover); }
.rx-linkbutton:focus-visible { outline: 2px solid var(--rx-accent); outline-offset: 1px; }

@media (min-width: 768px) {
	.rx-dstats { grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 2fr); }
	.rx-dstat--money { grid-column: auto; }
	.rx-driver__row {
		grid-template-columns: 44px minmax(0, 1fr) 150px 170px 20px;
		grid-template-areas: "avatar who status money chevron";
	}
	.rx-driver__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--rx-s5) var(--rx-s6); }
	/* Line the detail up under the name, past the avatar. */
	.rx-driver__body { padding-left: calc(44px + var(--rx-s3) + var(--rx-s1)); }
}
@media (min-width: 1100px) {
	.rx-driver__grid { grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.4fr); }
}

/* ---------- Forms ------------------------------------------------------ */

.rx-admin-form { max-width: 62rem; }
.rx-field-grid { display: grid; gap: var(--rx-s4); grid-template-columns: 1fr; }
.rx-field-grid--2 { grid-template-columns: 1fr; }
.rx-field-grid--3 { grid-template-columns: 1fr; }
body.rx-admin .ui.form .field { margin-bottom: var(--rx-s4); }
.rx-inline-note { color: var(--rx-ink-2); font-size: .85rem; }

/* Sticky save bar so a long form never hides its own save button */
.rx-savebar {
	position: sticky; bottom: 0; background: rgba(255,255,255,.96);
	backdrop-filter: blur(8px); border-top: 1px solid var(--rx-line);
	padding: var(--rx-s3) var(--rx-s4); margin: var(--rx-s5) calc(-1 * var(--rx-s5)) calc(-1 * var(--rx-s5));
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s3); justify-content: flex-end;
	border-radius: 0 0 var(--rx-radius) var(--rx-radius);
}
.rx-savebar__status { margin-right: auto; color: var(--rx-ink-2); font-size: .9rem; }

/* ---------- Itinerary editor ------------------------------------------- */

.rx-itin-day { border: 1px solid var(--rx-line); border-radius: var(--rx-radius); margin-bottom: var(--rx-s4); background: var(--rx-paper); }
.rx-itin-day__head {
	display: flex; align-items: center; justify-content: space-between; gap: var(--rx-s3);
	padding: var(--rx-s3) var(--rx-s4); border-bottom: 1px solid var(--rx-line); background: var(--rx-paper-2);
	border-radius: var(--rx-radius) var(--rx-radius) 0 0;
}
.rx-itin-day__title { font-weight: 600; font-size: .95rem; }
.rx-itin-rows { padding: var(--rx-s3); display: grid; gap: var(--rx-s3); }

.rx-itin-row {
	display: grid; gap: var(--rx-s3); padding: var(--rx-s3);
	border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); background: var(--rx-paper);
	grid-template-columns: 1fr;
}
.rx-itin-row.is-removed { opacity: .45; }
.rx-itin-row__main { display: grid; gap: var(--rx-s3); grid-template-columns: 1fr; }
.rx-itin-row__meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s4); }
.rx-itin-row__handle { display: flex; align-items: center; gap: var(--rx-s1); }
/* Field captions only. Checkbox labels are read as sentences, so they must not
   inherit the tiny uppercase treatment. */
body.rx-admin .rx-itin-row > .field > label,
body.rx-admin .rx-itin-row__main > .field > label {
	font-size: .72rem; letter-spacing: .08em; text-transform: uppercase;
	color: var(--rx-ink-3); font-weight: 600;
}
body.rx-admin .rx-itin-row .ui.checkbox label {
	font-size: .9rem; letter-spacing: normal; text-transform: none;
	color: var(--rx-ink-2); font-weight: 500;
}
body.rx-admin .rx-itin-row input[type="text"], body.rx-admin .rx-itin-row textarea { width: 100%; }
.rx-itin-move { display: flex; gap: 2px; }
body.rx-admin .rx-itin-move .ui.button, body.rx-admin .rx-itin-row .ui.button.rx-itin-del { min-height: 34px; padding: .5rem .7rem; }

.rx-itin-empty { padding: var(--rx-s5); text-align: center; color: var(--rx-ink-2); }

/* ---------- Login / setup --------------------------------------------- */

.rx-auth { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: var(--rx-s5); background: var(--rx-paper-2); }
.rx-auth__card { width: 100%; max-width: 26rem; background: var(--rx-paper); border: 1px solid var(--rx-line); border-radius: var(--rx-radius); padding: var(--rx-s6); }
.rx-auth__brand { display: flex; align-items: center; margin-bottom: var(--rx-s5); }
body.rx-admin .rx-auth__brand .rx-brand__mark { height: 30px; }
body.rx-admin .rx-auth__brand .rx-brand__wordmark { height: 14px; }
.rx-auth__card h1 { font-size: 1.3rem; margin: 0 0 var(--rx-s2); }
.rx-auth__card p.rx-auth__lede { color: var(--rx-ink-2); margin: 0 0 var(--rx-s5); }
.rx-auth__foot { margin: var(--rx-s4) 0 0; text-align: center; font-size: .9rem; }
.rx-auth__foot a { display: inline-block; padding: .6rem .25rem; }
.rx-auth__alt { margin-top: var(--rx-s6); padding-top: var(--rx-s5); border-top: 1px solid var(--rx-line); }
.rx-auth__alt summary { cursor: pointer; padding: .7rem 0; }
.rx-auth__alt[open] summary { margin-bottom: var(--rx-s3); }
.rx-auth__alt ol { padding-left: 1.2rem; margin: 0 0 var(--rx-s4); color: var(--rx-ink-2); font-size: .9rem; }
.rx-auth__alt code { word-break: break-all; }

/* ---------- Breakpoints ------------------------------------------------ */

@media (min-width: 640px) {
	.rx-admin-bar__right { display: flex; }
}

/* Desktop: the drawer becomes a permanent sidebar. */
@media (min-width: 1024px) {
	.rx-admin-burger, .rx-admin-side__top, .rx-admin-side__foot, .rx-admin-scrim { display: none !important; }
	.rx-admin-shell { display: grid; grid-template-columns: 232px minmax(0, 1fr); align-items: start; }
	.rx-admin-side {
		position: sticky; top: 56px; height: calc(100vh - 56px); width: auto;
		transform: none; visibility: visible; transition: none; box-shadow: none;
		padding: var(--rx-s5) var(--rx-s3);
	}
	.rx-admin-main { margin: 0; padding: var(--rx-s6) var(--rx-s6) var(--rx-s8); }
}

@media (min-width: 768px) {
	.rx-stats { grid-template-columns: repeat(4, 1fr); }
	.rx-field-grid--2 { grid-template-columns: 1fr 1fr; }
	.rx-field-grid--3 { grid-template-columns: 1fr 1fr 1fr; }
	.rx-itin-row { grid-template-columns: 7rem 1fr auto; align-items: start; }
	.rx-itin-row__main { grid-template-columns: 1fr 1fr; }
	.rx-itin-row__main .rx-itin-row__desc { grid-column: 1 / -1; }
}

/* ---------- Additions for the rally editor ---------------------------- */
.rx-admin-tabs { margin-bottom: var(--rx-s5) !important; }
.rx-tab-count {
	display: inline-block; margin-left: .35rem; padding: .05rem .4rem;
	background: var(--rx-paper-2); color: var(--rx-ink-2); border-radius: 999px; font-size: .75rem;
}
.rx-form-section {
	font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: var(--rx-ink-3);
	margin: var(--rx-s6) 0 var(--rx-s4); padding-bottom: var(--rx-s2); border-bottom: 1px solid var(--rx-line);
}
.rx-toggle-field { margin-top: .35rem; }
.rx-publish-note { margin-bottom: var(--rx-s5) !important; }
.rx-publish-toggle { margin-right: var(--rx-s4); }
.rx-admin-todo { margin: 0; padding-left: 1.1rem; color: var(--rx-ink-2); }
.rx-admin-todo li { margin-bottom: var(--rx-s2); }
body.rx-admin .rx-itin-row textarea { min-height: 3.2rem; }
/* Tabs never wrap into a second row on a phone; they scroll sideways. */
body.rx-admin .ui.secondary.pointing.menu.rx-admin-tabs { overflow-x: auto; overflow-y: hidden; flex-wrap: nowrap; }
body.rx-admin .ui.secondary.pointing.menu.rx-admin-tabs .item { white-space: nowrap; min-height: var(--rx-tap); }

/* =========================================================================
   Shared admin components. Prefer these over new one-off styles.
   ========================================================================= */

/* Stacked tables: add .rx-table--stack and a data-label on every <td>. Below
   640px each row becomes a card of label/value pairs, so wide tables stay
   readable on a phone without sideways scrolling. */
@media (max-width: 639px) {
	body.rx-admin table.rx-table--stack thead { display: none; }
	body.rx-admin table.rx-table--stack,
	body.rx-admin table.rx-table--stack tbody,
	body.rx-admin table.rx-table--stack tr,
	body.rx-admin table.rx-table--stack td { display: block; width: 100%; }
	body.rx-admin table.rx-table--stack tr { border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); margin-bottom: var(--rx-s3); padding: var(--rx-s2) 0; background: var(--rx-paper); }
	body.rx-admin table.rx-table--stack td { border: 0; padding: var(--rx-s1) var(--rx-s3); text-align: left; }
	body.rx-admin table.rx-table--stack td[data-label]::before {
		content: attr(data-label); display: block;
		font-size: .68rem; letter-spacing: .09em; text-transform: uppercase; color: var(--rx-ink-3); font-weight: 600;
	}
	body.rx-admin table.rx-table--stack td:empty { display: none; }
	body.rx-admin table.rx-table--stack .rx-num { text-align: left; }
}

/* Search + filter row above a list. */
.rx-filters { display: flex; flex-wrap: wrap; gap: var(--rx-s2); align-items: flex-end; margin-bottom: var(--rx-s4); }
.rx-filters .field { margin: 0 !important; flex: 1 1 12rem; }
.rx-filters .field--grow { flex: 3 1 16rem; }
body.rx-admin .rx-filters .ui.button { min-height: 38px; }

/* Label / value pairs (detail pages). */
.rx-kv { display: grid; grid-template-columns: 1fr; gap: var(--rx-s1) var(--rx-s4); margin: 0; }
.rx-kv dt { font-size: .7rem; letter-spacing: .09em; text-transform: uppercase; color: var(--rx-ink-3); font-weight: 600; margin-top: var(--rx-s2); }
.rx-kv dd { margin: 0; overflow-wrap: anywhere; }
@media (min-width: 768px) {
	.rx-kv { grid-template-columns: 11rem 1fr; }
	.rx-kv dt { margin-top: 0; padding-top: 2px; }
}

/* Photo grid: product images, participant photos, logos. */
.rx-photo-grid { display: grid; gap: var(--rx-s3); grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
.rx-photo {
	position: relative; border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm);
	background: var(--rx-paper); overflow: hidden; display: flex; flex-direction: column;
}
.rx-photo__img { aspect-ratio: 1 / 1; background: var(--rx-paper-2); display: flex; align-items: center; justify-content: center; }
.rx-photo__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rx-photo__img--contain img { object-fit: contain; padding: var(--rx-s2); }
.rx-photo__body { padding: var(--rx-s2); font-size: .85rem; display: grid; gap: var(--rx-s2); }
.rx-photo__actions { display: flex; flex-wrap: wrap; gap: var(--rx-s1); }
body.rx-admin .rx-photo__actions .ui.button { min-height: 34px; padding: .45rem .6rem; margin: 0; }
.rx-photo__badge { position: absolute; top: var(--rx-s1); left: var(--rx-s1); }

/* A small square thumbnail inside a table cell. */
.rx-thumb { width: 56px; height: 56px; border-radius: var(--rx-radius-sm); object-fit: cover; background: var(--rx-paper-2); display: block; border: 1px solid var(--rx-line); }
.rx-thumb--empty { display: flex; align-items: center; justify-content: center; color: var(--rx-ink-3); font-size: .7rem; text-align: center; }

/* File picker drop zone. */
.rx-drop {
	border: 1.5px dashed var(--rx-line); border-radius: var(--rx-radius); padding: var(--rx-s5);
	text-align: center; background: var(--rx-paper-2); color: var(--rx-ink-2);
}
.rx-drop.is-over { border-color: var(--rx-accent); background: #fff5f4; }
.rx-drop input[type="file"] { max-width: 100%; }

/* Destructive actions sit apart from the save bar. */
.rx-danger-zone { border: 1px solid #f3c7c3; border-radius: var(--rx-radius); padding: var(--rx-s4); margin-top: var(--rx-s6); }
.rx-danger-zone h3 { font-size: .95rem; margin: 0 0 var(--rx-s2); color: #b0281f; }

/* Money summary rows (balances, order totals). */
.rx-sum { display: grid; gap: var(--rx-s1); max-width: 22rem; margin-left: auto; }
.rx-sum__row { display: flex; justify-content: space-between; gap: var(--rx-s4); font-variant-numeric: tabular-nums; }
.rx-sum__row--total { border-top: 1px solid var(--rx-line); padding-top: var(--rx-s2); font-weight: 600; }

/* Extra status pills used across areas. */
.rx-pill--confirmed, .rx-pill--paid, .rx-pill--active, .rx-pill--live, .rx-pill--fulfilled { background: #e7f5ec; color: #1a7f4b; }
.rx-pill--pendingpayment, .rx-pill--pending, .rx-pill--scheduled, .rx-pill--prospect, .rx-pill--unfulfilled, .rx-pill--partial { background: #fdf2e2; color: #9a6212; }
.rx-pill--waitlisted { background: #e8effb; color: #2a5db0; }
.rx-pill--expired, .rx-pill--archived, .rx-pill--disabled, .rx-pill--ended, .rx-pill--inactive { background: #eceef1; color: #5b616b; }
.rx-pill--refunded, .rx-pill--partiallyrefunded, .rx-pill--failed, .rx-pill--lowstock, .rx-pill--soldout, .rx-pill--usedup { background: #fdecea; color: #b0281f; }

.rx-muted { color: var(--rx-ink-3); }
.rx-nowrap { white-space: nowrap; }
/* .rx-visually-hidden moved to theme.css, which admin pages load too. */
.rx-pager { margin-top: var(--rx-s4); align-items: center; }
.rx-stack { white-space: pre-wrap; word-break: break-word; max-height: 32rem; overflow: auto; margin: 0; padding: var(--rx-s3); background: var(--rx-paper-2); border-radius: var(--rx-radius-sm); font-size: .8rem; }
.rx-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .88em; }

/* ---- area styles: append below, one clearly headed block per area ---- */

/* ---------- Sponsors admin ---------- */
body.rx-admin img.rx-thumb.rx-sp-thumb { object-fit: contain; background: #fff; padding: 4px; }
.rx-sp-square-note { margin: 0 0 var(--rx-s4); }

.rx-sp-deal { border: 1px solid var(--rx-line); border-radius: var(--rx-radius); padding: var(--rx-s4); margin-bottom: var(--rx-s4); background: var(--rx-paper); }
.rx-sp-deal__head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: var(--rx-s3); margin-bottom: var(--rx-s4); }
body.rx-admin h3.rx-sp-deal__title { font-size: 1.05rem; margin: 0; }
.rx-sp-deal__view { font-family: var(--rx-font); font-weight: 500; font-size: .82rem; margin-left: var(--rx-s2); }
.rx-sp-deal__pills { display: flex; flex-wrap: wrap; gap: var(--rx-s1); margin-top: var(--rx-s2); }
.rx-sp-deal__actions { display: flex; flex-wrap: wrap; gap: var(--rx-s2); }
body.rx-admin .rx-sp-deal__actions .ui.button { margin: 0; min-height: var(--rx-tap); }
.rx-sp-deal__body { display: grid; gap: var(--rx-s4); grid-template-columns: 1fr; margin-bottom: var(--rx-s4); }
.rx-sp-deal__body .rx-sum { margin-left: 0; }
.rx-sp-deal__foot { display: flex; justify-content: flex-end; margin-top: var(--rx-s3); }
body.rx-admin .rx-sp-deal__foot .ui.button { min-height: var(--rx-tap); margin: 0; }
.rx-sp-ledger { margin-top: var(--rx-s2); }
.rx-sp-noledger { margin: 0; }
body.rx-admin .rx-sp-void td { color: var(--rx-ink-3); text-decoration: line-through; }
body.rx-admin .rx-sp-void td .rx-pill { text-decoration: none; }
.rx-sp-over { color: #9a6212; }
.rx-sp-pre { white-space: pre-wrap; }

.rx-sp-logo { display: grid; gap: var(--rx-s4); grid-template-columns: 1fr; margin-bottom: var(--rx-s4); }
.rx-sp-logo__current { max-width: 200px; }
.rx-sp-logo__current[hidden], .rx-sp-drop-preview[hidden] { display: none; }
.rx-sp-drop-preview { display: block; max-height: 120px; max-width: 100%; margin: 0 auto var(--rx-s3); }

.rx-sp-modal__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--rx-s2); margin-top: var(--rx-s4); }
body.rx-admin .rx-sp-modal__actions .ui.button { margin: 0; min-height: var(--rx-tap); }
.rx-sp-hint-block { display: block; margin: calc(-1 * var(--rx-s2)) 0 var(--rx-s4); }

.rx-sp-tiers { display: grid; gap: var(--rx-s3); }
.rx-sp-tier { display: grid; gap: var(--rx-s3); grid-template-columns: 1fr; align-items: end; padding-bottom: var(--rx-s3); border-bottom: 1px solid var(--rx-line); }
.rx-sp-tiers .rx-sp-tier:last-child, #tierAddForm.rx-sp-tier { border-bottom: 0; padding-bottom: 0; }
body.rx-admin .ui.form.rx-sp-tier .field { margin: 0; }
.rx-sp-tier__meta { padding-bottom: .6rem; }
.rx-sp-tier__actions { display: flex; gap: var(--rx-s2); }
body.rx-admin .rx-sp-tier__actions .ui.button { margin: 0; min-height: var(--rx-tap); }
.rx-sp-tier > .ui.error.message { grid-column: 1 / -1; margin: 0; }

@media (min-width: 640px) {
	.rx-sp-tier { grid-template-columns: minmax(0, 1fr) 7rem 8rem auto; }
	#tierAddForm.rx-sp-tier { grid-template-columns: minmax(0, 1fr) 7rem auto; }
	.rx-sp-logo { grid-template-columns: 200px minmax(0, 1fr); align-items: start; }
}
@media (min-width: 900px) {
	.rx-sp-deal__body { grid-template-columns: minmax(0, 1fr) 20rem; }
}
/* ---------- People admin ---------- */
.rx-people-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--rx-s3); margin-top: var(--rx-s4); }
.rx-person-meta { margin-bottom: var(--rx-s5); }
.rx-person-pax { margin-top: var(--rx-s1); color: var(--rx-ink-2); }
.rx-person-photos { list-style: none; margin: 0 0 var(--rx-s4); padding: 0; }
.rx-person-upload { margin-top: var(--rx-s4); }
.rx-filters .field .ui.checkbox { min-height: 38px; display: inline-flex; align-items: center; }
/* ---------- Shop admin ---------- */
/* Variant editor: a card per variant on phones, one row per variant on desktop. */
.rx-variants { display: grid; gap: var(--rx-s3); }
.rx-variant {
	display: grid; gap: var(--rx-s3); grid-template-columns: 1fr 1fr; align-items: end;
	padding: var(--rx-s3); border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); background: var(--rx-paper);
}
.rx-variant.is-inactive { background: var(--rx-paper-2); }
body.rx-admin .ui.form .rx-variant .field { margin: 0; min-width: 0; }
body.rx-admin .rx-variant > .field > label, .rx-variant__label {
	display: block; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase;
	color: var(--rx-ink-3); font-weight: 600; margin-bottom: .28rem;
}
body.rx-admin .rx-variant .ui.checkbox label { font-size: .9rem; letter-spacing: normal; text-transform: none; color: var(--rx-ink-2); font-weight: 500; }
.rx-variant__stock { display: flex; align-items: center; min-height: var(--rx-tap); font-variant-numeric: tabular-nums; font-weight: 600; }
.rx-variant__active .ui.checkbox { min-height: var(--rx-tap); display: inline-flex; align-items: center; }
.rx-variant__actions { grid-column: 1 / -1; display: flex; gap: var(--rx-s1); justify-content: flex-end; }
body.rx-admin .rx-variant__actions .ui.button { margin: 0; }

/* Image uploads */
.rx-drop__label { display: block; font-weight: 600; color: var(--rx-ink); margin-bottom: var(--rx-s2); cursor: pointer; }
.rx-uploads { list-style: none; margin: var(--rx-s3) 0; padding: 0; display: grid; gap: var(--rx-s1); font-size: .88rem; }
.rx-upload { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--rx-s2); padding: var(--rx-s2) var(--rx-s3); border-radius: var(--rx-radius-sm); background: var(--rx-paper-2); }
.rx-upload__name { overflow-wrap: anywhere; }
.rx-upload__state { color: var(--rx-ink-2); font-variant-numeric: tabular-nums; }
.rx-upload.is-done .rx-upload__state { color: #1a7f4b; }
.rx-upload.is-error .rx-upload__state { color: #b0281f; }
.rx-photo-grid--wide { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); margin-top: var(--rx-s4); }
body.rx-admin .rx-photo__body.ui.form .field { margin-bottom: var(--rx-s2); }
body.rx-admin .rx-photo__body.ui.form .field > label { font-size: .75rem; }

/* Dialog buttons, pager, order layout */
.rx-modal-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--rx-s2); margin-top: var(--rx-s4); }
body.rx-admin .rx-modal-actions .ui.button { margin: 0; }
.rx-filters__check { flex: 0 1 auto !important; }
.rx-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--rx-s3); margin-top: var(--rx-s4); }
.rx-order-grid { display: grid; gap: 0 var(--rx-s5); grid-template-columns: minmax(0, 1fr); }
.rx-order-grid .rx-sum { margin-top: var(--rx-s4); }

@media (min-width: 1024px) {
	.rx-variant { grid-template-columns: 5.5rem 7rem minmax(8rem, 1.4fr) 6.5rem 5.5rem 5rem 6.5rem auto auto; }
	.rx-variant__actions { grid-column: auto; }
	.rx-order-grid { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); align-items: start; }
}
/* ---------- Media admin ---------- */
.rx-media-add { align-items: start; }
.rx-media-add .rx-panel { margin-bottom: var(--rx-s5); }
.rx-media-current { display: flex; flex-wrap: wrap; gap: var(--rx-s4); align-items: flex-start; margin-bottom: var(--rx-s5); }
.rx-media-current__thumb, .rx-media-item__thumb a { position: relative; display: block; }
.rx-media-current__thumb img { width: 240px; max-width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--rx-radius-sm); display: block; }
.rx-media-play {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	width: 44px; height: 44px; border-radius: 50%; background: rgba(17,18,20,.75); color: #fff;
	display: flex; align-items: center; justify-content: center;
}
.rx-media-play .icon { margin: 0 0 0 3px; }
.rx-media-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--rx-s3); }
.rx-media-item {
	display: grid; gap: var(--rx-s3); grid-template-columns: 1fr;
	border: 1px solid var(--rx-line); border-radius: var(--rx-radius-sm); padding: var(--rx-s3); background: var(--rx-paper);
}
.rx-media-item.is-recap { border-color: #9fd3b4; background: #f6fbf8; }
.rx-media-item.is-hidden .rx-media-item__thumb img { opacity: .45; }
.rx-media-item__thumb { display: grid; gap: var(--rx-s1); align-content: start; justify-items: start; }
.rx-media-item__thumb img { width: 100%; max-width: 320px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--rx-radius-sm); background: var(--rx-paper-2); display: block; }
body.rx-admin .rx-media-item__form .field { margin-bottom: var(--rx-s3); }
.rx-media-item__bar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--rx-s3); }
.rx-media-item__bar .rx-savebar__status { margin-left: auto; }
.rx-media-item__tools { display: flex; flex-wrap: wrap; gap: var(--rx-s1); align-content: start; }
body.rx-admin .rx-media-item__tools .ui.button { min-height: 36px; margin: 0; }
.rx-photo.is-hidden img { opacity: .45; }
.rx-upload-list { list-style: none; margin: var(--rx-s3) 0 0; padding: 0; display: grid; gap: var(--rx-s1); font-size: .88rem; }
.rx-upload-list__item { display: flex; justify-content: space-between; gap: var(--rx-s3); }
.rx-upload-list__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rx-upload-list__item.is-ok .rx-upload-list__state { color: #1a7f4b; }
.rx-upload-list__item.is-error .rx-upload-list__state { color: #b0281f; }
.rx-text-danger { color: #b0281f; }
@media (min-width: 900px) {
	.rx-media-item { grid-template-columns: 200px minmax(0, 1fr) auto; align-items: start; }
}