/* Regex tester: styles specific to this tool. Shared shell rules live in ../shared/shell.css.
   Colours come from the site tokens only, so light and dark themes both work. Zero radius. */

.tool .rx-pattern {
	font-family: var(--mono);
	font-size: 0.9rem;
}

/* ---- input pane -------------------------------------------------------- */

.tool .rx-flags {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 9.5rem), 1fr));
	gap: 0.35rem 0.6rem;
	margin: 0;
	min-width: 0;
	padding: 0.45rem 0.6rem 0.55rem;
	border: 1px solid var(--line);
	background: var(--canvas);
}

.tool .rx-flags legend {
	padding: 0 0.3rem;
	font-size: 0.78rem;
	font-weight: 600;
	color: var(--ink);
}

.tool .rx-flag {
	display: flex;
	align-items: flex-start;
	gap: 0.4rem;
	min-width: 0;
	font-size: 0.82rem;
	color: var(--text);
	cursor: pointer;
}

.tool .rx-flag input {
	margin: 0.2rem 0 0;
	accent-color: var(--accent);
}

.tool .rx-flag code {
	font-family: var(--mono);
	color: var(--ink);
}

.tool .rx-flag .tool-hint {
	display: block;
}

/* ---- output: sections and blocks --------------------------------------- */

.tool .rx-out h3.tool-subhead {
	margin: 1.2rem 0 0.4rem;
}

.tool .rx-out > h3.tool-subhead:first-child,
.tool .rx-out > .rx-banner + h3.tool-subhead {
	margin-top: 0;
}

.tool .rx-sub {
	margin: 0.7rem 0 0.35rem;
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--ink);
}

.tool .rx-block {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	min-width: 0;
	margin-bottom: 0.6rem;
}

.tool .rx-block-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.3rem 0.5rem;
}

.tool .rx-block-label {
	font-size: 0.78rem;
	font-weight: 600;
	color: var(--ink);
}

.tool .rx-pre {
	margin: 0;
	padding: 0.5rem 0.6rem;
	font-family: var(--mono);
	font-size: 0.78rem;
	line-height: 1.45;
	white-space: pre-wrap;
	overflow-wrap: anywhere;
	color: var(--ink);
	background: var(--canvas);
	border: 1px solid var(--line);
}

.tool .rx-warn {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	margin-bottom: 0.5rem;
}

.tool .rx-warn p {
	margin: 0;
}

.tool .rx-warn-list {
	margin: 0;
	padding-left: 1.1rem;
	font-size: 0.8rem;
	color: var(--text);
}

/* ---- portability cards ------------------------------------------------- */

.tool .rx-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
	gap: 0.5rem;
	min-width: 0;
}

.tool .rx-card {
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
	min-width: 0;
	padding: 0.6rem 0.7rem;
	background: var(--surface);
	border: 1px solid var(--line);
}

.tool .rx-card--for {
	border-top: 2px solid var(--accent);
}

.tool .rx-card-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.3rem 0.5rem;
}

.tool .rx-card-title {
	margin: 0;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--ink);
}

.tool .rx-tag {
	font-size: 0.66rem;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--accent);
}

.tool .rx-pill--risky {
	color: var(--violet);
}

.tool .rx-card-sum {
	margin: 0;
	font-size: 0.8rem;
	color: var(--text);
}

.tool .rx-issues {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tool .rx-issues li {
	margin-top: 0.4rem;
	padding-top: 0.4rem;
	border-top: 1px solid var(--line);
}

.tool .rx-issue-head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.2rem 0.45rem;
}

.tool .rx-verdict {
	font-size: 0.66rem;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--muted);
}

.tool .rx-construct {
	padding: 0 0.25rem;
	font-family: var(--mono);
	font-size: 0.78rem;
	color: var(--ink);
	background: var(--canvas);
	border: 1px solid var(--line);
	overflow-wrap: anywhere;
}

.tool .rx-note {
	margin: 0.2rem 0 0;
	font-size: 0.8rem;
	color: var(--text);
}

.tool .rx-redos {
	margin: 0;
	padding: 0.45rem 0.55rem;
	font-size: 0.8rem;
	color: var(--text);
	background: var(--canvas);
	border-left: 3px solid var(--violet);
}

.tool .rx-redos p {
	margin: 0 0 0.3rem;
}

.tool .rx-redos p:last-child {
	margin-bottom: 0;
}

/* ---- banner (Try in JS) ------------------------------------------------ */

.tool .rx-banner p {
	margin: 0 0 0.3rem;
}

.tool .rx-banner-lists {
	font-size: 0.8rem;
}

.tool .rx-banner-lists p {
	margin: 0.4rem 0 0.2rem;
}

.tool .rx-banner-lists code {
	font-family: var(--mono);
	font-size: 0.78rem;
	overflow-wrap: anywhere;
}

/* ---- highlighted input and matches ------------------------------------- */

.tool .rx-highlight {
	max-height: 16rem;
	padding: 0.55rem 0.65rem;
	overflow: auto;
	font-family: var(--mono);
	font-size: 0.8rem;
	line-height: 1.55;
	white-space: pre-wrap;
	overflow-wrap: anywhere;
	color: var(--text);
	background: var(--canvas);
	border: 1px solid var(--line);
}

.tool .rx-mark {
	padding: 0 0.1rem;
	color: var(--ink);
	background: var(--accent-soft);
	box-shadow: inset 0 -2px 0 var(--accent);
}

.tool .rx-mark--b {
	background: var(--gold-soft);
	box-shadow: inset 0 -2px 0 var(--gold);
}

.tool .rx-match-table {
	min-width: 34rem;
}

.tool .rx-diff-table {
	min-width: 36rem;
}

.tool .rx-diff-table th[scope="row"] {
	font-size: 0.8rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--ink);
}
