/* ==========================================================================
   Corteksa theme for SquashTM 15.0.0
   --------------------------------------------------------------------------
   WHAT THIS IS
   The Corteksa palette applied over SquashTM's own stylesheet. Served by Caddy
   in place of /squash/styles-<hash>.css; the line below pulls SquashTM's real
   stylesheet back in, and everything after it overrides.  See docs/branding.md.

   WHY @import AND NOT A COPY
   Shipping a modified copy of SquashTM's 675 KB stylesheet would mean a
   SquashTM upgrade silently serving last version's CSS to this version's DOM —
   actively broken, not merely unstyled. Importing means we carry ~200 lines of
   overrides and the upstream CSS always comes from the running app.

   WHY !important IS EVERYWHERE, AND IS CORRECT HERE
   SquashTM applies its theme as INLINE custom properties on <html> at runtime
   (verified in the browser: document.documentElement carries --nav-main-color
   and 23 siblings). Inline declarations beat normal author rules, so a plain
   :root block would lose. An author !important declaration beats an inline
   normal one — that is the only lever that works, and it is the documented
   cascade, not a hack. Do not remove these.

   REVERTING ONE THING
   The palette is variables-only in §2. Deleting a line restores SquashTM's
   value for it. §3 onward touches real rules and is where care is needed.
   ========================================================================== */

@import url("_corteksa-squash-base.css");

/* ==========================================================================
   1. The Corteksa palette
   Source: Corteksa Projects/landing/app/globals.css (.crm-demo block), which
   is the canonical brand token set. Read, not guessed — and not modified.
   ========================================================================== */

:root {
	--ck-violet: #7a55f0; /* --primary, identical in light and dark */
	--ck-violet-bright: #9b7ff5;
	--ck-violet-deep: #4b2fb0;

	--ck-ink: #14111c; /* --background, dark: violet-tinted near-black */
	--ck-ink-deep: #0d0b12; /* --card, dark */
	--ck-ink-raised: #1c1826; /* --secondary, dark */
	--ck-ink-line: #2a2535; /* --border, dark */

	--ck-canvas: #f4f4f3; /* --background, light */
	--ck-surface: #ffffff; /* --card, light */
	--ck-text: #1f2328; /* --foreground, light */
	--ck-text-muted: #656d76; /* --muted-foreground, light */
	--ck-line: #ebebed; /* --border, light */
	--ck-danger: #d1242f; /* --destructive, light */
	--ck-radius: 8px; /* --radius: 0.5rem */
}

/* ==========================================================================
   2. Repoint SquashTM's theme variables at the palette

   Every name below is one SquashTM sets inline on <html>. Nothing invented.
   ========================================================================== */

:root {
	/* The side navigation — which is what "brand it Corteksa" mostly means. */
	--nav-main-color: var(--ck-ink) !important;

	/* Surfaces. Backgrounds and borders ONLY. No text colour is set from this
	   block, and none should be — see the note immediately below. */
	--background-color: var(--ck-canvas) !important;
	--container-background-color: var(--ck-surface) !important;
	--container-border-color: var(--ck-line) !important;
}

/* ==========================================================================
   EVERY TEXT COLOUR IS DELIBERATELY LEFT TO SQUASHTM
   --------------------------------------------------------------------------
   An earlier revision of this file unified all nine workspace accent colours on
   the Corteksa violet. That turned every heading, tree node name and grid title
   violet, which reads as "everything on this page is a link". The owner asked
   for SquashTM's colours back on 2026-09-05.

   THIS IS A DECISION, NOT AN OMISSION. Do not re-add those overrides.

   What is preserved by not touching it — SquashTM's per-workspace accent, which
   is functional wayfinding: the colour tells you which workspace you are in
   before you read the heading.

     Test cases / Automation / Action words   green    #037F4C
     Requirements                             blue     #0078ae
     Campaigns                                purple   #751AA3
     Custom reports                           crimson  #a2104d
     Bugtracker                               orange   #f69422
     Administration                           navy     #435979
     Home                                     ink      #191D35

   It drives headings, tree node names, the active navigation item, tab
   underlines, link hovers and row hover/selection tints — so leaving
   --current-workspace-* alone restores all of those at once.

   --label-color, --gray-accented-color, --selected-color and --user-value-color
   are untouched for the same reason: every one of them is a text colour.

   Corteksa's identity is carried by the chrome instead — the logo, the dark
   navigation, the login call to action and the user avatar.
   ========================================================================== */

/* ==========================================================================
   3. Spacing

   SquashTM's content card is padded 10px and rounded 5px, which leaves tables
   and forms almost touching their own border. These are safe to change because
   the app's reset sets box-sizing: border-box globally, so padding grows
   inward and cannot push a `full-height` container into overflow.

   NOTHING HERE CHANGES A WIDTH, A HEIGHT, A DISPLAY MODE OR A FLEX RULE. The
   whole layout is `full-height full-width overflow-hidden` flexbox, and that
   is exactly the kind of layout that breaks when you nudge box metrics. Only
   padding, radius, colour and border are touched.
   ========================================================================== */

.sqtm-large-grid-container {
	padding: 16px !important;
	border-radius: var(--ck-radius) !important;
}

/* The vertical anchor strip's icons sit flush against the panel edges. */
.anchor-bar {
	padding-block: 6px !important;
}

/* The workspace tree column: its action toolbar and the tree beneath it share
   an edge with no separation, and the tree's first row starts hard against the
   navigation. The selector is the toolbar's own class combination — the
   component wrapper is a per-workspace tag name (sqtm-app-test-case-workspace-
   tree, …-requirement-…, one per workspace) that CSS cannot match generically. */
.m-5.font-20-px.flex-fixed-size.flex-row {
	border-bottom: 1px solid var(--ck-line) !important;
	padding-bottom: 6px !important;
	margin-bottom: 8px !important;
}

.sqtm-core-prevent-selection-in-grid {
	padding-left: 8px !important;
}

/* ==========================================================================
   4. Corners

   SquashTM ships --rounding-factor: 0 — every input, button, card and dropdown
   is a hard rectangle. Corteksa's system is 0.5rem. Rounding is applied to the
   specific component classes rather than globally with `*`, because a blanket
   radius also rounds table cells, scrollbars and dividers, which looks broken.
   ========================================================================== */

.ant-btn,
.ant-input,
.ant-input-affix-wrapper,
.ant-select-selector,
.ant-modal-content,
.ant-dropdown-menu,
.ant-tooltip-inner,
.ant-tag,
.sqtm-overlay-border {
	border-radius: 6px !important;
}

.ant-btn-circle,
.ant-avatar {
	border-radius: 50% !important;
}

/* ==========================================================================
   5. Typography legibility

   Grid headers ship uppercase at a small size, which is the least legible
   combination in the app and the one an operator reads most. Sentence case at
   a slightly heavier weight reads faster without changing any box metrics.

   NOTE: no `color` here. Case and weight are legibility; the colour is
   SquashTM's and stays SquashTM's, per the text-colour note in §2.
   ========================================================================== */

.sqtm-grid-header-cell,
.sqtm-grid-header-cell * {
	text-transform: none !important;
	letter-spacing: 0.01em !important;
	font-weight: 600 !important;
}

/* ==========================================================================
   6. Focus visibility

   The default focus ring is the old navy at low contrast. Accessible keyboard
   focus matters more on an internal tool than anywhere else, because this is
   where people live all day.

   The ring follows --current-workspace-main-color rather than the brand violet,
   so it stays coherent with whichever workspace accent SquashTM is showing.
   ========================================================================== */

.ant-input:focus,
.ant-input-focused,
.ant-input-affix-wrapper:focus-within,
.ant-select-focused .ant-select-selector,
.ant-btn:focus-visible {
	border-color: var(--current-workspace-main-color) !important;
	box-shadow: 0 0 0 3px var(--current-workspace-box-shadow-color) !important;
}

/* ==========================================================================
   7. Side navigation

   The nav is the one surface where Corteksa's dark palette does real work, so
   it gets the tuning the rest of the app does not need.
   ========================================================================== */

/* --- Separators ----------------------------------------------------------
   SquashTM draws these as a 1px div filled with #36395f — a blue-navy picked to
   sit on its own #191D35 sidebar. On Corteksa's violet-black it reads as a
   distinctly BLUE line, most visibly the one directly under the logo.

   They are also inconsistent out of the box: three run edge to edge at 170px
   and the one between Executions and Reporting is inset to 130px, for no
   reason that survives looking at it. Margin here makes all four inset to the
   same 16px as the navigation labels, so the separators line up with the text
   they separate instead of cutting across the panel. */
.sqtm-nav-bar-divider {
	background-color: var(--ck-ink-line) !important;
	margin: 8px 16px !important;
}

/* One of the four sits inside a wrapper carrying SquashTM's .p-l-20 .p-r-20
   utility classes, so it inherited 20px of padding ON TOP of the margin above
   and came out 40px narrower than its siblings. Zeroing the wrapper is what
   makes all four the same width.

   :has() scopes this to wrappers that actually contain a divider — .p-l-20 and
   .p-r-20 are generic utilities used all over the application, and blanket-
   zeroing them would re-space unrelated screens. */
.ant-menu-dark .p-l-20.p-r-20:has(> .sqtm-nav-bar-divider) {
	padding-inline: 0 !important;
}

/* --- Items --------------------------------------------------------------
   SquashTM paints the selected item as a full-bleed rectangle, edge to edge
   across the panel and squared off against both sides. Insetting it and
   rounding the corners is the single change that most separates this from
   "a 2014 admin template", and it costs no layout: these are block-level
   children of a vertical menu, so a horizontal margin simply narrows them.

   Both selectors are needed because the two kinds of entry differ: a plain
   workspace link IS the <li>, while a submenu's highlight is a <div> inside
   its <li>. Styling only one leaves Automation and Administration square while
   everything above them is rounded. */
.ant-menu-dark .ant-menu-item,
.ant-menu-dark .ant-menu-submenu-title {
	margin-inline: 8px !important;
	width: auto !important;
	border-radius: 6px !important;
}

/* Hover feedback before an item is active. SquashTM has none at all, so the
   navigation feels dead until something is clicked. */
.ant-menu-dark .ant-menu-item:not(.ant-menu-item-selected):hover,
.ant-menu-dark .ant-menu-submenu-title:hover {
	background-color: var(--ck-ink-raised) !important;
}

/* --- The logo block -----------------------------------------------------
   60px tall with the wordmark held 10px off every edge, which puts it almost
   against the top of the window and crowds it against the separator below.
   Widening the block's own padding gives the mark room without moving anything
   else: the wordmark is an SVG that letterboxes into whatever box it is given
   (see scripts/brand/build-brand-assets.sh), so it re-centres itself. */
li.home-workspace-link {
	padding-block: 6px 8px !important;
}

/* Navigation entries removed on owner request, 2026-09-05:
   "Action words" (SquashTM's BDD keyword workspace, unused here) and "Help"
   (links out to Squash's own documentation, which is not this platform's).

   SquashTM has no setting for either — core_config carries feature flags for
   milestones, quick test and automation servers, and nothing for these — so
   hiding the entries is the available lever.

   TWO SELECTOR STYLES, ON PURPOSE. SquashTM labels its navigation two different
   ways and each entry only has one of them:
     - workspace links carry a class, e.g. .action-word-workspace-link
     - submenus carry data-test-navbar-field-id, e.g. "help"
   The data attribute is the better anchor where it exists: it is SquashTM's own
   test hook, so it is meant to be stable, unlike a styling class.

   THESE ARE COSMETIC, NOT PERMISSIONS. Both destinations still exist and still
   resolve if someone types the URL. To make one genuinely unreachable, change
   the profile in Administration — a stylesheet cannot enforce access. */
li.action-word-workspace-link,
li[data-test-navbar-field-id="help"] {
	display: none !important;
}

/* The user avatar at the foot of the nav ships a hard-coded teal-green
   (rgb(17,166,124)) as an INLINE style, so it survived the variable remap and
   was the one thing on screen still wearing SquashTM's palette. Inline is why
   this needs !important; ant-avatar-lg + circle is the nav's avatar
   specifically, not the small ones used inside grids.

   :not(.admin-avatar) IS LOad-BEARING. The same three classes are worn by the
   "leave administration" button, whose icon is drawn with fill="currentColor".
   Painting its background violet left a violet glyph on a violet disc — an
   invisible control. It keeps SquashTM's own light treatment, which also reads
   correctly as a different kind of action from an identity chip. */
nz-avatar.ant-avatar-lg.ant-avatar-circle:not(.admin-avatar) {
	background-color: var(--ck-violet) !important;
}

/* ==========================================================================
   9. Login page

   The first screen anyone sees, and the most brand-forward. Its submit button
   inherits --nav-main-color, so with the Corteksa ink applied it rendered as a
   near-black slab; Corteksa's design system puts --primary on primary actions.
   Scoped to .login-page so no other .ant-btn-lg in the app is affected.
   ========================================================================== */

/* FIVE CLASSES ON PURPOSE — DO NOT SHORTEN THIS SELECTOR.
   Angular emits the login component's own style as
     .submit-button[_ngcontent-XXX] .ant-btn[_ngcontent-XXX]
       { background: var(--nav-main-color) !important }
   in a <style> injected into <head> AFTER our stylesheet. It is already
   !important, so importance cannot break the tie and source order favours it.
   Its specificity is (0,4,0); this selector is (0,5,0) and wins on specificity
   alone. The _ngcontent hash is per-build, so it is deliberately not matched.
   A three-class version of this rule was written first and silently lost. */
.login-page .login-form .submit-button .ant-btn.ant-btn-lg {
	background-color: var(--ck-violet) !important;
	border-color: var(--ck-violet) !important;
	color: #ffffff !important;
}

.login-page .login-form .submit-button .ant-btn.ant-btn-lg:hover {
	background-color: var(--ck-violet-bright) !important;
	border-color: var(--ck-violet-bright) !important;
}

/* --------------------------------------------------------------------------
   THE LOGIN PAGE IS RE-LAID-OUT, NOT JUST RECOLOURED
   --------------------------------------------------------------------------
   SquashTM stacks three blocks down the middle of a grey field: a 46px bar with
   the logo in the corner, a bordered form box 100px below it, and a
   1200px-wide white slab holding one line of text. Most of the window is empty.

   This is the ONE screen where a heavier hand is right: it is the first thing
   anyone sees, it carries the branding, and — unlike every workspace — it has
   no data, no grid and no resizable panels to break.

   The DOM cooperates. .login-page is a flex column with exactly three children:

     sqtm-core-horizontal-logout-bar   the dark bar (logo + help icon)
     .login-form                       the form box
     .welcome-message-wrapper          the message slab

   Re-declaring the parent as a 2-column grid turns those three into a
   split screen — the bar spans both rows on the left as a full-height brand
   panel, the form centres in the right column, the message sits beneath it.
   No element is moved in the DOM and nothing is hidden.

   EVERYTHING BELOW IS SCOPED TO .login-page. The logout bar component is used
   on other screens; none of this reaches them.
   -------------------------------------------------------------------------- */

.login-page {
	display: grid !important;
	grid-template-columns: minmax(360px, 42%) 1fr !important;
	grid-template-rows: 1fr auto !important;
	overflow: auto !important;
}

/* THE LOGIN PAGE HAS NO WEBFONT, AND ITS FALLBACK IS `serif`.
   SquashTM's stack is `"Segoe UI", Roboto, serif` and it serves Roboto from
   /squash/media/*.ttf — which returns 401 to an unauthenticated request.
   Verified against the container directly: it is SquashTM's own behaviour, not
   the proxy's, and it applies only before login.

   So this one screen renders in whatever the OS offers. On Windows that is
   Segoe UI and looks fine; anywhere without Segoe UI the chain falls through to
   `serif` and the login form comes out in Times. Restating the stack with a
   real sans-serif terminator fixes it on every platform, and still prefers
   Roboto if it ever does load. */
.login-page,
.login-page * {
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
}

/* --- Left: the brand panel ---------------------------------------------- */

.login-page > sqtm-core-horizontal-logout-bar {
	grid-row: 1 / 3 !important;
	grid-column: 1 !important;
	height: 100% !important;
}

.login-page .icon-bar {
	flex-direction: column !important;
	justify-content: center !important;
	align-items: center !important;
	height: 100% !important;
	padding: 48px 40px !important;
	position: relative !important;
	/* A violet wash off the top-left, so the panel is a brand surface rather
	   than a black rectangle. Two stops only — a gradient with more structure
	   than that starts competing with the logo. */
	background-image:
		radial-gradient(120% 90% at 12% 0%, rgba(122, 85, 240, 0.28) 0%, transparent 60%),
		radial-gradient(90% 70% at 100% 100%, rgba(122, 85, 240, 0.12) 0%, transparent 55%) !important;
}

/* The wordmark is an SVG that letterboxes into whatever box it is given, so it
   can simply be told to be bigger — no new asset, no distortion.
   The wrapper div has to be widened too: it is the flex item, so left to itself
   it shrink-wraps the old 171px logo and centres THAT, leaving the enlarged
   image hanging left of the tagline underneath it. */
.login-page .icon-bar > div {
	display: flex !important;
	justify-content: center !important;
	width: 100% !important;
	margin: 0 !important;
}

.login-page .icon-bar img {
	width: min(320px, 80%) !important;
	height: auto !important;
	margin: 0 !important;
}

/* Decorative tagline. Set in CSS because the DOM has nowhere to put it — which
   also means it is not translated and not selectable. Acceptable for a brand
   line on a login screen; it must never carry information a user needs. */
.login-page .icon-bar::after {
	content: "QA Automation Platform";
	margin-top: 18px;
	color: rgba(255, 255, 255, 0.62);
	font-size: 15px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

/* The help icon would otherwise sit in the middle of the panel under the
   tagline. Corner-pinned, it reads as a utility rather than as content. */
.login-page .icon-bar .help-icon {
	position: absolute !important;
	top: 24px !important;
	right: 24px !important;
	margin: 0 !important;
	opacity: 0.55 !important;
}

.login-page .icon-bar .help-icon:hover {
	opacity: 1 !important;
}

/* --- Right: the form ----------------------------------------------------- */

.login-page > .login-form {
	grid-row: 1 !important;
	grid-column: 2 !important;
	align-self: center !important;
	justify-self: center !important;
	width: min(420px, calc(100% - 64px)) !important;
	margin: 0 !important; /* kills SquashTM's m-t-100 */
	padding: 40px !important;
	border: 0 !important;
	border-radius: 14px !important;
	box-shadow:
		0 1px 2px rgba(31, 35, 40, 0.04),
		0 12px 32px rgba(31, 35, 40, 0.08) !important;
}

/* Labels above their fields rather than in a right-aligned column beside them.
   The single-column grid is what does it: each label and each input becomes its
   own row, in DOM order. */
.login-page .form-grid {
	grid-template-columns: 1fr !important;
	gap: 6px !important;
}

/* justify-self, not text-align. SquashTM's grid right-aligns the label column,
   which places the BOX at the end of its cell; the span shrink-wraps its own
   text, so text-align inside it changes nothing and the label still sits over
   the right edge of the field. */
.login-page .form-grid > span {
	justify-self: start !important;
	text-align: left !important;
	font-size: 13px !important;
	font-weight: 500 !important;
}

/* The Password label — the third child — opens the second field group, so it
   carries the spacing between groups that a uniform grid gap cannot express. */
.login-page .form-grid > span:nth-child(3) {
	margin-top: 18px !important;
}

/* A card holding two unlabelled boxes and a button reads as unfinished. A
   heading is what makes it a form.

   CAVEAT, and it is a real one: CSS `content` is not translated and not
   selectable. SquashTM ships English, French, Spanish and German, and this
   string will stay English in all four. Acceptable for an internal
   English-language deployment; if this instance ever runs in another language,
   delete this rule rather than mistranslating the login screen. */
.login-page .login-form form::before {
	content: "Sign in";
	display: block;
	margin-bottom: 24px;
	font-size: 20px;
	font-weight: 600;
	color: var(--ck-text);
}

/* --- Fields --------------------------------------------------------------
   Bare 1px rectangles on white read as placeholders for inputs rather than as
   inputs. A faint fill gives them a surface, and the icon marks what each one
   is for at a glance.

   THE ICONS ARE BACKGROUNDS, NOT ELEMENTS. <input> is a replaced element: it
   renders no ::before or ::after, so a pseudo-element cannot be used here. An
   inline SVG data URI in background-image is the one mechanism that works, and
   padding-left is what keeps the caret clear of it.

   NO PLACEHOLDER TEXT, deliberately — see the note under the button. */
.login-page .form-grid input.ant-input {
	height: 44px !important;
	padding: 0 14px 0 42px !important;
	font-size: 15px !important;
	background-color: #fafafa !important;
	border-color: #e3e3e6 !important;
	background-repeat: no-repeat !important;
	background-position: 14px center !important;
	background-size: 18px 18px !important;
}

.login-page .form-grid input.ant-input:hover {
	border-color: #d4d4d8 !important;
}

.login-page .form-grid input.ant-input:focus {
	background-color: #ffffff !important;
}

.login-page .form-grid input[type="text"].ant-input {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23656d76' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E") !important;
}

.login-page .form-grid input[type="password"].ant-input {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23656d76' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") !important;
}

/* WHY THERE IS NO PLACEHOLDER TEXT IN THESE FIELDS
   ------------------------------------------------
   Not an oversight, and not a preference — CSS cannot do it. `placeholder` is
   an HTML attribute and there is no stylesheet mechanism to add one. The
   plausible fakes all break: <input> renders no pseudo-elements, and an
   overlay positioned from a sibling cannot be hidden once the field has a
   value, because :placeholder-shown itself requires the attribute this is
   trying to supply. It would sit on top of what the user typed.
   The labels above each field carry the same information, permanently rather
   than only while the field is empty, and they are translated. Adding
   placeholders needs a change inside SquashTM's own login component. */

.login-page .submit-button {
	margin-top: 28px !important;
}

.login-page .submit-button .ant-btn.ant-btn-lg {
	width: 100% !important;
	height: 46px !important;
	font-size: 15px !important;
	font-weight: 500 !important;
}

/* --- Right, below: the message ------------------------------------------ */
/* A single sentence does not need a 1200px white slab with a border around it.
   Stripped back to quiet type under the form, which is what it actually is. */

/* width:100% overrides SquashTM's 80%, which is why the sentence sat left of
   the card it belongs under rather than centred beneath it. */
.login-page > .welcome-message-wrapper {
	grid-row: 2 !important;
	grid-column: 2 !important;
	width: 100% !important;
	height: auto !important;
	margin: 0 0 40px !important;
	padding-inline: 32px !important;
}

/* width:100% is what makes text-align:center mean anything here — SquashTM
   sizes this block to its own width, so centring the text inside a box that is
   itself off-centre just moves the problem. */
.login-page .welcome-message {
	width: 100% !important;
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
	text-align: center !important;
	font-size: 13px !important;
	color: var(--ck-text-muted) !important;
}

/* --- Narrow windows ------------------------------------------------------ */
/* Below roughly a tablet the split stops being a split: the brand panel becomes
   a band across the top and the form takes the full width. Without this the
   360px minimum on column one squeezes the form off the screen. */
@media (max-width: 900px) {
	.login-page {
		grid-template-columns: 1fr !important;
		grid-template-rows: auto 1fr auto !important;
	}

	.login-page > sqtm-core-horizontal-logout-bar {
		grid-row: 1 !important;
		grid-column: 1 !important;
		height: auto !important;
	}

	.login-page .icon-bar {
		padding: 32px 24px !important;
	}

	.login-page .icon-bar img {
		width: min(240px, 60%) !important;
	}

	.login-page > .login-form {
		grid-row: 2 !important;
		grid-column: 1 !important;
	}

	.login-page > .welcome-message-wrapper {
		grid-row: 3 !important;
		grid-column: 1 !important;
	}
}

/* §8 was an --error-color override (#ff1719 -> Corteksa's calmer #d1242f).
   Removed with the rest of the text-colour changes on 2026-09-05: error text is
   text, and SquashTM's red is the one operators have learned to read. */
