/* The X Concept Accessibility. Sizes inside the toolbar are in px so the text-size setting does not resize the toolbar itself. */
:root {
	/* Colors: Settings → Accessibility → Colors overrides these. */
	--txca-accent: var(--txc-accent, #3355FF);
	--txca-surface: #FFFFFF;
	--txca-ink: #0A0F1C;
	--txca-muted: #4B5568;
	--txca-btn: var(--txca-ink);
	--txca-btn-text: #FFFFFF;
	--txca-a11y-bg: var(--txca-accent);
	--txca-a11y-fg: #FFFFFF;
	--txca-line: color-mix(in srgb, var(--txca-ink) 12%, var(--txca-surface));
	--txca-soft: color-mix(in srgb, var(--txca-ink) 5%, var(--txca-surface));
	--txca-radius: 20px;
	--txca-shadow: 0 24px 60px -18px rgba(7, 11, 22, .35), 0 2px 6px rgba(7, 11, 22, .08);
	--txca-gap: 20px;
	--txca-z: 2147483000;
}

.txca-ui, .txca-ui * { box-sizing: border-box; }
.txca-ui { font-family: inherit; font-size: 15px; line-height: 1.5; letter-spacing: normal; word-spacing: normal; color: var(--txca-ink); -webkit-font-smoothing: antialiased; }
.txca-ui [hidden] { display: none !important; }
.txca-ui a { color: var(--txca-accent); text-decoration: underline; text-underline-offset: 2px; }
.txca-ui h2 { margin: 0; font-size: 17px; line-height: 1.3; font-weight: 700; letter-spacing: -.01em; color: inherit; }
.txca-ui p { margin: 0; }
.txca-ui :focus-visible { outline: 3px solid var(--txca-accent); outline-offset: 2px; }
.txca-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; }

/* Buttons */
.txca-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 18px; border: 1.5px solid var(--txca-ink); border-radius: 999px; background: var(--txca-surface); color: var(--txca-ink); font: inherit; font-size: 14px; font-weight: 600; line-height: 1.2; cursor: pointer; transition: background-color .15s, color .15s, border-color .15s; }
.txca-btn:hover { background: var(--txca-soft); }
.txca-btn--primary { background: var(--txca-btn); border-color: var(--txca-btn); color: var(--txca-btn-text); }
.txca-btn--primary:hover { background: color-mix(in srgb, var(--txca-btn) 82%, var(--txca-accent)); }
.txca-btn svg { width: 18px; height: 18px; }
.txca-icon-btn { display: inline-grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 999px; background: var(--txca-soft); color: var(--txca-ink); cursor: pointer; }
.txca-icon-btn:hover { background: var(--txca-line); }
.txca-icon-btn:disabled { opacity: .4; cursor: default; }
.txca-icon-btn svg { width: 20px; height: 20px; }

/* Accessibility toolbar */
.txca-a11y { position: fixed; z-index: calc(var(--txca-z) - 1); bottom: var(--txca-bottom, var(--txca-gap)); transition: bottom .25s ease; }
.txca-a11y--right { right: var(--txca-gap); }
.txca-a11y--left { left: var(--txca-gap); }
.txca-a11y__btn { position: relative; display: grid; place-items: center; width: 52px; height: 52px; padding: 0; border: 2px solid var(--txca-a11y-fg); border-radius: 50%; background: var(--txca-a11y-bg); color: var(--txca-a11y-fg); box-shadow: var(--txca-shadow); cursor: pointer; transition: transform .15s; }
.txca-a11y__btn:hover { transform: scale(1.06); }
.txca-a11y__btn svg { width: 28px; height: 28px; stroke-width: 2; }
.txca-a11y__btn.is-active::after { content: ""; position: absolute; top: 2px; right: 2px; width: 12px; height: 12px; border: 2px solid #fff; border-radius: 50%; background: #10B981; }
.txca-a11y__panel { position: absolute; bottom: 64px; width: min(360px, calc(100vw - 2 * var(--txca-gap))); max-height: calc(100vh - 120px); overflow: auto; padding: 18px; border: 1px solid var(--txca-line); border-radius: var(--txca-radius); background: var(--txca-surface); color: var(--txca-ink); box-shadow: var(--txca-shadow); }
.txca-a11y--right .txca-a11y__panel { right: 0; }
.txca-a11y--left .txca-a11y__panel { left: 0; }
.txca-a11y__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.txca-a11y__head h2 { font-size: 18px; }
.txca-a11y__size { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: 14px; background: var(--txca-soft); }
.txca-a11y__label { display: inline-flex; align-items: center; gap: 10px; font-weight: 600; font-size: 14px; }
.txca-a11y__label svg { width: 20px; height: 20px; color: var(--txca-accent); }
.txca-stepper { display: flex; align-items: center; gap: 8px; }
.txca-stepper output { min-width: 46px; text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; font-size: 14px; }
.txca-stepper .txca-icon-btn { background: var(--txca-surface); border: 1px solid var(--txca-line); width: 36px; height: 36px; }
.txca-a11y__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.txca-tile { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-height: 76px; padding: 12px; border: 1.5px solid var(--txca-line); border-radius: 14px; background: var(--txca-surface); color: var(--txca-ink); font: inherit; font-size: 13.5px; font-weight: 600; line-height: 1.25; text-align: left; cursor: pointer; transition: border-color .15s, background-color .15s; }
.txca-tile:hover { border-color: color-mix(in srgb, var(--txca-accent) 50%, var(--txca-line)); }
.txca-tile svg { width: 22px; height: 22px; color: var(--txca-accent); }
.txca-tile[aria-pressed="true"] { border-color: var(--txca-accent); background: color-mix(in srgb, var(--txca-accent) 9%, var(--txca-surface)); }
.txca-tile[aria-pressed="true"]::after { content: ""; position: absolute; top: 10px; right: 10px; width: 18px; height: 18px; border-radius: 50%; background: var(--txca-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 12px no-repeat; }
.txca-a11y__reset { width: 100%; margin-top: 12px; }
.txca-a11y__foot { margin-top: 12px !important; font-size: 13px; color: var(--txca-muted); text-align: center; }

.txca-guide { display: none; }

/* Phones: the panel opens as a sheet above the button. */
@media (max-width: 640px) {
	:root { --txca-gap: 12px; }
	.txca-a11y__btn { width: 46px; height: 46px; }
	.txca-a11y__btn svg { width: 24px; height: 24px; }
	.txca-a11y--no-mobile { display: none; }
	.txca-a11y__panel { position: fixed; left: 12px; right: 12px; bottom: 70px; width: auto; max-height: calc(100vh - 100px); }
}

@media (prefers-reduced-motion: reduce) {
	.txca-a11y, .txca-a11y__btn { transition: none; }
}

@media print {
	.txca-ui, .txca-guide, .txca-skip { display: none !important; }
}

/* ===== Effects on the page (never on the widgets) ===== */
html.txca-fs-1 { font-size: 112% !important; }
html.txca-fs-2 { font-size: 125% !important; }
html.txca-fs-3 { font-size: 140% !important; }
html.txca-fs-4 { font-size: 160% !important; }

/* WCAG 1.4.12 text spacing values. */
html.txca-lh body :where(p, li, dd, dt, td, th, blockquote, figcaption, label, h1, h2, h3, h4, h5, h6, summary):not(.txca-ui *) { line-height: 1.9 !important; }
html.txca-lh body :where(p):not(.txca-ui *) { margin-bottom: 2em !important; }
html.txca-ls body :not(.txca-ui, .txca-ui *, svg, svg *) { letter-spacing: .12em !important; word-spacing: .16em !important; }

html.txca-font body :not(.txca-ui, .txca-ui *, svg, svg *, code, pre, kbd) { font-family: Verdana, Tahoma, "Segoe UI", Arial, sans-serif !important; }

html.txca-links body a:not(.txca-ui a) { text-decoration: underline !important; text-decoration-thickness: 2px !important; text-underline-offset: 3px !important; outline: 2px solid #FFB800 !important; outline-offset: 2px; border-radius: 2px; }

html.txca-contrast { --txca-c: contrast(1.45) saturate(1.15); --txc-muted: #1F2633; --txc-border: #6B7486; }
html.txca-gray { --txca-g: grayscale(1); }
html.txca-contrast body > :not(.txca-ui, script, style, .txca-guide),
html.txca-gray body > :not(.txca-ui, script, style, .txca-guide) { filter: var(--txca-c, ) var(--txca-g, ); }

html.txca-still *, html.txca-still *::before, html.txca-still *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }

html.txca-cursor, html.txca-cursor * { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 24 24'%3E%3Cpath d='M4 2.5l15 7.6-6.6 2-2.1 6.6Z' fill='%230A0F1C' stroke='white' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E") 6 4, auto !important; }
html.txca-cursor a, html.txca-cursor a *, html.txca-cursor button, html.txca-cursor button *, html.txca-cursor summary, html.txca-cursor label { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 24 24'%3E%3Cpath d='M4 2.5l15 7.6-6.6 2-2.1 6.6Z' fill='%233355FF' stroke='white' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E") 6 4, pointer !important; }

html.txca-guide .txca-guide { display: block; position: fixed; inset: 0; z-index: calc(var(--txca-z) - 2); pointer-events: none; background: linear-gradient(to bottom, rgba(7, 11, 22, .55) calc(var(--y, 50vh) - 44px), transparent calc(var(--y, 50vh) - 44px), transparent calc(var(--y, 50vh) + 44px), rgba(7, 11, 22, .55) calc(var(--y, 50vh) + 44px)); }

html.txca-focus :focus-visible:not(.txca-ui *) { outline: 3px solid #FFB800 !important; outline-offset: 3px !important; box-shadow: 0 0 0 7px #0A0F1C !important; }


/* Skip link (only when the theme has none). */
.txca-skip { position: fixed; z-index: calc(var(--txca-z) + 1); top: 12px; left: 12px; padding: 12px 18px; border-radius: 999px; background: var(--txca-ink); color: #fff; font: 600 15px/1.2 system-ui, sans-serif; text-decoration: none; transform: translateY(-200%); transition: transform .15s; }
.txca-skip:focus { transform: none; outline: 3px solid var(--txca-accent); outline-offset: 2px; }

/* Accessibility statement (shortcode) */
.txca-statement h2 { margin-top: 2em; }
.txca-statement ul { padding-left: 1.25em; }

/* Works alongside a cookie banner from The X Concept Privacy & Accessibility: move up while it shows. */
html.txcc-has-banner:has(.txcc-banner--bar, .txcc-banner--center) .txca-a11y,
html.txcc-has-banner:has(.txcc-banner--left) .txca-a11y--left,
html.txcc-has-banner:has(.txcc-banner--right) .txca-a11y--right { bottom: calc(var(--txcc-banner-h, 0px) + var(--txca-gap) + 12px); }
@media (max-width: 640px) {
	html.txcc-has-banner .txca-a11y { bottom: max(var(--txca-bottom, var(--txca-gap)), calc(var(--txcc-banner-h, 0px) + 12px)); }
}
