/* Leonedesign Badge — Frontend */

/* Normalizza ciò che il tema inietta nelle pagine del plugin:
   colori testo espliciti + niente underline ereditato sui link. */
.ld-badge-wrapper { color: var(--ld-text, #1b1f2a); }
.ld-mgmt { color: var(--m-text, #1b1f2a); }
.ld-portal { color: var(--p-text, #1b1f2a); }
.ld-mgmt p,
.ld-mgmt li,
.ld-mgmt td,
.ld-mgmt th,
.ld-mgmt h1,
.ld-mgmt h2,
.ld-mgmt h3,
.ld-mgmt label { color: var(--m-text, #1b1f2a); }
.ld-badge-wrapper a,
.ld-mgmt a,
.ld-portal a { text-decoration: none; box-shadow: none; }
/* Link "semplici" (senza classe) restano visibili e cliccabili. */
.ld-mgmt a:not([class]) { color: var(--m-accent, #002add); }
.ld-mgmt a:not([class]):hover { text-decoration: underline; }
/* Campi form: testo scuro su sfondo chiaro, niente eredità dal tema. */
.ld-mgmt select,
.ld-mgmt input,
.ld-portal select,
.ld-portal input,
.ld-badge-wrapper select,
.ld-badge-wrapper input { color: var(--m-text, #1b1f2a); background-color: #fff; }

.ld-badge-wrapper {
	--ld-accent: #002add;
	--ld-bg: #ffffff;
	--ld-bg-soft: #f5f6fb;
	--ld-text: #1b1f2a;
	--ld-text-soft: #7b8190;
	--ld-border: #e7e9f2;
	--ld-radius: 18px;
	--ld-green: #16a34a;
	--ld-amber: #e0a800;
	--ld-blue: #2563eb;
	--ld-red: #e11d48;

	max-width: 480px;
	margin: 2rem auto;
	padding: 0 var(--ld-gutter, 1rem);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
}

.ld-badge-card {
	position: relative;
	background: var(--ld-bg);
	border: 1px solid var(--ld-border);
	border-radius: var(--ld-radius);
	padding: 1.75rem;
	box-shadow: 0 18px 48px -18px rgba(28, 33, 60, 0.35);
	overflow: hidden;
}

/* Barra accento superiore, colore segue lo stato */
.ld-badge-card::before {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 6px;
	background: var(--ld-accent);
	transition: background 0.3s ease;
}

.ld-badge-state-working::before { background: linear-gradient(90deg, #16a34a, #4ade80); }
.ld-badge-state-paused::before { background: linear-gradient(90deg, #e0a800, #fcd34d); }
.ld-badge-state-completed::before { background: linear-gradient(90deg, #2563eb, #60a5fa); }
.ld-badge-state-non_started::before { background: linear-gradient(90deg, #9aa3ad, #cbd2dc); }

.ld-badge-login-required {
	text-align: center;
	color: var(--ld-text-soft);
	padding: 2rem 1rem;
}

.ld-badge-btn-login {
	display: inline-block;
	margin-top: 1rem;
	padding: 0.7rem 1.6rem;
	border-radius: 10px;
	background: linear-gradient(135deg, #002add, #0021b0);
	color: #fff;
	font-weight: 600;
	text-decoration: none;
	transition: transform 0.1s ease, box-shadow 0.2s ease;
}

.ld-badge-btn-login:hover {
	transform: translateY(-1px);
	box-shadow: 0 6px 18px rgba(108, 99, 255, 0.35);
	color: #fff;
}

.ld-badge-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 0.75rem;
	flex-wrap: wrap;
	margin-bottom: 1.25rem;
}

.ld-badge-user {
	font-weight: 700;
	font-size: 1.2rem;
	color: var(--ld-text);
	display: flex;
	align-items: center;
	gap: 0.55rem;
}

/* Avatar iniziale generato */
.ld-badge-avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background: var(--ld-accent);
	color: #fff;
	font-size: 1rem;
	font-weight: 700;
	text-transform: uppercase;
}

.ld-badge-date {
	font-size: 0.8rem;
	color: var(--ld-text-soft);
	text-transform: capitalize;
}

/* Stato + pallino animato */
.ld-badge-status {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	font-size: 1.35rem;
	font-weight: 800;
	letter-spacing: -0.01em;
	padding: 0.85rem;
	border-radius: 14px;
	margin-bottom: 1.25rem;
	background: var(--ld-bg-soft);
	color: var(--ld-text);
}

.ld-badge-status::before {
	content: "";
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: var(--ld-text-soft);
	flex: none;
}

.ld-badge-state-working .ld-badge-status::before {
	background: var(--ld-green);
	box-shadow: 0 0 0 0 rgba(22, 163, 74, 0.5);
	animation: ld-pulse 1.6s infinite;
}

.ld-badge-state-paused .ld-badge-status::before { background: var(--ld-amber); }
.ld-badge-state-completed .ld-badge-status::before { background: var(--ld-blue); }

@keyframes ld-pulse {
	0% { box-shadow: 0 0 0 0 rgba(22, 163, 74, 0.5); }
	70% { box-shadow: 0 0 0 12px rgba(22, 163, 74, 0); }
	100% { box-shadow: 0 0 0 0 rgba(22, 163, 74, 0); }
}

.ld-badge-metrics {
	display: flex;
	gap: 0.6rem;
	margin-bottom: 1.25rem;
}

.ld-badge-metric {
	flex: 1;
	text-align: center;
	background: var(--ld-bg-soft);
	border: 1px solid var(--ld-border);
	border-radius: 14px;
	padding: 0.85rem 0.4rem;
}

.ld-badge-metric-label {
	display: block;
	font-size: 0.68rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ld-text-soft);
	margin-bottom: 0.2rem;
}

.ld-badge-metric-value {
	display: block;
	font-size: 1.4rem;
	font-weight: 800;
	color: var(--ld-text);
	font-variant-numeric: tabular-nums;
	letter-spacing: -0.02em;
}

.ld-badge-last {
	font-size: 0.85rem;
	color: var(--ld-text-soft);
	text-align: center;
	margin-bottom: 1.25rem;
}

.ld-badge-last span { font-weight: 600; color: var(--ld-text); }

.ld-badge-actions {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.6rem;
}

.ld-badge-button {
	border: none;
	border-radius: 12px;
	padding: 0.9rem 1rem;
	font-size: 1rem;
	font-weight: 700;
	color: #fff;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.4rem;
	transition: transform 0.06s ease, box-shadow 0.15s ease, opacity 0.15s ease;
	box-shadow: 0 8px 18px -10px rgba(0, 0, 0, 0.5);
}

.ld-badge-button:hover:not(:disabled) { transform: translateY(-1px); }
.ld-badge-button:active:not(:disabled) { transform: translateY(1px); }

.ld-badge-button:disabled {
	opacity: 0.35;
	cursor: not-allowed;
	box-shadow: none;
}

.ld-badge-button-start { background: linear-gradient(135deg, #16a34a, #22c55e); }
.ld-badge-button-pause_start { background: linear-gradient(135deg, #d99e00, #f0b400); }
.ld-badge-button-pause_end { background: linear-gradient(135deg, #2563eb, #3b82f6); }
.ld-badge-button-stop { background: linear-gradient(135deg, #e11d48, #f43f5e); }

.ld-badge-button::before {
	font-size: 1.05rem;
	line-height: 1;
}
.ld-badge-button-start::before { content: "▶"; }
.ld-badge-button-pause_start::before { content: "⏸"; }
.ld-badge-button-pause_end::before { content: "⏵"; }
.ld-badge-button-stop::before { content: "⏹"; }

.ld-badge-message {
	margin-top: 1.1rem;
	min-height: 1.2em;
	font-size: 0.9rem;
	font-weight: 600;
	text-align: center;
	transition: opacity 0.2s ease;
}

.ld-badge-message.is-error { color: var(--ld-red); }
.ld-badge-message.is-success { color: var(--ld-green); }

.ld-badge-card.is-loading { opacity: 0.65; pointer-events: none; }

/* Responsive */
@media (max-width: 480px) {
	.ld-badge-metrics { flex-direction: row; }
	.ld-badge-metric-value { font-size: 1.15rem; }
	.ld-badge-actions { grid-template-columns: 1fr 1fr; }
}

/* Selettore modalità di lavoro (ufficio/smart) */
.ld-badge-mode {
	text-align: center;
	margin-bottom: 1rem;
}

.ld-badge-mode-label {
	display: block;
	font-size: 0.78rem;
	color: var(--ld-text-soft);
	margin-bottom: 0.45rem;
}

.ld-badge-mode-buttons {
	display: inline-flex;
	gap: 0.4rem;
	background: var(--ld-bg-soft);
	border: 1px solid var(--ld-border);
	border-radius: 999px;
	padding: 4px;
}

.ld-badge-mode-btn {
	border: none;
	background: transparent;
	color: var(--ld-text-soft);
	font-weight: 600;
	font-size: 0.85rem;
	padding: 0.45rem 0.9rem;
	border-radius: 999px;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}

.ld-badge-mode-btn:hover:not(:disabled) { color: var(--ld-text); }
.ld-badge-mode-btn.is-active {
	background: var(--ld-accent);
	color: #fff;
	box-shadow: 0 4px 12px -4px rgba(108, 99, 255, 0.7);
}
.ld-badge-mode-btn:disabled { opacity: 0.5; cursor: not-allowed; }

.ld-badge-mode-locked {
	font-size: 0.85rem;
	color: var(--ld-text-soft);
	font-style: italic;
}

/* ===================== Gestione frontend ===================== */
.ld-mgmt {
	--m-accent: #002add;
	--m-accent-dark: #0021b0;
	--m-bg: #ffffff;
	--m-soft: #f5f6fb;
	--m-text: #1b1f2a;
	--m-text-soft: #6b7280;
	--m-border: #e7e9f2;

	max-width: var(--ld-shell, 1080px);
	margin: 2rem auto;
	padding: 0 var(--ld-gutter, 1.25rem) 3rem;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	color: var(--m-text);
}

.ld-mgmt-denied {
	text-align: center;
	padding: 3rem 1rem;
	color: var(--m-text-soft);
	background: var(--m-soft);
	border-radius: 16px;
}

.ld-mgmt-tabs {
	display: flex;
	gap: 0.5rem;
	border-bottom: 2px solid var(--m-border);
	margin-bottom: 1.5rem;
}

.ld-mgmt-tab {
	text-decoration: none;
	padding: 0.7rem 1.1rem;
	font-weight: 700;
	color: var(--m-text-soft);
	border-bottom: 3px solid transparent;
	margin-bottom: -2px;
}

.ld-mgmt-tab.is-active {
	color: var(--m-accent);
	border-bottom-color: var(--m-accent);
}

.ld-mgmt-filters {
	display: flex;
	gap: 1rem;
	align-items: center;
	flex-wrap: wrap;
	margin-bottom: 1.25rem;
	background: var(--m-soft);
	padding: 1rem;
	border-radius: 12px;
}

.ld-mgmt-filters label { font-size: 0.85rem; font-weight: 600; }
.ld-mgmt-filters input,
.ld-mgmt-filters select {
	margin-left: 0.4rem;
	padding: 0.4rem 0.5rem;
	border: 1px solid var(--m-border);
	border-radius: 8px;
	font: inherit;
}

.ld-mgmt-btn {
	background: var(--m-accent);
	color: #fff;
	border: none;
	border-radius: 10px;
	padding: 0.55rem 1.1rem;
	font-weight: 700;
	cursor: pointer;
	text-decoration: none;
	display: inline-block;
	transition: background 0.15s ease;
}
.ld-mgmt-btn:hover { background: var(--m-accent-dark); color: #fff; }
.ld-mgmt-btn-small { padding: 0.35rem 0.7rem; font-size: 0.82rem; }

.ld-mgmt-notice {
	padding: 0.7rem 1rem;
	border-radius: 10px;
	margin-bottom: 1rem;
	font-weight: 600;
}
.ld-mgmt-notice.is-success { background: #e7f7ee; color: #15803d; }
.ld-mgmt-notice.is-error { background: #fdecea; color: #b3261e; }

.ld-mgmt-tablewrap { overflow-x: auto; }

.ld-mgmt-table {
	width: 100%;
	border-collapse: collapse;
	background: var(--m-bg);
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 8px 28px -18px rgba(28, 33, 60, 0.4);
}

.ld-mgmt-table th,
.ld-mgmt-table td {
	padding: 0.7rem 0.8rem;
	text-align: left;
	border-bottom: 1px solid var(--m-border);
	font-size: 0.9rem;
	vertical-align: middle;
}

.ld-mgmt-table thead th {
	background: var(--m-soft);
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--m-text-soft);
}

.ld-mgmt-table tbody tr:hover { background: #fafbff; }

.ld-mgmt-table .ld-badge-status-form {
	display: flex;
	gap: 0.35rem;
	align-items: center;
	flex-wrap: wrap;
}
.ld-mgmt-table .ld-badge-status-form select,
.ld-mgmt-table .ld-badge-status-form input[type="text"] {
	padding: 0.35rem 0.4rem;
	border: 1px solid var(--m-border);
	border-radius: 8px;
	font: inherit;
}
.ld-mgmt-table .ld-badge-status-form input[type="text"] { min-width: 120px; }

/* Pill / alert riusano le classi del badge admin */
.ld-mgmt .ld-badge-pill {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 0.76rem;
	font-weight: 700;
	color: #fff;
	background: #6b7480;
	white-space: nowrap;
}
.ld-mgmt .ld-badge-state-presente { background: #16a34a; }
.ld-mgmt .ld-badge-state-in_pausa { background: #e0a800; color: #3d2c00; }
.ld-mgmt .ld-badge-state-assente { background: #9aa3ad; }
.ld-mgmt .ld-badge-state-weekend { background: #e7e9f2; color: #6b7280; }
.ld-mgmt .ld-badge-state-completata { background: #2563eb; }
.ld-mgmt .ld-badge-state-mancata_uscita { background: #e11d48; }
.ld-mgmt .ld-badge-state-anomalia { background: #6f42c1; }

.ld-mgmt .ld-badge-alert {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	padding: 2px 9px;
	border-radius: 999px;
	font-size: 0.7rem;
	font-weight: 700;
	line-height: 1.5;
	margin: 1px;
	white-space: nowrap;
	background: #fdecea;
	color: #b3261e;
}
.ld-mgmt .ld-badge-alert-straordinario { background: #fff4e0; color: #8a5b00; }
.ld-mgmt .ld-badge-alert-pausa_lunga { background: #fdf3da; color: #7a5d00; }
.ld-mgmt .ld-badge-alert-ritardo_lieve { background: #fff4e0; color: #8a5b00; }
.ld-mgmt .ld-badge-alert-ritardo_grave { background: #fdecea; color: #b3261e; }
.ld-mgmt .ld-badge-alert-ritardo_recuperato { background: #e7f7ee; color: #15803d; }
.ld-mgmt .ld-badge-alert-anticipo { background: #e6efff; color: #0021b0; }
.ld-mgmt .ld-badge-alert-pausa_pranzo_mancante { background: #fdf3da; color: #7a5d00; }

/* Box riassunto AI (report, solo admin) */
.ld-ai-box {
	margin: 0 0 1.25rem;
	padding: 1rem 1.1rem;
	background: linear-gradient(180deg, #f5f7ff, #ffffff);
	border: 1px solid #d7defb;
	border-radius: 14px;
}
.ld-ai-box.ld-ai-off {
	background: var(--m-soft);
	border-style: dashed;
	color: var(--m-text-soft);
}
.ld-ai-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 0.5rem;
}
.ld-ai-head strong { font-size: 0.95rem; color: var(--m-text); }
.ld-ai-text {
	margin: 0;
	color: var(--m-text);
	font-size: 0.98rem;
	line-height: 1.55;
}
.ld-ai-hint { margin: 0; color: var(--m-text-soft); font-size: 0.9rem; }
.ld-ai-err { margin: 0 0 0.4rem; color: #b3261e; font-size: 0.9rem; font-weight: 600; }

/* Statistiche report */
.ld-mgmt-totals-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
	gap: 0.8rem;
	margin-bottom: 1.5rem;
}
.ld-mgmt-stat {
	background: var(--m-soft);
	border: 1px solid var(--m-border);
	border-radius: 14px;
	padding: 1rem;
	text-align: center;
}
.ld-mgmt-stat span {
	display: block;
	font-size: 1.6rem;
	font-weight: 800;
	color: var(--m-accent);
	font-variant-numeric: tabular-nums;
}
.ld-mgmt-stat small {
	display: block;
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--m-text-soft);
	margin-top: 0.2rem;
}
.ld-mgmt-stat .ld-stat-ico {
	display: block;
	font-size: 1.15rem;
	font-style: normal;
	line-height: 1;
	margin-bottom: 0.35rem;
}
/* Bordo superiore colorato per tipo di statistica */
.ld-mgmt-stat { border-top: 3px solid var(--m-border); }
.ld-mgmt-stat.ld-stat-good { border-top-color: #16a34a; }
.ld-mgmt-stat.ld-stat-accent { border-top-color: #002add; }
.ld-mgmt-stat.ld-stat-warn { border-top-color: #e0a800; }
.ld-mgmt-stat.ld-stat-danger { border-top-color: #e11d48; }
.ld-mgmt-stat.ld-stat-muted { border-top-color: #9aa3ad; }

/* Celle e tag tabella report front-end */
.ld-mgmt-table .ld-cell-date { font-weight: 700; text-transform: capitalize; }
.ld-mgmt-table .ld-cell-time { font-variant-numeric: tabular-nums; white-space: nowrap; }
.ld-mgmt-table tr.ld-row-quiet td { background: #fafbfc; color: #97a0aa; }
.ld-mgmt .ld-muted { color: #c2c8ce; }
.ld-mgmt .ld-tag {
	display: inline-block;
	padding: 2px 9px;
	border-radius: 6px;
	font-size: 0.7rem;
	font-weight: 700;
	background: #eef2ff;
	color: #3949ab;
}

/* Chip luogo di lavoro (Ufficio / Smart) */
.ld-badge-place {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	padding: 2px 9px;
	border-radius: 999px;
	font-size: 0.7rem;
	font-weight: 700;
	line-height: 1.5;
	white-space: nowrap;
}
.ld-place-office { background: #e6efff; color: #0021b0; }
.ld-place-smart { background: #e7f7ee; color: #15803d; }
.ld-place-row { margin-top: 4px; }

/* Link "modifica timbrature" nella cella data */
.ld-edit-link {
	text-decoration: none;
	font-size: 0.85rem;
	opacity: 0.55;
	margin-left: 4px;
}
.ld-edit-link:hover { opacity: 1; }

/* Pannello editor timbrature inline */
.ld-edit-panel {
	margin: 0 0 1.5rem;
	padding: 1.1rem 1.25rem;
	background: #f5f7ff;
	border: 1px solid #d7defb;
	border-radius: 14px;
}
.ld-edit-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 0.75rem;
}
.ld-edit-head strong { font-size: 1rem; color: var(--m-text); }
.ld-edit-close {
	font-size: 0.85rem;
	color: var(--m-text-soft);
	text-decoration: none;
}
.ld-edit-close:hover { color: var(--m-text); text-decoration: underline; }
.ld-edit-table { width: 100%; max-width: 420px; border-collapse: collapse; }
.ld-edit-table th {
	text-align: left;
	font-size: 0.72rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--m-text-soft);
	padding: 4px 8px;
}
.ld-edit-table td { padding: 4px 8px; }
.ld-edit-table select,
.ld-edit-table input[type="time"] {
	width: 100%;
	padding: 5px 8px;
	border: 1px solid var(--m-border);
	border-radius: 8px;
}
.ld-edit-hint {
	margin: 0.6rem 0;
	font-size: 0.82rem;
	color: var(--m-text-soft);
}

/* Avviso mancata uscita (badge dipendente) */
.ld-badge-flash {
	margin: 0 0 0.75rem;
	padding: 0.7rem 1rem;
	border-radius: 12px;
	font-size: 0.92rem;
	font-weight: 600;
}
.ld-badge-flash.is-success { background: #e7f7ee; color: #15803d; }
.ld-badge-flash.is-error { background: #fdecea; color: #b3261e; }

.ld-badge-missexit {
	margin: 0 0 1rem;
	padding: 1rem 1.1rem;
	background: #fff7ed;
	border: 1px solid #fed7aa;
	border-radius: 14px;
}
.ld-badge-missexit-head {
	display: flex;
	align-items: flex-start;
	gap: 0.6rem;
	margin-bottom: 0.7rem;
}
.ld-badge-missexit-head span { font-size: 1.3rem; line-height: 1; }
.ld-badge-missexit-head strong { display: block; color: #9a3412; font-size: 0.98rem; }
.ld-badge-missexit-head small { color: #b45309; font-size: 0.85rem; }
.ld-badge-missexit-form {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
	align-items: center;
}
.ld-badge-missexit-form input[type="time"] {
	padding: 7px 10px;
	border: 1px solid #fdba74;
	border-radius: 10px;
	font-size: 0.95rem;
}

/* ===================== Richieste assenza ===================== */
.ld-req-title { margin: 1.75rem 0 0.75rem; font-size: 1.1rem; }
.ld-req-title:first-child { margin-top: 0; }

.ld-req-form {
	background: var(--m-soft);
	border: 1px solid var(--m-border);
	border-radius: 14px;
	padding: 1.25rem;
	margin-bottom: 1rem;
}

.ld-req-row {
	display: flex;
	gap: 1rem;
	flex-wrap: wrap;
	margin-bottom: 0.9rem;
}

.ld-req-form label {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--m-text-soft);
}

.ld-req-form select,
.ld-req-form input[type="date"],
.ld-req-form input[type="text"] {
	padding: 0.5rem 0.6rem;
	border: 1px solid var(--m-border);
	border-radius: 9px;
	font: inherit;
	background: var(--m-bg);
	color: var(--m-text);
}

.ld-req-note { display: block; margin-bottom: 0.9rem; max-width: 480px; }
.ld-req-note input { width: 100%; }

.ld-req-status {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 0.74rem;
	font-weight: 700;
	color: #fff;
}
.ld-req-pending { background: #e0a800; color: #3d2c00; }
.ld-req-approved { background: #16a34a; }
.ld-req-rejected { background: #e11d48; }

.ld-req-badge {
	display: inline-block;
	min-width: 18px;
	padding: 0 5px;
	margin-left: 4px;
	background: #e11d48;
	color: #fff;
	border-radius: 999px;
	font-size: 0.7rem;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
}

.ld-req-review { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.ld-btn {
	display: inline-block;
	padding: 6px 14px;
	border: 0;
	border-radius: 8px;
	background: #4b5563;
	color: #fff;
	font-size: 0.8rem;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	transition: background 0.15s ease;
}
.ld-btn:hover { background: #374151; }
.ld-btn-ok { background: #16a34a; }
.ld-btn-ok:hover { background: #15803d; }
.ld-btn-no { background: #e11d48; }
.ld-btn-no:hover { background: #be123c; }
.ld-req-muted { color: #97a0aa; }

/* Responsive: tabella a card su mobile */
@media (max-width: 760px) {
	.ld-mgmt-table thead { display: none; }
	.ld-mgmt-table, .ld-mgmt-table tbody, .ld-mgmt-table tr, .ld-mgmt-table td { display: block; width: 100%; }
	.ld-mgmt-table tr {
		margin-bottom: 1rem;
		border: 1px solid var(--m-border);
		border-radius: 12px;
		overflow: hidden;
	}
	.ld-mgmt-table td {
		display: flex;
		justify-content: space-between;
		gap: 1rem;
		border-bottom: 1px solid var(--m-border);
	}
	.ld-mgmt-table td::before {
		content: attr(data-label);
		font-weight: 700;
		color: var(--m-text-soft);
		font-size: 0.78rem;
	}
}

/* ============================================================
   App-shell: layout pulito sulle pagine del plugin (body.ld-app)
   ============================================================ */

/* Nasconde header/footer/sidebar del tema (oltre al meta Astra). */
body.ld-app #masthead,
body.ld-app .site-header,
body.ld-app .ast-above-header-wrap,
body.ld-app .ast-below-header-wrap,
body.ld-app #colophon,
body.ld-app .site-footer,
body.ld-app .ast-footer-overlay,
body.ld-app #secondary,
body.ld-app .ast-breadcrumbs-wrapper {
	display: none !important;
}

body.ld-app {
	background: radial-gradient(1200px 600px at 80% -10%, rgba(0, 42, 221, 0.14), transparent 60%),
		radial-gradient(900px 500px at -10% 10%, rgba(0, 42, 221, 0.08), transparent 55%),
		#f5f6fb !important;
	min-height: 100vh;
}

/* Titolo pagina del tema: lo nascondiamo, la topbar basta. */
body.ld-app .entry-header,
body.ld-app .ast-single-entry-banner,
body.ld-app .entry-title {
	display: none !important;
}

/* Contenitore contenuto: largo, centrato, sotto la topbar. */
body.ld-app #page,
body.ld-app .site-content,
body.ld-app #primary,
body.ld-app .ast-container,
body.ld-app .entry-content,
body.ld-app .site-content > .ast-container {
	background: transparent !important;
	box-shadow: none !important;
	max-width: 100% !important;
	padding-top: 0 !important;
}

/* Il wrapper del tema non vincola più la larghezza: la gestiscono i componenti
   del plugin (.ld-mgmt / .ld-portal / .ld-badge-wrapper), così il layout è
   indipendente dal tema e non c'è doppio margine. */
body.ld-app .entry-content {
	max-width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
}

/* Token condivisi della shell: una sola larghezza + gutter per header e contenuto. */
body.ld-app {
	--ld-shell: 1080px;
	--ld-gutter: clamp(1rem, 4vw, 2rem);
}

/* Topbar */
.ld-appbar {
	position: sticky;
	top: 0;
	z-index: 999;
	background: linear-gradient(135deg, #002add, #0021b0);
	box-shadow: 0 8px 24px -10px rgba(0, 42, 221, 0.55);
}

.ld-appbar-inner {
	max-width: var(--ld-shell);
	margin: 0 auto;
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 0.75rem var(--ld-gutter);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

.ld-appbar-brand {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	color: #fff !important;
	font-weight: 800;
	font-size: 1.05rem;
	text-decoration: none !important;
	letter-spacing: 0.2px;
}

.ld-appbar-logo {
	width: 30px;
	height: 30px;
	border-radius: 9px;
	background: rgba(255, 255, 255, 0.2);
	display: grid;
	place-items: center;
	font-weight: 800;
	color: #fff;
}

.ld-appbar-nav {
	display: flex;
	gap: 0.25rem;
	margin-left: 0.5rem;
	flex: 1;
	flex-wrap: wrap;
}

.ld-appbar-link {
	color: rgba(255, 255, 255, 0.82) !important;
	text-decoration: none !important;
	font-weight: 600;
	font-size: 0.92rem;
	padding: 0.4rem 0.8rem;
	border-radius: 8px;
	transition: background 0.15s ease, color 0.15s ease;
}

.ld-appbar-link:hover { background: rgba(255, 255, 255, 0.14); color: #fff !important; }
.ld-appbar-link.is-active { background: rgba(255, 255, 255, 0.95); color: #0021b0 !important; }

.ld-appbar-user {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	color: #fff;
}

.ld-appbar-avatar {
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.22);
	display: grid;
	place-items: center;
	font-weight: 700;
	font-size: 0.85rem;
}

.ld-appbar-name { font-weight: 600; font-size: 0.9rem; }

.ld-appbar-logout {
	color: #fff !important;
	text-decoration: none !important;
	font-weight: 600;
	font-size: 0.85rem;
	padding: 0.35rem 0.8rem;
	border-radius: 8px;
	border: 1px solid rgba(255, 255, 255, 0.45);
	transition: background 0.15s ease;
}

.ld-appbar-logout:hover { background: rgba(255, 255, 255, 0.18); }

/* La badge card a tutta larghezza nell'app-shell sta meglio centrata. */
body.ld-app .ld-badge-wrapper { margin-top: 1.5rem; }

@media (max-width: 680px) {
	.ld-appbar-inner { flex-wrap: wrap; }
	.ld-appbar-nav { order: 3; width: 100%; margin-left: 0; }
	.ld-appbar-name { display: none; }
}

/* ============================================================
   Portale (home dipendente): hero + griglia + link rapidi
   ============================================================ */
.ld-portal {
	--p-accent: #002add;
	--p-accent-dark: #0021b0;
	--p-text: #1b1f2a;
	--p-text-soft: #6b7280;
	--p-border: #e7e9f2;
	--p-soft: #f5f6fb;
	max-width: var(--ld-shell, 1080px);
	margin: 2rem auto;
	padding: 0 var(--ld-gutter, 1.25rem) 3rem;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	color: var(--p-text);
}

.ld-portal-hero { margin-bottom: 1.5rem; }

.ld-portal-hello {
	margin: 0;
	font-size: 1.7rem;
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--p-text);
}

.ld-portal-sub {
	margin: 0.25rem 0 0;
	color: var(--p-text-soft);
	font-size: 0.98rem;
	text-transform: capitalize;
}

.ld-portal-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 360px);
	gap: 1.5rem;
	align-items: start;
}

.ld-portal-badge { min-width: 0; }

.ld-portal-links {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}

.ld-portal-link {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	padding: 0.9rem 1rem;
	background: #fff;
	border: 1px solid var(--p-border);
	border-radius: 14px;
	text-decoration: none !important;
	color: var(--p-text) !important;
	box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.ld-portal-link:hover {
	border-color: var(--p-accent);
	box-shadow: 0 10px 24px -12px rgba(0, 42, 221, 0.45);
	transform: translateY(-1px);
}

.ld-portal-icon {
	flex: 0 0 auto;
	width: 42px;
	height: 42px;
	border-radius: 11px;
	display: grid;
	place-items: center;
	font-size: 1.2rem;
	background: var(--p-soft);
	transition: background 0.15s ease;
}

.ld-portal-link:hover .ld-portal-icon {
	background: rgba(0, 42, 221, 0.1);
}

.ld-portal-link > span:last-child {
	display: flex;
	flex-direction: column;
	line-height: 1.25;
	font-weight: 700;
	font-size: 0.98rem;
}

.ld-portal-link small {
	margin-top: 0.15rem;
	font-weight: 500;
	font-size: 0.8rem;
	color: var(--p-text-soft);
}

.ld-portal-link::after {
	content: "›";
	margin-left: auto;
	font-size: 1.3rem;
	color: var(--p-text-soft);
	opacity: 0.5;
	transition: color 0.15s ease, transform 0.15s ease, opacity 0.15s ease;
}

.ld-portal-link:hover::after {
	color: var(--p-accent);
	opacity: 1;
	transform: translateX(2px);
}

.ld-portal-login {
	background: var(--p-soft);
	border: 1px solid var(--p-border);
	border-radius: 14px;
	padding: 1.5rem;
	text-align: center;
	color: var(--p-text-soft);
}

.ld-portal-install {
	margin-top: 2rem;
	background: var(--p-soft);
	border: 1px solid var(--p-border);
	border-radius: 16px;
	padding: 1.5rem 1.75rem;
	color: var(--p-text);
}

.ld-portal-install h2 {
	margin: 0 0 0.35rem;
	font-size: 1.2rem;
	color: var(--p-text);
}

.ld-portal-install-sub {
	margin: 0 0 1rem;
	color: var(--p-text-soft);
}

.ld-portal-steps {
	margin: 0;
	padding-left: 1.4rem;
	display: flex;
	flex-direction: column;
	gap: 0.65rem;
	line-height: 1.5;
}

.ld-portal-steps li { color: var(--p-text); }

.ld-portal-steps a:not(.ld-portal-btn) {
	color: var(--p-accent);
	font-weight: 600;
}

.ld-portal-steps a:not(.ld-portal-btn):hover { text-decoration: underline; }

.ld-portal-steps .ld-portal-btn {
	display: inline-block;
	margin: 0.15rem 0.6rem 0.15rem 0;
}

.ld-portal-steps small {
	color: var(--p-text-soft);
	font-size: 0.85rem;
}

.ld-portal-install-note {
	margin: 1rem 0 0;
	font-size: 0.82rem;
	color: var(--p-text-soft);
}

@media (max-width: 860px) {
	.ld-portal-grid { grid-template-columns: 1fr; }
}
