/* =====================================================================
   caderno_novo.css — rejilla nova do caderno do docente
   Usada na web (index.php) e na app (API/caderno_mestre.php, webview)
   ===================================================================== */

#cn-root {
	--cn-cor: #df7400;          /* laranxa do caderno / alumnado */
	--cn-cor-escura: #b45d00;
	--cn-cor-suave: #fff3e6;
	--cn-cor-suave-2: #ffe7cc;
	--cn-texto: #1f2328;
	--cn-texto-2: #5b6168;
	--cn-texto-3: #8a9097;
	--cn-liña: #e6e8eb;
	--cn-liña-forte: #d3d7dc;
	--cn-fondo: #ffffff;
	--cn-fondo-2: #f6f7f9;
	--cn-ben: #1f8a4c;
	--cn-ben-fondo: #e3f4ea;
	--cn-mal: #c2362b;
	--cn-mal-fondo: #fbe6e4;
	--cn-excelente: #6b3fb5;
	--cn-excelente-fondo: #efe8fa;
	--cn-col-alumno: 210px;
	--cn-col-proba: 74px;
	--cn-col-formula: 76px;
	--cn-alto-fila: 48px;

	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
	font-size: 14px;
	color: var(--cn-texto);
	background: var(--cn-fondo);
	display: flex;
	flex-direction: column;
	width: 100%;
	height: 100%;
	min-height: 320px;
	box-sizing: border-box;
	position: relative;
	border-radius: 14px;
	overflow: hidden;
	border: 1px solid var(--cn-liña);
	-webkit-text-size-adjust: 100%;
}
#cn-root *, #cn-root *::before, #cn-root *::after { box-sizing: border-box; }

#cn-root.cn-pantalla-completa {
	position: fixed;
	inset: 0;
	z-index: 999990;
	border-radius: 0;
	border: 0;
}

/* ---------- barra superior ---------- */
.cn-barra {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border-bottom: 1px solid var(--cn-liña);
	background: var(--cn-fondo);
	flex-wrap: wrap;
}
.cn-titulo {
	display: flex;
	flex-direction: column;
	min-width: 0;
	flex: 1 1 180px;
}
.cn-titulo b {
	font-size: 15px;
	font-weight: 650;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.cn-titulo span {
	font-size: 12px;
	color: var(--cn-texto-3);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cn-segmentos {
	display: inline-flex;
	background: var(--cn-fondo-2);
	border: 1px solid var(--cn-liña);
	border-radius: 10px;
	padding: 3px;
	gap: 2px;
}
.cn-segmentos button {
	appearance: none;
	border: 0;
	background: transparent;
	font: inherit;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--cn-texto-2);
	padding: 6px 10px;
	border-radius: 7px;
	cursor: pointer;
	white-space: nowrap;
}
.cn-segmentos button.activo {
	background: var(--cn-fondo);
	color: var(--cn-cor-escura);
	box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 0 0 1px var(--cn-liña);
}

.cn-accions { display: flex; gap: 4px; }
.cn-boton-icona {
	appearance: none;
	border: 1px solid transparent;
	background: transparent;
	width: 36px;
	height: 36px;
	border-radius: 9px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--cn-texto-2);
	cursor: pointer;
	position: relative;
}
.cn-boton-icona:hover { background: var(--cn-fondo-2); border-color: var(--cn-liña); }
.cn-boton-icona svg { width: 20px; height: 20px; }
.cn-boton-icona[data-etiqueta]:hover::after {
	content: attr(data-etiqueta);
	position: absolute;
	top: 40px;
	right: 0;
	background: #2b2f33;
	color: #fff;
	font-size: 11.5px;
	padding: 4px 8px;
	border-radius: 6px;
	white-space: nowrap;
	z-index: 50;
	pointer-events: none;
}

.cn-boton-pastilla {
	appearance: none;
	display: inline-flex; align-items: center; gap: 5px;
	height: 34px;
	padding: 0 12px 0 9px;
	margin-right: 4px;
	border-radius: 999px;
	border: 1px solid var(--cn-cor-suave-2);
	background: var(--cn-cor-suave);
	color: var(--cn-cor-escura);
	font: inherit; font-size: 13px; font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
}
/* o mesmo «+» con círculo discontinuo que en «+ Proba» e «+ Fórmula» */
.cn-boton-pastilla .cn-mais-circulo {
	display: inline-flex;
	width: 16px; height: 16px;
	border-radius: 50%;
	align-items: center; justify-content: center;
	border: 1.5px dashed var(--cn-cor);
	font-size: 12px; font-weight: 600; line-height: 1;
}
.cn-boton-pastilla:hover .cn-mais-circulo { border-style: solid; }
.cn-boton-pastilla:hover { background: var(--cn-cor-suave-2); }

/* ---------- zona da táboa ---------- */
.cn-scroll {
	flex: 1 1 auto;
	min-height: 0;          /* imprescindible: sen isto a zona crece co contido e non fai scroll */
	overflow: auto;
	position: relative;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior: contain;
	background: var(--cn-fondo);
}

table.cn-taboa {
	border-collapse: separate;
	border-spacing: 0;
	table-layout: fixed;   /* o ancho ponse desde JS: a suma real das columnas */
}
.cn-taboa th, .cn-taboa td {
	border-right: 1px solid var(--cn-liña);
	border-bottom: 1px solid var(--cn-liña);
	padding: 0;
	background: var(--cn-fondo);
}

/* cabeceira fixa */
.cn-taboa thead th {
	position: sticky;
	z-index: 3;
	background: var(--cn-fondo);
	font-weight: 600;
	text-align: center;
}
.cn-taboa thead tr.cn-fila-grupos th { top: 0; height: 34px; }
.cn-taboa thead tr.cn-fila-probas th { top: 34px; height: 48px; }

.cn-taboa th.cn-grupo {
	font-size: 12px;
	padding: 0 8px;
	cursor: pointer;
}
.cn-grupo .cn-pastilla {
	display: inline-block;
	vertical-align: middle;
	max-width: 100%;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--cn-cor-suave);
	color: var(--cn-cor-escura);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.cn-grupo.cn-antigo .cn-pastilla { background: #e7f0fd; color: #2d5c9c; }
.cn-grupo .cn-mais {
	display: inline-flex;
	width: 18px; height: 18px;
	border-radius: 50%;
	background: rgba(255,255,255,.8);
	align-items: center; justify-content: center;
	font-size: 14px; line-height: 1;
	flex: 0 0 auto;
}

.cn-taboa th.cn-proba-cab {
	font-size: 12px;
	font-weight: 600;
	color: var(--cn-texto-2);
	padding: 0 8px 6px;
	line-height: 1.25;
	cursor: pointer;
	vertical-align: bottom;
}
/* alto fixo (dúas liñas) e texto pegado abaixo */
.cn-proba-cab div {
	height: 30px;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	overflow: hidden;
}
.cn-proba-cab div span {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	word-break: break-word;
}
.cn-proba-cab:hover { color: var(--cn-cor-escura); background: var(--cn-cor-suave); }

/* columna estreita para engadir unha proba ao final de cada categoría */
.cn-taboa th.cn-engadir-cab {
	cursor: pointer;
	vertical-align: bottom;
	padding: 0 0 6px;
}
.cn-taboa th.cn-engadir-cab span {
	display: inline-flex;
	width: 16px; height: 16px;
	border-radius: 50%;
	align-items: center; justify-content: center;
	border: 1.5px dashed var(--cn-cor);
	color: var(--cn-cor-escura);
	font-size: 12px; font-weight: 600; line-height: 1;
}
.cn-taboa th.cn-engadir-cab .cn-engadir-texto { font-size: 11px; font-weight: 600; color: var(--cn-cor-escura); margin-top: 3px; }
.cn-taboa th.cn-engadir-cab:hover span { background: var(--cn-cor-suave); border-style: solid; }
.cn-taboa td.cn-engadir-col { background: #fcfcfd; }

/* separación clara entre categorías (de arriba a abaixo) */
.cn-taboa th.cn-ini-cat, .cn-taboa td.cn-ini-cat { border-left: 2px solid #efc79a; }
.cn-taboa thead tr.cn-fila-grupos th.cn-grupo { border-bottom-color: #f3dcc1; }

/* iconas dos tipos de fórmula */
.cn-icona-tipo {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 16px; height: 16px; padding: 0 3px;
	border-radius: 5px;
	background: #e9ecef; color: #3d4248;
	font-size: 11px; font-weight: 700; line-height: 1;
	margin-right: 4px; vertical-align: middle;
}
.cn-fe-tipos button .cn-icona-tipo { margin-right: 6px; }
.cn-fe-tipos button.activo .cn-icona-tipo { background: var(--cn-cor-suave-2); color: var(--cn-cor-escura); }

/* columna final «+ Fórmula» */
.cn-taboa th.cn-engadir-formula {
	cursor: pointer;
	font-size: 11.5px;
	font-weight: 600;
	color: #3d4248;
	padding: 6px 4px;
	background: #fbfbfc;
}
.cn-taboa th.cn-engadir-formula .cn-mais-formula {
	display: inline-flex;
	width: 16px; height: 16px;
	border-radius: 50%;
	align-items: center; justify-content: center;
	border: 1.5px dashed #6b7178;
	font-size: 12px; line-height: 1;
	margin-bottom: 3px;
}
.cn-taboa th.cn-engadir-formula:hover .cn-mais-formula { background: var(--cn-fondo-2); border-style: solid; }
.cn-taboa th.cn-cab-formula[data-editar-formula] { cursor: pointer; }
.cn-taboa th.cn-cab-formula[data-editar-formula]:hover { color: var(--cn-cor-escura); background: var(--cn-cor-suave); }

/* editor de fórmulas */
.cn-panel.cn-panel-ancho { max-width: 480px; }
.cn-fe-tipos { display: flex; width: 100%; }
.cn-fe-tipos button { flex: 1 1 0; }
.cn-fe-tipos.cn-fixo button:not(.activo) { opacity: .35; cursor: not-allowed; }
.cn-fe-axuda { font-size: 12.5px; color: var(--cn-texto-2); margin-top: 6px; }
.cn-fe-lista { border: 1px solid var(--cn-liña); border-radius: 10px; max-height: 260px; overflow: auto; padding: 4px 10px 8px; }
.cn-fe-grupo { font-size: 11.5px; font-weight: 700; color: var(--cn-cor-escura); text-transform: uppercase; letter-spacing: .03em; margin: 10px 0 4px; }
.cn-panel label.cn-fe-proba {
	display: flex; align-items: center; gap: 10px;
	font-size: 14px; font-weight: 500; color: var(--cn-texto);
	margin: 0; padding: 7px 4px; border-radius: 8px; cursor: pointer;
}
.cn-panel label.cn-fe-proba:hover { background: var(--cn-fondo-2); }
.cn-panel label.cn-fe-proba.marcada { background: var(--cn-cor-suave); }
.cn-fe-proba input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--cn-cor); flex: 0 0 auto; }
.cn-fe-proba span { flex: 1 1 auto; min-width: 0; }
.cn-panel .cn-fe-proba input.cn-fe-pct { flex: 0 0 64px; width: 64px; height: 32px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; text-align: right; padding: 0 8px; font: inherit; font-size: 14px; }
.cn-fe-proba em { font-style: normal; color: var(--cn-texto-3); font-size: 13px; }
.cn-fe-total { font-size: 12.5px; color: var(--cn-texto-2); margin-top: 8px; }

/* lista de favoritos */
.cn-favoritos { padding: 16px; }
.cn-favoritos-cab { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.cn-favoritos-cab b { font-size: 16px; font-weight: 650; }
.cn-favoritos-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.cn-favorito {
	appearance: none;
	text-align: left;
	font: inherit;
	background: #fff;
	border: 1px solid var(--cn-liña);
	border-radius: 12px;
	padding: 12px 14px;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	gap: 3px;
	color: var(--cn-texto);
	transition: border-color .15s, box-shadow .15s;
}
.cn-favorito { position: relative; padding-right: 46px; }
.cn-favorito-estrela {
	position: absolute;
	top: 8px; right: 8px;
	appearance: none;
	border: 0;
	background: transparent;
	width: 32px; height: 32px;
	border-radius: 8px;
	display: inline-flex; align-items: center; justify-content: center;
	cursor: pointer;
}
.cn-favorito-estrela svg { width: 22px; height: 22px; }
.cn-favorito-estrela:hover { background: #fff3d6; }
.cn-favorito-editar {
	appearance: none;
	align-self: flex-start;
	margin-top: 8px;
	border: 1px solid var(--cn-cor-suave-2);
	background: var(--cn-cor-suave);
	color: var(--cn-cor-escura);
	font: inherit;
	font-size: 12px;
	font-weight: 600;
	padding: 5px 10px 5px 8px;
	border-radius: 8px;
	display: inline-flex; align-items: center; gap: 6px;
	cursor: pointer;
}
.cn-favorito-editar svg { width: 15px; height: 15px; }
.cn-favorito-editar { white-space: nowrap; }
.cn-favorito-editar:hover { background: var(--cn-cor-suave-2); }
.cn-favorito:hover { border-color: var(--cn-cor); box-shadow: 0 2px 10px rgba(223,116,0,.12); }
.cn-favorito-grupo { font-weight: 650; font-size: 15px; }
.cn-favorito-detalle { font-size: 12.5px; color: var(--cn-texto-2); }
.cn-favorito-trimestre { font-size: 12px; color: var(--cn-cor-escura); font-weight: 600; }
.cn-favorito-etiquetas { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.cn-favorito-etiquetas i { font-style: normal; font-size: 11px; background: var(--cn-cor-suave); color: var(--cn-cor-escura); border-radius: 6px; padding: 2px 6px; }

/* columna do alumnado fixa */
.cn-taboa .cn-col-alumno {
	position: sticky;
	left: 0;
	z-index: 2;
	width: var(--cn-col-alumno);
	min-width: var(--cn-col-alumno);
	max-width: var(--cn-col-alumno);
	text-align: left;
	box-shadow: 1px 0 0 var(--cn-liña-forte);
}
.cn-taboa thead .cn-col-alumno { z-index: 5; }

/* columnas das fórmulas fixas á dereita */
.cn-taboa .cn-col-formula {
	position: sticky;
	z-index: 2;
	width: var(--cn-col-formula);
	min-width: var(--cn-col-formula);
	background: #fbfbfc;
	text-align: center;
}
.cn-taboa thead .cn-col-formula { z-index: 5; background: #fbfbfc; }
.cn-taboa .cn-col-formula.cn-primeira-formula { box-shadow: -1px 0 0 var(--cn-liña-forte); }

.cn-taboa th.cn-cab-alumnado {
	font-size: 12px;
	color: var(--cn-texto-3);
	padding: 0 12px;
	font-weight: 600;
	text-align: center !important;
}
.cn-taboa th.cn-cab-formula {
	font-size: 12px;
	color: var(--cn-texto-2);
	padding: 22px 8px 6px;
	cursor: pointer;
	vertical-align: bottom;
}
/* icona do tipo (x̄, ∑, %) na esquina e o nome debaixo, en dúas liñas con «…» */
.cn-cab-formula .cn-formula-icona { position: absolute; top: 5px; right: 5px; }
.cn-cab-formula .cn-formula-icona .cn-icona-tipo { margin: 0; }
.cn-cab-formula > div { height: 30px; display: flex; align-items: flex-end; justify-content: center; overflow: hidden; }
.cn-cab-formula > div span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; line-height: 1.25; }

/* fila de alumno */
.cn-alumno {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 6px 10px;
	height: var(--cn-alto-fila);
}
.cn-alumno img, .cn-alumno .cn-iniciais {
	width: 32px; height: 32px;
	border-radius: 50%;
	object-fit: cover;
	flex: 0 0 auto;
	background: var(--cn-fondo-2);
}
.cn-alumno .cn-iniciais {
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 12px; font-weight: 700; color: var(--cn-cor-escura);
	background: var(--cn-cor-suave);
}
.cn-alumno-texto { min-width: 0; display: flex; flex-direction: column; }
.cn-alumno-texto b {
	font-weight: 550;
	font-size: 13.5px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.cn-alumno-texto span { font-size: 11.5px; color: var(--cn-texto-3); }
.cn-alumno-texto span.cn-con-faltas { color: var(--cn-mal); }

/* filas alternas (branco / laranxa moi suave) para seguir ben cada alumno */
.cn-taboa tbody tr:nth-child(even) td,
.cn-taboa tbody tr:nth-child(even) td.cn-col-formula { background: #fff6ec; }
.cn-taboa tbody tr:hover td,
.cn-taboa tbody tr:hover td.cn-col-formula { background: #ffebd4; }

/* cela de nota */
.cn-cela {
	height: var(--cn-alto-fila);
	text-align: center;
	cursor: pointer;
	position: relative;
}
.cn-cela:hover { box-shadow: inset 0 0 0 2px var(--cn-cor-suave-2); }
.cn-cela.cn-activa { box-shadow: inset 0 0 0 2px var(--cn-cor); }
.cn-valor {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 30px;
	padding: 0 6px;
	border-radius: 8px;
	font-weight: 600;
	font-size: 14px;
	font-variant-numeric: tabular-nums;
	max-width: calc(100% - 8px);
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.cn-valor img { height: 22px; width: auto; }
.cn-valor.cn-ben { background: var(--cn-ben-fondo); color: var(--cn-ben); }
.cn-valor.cn-mal { background: var(--cn-mal-fondo); color: var(--cn-mal); }
.cn-valor.cn-excelente { background: var(--cn-excelente-fondo); color: var(--cn-excelente); }
.cn-valor.cn-texto { background: var(--cn-fondo-2); color: var(--cn-texto-2); font-weight: 500; font-size: 12.5px; }
.cn-cela .cn-clip {
	position: absolute;
	top: 3px; right: 3px;
	width: 14px; height: 14px;
	color: var(--cn-texto-3);
}
.cn-cela.cn-gardando .cn-valor { opacity: .45; }
.cn-cela.cn-erro { box-shadow: inset 0 0 0 2px var(--cn-mal); }

.cn-cela input.cn-entrada {
	width: calc(100% - 8px);
	height: 34px;
	border: 2px solid var(--cn-cor);
	border-radius: 8px;
	text-align: center;
	font: inherit;
	font-weight: 600;
	font-size: 15px;
	outline: none;
	background: #fff;
	color: var(--cn-texto);
	padding: 0 4px;
}

.cn-nota-formula {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	height: 30px;
	border-radius: 15px;
	font-weight: 700;
	font-size: 13.5px;
	font-variant-numeric: tabular-nums;
}

/* fila de estatísticas */
.cn-taboa tfoot td {
	position: sticky;
	bottom: 0;
	z-index: 3;
	background: var(--cn-fondo-2);
	border-top: 1px solid var(--cn-liña-forte);
	font-size: 11.5px;
	color: var(--cn-texto-2);
	text-align: center;
	padding: 6px 2px;
	line-height: 1.35;
	font-variant-numeric: tabular-nums;
}
.cn-taboa tfoot td.cn-col-alumno { z-index: 4; text-align: center; padding: 6px 12px; font-weight: 600; }
.cn-taboa tfoot td.cn-col-formula { z-index: 4; background: var(--cn-fondo-2); }
.cn-taboa tfoot b { color: var(--cn-texto); font-size: 13px; }


/* ---------- estados baleiros e carga ---------- */
.cn-mensaxe {
	padding: 40px 20px;
	text-align: center;
	color: var(--cn-texto-2);
	font-size: 14px;
	line-height: 1.5;
}
.cn-mensaxe b { display: block; color: var(--cn-texto); font-size: 16px; margin-bottom: 6px; }
.cn-mensaxe button { margin-top: 14px; }
.cn-cargando {
	display: inline-block;
	width: 22px; height: 22px;
	border: 3px solid var(--cn-cor-suave-2);
	border-top-color: var(--cn-cor);
	border-radius: 50%;
	animation: cn-xira .8s linear infinite;
	margin-bottom: 10px;
}
@keyframes cn-xira { to { transform: rotate(360deg); } }

.cn-boton {
	appearance: none;
	border: 0;
	background: var(--cn-cor);
	color: #fff;
	font: inherit;
	font-weight: 600;
	font-size: 13.5px;
	padding: 9px 16px;
	border-radius: 10px;
	cursor: pointer;
}
.cn-boton.cn-secundario { background: var(--cn-fondo-2); color: var(--cn-texto); border: 1px solid var(--cn-liña); }
.cn-boton.cn-perigo { background: var(--cn-mal-fondo); color: var(--cn-mal); }

/* ---------- aviso flotante (toast) ---------- */
.cn-aviso {
	position: absolute;
	left: 50%;
	bottom: 16px;
	transform: translateX(-50%) translateY(20px);
	background: #2b2f33;
	color: #fff;
	font-size: 13px;
	padding: 9px 14px;
	border-radius: 10px;
	opacity: 0;
	transition: opacity .2s, transform .2s;
	pointer-events: none;
	z-index: 60;
	max-width: 90%;
	text-align: center;
}
.cn-aviso.visible { opacity: 1; transform: translateX(-50%) translateY(0); }
.cn-aviso.cn-aviso-erro { background: var(--cn-mal); }

/* ---------- panel emerxente ---------- */
.cn-velo {
	position: absolute;
	inset: 0;
	background: rgba(20, 22, 25, .28);
	z-index: 70;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
}
.cn-panel {
	background: #fff;
	border-radius: 16px;
	box-shadow: 0 12px 40px rgba(0,0,0,.18);
	width: 100%;
	max-width: 380px;
	max-height: 90%;
	overflow: auto;
	padding: 18px;
}
.cn-panel h3 { margin: 0 0 4px; font-size: 16px; font-weight: 650; }
.cn-panel p { margin: 0 0 14px; font-size: 13px; color: var(--cn-texto-2); line-height: 1.45; }
.cn-panel label { display: block; font-size: 12px; font-weight: 600; color: var(--cn-texto-2); margin-bottom: 6px; }
.cn-panel input[type=text] {
	width: 100%;
	height: 40px;
	border: 1px solid var(--cn-liña-forte);
	border-radius: 10px;
	padding: 0 12px;
	font: inherit;
	font-size: 15px;
	outline: none;
}
.cn-panel input[type=text]:focus { border-color: var(--cn-cor); box-shadow: 0 0 0 3px var(--cn-cor-suave-2); }
.cn-panel-botons { display: flex; gap: 8px; margin-top: 16px; justify-content: flex-end; flex-wrap: wrap; }
.cn-panel-botons .cn-esquerda { margin-right: auto; }

.cn-rapidos { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin-top: 12px; }
.cn-rapidos button {
	appearance: none;
	border: 1px solid var(--cn-liña);
	background: var(--cn-fondo-2);
	border-radius: 9px;
	height: 40px;
	font: inherit;
	font-weight: 650;
	font-size: 15px;
	cursor: pointer;
	color: var(--cn-texto);
}
.cn-rapidos button:active { background: var(--cn-cor-suave-2); }
.cn-iconas { display: grid; grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: 8px; margin-top: 12px; }
.cn-iconas button {
	appearance: none;
	border: 1px solid var(--cn-liña);
	background: #fff;
	border-radius: 10px;
	height: 46px;
	cursor: pointer;
	display: flex; align-items: center; justify-content: center;
}
.cn-iconas button img { height: 28px; }
.cn-panel label.cn-seguinte {
	display: flex; align-items: center; gap: 8px;
	margin: 16px 0 0; font-size: 13px; font-weight: 500; color: var(--cn-texto-2); cursor: pointer;
}
.cn-seguinte input { width: 17px; height: 17px; accent-color: var(--cn-cor); }
.cn-ligazon-adxunto { display: inline-flex; gap: 6px; align-items: center; font-size: 13px; color: var(--cn-cor-escura); margin-top: 12px; text-decoration: none; }

/* paneis antigos reutilizados (fórmulas e adxuntos) dentro da rejilla nova */
#cn-root #caixa_xestionar_formulas {
	position: absolute !important;
	top: 60px !important;
	left: 50% !important;
	transform: translateX(-50%);
	margin: 0 !important;
	width: min(420px, calc(100% - 24px)) !important;
	height: auto !important;
	max-height: calc(100% - 80px) !important;
	overflow: auto !important;
	z-index: 80 !important;
	border-radius: 14px !important;
	box-shadow: 0 12px 40px rgba(0,0,0,.18);
	padding: 12px !important;
}

/* ---------- móbil ---------- */
@media (max-width: 640px) {
	#cn-root { --cn-col-alumno: 150px; --cn-col-proba: 64px; --cn-col-formula: 64px; border-radius: 0; border-left: 0; border-right: 0; }
	.cn-alumno img, .cn-alumno .cn-iniciais { width: 28px; height: 28px; }
	.cn-alumno { gap: 8px; padding: 6px 8px; }
	.cn-alumno-texto b { font-size: 13px; }
	.cn-titulo { flex-basis: 100%; }
	.cn-segmentos { order: 3; }
	.cn-segmentos button { padding: 6px 8px; }
	.cn-accions { margin-left: auto; }
	/* no móbil as fórmulas non quedan fixas á dereita, para deixar sitio ás probas */
	/* (seguen sendo sticky para arriba/abaixo; só deixan de estar fixas á dereita,
	   así a icona do tipo segue colocada na esquina da súa cabeceira) */
	.cn-taboa .cn-col-formula { right: auto !important; }
}

/* ---------- impresión ---------- */
@media print {
	#cn-root { border: 0; height: auto; }
	#cn-root .cn-accions, #cn-root .cn-segmentos { display: none; }
	#cn-root .cn-scroll { overflow: visible; }
	.cn-taboa thead th, .cn-taboa .cn-col-alumno, .cn-taboa .cn-col-formula, .cn-taboa tfoot td { position: static; }
}

/* (ao final do arquivo para que gañe ás filas alternas)
   columnas de «+ Proba» e «+ Fórmula»: non son celas de datos, van en branco
   (sen filas alternas, sen resalte ao pasar o rato e sen liñas horizontais) */
.cn-taboa tbody tr td.cn-engadir-col,
.cn-taboa tbody tr:nth-child(even) td.cn-engadir-col,
.cn-taboa tbody tr:hover td.cn-engadir-col,
.cn-taboa tbody tr td.cn-fnova,
.cn-taboa tbody tr:nth-child(even) td.cn-fnova,
.cn-taboa tbody tr:hover td.cn-fnova,
.cn-taboa tfoot td.cn-engadir-col,
.cn-taboa tfoot td.cn-fnova {
	background: #fff;
	border-bottom-color: transparent;
	cursor: default;
}

/* «+» en SVG, centrado dentro dos círculos de Proba, Fórmula e Categoría */
.cn-mais-svg { width: 9px; height: 9px; display: block; }

/* icona que xa ten a cela: marcada; tocala de novo quítaa */
.cn-iconas button { position: relative; }
.cn-iconas button.activa { border: 2px solid var(--cn-cor); background: var(--cn-cor-suave); }
.cn-iconas button .cn-quitar-icona {
	position: absolute; top: -6px; right: -6px;
	width: 18px; height: 18px; border-radius: 50%;
	background: var(--cn-cor); color: #fff;
	font-style: normal; font-size: 10px; line-height: 18px; text-align: center;
}
.cn-axuda-icona { font-size: 12px; color: var(--cn-texto-2); margin-top: 6px; }

/* gráficos do grupo */
.cn-graficos { padding: 16px; }
.cn-graf { margin-bottom: 22px; }
.cn-graf h3 { font-size: 15px; font-weight: 650; margin: 0 0 2px; }
.cn-graf > p { font-size: 12.5px; color: var(--cn-texto-2); margin: 0 0 4px; }
.cn-graf-lenda { font-size: 12px; color: var(--cn-texto-2); margin: 4px 0 8px; }
.cn-graf-lenda i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin: 0 5px -1px 12px; }
.cn-graf-lenda i:first-child { margin-left: 0; }
.cn-graf-scroll { overflow-x: auto; }
.cn-graf-formulas { display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-start; }
.cn-graf-formula { border: 1px solid var(--cn-liña); border-radius: 12px; padding: 10px 12px; }
.cn-graf-formula b { font-size: 13.5px; }
.cn-graf-formula p { font-size: 12px; color: var(--cn-texto-2); margin: 2px 0 6px; }
.cn-svg { display: block; font-family: inherit; }

/* comentario por cela: esquina laranxa e campo na caixa */
.cn-cela .cn-marca-com {
	position: absolute; top: 0; left: 0;
	width: 0; height: 0;
	border-top: 9px solid var(--cn-cor);
	border-right: 9px solid transparent;
}
.cn-panel textarea.cn-panel-comentario {
	width: 100%;
	min-height: 54px;
	border: 1px solid var(--cn-liña-forte);
	border-radius: 10px;
	padding: 8px 12px;
	font: inherit; font-size: 14px;
	resize: vertical;
	outline: none;
}
.cn-panel textarea.cn-panel-comentario:focus { border-color: var(--cn-cor); box-shadow: 0 0 0 3px var(--cn-cor-suave-2); }

/* foto do alumno na caixa de notas */
.cn-panel-alumno { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.cn-panel-alumno h3 { margin: 0 0 2px; }
.cn-panel-alumno p { margin: 0; }
.cn-panel-foto { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; background: var(--cn-fondo-2); }
.cn-panel-foto.cn-iniciais { display: inline-flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; color: var(--cn-cor-escura); background: var(--cn-cor-suave); }

/* botón de gráficos na fila «Resumo do grupo» */
.cn-resumo-cab { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; }
.cn-boton-graficos {
	appearance: none;
	display: inline-flex; align-items: center; gap: 5px;
	height: 28px; padding: 0 10px 0 8px;
	border-radius: 999px;
	border: 1px solid var(--cn-cor-suave-2);
	background: var(--cn-cor-suave);
	color: var(--cn-cor-escura);
	font: inherit; font-size: 12px; font-weight: 600;
	cursor: pointer;
}
.cn-boton-graficos svg { width: 15px; height: 15px; }
.cn-boton-graficos:hover { background: var(--cn-cor-suave-2); }

/* botón desactivado (desfacer sen cambios) e activo (pasando lista) */
.cn-boton-icona:disabled { opacity: .35; cursor: default; }
.cn-boton-icona:disabled:hover { background: transparent; border-color: transparent; }
.cn-boton-icona.cn-activo { background: var(--cn-cor-suave); border-color: var(--cn-cor-suave-2); color: var(--cn-cor-escura); }

/* pase de lista */
.cn-lista-barra {
	display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
	padding: 8px 12px;
	background: var(--cn-cor-suave);
	border-bottom: 1px solid var(--cn-cor-suave-2);
	font-size: 13px;
}
.cn-lista-barra b { color: var(--cn-cor-escura); }
.cn-lista-barra label { display: inline-flex; align-items: center; gap: 6px; color: var(--cn-texto-2); }
.cn-lista-barra input[type=date] { font: inherit; font-size: 13px; padding: 4px 6px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; background: #fff; }
.cn-lista-resumo { font-weight: 600; }
.cn-lista-axuda { color: var(--cn-texto-2); }
.cn-lista-barra .cn-boton { margin-left: auto; padding: 6px 14px; }
.cn-falta-boton {
	appearance: none;
	margin-left: auto;
	flex: 0 0 auto;
	border: 1px solid #b9e2c8;
	background: var(--cn-ben-fondo);
	color: var(--cn-ben);
	font: inherit; font-size: 12px; font-weight: 600;
	padding: 4px 9px;
	border-radius: 999px;
	cursor: pointer;
}
.cn-falta-boton.falta { border-color: #f1c2bd; background: var(--cn-mal-fondo); color: var(--cn-mal); }
.cn-taboa tbody tr.cn-fila-falta td.cn-col-alumno { box-shadow: inset 3px 0 0 var(--cn-mal), 1px 0 0 var(--cn-liña-forte); }
@media (max-width: 640px) {
	.cn-lista-axuda { display: none; }
	.cn-falta-boton { padding: 3px 7px; font-size: 11px; }
}

/* botón «Pasar lista» na cabeceira do alumnado */
.cn-cab-alumnado-dentro { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; }
.cn-boton-lista {
	appearance: none;
	display: inline-flex; align-items: center; gap: 6px;
	height: 30px; padding: 0 12px 0 9px;
	border-radius: 999px;
	border: 1px solid var(--cn-cor-suave-2);
	background: var(--cn-cor-suave);
	color: var(--cn-cor-escura);
	font: inherit; font-size: 12.5px; font-weight: 600;
	cursor: pointer; white-space: nowrap;
}
.cn-boton-lista svg { width: 16px; height: 16px; }
.cn-boton-lista:hover { background: var(--cn-cor-suave-2); }
.cn-boton-lista.cn-activo { background: var(--cn-cor); border-color: var(--cn-cor); color: #fff; }

/* equivalencias */
.cn-eq-escala { border: 1px solid var(--cn-liña); border-radius: 12px; padding: 10px 12px; margin-bottom: 10px; }
.cn-eq-cab { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.cn-eq-cab b { font-size: 13.5px; }
.cn-eq-defecto { appearance: none; border: 0; background: none; color: var(--cn-cor-escura); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; padding: 2px 4px; }
.cn-eq-defecto:hover { text-decoration: underline; }
.cn-eq-niveis { display: grid; grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)); gap: 6px 16px; }
.cn-panel label.cn-eq-nivel { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0; font-size: 13px; font-weight: 500; color: var(--cn-texto); }
.cn-panel .cn-eq-nivel input[type=text] { width: 58px; height: 32px; text-align: right; padding: 0 8px; font-size: 14px; border-radius: 8px; }

/* lista de favoritos: só queda o título e o botón de favoritos na barra */
#cn-root.cn-vista-favoritos .cn-barra .cn-segmentos,
#cn-root.cn-vista-favoritos .cn-accions > :not([data-accion="favoritos"]) { display: none; }
#cn-root.cn-vista-favoritos .cn-titulo span { visibility: hidden; }

/* ---------- DAS UD-UDIs ---------- */
.cn-taboa th.cn-grupo.cn-udi { border-bottom-color: #cfe6e3; }
.cn-grupo.cn-udi .cn-pastilla {
	background: #e4f3f1; color: #1d6b63;
	display: inline-flex; align-items: center; gap: 6px;
}
.cn-grupo.cn-udi .cn-pastilla em {
	font-style: normal; font-size: 9.5px; font-weight: 700; letter-spacing: .03em;
	padding: 1px 5px; border-radius: 5px; background: #fff; color: #2f8a80; flex: 0 0 auto;
}
.cn-udi-punto { width: 9px; height: 9px; border-radius: 50%; background: #2f8a80; flex: 0 0 auto; }
.cn-udi-chevron {
	width: 7px; height: 7px; flex: 0 0 auto; margin-left: 2px;
	border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
	transform: rotate(-45deg); transition: transform .15s;
}
.cn-udi-chevron.aberta { transform: rotate(135deg); }
.cn-taboa th.cn-udi.cn-ini-cat, .cn-taboa th.cn-udi-crit-cab.cn-ini-cat, .cn-taboa th.cn-udi-media-cab.cn-ini-cat,
.cn-taboa td.cn-udi-cela.cn-ini-cat, .cn-taboa td.cn-udi-media.cn-ini-cat, .cn-taboa tfoot td[data-stat-udi].cn-ini-cat { border-left: 2px solid #a9d6d0; }

.cn-taboa th.cn-udi-crit-cab, .cn-taboa th.cn-udi-media-cab {
	font-size: 11.5px; font-weight: 600; color: var(--cn-texto-2);
	padding: 0 6px 6px; vertical-align: bottom; cursor: pointer; line-height: 1.2;
}
.cn-udi-crit-cab div, .cn-udi-media-cab div {
	height: 30px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; overflow: hidden;
}
.cn-udi-crit-cab div span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.cn-udi-media-cab div span { color: #1d6b63; }
.cn-udi-media-cab small { font-size: 10px; font-weight: 500; color: var(--cn-texto-3); }
.cn-taboa th.cn-udi-crit-cab:hover, .cn-taboa th.cn-udi-media-cab:hover { background: #eef8f6; color: #1d6b63; }

.cn-udi-cela { height: var(--cn-alto-fila); text-align: center; cursor: pointer; position: relative; }
.cn-udi-cela:hover { box-shadow: inset 0 0 0 2px #bfe3de; }
.cn-udi-cela.cn-gardando .cn-valor { opacity: .45; }
.cn-udi-valor { min-width: 34px; font-size: 13px; }
.cn-taboa td.cn-udi-media { text-align: center; cursor: pointer; }
.cn-taboa tfoot td.cn-udi-media { cursor: default; }
.cn-udi-media-valor { display: inline-flex; align-items: center; justify-content: center; }
.cn-udi-media-valor.cn-ben { background: var(--cn-ben-fondo); color: var(--cn-ben); }
.cn-udi-media-valor.cn-mal { background: var(--cn-mal-fondo); color: var(--cn-mal); }
.cn-udi-media-valor.cn-excelente { background: var(--cn-excelente-fondo); color: var(--cn-excelente); }
.cn-udi-sen { color: var(--cn-texto-3); }

/* panel de cualificar */
.cn-udi-criterio {
	margin: 12px 0 14px; padding: 10px 12px; border-radius: 10px;
	background: #eef8f6; color: #1f3d3a; font-size: 13px; line-height: 1.4;
}
.cn-udi-criterio b { color: #1d6b63; }
.cn-udi-niveis { display: flex; flex-wrap: wrap; gap: 8px; }
.cn-udi-niveis button {
	position: relative; min-width: 48px; padding: 9px 12px; border-radius: 10px;
	border: 1.5px solid var(--cn-liña-forte); background: #fff; color: var(--cn-texto);
	font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer;
}
.cn-udi-niveis button:hover { border-color: #2f8a80; }
.cn-udi-niveis button.activo { border-color: #1d6b63; box-shadow: 0 0 0 2px #bfe3de; }
.cn-udi-niveis button.cn-ben { background: var(--cn-ben-fondo); }
.cn-udi-niveis button.cn-mal { background: var(--cn-mal-fondo); }
.cn-udi-niveis button.cn-excelente { background: var(--cn-excelente-fondo); }
.cn-udi-niveis button .cn-quitar-icona {
	position: absolute; top: -7px; right: -7px;
	width: 18px; height: 18px; border-radius: 50%;
	background: #1d6b63; color: #fff;
	font-style: normal; font-size: 10px; line-height: 18px; text-align: center;
}
.cn-udi-rubrica { flex-direction: column; gap: 6px; }
.cn-udi-rubrica button, .cn-udi-rubrica > div {
	display: flex; align-items: flex-start; gap: 10px; text-align: left; width: 100%; font-weight: 500;
}
.cn-udi-rubrica > div { padding: 8px 12px; border-radius: 10px; border: 1px solid var(--cn-liña); font-size: 13px; }
.cn-udi-rubrica > div.cn-ben { background: var(--cn-ben-fondo); }
.cn-udi-rubrica > div.cn-mal { background: var(--cn-mal-fondo); }
.cn-udi-rubrica > div.cn-excelente { background: var(--cn-excelente-fondo); }
.cn-udi-rubrica b { flex: 0 0 26px; font-size: 14px; }
.cn-udi-rubrica span { font-size: 12.5px; line-height: 1.35; color: var(--cn-texto-2); }
.cn-udi-rubrica i { color: var(--cn-texto-3); }
.cn-udi-lecto button { flex: 1 1 45%; text-align: left; font-weight: 500; font-size: 12.5px; }
.cn-udi-nota-panel { margin-right: auto; font-size: 11.5px; color: var(--cn-texto-3); align-self: center; }
.cn-panel-udi { max-width: 520px; }
.cn-udi-instrumento { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin: -4px 0 12px; font-size: 13px; }
.cn-udi-instrumento span { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--cn-texto-3); }
.cn-udi-instrumento b { color: #1d6b63; }
.cn-udi-instrumento small { color: var(--cn-texto-3); font-size: 11.5px; }
.cn-udi-rubrica > div em { margin-left: auto; font-style: normal; font-weight: 700; font-size: 12.5px; color: var(--cn-texto-2); padding-left: 8px; }

/* ---------- pestanas «Nas UD-UDIs» / «As miñas probas» ---------- */
.cn-pestanas {
	display: flex; gap: 4px; padding: 8px 12px 0;
	border-bottom: 1px solid var(--cn-liña); background: var(--cn-fondo); flex: 0 0 auto;
}
.cn-pestanas button {
	appearance: none; border: 1px solid transparent; border-bottom: none; background: transparent;
	padding: 8px 14px 9px; margin-bottom: -1px; border-radius: 10px 10px 0 0;
	font: inherit; font-size: 13px; font-weight: 600; color: var(--cn-texto-2); cursor: pointer;
	display: inline-flex; align-items: center; gap: 6px;
}
.cn-pestanas button span {
	font-size: 11px; font-weight: 700; min-width: 18px; padding: 1px 6px; border-radius: 999px;
	background: var(--cn-fondo-2); color: var(--cn-texto-3);
}
.cn-pestanas button:hover { color: var(--cn-texto); background: var(--cn-fondo-2); }
.cn-pestanas button.activa { background: var(--cn-fondo); border-color: var(--cn-liña); color: var(--cn-cor-escura); }
.cn-pestanas button.activa span { background: var(--cn-cor-suave); color: var(--cn-cor-escura); }
.cn-pestanas button[data-pestana="udis"].activa { color: #1d6b63; }
.cn-pestanas button[data-pestana="udis"].activa span { background: #e4f3f1; color: #1d6b63; }
#cn-root.cn-vista-favoritos .cn-pestanas { display: none; }

/* ---------- cualificación por grupo dunha UD-UDI ---------- */
#cn-root.cn-modo-udi .cn-taboa th.cn-grupo.cn-udi,
#cn-root.cn-modo-udi .cn-taboa th.cn-udi-media-cab { cursor: default; }
#cn-root.cn-modo-udi .cn-udi-chevron { display: none; }
#cn-root.cn-modo-udi td.cn-udi-media { cursor: default; }
.cn-alumno-texto span.cn-udi-grafico-sitio { display: flex; align-items: center; gap: 6px; margin-top: 3px; }
.cn-udi-grafico {
	display: flex; width: 92px; height: 8px; border-radius: 4px; overflow: hidden;
	background: #eef0f2; flex: 0 0 auto;
}
.cn-udi-grafico i { display: block; height: 100%; }
.cn-gr-green { background: #1f8a4c; }
.cn-gr-lime { background: #5cc46b; }
.cn-gr-gold { background: #f2c200; }
.cn-gr-orange { background: #ff8a1f; }
.cn-gr-red { background: #d93a2f; }
.cn-gr-baleiro { background: #e9ebee; }
.cn-udi-grafico-num { font-style: normal; font-size: 10.5px; color: var(--cn-texto-3); }
#cn-udi-probar { margin: 6px 0 12px; }
#cn-udi-probar button {
	appearance: none; border: 1px solid #bfe3de; background: #e4f3f1; color: #1d6b63;
	border-radius: 999px; padding: 6px 14px; font: 600 12px Arial, sans-serif; cursor: pointer;
}

/* grupos mixtos: criterio que non lle corresponde ao alumno polo nivel da etiqueta */
.cn-taboa td.cn-udi-cela.cn-non-corresponde,
.cn-taboa tbody tr td.cn-udi-cela.cn-non-corresponde {
	cursor: not-allowed;
	background: repeating-linear-gradient(135deg, #f3f4f6 0 6px, #e9ebee 6px 12px);
}
.cn-udi-cela.cn-non-corresponde:hover { box-shadow: none; }
.cn-udi-feitos { font-size: 10.5px; color: var(--cn-texto-3); }
.cn-fe-grupo.cn-fe-grupo-udi { color: #1d6b63; }
.cn-fe-udi small { color: var(--cn-texto-3); font-weight: 400; }

/* copiar categorías doutro caderno */
.cn-copiar-aviso { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-top: 14px; padding: 10px 12px; border-radius: 10px; background: var(--cn-fondo-2); font-size: 12.5px; color: var(--cn-texto-2); }
.cn-copiar-aviso .cn-boton { margin: 0; }
.cn-copiar-lista { border: 1px solid var(--cn-liña); border-radius: 10px; max-height: 340px; overflow: auto; padding: 4px 10px 8px; margin-top: 10px; }
.cn-copiar-grupo + .cn-copiar-grupo { border-top: 1px solid var(--cn-liña); margin-top: 6px; }
.cn-copiar-cab { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 4px 4px; }
.cn-copiar-cab b { display: block; font-size: 13px; color: var(--cn-cor-escura); }
.cn-copiar-cab small { display: block; font-size: 11.5px; color: var(--cn-texto-3); margin-top: 1px; }
.cn-copiar-todas { appearance: none; border: 1px solid var(--cn-liña-forte); background: #fff; border-radius: 999px; padding: 4px 10px; font: 600 11.5px Arial, sans-serif; color: var(--cn-texto-2); cursor: pointer; flex: 0 0 auto; }
.cn-copiar-todas:hover { background: var(--cn-fondo-2); }
.cn-copiar-cat small { color: var(--cn-texto-3); font-weight: 400; }
.cn-copiar-formulas { margin-top: 10px; }

/* ficha do alumno */
.cn-taboa tbody .cn-alumno { cursor: pointer; }
.cn-taboa tbody .cn-alumno:hover .cn-nome-ficha { color: var(--cn-cor-escura); text-decoration: underline; text-underline-offset: 2px; }
.cn-panel.cn-panel-ficha { max-width: 680px; }
.cn-ficha-cab { display: flex; align-items: center; gap: 12px; }
.cn-ficha-cab h3 { margin: 0; }
.cn-ficha-cab p { margin: 2px 0 0; font-size: 12.5px; color: var(--cn-texto-2); }
.cn-ficha-cab > div:nth-child(2) { flex: 1 1 auto; min-width: 0; }
.cn-ficha-nav { display: flex; gap: 4px; flex: 0 0 auto; }
.cn-ficha-nav .cn-boton-icona { font-size: 22px; line-height: 1; }
.cn-ficha-nav .cn-boton-icona:disabled { opacity: .3; cursor: default; }
.cn-ficha { max-height: min(62vh, 620px); overflow: auto; margin-top: 12px; padding-right: 2px; }
.cn-ficha-sec { margin: 0 0 16px; }
.cn-ficha-sec h4 { margin: 0 0 6px; font-size: 13.5px; color: var(--cn-texto); }
.cn-ficha-udi h4 em { font-style: normal; font-size: 9.5px; font-weight: 700; padding: 1px 5px; border-radius: 5px; background: #e4f3f1; color: #2f8a80; margin-right: 4px; vertical-align: 1px; }
.cn-ficha-axuda { margin: 0 0 6px; font-size: 12px; color: var(--cn-texto-3); }
.cn-ficha-taboa { width: 100%; border-collapse: collapse; font-size: 13px; }
.cn-ficha-taboa th { text-align: left; font-size: 11px; font-weight: 600; color: var(--cn-texto-3); text-transform: uppercase; letter-spacing: .03em; padding: 4px 6px; border-bottom: 1px solid var(--cn-liña); }
.cn-ficha-taboa td { padding: 6px; border-bottom: 1px solid var(--cn-liña); vertical-align: middle; }
.cn-ficha-taboa td:nth-child(n+2) { white-space: nowrap; }
.cn-ficha-taboa .cn-valor { height: 26px; min-width: 34px; font-size: 13px; }
.cn-ficha-cat td { font-size: 11.5px; font-weight: 700; color: var(--cn-cor-escura); background: var(--cn-cor-suave); }
.cn-ficha-com { font-size: 11.5px; color: var(--cn-texto-2); margin-top: 2px; }
.cn-ficha-texto { color: var(--cn-texto-2); font-size: 12px; }
.cn-ficha-udi .cn-ficha-taboa td:nth-child(2) { white-space: normal; }
.cn-ficha-sen { color: var(--cn-texto-3); font-size: 12px; }
.cn-ficha-icona { height: 22px; }

/* aviso de nota cambiada noutro dispositivo */
.cn-conflito { margin: 14px 0 4px; padding: 12px 14px; border-radius: 10px; background: #fff4e5; border: 1px solid #f3d3a8; font-size: 13px; line-height: 1.45; color: var(--cn-texto-2); }
.cn-conflito b { display: block; color: var(--cn-cor-escura); font-size: 14px; margin-bottom: 4px; }

/* opcións das probas: data, escala, ocultas */
.cn-taboa th.cn-proba-cab { position: sticky; }
.cn-proba-marcas { position: absolute; top: 3px; right: 4px; left: 4px; display: flex; justify-content: flex-end; gap: 4px; font-style: normal; font-size: 9.5px; font-weight: 600; color: var(--cn-texto-3); line-height: 1; pointer-events: none; }
.cn-proba-marcas b { background: #e9ecef; color: #3d4248; border-radius: 4px; padding: 1px 4px; font-weight: 700; }
.cn-taboa th.cn-proba-oculta { background: repeating-linear-gradient(135deg, #fff 0 6px, #f3f4f6 6px 12px); color: var(--cn-texto-3); }
.cn-ocultas { appearance: none; border: 1px dashed var(--cn-liña-forte); background: #fff; color: var(--cn-texto-3); border-radius: 999px; padding: 2px 7px; margin-left: 6px; font: 600 10.5px Arial, sans-serif; cursor: pointer; vertical-align: middle; }
.cn-ocultas:hover { color: var(--cn-cor-escura); border-color: var(--cn-cor); }
.cn-proba-fila { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 12px; }
.cn-proba-fila > label:first-child { display: flex; align-items: center; gap: 8px; margin: 0; }
.cn-proba-fila input[type=date] { height: 34px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 8px; font: inherit; }
.cn-proba-fila .cn-seguinte { margin: 0; }
.cn-panel select.cn-proba-escala { width: 100%; height: 38px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 8px; font: inherit; font-size: 14px; background: #fff; }
.cn-proba-rubrica { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.cn-panel label.cn-proba-desc { display: flex; align-items: flex-start; gap: 8px; margin: 0; }
.cn-proba-desc b { flex: 0 0 26px; padding-top: 7px; }
.cn-proba-desc textarea { flex: 1 1 auto; min-height: 34px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 6px 8px; font: inherit; font-size: 13px; resize: vertical; }
.cn-proba-mover { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 14px; font-size: 12.5px; color: var(--cn-texto-2); }
.cn-proba-mover span { margin-right: auto; }
.cn-proba-mover .cn-boton { margin: 0; padding: 6px 10px; font-size: 12.5px; }

/* positivos e negativos */
.cn-cab-botons { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; }
.cn-boton-comport { padding: 0 10px; font-weight: 700; }
.cn-comport-curto { font-style: normal; margin-left: 4px; }
.cn-comport-curto b, b.cn-pos, b.cn-neg { font-size: 10.5px; font-weight: 700; padding: 0 4px; border-radius: 4px; margin-left: 2px; }
b.cn-pos, .cn-comport-curto .cn-pos { background: var(--cn-ben-fondo); color: var(--cn-ben); }
b.cn-neg, .cn-comport-curto .cn-neg { background: var(--cn-mal-fondo); color: var(--cn-mal); }
.cn-comport-botons { display: flex; gap: 4px; }
.cn-comport-botons button { appearance: none; min-width: 34px; height: 28px; border-radius: 8px; border: 1px solid var(--cn-liña-forte); background: #fff; font: 700 12px Arial, sans-serif; cursor: pointer; padding: 0 6px; }
.cn-comport-mais { color: var(--cn-ben); border-color: #bfe3cd !important; background: var(--cn-ben-fondo) !important; }
.cn-comport-menos { color: var(--cn-mal); border-color: #f1c2bd !important; background: var(--cn-mal-fondo) !important; }
.cn-comport-hist { color: var(--cn-texto-2); min-width: 26px !important; }
.cn-comport-novo { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 12px 0; }
.cn-comport-novo .cn-comport-tipo { flex: 0 0 auto; }
.cn-comport-novo input[type=date] { height: 34px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 8px; font: inherit; }
.cn-comport-novo input.cn-comport-motivo { flex: 1 1 220px; height: 34px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 10px; font: inherit; font-size: 13.5px; }
.cn-comport-novo .cn-boton { margin: 0; }
.cn-comport-lista { max-height: 300px; overflow: auto; }
.cn-comport-borrar { appearance: none; border: 0; background: none; color: var(--cn-texto-3); cursor: pointer; font-size: 13px; }
.cn-comport-borrar:hover { color: var(--cn-mal); }
/* en modo positivos/negativos os botóns van debaixo do nome (a fila crece un pouco) */
#cn-root.cn-modo-comport .cn-alumno { height: auto; min-height: var(--cn-alto-fila); }
#cn-root.cn-modo-comport .cn-alumno-texto { min-width: 0; flex: 1 1 auto; }
#cn-root.cn-modo-comport .cn-comport-botons { display: flex; margin: 4px 0 1px; }
#cn-root.cn-modo-comport .cn-comport-botons button { height: 24px; min-width: 32px; font-size: 11.5px; }
/* pasar lista: o botón Presente/Falta vai debaixo do nome (como os positivos e negativos) */
#cn-root.cn-modo-lista .cn-alumno { height: auto; min-height: var(--cn-alto-fila); }
#cn-root.cn-modo-lista .cn-alumno-texto { min-width: 0; flex: 1 1 auto; }
#cn-root .cn-alumno-texto .cn-falta-boton { display: inline-flex; align-items: center; align-self: flex-start; margin: 4px 0 1px; height: 24px; padding: 0 10px; font-size: 11.5px; flex: 0 0 auto; }

/* ---------- cores personalizadas das notas (sql_cores_frases.sql) ---------- */
.cn-cor-vermello { --cn-cf: #fbe6e4; --cn-ct: #c2362b; }
.cn-cor-laranxa  { --cn-cf: #ffe7cc; --cn-ct: #b45d00; }
.cn-cor-amarelo  { --cn-cf: #fff1b8; --cn-ct: #7a5d00; }
.cn-cor-verde    { --cn-cf: #e3f4ea; --cn-ct: #1f8a4c; }
.cn-cor-azul     { --cn-cf: #e2edfb; --cn-ct: #1d5fa8; }
.cn-cor-morado   { --cn-cf: #efe8fa; --cn-ct: #6b3fb5; }
.cn-cor-rosa     { --cn-cf: #fde6f1; --cn-ct: #b0306f; }
.cn-cor-gris     { --cn-cf: #eceef1; --cn-ct: #4b5158; }
.cn-cor-ningun   { --cn-cf: transparent; --cn-ct: #1f2328; }
.cn-valor.cn-cor-vermello, .cn-valor.cn-cor-laranxa, .cn-valor.cn-cor-amarelo, .cn-valor.cn-cor-verde, .cn-valor.cn-cor-azul,
.cn-valor.cn-cor-morado, .cn-valor.cn-cor-rosa, .cn-valor.cn-cor-gris, .cn-valor.cn-cor-ningun { background: var(--cn-cf); color: var(--cn-ct); }
.cn-udi-niveis button.cn-cor-vermello, .cn-udi-niveis button.cn-cor-laranxa, .cn-udi-niveis button.cn-cor-amarelo, .cn-udi-niveis button.cn-cor-verde, .cn-udi-niveis button.cn-cor-azul,
.cn-udi-niveis button.cn-cor-morado, .cn-udi-niveis button.cn-cor-rosa, .cn-udi-niveis button.cn-cor-gris, .cn-udi-niveis button.cn-cor-ningun { background: var(--cn-cf); color: var(--cn-ct); }

/* editor de cores no panel da proba */
.cn-cores-editor { margin-top: 8px; display: flex; flex-direction: column; gap: 6px; }
.cn-cores-editor .cn-fe-axuda { margin: 2px 0; }
.cn-cores-n, .cn-cores-t { display: flex; flex-direction: column; gap: 6px; }
.cn-cor-fila { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 6px 8px; border: 1px solid var(--cn-liña); border-radius: 10px; background: var(--cn-fondo); }
.cn-cor-fila > span, .cn-cor-fila > b { font-size: 12.5px; color: var(--cn-texto-2); min-width: 44px; }
.cn-cor-fila > b { color: var(--cn-texto); min-width: 34px; }
.cn-cor-fila input.cn-cor-desde { width: 70px; height: 32px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 8px; font: inherit; font-size: 14px; }
.cn-cor-fila input.cn-cor-texto { width: 130px; height: 32px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 8px; font: inherit; font-size: 14px; }
.cn-swatches { display: inline-flex; flex-wrap: wrap; gap: 5px; }
.cn-sw {
	appearance: none; -webkit-appearance: none;
	width: 26px; height: 26px; border-radius: 50%;
	border: 2px solid var(--cn-ct, var(--cn-liña-forte));
	background: var(--cn-cf, #fff);
	cursor: pointer; padding: 0;
	font: inherit; font-size: 11px; font-weight: 700; color: var(--cn-texto-2);
}
.cn-sw.cn-cor-ningun { border-color: var(--cn-liña-forte); background: repeating-linear-gradient(45deg, #fff 0 4px, #eceef1 4px 8px); }
.cn-sw.activo { box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--cn-texto); }
.cn-cor-quitar { appearance: none; border: 0; background: transparent; color: var(--cn-texto-3); font-size: 14px; cursor: pointer; margin-left: auto; padding: 4px 6px; }
.cn-cor-quitar:hover { color: var(--cn-mal); }
.cn-cor-engadir { align-self: flex-start; margin: 0 !important; padding: 6px 10px !important; font-size: 12.5px !important; }
.cn-cores-todas-l { margin-top: 10px !important; }

/* ---------- banco de frases nos comentarios ---------- */
.cn-frases { margin-top: 6px; }
.cn-frases-botons { display: flex; flex-wrap: wrap; gap: 6px; }
.cn-frases-botons button {
	appearance: none; -webkit-appearance: none;
	display: inline-flex; align-items: center; gap: 5px;
	height: 30px; padding: 0 11px;
	border-radius: 999px; border: 1px solid var(--cn-liña-forte);
	background: var(--cn-fondo); color: var(--cn-texto-2);
	font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
}
.cn-frases-botons button:hover { background: var(--cn-fondo-2); color: var(--cn-texto); }
.cn-frases-abrir span { display: inline-flex; min-width: 18px; height: 18px; padding: 0 5px; align-items: center; justify-content: center; border-radius: 999px; background: var(--cn-fondo-2); font-size: 11px; color: var(--cn-texto-3); }
.cn-frases.aberto .cn-frases-abrir { background: var(--cn-cor-suave); border-color: var(--cn-cor-suave-2); color: var(--cn-cor-escura); }
.cn-frases-caixa { margin-top: 8px; padding: 8px; border: 1px solid var(--cn-liña); border-radius: 12px; background: var(--cn-fondo-2); }
.cn-frases-caixa[hidden] { display: none; }
.cn-frases-buscar { width: 100%; height: 34px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 10px; font: inherit; font-size: 14px; background: #fff; }
.cn-frases-lista { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; max-height: 180px; overflow-y: auto; }
.cn-frase { display: inline-flex; align-items: stretch; max-width: 100%; border: 1px solid var(--cn-liña-forte); border-radius: 10px; background: #fff; overflow: hidden; }
.cn-frase-usar { appearance: none; border: 0; background: transparent; padding: 6px 10px; font: inherit; font-size: 13px; color: var(--cn-texto); text-align: left; cursor: pointer; line-height: 1.3; }
.cn-frase-usar:hover { background: var(--cn-cor-suave); }
.cn-frase-borrar { appearance: none; border: 0; border-left: 1px solid var(--cn-liña); background: transparent; color: var(--cn-texto-3); padding: 0 8px; cursor: pointer; font-size: 12px; }
.cn-frase-borrar:hover { color: var(--cn-mal); background: var(--cn-mal-fondo); }
.cn-frases-baleiro { font-size: 12.5px; color: var(--cn-texto-3); padding: 4px 2px; }
.cn-frases-axuda { margin: 8px 2px 0; font-size: 11.5px; color: var(--cn-texto-3); }
.cn-panel textarea.cn-panel-comentario.cn-frase-engadida { border-color: var(--cn-cor); box-shadow: 0 0 0 3px var(--cn-cor-suave-2); }
.cn-panel select.cn-cores-modo { width: 100%; height: 38px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; padding: 0 8px; font: inherit; font-size: 14px; background: #fff; }
.cn-panel .cn-cor-fila input.cn-cor-texto, .cn-panel .cn-cor-fila input.cn-cor-desde { width: 110px; height: 32px; margin: 0; flex: 0 0 auto; }
.cn-panel .cn-cor-fila input.cn-cor-desde { width: 70px; }
.cn-sw.cn-sw-auto { width: auto; padding: 0 9px; border-radius: 999px; border-color: var(--cn-liña-forte); background: #fff; }

/* app: sen rebote da páxina enteira no iPhone (só se despraza a táboa) */
html.cn-app-pagina, html.cn-app-pagina body { overscroll-behavior: none; height: 100%; overflow: hidden; }
html.cn-app-pagina body { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; margin: 0; }
/* e tampouco rebota a propia táboa (a cabeceira «Pasar lista» quedaba arrastrada) */
html.cn-app-pagina #cn-root .cn-scroll { overscroll-behavior: none; }

/* ---------- evidencias (sql_evidencias.sql) ---------- */
.cn-cela .cn-marca-evid {
	position: absolute; right: 3px; bottom: 3px;
	display: inline-flex; align-items: center; gap: 1px;
	font-size: 10px; font-weight: 700; line-height: 1;
	color: var(--cn-cor-escura);
}
.cn-cela .cn-marca-evid svg { width: 12px; height: 12px; }
.cn-evid-lista { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 8px; }
.cn-evid-baleiro, .cn-evid-aviso { font-size: 12.5px; color: var(--cn-texto-3); }
.cn-evid-item { position: relative; display: inline-flex; flex-direction: column; align-items: center; gap: 2px; width: 84px; }
.cn-evid-item em { font-style: normal; font-size: 10.5px; color: var(--cn-texto-3); max-width: 84px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cn-evid-abrir {
	appearance: none; -webkit-appearance: none;
	width: 84px; height: 84px; padding: 0;
	border: 1px solid var(--cn-liña-forte); border-radius: 12px;
	background: var(--cn-fondo-2); overflow: hidden; cursor: pointer;
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
	font: inherit; color: var(--cn-texto-2);
}
.cn-evid-abrir img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cn-evid-icona svg { width: 28px; height: 28px; color: var(--cn-cor-escura); }
.cn-evid-nome { font-size: 10.5px; max-width: 76px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cn-evid-borrar {
	appearance: none; -webkit-appearance: none;
	position: absolute; top: -6px; right: -6px;
	min-width: 22px; height: 22px; padding: 0 6px;
	border-radius: 999px; border: 1px solid var(--cn-liña-forte);
	background: #fff; color: var(--cn-texto-2);
	font: inherit; font-size: 11px; font-weight: 700; cursor: pointer;
	box-shadow: 0 1px 3px rgba(0,0,0,.12);
}
.cn-evid-confirmar .cn-evid-borrar { background: var(--cn-mal); border-color: var(--cn-mal); color: #fff; }
.cn-evid-subindo { width: 84px; height: 84px; border: 1px dashed var(--cn-liña-forte); border-radius: 12px; justify-content: center; font-size: 11px; color: var(--cn-texto-3); }
.cn-evid-spinner { width: 20px; height: 20px; border-radius: 50%; border: 2.5px solid var(--cn-cor-suave-2); border-top-color: var(--cn-cor); animation: cn-xira .8s linear infinite; }
@keyframes cn-xira { to { transform: rotate(360deg); } }
.cn-evid-botons { display: flex; flex-wrap: wrap; gap: 6px; }
.cn-evid-botons button {
	appearance: none; -webkit-appearance: none;
	display: inline-flex; align-items: center; gap: 6px;
	height: 34px; padding: 0 12px;
	border-radius: 999px; border: 1px solid var(--cn-cor-suave-2);
	background: var(--cn-cor-suave); color: var(--cn-cor-escura);
	font: inherit; font-size: 13px; font-weight: 600; cursor: pointer;
}
.cn-evid-botons button:hover { border-color: var(--cn-cor); }
.cn-evid-botons button svg { width: 16px; height: 16px; }
.cn-evid-visor {
	position: absolute; inset: 0; z-index: 90;
	background: rgba(15, 17, 20, .88);
	display: flex; flex-direction: column;
}
.cn-evid-visor-barra { display: flex; align-items: center; gap: 8px; padding: 10px 12px; color: #fff; font-size: 13px; }
.cn-evid-visor-barra span { margin-right: auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cn-evid-visor-barra .cn-boton { margin: 0; text-decoration: none; }
.cn-evid-visor-corpo { flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; padding: 8px 12px 16px; }
.cn-evid-visor-corpo img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 8px; background: #fff; }
.cn-evid-visor-audio { background: #fff; border-radius: 16px; padding: 22px; display: flex; flex-direction: column; align-items: center; gap: 12px; width: min(420px, 100%); }
.cn-evid-visor-audio svg { width: 40px; height: 40px; color: var(--cn-cor-escura); }
.cn-evid-visor-audio audio { width: 100%; }
.cn-evid-visor-audio .cn-boton { text-decoration: none; }

/* ---------- opcións do cálculo das fórmulas (sql_formulas_opcions.sql) ---------- */
.cn-fe-opcions { border: 1px solid var(--cn-liña); border-radius: 10px; padding: 4px 12px 10px; margin-top: 4px; }
.cn-fe-opcions > label { margin-top: 8px !important; }
.cn-fe-op { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; padding: 8px 0; border-top: 1px solid var(--cn-liña); }
.cn-fe-opcions > label + .cn-fe-op { border-top: 0; }
.cn-fe-op > span:first-child { flex: 0 0 100%; font-size: 13px; font-weight: 600; color: var(--cn-texto-2); }
.cn-fe-op .cn-fe-seg { flex: 1 1 100%; flex-wrap: wrap; order: 0; }
.cn-fe-op .cn-fe-seg button { flex: 1 1 auto; }
.cn-fe-n { flex: 1 1 100%; font-size: 13px; color: var(--cn-texto-2); }
.cn-panel .cn-fe-n input.cn-fe-n-valor { width: 52px; height: 30px; border: 1px solid var(--cn-liña-forte); border-radius: 8px; text-align: center; font: inherit; font-size: 14px; margin: 0 4px; padding: 0 4px; }
.cn-fe-valores { flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: 6px; }
.cn-fe-valores[hidden], .cn-fe-n[hidden] { display: none; }
.cn-fe-valor { appearance: none; border: 1px solid var(--cn-liña); background: var(--cn-fondo); border-radius: 8px; min-width: 38px; height: 34px; padding: 0 8px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; font: inherit; font-size: 13px; }
.cn-fe-valor img { width: 22px; height: 22px; }
.cn-fe-valor.activo { border-color: var(--cn-cor); box-shadow: 0 0 0 2px var(--cn-cor-suave-2); background: var(--cn-cor-suave); }
.cn-fe-axuda-amosar { flex: 1 1 100%; margin-top: 0; }
.cn-fe-axuda-amosar:empty { display: none; }

/* botón «Crear rúbrica ou outro instrumento de avaliación» no editor da proba */
.cn-panel .cn-proba-instrumento { display: inline-flex; align-items: center; gap: 8px; margin: 10px 0 0; padding: 8px 12px; font-size: 13px; text-align: left; white-space: normal; }
.cn-panel .cn-proba-instrumento svg { flex: 0 0 auto; }

/* favoritos na pantalla de inicio (sen caderno aberto) */
.cn-inicio-instrucion { margin: 14px auto 34px; max-width: 560px; text-align: center; font-size: 17px; font-weight: 650; line-height: 1.45; color: var(--cn-texto); }
.cn-sen-caderno-pe { display: inline-block; margin-top: 10px; font-size: 12.5px; color: var(--cn-texto-3); }
