.lfv {
	--lfv-red: #ff0f0f;
	--lfv-red-dark: #c80000;
	--lfv-sel: #ff0f0f;
	--lfv-req: #2271b1;
	--lfv-blk: #c9c9c9;
	--lfv-line: #e3e3e3;
	--lfv-text: #222;
	--lfv-muted: #9a9a9a;
	color: var(--lfv-text);
	max-width: 1100px;
	margin: 0 auto;
	font-size: 15px;
	line-height: 1.4;
}

.lfv h2 { margin: 0 0 .4em; }
.lfv h3 { margin: 0 0 .6em; font-size: 1.1em; }

.lfv-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .5em 1.5em; margin-bottom: 1em; }
.lfv-head p { margin: 0; }

/* Login */
.lfv-login { max-width: 380px; margin: 1em auto; padding: 1.5em; border: 1px solid var(--lfv-line); background: #fff; }
.lfv-login form p { margin: 0 0 1em; }
.lfv-login label { display: block; margin-bottom: .3em; font-weight: 600; }
.lfv-login select,
.lfv-login input[type="password"] { width: 100%; padding: .6em; box-sizing: border-box; font-size: 1em; }
.lfv-login input[type="password"] { letter-spacing: .3em; }
.lfv-lost { font-size: .9em; color: #555; }
.lfv-plazo { font-weight: 600; }
.lfv-out-form { margin: 0; }
.lfv-link { background: none; border: 0; padding: 0; color: inherit; text-decoration: underline; cursor: pointer; font: inherit; }

/* Mensajes */
.lfv-msg { padding: .8em 1em; border-left: 4px solid var(--lfv-req); background: #f0f6fc; }
.lfv-msg--ok { border-color: #2e7d32; background: #edf7ee; }
.lfv-msg--error { border-color: var(--lfv-red-dark); background: #fdeeee; }

/* Leyenda */
.lfv-legend { display: flex; flex-wrap: wrap; gap: .4em 1.2em; margin: .5em 0; font-size: .9em; }
.lfv-legend span { display: inline-flex; align-items: center; gap: .4em; }
.lfv-sw { display: inline-block; width: 1em; height: 1em; border: 1px solid var(--lfv-line); }
.lfv-sw--free { background: #fff; }
.lfv-sw--sel { background: var(--lfv-sel); border-color: var(--lfv-sel); }
.lfv-sw--req { background: var(--lfv-req); border-color: var(--lfv-req); }
.lfv-sw--blk { background: repeating-linear-gradient(45deg, var(--lfv-blk), var(--lfv-blk) 3px, #eee 3px, #eee 6px); }
.lfv-help { color: #555; font-size: .9em; margin: .3em 0 1em; }

/* Calendario */
.lfv-months { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.lfv-month { background: #fff; border: 1px solid var(--lfv-line); padding: 10px; }
.lfv-month__name { margin: 0 0 6px; font-size: 1em; text-align: center; text-transform: uppercase; letter-spacing: .06em; }
.lfv-month__grid { width: 100%; border-collapse: collapse; table-layout: fixed; margin: 0; }
.lfv-month__grid th { font-size: .75em; color: var(--lfv-muted); font-weight: 600; padding: 2px 0; text-align: center; border: 0; background: none; }
.lfv-month__grid td { text-align: center; padding: 5px 0; font-size: .85em; border: 0; border-top: 1px solid #fff; border-bottom: 1px solid #fff; position: relative; }
.lfv-out { color: var(--lfv-muted); }

.lfv-week { cursor: pointer; }
.lfv-week.is-hover td { background: #fff1f1; }
.lfv-week.is-selected td { background: var(--lfv-sel); color: #fff; }
.lfv-week.is-selected .lfv-out { color: #ffd0d0; }
.lfv-week.is-requested td { background: var(--lfv-req); color: #fff; cursor: not-allowed; }
.lfv-week.is-requested .lfv-out { color: #c6dcf0; }
.lfv-week.is-blocked td { background: repeating-linear-gradient(45deg, var(--lfv-blk), var(--lfv-blk) 3px, #eee 3px, #eee 6px); color: #666; cursor: not-allowed; text-decoration: line-through; }
.lfv-week.is-disabled td { opacity: .35; cursor: default; }
.lfv-week.is-selected td:first-child,
.lfv-week.is-requested td:first-child,
.lfv-week.is-blocked td:first-child { border-radius: 4px 0 0 4px; }
.lfv-week.is-selected td:last-child,
.lfv-week.is-requested td:last-child,
.lfv-week.is-blocked td:last-child { border-radius: 0 4px 4px 0; }

/* En el panel del administrador las semanas bloqueadas sí se pueden pulsar. */
.lfv--admin .lfv-week.is-blocked td { cursor: pointer; }
.lfv--admin .lfv-week.is-hover td { background: #f0f0f0; }
.lfv--admin .lfv-week.is-blocked.is-hover td { background: repeating-linear-gradient(45deg, #aaa, #aaa 3px, #ddd 3px, #ddd 6px); }
.lfv-count { position: absolute; top: 1px; right: 1px; min-width: 14px; height: 14px; line-height: 14px; border-radius: 7px; background: var(--lfv-req); color: #fff; font-size: 10px; text-decoration: none; display: inline-block; }
.lfv-admin-count { font-weight: 600; }

/* Resumen */
.lfv-summary { margin-top: 20px; padding: 16px; border: 1px solid var(--lfv-line); background: #fafafa; }
.lfv-summary__list { list-style: none; margin: 0 0 1em; padding: 0; }
.lfv-summary__list li { display: flex; justify-content: space-between; align-items: center; padding: .4em 0; border-bottom: 1px solid var(--lfv-line); }
.lfv-summary__empty { color: var(--lfv-muted); }
.lfv-summary__total { font-weight: 600; border-bottom: 0 !important; }
.lfv-remove { background: none; border: 0; color: var(--lfv-red-dark); font-size: 1.3em; line-height: 1; cursor: pointer; padding: 0 .3em; }
.lfv-summary label { display: block; font-weight: 600; margin-bottom: .3em; }
.lfv-note-help { margin: 0 0 .5em; font-size: .88em; color: #555; }
.lfv-summary textarea { width: 100%; box-sizing: border-box; padding: .5em; margin-bottom: 1em; }
.lfv-btn { background: var(--lfv-red); color: #fff; border: 0; padding: .8em 1.8em; font-size: 1em; cursor: pointer; }
.lfv-btn:disabled { background: #ccc; cursor: not-allowed; }

/* Solicitudes del trabajador */
.lfv-mine { margin-top: 24px; }
.lfv-mine ul { list-style: none; margin: 0; padding: 0; }
.lfv-mine li { padding: .5em 0; border-bottom: 1px solid var(--lfv-line); }
.lfv-badge { display: inline-block; padding: .1em .6em; border-radius: 3px; font-size: .8em; font-weight: 600; color: #fff; background: #888; margin-right: .4em; }
.lfv-badge--pendiente { background: #b26200; }
.lfv-badge--aprobada { background: #2e7d32; }
.lfv-badge--rechazada { background: #888; }

@media (max-width: 480px) {
	.lfv-months { grid-template-columns: 1fr; }
	.lfv-month__grid td { padding: 8px 0; font-size: .95em; }
}
