/* =========================================================================
   PWS CRM — App frontend. Tutto scoped sotto .pwscrm-app.
   Token di brand: blu #2150AD, arancio #ED9432.
   ========================================================================= */

.pwscrm-app-body {
	margin: 0;
	background: #f4f6fb;
}

.pwscrm-app {
	--pws-blu: #2150AD;
	--pws-blu-scuro: #1a3f8a;
	--pws-arancio: #ED9432;
	--pws-arancio-scuro: #d97f1c;
	--pws-testo: #1f2733;
	--pws-muted: #6b7280;
	--pws-bordo: #e2e6ef;
	--pws-bg: #f4f6fb;
	--pws-card: #ffffff;
	--pws-danger: #c0392b;
	--pws-ok-bg: #e7f6ec;
	--pws-ok-tx: #1e6b3a;
	--pws-err-bg: #fdecea;
	--pws-err-tx: #a5271b;
	--pws-radius: 10px;
	--pws-shadow: 0 1px 3px rgba(18, 33, 66, .08), 0 1px 2px rgba(18, 33, 66, .06);

	font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	color: var(--pws-testo);
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	font-size: 15px;
	line-height: 1.5;
}

.pwscrm-app *,
.pwscrm-app *::before,
.pwscrm-app *::after {
	box-sizing: border-box;
}

.pwscrm-wrap {
	width: 100%;
	max-width: 1600px;
	margin: 0 auto;
	padding: 0 20px;
}

/* --- Tipografia --- */
.pwscrm-app h1,
.pwscrm-app h2,
.pwscrm-app legend {
	font-family: "Bricolage Grotesque", "Poppins", sans-serif;
	font-weight: 700;
	color: var(--pws-blu);
	margin: 0;
}
.pwscrm-h1 { font-size: 1.6rem; }
.pwscrm-muted { color: var(--pws-muted); }
.pwscrm-small { font-size: .85em; }
.pwscrm-visto { margin-top: 4px; }
.pwscrm-percorso { margin-top: 6px; font-size: .85em; }
.pwscrm-percorso summary { cursor: pointer; color: var(--pws-blu); }
.pwscrm-percorso__lista { list-style: none; margin: 6px 0 0; padding: 0; }
.pwscrm-percorso__lista li { padding: 2px 0; }
.pwscrm-percorso__tipo { font-weight: 600; }
.pwscrm-percorso__motivo { font-style: italic; color: var(--pws-muted); margin-top: 2px; }
.pwscrm-premessa-ai { margin: 0 0 12px; padding: 12px; border: 1px solid var(--pwscrm-border, #e7ecf4); border-radius: 10px; background: #f7f9fc; }
.pwscrm-premessa-ai__brieflab { display: block; font-size: .85em; color: #6b7688; margin-bottom: 4px; }
.pwscrm-premessa-ai__controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
.pwscrm-premessa-ai__error { color: #a4262c; font-size: .9em; margin: 8px 0 0; }
.pwscrm-qe { display: flex; flex-direction: column; gap: 6px; max-width: 420px; }
.pwscrm-qe__row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.pwscrm-qe__lab { color: #6b7688; }
.pwscrm-qe__row--tot { border-top: 2px solid #2150AD; margin-top: 4px; padding-top: 6px; }
.pwscrm-qe__row--tot .pwscrm-qe__val { color: #2150AD; font-size: 1.1em; }
.pwscrm-link,
.pwscrm-app a { color: var(--pws-blu); }
.pwscrm-link { text-decoration: none; font-weight: 600; }
.pwscrm-link:hover { text-decoration: underline; }

/* --- Top bar --- */
.pwscrm-topbar {
	background: var(--pws-card);
	border-bottom: 1px solid var(--pws-bordo);
	box-shadow: var(--pws-shadow);
}
.pwscrm-topbar__inner {
	display: flex;
	align-items: center;
	gap: 24px;
	min-height: 64px;
}
.pwscrm-topbar__brand { display: inline-flex; align-items: center; }
.pwscrm-topbar__brand img { max-height: 40px; width: auto; display: block; }
.pwscrm-topbar__brandtext { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; color: var(--pws-blu); font-size: 1.1rem; }
.pwscrm-nav { display: flex; gap: 4px; flex: 1; flex-wrap: wrap; }
.pwscrm-nav__link {
	padding: 8px 14px;
	border-radius: 8px;
	text-decoration: none;
	color: var(--pws-testo);
	font-weight: 500;
	font-size: .95rem;
}
.pwscrm-nav__link:hover { background: var(--pws-bg); }
.pwscrm-nav__link.is-active { background: var(--pws-blu); color: #fff; }
.pwscrm-nav__link.is-disabled { color: #b8bec9; cursor: not-allowed; }
.pwscrm-topbar__user { display: flex; align-items: center; gap: 12px; }
.pwscrm-topbar__name { font-weight: 600; font-size: .9rem; color: var(--pws-muted); }

/* --- Layout principale --- */
.pwscrm-app__main { flex: 1; padding: 32px 0 48px; }
.pwscrm-page-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	margin-bottom: 20px;
}

.pwscrm-page-head__actions {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
}

/* --- Bottoni --- */
.pwscrm-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 9px 18px;
	border-radius: 8px;
	border: 1px solid transparent;
	font-family: inherit;
	font-weight: 600;
	font-size: .92rem;
	line-height: 1;
	cursor: pointer;
	text-decoration: none;
	transition: background .15s ease, border-color .15s ease, color .15s ease;
	white-space: nowrap;
}
.pwscrm-btn--primary { background: var(--pws-arancio); color: #fff; border-color: var(--pws-arancio); }
.pwscrm-btn--primary:hover { background: var(--pws-arancio-scuro); border-color: var(--pws-arancio-scuro); }
.pwscrm-btn--ghost { background: #fff; color: var(--pws-blu); border-color: var(--pws-bordo); }
.pwscrm-btn--ghost:hover { border-color: var(--pws-blu); }
.pwscrm-btn--danger { background: #fff; color: var(--pws-danger); border-color: #f0c4bf; }
.pwscrm-btn--danger:hover { background: var(--pws-danger); color: #fff; border-color: var(--pws-danger); }
.pwscrm-btn--link { background: none; border: none; color: var(--pws-blu); padding: 9px 6px; }
.pwscrm-btn--link:hover { text-decoration: underline; }
.pwscrm-btn--sm { padding: 6px 12px; font-size: .85rem; }

/* --- Card contatori --- */
.pwscrm-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 24px; }
.pwscrm-card {
	background: var(--pws-card);
	border: 1px solid var(--pws-bordo);
	border-radius: var(--pws-radius);
	box-shadow: var(--pws-shadow);
	padding: 22px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	text-decoration: none;
	color: inherit;
	transition: transform .12s ease, box-shadow .12s ease;
}
.pwscrm-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(18, 33, 66, .12); }
.pwscrm-card__num { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; font-size: 2.2rem; color: var(--pws-blu); line-height: 1; }
.pwscrm-card__label { color: var(--pws-muted); font-weight: 500; }
.pwscrm-shortcuts { display: flex; gap: 12px; flex-wrap: wrap; }

/* --- Filtri --- */
.pwscrm-filters { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.pwscrm-filters__search { flex: 1; min-width: 220px; }
.pwscrm-count { margin: 0 0 14px; }

/* --- Input --- */
.pwscrm-input {
	width: 100%;
	padding: 9px 12px;
	border: 1px solid var(--pws-bordo);
	border-radius: 8px;
	font-family: inherit;
	font-size: .92rem;
	color: var(--pws-testo);
	background: #fff;
}
.pwscrm-input:focus { outline: none; border-color: var(--pws-blu); box-shadow: 0 0 0 3px rgba(33, 80, 173, .12); }
.pwscrm-input--short { max-width: 90px; text-transform: uppercase; }
.pwscrm-righe .pwscrm-campo-quantita { max-width: 72px; display: inline-block; text-transform: none; }
.pwscrm-righe .pwscrm-campo-unita { display: block; max-width: 150px; margin-top: 4px; }
select.pwscrm-input { width: auto; min-width: 160px; }

/* --- Tabella --- */
.pwscrm-tablewrap { background: var(--pws-card); border: 1px solid var(--pws-bordo); border-radius: var(--pws-radius); box-shadow: var(--pws-shadow); overflow-x: auto; }
.pwscrm-table { width: 100%; border-collapse: collapse; }
.pwscrm-table th, .pwscrm-table td { padding: 12px 16px; text-align: left; vertical-align: top; }
.pwscrm-table thead th { background: #f7f9fd; color: var(--pws-muted); font-weight: 600; font-size: .82rem; text-transform: uppercase; letter-spacing: .03em; border-bottom: 1px solid var(--pws-bordo); }
.pwscrm-table tbody tr + tr td { border-top: 1px solid var(--pws-bordo); }
.pwscrm-table tbody tr:hover { background: #fafbfe; }
.pwscrm-table__actions { text-align: right; white-space: normal; }
.pwscrm-table__actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: flex-end; }
.pwscrm-inline-form { display: inline-flex; margin: 0; }

.pwscrm-checkbox-inline { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }

/* Il "Riapri" resta chiuso per default: il <summary> ha l'aspetto di un
   bottone --ghost --sm, il form appare solo all'apertura. */
.pwscrm-riapertura { display: inline-block; vertical-align: middle; }
.pwscrm-riapertura summary {
	cursor: pointer;
	list-style: none;
	display: inline-flex;
	align-items: center;
	padding: 6px 12px;
	font-size: .85rem;
	border-radius: 6px;
	border: 1px solid var(--pws-blu);
	color: var(--pws-blu);
	background: #fff;
}
.pwscrm-riapertura summary::-webkit-details-marker { display: none; }
.pwscrm-riapertura[open] summary { margin-bottom: 6px; font-weight: 600; }

/* Il form di riapertura ha più campi del solito .pwscrm-inline-form (stato,
   data, checkbox, bottone, nota) — va a capo invece di restare su una riga. */
.pwscrm-riapertura-form { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.pwscrm-riapertura-form p { flex-basis: 100%; margin: 4px 0 0; }

/* I form (crea/modifica) restano leggibili anche con l'app allargata */
.pwscrm-form { max-width: 860px; }

/* --- Badge tipo --- */
.pwscrm-badge { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: .78rem; font-weight: 600; }
.pwscrm-badge--cliente { background: #e7f0ff; color: var(--pws-blu); }
.pwscrm-badge--lead { background: #fff1e0; color: var(--pws-arancio-scuro); }
.pwscrm-badge--altro { background: #eef0f4; color: var(--pws-muted); }
.pwscrm-badge--ex_cliente { background: #eaeef5; color: #4a5b7a; }

/* --- Paginazione --- */
.pwscrm-pagination { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 18px; }
.pwscrm-page { min-width: 38px; text-align: center; padding: 7px 10px; border: 1px solid var(--pws-bordo); border-radius: 8px; text-decoration: none; color: var(--pws-testo); background: #fff; font-weight: 600; font-size: .9rem; }
.pwscrm-page:hover { border-color: var(--pws-blu); }
.pwscrm-page.is-current { background: var(--pws-blu); color: #fff; border-color: var(--pws-blu); }

/* --- Form --- */
.pwscrm-form { background: var(--pws-card); border: 1px solid var(--pws-bordo); border-radius: var(--pws-radius); box-shadow: var(--pws-shadow); padding: 24px; }
.pwscrm-fieldset { border: none; padding: 0; margin: 0 0 22px; }
.pwscrm-fieldset legend { font-size: 1rem; margin-bottom: 12px; padding: 0; }
.pwscrm-field { margin-bottom: 14px; }
.pwscrm-field label { display: block; font-weight: 600; font-size: .85rem; margin-bottom: 5px; color: var(--pws-testo); }
.pwscrm-req { color: var(--pws-arancio-scuro); }
.pwscrm-grid { display: grid; gap: 14px; }
.pwscrm-grid--2 { grid-template-columns: repeat(2, 1fr); }
.pwscrm-grid--3 { grid-template-columns: repeat(3, 1fr); }
.pwscrm-form__actions { display: flex; gap: 12px; padding-top: 6px; border-top: 1px solid var(--pws-bordo); margin-top: 6px; padding-top: 18px; }

/* --- Alert --- */
.pwscrm-alert { padding: 14px 18px; border-radius: 8px; margin-bottom: 20px; font-size: .92rem; }
.pwscrm-alert ul { margin: 8px 0 0; padding-left: 20px; }
.pwscrm-alert--success { background: var(--pws-ok-bg); color: var(--pws-ok-tx); }
.pwscrm-alert--error { background: var(--pws-err-bg); color: var(--pws-err-tx); }

/* --- Stati vuoti --- */
.pwscrm-empty { text-align: center; padding: 48px 20px; }
.pwscrm-empty--table { background: var(--pws-card); border: 1px dashed var(--pws-bordo); border-radius: var(--pws-radius); }

/* --- Login --- */
.pwscrm-login { min-height: calc(100vh - 120px); display: flex; align-items: center; justify-content: center; padding: 40px 20px; }
.pwscrm-login__card { background: var(--pws-card); border: 1px solid var(--pws-bordo); border-radius: 16px; box-shadow: 0 10px 40px rgba(18, 33, 66, .12); padding: 40px; width: 100%; max-width: 400px; text-align: center; }
.pwscrm-login__logo { max-height: 56px; width: auto; margin-bottom: 18px; }
.pwscrm-login__brandtext { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; color: var(--pws-blu); font-size: 1.4rem; margin-bottom: 18px; }
.pwscrm-login__title { font-size: 1.25rem; margin-bottom: 22px; }
.pwscrm-login__hint { margin-top: 18px; font-size: .88rem; }
.pwscrm-login__hint a { color: var(--pws-muted); text-decoration: none; }
.pwscrm-login__hint a:hover { text-decoration: underline; }

/* Stili sul form nativo di wp_login_form (scoped) */
.pwscrm-login .login-username,
.pwscrm-login .login-password { text-align: left; margin-bottom: 14px; }
.pwscrm-login label { display: block; font-weight: 600; font-size: .85rem; margin-bottom: 5px; }
.pwscrm-login input[type="text"],
.pwscrm-login input[type="password"] {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--pws-bordo);
	border-radius: 8px;
	font-family: inherit;
	font-size: .95rem;
	box-sizing: border-box;
}
.pwscrm-login input[type="text"]:focus,
.pwscrm-login input[type="password"]:focus { outline: none; border-color: var(--pws-blu); box-shadow: 0 0 0 3px rgba(33, 80, 173, .12); }
.pwscrm-login .login-remember { text-align: left; font-size: .88rem; margin-bottom: 16px; }
.pwscrm-login .login-remember label { display: inline; font-weight: 500; }
.pwscrm-login .login-submit input[type="submit"] {
	width: 100%;
	padding: 11px 18px;
	background: var(--pws-arancio);
	color: #fff;
	border: 1px solid var(--pws-arancio);
	border-radius: 8px;
	font-family: inherit;
	font-weight: 700;
	font-size: 1rem;
	cursor: pointer;
}
.pwscrm-login .login-submit input[type="submit"]:hover { background: var(--pws-arancio-scuro); border-color: var(--pws-arancio-scuro); }

/* --- Footer --- */
.pwscrm-app__footer { border-top: 1px solid var(--pws-bordo); padding: 18px 0; color: var(--pws-muted); font-size: .82rem; background: var(--pws-card); }

/* --- Responsive --- */
@media (max-width: 680px) {
	.pwscrm-grid--2, .pwscrm-grid--3 { grid-template-columns: 1fr; }
	.pwscrm-topbar__inner { flex-wrap: wrap; min-height: 0; padding-top: 12px; padding-bottom: 12px; gap: 12px; }
	.pwscrm-nav { order: 3; width: 100%; }
	.pwscrm-table thead { display: none; }
	.pwscrm-table, .pwscrm-table tbody, .pwscrm-table tr, .pwscrm-table td { display: block; width: 100%; }
	.pwscrm-table tr { border-bottom: 1px solid var(--pws-bordo); padding: 8px 0; }
	.pwscrm-table td { padding: 6px 16px; }
	.pwscrm-table__actions { justify-content: flex-start; }
}

/* =========================================================================
   Fase 2 — Servizi + editor ridotto (append)
   ========================================================================= */

/* Badge sezione / stato */
.pwscrm-badge--consulenza { background: #e7f0ff; color: var(--pws-blu); }
.pwscrm-badge--operativita { background: #fff1e0; color: var(--pws-arancio-scuro); }
.pwscrm-badge--on { background: var(--pws-ok-bg); color: var(--pws-ok-tx); }
.pwscrm-badge--offbadge { background: #eef0f4; color: var(--pws-muted); }

/* Righe disattivate: attenuate */
.pwscrm-row--off td { opacity: .6; }
.pwscrm-row--off .pwscrm-badge--offbadge { opacity: 1; }

/* Colonna ordine compatta */
.pwscrm-col-ordine { width: 56px; text-align: center; color: var(--pws-muted); }

/* Checkbox campo */
.pwscrm-field--check { display: flex; align-items: flex-end; }
.pwscrm-check { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: .9rem; cursor: pointer; }
.pwscrm-check input { width: 18px; height: 18px; }

/* Editor ridotto (B2) */
.pwscrm-editor { border: 1px solid var(--pws-bordo); border-radius: 8px; overflow: hidden; background: #fff; }
.pwscrm-editor__toolbar { display: flex; gap: 2px; padding: 6px; background: #f7f9fd; border-bottom: 1px solid var(--pws-bordo); flex-wrap: wrap; }
.pwscrm-editor__btn {
	min-width: 34px;
	height: 30px;
	padding: 0 10px;
	border: 1px solid var(--pws-bordo);
	background: #fff;
	border-radius: 6px;
	cursor: pointer;
	font-family: inherit;
	font-size: .85rem;
	color: var(--pws-testo);
	line-height: 1;
}
.pwscrm-editor__btn:hover { border-color: var(--pws-blu); color: var(--pws-blu); }
.pwscrm-editor__area {
	min-height: 140px;
	padding: 12px 14px;
	font-family: inherit;
	font-size: .95rem;
	line-height: 1.6;
	outline: none;
}
.pwscrm-editor__area:focus { box-shadow: inset 0 0 0 2px rgba(33, 80, 173, .12); }
.pwscrm-editor__area ul, .pwscrm-editor__area ol { margin: 0 0 0 1.2em; padding: 0; }
.pwscrm-editor__area a { color: var(--pws-blu); }

/* =========================================================================
   Fase 3a — Preventivi: badge di stato, chip dashboard, azioni riga (append)
   ========================================================================= */

/* Badge di stato preventivo (colori coerenti col brand) */
.pwscrm-badge--bozza        { background: #eef0f4; color: #55606e; }
.pwscrm-badge--inviato      { background: #e7f0ff; color: var(--pws-blu); }
.pwscrm-badge--in_revisione { background: #fff1e0; color: var(--pws-arancio-scuro); }
.pwscrm-badge--in_trattativa{ background: #f3e8ff; color: #6b2fae; }
.pwscrm-badge--accettato    { background: var(--pws-ok-bg); color: var(--pws-ok-tx); }
.pwscrm-badge--rifiutato    { background: #fde8e8; color: #a12626; }
.pwscrm-badge--scaduto      { background: #f0e6d8; color: #7a5a1e; }

/* Pallino di stato (per le chip in dashboard) */
.pwscrm-badge--dot {
	display: inline-block;
	width: 10px; height: 10px;
	padding: 0;
	border-radius: 50%;
	vertical-align: middle;
}

/* Sezione secondaria (dashboard preventivi) */
.pwscrm-section { margin-top: 32px; }
.pwscrm-page-head--sub { margin-bottom: 12px; }
.pwscrm-h2 { font-family: 'Bricolage Grotesque', system-ui, sans-serif; font-size: 1.25rem; margin: 0; color: var(--pws-testo); }

/* Chip contatori per stato */
.pwscrm-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.pwscrm-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	border: 1px solid var(--pws-bordo);
	border-radius: 999px;
	background: #fff;
	text-decoration: none;
	color: var(--pws-testo);
	transition: border-color .15s, box-shadow .15s;
}
.pwscrm-chip:hover { border-color: var(--pws-blu); box-shadow: 0 1px 6px rgba(33,80,173,.08); }
.pwscrm-chip__num { font-weight: 700; }
.pwscrm-chip__label { color: var(--pws-muted); font-size: .9rem; }
.pwscrm-chip--total { background: #f7f9fd; }
.pwscrm-chip--total .pwscrm-chip__label { color: var(--pws-testo); }

/* Form di transizione stato in riga */
.pwscrm-stato-form { display: inline-flex; align-items: center; gap: 4px; }
.pwscrm-input--sm { padding: 4px 8px; font-size: .85rem; height: 30px; }

/* =========================================================================
 * Preventivi — form (Fase 3b)
 * ====================================================================== */
.pwscrm-form--wide { max-width: 1180px; }

.pwscrm-radio {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-right: 18px;
	font-weight: 500;
}
.pwscrm-radio input { width: auto; margin: 0; }

.pwscrm-check--sm {
	margin-top: 6px;
	font-size: .82rem;
	color: var(--pws-muted);
}

.pwscrm-perc-wrap {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px;
}

.pwscrm-btn--icon {
	padding: 4px 8px;
	line-height: 1;
	color: var(--pws-danger);
	background: transparent;
	border: 1px solid transparent;
}
.pwscrm-btn--icon:hover {
	background: var(--pws-err-bg);
	border-color: var(--pws-err-bg);
}

.pwscrm-riga--gratuito { background: var(--pws-ok-bg); }
.pwscrm-riga--gratuito .pwscrm-campo-prezzo { opacity: .7; }

/* Editor B2 in riga: compatto, adatto alla cella descrizione. */
.pwscrm-editor--riga { margin: 0; }
.pwscrm-editor--riga .pwscrm-editor__area {
	min-height: 70px;
	font-size: .9rem;
}

/* Tabella righe: celle in alto, campi a piena larghezza. */
.pwscrm-righe td { vertical-align: top; }
.pwscrm-righe .pwscrm-input { margin-bottom: 4px; }
.pwscrm-milestone-data { max-width: 170px; display: inline-block; }

/* ---------------------------------------------------------------------------
   Controllo Finanziario (Fase 1) - sotto-nav, selettore anno, blended
--------------------------------------------------------------------------- */
.pwscrm-app .pwscrm-cf-annoform { display: flex; align-items: center; gap: 8px; }
.pwscrm-app .pwscrm-cf-annoform label { font-weight: 600; color: var(--pws-muted); font-size: .9rem; }
.pwscrm-app .pwscrm-cf-subnav { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0 20px; border-bottom: 1px solid var(--pws-bordo); }
.pwscrm-app .pwscrm-cf-subnav__link { padding: 8px 14px; border-radius: var(--pws-radius) var(--pws-radius) 0 0; font-weight: 600; font-size: .92rem; color: var(--pws-muted); text-decoration: none; border: 1px solid transparent; border-bottom: none; }
.pwscrm-app .pwscrm-cf-subnav__link:hover { background: var(--pws-bg); color: var(--pws-blu); }
.pwscrm-app .pwscrm-cf-subnav__link.is-active { background: var(--pws-card); color: var(--pws-blu); border-color: var(--pws-bordo); }
.pwscrm-app .pwscrm-cf-blended { display: flex; flex-direction: column; gap: 2px; background: var(--pws-card); border: 1px solid var(--pws-bordo); border-left: 4px solid var(--pws-blu); border-radius: var(--pws-radius); padding: 14px 18px; margin-bottom: 18px; box-shadow: var(--pws-shadow); }
.pwscrm-app .pwscrm-cf-blended__label { color: var(--pws-muted); font-size: .85rem; text-transform: uppercase; letter-spacing: .03em; }
.pwscrm-app .pwscrm-cf-blended__num { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; font-size: 1.8rem; color: var(--pws-blu); line-height: 1.1; }

/* Controllo - pillole filtro stato + titolo terziario */
.pwscrm-app .pwscrm-cf-pills { display: inline-flex; gap: 6px; margin-right: auto; }
.pwscrm-app .pwscrm-cf-pill { padding: 5px 12px; border-radius: 999px; border: 1px solid var(--pws-bordo); font-size: .85rem; font-weight: 600; color: var(--pws-muted); text-decoration: none; background: var(--pws-card); }
.pwscrm-app .pwscrm-cf-pill:hover { border-color: var(--pws-blu); color: var(--pws-blu); }
.pwscrm-app .pwscrm-cf-pill.is-active { background: var(--pws-blu); color: #fff; border-color: var(--pws-blu); }
.pwscrm-app .pwscrm-h3 { font-family: "Bricolage Grotesque", sans-serif; font-weight: 700; font-size: 1.05rem; color: var(--pws-testo); margin: 22px 0 10px; }
.pwscrm-app .pwscrm-badge--offbadge { background: var(--pws-err-bg); color: var(--pws-err-tx); }
.pwscrm-app .pwscrm-badge--on { background: var(--pws-ok-bg); color: var(--pws-ok-tx); }

/* --- Commesse (Fase 2): badge classe di margine + ore incomplete --- */
.pwscrm-app .pwscrm-badge--m-ottimo      { background: var(--pws-ok-bg); color: var(--pws-ok-tx); }
.pwscrm-app .pwscrm-badge--m-sostenibile { background: #e7f0ff; color: var(--pws-blu); }
.pwscrm-app .pwscrm-badge--m-borderline  { background: #fff1e0; color: var(--pws-arancio-scuro); }
.pwscrm-app .pwscrm-badge--m-nonprof     { background: #fde8e8; color: #a12626; }
.pwscrm-app .pwscrm-badge--m-nd          { background: #eef0f4; color: var(--pws-muted); }
.pwscrm-app .pwscrm-badge--warn          { background: #fff4d6; color: #8a6100; }

.pwscrm-app .pwscrm-commesse-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; justify-content: space-between; margin: 4px 0 16px; }
.pwscrm-app .pwscrm-commesse-bar__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.pwscrm-app .pwscrm-report { margin: 12px 0 20px; padding: 12px 14px; border: 1px solid var(--pws-bordo); border-radius: var(--pws-radius); background: #fff9ec; }
.pwscrm-app .pwscrm-report ul { margin: 8px 0 0; padding-left: 18px; }
.pwscrm-app .pwscrm-num--neg { color: var(--pws-danger); }

/* --- Commesse: edit rapido ore in riga --- */
.pwscrm-app .pwscrm-ore-form { display: flex; flex-direction: column; gap: 4px; align-items: flex-end; }
.pwscrm-app .pwscrm-ore-form__row { display: flex; align-items: center; gap: 6px; font-size: .72rem; color: var(--pws-muted); }
.pwscrm-app .pwscrm-ore-form__row span { width: 22px; text-align: right; }
.pwscrm-app .pwscrm-input--xs { width: 66px; padding: 4px 6px; text-align: right; }
.pwscrm-app .pwscrm-ore-form__save { margin-top: 2px; padding: 3px 10px; }

/* --- Dashboard home: selettore anno, liste scrollabili, fatturato (grafico + previsto) --- */
.pwscrm-page-head__tools { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pwscrm-year-form { display: flex; align-items: center; gap: 8px; }
.pwscrm-year-form__label { color: var(--pws-muted); font-weight: 600; font-size: .9rem; }
.pwscrm-tablewrap--scroll { max-height: 420px; overflow-y: auto; }

.pwscrm-fatturato { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: stretch; }
.pwscrm-fatturato__chart { min-width: 0; }
.pwscrm-chart { background: var(--pws-card); border: 1px solid var(--pws-bordo); border-radius: var(--pws-radius); box-shadow: var(--pws-shadow); padding: 12px 14px; }
.pwscrm-chart svg { width: 100%; height: auto; display: block; }
.pwscrm-chart__bar { fill: var(--pws-blu); transition: fill .15s ease; }
.pwscrm-chart__bar:hover { fill: var(--pws-blu-scuro); }
.pwscrm-chart__axis { stroke: var(--pws-bordo); stroke-width: 1; }
.pwscrm-chart__vlabel { fill: var(--pws-muted); font-family: "Poppins", sans-serif; font-size: 11px; font-weight: 600; }
.pwscrm-chart__mlabel { fill: var(--pws-testo); font-family: "Poppins", sans-serif; font-size: 12px; }
.pwscrm-chart__total { margin: 10px 2px 0; font-family: "Bricolage Grotesque", sans-serif; font-weight: 700; color: var(--pws-testo); }
.pwscrm-chart__total span { color: var(--pws-blu); }

.pwscrm-fatturato__forecast { display: flex; flex-direction: column; justify-content: center; gap: 8px; background: #fff7ee; border: 1px solid #f4dcc0; border-left: 4px solid var(--pws-arancio); border-radius: var(--pws-radius); padding: 24px 28px; }
.pwscrm-forecast__primary { display: flex; flex-direction: column; gap: 8px; }
.pwscrm-forecast__label { color: var(--pws-arancio-scuro); font-weight: 600; font-size: .82rem; text-transform: uppercase; letter-spacing: .03em; }
.pwscrm-forecast__num { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; font-size: 2.6rem; color: var(--pws-arancio-scuro); line-height: 1.05; }
.pwscrm-forecast__lordo { margin: 12px 0 0; padding-top: 12px; border-top: 1px solid #f4dcc0; }

@media (max-width: 720px) {
	.pwscrm-fatturato { grid-template-columns: 1fr; }
	.pwscrm-fatturato__forecast { order: -1; }
}

/* --- Dashboard home: preventivi in due colonne (trattativa | scaduti) --- */
.pwscrm-prev-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
.pwscrm-prev-col { min-width: 0; }
@media (max-width: 900px) {
	.pwscrm-prev-cols { grid-template-columns: 1fr; }
}

/* --- Dashboard home: slideshow liste preventivi (5 per pagina) --- */
.pwscrm-slider__nav { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 10px; }
.pwscrm-slider__count { color: var(--pws-muted); font-size: .88rem; font-weight: 600; }
.pwscrm-slider__btn { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; padding: 0; border-radius: 8px; border: 1px solid var(--pws-bordo); background: var(--pws-card); color: var(--pws-blu); font-size: 1.15rem; line-height: 1; cursor: pointer; transition: border-color .15s ease, background .15s ease; }
.pwscrm-slider__btn:hover { border-color: var(--pws-blu); background: #f2f6ff; }

/* =========================================================================
   Guscio a sidebar (Stage 1) — layout verticale, sotto-gruppo Controllo
   (details/summary nativi, no-JS), off-canvas mobile CSS-first.
   Palette PWS (token --pws-*). Un solo foglio.
   ========================================================================= */
.pwscrm-app .pwscrm-shell { flex: 1; display: flex; align-items: flex-start; }

.pwscrm-app .pwscrm-sidebar {
	flex: 0 0 240px;
	width: 240px;
	background: var(--pws-card);
	border-right: 1px solid var(--pws-bordo);
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 16px 12px;
	position: sticky;
	top: 0;
	height: 100vh;
	overflow-y: auto;
}
.pwscrm-app .pwscrm-sidebar__brand { display: flex; align-items: center; padding: 6px 8px 14px; }
.pwscrm-app .pwscrm-sidebar__brand img { max-height: 40px; width: auto; display: block; }
.pwscrm-app .pwscrm-sidebar__brandtext { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; color: var(--pws-blu); font-size: 1.05rem; }

.pwscrm-app .pwscrm-sidebar__nav { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.pwscrm-app .pwscrm-sidebar__link,
.pwscrm-app .pwscrm-sidebar__summary,
.pwscrm-app .pwscrm-sidebar__sublink {
	display: block;
	padding: 9px 12px;
	border-radius: var(--pws-radius);
	font-weight: 600;
	font-size: .95rem;
	color: var(--pws-testo);
	text-decoration: none;
	cursor: pointer;
}
.pwscrm-app .pwscrm-sidebar__link:hover,
.pwscrm-app .pwscrm-sidebar__summary:hover,
.pwscrm-app .pwscrm-sidebar__sublink:hover { background: var(--pws-bg); color: var(--pws-blu); }
.pwscrm-app .pwscrm-sidebar__link.is-active { background: var(--pws-blu); color: #fff; }

/* Sotto-gruppo Controllo. */
.pwscrm-app .pwscrm-sidebar__group { border-radius: var(--pws-radius); }
.pwscrm-app .pwscrm-sidebar__summary { list-style: none; display: flex; align-items: center; justify-content: space-between; }
.pwscrm-app .pwscrm-sidebar__summary::-webkit-details-marker { display: none; }
.pwscrm-app .pwscrm-sidebar__summary::after { content: ""; width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg); transition: transform .2s ease; opacity: .55; }
.pwscrm-app .pwscrm-sidebar__group[open] > .pwscrm-sidebar__summary::after { transform: rotate(45deg); }
.pwscrm-app .pwscrm-sidebar__group.is-active > .pwscrm-sidebar__summary { color: var(--pws-blu); }
.pwscrm-app .pwscrm-sidebar__sub { display: flex; flex-direction: column; gap: 2px; margin: 2px 0 4px; padding-left: 10px; border-left: 2px solid var(--pws-bordo); }
.pwscrm-app .pwscrm-sidebar__sublink { font-size: .9rem; font-weight: 500; color: var(--pws-muted); padding: 7px 12px; }
.pwscrm-app .pwscrm-sidebar__sublink.is-active { color: var(--pws-blu); background: var(--pws-bg); font-weight: 600; }
.pwscrm-app .pwscrm-sidebar__sublink--nested { padding-left: 26px; font-size: .85rem; }

.pwscrm-app .pwscrm-sidebar__user { border-top: 1px solid var(--pws-bordo); padding-top: 12px; margin-top: 6px; display: flex; flex-direction: column; gap: 8px; }
.pwscrm-app .pwscrm-sidebar__name { font-weight: 600; font-size: .85rem; color: var(--pws-muted); padding: 0 4px; }

.pwscrm-app .pwscrm-main-col { flex: 1; min-width: 0; display: flex; flex-direction: column; }

/* Appbar: visibile solo in off-canvas (mobile). */
.pwscrm-app .pwscrm-appbar { display: none; }
.pwscrm-app .pwscrm-appbar__toggle { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: var(--pws-radius); cursor: pointer; color: var(--pws-blu); }
.pwscrm-app .pwscrm-appbar__toggle:hover { background: var(--pws-bg); }
.pwscrm-app .pwscrm-appbar__bars { display: block; width: 20px; height: 2px; background: currentColor; position: relative; }
.pwscrm-app .pwscrm-appbar__bars::before,
.pwscrm-app .pwscrm-appbar__bars::after { content: ""; display: block; width: 20px; height: 2px; background: currentColor; position: absolute; left: 0; }
.pwscrm-app .pwscrm-appbar__bars::before { top: -6px; }
.pwscrm-app .pwscrm-appbar__bars::after { top: 6px; }
.pwscrm-app .pwscrm-appbar__logo { max-height: 30px; width: auto; }
.pwscrm-app .pwscrm-appbar__brandtext { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; color: var(--pws-blu); }

/* Toggle nascosta + backdrop (attivi solo in off-canvas). */
.pwscrm-app .pwscrm-shell__backdrop { display: none; }

/* Focus visibile sugli elementi interattivi del guscio. */
.pwscrm-app .pwscrm-sidebar__link:focus-visible,
.pwscrm-app .pwscrm-sidebar__summary:focus-visible,
.pwscrm-app .pwscrm-sidebar__sublink:focus-visible,
.pwscrm-app .pwscrm-appbar__toggle:focus-visible { outline: 2px solid var(--pws-arancio); outline-offset: 2px; }

/* --- Off-canvas: sidebar a scomparsa sotto i 900px --- */
@media (max-width: 900px) {
	.pwscrm-app .pwscrm-appbar { display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: var(--pws-card); border-bottom: 1px solid var(--pws-bordo); }
	.pwscrm-app .pwscrm-sidebar {
		position: fixed;
		top: 0;
		left: 0;
		bottom: 0;
		height: 100%;
		z-index: 60;
		transform: translateX(-100%);
		transition: transform .25s ease;
		box-shadow: var(--pws-shadow);
	}
	.pwscrm-app .pwscrm-shell__toggle:checked ~ .pwscrm-sidebar { transform: none; }
	.pwscrm-app .pwscrm-shell__backdrop { position: fixed; inset: 0; z-index: 50; background: rgba(18, 33, 66, .4); }
	.pwscrm-app .pwscrm-shell__toggle:checked ~ .pwscrm-shell__backdrop { display: block; }
}
@media (prefers-reduced-motion: reduce) {
	.pwscrm-app .pwscrm-sidebar { transition: none; }
	.pwscrm-app .pwscrm-sidebar__summary::after { transition: none; }
}

/* =========================================================================
   Stage 2 — Blocco Controllo Finanziario in home: banner, chips KPI,
   grafici A/B/C (barre colorate) e Aging (barra stacked). Palette PWS.
   ========================================================================= */
.pwscrm-app .pwscrm-alert--warn { background: #fff4d6; color: #8a6100; }
.pwscrm-app .pwscrm-alert--info { background: #e7f0ff; color: var(--pws-blu); }

.pwscrm-app .pwscrm-list { margin: 0 0 4px; padding-left: 20px; }
.pwscrm-app .pwscrm-list li { margin: 5px 0; }

.pwscrm-app .pwscrm-h3 { font-family: "Bricolage Grotesque", "Poppins", sans-serif; font-weight: 700; color: var(--pws-blu); font-size: 1.05rem; margin: 0; }

.pwscrm-app .pwscrm-chips--kpi { margin-top: 12px; }

/* Griglia dei due grafici CF: A/B/C stretto, Aging largo. */
.pwscrm-app .pwscrm-cf-charts { display: grid; grid-template-columns: 1fr 2fr; gap: 20px; align-items: start; }

/* Barre A/B/C: riuso .pwscrm-chart, colori semantici coerenti coi badge margine. */
.pwscrm-app .pwscrm-chart__bar--a { fill: var(--pws-ok-tx); }
.pwscrm-app .pwscrm-chart__bar--a:hover { fill: #17532c; }
.pwscrm-app .pwscrm-chart__bar--b { fill: var(--pws-arancio-scuro); }
.pwscrm-app .pwscrm-chart__bar--b:hover { fill: #b8690f; }
.pwscrm-app .pwscrm-chart__bar--c { fill: #a12626; }
.pwscrm-app .pwscrm-chart__bar--c:hover { fill: #831c1c; }
.pwscrm-app .pwscrm-chart__clabel { fill: var(--pws-testo); font-family: "Bricolage Grotesque", sans-serif; font-weight: 700; font-size: 14px; }

/* Aging: barra orizzontale stacked + legenda. */
.pwscrm-app .pwscrm-aging { background: var(--pws-card); border: 1px solid var(--pws-bordo); border-radius: var(--pws-radius); box-shadow: var(--pws-shadow); padding: 12px 14px; }
.pwscrm-app .pwscrm-aging svg { width: 100%; height: auto; display: block; }
.pwscrm-app .pwscrm-aging__track { fill: var(--pws-bg); }
.pwscrm-app .pwscrm-seg--inc { fill: var(--pws-ok-tx); }
.pwscrm-app .pwscrm-seg--open { fill: var(--pws-blu); }
.pwscrm-app .pwscrm-seg--late { fill: #a12626; }
.pwscrm-app .pwscrm-aging__legend { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; }
.pwscrm-app .pwscrm-aging__item { display: inline-flex; align-items: center; gap: 7px; font-size: .9rem; }
.pwscrm-app .pwscrm-aging__dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; flex: 0 0 auto; }
.pwscrm-app .pwscrm-aging__dot--inc { background: var(--pws-ok-tx); }
.pwscrm-app .pwscrm-aging__dot--open { background: var(--pws-blu); }
.pwscrm-app .pwscrm-aging__dot--late { background: #a12626; }
.pwscrm-app .pwscrm-aging__val { font-weight: 700; }
.pwscrm-app .pwscrm-aging__cap { color: var(--pws-muted); }

@media (max-width: 720px) {
	.pwscrm-app .pwscrm-cf-charts { grid-template-columns: 1fr; }
}

/* =========================================================================
   Stage 3 — Refresh estetico (ispirazione Hope UI, palette PWS).
   Card morbide con chip-icona, sidebar con icone, chip rifiniti, appbar.
   Ultimo in cascata: rifinisce/override le regole precedenti.
   ========================================================================= */

/* Fix etichette A/B/C: font piccolo (unità viewBox) + seconda riga descrittiva. */
.pwscrm-app .pwscrm-chart__clabel { font-size: 13px; font-weight: 700; }
.pwscrm-app .pwscrm-chart__clabel--desc { font-size: 10px; font-weight: 500; fill: var(--pws-muted); }

/* --- Card KPI con chip-icona --- */
.pwscrm-app .pwscrm-cards { gap: 16px; }
.pwscrm-app .pwscrm-card {
	display: grid;
	grid-template-columns: auto 1fr;
	grid-template-rows: auto auto;
	column-gap: 14px;
	align-items: center;
	border: 1px solid var(--pws-bordo);
	border-radius: 16px;
	box-shadow: 0 1px 2px rgba(18, 33, 66, .05);
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.pwscrm-app .pwscrm-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(18, 33, 66, .10);
	border-color: #d3ddf0;
}
.pwscrm-app .pwscrm-card__ico {
	grid-row: 1 / 3;
	width: 46px;
	height: 46px;
	border-radius: 13px;
	background: rgba(33, 80, 173, .10);
	color: var(--pws-blu);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
}
.pwscrm-app .pwscrm-card__ico svg { width: 24px; height: 24px; display: block; }
.pwscrm-app .pwscrm-card__num { grid-column: 2; }
.pwscrm-app .pwscrm-card__label { grid-column: 2; }

/* --- Chip rifiniti --- */
.pwscrm-app .pwscrm-chip {
	border-radius: 13px;
	border: 1px solid var(--pws-bordo);
	transition: box-shadow .18s ease, transform .18s ease;
}
.pwscrm-app .pwscrm-chip:hover { box-shadow: 0 4px 12px rgba(18, 33, 66, .07); }
.pwscrm-app .pwscrm-chips--kpi .pwscrm-chip--total { border-left: 3px solid var(--pws-arancio); }

/* --- Sidebar con icone --- */
.pwscrm-app .pwscrm-sidebar__nav { gap: 3px; }
.pwscrm-app .pwscrm-sidebar__link,
.pwscrm-app .pwscrm-sidebar__summary { display: flex; align-items: center; gap: 11px; transition: background .15s ease, color .15s ease; }
.pwscrm-app .pwscrm-sidebar__ico { width: 20px; height: 20px; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; }
.pwscrm-app .pwscrm-sidebar__ico svg { width: 20px; height: 20px; display: block; }
.pwscrm-app .pwscrm-sidebar__txt { flex: 1; min-width: 0; }
.pwscrm-app .pwscrm-sidebar__count {
	flex: 0 0 auto;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: 999px;
	background: #ed9432;
	color: #fff;
	font-size: 11px;
	line-height: 18px;
	font-weight: 700;
	text-align: center;
}
.pwscrm-app .pwscrm-sidebar__link.is-active .pwscrm-sidebar__count { background: #fff; color: #ed9432; }
.pwscrm-app .pwscrm-sidebar__link.is-active { box-shadow: 0 4px 12px rgba(33, 80, 173, .22); }
/* Reel: sotto-voce di FASK (indentata, icona più piccola) invece di una voce
   di primo livello a se' stante. */
.pwscrm-app .pwscrm-sidebar__link--sub { padding-left: 30px; font-size: 0.92em; }
.pwscrm-app .pwscrm-sidebar__link--sub .pwscrm-sidebar__ico,
.pwscrm-app .pwscrm-sidebar__link--sub .pwscrm-sidebar__ico svg { width: 16px; height: 16px; }
/* La freccetta del sotto-gruppo va spinta a destra (icona + testo a sinistra). */
.pwscrm-app .pwscrm-sidebar__summary { justify-content: flex-start; }
.pwscrm-app .pwscrm-sidebar__summary::after { margin-left: auto; }
.pwscrm-app .pwscrm-sidebar__sub { margin-left: 6px; }

/* --- Appbar (mobile): rifinitura --- */
.pwscrm-app .pwscrm-appbar { box-shadow: 0 1px 2px rgba(18, 33, 66, .05); }

/* Sezioni: spaziatura più ariosa. */
.pwscrm-app .pwscrm-section { margin-top: 28px; }

@media (prefers-reduced-motion: reduce) {
	.pwscrm-app .pwscrm-card,
	.pwscrm-app .pwscrm-chip,
	.pwscrm-app .pwscrm-sidebar__link,
	.pwscrm-app .pwscrm-sidebar__summary { transition: none; }
	.pwscrm-app .pwscrm-card:hover { transform: none; }
}

/* =========================================================================
   Stage 4 — Rifinitura ispirata a Sneat (re-implementata in CSS nostro,
   palette PWS, zero dipendenze): elevazione più morbida, stat card con
   sub-line, badge icona colorati, caption di sezione in sidebar, spaziatura.
   ========================================================================= */

/* Elevazione più morbida e diffusa. */
.pwscrm-app .pwscrm-card,
.pwscrm-app .pwscrm-chip,
.pwscrm-app .pwscrm-chart,
.pwscrm-app .pwscrm-aging { box-shadow: 0 2px 8px rgba(18, 33, 66, .06); }

/* Spaziatura più ariosa. */
.pwscrm-app .pwscrm-cards { gap: 18px; }
.pwscrm-app .pwscrm-section { margin-top: 32px; }
.pwscrm-app .pwscrm-chips { gap: 12px; }

/* --- Stat card: numero forte, label, sub-line, icona in badge colorato --- */
.pwscrm-app .pwscrm-card {
	grid-template-rows: auto auto auto;
	column-gap: 16px;
	row-gap: 1px;
	padding: 18px 20px;
	border-radius: 18px;
	align-items: center;
}
.pwscrm-app .pwscrm-card__ico { grid-row: 1 / 4; width: 50px; height: 50px; border-radius: 14px; }
.pwscrm-app .pwscrm-card__ico svg { width: 26px; height: 26px; }
.pwscrm-app .pwscrm-card__num { grid-column: 2; font-size: 1.9rem; font-weight: 800; line-height: 1.1; }
.pwscrm-app .pwscrm-card__label { grid-column: 2; color: var(--pws-muted); font-weight: 600; }
.pwscrm-app .pwscrm-card__sub { grid-column: 2; font-size: .82rem; font-weight: 600; color: var(--pws-blu); margin-top: 3px; }

/* Badge icona colorati per card (accento su card chiave). */
.pwscrm-app .pwscrm-card__ico--blu { background: rgba(33, 80, 173, .10); color: var(--pws-blu); }
.pwscrm-app .pwscrm-card__ico--verde { background: rgba(30, 107, 58, .12); color: var(--pws-ok-tx); }
.pwscrm-app .pwscrm-card__ico--arancio { background: rgba(237, 148, 50, .15); color: var(--pws-arancio-scuro); }

/* Chip un filo più morbidi e ariosi. */
.pwscrm-app .pwscrm-chip { border-radius: 14px; padding: 12px 15px; }

/* --- Sidebar: caption di sezione (stile Sneat) --- */
.pwscrm-app .pwscrm-sidebar__cap {
	display: block;
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--pws-muted);
	padding: 6px 12px 4px;
	margin-top: 8px;
}
.pwscrm-app .pwscrm-sidebar__nav > .pwscrm-sidebar__cap:first-child { margin-top: 0; padding-top: 2px; }

/* =========================================================================
   Pannello collassabile (details/summary nativo) — usato per "Indicatori
   d'esercizio": header cliccabile con chevron, corpo che si apre.
   No-JS, tastiera, palette PWS.
   ========================================================================= */
.pwscrm-app .pwscrm-panel {
	background: var(--pws-card);
	border: 1px solid var(--pws-bordo);
	border-radius: 16px;
	box-shadow: 0 2px 8px rgba(18, 33, 66, .06);
	overflow: hidden;
}
.pwscrm-app .pwscrm-panel__head {
	list-style: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 16px 20px;
	font-family: "Bricolage Grotesque", "Poppins", sans-serif;
	font-weight: 700;
	color: var(--pws-blu);
	font-size: 1.15rem;
	transition: background .15s ease;
}
.pwscrm-app .pwscrm-panel__head::-webkit-details-marker { display: none; }
.pwscrm-app .pwscrm-panel__head:hover { background: var(--pws-bg); }
.pwscrm-app .pwscrm-panel__title { flex: 1; min-width: 0; }
.pwscrm-app .pwscrm-panel__head::after {
	content: "";
	width: 9px;
	height: 9px;
	flex: 0 0 auto;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform .2s ease;
	opacity: .6;
}
.pwscrm-app .pwscrm-panel[open] > .pwscrm-panel__head::after { transform: rotate(-135deg); }
.pwscrm-app .pwscrm-panel__head:focus-visible { outline: 2px solid var(--pws-arancio); outline-offset: -2px; }
.pwscrm-app .pwscrm-panel__body { padding: 2px 20px 20px; }
@media (prefers-reduced-motion: reduce) {
	.pwscrm-app .pwscrm-panel__head,
	.pwscrm-app .pwscrm-panel__head::after { transition: none; }
}

/* Colonna destra dei grafici CF: Aging + tab (Indicatori, Consigli). */
.pwscrm-app .pwscrm-cf-side { display: flex; flex-direction: column; gap: 20px; min-width: 0; }

/* =========================================================================
   Rifiniture 4.19.0 — delta YoY (D3), icone sui chip (D4), banner con X (D5).
   ========================================================================= */
.pwscrm-app .pwscrm-delta {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	font-size: .72rem;
	font-weight: 700;
	padding: 1px 6px;
	border-radius: 999px;
	vertical-align: middle;
	margin-left: 5px;
	white-space: nowrap;
}
.pwscrm-app .pwscrm-delta--up { color: var(--pws-ok-tx); background: rgba(30, 107, 58, .10); }
.pwscrm-app .pwscrm-delta--down { color: #a12626; background: #fdecec; }
.pwscrm-app .pwscrm-card__num .pwscrm-delta { font-size: .8rem; }

.pwscrm-app .pwscrm-chip__ico {
	width: 28px;
	height: 28px;
	border-radius: 8px;
	background: rgba(33, 80, 173, .09);
	color: var(--pws-blu);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
}
.pwscrm-app .pwscrm-chip__ico svg { width: 16px; height: 16px; display: block; }

.pwscrm-app .pwscrm-alert--dismissible { position: relative; padding-right: 44px; }
.pwscrm-app .pwscrm-alert__close {
	position: absolute;
	top: 10px;
	right: 12px;
	width: 26px;
	height: 26px;
	border: 0;
	background: transparent;
	color: inherit;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	opacity: .6;
	border-radius: 7px;
}
.pwscrm-app .pwscrm-alert__close:hover { opacity: 1; background: rgba(0, 0, 0, .06); }
.pwscrm-app .pwscrm-alert__close:focus-visible { outline: 2px solid var(--pws-arancio); outline-offset: 1px; opacity: 1; }

/* Scheda «Comunicazioni» nella vista anagrafica (kickoff 1.8.0 Blocco B). */
.pwscrm-anag-com__stato { margin-top: 0.75rem; color: var(--pws-muted); font-size: 0.9rem; }
.pwscrm-anag-com__lista { list-style: none; margin: 0.75rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.4rem; }
.pwscrm-anag-com__voce { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem 0.75rem; border: 1px solid var(--pws-bordo); border-radius: 8px; font-size: 0.9rem; background: var(--pws-card); }
.pwscrm-anag-com__direzione { flex: 0 0 auto; font-size: 0.75rem; font-weight: 600; color: var(--pws-blu); text-transform: uppercase; }
.pwscrm-anag-com__oggetto { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwscrm-anag-com__data { flex: 0 0 auto; color: var(--pws-muted); font-size: 0.82rem; white-space: nowrap; }

/* ---------- Modale generica (.pwscrm-modal*) ---------- */
/* Promossa da calendario.css (era l'unico foglio a definirla, ma la vista
   Newsletter riusa lo stesso markup senza caricare quel foglio: le sue
   modali comparivano come contenuto inline non stilato in fondo alla
   pagina). Qui e' condivisa da tutte le viste CRM. Blocco spostato
   byte-identico (stesse regole, stesso ordine) da calendario.css. */
.pwscrm-modal[hidden] {
	display: none;
}

.pwscrm-modal {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
}

.pwscrm-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(15, 23, 42, 0.5);
}

.pwscrm-modal__panel {
	position: relative;
	width: 100%;
	max-width: 460px;
	background: #fff;
	border-radius: 14px;
	padding: 22px;
	box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
	max-height: 90vh;
	overflow: auto;
}

.pwscrm-modal__title {
	margin: 0 0 14px;
	font-family: "Bricolage Grotesque", system-ui, sans-serif;
	font-size: 1.25rem;
	color: #2150ad;
}

.pwscrm-modal__field {
	display: block;
	margin-bottom: 12px;
}

.pwscrm-modal__field > span {
	display: block;
	font-size: 0.82rem;
	font-weight: 600;
	margin-bottom: 4px;
	color: #2a3242;
}

.pwscrm-modal__field input,
.pwscrm-modal__field select,
.pwscrm-modal__field textarea {
	width: 100%;
	box-sizing: border-box;
	padding: 8px 10px;
	border: 1px solid #cbd2e0;
	border-radius: 8px;
	font: inherit;
}

.pwscrm-modal__check {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 12px;
	font-size: 0.9rem;
}

.pwscrm-modal__colors {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.pwscrm-modal__msg {
	margin: 6px 0 12px;
	padding: 8px 10px;
	border-radius: 8px;
	background: #fdecea;
	color: #b02a1a;
	font-size: 0.85rem;
}

.pwscrm-modal__actions {
	display: flex;
	justify-content: flex-end;
	gap: 8px;
	flex-wrap: wrap;
}

.pwscrm-modal__actions .js-elimina {
	margin-right: auto;
}

.pwscrm-modal__nota {
	display: block;
	margin-top: 4px;
	font-size: 0.78rem;
	color: #6b7280;
}

.pwscrm-modal__field select:disabled {
	opacity: 0.6;
}

/* La modale è montata fuori da .pwscrm-app, dove le variabili --pws-* NON sono
   definite: i bottoni che le usano (soprattutto --primary/Salva: sfondo
   var(--pws-arancio) + testo bianco) risulterebbero invisibili. Forzo i colori
   di brand in modo esplicito, con scope limitato alla modale. */
.pwscrm-modal .pwscrm-btn--primary {
	background: #ed9432;
	border-color: #ed9432;
	color: #fff;
}

.pwscrm-modal .pwscrm-btn--primary:hover {
	background: #d97e1f;
	border-color: #d97e1f;
}

.pwscrm-modal .pwscrm-btn--ghost {
	background: #fff;
	border-color: #cbd2e0;
	color: #2150ad;
}

.pwscrm-modal .js-meet-link {
	display: inline-block;
	word-break: break-all;
	color: #2150ad;
}

/* La modale è montata fuori da .pwscrm-app: senza questo, eredita il font di
   default del browser (Times New Roman) e i campi form non ereditano affatto.
   Impongo il font del tema alla modale e ai controlli. */
.pwscrm-modal {
	font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

.pwscrm-modal input,
.pwscrm-modal select,
.pwscrm-modal textarea,
.pwscrm-modal button {
	font-family: inherit;
}

.pwscrm-modal__radio {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-right: 14px;
	font-size: 0.9rem;
}
