/* Comics & Games — the shared room chrome.
 *
 * Everything a GAME looks like ships in its own ported sheet (crossing.css /
 * road.css), each of which is scoped entirely under its wrapper class. This
 * file is the thin layer between those sheets and the newspaper: the desk's
 * proof strip, the "from the case" line, and the two rules that stop a game
 * from behaving badly inside a theme column it was not designed for.
 *
 * Load order matters: this is enqueued as a DEPENDENCY of the game sheets, so
 * a game may override anything here and never the other way round.
 */

/* The games were prototyped full-bleed. Inside a page they get the column the
 * theme gives them, plus a little breathing room; a game that ignores the
 * column reads as an iframe, which is exactly what it is not. */
.rt-game {
	margin: 1.5rem 0 2.5rem;
	max-width: 100%;
}

/* Never let a game be the reason the PAGE scrolls sideways.
 *
 * The obvious version of this rule — `.rt-game * { max-width: 100% }` — was
 * written first and was wrong, and the way it was wrong is worth keeping:
 * The Road's plat is deliberately WIDER than its window and pans inside it
 * ("drag to pan"), so clamping every descendant to the column squashed a
 * 1,057px survey map into 317px of blank ground. Measured at 390px, not
 * guessed at.
 *
 * So the guard sits on the wrapper only: the game may not exceed the column,
 * and anything inside it that is legitimately wider must carry its own
 * scroll box — which both prototypes already do. */
.rt-game {
	overflow-x: clip;
}

/* -- the desk's proof strip ------------------------------------------------
 * Only ever rendered for a user who can reach the Games desk. It is admin
 * furniture on a public page, so it deliberately looks like nothing else in
 * the paper: no serif, no rules, no colour the newspaper uses editorially. */
.rt-game-proofbar {
	margin: 0 0 1rem;
	padding: .5rem .75rem;
	border: 1px dashed currentColor;
	border-radius: 3px;
	font: 500 13px/1.5 ui-sans-serif, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	letter-spacing: .01em;
	opacity: .85;
	display: flex;
	flex-wrap: wrap;
	gap: .25rem .9rem;
	align-items: baseline;
}
.rt-game-proofbar.is-proof {
	border-style: solid;
	opacity: 1;
}
.rt-game-proofbar a {
	text-decoration: underline;
	white-space: nowrap;
}

/* -- "from the case" ------------------------------------------------------
 * The honest label on a week that is re-featuring an older crossing because
 * this week's has not been approved. Quiet on purpose: it is a fact about the
 * schedule, not an apology, and it must not read as an error state. */
.rt-game-case[hidden] {
	display: none;
}
.rt-game-case {
	margin: 0 0 .75rem;
	font: 500 12px/1.5 ui-sans-serif, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	letter-spacing: .06em;
	text-transform: uppercase;
	opacity: .7;
}

/* -- nothing approved yet -------------------------------------------------- */
.rt-game-empty {
	padding: 1.5rem;
	border: 1px solid currentColor;
	border-radius: 3px;
	text-align: center;
	opacity: .8;
}
.rt-game-empty__head {
	margin: 0 0 .35rem;
	font: 600 15px/1.3 ui-sans-serif, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.rt-game-empty p {
	margin: 0;
}

/* A gated "continue west" is a fact about the calendar, not a broken button —
 * it keeps its shape and loses its urgency. */
.rt-road .rt-road-waiting {
	cursor: default;
	opacity: .55;
}
