/* PM Bilancio Familiare – frontend. Colori di marca da Impostazioni (variabili --pmbf-brand / --pmbf-accent). */
.pmbf {
	--pmbf-brand: #4b4fa6;
	--pmbf-accent: #a8473f;
	--pmbf-ok: #2e8b57;
	--pmbf-warn: #c47f00;
	--pmbf-bad: #c0392b;
	--pmbf-na: #8a8f98;
	--pmbf-liq: #2f6db3;
	--pmbf-debt: #c0603a;
	--pmbf-perf: #2f9e6a;
	--pmbf-text: #1f2430;
	--pmbf-muted: #6b7280;
	--pmbf-line: #e2e5ec;
	--pmbf-soft: #f3f4fa;
	--pmbf-bg: #ffffff;
	--pmbf-radius: 10px;
	color: var(--pmbf-text);
	font-size: 15px;
	line-height: 1.45;
	max-width: 1280px;
	margin: 0 auto;
}
.pmbf *, .pmbf *::before, .pmbf *::after { box-sizing: border-box; }
.pmbf h2 { margin: 0 0 .2em; font-size: 1.6em; color: var(--pmbf-brand); }
.pmbf h3 { margin: 0 0 .6em; font-size: 1.12em; color: var(--pmbf-brand); }
.pmbf h4 { margin: .8em 0 .4em; font-size: 1em; }
.pmbf-muted { color: var(--pmbf-muted); }
.pmbf-small { font-size: .86em; }
.pmbf-neg { color: var(--pmbf-bad) !important; }
.pmbf-pos { color: var(--pmbf-ok) !important; }
.pmbf a { color: var(--pmbf-brand); }

/* Pulsanti */
.pmbf-btn { display: inline-flex; align-items: center; gap: .4em; padding: .55em 1em; border: 1px solid var(--pmbf-line); border-radius: 8px; background: #fff; color: var(--pmbf-text) !important; font: inherit; font-size: .93em; text-decoration: none !important; cursor: pointer; line-height: 1.2; white-space: nowrap; }
.pmbf-btn:hover { border-color: var(--pmbf-brand); }
.pmbf-btn:focus-visible, .pmbf input:focus-visible, .pmbf select:focus-visible, .pmbf textarea:focus-visible { outline: 2px solid var(--pmbf-brand); outline-offset: 1px; }
.pmbf-btn-primary { background: var(--pmbf-brand); border-color: var(--pmbf-brand); color: #fff !important; }
.pmbf-btn-primary:hover { filter: brightness(1.08); }
.pmbf-btn-danger { color: var(--pmbf-bad) !important; border-color: #f0c9c4; }
.pmbf-btn-small { padding: .35em .7em; font-size: .85em; }
.pmbf-btn[disabled] { opacity: .55; cursor: wait; }
.pmbf-btn-google { width: 100%; justify-content: center; padding: .75em; font-weight: 600; }
.pmbf-link-btn { background: none; border: 0; cursor: pointer; font-size: 1.1em; padding: 0 .3em; color: var(--pmbf-muted); }
.pmbf-danger { color: var(--pmbf-bad) !important; }

/* Moduli */
.pmbf-field { display: flex; flex-direction: column; gap: .25em; margin: 0 0 .8em; font-size: .92em; }
.pmbf-field > span { font-weight: 600; color: var(--pmbf-text); }
.pmbf-field small { color: var(--pmbf-muted); font-size: .85em; }
.pmbf input[type=text], .pmbf input[type=email], .pmbf input[type=password], .pmbf input[type=number], .pmbf input[type=date], .pmbf input[type=month], .pmbf input[type=search], .pmbf select, .pmbf textarea {
	width: 100%; padding: .5em .6em; border: 1px solid #cfd3dc; border-radius: 7px; background: #fff; font: inherit; font-size: .95em; color: var(--pmbf-text); min-height: 2.4em;
}
.pmbf input[readonly], .pmbf select[disabled], .pmbf textarea[readonly] { background: var(--pmbf-soft); }
.pmbf input.is-invalid { border-color: var(--pmbf-bad); background: #fff3f2; }
.pmbf-check { display: flex; gap: .5em; align-items: flex-start; margin: .3em 0 .8em; font-size: .92em; }
.pmbf-check input { margin-top: .2em; }
.pmbf-inline { flex-direction: row; align-items: center; gap: .5em; margin: 0; }
.pmbf-inline > span { white-space: nowrap; }
.pmbf-inline-form { display: inline; margin: 0; }
.pmbf-actions { display: flex; gap: .7em; align-items: center; flex-wrap: wrap; margin-top: .6em; }
.pmbf-grid-2, .pmbf-grid-3, .pmbf-grid-4 { display: grid; gap: 0 1em; }
.pmbf-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pmbf-grid-3 { grid-template-columns: 2fr 1fr 2fr; }
.pmbf-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pmbf-hp { position: absolute; left: -9999px; }

/* Avvisi */
.pmbf-alert { padding: .7em 1em; border-radius: 8px; margin: 0 0 1em; border-left: 4px solid; background: var(--pmbf-soft); }
.pmbf-alert-ok { border-color: var(--pmbf-ok); background: #eef8f2; }
.pmbf-alert-warn { border-color: var(--pmbf-warn); background: #fff7e6; }
.pmbf-alert-bad { border-color: var(--pmbf-bad); background: #fdf0ee; }
.pmbf-empty { text-align: center; padding: 2em; border: 2px dashed var(--pmbf-line); border-radius: var(--pmbf-radius); margin: 1em 0; }

/* Accesso */
.pmbf-auth { max-width: 440px; margin: 2em auto; padding: 1.8em; border: 1px solid var(--pmbf-line); border-radius: 14px; background: #fff; box-shadow: 0 6px 24px rgba(30, 35, 60, .06); }
.pmbf-auth-head p { color: var(--pmbf-muted); font-size: .92em; }
.pmbf-or { display: flex; align-items: center; gap: .8em; color: var(--pmbf-muted); margin: 1em 0; font-size: .85em; }
.pmbf-or::before, .pmbf-or::after { content: ""; flex: 1; border-top: 1px solid var(--pmbf-line); }
.pmbf-tabs { display: flex; gap: .3em; margin-bottom: 1em; border-bottom: 1px solid var(--pmbf-line); }
.pmbf-tab { background: none; border: 0; border-bottom: 3px solid transparent; padding: .5em .8em; cursor: pointer; font: inherit; color: var(--pmbf-muted); }
.pmbf-tab.is-active { color: var(--pmbf-brand); border-color: var(--pmbf-brand); font-weight: 600; }

/* Struttura */
.pmbf-crumbs { display: flex; flex-wrap: wrap; gap: .3em; align-items: center; font-size: .85em; color: var(--pmbf-muted); margin-bottom: 1em; }
.pmbf-crumbs-user { margin-left: auto; }
.pmbf-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1em; flex-wrap: wrap; margin-bottom: 1.2em; padding-bottom: .8em; border-bottom: 3px solid var(--pmbf-accent); }
.pmbf-head p { margin: 0; }
.pmbf-head-actions, .pmbf-revbar-actions { display: flex; gap: .5em; flex-wrap: wrap; }
.pmbf-revbar { display: flex; gap: .8em; align-items: center; flex-wrap: wrap; margin-bottom: 1em; padding: .7em; background: var(--pmbf-soft); border-radius: var(--pmbf-radius); }
.pmbf-revbar-actions { margin-left: auto; }
.pmbf-layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 1.2em; align-items: start; }
.pmbf-main, .pmbf-side { min-width: 0; }
.pmbf-sticky { position: sticky; top: 1em; }
.pmbf-panel { background: #fff; border: 1px solid var(--pmbf-line); border-radius: var(--pmbf-radius); padding: 1.1em 1.2em; margin-bottom: 1.2em; }
.pmbf-panel-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1em; flex-wrap: wrap; }
.pmbf-filters { display: flex; gap: 1em; align-items: center; flex-wrap: wrap; margin-bottom: 1em; }
.pmbf-pager { display: flex; gap: .4em; margin: 1em 0; }
.pmbf-pager a, .pmbf-pager span { padding: .3em .7em; border: 1px solid var(--pmbf-line); border-radius: 6px; text-decoration: none; }
.pmbf-pager .is-current { background: var(--pmbf-brand); color: #fff; }

/* Schede bilanci */
.pmbf-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 1em; }
.pmbf-card { border: 1px solid var(--pmbf-line); border-radius: var(--pmbf-radius); padding: 1em; background: #fff; display: flex; flex-direction: column; gap: .5em; }
.pmbf-card header { display: flex; justify-content: space-between; align-items: flex-start; gap: .5em; }
.pmbf-card h3 { margin: 0; font-size: 1.05em; }
.pmbf-card h3 a { text-decoration: none; }
.pmbf-card p { margin: 0; }
.pmbf-card footer { margin-top: auto; display: flex; gap: .5em; }
.pmbf-score { display: inline-grid; place-items: center; width: 2.4em; height: 2.4em; border-radius: 50%; font-weight: 700; color: #fff; flex: none; }
.pmbf-score-ok { background: var(--pmbf-ok); }
.pmbf-score-warn { background: var(--pmbf-warn); }
.pmbf-score-bad { background: var(--pmbf-bad); }
.pmbf-mini { display: grid; grid-template-columns: 1fr 1fr; gap: .5em; margin: 0; }
.pmbf-mini dt { font-size: .78em; color: var(--pmbf-muted); }
.pmbf-mini dd { margin: 0; font-weight: 700; }

/* KPI */
.pmbf-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .8em; margin-bottom: 1.2em; }
.pmbf-kpi { background: var(--pmbf-soft); border-radius: var(--pmbf-radius); padding: .8em 1em; border-left: 4px solid var(--pmbf-brand); }
.pmbf-kpi-accent { border-color: var(--pmbf-accent); }
.pmbf-kpi span { display: block; font-size: .8em; color: var(--pmbf-muted); }
.pmbf-kpi strong { font-size: 1.3em; }

/* Personal Financial Statement (stile slide) */
.pmbf-pfs { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2em; }
.pmbf-pfs-table { width: 100%; border-collapse: collapse; font-size: .93em; }
.pmbf-pfs-table caption { text-align: left; color: #fff; background: var(--pmbf-brand); padding: .55em .8em; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; font-size: .9em; }
.pmbf-pfs-ce caption { background: var(--pmbf-accent); }
.pmbf-pfs-table th, .pmbf-pfs-table td { padding: .42em .8em; border-bottom: 1px solid var(--pmbf-line); text-align: left; font-weight: 400; vertical-align: top; }
.pmbf-pfs-table td { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.pmbf-pfs-table .pmbf-band th { background: #e6e8f5; color: var(--pmbf-brand); font-weight: 700; text-transform: uppercase; font-size: .85em; }
.pmbf-pfs-ce .pmbf-band th { background: #f6e5e3; color: var(--pmbf-accent); }
.pmbf-pfs-table .pmbf-sub th, .pmbf-pfs-table .pmbf-sub td { color: var(--pmbf-muted); font-weight: 600; }
.pmbf-pfs-table .pmbf-total th, .pmbf-pfs-table .pmbf-total td { font-weight: 700; background: var(--pmbf-soft); border-top: 2px solid var(--pmbf-line); }
.pmbf-pfs-table .pmbf-total td { color: var(--pmbf-ok); font-size: 1.08em; }
.pmbf-note { display: block; color: var(--pmbf-muted); font-style: italic; font-size: .85em; }

/* Ratio Analysis */
.pmbf-ratios { display: grid; grid-template-columns: 1fr 1fr; gap: 1em; }
.pmbf-ratio { --g: var(--pmbf-liq); background: color-mix(in srgb, var(--g) 7%, #fff); border-left: 5px solid var(--g); border-radius: var(--pmbf-radius); padding: .9em 1em; }
.pmbf-g-debt { --g: var(--pmbf-debt); }
.pmbf-g-perf { --g: var(--pmbf-perf); }
.pmbf-ratio header { display: flex; justify-content: space-between; align-items: center; }
.pmbf-tag { background: color-mix(in srgb, var(--g) 18%, #fff); color: var(--g); font-size: .72em; font-weight: 700; padding: .15em .6em; border-radius: 4px; text-transform: uppercase; }
.pmbf-ratio h4 { margin: .5em 0 0; color: var(--pmbf-text); }
.pmbf-ratio h4 small { display: block; font-weight: 400; color: var(--pmbf-muted); font-size: .8em; }
.pmbf-formula { font-style: italic; margin: .2em 0; font-size: .88em; color: var(--pmbf-muted); }
.pmbf-ratio-value { display: flex; justify-content: space-between; align-items: baseline; gap: .5em; flex-wrap: wrap; }
.pmbf-ratio-value strong { font-size: 1.6em; }
.pmbf-ratio-value span { font-size: .82em; font-weight: 600; color: var(--g); }
.pmbf-ratio-msg { font-size: .88em; margin: .5em 0 .2em; }
.pmbf-ratios.is-compact .pmbf-ratio-value strong { font-size: 1.25em; }
.pmbf-pill { display: inline-block; font-size: .72em; font-weight: 700; padding: .2em .7em; border-radius: 999px; background: #eceef3; color: var(--pmbf-na); }
.pmbf-pill.pmbf-st-ok { background: #e2f3ea; color: var(--pmbf-ok); }
.pmbf-pill.pmbf-st-warn { background: #fdf0d5; color: var(--pmbf-warn); }
.pmbf-pill.pmbf-st-bad { background: #fadcd8; color: var(--pmbf-bad); }
strong.pmbf-st-ok, .pmbf-score-text.pmbf-st-ok { color: var(--pmbf-ok); }
strong.pmbf-st-warn, .pmbf-score-text.pmbf-st-warn { color: var(--pmbf-warn); }
strong.pmbf-st-bad, .pmbf-score-text.pmbf-st-bad { color: var(--pmbf-bad); }
strong.pmbf-st-na { color: var(--pmbf-na); }
.pmbf-gauge { margin: .5em 0; }
.pmbf-gauge-track { position: relative; height: 8px; background: #e4e7ee; border-radius: 4px; }
.pmbf-gauge-zone { position: absolute; top: 0; bottom: 0; background: color-mix(in srgb, var(--pmbf-ok) 45%, #fff); border-radius: 4px; }
.pmbf-gauge-mark { position: absolute; top: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: 50%; background: var(--pmbf-na); border: 3px solid #fff; box-shadow: 0 0 0 1px rgba(0, 0, 0, .15); }
.pmbf-gauge-mark.pmbf-st-ok { background: var(--pmbf-ok); }
.pmbf-gauge-mark.pmbf-st-warn { background: var(--pmbf-warn); }
.pmbf-gauge-mark.pmbf-st-bad { background: var(--pmbf-bad); }

/* Riepilogo laterale */
.pmbf-sum-list { margin: 0; }
.pmbf-sum-list > div { display: flex; justify-content: space-between; gap: .5em; padding: .3em 0; border-bottom: 1px dotted var(--pmbf-line); font-size: .92em; }
.pmbf-sum-list dt { color: var(--pmbf-muted); }
.pmbf-sum-list dd { margin: 0; font-variant-numeric: tabular-nums; }
.pmbf-sum-list .is-strong dt, .pmbf-sum-list .is-strong dd { color: var(--pmbf-text); font-weight: 700; }
.pmbf-sum-ratios { list-style: none; margin: 0; padding: 0; font-size: .9em; }
.pmbf-sum-ratios li { display: flex; align-items: center; gap: .5em; padding: .3em 0; border-bottom: 1px dotted var(--pmbf-line); }
.pmbf-sum-ratios strong { margin-left: auto; text-align: right; }
.pmbf-dot { width: .7em; height: .7em; border-radius: 50%; background: var(--pmbf-na); flex: none; }
.pmbf-dot.pmbf-st-ok { background: var(--pmbf-ok); }
.pmbf-dot.pmbf-st-warn { background: var(--pmbf-warn); }
.pmbf-dot.pmbf-st-bad { background: var(--pmbf-bad); }
.pmbf-sum-score { display: flex; justify-content: space-between; margin: .8em 0 0; font-weight: 600; }
.pmbf-savebar { display: flex; justify-content: space-between; align-items: center; gap: .5em; }
.pmbf-status { font-size: .85em; color: var(--pmbf-muted); }
.pmbf-status.is-ok { color: var(--pmbf-ok); }
.pmbf-status.is-warn { color: var(--pmbf-warn); }
.pmbf-status.is-bad { color: var(--pmbf-bad); }

/* Editor */
.pmbf-sec { border-top: 4px solid var(--pmbf-brand); }
.pmbf-sec-liability { border-top-color: var(--pmbf-debt); }
.pmbf-sec-income { border-top-color: var(--pmbf-ok); }
.pmbf-sec-expense { border-top-color: var(--pmbf-accent); }
.pmbf-sec-total { float: right; font-size: .85em; color: var(--pmbf-text); font-weight: 600; }
.pmbf-row { border: 1px solid var(--pmbf-line); border-radius: 8px; margin-bottom: .5em; background: #fff; }
.pmbf-row.is-changed { border-color: var(--pmbf-warn); box-shadow: inset 4px 0 0 var(--pmbf-warn); }
.pmbf-row.is-new { border-color: var(--pmbf-ok); box-shadow: inset 4px 0 0 var(--pmbf-ok); }
.pmbf-row-main { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1.7fr) 8em 8.5em minmax(5em, auto) auto; gap: .4em; align-items: center; padding: .45em; }
.pmbf-row-main .pmbf-amount { text-align: right; font-variant-numeric: tabular-nums; }
.pmbf-row-annual { font-size: .78em; color: var(--pmbf-muted); text-align: right; white-space: nowrap; }
.pmbf-row-tools { display: flex; gap: .15em; }
.pmbf-icon-btn { border: 1px solid transparent; background: none; border-radius: 6px; width: 1.9em; height: 1.9em; cursor: pointer; color: var(--pmbf-muted); font-size: 1em; line-height: 1; }
.pmbf-icon-btn:hover { border-color: var(--pmbf-line); color: var(--pmbf-text); }
.pmbf-icon-btn.has-content { color: var(--pmbf-brand); font-weight: 700; }
.pmbf-row-details { padding: .6em .8em .2em; border-top: 1px dashed var(--pmbf-line); background: #fafbfd; border-radius: 0 0 8px 8px; }
.pmbf-attr-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 0 1em; align-items: start; }
.pmbf-add { margin-top: .2em; }
.pmbf-quick-btns { display: flex; flex-wrap: wrap; gap: .5em; margin-bottom: .6em; }
.pmbf-assumptions summary { cursor: pointer; font-weight: 600; margin: .4em 0; }

/* Elenchi laterali */
.pmbf-list { list-style: none; margin: 0; padding: 0; }
.pmbf-list li { display: flex; flex-wrap: wrap; align-items: center; gap: .1em .5em; padding: .45em 0; border-bottom: 1px solid var(--pmbf-line); }
.pmbf-list li small { color: var(--pmbf-muted); width: 100%; order: 3; }
.pmbf-list li form { margin-left: auto; }
.pmbf-list li.is-current > a { font-weight: 700; }
.pmbf-report-list { list-style: none; margin: 0; padding: 0; }
.pmbf-report-list li { display: flex; align-items: center; gap: .5em; padding: .4em 0; border-bottom: 1px solid var(--pmbf-line); }
.pmbf-report-link { display: flex; gap: .7em; align-items: center; text-decoration: none; color: var(--pmbf-text) !important; flex: 1; }
.pmbf-report-link small { display: block; color: var(--pmbf-muted); font-size: .8em; }
.pmbf-pdf-ico { flex: none; background: var(--pmbf-accent); color: #fff; font-size: .7em; font-weight: 700; padding: .5em .45em; border-radius: 4px; }
.pmbf-danger-zone summary { cursor: pointer; color: var(--pmbf-bad); font-size: .9em; }

/* Tabelle */
.pmbf-table-wrap { overflow-x: auto; }
.pmbf-table { width: 100%; border-collapse: collapse; font-size: .9em; }
.pmbf-table th, .pmbf-table td { padding: .45em .6em; border-bottom: 1px solid var(--pmbf-line); text-align: left; }
.pmbf-table thead th { background: var(--pmbf-brand); color: #fff; font-weight: 600; }
.pmbf-table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pmbf-table tbody tr:nth-child(even) { background: var(--pmbf-soft); }
.pmbf-table tbody th { font-weight: 500; }
.pmbf-table.pmbf-compact th, .pmbf-table.pmbf-compact td { padding: .3em .4em; }

/* Grafici */
.pmbf-chart { width: 100%; height: auto; display: block; margin: .5em 0; }
.pmbf-chart .pmbf-grid { stroke: #e3e6ed; stroke-width: 1; }
.pmbf-chart .pmbf-axis { font-size: 11px; fill: var(--pmbf-muted); }
.pmbf-chart .pmbf-legend { font-size: 12px; fill: var(--pmbf-text); }
.pmbf-donut { display: flex; gap: 1.2em; align-items: center; flex-wrap: wrap; }
.pmbf-donut svg { width: 200px; height: 200px; flex: none; }
.pmbf-donut-label { font-size: 11px; fill: var(--pmbf-muted); }
.pmbf-donut-value { font-size: 15px; font-weight: 700; fill: var(--pmbf-text); }
.pmbf-legend-list { list-style: none; margin: 0; padding: 0; font-size: .88em; }
.pmbf-legend-list li { display: flex; align-items: center; gap: .5em; padding: .15em 0; }
.pmbf-legend-list strong { margin-left: auto; padding-left: 1em; }
.pmbf-sw { width: .9em; height: .9em; border-radius: 3px; flex: none; }

/* Analisi AI */
.pmbf-md h2, .pmbf-md h3, .pmbf-md h4 { color: var(--pmbf-brand); font-size: 1.02em; margin: 1em 0 .3em; }
.pmbf-md ul, .pmbf-md ol { padding-left: 1.3em; }

/* Dialoghi */
.pmbf-dialog { border: 0; border-radius: 14px; padding: 1.4em; width: min(560px, 94vw); box-shadow: 0 20px 60px rgba(20, 25, 50, .3); color: var(--pmbf-text); }
.pmbf-dialog::backdrop { background: rgba(20, 25, 50, .45); }
.pmbf-dialog h3 { margin-top: 0; color: var(--pmbf-brand); }


/* Famiglia (profilo) */
.pmbf-fam-row { display: grid; grid-template-columns: 1.4fr 1.2fr 7em 1.4fr auto 1.4fr auto; gap: .5em; align-items: end; padding: .6em; border: 1px solid var(--pmbf-line); border-radius: 8px; margin-bottom: .5em; background: #fafbfd; }
.pmbf-fam-row .pmbf-field, .pmbf-fam-row .pmbf-check { margin: 0; }
.pmbf-fam-row .pmbf-check { padding-bottom: .6em; white-space: nowrap; }

/* Polizza nell'editor */
.pmbf-policy { margin-top: .6em; padding: .8em; border: 1px solid #e8d6d3; border-left: 4px solid var(--pmbf-accent); border-radius: 8px; background: #fff; }
.pmbf-policy h5 { margin: 0 0 .5em; color: var(--pmbf-accent); font-size: 1em; }
.pmbf-policy h6 { margin: .8em 0 .4em; font-size: .9em; }
.pmbf-subj { border: 1px solid var(--pmbf-line); border-radius: 8px; padding: .5em .8em; margin: .4em 0; }
.pmbf-subj legend { font-weight: 600; font-size: .9em; padding: 0 .3em; }
.pmbf-subj-group { display: flex; flex-wrap: wrap; gap: .2em 1em; align-items: center; font-size: .9em; margin: .3em 0; }
.pmbf-inline-check { margin: 0; }
.pmbf-g-row { display: grid; grid-template-columns: 13em minmax(8em, 1fr) minmax(8em, 1.4fr) 7.5em 6em 7em 2em; gap: .3em; margin-bottom: .3em; align-items: center; }
.pmbf-g-head span { font-size: .75em; font-weight: 600; color: var(--pmbf-muted); }
.pmbf-g-row .pmbf-num { text-align: right; }
.pmbf-docs { list-style: none; margin: .3em 0; padding: 0; }
.pmbf-docs li { display: flex; gap: .5em; align-items: center; padding: .2em 0; }
.pmbf-docs a { display: inline-flex; gap: .4em; align-items: center; }
.pmbf-upload { position: relative; overflow: hidden; }
.pmbf-upload .pmbf-file { position: absolute; inset: 0; opacity: 0; cursor: pointer; }

/* Protezione assicurativa */
.pmbf-gaps { list-style: none; margin: 0; padding: 0; }
.pmbf-gap { padding: .45em .6em; border-left: 4px solid var(--pmbf-na); background: var(--pmbf-soft); border-radius: 6px; margin-bottom: .4em; }
.pmbf-sev-bad { border-color: var(--pmbf-bad); background: #fdf0ee; }
.pmbf-sev-warn { border-color: var(--pmbf-warn); background: #fff7e6; }
.pmbf-subjects { display: grid; gap: 1em; }
.pmbf-subject { border: 1px solid var(--pmbf-line); border-radius: var(--pmbf-radius); padding: .8em 1em; border-top: 4px solid var(--pmbf-brand); }
.pmbf-k-asset { border-top-color: var(--pmbf-debt); }
.pmbf-k-household { border-top-color: var(--pmbf-ok); }
.pmbf-subject header { display: flex; gap: .8em; align-items: baseline; flex-wrap: wrap; margin-bottom: .4em; }
.pmbf-subject h4 { margin: 0; }
.pmbf-cov-table th[scope=row] { min-width: 12em; }
.pmbf-policy-card { border: 1px solid var(--pmbf-line); border-radius: var(--pmbf-radius); padding: .8em 1em; margin-bottom: 1em; }
.pmbf-policy-card.is-expired { opacity: .75; border-style: dashed; }
.pmbf-policy-card header { display: flex; justify-content: space-between; gap: 1em; flex-wrap: wrap; }
.pmbf-policy-card h4 { margin: 0; }
.pmbf-total-row th, .pmbf-total-row td { background: var(--pmbf-soft); font-weight: 700; }


/* Successione */
.pmbf-succ-form > summary { cursor: pointer; list-style: none; }
.pmbf-succ-form > summary h3 { display: inline; }
.pmbf-succ-form > summary::before { content: "▸ "; color: var(--pmbf-brand); }
.pmbf-succ-form[open] > summary::before { content: "▾ "; }
.pmbf-own-table input.pmbf-pct { width: 5em; text-align: right; min-height: 2em; padding: .25em .4em; }
.pmbf-own-table tr.is-invalid td, .pmbf-own-table tr.is-invalid th { background: #fdf0ee; }
.pmbf-own-table tr.is-invalid [data-own-third] { color: var(--pmbf-bad); font-weight: 700; }
.pmbf-succ-row { display: grid; grid-template-columns: 1.6fr 1.3fr .7fr 1.2fr .8fr 1.2fr auto; gap: .5em; align-items: end; padding: .6em; border: 1px solid var(--pmbf-line); border-radius: 8px; margin-bottom: .5em; background: #fafbfd; }
.pmbf-adv-row { grid-template-columns: 1.6fr 1.4fr 9em .9fr .9fr 1.5fr auto auto; }
.pmbf-succ-row .pmbf-field, .pmbf-succ-row .pmbf-check { margin: 0; }
.pmbf-succ-row .pmbf-field > select + input { margin-top: .3em; }

/* Responsive */
@media (max-width: 1020px) {
	.pmbf-layout { grid-template-columns: 1fr; }
	.pmbf-sticky { position: static; }
	.pmbf-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.pmbf-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pmbf-g-row { grid-template-columns: 1fr 1fr; }
	.pmbf-g-head { display: none; }
	.pmbf-fam-row { grid-template-columns: 1fr 1fr; }
	.pmbf-succ-row, .pmbf-adv-row { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
	.pmbf-pfs, .pmbf-ratios, .pmbf-grid-2, .pmbf-grid-3 { grid-template-columns: 1fr; }
	.pmbf-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pmbf-row-main { grid-template-columns: 1fr 1fr; }
	.pmbf-row-main input[data-f=name] { grid-column: 1 / -1; order: -1; }
	.pmbf-row-annual { text-align: left; }
	.pmbf-row-tools { grid-column: 1 / -1; justify-content: flex-end; }
	.pmbf-row-spacer { display: none; }
	.pmbf-revbar-actions { margin-left: 0; }
	.pmbf-crumbs-user { margin-left: 0; width: 100%; }
}
@media print {
	.pmbf-btn, .pmbf-head-actions, .pmbf-revbar, .pmbf-side, .pmbf-crumbs { display: none !important; }
	.pmbf-layout { grid-template-columns: 1fr; }
}

/* Progetti e bucket (1.4) */
.pmbf-bucket { border: 1px solid var(--pmbf-line); border-left: 4px solid var(--pmbf-brand); border-radius: var(--pmbf-radius); padding: .8em 1em 1em; margin: 0 0 1em; background: #fff; }
.pmbf-bucket legend { font-weight: 700; padding: 0 .4em; color: var(--pmbf-brand); }
.pmbf-bucket h5 { margin: .8em 0 .3em; font-size: .95em; }
.pmbf-bucket .pmbf-field small { display: block; margin-top: .25em; font-size: .78em; color: var(--pmbf-muted); }
.pmbf-bucket-assets td.num { white-space: nowrap; }
.pmbf-bucket-assets input.pmbf-pct { width: 5em; }
.pmbf-inflow-row { display: grid; grid-template-columns: 2fr 1fr .8fr 1fr auto; gap: .5em; align-items: end; padding: .5em; border: 1px dashed var(--pmbf-line); border-radius: 8px; margin-bottom: .4em; background: #fafbfd; }
.pmbf-inflow-row .pmbf-field { margin: 0; }
.pmbf-bucket-bars { display: grid; gap: .55em; }
.pmbf-bucket-bar { display: grid; grid-template-columns: minmax(160px, 1.2fr) 3fr 4em; gap: .8em; align-items: center; }
.pmbf-bucket-bar-val { text-align: right; font-weight: 700; }
.pmbf-progress { position: relative; height: 14px; border-radius: 999px; background: #eceef3; overflow: hidden; }
.pmbf-progress-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 999px; background: var(--pmbf-ok); opacity: .85; }
.pmbf-progress-fill.pmbf-st-warn { background: var(--pmbf-warn); }
.pmbf-progress-fill.pmbf-st-bad { background: var(--pmbf-bad); }
.pmbf-progress-fill.pmbf-st-na { background: var(--pmbf-na); }
.pmbf-progress-now { position: absolute; left: 0; top: 4px; height: 6px; background: rgba(0, 0, 0, .35); border-radius: 999px; z-index: 2; }
.pmbf-bucket-result .pmbf-panel-head h3 small { font-weight: 400; font-size: .75em; }
.pmbf-row-bad th, .pmbf-row-bad td { background: #fff3f2; }
@media (max-width: 720px) {
	.pmbf-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pmbf-inflow-row { grid-template-columns: 1fr 1fr; }
	.pmbf-bucket-bar { grid-template-columns: 1fr 3.5em; }
	.pmbf-bucket-bar .pmbf-progress { grid-column: 1 / -1; grid-row: 2; }
}

/* 1.5: immobili, investimenti, inviti, demo */
.pmbf-alert-na { border-color: var(--pmbf-na); }
.pmbf-property-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(240px, 1fr); gap: 1.2em; align-items: start; }
.pmbf-property-result { position: sticky; top: 1em; background: var(--pmbf-soft); border-radius: var(--pmbf-radius); padding: .8em; }
.pmbf-property-result .pmbf-kpi { background: #fff; margin-bottom: .6em; }
.pmbf-property h5 { margin: .8em 0 .3em; }
.pmbf-property .pmbf-field small, .pmbf-grid-3b .pmbf-field small { display: block; font-size: .78em; color: var(--pmbf-muted); }
.pmbf-grid-3b { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 1em; }
.pmbf-alloc-bars { display: grid; gap: .7em; }
.pmbf-progress-target { position: absolute; top: -3px; bottom: -3px; width: 3px; background: #1f2430; z-index: 3; }
.pmbf-invite-nav { display: flex; flex-wrap: wrap; gap: .4em 1em; align-items: center; padding: .7em 1em; margin-bottom: 1em; border-radius: var(--pmbf-radius); background: var(--pmbf-soft); }
.pmbf-invite-nav a { text-decoration: none; padding: .2em .6em; border-radius: 999px; }
.pmbf-invite-nav a.is-current { background: var(--pmbf-brand); color: #fff; }
.pmbf-invite-who { margin-left: auto; color: var(--pmbf-muted); font-size: .9em; }
.pmbf-request-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .3em 1em; }
#pmbf-app { position: relative; }
.pmbf-demo-watermark { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: clamp(80px, 18vw, 240px); font-weight: 800; color: rgba(75, 79, 166, .06); transform: rotate(-30deg); pointer-events: none; z-index: 0; user-select: none; }
.pmbf-demo-ribbon { border-color: var(--pmbf-warn); background: #fdf6e3; }
.pmbf-demo-ribbon strong { background: var(--pmbf-warn); color: #fff; padding: .1em .5em; border-radius: 4px; margin-right: .4em; }
@media (max-width: 860px) {
	.pmbf-property-grid { grid-template-columns: 1fr; }
	.pmbf-property-result { position: static; }
	.pmbf-grid-3b { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
