/* Flashcards LMS — interfață */

/* Variabilele stau pe :root pentru că modalele și notificările se atașează pe <body>,
   în afara containerului .fclms-app. */
:root {
	--fc-ink: #1E2A38;
	--fc-muted: #6B7A8C;
	--fc-line: #DDE4EC;
	--fc-paper: #F4F6F8;
	--fc-surface: #FFFFFF;
	--fc-primary: #1F5E7A;
	/* Aceleași culori, scrise ca triplete, ca tentele să se poată calcula din ele. */
	--fc-primary-rgb: 31, 94, 122;
	--fc-primary-dark: #164760;
	--fc-primary-soft: #2E7D8F;
	--fc-accent-rgb: 224, 161, 0;
	--fc-accent: #E0A100;
	--fc-success: #2E7D32;
	--fc-success-soft: #E7F3E8;
	--fc-danger: #C0392B;
	--fc-danger-soft: #FBEAE8;
	--fc-radius: 14px;
	--fc-font: Merriweather, Georgia, "Times New Roman", serif;
	--fc-content-max: 1200px;
	--fc-shadow: 0 1px 2px rgba(30,42,56,.06), 0 6px 20px rgba(30,42,56,.06);
}

/* =====================================================================
 * IZOLAREA DE TEMA WORDPRESS
 * =====================================================================
 *
 * Aplicația stă într-o pagină a temei, deci moștenește de la ea tot ce n-a
 * cerut anume: fontul, mărimea literei, culoarea legăturilor, marginile
 * paragrafelor, conturul albastru de la clic, chiar și litere îngroșate sau
 * scrise cu majuscule prin cine știe ce regulă a temei. De aceea aceeași
 * instalare arăta altfel de la un site la altul, iar ce se alegea din
 * Aspect era câteodată înlăturat de o regulă pe care n-o vedea nimeni.
 *
 * Blocul acesta taie moștenirea. Ce urmează după el — întreaga foaie — e a
 * noastră și stă pe variabilele din Aspect.
 *
 * ---------------------------------------------------------------------
 * DE CE E SCRIS CU `:where()` ȘI DE CE STĂ SUS
 *
 * Două primejdii se bat cap în cap. Scris slab, blocul pierde în fața temei
 * și nu face nimic. Scris tare, câștigă și în fața propriilor noastre reguli,
 * și atunci strică tot ce urmează.
 *
 * `:where()` are greutate zero, deci blocul cântărește exact cât clasa
 * `.fclms-app` din fața lui — nici mai mult, nici mai puțin. Iar fiindcă stă
 * primul în foaie, orice regulă de mai jos de aceeași greutate îl întrece
 * prin simpla ei așezare. Așa, componentele noastre nu au de suferit, iar
 * tema, care se încarcă înaintea acestei foi, pierde.
 *
 * Ce rămâne în afară: o temă care scrie reguli mai grele decât o clasă —
 * `#content .entry p`, de pildă — poate încă străbate. Sunt rare, dar există;
 * o izolare desăvârșită ar cere un cadru `iframe`, iar acela ar rupe alte
 * lucruri, de la ferestrele plutitoare la lățimea pe telefon.
 */

/* 1. Litera: numai a noastră, oriunde înăuntru. */
.fclms-app.fclms-app *,
.fclms-modal.fclms-modal *,
.fclms-toast.fclms-toast * { font-family: inherit; }

/* 2. Celelalte însușiri care se moștenesc pe nevăzute. */
.fclms-app :where(*),
.fclms-modal :where(*),
.fclms-toast :where(*) {
	font-style: inherit;
	font-variant: normal;
	letter-spacing: inherit;
	word-spacing: normal;
	text-transform: none;
	text-indent: 0;
	text-shadow: none;
	-webkit-font-smoothing: inherit;
}

/* 3. Elementele pe care temele le împodobesc cel mai des. */
.fclms-app :where(p, h1, h2, h3, h4, h5, h6, figure, blockquote, dl, dd, fieldset, legend, pre),
.fclms-modal :where(p, h1, h2, h3, h4, h5, h6, figure, blockquote, dl, dd, fieldset, legend, pre) {
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
}

/*
 * Listele își pierd bulinele și marginea: aproape toate listele aplicației
 * sunt de fapt șiruri de rânduri, nu enumerări. Cele care chiar sunt —
 * textul unui cartonaș și editorul — și le primesc înapoi mai jos.
 */
.fclms-app :where(ul, ol),
.fclms-modal :where(ul, ol) { margin: 0; padding: 0; list-style: none; }
.fclms-app :where(li),
.fclms-modal :where(li) { margin: 0; padding: 0; }

.fclms-rte__area :where(ul),
.fclms-flashcard__content :where(ul) { list-style: disc; padding-left: 22px; }
.fclms-rte__area :where(ol),
.fclms-flashcard__content :where(ol) { list-style: decimal; padding-left: 22px; }

/*
 * Legăturile: fără albastrul și sublinierea browserului, fără culoarea
 * temei. Cele care poartă o clasă de-a noastră — butoane, pastile, file —
 * își iau culoarea din ea, mai jos.
 */
.fclms-app :where(a),
.fclms-modal :where(a) {
	color: var(--fc-primary);
	text-decoration: none;
	background: none;
	box-shadow: none;
}
.fclms-app :where(a:hover),
.fclms-modal :where(a:hover) { text-decoration: underline; }

/*
 * Butoanele și câmpurile: dezbrăcate până la piele. Tema le dă de obicei
 * fundal, ramă, colțuri și litere proprii — toate străine de aplicație, care
 * și le pune singură pe ale ei.
 */
.fclms-app :where(button),
.fclms-modal :where(button) {
	appearance: none;
	-webkit-appearance: none;
	background: none;
	border: 0;
	border-radius: 0;
	margin: 0;
	padding: 0;
	color: inherit;
	font: inherit;
	line-height: inherit;
	text-align: inherit;
	text-transform: none;
	letter-spacing: inherit;
	box-shadow: none;
	cursor: pointer;
	min-height: 0;
	width: auto;
}

.fclms-app :where(input, select, textarea),
.fclms-modal :where(input, select, textarea) {
	font: inherit;
	line-height: normal;
	color: var(--fc-ink);
	background: var(--fc-surface);
	margin: 0;
	box-shadow: none;
	text-transform: none;
	letter-spacing: inherit;
	max-width: none;
	min-height: 0;
}

/* Tabelele: temele le dau dungi, rame și chenare pe care nu le-am cerut. */
.fclms-app :where(table),
.fclms-modal :where(table) {
	border-collapse: collapse;
	border-spacing: 0;
	width: auto;
	margin: 0;
	background: none;
	font-size: inherit;
}
.fclms-app :where(th, td),
.fclms-modal :where(th, td) {
	border: 0;
	padding: 0;
	background: none;
	text-align: inherit;
	font-weight: inherit;
	color: inherit;
}

/* Imaginile: fără rame, umbre și colțuri puse de temă. */
.fclms-app :where(img, svg, video, iframe),
.fclms-modal :where(img, svg, video, iframe) {
	max-width: 100%;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	background: none;
	vertical-align: middle;
}

.fclms-app :where(hr) { border: 0; height: 1px; background: var(--fc-line); margin: 0; }
.fclms-app :where(code, pre, kbd, samp) { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; background: none; padding: 0; border: 0; }

/* =====================================================================
 * De aici încolo, tot ce urmează e al aplicației.
 * ===================================================================== */

.fclms-app {
	font-family: var(--fc-font);
	font-size: 16px;
	line-height: 1.65;
	color: var(--fc-ink);
	background: var(--fc-paper);
	padding: 24px;
	border-radius: var(--fc-radius);
	box-sizing: border-box;
}
.fclms-app *, .fclms-app *::before, .fclms-app *::after { box-sizing: border-box; }
.fclms-app p { margin: 0 0 12px; }
.fclms-muted { color: var(--fc-muted); }
.fclms-link { color: var(--fc-primary); }

/* Toate secțiunile aplicației folosesc aceeași lățime și aceleași margini,
   ca trecerea de la o filă la alta să nu deplaseze conținutul. */
.fclms-app--student > .fclms-topbar,
.fclms-app--student > .fclms-student,
.fclms-app--student > .fclms-view,
.fclms-app--student > .fclms-vip-banner,
.fclms-app--student > .fclms-sanction,
.fclms-app--admin > .fclms-topbar,
.fclms-app--admin > .fclms-tabs,
.fclms-app--admin > .fclms-subtabs,
.fclms-app--admin > .fclms-manager {
	width: 100%;
	max-width: var(--fc-content-max);
	margin-left: auto;
	margin-right: auto;
}

/* ------------------------------------------------------------- topbar */
.fclms-topbar {
	display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
	margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--fc-line);
}
.fclms-logo { font-weight: 900; font-size: 19px; letter-spacing: -.015em; }
.fclms-user { margin-left: auto; color: var(--fc-muted); font-size: 14px; }
.fclms-tabs { display: flex; flex-wrap: wrap; gap: 4px; }
button.fclms-tab { font-family: inherit; border: none; cursor: pointer; }
.fclms-tab {
	display: inline-block; padding: 8px 14px; border-radius: 999px; font-size: 14px;
	text-decoration: none; color: var(--fc-muted); transition: background .15s, color .15s;
}
.fclms-tab:hover { background: #E9EEF3; color: var(--fc-ink); }
.fclms-tab.is-active { background: var(--fc-primary); color: #fff; }

/* ------------------------------------------------------------ carduri */
.fclms-card {
	background: var(--fc-surface); border: 1px solid var(--fc-line);
	border-radius: var(--fc-radius); padding: 24px; margin-bottom: 20px; box-shadow: var(--fc-shadow);
}
.fclms-card--center { text-align: center; }
.fclms-h2 { font-size: 18px; font-weight: 700; margin: 0 0 16px; letter-spacing: -.01em; }
.fclms-h2:not(:first-child) { margin-top: 32px; }

/* ------------------------------------------------------------ butoane */
.fclms-btn,
.fclms-app .fclms-btn {
	font-family: inherit; font-size: 14px; font-weight: 700; line-height: 1.2;
	padding: 11px 18px; border-radius: 10px; border: 1px solid transparent;
	cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
	transition: background .15s, border-color .15s, transform .05s;
}
.fclms-btn:active { transform: translateY(1px); }
.fclms-btn:focus-visible { outline: 3px solid var(--fc-accent); outline-offset: 2px; }
.fclms-btn--primary { background: var(--fc-primary); color: #fff; }
.fclms-btn--primary:hover { background: var(--fc-hover, var(--fc-primary-dark)); color: var(--fc-hover-ink, #fff); }
.fclms-btn--ghost { background: transparent; border-color: var(--fc-line); color: var(--fc-ink); }
.fclms-btn--ghost:hover { background: var(--fc-hover-soft, #EDF1F5); border-color: var(--fc-hover, var(--fc-line)); color: var(--fc-ink); }
.fclms-btn--danger { background: var(--fc-danger-soft); color: var(--fc-danger); }
.fclms-btn--danger:hover { background: #F6D9D5; }
.fclms-btn--success { background: var(--fc-success); color: #fff; }
.fclms-btn--success:hover { background: #256B29; color: #fff; }
.fclms-btn--big,
.fclms-app .fclms-btn--big { font-size: 16px; padding: 14px 26px; }
.fclms-btn--icon,
.fclms-app .fclms-btn--icon { padding: 8px 10px; font-size: 13px; }

/* ------------------------------------------------------- formulare */
.fclms-field { display: block; margin-bottom: 16px; }
.fclms-field > span { display: block; font-size: 13px; font-weight: 700; color: var(--fc-muted); margin-bottom: 6px; }
.fclms-field input[type=text], .fclms-field input[type=email], .fclms-field input[type=password],
.fclms-field input[type=number], .fclms-field input[type=date], .fclms-field input[type=url],
.fclms-field select, .fclms-field textarea {
	width: 100%; font-family: inherit; font-size: 15px; color: var(--fc-ink);
	padding: 10px 12px; border: 1px solid var(--fc-line); border-radius: 10px; background: #fff;
}
.fclms-field input:focus, .fclms-field select:focus, .fclms-field textarea:focus {
	outline: none; border-color: var(--fc-primary); box-shadow: 0 0 0 3px rgba(var(--fc-primary-rgb), .14);
}
.fclms-field--small { max-width: 160px; }
/* Lămurirea de sub un câmp: mai mică decât răspunsul, mai stinsă decât eticheta. */
.fclms-field > small { display: block; margin-top: 6px; font-size: 12px; color: var(--fc-muted); }
.fclms-field--color input { width: 56px; height: 42px; padding: 2px; border: 1px solid var(--fc-line); border-radius: 10px; background: #fff; }
.fclms-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.fclms-check { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; }

/*
 * Numărul scris mare, în fereastra de golire a unui set.
 *
 * „1.248" citit ca cifră între alte cuvinte nu oprește pe nimeni; același
 * număr scris cât un titlu oprește mâna care ștergea repede un set de probă.
 * E singurul lucru din fereastră care trebuie citit neapărat.
 */
.fclms-bigcount { margin: 10px 0; font-size: 15px; }
.fclms-bigcount b { font-size: 30px; line-height: 1.1; color: var(--fc-danger); display: block; }

/* Butonul stins se vede stins, nu doar refuză apăsarea. */
.fclms-modal__foot .fclms-btn[disabled] { opacity: .5; cursor: not-allowed; }

/* Bifele de rol stau una sub alta: se citesc ca o listă, nu ca un rând. */
.fclms-rolebox { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.fclms-rolebox .fclms-check { cursor: pointer; }

.fclms-notice { padding: 12px 16px; border-radius: 10px; margin-bottom: 16px; font-size: 14px; }
.fclms-notice--success { background: var(--fc-success-soft); color: var(--fc-success); }
.fclms-notice--error { background: var(--fc-danger-soft); color: var(--fc-danger); }

/* --------------------------------------------------------- tabele */
.fclms-table { width: 100%; border-collapse: collapse; font-size: 14px; }

/* --------------------------------------------- tabloul de drepturi media
 *
 * Se citește pe rânduri — „ce poate cursantul?” — fiindcă asta e întrebarea
 * care se pune de fapt. Numele rolului rămâne lipit în stânga la derulare
 * orizontală: fără el, o bifă din mijlocul tabelului nu spune al cui e.
 */
.fclms-mediagrid-wrap { overflow-x: auto; margin: 0 0 6px; }
.fclms-mediagrid { min-width: 460px; }
.fclms-mediagrid th, .fclms-mediagrid td { padding: 8px 10px; border-bottom: 1px solid var(--fc-line); }
.fclms-mediagrid thead th { text-align: center; font-size: 12px; font-weight: 700; white-space: nowrap; }
.fclms-mediagrid thead th:first-child { text-align: left; }
.fclms-mediagrid tbody th { text-align: left; font-weight: 600; white-space: nowrap; position: sticky; left: 0; background: var(--fc-surface); }
.fclms-mediagrid td { text-align: center; }
.fclms-mediagrid input[type=checkbox] { width: 17px; height: 17px; cursor: pointer; accent-color: var(--fc-primary); }
.fclms-mediagrid__cost { font-size: 11px; opacity: .7; cursor: help; }

/* --------------------------------------------- alegerea felului de meci
 *
 * Două cărți mari, fiecare cu culoarea ei. Nu două pastile: pastila e
 * potrivită când numele spune tot, iar aici tocmai numele nu poate spune tot
 * — de aceea are nevoie de rândul de sub el, iar rândul acela are nevoie de loc.
 *
 * DE CE DOUĂ CULORI, ȘI DE CE ACESTEA
 *
 * Amândouă cărțile arătau la fel și se deosebeau numai prin cuvinte. Cine
 * citește repede — adică toată lumea — alegea la nimereală, apoi se mira de
 * ce meciul se poartă altfel decât se aștepta.
 *
 * Culorile nu sunt puse după gust: ele spun ce se întâmplă. Portocaliul cald
 * al meciului împreună e culoarea grăbitului — acum, toți, deodată. Verdele
 * albastrui al celuilalt e culoarea răbdării — când poți, în ritmul tău.
 * Sunt scrise aici, nu luate din temă și nici din culorile din Aspect: ele
 * poartă un înțeles, iar un înțeles care se schimbă odată cu tema casei nu
 * mai e un înțeles.
 */
.fclms-modepick { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 8px 0 14px; }

.fclms-modepick__one {
	--pick: #6B7A8C;
	--pick-soft: rgba(107, 122, 140, .08);
	--pick-line: rgba(107, 122, 140, .35);

	position: relative;
	display: grid; gap: 5px; align-content: start;
	padding: 16px 46px 16px 16px;
	text-align: left; cursor: pointer;
	background: var(--fc-surface); color: var(--fc-ink);
	border: 2px solid var(--fc-line);
	border-radius: var(--fc-radius);
	font: inherit;
	transition: border-color .16s ease, background-color .16s ease, transform .16s ease;
}

/* Banda de sus: culoarea se vede și când cartea nu e aleasă. */
.fclms-modepick__one::before {
	content: ""; position: absolute; inset: -2px -2px auto -2px; height: 4px;
	background: var(--pick);
	border-radius: var(--fc-radius) var(--fc-radius) 0 0;
	opacity: .5; transition: opacity .16s ease;
}

.fclms-modepick__one--live {
	--pick: #E8590C;
	--pick-soft: rgba(232, 89, 12, .09);
	--pick-line: rgba(232, 89, 12, .45);
}
.fclms-modepick__one--own {
	--pick: #0E8F82;
	--pick-soft: rgba(14, 143, 130, .09);
	--pick-line: rgba(14, 143, 130, .45);
}

.fclms-modepick__one:hover { border-color: var(--pick-line); transform: translateY(-1px); }
.fclms-modepick__one:hover::before { opacity: .8; }

.fclms-modepick__one.is-active {
	border-color: var(--pick);
	background: var(--pick-soft);
}
.fclms-modepick__one.is-active::before { opacity: 1; }

/* Semnul din colț: rotund, plin cu culoarea cărții. Bifa singură, fără
   cerc, s-ar fi pierdut pe fundalul deschis al cărții alese. */
.fclms-modepick__tick {
	position: absolute; top: 14px; right: 14px;
	width: 22px; height: 22px; border-radius: 50%;
	display: grid; place-items: center;
	background: var(--pick); color: #fff;
	font-size: 13px; font-weight: 800; line-height: 1;
	opacity: 0; transform: scale(.6);
	transition: opacity .16s ease, transform .16s ease;
}
.fclms-modepick__one.is-active .fclms-modepick__tick { opacity: 1; transform: scale(1); }

.fclms-modepick__mark {
	width: 34px; height: 34px; border-radius: 10px;
	display: grid; place-items: center;
	background: var(--pick-soft); color: var(--pick);
	font-size: 18px; line-height: 1;
	margin-bottom: 2px;
}
.fclms-modepick__one.is-active .fclms-modepick__mark { background: var(--pick); color: #fff; }

.fclms-modepick__one b { font-size: 16px; font-weight: 800; letter-spacing: -.01em; }
.fclms-modepick__one small { font-size: 12.5px; color: var(--fc-muted); line-height: 1.45; }
.fclms-modepick__one.is-active b { color: var(--pick); }

.fclms-modepick__warn { font-size: 12px; margin: 0 0 14px; }

@media (max-width: 520px) {
	.fclms-modepick { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-modepick__one, .fclms-modepick__tick { transition: none; }
	.fclms-modepick__one:hover { transform: none; }
}

/* Cât a parcurs fiecare, la meciul în ritmul lui. */
.fclms-arena__pace { display: block; font-size: 11px; opacity: .8; }
.fclms-table th {
	text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .08em;
	color: var(--fc-muted); border-bottom: 2px solid var(--fc-line); padding: 10px 8px;
}
.fclms-table td { padding: 12px 8px; border-bottom: 1px solid var(--fc-line); vertical-align: middle; }
.fclms-table form { display: inline; }

/* ------------------------------------------------ liste seturi/pachete */
.fclms-list { display: grid; gap: 12px; }
.fclms-row {
	display: flex; align-items: center; gap: 16px; background: var(--fc-surface);
	border: 1px solid var(--fc-line); border-radius: var(--fc-radius); padding: 16px 20px;
}
/*
 * Rândul de listă: chip la stânga, text la mijloc, butoane la dreapta.
 *
 * Textul avea `flex: 1`, adică lățime de pornire zero. Pe telefon, unde rândul
 * are voie să se rupă pe mai multe linii, chipul și butoanele luau toată
 * lățimea, iar textul se strângea la nimic în loc să treacă pe rândul lui —
 * ieșea o coloană de câte o literă. Cu o lățime de pornire adevărată, când nu
 * mai încape, butoanele coboară sub text, cum trebuia de la început.
 */
.fclms-row__main { flex: 1 1 200px; min-width: 0; overflow-wrap: anywhere; }
.fclms-row__title { font-weight: 700; font-size: 16px; margin: 0; }
.fclms-row__meta { font-size: 13px; color: var(--fc-muted); }
.fclms-row__actions { display: flex; gap: 6px; flex-wrap: wrap; }

.fclms-breadcrumb { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--fc-muted); margin-bottom: 16px; }
.fclms-breadcrumb button {
	background: none; border: none; font: inherit; color: var(--fc-primary); cursor: pointer; padding: 0; text-decoration: underline;
}
.fclms-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.fclms-toolbar h1 { font-size: 22px; margin: 0; font-weight: 900; letter-spacing: -.02em; }
.fclms-toolbar .fclms-spacer { flex: 1; }

.fclms-empty { text-align: center; padding: 48px 20px; color: var(--fc-muted); background: var(--fc-surface); border: 1px dashed var(--fc-line); border-radius: var(--fc-radius); }

/* ------------------------------------- semnătura vizuală: banda cutiilor */
.fclms-spine { display: flex; gap: 3px; height: 10px; border-radius: 999px; overflow: hidden; background: #E9EEF3; }
.fclms-spine span { display: block; transition: flex-grow .3s ease; }
.fclms-spine--legend { height: auto; background: none; gap: 8px; flex-wrap: wrap; }
.fclms-boxlegend { display: flex; gap: 10px; flex-wrap: wrap; font-size: 12px; color: var(--fc-muted); margin-top: 8px; }
.fclms-boxlegend b { display: inline-flex; align-items: center; gap: 5px; font-weight: 400; }
.fclms-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }

/* progres detaliat pe cutii */
.fclms-progress { display: grid; gap: 12px; }
.fclms-progress__top { display: flex; align-items: center; gap: 14px; }
.fclms-progress__ring { flex: none; width: 62px; height: 62px; border-radius: 50%; display: grid; place-items: center; }
.fclms-progress__ring span { width: 46px; height: 46px; border-radius: 50%; background: var(--fc-surface); display: grid; place-items: center; font-weight: 900; font-size: 14px; color: var(--fc-ink); }
.fclms-progress__meta { font-size: 13px; color: var(--fc-muted); }
.fclms-progress__meta strong { display: block; font-size: 15px; color: var(--fc-ink); font-weight: 700; }
.fclms-bars { display: grid; gap: 7px; }
.fclms-bar { display: grid; grid-template-columns: 120px 1fr 84px; align-items: center; gap: 10px; font-size: 13px; }
.fclms-bar__name { display: flex; align-items: center; gap: 7px; color: var(--fc-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fclms-bar__track { display: block; width: 100%; height: 14px; border-radius: 999px; background: #E9EEF3; overflow: hidden; }
.fclms-bar__fill { display: block; height: 100%; min-width: 2px; border-radius: 999px; transition: width .35s ease; }
.fclms-bar__val { text-align: right; color: var(--fc-ink); font-variant-numeric: tabular-nums; }
.fclms-bar__val b { font-weight: 700; }
@media (prefers-reduced-motion: reduce) { .fclms-bar__fill { transition: none; } }
@media (max-width: 600px) { .fclms-bar { grid-template-columns: 92px 1fr 66px; font-size: 12px; } }

.fclms-chip,
.fclms-app .fclms-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 11px; border-radius: 999px; font-size: 12px; font-weight: 700; }
/*
 * Culorile de temei, ținute deoparte de așezare — din același motiv ca la
 * insignele de stare. Scrise la un loc, ele băteau `--ok`, `--danger`, `--due`
 * și `--warn` oriunde înăuntrul aplicației, iar insignele colorate ieșeau toate
 * cenușii. Se vedea mai ales la abonamente, unde verdele chiar spune ceva.
 */
.fclms-chip { background: #EDF1F5; color: var(--fc-muted); }
.fclms-chip--danger { background: var(--fc-danger-soft); color: var(--fc-danger); }

/*
 * INSIGNA DE STARE
 *
 * Trei culori, citite dintr-o privire: verde prezent, portocaliu plecat, roșu
 * delogat. Fiecare își poartă culorile în trei variabile locale — buline,
 * cerneală și fundal — iar restul regulilor sunt scrise o singură dată, peste
 * toate. Adăugarea unei stări noi înseamnă atunci trei rânduri, nu un bloc.
 *
 * Bulina verde respiră încet, ca să se vadă că starea e vie, nu o poză veche.
 *
 * Culorile stau singure, într-o regulă cu o singură clasă, despărțite de
 * așezare. Aceea are nevoie de `.fclms-app .fclms-presence` ca să răzbată în
 * panou, iar un selector cu două clase bate unul cu o singură clasă: scrise la
 * un loc, culorile de temei ștergeau îndată ce apuca să scrie starea, și toate
 * insignele ieșeau cenușii. Despărțite, starea și temeiul cântăresc la fel,
 * iar dintre două deopotrivă de grele câștigă cea scrisă mai jos — starea,
 * care vine după.
 */
.fclms-presence {
	--p-ink: var(--fc-muted);
	--p-dot: var(--fc-muted);
	--p-bg: #EDF1F5;
	/* Inelul din jurul bulinei, scris de-a gata: `color-mix` e prea nou
	   pentru browserele mai vechi și ar lăsa bulina fără halou. */
	--p-ring: rgba(107, 122, 140, .22);
	--p-ring-off: rgba(107, 122, 140, 0);
}

.fclms-presence,
.fclms-app .fclms-presence {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 8px 16px 8px 13px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: .2px;
	color: var(--p-ink);
	background: var(--p-bg);
	border: 1px solid rgba(30, 42, 56, .07);
	box-shadow: 0 1px 2px rgba(30, 42, 56, .05);
}
.fclms-presence__dot {
	width: 10px;
	height: 10px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--p-dot);
	box-shadow: 0 0 0 3px var(--p-ring);
}
/* Durata stă lipită de etichetă, dar mai stinsă: e amănuntul, nu vestea. */
.fclms-presence__since {
	padding-left: 9px;
	margin-left: 1px;
	border-left: 1px solid currentColor;
	font-weight: 600;
	font-size: 13px;
	border-left-color: rgba(30, 42, 56, .18);
	opacity: .85;
}

.fclms-presence--online { --p-ink: #1B7F45; --p-dot: #21A557; --p-bg: #E6F7EC; --p-ring: rgba(33, 165, 87, .24); --p-ring-off: rgba(33, 165, 87, 0); }
.fclms-presence--online .fclms-presence__dot { animation: fclms-breathe 2.4s ease-in-out infinite; }

.fclms-presence--away { --p-ink: #9A5B04; --p-dot: #ED8A0A; --p-bg: #FDF1DE; --p-ring: rgba(237, 138, 10, .24); --p-ring-off: rgba(237, 138, 10, 0); }

.fclms-presence--out,
.fclms-presence--expired { --p-ink: var(--fc-danger); --p-dot: var(--fc-danger); --p-bg: var(--fc-danger-soft); --p-ring: rgba(192, 57, 43, .22); --p-ring-off: rgba(192, 57, 43, 0); }

@keyframes fclms-breathe {
	0%, 100% { box-shadow: 0 0 0 3px var(--p-ring); }
	50% { box-shadow: 0 0 0 8px var(--p-ring-off); }
}

/*
 * Însemnarea din cardul abonamentului: cât s-a primit înapoi pentru mentenanță.
 * Stă lipită de marginea de jos a cardului, despărțită printr-o linie subțire,
 * ca să se citească drept adaos, nu drept altă veste.
 */
.fclms-maint-note,
.fclms-app .fclms-maint-note {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin: 12px 0 0;
	padding-top: 10px;
	border-top: 1px dashed var(--fc-line);
	font-size: 13px;
	color: #854F0B;
}
.fclms-maint-note__mark { font-size: 15px; }
.fclms-maint-note b { color: #854F0B; }

/* Cardul de mentenanță, cât timp e pornită: se vede din capul paginii. */
.fclms-card--warn { border-left: 4px solid #ED8A0A; border-radius: 0; }

/* Pagina de așteptare: nimic altceva pe ecran, ca să nu pară aplicația stricată. */
.fclms-app--closed { display: flex; align-items: center; justify-content: center; min-height: 50vh; }
.fclms-closed { max-width: 520px; }
.fclms-closed__mark { font-size: 44px; line-height: 1; margin-bottom: 12px; }

/* Cine a cerut mai puțină mișcare o primește: culoarea singură spune destul. */
@media (prefers-reduced-motion: reduce) {
	.fclms-presence--online .fclms-presence__dot { animation: none; }
}
.fclms-chip--ok { background: var(--fc-success-soft); color: var(--fc-success); }
.fclms-alert { padding: 12px 16px; border-radius: 10px; background: var(--fc-danger-soft); color: var(--fc-danger); font-size: 14px; margin-bottom: 10px; }

.fclms-box-row { display: flex; align-items: flex-end; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--fc-line); }
.fclms-box-row .fclms-field { flex: 1; margin-bottom: 0; }
.fclms-box-num { width: 34px; height: 34px; border-radius: 50%; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; flex: none; margin-bottom: 4px; }

/* ------------------------------------------------------ editor cartonaș */
/*
 * CELE DOUĂ FEȚE RĂMÂN EGALE
 *
 * `1fr` înseamnă `minmax(auto, 1fr)`: coloana crește oricât, dar nu coboară
 * sub lățimea a ceea ce ține în ea. Un link media se scrie într-un singur
 * șir, fără spații în care să se rupă — așa că fața cu link se lățea, iar
 * versoul rămânea o fâșie. Cu `minmax(0, 1fr)` fiecare față primește exact
 * jumătate, iar ce e prea lat se scurtează înăuntru, cum era gândit.
 *
 * `min-width: 0` pe panou spune același lucru și pentru cutia dinăuntru:
 * fără el, regula de mai sus s-ar opri la marginea panoului.
 */
.fclms-editor-panels { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.fclms-panel { background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: var(--fc-radius); padding: 18px; min-width: 0; }
.fclms-panel__title { font-size: 12px; text-transform: uppercase; letter-spacing: .09em; color: var(--fc-muted); font-weight: 700; margin-bottom: 12px; }

.fclms-rte { border: 1px solid var(--fc-line); border-radius: 10px; overflow: hidden; background: #fff; }
.fclms-rte__bar { display: flex; flex-wrap: wrap; gap: 2px; padding: 6px; background: #F0F3F7; border-bottom: 1px solid var(--fc-line); }
.fclms-rte__btn {
	width: 32px; height: 32px; border: none; background: transparent; border-radius: 7px;
	cursor: pointer; font-family: inherit; font-size: 14px; color: var(--fc-ink);
	display: inline-flex; align-items: center; justify-content: center;
}
.fclms-rte__btn:hover { background: #DFE6ED; }
.fclms-rte__btn svg { width: 16px; height: 16px; fill: currentColor; }
.fclms-rte__sep { width: 1px; background: var(--fc-line); margin: 4px 4px; }
.fclms-rte__area { min-height: 130px; padding: 14px; outline: none; font-size: 15px; overflow-wrap: anywhere; }
.fclms-rte__area:focus { box-shadow: inset 0 0 0 2px rgba(var(--fc-primary-rgb), .16); }
.fclms-rte__area ul, .fclms-rte__area ol { padding-left: 22px; margin: 8px 0; }

.fclms-media { min-width: 0; }
.fclms-media-bar { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0 8px; }
.fclms-media-list { display: grid; gap: 8px; min-width: 0; }
.fclms-media-item { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--fc-line); border-radius: 10px; font-size: 13px; background: #FBFCFD; min-width: 0; }
/*
 * Trei puncte, nu o coloană lățită. Tăierea cerea și `min-width: 0`: un
 * element flex nu se strânge, din capul locului, sub lățimea textului lui,
 * așa că „taie ce nu încape” n-avea de unde ști unde se termină locul.
 */
.fclms-media-item span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fclms-media-item .fclms-btn { flex: 0 0 auto; }
.fclms-media-kind { flex: 0 0 auto; font-size: 11px; text-transform: uppercase; letter-spacing: .07em; font-weight: 700; color: var(--fc-primary); }
.fclms-media-credit { flex: 0 1 auto; font-size: 11px; color: var(--fc-muted); }

/* ------------------------------------------------ selectorul de media
 *
 * Fereastra are pastilele sus și un singur panou dedesubt, ca restul
 * aplicației.
 */
.fclms-pick__body { margin-top: 12px; }
.fclms-pick__pane { display: grid; gap: 10px; }

/* Butonul de ascultat, pe fața cartonașului: e un buton, nu un player. */
.fclms-say { margin: 4px 0; }

.fclms-quiz-option { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.fclms-quiz-option input[type=text] { flex: 1 1 auto; min-width: 0; font-family: inherit; font-size: 14px; padding: 9px 12px; border: 1px solid var(--fc-line); border-radius: 10px; }
.fclms-quiz-option label { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; white-space: nowrap; }

/* ---------------------------------------------------------- studiu */
.fclms-study { max-width: 720px; margin: 0 auto; }
.fclms-study__head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.fclms-study__counter { font-size: 13px; color: var(--fc-muted); margin-left: auto; }
.fclms-badge { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; padding: 5px 12px; border-radius: 999px; color: #fff; }

.fclms-flashcard {
	background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: 18px;
	padding: 36px 32px; min-height: 260px; box-shadow: var(--fc-shadow);
	display: flex; flex-direction: column; justify-content: center;
	animation: fclms-in .25s ease;
}
@keyframes fclms-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .fclms-flashcard { animation: none; } .fclms-spine span { transition: none; } }
.fclms-flashcard__content { font-size: 19px; line-height: 1.6; }
.fclms-flashcard__content img, .fclms-flashcard__media img { max-width: 100%; border-radius: 10px; }
.fclms-flashcard__media { margin-top: 18px; display: grid; gap: 14px; }
.fclms-flashcard__media video, .fclms-flashcard__media iframe { width: 100%; aspect-ratio: 16/9; border: 0; border-radius: 10px; background: #000; }
.fclms-flashcard__media audio { width: 100%; }

.fclms-quiz { margin-top: 22px; }
.fclms-quiz__q { font-weight: 700; margin-bottom: 12px; }
.fclms-quiz__hint { font-size: 13px; color: var(--fc-muted); margin-bottom: 10px; }
.fclms-choice {
	display: flex; align-items: flex-start; gap: 12px; padding: 13px 16px; margin-bottom: 8px;
	border: 1px solid var(--fc-line); border-radius: 12px; cursor: pointer; background: #fff; font-size: 16px;
}
.fclms-choice:hover { border-color: var(--fc-primary); }
.fclms-choice input { margin-top: 4px; width: 18px; height: 18px; accent-color: var(--fc-primary); }
.fclms-choice.is-correct { border-color: var(--fc-success); background: var(--fc-success-soft); }
.fclms-choice.is-wrong { border-color: var(--fc-danger); background: var(--fc-danger-soft); }

.fclms-answer-review { margin-top: 22px; border-top: 1px solid var(--fc-line); padding-top: 18px; }
.fclms-answer-review h4 { font-size: 12px; text-transform: uppercase; letter-spacing: .09em; color: var(--fc-muted); margin: 0 0 8px; }
.fclms-answer-review ul { list-style: none; padding: 0; margin: 0 0 14px; }
.fclms-answer-review li { padding: 8px 12px; border-radius: 9px; margin-bottom: 6px; font-size: 15px; }
.fclms-answer-review li.correct { background: var(--fc-success-soft); color: var(--fc-success); font-weight: 700; }
.fclms-answer-review li.wrong { background: var(--fc-danger-soft); color: var(--fc-danger); text-decoration: line-through; }
.fclms-answer-review li.plain { background: #F0F3F7; }
.fclms-verdict { display: inline-block; padding: 8px 16px; border-radius: 999px; font-weight: 700; font-size: 15px; margin-bottom: 14px; }
.fclms-verdict--ok { background: var(--fc-success-soft); color: var(--fc-success); }
.fclms-verdict--no { background: var(--fc-danger-soft); color: var(--fc-danger); }

.fclms-study__actions { display: flex; gap: 10px; justify-content: center; margin-top: 20px; flex-wrap: wrap; }

.fclms-summary { text-align: center; padding: 40px 24px; }
.fclms-summary__score { font-size: 44px; font-weight: 900; letter-spacing: -.03em; }
.fclms-summary__grid { display: flex; gap: 28px; justify-content: center; margin: 20px 0 26px; }
.fclms-summary__grid div { font-size: 13px; color: var(--fc-muted); }
.fclms-summary__grid strong { display: block; font-size: 26px; color: var(--fc-ink); }

/* -------------------------------------------------------- cursant */
.fclms-cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.fclms-set-card {
	background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: var(--fc-radius);
	overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--fc-shadow);
}
.fclms-set-card__cover { height: 130px; background: linear-gradient(135deg, var(--fc-primary), var(--fc-primary-soft)); background-size: cover; background-position: center; }
.fclms-set-card__body { padding: 18px; flex: 1; display: flex; flex-direction: column; gap: 8px; }
.fclms-set-card__title { font-weight: 700; font-size: 17px; margin: 0; }
.fclms-set-card__foot { padding: 0 18px 18px; }
.fclms-lock { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--fc-accent); }

.fclms-deck-card { background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: var(--fc-radius); padding: 18px 20px; display: grid; gap: 10px; }
.fclms-deck-card__head { display: flex; align-items: baseline; gap: 12px; }
.fclms-deck-card__head h3 { margin: 0; font-size: 17px; }
.fclms-deck-card__due { margin-left: auto; font-size: 13px; color: var(--fc-primary); font-weight: 700; }
.fclms-deck-card__actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* -------------------------------------------------- amestecul de pachete
 *
 * Bifa stă în colțul pachetului, nu într-o fereastră separată de ales
 * pachete: alegi acolo unde te uiți oricum. Pachetul bifat se vede bifat
 * dintr-o privire, printr-o ramă — altfel, la a treia pagină de listă, nu
 * mai știi ce ai ales.
 */
.fclms-deck-card__pick { position: absolute; top: 12px; right: 14px; z-index: 1; cursor: pointer; }
.fclms-deck-card__pick input { width: 18px; height: 18px; cursor: pointer; accent-color: var(--fc-primary); }
.fclms-deck-card.is-picked { border-color: var(--fc-primary); box-shadow: 0 0 0 1px var(--fc-primary) inset; }

/* Capul cardului face loc bifei din colț. Regula stă aici, lângă bifă, nu
   lângă definiția capului: ea ține de bifă, iar dacă bifa dispare într-o zi,
   se șterge tot blocul deodată. */
.fclms-deck-card .fclms-deck-card__head { padding-right: 30px; }

/* Bara plutește sus, deasupra listei: ea e ce faci acum, lista e de unde alegi. */
.fclms-mixbar {
	position: sticky; top: 8px; z-index: 3;
	display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
	margin: 0 0 14px; padding: 10px 14px;
	background: var(--fc-tint); border: 1px solid var(--fc-primary); border-radius: var(--fc-radius);
}
.fclms-mixbar__count { font-weight: 700; color: var(--fc-primary); font-size: 14px; }

/* Textul citit de cititoarele de ecran, nevăzut de restul. */
.fclms-sr {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.fclms-auth { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }

/* ----------------------------------------------------------- modal */
.fclms-modal-back {
	position: fixed; inset: 0; background: rgba(30,42,56,.55); z-index: 100000;
	display: flex; align-items: flex-start; justify-content: center; padding: 40px 16px; overflow: auto;
}
.fclms-modal {
	background: var(--fc-paper); border-radius: 18px; width: 100%; max-width: 860px; padding: 26px;
	font-family: var(--fc-font); color: var(--fc-ink); box-shadow: 0 18px 60px rgba(0,0,0,.3);

	/* Pe ecran scund fereastra se derulează în ea, nu se taie. */
	max-height: 88vh;
	overflow-y: auto;
	overscroll-behavior: contain;
}
.fclms-modal__head { display: flex; align-items: center; margin-bottom: 18px; }
.fclms-modal__head h2 { margin: 0; font-size: 20px; font-weight: 900; letter-spacing: -.02em; }
.fclms-modal__close,
.fclms-app .fclms-modal__close { margin-left: auto; background: none; border: none; font-size: 24px; line-height: 1; cursor: pointer; color: var(--fc-muted); }
.fclms-modal__foot { display: flex; gap: 10px; justify-content: flex-end; margin-top: 20px; }

/* ------------------------------------------ BUTONUL DE AUTENTIFICARE

   Fereastra de autentificare e îngustă: are două câmpuri, iar una lată i-ar
   fi împrăștiat pe toată pagina. Restul ferestrelor rămân cum erau.
*/
.fclms-modal--narrow { max-width: 420px; }

/* Pagina de dedesubt nu se mai derulează cât e fereastra deschisă: altfel
   degetul care mișcă pe telefon duce pagina, nu formularul. */
.fclms-noscroll, .fclms-noscroll body { overflow: hidden; }

.fclms-loginmodal .fclms-field { margin-bottom: 14px; }

/* Butonul de intrare nu se lipește de câmpul parolei. Cele două câmpuri sunt
   despărțite doar cât să se vadă că fac parte din același șir; butonul e
   altceva — capătul drumului — și are nevoie de o pauză înaintea lui, ca
   degetul să nu-l apese din greșeală în locul câmpului de deasupra. */
.fclms-loginmodal .fclms-field + .fclms-btn { margin-top: 14px; }
.fclms-loginmodal__who { margin: 0 0 12px; font-size: 20px; font-weight: 800; color: var(--fc-ink); }
.fclms-loginmodal .fclms-badges { margin-bottom: 20px; }
.fclms-loginmodal__acts { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.fclms-loginmodal__links { display: flex; flex-wrap: wrap; gap: 16px; margin: 16px 0 0; font-size: 14px; }

/* Butonul plutitor stă sus, în colțul opus bulinei de ajutor: două lucruri
   care plutesc peste pagină n-au ce căuta unul peste altul. */
.fclms-loginfloat { position: fixed; top: 18px; right: 18px; z-index: 9998; }

.fclms-loginbtn {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 10px 16px; border: 1px solid var(--fc-line); border-radius: 999px;
	font: inherit; font-size: 15px; font-weight: 700; line-height: 1;
	background: var(--fc-surface); color: var(--fc-ink);
	cursor: pointer;
	transition: transform .15s ease, box-shadow .15s ease;
}
.fclms-loginbtn:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(22, 32, 43, .18); }
.fclms-loginbtn:focus-visible { outline: none; box-shadow: var(--fc-ring); }

.fclms-loginbtn__key { display: block; flex: none; }
.fclms-loginbtn__face { width: 26px; height: 26px; border-radius: 50%; display: block; }

/* Plutitorul e singur pe fundalul paginii, deci are nevoie de umbră ca să se
   desprindă de ea; cel din header stă printre celelalte și nu are. */
.fclms-loginbtn--float { box-shadow: 0 4px 16px rgba(22, 32, 43, .22); }

@media (max-width: 560px) {
	.fclms-loginfloat { top: 12px; right: 12px; }

	/* Pe telefon rămâne doar semnul: numele ar fi acoperit jumătate din bară. */
	.fclms-loginbtn--float { padding: 10px; }
	.fclms-loginbtn--float .fclms-loginbtn__text { display: none; }
}

/* --------------------------------------------------------- responsiv */
@media (max-width: 860px) {
	.fclms-editor-panels, .fclms-grid-2, .fclms-auth { grid-template-columns: 1fr; }
	.fclms-app { padding: 16px; }
	.fclms-box-row { flex-wrap: wrap; }
	.fclms-flashcard { padding: 24px 20px; }
	.fclms-row { flex-wrap: wrap; }
}

/* ajustări în wp-admin */
.fclms-wrap { margin-right: 20px; }
.fclms-wrap .fclms-app { margin-top: 16px; }


/* ------------------------------------------- configurarea sesiunii */
.fclms-setup { display: grid; gap: 18px; }
.fclms-setup__label { display: block; font-size: 13px; font-weight: 700; color: var(--fc-muted); margin-bottom: 8px; }
.fclms-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.fclms-pill {
	font-family: inherit; font-size: 14px; padding: 9px 15px; border-radius: 999px;
	border: 1.5px solid var(--fc-line); background: var(--fc-surface); color: var(--fc-ink);
	cursor: pointer; display: inline-flex; align-items: center; gap: 7px;
}
.fclms-pill:hover { border-color: var(--fc-primary); background: rgba(var(--fc-primary-rgb), .07); color: var(--fc-primary); }
.fclms-pill.is-active { background: var(--fc-primary); border-color: var(--fc-primary); color: #fff; }
.fclms-pill.is-active .fclms-dot { box-shadow: 0 0 0 2px rgba(255,255,255,.6); }

/* --------------------------------------------------- pronunție */
.fclms-speech { margin-top: 20px; text-align: center; }
.fclms-speech__target { font-size: 26px; font-weight: 700; line-height: 1.35; margin: 12px 0 20px; }
.fclms-mic {
	font-family: inherit; font-size: 15px; font-weight: 700; cursor: pointer;
	display: inline-flex; align-items: center; gap: 10px; padding: 14px 26px;
	border-radius: 999px; border: 2px solid var(--fc-primary); background: var(--fc-surface); color: var(--fc-primary);
}
.fclms-mic:hover { background: var(--fc-primary); color: #fff; }
.fclms-mic__icon { font-size: 20px; }
.fclms-mic.is-live { background: var(--fc-danger); border-color: var(--fc-danger); color: #fff; animation: fclms-pulse 1.4s ease-in-out infinite; }
@keyframes fclms-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(192,57,43,.45); } 50% { box-shadow: 0 0 0 12px rgba(192,57,43,0); } }
@media (prefers-reduced-motion: reduce) { .fclms-mic.is-live { animation: none; } }
.fclms-speech__interim { min-height: 24px; color: var(--fc-muted); font-style: italic; margin: 12px 0 4px; }
.fclms-speech__words { font-size: 20px; line-height: 1.9; }
.fclms-speech__heard { font-size: 17px; color: var(--fc-muted); font-style: italic; }
.fclms-word { padding: 2px 7px; border-radius: 7px; }
.fclms-word.is-ok { background: var(--fc-success-soft); color: var(--fc-success); font-weight: 700; }
.fclms-word.is-bad { background: var(--fc-danger-soft); color: var(--fc-danger); text-decoration: underline wavy; }

/* ------------------------------------------------------ categorii */
.fclms-category,
.fclms-app .fclms-category {
	font-family: inherit; text-align: left; cursor: pointer; padding: 0 0 18px;
	background: var(--fc-surface); border: 1.5px solid var(--fc-line); border-radius: var(--fc-radius);
	overflow: hidden; display: grid; gap: 6px; box-shadow: var(--fc-shadow);
}
.fclms-category:hover { transform: translateY(-2px); }
.fclms-category__bar { display: block; height: 8px; }
.fclms-category__title { font-size: 18px; font-weight: 700; padding: 12px 18px 0; }
.fclms-category .fclms-row__meta { padding: 0 18px; }

/* ----------------------------------------------------- statistici */
.fclms-stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin-bottom: 20px; }
.fclms-stat {
	background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: var(--fc-radius);
	padding: 18px; text-align: center; box-shadow: var(--fc-shadow);
}
.fclms-stat strong { display: block; font-size: 30px; font-weight: 900; letter-spacing: -.02em; }
.fclms-stat span { font-size: 13px; color: var(--fc-muted); }
.fclms-stat--accent { border-color: var(--fc-accent); }
.fclms-stat--accent strong { color: var(--fc-accent); }

.fclms-chart { display: flex; align-items: flex-end; gap: 3px; height: 170px; padding-top: 10px; }
.fclms-chart__col { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; height: 100%; gap: 5px; }
.fclms-chart__bar { display: block; width: 100%; max-width: 22px; background: var(--fc-primary); border-radius: 4px 4px 0 0; min-height: 2px; }
.fclms-chart__col:hover .fclms-chart__bar { background: var(--fc-accent); }
.fclms-chart__x { font-size: 9px; color: var(--fc-muted); }

/* ------------------------------------------------ căutare și culori */
.fclms-searchbar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.fclms-searchbar input[type=search] {
	flex: 1; min-width: 220px; font-family: inherit; font-size: 15px;
	padding: 10px 14px; border: 1px solid var(--fc-line); border-radius: 10px;
}
.fclms-swatches { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-end; }

/* ---------------------------------------------------------------------------
   Neutralizarea stilurilor de buton venite din tema site-ului.
   Multe teme colorează orice <button>, ceea ce făcea invizibile filele,
   pastilele și titlurile de categorie. Fixăm explicit fundalul și textul.
   --------------------------------------------------------------------------- */
.fclms-app button,
.fclms-modal button,
.fclms-app input,
.fclms-app select,
.fclms-app textarea {
	font-family: inherit;
	text-transform: none;
	letter-spacing: normal;
	text-shadow: none;
}

.fclms-app .fclms-btn,
.fclms-modal .fclms-btn { box-shadow: none; }

.fclms-app .fclms-btn--primary,
.fclms-modal .fclms-btn--primary {
	background-color: var(--fc-primary) !important;
	border-color: var(--fc-primary) !important;
	color: #fff !important;
}
.fclms-app .fclms-btn--primary:hover,
.fclms-modal .fclms-btn--primary:hover {
	background-color: var(--fc-hover, var(--fc-primary-dark)) !important;
	border-color: var(--fc-hover, var(--fc-primary-dark)) !important;
	color: var(--fc-hover-ink, #fff) !important;
}
.fclms-app .fclms-btn--ghost,
.fclms-modal .fclms-btn--ghost {
	background-color: var(--fc-surface) !important;
	border-color: var(--fc-line) !important;
	color: var(--fc-ink) !important;
}
.fclms-app .fclms-btn--ghost:hover,
.fclms-modal .fclms-btn--ghost:hover { background-color: #EDF1F5 !important; }
.fclms-app .fclms-btn--danger,
.fclms-modal .fclms-btn--danger {
	background-color: var(--fc-danger-soft) !important;
	border-color: transparent !important;
	color: var(--fc-danger) !important;
}
.fclms-app .fclms-btn--success,
.fclms-modal .fclms-btn--success {
	background-color: var(--fc-success) !important;
	border-color: var(--fc-success) !important;
	color: #fff !important;
}

.fclms-app .fclms-tab {
	background-color: transparent !important;
	border: none !important;
	color: var(--fc-muted) !important;
}
.fclms-app .fclms-tab:hover {
	background-color: rgba(var(--fc-primary-rgb), .10) !important;
	color: var(--fc-ink) !important;
}
.fclms-app .fclms-tab.is-active {
	background-color: var(--fc-primary) !important;
	color: #fff !important;
}

.fclms-app .fclms-pill {
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
}
.fclms-app .fclms-pill.is-active {
	background-color: var(--fc-primary) !important;
	border-color: var(--fc-primary) !important;
	color: #fff !important;
}

.fclms-app .fclms-category {
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
}
.fclms-app .fclms-category__title { color: var(--fc-ink) !important; }

.fclms-app .fclms-mic {
	background-color: var(--fc-surface) !important;
	color: var(--fc-primary) !important;
}
.fclms-app .fclms-mic:hover {
	background-color: var(--fc-primary) !important;
	color: #fff !important;
}
.fclms-app .fclms-mic.is-live {
	background-color: var(--fc-danger) !important;
	border-color: var(--fc-danger) !important;
	color: #fff !important;
}

.fclms-app .fclms-rte__btn,
.fclms-modal .fclms-rte__btn {
	background-color: transparent !important;
	color: var(--fc-ink) !important;
}
.fclms-app .fclms-rte__btn:hover,
.fclms-modal .fclms-rte__btn:hover { background-color: #DFE6ED !important; }

.fclms-modal .fclms-modal__close {
	background-color: transparent !important;
	color: var(--fc-muted) !important;
	border: none !important;
}

/* textul din interiorul cardurilor nu trebuie să moștenească culori de temă */
.fclms-app .fclms-card,
.fclms-app .fclms-row,
.fclms-app .fclms-deck-card,
.fclms-app .fclms-set-card,
.fclms-modal { color: var(--fc-ink); }

/* ------------------------------- cardul de set: progres și butoane aerisite */
.fclms-set-card__foot { display: grid; gap: 14px; padding: 0 18px 20px; }
.fclms-set-card__actions { display: grid; gap: 10px; }
.fclms-set-card__actions .fclms-btn { justify-content: center; width: 100%; padding: 12px 18px; }

.fclms-set-progress { display: grid; gap: 7px; }
.fclms-set-progress__label {
	display: flex; justify-content: space-between; align-items: baseline;
	font-size: 12px; color: var(--fc-muted); text-transform: uppercase; letter-spacing: .07em;
}
.fclms-set-progress__label b { font-size: 17px; color: var(--fc-ink); letter-spacing: 0; }
.fclms-set-progress .fclms-bar__track { height: 10px; }
.fclms-set-progress .fclms-bar__fill { background: var(--fc-primary); }

.fclms-app .fclms-btn--accent {
	background-color: var(--fc-accent) !important;
	border-color: var(--fc-accent) !important;
	color: #1E2A38 !important;
}
.fclms-app .fclms-btn--accent:hover { filter: brightness(.94); }

.fclms-set-card__body { padding: 18px 18px 4px; }

/* ------------------------------------------------ butonul de ecran complet */
.fclms-fs {
	margin-left: auto;
	height: 40px; flex: none;
	display: inline-flex; align-items: center; gap: 8px;
	padding: 0 14px;
	border: 1px solid var(--fc-line); border-radius: 10px;
	cursor: pointer; font-size: 14px; font-weight: 700; line-height: 1;
}
.fclms-fs__icon { font-size: 16px; }
.fclms-fs__label { white-space: nowrap; }
@media (max-width: 640px) {
	.fclms-fs { padding: 0 12px; }
	.fclms-fs__label { display: none; }
}
.fclms-app .fclms-fs {
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
}
.fclms-app .fclms-fs:hover { background-color: #EDF1F5 !important; }
.fclms-app .fclms-fs.is-on {
	background-color: var(--fc-primary) !important;
	border-color: var(--fc-primary) !important;
	color: #fff !important;
}
.fclms-user + .fclms-fs { margin-left: 12px; }

/* În ecran complet, elementul devine el însuși zona derulabilă: fără asta,
   conținutul mai înalt decât ecranul rămâne tăiat, pentru că body nu mai derulează.
   Regulile pentru :fullscreen și :-webkit-full-screen se scriu separat, altfel
   browserele care nu recunosc unul dintre selectori aruncă toată regula. */
.fclms-app:fullscreen {
	width: 100vw;
	height: 100vh;
	max-height: 100vh;
	padding: 28px;
	border-radius: 0;
	overflow-y: auto;
	overflow-x: hidden;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	background: var(--fc-paper);
}
.fclms-app:-webkit-full-screen {
	width: 100vw;
	height: 100vh;
	max-height: 100vh;
	padding: 28px;
	border-radius: 0;
	overflow-y: auto;
	overflow-x: hidden;
	-webkit-overflow-scrolling: touch;
	background: var(--fc-paper);
}

/*
 * Rândurile aplicației se strâng la lățimea de citit — dar numai rândurile.
 *
 * `.fclms-float` sunt straturile plutitoare: fereastra de apel, bulinele,
 * firul de sus, confetti, sfaturile, paleta, anunțurile, ferestrele. În ecran
 * complet ele se mută înăuntrul aplicației, fiindcă altfel n-ar exista deloc
 * — browserul desenează doar elementul trecut în modul acela. Odată intrate,
 * cădeau sub regula asta și își pierdeau tocmai ce le face straturi: lățimea
 * lor și fixarea. Excepția le lasă în pace.
 */
.fclms-app:fullscreen > *:not(.fclms-float),
.fclms-app:-webkit-full-screen > *:not(.fclms-float) { max-width: var(--fc-content-max); margin-left: auto; margin-right: auto; }

/* Antetul rămâne la vedere cât derulezi, ca butonul de ieșire să fie la îndemână. */
.fclms-app:fullscreen .fclms-topbar {
	position: sticky;
	top: -28px;
	z-index: 6;
	background: var(--fc-paper);
	padding-top: 28px;
	margin-top: -28px;
}
.fclms-app:-webkit-full-screen .fclms-topbar {
	position: sticky;
	top: -28px;
	z-index: 6;
	background: var(--fc-paper);
	padding-top: 28px;
	margin-top: -28px;
}

/* variantă de rezervă pentru browserele care nu dau ecran complet unui element */
.fclms-app.is-faux-fullscreen {
	position: fixed; inset: 0; z-index: 99998;
	margin: 0; border-radius: 0; padding: 24px;
	overflow-y: auto; overflow-x: hidden;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
}
.fclms-app.is-faux-fullscreen .fclms-topbar {
	position: sticky; top: -24px; z-index: 90;
	background: var(--fc-paper); padding-top: 24px; margin-top: -24px;
}
body.fclms-no-scroll { overflow: hidden; }

/* ------------------------------------- selectorul de limbă din setări */
.fclms-langtabs {
	display: flex; flex-wrap: wrap; gap: 8px;
	margin: 0 0 20px; padding-bottom: 16px;
	border-bottom: 1px solid var(--fc-line);
}
.fclms-langblock { display: none; }
.fclms-langblock.is-active { display: block; }
label.fclms-langblock.is-active { display: block; }
.fclms-box-row label.fclms-langblock.is-active { flex: 1; }

/* --------------------------------------------- foldere în panoul de admin */
.fclms-row--folder { background: #FBFCFD; border-style: dashed; }

/* ===========================================================================
   ÎNSEMNELE CELOR TREI NIVELURI

   Folder, set, pachet arătau aproape la fel: trei rânduri albe, deosebite
   doar prin butoane. Acum fiecare are forma lui la stânga și cuvântul lui
   deasupra titlului, iar forma spune și ce ține înăuntru — un dosar, foi
   așezate una peste alta, cartonașe răsfirate în mână.

   Culoarea vine din `color`, pusă pe cutie: desenul o ia prin `currentColor`,
   iar plăcuța de sub el o ia tot de acolo, doar mult mai stinsă. Așa, culoarea
   aleasă de om pentru un folder se vede în amândouă, dintr-un singur loc.
   =========================================================================== */

.fclms-mark {
	position: relative; flex: none;
	width: 52px; height: 52px;
	display: grid; place-items: center;
	color: var(--fc-primary);
}
.fclms-mark::before {
	content: ''; position: absolute; inset: 0;
	border-radius: 14px; background: currentColor; opacity: .12;
}
.fclms-mark__glyph { position: relative; width: 28px; height: 28px; display: block; }

/* Pachetul e mai viu decât folderul: e locul unde se ajunge, nu unul de trecere. */
.fclms-mark--deck { color: var(--fc-accent); }
.fclms-mark--deck::before { opacity: .18; }

/*
 * Setul își poartă coperta, cu două foi ivite deasupra ei — pachetele
 * dinăuntru. Cine a pus o copertă o vede mai departe; foile spun, dincolo de
 * ea, la ce nivel se află.
 */
.fclms-mark--set-cover::before { display: none; }
.fclms-mark--set-cover .fclms-mark__sheet {
	position: absolute; border-radius: 6px; background: currentColor;
}
.fclms-mark--set-cover .fclms-mark__sheet:nth-child(1) { left: 10px; right: 10px; top: 0; height: 7px; opacity: .3; }
.fclms-mark--set-cover .fclms-mark__sheet:nth-child(2) { left: 5px; right: 5px; top: 5px; height: 7px; opacity: .45; }
.fclms-mark__face {
	position: absolute; left: 0; right: 0; bottom: 0;
	width: 100%; height: 42px; border-radius: 11px;
	object-fit: cover; background: #E9EEF3; display: block;
}

/* Cuvântul de deasupra titlului: mărunt, dar citit din prima. */
.fclms-row__kind {
	margin: 0 0 2px; font-size: 11px; font-weight: 800;
	letter-spacing: .08em; text-transform: uppercase;
	color: var(--fc-muted);
}
.fclms-row--folder .fclms-row__kind { color: var(--fc-primary); }
.fclms-row--deck .fclms-row__kind { color: #8A5A00; }

/* În capul paginii semnul stă lângă titlu, deci se potrivește după el. */
.fclms-toolbar .fclms-mark { width: 40px; height: 40px; }
.fclms-toolbar .fclms-mark__glyph { width: 22px; height: 22px; }
.fclms-toolbar .fclms-mark::before { border-radius: 11px; }

@media (max-width: 640px) {
	.fclms-mark { width: 44px; height: 44px; }
	.fclms-mark__glyph { width: 24px; height: 24px; }
	.fclms-mark__face { height: 36px; }
	.fclms-mark--set-cover .fclms-mark__sheet:nth-child(2) { top: 4px; height: 6px; }
	.fclms-mark--set-cover .fclms-mark__sheet:nth-child(1) { height: 6px; }
}

/* ------------------------------------------- inelul de acuratețe pe rundă */
.fclms-ring {
	width: 132px; height: 132px; border-radius: 50%;
	margin: 6px auto 18px; display: grid; place-items: center;
}
.fclms-ring__inner {
	width: 106px; height: 106px; border-radius: 50%;
	background: var(--fc-surface);
	display: grid; place-items: center; align-content: center; gap: 2px;
	font-size: 12px; color: var(--fc-muted); text-transform: uppercase; letter-spacing: .08em;
}
.fclms-ring__inner b { font-size: 30px; font-weight: 900; color: var(--fc-ink); letter-spacing: -.02em; }

/* -------------------------------------- meniul pe telefon: bară derulantă */
.fclms-tab { display: inline-flex; align-items: center; gap: 7px; }
.fclms-tab__icon { font-size: 15px; line-height: 1; }

@media (max-width: 780px) {
	.fclms-topbar { gap: 10px; }
	.fclms-logo { font-size: 17px; }
	.fclms-user { font-size: 12px; }
}

/*
 * Administrarea avea aici o fâșie de pastile care se derula pe orizontală, iar
 * sub 480 de pixeli își pierdea etichetele: rămâneau numai pictograme, ghicite.
 * Acum meniul se strânge sub clapă, ca la cursant, deci n-are ce derula și
 * n-are de ce să-și piardă cuvintele. Ce a rămas aici privește doar cercul de
 * progres al cursantului.
 */
@media (max-width: 480px) {
	.fclms-ring { width: 112px; height: 112px; }
	.fclms-ring__inner { width: 88px; height: 88px; }
	.fclms-ring__inner b { font-size: 25px; }
}

/* Butonul de ecran complet stă la capătul din dreapta al barei. */
.fclms-app--admin .fclms-fs { order: 2; margin-left: auto; }

/* Numele filei deschise se arată doar cu meniul strâns; întins, e de prisos. */
.fclms-side__here { display: none; }

/* ------------------------------------------- istoricul facturilor pe perioade */
.fclms-period { padding: 14px 0; border-bottom: 1px solid var(--fc-line); }
.fclms-period:last-child { border-bottom: 0; }
.fclms-period__head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.fclms-period__head strong { font-size: 18px; }
.fclms-period__months { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.fclms-month {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 6px 12px; border: 1px solid var(--fc-line); border-radius: 999px;
	font-size: 13px; background: var(--fc-surface);
}
.fclms-month a { color: var(--fc-ink); text-decoration: none; }
.fclms-month a:hover { color: var(--fc-primary); }
.fclms-month b { color: var(--fc-primary); }
.fclms-month__print { font-size: 14px; opacity: .6; }
.fclms-month__print:hover { opacity: 1; }

/*
 * Tot o celulă de tabel, deci tot fără `display: flex`: ar ieși din rând, iar
 * coloana ei n-ar mai fi în dreptul datelor de alături.
 */
.fclms-cell-actions { vertical-align: middle; }
.fclms-cell-actions > *, .fclms-cell-actions form { display: inline-flex; vertical-align: middle; margin: 2px 4px 2px 0; }
.fclms-cell-actions .fclms-btn { margin: 2px 2px 2px 0; }

/* Aceeași purtare pentru celula de acțiuni din tabelul de anunțuri. */
.fclms-table__actions { vertical-align: middle; white-space: nowrap; }
.fclms-table__actions .fclms-btn { margin: 2px 2px 2px 0; }

.fclms-email-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.fclms-email-test { margin-left: auto; }

.fclms-coupon { display: flex; gap: 10px; align-items: flex-end; margin: 6px 0 4px; }
.fclms-coupon .fclms-field { flex: 1; margin-bottom: 0; }

.fclms-sortpick { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--fc-muted); }
.fclms-sortpick select { font-family: inherit; font-size: 13px; padding: 8px 10px; border: 1px solid var(--fc-line); border-radius: 10px; background: var(--fc-surface); color: var(--fc-ink); }

/* ------------------------------------------------------- cursant VIP */

/*
 * Aurul curge la fel ca degradeul de Influencer, dar în tonuri calde, iar
 * peste el trece din când în când o sclipire — cât să atragă privirea o clipă,
 * nu cât să o rețină.
 */
.fclms-vip {
	position: relative; overflow: hidden;
	display: inline-flex; align-items: center; gap: 6px;
	padding: 6px 15px; border-radius: 999px; font-weight: 800; font-size: 13px;
	background: linear-gradient(110deg, #B8860B, #E0A100 30%, #FFD86B 50%, #E0A100 70%, #B8860B);
	background-size: 300% 100%;
	color: #3B2A05; letter-spacing: .02em;
	text-shadow: 0 1px 0 rgba(255, 255, 255, .35);
	box-shadow: 0 2px 12px rgba(var(--fc-accent-rgb), .38);
	animation: fclms-gold-flow 7s linear infinite;
}

/* Sclipirea care traversează insigna. */
.fclms-vip::after {
	content: '';
	position: absolute; top: 0; left: -60%;
	width: 45%; height: 100%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .65), transparent);
	transform: skewX(-20deg);
	animation: fclms-gold-shine 5s ease-in-out infinite;
}

.fclms-vip--big { font-size: 16px; padding: 10px 22px; }

/* ------------------------------------------------------ INSIGNELE DE ROL

   Rolurile stau lângă VIP și Influencer, deci împrumută forma lor: aceeași
   pastilă, aceeași înălțime, același scris apăsat. Ce le deosebește e că
   stau liniștite — fără sclipire, fără curgere de culoare. Insignele de
   favoare trebuie să rămână cele care sar în ochi; dacă ar străluci toate,
   n-ar mai străluci niciuna.
*/
.fclms-badges { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; vertical-align: middle; }

.fclms-rolebadge {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 6px 14px; border-radius: 999px;
	font-size: 13px; font-weight: 800; letter-spacing: .02em;
	border: 1px solid transparent;
	white-space: nowrap;
}
.fclms-rolebadge__icon { font-size: 13px; line-height: 1; }
.fclms-rolebadge--big { font-size: 16px; padding: 10px 20px; }

/* Fiecare rol cu culoarea lui, ca să se recunoască dintr-o privire, fără
   să fie citit. Culorile sunt scoase din tonuri, nu pline: insigna spune
   ce este omul, nu strigă. */
.fclms-rolebadge--administrator {
	background: #E8EBF2; color: #1F2A44; border-color: #C9D0E0;
}
.fclms-rolebadge--agent {
	background: #FDEBE1; color: #8A3A12; border-color: #F6CDB6;
}
.fclms-rolebadge--teacher {
	background: #E4F2EA; color: #1C5A3A; border-color: #BFE0CD;
}
.fclms-rolebadge--student {
	background: #E6EEFA; color: #1B4079; border-color: #C4D8F2;
}

@media (max-width: 560px) {
	.fclms-rolebadge { font-size: 12px; padding: 5px 11px; }
}

@keyframes fclms-gold-flow {
	to { background-position: 300% 0; }
}
@keyframes fclms-gold-shine {
	0%, 62% { left: -60%; }
	88%, 100% { left: 130%; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-vip { animation: none; }
	.fclms-vip::after { display: none; }
}
.fclms-card--vip { border-color: var(--fc-accent); text-align: center; }
.fclms-vip-banner {
	display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
	padding: 12px 18px; margin-bottom: 18px; border-radius: var(--fc-radius);
	background: linear-gradient(100deg, rgba(var(--fc-accent-rgb), .14), rgba(255, 216, 107, .10) 55%, rgba(var(--fc-accent-rgb), .06));
	border: 1px solid var(--fc-accent);
	font-size: 14px; color: var(--fc-ink);
}

/* ------------------------------------------------------- restricții */
/* Banda celui oprit. Roșu spălăcit, nu strident: e o informație pe care
   trebuie s-o vadă de fiecare dată, nu o alarmă care sună la nesfârșit. */
.fclms-sanction {
	display: flex; align-items: flex-start; gap: 14px;
	padding: 14px 18px; margin-bottom: 18px; border-radius: var(--fc-radius);
	background: var(--fc-danger-soft); border: 1px solid rgba(192, 57, 43, .32);
	color: var(--fc-ink); font-size: 14px;
}
.fclms-sanction__mark { font-size: 20px; line-height: 1.3; }
.fclms-sanction__body { flex: 1; min-width: 0; }
.fclms-sanction__title { display: block; color: var(--fc-danger); margin-bottom: 4px; }
.fclms-sanction__list { margin: 0; padding-left: 18px; }
.fclms-sanction__list li { margin: 2px 0; }
.fclms-sanction__list--past { color: var(--fc-muted); }
.fclms-sanction__foot { margin: 6px 0 0; color: var(--fc-muted); font-size: 13px; }
.fclms-notice--ban { font-weight: 600; }
.fclms-sanction__more { margin: 16px 0 0; }

/* ---------------------------------------- declarația de dinaintea plății */
/* Fereastra se citește, nu se răsfoiește: rânduri rare, litere mari cât să
   nu ceară efort, și nicio culoare de alarmă în afara semnului desenat. */
.fclms-attest { text-align: center; }
.fclms-attest__face { width: 132px; height: 106px; display: block; margin: 4px auto 14px; }
.fclms-attest__lines { margin-bottom: 18px; }
.fclms-attest__line { margin: 0 0 10px; font-size: 15px; line-height: 1.55; color: var(--fc-ink); }
.fclms-attest__line--lead { font-size: 17px; font-weight: 700; }
.fclms-attest__check {
	display: inline-flex; align-items: flex-start; gap: 10px; text-align: left;
	padding: 12px 16px; border-radius: var(--fc-radius);
	background: var(--fc-danger-soft); border: 1px solid rgba(192, 57, 43, .28);
	font-size: 15px; font-weight: 600; cursor: pointer;
}
.fclms-attest__check input { margin-top: 3px; }
.fclms-attest__small { margin: 12px 0 0; font-size: 12px; color: var(--fc-muted); }

@media (max-width: 640px) {
	/* Pastila strânsă pe mijloc lăsa margini inegale când textul se rupea în
	   două rânduri. Întinsă pe toată lățimea, marginile sunt ale ferestrei. */
	.fclms-attest__check { display: flex; width: 100%; }
	.fclms-attest__face { width: 112px; height: 90px; }
	.fclms-attest__line { font-size: 14.5px; }
	.fclms-attest__line--lead { font-size: 16px; }
}

/* Ferestrele se agață de <body>, nu de aplicație, deci regula de mai sus
   pentru butoanele stinse nu ajunge la ele. Aici butonul stins e tot rostul
   ferestrei: dacă arată apăsabil, bifa devine o formalitate ocolită. */
.fclms-modal .fclms-btn[disabled] { opacity: .45; cursor: not-allowed; filter: grayscale(.6); }

/* Tabelul istoricului: motivul primește locul de care are nevoie, iar datele
   nu se rup în două rânduri pentru un spațiu lipsă. */
.fclms-table--log td { vertical-align: top; }
.fclms-table--log td:nth-child(2), .fclms-table--log td:nth-child(3) { white-space: nowrap; }
.fclms-table--log td:last-child { color: var(--fc-muted); }
.fclms-table--log .fclms-chip { margin-top: 4px; }

/* ------------------------------------------------- abonamente și consum */
.fclms-pass__head { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }
.fclms-pass__left { margin-left: auto; text-align: right; font-size: 12px; color: var(--fc-muted); text-transform: uppercase; letter-spacing: .07em; }
.fclms-pass__left b { display: block; font-size: 30px; font-weight: 900; color: var(--fc-primary); letter-spacing: -.02em; }
.fclms-pass__left.is-soon b { color: var(--fc-danger); }

.fclms-plan-price { font-size: 28px; font-weight: 900; letter-spacing: -.02em; margin: 6px 0; }
.fclms-set-card--featured { border-color: var(--fc-accent); position: relative; }
.fclms-ribbon {
	position: absolute; top: -12px; left: 50%; transform: translateX(-50%); z-index: 2;
	background: var(--fc-accent); color: #1E2A38;
	font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
	padding: 5px 14px; border-radius: 999px; white-space: nowrap;
	box-shadow: 0 2px 8px rgba(30,42,56,.15);
}

/* aplicația unică: vederile randate de server */
.fclms-view[hidden] { display: none; }
.fclms-tabs--admin { width: 100%; margin: 0 0 20px; padding-bottom: 14px; border-bottom: 1px solid var(--fc-line); }
.fclms-app--student .fclms-topbar .fclms-tabs { margin-right: auto; }

/* sub-filele din secțiunea Cartonașe */
.fclms-subtabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }

/* Contul are câte un rând de pastile pe secțiune, iar la vedere stă doar al
   secțiunii curente. `display: flex` bate `[hidden]` din foaia browserului,
   deci ascunderea trebuie spusă aici, apăsat: altfel s-ar fi văzut toate trei
   una sub alta. */
.fclms-subtabs[hidden] { display: none !important; }
.fclms-subtabs .fclms-pill { font-size: 13px; padding: 8px 14px; }

/* ------------------------------------------------- fișa cursantului

   Rândul de pastile stă lipit de firimituri, ca un capac peste tot ce urmează:
   se vede din prima că fișa are mai multe fețe, nu una lungă.
*/
.fclms-subtabs--file { margin: 4px 0 18px; }

/* Rândul de butoane dinăuntrul unui panou — Setări → General, de pildă.
   Nu se lipește sus: acolo stă deja rândul de sub-file al secțiunii, iar două
   bare una peste alta ar acoperi tocmai ce s-a deschis. */
.fclms-subtabs--panel {
	position: static;
	background: none;
	box-shadow: none;
	padding: 0;
	margin: 4px 0 14px;
}
.fclms-pill__count {
	min-width: 20px; padding: 0 6px; border-radius: 999px;
	background: rgba(var(--fc-primary-rgb), .12); color: var(--fc-primary);
	font-size: 11px; font-weight: 800; line-height: 18px; text-align: center;
}
.fclms-pill.is-active .fclms-pill__count { background: rgba(255, 255, 255, .22); color: #fff; }

/* Coloana de bifat dintr-un tabel: cât să încapă căsuța, nu mai mult. */
.fclms-cell--tick { width: 34px; text-align: center; }
.fclms-cell--tick input[type="checkbox"] { margin: 0; }

/* Numărul de pe un buton care descoperă o listă strânsă. */
.fclms-btn .fclms-pill__count { margin-left: 6px; }


/* ===========================================================================
   Setări → Aspect

   Cursoarele își arată cifra alături, ca să nu se regleze pe ghicite, iar
   proba de sus e chiar aplicația în mic: poartă clasa `fclms-app`, deci tot
   ce e scris pentru aplicație o prinde și pe ea. Aici i se ia doar ce nu are
   sens într-o cutie — marginea din afară și lipirea de fereastră.
   =========================================================================== */

.fclms-range__row { display: flex; align-items: center; gap: 12px; }
.fclms-range__row input[type="range"] { flex: 1; accent-color: var(--fc-primary); }
.fclms-range__out {
	min-width: 54px; text-align: right;
	font-size: 13px; font-weight: 800; color: var(--fc-ink);
	font-variant-numeric: tabular-nums;
}

/*
 * Proba de aspect stă la locul ei în pagină și se derulează odată cu restul.
 *
 * A fost o vreme lipită de marginea de sus, ca să rămână sub ochi cât umbli la
 * câmpuri. Dar ea e înaltă, iar câmpurile sunt sub ea: agățată acolo, mânca
 * jumătate de ecran tocmai când aveai nevoie de loc ca să lucrezi, și acoperea
 * ce urma să schimbi. Schimbările se văd oricum în ea de îndată ce ajungi cu
 * ochii înapoi.
 */
.fclms-preview {
	border: 1px solid var(--fc-line);
	overflow: hidden;
}
.fclms-preview__row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }

/* Butonul care descoperă o listă stă deoparte de ce e deasupra lui: lipit de
   butonul dinaintea lui ar părea al doilea dintr-o pereche, nu altceva.

   Selectorul poartă și `.fclms-app p`, altfel `.fclms-app p { margin: 0 0 12px }`
   de la începutul fișierului ar cântări mai mult și ar aduce marginea de sus
   înapoi la zero. */
.fclms-app p.fclms-reveal-row { margin-top: 20px; }

/* Bara de răsfoit. Stă sub tabel, nu deasupra: se ajunge la ea după ce s-au
   citit rândurile, adică exact atunci când e nevoie de următoarele. */
.fclms-pager {
	display: flex; align-items: center; justify-content: flex-end; gap: 10px;
	margin-top: 12px;
}
.fclms-pager__label { font-size: 13px; color: var(--fc-muted); }
.fclms-pager .fclms-btn { min-width: 40px; }

@media (max-width: 640px) {
	/* Pe telefon numărătoarea stă la mijloc, cu săgețile de o parte și de
	   alta: degetul le prinde fără să caute colțul din dreapta. */
	.fclms-pager { justify-content: space-between; }
}

.fclms-field--wide { grid-column: 1 / -1; }

/* eticheta „recomandat” stă deasupra cardului, ca să nu acopere titlul */
.fclms-set-card--featured { overflow: visible; margin-top: 14px; }

.fclms-app .fclms-btn[disabled] { opacity: .45; cursor: not-allowed; filter: grayscale(.6); }
.fclms-app .fclms-btn[disabled]:hover { filter: grayscale(.6); }
.fclms-account-pane[hidden] { display: none; }
.fclms-agent-pane[hidden] { display: none; }

.fclms-plan-price s { font-size: 17px; font-weight: 400; color: var(--fc-muted); margin-left: 8px; }

/* sub-filele din admin sunt linkuri, nu butoane */
.fclms-app a.fclms-pill { text-decoration: none; }
.fclms-app a.fclms-pill.is-active { background-color: var(--fc-primary) !important; border-color: var(--fc-primary) !important; color: #fff !important; }

.fclms-panel-wrap { width: 100%; max-width: var(--fc-content-max); margin: 0 auto; }

/* separatorul „sau” dintre parolă și cheia de acces */
.fclms-or { display: flex; align-items: center; gap: 12px; color: var(--fc-muted); font-size: 13px; margin: 16px 0; }
.fclms-or::before, .fclms-or::after { content: ""; flex: 1; height: 1px; background: var(--fc-line); }

/* acces oferit gratuit */
.fclms-gift {
	display: inline-flex; align-items: center; gap: 5px;
	padding: 4px 12px; border-radius: 999px; font-size: 12px; font-weight: 700;
	background: linear-gradient(135deg, var(--fc-accent), #F2C14E); color: #1E2A38;
	vertical-align: middle;
}
.fclms-pass--free { border-color: var(--fc-accent); }

/* perioade programate după abonamentul curent */
.fclms-upcoming {
	display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
	border-style: dashed; border-color: var(--fc-accent);
	margin-top: -8px;
}
.fclms-upcoming__main { flex: 1; min-width: 200px; }
.fclms-upcoming__title { font-weight: 700; margin: 0 0 4px; }
.fclms-upcoming__days { text-align: right; font-size: 12px; color: var(--fc-muted); text-transform: uppercase; letter-spacing: .07em; }
.fclms-upcoming__days b { display: block; font-size: 24px; font-weight: 900; color: var(--fc-accent); letter-spacing: -.02em; }

/* ===========================================================================
   Rafinare vizuală 2026
   Direcția: „instrument liniștit”. Suprafețe stratificate în loc de cutii cu
   contur gros, separare prin linii de un pixel și spațiu, iar singura culoare
   saturată rămâne cea a cutiilor Leitner — ele sunt semnătura aplicației.
   Nu se schimbă nicio clasă din markup, doar substratul vizual.
   =========================================================================== */

:root {
	--fc-ink: #16202B;
	--fc-muted: #6A7A8A;
	--fc-line: #E4E9EF;
	--fc-paper: #F2F5F7;
	--fc-surface: #FFFFFF;
	--fc-radius: 12px;

	--fc-tint: rgba(var(--fc-primary-rgb), .06);
	--fc-shadow: 0 1px 1px rgba(22, 32, 43, .04), 0 2px 8px rgba(22, 32, 43, .05);
	--fc-shadow-lift: 0 1px 1px rgba(22, 32, 43, .04), 0 8px 22px rgba(22, 32, 43, .09);
	--fc-ring: 0 0 0 3px rgba(var(--fc-primary-rgb), .18);
}

.fclms-app { line-height: 1.6; padding: 28px; }

/* ------------------------------------------------------------ tipografie */
.fclms-app h1, .fclms-app .fclms-h2, .fclms-toolbar h1 { letter-spacing: -.02em; }
.fclms-toolbar h1 { font-size: 21px; }
.fclms-h2 { font-size: 17px; }
.fclms-logo { letter-spacing: -.02em; }
.fclms-row__title, .fclms-set-card__title { letter-spacing: -.01em; }
.fclms-muted { color: var(--fc-muted); }

/* ------------------------------------------------------------- suprafețe */
.fclms-card,
.fclms-row,
.fclms-deck-card,
.fclms-set-card,
.fclms-stat,
.fclms-category,
.fclms-app .fclms-category {
	border: 1px solid var(--fc-line);
	box-shadow: var(--fc-shadow);
	transition: box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}

.fclms-set-card:hover,
.fclms-category:hover,
.fclms-deck-card:hover { box-shadow: var(--fc-shadow-lift); border-color: #D7DFE8; }
.fclms-category:hover { transform: translateY(-2px); }

.fclms-row { box-shadow: none; }
.fclms-row:hover { border-color: #D7DFE8; background: #FCFDFE; }

.fclms-empty {
	border-style: solid;
	border-color: var(--fc-line);
	background: linear-gradient(var(--fc-surface), var(--fc-paper));
	padding: 56px 24px;
	font-size: 15px;
}

/* --------------------------------------------------------------- butoane */
.fclms-app .fclms-btn,
.fclms-modal .fclms-btn {
	border-radius: 10px;
	font-weight: 600;
	letter-spacing: .005em;
	transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .06s ease;
}
.fclms-app .fclms-btn:focus-visible,
.fclms-modal .fclms-btn:focus-visible { outline: none; box-shadow: var(--fc-ring); }
.fclms-app .fclms-btn--primary { box-shadow: 0 1px 2px rgba(22, 32, 43, .12); }
.fclms-app .fclms-btn--big { padding: 13px 26px; font-size: 15px; }

/* ------------------------------------------------------------- formulare */
.fclms-field > span {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--fc-muted);
}
.fclms-field input[type=text], .fclms-field input[type=email], .fclms-field input[type=password],
.fclms-field input[type=number], .fclms-field input[type=date], .fclms-field input[type=url],
.fclms-field input[type=search], .fclms-field input[type=tel],
.fclms-field select, .fclms-field textarea {
	background: #FBFCFD;
	border-radius: 10px;
	transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.fclms-field input:focus, .fclms-field select:focus, .fclms-field textarea:focus {
	background: var(--fc-surface);
	box-shadow: var(--fc-ring);
}

/* ------------------------------------------------------------------ file */
.fclms-topbar { border-bottom: 1px solid var(--fc-line); padding-bottom: 14px; }
.fclms-app .fclms-tab { font-weight: 600; padding: 9px 14px; }
.fclms-app .fclms-tab.is-active { box-shadow: 0 1px 2px rgba(22, 32, 43, .14); }
.fclms-app .fclms-pill { font-weight: 600; box-shadow: none; }
.fclms-subtabs { gap: 6px; }

/* ---------------------------------------------------------------- tabele */
.fclms-table th { font-size: 10.5px; letter-spacing: .1em; }
.fclms-table tbody tr { transition: background-color .15s ease; }
.fclms-table tbody tr:hover { background: #FBFCFD; }
.fclms-table td { border-bottom-color: var(--fc-line); }

/* ------------------------------------------- semnătura: cutiile Leitner */
.fclms-bar__track { background: #E8EDF2; }
.fclms-bar__name { font-weight: 600; }
.fclms-dot { box-shadow: 0 0 0 3px rgba(255, 255, 255, .9); }

/* Pachetul poartă culoarea cutiei în care stau majoritatea cartonașelor. */
.fclms-deck-card { position: relative; overflow: hidden; padding-left: 22px; }
.fclms-deck-card::before {
	content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
	background: linear-gradient(var(--fc-primary), var(--fc-accent));
	opacity: .55;
}

/* --------------------------------------------------------------- studiu */
.fclms-flashcard {
	border-radius: 18px;
	box-shadow: 0 1px 2px rgba(22, 32, 43, .05), 0 12px 34px rgba(22, 32, 43, .08);
	padding: 40px 36px;
}
.fclms-choice { transition: border-color .15s ease, background-color .15s ease, transform .06s ease; }
.fclms-choice:active { transform: scale(.995); }
.fclms-badge { box-shadow: 0 1px 2px rgba(22, 32, 43, .18); }

/* --------------------------------------------------------------- modale */
.fclms-modal { border-radius: 16px; box-shadow: 0 24px 70px rgba(22, 32, 43, .28); }
.fclms-modal-back { background: rgba(22, 32, 43, .5); backdrop-filter: blur(2px); }

@media (prefers-reduced-motion: reduce) {
	.fclms-card, .fclms-row, .fclms-set-card, .fclms-category, .fclms-deck-card,
	.fclms-btn, .fclms-choice, .fclms-table tbody tr { transition: none; }
	.fclms-category:hover { transform: none; }
}

@media (max-width: 640px) {
	.fclms-app { padding: 16px; }
	.fclms-flashcard { padding: 26px 20px; }
	.fclms-toolbar h1 { font-size: 19px; }

	/* ------------------------------------------------ ferestrele pe telefon

	   Butoanele stăteau pe un rând, lipite la dreapta, și nu se rupeau. Două
	   etichete lungi cereau împreună mai mult decât are ecranul, iar rândul
	   nu se strâmta: creștea. Fereastra creștea după el, ecranul nu avea de
	   unde, și „Renunță” ieșea afară prin stânga — pe un telefon de 320 de
	   puncte, complet în afara ecranului.

	   Pe lat rândul rămâne rând. Pe îngust butoanele trec unul sub altul, pe
	   toată lățimea, cu cel principal deasupra: jos, sub degetul mare, stă
	   renunțarea, fiindcă apăsarea din greșeală trebuie să fie cea nevinovată.
	*/
	.fclms-modal-back { padding: 16px 12px; }
	.fclms-modal { padding: 20px 16px; max-width: 100%; }
	.fclms-modal__foot { flex-direction: column-reverse; gap: 8px; margin-top: 18px; }

	/* Regulile de înălțime fixă și de text neîntrerupt vin mai jos în fișier,
	   cu aceeași greutate, deci ar câștiga ele. De aceea selectorul de aici
	   are un nivel în plus: nu de dragul stilului, ci ca să ajungă ultimul.
	   Eticheta lungă se rupe în două rânduri în loc să lățească butonul, iar
	   înălțimea crește după ea; fixă, i-ar fi tăiat al doilea rând. */
	.fclms-modal .fclms-modal__foot .fclms-btn {
		width: 100%; justify-content: center;
		min-height: 44px; padding: 11px 14px; white-space: normal;
	}
}

/* ===========================================================================
   Așezarea informației — pasul doi
   O singură acțiune principală pe card, restul sub formă de comenzi compacte.
   Ritm vertical constant: 8 / 16 / 28 / 40.
   =========================================================================== */

:root {
	--fc-space-1: 8px;
	--fc-space-2: 16px;
	--fc-space-3: 28px;
	--fc-space-4: 40px;
}

.fclms-app { padding: var(--fc-space-3); }
.fclms-card { padding: var(--fc-space-3); margin-bottom: var(--fc-space-2); }
.fclms-h2:not(:first-child) { margin-top: var(--fc-space-4); }
.fclms-toolbar { margin-bottom: var(--fc-space-3); gap: var(--fc-space-2); }
.fclms-breadcrumb { margin-bottom: var(--fc-space-2); font-size: 13px; }
.fclms-list { gap: var(--fc-space-2); }
.fclms-cards-grid { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 18px; }

/* ---------------------------------------------------------- card de set */
.fclms-set-card__cover { height: 108px; }
.fclms-set-card__body { padding: 20px 20px 6px; gap: 6px; }
.fclms-set-card__title { font-size: 18px; }
.fclms-set-card__foot { padding: 0 20px 20px; gap: var(--fc-space-2); }
.fclms-set-card__open,
.fclms-app .fclms-set-card__open { width: 100%; justify-content: center; }

.fclms-iconbar { display: flex; gap: 6px; }
.fclms-app .fclms-icon-btn {
	flex: 1;
	height: 38px;
	display: inline-flex; align-items: center; justify-content: center;
	font-family: inherit; font-size: 15px; line-height: 1;
	border: 1px solid var(--fc-line);
	border-radius: 10px;
	background-color: var(--fc-surface) !important;
	color: var(--fc-muted) !important;
	cursor: pointer;
	transition: border-color .15s ease, color .15s ease, background-color .15s ease;
}
.fclms-app .fclms-icon-btn:hover { border-color: var(--fc-primary); color: var(--fc-primary) !important; }
.fclms-app .fclms-icon-btn.is-on {
	border-color: var(--fc-primary);
	background-color: var(--fc-tint) !important;
	color: var(--fc-primary) !important;
}
.fclms-app .fclms-icon-btn:focus-visible { outline: none; box-shadow: var(--fc-ring); }

/* -------------------------------------------------------- card de pachet */
.fclms-deck-card { padding: 22px 24px 22px 26px; gap: var(--fc-space-2); }
.fclms-deck-card__head { gap: var(--fc-space-2); flex-wrap: wrap; }
.fclms-deck-card__head h3 { font-size: 18px; letter-spacing: -.01em; }
.fclms-deck-card__head .fclms-chip { margin-left: auto; }
.fclms-chip--due { background: var(--fc-tint); color: var(--fc-primary); }
.fclms-deck-card__actions { gap: var(--fc-space-1); }

/* ------------------------------------------------------------- progresul */
.fclms-progress { gap: 14px; }
.fclms-progress__top { gap: var(--fc-space-2); }
.fclms-progress__ring { width: 56px; height: 56px; }
.fclms-progress__ring span { width: 42px; height: 42px; font-size: 13px; }
.fclms-progress__meta strong { font-size: 14px; }
.fclms-bars { gap: 6px; }
.fclms-bar { grid-template-columns: 132px 1fr 78px; }
.fclms-bar__track { height: 8px; }

/* ----------------------------------------------------------- statistici */
.fclms-stat-grid { gap: var(--fc-space-2); }
.fclms-stat-grid--lead { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); margin-bottom: var(--fc-space-1); }
.fclms-stat-grid--lead .fclms-stat { padding: 26px 20px; }
.fclms-stat-grid--lead .fclms-stat strong { font-size: 40px; }
.fclms-stat-grid--minor { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.fclms-stat-grid--minor .fclms-stat { padding: 16px; box-shadow: none; background: transparent; }
.fclms-stat-grid--minor .fclms-stat strong { font-size: 22px; }
.fclms-chart { height: 190px; border-bottom: 1px solid var(--fc-line); }
.fclms-chart__bar { border-radius: 5px 5px 0 0; }

/* --------------------------------------------------------- liste de admin */
.fclms-row { padding: 18px 20px; gap: var(--fc-space-2); }
.fclms-row__title { font-size: 15px; margin-bottom: 2px; }
.fclms-row__meta { font-size: 12.5px; }
.fclms-row__actions { gap: 6px; }
.fclms-row__actions .fclms-btn { padding: 9px 14px; font-size: 13px; }

/* ------------------------------------------------------------- formulare */
.fclms-form .fclms-field { margin-bottom: 18px; }
.fclms-grid-2 { gap: 0 var(--fc-space-3); }
.fclms-email-block { padding: var(--fc-space-2) 0; border-bottom: 1px solid var(--fc-line); }
.fclms-email-block:last-of-type { border-bottom: 0; }

/* Numele emailului stă deasupra pastilelor de limbă, ca să se vadă din prima
   la ce anume se schimbă limba: la emailul acesta, nu la toată pagina. */
.fclms-email-block .fclms-email-head { margin-bottom: 10px; }
.fclms-email-block .fclms-langtabs { margin-bottom: 12px; }

/* Bifa de pornire și butonul de probă sunt ale limbii deschise, deci stau
   înăuntru, pe un rând al lor, nu în capul emailului. */
.fclms-email-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }

/* --------------------------------------------------------------- studiu */
.fclms-study { max-width: 760px; }
.fclms-study__head { margin-bottom: var(--fc-space-2); }
.fclms-study__actions { margin-top: var(--fc-space-3); gap: 12px; }
.fclms-flashcard__content { font-size: 20px; }

@media (max-width: 640px) {
	.fclms-card { padding: 20px; }
	.fclms-deck-card { padding: 18px 18px 18px 20px; }
	.fclms-bar { grid-template-columns: 100px 1fr 64px; }
	.fclms-stat-grid--lead .fclms-stat strong { font-size: 32px; }
}

/* ===========================================================================
   Pasul trei — prezență de produs
   Coperta poartă titlul, corpul poartă starea, subsolul poartă acțiunea.
   Fără gradiente decorative: singurul degrade e cel care face titlul lizibil
   peste imagine, iar seturile fără copertă primesc o culoare stabilă,
   dedusă din identificatorul lor, ca lista să rămână recognoscibilă.
   =========================================================================== */

.fclms-set-card {
	border-radius: 16px;
	overflow: hidden;
}

.fclms-set-card__cover {
	height: 132px;
	background-size: cover;
	background-position: center;
	display: flex;
	align-items: flex-end;
	padding: 0;
}
.fclms-set-card__overlay { padding: 18px 20px; width: 100%; }
.fclms-set-card__overlay .fclms-set-card__title {
	color: #fff;
	font-size: 19px;
	line-height: 1.25;
	margin: 0 0 3px;
	text-shadow: 0 1px 12px rgba(10, 18, 26, .45);
}
.fclms-set-card__meta {
	margin: 0;
	color: rgba(255, 255, 255, .82);
	font-size: 12px;
	letter-spacing: .04em;
	text-transform: uppercase;
	font-weight: 600;
}
.fclms-set-card__body { padding: 18px 20px 4px; min-height: 0; }
.fclms-set-card__body .fclms-muted { font-size: 14px; line-height: 1.55; }

/* -------------------------------------------------------- categorii */
.fclms-app .fclms-category {
	display: grid;
	grid-template-columns: 4px 1fr auto;
	align-items: center;
	gap: 0;
	padding: 0;
	border-radius: 14px;
	text-align: left;
	overflow: hidden;
}
.fclms-category__bar { display: block; height: 100%; min-height: 84px; width: 4px; }
.fclms-category__body { display: grid; gap: 3px; padding: 20px 18px; }
.fclms-category__title { font-size: 17px; font-weight: 700; letter-spacing: -.01em; }
.fclms-category__go {
	padding-right: 20px;
	font-size: 18px;
	color: var(--fc-muted);
	transition: transform .18s ease, color .18s ease;
}
.fclms-app .fclms-category:hover .fclms-category__go { transform: translateX(3px); color: var(--fc-primary) !important; }

/* ------------------------------------------------------ detalii fine */
.fclms-set-progress__label { font-size: 11px; letter-spacing: .08em; }
.fclms-set-progress__label b { font-size: 16px; }
.fclms-lock { font-size: 13px; }

.fclms-chip,
.fclms-app .fclms-chip { padding: 5px 12px; font-weight: 600; }
.fclms-badge { padding: 6px 14px; }

.fclms-summary__score { letter-spacing: -.03em; }
.fclms-plan-price { letter-spacing: -.03em; }

/* Butonul principal capătă puțină greutate, ca să fie evident unde se apasă. */
.fclms-app .fclms-btn--primary { box-shadow: 0 1px 2px rgba(22, 32, 43, .16), 0 4px 12px rgba(var(--fc-primary-rgb), .18); }
.fclms-app .fclms-btn--primary:hover { box-shadow: 0 1px 2px rgba(22, 32, 43, .18), 0 6px 18px rgba(var(--fc-primary-rgb), .26); }
.fclms-app .fclms-btn--accent { box-shadow: 0 1px 2px rgba(22, 32, 43, .14), 0 4px 12px rgba(var(--fc-accent-rgb), .24); }

@media (prefers-reduced-motion: reduce) {
	.fclms-app .fclms-category:hover .fclms-category__go { transform: none; }
}

@media (max-width: 640px) {
	.fclms-set-card__cover { height: 116px; }
	.fclms-set-card__title { font-size: 17px; }
}

/* ===========================================================================
   Pasul patru — abonamente, mișcare, echilibru pe orice ecran
   =========================================================================== */

/* ------------------------------------------------------- abonamente */
.fclms-plan-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 18px;
	align-items: start;
}

.fclms-plan-card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 26px 22px 22px;
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	border-radius: 16px;
	box-shadow: var(--fc-shadow);
	transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
}
.fclms-plan-card:hover { box-shadow: var(--fc-shadow-lift); transform: translateY(-3px); }
.fclms-plan-card.is-featured { border-color: var(--fc-accent); margin-top: 12px; }

.fclms-plan-card__head { display: grid; gap: 4px; }
.fclms-plan-card__name { font-size: 17px; font-weight: 700; letter-spacing: -.01em; margin: 0; color: var(--fc-ink); }
.fclms-plan-card__duration {
	margin: 0; font-size: 11.5px; font-weight: 600; letter-spacing: .07em;
	text-transform: uppercase; color: var(--fc-muted);
}
.fclms-plan-card__price { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.fclms-plan-card__amount { font-size: 32px; font-weight: 900; letter-spacing: -.03em; line-height: 1.1; }
.fclms-plan-card__price s { font-size: 16px; color: var(--fc-muted); font-weight: 400; }
.fclms-plan-card__note { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--fc-muted); }
.fclms-plan-card__cta,
.fclms-app .fclms-plan-card__cta { margin-top: auto; justify-content: center; width: 100%; }
.fclms-plan-card .fclms-chip { align-self: flex-start; }

/* ----------------------------------------------- intrarea în scenă */
@keyframes fclms-rise {
	from { opacity: 0; transform: translateY(10px); }
	to { opacity: 1; transform: none; }
}

.fclms-cards-grid > *,
.fclms-plan-grid > *,
.fclms-list > * {
	animation: fclms-rise .34s cubic-bezier(.22, .8, .3, 1) both;
}
.fclms-cards-grid > *:nth-child(1), .fclms-plan-grid > *:nth-child(1), .fclms-list > *:nth-child(1) { animation-delay: .02s; }
.fclms-cards-grid > *:nth-child(2), .fclms-plan-grid > *:nth-child(2), .fclms-list > *:nth-child(2) { animation-delay: .06s; }
.fclms-cards-grid > *:nth-child(3), .fclms-plan-grid > *:nth-child(3), .fclms-list > *:nth-child(3) { animation-delay: .10s; }
.fclms-cards-grid > *:nth-child(4), .fclms-plan-grid > *:nth-child(4), .fclms-list > *:nth-child(4) { animation-delay: .14s; }
.fclms-cards-grid > *:nth-child(n+5), .fclms-plan-grid > *:nth-child(n+5), .fclms-list > *:nth-child(n+5) { animation-delay: .18s; }

.fclms-card { animation: fclms-rise .3s cubic-bezier(.22, .8, .3, 1) both; }

/* Textul de încărcare pulsează discret, ca așteptarea să pară intenționată. */
@keyframes fclms-pulse-text { 0%, 100% { opacity: .45; } 50% { opacity: .9; } }
.fclms-student > .fclms-muted, .fclms-manager > .fclms-muted { animation: fclms-pulse-text 1.4s ease-in-out infinite; }

/* -------------------------------------------------- echilibru pe ecrane */
@media (min-width: 1100px) {
	.fclms-cards-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
}

@media (max-width: 900px) {
	.fclms-plan-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
}

@media (max-width: 640px) {
	.fclms-cards-grid { grid-template-columns: 1fr; }
	.fclms-plan-grid { grid-template-columns: 1fr; gap: 14px; }
	.fclms-plan-card { padding: 22px 20px 20px; }
	.fclms-plan-card__amount { font-size: 28px; }
	.fclms-pass__head { gap: 10px; }
	.fclms-pass__left { margin-left: 0; text-align: left; }
	.fclms-pass__left b { font-size: 26px; }
	.fclms-study__actions .fclms-btn { flex: 1; justify-content: center; }
	.fclms-summary__grid { gap: 18px; }
	.fclms-table { font-size: 13px; }
	.fclms-table td, .fclms-table th { padding: 10px 6px; }

	/* Patru coloane nu încap pe un telefon fără să se rupă cuvintele. Tabelul
	   istoricului se desface deci în fișe, una sub alta, fiecare celulă cu
	   numele coloanei scris în stânga ei. */
	.fclms-table--log, .fclms-table--log tbody, .fclms-table--log tr, .fclms-table--log td { display: block; width: 100%; }
	.fclms-table--log thead { display: none; }

	/* Rândul ascuns rămâne ascuns. Regula de deasupra îi dă `display: block`,
	   iar asta bate ascunderea implicită a atributului `hidden` — fără rândul
	   de față, paginarea număra corect paginile și nu ascundea nimic. */
	.fclms-table--log tr[hidden], .fclms-table--log td[hidden] { display: none; }
	.fclms-table--log tr {
		border: 1px solid var(--fc-line); border-radius: 10px;
		padding: 10px 12px; margin-bottom: 10px;
	}
	.fclms-table--log td { border: none; padding: 3px 0; }

	/* Numai celulele care poartă o etichetă o primesc deasupra. Scrisă pentru
	   toate, o celulă fără etichetă ar fi arătat două puncte singure. */
	.fclms-table--log td[data-label]::before {
		content: attr(data-label) ': ';
		color: var(--fc-muted); font-size: 11px; text-transform: uppercase; letter-spacing: .07em;
		display: block;
	}
	.fclms-table--log td:first-child::before { content: none; }
}

@media (max-width: 420px) {
	/* Pe ecran îngust butoanele trec unul sub altul, dar celula rămâne celulă. */
	.fclms-cell-actions > *, .fclms-cell-actions form { display: flex; }
	.fclms-cell-actions .fclms-btn { width: 100%; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-cards-grid > *, .fclms-plan-grid > *, .fclms-list > *, .fclms-card { animation: none; }
	.fclms-plan-card:hover { transform: none; }
	.fclms-student > .fclms-muted, .fclms-manager > .fclms-muted { animation: none; }
}

/* ===========================================================================
   Pasul cinci — cartonașul se întoarce, restul interfeței respiră
   Mișcarea are un singur rol: să arate ce s-a schimbat. Nimic nu se mișcă
   fără motiv, iar totul se oprește la prefers-reduced-motion.
   =========================================================================== */

/* ---------------------------------------- schimbarea feței cartonașului */
.fclms-flashcard { will-change: transform, opacity; }

/* Fără rotire: fața nouă urcă scurt în locul celei vechi, atât cât să se
   vadă că s-a schimbat ceva, fără mișcare spectaculoasă. */
@keyframes fclms-face-in {
	from { opacity: 0; transform: translateY(10px); }
	to { opacity: 1; transform: none; }
}
@keyframes fclms-face-out {
	from { opacity: 1; transform: none; }
	to { opacity: 0; transform: translateY(-8px); }
}
@keyframes fclms-leave {
	from { opacity: 1; transform: translateX(0); }
	to { opacity: 0; transform: translateX(-28px); }
}

.fclms-flashcard.fclms-flip-in { animation: fclms-face-in .24s cubic-bezier(.2, .8, .3, 1) both; }
.fclms-flashcard.is-turning { animation: fclms-face-out .14s ease-in forwards; }
.fclms-flashcard.is-leaving { animation: fclms-leave .15s ease-in forwards; }

/* Verdictul se vede pe marginea cartonașului, o clipă, înainte să plece. */
.fclms-flashcard.is-right { border-color: var(--fc-success); box-shadow: 0 0 0 3px rgba(46, 125, 50, .16), var(--fc-shadow-lift); }
.fclms-flashcard.is-wrong { border-color: var(--fc-danger); box-shadow: 0 0 0 3px rgba(192, 57, 43, .16), var(--fc-shadow-lift); }

/* --------------------------------------------------------- ecrane goale */
.fclms-empty {
	display: grid;
	gap: 8px;
	justify-items: center;
	padding: 64px 24px;
	border: 1px dashed var(--fc-line);
	border-radius: 16px;
	background: linear-gradient(var(--fc-surface), var(--fc-paper));
}
.fclms-empty__icon { display: block; font-size: 40px; line-height: 1; opacity: .75; }

/* Pe ecranul gol, semnul e mai mare: e singurul lucru de privit acolo. */
.fclms-empty__icon .fclms-mark { width: 76px; height: 76px; margin: 0 auto; }
.fclms-empty__icon .fclms-mark__glyph { width: 40px; height: 40px; }
.fclms-empty__title { margin: 0; font-size: 16px; font-weight: 700; color: var(--fc-ink); letter-spacing: -.01em; }
.fclms-empty__hint { margin: 0; font-size: 13.5px; color: var(--fc-muted); }

/* ------------------------------------------------------- studiu, detalii */
.fclms-study__actions .fclms-btn--big { min-width: 168px; }
.fclms-quiz__q { font-size: 17px; letter-spacing: -.01em; }
.fclms-choice { border-radius: 14px; padding: 15px 18px; }
.fclms-choice:hover { background: #FBFCFD; }
.fclms-choice.is-correct { box-shadow: 0 0 0 2px rgba(46, 125, 50, .18); }
.fclms-choice.is-wrong { box-shadow: 0 0 0 2px rgba(192, 57, 43, .18); }
.fclms-verdict { font-size: 14px; padding: 9px 18px; }
.fclms-summary__score { font-size: 46px; }

/* Inelul de acuratețe se umple la apariție. */
@keyframes fclms-ring-in { from { transform: scale(.86); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.fclms-ring, .fclms-progress__ring { animation: fclms-ring-in .38s cubic-bezier(.2, .8, .3, 1) both; }

/* Barele de progres cresc din zero. */
@keyframes fclms-bar-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.fclms-bar__fill { transform-origin: left center; animation: fclms-bar-grow .5s cubic-bezier(.2, .8, .3, 1) both; }

/* --------------------------------------------------------------- modale */
@keyframes fclms-modal-in { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: none; } }
.fclms-modal { animation: fclms-modal-in .22s cubic-bezier(.2, .8, .3, 1) both; }
@keyframes fclms-fade-in { from { opacity: 0; } to { opacity: 1; } }
.fclms-modal-back { animation: fclms-fade-in .18s ease both; }

/* -------------------------------------------------------- micro-detalii */
.fclms-app .fclms-btn:active { transform: translateY(1px) scale(.995); }
.fclms-app .fclms-icon-btn:active { transform: scale(.94); }
.fclms-notice { border: 1px solid transparent; }
.fclms-notice--success { border-color: rgba(46, 125, 50, .22); }
.fclms-notice--error { border-color: rgba(192, 57, 43, .22); }
.fclms-vip-banner { animation: fclms-rise .4s cubic-bezier(.22, .8, .3, 1) both; }

@media (prefers-reduced-motion: reduce) {
	.fclms-flashcard.fclms-flip-in,
	.fclms-flashcard.is-turning,
	.fclms-flashcard.is-leaving,
	.fclms-ring, .fclms-progress__ring, .fclms-bar__fill,
	.fclms-modal, .fclms-modal-back, .fclms-vip-banner { animation: none; }
	.fclms-app .fclms-btn:active, .fclms-app .fclms-icon-btn:active { transform: none; }
}

/* ===========================================================================
   Alinierea conținutului din butoane
   Emoji și text stau pe aceeași linie optică, centrate pe ambele axe.
   Înălțimea este fixă pe fiecare mărime, ca butoanele alăturate să se alinieze
   chiar dacă unul are pictogramă și altul nu.
   =========================================================================== */

.fclms-app .fclms-btn,
.fclms-modal .fclms-btn,
.fclms-app .fclms-pill,
.fclms-app .fclms-tab,
.fclms-app .fclms-icon-btn,
.fclms-app .fclms-mic,
.fclms-app .fclms-fs {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	line-height: 1.15;
	white-space: nowrap;
}

/* Înălțimi fixe: butoanele de pe același rând se aliniază indiferent de conținut. */
.fclms-app .fclms-btn,
.fclms-modal .fclms-btn { min-height: 40px; padding-top: 0; padding-bottom: 0; }
.fclms-app .fclms-btn--icon,
.fclms-modal .fclms-btn--icon { min-height: 34px; }
.fclms-app .fclms-btn--big { min-height: 50px; }
.fclms-app .fclms-pill { min-height: 36px; padding-top: 0; padding-bottom: 0; }
.fclms-app .fclms-tab { min-height: 38px; padding-top: 0; padding-bottom: 0; }

/* Pictogramele au propria lor înălțime de linie, ca să nu coboare sub text. */
.fclms-tab__icon,
.fclms-fs__icon,
.fclms-mic__icon {
	display: inline-flex;
	align-items: center;
	line-height: 1;
	position: relative;
	top: -.5px;
}

/* Etichetele din interiorul butoanelor rămân pe o singură linie optică. */
.fclms-tab__label,
.fclms-btn > span,
.fclms-pill > span:not(.fclms-dot) { display: inline-flex; align-items: center; }

/* Butoanele care ocupă toată lățimea își centrează conținutul, nu îl lipesc de stânga. */
.fclms-set-card__open,
.fclms-app .fclms-set-card__open,
.fclms-plan-card__cta,
.fclms-app .fclms-plan-card__cta,
.fclms-set-card__actions .fclms-btn,
.fclms-deck-card__actions .fclms-btn { justify-content: center; }

/* Textul lung din butoanele largi are voie să treacă pe două rânduri. */
.fclms-set-card__open,
.fclms-app .fclms-set-card__open,
.fclms-plan-card__cta,
.fclms-app .fclms-plan-card__cta { white-space: normal; }

/* Bulinele colorate din pastile rămân perfect centrate vertical. */
.fclms-pill .fclms-dot,
.fclms-bar__name .fclms-dot { flex: none; align-self: center; }

@media (max-width: 640px) {
	.fclms-app .fclms-btn--big { min-height: 46px; }
	.fclms-study__actions .fclms-btn { white-space: normal; }
}

/* ===========================================================================
   Puncte, prieteni, clasamente
   Punctul este singurul loc unde folosim aurul în afara accentului: o stea
   mică, un număr ferm, fără efecte care să distragă de la învățat.
   =========================================================================== */

.fclms-points,
.fclms-app .fclms-points {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 14px;
	border-radius: 999px;
	background: linear-gradient(135deg, rgba(var(--fc-accent-rgb), .16), rgba(242, 193, 78, .22));
	border: 1px solid rgba(var(--fc-accent-rgb), .35);
	font-size: 14px;
	font-weight: 800;
	letter-spacing: -.01em;
	color: #7A5A00;
	white-space: nowrap;
	transition: transform .2s cubic-bezier(.2, .8, .3, 1);
}
.fclms-points__star { font-size: 13px; line-height: 1; }
.fclms-points--small { padding: 4px 10px; font-size: 12.5px; }
.fclms-points--big { padding: 10px 20px; font-size: 22px; }
.fclms-points--big .fclms-points__star { font-size: 20px; }
.fclms-points.is-bumped { transform: scale(1.16); }

.fclms-app--student > .fclms-topbar .fclms-points { margin-left: auto; }

/* ------------------------------------------------------------- prieteni */
.fclms-person__avatar { width: 42px; height: 42px; border-radius: 50%; flex: none; background: var(--fc-paper); }
.fclms-count {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 20px; height: 20px; padding: 0 6px; margin-left: 4px;
	border-radius: 999px; background: var(--fc-danger); color: #fff;
	font-size: 11px; font-weight: 800; line-height: 1;
}
.fclms-search { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; }
.fclms-search .fclms-field { flex: 1; min-width: 200px; }

/* ----------------------------------------------------------- clasamente */
.fclms-myrank { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.fclms-myrank__value { margin: 2px 0 0; font-size: 34px; font-weight: 900; letter-spacing: -.03em; }
.fclms-myrank .fclms-points { margin-left: auto; }

.fclms-rank__pos {
	flex: none;
	width: 40px;
	text-align: center;
	font-size: 17px;
	font-weight: 800;
	color: var(--fc-muted);
	letter-spacing: -.02em;
}
.fclms-rank.is-me {
	border-color: var(--fc-primary);
	background: var(--fc-tint);
}
.fclms-rank.is-me .fclms-rank__pos { color: var(--fc-primary); }

@media (max-width: 640px) {
	.fclms-person__avatar { width: 36px; height: 36px; }
	.fclms-rank__pos { width: 30px; font-size: 15px; }
	.fclms-myrank .fclms-points { margin-left: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-points, .fclms-points.is-bumped { transition: none; transform: none; }
}

/* Punctul câștigat: urcă din dreapta cartonașului și se stinge. */
.fclms-study { position: relative; }

@keyframes fclms-float-up {
	0%   { opacity: 0; transform: translateY(6px) scale(.9); }
	18%  { opacity: 1; transform: translateY(0) scale(1.06); }
	32%  { transform: translateY(-4px) scale(1); }
	100% { opacity: 0; transform: translateY(-46px) scale(.96); }
}

.fclms-float-points {
	position: absolute;
	top: 54px;
	right: 8px;
	z-index: 5;
	pointer-events: none;
	padding: 7px 15px;
	border-radius: 999px;
	background: linear-gradient(135deg, var(--fc-accent), #F2C14E);
	color: #1E2A38;
	font-size: 15px;
	font-weight: 900;
	letter-spacing: -.01em;
	white-space: nowrap;
	box-shadow: 0 4px 16px rgba(var(--fc-accent-rgb), .38);
	animation: fclms-float-up 1.1s cubic-bezier(.2, .8, .3, 1) forwards;
}

@media (max-width: 640px) {
	.fclms-float-points { top: 46px; right: 4px; font-size: 14px; }
}

/* punctele pierdute folosesc roșul, ca semnalul să fie fără echivoc */
.fclms-float-points.is-lost {
	background: linear-gradient(135deg, var(--fc-danger), #E2705F);
	color: #fff;
	box-shadow: 0 4px 16px rgba(192, 57, 43, .34);
}

/*
 * Punctele setului stau în colțul copertei, peste imagine.
 *
 * Insigna obișnuită are cerneală de aur închis, potrivită pe hârtie albă. Peste
 * copertă, unde dedesubt poate fi verde, o poză întunecată sau un cer deschis,
 * aurul acela se pierde. Aici primește pastilă întunecată și scris alb: albul
 * se citește peste orice, iar pastila nu se bizuie pe culoarea de dedesubt.
 *
 * Selectorul poartă și `.fclms-app` fiindcă temeiul insignei e scris tot cu
 * două clase. Fără el, fundalul de aur al temeiului ar bate pastila de aici,
 * și tocmai asta se întâmpla: cifrele ieșeau maro pe verde, aproape nevăzute.
 */
.fclms-set-card__cover { position: relative; }
.fclms-set-card__points,
.fclms-app .fclms-set-card__points {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 2;
	background: rgba(12, 20, 30, .58);
	border: 1px solid rgba(255, 255, 255, .38);
	color: #fff;
	box-shadow: 0 2px 10px rgba(10, 18, 26, .34);
	backdrop-filter: blur(3px);
	-webkit-backdrop-filter: blur(3px);
	text-shadow: 0 1px 2px rgba(0, 0, 0, .35);
}

/* Moneda are propriile metrici: fără corecție ar sta prea sus față de cifre. */
.fclms-points__star { position: relative; top: .5px; }
.fclms-points--big .fclms-points__star { top: 1px; }

/* ------------------------------------------------- fotografie de profil */
.fclms-photo { display: flex; gap: 22px; align-items: flex-start; flex-wrap: wrap; }
.fclms-photo__preview {
	width: 104px; height: 104px; flex: none;
	border-radius: 50%; object-fit: cover;
	background: var(--fc-paper);
	border: 1px solid var(--fc-line);
	box-shadow: var(--fc-shadow);
}
.fclms-photo__fields { flex: 1; min-width: 240px; }
.fclms-photo__fields input[type=file] {
	font-family: inherit; font-size: 13px;
	padding: 10px; border: 1px dashed var(--fc-line); border-radius: 10px;
	background: #FBFCFD; width: 100%;
}

/* Avatarul din antet și din liste păstrează aceeași formă rotundă. */
.fclms-person__avatar { object-fit: cover; border: 1px solid var(--fc-line); }

/*
 * RÂNDUL DE PERSOANĂ, STRÂNS PE O SINGURĂ LINIE
 *
 * Numele de utilizator și numele adevărat stau alături, nu unul sub altul, iar
 * rândul n-are de ce să mai fie înalt cât două linii de text. Chipul se face și
 * el ceva mai mic: la 42 de pixeli el hotăra singur înălțimea, iar rândul
 * rămânea gros oricât de scurt ar fi fost scrisul din el.
 *
 * Numele adevărat e un lucru de-al doilea: aceeași linie, dar mai mic și mai
 * șters, ca ochiul să cadă întâi pe numele sub care omul e cunoscut aici.
 */
.fclms-person { padding: 10px 16px; gap: 12px; }
.fclms-person .fclms-person__avatar { width: 34px; height: 34px; }
.fclms-person .fclms-row__title { margin: 0; }

.fclms-person__name {
	margin-left: 8px;
	font-weight: 500; font-size: 13px; color: var(--fc-muted);
}

/* ---------------------------------------------- rezumatul punctelor */
.fclms-total { display: flex; align-items: center; gap: 20px; }
.fclms-total__coin { font-size: 40px; line-height: 1; }
.fclms-total__value { margin: 2px 0 0; font-size: 40px; font-weight: 900; letter-spacing: -.03em; }

.fclms-boxpoints { gap: 4px; }
.fclms-boxrow {
	display: grid;
	grid-template-columns: 1fr auto 52px auto;
	align-items: center;
	gap: 14px;
	padding: 12px 0;
	border-bottom: 1px solid var(--fc-line);
}
.fclms-boxrow:last-child { border-bottom: 0; }
.fclms-boxrow__cards { font-size: 13.5px; color: var(--fc-muted); }
.fclms-boxrow__each { font-size: 13px; color: var(--fc-muted); text-align: right; }

.fclms-stat-grid--lead .fclms-stat .fclms-points { align-self: center; }

@media (max-width: 640px) {
	.fclms-boxrow { grid-template-columns: 1fr auto; gap: 6px 12px; }
	.fclms-boxrow__each { display: none; }
	.fclms-total__value { font-size: 32px; }
}

/* Cardul de rezumat: numărul mare, eticheta, apoi calculul „× valoare = total”. */
.fclms-stat--summary { display: grid; gap: 4px; justify-items: center; }
.fclms-stat--summary .fclms-stat__label { font-size: 13px; color: var(--fc-muted); }
.fclms-stat__calc {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	margin-top: 14px;
}
.fclms-stat__mult { font-size: 14px; font-weight: 700; color: var(--fc-muted); letter-spacing: -.01em; }

/* Aceeași distanță între text și monedă în rândurile pe cutii. */
.fclms-boxrow { gap: 18px; }
.fclms-boxrow__each { min-width: 40px; }

/* Pagina de autentificare respectă aceleași margini ca restul aplicației. */
.fclms-app--account > .fclms-auth,
.fclms-app--account > .fclms-notice,
.fclms-app--account > .fclms-account-pane,
.fclms-app--account > .fclms-subtabs,
.fclms-app--account > .fclms-card,
.fclms-app--account > form {
	width: 100%;
	max-width: var(--fc-content-max);
	margin-left: auto;
	margin-right: auto;
}

/* Formularele de intrare și de înscriere nu au nevoie de toată lățimea. */
.fclms-app--account > .fclms-auth { max-width: 940px; }

/* ------------------------------------------------------------- meciuri */
.fclms-match__head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.fclms-match__score {
	margin-left: auto;
	font-size: 24px; font-weight: 900; letter-spacing: -.02em;
	display: inline-flex; align-items: baseline; gap: 8px;
}
.fclms-match__score i { font-style: normal; color: var(--fc-muted); font-weight: 400; }
.fclms-match__wait {
	margin: 28px 0 0; text-align: center; font-size: 15px; color: var(--fc-muted);
	animation: fclms-pulse-text 1.6s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) { .fclms-match__wait { animation: none; } }
@media (max-width: 640px) { .fclms-match__score { margin-left: 0; } }

/* ================================================================ suport */
.fclms-ticket.is-waiting { border-left: 3px solid var(--fc-danger); }
.fclms-queue-head { display: flex; align-items: center; gap: 20px; }
.fclms-queue-head .fclms-btn { margin-left: auto; }
.fclms-chip--warn { background: rgba(var(--fc-accent-rgb), .16); color: #7A5A00; }

.fclms-chat { display: flex; flex-direction: column; gap: 16px; }
.fclms-chat__head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.fclms-chat__title { display: grid; gap: 2px; }
.fclms-chat__tools { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }

.fclms-chat__log {
	display: flex; flex-direction: column; gap: 14px;
	max-height: 460px; overflow-y: auto;
	padding: 18px; border-radius: 14px;
	background: var(--fc-paper);
	border: 1px solid var(--fc-line);
}

.fclms-msg { display: flex; gap: 12px; align-items: flex-start; max-width: 82%; }
.fclms-msg.is-mine { align-self: flex-end; flex-direction: row-reverse; }
.fclms-msg__avatar { width: 34px; height: 34px; border-radius: 50%; object-fit: cover; flex: none; }
.fclms-msg__bubble {
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	border-radius: 14px;
	padding: 12px 16px;
	box-shadow: var(--fc-shadow);
}
.fclms-msg.is-mine .fclms-msg__bubble { background: var(--fc-tint); border-color: rgba(var(--fc-primary-rgb), .28); }
.fclms-msg.is-staff:not(.is-mine) .fclms-msg__bubble { border-color: rgba(var(--fc-accent-rgb), .4); }
.fclms-msg__meta { margin: 0 0 5px; font-size: 11.5px; color: var(--fc-muted); }
.fclms-msg__text { margin: 0; font-size: 14.5px; line-height: 1.55; }

.fclms-chat__compose { display: flex; gap: 12px; align-items: flex-end; }
.fclms-chat__compose textarea {
	flex: 1; font-family: inherit; font-size: 14.5px; padding: 12px 14px;
	border: 1px solid var(--fc-line); border-radius: 12px; background: #FBFCFD; resize: vertical;
}
.fclms-chat__compose textarea:focus { outline: none; background: var(--fc-surface); box-shadow: var(--fc-ring); }

@media (max-width: 640px) {
	.fclms-msg { max-width: 96%; }
	.fclms-chat__tools { margin-left: 0; }
	.fclms-chat__compose { flex-direction: column; align-items: stretch; }
}

/*
 * CAPĂTUL UNEI DISCUȚII ÎNCHISE
 *
 * Erau o propoziție și un buton puse pe același rând, lipite de marginea din
 * stânga: „Discuția a fost închisă.” și, la un lat de deget de ea, un buton
 * plin, de două ori mai înalt decât scrisul. Nu se aliniau — și nici n-aveau
 * cum, fiindcă nu erau două lucruri de aceeași măsură. Una e o veste, altul e
 * o faptă; puse umăr la umăr, arătau ca două piese rămase dintr-un rând care
 * s-a rupt.
 *
 * Acum sunt un capăt: o casetă cu chenar întrerupt, cât toată lățimea, cu
 * vestea deasupra și fapta dedesubt, amândouă pe mijloc. Chenarul întrerupt
 * spune, fără cuvinte, că aici se termină ceva — nu e o unealtă, e un hotar.
 */
.fclms-chat__reopen {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	/* Fără margine proprie sus: e copil al discuției, iar aceea își așază
	   singură rândurile cu `gap`. Două distanțe adunate ar fi rupt capătul
	   de ultimul mesaj. */
	padding: 16px;
	text-align: center;
	border-radius: 14px;
	border: 1px dashed var(--fc-line);
	background: var(--fc-paper);
}

/*
 * Distanța dintre veste și buton o ține `gap`, nimic altceva.
 *
 * Paragrafele aplicației au o margine de jos scrisă la rădăcină — bună peste
 * tot, fiindcă textul curge în rânduri — dar aici se adună peste `gap` și
 * împinge butonul cu încă un rând mai jos decât trebuie. Într-o cutie de
 * flexie, distanțele se scriu într-un singur loc, altfel nu se mai știe de
 * unde vin.
 */
.fclms-app .fclms-chat__reopen > *,
.fclms-chat__reopen > * { margin: 0; }
.fclms-app .fclms-chat__reopen p,
.fclms-chat__reopen p { margin: 0; font-size: 14px; }



/* ------------------------------------------------ categorii de discuții */
.fclms-catgrid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 14px;
}

.fclms-app .fclms-catcard {
	display: flex;
	align-items: center;
	gap: 16px;
	width: 100%;
	padding: 20px;
	text-align: left;
	font-family: inherit;
	border: 1px solid var(--fc-line);
	border-radius: 14px;
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
	box-shadow: var(--fc-shadow);
	cursor: pointer;
	transition: box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}
.fclms-app .fclms-catcard:hover { box-shadow: var(--fc-shadow-lift); border-color: var(--fc-primary); transform: translateY(-2px); }
.fclms-app .fclms-catcard:focus-visible { outline: none; box-shadow: var(--fc-ring); }
.fclms-app .fclms-catcard.is-urgent { border-color: var(--fc-danger); }

.fclms-catcard__icon { font-size: 26px; line-height: 1; flex: none; }
.fclms-catcard__body { display: grid; gap: 3px; flex: 1; }
.fclms-catcard__title { font-size: 15.5px; font-weight: 700; letter-spacing: -.01em; }
.fclms-catcard__count { font-size: 13px; color: var(--fc-muted); }
.fclms-catcard__go { font-size: 18px; color: var(--fc-muted); transition: transform .18s ease; }
.fclms-app .fclms-catcard:hover .fclms-catcard__go { transform: translateX(3px); color: var(--fc-primary) !important; }

.fclms-catpage__head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.fclms-catpage__head .fclms-spacer { flex: 1; }

@media (prefers-reduced-motion: reduce) {
	.fclms-app .fclms-catcard, .fclms-catcard__go { transition: none; }
	.fclms-app .fclms-catcard:hover { transform: none; }
	.fclms-app .fclms-catcard:hover .fclms-catcard__go { transform: none; }
}



/* ===========================================================================
   Meniul principal, cu culori proprii
   Fundalul, textul și fila activă se aleg din setări. Elementele care trebuie
   să rămână lizibile pe orice fundal — punctele și ecranul complet — își
   păstrează propriul contrast, indiferent de culoarea barei.
   =========================================================================== */

.fclms-app > .fclms-topbar {
	background: var(--fc-topbar, transparent);
	color: var(--fc-topbar-text, var(--fc-ink));
	border-radius: var(--fc-radius);
	padding: 12px 18px;
	margin-bottom: 22px;
	border-bottom: 0;
	box-shadow: var(--fc-shadow);
	max-width: var(--fc-content-max);
}

.fclms-app > .fclms-topbar .fclms-logo { color: var(--fc-topbar-text, var(--fc-ink)); }

.fclms-app > .fclms-topbar .fclms-tab {
	color: var(--fc-topbar-text, var(--fc-ink)) !important;
	background-color: transparent !important;
	opacity: .78;
}
.fclms-app > .fclms-topbar .fclms-tab:hover {
	opacity: 1;
	background-color: rgba(255, 255, 255, .14) !important;
}
.fclms-app > .fclms-topbar .fclms-tab.is-active {
	background-color: var(--fc-topbar-active, var(--fc-primary)) !important;
	color: #fff !important;
	opacity: 1;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .22);
}

/* Punctele rămân pe fundal deschis, ca moneda și cifra să se vadă mereu. */
/*
 * Pastila de puncte e un `<button>`, iar multe teme WordPress golesc fundalul
 * oricărui buton la trecerea cursorului, adesea cu `!important`. Aici fundalul
 * alb e tocmai ce o face citibilă pe bara închisă la culoare: golit, rămâneau
 * cifre aurii pe bleumarin. De aceea starea sub cursor e scrisă limpede, cu
 * aceleași valori ca în repaus — nu ca să adauge un efect, ci ca să oprească
 * unul venit din afară.
 */
.fclms-app > .fclms-topbar .fclms-points,
.fclms-app > .fclms-topbar .fclms-points:hover,
.fclms-app > .fclms-topbar .fclms-points:focus,
.fclms-app > .fclms-topbar .fclms-points:active {
	background: rgba(255, 255, 255, .96) !important;
	border-color: rgba(var(--fc-accent-rgb), .55) !important;
	color: #7A5A00 !important;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .18);
	transform: none;
}

.fclms-app > .fclms-topbar .fclms-fs {
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
	border-color: transparent;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .18);
}

@media (max-width: 640px) {
	.fclms-app > .fclms-topbar { padding: 10px 12px; margin-bottom: 16px; }
}

/* ===========================================================================
   Culorile rămân aceleași în ecran complet, iar în administrare bara colorată
   este cea de navigație, nu titlul de deasupra ei.
   =========================================================================== */

/* --------------------------------------------------------- ecran complet */
.fclms-app:fullscreen,
.fclms-app:-webkit-full-screen,
.fclms-app.is-faux-fullscreen {
	background: var(--fc-paper);
	color: var(--fc-ink);
	overflow-y: auto;
	/* Spațiu mai mare sus: bara nu se lipește de marginea ecranului și nu mai
	   intră sub butonul rotund de închidere, care plutește la mijloc. */
	padding: 52px var(--fc-space-3) var(--fc-space-4);
}

.fclms-app:fullscreen > .fclms-topbar,
.fclms-app:-webkit-full-screen > .fclms-topbar,
.fclms-app.is-faux-fullscreen > .fclms-topbar {
	background: var(--fc-topbar, transparent);
	color: var(--fc-topbar-text, var(--fc-ink));
}

.fclms-app:fullscreen > .fclms-tabs--admin,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin {
	background: var(--fc-topbar, transparent);
	color: var(--fc-topbar-text, var(--fc-ink));
}

/* ----------------------------------------------------------- administrare */
/* Titlul rămâne pe fundalul paginii; culoarea aleasă merge pe navigație. */
.fclms-app--admin > .fclms-topbar {
	background: transparent;
	box-shadow: none;
	padding: 0 0 14px;
	margin-bottom: 8px;
	border-bottom: 1px solid var(--fc-line);
	border-radius: 0;
}
.fclms-app--admin > .fclms-topbar .fclms-logo { color: var(--fc-ink); }

.fclms-app--admin > .fclms-tabs--admin {
	background: var(--fc-topbar, transparent);
	color: var(--fc-topbar-text, var(--fc-ink));
	border-radius: var(--fc-radius);
	padding: 12px 18px;
	margin-bottom: 20px;
	border-bottom: 0;
	box-shadow: var(--fc-shadow);
}

.fclms-app--admin > .fclms-tabs--admin .fclms-tab {
	color: var(--fc-topbar-text, var(--fc-ink)) !important;
	background-color: transparent !important;
	opacity: .78;
}
.fclms-app--admin > .fclms-tabs--admin .fclms-tab:hover {
	opacity: 1;
	background-color: rgba(255, 255, 255, .14) !important;
}
.fclms-app--admin > .fclms-tabs--admin .fclms-tab.is-active {
	background-color: var(--fc-topbar-active, var(--fc-primary)) !important;
	color: #fff !important;
	opacity: 1;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .22);
}

.fclms-app--admin > .fclms-topbar .fclms-fs {
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
}

/* Previzualizarea diplomei, într-un cadru propriu. */
.fclms-preview {
	border: 1px solid var(--fc-line);
	border-radius: 14px;
	overflow: hidden;
	background: var(--fc-paper);
	box-shadow: inset 0 1px 4px rgba(22, 32, 43, .06);
}
.fclms-preview__frame { display: block; width: 100%; height: 620px; border: 0; background: #fff; }

@media (max-width: 640px) { .fclms-preview__frame { height: 420px; } }

/* Previzualizarea diplomei, într-un cadru propriu. */
.fclms-preview {
	border: 1px solid var(--fc-line);
	border-radius: 14px;
	overflow: hidden;
	background: var(--fc-paper);
	box-shadow: inset 0 1px 4px rgba(22, 32, 43, .06);
}
.fclms-preview__frame { display: block; width: 100%; height: 620px; border: 0; background: #fff; }

@media (max-width: 640px) { .fclms-preview__frame { height: 420px; } }

/* ------------------------------------------- perioade oferite și plătite */
/* Auriu foarte diluat: se vede că e un cadou, fără să strige. */
.fclms-pass--free {
	border-color: rgba(var(--fc-accent-rgb), .45);
	background:
		linear-gradient(135deg, rgba(var(--fc-accent-rgb), .07), rgba(242, 193, 78, .04)),
		var(--fc-surface);
}

.fclms-upcoming {
	border-style: dashed;
	border-color: rgba(var(--fc-accent-rgb), .5);
	background:
		linear-gradient(135deg, rgba(var(--fc-accent-rgb), .06), rgba(242, 193, 78, .03)),
		var(--fc-surface);
}

/* Prelungirea plătită folosește culoarea principală, nu aurul. */
.fclms-upcoming.is-paid {
	border-color: rgba(var(--fc-primary-rgb), .35);
	background: linear-gradient(135deg, var(--fc-tint), rgba(var(--fc-primary-rgb), .02)), var(--fc-surface);
}
.fclms-upcoming.is-paid .fclms-upcoming__days b { color: var(--fc-primary); }

/* --------------------------------------------- sesizări despre cartonașe */
.fclms-app .fclms-report { margin-left: auto; opacity: .6; font-size: 15px; }
.fclms-app .fclms-report:hover { opacity: 1; color: var(--fc-danger) !important; border-color: var(--fc-danger); }

/*
 * PATRU FELURI DE FIR, PATRU CULORI
 *
 * În coada agentului stau laolaltă, dar nu cer același răspuns. Culoarea o
 * spune înainte de a deschide firul:
 *
 *   albastru   — o întrebare obișnuită către suport;
 *   portocaliu — un cartonaș sesizat, de corectat;
 *   verde      — un cartonaș neînțeles, unde omul cere o lămurire;
 *   roșu       — un om raportat, singurul lucru de aici care privește pe
 *                cineva, nu ceva.
 *
 * Culoarea nu mai stă doar în dunga din stânga, ci și în titlul rândului.
 * Dunga singură e de trei pixeli la marginea ecranului, iar ochiul citește
 * titlul: colorat, felul firului se vede fără să fie căutat.
 *
 * Roșul a fost, o vreme, al cartonașului stricat, iar portocaliul al omului
 * raportat. S-au schimbat între ele: roșul e culoarea la care te uiți întâi,
 * iar un om raportat cere mai degrabă privirea aceea decât o greșeală de
 * tipar pe un cartonaș.
 */
.fclms-ticket.is-support { border-left: 3px solid var(--fc-primary); }
.fclms-ticket.is-report { border-left: 3px solid #E07A1F; }
.fclms-ticket.is-question { border-left: 3px solid #2E7D32; }

/* Titlul poartă aceeași culoare ca dunga. Numele omului de dedesubt rămâne
   șters: e o a doua informație, iar două rânduri colorate ar fi două lucruri
   care strigă deodată. */
.fclms-ticket.is-support .fclms-row__title { color: var(--fc-primary); }
.fclms-ticket.is-report .fclms-row__title { color: #E07A1F; }
.fclms-ticket.is-question .fclms-row__title { color: #2E7D32; }

.fclms-cardref {
	padding: 14px 18px;
	border-radius: 12px;
	border: 1px solid rgba(var(--fc-accent-rgb), .45);
	background: linear-gradient(135deg, rgba(var(--fc-accent-rgb), .07), rgba(242, 193, 78, .03)), var(--fc-surface);
}
.fclms-cardref__meta { margin: 0 0 8px; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--fc-muted); }
.fclms-cardref__side { margin: 0 0 4px; font-size: 14px; line-height: 1.5; }
.fclms-cardref__side b { color: var(--fc-muted); font-weight: 600; }

/* Întrebarea nu e o alarmă. Galbenul de avertizare rămâne pe sesizări, unde
   ceva chiar e stricat; o nedumerire primește culoarea obișnuită. */
.fclms-cardref.is-question {
	border-color: rgba(var(--fc-primary-rgb), .35);
	background: linear-gradient(135deg, rgba(var(--fc-primary-rgb), .06), transparent), var(--fc-surface);
}

/* ------------------------------------------------ sugestii și chestionare */
.fclms-survey { border-color: rgba(var(--fc-primary-rgb), .3); }
.fclms-question { padding: 16px 0; border-bottom: 1px solid var(--fc-line); }
.fclms-question:last-of-type { border-bottom: 0; }
.fclms-question__text { margin: 0 0 4px; font-size: 15.5px; font-weight: 700; letter-spacing: -.01em; }
.fclms-question__hint { margin: 0 0 12px; font-size: 12.5px; color: var(--fc-muted); }

.fclms-suggestion { align-items: flex-start; }
.fclms-suggestion__reply {
	margin: 10px 0 0; padding: 10px 14px;
	border-left: 3px solid var(--fc-primary);
	background: var(--fc-tint);
	border-radius: 0 10px 10px 0;
	font-size: 14px;
}

.fclms-hintbox {
	margin: 0 0 18px; padding: 14px 16px;
	background: var(--fc-paper); border: 1px dashed var(--fc-line); border-radius: 10px;
	font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px; line-height: 1.6;
	color: var(--fc-muted); white-space: pre-wrap;
}

.fclms-otherlist { margin: 6px 0 0; padding-left: 20px; font-size: 14px; line-height: 1.7; color: var(--fc-ink); }

/* --------------------------------------- constructorul de chestionare */
.fclms-field__label {
	display: block; margin-bottom: 10px;
	font-size: 12px; font-weight: 600; letter-spacing: .04em;
	text-transform: uppercase; color: var(--fc-muted);
}

.fclms-qbuild {
	padding: 18px;
	margin-bottom: 14px;
	border: 1px solid var(--fc-line);
	border-radius: 14px;
	background: var(--fc-surface);
	box-shadow: var(--fc-shadow);
}
.fclms-qbuild__head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.fclms-qbuild__num {
	display: inline-flex; align-items: center; justify-content: center;
	width: 28px; height: 28px; flex: none;
	border-radius: 50%; background: var(--fc-tint); color: var(--fc-primary);
	font-size: 13px; font-weight: 800;
}
.fclms-qbuild__text {
	flex: 1; font-family: inherit; font-size: 15px; font-weight: 600;
	padding: 10px 14px; border: 1px solid var(--fc-line); border-radius: 10px; background: #FBFCFD;
}
.fclms-qbuild__text:focus { outline: none; background: var(--fc-surface); box-shadow: var(--fc-ring); }

.fclms-qbuild__options { display: grid; gap: 8px; margin-left: 40px; }
.fclms-qbuild__opt { display: flex; align-items: center; gap: 10px; }
.fclms-qbuild__bullet { color: var(--fc-muted); font-size: 15px; flex: none; }
.fclms-qbuild__opt input {
	flex: 1; font-family: inherit; font-size: 14px;
	padding: 9px 12px; border: 1px solid var(--fc-line); border-radius: 10px; background: #FBFCFD;
}
.fclms-qbuild__opt input:focus { outline: none; background: var(--fc-surface); box-shadow: var(--fc-ring); }
.fclms-qbuild .fclms-swatches { margin: 14px 0 0 40px; }

/* Ștergerea unui mesaj, discretă până la hover pe bulă. */
.fclms-msg__bubble { position: relative; }
.fclms-msg__del,
.fclms-app .fclms-msg__del {
	position: absolute; top: 6px; right: 6px;
	width: 22px; height: 22px; padding: 0;
	border: 0; border-radius: 50%;
	background: transparent; color: var(--fc-muted);
	font-size: 12px; line-height: 1; cursor: pointer; opacity: 0;
	transition: opacity .15s ease, color .15s ease;
}
.fclms-msg__bubble:hover .fclms-msg__del { opacity: 1; }
.fclms-msg__del:hover { color: var(--fc-danger); }

@media (max-width: 640px) {
	.fclms-qbuild__options, .fclms-qbuild .fclms-swatches { margin-left: 0; }
	.fclms-msg__del { opacity: 1; }
}

@media (max-width: 640px) {
	.fclms-app:fullscreen,
	.fclms-app:-webkit-full-screen,
	.fclms-app.is-faux-fullscreen { padding: 44px 14px var(--fc-space-3); }
}

/* ===========================================================================
   Meniuri fixate sus
   Bara principală și rândul de sub ea rămân la vedere; se derulează doar
   conținutul. Înălțimile sunt declarate o singură dată, ca decalajul dintre
   cele două bare să nu trebuiască ghicit în mai multe locuri.
   =========================================================================== */

:root {
	--fc-topbar-h: 64px;
	--fc-subtabs-h: 54px;
}

/* Alinierea pe linie: toate elementele barei stau centrate vertical. */
.fclms-app > .fclms-topbar,
.fclms-app--admin > .fclms-tabs--admin {
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: var(--fc-topbar-h);
	box-sizing: border-box;
}
.fclms-app > .fclms-topbar .fclms-tabs { align-items: center; margin-bottom: 0; }
.fclms-app > .fclms-topbar .fclms-points,
.fclms-app > .fclms-topbar .fclms-fs { align-self: center; }

/* --------------------------------------------------------------- fixare */
.fclms-app > .fclms-topbar,
.fclms-app--admin > .fclms-tabs--admin {
	position: sticky;
	top: 0;
	z-index: 30;
}

.fclms-app--admin > .fclms-topbar { position: static; }

/* Rândul secundar se oprește exact sub cel principal. */
.fclms-subtabs {
	position: sticky;
	top: calc(var(--fc-topbar-h) + 10px);
	z-index: 25;
	padding: 10px 0;
	margin-bottom: 12px;
	background: var(--fc-paper);
}

/* Sub-filele au nevoie de fundal opac, altfel conținutul se vede prin ele. */
.fclms-app--student .fclms-subtabs,
.fclms-app--account .fclms-subtabs,
.fclms-app--admin .fclms-subtabs {
	background: var(--fc-paper);
	box-shadow: 0 6px 10px -8px rgba(22, 32, 43, .28);
}

/* Pastilele dintr-o fereastră modală nu sunt o bară lipită sus. */
.fclms-modal .fclms-subtabs {
	position: static;
	background: none;
	box-shadow: none;
	padding: 0;
	margin-bottom: 0;
}

@media (max-width: 640px) {
	:root { --fc-topbar-h: 56px; }
	.fclms-subtabs { top: calc(var(--fc-topbar-h) + 6px); }
}

/* Ecranele scunde ar rămâne fără loc de citit dacă am fixa ambele bare. */
@media (max-height: 520px) {
	.fclms-app > .fclms-topbar,
	.fclms-app--admin > .fclms-tabs--admin,
	.fclms-subtabs { position: static; }
}

/* ===========================================================================
   Zona fixată: aliniere pe mijloc și fundal etanș
   Barele sunt rotunjite și au margini, deci între ele rămâne o fâșie prin care
   s-ar vedea conținutul derulând. O acoperim cu straturi în culoarea paginii,
   așezate în același context de stivuire, deci deasupra conținutului și sub bară.
   =========================================================================== */

.fclms-app > .fclms-topbar,
.fclms-app--admin > .fclms-tabs--admin { position: sticky; }

/* Toate elementele barei se centrează pe înălțime, indiferent de conținut. */
.fclms-app > .fclms-topbar > *,
.fclms-app--admin > .fclms-tabs--admin > * { align-self: center; }

.fclms-app > .fclms-topbar .fclms-tabs,
.fclms-app--admin > .fclms-tabs--admin {
	padding-top: 0;
	padding-bottom: 0;
	margin-top: 0;
	align-items: center;
}

/*
 * Deasupra barei nu e nevoie de nimic: odată lipită de marginea de sus, nu mai
 * există spațiu prin care să treacă ceva. O fâșie pusă acolo ar acoperi antetul
 * site-ului înainte de derulare și titlul din administrare.
 *
 * Rămâne doar spațiul dintre bara principală și rândul secundar, exact cât e.
 */
.fclms-app > .fclms-topbar::after,
.fclms-app--admin > .fclms-tabs--admin::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -11px;
	height: 11px;
	background: var(--fc-paper);
	z-index: -1;

	/* Fâșia trebuie să treacă și peste marginile din stânga și din dreapta ale
	   aplicației, altfel prin ele s-ar vedea conținutul derulând. Până acum
	   ieșea acolo cu adevărat — `left: -30px; right: -30px` — și tocmai ieșirea
	   aceea lățea foaia cu treizeci de puncte: pe telefon, pagina se putea trage
	   în lateral și tot ce era în ea pleca după.

	   Acum aceleași două capete sunt umbre, nu cutie. O umbră se desenează
	   întocmai la fel, dar nu se pune la socoteală când browserul măsoară cât e
	   de lată pagina — deci acoperă ce trebuie acoperit fără să mai împingă
	   nimic afară. */
	box-shadow: -30px 0 0 0 var(--fc-paper), 30px 0 0 0 var(--fc-paper);
}

/* Rândul secundar acoperă și marginile laterale, nu doar propria lățime. */
.fclms-subtabs { position: sticky; }
.fclms-subtabs::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -2px;
	bottom: -2px;
	background: var(--fc-paper);
	z-index: -1;

	/* Aceeași socoteală ca la fâșia barei de sus: capetele sunt umbre, ca să
	   acopere marginile fără să lățească pagina. */
	box-shadow: -30px 0 0 0 var(--fc-paper), 30px 0 0 0 var(--fc-paper);
}

@media (max-height: 520px) {
	.fclms-app > .fclms-topbar::after,
	.fclms-app--admin > .fclms-tabs--admin::after,
	.fclms-subtabs::before { display: none; }
}

/* Titlul din administrare rămâne vizibil: bara de navigație nu are voie
   să deseneze peste el, iar rândul secundar se oprește sub ea. */
.fclms-app--admin > .fclms-topbar {
	position: static;
	z-index: 1;
}

.fclms-app--admin .fclms-subtabs { top: calc(var(--fc-topbar-h) + 11px); }

/* ===========================================================================
   Fixarea meniurilor doar în ecran complet
   În pagina obișnuită, antetul site-ului este cel care rămâne sus; aplicația
   se derulează întreagă, ca orice alt conținut. În ecran complet nu mai există
   antetul site-ului, așa că rolul lui îl preiau meniul și submeniul.
   =========================================================================== */

.fclms-app > .fclms-topbar,
.fclms-app--admin > .fclms-tabs--admin,
.fclms-subtabs {
	position: static;
}

.fclms-app > .fclms-topbar::after,
.fclms-app--admin > .fclms-tabs--admin::after,
.fclms-subtabs::before {
	display: none;
}

/* ------------------------------------------------------ în ecran complet */
.fclms-app:fullscreen > .fclms-topbar,
.fclms-app:-webkit-full-screen > .fclms-topbar,
.fclms-app.is-faux-fullscreen > .fclms-topbar,
.fclms-app:fullscreen > .fclms-tabs--admin,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin {
	position: sticky;
	top: 0;
	z-index: 30;
}

.fclms-app:fullscreen .fclms-subtabs,
.fclms-app:-webkit-full-screen .fclms-subtabs,
.fclms-app.is-faux-fullscreen .fclms-subtabs {
	position: sticky;
	top: calc(var(--fc-topbar-h) + 11px);
	z-index: 25;
}

/* Fâșiile care astupă spațiul dintre bare există doar acolo unde e nevoie. */
.fclms-app:fullscreen > .fclms-topbar::after,
.fclms-app:-webkit-full-screen > .fclms-topbar::after,
.fclms-app.is-faux-fullscreen > .fclms-topbar::after,
.fclms-app:fullscreen .fclms-subtabs::before,
.fclms-app:-webkit-full-screen .fclms-subtabs::before,
.fclms-app.is-faux-fullscreen .fclms-subtabs::before {
	display: block;
}

/* Bara lipită de marginea de sus nu mai are nevoie de colțuri rotunjite sus. */
.fclms-app:fullscreen > .fclms-topbar,
.fclms-app:-webkit-full-screen > .fclms-topbar,
.fclms-app.is-faux-fullscreen > .fclms-topbar { margin-top: 0; }

@media (max-height: 520px) {
	.fclms-app:fullscreen > .fclms-topbar,
	.fclms-app:-webkit-full-screen > .fclms-topbar,
	.fclms-app.is-faux-fullscreen > .fclms-topbar,
	.fclms-app:fullscreen .fclms-subtabs,
	.fclms-app:-webkit-full-screen .fclms-subtabs,
	.fclms-app.is-faux-fullscreen .fclms-subtabs { position: static; }
}

/* ===========================================================================
   Ecran complet: antetul stă, conținutul se derulează
   Sticky depinde de containerul care derulează și de ce fac părinții din temă,
   deci nu e de încredere aici. Facem aplicația o coloană: bara și submeniul au
   înălțime fixă, iar zona de conținut este singura care derulează.
   =========================================================================== */

.fclms-app:fullscreen,
.fclms-app:-webkit-full-screen,
.fclms-app.is-faux-fullscreen {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	padding: 44px var(--fc-space-3) 0;
}

.fclms-app:fullscreen > .fclms-topbar,
.fclms-app:-webkit-full-screen > .fclms-topbar,
.fclms-app.is-faux-fullscreen > .fclms-topbar,
.fclms-app:fullscreen > .fclms-tabs--admin,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin,
.fclms-app:fullscreen > .fclms-vip-banner,
.fclms-app:-webkit-full-screen > .fclms-vip-banner,
.fclms-app.is-faux-fullscreen > .fclms-vip-banner {
	flex: none;
	position: static;
}

/* Zona care derulează: tot ce vine după bare. */
.fclms-app:fullscreen > .fclms-student,
.fclms-app:fullscreen > .fclms-view,
.fclms-app:fullscreen > .fclms-manager,
.fclms-app:fullscreen > .fclms-panel-wrap,
.fclms-app:-webkit-full-screen > .fclms-student,
.fclms-app:-webkit-full-screen > .fclms-view,
.fclms-app:-webkit-full-screen > .fclms-manager,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap,
.fclms-app.is-faux-fullscreen > .fclms-student,
.fclms-app.is-faux-fullscreen > .fclms-view,
.fclms-app.is-faux-fullscreen > .fclms-manager,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding-bottom: var(--fc-space-4);
}

/* Submeniul rămâne sus în interiorul zonei care derulează. */
.fclms-app:fullscreen .fclms-subtabs,
.fclms-app:-webkit-full-screen .fclms-subtabs,
.fclms-app.is-faux-fullscreen .fclms-subtabs {
	position: sticky;
	top: 0;
	z-index: 25;
	margin-top: 0;
	padding: 10px 0 12px;
	background: var(--fc-paper);
}

.fclms-app:fullscreen .fclms-subtabs::before,
.fclms-app:-webkit-full-screen .fclms-subtabs::before,
.fclms-app.is-faux-fullscreen .fclms-subtabs::before { display: block; }

@media (max-width: 640px) {
	.fclms-app:fullscreen,
	.fclms-app:-webkit-full-screen,
	.fclms-app.is-faux-fullscreen { padding: 36px 14px 0; }
}

/* ===========================================================================
   Bara de derulare din ecran complet
   Zona care derulează începe mai jos, ca bara de scroll să nu pornească lipită
   de meniu, și primește o bară subțire, rotunjită, fără șină vizibilă.
   =========================================================================== */

.fclms-app:fullscreen > .fclms-student,
.fclms-app:fullscreen > .fclms-view,
.fclms-app:fullscreen > .fclms-manager,
.fclms-app:fullscreen > .fclms-panel-wrap,
.fclms-app:-webkit-full-screen > .fclms-student,
.fclms-app:-webkit-full-screen > .fclms-view,
.fclms-app:-webkit-full-screen > .fclms-manager,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap,
.fclms-app.is-faux-fullscreen > .fclms-student,
.fclms-app.is-faux-fullscreen > .fclms-view,
.fclms-app.is-faux-fullscreen > .fclms-manager,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap {
	margin-top: 10px;
	padding-right: 10px;
	scrollbar-width: thin;
	scrollbar-color: rgba(22, 32, 43, .22) transparent;
}

.fclms-app:fullscreen > .fclms-student::-webkit-scrollbar,
.fclms-app:fullscreen > .fclms-view::-webkit-scrollbar,
.fclms-app:fullscreen > .fclms-manager::-webkit-scrollbar,
.fclms-app:fullscreen > .fclms-panel-wrap::-webkit-scrollbar,
.fclms-app:-webkit-full-screen > .fclms-student::-webkit-scrollbar,
.fclms-app:-webkit-full-screen > .fclms-view::-webkit-scrollbar,
.fclms-app:-webkit-full-screen > .fclms-manager::-webkit-scrollbar,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap::-webkit-scrollbar,
.fclms-app.is-faux-fullscreen > .fclms-student::-webkit-scrollbar,
.fclms-app.is-faux-fullscreen > .fclms-view::-webkit-scrollbar,
.fclms-app.is-faux-fullscreen > .fclms-manager::-webkit-scrollbar,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap::-webkit-scrollbar {
	width: 8px;
}

.fclms-app:fullscreen > .fclms-student::-webkit-scrollbar-track,
.fclms-app:fullscreen > .fclms-view::-webkit-scrollbar-track,
.fclms-app:fullscreen > .fclms-manager::-webkit-scrollbar-track,
.fclms-app:fullscreen > .fclms-panel-wrap::-webkit-scrollbar-track,
.fclms-app:-webkit-full-screen > .fclms-student::-webkit-scrollbar-track,
.fclms-app:-webkit-full-screen > .fclms-view::-webkit-scrollbar-track,
.fclms-app:-webkit-full-screen > .fclms-manager::-webkit-scrollbar-track,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap::-webkit-scrollbar-track,
.fclms-app.is-faux-fullscreen > .fclms-student::-webkit-scrollbar-track,
.fclms-app.is-faux-fullscreen > .fclms-view::-webkit-scrollbar-track,
.fclms-app.is-faux-fullscreen > .fclms-manager::-webkit-scrollbar-track,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap::-webkit-scrollbar-track {
	background: transparent;
}

.fclms-app:fullscreen > .fclms-student::-webkit-scrollbar-thumb,
.fclms-app:fullscreen > .fclms-view::-webkit-scrollbar-thumb,
.fclms-app:fullscreen > .fclms-manager::-webkit-scrollbar-thumb,
.fclms-app:fullscreen > .fclms-panel-wrap::-webkit-scrollbar-thumb,
.fclms-app:-webkit-full-screen > .fclms-student::-webkit-scrollbar-thumb,
.fclms-app:-webkit-full-screen > .fclms-view::-webkit-scrollbar-thumb,
.fclms-app:-webkit-full-screen > .fclms-manager::-webkit-scrollbar-thumb,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap::-webkit-scrollbar-thumb,
.fclms-app.is-faux-fullscreen > .fclms-student::-webkit-scrollbar-thumb,
.fclms-app.is-faux-fullscreen > .fclms-view::-webkit-scrollbar-thumb,
.fclms-app.is-faux-fullscreen > .fclms-manager::-webkit-scrollbar-thumb,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap::-webkit-scrollbar-thumb {
	background: rgba(22, 32, 43, .2);
	border-radius: 999px;
}

/* ===========================================================================
   Submeniul mutat deasupra zonei care derulează
   =========================================================================== */

.fclms-subtabs-host { flex: none; margin-bottom: 4px; }
.fclms-subtabs-host .fclms-subtabs {
	position: static;
	margin: 0;
	padding: 0 0 10px;
	background: transparent;
	box-shadow: none;
}
.fclms-subtabs-host .fclms-subtabs::before { display: none; }

/* Zona care derulează începe imediat sub submeniu. */
.fclms-app:fullscreen > .fclms-student,
.fclms-app:fullscreen > .fclms-view,
.fclms-app:fullscreen > .fclms-manager,
.fclms-app:fullscreen > .fclms-panel-wrap,
.fclms-app:-webkit-full-screen > .fclms-student,
.fclms-app:-webkit-full-screen > .fclms-view,
.fclms-app:-webkit-full-screen > .fclms-manager,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap,
.fclms-app.is-faux-fullscreen > .fclms-student,
.fclms-app.is-faux-fullscreen > .fclms-view,
.fclms-app.is-faux-fullscreen > .fclms-manager,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap {
	margin-top: 0;
}

/* ------------------------------------------------- așezarea în bara de sus */
.fclms-app > .fclms-topbar .fclms-tabs { flex: 1 1 auto; }

.fclms-app > .fclms-topbar .fclms-points {
	margin-left: auto;
	margin-right: 12px;
}

.fclms-app > .fclms-topbar .fclms-fs { margin-left: 0; }

/* ===========================================================================
   Ecran complet — revenire la varianta simplă
   Se derulează toată aplicația, fără bare fixate și fără bară de derulare
   vizibilă. Regulile de mai sus care încercau altceva sunt anulate aici.
   =========================================================================== */

.fclms-subtabs-host { display: none !important; }

.fclms-app:fullscreen,
.fclms-app:-webkit-full-screen,
.fclms-app.is-faux-fullscreen {
	display: block;
	height: 100%;
	overflow-y: auto;
	overflow-x: hidden;
	padding: 44px var(--fc-space-3) var(--fc-space-4);

	/* Bara de derulare rămâne funcțională, dar nu se mai vede. */
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.fclms-app:fullscreen::-webkit-scrollbar,
.fclms-app:-webkit-full-screen::-webkit-scrollbar,
.fclms-app.is-faux-fullscreen::-webkit-scrollbar {
	width: 0;
	height: 0;
	display: none;
}

/* Nimic nu mai rămâne fixat și nimic nu mai derulează separat — afară de
   straturile plutitoare, care sunt fixate tocmai fiindcă plutesc. */
.fclms-app:fullscreen > *:not(.fclms-float),
.fclms-app:-webkit-full-screen > *:not(.fclms-float),
.fclms-app.is-faux-fullscreen > *:not(.fclms-float) {
	position: static;
	overflow: visible;
	flex: none;
	min-height: 0;
}

.fclms-app:fullscreen > .fclms-student,
.fclms-app:fullscreen > .fclms-view,
.fclms-app:fullscreen > .fclms-manager,
.fclms-app:fullscreen > .fclms-panel-wrap,
.fclms-app:-webkit-full-screen > .fclms-student,
.fclms-app:-webkit-full-screen > .fclms-view,
.fclms-app:-webkit-full-screen > .fclms-manager,
.fclms-app:-webkit-full-screen > .fclms-panel-wrap,
.fclms-app.is-faux-fullscreen > .fclms-student,
.fclms-app.is-faux-fullscreen > .fclms-view,
.fclms-app.is-faux-fullscreen > .fclms-manager,
.fclms-app.is-faux-fullscreen > .fclms-panel-wrap {
	margin-top: 0;
	padding-right: 0;
	overflow-y: visible;
	scrollbar-width: auto;
}

.fclms-app:fullscreen .fclms-subtabs,
.fclms-app:-webkit-full-screen .fclms-subtabs,
.fclms-app.is-faux-fullscreen .fclms-subtabs {
	position: static;
	background: transparent;
	box-shadow: none;
	padding: 0;
	margin-bottom: 18px;
}

.fclms-app:fullscreen .fclms-subtabs::before,
.fclms-app:-webkit-full-screen .fclms-subtabs::before,
.fclms-app.is-faux-fullscreen .fclms-subtabs::before { display: none; }

@media (max-width: 640px) {
	.fclms-app:fullscreen,
	.fclms-app:-webkit-full-screen,
	.fclms-app.is-faux-fullscreen { padding: 36px 14px var(--fc-space-3); }
}

/* ===========================================================================
   Bara de sus în ecran complet: geometrie explicită
   Regula generală de resetare din ecran complet anula înălțimea minimă a barei,
   iar marginile moștenite de la filele din interior o făceau mai înaltă decât
   conținutul ei. Le fixăm aici, o singură dată, pentru toate variantele.
   =========================================================================== */

.fclms-app:fullscreen > .fclms-topbar,
.fclms-app:-webkit-full-screen > .fclms-topbar,
.fclms-app.is-faux-fullscreen > .fclms-topbar,
.fclms-app:fullscreen > .fclms-tabs--admin,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin {
	display: flex !important;
	align-items: center !important;
	gap: 14px;
	min-height: var(--fc-topbar-h) !important;
	padding: 10px 18px !important;
	margin: 0 auto 18px !important;
}

.fclms-app:fullscreen > .fclms-topbar > *,
.fclms-app:-webkit-full-screen > .fclms-topbar > *,
.fclms-app.is-faux-fullscreen > .fclms-topbar > *,
.fclms-app:fullscreen > .fclms-tabs--admin > *,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin > *,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin > * {
	align-self: center !important;
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

.fclms-app:fullscreen > .fclms-topbar .fclms-tabs,
.fclms-app:-webkit-full-screen > .fclms-topbar .fclms-tabs,
.fclms-app.is-faux-fullscreen > .fclms-topbar .fclms-tabs {
	margin: 0 !important;
	padding: 0 !important;
	align-items: center;
	border: 0;
}

/*
 * Grupul din dreapta începe la clopoțel, nu la monede. Altfel, în ecran
 * complet, clopoțelul rămânea singur în mijlocul barei.
 */
.fclms-app:fullscreen > .fclms-topbar .fclms-bellwrap,
.fclms-app:-webkit-full-screen > .fclms-topbar .fclms-bellwrap,
.fclms-app.is-faux-fullscreen > .fclms-topbar .fclms-bellwrap {
	margin-left: auto !important;
}

.fclms-app:fullscreen > .fclms-topbar .fclms-bellwrap ~ .fclms-points,
.fclms-app:-webkit-full-screen > .fclms-topbar .fclms-bellwrap ~ .fclms-points,
.fclms-app.is-faux-fullscreen > .fclms-topbar .fclms-bellwrap ~ .fclms-points {
	margin-left: 0 !important;
	margin-right: 12px !important;
}

/* Fără clopoțel, monedele rămân ele cele care împing grupul la dreapta. */
.fclms-app:fullscreen > .fclms-topbar .fclms-points,
.fclms-app:-webkit-full-screen > .fclms-topbar .fclms-points,
.fclms-app.is-faux-fullscreen > .fclms-topbar .fclms-points {
	margin-left: auto;
	margin-right: 12px;
}

/* Aceeași aliniere și în pagina obișnuită. */
.fclms-app > .fclms-topbar,
.fclms-app--admin > .fclms-tabs--admin {
	padding: 10px 18px;
	align-items: center;
}
.fclms-app > .fclms-topbar > *,
.fclms-app--admin > .fclms-tabs--admin > * {
	margin-top: 0;
	margin-bottom: 0;
}
.fclms-app > .fclms-topbar .fclms-tabs { margin: 0; padding: 0; border: 0; }

/* Butonul de ecran complet, în bara de navigație din administrare. */
.fclms-app--admin > .fclms-tabs--admin .fclms-fs { margin-left: auto; }
/* Și bara din administrare se rupe în rânduri, din același motiv: o filă
   ascunsă la dreapta nu se caută, se pierde. */
.fclms-app--admin > .fclms-tabs--admin { flex-wrap: wrap; overflow-x: visible; row-gap: 6px; }
.fclms-app--admin > .fclms-tabs--admin .fclms-tab { flex: none; }

@media (max-width: 900px) {
	.fclms-app--admin > .fclms-tabs--admin { flex-wrap: wrap; overflow-x: visible; }
	.fclms-app--admin > .fclms-tabs--admin .fclms-fs { margin-left: auto; }
}

/* ===========================================================================
   Ferestre și notificări în ecran complet
   Regula care resetează copiii aplicației în ecran complet le-ar fi făcut
   statice, deci ar fi apărut în mijlocul conținutului. Straturile sunt scoase
   explicit din acea resetare.
   =========================================================================== */

.fclms-app:fullscreen > .fclms-overlay,
.fclms-app:-webkit-full-screen > .fclms-overlay,
.fclms-app.is-faux-fullscreen > .fclms-overlay {
	position: fixed !important;
	overflow: auto !important;
	flex: none !important;
	max-width: none !important;
	margin: 0 !important;
}

.fclms-app:fullscreen > .fclms-modal-back,
.fclms-app:-webkit-full-screen > .fclms-modal-back,
.fclms-app.is-faux-fullscreen > .fclms-modal-back {
	inset: 0 !important;
	z-index: 100000;
	padding: 40px 16px;
}

/* Notificarea rămâne jos, centrată, indiferent de modul de afișare. */
.fclms-app:fullscreen > .fclms-notice.fclms-overlay,
.fclms-app:-webkit-full-screen > .fclms-notice.fclms-overlay,
.fclms-app.is-faux-fullscreen > .fclms-notice.fclms-overlay {
	inset: auto auto 24px 50%;
	transform: translateX(-50%);
	z-index: 100001;
	width: auto;
}

/* Conținutul ferestrei se poate derula când depășește înălțimea ecranului. */
.fclms-modal { max-height: calc(100vh - 80px); overflow-y: auto; }

/* Butonul de ecran complet din administrare arată la fel ca la cursanți. */
.fclms-app--admin > .fclms-tabs--admin .fclms-fs,
.fclms-app:fullscreen > .fclms-tabs--admin .fclms-fs,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin .fclms-fs,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin .fclms-fs {
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
	border-color: transparent;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .18);
	margin-left: auto;
	flex: none;
}

.fclms-app--admin > .fclms-tabs--admin .fclms-fs:hover,
.fclms-app:fullscreen > .fclms-tabs--admin .fclms-fs:hover,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin .fclms-fs:hover,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin .fclms-fs:hover {
	box-shadow: 0 2px 8px rgba(22, 32, 43, .24);
}

/* ===========================================================================
   Culoarea filelor din bara principală
   Filele inactive erau afișate la 78% opacitate, ceea ce amesteca albul cu
   fundalul și îl transforma în gri-albăstrui. Culoarea rămâne acum cea aleasă,
   iar distincția dintre activ și inactiv o face fundalul, nu transparența.
   =========================================================================== */

.fclms-app > .fclms-topbar .fclms-tab,
.fclms-app--admin > .fclms-tabs--admin .fclms-tab,
.fclms-app:fullscreen > .fclms-topbar .fclms-tab,
.fclms-app:-webkit-full-screen > .fclms-topbar .fclms-tab,
.fclms-app.is-faux-fullscreen > .fclms-topbar .fclms-tab,
.fclms-app:fullscreen > .fclms-tabs--admin .fclms-tab,
.fclms-app:-webkit-full-screen > .fclms-tabs--admin .fclms-tab,
.fclms-app.is-faux-fullscreen > .fclms-tabs--admin .fclms-tab {
	opacity: 1;
	color: var(--fc-topbar-text, var(--fc-ink)) !important;
}

.fclms-app > .fclms-topbar .fclms-tab:not(.is-active):hover,
.fclms-app--admin > .fclms-tabs--admin .fclms-tab:not(.is-active):hover {
	background-color: rgba(255, 255, 255, .16) !important;
	opacity: 1;
}

/* Pictogramele nu mai sunt estompate odată cu textul. */
.fclms-app > .fclms-topbar .fclms-tab .fclms-tab__icon,
.fclms-app--admin > .fclms-tabs--admin .fclms-tab .fclms-tab__icon { opacity: 1; }

/* ===========================================================================
   Exerciții: scriere, perechi, ordonare
   =========================================================================== */

.fclms-exercise { margin-top: 20px; display: grid; gap: 10px; }

.fclms-typing {
	width: 100%; font-family: inherit; font-size: 17px;
	padding: 14px 16px; border: 1px solid var(--fc-line); border-radius: 12px;
	background: #FBFCFD; color: var(--fc-ink);
}
.fclms-typing:focus { outline: none; background: var(--fc-surface); box-shadow: var(--fc-ring); }

.fclms-matchrow { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.fclms-matchrow__left { flex: 1; min-width: 140px; font-size: 15.5px; font-weight: 600; }
.fclms-matchrow select {
	flex: 1; min-width: 160px; font-family: inherit; font-size: 14.5px;
	padding: 10px 12px; border: 1px solid var(--fc-line); border-radius: 10px; background: #FBFCFD;
}

.fclms-orderlist { display: grid; gap: 8px; }
.fclms-orderitem {
	display: flex; align-items: center; gap: 10px;
	padding: 12px 14px; border: 1px solid var(--fc-line); border-radius: 12px;
	background: var(--fc-surface); box-shadow: var(--fc-shadow);
}
.fclms-orderitem__text { flex: 1; font-size: 15px; }
.fclms-orderitem .fclms-icon-btn { flex: none; width: 34px; height: 34px; }

/* Editorul de perechi din administrare. */
.fclms-pair { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.fclms-pair input {
	flex: 1; font-family: inherit; font-size: 14px;
	padding: 9px 12px; border: 1px solid var(--fc-line); border-radius: 10px; background: #FBFCFD;
}
.fclms-pair span { color: var(--fc-muted); flex: none; }
.fclms-exercise-editor { border-top: 1px solid var(--fc-line); padding-top: 16px; }

@media (max-width: 640px) {
	.fclms-matchrow { flex-direction: column; align-items: stretch; gap: 6px; }
}

/* ===========================================================================
   Exerciții pe text: goluri, marcare, banc de cuvinte, adevărat/fals
   =========================================================================== */

.fclms-cloze { font-size: 17px; line-height: 2.4; margin: 0; }

.fclms-blank {
	font-family: inherit; font-size: 16px;
	padding: 6px 10px; margin: 0 3px;
	border: 0; border-bottom: 2px solid var(--fc-primary); border-radius: 6px 6px 0 0;
	background: var(--fc-tint); color: var(--fc-ink);
}
.fclms-blank:focus { outline: none; background: var(--fc-surface); box-shadow: var(--fc-ring); }

.fclms-blankselect {
	font-family: inherit; font-size: 15px;
	padding: 6px 10px; margin: 0 3px;
	border: 1px solid var(--fc-line); border-radius: 8px; background: var(--fc-tint);
}

/* Marcarea cuvintelor */
.fclms-marking { font-size: 17px; line-height: 2.2; margin: 0; }
.fclms-word {
	display: inline-block; padding: 2px 5px; border-radius: 6px;
	cursor: pointer; transition: background-color .12s ease, color .12s ease;
}
.fclms-word:hover { background: rgba(var(--fc-primary-rgb), .12); }
.fclms-word.is-marked { background: var(--fc-accent); color: #1E2A38; font-weight: 700; }

/* Bancul de cuvinte */
.fclms-slot,
.fclms-app .fclms-slot {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 96px; min-height: 34px; padding: 4px 12px; margin: 0 4px;
	font-family: inherit; font-size: 16px;
	border: 2px dashed var(--fc-line); border-radius: 10px;
	background: var(--fc-paper); color: var(--fc-ink); cursor: pointer;
	vertical-align: middle;
}
.fclms-slot.is-filled { border-style: solid; border-color: var(--fc-primary); background: var(--fc-tint); font-weight: 600; }

.fclms-wordbank { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.fclms-bankword,
.fclms-app .fclms-bankword {
	font-family: inherit; font-size: 15px; padding: 9px 14px;
	border: 1px solid var(--fc-line); border-radius: 999px;
	background: var(--fc-surface); color: var(--fc-ink); cursor: pointer;
	box-shadow: var(--fc-shadow); transition: border-color .12s ease, transform .06s ease;
}
.fclms-bankword:hover { border-color: var(--fc-primary); }
.fclms-bankword.is-armed { border-color: var(--fc-primary); background: var(--fc-tint); transform: translateY(-1px); }

.fclms-tf { display: grid; gap: 8px; }

/* --------------------------------------- recapitularea de pe verso */
.fclms-exreview + .fclms-exreview { margin-top: 18px; }

.fclms-exrows { list-style: none; padding: 0; margin: 0 0 14px; }
.fclms-exrows__row {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px;
	padding: 8px 12px; border-radius: 9px; margin-bottom: 6px;
	font-size: 15px; background: #F0F3F7;
}
.fclms-exrows__row.is-ok { background: var(--fc-success-soft); }
.fclms-exrows__row.is-no { background: var(--fc-danger-soft); }
.fclms-exrows__row b { font-weight: 700; }
.fclms-exrows__given { font-weight: 700; }
.fclms-exrows__row.is-no .fclms-exrows__given { color: var(--fc-danger); text-decoration: line-through; }
.fclms-exrows__row.is-ok .fclms-exrows__given { color: var(--fc-success); }
.fclms-exrows__fix { color: var(--fc-success); font-weight: 700; }
.fclms-exrows__fix::before { content: '→ '; opacity: .6; }

.fclms-exorder { margin: 0 0 14px; padding-left: 22px; }
.fclms-exorder li { padding: 4px 0; font-size: 15px; }

.fclms-exsentence { font-size: 16px; line-height: 2.2; margin: 0 0 14px; }

.fclms-exblank {
	display: inline-flex; align-items: baseline; gap: 6px;
	padding: 2px 9px; margin: 0 3px; border-radius: 8px;
	background: #F0F3F7; vertical-align: baseline;
}
.fclms-exblank.is-ok { background: var(--fc-success-soft); }
.fclms-exblank.is-no { background: var(--fc-danger-soft); }
.fclms-exblank__given { font-weight: 700; }
.fclms-exblank.is-ok .fclms-exblank__given { color: var(--fc-success); }
.fclms-exblank.is-no .fclms-exblank__given { color: var(--fc-danger); text-decoration: line-through; }
.fclms-exblank__fix { color: var(--fc-success); font-weight: 700; }

.fclms-exword { display: inline-block; padding: 2px 6px; border-radius: 6px; }
.fclms-exword.is-ok { background: var(--fc-success-soft); color: var(--fc-success); font-weight: 700; }
.fclms-exword.is-no { background: var(--fc-danger-soft); color: var(--fc-danger); text-decoration: line-through; }
/* Cuvântul cerut, dar nemarcat: nici greșit, nici luat — doar scăpat. */
.fclms-exword.is-missed,
.fclms-exword.is-solution {
	background: var(--fc-accent); color: #1E2A38; font-weight: 700;
}

@media (prefers-reduced-motion: reduce) {
	.fclms-word, .fclms-bankword { transition: none; }
	.fclms-bankword.is-armed { transform: none; }
}

/* --------------------------------------------- selectorul de exerciții */
.fclms-picker {
	display: flex; align-items: flex-end; gap: 12px;
	margin-top: 18px; padding-top: 18px;
	border-top: 1px solid var(--fc-line);
}
.fclms-picker select {
	font-family: inherit; font-size: 14.5px; width: 100%;
	padding: 10px 12px; border: 1px solid var(--fc-line); border-radius: 10px; background: #FBFCFD;
}

.fclms-piece {
	padding: 16px 18px !important;
	margin: 14px 0 !important;
	border: 1px solid var(--fc-line);
	border-radius: 12px;
	background: var(--fc-surface);
	box-shadow: var(--fc-shadow);
}
.fclms-piece__head {
	display: flex; align-items: center; gap: 12px;
	margin-bottom: 14px; padding-bottom: 12px;
	border-bottom: 1px solid var(--fc-line);
}
.fclms-piece__head strong { flex: 1; font-size: 15px; letter-spacing: -.01em; }

@media (max-width: 640px) {
	.fclms-picker { flex-direction: column; align-items: stretch; }
}

/* Numărul personalizat și cronometrul sesiunii. */
.fclms-setup__custom { display: flex; gap: 18px; flex-wrap: wrap; }
.fclms-setup__custom .fclms-field { margin-bottom: 0; }

.fclms-timer {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 6px 14px; border-radius: 999px;
	background: var(--fc-tint); color: var(--fc-primary);
	font-size: 14px; font-weight: 800; letter-spacing: -.01em;
	font-variant-numeric: tabular-nums;
}
.fclms-timer.is-low { background: rgba(192, 57, 43, .12); color: var(--fc-danger); }

/* Numărul propriu, ca ultimă variantă în rândul de pastile. */
.fclms-app .fclms-pill--input {
	width: 110px;
	text-align: center;
	font-family: inherit;
	font-weight: 600;
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
	border: 1px solid var(--fc-line);
}
.fclms-app .fclms-pill--input:focus {
	outline: none;
	border-color: var(--fc-primary);
	box-shadow: var(--fc-ring);
}
.fclms-app .fclms-pill--input::placeholder { color: var(--fc-muted); font-weight: 400; }

/* Atelierul cursantului */
.fclms-studio__intro { border-left: 3px solid var(--fc-primary); }
.fclms-set-card__meta .fclms-premium { margin-left: 6px; }
.fclms-premium {
	display: inline-flex; align-items: center; gap: 4px;
	padding: 2px 8px; border-radius: 999px;
	background: rgba(var(--fc-accent-rgb), .9); color: #1E2A38;
	font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
}

/* Pastilele de culoare din editor: culoarea stă pe buton, nu pe un copil. */
.fclms-app .fclms-swatch,
.fclms-modal .fclms-swatch {
	background-color: var(--fclms-swatch, #1E2A38) !important;
	width: 26px !important;
	min-width: 26px;
	height: 26px;
	min-height: 26px !important;
	padding: 0 !important;
	border-radius: 50%;
	border: 1px solid rgba(22, 32, 43, .2) !important;
	box-shadow: none !important;
	background-image: none !important;
}
.fclms-app .fclms-swatch:hover,
.fclms-modal .fclms-swatch:hover {
	transform: scale(1.12);
	border-color: rgba(22, 32, 43, .4) !important;
}

@media (prefers-reduced-motion: reduce) {
	.fclms-app .fclms-swatch:hover { transform: none; }
}

/*
 * Pastilele de evidențiere.
 *
 * Poartă un „A” negru pe fundalul culorii, ca să se citească dintr-o privire
 * ce fac: colorează fundalul, nu litera. Fără el s-ar fi deosebit de cele de
 * text numai prin nuanță — iar cine se grăbește ar fi apăsat greșit și ar fi
 * dat cu roșu peste text în loc să-l sublinieze cu galben.
 *
 * Sunt pătrate cu colțuri rotunjite, nu rotunde: forma spune „fundal”, unde
 * cercul spunea „culoare”.
 */
.fclms-app .fclms-swatch--hilite,
.fclms-modal .fclms-swatch--hilite {
	border-radius: 6px;
	color: #16202B !important;
	font-weight: 800;
	font-size: 13px !important;
	line-height: 24px;
}

/* Evidențierea trebuie să se vadă și în editor, și pe cartonaș. */
.fclms-rte__area mark, .fclms-flashcard__content mark { padding: 0 2px; border-radius: 3px; }

/* Mutarea unui set primit, sub cardul lui. */
.fclms-shared-move { margin: -8px 0 8px; text-align: right; }

/* Cardul unui set primit, cu butoanele lui dedesubt. */
.fclms-setwrap { display: flex; flex-direction: column; }
.fclms-shared-move {
	margin: 8px 0 0;
	display: flex; flex-wrap: wrap; gap: 6px; justify-content: center;
}

/* Navigarea între paginile unei liste lungi. */
.fclms-pager {
	display: flex; align-items: center; justify-content: center;
	flex-wrap: wrap; gap: 6px;
	margin: 20px 0 4px;
}
.fclms-app .fclms-pager__btn {
	min-width: 38px; height: 38px;
	padding: 0 10px;
	display: inline-flex; align-items: center; justify-content: center;
	font-family: inherit; font-size: 15px; line-height: 1;
	border: 1px solid var(--fc-line);
	border-radius: 10px;
	background-color: var(--fc-surface) !important;
	color: var(--fc-muted) !important;
	cursor: pointer;
	transition: border-color .15s ease, color .15s ease, background-color .15s ease;
}
.fclms-app .fclms-pager__btn:hover:not(:disabled) { border-color: var(--fc-primary); color: var(--fc-primary) !important; }
.fclms-app .fclms-pager__btn.is-on {
	border-color: var(--fc-primary);
	background-color: var(--fc-tint) !important;
	color: var(--fc-primary) !important;
	font-weight: 700;
}
.fclms-app .fclms-pager__btn:disabled { opacity: .4; cursor: default; }
.fclms-app .fclms-pager__btn:focus-visible { outline: none; box-shadow: var(--fc-ring); }
.fclms-pager__gap { color: var(--fc-muted); padding: 0 2px; }
.fclms-pager__count { color: var(--fc-muted); font-size: 14px; margin-left: 8px; }

@media (max-width: 520px) {
	.fclms-pager__count { width: 100%; margin: 4px 0 0; text-align: center; }
}

/*
 * Rândul de deasupra listei: ordonarea la stânga butoanelor, cu un spațiu
 * ceva mai lat între ele, ca selectorul să nu pară un buton în plus.
 */
.fclms-listbar { gap: 10px; flex-wrap: wrap; row-gap: 10px; }
.fclms-listbar .fclms-sortpick { margin-right: 10px; }

.fclms-app .fclms-listbar .fclms-sortpick select {
	font-size: 14px;
	padding: 9px 12px;
	cursor: pointer;
}
.fclms-app .fclms-listbar .fclms-sortpick select:focus-visible { outline: none; box-shadow: var(--fc-ring); }
.fclms-listbar .fclms-sortpick > span { font-size: 14px; }

@media (max-width: 640px) {
	/* Pe telefon selectorul își ia rândul lui, întreg. */
	.fclms-listbar .fclms-sortpick { width: 100%; margin: 0 0 4px; justify-content: flex-end; }
	.fclms-listbar .fclms-sortpick select { flex: 1; max-width: 260px; }
}

/* Rândul explicativ al modului de editare, chiar sub butoane. */
.fclms-edit-hint { margin: -6px 0 14px; font-size: 14px; }

/* Ieșirea din partajare rămâne discretă până e atinsă: nu e o acțiune de zi cu zi. */
.fclms-app .fclms-btn--quit { color: var(--fc-danger); }
.fclms-app .fclms-btn--quit:hover {
	background: var(--fc-danger-soft);
	color: var(--fc-danger);
}

/* Fața însemnului, când n-are copertă: aceeași culoare generată ca pe cardurile de studiu. */
.fclms-mark__face {
	background-size: cover;
	background-position: center;
}

/* ================================================= ANUNȚURI ȘI DISCUȚII */

/* Clopoțelul stă în antet, lângă puncte, cu panoul lui ancorat dedesubt. */
.fclms-bellwrap { position: relative; display: inline-flex; }

.fclms-app .fclms-bell {
	position: relative;
	width: 42px; height: 42px;
	padding: 0;
	display: inline-flex; align-items: center; justify-content: center;
	line-height: 1;
	border: 1px solid transparent;
	border-radius: 999px;
	background-color: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
	cursor: pointer;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .18);
	transition: transform .15s ease, box-shadow .15s ease;
}
.fclms-app .fclms-bell:hover { transform: translateY(-1px); box-shadow: var(--fc-shadow-lift); }
.fclms-app .fclms-bell:focus-visible { outline: none; box-shadow: var(--fc-ring); }
.fclms-bell__icon { display: block; width: 20px; height: 20px; }

/* Clopoțelul sună când sunt anunțuri noi: o mișcare scurtă, o singură dată. */
.fclms-app .fclms-bell.has-unread .fclms-bell__icon { animation: fclms-bell-ring .9s ease; transform-origin: top center; }

@keyframes fclms-bell-ring {
	0%, 100% { transform: rotate(0); }
	15% { transform: rotate(12deg); }
	30% { transform: rotate(-10deg); }
	45% { transform: rotate(7deg); }
	60% { transform: rotate(-4deg); }
}

.fclms-bell__count {
	position: absolute; top: -5px; right: -5px;
	min-width: 20px; height: 20px; padding: 0 5px;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 11px; font-weight: 700; line-height: 1;
	color: #fff; background: var(--fc-danger);
	border: 2px solid var(--fc-surface);
	border-radius: 999px;
	box-sizing: content-box;
}

/* Atributul „hidden” trebuie să învingă afișarea de mai sus. */
.fclms-bell__count[hidden] { display: none; }

/* Clopoțelul, punctele și ecranul complet stau împreună, la dreapta. */
.fclms-app--student > .fclms-topbar .fclms-bellwrap { margin-left: auto; }
.fclms-app--student > .fclms-topbar .fclms-bellwrap + .fclms-points { margin-left: 0; }

/* Lista de anunțuri, pe pagina ei: rânduri late, despărțite de linii subțiri. */
.fclms-notiflist { list-style: none; margin: 0; padding: 0; }

.fclms-notif {
	display: flex; flex-direction: column; gap: 3px;
	padding: 14px 4px;
	border-bottom: 1px solid var(--fc-line);
	cursor: default;
}
.fclms-notif:last-child { border-bottom: none; }
.fclms-notif.is-unread {
	background: var(--fc-tint);
	border-radius: 10px;
	padding-left: 12px; padding-right: 12px;
}
.fclms-notif__text { display: block; }
.fclms-notif.is-unread .fclms-notif__text { font-weight: 700; }
.fclms-notif__text { font-size: 14px; line-height: 1.5; color: var(--fc-ink); }
.fclms-notif__time { font-size: 12px; color: var(--fc-muted); }

/* Preferințele: un rând per eveniment, cu două comutatoare. */
.fclms-prefs__col { width: 120px; text-align: center; }
.fclms-prefs__hint { display: block; font-size: 12px; color: var(--fc-muted); margin-top: 2px; }

.fclms-switch { display: inline-flex; align-items: center; cursor: pointer; }
.fclms-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.fclms-switch span {
	width: 44px; height: 24px;
	border-radius: 999px;
	background: var(--fc-line);
	position: relative;
	transition: background .15s ease;
}
.fclms-switch span::after {
	content: ''; position: absolute; top: 3px; left: 3px;
	width: 18px; height: 18px; border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 2px rgba(22, 32, 43, .25);
	transition: transform .15s ease;
}
.fclms-switch input:checked + span { background: var(--fc-primary); }
.fclms-switch input:checked + span::after { transform: translateX(20px); }
.fclms-switch input:focus-visible + span { box-shadow: var(--fc-ring); }

/*
 * LISTA DISCUȚIILOR
 *
 * O singură ramă, cu rândurile despărțite de linii subțiri — ca la anunțuri și
 * notificări, celelalte două rubrici ale Mesajelor. Erau, până acum, cartonașe
 * de sine stătătoare: la un singur prieten ieșea o casetă mare și goală, iar la
 * zece, un teanc de chenare fără capăt.
 *
 * Rândul e strâns, cât să încapă un chip și un nume, fiindcă el nu e locul unde
 * se citește ceva: e ușa către discuție.
 */
.fclms-threads {
	border: 1px solid var(--fc-line); border-radius: 14px; overflow: hidden;
	background: var(--fc-surface);
}

.fclms-app .fclms-thread {
	width: 100%;
	display: flex; align-items: center; gap: 12px;
	padding: 12px 16px;
	text-align: left; font-family: inherit; cursor: pointer;
	background: none; border: 0; border-bottom: 1px solid var(--fc-line);
	color: inherit;
}
.fclms-app .fclms-thread:last-child { border-bottom: none; }
.fclms-app .fclms-thread:hover { background: var(--fc-paper); }
.fclms-app .fclms-thread:focus-visible { outline: none; box-shadow: var(--fc-ring); position: relative; z-index: 1; }

.fclms-thread__face {
	width: 38px; height: 38px; border-radius: 50%; flex: none;
	object-fit: cover; border: 1px solid var(--fc-line); background: var(--fc-paper);
}

.fclms-thread__main { flex: 1; min-width: 0; }
.fclms-thread__name {
	display: block; min-width: 0;
	font-size: 15px; font-weight: 700;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* Numele adevărat, lângă pseudonim: aceeași linie, dar mai mic și mai șters. */
.fclms-thread__real { margin-left: 6px; font-weight: 500; font-size: 13px; color: var(--fc-muted); }

.fclms-thread__time { flex: none; font-size: 12px; color: var(--fc-muted); white-space: nowrap; }

/* Săgeata spune că rândul se deschide. Se stinge cu totul până la trecerea
   cursorului: e o făgăduință, nu o informație. */
.fclms-thread__go {
	flex: none; font-size: 20px; line-height: 1; color: var(--fc-line);
	transition: color .15s ease, transform .15s ease;
}
.fclms-app .fclms-thread:hover .fclms-thread__go { color: var(--fc-primary); transform: translateX(2px); }

/* Discuția cu mesaje necitite se îngroașă și primește o dungă la margine:
   se vede din capul listei care ușă bate. */
.fclms-app .fclms-thread.is-fresh { box-shadow: inset 3px 0 0 var(--fc-accent); }
.fclms-app .fclms-thread.is-fresh .fclms-thread__name { font-weight: 800; }

@media (max-width: 640px) {
	.fclms-thread__real { display: none; }
	.fclms-app .fclms-thread { padding: 12px; gap: 10px; }
}

/* Discuția cu un prieten: bulele curg de sus în jos, ale tale pe dreapta.
 *
 * Numele are un sufix fiindcă `.fclms-chat` era folosit și de firul de suport,
 * unde înseamnă cu totul altceva: acolo e învelișul întregii pagini — antet,
 * cartonaș, mesaje, casetă de scris — nu panoul de mesaje. Regula de aici
 * venind mai jos în fișier, o bătea pe aceea, iar firul de suport se trezea
 * strâns într-o casetă de 58% din ecran, cu bară de derulare peste tot.
 */
.fclms-chat--stream {
	display: flex; flex-direction: column; gap: 2px;
	max-height: 58vh; overflow-y: auto;
	padding: 18px 16px;
	background: var(--fc-paper);
	border: 1px solid var(--fc-line);
	border-radius: var(--fc-radius);
	scroll-behavior: smooth;
	/* Bara de derulare subțire: firul e miezul paginii, nu o listă de setări. */
	scrollbar-width: thin;
}
.fclms-chat--stream::-webkit-scrollbar { width: 8px; }
.fclms-chat--stream::-webkit-scrollbar-thumb {
	background: rgba(var(--fc-primary-rgb), .18); border-radius: 999px;
}
.fclms-chat__empty { margin: 22px 0; text-align: center; }

/*
 * SEMNUL ZILEI
 *
 * O pastilă pe mijloc, acolo unde se schimbă ziua. Firul ține luni întregi,
 * iar ora de la coada bulei spune „21:40” fără să spună din ce zi; ochiul
 * găsește acum ziua dintr-o derulare, nu citind ceasuri.
 */
.fclms-daymark {
	display: flex; align-items: center; justify-content: center;
	margin: 16px 0 10px;
}
.fclms-daymark time {
	padding: 4px 12px; border-radius: 999px;
	background: var(--fc-surface); border: 1px solid var(--fc-line);
	font-size: 11.5px; font-weight: 700; letter-spacing: .02em;
	color: var(--fc-muted);
}
.fclms-daymark:first-child { margin-top: 0; }

/*
 * Un rând de discuție: poza într-o parte, bula în cealaltă.
 *
 * Poza stă la ULTIMUL mesaj al unui grup, nu la primul. Pare o nimica toată,
 * dar bulele sunt aliniate la bază: o poză pusă sus, lângă primul mesaj, ar
 * fi plutit departe de gura din care iese vorba. Jos, lângă ultimul rând
 * scris, stă exact acolo unde se termină luarea de cuvânt.
 */
.fclms-line { display: flex; align-items: flex-end; gap: 8px; }
.fclms-line.is-mine { flex-direction: row-reverse; }
.fclms-line + .fclms-line.is-first { margin-top: 10px; }

.fclms-line__face { flex: none; width: 32px; height: 32px; }
.fclms-line__face img {
	width: 32px; height: 32px; border-radius: 50%; object-fit: cover;
	background: var(--fc-surface);
	box-shadow: 0 2px 6px rgba(22, 32, 43, .14);
	display: block;
}

/*
 * BULELE
 *
 * Ale mele sunt pline, în culoarea casei, cu scris alb; ale celuilalt sunt
 * albe, cu o umbră abia simțită în loc de chenar. Așa se deosebesc dintr-o
 * privire, fără să citești pe ce parte sunt.
 *
 * Înainte, ale mele erau o tentă palidă cu chenar închis de jur împrejur —
 * felul în care se desenau bulele acum zece ani, când umbrele erau scumpe și
 * chenarele ieftine. Se vedea, dar se citea ca un câmp de formular.
 *
 * Colțul ascuțit stă numai la ultima bulă a unui grup: acolo se termină
 * vorba. Restul sunt rotunde de jur împrejur, ca un șir neîntrerupt.
 */
.fclms-bubble {
	position: relative;
	max-width: min(72%, 460px);
	padding: 9px 14px 7px;
	border-radius: 18px;
	background: var(--fc-surface);
	box-shadow: 0 1px 2px rgba(22, 32, 43, .07), 0 3px 10px -6px rgba(22, 32, 43, .18);
}
.fclms-line.is-last:not(.is-mine) .fclms-bubble { border-bottom-left-radius: 6px; }

.fclms-bubble.is-mine {
	background: var(--fc-primary);
	color: #fff;
	box-shadow: 0 1px 2px rgba(var(--fc-primary-rgb), .25),
		0 6px 16px -8px rgba(var(--fc-primary-rgb), .55);
}
.fclms-line.is-last.is-mine .fclms-bubble { border-bottom-right-radius: 6px; }

.fclms-bubble__text { font-size: 15px; line-height: 1.45; word-break: break-word; }

/* Ora stă la coada textului, nu pe rândul ei: bula rămâne strânsă. Pe fundal
   plin se scrie cu alb subțiat, nu cu cenușiul foii, care acolo dispare. */
.fclms-bubble__time {
	margin-left: 10px; font-size: 10.5px; white-space: nowrap;
	color: var(--fc-muted); float: right; padding-top: 6px;
	font-variant-numeric: tabular-nums;
}
.fclms-bubble.is-mine .fclms-bubble__time { color: rgba(255, 255, 255, .72); }

.fclms-app .fclms-bubble__drop {
	position: absolute; top: -6px; left: -8px;
	width: 22px; height: 22px; padding: 0;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 14px; line-height: 1;
	border: 1px solid var(--fc-line); border-radius: 50%;
	background: var(--fc-surface); cursor: pointer;
	color: var(--fc-muted);
	opacity: 0; transition: opacity .15s ease, color .15s ease;
}
.fclms-bubble:hover .fclms-bubble__drop { opacity: 1; }
.fclms-app .fclms-bubble__drop:hover { color: var(--fc-danger); }

/*
 * CASETA DE SCRIS
 *
 * Erau două lucruri alăturate — o casetă cu chenar și, lângă ea, un buton —
 * care nu se aliniau niciodată bine, fiindcă unul crește cu textul și celălalt
 * nu. Acum sunt un singur obiect: un jgheab rotunjit, cu scrisul înăuntru și
 * butonul în capătul lui.
 *
 * Chenarul e al jgheabului, nu al casetei: când scrii, se aprinde tot, ca și
 * cum ai pune mâna pe un singur lucru — fiindcă chiar unul singur e.
 */
.fclms-say {
	display: flex; align-items: flex-end; gap: 8px;
	margin-top: 12px; padding: 6px 6px 6px 8px;
	border: 1px solid var(--fc-line); border-radius: 22px;
	background: var(--fc-surface);
	transition: box-shadow .15s ease, border-color .15s ease;
}
.fclms-say:focus-within { border-color: var(--fc-primary); box-shadow: var(--fc-ring); }

.fclms-app .fclms-say textarea {
	flex: 1; min-width: 0;
	font-family: inherit; font-size: 15px; line-height: 1.45;
	padding: 8px 6px;
	max-height: 140px;
	border: 0; background: none; resize: none; overflow-y: auto;
	color: var(--fc-ink);
}
.fclms-app .fclms-say textarea:focus,
.fclms-app .fclms-say textarea:focus-visible { outline: none; box-shadow: none; }

/* Butonul poartă un semn, nu un cuvânt: „Trimite” scris cu litere cerea o
   lățime care se schimbă de la o limbă la alta și împingea caseta. */
.fclms-app .fclms-say__go {
	flex: none; width: 38px; height: 38px; padding: 0;
	display: inline-grid; place-items: center;
	border: 0; border-radius: 50%; cursor: pointer;
	background: var(--fc-primary); color: #fff;
	box-shadow: 0 4px 12px -4px rgba(var(--fc-primary-rgb), .6);
	transition: transform .15s ease, background-color .15s ease;
}
.fclms-say__go svg { width: 18px; height: 18px; fill: currentColor; }
.fclms-app .fclms-say__go:hover { transform: scale(1.06); }
.fclms-app .fclms-say__go:active { transform: scale(.96); }

@media (max-width: 640px) {
	.fclms-bubble { max-width: 88%; }
	.fclms-bubble__drop { opacity: 1; }
	/* Lățimea coloanelor de întrerupătoare se dă mai jos, împreună cu capul
	   tabelului: cele două se socotesc una pe alta și n-au ce căuta despărțite. */
}

/* ===================================================== MECIUL, LA VEDERE */

/*
 * Alegerea pachetului trăiește în modal, iar modalul se atașează în afara
 * containerului aplicației. Regulile de aici nu se pot ascunde sub `.fclms-app`,
 * altfel nu ajung niciodată la el.
 */
.fclms-pickdeck { display: flex; flex-direction: column; min-height: 220px; }
.fclms-pickdeck .fclms-breadcrumb { margin: 10px 0 12px; }

/*
 * Lupa și câmpul stau unul lângă altul într-o casetă comună, nu una peste
 * cealaltă: așa nu se pot suprapune, indiferent de font sau de traducere.
 */
.fclms-picksearch {
	display: flex; align-items: center; gap: 10px;
	width: 75%; max-width: 460px;
	box-sizing: border-box;
	margin: 16px 0 20px;
	padding: 0 16px;
	border: 1.5px solid var(--fc-line); border-radius: 14px;
	background: var(--fc-surface);
	transition: border-color .15s ease, box-shadow .15s ease;
}
.fclms-picksearch:hover { border-color: rgba(var(--fc-primary-rgb), .45); }
.fclms-picksearch:focus-within { border-color: var(--fc-primary); box-shadow: var(--fc-ring); }

.fclms-picksearch__icon { flex: none; font-size: 15px; opacity: .5; }

.fclms-picksearch input {
	flex: 1; min-width: 0;
	font-family: inherit; font-size: 15px;
	padding: 13px 0;
	border: none; outline: none;
	background: none; color: var(--fc-ink);
}
.fclms-picksearch input::placeholder { color: var(--fc-muted); }

@media (max-width: 560px) {
	.fclms-picksearch { width: 100%; }
}

/*
 * Folderele sunt desenate ca foldere: o clapetă colorată sus-stânga, o buză
 * de aceeași culoare care o leagă de corp, și corpul alb dedesubt. Fără chenar,
 * ca silueta să fie a dosarului, nu a dreptunghiului din jurul lui.
 */
.fclms-folders {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
	gap: 16px 14px;
	margin: 20px 0 6px;
}

.fclms-folder {
	position: relative;
	width: 100%; box-sizing: border-box;
	margin-top: 18px;
	padding: 26px 16px 18px;
	font-family: inherit; text-align: left;
	/* Culoarea folderului trece și în corp, spălăcită: un folder adevărat e
	   colorat tot, nu doar pe clapetă. Prima linie e pentru browserele care
	   nu știu să amestece culori. */
	background: var(--fc-surface);
	background: color-mix(in srgb, var(--fc-folder, var(--fc-primary)) 10%, #fff);
	border: none;
	border-radius: 3px 14px 14px 14px;
	box-shadow: 0 1px 2px rgba(22, 32, 43, .07), 0 8px 18px rgba(22, 32, 43, .10);
	cursor: pointer;
	transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

/*
 * Aici stăteau două foi albe, desenate să se ivească de sub capacul folderului.
 * Ideea era bună pe hârtie, dar pe ecran ieșea o dungă albă lată între capac și
 * corp, care nu semăna a foi și nu spunea nimic. Le-am scos cu totul: capacul,
 * buza și corpul colorat spun singure că e un folder.
 */

/* Clapeta din stânga sus. */
/* Clapeta din stânga sus, cu colțul din dreapta tăiat pieziș, ca la dosarele
   de hârtie: dreptunghiul curat arăta a etichetă lipită, nu a folder. */
.fclms-folder::before {
	content: '';
	position: absolute; top: -14px; left: 0;
	width: 52%; height: 16px;
	background: var(--fc-folder, var(--fc-primary));
	border-radius: 5px 4px 0 0;
	clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 100%, 0 100%);
}

/* Buza care unește clapeta cu corpul. */
.fclms-folder::after {
	content: '';
	position: absolute; top: 0; left: 0; right: 0; height: 20px;
	background: var(--fc-folder, var(--fc-primary));
	border-radius: 3px 14px 0 0;
}

/* La trecerea cursorului folderul se ridică puțin, ca și cum l-ai scoate din
   raft; culoarea se aprinde, nu se schimbă. */
.fclms-folder:hover {
	transform: translateY(-4px);
	filter: saturate(1.15) brightness(1.02);
	box-shadow: 0 2px 4px rgba(22, 32, 43, .08), 0 16px 28px rgba(22, 32, 43, .18);
}
.fclms-folder:hover .fclms-folder__title { color: var(--fc-primary); }
.fclms-folder:focus-visible { outline: none; box-shadow: var(--fc-ring); }

.fclms-folder__title {
	display: block;
	font-size: 16px; font-weight: 800; line-height: 1.35;
	color: var(--fc-ink);
	word-break: break-word;
}
.fclms-folder__count { display: block; margin-top: 4px; font-size: 13px; color: var(--fc-muted); }

@media (max-width: 480px) {
	.fclms-folders { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}

/* Setul: un titlu discret, iar sub el pachetele lui. */
.fclms-pickset { margin: 16px 0 6px; }
.fclms-pickset__title {
	display: flex; align-items: center; gap: 10px;
	margin: 0 0 10px;
	font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
	color: var(--fc-muted);
}
.fclms-pickset__title::after {
	content: ''; flex: 1; height: 1px; background: var(--fc-line);
}
.fclms-pickset__decks { display: flex; flex-wrap: wrap; gap: 8px; }

.fclms-pill__count {
	display: inline-block; margin-left: 6px; padding: 1px 7px;
	font-size: 11px; font-weight: 700;
	background: var(--fc-tint); color: var(--fc-primary); border-radius: 999px;
}
.fclms-pill.is-active .fclms-pill__count { background: rgba(255, 255, 255, .28); color: #fff; }

.fclms-picklimit { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--fc-line); }
.fclms-picklimit .fclms-row__meta {
	margin: 0 0 10px;
	font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
	color: var(--fc-muted);
}

/* Provocarea care bate la ușă. */
.fclms-invite { text-align: center; }
.fclms-invite__face {
	width: 92px; height: 92px; border-radius: 50%; object-fit: cover;
	border: 3px solid var(--fc-primary);
	animation: fclms-invite-pulse 1.6s ease-in-out infinite;
}
.fclms-invite__who { margin: 12px 0 2px; font-size: 20px; }
.fclms-invite .fclms-chip { margin-top: 8px; }

@keyframes fclms-invite-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(var(--fc-primary-rgb), .35); }
	50% { box-shadow: 0 0 0 12px rgba(var(--fc-primary-rgb), 0); }
}

/* Arena: tu la stânga, adversarul la dreapta, runda la mijloc. */
.fclms-duel { max-width: 760px; margin: 0 auto; }
.fclms-duel__top { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }

/*
 * Arena e împărțită în două tabere, ca semnul aplicației: albastru la stânga,
 * roșu la dreapta, cu o tăietură în diagonală între ele. Tăietura nu stă la
 * mijloc, ci acolo unde o duce scorul — cine conduce își împinge culoarea
 * peste a celuilalt. Valoarea vine din cod, în `--fc-split`.
 */

/* Razele care pleacă din tăietură spre margini, ca într-o înfruntare. */

/*
 * Fulgerul stătea la mijlocul înălțimii, exact peste numărul rundei: „1/10”
 * se citea prin el. Urcă pe muchia de sus, tot călare pe tăietură — arată de
 * unde trece hotarul, fără să acopere nimic.
 */

/* Poza și textul în lat: numele sus, scorul dedesubt. */
/*
 * Fiecare tabără se strânge lângă poza ei, nu se întinde pe toată jumătatea:
 * pe un ecran lat, numele ajungeau în marginile arenei, la un lat de palmă
 * unul de altul, și nu mai semăna cu o înfruntare.
 */


@keyframes fclms-verdict-pop {
	from { transform: scale(0); }
	70% { transform: scale(1.25); }
	to { transform: scale(1); }
}


/*
 * Mijlocul arenei. Tăietura se plimbă după scor și poate trece pe sub aceste
 * semne, deci ele au nevoie de fundal propriu: pe alb, un text alb ar pieri.
 */


@keyframes fclms-clock-beat {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.12); }
}


.fclms-duel__wait { text-align: center; padding: 40px 20px; }
.fclms-duel__waiticon { font-size: 54px; margin: 0 0 8px; }
.fclms-duel__result { text-align: center; margin-top: 6px; }

@media (max-width: 560px) {
}

/* Nisipul curge cât aștepți: ecranul de așteptare nu pare înghețat. */
.fclms-duel__waiticon { animation: fclms-wait-tip 2.4s ease-in-out infinite; }

@keyframes fclms-wait-tip {
	0%, 45%, 100% { transform: rotate(0); }
	55%, 95% { transform: rotate(180deg); }
}

/* Dezvăluirea: ce a răspuns fiecare, scris ca atare, timp de zece secunde. */
.fclms-reveal {
	margin: 14px 0 4px;
	padding: 12px;
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	border-radius: 16px;
	animation: fclms-reveal-in .3s ease;
}
.fclms-reveal__clock {
	margin: 0 0 12px; text-align: center;
	font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
	color: var(--fc-muted);
}
.fclms-reveal__ready { color: var(--fc-success); font-size: 13px; }

/* Întrebarea sus, iar sub ea cele două răspunsuri, despărțite de fulger. */
.fclms-reveal__asked {
	margin: 0 0 14px; text-align: center;
	font-size: 17px; font-weight: 800; line-height: 1.4;
	color: var(--fc-ink);
}

.fclms-reveal__pair {
	display: grid; grid-template-columns: 1fr auto 1fr; align-items: stretch; gap: 10px;
}
.fclms-reveal__split {
	align-self: center;
	font-size: 22px;
	filter: drop-shadow(0 0 6px rgba(var(--fc-accent-rgb), .6));
}

.fclms-reveal__one {
	position: relative; overflow: hidden;
	padding: 14px 12px 12px;
	border: 1px solid var(--fc-line);
	border-radius: 12px;
	background: var(--fc-surface);
	text-align: center;
}

/* Banda de sus spune a cui e caseta, cu culorile taberelor din arenă. */
.fclms-reveal__one::before {
	content: '';
	position: absolute; top: 0; left: 0; right: 0; height: 5px;
}
.fclms-reveal__one.is-me::before { background: var(--fc-primary); }
.fclms-reveal__one.is-opp::before { background: #C0392B; }

.fclms-reveal__name {
	margin: 0 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--fc-muted);
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-reveal__said { margin: 0; font-size: 16px; font-weight: 700; word-break: break-word; }
.fclms-reveal__said i { font-weight: 400; color: var(--fc-muted); }
/* Corect sau greșit se citește din pastilă, nu din culoarea casetei. */
.fclms-reveal__mark {
	display: inline-flex; align-items: center; gap: 4px;
	margin: 10px 0 0; padding: 4px 12px;
	font-size: 13px; font-weight: 800; line-height: 1;
	border-radius: 999px;
}
.fclms-reveal__mark.is-ok { background: var(--fc-success-soft); color: var(--fc-success); }
.fclms-reveal__mark.is-no { background: var(--fc-danger-soft); color: var(--fc-danger); }

@media (max-width: 520px) {
	.fclms-reveal__pair { grid-template-columns: 1fr; }
	.fclms-reveal__split { transform: rotate(90deg); }
}

@keyframes fclms-reveal-in {
	from { opacity: 0; transform: translateY(8px); }
	to { opacity: 1; transform: none; }
}

/* Renunțarea stă jos, singură, dar se vede: e o ieșire, nu o capcană. */
.fclms-duel__quit {
	margin: 34px 0 0; padding-top: 26px;
	text-align: center;
	border-top: 1px solid var(--fc-line);
}
.fclms-app .fclms-duel__quit .fclms-btn {
	background-color: var(--fc-danger) !important;
	border-color: var(--fc-danger) !important;
	color: #fff !important;
	box-shadow: 0 2px 10px rgba(192, 57, 43, .3);
}
.fclms-app .fclms-duel__quit .fclms-btn:hover { filter: brightness(1.08); }

/* Punctele din antet sunt apăsabile: arată-o. */
/*
 * Punctele se pot apăsa, dar nu se ridică sub cursor.
 *
 * Săltatul acela avea rost pe un buton care stă singur pe hârtie albă. În bara
 * laterală însă pastila stă lipită între clopoțel și nume, iar mișcarea ei la
 * fiecare trecere a cursorului sare în ochi fără să spună nimic: că se poate
 * apăsa se vede din cursor.
 *
 * Ce rămâne: degetul, ca să se știe că duce undeva, și inelul de la tastatură,
 * fără de care cine umblă cu Tab n-ar mai ști unde a ajuns. Trecerea lină nu
 * se scoate — nu mai e a cursorului, ci a săltatului de la creșterea punctelor,
 * `is-bumped`, care rămâne cum era.
 */
.fclms-app .fclms-points--link { cursor: pointer; font-family: inherit; }

/* Aceeași oprire, pentru pastila de puncte de oriunde din aplicație. */
.fclms-app .fclms-points--link:hover,
.fclms-app .fclms-points--link:focus,
.fclms-app .fclms-points--link:active {
	background-color: transparent !important;
	color: #7A5A00 !important;
	transform: none;
}
.fclms-app .fclms-points--link:focus-visible { outline: none; box-shadow: var(--fc-ring); }

/* ====================================== INFLUENCER ȘI ACCESURILE ACORDATE */

/*
 * Insigna de Influencer: aceleași drepturi ca VIP, dar altă față. Culorile
 * curg încet, ca ochiul să fie prins fără ca ecranul să devină obositor.
 */
.fclms-influencer {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 6px 15px;
	font-size: 13px; font-weight: 800; letter-spacing: .02em;
	color: #fff;
	border-radius: 999px;
	background: linear-gradient(110deg, #7C3AED, #DB2777 38%, #F59E0B 72%, #7C3AED);
	background-size: 300% 100%;
	box-shadow: 0 2px 12px rgba(219, 39, 119, .35);
	animation: fclms-influencer-flow 7s linear infinite;
}
.fclms-influencer { position: relative; overflow: hidden; }
.fclms-influencer__spark { font-size: 15px; animation: fclms-influencer-spark 2.4s ease-in-out infinite; }

.fclms-influencer::after {
	content: '';
	position: absolute; top: 0; left: -60%;
	width: 45%; height: 100%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent);
	transform: skewX(-20deg);
	animation: fclms-gold-shine 5s ease-in-out infinite;
}

@keyframes fclms-influencer-flow {
	to { background-position: 300% 0; }
}
@keyframes fclms-influencer-spark {
	0%, 100% { transform: scale(1) rotate(0); opacity: 1; }
	50% { transform: scale(1.25) rotate(20deg); opacity: .85; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-influencer, .fclms-influencer__spark { animation: none; }
	.fclms-influencer::after { display: none; }
}

/* Accesurile acordate: ce, pe cât timp și de unde. */
.fclms-grant__meta { display: inline-flex; flex-wrap: wrap; gap: 5px; margin-left: 8px; vertical-align: middle; }
.fclms-grant__meta .fclms-chip { font-size: 11px; padding: 3px 9px; }
.fclms-grant__set { display: block; margin-top: 3px; font-size: 12px; color: var(--fc-muted); }

/* Banda și cardul de Influencer își iau culorile insignei. */
.fclms-influencer--big { font-size: 16px; padding: 10px 22px; }

/* Ascunsă înseamnă ascunsă: `display: flex` de mai sus ar fi trecut peste
   atributul `hidden`, iar banda ar fi rămas pe toate filele. */
.fclms-vip-banner[hidden] { display: none; }

.fclms-vip-banner--influencer {
	background: linear-gradient(100deg, rgba(124, 58, 237, .10), rgba(219, 39, 119, .10) 45%, rgba(245, 158, 11, .12));
	border-color: #DB2777;
}
.fclms-card--influencer { border-color: #DB2777; }

/* Butonul de start al meciului: verde, și stins cât timp nu e ales un pachet. */
.fclms-modal__foot .fclms-btn--success:disabled {
	background: var(--fc-line);
	color: var(--fc-muted);
	cursor: default;
	box-shadow: none;
}

/* ============================================ MENIUL PE TABLETĂ ȘI TELEFON */

/*
 * Clapa e ascunsă pe ecran lat: acolo meniul încape întins.
 *
 * Regula are două selectoare, unul mai apăsat, ca să treacă peste stilurile
 * temei. Orice regulă care o aprinde înapoi trebuie să fie la fel de apăsată:
 * o interogare de ecran nu adaugă greutate, iar un simplu `.fclms-burger` ar
 * pierde în fața lui `.fclms-app .fclms-burger` chiar și pe telefon — și
 * exact așa a dispărut clapa de sub degete.
 */
.fclms-burger,
.fclms-app .fclms-burger { display: none; }

/*
 * Meniul strâns e pentru atingere, nu doar pentru ecrane mici: o tabletă în
 * lat are lățimea unui laptop, dar aceleași degete. De aceea condiția prinde
 * și ecranele înguste, și dispozitivele fără cursor.
 */
@media (max-width: 1024px), (pointer: coarse) and (hover: none) {
	.fclms-app--student > .fclms-topbar {
		position: relative;
		flex-wrap: nowrap;
		gap: 8px;
	}

	/*
	 * Cele patru lucruri care rămân pe rând: clapa, clopoțelul, punctele și
	 * ecranul complet. Restul meniului coboară sub ele, la cerere.
	 */
	.fclms-burger,
	.fclms-app .fclms-burger {
		display: inline-flex; flex-direction: column; justify-content: center; gap: 4px;
		width: 42px; height: 42px; flex: none;
		padding: 0 10px;
		border: 1px solid transparent; border-radius: 12px;
		background-color: var(--fc-surface) !important;
		cursor: pointer;
		box-shadow: 0 1px 3px rgba(22, 32, 43, .18);
	}
	.fclms-burger span {
		display: block; height: 2px; border-radius: 2px;
		background: var(--fc-ink);
		transition: transform .2s ease, opacity .2s ease;
	}
	.fclms-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
	.fclms-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
	.fclms-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
	.fclms-burger:focus-visible { outline: none; box-shadow: var(--fc-ring); }

	.fclms-app--student > .fclms-topbar .fclms-bellwrap { margin-left: auto; }

	/* Meniul principal devine o listă care coboară din bară. */
	.fclms-app--student > .fclms-topbar > .fclms-tabs {
		display: none;
		position: fixed;
		z-index: 99999;
		max-height: 74vh; overflow-y: auto;
		flex-direction: column; align-items: stretch; gap: 2px;
		padding: 8px;
		background-color: var(--fc-menu-bg, #FFFFFF) !important;
		border-radius: var(--fc-radius);
		box-shadow: var(--fc-shadow-lift);
	}
	.fclms-app--student > .fclms-topbar > .fclms-tabs.is-open { display: flex; }

	/* Filele scrise de server rămân doar ca sursă; panoul își face lista lui. */
	.fclms-app--student > .fclms-topbar > .fclms-tabs > .fclms-tab { display: none; }

	.fclms-tabs__list { display: flex; flex-direction: column; gap: 2px; }

	.fclms-tabs__head { display: flex; align-items: stretch; gap: 4px; }
	.fclms-tabs__head.is-active {
		background-color: var(--fc-topbar-active) !important;
		border-radius: 10px;
	}
	.fclms-tabs__head.is-active .fclms-tabs__main,
	.fclms-tabs__head.is-active .fclms-tabs__caret {
		color: var(--fc-on-topbar-active, var(--fc-topbar-text)) !important;
	}

	/* Sub-fila deschisă se vede și ea, nu doar secțiunea din care face parte. */
	.fclms-tabs__subitem.is-active {
		background-color: rgba(var(--fc-primary-rgb), .14) !important;
		color: var(--fc-primary) !important;
		font-weight: 700;
		opacity: 1;
	}

	.fclms-tabs__main {
		flex: 1; text-align: left;
		font-family: inherit; font-size: 16px; font-weight: 700;
		padding: 13px 14px;
		border: none; border-radius: 10px;
		background-color: transparent !important;
		color: var(--fc-menu-text, #1E2A38) !important;
		cursor: pointer;
	}
	.fclms-tabs__caret {
		flex: none; width: 44px;
		font-size: 14px;
		border: none; border-radius: 10px;
		background-color: transparent !important;
		color: var(--fc-menu-text, #1E2A38) !important;
		cursor: pointer;
	}
	.fclms-tabs__caret span { display: inline-block; transition: transform .18s ease; }
	.fclms-tabs__caret[aria-expanded="true"] span { transform: rotate(180deg); }

	/* Sub-filele, indentate sub fila lor. */
	.fclms-tabs__sub {
		display: flex; flex-direction: column; gap: 2px;
		margin: 2px 0 6px 14px;
		padding-left: 12px;
		border-left: 2px solid rgba(var(--fc-primary-rgb), .3);
	}
	.fclms-tabs__subitem {
		width: 100%; text-align: left;
		font-family: inherit; font-size: 15px;
		padding: 11px 12px;
		border: none; border-radius: 8px;
		background-color: transparent !important;
		color: var(--fc-menu-text, #1E2A38) !important;
		opacity: .85;
		cursor: pointer;
	}
	.fclms-tabs__subitem:hover {
		background-color: rgba(var(--fc-primary-rgb), .10) !important;
		opacity: 1;
	}

	/*
	 * În administrare rândurile panoului sunt legături, nu butoane — la cursant
	 * meniul e construit din butoane. Temele subliniază legăturile, iar panoul
	 * stă în afara aplicației cât e deschis, deci nu-l mai apără nimic.
	 */
	.fclms-tabs__main,
	.fclms-tabs__subitem { text-decoration: none; }

	/* Cifra firelor care așteaptă, într-o bulină la capătul rândului. Se
	   citea înainte ca „Suport 3”, adică un număr lipit de un cuvânt. */
	.fclms-tabs__subitem { display: flex; align-items: center; gap: 8px; }
	.fclms-tabs__main .fclms-count,
	.fclms-tabs__subitem .fclms-count {
		margin-left: auto;
		min-width: 20px; padding: 1px 7px;
		font-size: 12px; font-weight: 700; line-height: 18px; text-align: center;
		color: #fff; background: var(--fc-danger);
		border-radius: 999px;
	}

	/*
	 * Rândul de sub-file din pagină e de prisos: meniul le poartă pe toate.
	 * Regula privește însă doar pagina. În ecran complet ferestrele modale se
	 * atașează înăuntrul aplicației, iar rândurile lor de pastile — filtrele
	 * și limita de timp de la provocare — n-au nicio legătură cu meniul.
	 */
	.fclms-app--student .fclms-subtabs { display: none; }
	.fclms-app--student .fclms-modal .fclms-subtabs { display: flex; }

	/* Și aici, rândurile care nu se află în meniu rămân la vedere. */
	.fclms-app--student .fclms-subtabs--views { display: flex; }
}

@media (max-width: 560px) {
	/* Pe telefon rămâne doar pictograma: cele patru butoane trebuie să încapă. */
	.fclms-app--student > .fclms-topbar .fclms-fs__label { display: none; }
	.fclms-app--student > .fclms-topbar .fclms-fs { padding: 0 14px; }
	.fclms-app--student > .fclms-topbar { padding: 10px; }
	.fclms-app--student > .fclms-topbar .fclms-points { padding: 6px 12px; }
}


/*
 * În ecran complet, pe atingere, bara păstrează aceleași margini ca în pagină.
 * Altfel butoanele săreau dintr-o parte în alta la intrarea în ecran complet,
 * iar panourile ancorate de bară se îngustau odată cu ea.
 */
@media (max-width: 1024px), (pointer: coarse) and (hover: none) {
	.fclms-app.is-faux-fullscreen { padding: 16px; }
	.fclms-app.is-faux-fullscreen .fclms-topbar {
		top: -16px; padding-top: 16px; margin-top: -16px;
	}

	.fclms-app:fullscreen { padding: 16px; }
	.fclms-app:fullscreen .fclms-topbar {
		top: -16px; padding-top: 16px; margin-top: -16px;
	}

	.fclms-app:-webkit-full-screen { padding: 16px; }
	.fclms-app:-webkit-full-screen .fclms-topbar {
		top: -16px; padding-top: 16px; margin-top: -16px;
	}

	.fclms-app:fullscreen > * { max-width: none; }
	.fclms-app:-webkit-full-screen > * { max-width: none; }
}

/*
 * Panoul meniului, scos din bară. Selectorul nu mai trece prin `.fclms-app`,
 * deci nicio regulă de ecran complet nu îi mai poate schimba lățimea.
 */
.fclms-menupanel.is-open {
	display: flex !important;
	position: fixed !important;
	left: 12px !important; right: 12px !important;
	width: auto !important; max-width: none !important;
	margin: 0 !important; padding: 8px !important;
	flex-direction: column !important; align-items: stretch !important;
	gap: 2px;
	overflow-y: auto;
	z-index: 99999;
	background-color: var(--fc-menu-bg, #FFFFFF) !important;
	border: 0 !important;
	border-radius: var(--fc-radius);
	box-shadow: var(--fc-shadow-lift);
	font-family: var(--fc-font);
}

/* Filele scrise de server rămân doar ca sursă pentru lista construită. */
.fclms-menupanel > .fclms-tab { display: none !important; }

/* Titlul unei secțiuni cu sub-file arată că desface, nu că duce undeva. */
.fclms-tabs__main:not(.is-leaf) { cursor: pointer; }
.fclms-tabs__main.is-leaf::after {
	content: '→';
	float: right;
	opacity: .45;
	font-weight: 400;
}

/* Cele trei răspunsuri la o provocare, fiecare cu culoarea faptei ei. */
.fclms-invite__actions {
	display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;
	margin-top: 22px;
}
.fclms-btn--warn,
.fclms-app .fclms-btn--warn {
	background: #D98324 !important;
	border-color: #D98324 !important;
	color: #fff !important;
}
.fclms-btn--warn:hover { filter: brightness(1.08); }

@media (max-width: 560px) {
	.fclms-invite__actions .fclms-btn { width: 100%; }
}

/* Butonul de ștergere al unui mesaj apare la atingerea bulei. */
.fclms-app .fclms-bubble__drop {
	background: var(--fc-surface) !important;
	border: 1px solid var(--fc-line) !important;
	border-radius: 50%;
	width: 22px; height: 22px;
	box-shadow: var(--fc-shadow);
}

/*
 * Numărul de coloane e ales din administrare, separat pentru fiecare fel de
 * ecran. Pragurile de aici sunt aceleași cu cele din cod, care socotește câte
 * carduri intră pe o pagină — dacă s-ar despărți, grila și paginarea ar
 * ajunge să spună lucruri diferite.
 */
@media (max-width: 560px) {
	.fclms-cards-grid { grid-template-columns: repeat(var(--fc-grid-cols-phone, 2), minmax(0, 1fr)); }
}

@media (min-width: 561px) and (max-width: 899px) {
	.fclms-cards-grid { grid-template-columns: repeat(var(--fc-grid-cols-tablet, 3), minmax(0, 1fr)); }
}

@media (min-width: 900px) {
	.fclms-cards-grid { grid-template-columns: repeat(var(--fc-grid-cols, 4), minmax(0, 1fr)); }
}

/* Tabelul cu așezarea cardurilor, pe fiecare fel de ecran. */
.fclms-grid-table td, .fclms-grid-table th { vertical-align: middle; }
.fclms-grid-table input[type=number] {
	width: 80px;
	font-family: inherit; font-size: 15px;
	padding: 8px 10px;
	border: 1px solid var(--fc-line); border-radius: 10px;
	background: var(--fc-surface); color: var(--fc-ink);
}
.fclms-grid-table input[type=number]:focus-visible { outline: none; border-color: var(--fc-primary); box-shadow: var(--fc-ring); }

/* Copiile de siguranță: acțiunile fiecărei linii, una lângă alta. */
.fclms-backup-new { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.fclms-backup-new .fclms-field { margin-bottom: 0; min-width: 260px; }
.fclms-backup-new p { margin: 0; }

/*
 * Butoanele din tabelul copiilor de siguranță.
 *
 * Celula avea `display: flex`, și atunci înceta să mai fie celulă de tabel: se
 * desprindea din rândul ei și se așeza singură, cu câțiva pixeli mai jos decât
 * datele de alături. De aceea coloana din dreapta nu se potrivea cu celelalte.
 * Celula rămâne deci celulă, iar înșiruirea butoanelor se face într-o cutie
 * dinăuntrul ei.
 */
.fclms-backup-actions { vertical-align: middle; white-space: nowrap; }
.fclms-backup-actions > * { display: inline-flex; vertical-align: middle; margin: 2px 4px 2px 0; }
.fclms-backup-actions form { margin: 2px 4px 2px 0; }

/* Alegerea bucăților care intră în copie. */
.fclms-backup-parts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 8px;
	margin: 12px 0 20px;
}
.fclms-backup-parts .fclms-choice { align-items: flex-start; }

.fclms-h3 { font-size: 16px; font-weight: 800; margin: 22px 0 4px; letter-spacing: -.01em; }

/* Eticheta cu felul unui cartonaș, în lista pachetului. */
.fclms-kind {
	display: inline-block;
	margin-left: 6px; padding: 2px 9px;
	font-size: 11px; font-weight: 800; letter-spacing: .02em;
	border-radius: 999px;
	background: rgba(var(--fc-primary-rgb), .10);
	color: var(--fc-primary);
	vertical-align: middle;
}
.fclms-kind--standard { background: var(--fc-line); color: var(--fc-muted); }
.fclms-kind--pronunciation { background: rgba(var(--fc-accent-rgb), .16); color: #8A6300; }
.fclms-kind--quiz { background: var(--fc-success-soft); color: var(--fc-success); }
.fclms-kind--truefalse { background: var(--fc-danger-soft); color: var(--fc-danger); }

/* ===========================================================================
   BARA LATERALĂ PE ECRAN LAT
   Pe laptop și pe monitor, meniul coboară în stânga și rămâne la vedere cât
   derulezi, cu secțiunile desfăcute pe loc. Tot ce ține de tine — punctele,
   clopoțelul, numele — stă în aceeași coloană, ca să nu mai fie nevoie de
   un al doilea rând deasupra conținutului.

   Condiția e negarea exactă a celei de la meniul strâns: ecran lat ȘI cursor
   adevărat. O tabletă în lat, oricât de lată, rămâne cu clapa și meniul ei.
   =========================================================================== */

.fclms-side__user,
.fclms-side__grip { display: none; }

@media (min-width: 1025px) and (hover: hover) {

	:root {
		--fc-side-w: 272px;
		--fc-side-gap: 28px;
	}

	/* ---------------------------------------------- mânerul de lățime */

	/*
	 * O fâșie pe marginea din dreapta a barei, cât să se poată apuca fără să
	 * fie nevoie de ochit. Se vede abia când treci peste ea sau când tragi:
	 * altfel ar fi o dungă în plus pe ecran, degeaba.
	 */
	.fclms-side__grip {
		display: block;
		position: absolute;
		top: 0; right: -7px; bottom: 0;
		width: 14px;
		z-index: 3;
		cursor: col-resize;
		background: transparent;
		touch-action: none;
	}
	.fclms-side__grip > span {
		display: block;
		position: absolute;
		top: 50%; left: 50%;
		width: 4px; height: 46px;
		transform: translate(-50%, -50%);
		border-radius: 4px;
		background: var(--fc-menu-text, var(--fc-ink));
		opacity: 0;
		transition: opacity .15s ease;
	}
	.fclms-side__grip:hover > span,
	.fclms-side__grip:focus-visible > span,
	.fclms-app--shell.is-resizing .fclms-side__grip > span { opacity: .55; }
	.fclms-side__grip:focus-visible { outline: none; }

	/* Cât timp tragi, textul de sub cursor nu se mai selectează din greșeală. */
	.fclms-app--shell.is-resizing { user-select: none; cursor: col-resize; }

	/*
	 * Înălțimea barei se scrie o singură dată, ca locurile unde marginile
	 * paginii se schimbă — ecranul complet, panoul de administrare — să nu
	 * trebuiască să o recalculeze fiecare pe cont propriu.
	 */
	.fclms-app--shell { --fc-side-h: 100vh; }

	/* ------------------------------------------------------ așezarea paginii */

	/*
	 * Bara se agață de fereastră și ține marginea din stânga de sus până jos.
	 * Conținutul îi lasă loc printr-o margine interioară, nu printr-o coloană
	 * de grilă: o coloană se pierde acolo unde browserul își impune propriile
	 * reguli — în ecran complet, de pildă — iar o margine ține peste tot.
	 */
	.fclms-app--shell {
		display: block;
		padding-left: calc(var(--fc-side-w) + var(--fc-side-gap));
	}

	/*
	 * Când pagina întreagă se mută la dreapta barei — antet de temă, conținut,
	 * subsol — aplicația nu mai are de ce să-și adauge și ea aceeași margine:
	 * i-ar veni de două ori. Clasa o pune scriptul, doar pe site și doar când
	 * bara chiar e coloană; dacă scriptul nu apucă, rămâne varianta de mai sus.
	 */
	/*
	 * Scrisă apăsat și cu un „html” în față: clasa vine acum din server, deci
	 * regula asta lucrează singură până pornește scriptul, iar multe teme își
	 * scriu marginile paginii tot apăsat. Fără greutatea asta, primul desen al
	 * paginii ar rămâne al temei, iar mutarea s-ar vedea abia după.
	 */
	html body.fclms-has-side { padding-left: var(--fc-side-w) !important; }
	body.fclms-has-side .fclms-app--shell { padding-left: var(--fc-space-3); }

	/*
	 * În panoul WordPress se mută zona lui de conținut, nu pagina: pagina
	 * cuprinde și meniul lui din stânga, care rămâne unde e. Bara noastră stă
	 * între ele — după meniul WordPress, înaintea conținutului.
	 */
	html body.wp-admin.fclms-has-side { padding-left: 0 !important; }
	html body.wp-admin.fclms-has-side #wpcontent { padding-left: calc(var(--fc-side-w) + 20px) !important; }

	/* ------------------------------------------------------------- bara însăși */

	.fclms-app--shell > .fclms-side {
		position: fixed;
		left: 0;
		top: 0;
		bottom: 0;
		z-index: 40;
		display: flex;
		flex-direction: column;
		/*
		 * Fără asta, bara moștenește revărsarea de la bara de sus: pusă pe
		 * coloană și cu înălțime fixată, ce nu încape se mută într-o a doua
		 * coloană, alături. Aici nu are unde: rândurile stau unul sub altul,
		 * iar meniul, singurul care crește, se derulează în el.
		 */
		flex-wrap: nowrap;
		align-items: stretch;
		gap: 14px;
		width: var(--fc-side-w);
		min-width: var(--fc-side-w);
		max-width: var(--fc-side-w);
		height: var(--fc-side-h);
		max-height: var(--fc-side-h);
		/*
		 * Derulează meniul dinăuntru, nu bara: altfel mânerul de lățime ar
		 * fi tăiat de marginea ei și ar acoperi bara de derulare a listei.
		 */
		overflow: visible;
		overscroll-behavior: contain;
		margin: 0;
		padding: 18px 14px;
		/* Lipită de marginea ecranului: fără ramă, fără colțuri, fără umbră. */
		border: 0;
		border-right: 1px solid var(--fc-line);
		border-radius: 0;
		background: var(--fc-menu-bg, var(--fc-surface));
		color: var(--fc-menu-text, var(--fc-ink));
		box-shadow: none;
		min-height: 0;
	}

	/*
	 * Bara de sus își centra elementele pe rând; într-o coloană, aceeași
	 * regulă le-ar strânge pe fiecare la lățimea textului. Aici se întind.
	 */
	.fclms-app--shell > .fclms-side > * { align-self: stretch !important; }

	.fclms-app--shell > .fclms-side::after { display: none; }

	/* Punctele și clopoțelul, pe același rând sub siglă. */
	.fclms-app--shell > .fclms-side .fclms-side__meta {
		display: flex; align-items: center; gap: 10px;
		flex: none;
		padding: 0 4px;
	}
	.fclms-app--shell > .fclms-side .fclms-points {
		flex: 1;
		justify-content: center;
		margin: 0 !important;
	}
	.fclms-app--shell > .fclms-side .fclms-bellwrap { margin-left: 0 !important; flex: none; }

	/* Meniul ia toată înălțimea rămasă și se derulează singur. */
	.fclms-app--shell > .fclms-side > .fclms-tabs,
	.fclms-app--shell > .fclms-side > .fclms-side__nav {
		display: flex;
		flex: 1 1 auto;
		flex-direction: column;
		flex-wrap: nowrap;
		/* Apăsat: în ecran complet bara de sus își centrează copiii la fel. */
		align-items: stretch !important;
		width: 100% !important;
		gap: 2px;
		min-height: 0;
		margin: 0;
		padding: 0;
		overflow-y: auto;
		overflow-x: hidden;
		/* Bara de derulare a meniului, subțire: e unealtă, nu podoabă. */
		scrollbar-width: thin;
		scrollbar-color: rgba(var(--fc-primary-rgb), .45) transparent;
	}

	.fclms-app--shell > .fclms-side > .fclms-tabs::-webkit-scrollbar,
	.fclms-app--shell > .fclms-side > .fclms-side__nav::-webkit-scrollbar { width: 6px; }
	.fclms-app--shell > .fclms-side > .fclms-tabs::-webkit-scrollbar-track,
	.fclms-app--shell > .fclms-side > .fclms-side__nav::-webkit-scrollbar-track { background: transparent; }
	.fclms-app--shell > .fclms-side > .fclms-tabs::-webkit-scrollbar-thumb,
	.fclms-app--shell > .fclms-side > .fclms-side__nav::-webkit-scrollbar-thumb {
		background: rgba(var(--fc-primary-rgb), .45);
		border-radius: 6px;
	}

	/* Filele scrise de server rămân doar sursă: lista cu sub-file le înlocuiește. */
	.fclms-app--shell > .fclms-side > .fclms-tabs > .fclms-tab { display: none; }

	.fclms-burger,
	.fclms-app .fclms-burger { display: none; }

	/* ------------------------------------------------- rândurile din meniu */

	/*
	 * Rândurile ajung dintr-o margine a barei în cealaltă. Lățimea e scrisă
	 * apăsat fiindcă bara de sus, în ecran complet, își centrează copiii tot
	 * apăsat: fără asta, meniul rămâne strâns pe mijloc oricât ai lăți bara.
	 */
	.fclms-side .fclms-tabs__list,
	.fclms-side .fclms-tabs__group,
	.fclms-side .fclms-tabs__head {
		width: 100% !important;
		align-self: stretch !important;
		max-width: none !important;
	}

	.fclms-side .fclms-tabs__list { display: flex; flex-direction: column; gap: 2px; }
	.fclms-side .fclms-tabs__group { display: block; }

	.fclms-side .fclms-tabs__head {
		display: flex; align-items: stretch; gap: 2px;
		border-radius: 10px;
	}
	.fclms-side .fclms-tabs__head.is-active {
		background-color: var(--fc-topbar-active, var(--fc-primary)) !important;
	}
	.fclms-side .fclms-tabs__head.is-active .fclms-tabs__main,
	.fclms-side .fclms-tabs__head.is-active .fclms-tabs__caret {
		color: #fff !important;
		opacity: 1;
	}

	.fclms-side .fclms-tabs__main {
		flex: 1; min-width: 0;
		display: flex; align-items: center; justify-content: flex-start; gap: 9px;
		text-align: left;
		font-family: inherit; font-size: 15px; font-weight: 700; line-height: 1.3;
		padding: 11px 12px;
		border: none; border-radius: 10px;
		background-color: transparent !important;
		color: var(--fc-menu-text, var(--fc-ink)) !important;
		text-decoration: none;
		cursor: pointer;
		overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	}
	/*
	 * RÂNDUL DE SUB CURSOR, LA FEL ÎN AMÂNDOUĂ MENIURILE
	 *
	 * Rândurile din administrare sunt scrise de server cu două clase —
	 * `fclms-tab` pe lângă `fclms-tabs__main` — iar cea dintâi le aducea o
	 * regulă de hover mai apăsată, cu o spoială albă. Rândurile cursantului
	 * sunt făcute din JavaScript și poartă doar a doua clasă, deci rămâneau
	 * cu o tentă atât de subțire încât pe un meniu întunecat nu se vedea
	 * deloc. Aceeași bară, două purtări.
	 *
	 * Acum au una singură, iar culoarea nu mai e scrisă de mână: e o tentă
	 * din cerneala meniului. Cerneala se alege întotdeauna în răspăr cu
	 * fundalul lui, așa că tenta iese deschisă pe un meniu întunecat și
	 * întunecată pe unul deschis — pe când albul de dinainte se pierdea cu
	 * totul pe meniul alb, care e chiar cel din capul locului.
	 *
	 * Rândul deschis nu se aprinde: are deja culoarea lui, iar o pată peste
	 * ea ar spune că se poate merge unde ești deja.
	 *
	 * Al doilea selector îl bate pe cel vechi din administrare numărând o
	 * clasă în plus. Nu e din lene că regula e scrisă de două ori: cele două
	 * bare au marcaje diferite, iar o singură scriitură n-ar fi ajuns la
	 * amândouă cu aceeași greutate.
	 */
	.fclms-side .fclms-tabs__head:not(.is-active) .fclms-tabs__main:hover,
	.fclms-app--admin > .fclms-tabs--admin .fclms-tabs__head:not(.is-active) .fclms-tab:hover {
		background-color: rgba(var(--fc-menu-text-rgb, 30, 42, 56), .12) !important;
		opacity: 1;
	}

	.fclms-side .fclms-tabs__main.is-leaf::after { content: none; }

	/* Cifra de pe o filă fără sub-file se duce la capătul rândului. */
	.fclms-side .fclms-tabs__main .fclms-count { margin-left: auto; }

	/*
	 * Titlul umple rândul, ca săgeata să rămână lipită de marginea din
	 * dreapta. Scris cu aceeași greutate ca regula din administrare care
	 * strânge filele la lățimea textului: acolo e un rând de pastile, aici
	 * o coloană, iar rândurile trebuie să ajungă dintr-o margine în alta.
	 */
	.fclms-app--shell > .fclms-side .fclms-tabs__main { flex: 1 1 auto; }

	.fclms-side .fclms-tabs__caret {
		flex: none; width: 34px;
		font-size: 13px;
		border: none; border-radius: 10px;
		background-color: transparent !important;
		color: var(--fc-menu-text, var(--fc-ink)) !important;
		opacity: .7;
		cursor: pointer;
	}
	.fclms-side .fclms-tabs__caret:hover { opacity: 1; }
	.fclms-side .fclms-tabs__caret span { display: inline-block; transition: transform .18s ease; }
	.fclms-side .fclms-tabs__caret[aria-expanded="true"] span { transform: rotate(180deg); }

	/* Sub-filele, trase mai la dreapta, sub linia secțiunii lor. */
	.fclms-side .fclms-tabs__sub {
		display: flex; flex-direction: column; gap: 1px;
		/* Trase spre dreapta față de titlul lor, dar tot până în marginea barei. */
		width: auto !important;
		align-self: stretch !important;
		margin: 3px 0 8px 16px;
		padding-left: 10px;
		border-left: 2px solid rgba(var(--fc-primary-rgb), .22);
	}
	.fclms-side .fclms-tabs__subitem {
		display: block; width: 100%;
		text-align: left;
		font-family: inherit; font-size: 14px; line-height: 1.35;
		padding: 9px 10px;
		border: none; border-radius: 8px;
		background-color: transparent !important;
		color: var(--fc-menu-text, var(--fc-ink)) !important;
		text-decoration: none;
		opacity: .82;
		cursor: pointer;
		overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	}
	.fclms-side .fclms-tabs__subitem:hover {
		background-color: rgba(var(--fc-primary-rgb), .10) !important;
		opacity: 1;
	}
	.fclms-side .fclms-tabs__subitem.is-active {
		background-color: rgba(var(--fc-primary-rgb), .14) !important;
		font-weight: 700;
		opacity: 1;
	}

	/*
	 * O secțiune fără sub-file e tot un rând de nivel întâi, doar că fără
	 * săgeată: poartă aceleași clase ca celelalte titluri, deci se așază la
	 * fel. Aici rămâne doar culoarea de fundal, pe care o dă rama titlului.
	 */
	.fclms-side .fclms-tabs__main.is-leaf {
		justify-content: flex-start;
		text-align: left;
		background-color: transparent !important;
		opacity: 1;
	}

	/* --------------------------------------------------- josul barei */

	/*
	 * Rândul cu numele: și el un `<button>`, deci și el pândit de regula
	 * `button:hover` a temei, care i-ar umple fundalul cu alb. Stările sub
	 * cursor sunt scrise cu aceleași valori ca în repaus — nu adaugă nimic,
	 * ci opresc ce vine din afară. Că se poate apăsa se vede din cursor.
	 */
	.fclms-side__user,
	.fclms-side__user:hover,
	.fclms-side__user:focus,
	.fclms-side__user:active {
		display: flex; align-items: center; gap: 10px;
		flex: none;
		width: 100%;
		padding: 9px 10px;
		border: 1px solid var(--fc-line); border-radius: 12px;
		background-color: transparent !important;
		color: var(--fc-menu-text, var(--fc-ink)) !important;
		font-family: inherit; font-size: 14px; font-weight: 700; text-align: left;
		cursor: pointer;
		transform: none;
	}
	.fclms-side__user:focus-visible { outline: none; box-shadow: var(--fc-ring); }
	.fclms-side__avatar { width: 32px; height: 32px; border-radius: 50%; flex: none; }
	.fclms-side__uname { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

	.fclms-app--shell > .fclms-side .fclms-fs {
		flex: none;
		width: 100%;
		justify-content: center;
	}

	/*
	 * Rândul de sub-file de deasupra conținutului nu-și mai are rostul: bara
	 * din stânga le poartă pe toate. Rămâne doar în ferestrele modale, unde
	 * pastilele sunt filtre, nu navigație.
	 */
	.fclms-app--shell > .fclms-subtabs,
	.fclms-app--shell .fclms-student > .fclms-subtabs,
	.fclms-app--shell .fclms-view > .fclms-subtabs { display: none; }
	.fclms-app--shell .fclms-modal .fclms-subtabs { display: flex; }

	/*
	 * Afară de rândurile care nu sunt și în bară. Mesajele își țin cele trei
	 * rubrici aici, în pagină, tocmai ca să se treacă dintr-una în alta fără
	 * drum prin stânga — deci ascunse ar fi rămas de negăsit.
	 *
	 * Selectorii sunt copiați bucată cu bucată din regula de deasupra, cu
	 * `--views` la capăt. Nu e din lene: la fel scrisă, cântărește la fel, iar
	 * venind după câștigă. Prima încercare avea un selector mai scurt — două
	 * clase față de trei — și pierdea oricât ar fi fost de jos în fișier.
	 */
	.fclms-app--shell > .fclms-subtabs--views,
	.fclms-app--shell .fclms-student > .fclms-subtabs--views,
	.fclms-app--shell .fclms-view > .fclms-subtabs--views { display: flex; }

	/*
	 * Aici nu mai există bara de sus a aplicației — meniul e în stânga — deci
	 * rândul n-are de ce să se oprească la înălțimea ei. Se oprește sub ce e
	 * lipit cu adevărat de fereastră: antetul temei, măsurat de script.
	 */
	.fclms-app--shell .fclms-subtabs--views { top: var(--fc-sticky-top, 0px); }

	/* Conținutul primește marginea pe care o pierde bara. */
	.fclms-app--shell > *:not(.fclms-side) { margin-top: 0; }
	.fclms-app--shell > .fclms-student,
	.fclms-app--shell > .fclms-view,
	.fclms-app--shell > .fclms-panel-wrap,
	.fclms-app--shell > .fclms-vip-banner { min-width: 0; }

	/*
	 * ÎN ECRAN COMPLET
	 *
	 * Browserul impune elementului trecut în ecran complet propriile lui
	 * reguli, cu „!important”, iar acelea bat orice scriem noi: așezarea în
	 * două coloane se pierde, oricât am cere-o. Atunci nu ne mai bazăm pe
	 * ea: bara se agață de fereastră prin poziție fixă, iar conținutul își
	 * lasă loc pentru ea printr-o margine interioară pe stânga. Amândouă
	 * merg la fel, fie că e ecran complet adevărat, fie cel de rezervă.
	 */
	.fclms-app--shell:fullscreen,
	.fclms-app--shell:-webkit-full-screen,
	.fclms-app--shell.is-faux-fullscreen {
		padding-left: calc(var(--fc-side-w) + var(--fc-side-gap)) !important;
	}

	.fclms-app--shell:fullscreen > .fclms-side,
	.fclms-app--shell:-webkit-full-screen > .fclms-side,
	.fclms-app--shell.is-faux-fullscreen > .fclms-side {
		position: fixed;
		left: 0;
		top: 0;
		bottom: 0;
		width: var(--fc-side-w);
		min-width: var(--fc-side-w);
		max-width: var(--fc-side-w);
		border-radius: 0;
		/*
		 * Bara de sus își are, în ecran complet, geometria ei scrisă apăsat:
		 * rând, copii centrați, margini fixe. Bara laterală moștenea totul,
		 * de-aceea rămânea înghesuită la mijloc oricât ai fi lățit-o. Îi
		 * răspundem cu aceeași greutate, altfel nimic nu se lipește.
		 */
		align-items: stretch !important;
		min-height: 0 !important;
		margin: 0 !important;
		padding: 18px 14px !important;
		height: 100vh;
		/*
		 * Regula care descuie copiii aplicației în ecran complet le dă și
		 * revărsare liberă. Bara și-o ia înapoi: altfel meniul ei ar curge
		 * peste conținut, în mijlocul ecranului.
		 */
		display: flex !important;
		flex-wrap: nowrap;
		overflow: visible;
		flex: none;
	}

	/* Rândurile se întind în lățimea barei, nu se strâng la mijlocul ei. */
	.fclms-app--shell:fullscreen > .fclms-side > *,
	.fclms-app--shell:-webkit-full-screen > .fclms-side > *,
	.fclms-app--shell.is-faux-fullscreen > .fclms-side > * {
		align-self: stretch !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	/*
	 * În panoul de administrare al WordPress-ului, stânga e deja ocupată de
	 * meniul lui, care e tot fixat: bara noastră pornește de după el, nu peste
	 * el. Strâns, meniul acela se face de 36px — clasa e pusă pe body, deci o
	 * putem urmări. În ecran complet nu se mai vede niciunul, deci pornim din
	 * marginea ecranului.
	 */
	.wp-admin .fclms-app--shell > .fclms-side {
		left: 160px;
		top: 32px;
		height: calc(100vh - 32px);
	}
	.wp-admin.folded .fclms-app--shell > .fclms-side { left: 36px; }

	.wp-admin .fclms-app--shell:fullscreen > .fclms-side,
	.wp-admin .fclms-app--shell:-webkit-full-screen > .fclms-side,
	.wp-admin .fclms-app--shell.is-faux-fullscreen > .fclms-side {
		left: 0;
		top: 0;
		height: 100vh;
	}

	/*
	 * Bara neagră a WordPress-ului stă fixată peste pagină, deci bara noastră
	 * pornește de sub ea — și în panoul de administrare, și pe site, când e
	 * cineva conectat. În ecran complet nu se mai vede, deci nici nu contează.
	 */
	.admin-bar .fclms-app--shell > .fclms-side {
		top: 32px;
		height: calc(100vh - 32px);
	}
	.admin-bar .fclms-app--shell:fullscreen > .fclms-side,
	.admin-bar .fclms-app--shell:-webkit-full-screen > .fclms-side {
		top: 0;
		height: 100vh;
	}
}

/* Pe ecran îngust bara redevine rândul de sus, dar unul lipit de fereastră. */
@media (max-width: 1024px), (pointer: coarse) and (hover: none) {

	/*
	 * ANTETUL CARE SE AGAȚĂ
	 *
	 * Ordinea de pe ecran e cea din pagină: antetul temei, sub el antetul
	 * aplicației, apoi conținutul. Bara nu se lipește de fereastră din capul
	 * locului — ar acoperi antetul temei, care e deasupra ei — ci stă la locul
	 * ei și se agață de marginea de sus abia când ai derulat până la ea.
	 * Fiind în firul paginii, își ține singură locul: nu mai e nevoie de nicio
	 * margine care să-l păstreze.
	 */
	.fclms-app--shell { display: block; }

	.fclms-app--shell > .fclms-side {
		position: sticky;
		/*
		 * Se oprește sub barele care sunt deja lipite de fereastră — antetul
		 * temei, bara WordPress-ului. Înălțimea lor o măsoară scriptul: din
		 * foaia de stil n-avem cum ști cât ocupă tema. Fără măsurătoare,
		 * rămâne zero, adică vârful ferestrei.
		 */
		top: var(--fc-sticky-top, 0px);
		z-index: 60;
		width: auto;
		max-width: none;
		height: auto;
		/* Iese din marginile aplicației, ca să atingă marginile ecranului. */
		margin: calc(var(--fc-space-3) * -1) calc(var(--fc-space-3) * -1) var(--fc-space-2);
		border-radius: 0;
		border: 0;
		border-bottom: 1px solid var(--fc-line);
	}

	/* Pe lățimea asta, meniul WordPress e strâns la o fâșie de pictograme. */
	@media (min-width: 783px) {
		.wp-admin .fclms-app--shell > .fclms-side { left: 36px; }
	}

	/*
	 * În ecran complet, aplicația devine o coloană în care antetul e primul
	 * rând, așezat normal. Aici îl vrem la fel ca în pagină: lipit de vârful
	 * ferestrei, dintr-o margine în alta, cu conținutul curgând pe sub el.
	 * Scris apăsat, fiindcă regula care îl așază în coloană e la fel de tare.
	 */
	.fclms-app--shell:fullscreen > .fclms-side,
	.fclms-app--shell:-webkit-full-screen > .fclms-side,
	.fclms-app--shell.is-faux-fullscreen > .fclms-side {
		position: fixed !important;
		top: 0;
		left: 0;
		right: 0;
		z-index: 60;
		width: auto !important;
		min-width: 0 !important;
		max-width: none !important;
		height: auto !important;
		margin: 0 !important;
		border-radius: 0;
	}

	/* Marginea de sus a ecranului complet o dă tot antetul, nu socoteala lui. */
	.fclms-app--shell:fullscreen,
	.fclms-app--shell:-webkit-full-screen,
	.fclms-app--shell.is-faux-fullscreen {
		padding-top: calc(var(--fc-topbar-h) + 20px) !important;
	}

	/* ------------------------------------ meniul de administrare, strâns
	 *
	 * Aceeași așezare ca la cursant: o bară scundă cu clapa, numele filei
	 * deschise și ecranul complet, iar meniul întreg coboară din ea la cerere.
	 *
	 * Panoul nu e desenat aici. Deschis, scriptul îl scoate din bară, îl lipește
	 * de pagină și îi pune clasa `fclms-menupanel` — aceeași pe care o folosește
	 * și meniul cursantului. Prima încercare l-a lăsat înăuntrul barei, și
	 * atunci fiecare rând al lui primea stilurile de pastilă scrise pentru bara
	 * de navigație — `.fclms-app--admin > .fclms-tabs--admin .fclms-tab`, cu
	 * `!important` pe culoare și pe fundal — deci ieșeau pastile șterse peste
	 * un panou alb. Scos din bară, panoul nu mai e descendentul nimănui și
	 * scapă de toate.
	 *
	 * Selectorii de mai jos poartă și `.fclms-app--admin >`, ca să cântărească
	 * la fel de mult ca regulile barei de navigație: altfel padding-ul de acolo
	 * ar fi rămas cel de pe monitor.
	 */
	.fclms-app--admin > .fclms-side--admin {
		gap: 10px;
		padding: 8px var(--fc-space-3);
		min-height: var(--fc-topbar-h);
		flex-wrap: nowrap;
	}

	.fclms-app--admin > .fclms-side--admin .fclms-side__here {
		display: inline-flex; align-items: center; gap: 8px;
		min-width: 0;
		font-size: 15px; font-weight: 800;
		color: var(--fc-topbar-text, var(--fc-ink));
		white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
	}

	/* Cât stă în bară, meniul e doar sursa panoului; se vede abia scos din ea. */
	.fclms-app--admin > .fclms-side--admin > .fclms-side__nav { display: none; }

	/*
	 * Rândul de sub-file din pagină e de prisos: meniul le poartă pe toate.
	 * Numai cel de sus, al secțiunii — pastilele dinăuntrul unui panou, ca
	 * grupurile din Setări, rămân la locul lor.
	 */
	.fclms-app--admin > .fclms-subtabs { display: none; }

	/*
	 * Afară de secțiunile care nu se desfac în meniu — Vânzări, Agent. Acolo
	 * clapa arată un singur rând, cu numele secțiunii, iar filele se aleg
	 * numai de aici: ascunse, ar fi rămas de negăsit pe telefon.
	 */
	.fclms-app--admin > .fclms-subtabs--views { display: flex; }

	/* Clopoțelul și punctele rămân împinse în dreapta barei. */
	.fclms-app--student > .fclms-topbar .fclms-side__meta {
		display: flex; align-items: center; gap: 10px;
		margin-left: auto;
	}
}

/*
 * „hidden” înseamnă ascuns — dar numai cât timp nimic nu-i spune altfel.
 * Regula care așază lista de sub-file pe coloană îi lua locul, așa că
 * secțiunile rămâneau desfăcute oricât ai fi apăsat pe săgeată. Scutul se
 * pune la urmă și apăsat, ca nicio regulă de mai sus să nu-l mai poată bate,
 * și privește ambele meniuri: cel din bara laterală și cel de pe telefon.
 */
.fclms-tabs__sub[hidden] { display: none !important; }

/* ===========================================================================
   FORMULARE ÎN FEREASTRĂ
   Formularul de adăugare nu mai stă desfășurat sub listă: în pagină rămâne un
   buton, lângă titlu. Locul din care a plecat formularul e păstrat gol, ca la
   închiderea ferestrei să aibă unde se întoarce.
   =========================================================================== */

.fclms-formslot { display: block; }
.fclms-formslot > form[hidden] { display: none !important; }

/*
 * Butonul rămas în locul formularului.
 *
 * De obicei el urcă lângă titlul listei, în bara de sus, care are grija ei
 * de spațiu. Dar o listă fără titlu — cupoanele — nu-i face loc, iar el
 * rămâne aici, lipit de cartonașul de dedesubt. Distanța e aceeași cu a
 * barei, ca butonul să stea la fel de departe de listă în amândouă cazurile.
 */
.fclms-formslot > .fclms-btn { margin-bottom: 14px; }

/* Titlul listei și butonul de adăugare, pe același rând. */
.fclms-toolbar--add { margin-bottom: 14px; }
.fclms-toolbar--add .fclms-h2 { margin: 0 !important; }

/* În fereastră formularul nu mai are nevoie de ramă proprie. */
.fclms-modal .fclms-form { margin: 0; padding: 0; border: 0; background: none; box-shadow: none; }
.fclms-modal .fclms-form .fclms-field:last-of-type { margin-bottom: 0; }

/* ============================================================ ORA DE CLASĂ

   Două ecrane foarte diferite, din același fișier. Consola profesorului stă pe
   un monitor sau pe un videoproiector: codul trebuie citit din ultima bancă,
   iar clasa trebuie cuprinsă dintr-o privire. Ecranul elevului stă într-o
   palmă: un singur lucru odată, cu degetul mare la îndemână.
*/

/*
 * Consola orei ține toată lățimea paginii, ca orice altă rubrică.
 *
 * Avea o margine a ei, la 960 de pixeli: pe un ecran lat, marginea din dreapta
 * cădea în alt loc decât la Cartonașe sau la Prieteni, iar trecerea dintr-o
 * rubrică în alta se vedea ca o săritură. O pagină îngustă are rost acolo unde
 * se citește un text lung, nu acolo unde se ține o oră cu clasa în față.
 */

/* Codul, cât să se citească de la distanță. Cifrele și literele merg
   tabulare: altfel un cod cu I și cu M pare că-și schimbă lățimea. */

.fclms-live-late { margin-top: 4px; }
.fclms-live-late__hint { font-size: 12px; margin: 4px 0 16px; }

.fclms-live-step { font-size: 14px; color: var(--fc-muted); margin-bottom: 10px; }

.fclms-live-card {
	background: var(--fc-surface); border: 1px solid var(--fc-line);
	border-radius: var(--fc-radius); padding: 24px; margin-bottom: 16px;
}
.fclms-live-card__front { font-size: clamp(20px, 3.4vw, 32px); line-height: 1.35; }

/* „Trimite răspunsul” stă mai jos, desprins de sarcină: apăsat din greșeală în
   timp ce completezi, trimite un răspuns neterminat, iar în ora live nu se mai
   poate lua înapoi.

   Selectorul poartă și `.fclms-app` fiindcă `.fclms-app p { margin: 0 0 12px }`
   e mai specific decât o clasă singură și ar câștiga în fața ei. */
.fclms-app .fclms-live-send { margin-top: 36px; margin-bottom: 4px; }
.fclms-live-card__back {
	margin-top: 20px; padding-top: 20px; border-top: 2px solid var(--fc-line);
	font-size: clamp(18px, 3vw, 28px); color: var(--fc-success); font-weight: 700;
}
.fclms-live-actions { margin-bottom: 20px; }

/* Clasa. Rândurile sunt strânse: treizeci de elevi trebuie să încapă pe un
   ecran, altfel profesorul derulează în loc să se uite la ei. */
.fclms-live-class { display: flex; flex-direction: column; gap: 4px; margin: 12px 0 20px; }
.fclms-live-player {
	display: flex; align-items: center; gap: 10px; padding: 8px 12px;
	background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: 10px;
}
.fclms-live-player.is-me { border-color: var(--fc-primary); background: rgba(var(--fc-primary-rgb), .06); }
.fclms-live-player__rank { min-width: 24px; font-size: 13px; color: var(--fc-muted); font-variant-numeric: tabular-nums; }
.fclms-live-player__name { flex: 1; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fclms-live-player__score { font-variant-numeric: tabular-nums; }
.fclms-chip--wait { opacity: .5; }

/* ------------------------------------------------------------ elevul */

.fclms-app--live { max-width: 560px; margin: 0 auto; padding: 20px 16px 40px; }

.fclms-live-door .fclms-live-input {
	font-size: 28px; letter-spacing: .18em; text-align: center; text-transform: uppercase;
	font-variant-numeric: tabular-nums;
}

/* Numele și punctele proprii rămân sus, lipite: elevul vrea să știe unde e
   fără să caute, iar cartonașul se schimbă sub ele. */
.fclms-live-mine {
	display: flex; align-items: center; gap: 10px; margin-bottom: 14px;
	padding-bottom: 10px; border-bottom: 1px solid var(--fc-line); font-size: 14px;
}
.fclms-live-mine b { margin-left: auto; font-size: 20px; font-variant-numeric: tabular-nums; }
.fclms-live-mine span:last-child { margin-left: 0; }

.fclms-live-wait { text-align: center; }
.fclms-live-people { font-size: 14px; color: var(--fc-muted); }

.fclms-live-play .fclms-live-card__front { font-size: clamp(20px, 6vw, 30px); margin-bottom: 18px; }
.fclms-live-play .fclms-choice { padding: 14px 16px; font-size: 17px; }

.fclms-live-sent {
	padding: 16px; text-align: center; border-radius: 10px;
	background: var(--fc-surface); color: var(--fc-muted);
}
.fclms-live-verdict {
	margin-top: 12px; padding: 18px; text-align: center; border-radius: 10px;
	font-size: 22px; font-weight: 800;
}
.fclms-live-verdict.is-ok { background: var(--fc-success-soft); color: var(--fc-success); }
.fclms-live-verdict.is-bad { background: var(--fc-danger-soft); color: var(--fc-danger); }

/* Degetul mare ajunge greu în vârful ecranului: pe telefon butonul de trimis
   ocupă toată lățimea, jos, unde cade mâna. */
@media (max-width: 640px) {
	.fclms-live-play [data-send], .fclms-live-door [data-join] { width: 100%; }
}

/* ================================================ MESAJELE CĂTRE CURSANȚI */

/* Fereastra cursantului. Textul se citește o dată, deci are aer: rândurile
   rare și butonul departe de text, ca degetul să nu-l atingă din greșeală
   înainte de a fi citit ce scrie deasupra. */
.fclms-msgpop__body { font-size: 16px; line-height: 1.6; white-space: pre-wrap; }
.fclms-msgpop__body p { margin: 0 0 12px; }
.fclms-msgpop__go { margin: 20px 0 0; }

/* Lista de cursanți din panoul adminului: se derulează, ca o clasă de trei
   sute să nu împingă butonul de salvare dincolo de marginea ecranului. */
.fclms-msgpeople {
	max-height: 260px; overflow-y: auto; margin-top: 10px; padding: 10px;
	border: 1px solid var(--fc-line); border-radius: 10px; background: var(--fc-surface);
	display: flex; flex-direction: column; gap: 6px;
}

/* ============================================ CARTONAȘUL DINTR-O DISCUȚIE

   Stă în bula mesajului, deasupra textului. Are chenar propriu, ca să se vadă
   din prima că nu e o vorbă a prietenului, ci lucrul despre care se vorbește.
*/
.fclms-cardchip {
	margin-bottom: 8px; padding: 12px; border-radius: 10px;
	background: var(--fc-paper); border: 1px solid var(--fc-line);
}
/*
 * Cartonașul prins de un mesaj, în bula mea: fundal plin, deci caseta se face
 * din lumină, nu din hârtie. Butonul dinăuntru la fel — un buton cenușiu pe
 * albastru închis nu se citește.
 */
.fclms-bubble.is-mine .fclms-cardchip {
	background: rgba(255, 255, 255, .14);
	border-color: rgba(255, 255, 255, .28);
}
.fclms-bubble.is-mine .fclms-cardchip .fclms-btn {
	background: rgba(255, 255, 255, .18) !important;
	border-color: rgba(255, 255, 255, .32) !important;
	color: #fff !important;
}
.fclms-bubble.is-mine .fclms-cardchip__back { border-top-color: rgba(255, 255, 255, .3); }

.fclms-cardchip__set { display: block; font-size: 11px; opacity: .7; margin-bottom: 6px; }
.fclms-cardchip__front { font-weight: 600; margin-bottom: 8px; }
.fclms-cardchip__back { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--fc-line); }
.fclms-cardchip.is-locked .fclms-cardchip__note { font-size: 12px; opacity: .75; }

/* Prietenii din fereastra de trimitere: pastile care încap pe mai multe rânduri,
   ca o listă lungă să nu împingă butonul afară din fereastră. */
.fclms-discuss-people {
	display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 16px;
	max-height: 180px; overflow-y: auto;
}
.fclms-discuss-people .fclms-chip { cursor: pointer; }
.fclms-discuss-people .fclms-chip.is-active {
	background: var(--fc-primary); color: #fff; border-color: var(--fc-primary);
}

/* ==================================================== RUBRICA ANUNȚURI

   Ce a apărut o dată ca fereastră rămâne aici, ca într-o cutie poștală: se
   citește când ai timp și se aruncă atunci când vrei tu, nu când vrem noi.
*/

/* Nedeschis încă: o dungă în capăt, nu o culoare peste tot. Un anunț citit și
   unul necitit trebuie să se deosebească dintr-o privire, fără să țipe. */



/* ================================== FACTURA ȘI DIPLOMA, ÎNTR-O FEREASTRĂ

   Documentul vine într-un cadru, cu stilurile lui de tipar neatinse. Fereastra
   îi dă doar o bară cu două butoane și înălțime cât să se citească fără să
   umple tot ecranul.
*/
.fclms-docview { display: flex; flex-direction: column; gap: 12px; }
.fclms-docview__bar { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; }
.fclms-docview__frame {
	width: 100%; height: min(70vh, 900px); border: 1px solid var(--fc-line);
	border-radius: 10px; background: #fff;
}
/* Pe telefon documentul are nevoie de tot ecranul: o factură strânsă în
   jumătate de ecran nu se citește, se ghicește. */
@media (max-width: 640px) {
	.fclms-docview__frame { height: 62vh; }
	.fclms-docview__bar .fclms-btn { flex: 1; text-align: center; }
}

/* Caseta de căutare din fereastra „Discută cu un prieten”. Stă lipită de lista
   de sub ea, ca să se vadă că le caută pe acelea, nu altceva din fereastră. */
.fclms-discuss-search { width: 100%; margin-bottom: 8px; }
.fclms-discuss-people .fclms-chip .fclms-muted { font-weight: 400; }

/* Filtrul din „Prietenii mei”: lat cât rândul, ca să nu pară o casetă rătăcită. */
.fclms-friendfilter { width: 100%; }

/* ============================================ MASA DE LA TREI JUCĂTORI ÎN SUS

   Clasa se numea „fclms-table” și a călcat peste toate tabelele din
   administrare, care o purtau de mult: rândurile lor s-au trezit albastre, cu
   butoanele ieșite din chenar. De aici numele „fclms-seats” — locurile de la
   masă, nu masa.

   La doi, arena cu tăietură arată o înfruntare. De la trei încolo nu mai există
   „hotarul dintre noi”, ci o masă: fiecare cu rândul lui, în ordinea scorului,
   cu semnul lui alături. Rândurile sunt strânse, ca patru oameni și cartonașul
   de dedesubt să încapă pe un ecran de telefon.
*/

/* Rândul tău are chenar, nu altă culoare: îl găsești din priviri fără ca masa
   să se rupă în două. */


/* Sala de așteptare: cine e la masă și cine mai e chemat. */
.fclms-lobby { margin-top: 18px; text-align: left; }
.fclms-lobby__row { margin-bottom: 14px; }
.fclms-lobby__row .fclms-h3 { margin: 0 0 6px; font-size: 14px; }
.fclms-lobby__people { display: flex; flex-wrap: wrap; gap: 6px; }

/* Insigna de pe abonamentele pentru profesori: se vede înainte de plată, nu după. */
.fclms-plan-card__for { margin-bottom: 6px; }

/* ==================================================== RAPORTUL DE VÂNZĂRI

   O pagină de citit și de tipărit, nu una cu care se lucrează: cifrele mari
   sus, tabelele dedesubt, fără nimic care să ceară o apăsare ca să se vadă.
*/
.fclms-report-filter { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 18px; }
.fclms-report-filter .fclms-field { margin: 0; min-width: 160px; }

.fclms-report-nums { display: flex; flex-wrap: wrap; gap: 10px; }
.fclms-report-num {
	flex: 1 1 150px; padding: 12px 14px; border-radius: 12px;
	background: var(--fc-paper); border: 1px solid var(--fc-line);
}

/*
 * Ruptura de rând.
 *
 * Cifrele stau în două grupuri: sus cele trei care se trec într-o declarație
 * — încasatul, baza și TVA-ul — jos restul. Lăsat pe seama lățimii, rândul se
 * rupea altundeva la fiecare ecran, iar cine se uită de două ori la același
 * raport, pe două calculatoare, nu mai găsea cifra unde o lăsase.
 *
 * Un element lat cât tot și înalt cât nimic împinge ce urmează pe rândul de
 * dedesubt. E singurul fel de a scrie o ruptură într-un rând care se rupe
 * singur — un `flex-wrap` n-are noțiunea de „aici”.
 */
.fclms-report-nums__break { flex: 0 0 100%; height: 0; margin: 0; }
/* Cifra care contează cel mai mult are alt fundal: ochiul o găsește prima. */
.fclms-report-num.is-lead { background: var(--fc-primary); border-color: var(--fc-primary); color: #fff; }
.fclms-report-num__label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; opacity: .75; }
.fclms-report-num__value { display: block; margin-top: 4px; font-size: 20px; font-variant-numeric: tabular-nums; }

/* Barele: o zi lângă alta, fiecare măsurată față de cea mai bună din perioadă.
   Fără bibliotecă de grafice — un raport n-are de ce să aștepte după una. */
.fclms-report-bars { display: flex; flex-direction: column; gap: 4px; }
.fclms-report-bar { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.fclms-report-bar__key { min-width: 92px; color: var(--fc-muted); font-variant-numeric: tabular-nums; }
.fclms-report-bar__track { flex: 1; height: 16px; background: var(--fc-paper); border-radius: 8px; overflow: hidden; }
.fclms-report-bar__fill { display: block; height: 100%; background: var(--fc-primary); border-radius: 8px; min-width: 2px; }
.fclms-report-bar__value { min-width: 90px; text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.fclms-report-bar__count { min-width: 28px; text-align: right; color: var(--fc-muted); font-variant-numeric: tabular-nums; }

@media (max-width: 640px) {
	.fclms-report-bar__key { min-width: 74px; font-size: 12px; }
	.fclms-report-bar__value { min-width: 70px; }
}

/* ============================== BIFA „DUSĂ LA CONTABILITATE”

   Un buton care arată ca o căsuță de bifat, fiindcă asta și face. Căsuța
   adevărată ar fi avut nevoie de JavaScript ca să trimită formularul, iar în
   ecran complet trimiterea aceea ar fi ocolit tocmai partea care ține pagina
   pe loc.
*/
.fclms-accounted { vertical-align: middle; white-space: nowrap; }
.fclms-accounted form { display: inline-flex; vertical-align: middle; }

.fclms-accounted__mark {
	width: 26px; height: 26px; padding: 0; cursor: pointer;
	display: inline-flex; align-items: center; justify-content: center;
	font: inherit; font-size: 15px; line-height: 1;
	background: var(--fc-surface); color: transparent;
	border: 2px solid var(--fc-line); border-radius: 7px;
	transition: background-color .15s ease, border-color .15s ease;
}
.fclms-accounted__mark:hover { border-color: var(--fc-primary); }
/* Nebifată, dar sub cursor: bifa se ivește stins, ca să se vadă unde duce apăsarea. */
.fclms-accounted__mark:not(.is-done)::before { content: '✓'; color: transparent; }
.fclms-accounted__mark:not(.is-done):hover::before { color: var(--fc-line); }
.fclms-accounted__mark.is-done {
	background: var(--fc-success); border-color: var(--fc-success); color: #fff;
}
.fclms-accounted__mark.is-done:hover { background: var(--fc-danger); border-color: var(--fc-danger); }

.fclms-accounted__when { display: block; margin-top: 3px; font-size: 11px; color: var(--fc-muted); }

/* ================================================================ ARENA

   O bandă pentru fiecare om de la masă, de lățimi egale. Poza sus, numele sub
   ea, punctele dedesubt.

   Înainte era o tăietură oblică între două culori, care se plimba după scor:
   arăta bine la doi și n-avea niciun înțeles la patru, fiindcă între patru
   oameni nu există „hotar”. Benzile merg la fel pentru oricâți, iar cine
   conduce se vede din locul lui în șir.
*/
.fclms-arena {
	border-radius: 16px; overflow: hidden; margin-bottom: 16px;
	box-shadow: 0 1px 2px rgba(30, 42, 56, .08);
}

.fclms-arena__players { display: grid; }
.fclms-arena.is-1 .fclms-arena__players { grid-template-columns: 1fr; }
.fclms-arena.is-2 .fclms-arena__players { grid-template-columns: repeat(2, 1fr); }
.fclms-arena.is-3 .fclms-arena__players { grid-template-columns: repeat(3, 1fr); }
.fclms-arena.is-4 .fclms-arena__players { grid-template-columns: repeat(4, 1fr); }

.fclms-arena__player {
	display: flex; flex-direction: column; align-items: center; gap: 6px;
	padding: 18px 10px 16px; color: #fff; text-align: center; min-width: 0;
	background: var(--fc-band);
}
/* Patru culori deosebite, dar din aceeași familie: se văd dintr-o privire fără
   să pară un semafor. A cincea nu e nevoie — la masă încap patru. */
.fclms-arena__player.is-p1 { --fc-band: #14314A; }
.fclms-arena__player.is-p2 { --fc-band: #C0392B; }
.fclms-arena__player.is-p3 { --fc-band: #1F7A6B; }
.fclms-arena__player.is-p4 { --fc-band: #8A5A2B; }

/* Banda ta are o dungă deschisă în capătul de sus: o găsești fără să citești. */
.fclms-arena__player.is-me { box-shadow: inset 0 4px 0 rgba(255, 255, 255, .8); }
.fclms-arena__player.is-gone { opacity: .5; }

.fclms-arena__face { position: relative; display: block; }
.fclms-arena__face img {
	width: 56px; height: 56px; border-radius: 50%; object-fit: cover;
	border: 3px solid rgba(255, 255, 255, .85); background: #fff; display: block;
}
/* Semnul stă în colțul pozei, nu lângă nume: acolo îl caută ochiul. */
.fclms-arena__mark {
	position: absolute; right: -4px; bottom: -2px;
	min-width: 22px; height: 22px; padding: 0 4px; border-radius: 999px;
	display: flex; align-items: center; justify-content: center;
	font-size: 12px; font-weight: 800; line-height: 1;
	background: #fff; color: var(--fc-ink);
	box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
}
.fclms-arena__mark.is-ok { background: var(--fc-success); color: #fff; }
.fclms-arena__mark.is-no { background: var(--fc-danger); color: #fff; }
.fclms-arena__mark.is-wait, .fclms-arena__mark.is-done { color: var(--fc-muted); }

.fclms-arena__name {
	font-size: 13px; font-weight: 700; max-width: 100%;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-arena__score { font-size: 26px; line-height: 1; font-variant-numeric: tabular-nums; }

/* Rândul de jos ține numărul rundei și ceasul, pe fundal neutru: pus peste
   benzi, ar fi căzut peste altă culoare la fiecare meci. */
.fclms-arena__bar {
	display: flex; align-items: center; justify-content: center; gap: 12px;
	padding: 7px 12px; background: var(--fc-ink); color: #fff;
}
.fclms-arena__round { font-size: 12px; font-weight: 800; letter-spacing: .04em; }
.fclms-arena__round i { font-style: normal; opacity: .55; margin: 0 1px; }
.fclms-arena__clock {
	min-width: 34px; text-align: center; padding: 2px 8px; border-radius: 999px;
	background: rgba(255, 255, 255, .16); font-weight: 800;
	font-variant-numeric: tabular-nums;
}
.fclms-arena__clock.is-low { background: var(--fc-danger); }

.fclms-duel__endicon { font-size: 44px; margin: 6px 0 0; }

/* Pe telefon, patru benzi devin prea înguste pentru un nume: trec pe două
   rânduri, iar pozele se micșorează. */
@media (max-width: 560px) {
	.fclms-arena.is-3 .fclms-arena__players,
	.fclms-arena.is-4 .fclms-arena__players { grid-template-columns: repeat(2, 1fr); }
	.fclms-arena__face img { width: 44px; height: 44px; }
	.fclms-arena__score { font-size: 22px; }
	.fclms-arena__player { padding: 14px 8px 12px; }
}

/* ======================================================= CLASA LIVE (PROFESOR)

   Ecranul acesta se vede pe un videoproiector, în fața unei clase: codul cât
   să se citească din ultima bancă, iar restul cât să nu-l acopere.
*/

/* Alegerea pachetului: fișe, nu rânduri. Într-un rând, titlul și setul se
   lipeau unul de altul și nu se mai deosebeau. */
.fclms-decks {
	display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
	gap: 14px; margin-top: 18px;
}
.fclms-deck {
	display: flex; flex-direction: column; gap: 4px;
	padding: 18px 16px; text-align: left; font-family: inherit; cursor: pointer;
	background: var(--fc-surface); border: 1px solid var(--fc-line);
	border-radius: 14px; box-shadow: 0 1px 2px rgba(22, 32, 43, .05);
	transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.fclms-deck:hover {
	transform: translateY(-3px); border-color: var(--fc-primary);
	box-shadow: 0 10px 22px rgba(22, 32, 43, .12);
}
.fclms-deck__icon { font-size: 26px; line-height: 1; }
.fclms-deck__title { font-size: 16px; font-weight: 800; color: var(--fc-ink); }
.fclms-deck__set { font-size: 13px; color: var(--fc-muted); }
.fclms-deck__count { font-size: 12px; color: var(--fc-muted); }
.fclms-deck__go {
	margin-top: 10px; align-self: flex-start;
	padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 700;
	background: var(--fc-primary); color: #fff;
}

/* Codul orei. Cifrele merg tabulare, ca un cod cu I și cu M să nu pară că-și
   schimbă lățimea cât timp e dictat cu voce tare. */
.fclms-code {
	margin: 18px 0; padding: 22px 18px; text-align: center;
	background: var(--fc-primary); color: #fff; border-radius: 18px;
}
.fclms-code__label { display: block; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; opacity: .75; }
.fclms-code__row { display: flex; align-items: center; justify-content: center; gap: 12px; margin: 6px 0 14px; }
.fclms-code__value {
	font-size: clamp(44px, 10vw, 92px); line-height: 1; font-weight: 800;
	letter-spacing: .14em; font-variant-numeric: tabular-nums;
}
.fclms-copy {
	width: 38px; height: 38px; flex: none; cursor: pointer;
	font: inherit; font-size: 17px; line-height: 1;
	background: rgba(255, 255, 255, .16); color: #fff;
	border: 1px solid rgba(255, 255, 255, .35); border-radius: 10px;
	transition: background-color .15s ease;
}
.fclms-copy:hover { background: rgba(255, 255, 255, .3); }

.fclms-code__link { display: flex; gap: 8px; max-width: 560px; margin: 0 auto; }
.fclms-code__url {
	flex: 1; min-width: 0; padding: 9px 12px; font: inherit; font-size: 13px;
	background: rgba(255, 255, 255, .12); color: #fff;
	border: 1px solid rgba(255, 255, 255, .3); border-radius: 10px;
	text-overflow: ellipsis;
}
.fclms-code__link .fclms-btn { flex: none; }

/* Elevii intrați: fișe mici, cât să încapă o clasă întreagă pe un ecran. */
.fclms-pupils {
	display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 8px; margin: 14px 0 20px;
}
.fclms-pupil {
	position: relative; display: flex; align-items: center; gap: 8px;
	/* Se rupe pe două rânduri fiindcă sub nume se scrie, la dezvăluire, chiar
	   ce a răspuns elevul — rândul acela are nevoie de linia lui. */
	flex-wrap: wrap;
	padding: 10px 12px; background: var(--fc-surface);
	border: 1px solid var(--fc-line); border-radius: 12px;
}
/* Primii trei se văd din locul lor, nu dintr-o medalie: doar o dungă în capăt. */
.fclms-pupil.is-top { border-left: 3px solid var(--fc-accent); }
.fclms-pupil__rank { font-size: 12px; color: var(--fc-muted); min-width: 16px; font-variant-numeric: tabular-nums; }
.fclms-pupil__name { flex: 1; font-weight: 600; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fclms-pupil__score { font-variant-numeric: tabular-nums; }
.fclms-pupil__mark { font-size: 14px; font-weight: 800; }
.fclms-pupil__mark.is-ok { color: var(--fc-success); }
.fclms-pupil__mark.is-no { color: var(--fc-danger); }
.fclms-pupil__mark.is-wait { color: var(--fc-muted); opacity: .6; }

@media (max-width: 560px) {
	.fclms-code { padding: 18px 12px; }
	.fclms-code__link { flex-direction: column; }
	.fclms-code__link .fclms-btn { width: 100%; }
}

/* ---------------------------------------------------------------------------
   BUTOANELE CARE NU ARATĂ A BUTON

   Fișele de pachet și folderele sunt <button> — au nevoie să fie, ca să se poată
   apăsa cu tastatura. Multe teme colorează însă orice buton la trecerea
   cursorului, iar fișa se făcea deodată albastră peste tot, cu textul aproape
   nevăzut. Fundalul lor se scrie deci apăsat, și în starea obișnuită, și la
   hover: culoarea e a noastră, nu a temei.
   --------------------------------------------------------------------------- */
.fclms-app .fclms-deck,
.fclms-app .fclms-deck:hover,
.fclms-app .fclms-deck:focus,
.fclms-modal .fclms-deck {
	background: var(--fc-surface) !important;
	color: var(--fc-ink) !important;
}

.fclms-app .fclms-folder,
.fclms-app .fclms-folder:hover,
.fclms-app .fclms-folder:focus {
	/* Prima linie ține locul celei de sub ea pe browserele care nu amestecă culori. */
	background: var(--fc-surface) !important;
	background: color-mix(in srgb, var(--fc-folder, var(--fc-primary)) 10%, #fff) !important;
	color: var(--fc-ink) !important;
}

/* Butonul dinăuntrul fișei rămâne colorat, dar cu culoarea lui, nu a temei. */
.fclms-app .fclms-deck .fclms-deck__go,
.fclms-app .fclms-deck:hover .fclms-deck__go {
	background: var(--fc-primary); color: #fff;
}

/* ============================================ ANUNȚURI, CA O CUTIE POȘTALĂ

   Lista arată titlul, câteva cuvinte din text și ziua — ca într-o listă de
   emailuri. Textul întreg se vede apăsând. Așa se caută cu ochiul printre zece
   anunțuri fără să derulezi pe lângă zece paragrafe.
*/
.fclms-inbox {
	border: 1px solid var(--fc-line); border-radius: 14px; overflow: hidden;
	background: var(--fc-surface);
}
.fclms-inbox__row { display: flex; align-items: stretch; border-bottom: 1px solid var(--fc-line); }
.fclms-inbox__row:last-child { border-bottom: none; }
.fclms-inbox__row:hover { background: var(--fc-paper); }

.fclms-inbox__open,
.fclms-app .fclms-inbox__open {
	flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px;
	padding: 14px 12px; text-align: left; font-family: inherit; cursor: pointer;
	background: none; border: 0; color: inherit;
}
/* Bulina spune dintr-o privire ce n-ai deschis încă; la cele citite rămâne
   locul ei gol, ca rândurile să nu se miște unul față de altul. */
.fclms-inbox__dot {
	width: 9px; height: 9px; border-radius: 50%; flex: none; background: transparent;
}
.fclms-inbox__row.is-fresh .fclms-inbox__dot { background: var(--fc-accent); }

.fclms-inbox__title { flex: 1; min-width: 0; font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fclms-inbox__row.is-fresh .fclms-inbox__title { font-weight: 800; }

.fclms-inbox__date { flex: none; font-size: 12px; color: var(--fc-muted); white-space: nowrap; }

.fclms-inbox__drop {
	flex: none; width: 44px; cursor: pointer; font-size: 15px;
	background: none; border: 0; border-left: 1px solid var(--fc-line); color: var(--fc-muted);
}
.fclms-inbox__drop:hover { color: var(--fc-danger); background: var(--fc-danger-soft); }

/* Anunțul deschis: text mai aerisit decât în listă, fiindcă aici se citește.
   Lățimea rămâne însă a paginii — avea o margine proprie, la 760 de pixeli, iar
   marginea din dreapta cădea în alt loc decât în lista din care tocmai ai
   plecat. Rândul se ține scurt din mărimea textului, nu dintr-o tăietură. */
.fclms-newsone__title { margin: 0 0 4px; font-size: 22px; }
.fclms-newsone__date { display: block; margin-bottom: 16px; font-size: 12px; color: var(--fc-muted); }
.fclms-newsone__body { line-height: 1.65; white-space: pre-wrap; }
.fclms-newsone__body p { margin: 0 0 12px; }

/* Pe telefon nu încap toate trei pe un rând: rămâne titlul și ziua, iar
   frânturile de text se ascund. */
@media (max-width: 640px) {
	.fclms-inbox__title { max-width: none; flex: 1; }
}

/* ---------------------------------------------------------------------------
   CULOAREA E A APLICAȚIEI, NU A TEMEI

   Multe teme colorează orice <button> la trecerea cursorului. Regula lor,
   `button:hover`, cântărește în socoteala CSS mai mult decât un stil scris pe o
   singură clasă — de aceea rândurile de anunțuri și fișele se făceau albastre.

   Butoanele cu fundal propriu au primit mai sus o a doua formă, sub
   `.fclms-app`, care le ridică peste regula temei. Cele de mai jos n-au fundal
   deloc — sunt fie modificatori care doar schimbă mărimea, fie butoane care
   trebuie să rămână curate. Pentru ele se spune limpede: fără fundal, nici în
   repaus, nici sub cursor.
   --------------------------------------------------------------------------- */
.fclms-app .fclms-btn--big, .fclms-app .fclms-btn--big:hover,
.fclms-app .fclms-btn--icon, .fclms-app .fclms-btn--icon:hover,
.fclms-app .fclms-plan-card__cta, .fclms-app .fclms-plan-card__cta:hover,
.fclms-app .fclms-set-card__open, .fclms-app .fclms-set-card__open:hover {
	/* Mărimea o dau ei, culoarea o dă clasa de bază `.fclms-btn` de deasupra. */
	background-color: inherit;
}

.fclms-app .fclms-burger, .fclms-app .fclms-burger:hover,
.fclms-app .fclms-points--link, .fclms-app .fclms-points--link:hover,
.fclms-app .fclms-report, .fclms-app .fclms-report:hover,
.fclms-app .fclms-tabs__caret, .fclms-app .fclms-tabs__caret:hover {
	background-color: transparent;
}

/* Filtrul de pe pagina de abonamente: pastile, ca cele din contul cursantului. */
.fclms-planfilter { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 14px; }

/* ============================================== BULINA DE AJUTOR ȘI VIZITATORII

   Bulina stă în colțul din dreapta jos, peste orice altceva, dar nu chiar în
   colț: pe telefoane acolo trec degetele pe bara browserului.
*/
.fclms-helper-root { position: fixed; right: 18px; bottom: 18px; z-index: 9999; }

/* Semnul se vede de departe, dar cercul rămâne cerc: i-am lăsat în jur un
   inel de câțiva pași, cât să nu pară că desenul dă pe dinafară. */
.fclms-helper__btn {
	width: 76px; height: 76px; border-radius: 50%; cursor: pointer;
	display: flex; align-items: center; justify-content: center;
	padding: 0; font-size: 54px; line-height: 1; border: 0;
	background: var(--fc-primary); color: #fff;
	box-shadow: 0 6px 18px rgba(22, 32, 43, .28);
	transition: transform .15s ease;
}
.fclms-app .fclms-helper__btn, .fclms-app .fclms-helper__btn:hover,
.fclms-helper__btn:hover { background: var(--fc-primary); color: #fff; }
.fclms-helper__btn:hover { transform: scale(1.06); }

/*
 * Mărimea vine din JavaScript, ca stil pe element, fiindcă e a omului: el o
 * potrivește trăgând de colț, iar browserul o ține minte. Aici rămân doar
 * marginile de siguranță, ca o mărime ținută minte pe un ecran lat să nu iasă
 * din unul îngust.
 */
.fclms-helper__panel {
	position: absolute; right: 0; bottom: 88px;
	width: min(420px, calc(100vw - 36px));
	max-width: calc(100vw - 36px);
	max-height: calc(100vh - 140px);
	display: flex; flex-direction: column; overflow: hidden;
	background: var(--fc-surface); border: 1px solid var(--fc-line);
	border-radius: 16px; box-shadow: 0 12px 40px rgba(22, 32, 43, .25);
}

/*
 * Colțul de tras, în stânga sus. Semnul e desenat din două dungi înclinate:
 * se recunoaște fără să fie nevoie de nicio explicație, și nu cere o poză.
 */
.fclms-helper__grip {
	position: absolute; top: 0; left: 0; z-index: 3;
	width: 26px; height: 26px; cursor: nwse-resize;
	background:
		linear-gradient(135deg, transparent 42%, rgba(255, 255, 255, .75) 42%, rgba(255, 255, 255, .75) 52%, transparent 52%),
		linear-gradient(135deg, transparent 62%, rgba(255, 255, 255, .55) 62%, rgba(255, 255, 255, .55) 72%, transparent 72%);
	border-top-left-radius: 16px;
	touch-action: none;
}
.fclms-helper__grip:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }

/* Cât se trage, cursorul rămâne al colțului chiar dacă degetul iese din el. */
body.fclms-is-resizing { cursor: nwse-resize; user-select: none; }

.fclms-helper__head { padding: 12px 16px 12px 34px; font-weight: 800; background: var(--fc-primary); color: #fff; }

/* Jurnalul ia tot ce rămâne între cap și formular. `min-height: 0` e cheia:
   fără el, un cuvânt lung ar umfla cutia în loc s-o pună pe derulare. */
.fclms-helper__log { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.fclms-helper__hello { margin: 0; color: var(--fc-muted); font-size: 14px; }

/* Mesajele vizitatorului la dreapta, ale noastre la stânga — ca în orice
   discuție, ca să nu fie nevoie de nume pe fiecare rând. */
.fclms-helper__line {
	max-width: 85%; align-self: flex-end; padding: 8px 12px; border-radius: 14px 14px 4px 14px;
	background: var(--fc-primary); color: #fff; font-size: 14px; line-height: 1.45;
}
.fclms-helper__line.is-staff {
	align-self: flex-start; border-radius: 14px 14px 14px 4px;
	background: var(--fc-paper); color: var(--fc-ink);
}
.fclms-helper__closed { margin: 0; padding: 12px; font-size: 13px; color: var(--fc-muted); border-top: 1px solid var(--fc-line); }

.fclms-helper__form { display: flex; gap: 8px; padding: 10px; border-top: 1px solid var(--fc-line); align-items: flex-end; }
.fclms-helper__form textarea { flex: 1; min-width: 0; resize: none; font: inherit; font-size: 14px; padding: 8px 10px; border: 1px solid var(--fc-line); border-radius: 10px; }

@media (max-width: 480px) {
	.fclms-helper-root { right: 12px; bottom: 12px; }
	.fclms-helper__panel { max-height: calc(100vh - 120px); }
	/* Pe telefon nu se trage de colț: ecranul e oricum plin, iar degetul ar
	   prinde mai degrabă textul de dedesubt decât dunga de câțiva pași. */
	.fclms-helper__grip { display: none; }
	.fclms-helper__head { padding-left: 16px; }
}

/* ----------------------------------------- discuțiile, la biroul agentului */
.fclms-guests { display: flex; flex-direction: column; gap: 8px; }
.fclms-guest {
	display: grid; gap: 3px; padding: 12px 14px; text-align: left; cursor: pointer;
	font-family: inherit; background: var(--fc-surface);
	border: 1px solid var(--fc-line); border-radius: 12px;
}
.fclms-app .fclms-guest, .fclms-app .fclms-guest:hover { background: var(--fc-surface); }
/* Cine așteaptă răspuns are o dungă în capăt: agentul vede de la ce începe. */
.fclms-guest.is-waiting { border-left: 3px solid var(--fc-accent); }
.fclms-guest__who { font-weight: 700; display: flex; align-items: center; gap: 8px; }
.fclms-guest__flag { font-size: 11px; font-weight: 700; color: var(--fc-accent); text-transform: uppercase; letter-spacing: .04em; }
.fclms-guest__last { color: var(--fc-muted); font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fclms-guest__meta { font-size: 12px; color: var(--fc-muted); }

.fclms-guestlog {
	max-height: 420px; overflow-y: auto; padding: 12px; margin-bottom: 12px;
	display: flex; flex-direction: column; gap: 8px;
	background: var(--fc-paper); border-radius: 12px;
}
.fclms-guestlog__line {
	max-width: 80%; align-self: flex-start; padding: 8px 12px; border-radius: 14px 14px 14px 4px;
	background: var(--fc-surface); border: 1px solid var(--fc-line); font-size: 14px;
}
.fclms-guestlog__line.is-staff {
	align-self: flex-end; border-radius: 14px 14px 4px 14px;
	background: var(--fc-primary); color: #fff; border-color: var(--fc-primary);
}
.fclms-guestlog__at { display: block; margin-top: 4px; font-size: 11px; opacity: .7; }

.fclms-guestreply { display: flex; gap: 8px; align-items: flex-end; }
.fclms-guestreply textarea { flex: 1; resize: vertical; font: inherit; padding: 10px 12px; border: 1px solid var(--fc-line); border-radius: 10px; }

/* ===========================================================================
   BUTOANELE BAREI STAU NEMIȘCATE

   Rândul cu numele și pastila de puncte sunt `<button>`-uri. Temele WordPress
   le pândesc pe toate cu `button:hover`, iar unele scriu cu `!important` și cu
   selectori mai grei decât ai noștri — `.wp-site-blocks button:hover`, uneori
   chiar cu un identificator în față. Împotriva unei reguli marcate `!important`
   nu ajută decât alta la fel, mai grea; între două deopotrivă de grele câștigă
   cea de mai jos, iar blocul acesta e ultimul din foaie, dinadins.

   Clasa e scrisă de două ori în selector — un vechi șiretlic, nu o greșeală:
   `.x.x` cântărește cât două clase, deși alege exact aceleași elemente. Așa
   trecem peste tema care ne bate, fără să inventăm clase noi în HTML.

   Nu se adaugă niciun efect aici. Toate valorile sunt cele din repaus: rostul
   blocului e să oprească, nu să schimbe. Că butoanele se pot apăsa se vede din
   cursor, iar inelul de la tastatură rămâne — el nu e podoabă, e singurul semn
   pentru cine umblă cu Tab.
   =========================================================================== */

.fclms-side__user.fclms-side__user:hover,
.fclms-side__user.fclms-side__user:focus,
.fclms-side__user.fclms-side__user:active,
.fclms-app .fclms-side__user.fclms-side__user:hover,
.fclms-app .fclms-side__user.fclms-side__user:focus,
.fclms-app .fclms-side__user.fclms-side__user:active {
	background: transparent !important;
	background-image: none !important;
	border-color: var(--fc-line) !important;
	color: var(--fc-menu-text, var(--fc-ink)) !important;
	box-shadow: none !important;
	opacity: 1 !important;
	filter: none !important;
	transform: none !important;
	text-decoration: none !important;
}

.fclms-points--link.fclms-points--link:hover,
.fclms-points--link.fclms-points--link:focus,
.fclms-points--link.fclms-points--link:active,
.fclms-app .fclms-points--link.fclms-points--link:hover,
.fclms-app .fclms-points--link.fclms-points--link:focus,
.fclms-app .fclms-points--link.fclms-points--link:active {
	color: #7A5A00 !important;
	opacity: 1 !important;
	filter: none !important;
	transform: none !important;
	text-decoration: none !important;
}

/* În bara închisă la culoare pastila e albă: acolo albul se păstrează întreg. */
.fclms-app > .fclms-topbar .fclms-points--link.fclms-points--link:hover,
.fclms-app > .fclms-topbar .fclms-points--link.fclms-points--link:focus,
.fclms-app > .fclms-topbar .fclms-points--link.fclms-points--link:active {
	background: rgba(255, 255, 255, .96) !important;
	border-color: rgba(var(--fc-accent-rgb), .55) !important;
	box-shadow: 0 1px 3px rgba(22, 32, 43, .18) !important;
}

/* Inelul de la tastatură se scrie după oprire, ca să nu fie oprit și el. */
.fclms-side__user.fclms-side__user:focus-visible,
.fclms-points--link.fclms-points--link:focus-visible,
.fclms-app .fclms-side__user.fclms-side__user:focus-visible,
.fclms-app .fclms-points--link.fclms-points--link:focus-visible {
	outline: none;
	box-shadow: var(--fc-ring) !important;
}

/* ===========================================================================
   CULOAREA DE SUB CURSOR

   Se alege din Aspect și ajunge aici prin `--fc-hover`. Din ea ies trei: cea
   plină, pentru butoanele cu fundal; o tentă de o zecime, pentru cele goale și
   pentru rânduri; și cerneala potrivită pe ea, aleasă după cât e de închisă,
   ca un galben ales de admin să nu primească scris alb.

   Blocul stă la sfârșitul foii și poartă clasa scrisă de două ori, din același
   motiv ca oprirea de mai sus: temele colorează singure orice buton la trecerea
   cursorului, iar aici vrem culoarea aleasă de om, nu cea a temei.

   Roșul de ștergere și verdele de izbândă nu trec pe aici. Ele nu sunt podoabă,
   ci înțeles: un buton care șterge trebuie să rămână roșu oricare ar fi culoarea
   aleasă pentru rest.
   =========================================================================== */

.fclms-app .fclms-btn--primary.fclms-btn--primary:hover,
.fclms-modal .fclms-btn--primary.fclms-btn--primary:hover {
	background-color: var(--fc-hover, var(--fc-primary-dark)) !important;
	border-color: var(--fc-hover, var(--fc-primary-dark)) !important;
	color: var(--fc-hover-ink, #fff) !important;
}

.fclms-app .fclms-btn--ghost.fclms-btn--ghost:hover,
.fclms-modal .fclms-btn--ghost.fclms-btn--ghost:hover {
	background-color: var(--fc-hover-soft, #EDF1F5) !important;
	border-color: var(--fc-hover, var(--fc-line)) !important;
	color: var(--fc-ink) !important;
}

/* Legăturile nu se umplu, doar își schimbă cerneala: un rând de text înnegrit
   cu totul ar sări din pagină ca o greșeală. */
.fclms-app a.fclms-link.fclms-link:hover,
.fclms-app .fclms-link.fclms-link:hover,
.fclms-modal .fclms-link.fclms-link:hover {
	color: var(--fc-hover, var(--fc-primary)) !important;
	text-decoration: underline !important;
}

/* ===========================================================================
   CÂMPUL DE CĂUTARE DIN ALEGEREA PACHETULUI

   Pastila de căutare e desenată de noi: margine, colțuri rotunde, lupă la
   stânga, iar câmpul dinăuntru trebuie să fie curat, ca și cum n-ar exista.
   Temele îmbracă însă orice `input` în fundal alb, margine și colțuri proprii,
   iar regula lor cântărește cât a noastră — la egalitate câștigă cea încărcată
   mai târziu, adică a temei. Ieșea o cutie în cutie.

   Aceeași scriitură dublată ca mai sus, pentru același fel de ceartă.
   =========================================================================== */

.fclms-picksearch .fclms-picksearch input,
.fclms-picksearch input[type="search"],
.fclms-app .fclms-picksearch input,
.fclms-app .fclms-picksearch input[type="search"] {
	flex: 1 1 auto;
	min-width: 0;
	width: 100%;
	font-family: inherit !important;
	font-size: 15px !important;
	padding: 13px 0 !important;
	margin: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	outline: none !important;
	background: none !important;
	box-shadow: none !important;
	color: var(--fc-ink) !important;
	line-height: 1.4 !important;
	height: auto !important;
}

/* Chrome pune un „x” gri al lui în câmpurile de căutare; îl lăsăm, dar fără
   fundalul rotund pe care unele teme i-l dau. */
.fclms-picksearch input::-webkit-search-cancel-button { background: none; }

/* Cei aleși stau deasupra căutării, ca să nu-i pierzi din ochi când ștergi
   ce ai scris. Se scot apăsând pe „×” de pe fiecare. */
.fclms-pickchosen {
	display: flex; flex-wrap: wrap; gap: 8px;
	margin: 0 0 12px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--fc-line);
}
.fclms-pickchosen[hidden] { display: none; }

/* ------------------------------------------------------- apelurile din meci */
/* Bara stă pe <body>, deasupra aplicației: ecranul de meci se redesenează la
   fiecare rundă, iar o imagine pusă acolo s-ar tăia la fiecare cartonaș. */
.fclms-rtc {
	position: fixed;
	/* Deasupra rândului de buline: 20 de jos + 54 bulina + 12 aer. */
	right: 20px; bottom: 86px;
	z-index: 100000;
	/* Mărime hotărâtă, aleasă cât să încapă bine toate cele patru chipuri pe
	   două rânduri, cu discuția dedesubt. Nu se trage de ea: la lățimi alese de
	   mână apăreau chipuri întinse cât toată fereastra și butoane peste text. */
	width: 380px; max-width: calc(100vw - 32px);
	font-family: var(--fc-font);
	color: var(--fc-ink);
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	border-radius: var(--fc-radius);
	box-shadow: 0 10px 40px rgba(30, 42, 56, .18);
	overflow: hidden;
}
.fclms-rtc__head {
	display: flex; align-items: center; gap: 8px;
	padding: 10px 12px;
	background: var(--fc-primary); color: #fff;
}
.fclms-rtc__title { font-weight: 700; font-size: 14px; }
.fclms-rtc__state { flex: 1; font-size: 12px; opacity: .85; }
.fclms-rtc__state.is-ok { opacity: 1; }
.fclms-rtc__state.is-bad { color: #FFD9D4; }
.fclms-rtc__fold {
	border: 0; background: transparent; color: #fff;
	font-size: 16px; line-height: 1; cursor: pointer; padding: 2px 4px;
}
.fclms-rtc.is-folded .fclms-rtc__body { display: none; }
.fclms-rtc.is-folded .fclms-rtc__fold { transform: rotate(180deg); }

/* Strânsă din bulină, fereastra nu se micșorează — dispare cu totul. Bulina
   rămâne singurul lucru din colț, iar discuția își are locul liber. */
.fclms-rtc.is-hidden { display: none; }

/* --- bulina de apel, sora celei de discuție --- */
/* Stă în stânga ei: 20 de la margine + 54 lățimea bulinei + 12 aer între ele.
   Aceeași mărime și același semn de 41 de pixeli, ca perechea să se vadă
   egală. Cifra 100001 o ține deasupra ferestrei de apel, ca pe cealaltă. */
.fclms-calldot {
	position: fixed;
	left: auto; right: 86px; bottom: 20px;
	z-index: 100001;
	box-sizing: border-box; padding: 0; margin: 0;
	width: 54px; height: 54px;
	display: flex; align-items: center; justify-content: center;
	color: #fff; background: var(--fc-primary);
	border: 0; border-radius: 50%;
	box-shadow: 0 8px 24px rgba(30, 42, 56, .3);
	cursor: pointer;
	transition: transform .15s ease, box-shadow .15s ease;
}
/* Cu discuția stinsă din administrare, bulina de apel rămâne singură în colț. */
.fclms-calldot.is-alone { right: 20px; }
.fclms-calldot:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(30, 42, 56, .38); }
.fclms-calldot:focus-visible { outline: 2px solid var(--fc-primary); outline-offset: 3px; }
/* Fereastra deschisă se vede din bulină, ca la discuție. */
.fclms-calldot.is-on { background: var(--fc-ink); }

/* La ecran plin bulina ajunge copil direct al aplicației, care își strânge și
   centrează copiii. Aici i se dă înapoi colțul, ca și celei de discuție. */
.fclms-app:fullscreen > .fclms-calldot,
.fclms-app:-webkit-full-screen > .fclms-calldot,
.fclms-app.is-faux-fullscreen > .fclms-calldot {
	position: fixed;
	left: auto; right: 86px;
	margin: 0; max-width: none;
}
.fclms-app:fullscreen > .fclms-calldot.is-alone,
.fclms-app:-webkit-full-screen > .fclms-calldot.is-alone,
.fclms-app.is-faux-fullscreen > .fclms-calldot.is-alone { right: 20px; }
.fclms-rtc__body { padding: 10px 12px 12px; }

/* Ecranul partajat cere lățime: cât e pornit, bara se lățește. */
.fclms-rtc__stage { margin: 0 0 10px; }
.fclms-rtc__stage[hidden] { display: none; }
.fclms-rtc__stage video {
	width: 100%; display: block;
	background: #10161D; border-radius: 8px;
}
/* Când cineva partajează ecranul, fereastra se lățește singură: un ecran de
   calculator arătat pe 380px nu se poate citi. */
.fclms-rtc:has(.fclms-rtc__stage:not([hidden])) { width: 520px; }
.fclms-rtc__tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.fclms-rtc__tabs[hidden] { display: none; }

/* Chipurile: câte unul de om, în șir, cu poza dedesubtul imaginii lipsă. */
.fclms-rtc__strip {
	/* Două coloane, întotdeauna. Cu „câte încap”, un singur chip se întindea pe
	   toată lățimea, iar raportul de 4:3 îl făcea înalt cât un afiș. */
	display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px;
	margin: 0 0 10px;
}
.fclms-rtc__strip[hidden] { display: none; }
.fclms-rtc__tile {
	position: relative; aspect-ratio: 4 / 3;
	background: #10161D; border-radius: 8px; overflow: hidden;
}
.fclms-rtc__tile video, .fclms-rtc__tile img {
	width: 100%; height: 100%; object-fit: cover; display: block;
}
.fclms-rtc__tile img { object-fit: contain; padding: 18%; opacity: .75; }
.fclms-rtc__tile video[hidden], .fclms-rtc__tile img[hidden] { display: none; }
.fclms-rtc__tile.is-waiting { outline: 2px solid var(--fc-accent); outline-offset: -2px; }
.fclms-rtc__tile.is-broken { outline: 2px solid var(--fc-danger); outline-offset: -2px; }
.fclms-rtc__who {
	position: absolute; left: 6px; bottom: 5px;
	max-width: 70%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	font-size: 11px; color: #fff; text-shadow: 0 1px 3px rgba(0, 0, 0, .8);
}
.fclms-rtc__dot {
	position: absolute; right: 5px; bottom: 4px;
	font-size: 11px; opacity: .55;
}
.fclms-rtc__dot.is-on { opacity: 1; }

/* Butoanele: pictogramă deasupra, cuvântul dedesubt, ca să nu fie ghicite. */
.fclms-rtc__bar { display: flex; flex-wrap: wrap; gap: 6px; }
.fclms-rtc__btn {
	flex: 1 1 0; min-width: 64px;
	display: flex; flex-direction: column; align-items: center; gap: 2px;
	padding: 8px 4px;
	font-family: inherit; font-size: 10px; line-height: 1.2; text-align: center;
	color: var(--fc-ink);
	background: var(--fc-paper);
	border: 1px solid var(--fc-line); border-radius: 10px;
	cursor: pointer;
}
.fclms-rtc__btn:hover { border-color: var(--fc-primary); }
.fclms-rtc__btn.is-on { background: var(--fc-primary); border-color: var(--fc-primary); color: #fff; }
.fclms-rtc__btn.is-leave { background: var(--fc-danger-soft); border-color: var(--fc-danger); color: var(--fc-danger); }
.fclms-rtc__btn.is-busy, .fclms-rtc__btn[disabled] { opacity: .55; cursor: default; }
.fclms-rtc__ico { font-size: 17px; }
.fclms-rtc__lbl { display: block; }

/* Eroarea: ce s-a întâmplat, apoi ce se poate face. Niciodată doar prima. */
.fclms-rtc__fault[hidden] { display: none; }
.fclms-rtc__fault {
	margin: 0 0 10px; padding: 10px;
	background: var(--fc-danger-soft);
	border: 1px solid var(--fc-danger);
	border-radius: 8px;
}
.fclms-rtc__faultwhat { margin: 0 0 4px; font-weight: 700; font-size: 13px; color: var(--fc-danger); }
.fclms-rtc__faultfix { margin: 0 0 8px; font-size: 12px; line-height: 1.5; }
.fclms-rtc__fault .fclms-btn { margin-right: 6px; }

/* Pe telefon fereastra se lipește de marginile din lateral, dar rămâne
   deasupra rândului de buline: ele sunt singurul drum înapoi la ea. */
@media (max-width: 640px) {
	.fclms-rtc, .fclms-rtc:has(.fclms-rtc__stage:not([hidden])) {
		right: 0; left: 0; bottom: 86px;
		width: auto; max-width: none;
		border-radius: var(--fc-radius);
	}
	.fclms-rtc__strip { grid-template-columns: repeat(2, 1fr); }
	.fclms-rtc__lbl { display: none; }
	.fclms-rtc__btn { padding: 10px 4px; }
}

/* Raportul tehnic: monospațiat, mic, cu derulare — e text de citit și de copiat,
   nu de citit frumos. */
.fclms-rtc__probe[hidden] { display: none; }
.fclms-rtc__probe {
	margin: 0 0 10px; padding: 8px;
	background: var(--fc-paper);
	border: 1px solid var(--fc-line);
	border-radius: 8px;
}
.fclms-rtc__probetext {
	margin: 0 0 8px;
	max-height: 190px; overflow: auto;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 10.5px; line-height: 1.45;
	white-space: pre-wrap; word-break: break-word;
	color: var(--fc-ink);
}

/* ------------------------------------------- așezarea pe înălțime
   Antetul sus, zona care se derulează la mijloc, butoanele jos. Butoanele sunt
   frate cu zona derulabilă, nu copil: înăuntru, lipite de fund, ajungeau peste
   discuție și acopereau caseta de scris. */
.fclms-rtc { display: flex; flex-direction: column; }
.fclms-rtc__head { flex: 0 0 auto; }
.fclms-rtc__body {
	flex: 1 1 auto; min-height: 0;
	overflow-y: auto; overscroll-behavior: contain;
	padding-bottom: 0;
}
.fclms-rtc__bar {
	flex: 0 0 auto;
	padding: 8px 12px 12px;
	border-top: 1px solid var(--fc-line);
	background: var(--fc-surface);
	border-radius: 0 0 var(--fc-radius) var(--fc-radius);
}
.fclms-rtc.is-folded .fclms-rtc__body,
.fclms-rtc.is-folded .fclms-rtc__bar { display: none; }


/* ==========================================================================
   LOBBY-UL MECIULUI
   O bulină în colțul din dreapta jos, care se desface în panou de discuție.
   Alături, în stânga, stă sora ei — bulina de apel. Ferestrele lor nu se mai
   ceartă pe colț: deschisă una, cealaltă se strânge.
   ========================================================================== */
/* Cutia e cât bulina și atât. Panoul nu stă în șir sub ea, ci e agățat de ea:
   „deasupra bulinei” e scris în stil, nu lăsat pe seama curgerii. Așa rămâne
   lipit de ea și la ecran plin, unde altfel cobora în josul paginii. */
.fclms-talk {
	position: fixed;
	left: auto; right: 20px; bottom: 20px;
	z-index: 100001;
	width: 54px; height: 54px;
	margin: 0; max-width: none;
}

/*
 * La ecran plin, bulina ajunge copil direct al aplicației — iar acolo fiecare
 * copil direct e strâns la lățimea conținutului și centrat cu margini automate,
 * ca textul să nu se întindă pe tot ecranul lat. Regula aceea o prindea și pe
 * ea: se muta în mijloc și își pierdea colțul, iar panoul agățat de ea ajungea
 * unde nu-l mai vedea nimeni. Aici i se dă înapoi colțul, anume și cu greutate
 * mai mare decât regula generală.
 */
.fclms-app:fullscreen > .fclms-talk,
.fclms-app:-webkit-full-screen > .fclms-talk,
.fclms-app.is-faux-fullscreen > .fclms-talk {
	position: fixed;
	left: auto; right: 20px;
	margin: 0; max-width: none;
}

/* --- bulina --- */
.fclms-talk__dot {
	position: relative;
	box-sizing: border-box; padding: 0;
	width: 54px; height: 54px;
	display: flex; align-items: center; justify-content: center;
	color: #fff; background: var(--fc-primary);
	border: 0; border-radius: 50%;
	box-shadow: 0 8px 24px rgba(30, 42, 56, .3);
	cursor: pointer;
	transition: transform .15s ease, box-shadow .15s ease;
}
/* Semnul ține trei sferturi din bulină: 41 din 54 de pixeli.
   Scris în pixeli, nu în procente. Procentele pe un desen fără mărime proprie
   se socotesc altfel de la o temă la alta, iar semnul ieșea mai mic decât
   înainte. Aici nu mai are ce se interpreta. `flex` oprit ca butonul, fiind
   flexibil, să nu-l strângă la loc. */
.fclms-talk__mark { width: 41px; height: 41px; flex: 0 0 auto; display: block; }
.fclms-talk__dot:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(30, 42, 56, .38); }
.fclms-talk__dot:focus-visible { outline: 2px solid var(--fc-primary); outline-offset: 3px; }
.fclms-talk.is-open .fclms-talk__dot { background: var(--fc-ink); }

.fclms-talk__badge {
	position: absolute; top: -2px; right: -2px;
	min-width: 20px; padding: 0 5px;
	font-size: 10px; font-weight: 700; line-height: 20px; text-align: center;
	color: #fff; background: var(--fc-danger);
	border: 2px solid var(--fc-surface); border-radius: 10px;
}
.fclms-talk__badge[hidden] { display: none; }

/* --- panoul, deschis în sus dinspre bulină --- */
.fclms-talk__panel[hidden] { display: none; }
.fclms-talk__panel {
	position: absolute;
	right: 0; bottom: calc(100% + 10px);
	display: flex; flex-direction: column;
	width: 360px; max-width: calc(100vw - 32px);
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	border-radius: var(--fc-radius);
	box-shadow: 0 12px 40px rgba(30, 42, 56, .22);
	overflow: hidden;
}
.fclms-talk__head {
	flex: 0 0 auto;
	display: flex; align-items: center; gap: 8px;
	padding: 10px 12px;
	background: var(--fc-primary); color: #fff;
}
.fclms-talk__title { flex: 1; font-weight: 700; font-size: 14px; }
.fclms-talk__x {
	padding: 2px 4px;
	font-size: 15px; line-height: 1;
	color: inherit; background: none; border: 0; cursor: pointer;
}

.fclms-talk__lines {
	flex: 1 1 auto; min-height: 0;
	overflow-y: auto; overscroll-behavior: contain;
	margin: 10px 12px 0; padding: 10px;
	background: var(--fc-paper);
	border: 1px solid var(--fc-line);
	border-radius: 10px;
}

/* Fiecare om cu culoarea lui, dată de server după locul la masă și pusă aici în
   --fc-ink-who: numele o poartă, iar o dungă subțire o duce de-a lungul vorbei,
   ca firul discuției să se urmărească din priviri. */
.fclms-talk__line {
	margin: 0 0 9px;
	display: flex; flex-direction: column; align-items: flex-start;
	font-size: 12.5px; line-height: 1.5;
}
.fclms-talk__line:last-child { margin-bottom: 0; }
.fclms-talk__line b {
	margin: 0 0 2px;
	font-size: 10.5px; font-weight: 700; letter-spacing: .02em;
	color: var(--fc-ink-who, var(--fc-primary));
}
.fclms-talk__bubble {
	max-width: 88%;
	padding: 6px 10px;
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	border-left: 3px solid var(--fc-ink-who, var(--fc-primary));
	border-radius: 4px 10px 10px 10px;
	word-break: break-word; white-space: pre-wrap;
}
.fclms-talk__line.is-me { align-items: flex-end; }
.fclms-talk__line.is-me b { text-align: right; }
.fclms-talk__line.is-me .fclms-talk__bubble {
	border-left: 1px solid var(--fc-line);
	border-right: 3px solid var(--fc-ink-who, var(--fc-primary));
	border-radius: 10px 4px 10px 10px;
}

.fclms-talk__say { flex: 0 0 auto; display: flex; gap: 6px; padding: 8px 12px 12px; }
.fclms-talk__say input {
	flex: 1; min-width: 0;
	padding: 8px 10px;
	font-family: inherit; font-size: 13px;
	background: var(--fc-surface); color: var(--fc-ink);
	border: 1px solid var(--fc-line); border-radius: 8px;
}
.fclms-talk__say input:focus { outline: none; border-color: var(--fc-primary); }

@media (max-width: 640px) {
	.fclms-talk { right: 12px; }
	/* Aceeași margine mai strânsă, ca perechea să rămână lipită: 12 + 54 + 10. */
	.fclms-calldot { right: 76px; }
	.fclms-calldot.is-alone { right: 12px; }
	.fclms-talk__panel { width: calc(100vw - 24px); }
}

/* Timpul petrecut pe platformă, în fișa cursantului. */
.fclms-spent { margin: 10px 0 4px; }

/* Cele trei drumuri de la un cartonaș: prietenul, profesorul, sesizarea.
   Stau lipite unul de altul, la capătul barei, ca un grup — sunt aceeași
   întrebare pusă la trei uși diferite.

   Sesizarea avea `margin-left: auto` de pe vremea când era singură acolo și
   trebuia împinsă în colț. În grup, acel auto ar despărți-o de celelalte
   două, așa că i se ia înapoi: acum grupul întreg e cel împins. */
.fclms-study__asks { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.fclms-app .fclms-study__asks .fclms-report { margin-left: 0; }

/* Cheia culorilor din coada agentului. */
.fclms-kindkey { display: flex; flex-wrap: wrap; gap: 16px; margin: 0 0 14px; font-size: 13px; color: var(--fc-muted); }
.fclms-kindkey__item { display: inline-flex; align-items: center; gap: 7px; }
.fclms-kindkey__item::before { content: ''; width: 10px; height: 10px; border-radius: 3px; }
.fclms-kindkey__item.is-support::before { background: var(--fc-primary); }
.fclms-kindkey__item.is-report::before { background: #E07A1F; }
.fclms-kindkey__item.is-question::before { background: #2E7D32; }

/* ------------------------------------------------------ MODERARE */

/* Raportarea unui utilizator: roșu. Dintre cele patru feluri de fir, e
   singurul care privește un om, nu un cartonaș sau o nelămurire — deci ia
   culoarea la care se uită ochiul întâi. */
.fclms-ticket.is-user { border-left: 3px solid var(--fc-danger); }
.fclms-ticket.is-user .fclms-row__title { color: var(--fc-danger); }
.fclms-kindkey__item.is-user::before { background: var(--fc-danger); }

/* Steagul de raportare stă discret până e nevoie de el. */
.fclms-app .fclms-flag { opacity: .5; }
.fclms-app .fclms-flag:hover { opacity: 1; border-color: #E07A1F; }

/* Motivele de raportare, unul sub altul ca să se citească la nervi. */
.fclms-reasons { display: grid; gap: 4px; margin-top: 6px; }

/* Capturile atașate: mici, în rând, deschise mari la apăsare. */
.fclms-shots { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.fclms-shots__one {
	display: block; width: 120px; height: 90px;
	border-radius: 10px; overflow: hidden;
	border: 1px solid var(--fc-line); background: var(--fc-paper);
}
.fclms-shots__one img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Uneltele moderatorului, în firul raportului. */
.fclms-modpanel {
	margin-bottom: 14px; padding: 14px 16px;
	border-radius: 12px;
	border: 1px solid rgba(224, 122, 31, .4);
	background: linear-gradient(135deg, rgba(224, 122, 31, .07), transparent), var(--fc-surface);
}
.fclms-modpanel h4 { margin: 0 0 10px; font-size: 14px; }
.fclms-modpanel__now { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.fclms-modpanel__do { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fclms-modpanel__do select,
.fclms-modpanel__do input[type="text"],
.fclms-modpanel__do input[type="number"] {
	padding: 9px 12px; border: 1px solid var(--fc-line); border-radius: 9px;
	background: var(--fc-surface); font-family: inherit; font-size: 14px;
}
.fclms-modpanel__do input[type="number"] { width: 92px; }
.fclms-modpanel__do input[type="text"] { flex: 1; min-width: 160px; }
.fclms-modlift {
	margin-left: 6px; padding: 0 2px;
	border: 0; background: transparent; color: inherit;
	font-size: 13px; cursor: pointer; opacity: .7;
}
.fclms-modlift:hover { opacity: 1; }

/* ============================================================================
   ORA DE CLASĂ: ORELE ȚINUTE, RAPORTUL, SFÂRȘITUL PENTRU ELEV

   Clasa live e o unealtă pe care profesorul o plătește deosebit, iar asta se
   vede cel mai bine în ce rămâne după oră. Până acum nu rămânea nimic: ora se
   termina, iar pagina se golea. Cifrele stăteau în baza de date, netăiate, dar
   nu le citea nimeni.

   Culorile sunt cele ale aplicației, cu o singură adăugire: verde, chihlimbar
   și roșu pentru procente. Ele nu sunt podoabă — un tabel de procente se
   citește rând cu rând, o coloană colorată se citește dintr-o privire.
   ========================================================================= */

:root {
	--fc-good: #2E7D32;
	--fc-good-soft: #E8F3E9;
	--fc-mid: #C77700;
	--fc-mid-soft: #FBF0DD;
	--fc-bad: #C0392B;
	--fc-bad-soft: #FBEAE7;
}

/* --------------------------------------------------------- antetul rubricii */

.fclms-livehero {
	display: flex; align-items: center; gap: 20px;
	padding: 26px 28px; margin-bottom: 22px;
	border: 1px solid var(--fc-line); border-radius: 18px;
	background: linear-gradient(135deg, var(--fc-tint), var(--fc-surface) 62%);
}
.fclms-livehero__mark { font-size: 44px; line-height: 1; flex: none; }
.fclms-livehero__title { margin: 0 0 4px; font-size: 26px; }
.fclms-livehero__line { margin: 0 0 2px; font-weight: 600; }
.fclms-livehero__hint { margin: 0; font-size: 13.5px; color: var(--fc-muted); }

/* ------------------------------------------------------------ orele ținute */

.fclms-pastlist { display: flex; flex-direction: column; gap: 10px; }

/*
 * Rândul unei ore e o pereche: partea care deschide raportul și coșul din
 * capăt. Rama stă pe împrejmuire, nu pe butoane, ca cele două să pară un
 * singur rând — dar să rămână, pentru tastatură și pentru cititoarele de
 * ecran, două lucruri deosebite.
 */
.fclms-past {
	display: flex; align-items: stretch;
	background: var(--fc-surface);
	border: 1px solid var(--fc-line); border-radius: 14px; overflow: hidden;
	transition: border-color .15s ease, transform .15s ease;
}
.fclms-past:hover { border-color: var(--fc-primary); transform: translateY(-1px); }

.fclms-app .fclms-past__open {
	flex: 1; min-width: 0; display: flex; align-items: center; gap: 18px;
	padding: 14px 18px; text-align: left; font-family: inherit; cursor: pointer;
	background: none; border: 0; color: inherit;
}
.fclms-app .fclms-past__open:focus-visible { outline: none; box-shadow: var(--fc-ring); }

/* Coșul stă șters până la trecerea cursorului: se folosește rar, iar un buton
   de șters aprins pe fiecare rând face lista să pară primejdioasă. */
.fclms-app .fclms-past__drop {
	flex: none; width: 48px; cursor: pointer; font-size: 15px;
	background: none; border: 0; border-left: 1px solid var(--fc-line);
	color: var(--fc-muted);
}
.fclms-app .fclms-past__drop:hover { color: var(--fc-danger); background: var(--fc-danger-soft); }
.fclms-app .fclms-past__drop:focus-visible { outline: none; box-shadow: var(--fc-ring); }

/* Golirea istoricului stă departe de ultima oră din listă: e o faptă fără
   întoarcere, iar un buton roșu lipit de un rând apăsabil se apasă din greșeală
   într-o zi. Depărtarea e ea însăși o precauție.

   Selectorul poartă și `.fclms-app`, fiindcă `.fclms-app p { margin: 0 0 12px }`
   are o clasă în plus și bate un selector cu o singură clasă. E a treia oară
   când regula aceea înghite marginea unui paragraf anume — de aici comentariul,
   ca a patra oară să se vadă din capul locului. */
.fclms-app p.fclms-pastlist__wipe { margin: 34px 0 0; }

.fclms-past__main { flex: 1; min-width: 0; }
.fclms-past__deck {
	display: block; font-weight: 700; font-size: 15.5px;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-past__when { display: block; font-size: 12.5px; color: var(--fc-muted); }

.fclms-past__figs { display: flex; gap: 26px; flex: none; }
.fclms-past__go { flex: none; font-size: 20px; color: var(--fc-line); }
.fclms-past:hover .fclms-past__go { color: var(--fc-primary); }

/* ------------------------------------------------- cifra cu eticheta ei */

.fclms-figrow {
	display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 24px;
}
.fclms-figrow .fclms-fig {
	flex: 1 1 130px;
	padding: 16px 18px;
	border: 1px solid var(--fc-line); border-radius: 14px; background: var(--fc-surface);
}

.fclms-fig { display: block; text-align: left; }
.fclms-fig__n {
	display: block; font-size: 24px; font-weight: 800; line-height: 1.1;
	letter-spacing: -.02em; font-variant-numeric: tabular-nums;
}
.fclms-fig__l {
	display: block; margin-top: 3px;
	font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
	color: var(--fc-muted);
}
.fclms-fig--good .fclms-fig__n { color: var(--fc-good); }
.fclms-fig--mid .fclms-fig__n { color: var(--fc-mid); }
.fclms-fig--bad .fclms-fig__n { color: var(--fc-bad); }

.fclms-past__figs .fclms-fig__n { font-size: 19px; }

/* ------------------------------------------------------------------ podium

   Al doilea la stânga, primul la mijloc, al treilea la dreapta — cum stau pe un
   podium adevărat. Treptele au înălțimi deosebite, ca locul să se vadă înainte
   de a citi cifra. */

.fclms-podium {
	display: flex; align-items: flex-end; justify-content: center; gap: 12px;
	margin-bottom: 26px; padding: 0 4px;
}
.fclms-podium__spot {
	flex: 1 1 0; max-width: 200px;
	display: flex; flex-direction: column; align-items: center; text-align: center;
}
.fclms-podium__medal { font-size: 30px; line-height: 1; }
.fclms-podium__name {
	margin-top: 4px; font-weight: 700; font-size: 14px;
	max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-podium__score {
	font-size: 20px; font-weight: 800; color: var(--fc-primary);
	font-variant-numeric: tabular-nums;
}
.fclms-podium__step {
	width: 100%; margin-top: 8px; border-radius: 10px 10px 0 0;
	background: linear-gradient(180deg, var(--fc-tint), var(--fc-paper));
	border: 1px solid var(--fc-line); border-bottom: none;
}
.fclms-podium__spot--one .fclms-podium__step { height: 84px; background: linear-gradient(180deg, #FDF3D6, var(--fc-paper)); }
.fclms-podium__spot--two .fclms-podium__step { height: 58px; }
.fclms-podium__spot--three .fclms-podium__step { height: 42px; }
.fclms-podium__spot--one .fclms-podium__medal { font-size: 38px; }

/* -------------------------------------------------------------- clasament */

.fclms-board {
	border: 1px solid var(--fc-line); border-radius: 14px; overflow: hidden;
	background: var(--fc-surface); margin-bottom: 26px;
}
.fclms-board__row {
	display: flex; align-items: center; gap: 14px;
	padding: 10px 16px; border-bottom: 1px solid var(--fc-line);
}
.fclms-board__row:last-child { border-bottom: none; }
.fclms-board__row.is-top { background: var(--fc-tint); }

.fclms-board__place {
	flex: none; width: 26px; text-align: center;
	font-weight: 800; font-size: 13px; color: var(--fc-muted);
	font-variant-numeric: tabular-nums;
}
.fclms-board__row.is-top .fclms-board__place { color: var(--fc-primary); }

.fclms-board__name {
	flex: 1 1 120px; min-width: 0; font-weight: 600; font-size: 14.5px;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* Bara spune cât la sută a nimerit, nu câte puncte are: doi elevi cu același
   punctaj pot fi foarte deosebiți, dacă unul a răspuns la tot și altul la
   jumătate. */
.fclms-board__bar {
	flex: 2 1 120px; height: 7px; border-radius: 4px;
	background: var(--fc-paper); overflow: hidden;
}
.fclms-board__fill { display: block; height: 100%; border-radius: 4px; }
.fclms-board__fill--good { background: var(--fc-good); }
.fclms-board__fill--mid { background: var(--fc-mid); }
.fclms-board__fill--bad { background: var(--fc-bad); }

.fclms-board__pct {
	flex: none; width: 44px; text-align: right;
	font-size: 12.5px; color: var(--fc-muted); font-variant-numeric: tabular-nums;
}
.fclms-board__score {
	flex: none; width: 40px; text-align: right;
	font-weight: 800; font-variant-numeric: tabular-nums;
}

/* --------------------------------------------------- cartonaș cu cartonaș */

.fclms-slate {
	border: 1px solid var(--fc-line); border-radius: 14px; overflow: hidden;
	background: var(--fc-surface);
}
.fclms-slate__item { border-bottom: 1px solid var(--fc-line); }
.fclms-slate__item:last-child { border-bottom: none; }

.fclms-app .fclms-slate__head {
	width: 100%; display: flex; align-items: center; gap: 14px;
	padding: 12px 16px; text-align: left; font-family: inherit; cursor: pointer;
	background: none; border: 0; color: inherit;
}
.fclms-app .fclms-slate__head:hover { background: var(--fc-paper); }

.fclms-slate__no {
	flex: none; width: 26px; text-align: center;
	font-size: 12px; font-weight: 800; color: var(--fc-muted);
	font-variant-numeric: tabular-nums;
}
.fclms-slate__text { flex: 1 1 160px; min-width: 0; }
.fclms-slate__front {
	display: block; font-weight: 600; font-size: 14.5px;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-slate__back {
	display: block; font-size: 12.5px; color: var(--fc-muted);
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.fclms-slate__bar {
	flex: 1 1 90px; height: 7px; border-radius: 4px;
	background: var(--fc-paper); overflow: hidden;
}
.fclms-slate__fill { display: block; height: 100%; border-radius: 4px; }
.fclms-slate__fill--good { background: var(--fc-good); }
.fclms-slate__fill--mid { background: var(--fc-mid); }
.fclms-slate__fill--bad { background: var(--fc-bad); }

.fclms-slate__pct {
	flex: none; width: 46px; text-align: right;
	font-weight: 800; font-size: 13.5px; font-variant-numeric: tabular-nums;
}
.fclms-slate__pct--good { color: var(--fc-good); }
.fclms-slate__pct--mid { color: var(--fc-mid); }
.fclms-slate__pct--bad { color: var(--fc-bad); }

.fclms-slate__of {
	flex: none; width: 52px; text-align: right;
	font-size: 12px; color: var(--fc-muted); font-variant-numeric: tabular-nums;
}

.fclms-slate__who { padding: 4px 16px 16px 56px; background: var(--fc-paper); }
.fclms-slate__label {
	margin: 0 0 8px; font-size: 11.5px; font-weight: 700;
	letter-spacing: .04em; text-transform: uppercase; color: var(--fc-muted);
}

/* Fiecare răspuns, o pastilă: numele îngroșat, textul lângă el. Verdele și
   roșul spun verdictul fără să mai fie nevoie de un cuvânt în plus. */
.fclms-said {
	display: inline-block; margin: 0 6px 6px 0; padding: 4px 10px;
	border-radius: 999px; font-size: 13px; border: 1px solid transparent;
}
.fclms-said.is-right { background: var(--fc-good-soft); color: var(--fc-good); border-color: rgba(46, 125, 50, .2); }
.fclms-said.is-wrong { background: var(--fc-bad-soft); color: var(--fc-bad); border-color: rgba(192, 57, 43, .2); }

/* ------------------------------------------------- sfârșitul, pentru elev */

.fclms-done {
	text-align: center; padding: 30px 20px 26px; margin-bottom: 18px;
	border: 1px solid var(--fc-line); border-radius: 18px;
	background: linear-gradient(160deg, var(--fc-tint), var(--fc-surface) 65%);
}
.fclms-done__crown { font-size: 52px; line-height: 1; }
.fclms-done__hi { margin: 8px 0 2px; font-size: 26px; }
.fclms-done__who { margin: 0 0 18px; color: var(--fc-muted); }

.fclms-done__figs { display: flex; justify-content: center; flex-wrap: wrap; gap: 28px; }
.fclms-done__fig { display: flex; flex-direction: column; align-items: center; }
.fclms-done__fig b {
	font-size: 28px; line-height: 1.1; color: var(--fc-primary);
	font-variant-numeric: tabular-nums;
}
.fclms-done__fig span {
	margin-top: 2px; font-size: 11.5px; font-weight: 700;
	letter-spacing: .04em; text-transform: uppercase; color: var(--fc-muted);
}

/* Recapitularea: aici se învață ce n-ai știut. Dunga din stânga spune
   verdictul, ca ochiul să sară peste ce a nimerit și să se oprească unde nu. */
.fclms-recap { display: flex; flex-direction: column; gap: 8px; }
.fclms-recap__row {
	display: flex; gap: 12px; padding: 10px 14px;
	border-radius: 12px; background: var(--fc-paper);
	border-left: 3px solid var(--fc-line);
}
.fclms-recap__row.is-right { border-left-color: var(--fc-good); }
.fclms-recap__row.is-wrong { border-left-color: var(--fc-bad); background: var(--fc-bad-soft); }
.fclms-recap__row.is-skip { border-left-color: var(--fc-mid); }

.fclms-recap__mark { flex: none; font-weight: 800; }
.fclms-recap__row.is-right .fclms-recap__mark { color: var(--fc-good); }
.fclms-recap__row.is-wrong .fclms-recap__mark { color: var(--fc-bad); }
.fclms-recap__row.is-skip .fclms-recap__mark { color: var(--fc-mid); }

.fclms-recap__body { min-width: 0; }
.fclms-recap__front { display: block; font-weight: 600; }
.fclms-recap__mine { display: block; font-size: 13px; color: var(--fc-bad); }
.fclms-recap__good { display: block; font-size: 13px; color: var(--fc-muted); }

/* Pe telefon barele și cifrele mărunte n-au unde încăpea: rămâne ce se
   citește, nu ce arată bine pe un ecran lat. */
@media (max-width: 720px) {
	.fclms-past__figs { display: none; }
	.fclms-board__bar, .fclms-slate__bar { display: none; }
	.fclms-slate__of { display: none; }
	.fclms-livehero { flex-direction: column; text-align: center; gap: 12px; }
	.fclms-slate__who { padding-left: 16px; }
	.fclms-podium__spot--one .fclms-podium__step { height: 62px; }
	.fclms-podium__spot--two .fclms-podium__step { height: 44px; }
	.fclms-podium__spot--three .fclms-podium__step { height: 32px; }
}

/* ============================================================================
   ORA VIE: CONSOLA PROFESORULUI ȘI ECRANUL ELEVULUI

   Consola nu mai spune doar câți au răspuns, ci și ce au răspuns — strâns pe
   text, fiindcă „opt au scris «bonjour»” e o lecție, iar „opt au greșit” e o
   cifră. Ecranul elevului e făcut pentru un copil cu telefonul în mână, la o
   oră care merge repede: cifre mari, o bară de mers și un verdict care nu se
   citește, se vede.
   ========================================================================= */

.fclms-figrow--live { margin-bottom: 16px; }
.fclms-figrow--live .fclms-fig { padding: 12px 16px; }
.fclms-figrow--live .fclms-fig__n { font-size: 20px; }

/* ----------------------------------------------- răspunsurile, strânse pe text

   Bara stă în spatele textului, nu lângă el: astfel rândul rămâne scurt, iar
   mărimea se citește tot dintr-o privire. Verdele și roșul spun dacă răspunsul
   era bun, fără să mai fie nevoie de un cuvânt. */

.fclms-spread {
	margin: 0 0 16px;
	padding: 14px 16px;
	border: 1px solid var(--fc-line); border-radius: 14px;
	background: var(--fc-surface);
}
.fclms-spread--shy { background: var(--fc-paper); }
.fclms-spread__label {
	margin: 0 0 10px;
	font-size: 11.5px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--fc-muted);
}
.fclms-spread__row {
	position: relative; display: flex; align-items: center; gap: 10px;
	margin-bottom: 6px; padding: 8px 12px;
	border-radius: 10px; overflow: hidden;
	background: var(--fc-paper);
}
.fclms-spread__row:last-child { margin-bottom: 0; }
.fclms-spread__bar {
	position: absolute; inset: 0 auto 0 0;
	border-radius: 10px;
}
.fclms-spread__row.is-ok .fclms-spread__bar { background: var(--fc-good-soft); }
.fclms-spread__row.is-no .fclms-spread__bar { background: var(--fc-bad-soft); }

.fclms-spread__text {
	position: relative; flex: 1; min-width: 0; font-weight: 600; font-size: 14px;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-spread__row.is-ok .fclms-spread__text { color: var(--fc-good); }
.fclms-spread__row.is-no .fclms-spread__text { color: var(--fc-bad); }
.fclms-spread__n {
	position: relative; flex: none;
	font-weight: 800; font-variant-numeric: tabular-nums; font-size: 13.5px;
}

/* ------------------------------------------------- fișa elevului în consolă */

.fclms-pupil__pct {
	margin-left: 8px; font-size: 11.5px; font-weight: 800;
	font-variant-numeric: tabular-nums;
}
.fclms-pupil__pct--good { color: var(--fc-good); }
.fclms-pupil__pct--mid { color: var(--fc-mid); }
.fclms-pupil__pct--bad { color: var(--fc-bad); }

/* Ce a scris elevul, sub numele lui: rândul pe care profesorul îl citește cu
   voce tare. Se rupe pe mai multe linii — un răspuns tăiat la jumătate nu se
   poate discuta. */
.fclms-pupil__said {
	display: block; flex-basis: 100%; margin-top: 4px;
	font-size: 12.5px; overflow-wrap: anywhere;
}
.fclms-pupil__said.is-ok { color: var(--fc-good); }
.fclms-pupil__said.is-no { color: var(--fc-bad); }

/* ------------------------------------------------------- bara elevului */

.fclms-mine {
	display: flex; align-items: center; gap: 10px;
	padding: 10px 14px; margin-bottom: 14px;
	border-radius: 999px;
	background: linear-gradient(120deg, var(--fc-tint), var(--fc-paper));
	border: 1px solid var(--fc-line);
}
.fclms-mine__who {
	flex: 1; min-width: 0; font-weight: 700;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-mine__place {
	flex: none; padding: 3px 10px; border-radius: 999px;
	font-size: 12.5px; font-weight: 700; color: var(--fc-muted);
	background: var(--fc-surface); border: 1px solid var(--fc-line);
}
.fclms-mine__place.is-medal { color: var(--fc-ink); }
.fclms-mine__of { opacity: .6; }
.fclms-mine__score {
	flex: none; font-size: 22px; font-weight: 800; color: var(--fc-primary);
	font-variant-numeric: tabular-nums; letter-spacing: -.02em;
}

/* ------------------------------------------------------- cât a mers ora */

.fclms-step { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }
.fclms-step__track {
	flex: 1; height: 6px; border-radius: 4px; background: var(--fc-paper); overflow: hidden;
}
.fclms-step__fill {
	display: block; height: 100%; border-radius: 4px;
	background: var(--fc-primary);
	transition: width .35s ease;
}
.fclms-step__label {
	flex: none; font-size: 12px; font-weight: 700; color: var(--fc-muted);
	font-variant-numeric: tabular-nums;
}

/* --------------------------------------------------------- sala de așteptare */

.fclms-hold {
	text-align: center; padding: 34px 22px;
	border: 1px solid var(--fc-line); border-radius: 18px;
	background: linear-gradient(160deg, var(--fc-tint), var(--fc-surface) 65%);
}
.fclms-hold .fclms-mine { text-align: left; }
.fclms-hold__dots { display: flex; justify-content: center; gap: 8px; margin: 18px 0 14px; }
.fclms-hold__dots i {
	width: 10px; height: 10px; border-radius: 50%; background: var(--fc-primary);
	opacity: .35; animation: fclms-hold-beat 1.2s infinite ease-in-out;
}
.fclms-hold__dots i:nth-child(2) { animation-delay: .18s; }
.fclms-hold__dots i:nth-child(3) { animation-delay: .36s; }
@keyframes fclms-hold-beat {
	0%, 80%, 100% { opacity: .25; transform: scale(1); }
	40% { opacity: 1; transform: scale(1.35); }
}
.fclms-hold__title { margin: 0 0 6px; font-size: 22px; }
.fclms-hold__hint { margin: 0 0 16px; color: var(--fc-muted); }
.fclms-hold__people {
	display: inline-block; margin: 0; padding: 6px 14px;
	border-radius: 999px; background: var(--fc-surface);
	border: 1px solid var(--fc-line); font-weight: 700; font-size: 13.5px;
}

/* --------------------------------------------------- răspuns trimis, verdict */

.fclms-sent {
	display: flex; align-items: center; gap: 8px;
	padding: 12px 16px; border-radius: 12px;
	background: var(--fc-good-soft); color: var(--fc-good); font-weight: 700;
}
.fclms-sent.is-late { background: var(--fc-paper); color: var(--fc-muted); }

/* Verdictul se vede, nu se citește: un semn mare într-un cerc, pe fond colorat.
   La sfârșitul unui cartonaș, elevul are o clipă până la următorul — atât. */
.fclms-verdict {
	display: flex; align-items: center; gap: 12px;
	padding: 16px 18px; border-radius: 14px;
	font-size: 18px; font-weight: 800;
	animation: fclms-verdict-in .28s ease;
}
.fclms-verdict.is-ok { background: var(--fc-good-soft); color: var(--fc-good); }
.fclms-verdict.is-bad { background: var(--fc-bad-soft); color: var(--fc-bad); }
.fclms-verdict__mark {
	flex: none; width: 34px; height: 34px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	background: currentColor; color: var(--fc-surface); font-size: 18px;
}
@keyframes fclms-verdict-in {
	from { opacity: 0; transform: translateY(6px) scale(.97); }
	to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-hold__dots i, .fclms-verdict { animation: none; }
	.fclms-step__fill { transition: none; }
}

@media (max-width: 720px) {
	.fclms-mine__score { font-size: 19px; }
	.fclms-figrow--live .fclms-fig { flex-basis: 100px; padding: 10px 12px; }
}

/* Codul și adresa, în timpul orei: un rând singur, cu butoanele lor de copiere.
   Cine vine târziu trebuie să primească amândouă fără ca profesorul să iasă
   din oră — de aceea stau aici, nu doar în sala de așteptare. */
.fclms-codebar {
	display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
	padding: 10px 14px; margin: 0 0 14px;
	border: 1px solid var(--fc-line); border-radius: 12px;
	background: var(--fc-paper);
}
.fclms-codebar__label {
	font-size: 11.5px; font-weight: 700; letter-spacing: .06em;
	text-transform: uppercase; color: var(--fc-muted);
}
.fclms-codebar__code {
	font-size: 18px; font-weight: 800; letter-spacing: .1em;
	font-variant-numeric: tabular-nums;
}
.fclms-codebar__url {
	flex: 1 1 220px; min-width: 0;
	padding: 7px 10px; font-size: 13px;
	border: 1px solid var(--fc-line); border-radius: 9px;
	background: var(--fc-surface); color: var(--fc-muted);
}

@media (max-width: 640px) {
	.fclms-codebar__url { flex-basis: 100%; }
}

/* Mențiunea de sub titlul orelor ținute: se lipește de titlu, nu de listă. */
.fclms-pastlist__note { margin: -6px 0 12px; font-size: 13px; }

/* ============================================================================
   ROLURILE MELE

   Insignele din capul contului spun cum se numesc rolurile; aici scrie ce
   înseamnă. Fiecare rol are cartonașul lui, cu dunga de culoare a insignei, iar
   sub descriere două liste: ce poate și ce nu poate. A doua e adesea partea
   care liniștește — un om care poartă „Agent” vrea să știe și unde se oprește
   puterea aceea.
   ========================================================================= */

.fclms-rolecard {
	margin-bottom: 14px; padding: 16px 18px;
	border: 1px solid var(--fc-line); border-left: 3px solid var(--fc-line);
	border-radius: 12px; background: var(--fc-paper);
}
.fclms-rolecard:last-of-type { margin-bottom: 0; }

/* Dunga urmează culoarea insignei purtate de același rol în capul paginii. */
.fclms-rolecard--admin { border-left-color: var(--fc-danger); }
.fclms-rolecard--manager { border-left-color: #6C4AB6; }
.fclms-rolecard--agent { border-left-color: var(--fc-accent); }
.fclms-rolecard--teacher { border-left-color: var(--fc-good); }
.fclms-rolecard--student { border-left-color: var(--fc-primary); }

.fclms-rolecard__head { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
.fclms-rolecard__icon { font-size: 22px; line-height: 1; }
.fclms-rolecard__name { margin: 0; font-size: 17px; }

/* De unde vine rolul: din abonament sau de la administrator. Deosebirea
   hotărăște ce se întâmplă luna viitoare, deci merită scrisă. */
.fclms-rolecard__src {
	margin-left: auto; padding: 3px 10px; border-radius: 999px;
	font-size: 11.5px; font-weight: 700; color: var(--fc-muted);
	background: var(--fc-surface); border: 1px solid var(--fc-line);
}

.fclms-rolecard__what { margin: 0 0 12px; }

.fclms-rolecard__label {
	margin: 12px 0 6px;
	font-size: 11.5px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--fc-muted);
}

/* Semnul din capul rândului spune verdictul fără cuvinte, iar culoarea îl
   întărește: bifă verde la ce poți, linie roșie la ce nu. */
.fclms-rolelist { margin: 0; padding: 0; list-style: none; }
.fclms-rolelist li {
	position: relative; padding-left: 22px; margin-bottom: 4px;
	font-size: 14px; line-height: 1.5;
}
.fclms-rolelist li::before {
	position: absolute; left: 0; top: 0;
	font-weight: 800;
}
.fclms-rolelist--can li::before { content: "✓"; color: var(--fc-good); }
.fclms-rolelist--cannot li::before { content: "—"; color: var(--fc-bad); }
.fclms-rolelist--cannot li { color: var(--fc-muted); }

.fclms-rolecard__until { margin: 12px 0 0; font-size: 13px; color: var(--fc-muted); }

/* Rolurile pe care omul nu le are: un rând fiecare, fără liste de drepturi.
   Sunt aici ca să înțeleagă întregul, nu ca să râvnească la ele. */
.fclms-rolesrest { display: flex; flex-direction: column; gap: 6px; }
.fclms-rolerest {
	display: flex; align-items: baseline; gap: 8px;
	font-size: 13.5px; color: var(--fc-muted);
}
.fclms-rolerest b { color: var(--fc-ink); flex: none; }

@media (max-width: 640px) {
	.fclms-rolecard__src { margin-left: 0; }
	.fclms-rolerest { flex-wrap: wrap; }
}

/* În „Învăț acum”, seturile însemnate cu steluța au partea lor de pagină, iar
   o linie le desparte de restul. Mutarea în sus se vede, deci se înțelege —
   înainte, setul urca printre celelalte și părea o ordine schimbată singură. */
.fclms-shelfhead { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; }
.fclms-shelfhead__n {
	padding: 2px 9px; border-radius: 999px;
	font-size: 12px; font-weight: 800; color: var(--fc-muted);
	background: var(--fc-paper); border: 1px solid var(--fc-line);
}
.fclms-shelfsplit {
	margin: 26px 0 22px; border: 0;
	border-top: 1px solid var(--fc-line);
}

/* ============================================================================
   TABLOUL CURSANTULUI

   Trei părți, în ordinea în care cineva se uită la ele: cifrele mari ale zilei,
   apoi forma învățării — harta cutiilor și graficul —, iar la urmă jocul,
   prietenii și biblioteca, lucruri care se schimbă mai rar.
   ========================================================================= */

.fclms-hero4 {
	display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
	margin-bottom: 26px;
}
.fclms-hero4__one {
	padding: 22px 20px; text-align: center;
	border: 1px solid var(--fc-line); border-radius: 16px;
	background: var(--fc-surface);
}
.fclms-hero4__one b {
	display: block; font-size: 34px; line-height: 1.05; letter-spacing: -.03em;
	font-variant-numeric: tabular-nums;
}
.fclms-hero4__one span {
	display: block; margin-top: 6px;
	font-size: 11.5px; font-weight: 700; letter-spacing: .05em;
	text-transform: uppercase; color: var(--fc-muted);
}

/* Punctele și seria primesc fundal, nu doar culoare: sunt cele două cifre pe
   care omul le caută întâi, iar restul rămân liniștite ca să se vadă asta. */
.fclms-hero4__one.is-gold {
	background: linear-gradient(150deg, #FDF3D6, var(--fc-surface) 70%);
	border-color: #EBD9A6;
}
.fclms-hero4__one.is-fire {
	background: linear-gradient(150deg, var(--fc-tint), var(--fc-surface) 70%);
}
.fclms-hero4__one.is-good b { color: var(--fc-good); }
.fclms-hero4__one.is-mid b { color: var(--fc-mid); }
.fclms-hero4__one.is-bad b { color: var(--fc-bad); }

/* --------------------------------------------------- rândurile de cifre mici */

.fclms-statsec { margin: 30px 0 14px; }

.fclms-tilerow {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px;
	margin-bottom: 18px;
}
.fclms-tile {
	padding: 14px 16px;
	border: 1px solid var(--fc-line); border-radius: 12px; background: var(--fc-surface);
}
.fclms-tile b {
	display: block; font-size: 22px; line-height: 1.1; letter-spacing: -.02em;
	font-variant-numeric: tabular-nums;
}
.fclms-tile span {
	display: block; margin-top: 2px;
	font-size: 11.5px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--fc-muted);
}
.fclms-tile.is-good b { color: var(--fc-good); }
.fclms-tile.is-mid b { color: var(--fc-mid); }
.fclms-tile.is-bad b { color: var(--fc-bad); }

/* ------------------------------------------------------- harta cutiilor

   Singurul loc din pagină care spune forma învățării, nu mărimea ei. Procentul
   de „învățat” e o medie, iar mediile ascund: un om cu tot în cutia întâi și
   unul cu jumătate în prima și jumătate în ultima au aceeași medie și două
   situații cu totul deosebite. Aici se vede care e care. */

.fclms-boxmap__hint { font-size: 13px; margin: 0 0 18px; }

.fclms-boxmap { display: flex; align-items: flex-end; gap: 10px; }
.fclms-boxmap__col { flex: 1; display: flex; flex-direction: column; align-items: center; min-width: 0; }

.fclms-boxmap__n {
	font-size: 15px; font-weight: 800; margin-bottom: 6px;
	font-variant-numeric: tabular-nums;
}
.fclms-boxmap__stack {
	width: 100%; height: 120px;
	display: flex; align-items: flex-end;
	border-radius: 8px; background: var(--fc-paper); overflow: hidden;
}
.fclms-boxmap__fill { width: 100%; border-radius: 8px 8px 0 0; transition: height .35s ease; }

.fclms-boxmap__name {
	margin-top: 8px; font-size: 12px; font-weight: 700; text-align: center;
	max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-boxmap__pct { font-size: 11.5px; color: var(--fc-muted); font-variant-numeric: tabular-nums; }

/* Ziua cea mai bună se aprinde în grafic: e reperul față de care se citește
   restul coloanelor. */
.fclms-chart__col.is-peak .fclms-chart__bar { background: var(--fc-accent); }

.fclms-statsreset { margin: 30px 0 0; }
.fclms-app p.fclms-statsreset { margin: 30px 0 0; }

@media (prefers-reduced-motion: reduce) {
	.fclms-boxmap__fill { transition: none; }
}

@media (max-width: 720px) {
	.fclms-hero4 { grid-template-columns: repeat(2, 1fr); }
	.fclms-hero4__one { padding: 16px 12px; }
	.fclms-hero4__one b { font-size: 26px; }
	.fclms-boxmap { gap: 6px; }
	.fclms-boxmap__stack { height: 90px; }
	.fclms-boxmap__name { font-size: 10.5px; }
}

/* ----------------------------------------------------------- lămuririle

   Fiecare cifră din Progres are lângă ea un semn de întrebare. Deschis, spune
   ce înseamnă cifra ȘI cum s-a socotit — a doua parte fiind cea care lipsea:
   „72% acuratețe” nu spune peste ce s-a socotit, iar cine nu știe nu poate nici
   să se bucure, nici să se îndrepte.

   Semnul e un buton, nu un `title` al browserului: acela nu se deschide la
   atingere, deci pe telefon explicația n-ar fi existat deloc. Așa se deschide
   și cu degetul, și cu tastatura. */

.fclms-app .fclms-tip {
	position: relative;
	display: inline-flex; align-items: center; justify-content: center;
	width: 15px; height: 15px; padding: 0; margin-left: 3px;
	vertical-align: middle;
	font-size: 11px; line-height: 1; font-family: inherit;
	color: var(--fc-muted); background: none; border: 0; cursor: help;
	opacity: .55; transition: opacity .15s ease;
}
.fclms-app .fclms-tip:hover,
.fclms-app .fclms-tip:focus { opacity: 1; color: var(--fc-primary); }
.fclms-app .fclms-tip:focus-visible { outline: none; box-shadow: var(--fc-ring); border-radius: 50%; }

/* Bula stă deasupra cifrei, nu sub ea: cifrele sunt în rânduri strânse, iar
   una deschisă în jos ar fi acoperit rândul următor tocmai când îl compari. */
.fclms-tip::after {
	content: attr(data-tip);
	position: absolute; bottom: calc(100% + 10px); left: 50%;
	width: 250px; transform: translateX(-50%);
	padding: 10px 12px; border-radius: 10px;
	background: var(--fc-ink); color: #fff;
	font-size: 12.5px; font-weight: 500; line-height: 1.45;
	letter-spacing: 0; text-transform: none; text-align: left;
	white-space: normal;
	box-shadow: 0 10px 30px rgba(10, 18, 26, .25);
	opacity: 0; visibility: hidden; pointer-events: none;
	transition: opacity .15s ease;
	z-index: 40;
}
/* Vârful bulei, un pătrat răsucit pe jumătate ascuns sub ea. */
.fclms-tip::before {
	content: ""; position: absolute; bottom: calc(100% + 5px); left: 50%;
	width: 10px; height: 10px; transform: translateX(-50%) rotate(45deg);
	background: var(--fc-ink);
	opacity: 0; visibility: hidden; transition: opacity .15s ease;
	z-index: 41;
}
.fclms-tip:hover::after, .fclms-tip:focus::after,
.fclms-tip:hover::before, .fclms-tip:focus::before { opacity: 1; visibility: visible; }

/* Lângă marginile ecranului bula ar ieși afară din pagină; cifrele de la
   capete o poartă trasă înăuntru. */
.fclms-hero4__one:first-child .fclms-tip::after,
.fclms-tilerow > :first-child .fclms-tip::after { left: 0; transform: none; }
.fclms-hero4__one:last-child .fclms-tip::after,
.fclms-tilerow > :last-child .fclms-tip::after { left: auto; right: 0; transform: none; }

@media (max-width: 720px) {
	.fclms-tip::after { width: 210px; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-tip, .fclms-tip::after, .fclms-tip::before { transition: none; }
}

/* ============================================================================
   PUNCTELE MELE

   Pagina răspundea la o singură întrebare — „câte am?” — și o răspundea de trei
   ori: totalul sus, trei cifre la mijloc, cutiile jos. Erau cifre adevărate,
   dar toate priveau înapoi, iar niciuna nu spunea ce se poate face în seara
   asta. Acum merge în ordinea întrebărilor pe care și le pune cineva care își
   deschide punctele: unde sunt, de unde vin, ce urmează, cum stau cartonașele,
   ce s-a întâmplat și după ce lege.
   ========================================================================= */

/* ------------------------------------------------------------- treapta

   Un total gol — „59” — nu spune nimic despre el însuși: e mult, e puțin, e
   aproape de ceva? Treapta îi dă o măsură, iar bara îi dă un capăt apropiat.
   Cine vede că mai are 41 de puncte până la treapta următoare știe pe loc că e
   o seară de învățat, nu o lună. */

.fclms-plevel {
	background: linear-gradient(150deg, #FDF3D6, var(--fc-surface) 62%);
	border-color: #EBD9A6;
}
.fclms-plevel__top {
	display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
}
.fclms-plevel__total { display: flex; align-items: center; gap: 16px; }
.fclms-plevel__coin { font-size: 38px; line-height: 1; }
.fclms-app p.fclms-plevel__value {
	margin: 2px 0 0; font-size: 42px; line-height: 1; font-weight: 900;
	letter-spacing: -.03em; font-variant-numeric: tabular-nums;
}

/* Insigna treptei stă la capătul celălalt al rândului: totalul e cifra, ea e
   numele lui. Puse alături, s-ar fi citit ca două cifre deosebite. */
.fclms-plevel__badge {
	margin-left: auto; display: grid; justify-items: center; gap: 1px;
	padding: 10px 18px; border-radius: 14px;
	background: rgba(255, 255, 255, .72); border: 1px solid #EBD9A6;
}
.fclms-plevel__icon { font-size: 26px; line-height: 1.1; }
.fclms-plevel__name { font-size: 15px; font-weight: 800; letter-spacing: -.01em; }
.fclms-plevel__n {
	font-size: 10.5px; font-weight: 700; letter-spacing: .06em;
	text-transform: uppercase; color: var(--fc-muted);
}

.fclms-plevel__track {
	margin-top: 20px; height: 10px; border-radius: 999px;
	background: rgba(22, 32, 43, .08); overflow: hidden;
}
.fclms-plevel__fill {
	display: block; height: 100%; border-radius: 999px;
	background: linear-gradient(90deg, var(--fc-accent), #F2C14E);
	transition: width .4s ease;
}
.fclms-app p.fclms-plevel__next {
	margin: 8px 0 0; font-size: 13.5px; color: var(--fc-muted);
}
.fclms-plevel__next b { color: var(--fc-ink); font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------- izvoarele punctelor

   Banda e acolo pentru un singur lucru, dar important: se vede dintr-o privire
   dacă totalul vine din învățat sau din altceva. Un om al cărui total e aproape
   tot din meciuri află asta fără să citească un rând. */

.fclms-app p.fclms-psrc__hint { margin: 0 0 16px; font-size: 13px; }

.fclms-psplit {
	display: flex; height: 14px; border-radius: 999px; overflow: hidden;
	background: var(--fc-paper); margin-bottom: 18px;
}
.fclms-psplit__part { display: block; height: 100%; min-width: 2px; }

/* Fiecare izvor cu culoarea lui, aceeași în bandă și în rânduri. Cele ale
   învățării ies din albastrul casei, cele ale muncii din auriul punctelor:
   deosebirea dintre „cât știi” și „cât ai muncit” se vede înainte de a se
   citi. */
.fclms-psplit__part.is-card   { background: var(--fc-primary); }
.fclms-psplit__part.is-deck   { background: var(--fc-primary-soft); }
.fclms-psplit__part.is-set    { background: #4FA0AF; }
.fclms-psplit__part.is-match  { background: var(--fc-accent); }
.fclms-psplit__part.is-play   { background: #F2C14E; }
.fclms-psplit__part.is-daily  { background: #C77700; }
.fclms-psplit__part.is-streak { background: #D9622B; }
.fclms-psplit__part.is-volume { background: #8E7CC3; }
.fclms-psplit__part.is-friend { background: #6B9E78; }

.fclms-psrc { display: grid; gap: 2px; }
.fclms-psrc__row {
	display: grid; align-items: center; gap: 12px;
	grid-template-columns: 22px 1fr auto 46px auto;
	padding: 9px 0; border-bottom: 1px solid var(--fc-line);
}
.fclms-psrc__row:last-child { border-bottom: 0; }
.fclms-psrc__icon { font-size: 16px; line-height: 1; }
.fclms-psrc__name { font-size: 14px; font-weight: 600; }
.fclms-psrc__n {
	font-size: 13px; color: var(--fc-muted); font-variant-numeric: tabular-nums;
}
.fclms-psrc__pct {
	font-size: 12.5px; color: var(--fc-muted); text-align: right;
	font-variant-numeric: tabular-nums;
}

/* Cele două feluri de puncte, spuse pe față. Cine vede că 40 din 59 nu se pot
   pierde citește altfel o săptămână proastă. */
.fclms-pkinds {
	display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px;
}
.fclms-pkind {
	display: grid; gap: 2px; padding: 12px 14px;
	border: 1px solid var(--fc-line); border-radius: 12px; background: var(--fc-paper);
}
.fclms-pkind.is-kept { background: #FDF6E3; border-color: #EBD9A6; }
.fclms-pkind__label {
	font-size: 11.5px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--fc-muted);
}
.fclms-pkind b { font-size: 20px; font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------------- ce urmează

   Miezul paginii. Restul descriu trecutul; numai el spune ce se poate face în
   seara asta. Fiecare țintă e un buton, fiindcă o țintă care nu se poate urma
   din locul în care e scrisă e doar o mustrare. */

.fclms-app p.fclms-pgoals__hint { margin: -6px 0 14px; font-size: 13px; }

.fclms-pgoals {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 12px; margin-bottom: 18px;
}
.fclms-app .fclms-pgoal {
	display: grid; gap: 8px; width: 100%; text-align: left;
	padding: 16px; font-family: inherit; color: var(--fc-ink); cursor: pointer;
	border: 1px solid var(--fc-line); border-radius: 14px; background: var(--fc-surface);
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.fclms-app .fclms-pgoal:hover {
	border-color: rgba(var(--fc-primary-rgb), .45);
	box-shadow: var(--fc-shadow-lift); transform: translateY(-1px);
}
.fclms-app .fclms-pgoal:focus-visible { outline: none; box-shadow: var(--fc-ring); }

.fclms-pgoal__head { display: flex; align-items: center; gap: 8px; }
.fclms-pgoal__icon { font-size: 17px; line-height: 1; }
.fclms-pgoal__title {
	font-size: 13.5px; font-weight: 800; letter-spacing: -.01em;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-pgoal__prize {
	margin-left: auto; flex: none;
	padding: 3px 9px; border-radius: 999px;
	background: #FDF3D6; border: 1px solid #EBD9A6;
	font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums;
}

/* Cifra mare e cât a mai rămas, nu cât s-a făcut: „mai ai 4 cartonașe” se
   poate hotărî pe loc, „ai 46 din 50” cere o scădere. */
.fclms-pgoal__left { font-size: 13px; color: var(--fc-muted); line-height: 1.35; }
.fclms-pgoal__left b {
	font-size: 22px; color: var(--fc-ink); margin-right: 3px;
	font-variant-numeric: tabular-nums; letter-spacing: -.02em;
}

.fclms-pgoal__track {
	display: block; height: 6px; border-radius: 999px;
	background: var(--fc-paper); overflow: hidden;
}
.fclms-pgoal__fill {
	display: block; height: 100%; border-radius: 999px;
	background: var(--fc-primary); transition: width .35s ease;
}
.fclms-pgoal.is-daily  .fclms-pgoal__fill { background: #C77700; }
.fclms-pgoal.is-streak .fclms-pgoal__fill { background: #D9622B; }
.fclms-pgoal.is-volume .fclms-pgoal__fill { background: #8E7CC3; }
.fclms-pgoal.is-friend .fclms-pgoal__fill { background: #6B9E78; }

.fclms-pgoal__count {
	font-size: 11.5px; color: var(--fc-muted); font-variant-numeric: tabular-nums;
}

/* ------------------------------------------------------------ cutiile

   Singurul loc din pagină de unde se vede că un cartonaș urcat mai are unde să
   urce: cutia a doua aduce 2, a cincea aduce 5, iar drumul dintre ele e tot
   învățare. Bara e proporția, nu decorul. */

.fclms-pboxes { display: grid; gap: 2px; }
.fclms-pbox {
	display: grid; align-items: center; gap: 14px;
	grid-template-columns: 150px minmax(60px, 1fr) auto 40px auto;
	padding: 10px 0; border-bottom: 1px solid var(--fc-line);
}
.fclms-pbox:last-child { border-bottom: 0; }
.fclms-pbox__name {
	display: flex; align-items: center; gap: 8px;
	font-size: 14px; font-weight: 600;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-pbox__track {
	display: block; height: 8px; border-radius: 999px;
	background: var(--fc-paper); overflow: hidden;
}
.fclms-pbox__fill { display: block; height: 100%; border-radius: 999px; transition: width .35s ease; }
.fclms-pbox__cards { font-size: 13px; color: var(--fc-muted); font-variant-numeric: tabular-nums; }
.fclms-pbox__each {
	font-size: 12.5px; color: var(--fc-muted); text-align: right;
	font-variant-numeric: tabular-nums;
}

/* ------------------------------------------------------------- jurnalul */

.fclms-app ul.fclms-phist { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.fclms-phist__row {
	display: grid; align-items: center; gap: 12px;
	grid-template-columns: 24px 1fr auto;
	padding: 10px 0; border-bottom: 1px solid var(--fc-line);
}
.fclms-phist__row:last-child { border-bottom: 0; }
.fclms-phist__icon { font-size: 17px; line-height: 1; }
.fclms-phist__main { display: grid; gap: 1px; min-width: 0; }
.fclms-phist__main b {
	font-size: 14px; font-weight: 700;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-phist__when { font-size: 12px; color: var(--fc-muted); }
.fclms-app p.fclms-phist__note { margin: 16px 0 0; font-size: 12.5px; }

/* Navigarea stă între rânduri și lămurire: întâi ce citești, apoi cum treci
   mai departe, iar vorba despre cartonașe la urmă, ca o notă de subsol. */
[data-phist] .fclms-pager { margin: 16px 0 0; }
[data-phist] .fclms-pager + .fclms-phist__note { margin-top: 12px; text-align: center; }

/* -------------------------------------------------------------- baremul

   Un sistem de puncte pe care nu-l poți citi e o loterie: cifra urcă și coboară
   fără lege știută, iar ce nu se înțelege nu motivează, ci enervează. Baremul
   stă deci lângă puncte — dar închis, fiindcă se citește o dată. */

.fclms-prules { padding: 0; }
.fclms-app .fclms-prules__summary {
	list-style: none; cursor: pointer; padding: 18px 24px;
	font-size: 15px; font-weight: 800; letter-spacing: -.01em;
}
.fclms-prules__summary::-webkit-details-marker { display: none; }
.fclms-prules__summary::after {
	content: "▾"; float: right; color: var(--fc-muted); font-weight: 400;
	transition: transform .2s ease;
}
.fclms-prules[open] .fclms-prules__summary::after { transform: rotate(180deg); }
.fclms-app .fclms-prules__summary:focus-visible { outline: none; box-shadow: var(--fc-ring); border-radius: 12px; }

.fclms-app p.fclms-prules__hint { margin: 0 24px 12px; font-size: 13px; }
.fclms-prules__list { padding: 0 24px 20px; display: grid; gap: 2px; }
.fclms-prule {
	display: grid; align-items: center; gap: 12px;
	grid-template-columns: 22px 1fr auto;
	padding: 8px 0; border-bottom: 1px solid var(--fc-line);
}
.fclms-prule:last-child { border-bottom: 0; }
.fclms-prule__icon { font-size: 15px; line-height: 1; }
.fclms-prule__what { font-size: 13.5px; }

/* ------------------------------------------------------------ pe telefon

   Rândurile de cinci coloane nu încap pe un ecran îngust. Ce cade primul e ce
   se poate reface din minte: procentul, care se vede în bandă, și valoarea
   unitară a cutiei, care e scrisă în barem. Cifrele nu cad niciodată. */

@media (max-width: 720px) {
	.fclms-plevel__badge { margin-left: 0; }
	.fclms-app p.fclms-plevel__value { font-size: 34px; }

	.fclms-psrc__row { grid-template-columns: 22px 1fr auto auto; }
	.fclms-psrc__pct { display: none; }

	.fclms-pkinds { grid-template-columns: 1fr; }

	.fclms-pbox { grid-template-columns: 1fr auto auto; gap: 8px 12px; }
	.fclms-pbox__track { grid-column: 1 / -1; order: 3; }
	.fclms-pbox__each { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-plevel__fill, .fclms-pgoal__fill, .fclms-pbox__fill,
	.fclms-app .fclms-pgoal, .fclms-prules__summary::after { transition: none; }
	.fclms-app .fclms-pgoal:hover { transform: none; }
}

/* ============================================================================
   INSIGNELE

   Treapta se vedea până acum numai una singură — cea pe care stai — și încă un
   nume, al celei următoare. Era destul ca să știi unde ești, dar nu și pentru
   ce urcă cineva: drumul întreg nu se vedea nicăieri, iar un drum care nu se
   vede nu se alege, se nimerește.

   Aici stau toate zece. Cele câștigate rămân aprinse — sunt fapte, nu decor;
   cea de acum poartă un semn; cele care vin stau stinse, dar la vedere, cu
   pragul scris pe ele. O insignă care nu spune cât costă e o cutie închisă,
   iar cutiile închise nu îndeamnă pe nimeni la învățat.
   ========================================================================= */

.fclms-bhero {
	background: linear-gradient(150deg, #FDF3D6, var(--fc-surface) 62%);
	border-color: #EBD9A6;
}
.fclms-bhero__top { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }

/* Insigna de acum, mare: pagina se deschide cu ea, fiindcă ea e răspunsul la
   întrebarea cu care se intră aici — unde am ajuns. */
.fclms-bhero__medal {
	flex: none; width: 74px; height: 74px; border-radius: 50%;
	display: grid; place-items: center; font-size: 36px; line-height: 1;
	background: radial-gradient(circle at 32% 28%, #FFF8E4, #F6E3B0 72%);
	border: 2px solid #E3C97E;
	box-shadow: 0 6px 18px rgba(196, 156, 40, .22);
}
.fclms-bhero__who { min-width: 0; }
.fclms-app p.fclms-bhero__name {
	margin: 2px 0 0; font-size: 26px; line-height: 1.1; font-weight: 900;
	letter-spacing: -.02em;
}
.fclms-app p.fclms-bhero__count { margin: 6px 0 0; font-size: 13px; color: var(--fc-muted); }
.fclms-bhero__count b { color: var(--fc-ink); font-variant-numeric: tabular-nums; }
.fclms-bhero .fclms-points--big { margin-left: auto; }
.fclms-app p.fclms-bhero__next { margin: 8px 0 0; font-size: 13.5px; color: var(--fc-muted); }
.fclms-bhero__next b { color: var(--fc-ink); font-variant-numeric: tabular-nums; }
.fclms-bhero .fclms-plevel__track { margin-top: 18px; }

.fclms-app p.fclms-bdgs__hint { margin: -6px 0 14px; font-size: 13px; }

.fclms-bdgs {
	display: grid; grid-template-columns: repeat(auto-fill, minmax(158px, 1fr));
	gap: 12px;
}

.fclms-bdg {
	position: relative; display: grid; justify-items: center; gap: 5px;
	padding: 18px 12px 14px; text-align: center;
	border: 1px solid var(--fc-line); border-radius: 16px; background: var(--fc-surface);
}

/* Discul e locul insignei. Câștigat, e auriu și are umbră; blocat, e o
   monedă goală — aceeași formă, fără lumina din ea. */
.fclms-bdg__disc {
	position: relative; width: 58px; height: 58px; border-radius: 50%;
	display: grid; place-items: center; font-size: 27px; line-height: 1;
	background: var(--fc-paper); border: 1px solid var(--fc-line);
}
.fclms-bdg__icon { line-height: 1; }

.fclms-bdg.is-earned .fclms-bdg__disc,
.fclms-bdg.is-current .fclms-bdg__disc {
	background: radial-gradient(circle at 32% 28%, #FFF8E4, #F6E3B0 72%);
	border-color: #E3C97E;
	box-shadow: 0 4px 12px rgba(196, 156, 40, .2);
}

/* Treptele care vin nu se ascund, dar nici nu se dau drept câștigate: semnul
   lor se stinge în cenușiu, iar lacătul spune restul. */
.fclms-bdg.is-locked .fclms-bdg__icon { filter: grayscale(1); opacity: .38; }
.fclms-bdg__lock {
	position: absolute; right: -3px; bottom: -3px; font-size: 13px; line-height: 1;
	width: 22px; height: 22px; border-radius: 50%;
	display: grid; place-items: center;
	background: var(--fc-surface); border: 1px solid var(--fc-line);
}

.fclms-bdg__n {
	font-size: 10.5px; font-weight: 700; letter-spacing: .06em;
	text-transform: uppercase; color: var(--fc-muted);
}
.fclms-bdg__name {
	font-size: 15px; font-weight: 800; letter-spacing: -.01em;
	max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-bdg__from {
	font-size: 12px; color: var(--fc-muted); font-variant-numeric: tabular-nums;
}
.fclms-bdg__state {
	margin-top: 2px; font-size: 12px; color: var(--fc-muted);
	font-variant-numeric: tabular-nums;
}
.fclms-bdg__state b { color: var(--fc-ink); }
.fclms-bdg.is-earned .fclms-bdg__state,
.fclms-bdg.is-current .fclms-bdg__state { color: #2F7D4F; font-weight: 700; }

.fclms-bdg__track {
	display: block; width: 100%; height: 5px; margin-top: 6px;
	border-radius: 999px; background: var(--fc-paper); overflow: hidden;
}
.fclms-bdg__fill {
	display: block; height: 100%; border-radius: 999px;
	background: linear-gradient(90deg, var(--fc-accent), #F2C14E);
	transition: width .35s ease;
}

/* Treapta pe care stai e singura care trebuie găsită fără căutare: chenar
   aprins, hârtie caldă și un semn scris în capul ei. */
.fclms-bdg.is-current {
	border-color: #E3C97E; background: linear-gradient(160deg, #FDF3D6, var(--fc-surface) 70%);
	box-shadow: 0 6px 20px rgba(196, 156, 40, .18);
}
.fclms-bdg__here {
	position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
	padding: 3px 10px; border-radius: 999px; white-space: nowrap;
	background: var(--fc-accent); color: #fff;
	font-size: 10.5px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
}

@media (max-width: 720px) {
	.fclms-bdgs { grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 10px; }
	.fclms-bhero .fclms-points--big { margin-left: 0; }
	.fclms-app p.fclms-bhero__name { font-size: 22px; }
	.fclms-bhero__medal { width: 62px; height: 62px; font-size: 30px; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-bdg__fill { transition: none; }
}

/* ============================================================================
   CLASAMENTELE

   Erau o listă de douăzeci și cinci de rânduri egale, cu un chenar deasupra
   care spunea pe ce loc ești. Cine era al optzecilea vedea numai străini, iar
   locul lui plutea acolo fără nicio legătură cu ce urma dedesubt — adică tocmai
   lucrul care face un clasament de folos, vecinătatea, lipsea.
   ========================================================================= */

/* ------------------------------------------------------------- podiumul

   Singura parte a paginii care nu spune o cifră, ci o poziție — și o spune prin
   formă, nu prin scris: treapta din mijloc e mai înaltă, deci se vede cine e
   primul înainte de a citi ceva. */

.fclms-bpodium {
	display: grid; grid-template-columns: repeat(3, 1fr);
	align-items: end; gap: 12px; margin-bottom: 20px;
}

/*
 * Cu doi întrecuți, grila rămâne de trei coloane și al treilea loc stă gol.
 * Strânsă la două coloane late, cutiile ieșeau mai mari decât dincolo, iar
 * locul întâi aluneca din mijlocul paginii — două clasamente care arată același
 * lucru ajungeau să aibă două măsuri. Așa, cartonașul câștigătorului cade exact
 * unde cade și pe cel general, iar lipsa se citește drept ce este: n-are cine
 * sta pe locul trei.
 */
.fclms-bpodium.is-two { grid-template-columns: repeat(3, 1fr); }
.fclms-bpodium__one {
	display: grid; justify-items: center; gap: 5px; text-align: center; min-width: 0;
	padding: 16px 10px 0;
	border: 1px solid var(--fc-line); border-top-left-radius: 16px; border-top-right-radius: 16px;
	border-bottom: 0; background: var(--fc-surface);
}
.fclms-bpodium__one.is-p1 {
	background: linear-gradient(180deg, #FDF3D6, var(--fc-surface) 72%);
	border-color: #EBD9A6;
}
.fclms-bpodium__one.is-p2 { background: linear-gradient(180deg, #F0F2F5, var(--fc-surface) 72%); }
.fclms-bpodium__one.is-p3 { background: linear-gradient(180deg, #F7EDE4, var(--fc-surface) 72%); }
.fclms-bpodium__one.is-me { box-shadow: var(--fc-ring); }

.fclms-bpodium__medal { font-size: 22px; line-height: 1; }
.fclms-bpodium__face {
	width: 52px; height: 52px; border-radius: 50%; object-fit: cover;
	border: 2px solid var(--fc-surface); box-shadow: var(--fc-shadow);
}
.fclms-bpodium__one.is-p1 .fclms-bpodium__face { width: 64px; height: 64px; }

.fclms-bpodium__name {
	font-size: 13.5px; font-weight: 800; letter-spacing: -.01em;
	max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-bpodium__real {
	font-size: 11.5px; color: var(--fc-muted);
	max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/*
 * Rândul numelui real își ține locul și gol.
 *
 * Numele se vede între prieteni și nu în lume, deci pe un clasament rândul e
 * scris și pe celălalt nu — iar cutiile ieșeau cu o linie mai înalte dincolo
 * decât dincoace. Un podium care își schimbă statura după cât se știe despre
 * oameni nu mai e o formă, e o părere. Așa, spațiul e cerut o dată și rămâne
 * cerut, plin sau gol.
 */
.fclms-bpodium__real:empty::before { content: "\00a0"; }
.fclms-bpodium__points {
	font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums;
}

/* Treapta propriu-zisă. Înălțimile spun ordinea fără să scrie nimic: primul
   stă cu un cap mai sus, iar al treilea cu unul mai jos decât al doilea. */
.fclms-bpodium__step { display: block; width: 100%; margin-top: 8px; }
.fclms-bpodium__one.is-p1 .fclms-bpodium__step { height: 34px; }
.fclms-bpodium__one.is-p2 .fclms-bpodium__step { height: 20px; }
.fclms-bpodium__one.is-p3 .fclms-bpodium__step { height: 10px; }

/* --------------------------------------------------------- treapta, în mic */

.fclms-levelpip {
	display: inline-flex; align-items: center; gap: 4px; max-width: 100%;
	padding: 2px 8px; border-radius: 999px;
	background: var(--fc-paper); border: 1px solid var(--fc-line);
	font-size: 11px; font-weight: 700; color: var(--fc-muted);
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-levelpip__icon { font-size: 12px; line-height: 1; }

/* ------------------------------------------------------------- locul tău

   „Locul 8” nu e nimic: nu spune nici cât de departe e locul 7, nici cât de
   aproape e locul 9. Depărtările socotite în puncte fac din el o faptă. */

.fclms-standing { background: linear-gradient(150deg, var(--fc-tint), var(--fc-surface) 62%); }
.fclms-standing.is-out { background: var(--fc-surface); }

.fclms-standing__top { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.fclms-app p.fclms-standing__value {
	margin: 2px 0 0; font-size: 38px; line-height: 1; font-weight: 900;
	letter-spacing: -.03em; font-variant-numeric: tabular-nums;
}
.fclms-standing__top .fclms-points { margin-left: auto; }

.fclms-standing__gaps {
	display: flex; flex-wrap: wrap; gap: 10px;
	margin: 16px 0 0; padding-top: 14px; border-top: 1px solid var(--fc-line);
	font-size: 13px; color: var(--fc-muted);
}
.fclms-gap {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 6px 12px; border-radius: 999px;
	background: var(--fc-surface); border: 1px solid var(--fc-line);
	font-size: 12.5px; color: var(--fc-muted);
}
.fclms-gap b { color: var(--fc-ink); font-variant-numeric: tabular-nums; }
.fclms-gap__arrow { font-size: 13px; line-height: 1; }
.fclms-gap.is-up   { border-color: rgba(var(--fc-accent-rgb), .45); background: #FDF6E3; }
.fclms-gap.is-lead { border-color: #EBD9A6; background: #FDF3D6; }

/* ------------------------------------------------------------- rândurile

   Bara din spatele rândului e punctajul lui față de al primului. Cifrele
   singure nu spun distanța: între 1.200 și 300 se citește „de patru ori”, dar
   abia bara o arată. */

.fclms-board { padding: 8px 0; }
.fclms-app p.fclms-board__hint { margin: -6px 0 14px; font-size: 13px; }
.fclms-app p.fclms-board__total { margin: 14px 0 0; font-size: 12.5px; text-align: right; }

.fclms-lrow {
	position: relative; display: grid; align-items: center; gap: 12px;
	grid-template-columns: 34px 34px minmax(0, 1fr) auto auto;
	padding: 10px 24px; border-bottom: 1px solid var(--fc-line);
}
.fclms-lrow:last-child { border-bottom: 0; }

/* Bara stă în spate, nu între rânduri: e un fundal de citit din colțul
   ochiului, nu încă o coloană de urmărit. */
.fclms-lrow__bar {
	position: absolute; left: 0; top: 4px; bottom: 4px;
	background: var(--fc-tint); border-radius: 0 8px 8px 0;
	pointer-events: none;
}
.fclms-lrow > :not(.fclms-lrow__bar) { position: relative; }

.fclms-lrow.is-me { background: rgba(var(--fc-accent-rgb), .10); }
.fclms-lrow.is-me .fclms-lrow__bar { background: rgba(var(--fc-accent-rgb), .18); }
.fclms-lrow.is-me .fclms-lrow__pos { color: var(--fc-ink); }

.fclms-lrow__pos {
	font-size: 14px; font-weight: 800; color: var(--fc-muted); text-align: center;
	font-variant-numeric: tabular-nums;
}
.fclms-lrow__face {
	width: 34px; height: 34px; border-radius: 50%; object-fit: cover;
	border: 1px solid var(--fc-line);
}
.fclms-lrow__who { display: grid; gap: 0; min-width: 0; }
.fclms-lrow__who b {
	font-size: 14px; font-weight: 700;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.fclms-lrow__real {
	font-size: 11.5px; color: var(--fc-muted);
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ------------------------------------------------------------ pe telefon

   Ce cade e treapta scrisă — semnul ei rămâne pe podium, iar numele treptei se
   poate citi în „Punctele mele”. Cifrele și numele nu cad niciodată. */

@media (max-width: 720px) {
	.fclms-bpodium { gap: 6px; }
	.fclms-bpodium__one { padding: 12px 6px 0; }
	.fclms-bpodium__face { width: 44px; height: 44px; }
	.fclms-bpodium__one.is-p1 .fclms-bpodium__face { width: 54px; height: 54px; }
	.fclms-bpodium__name { font-size: 12px; }
	.fclms-bpodium__real { display: none; }
	.fclms-bpodium .fclms-levelpip { display: none; }

	.fclms-app p.fclms-standing__value { font-size: 32px; }
	.fclms-standing__top .fclms-points { margin-left: 0; }

	.fclms-lrow { grid-template-columns: 26px 30px minmax(0, 1fr) auto; padding: 10px 16px; gap: 10px; }
	.fclms-lrow .fclms-levelpip { display: none; }
	.fclms-lrow__face { width: 30px; height: 30px; }
}

/* ------------------------------------------------ DREPTURILE SECUNDARILOR

   Fișa unui administrator secundar: nouăsprezece file, fiecare cu treapta ei.
   Pe monitor rândurile stau cu numele la stânga și meniul la dreapta, aliniate
   într-o coloană; pe telefon numele trece deasupra, iar meniul se lățește cât
   ecranul, ca degetul să-l nimerească din prima.                            */

.fclms-notice--ro {
	background: rgba(var(--fc-accent-rgb), .12);
	color: var(--fc-ink);
	border-color: rgba(var(--fc-accent-rgb), .3);
}

.fclms-panel-wrap.is-readonly .fclms-form input:disabled,
.fclms-panel-wrap.is-readonly .fclms-form select:disabled,
.fclms-panel-wrap.is-readonly .fclms-form textarea:disabled { opacity: .65; cursor: not-allowed; }

.fclms-panel-wrap.is-readonly .fclms-btn:disabled { opacity: .45; cursor: not-allowed; }

.fclms-rights__sum { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 6px; }
.fclms-rights__trail { margin-top: 0; font-size: 13px; }

.fclms-rights__quick {
	display: flex;
	flex-wrap: wrap;
	gap: 18px;
	align-items: flex-end;
	padding: 14px 0;
	border-top: 1px solid var(--fc-line);
	border-bottom: 1px solid var(--fc-line);
	margin: 12px 0 10px;
}

.fclms-inline { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.fclms-inline .fclms-field { margin-bottom: 0; }

.fclms-btn--small { padding: 5px 10px; font-size: 13px; }

.fclms-rights__bar {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
	margin-bottom: 18px;
}

.fclms-rights__group {
	border: 1px solid var(--fc-line);
	border-radius: 12px;
	padding: 12px 14px;
	margin-bottom: 14px;
}

.fclms-rights__head {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 8px;
}

.fclms-rights__title { margin: 0; font-size: 15px; }
.fclms-rights__set { display: flex; flex-wrap: wrap; gap: 6px; }

.fclms-rights__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 8px 0;
	border-top: 1px dashed var(--fc-line);
	cursor: pointer;
}

.fclms-rights__group .fclms-rights__row:first-of-type { border-top: 0; }

.fclms-rights__name { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.fclms-rights__pick { min-width: 150px; }

@media (max-width: 600px) {
	.fclms-rights__head { flex-direction: column; align-items: stretch; }
	.fclms-rights__set { justify-content: space-between; }
	.fclms-rights__set .fclms-btn { flex: 1; }

	.fclms-rights__row { flex-direction: column; align-items: stretch; gap: 6px; }
	.fclms-rights__pick { width: 100%; min-width: 0; }

	.fclms-rights__quick { flex-direction: column; align-items: stretch; gap: 12px; }
	.fclms-inline { align-items: stretch; }
	.fclms-inline .fclms-field { flex: 1; }
}

/* Lista administratorilor: emailul stă sub nume, ca rândul să nu se lățească. */

.fclms-staff__list td { vertical-align: middle; }
.fclms-staff__mail { display: block; font-size: 13px; margin-top: 2px; }
.fclms-staff__list .fclms-chip { margin: 2px 4px 2px 0; }

/* Retragerea drepturilor, despărțită de salvare printr-un pas de aer. */

.fclms-staff__danger {
	margin-top: 28px;
	padding-top: 20px;
	border-top: 1px solid var(--fc-line);
}

/* Lămurirea de sub numele unei rubrici WordPress: mică, pe rândul ei. */

.fclms-rights__hint { display: block; font-size: 12px; line-height: 1.35; margin-top: 2px; }
.fclms-rights__name > span:last-child { display: block; }

/* Parola uitată și parola nouă stau singure pe pagină, nu în două coloane. */

.fclms-auth--one { grid-template-columns: 1fr; max-width: 480px; margin: 0 auto; }
.fclms-app--account > .fclms-auth--one { max-width: 480px; }

/* Rândul retras: nu greșit, doar nu încă la lume. Se vede din pastilă și
   dintr-un ton mai stins pe titlu, fără să pară stricat. */

.fclms-chip--draft { background: rgba(var(--fc-accent-rgb), .18); color: #7A5A00; }
.fclms-row.is-draft .fclms-row__title { opacity: .72; }
.fclms-row.is-draft { border-left: 3px solid rgba(var(--fc-accent-rgb), .5); }
.fclms-set-card.is-draft { outline: 2px dashed rgba(var(--fc-accent-rgb), .55); outline-offset: -2px; }

/* Trei câmpuri scurte pe un rând: numărul de încercări, fereastra, încuierea. */

.fclms-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 20px; }
@media (max-width: 640px) { .fclms-grid-3 { grid-template-columns: 1fr; } }

/* Fila de verificare: un semn, un titlu, iar dedesubt ce e de făcut — dar
   numai când e ceva de făcut. Un rând în regulă nu are nevoie de explicație. */

.fclms-checkrow { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 14px; }
.fclms-checkrow__mark { flex: 0 0 auto; line-height: 1.5; }
.fclms-checkrow small { display: block; margin-top: 3px; line-height: 1.45; }

/* Socoteala tabelelor de sub programul copiilor: două cifre care trebuie
   să rămână egale, puse acolo unde se văd fără să fie căutate. */

.fclms-backup-cover { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; }

/* ------------------------------------------------------ STAREA OAMENILOR

   Trei culori și trei forme, aceleași peste tot: în lista de prieteni, în
   lista de discuții și la alegerea partenerilor de meci. Se desenează numai
   când serverul trimite starea — vezi FCLMS_Presence::between.

   Verdele e singurul care „strigă”: el e informația căutată. Portocaliul e
   mai stins, fiindcă „plecat” e o jumătate de veste. Griul nu se vede decât
   dacă îl cauți: cine nu e conectat nu trebuie să atragă privirea într-o
   listă din care alegi pe cine chemi la joc.                              */

:root {
	--fc-on: #1E9E52;
	--fc-away: #D9922B;
	--fc-off: #9AA7B4;
}

.fclms-state__dot {
	display: inline-block; width: 8px; height: 8px; border-radius: 50%;
	background: var(--fc-off); flex: 0 0 auto;
}
.fclms-state__dot.is-online, .fclms-state.is-online .fclms-state__dot { background: var(--fc-on); }
.fclms-state__dot.is-away, .fclms-state.is-away .fclms-state__dot { background: var(--fc-away); }
.fclms-state__dot.is-off, .fclms-state.is-off .fclms-state__dot { background: var(--fc-off); }

/* Bulina celui prezent respiră încet: mișcarea spune „acum”, nu doar culoarea.
   Cine a cerut mai puțină mișcare pe ecran n-o vede — vezi regula de mai jos. */
.fclms-state.is-online .fclms-state__dot,
.fclms-state__dot.is-online {
	box-shadow: 0 0 0 0 rgba(30, 158, 82, .55);
	animation: fclms-pulse 2.4s ease-out infinite;
}

@keyframes fclms-pulse {
	0% { box-shadow: 0 0 0 0 rgba(30, 158, 82, .5); }
	70% { box-shadow: 0 0 0 6px rgba(30, 158, 82, 0); }
	100% { box-shadow: 0 0 0 0 rgba(30, 158, 82, 0); }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-state.is-online .fclms-state__dot,
	.fclms-state__dot.is-online { animation: none; }
}

.fclms-state {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 3px 10px 3px 8px; border-radius: 999px;
	font-size: 12px; font-weight: 600; line-height: 1.4;
	background: rgba(154, 167, 180, .14); color: var(--fc-muted);
	white-space: nowrap;
}
.fclms-state.is-online { background: rgba(30, 158, 82, .12); color: #16773D; }
.fclms-state.is-away { background: rgba(217, 146, 43, .14); color: #8A5B10; }
.fclms-state--small { font-size: 11px; padding: 2px 8px 2px 6px; }

/* Bulina din colțul chipului, în listele cu poză. */
.fclms-person__pic, .fclms-thread__pic { position: relative; flex: 0 0 auto; display: inline-flex; }
.fclms-person__dot {
	position: absolute; right: -1px; bottom: -1px;
	width: 12px; height: 12px; border-radius: 50%;
	border: 2px solid var(--fc-card, #fff);
	background: var(--fc-off);
}
.fclms-person__dot.is-online { background: var(--fc-on); }
.fclms-person__dot.is-away { background: var(--fc-away); }

.fclms-thread__pic .fclms-state__dot {
	position: absolute; right: 0; bottom: 0;
	width: 11px; height: 11px; border: 2px solid var(--fc-card, #fff);
}

/* Pastilele de la alegerea partenerilor de meci: bulina intră în chip. */
.fclms-chip--person { display: inline-flex; align-items: center; gap: 7px; }
.fclms-picknow {
	font-size: 12px; font-weight: 700; text-transform: uppercase;
	letter-spacing: .1em; color: var(--fc-on); margin: 0 0 8px;
}

/* Lista dispozitivelor conectate. Rândul sesiunii de acum e însemnat cu o
   dungă verde: e singurul care nu se poate închide de aici. */

.fclms-device { align-items: center; gap: 12px; }
.fclms-device.is-current { border-left: 3px solid #23A455; }
.fclms-device .fclms-row__meta code { font-size: 12px; }

/* Contul fără nicio restricție: o veste bună, nu un gol. */

.fclms-sanction__clean { font-weight: 600; color: #16773D; margin: 0 0 6px; }

/* =====================================================================
 * INELUL DE FOCALIZARE: DOAR PENTRU TASTATURĂ
 * ===================================================================== */

/*
 * Browserul desenează singur un contur când un element primește focalizarea —
 * și o primește și la clic de mouse, nu doar la Tab. Conturul acela e
 * dreptunghiular și nu ține seama de colțurile rotunjite: de aceea o pastilă
 * apăsată părea că se pătrățește, iar rândul apăsat din meniul de
 * administrare căpăta o ramă albastră, care rămânea acolo până apăsai
 * altundeva.
 *
 * Nu se scoate cu totul, ci se mută pe `:focus-visible`. Deosebirea e chiar
 * cea căutată: browserul aprinde `:focus-visible` când omul umblă cu
 * tastatura și nu-l aprinde la clic de mouse. Așa, cine apasă nu vede nimic
 * schimbat, iar cine navighează cu Tab știe în continuare unde se află —
 * fără el, o pagină parcursă la tastatură devine un labirint pe întuneric,
 * iar pentru cine nu poate ține un mouse asta e deosebirea dintre „merge” și
 * „nu merge”.
 *
 * ---------------------------------------------------------------------
 * DE CE E SCRIS ATÂT DE LAT
 *
 * Prima încercare numea anume pastilele, filele și meniul din stânga. A fost
 * prea strâmtă: mai există butoane și legături în zeci de locuri, iar fiecare
 * uitat lăsa conturul la vedere. Aici se prind toate lucrurile pe care le
 * apeși — legături, butoane, orice poartă `tabindex` — dintr-o singură
 * regulă, deci nu mai are cine să scape.
 *
 * Câmpurile de scris rămân neatinse dinadins: ele își au ramele lor de
 * focalizare, care trebuie să se vadă și la mouse. Un câmp în care scrii
 * fără să știi dacă e cel bun nu e o eleganță, e o greșeală care așteaptă.
 *
 * Numele clasei se scrie de două ori nu din neatenție: așa capătă destulă
 * greutate ca să bată o regulă a temei care ar pune conturul înapoi. O temă
 * care se ceartă cu pluginul pe conturi trebuie să piardă în propria lui
 * pagină.
 */
.fclms-app.fclms-app a:focus,
.fclms-app.fclms-app button:focus,
.fclms-app.fclms-app [role="button"]:focus,
.fclms-app.fclms-app [tabindex]:focus,
.fclms-app.fclms-app summary:focus,
.fclms-modal.fclms-modal a:focus,
.fclms-modal.fclms-modal button:focus,
.fclms-modal.fclms-modal [role="button"]:focus,
.fclms-modal.fclms-modal [tabindex]:focus {
	/*
	 * Numai conturul se stinge. Umbra NU se atinge: fila deschisă are o
	 * umbră subțire a ei, iar dacă am fi stins-o aici, apăsarea pe fila
	 * deschisă i-ar fi luat relieful — adică tocmai schimbarea de aspect
	 * pe care o îndepărtăm.
	 */
	outline: none !important;
	outline-offset: 0 !important;
}

/*
 * Inelul se desenează numai cât timp omul umblă cu tastatura.
 *
 * `:focus-visible` singur nu era de ajuns. Pe un `<button>` apăsat cu mouse-ul
 * tac toate browserele; pe un `<a>` apăsat cu mouse-ul, unele îl aprind. De
 * acolo venea nepotrivirea dintre cele două meniuri: cel al cursantului e
 * făcut din butoane și stătea cuminte, cel de administrare e făcut din
 * legături și se încadra în albastru la fiecare clic.
 *
 * Semnul `fclms-kbd` de pe pagină se aprinde la o tastă care mută focalizarea
 * și se stinge la orice atingere cu mouse-ul ori cu degetul — vezi `editor.js`.
 * Așa hotărăște același lucru pentru toate browserele și pentru toate felurile
 * de element: la clic, nimic; la Tab, inel.
 *
 * `:focus-visible` rămâne în selector ca a doua chezășie: dacă JavaScript-ul
 * nu apucă să pornească, cine umblă cu tastatura nu rămâne în întuneric.
 */
.fclms-kbd .fclms-app.fclms-app a:focus-visible,
.fclms-kbd .fclms-app.fclms-app button:focus-visible,
.fclms-kbd .fclms-app.fclms-app [role="button"]:focus-visible,
.fclms-kbd .fclms-app.fclms-app [tabindex]:focus-visible,
.fclms-kbd .fclms-app.fclms-app summary:focus-visible,
.fclms-kbd .fclms-modal.fclms-modal a:focus-visible,
.fclms-kbd .fclms-modal.fclms-modal button:focus-visible,
.fclms-kbd .fclms-modal.fclms-modal [role="button"]:focus-visible,
.fclms-kbd .fclms-modal.fclms-modal [tabindex]:focus-visible {
	outline: none !important;
	/* Umbra urmează colțurile rotunjite: pastila rămâne pastilă. */
	box-shadow: var(--fc-ring);
}

/*
 * Cât timp nu se umblă cu tastatura, nimic nu se încadrează. Clasa scrisă de
 * trei ori dă destulă greutate cât să treacă și peste o temă care își pune
 * conturul cu `!important` și cu selectori grei.
 *
 * Umbra nu se atinge: rândul deschis și fila aleasă au umbrele lor, iar dacă
 * le-am fi stins aici, apăsarea pe ele le-ar fi luat relieful.
 */
html:not(.fclms-kbd) .fclms-app.fclms-app.fclms-app a:focus,
html:not(.fclms-kbd) .fclms-app.fclms-app.fclms-app button:focus,
html:not(.fclms-kbd) .fclms-app.fclms-app.fclms-app [role="button"]:focus,
html:not(.fclms-kbd) .fclms-app.fclms-app.fclms-app [tabindex]:focus,
html:not(.fclms-kbd) .fclms-app.fclms-app.fclms-app summary:focus,
html:not(.fclms-kbd) .fclms-modal.fclms-modal.fclms-modal a:focus,
html:not(.fclms-kbd) .fclms-modal.fclms-modal.fclms-modal button:focus,
html:not(.fclms-kbd) .fclms-modal.fclms-modal.fclms-modal [role="button"]:focus,
html:not(.fclms-kbd) .fclms-modal.fclms-modal.fclms-modal [tabindex]:focus {
	outline: 0 !important;
	outline-offset: 0 !important;
}

/*
 * Pata gri pe care Android o pune peste orice lucru atins. La un meniu apăsat
 * des arată ca o defecțiune de afișaj; apăsarea se vede oricum din starea
 * activă a rândului.
 */
.fclms-app a,
.fclms-app button,
.fclms-app [role="button"],
.fclms-modal a,
.fclms-modal button { -webkit-tap-highlight-color: transparent; }

/*
 * Cele două mânere de tras — bara laterală și bulina de ajutor — își păstrează
 * semnul lor de focalizare. Stau pe fundal închis, unde inelul albastru se
 * pierde, iar ele au fost desenate anume cu un contur alb care se vede.
 */
.fclms-app.fclms-app .fclms-side__grip:focus-visible { box-shadow: none; }
.fclms-helper__grip:focus-visible {
	box-shadow: none;
	outline: 2px solid #fff !important;
	outline-offset: -4px !important;
}

/* ===========================================================================
   CĂRȚILE DE ALES FELUL MECIULUI STAU ÎN CULORILE LOR

   Cele două cărți sunt `<button>`-uri, iar temele WordPress le pândesc pe
   toate cu `button:hover` — unele cu `!important` și cu selectori mai grei
   decât ai noștri. Așa se făcea cartea albastră la trecerea cursorului, cu tot
   cu litera albă: culoarea temei peste culoarea care spunea ce fel de meci e.

   Împotriva unei reguli marcate `!important` nu ajută decât alta la fel, mai
   grea; între două deopotrivă de grele câștigă cea de mai jos, iar blocul
   acesta e ultimul din foaie, dinadins. Clasa scrisă de două ori cântărește
   cât două clase, deși alege exact aceleași elemente.

   Nu se adaugă niciun efect nou: toate valorile sunt cele din repaus. Rostul
   blocului e să oprească, nu să schimbe. Că se poate apăsa se vede din cursor,
   din rama care se colorează și din ridicarea de un pixel.
   =========================================================================== */

.fclms-modepick .fclms-modepick__one.fclms-modepick__one:hover,
.fclms-modepick .fclms-modepick__one.fclms-modepick__one:focus,
.fclms-modepick .fclms-modepick__one.fclms-modepick__one:active {
	background-color: var(--fc-surface) !important;
	background-image: none !important;
	color: var(--fc-ink) !important;
	border-color: var(--pick-line) !important;
	box-shadow: none !important;
}

/* Cartea aleasă își ține fundalul ei și sub cursor: ea e deja răspunsul. */
.fclms-modepick .fclms-modepick__one.fclms-modepick__one.is-active,
.fclms-modepick .fclms-modepick__one.fclms-modepick__one.is-active:hover,
.fclms-modepick .fclms-modepick__one.fclms-modepick__one.is-active:focus,
.fclms-modepick .fclms-modepick__one.fclms-modepick__one.is-active:active {
	background-color: var(--pick-soft) !important;
	background-image: none !important;
	border-color: var(--pick) !important;
}

/* Titlul și rândul de sub el nu-și schimbă cerneala la trecerea cursorului. */
.fclms-modepick .fclms-modepick__one.fclms-modepick__one b { color: var(--fc-ink) !important; }
.fclms-modepick .fclms-modepick__one.fclms-modepick__one.is-active b { color: var(--pick) !important; }
.fclms-modepick .fclms-modepick__one.fclms-modepick__one small { color: var(--fc-muted) !important; }

/* Pătratul cu semnul: gol în repaus, plin când cartea e aleasă. */
.fclms-modepick .fclms-modepick__one.fclms-modepick__one .fclms-modepick__mark {
	background-color: var(--pick-soft) !important;
	color: var(--pick) !important;
}
.fclms-modepick .fclms-modepick__one.fclms-modepick__one.is-active .fclms-modepick__mark {
	background-color: var(--pick) !important;
	color: #fff !important;
}

.fclms-modepick .fclms-modepick__one.fclms-modepick__one .fclms-modepick__tick {
	background-color: var(--pick) !important;
	color: #fff !important;
}

/* ===========================================================================
   BUTONUL DE INTRARE STĂ ÎN CULORILE LUI

   Butonul acesta e singurul lucru al pluginului care trăiește în afara
   aplicației: îl pui prin scurtcod în header-ul temei, printre meniurile ei.
   Acolo nu ajunge nici izolarea de la începutul foii, nici blocul care ține
   piept temei înăuntru — amândouă sunt legate de `.fclms-app` și
   `.fclms-modal`, iar el nu e în niciuna.

   Așa că temele îl vopseau la trecerea cursorului cu `button:hover`, ca pe
   orice buton din header-ul lor: pastila albă cu poza omului se făcea albastră
   cu litere albe.

   Blocul stă ultimul în foaie și poartă clasa scrisă de două ori — cântărește
   cât două clase, deși alege exact același element. Valorile sunt cele din
   repaus: rostul lui e să oprească, nu să schimbe.
   =========================================================================== */

/*
 * Izolarea, pentru un buton care n-o primește de nicăieri. Litera și cerneala
 * vin din alegerile din Aspect, nu din header-ul temei.
 */
.fclms-loginbtn.fclms-loginbtn {
	font-family: var(--fc-font) !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-decoration: none !important;
	text-shadow: none !important;
}

.fclms-loginbtn.fclms-loginbtn,
.fclms-loginbtn.fclms-loginbtn:hover,
.fclms-loginbtn.fclms-loginbtn:focus,
.fclms-loginbtn.fclms-loginbtn:active,
.fclms-loginbtn.fclms-loginbtn:visited {
	background-color: var(--fc-surface) !important;
	background-image: none !important;
	color: var(--fc-ink) !important;
	border: 1px solid var(--fc-line) !important;
	border-radius: 999px !important;
	padding: 10px 16px !important;
}

/* Conturul de la clic: se stinge, dar rămâne pentru cine umblă cu Tab. */
.fclms-loginbtn.fclms-loginbtn:focus { outline: none !important; }
.fclms-kbd .fclms-loginbtn.fclms-loginbtn:focus-visible {
	outline: none !important;
	box-shadow: var(--fc-ring) !important;
}
html:not(.fclms-kbd) .fclms-loginbtn.fclms-loginbtn:focus { outline: 0 !important; }

/*
 * Ridicarea și umbra rămân: ele nu vin de la temă, sunt semnul nostru că se
 * poate apăsa. Plutitorul își păstrează umbra lui mai adâncă, fiindcă stă
 * singur pe fundalul paginii și trebuie să se desprindă de ea.
 */
.fclms-loginbtn.fclms-loginbtn:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(22, 32, 43, .18) !important; }
.fclms-loginbtn--float.fclms-loginbtn--float { box-shadow: 0 4px 16px rgba(22, 32, 43, .22) !important; }
.fclms-loginbtn--float.fclms-loginbtn--float:hover { box-shadow: 0 6px 20px rgba(22, 32, 43, .26) !important; }

.fclms-loginbtn.fclms-loginbtn .fclms-loginbtn__face {
	width: 26px !important; height: 26px !important;
	border-radius: 50% !important; border: 0 !important;
	box-shadow: none !important; background: none !important;
	max-width: none !important;
}

@media (max-width: 560px) {
	.fclms-loginbtn--float.fclms-loginbtn--float { padding: 10px !important; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-loginbtn.fclms-loginbtn:hover { transform: none; }
}

/* Ferestruica din Aspect în care se vede butonul de intrare aievea. Fundalul
   e vărgat, ca la imaginile transparente: butonul poate fi alb, iar pe alb n-ar
   avea margini. */
.fclms-loginshow {
	display: flex; justify-content: center; align-items: center;
	min-height: 92px; margin: 0 0 18px; padding: 18px;
	border: 1px solid var(--fc-line); border-radius: var(--fc-radius);
	background-color: var(--fc-paper);
	background-image: linear-gradient(45deg, rgba(22,32,43,.04) 25%, transparent 25%, transparent 75%, rgba(22,32,43,.04) 75%),
		linear-gradient(45deg, rgba(22,32,43,.04) 25%, transparent 25%, transparent 75%, rgba(22,32,43,.04) 75%);
	background-size: 18px 18px;
	background-position: 0 0, 9px 9px;
}

/* ===========================================================================
   AVERTISMENTUL DE ABSENȚĂ

   Nu e o fereastră modală, și asta e partea care contează: panoul te previne
   că trebuie să răspunzi, deci n-are voie să stea între tine și butonul de
   răspuns. Stă jos, în colț, plutește peste pagină și nu prinde apăsările —
   `pointer-events: none` — ca un clic nimerit pe el să ajungă tot la cartonaș.

   Se înroșește sub jumătate de minut. Culoarea nu e podoabă: până acolo e o
   înștiințare, de acolo încolo e o urgență, iar ochiul care a văzut panoul
   galben acum un minut trebuie să bage de seamă că s-a schimbat ceva.
   =========================================================================== */

.fclms-awaywarn {
	position: fixed; left: 50%; bottom: 22px; transform: translateX(-50%);
	z-index: 9999; pointer-events: none;
	display: flex; align-items: center; gap: 12px;
	max-width: min(440px, calc(100vw - 28px));
	padding: 12px 16px;
	background: #FFF7E6; color: #6B4E00;
	border: 1px solid #E0A100; border-left-width: 4px;
	border-radius: 12px;
	box-shadow: 0 8px 26px rgba(22, 32, 43, .18);
	font-family: var(--fc-font); font-size: 14px; line-height: 1.35;
}

.fclms-awaywarn__mark { font-size: 20px; line-height: 1; flex: none; }
.fclms-awaywarn__body { display: grid; gap: 2px; min-width: 0; }
.fclms-awaywarn__body b { font-weight: 800; font-size: 14px; }
.fclms-awaywarn__body small { font-size: 12px; opacity: .85; }

.fclms-awaywarn__clock {
	flex: none; font-size: 22px; font-weight: 800;
	font-variant-numeric: tabular-nums; letter-spacing: -.02em;
}

.fclms-awaywarn.is-urgent {
	background: #FBEAE8; color: #7A1F16; border-color: #C0392B;
}

@media (max-width: 560px) {
	.fclms-awaywarn { bottom: 12px; padding: 10px 12px; gap: 9px; }
	.fclms-awaywarn__clock { font-size: 19px; }
}

/* --------------------------------------- propunerile dintr-un document
 *
 * O listă lungă de bifat, deci trebuie să se citească pe sărite: fața
 * îngroșată sus, răspunsul dedesubt, iar la capăt un rând mic care spune de
 * unde a ieșit cartonașul. Rândul acela nu e podoabă — cine vede „cuvânt
 * ascuns” pe zece rânduri la rând știe dintr-o privire că documentul lui n-are
 * structură, și de ce.
 */
.fclms-docbar {
	display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
	margin: 14px 0 10px; padding-top: 14px;
	border-top: 1px solid var(--fc-line);
}

.fclms-doclist { display: grid; gap: 6px; max-height: 46vh; overflow: auto; padding-right: 4px; }

.fclms-doccard {
	display: flex; gap: 10px; align-items: flex-start;
	padding: 9px 11px; cursor: pointer;
	background: var(--fc-surface); border: 1px solid var(--fc-line); border-radius: 10px;
}
.fclms-doccard:hover { border-color: var(--fc-primary); }
.fclms-doccard input { margin-top: 3px; flex: none; width: 16px; height: 16px; accent-color: var(--fc-primary); }
.fclms-doccard__body { display: grid; gap: 2px; min-width: 0; }
.fclms-doccard__body b { font-size: 14px; }
.fclms-doccard__body small { font-size: 12.5px; color: var(--fc-muted); line-height: 1.4; }
.fclms-doccard__why { font-size: 11px; font-style: normal; color: var(--fc-primary); opacity: .85; }

/* ===========================================================================
   CONTURUL DE LA CLIC — REGULA CARE NU DEPINDE DE LOCUL ELEMENTULUI

   Regulile de mai sus cer ca elementul să stea înăuntrul `.fclms-app` ori
   `.fclms-modal`. Aproape totul stă — dar nu meniul de administrare: pe ecran
   îngust, panoul lui e mutat pe `<body>` cât e deschis, ca să poată pluti
   peste pagină și să meargă și în ecran complet. Mutat acolo, nu-l mai apăra
   nimic, iar tema îi punea conturul ei albastru la fiecare clic.

   De aceea blocul acesta nu se leagă de unde stă elementul, ci de ce este:
   rândurile de meniu, filele, pastilele și butoanele își poartă clasele cu
   ele oriunde ar fi mutate. Clasa scrisă de două ori dă greutatea necesară
   ca să treacă peste tema care își pune conturul cu `!important`.

   Numai conturul se stinge, și numai cât timp nu se umblă cu tastatura.
   Umbrele nu se ating: rândul deschis și fila aleasă au umbrele lor.
   =========================================================================== */

html:not(.fclms-kbd) .fclms-tab.fclms-tab:focus,
html:not(.fclms-kbd) .fclms-tabs__main.fclms-tabs__main:focus,
html:not(.fclms-kbd) .fclms-tabs__subitem.fclms-tabs__subitem:focus,
html:not(.fclms-kbd) .fclms-tabs__caret.fclms-tabs__caret:focus,
html:not(.fclms-kbd) .fclms-pill.fclms-pill:focus,
html:not(.fclms-kbd) .fclms-btn.fclms-btn:focus,
html:not(.fclms-kbd) .fclms-side__nav a:focus,
html:not(.fclms-kbd) .fclms-side__nav button:focus,
html:not(.fclms-kbd) .fclms-menupanel a:focus,
html:not(.fclms-kbd) .fclms-menupanel button:focus,
html:not(.fclms-kbd) .fclms-side__user.fclms-side__user:focus,
html:not(.fclms-kbd) .fclms-icon-btn.fclms-icon-btn:focus {
	outline: 0 !important;
	outline-offset: 0 !important;
}

/* Cu tastatura, inelul rămâne — și el fără să întrebe unde stă elementul. */
html.fclms-kbd .fclms-tab.fclms-tab:focus-visible,
html.fclms-kbd .fclms-tabs__main.fclms-tabs__main:focus-visible,
html.fclms-kbd .fclms-tabs__subitem.fclms-tabs__subitem:focus-visible,
html.fclms-kbd .fclms-tabs__caret.fclms-tabs__caret:focus-visible,
html.fclms-kbd .fclms-pill.fclms-pill:focus-visible,
html.fclms-kbd .fclms-btn.fclms-btn:focus-visible,
html.fclms-kbd .fclms-side__nav a:focus-visible,
html.fclms-kbd .fclms-side__nav button:focus-visible,
html.fclms-kbd .fclms-menupanel a:focus-visible,
html.fclms-kbd .fclms-menupanel button:focus-visible,
html.fclms-kbd .fclms-icon-btn.fclms-icon-btn:focus-visible {
	outline: none !important;
	box-shadow: var(--fc-ring);
}

/* Pata gri de pe Android, pe aceleași elemente, oriunde ar fi mutate. */
.fclms-tab, .fclms-tabs__main, .fclms-tabs__subitem, .fclms-tabs__caret,
.fclms-menupanel a, .fclms-menupanel button, .fclms-side__nav a, .fclms-side__nav button {
	-webkit-tap-highlight-color: transparent;
}

/* ===========================================================================
   RÂNDURILE DE MENIU NU AU RAMĂ. NICIODATĂ.

   Am umblat de trei ori la conturul de focalizare și rama albastră a rămas.
   Motivul e că am presupus de fiecare dată aceeași pricină. Dar o ramă care
   apare la clic și rămâne arată exact ca una care apare la trecerea
   cursorului și rămâne — fiindcă după clic mouse-ul stă acolo. Temele pun
   rame și pe `a:hover`, nu doar pe `:focus`, iar aceea n-a fost atinsă.

   Blocul acesta nu mai alege între pricini: pentru rândurile de meniu, în
   toate stările, nu există nici contur, nici ramă, nici umbră venită din
   afară. Fundalul și cerneala rămân neatinse — ele sunt ale noastre și se
   aleg din Aspect.

   E scris pe clasele rândurilor, nu pe locul lor, fiindcă panoul de
   administrare se mută pe `<body>` cât e deschis. Clasa dublată plus starea
   dau destulă greutate cât să treacă peste o temă cu `!important`.
   =========================================================================== */

.fclms-tab.fclms-tab,
.fclms-tab.fclms-tab:hover,
.fclms-tab.fclms-tab:focus,
.fclms-tab.fclms-tab:active,
.fclms-tab.fclms-tab:visited,
.fclms-tabs__main.fclms-tabs__main,
.fclms-tabs__main.fclms-tabs__main:hover,
.fclms-tabs__main.fclms-tabs__main:focus,
.fclms-tabs__main.fclms-tabs__main:active,
.fclms-tabs__main.fclms-tabs__main:visited,
.fclms-tabs__subitem.fclms-tabs__subitem,
.fclms-tabs__subitem.fclms-tabs__subitem:hover,
.fclms-tabs__subitem.fclms-tabs__subitem:focus,
.fclms-tabs__subitem.fclms-tabs__subitem:active,
.fclms-tabs__subitem.fclms-tabs__subitem:visited,
.fclms-tabs__caret.fclms-tabs__caret,
.fclms-tabs__caret.fclms-tabs__caret:hover,
.fclms-tabs__caret.fclms-tabs__caret:focus,
.fclms-tabs__caret.fclms-tabs__caret:active,
.fclms-tabs__head.fclms-tabs__head,
.fclms-tabs__head.fclms-tabs__head:hover,
.fclms-tabs__head.fclms-tabs__head:focus-within,
.fclms-tabs__group.fclms-tabs__group,
.fclms-side__nav a, .fclms-side__nav a:hover, .fclms-side__nav a:focus, .fclms-side__nav a:active,
.fclms-side__nav button, .fclms-side__nav button:hover, .fclms-side__nav button:focus,
.fclms-menupanel a, .fclms-menupanel a:hover, .fclms-menupanel a:focus, .fclms-menupanel a:active,
.fclms-menupanel button, .fclms-menupanel button:hover, .fclms-menupanel button:focus {
	outline: 0 !important;
	outline-offset: 0 !important;
	border: 0 !important;
	box-shadow: none !important;
	text-decoration: none !important;
	text-underline-offset: 0 !important;
}

/*
 * Inelul de la tastatură se pune înapoi, după stingere, și numai atunci.
 * Fără el, o pagină parcursă cu Tab devine un labirint pe întuneric.
 */
html.fclms-kbd .fclms-tab.fclms-tab:focus-visible,
html.fclms-kbd .fclms-tabs__main.fclms-tabs__main:focus-visible,
html.fclms-kbd .fclms-tabs__subitem.fclms-tabs__subitem:focus-visible,
html.fclms-kbd .fclms-tabs__caret.fclms-tabs__caret:focus-visible,
html.fclms-kbd .fclms-side__nav a:focus-visible,
html.fclms-kbd .fclms-side__nav button:focus-visible,
html.fclms-kbd .fclms-menupanel a:focus-visible,
html.fclms-kbd .fclms-menupanel button:focus-visible {
	box-shadow: var(--fc-ring) !important;
}

/* ============================================================================
   RÂNDUL DE SUB-FILE — refăcut

   Era o cutie: un dreptunghi cenușiu strâns în jurul pastilelor, cu linii
   despărțitoare între ele, ca o bandă de comutatoare dintr-un panou de comandă.
   Cutia aceea nu spunea nimic — nu grupa nimic ce nu se vedea oricum că e
   împreună — dar cerea trei lucruri deodată de la ochi: hotarul ei, hotarele
   dinăuntru și abia apoi rubrica aleasă.

   Acum rândul n-are cutie. Pastilele stau libere pe hârtia paginii, despărțite
   de aer, iar singura care poartă culoare e cea pe care ești. Restul sunt
   scris: se citesc, nu se numără. Un rând de rubrici e o listă de drumuri, nu
   un obiect — și arată ca atare.
   ========================================================================= */

.fclms-app .fclms-subtabs {
	gap: 4px;
	align-items: center;
	/* Aer, nu chenar: rândul respiră de sus și de jos, ca pastilele să nu pară
	   prinse într-o fâșie între marginea paginii și primul card. */
	padding: 0;
	margin: 4px 0 22px;
	background: transparent !important;
	background-image: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}

/* Fâșia care se lipea sus la derulare pleacă odată cu fundalul: fără ea,
   n-are ce acoperi și n-are ce desena. */
.fclms-app .fclms-subtabs::before { display: none !important; }

/*
 * Pe rânduri lungi — Contul are șase rubrici, Progresul cinci — pastilele nu
 * încap pe o linie. Multă vreme rândul rămânea rând și se derula în lateral,
 * ca filele unui telefon. Arăta curat, dar mințea: pe ecran se vedeau trei
 * pastile și jumătate din a patra, iar restul stăteau ascunse la dreapta.
 * Cine nu ghicea că rândul se trage cu degetul nu afla niciodată că mai există
 * și alte rubrici — o filă care nu se vede e o filă care nu există.
 *
 * Acum rândul se rupe. Ce nu încape coboară dedesubt, pe rândul următor, și
 * se văd toate deodată. Două rânduri de pastile costă patruzeci de puncte de
 * înălțime; o rubrică pierdută costă mai mult.
 */
.fclms-app .fclms-subtabs--views {
	flex-wrap: wrap;
	overflow-x: visible;
	overflow-y: visible;
	row-gap: 6px;
}

.fclms-app .fclms-subtabs .fclms-pill {
	flex: none;
	padding: 9px 16px;
	font-size: 13.5px;
	font-weight: 600;
	white-space: nowrap;
	border: 0 !important;
	border-radius: 999px !important;
	background-color: transparent !important;
	color: var(--fc-muted) !important;
	box-shadow: none !important;
	transition: background-color .18s ease, color .18s ease;
}

.fclms-app .fclms-subtabs .fclms-pill:hover {
	background-color: rgba(var(--fc-primary-rgb), .08) !important;
	color: var(--fc-ink) !important;
}

/*
 * Cea aleasă e singura plină. Umbra ei e colorată și scurtă — o ridică de pe
 * hârtie exact cât să se vadă că e apăsată, fără s-o facă să plutească.
 */
.fclms-app .fclms-subtabs .fclms-pill.is-active {
	font-weight: 700;
	background-color: var(--fc-primary) !important;
	color: #fff !important;
	box-shadow: 0 2px 5px -1px rgba(var(--fc-primary-rgb), .34),
		0 8px 18px -10px rgba(var(--fc-primary-rgb), .55) !important;
}

/* Semnul unei rubrici nealese stă mai retras decât scrisul ei: culoarea lui
   e a emoticonului și nu se poate stinge, dar se poate depărta. */
.fclms-app .fclms-subtabs .fclms-pill__icon { opacity: .8; }
.fclms-app .fclms-subtabs .fclms-pill:hover .fclms-pill__icon,
.fclms-app .fclms-subtabs .fclms-pill.is-active .fclms-pill__icon { opacity: 1; }

/* Numărul de pe o rubrică nealeasă nu mai are chenar de culoare: pe fundal
   gol, o pată colorată ar fi tras ochiul înaintea rubricii alese. */
.fclms-app .fclms-subtabs .fclms-pill .fclms-count,
.fclms-app .fclms-subtabs .fclms-pill .fclms-pill__count {
	background: rgba(var(--fc-primary-rgb), .12);
	color: var(--fc-primary);
}
.fclms-app .fclms-subtabs .fclms-pill.is-active .fclms-count,
.fclms-app .fclms-subtabs .fclms-pill.is-active .fclms-pill__count {
	background: rgba(255, 255, 255, .24);
	color: #fff;
}

html.fclms-kbd .fclms-app .fclms-subtabs .fclms-pill:focus-visible {
	box-shadow: var(--fc-ring) !important;
}

/* Nicio linie de despărțire dedesubt: hotarul îl face golul dintre rând și
   primul card. O linie ar fi fost tot un chenar, doar mai subțire. */
.fclms-app--student .fclms-subtabs,
.fclms-app--account .fclms-subtabs,
.fclms-app--admin .fclms-subtabs {
	background: transparent !important;
	box-shadow: none !important;
}

@media (max-width: 720px) {
	.fclms-app .fclms-subtabs { margin: 2px 0 18px; }
	.fclms-app .fclms-subtabs .fclms-pill { padding: 9px 14px; font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
	.fclms-app .fclms-subtabs .fclms-pill { transition: none; }
}

/* ----------------------------------------------------------- proba de scris

   Alegerea dintre nouă scrisuri de mână nu se poate face pe nume: „Parisienne”
   nu spune nimănui cum arată Parisienne. Cutia asta scrie chiar textul din
   câmpul de mai jos, cu fontul, mărimea, cerneala și înclinarea alese, pe o
   hârtie albă cu o linie sub ea — adică exact locul în care va sta pe diplomă. */

.fclms-signtry {
	display: flex; align-items: flex-end; justify-content: flex-end;
	min-height: 86px; padding: 14px 22px 10px;
	margin: 0 0 20px;
	background: #FFFFFF; border: 1px solid var(--fc-line); border-radius: 12px;
	overflow: hidden;
}
.fclms-signtry span {
	display: block; max-width: 100%;
	line-height: 1.15; white-space: nowrap;
	border-bottom: 1px solid var(--fc-muted); padding: 0 4px 8px;
	transform-origin: bottom right;
}

/* ============================================================================
   PANOUL DE VOLUM

   Butonul de sunet făcea un singur lucru: pornea și oprea. E prea puțin,
   fiindcă întrebarea omului nu e „sunet sau tăcere”, ci „mai tare”. Apăsat,
   deschide acum un panou mic, cu comutatorul și cursorul unul lângă altul.

   Panoul se agață de rândul de sub siglă — care e `position: relative` aici
   tocmai pentru el — și nu întunecă pagina: e o alegere de două secunde, nu o
   hotărâre.
   ========================================================================= */

.fclms-side__meta { position: relative; }

.fcm-volume {
	position: absolute;
	z-index: 70;
	top: calc(100% + 8px);
	left: 0;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border-radius: 14px;
	background: var(--fc-surface);
	border: 1px solid var(--fc-line);
	box-shadow: var(--fc-shadow-lift, 0 10px 28px -12px rgba(22, 32, 43, .45));
}

.fcm-volume__mute {
	flex: none; width: 30px; height: 30px; padding: 0;
	display: inline-grid; place-items: center;
	font-size: 14px; line-height: 1; cursor: pointer;
	border: 0; border-radius: 9px;
	background: rgba(var(--fc-primary-rgb), .10);
	color: var(--fc-ink);
}
.fcm-volume__mute:hover { background: rgba(var(--fc-primary-rgb), .18); }

.fcm-volume__slider {
	flex: 1 1 auto; width: 130px; min-width: 110px;
	margin: 0; accent-color: var(--fc-primary); cursor: pointer;
}

/* Cifra are lățime fixă și cifre de aceeași lățime: altfel panoul s-ar fi
   lățit și s-ar fi strâns la fiecare milimetru tras de deget. */
.fcm-volume__value {
	flex: none; min-width: 30px; text-align: right;
	font-size: 13px; font-weight: 800; color: var(--fc-ink);
	font-variant-numeric: tabular-nums;
}

/* Stins, panoul rămâne la vedere, dar spune limpede că nu are ce regla. */
.fcm-volume.is-off .fcm-volume__slider { opacity: .4; }
.fcm-volume.is-off .fcm-volume__value { opacity: .4; }

/* Pe telefon bara e sus, lată cât pagina, iar panoul ar fi ieșit din ea prin
   stânga; se agață de dreapta și se lățește cât are nevoie. */
@media (max-width: 900px) {
	.fcm-volume { left: auto; right: 0; }
}

/* ============================================================================
   STRATURILE PLUTITOARE ÎN ECRAN COMPLET

   În ecran complet browserul desenează un singur lucru: elementul trecut în
   modul acela și ce se află înăuntrul lui. Tot ce stă pe `body` nu e ascuns —
   pur și simplu nu există acolo. De aceea straturile plutitoare se mută acum,
   din JavaScript, înăuntrul aplicației, și poartă `.fclms-float` ca să fie
   lăsate în pace de regulile scrise pentru rândurile ei.

   Aici nu se scrie nici poziția, nici lățimea lor: fiecare și le are pe ale
   sale, în foaia lui. Se scrie doar ce le-ar putea strica așezarea aplicației
   în coloană — și atât.
   ========================================================================= */

.fclms-app > .fclms-float {
	flex: none;
	align-self: auto;
	min-height: 0;
}

/* ============================================================================
   ASCUNS ÎNSEAMNĂ ASCUNS

   `hidden` e felul browserului de a spune „nu se vede”, și pune `display:
   none`. Dar regula lui vine din foaia browserului, care e cea mai slabă
   dintre toate: orice `display` scris de noi o bate. Un buton, o pastilă sau o
   legătură cu `display: inline-flex` rămân deci la vedere, oricât ar fi
   însemnate ca ascunse.

   Așa a stat ani de zile un „Salvează” într-o fereastră de import care fusese
   ascuns din cod și nu se ascunsese. Regula nu e o cârpeală: `hidden` e o
   afirmație despre înțeles, nu despre înfățișare, și trebuie să însemne
   întotdeauna același lucru.
   ========================================================================= */

.fclms-app [hidden],
.fclms-modal [hidden],
.fclms-app .fclms-btn[hidden],
.fclms-modal .fclms-btn[hidden] { display: none !important; }

/* ============================================================================
   SITA DE DEASUPRA UNUI TABEL

   O căsuță de scris și, dacă are rost, o listă de ales — puse deasupra unui
   tabel care se răsfoiește. Cele două lucrează împreună cu răsfoirea, nu
   alături de ea: numărătoarea de jos socotește doar rândurile care au trecut
   de sită, deci „pagina 1 din 3” spune adevărul și după ce ai scris un cuvânt.

   Câmpurile stau pe un rând și se rup pe telefon. Caseta de scris ia locul
   rămas, fiindcă acolo se scrie; lista își ține lățimea ei, fiindcă în ea se
   alege dintr-un pumn de nume scurte.
   ========================================================================= */

.fclms-tablefilter {
	display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end;
	margin: 0 0 14px;
}
.fclms-tablefilter .fclms-field { margin: 0; }
.fclms-tablefilter .fclms-field:first-child { flex: 1 1 220px; min-width: 180px; }
.fclms-tablefilter .fclms-field + .fclms-field { flex: 0 1 240px; min-width: 160px; }

@media (max-width: 640px) {
	.fclms-tablefilter .fclms-field,
	.fclms-tablefilter .fclms-field + .fclms-field { flex: 1 1 100%; }
}

/* ============================================================================
   DECLARAȚIA, ARĂTATĂ ÎNAPOI

   Fereastra care spune ce a citit chiar omul acesta, la ora aceea. Textul e
   așezat pe o foaie albă, ca să se citească drept ce e — o poză a ecranului
   de atunci, nu o unealtă de acum. Bifa e desenată bifată și oprită din
   apăsat: ce se vede aici s-a întâmplat și nu se mai poate schimba.
   ========================================================================= */

.fclms-attestview { display: grid; gap: 12px; }
.fclms-app p.fclms-attestview__when,
.fclms-modal p.fclms-attestview__when {
	margin: 0; font-size: 13px; color: var(--fc-muted);
	font-variant-numeric: tabular-nums;
}
.fclms-app p.fclms-attestview__what,
.fclms-modal p.fclms-attestview__what { margin: -6px 0 0; font-weight: 700; }

.fclms-attestview__paper {
	padding: 16px 18px; border-radius: 14px;
	background: #FFFFFF; border: 1px solid var(--fc-line);
}
.fclms-attestview__paper h3 { margin: 0 0 10px; font-size: 19px; }
.fclms-attestview__paper ul { margin: 0 0 12px; padding-left: 20px; }
.fclms-attestview__paper li { margin-bottom: 5px; line-height: 1.5; }

.fclms-attestview__check {
	display: flex; align-items: flex-start; gap: 8px;
	margin: 0 0 10px; font-weight: 600;
}
/* Oprită din apăsat, dar nu ștearsă la culoare: e miezul dovezii și trebuie
   să se vadă bine că era bifată. */
.fclms-attestview__check input { margin-top: 3px; accent-color: var(--fc-primary); opacity: 1; }

.fclms-attestview__go {
	display: inline-block; margin: 0;
	padding: 8px 16px; border-radius: 999px;
	background: var(--fc-paper); border: 1px solid var(--fc-line);
	font-size: 13.5px; font-weight: 700; color: var(--fc-muted);
}
.fclms-app p.fclms-attestview__small,
.fclms-modal p.fclms-attestview__small { margin: 10px 0 0; font-size: 12px; color: var(--fc-muted); }

/* Cele două butoane ale unui rând de declarație stau unul lângă altul, nu
   unul sub altul: coloana e îngustă, dar rândul e scurt. */
.fclms-attest__acts { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fclms-attest__acts form { margin: 0; }

/* ------------------------------------------------ grupuri de butoane

   Bara unui pachet ajunsese să poarte șapte butoane deodată, fiecare cu
   spațiu egal în jur. Puse cap la cap se lățeau peste tot rândul și săreau
   pe două fără nicio noimă: ochiul nu mai avea după ce să se ia, fiindcă
   toate arătau la fel de important.

   Nu le lipim, însă. O pastilă rămâne o pastilă — rotundă de jur împrejur,
   cu rama ei — fiindcă așa se vede dintr-o privire că e de apăsat, și
   fiindcă un bloc de butoane sudate se citește ca un comutator cu o singură
   alegere, ceea ce aici nu e cazul. Le strângem doar cu distanța: cele care
   fac același lucru stau la un lat de deget una de alta, iar între cete e
   mai mult aer și, pe ecran lat, un fir subțire. */

.fclms-app .fclms-toolbar__actions,
.fclms-toolbar__actions {
	display: flex; align-items: center; flex-wrap: wrap;
	gap: 10px; margin-left: auto;
}

/* Ceata: aceleași pastile, doar apropiate între ele. */
.fclms-app .fclms-btnset,
.fclms-btnset { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px; }

/* Un fir subțire între cete: le desparte fără să mai adauge încă o ramă. */
.fclms-toolbar__sep {
	width: 1px; align-self: stretch; min-height: 24px;
	background: var(--fc-line); margin: 0 2px;
	flex: 0 0 auto;
}

/* -------------------------------------------- pe tabletă și pe telefon

   Pe ecran îngust rândul n-are unde să se mai întindă, așa că trece sub
   titlu, pe toată lățimea. Acolo pastilele se întind ca să umple rândul:
   prima se lipește de marginea din stânga, ultima de cea din dreapta, iar
   ce nu încape coboară pe rândul următor — nimic nu se ascunde și nimic nu
   iese afară din ecran.

   Ceata își pierde aici învelișul (`display: contents`): butoanele ei ajung
   copii de-a dreptul ai rândului, altfel ceata s-ar fi rupt ca un bloc, cu
   patru butoane înghesuite pe o singură linie, în loc să curgă firesc.
   Firele despărțitoare pleacă: pe verticală n-ar mai despărți nimic. */
@media (max-width: 1024px) {
	.fclms-app .fclms-toolbar__actions,
	.fclms-toolbar__actions {
		width: 100%; margin-left: 0;
		gap: 8px; justify-content: space-between;
	}

	.fclms-app .fclms-btnset,
	.fclms-btnset { display: contents; }

	.fclms-app .fclms-toolbar__actions .fclms-btn,
	.fclms-toolbar__actions .fclms-btn {
		flex: 1 1 auto; justify-content: center; white-space: nowrap;
	}

	.fclms-toolbar__sep { display: none; }

	/* Aceeași purtare peste tot, nu doar la pachete. Umplutura dintre titlu
	   și butoane era un burete care înghițea locul rămas; aici o punem să
	   ocupe rândul întreg și zero în înălțime, adică să rupă rândul. Tot ce
	   vine după ea coboară sub titlu și se întinde de la o margine la alta. */
	.fclms-app .fclms-toolbar .fclms-spacer,
	.fclms-toolbar .fclms-spacer { flex: 0 0 100%; height: 0; }

	.fclms-app .fclms-toolbar > .fclms-btn,
	.fclms-toolbar > .fclms-btn {
		flex: 1 1 auto; justify-content: center; white-space: nowrap;
	}
}

/* Sub 480 de puncte, o etichetă lungă cere singură mai mult decât are
   rândul. Lăsăm scrisul să se strângă și pastila să se rupă în două
   rânduri, decât să iasă cuvântul afară din ecran. */
@media (max-width: 480px) {
	.fclms-app .fclms-toolbar__actions .fclms-btn,
	.fclms-app .fclms-toolbar > .fclms-btn,
	.fclms-toolbar__actions .fclms-btn,
	.fclms-toolbar > .fclms-btn { white-space: normal; }
}

/* ===========================================================================
   Nimic nu se duce la dreapta
   ---------------------------------------------------------------------------
   Pe telefon se întâmpla ce nu trebuie: pagina se putea trage în lateral.
   Un tabel cu trei coloane, o grilă care cerea 300 de puncte pe coloană, o
   adresă web fără spații, o fâșie de fundal care ieșea 30 de puncte peste
   margine ca să acopere golul dintre bare — oricare dintre ele lățea foaia,
   iar restul aplicației se ducea după ea. Rezultatul: jumătate din coloana
   „Pe email” rămânea dincolo de marginea ecranului, fără nimic care să spună
   că mai e ceva acolo.

   Regula e una singură: lățimea ecranului e un hotar, nu o sugestie. Ce nu
   încape se rupe, se strânge sau coboară — dar nu iese.
   =========================================================================== */

/* 1. Aplicația nu depășește locul care i se dă.

   Nu punem aici o tăiere pe lat, deși ar fi fost cea mai scurtă cale. O
   tăiere ascunde ce iese, în loc să facă să încapă — și, mai rău, ar fi prins
   sub ea și lucrurile lipite de fereastră care trăiesc înăuntrul aplicației:
   meniul care coboară din bară pe telefon, bara din stânga în ecran complet.
   Astea trebuie să poată ieși. Așa că nu tăiem: umblăm la ce lățea foaia. */
.fclms-app { max-width: 100%; }

/* 2. Cuvintele lungi se rup, nu împing.

   O adresă web, un email, un nume de fișier — șiruri fără spații, pe care
   browserul nu le rupe de la sine, ci le lasă să iasă. `anywhere` nu doar că
   le rupe, ci spune și cutiilor de flexie că lățimea cea mai mică a textului
   e o literă, nu tot cuvântul: fără asta, un rând de flexie tot se lățea. */
.fclms-app, .fclms-modal { overflow-wrap: break-word; }
.fclms-app a, .fclms-app code, .fclms-app kbd, .fclms-app samp,
.fclms-modal a, .fclms-modal code { overflow-wrap: anywhere; }
.fclms-app pre, .fclms-modal pre { white-space: pre-wrap; overflow-wrap: anywhere; }

/* 3. Ce vine din afară — poze, filme, cadre — se strânge la lățimea locului.
   Doar lățimea, nu și înălțimea: o poză cu măsuri scrise în pagină și-ar
   pierde raportul dacă i-am atinge amândouă. */
.fclms-app img, .fclms-app video, .fclms-app iframe, .fclms-app canvas,
.fclms-app embed, .fclms-app object,
.fclms-modal img, .fclms-modal video, .fclms-modal iframe, .fclms-modal canvas { max-width: 100%; }

/* 4. Grilele nu cer niciodată mai mult decât are ecranul.

   `minmax(280px, 1fr)` înseamnă „coloana are cel puțin 280 de puncte” — și
   ține de cuvânt chiar și pe un ecran de 320, unde iese afară. `min(280px,
   100%)` înseamnă „cel puțin 280, dar nu mai mult decât locul”: pe lat se
   poartă la fel, pe îngust se dă bătută și face o singură coloană. */
.fclms-app .fclms-cards-grid { grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
.fclms-app .fclms-plan-grid { grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); }
.fclms-app .fclms-mediagrid-wrap { max-width: 100%; }

/* Casetele care cereau o lățime minimă ca să nu se înghesuie: pe ecran mare
   o cer în continuare, pe telefon renunță. */
.fclms-app .fclms-backup-new .fclms-field { min-width: min(260px, 100%); }
.fclms-app .fclms-search .fclms-field { min-width: min(200px, 100%); }
.fclms-app .fclms-photo__fields { min-width: min(240px, 100%); }
.fclms-app .fclms-upcoming__main { min-width: min(200px, 100%); }
.fclms-app .fclms-matchrow__left { min-width: min(140px, 100%); }

/* 5. Tabelele.

   Un tabel nu se rupe pe rânduri ca un text: cere cât îi trebuie și, dacă nu
   are, iese. Pe telefon îi luăm dreptul de a cere: `fixed` împarte lățimea
   după ce scrie în capul tabelului, nu după cel mai lung cuvânt dinăuntru.
   Scrisul se rupe unde apucă, iar butoanele de pe rând, care până acum stăteau
   pe o linie cu orice preț, au voie să treacă unul sub altul. */
@media (max-width: 640px) {
	.fclms-app .fclms-table { width: 100%; max-width: 100%; }
	.fclms-app .fclms-table th,
	.fclms-app .fclms-table td { overflow-wrap: anywhere; hyphens: auto; }

	.fclms-app .fclms-table__actions,
	.fclms-app .fclms-backup-actions,
	.fclms-app .fclms-accounted { white-space: normal; }

	/* Rubricile de notificări: două coloane de întrerupătoare, cât să încapă
	   comutatorul și atât. Restul lățimii se duce la numele evenimentului,
	   fiindcă acolo e înțelesul. */
	.fclms-app .fclms-prefs { table-layout: fixed; }
	.fclms-app .fclms-prefs__col { width: 76px; padding-left: 2px; padding-right: 2px; }
	.fclms-app .fclms-prefs th:first-child,
	.fclms-app .fclms-prefs td:first-child { padding-left: 0; }

	/* Capul tabelului nu are voie să scrie peste vecin.

	   Cu lățimile împărțite dinainte, o celulă care cere mai mult decât are nu
	   împinge coloana de alături — trece pur și simplu peste ea. Așa s-au
	   suprapus „ÎN APLICAȚIE” și „PE EMAIL”, un morman de litere din care nu
	   se mai citea niciuna.

	   Deci: scrisul se micșorează, literele se strâng la loc din răsfirarea de
	   pe ecran mare, iar dacă tot nu încape, cuvântul se rupe — cu cratimă
	   unde limba o cere, oriunde dacă nu se poate altfel. Un cuvânt rupt se
	   citește; două cuvinte peste altul, nu.

	   Selectorul are o clasă în plus, nu de dragul stilului: regula temei care
	   dă mărimea literelor din capul tabelelor cântărește la fel de mult, iar
	   la egalitate ar fi câștigat ea, oricât de jos am fi scris aici. */
	.fclms-app .fclms-table.fclms-prefs th {
		font-size: 9.5px;
		letter-spacing: .02em;
		line-height: 1.2;
		white-space: normal;
		overflow-wrap: anywhere;
		hyphens: auto;
		padding: 10px 2px;
	}
	.fclms-app .fclms-table.fclms-prefs th:first-child { padding-left: 0; }
}

/* 6. Pe ecranele cele mai mici, tabelul de jurnal e deja rupt pe rânduri (mai
   sus în fișier). Aici doar ne asigurăm că nicio celulă rămasă cu scris
   neîntrerupt nu strică munca aceea. */
@media (max-width: 480px) {
	.fclms-app .fclms-table--log td { white-space: normal !important; }
	.fclms-app .fclms-card { padding-left: 16px; padding-right: 16px; }
}

/* Aceeași încuietoare și în foaia de bază, pentru cazul în care tema modernă e
   stinsă: capul unui tabel nu se lipește sus. Singura excepție rămâne coloana
   cu numele rolurilor din matricea de drepturi — aceea se lipește în stânga,
   nu sus, și numai înăuntrul propriei ferestre de derulare, unde chiar are
   rost: o bifă din mijlocul tabelului nu spune al cui e fără numele rândului. */
.fclms-app .fclms-table thead th,
.fclms-modal .fclms-table thead th { position: static; top: auto; }

/* ------------------------------------------------ rânduri ascunse de căutare

   Filtrele din Prieteni și din Mesaje nu redesenează lista, ci pun `hidden` pe
   rândurile care nu se potrivesc. Numai că `hidden` e o regulă a browserului —
   `display: none` scrisă în foaia lui — iar orice `display` scris în foaia
   noastră o bate. Rândul de listă și rândul de discuție sunt amândouă cutii de
   flexie, deci amândouă câștigau: se scria în casetă și nu se ascundea nimic.

   Aici li se spune, în foaia noastră, ce înseamnă ascuns. */
.fclms-app .fclms-row[hidden],
.fclms-app .fclms-thread[hidden] { display: none !important; }

/* Ultimul rând rămas la vedere n-are linie sub el: aceea desparte rânduri, iar
   sub ultimul nu mai e ce despărți — ar cădea peste rama listei și s-ar vedea
   îngroșată. `:last-child` nu mai ajunge când rânduri din mijloc pot lipsi;
   întrebăm, deci, dacă mai are vreun frate la vedere după el. */
.fclms-app .fclms-thread:not([hidden]):not(:has(~ .fclms-thread:not([hidden]))) { border-bottom: none; }
