/* =========================================================
   Alter Ego — interfaccia frontend
   ========================================================= */

.ae-app {
	--ae-accent: #4f46e5;
	--ae-bg: #f6f7fb;
	--ae-surface: #ffffff;
	--ae-surface-2: #f1f3f9;
	--ae-border: #e2e5ee;
	--ae-text: #1a1d29;
	--ae-muted: #6b7180;
	--ae-danger: #dc2626;
	--ae-warn: #d97706;
	--ae-ok: #16a34a;
	--ae-radius: 14px;
	--ae-radius-sm: 10px;

	/* I moduli: un bordo più deciso di quello delle cornici, un fondo
	   appena tinto che diventa bianco quando il campo ha il fuoco, e
	   l'alone dell'accento intorno. Sono le tre cose che fanno la
	   differenza fra un modulo qualunque e uno curato. */
	--ae-border-strong: #cdd3e2;
	--ae-field-bg: color-mix(in srgb, var(--ae-surface-2) 62%, var(--ae-surface));
	--ae-field-bg-on: var(--ae-surface);
	--ae-accent-soft: color-mix(in srgb, var(--ae-accent) 13%, transparent);
	/* Il colore compagno delle sfumature: l'accento tirato verso il
	   turchese. Serve perché una sfumatura fra due tinte si vede anche
	   su una parola di quattro lettere, mentre una che va dal colore
	   all'inchiostro no. Si può cambiare da fuori. */
	--ae-accent-2: color-mix(in srgb, var(--ae-accent) 52%, #22d3ee);
	--ae-ink-2: color-mix(in srgb, var(--ae-text) 72%, var(--ae-muted));
	--ae-font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif;
	--ae-serif: 'Cormorant Garamond', 'Fraunces', Georgia, 'Times New Roman', serif;
	--ae-shadow: 0 1px 2px rgba(16,20,40,.05), 0 8px 24px -12px rgba(16,20,40,.18);
	--ae-shadow-lg: 0 24px 64px -24px rgba(16,20,40,.35);

	color: var(--ae-text);
	background: var(--ae-bg);
	font-family: var(--ae-font);
	font-size: 15px;
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
	border-radius: var(--ae-radius);
	/* «hidden» faceva del contenitore un'area di scorrimento: la barra
	   «sticky» in alto restava incollata a lui, non alla pagina, e sul
	   telefono spariva al primo scroll. «clip» taglia gli angoli tondi
	   allo stesso modo ma lascia la barra libera di seguire la pagina. */
	overflow: hidden;
	overflow: clip;
}

.ae-app[data-theme="dark"] {
	--ae-bg: #12141c;
	--ae-surface: #1a1d28;
	--ae-surface-2: #222634;
	--ae-border: #2e3341;
	--ae-text: #e8eaf2;
	--ae-muted: #9aa1b4;
	--ae-shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
	--ae-border-strong: #3c4356;
	--ae-field-bg: color-mix(in srgb, var(--ae-surface-2) 70%, #000);
	--ae-field-bg-on: var(--ae-surface-2);
	--ae-ink-2: color-mix(in srgb, var(--ae-text) 78%, var(--ae-muted));
}

.ae-app *,
.ae-app *::before,
.ae-app *::after { box-sizing: border-box; }

.ae-app h1, .ae-app h2, .ae-app h3 { margin: 0 0 .25em; line-height: 1.25; font-weight: 650; letter-spacing: -.01em; }
.ae-app h1 { font-size: 1.6rem; }
.ae-app h2 { font-size: 1.15rem; }
.ae-app h3 { font-size: .95rem; }
.ae-app p { margin: 0 0 .6em; }
.ae-sub { color: var(--ae-muted); font-size: .875rem; margin: 0; }
.ae-spacer { flex: 1; }
.ae-w100 { width: 100%; }

.ae-ico { flex: none; vertical-align: -.18em; }

/* ---------- Topbar ---------- */

.ae-topbar {
	display: flex; align-items: center; gap: 16px;
	padding: 10px 18px;
	background: var(--ae-surface);
	border-bottom: 1px solid var(--ae-border);
	position: sticky; top: 0; z-index: 40;
	flex-wrap: wrap;
}
.ae-brand { display: flex; align-items: center; gap: 9px; text-decoration: none; color: inherit; font-weight: 700; }
.ae-brand-mark {
	width: 32px; height: 32px; display: grid; place-items: center;
	border-radius: 9px; color: #fff;
	background: linear-gradient(135deg, var(--ae-accent), color-mix(in srgb, var(--ae-accent) 55%, #000));
}
.ae-brand-name { font-size: 1.02rem; letter-spacing: -.02em; }

.ae-nav { display: flex; gap: 2px; flex: 1; flex-wrap: wrap; }
.ae-nav-link {
	display: inline-flex; align-items: center; gap: 7px;
	padding: 8px 12px; border-radius: var(--ae-radius-sm);
	color: var(--ae-muted); text-decoration: none; font-size: .875rem; font-weight: 500;
	transition: background .15s, color .15s;
}
.ae-nav-link:hover { background: var(--ae-surface-2); color: var(--ae-text); }
.ae-nav-link.is-active { background: color-mix(in srgb, var(--ae-accent) 12%, transparent); color: var(--ae-accent); }

.ae-topbar-right { display: flex; align-items: center; gap: 6px; }

.ae-usermenu { position: relative; }
.ae-user-btn {
	display: flex; align-items: center; gap: 8px;
	background: none; border: 1px solid var(--ae-border); border-radius: 999px;
	padding: 4px 12px 4px 4px; cursor: pointer; color: inherit; font-size: .85rem;
}
.ae-user-btn img { border-radius: 50%; }
.ae-usermenu-pop {
	position: absolute; right: 0; top: calc(100% + 6px); min-width: 180px;
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius-sm); box-shadow: var(--ae-shadow); padding: 6px; z-index: 50;
}
.ae-usermenu-pop a { display: block; padding: 8px 10px; border-radius: 7px; color: inherit; text-decoration: none; font-size: .875rem; }
.ae-usermenu-pop a:hover { background: var(--ae-surface-2); }

/* ---------- Layout ---------- */

.ae-main { padding: 22px; }
.ae-page-head { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.ae-page-head > div:first-child { flex: 1; min-width: 220px; }
.ae-page-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.ae-panel {
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); padding: 18px; box-shadow: var(--ae-shadow);
	margin-bottom: 18px;
}
.ae-panel > h2 { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; font-size: 1rem; }

.ae-layout-split { display: grid; grid-template-columns: 240px 1fr; gap: 18px; align-items: start; }
.ae-sidebar { position: sticky; top: 74px; }
.ae-sidebar-block {
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); padding: 12px; margin-bottom: 12px;
}
.ae-sidebar-block h3 { font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--ae-muted); margin-bottom: 8px; }

.ae-type-cat { font-size: .68rem; text-transform: uppercase; letter-spacing: .06em; color: var(--ae-muted); margin: 12px 0 4px; }
.ae-type-chip, .ae-quick {
	display: flex; align-items: center; gap: 8px; width: 100%;
	padding: 7px 9px; border: 0; background: none; border-radius: 8px;
	cursor: pointer; color: var(--ae-text); font-size: .85rem; text-align: left;
	font-family: inherit;
}
.ae-type-chip:hover, .ae-quick:hover { background: var(--ae-surface-2); }
.ae-type-chip.is-active { background: color-mix(in srgb, var(--c, var(--ae-accent)) 14%, transparent); color: var(--c, var(--ae-accent)); font-weight: 600; }
.ae-quick.is-active { background: color-mix(in srgb, var(--ae-accent) 14%, transparent); color: var(--ae-accent); font-weight: 600; }
.ae-type-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- Bottoni ---------- */

.ae-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 9px;
	padding: 11px 20px; border-radius: var(--ae-radius-sm);
	border: 1px solid var(--ae-border-strong); background: var(--ae-surface);
	color: var(--ae-ink-2); font-size: .9rem; font-weight: 600; cursor: pointer;
	font-family: inherit; line-height: 1.3; text-decoration: none;
	transition: background .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease, transform .1s ease;
}
.ae-btn:hover { background: var(--ae-surface-2); border-color: color-mix(in srgb, var(--ae-accent) 32%, var(--ae-border-strong)); color: var(--ae-text); }
.ae-btn:active { transform: translateY(1px); }
.ae-btn:focus-visible { outline: none; box-shadow: 0 0 0 4px var(--ae-accent-soft); }

/* Il pulsante che conta: sfumatura dell'accento e un'ombra dello stesso
   colore, così sembra appoggiato sulla pagina invece che incollato. */
.ae-btn--primary {
	background: linear-gradient(135deg, color-mix(in srgb, var(--ae-accent) 82%, #fff), color-mix(in srgb, var(--ae-accent) 78%, #000));
	border-color: color-mix(in srgb, var(--ae-accent) 78%, #000); color: #fff;
	box-shadow: 0 10px 24px -12px color-mix(in srgb, var(--ae-accent) 85%, transparent);
}
.ae-btn--primary:hover {
	color: #fff;
	transform: translateY(-1px);
	box-shadow: 0 16px 30px -12px color-mix(in srgb, var(--ae-accent) 90%, transparent);
	border-color: color-mix(in srgb, var(--ae-accent) 70%, #000);
}
.ae-btn--primary:active { transform: translateY(0); }
.ae-btn--danger { color: var(--ae-danger); border-color: color-mix(in srgb, var(--ae-danger) 35%, var(--ae-border)); background: var(--ae-surface); }
.ae-btn--danger:hover { background: color-mix(in srgb, var(--ae-danger) 10%, transparent); color: var(--ae-danger); border-color: var(--ae-danger); }
.ae-btn--ghost { background: transparent; border-style: solid; border-color: var(--ae-border-strong); color: var(--ae-muted); }
.ae-btn--ghost:hover { background: var(--ae-surface); color: var(--ae-text); }
.ae-btn[disabled] { opacity: .55; pointer-events: none; box-shadow: none; }
.ae-btn--sm { padding: 7px 13px; font-size: .82rem; }

.ae-icon-btn {
	display: inline-grid; place-items: center;
	width: 34px; height: 34px; border-radius: 9px;
	border: 1px solid transparent; background: none; color: var(--ae-muted); cursor: pointer;
}
.ae-icon-btn:hover { background: var(--ae-surface-2); color: var(--ae-text); }
.ae-icon-btn.is-active { background: color-mix(in srgb, var(--ae-accent) 14%, transparent); color: var(--ae-accent); }

/* ---------- Filtri ---------- */

.ae-filters { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 16px; }
.ae-search-box { position: relative; flex: 1; min-width: 200px; }
.ae-search-box .ae-ico { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--ae-muted); pointer-events: none; z-index: 1; }
.ae-search-box .ae-input,
.ae-search-box input[type="search"],
.ae-app .ae-search-box input,
.ae-search-box .ae-input:focus { padding-left: 42px !important; text-indent: 0 !important; }
.ae-search-deep { display: inline-flex; align-items: center; gap: 6px; font-size: .82rem; color: var(--ae-muted); cursor: pointer; white-space: nowrap; user-select: none; }
.ae-search-deep input { accent-color: var(--ae-accent); margin: 0; }
.ae-search-deep:has(input:checked) { color: var(--ae-accent); }

.ae-toggle-chip { display: inline-flex; align-items: center; }
.ae-toggle-chip input { position: absolute; opacity: 0; }
.ae-toggle-chip span {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 8px 12px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); cursor: pointer; font-size: .85rem;
}
.ae-toggle-chip input:checked + span { background: color-mix(in srgb, var(--ae-accent) 12%, transparent); border-color: var(--ae-accent); color: var(--ae-accent); }

.ae-viewmode { display: flex; gap: 2px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); padding: 2px; background: var(--ae-surface); }
.ae-viewmode .ae-icon-btn { width: 30px; height: 30px; }

.ae-active-filters { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }

/* ---------- Campi ---------- */

.ae-input {
	width: 100%; padding: 12px 14px;
	border: 1px solid var(--ae-border-strong); border-radius: var(--ae-radius-sm);
	background: var(--ae-field-bg); color: var(--ae-text);
	font-size: .95rem; font-family: inherit; line-height: 1.45;
	appearance: none; -webkit-appearance: none;
	transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.ae-input::placeholder { color: color-mix(in srgb, var(--ae-muted) 78%, transparent); }
.ae-input:hover:not(:disabled) { border-color: color-mix(in srgb, var(--ae-accent) 30%, var(--ae-border-strong)); }
.ae-input:focus {
	outline: none; border-color: var(--ae-accent);
	background: var(--ae-field-bg-on);
	box-shadow: 0 0 0 4px var(--ae-accent-soft);
}
.ae-input:disabled, .ae-input[readonly] { opacity: .7; cursor: not-allowed; }
.ae-textarea { resize: vertical; min-height: 132px; line-height: 1.55; }
.ae-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .82rem; }
.ae-upper { text-transform: uppercase; letter-spacing: .04em; }
select.ae-input { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7180' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px; cursor: pointer; }
select.ae-multi { background-image: none; padding-right: 14px; }

/* L'etichetta e quello che le sta a destra («facoltativo», il contatore)
   stanno sulla stessa riga, come su un modulo stampato bene. */
.ae-label {
	display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
	font-size: .82rem; font-weight: 550; letter-spacing: .01em;
	margin-bottom: 7px; color: var(--ae-ink-2);
}
.ae-label small, .ae-label .ae-opt { font-size: .74rem; font-weight: 400; color: var(--ae-muted); }
.ae-req { color: var(--ae-accent); font-weight: 700; }
.ae-hint { font-size: .78rem; color: var(--ae-muted); margin: 6px 0 0; }
.ae-error { font-size: .78rem; color: var(--ae-danger); margin: 6px 0 0; font-weight: 500; }
.ae-field.is-invalid .ae-input,
.ae-input:not(:placeholder-shown):invalid {
	border-color: var(--ae-danger);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--ae-danger) 10%, transparent);
}
.ae-badge--lock { color: var(--ae-muted); }

.ae-form-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 20px 18px; }
.ae-field { min-width: 0; }
.ae-w-full { grid-column: span 12; }
.ae-w-half { grid-column: span 6; }
.ae-w-third { grid-column: span 4; }
.ae-w-quarter { grid-column: span 3; }
@media (max-width: 720px) {
	.ae-w-half, .ae-w-third, .ae-w-quarter { grid-column: span 12; }
}

.ae-field--heading { margin-top: 6px; }
.ae-section-title {
	display: flex; align-items: center; gap: 10px;
	font-family: var(--ae-serif);
	font-size: 1.32rem; font-weight: 600; letter-spacing: -.01em; text-transform: none;
	color: var(--ae-text); border-bottom: 1px solid var(--ae-border);
	padding: 0 0 10px; margin: 20px 0 6px;
}
.ae-section-title::before {
	content: ""; flex: none;
	width: 4px; height: 1.05em; border-radius: 3px;
	background: linear-gradient(180deg, var(--ae-accent), color-mix(in srgb, var(--ae-accent) 40%, transparent));
}
.ae-section-desc { font-size: .8rem; color: var(--ae-muted); }
.ae-divider { border: 0; border-top: 1px solid var(--ae-border); margin: 6px 0; }

.ae-input-group { display: flex; align-items: stretch; }
.ae-input-group .ae-input { border-radius: var(--ae-radius-sm) 0 0 var(--ae-radius-sm); }
.ae-input-group .ae-input:only-child { border-radius: var(--ae-radius-sm); }
.ae-addon, .ae-addon-btn {
	display: grid; place-items: center; padding: 0 13px;
	border: 1px solid var(--ae-border-strong); border-left: 0;
	background: var(--ae-surface-2); color: var(--ae-muted);
	font-size: .85rem; cursor: pointer;
	transition: color .18s ease, background .18s ease;
}
.ae-input-group:focus-within .ae-addon, .ae-input-group:focus-within .ae-addon-btn { border-color: var(--ae-accent); }
.ae-addon-btn:last-child, .ae-addon:last-child { border-radius: 0 var(--ae-radius-sm) var(--ae-radius-sm) 0; }
.ae-addon-btn:hover { color: var(--ae-accent); }

/* Le scelte non sono pallini in fila: sono riquadri che si accendono. */
.ae-choices { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.ae-choice, .ae-check { display: inline-flex; align-items: center; gap: 10px; font-size: .89rem; cursor: pointer; }
.ae-choice {
	padding: 12px 14px; border: 1px solid var(--ae-border-strong); border-radius: var(--ae-radius-sm);
	background: var(--ae-field-bg); user-select: none;
	transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.ae-choice:hover { border-color: color-mix(in srgb, var(--ae-accent) 32%, var(--ae-border-strong)); }
.ae-choice:has(input:checked) {
	border-color: var(--ae-accent); background: var(--ae-field-bg-on);
	box-shadow: 0 0 0 3px var(--ae-accent-soft);
	font-weight: 550;
}
.ae-choice input, .ae-check input {
	flex: none; width: 18px; height: 18px; margin: 0;
	accent-color: var(--ae-accent); cursor: pointer;
}

.ae-switch { display: inline-flex; align-items: center; gap: 12px; cursor: pointer; }
.ae-switch input { position: absolute; opacity: 0; }
.ae-switch-track { width: 46px; height: 26px; border-radius: 999px; background: var(--ae-border-strong); position: relative; transition: background .2s; flex: none; }
.ae-switch-thumb, .ae-switch-track > i {
	position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%;
	background: #fff; transition: transform .2s; box-shadow: 0 2px 5px rgba(0,0,0,.22);
}
.ae-switch input:checked + .ae-switch-track { background: var(--ae-accent); }
.ae-switch input:checked + .ae-switch-track .ae-switch-thumb,
.ae-switch input:checked + .ae-switch-track > i { transform: translateX(20px); }
.ae-switch input:focus-visible + .ae-switch-track { box-shadow: 0 0 0 4px var(--ae-accent-soft); }
.ae-switch-text { font-size: .89rem; }
.ae-switch-text strong { display: block; font-weight: 600; }
.ae-switch-text small { display: block; color: var(--ae-muted); font-size: .78rem; }

/* L'interruttore dentro una riga sua, come nell'esempio. */
.ae-switch[data-billing-switch], .ae-switch--row {
	display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%;
	padding: 14px 16px; border: 1px solid var(--ae-border-strong);
	border-radius: var(--ae-radius-sm); background: var(--ae-field-bg);
}
.ae-switch[data-billing-switch] .ae-switch-text, .ae-switch--row .ae-switch-text { order: -1; flex: 1; }

.ae-range { display: flex; align-items: center; gap: 14px; }
.ae-range input {
	flex: 1; height: 4px; appearance: none; -webkit-appearance: none;
	background: var(--ae-border-strong); border-radius: 999px; outline: none;
}
.ae-range input::-webkit-slider-thumb {
	appearance: none; -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%;
	background: var(--ae-accent); border: 3px solid var(--ae-surface);
	box-shadow: 0 2px 6px rgba(0,0,0,.22); cursor: pointer;
}
.ae-range input::-moz-range-thumb {
	width: 20px; height: 20px; border-radius: 50%;
	background: var(--ae-accent); border: 3px solid var(--ae-surface);
	box-shadow: 0 2px 6px rgba(0,0,0,.22); cursor: pointer;
}
.ae-range output { min-width: 62px; text-align: right; font-variant-numeric: tabular-nums; font-size: .9rem; font-weight: 600; }

.ae-rating { display: flex; gap: 2px; align-items: center; }
.ae-star, .ae-star-clear { background: none; border: 0; font-size: 1.4rem; line-height: 1; cursor: pointer; color: var(--ae-border); padding: 0 1px; }
.ae-star.is-on { color: #f59e0b; }
.ae-star-clear { font-size: 1rem; color: var(--ae-muted); margin-left: 6px; }
.ae-rating-view span { color: var(--ae-border); }
.ae-rating-view span.is-on { color: #f59e0b; }

.ae-color { display: flex; gap: 8px; align-items: center; }
.ae-color input[type=color] { width: 44px; height: 38px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); background: none; padding: 2px; cursor: pointer; }
.ae-color-hex { max-width: 120px; }

.ae-daterange { display: flex; align-items: center; gap: 8px; }
.ae-arrow { color: var(--ae-muted); }

.ae-secret { display: flex; }
.ae-secret .ae-input { border-radius: var(--ae-radius-sm) 0 0 var(--ae-radius-sm); font-family: ui-monospace, monospace; }
.ae-secret .ae-addon-btn { border-radius: 0; }
.ae-secret .ae-addon-btn:last-child { border-radius: 0 var(--ae-radius-sm) var(--ae-radius-sm) 0; }
.ae-strength { height: 4px; border-radius: 3px; background: var(--ae-border); margin-top: 7px; overflow: hidden; }
.ae-strength span { display: block; height: 100%; width: 0; transition: width .25s, background .25s; }
.ae-totp-out { margin-top: 8px; font-family: ui-monospace, monospace; font-size: 1.3rem; letter-spacing: .18em; }
.ae-totp-out small { display: block; font-size: .72rem; letter-spacing: 0; color: var(--ae-muted); font-family: inherit; }

.ae-tags-input { border: 1px solid var(--ae-border-strong); border-radius: var(--ae-radius-sm); padding: 7px; background: var(--ae-field-bg); }
.ae-tags-input:focus-within { border-color: var(--ae-accent); background: var(--ae-field-bg-on); box-shadow: 0 0 0 4px var(--ae-accent-soft); }
.ae-tags-list { display: flex; flex-wrap: wrap; gap: 5px; }
.ae-tags-list:not(:empty) { margin-bottom: 6px; }
.ae-tag-entry { border: 0; padding: 5px 7px; background: none; }
.ae-tag-entry:focus { box-shadow: none; }

.ae-chips { display: inline-flex; flex-wrap: wrap; gap: 5px; }
.ae-chip {
	display: inline-flex; align-items: center; gap: 5px;
	padding: 3px 9px; border-radius: 999px; font-size: .76rem; font-weight: 550;
	background: color-mix(in srgb, var(--c, var(--ae-accent)) 13%, transparent);
	color: var(--c, var(--ae-accent));
	border: 1px solid color-mix(in srgb, var(--c, var(--ae-accent)) 26%, transparent);
	text-decoration: none;
}
.ae-chip--tag { --c: #64748b; }
.ae-chip button { background: none; border: 0; cursor: pointer; color: inherit; font-size: 1rem; line-height: 1; padding: 0 0 0 2px; opacity: .7; }
.ae-chip button:hover { opacity: 1; }

.ae-checklist-items { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.ae-checklist-row { display: flex; align-items: center; gap: 8px; }
.ae-checklist-row .ae-input { flex: 1; }
.ae-checklist-view { list-style: none; padding: 0; margin: 0; }
.ae-checklist-view li.is-done { color: var(--ae-muted); text-decoration: line-through; }

.ae-social-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.ae-social-row { display: flex; align-items: center; gap: 8px; }
.ae-social-label { font-size: .78rem; color: var(--ae-muted); min-width: 74px; }

.ae-mini-table { width: 100%; border-collapse: collapse; font-size: .84rem; margin-bottom: 8px; }
.ae-mini-table th, .ae-mini-table td { border: 1px solid var(--ae-border); padding: 4px; }
.ae-mini-table th { background: var(--ae-surface-2); font-size: .76rem; text-align: left; }
.ae-mini-table .ae-input { border: 0; padding: 6px 8px; background: none; }
.ae-mini-table .ae-input:focus { box-shadow: none; }

.ae-grid-3 { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; margin-top: 10px; }
.ae-grid-3 label span { display: block; font-size: .74rem; color: var(--ae-muted); margin-bottom: 3px; }

/* ---------- Uploader ---------- */

.ae-uploader { display: flex; flex-direction: column; gap: 8px; }
.ae-uploader-drop {
	border: 1.5px dashed var(--ae-border-strong); border-radius: var(--ae-radius);
	background: var(--ae-field-bg); min-height: 138px;
	display: grid; place-items: center; padding: 22px 16px; cursor: pointer;
	transition: border-color .18s ease, background .18s ease;
	position: relative;
}
.ae-uploader-drop:hover, .ae-uploader-drop:focus-visible { border-color: var(--ae-accent); background: var(--ae-field-bg-on); }
.ae-uploader-drop.is-drag { border-color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 8%, transparent); }
.ae-uploader-empty { text-align: center; color: var(--ae-muted); display: grid; gap: 3px; justify-items: center; }
.ae-uploader-empty strong { font-size: .92rem; color: var(--ae-text); font-weight: 550; }
.ae-uploader-empty .ae-ico { color: var(--ae-accent); }
.ae-uploader-empty span { font-size: .76rem; }
.ae-uploader-preview { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; width: 100%; }
.ae-uploader-preview:not(:empty) + .ae-uploader-empty { display: none; }
.ae-thumb { position: relative; width: 92px; height: 92px; border-radius: var(--ae-radius-sm); overflow: hidden; background: var(--ae-surface); border: 1px solid var(--ae-border); }
.ae-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ae-thumb-file { display: grid; place-items: center; height: 100%; font-size: .68rem; padding: 6px; text-align: center; color: var(--ae-muted); word-break: break-all; }
.ae-thumb-x { position: absolute; top: 3px; right: 3px; width: 20px; height: 20px; border-radius: 50%; border: 0; background: rgba(0,0,0,.6); color: #fff; cursor: pointer; font-size: .8rem; line-height: 1; }
.ae-uploader--avatar .ae-uploader-drop { min-height: 150px; }
.ae-uploader--avatar .ae-thumb { width: 118px; height: 118px; border-radius: 50%; }
.ae-uploader-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.ae-uploader-actions .ae-btn { padding: 6px 10px; font-size: .8rem; }
.ae-uploader-progress { height: 4px; background: var(--ae-border); border-radius: 3px; overflow: hidden; }
.ae-uploader-progress span { display: block; height: 100%; width: 0; background: var(--ae-accent); transition: width .2s; }

.ae-camera-stage { display: grid; gap: 12px; justify-items: center; }
.ae-camera-stage video, .ae-camera-stage canvas { width: 100%; max-width: 520px; border-radius: var(--ae-radius); background: #000; }

.ae-sign-pad { border: 1px solid var(--ae-border); border-radius: var(--ae-radius); background: #fff; touch-action: none; width: 100%; }

/* ---------- Geo ---------- */

.ae-geo { display: grid; gap: 8px; }
.ae-geo-search { display: flex; gap: 6px; }
.ae-geo-results {
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); max-height: 220px; overflow: auto;
}
.ae-geo-results button {
	display: block; width: 100%; text-align: left; padding: 8px 11px;
	border: 0; border-bottom: 1px solid var(--ae-border); background: none;
	cursor: pointer; font-size: .84rem; color: inherit; font-family: inherit;
}
.ae-geo-results button:hover { background: var(--ae-surface-2); }
.ae-geo-map, .ae-route-map { height: 240px; border-radius: var(--ae-radius); overflow: hidden; border: 1px solid var(--ae-border); }
.ae-geo-coords { font-size: .76rem; color: var(--ae-muted); font-variant-numeric: tabular-nums; margin: 0; }
.ae-mini-map { height: 160px; border-radius: var(--ae-radius-sm); overflow: hidden; margin-top: 8px; border: 1px solid var(--ae-border); }

.ae-route-stops { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.ae-route-stop { display: flex; align-items: center; gap: 8px; padding: 7px 9px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); background: var(--ae-surface); }
.ae-route-stop .ae-num { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; background: var(--ae-accent); color: #fff; font-size: .7rem; flex: none; }
.ae-route-stop .ae-input { flex: 1; border: 0; padding: 2px 4px; }
.ae-route-actions { display: flex; gap: 8px; margin-bottom: 8px; }
.ae-route-view { padding-left: 20px; }

/* ---------- Relazioni ---------- */

.ae-relation { position: relative; display: grid; gap: 7px; }
.ae-relation-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.ae-relation-results {
	position: absolute; top: 100%; left: 0; right: 0; z-index: 30;
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius-sm); box-shadow: var(--ae-shadow);
	max-height: 240px; overflow: auto;
}
.ae-relation-results:empty { display: none; }
.ae-relation-results button {
	display: flex; align-items: center; gap: 8px; width: 100%;
	padding: 8px 11px; border: 0; background: none; cursor: pointer;
	text-align: left; font-size: .85rem; color: inherit; font-family: inherit;
}
.ae-relation-results button:hover { background: var(--ae-surface-2); }

/* ---------- Elenchi ---------- */

.ae-results.ae-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(268px, 1fr)); gap: 14px; }
.ae-results.ae-rows { display: flex; flex-direction: column; gap: 8px; }

.ae-item {
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); padding: 15px; cursor: pointer;
	box-shadow: var(--ae-shadow); position: relative; overflow: hidden;
	transition: transform .12s, box-shadow .15s, border-color .15s;
	display: flex; flex-direction: column; gap: 9px;
	text-align: left; width: 100%; font-family: inherit; color: inherit;
}
.ae-item::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--c, var(--ae-accent)); }
.ae-item:hover { transform: translateY(-2px); box-shadow: var(--ae-shadow-lg); border-color: color-mix(in srgb, var(--c, var(--ae-accent)) 40%, var(--ae-border)); }
.ae-item-head { display: flex; align-items: flex-start; gap: 10px; }
.ae-item-title { font-weight: 620; font-size: .96rem; line-height: 1.3; flex: 1; }
.ae-item-sub { font-size: .78rem; color: var(--ae-muted); }
.ae-item-meta { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.ae-item-preview { display: grid; gap: 4px; font-size: .8rem; }
.ae-item-preview div { display: flex; gap: 6px; }
.ae-item-preview dt { color: var(--ae-muted); min-width: 84px; flex: none; }
.ae-item-preview dd { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-item-fav { position: absolute; top: 10px; right: 10px; color: #f59e0b; }

.ae-results.ae-rows .ae-item { flex-direction: row; align-items: center; padding: 10px 14px; }
.ae-results.ae-rows .ae-item-preview { display: none; }

.ae-avatar {
	width: 42px; height: 42px; border-radius: 50%; flex: none;
	display: grid; place-items: center; overflow: hidden;
	background: color-mix(in srgb, var(--c, var(--ae-accent)) 16%, transparent);
	color: var(--c, var(--ae-accent)); font-weight: 700; font-size: .84rem;
}
.ae-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ae-avatar--sm { width: 30px; height: 30px; font-size: .7rem; }
.ae-avatar--lg { width: 74px; height: 74px; font-size: 1.4rem; }

.ae-type-badge {
	width: 44px; height: 44px; border-radius: 12px; flex: none;
	display: grid; place-items: center;
	background: color-mix(in srgb, var(--c, var(--ae-accent)) 15%, transparent);
	color: var(--c, var(--ae-accent));
}

.ae-expiry { font-size: .76rem; display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; }
.ae-expiry.is-ok { background: color-mix(in srgb, var(--ae-ok) 12%, transparent); color: var(--ae-ok); }
.ae-expiry.is-soon { background: color-mix(in srgb, var(--ae-warn) 15%, transparent); color: var(--ae-warn); }
.ae-expiry.is-expired { background: color-mix(in srgb, var(--ae-danger) 13%, transparent); color: var(--ae-danger); }

.ae-pager { display: flex; justify-content: center; gap: 6px; margin-top: 20px; flex-wrap: wrap; }
.ae-pager button { min-width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--ae-border); background: var(--ae-surface); cursor: pointer; font-size: .84rem; color: inherit; }
.ae-pager button.is-active { background: var(--ae-accent); border-color: var(--ae-accent); color: #fff; }

.ae-empty-state { text-align: center; padding: 50px 20px; color: var(--ae-muted); grid-column: 1/-1; }
.ae-empty-state .ae-ico { opacity: .35; margin-bottom: 8px; }

.ae-skeleton { height: 90px; border-radius: var(--ae-radius-sm); background: linear-gradient(90deg, var(--ae-surface-2) 25%, var(--ae-border) 37%, var(--ae-surface-2) 63%); background-size: 400% 100%; animation: ae-shimmer 1.3s infinite; }
@keyframes ae-shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }

/* ---------- Cruscotto ---------- */

.ae-stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 18px; }
.ae-stat {
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); padding: 15px; display: flex; align-items: center; gap: 12px;
	box-shadow: var(--ae-shadow); cursor: pointer; text-align: left; width: 100%; font-family: inherit; color: inherit;
}
.ae-stat-ico { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: color-mix(in srgb, var(--c, var(--ae-accent)) 14%, transparent); color: var(--c, var(--ae-accent)); flex: none; }
.ae-stat-n { font-size: 1.5rem; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.ae-stat-l { font-size: .78rem; color: var(--ae-muted); }

.ae-dash-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 900px) { .ae-dash-cols, .ae-layout-split { grid-template-columns: 1fr; } .ae-sidebar { position: static; } }

.ae-mini-list { display: flex; flex-direction: column; gap: 2px; }
.ae-mini-row {
	display: flex; align-items: center; gap: 10px; padding: 8px 9px;
	border-radius: 9px; cursor: pointer; border: 0; background: none;
	width: 100%; text-align: left; font-family: inherit; color: inherit; font-size: .86rem;
}
.ae-mini-row:hover { background: var(--ae-surface-2); }
.ae-mini-row .ae-mini-body { flex: 1; min-width: 0; }
.ae-mini-row strong { display: block; font-weight: 570; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-mini-row small { color: var(--ae-muted); font-size: .76rem; }

/* ---------- Dettaglio ---------- */

.ae-detail { display: grid; gap: 20px; }
.ae-detail-head { display: flex; gap: 15px; align-items: flex-start; flex-wrap: wrap; }
.ae-detail-title { flex: 1; min-width: 200px; }
.ae-detail-title h2 { font-size: 1.35rem; }
.ae-detail-meta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.ae-detail-actions { display: flex; gap: 6px; flex-wrap: wrap; }

.ae-values { display: grid; grid-template-columns: repeat(12, 1fr); gap: 14px; margin: 0; }
.ae-value { min-width: 0; }
.ae-value dt { font-size: .74rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ae-muted); margin-bottom: 3px; }
.ae-value dd { margin: 0; font-size: .9rem; word-break: break-word; }
.ae-values .ae-section-title { grid-column: 1/-1; }
.ae-values .ae-divider { grid-column: 1/-1; }
.ae-empty { color: var(--ae-muted); }

.ae-link { color: var(--ae-accent); text-decoration: none; }
.ae-link:hover { text-decoration: underline; }
.ae-pre { white-space: pre-wrap; }
.ae-rich { font-size: .9rem; }
.ae-rich img { max-width: 100%; height: auto; border-radius: var(--ae-radius-sm); }
.ae-codeblock { background: var(--ae-surface-2); border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); padding: 10px; overflow: auto; font-size: .8rem; }
.ae-pill { padding: 2px 9px; border-radius: 999px; font-size: .76rem; font-weight: 600; }
.ae-pill--yes { background: color-mix(in srgb, var(--ae-ok) 14%, transparent); color: var(--ae-ok); }
.ae-pill--no { background: var(--ae-surface-2); color: var(--ae-muted); }
.ae-color-view { display: inline-flex; align-items: center; gap: 7px; font-variant-numeric: tabular-nums; }
.ae-color-view i { width: 18px; height: 18px; border-radius: 5px; border: 1px solid var(--ae-border); }
.ae-img-view { max-width: 240px; border-radius: var(--ae-radius-sm); display: block; }
.ae-gallery-view { display: flex; flex-wrap: wrap; gap: 7px; }
.ae-gallery-view img { width: 84px; height: 84px; object-fit: cover; border-radius: var(--ae-radius-sm); border: 1px solid var(--ae-border); }
.ae-files-view { list-style: none; padding: 0; margin: 0; display: grid; gap: 5px; }
.ae-files-view a { color: var(--ae-accent); text-decoration: none; display: inline-flex; align-items: center; gap: 5px; }
.ae-table-view { border-collapse: collapse; font-size: .84rem; width: 100%; }
.ae-table-view td { border: 1px solid var(--ae-border); padding: 5px 8px; }

.ae-secret-view { display: inline-flex; align-items: center; gap: 3px; }
.ae-secret-text { font-family: ui-monospace, monospace; background: var(--ae-surface-2); padding: 3px 8px; border-radius: 6px; }
.ae-secret-view .ae-icon-btn { width: 28px; height: 28px; }

.ae-detail-related h3 { display: flex; align-items: center; gap: 7px; margin-bottom: 10px; }
.ae-count { background: var(--ae-surface-2); border-radius: 999px; padding: 1px 8px; font-size: .74rem; color: var(--ae-muted); }
.ae-rel-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; margin-bottom: 10px; }
.ae-rel-card {
	display: flex; align-items: center; gap: 10px; padding: 9px 11px;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); text-decoration: none; color: inherit;
	transition: border-color .15s, background .15s;
}
.ae-rel-card:hover { border-color: var(--c, var(--ae-accent)); background: color-mix(in srgb, var(--c, var(--ae-accent)) 6%, transparent); }
.ae-rel-ico { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; background: color-mix(in srgb, var(--c, var(--ae-accent)) 15%, transparent); color: var(--c, var(--ae-accent)); flex: none; }
.ae-rel-body { min-width: 0; }
.ae-rel-body strong { display: block; font-size: .86rem; font-weight: 570; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-rel-body small { color: var(--ae-muted); font-size: .74rem; }
/* Collegamenti: ogni voce ha il suo pulsante per scollegare, che compare al passaggio. */
.ae-detail-related { margin-bottom: 18px; }
.ae-rel-item { position: relative; }
.ae-rel-item .ae-rel-card { padding-right: 34px; }
.ae-rel-x {
	position: absolute; top: 50%; right: 6px; transform: translateY(-50%);
	width: 24px; height: 24px; opacity: 0; transition: opacity .15s;
}
.ae-rel-item:hover .ae-rel-x, .ae-rel-x:focus-visible { opacity: 1; }
@media (hover: none) { .ae-rel-x { opacity: 1; } }
.ae-rel-add { display: flex; flex-wrap: wrap; gap: 8px; }
.ae-party-list { display: grid; gap: 6px; margin-top: 8px; }
.ae-party { align-items: flex-start; gap: 8px; }
.ae-party small { color: var(--ae-muted); }
/* ---------- Acquisizione massiva ---------- */
.ae-batch { margin-top: 22px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius); background: var(--ae-surface); padding: 14px 16px; }
.ae-batch > summary { cursor: pointer; font-weight: 570; display: flex; align-items: center; gap: 8px; }
.ae-batch[open] > summary { margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--ae-border); }
.ae-inbox-drop {
	display: flex; align-items: center; gap: 12px; width: 100%;
	padding: 18px; margin: 12px 0 8px;
	border: 2px dashed var(--ae-border); border-radius: var(--ae-radius);
	background: var(--ae-surface-2); color: inherit; cursor: pointer;
	transition: border-color .15s, background .15s;
	text-align: left; font: inherit;
}
.ae-inbox-drop:hover, .ae-inbox-drop:focus-visible { border-color: var(--ae-accent); }
.ae-inbox-drop.is-over { border-color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 10%, transparent); }
.ae-inbox-drop strong { display: block; }
.ae-inbox-more { display: grid; gap: 4px; justify-items: start; margin: 0 0 10px; }
.ae-inbox-drop small { color: var(--ae-muted); }
.ae-check-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 6px; margin: 12px 0; }
.ae-review-grid { display: grid; gap: 8px; margin-top: 10px; }
.ae-review-item { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); }
.ae-review-item img { width: 42px; height: 42px; object-fit: cover; border-radius: 7px; flex: none; }
.ae-review-actions { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.ae-mini-log { max-height: 280px; overflow: auto; margin-top: 10px; display: grid; gap: 2px; }

.ae-linkpick { display: grid; gap: 12px; }
.ae-link-results { max-height: 320px; overflow: auto; display: grid; gap: 4px; }
.ae-link-results button {
	display: flex; align-items: center; gap: 9px; width: 100%; text-align: left;
	padding: 9px 11px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); cursor: pointer; font: inherit; color: inherit;
}
.ae-link-results button:hover { border-color: var(--ae-accent); background: var(--ae-surface-2); }
.ae-link-results button[disabled] { opacity: .5; cursor: default; }

.ae-detail-foot { color: var(--ae-muted); border-top: 1px solid var(--ae-border); padding-top: 10px; }
.ae-placeholder { color: var(--ae-muted); font-size: .86rem; font-style: italic; }

/* ---------- Form ---------- */

.ae-form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
/* I blocchi «a tutta larghezza» messi direttamente nel modulo chiedono
   «span 12»: in una griglia a colonna unica quel numero faceva nascere
   dodici colonne implicite e il modulo si sparpagliava in colonnine.
   Qui una colonna è tutta la larghezza, punto. */
.ae-form > .ae-field, .ae-form > .ae-w-full, .ae-form > .ae-w-half, .ae-form > .ae-w-third, .ae-form > .ae-w-quarter { grid-column: 1 / -1; }
.ae-form > * { min-width: 0; }
.ae-form-topline { display: grid; grid-template-columns: 190px 1fr; gap: 18px; align-items: start; }
@media (max-width: 640px) { .ae-form-topline { grid-template-columns: 1fr; } }
.ae-form-topfields { display: grid; gap: 14px; }
.ae-form-footer {
	display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
	border-top: 1px solid var(--ae-border);
	position: sticky; bottom: 0;
	background: color-mix(in srgb, var(--ae-surface-2) 60%, var(--ae-surface));
	backdrop-filter: blur(8px);
	margin: 0 -20px -20px; padding: 16px 20px;
}
.ae-form-footer .ae-legal { font-size: .78rem; color: var(--ae-muted); max-width: 420px; }

.ae-rte { border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); overflow: hidden; background: var(--ae-surface); }
.ae-rte-toolbar { display: flex; gap: 2px; padding: 4px; border-bottom: 1px solid var(--ae-border); background: var(--ae-surface-2); }
.ae-rte-toolbar button { width: 28px; height: 26px; border: 0; background: none; border-radius: 5px; cursor: pointer; font-size: .8rem; color: var(--ae-muted); }
.ae-rte-toolbar button:hover { background: var(--ae-surface); color: var(--ae-text); }
.ae-rte-area { min-height: 130px; padding: 10px 12px; font-size: .9rem; outline: none; }

/* ---------- Drawer / modal ---------- */

.ae-drawer, .ae-modal, .ae-palette, .ae-lightbox-layer { position: fixed; inset: 0; z-index: 99999; }
.ae-drawer[hidden], .ae-modal[hidden], .ae-palette[hidden], .ae-lightbox-layer[hidden] { display: none; }
.ae-drawer-backdrop, .ae-modal-backdrop, .ae-palette-backdrop { position: absolute; inset: 0; background: rgba(14,17,28,.45); backdrop-filter: blur(2px); }

.ae-drawer-panel {
	position: absolute; top: 0; right: 0; bottom: 0; width: min(880px, 100%);
	background: var(--ae-surface); box-shadow: var(--ae-shadow-lg);
	display: flex; flex-direction: column; animation: ae-slide-in .22s ease;
}
@keyframes ae-slide-in { from { transform: translateX(24px); opacity: .4; } }
.ae-drawer-head, .ae-modal-head {
	display: flex; align-items: center; gap: 12px; padding: 14px 20px;
	border-bottom: 1px solid var(--ae-border); flex: none;
}
.ae-drawer-title, .ae-modal-title { flex: 1; font-size: 1.02rem; margin: 0; }
.ae-drawer-body, .ae-modal-body { padding: 20px; overflow: auto; flex: 1; }

.ae-modal-panel {
	position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
	width: min(620px, calc(100% - 32px)); max-height: calc(100vh - 64px);
	background: var(--ae-surface); border-radius: var(--ae-radius);
	box-shadow: var(--ae-shadow-lg); display: flex; flex-direction: column;
}

.ae-lightbox-layer { display: grid; place-items: center; background: rgba(8,10,18,.9); cursor: zoom-out; }
.ae-lightbox-layer img { max-width: 92vw; max-height: 92vh; border-radius: var(--ae-radius); }

.ae-palette-panel {
	position: absolute; top: 12vh; left: 50%; transform: translateX(-50%);
	width: min(620px, calc(100% - 32px));
	background: var(--ae-surface); border-radius: var(--ae-radius);
	box-shadow: var(--ae-shadow-lg); overflow: hidden;
}
.ae-palette-input { width: 100%; border: 0; padding: 16px 18px; font-size: 1rem; background: none; color: inherit; outline: none; }
.ae-palette-results { max-height: 50vh; overflow: auto; border-top: 1px solid var(--ae-border); }
.ae-palette-results button {
	display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 16px;
	border: 0; background: none; cursor: pointer; text-align: left; font-family: inherit; color: inherit; font-size: .88rem;
}
.ae-palette-results button:hover, .ae-palette-results button.is-active { background: var(--ae-surface-2); }

/* ---------- Toast ---------- */

.ae-toasts { position: fixed; bottom: 20px; right: 20px; z-index: 100000; display: grid; gap: 8px; }
.ae-toast {
	background: var(--ae-text); color: var(--ae-surface);
	padding: 11px 16px; border-radius: var(--ae-radius-sm); font-size: .86rem;
	box-shadow: var(--ae-shadow-lg); animation: ae-toast-in .2s ease;
	display: flex; align-items: center; gap: 8px; max-width: 380px;
}
.ae-toast--error { background: var(--ae-danger); color: #fff; }
.ae-toast--ok { background: var(--ae-ok); color: #fff; }
@keyframes ae-toast-in { from { transform: translateY(8px); opacity: 0; } }

.ae-notice { padding: 12px 16px; border-radius: var(--ae-radius-sm); background: var(--ae-surface-2); font-size: .88rem; margin-bottom: 14px; }
.ae-notice--error { background: color-mix(in srgb, var(--ae-danger) 10%, transparent); color: var(--ae-danger); }

/* ---------- Mappa ---------- */

.ae-map-layout { display: grid; grid-template-columns: 290px 1fr; gap: 16px; align-items: start; }
@media (max-width: 900px) { .ae-map-layout { grid-template-columns: 1fr; } }
.ae-map-filters {
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); padding: 14px; display: grid; gap: 10px;
	max-height: 80vh; overflow: auto;
}
.ae-map-filters h3 { font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--ae-muted); margin: 6px 0 0; }
.ae-check-list { display: grid; gap: 5px; max-height: 240px; overflow: auto; }
.ae-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.ae-map-canvas { border-radius: var(--ae-radius); overflow: hidden; border: 1px solid var(--ae-border); min-height: 420px; }
.ae-map-list { display: grid; gap: 3px; margin-top: 6px; max-height: 260px; overflow: auto; }

.ae-marker-pin {
	width: 28px; height: 28px; border-radius: 50% 50% 50% 0;
	transform: rotate(-45deg); display: grid; place-items: center;
	box-shadow: 0 2px 6px rgba(0,0,0,.35); border: 2px solid #fff;
}
.ae-marker-pin > * { transform: rotate(45deg); color: #fff; }
/* I gruppi di marker sono disegnati qui, senza dipendere dal foglio di
   stile del CDN: se quello non arriva, i punti si vedono lo stesso. */
.marker-cluster,
.ae-cluster {
	background: none !important;
	border: 0;
}
.ae-cluster-bubble {
	width: 38px; height: 38px; border-radius: 50%;
	display: grid; place-items: center;
	background: var(--ae-accent); color: #fff;
	font-size: .82rem; font-weight: 650; line-height: 1;
	border: 2px solid #fff;
	box-shadow: 0 2px 8px rgba(0, 0, 0, .35);
}
.ae-cluster-bubble.is-medium { width: 44px; height: 44px; font-size: .86rem; }
.ae-cluster-bubble.is-large { width: 52px; height: 52px; font-size: .9rem; }

/* Il marker singolo deve stare sopra le piastrelle in ogni caso. */
.leaflet-marker-icon .ae-marker-pin { position: relative; z-index: 1; }

.leaflet-popup-content { margin: 12px 14px; font-size: .86rem; }
.leaflet-popup-content h4 { margin: 0 0 4px; font-size: .94rem; }
.leaflet-popup-content .ae-btn { margin-top: 8px; padding: 5px 10px; font-size: .78rem; }

/* ---------- Amministrazione ---------- */

.ae-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--ae-border); margin-bottom: 18px; flex-wrap: wrap; }
.ae-tab {
	display: inline-flex; align-items: center; gap: 7px;
	padding: 9px 14px; border: 0; background: none; cursor: pointer;
	color: var(--ae-muted); font-size: .875rem; font-family: inherit;
	border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.ae-tab.is-active { color: var(--ae-accent); border-bottom-color: var(--ae-accent); font-weight: 600; }
.ae-tabpanel { display: none; }
.ae-tabpanel.is-active { display: block; }

.ae-admin-split { display: grid; grid-template-columns: 260px 1fr; gap: 18px; align-items: start; }
@media (max-width: 900px) { .ae-admin-split { grid-template-columns: 1fr; } }
.ae-admin-list { display: grid; gap: 8px; }
.ae-admin-item {
	display: flex; align-items: center; gap: 9px; padding: 9px 11px;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); cursor: pointer; width: 100%; text-align: left;
	font-family: inherit; color: inherit; font-size: .87rem;
}
.ae-admin-item:hover { border-color: var(--c, var(--ae-accent)); }
.ae-admin-item.is-active { border-color: var(--c, var(--ae-accent)); background: color-mix(in srgb, var(--c, var(--ae-accent)) 8%, transparent); }
.ae-admin-item .ae-ico { color: var(--c, var(--ae-accent)); }
.ae-admin-item small { display: block; color: var(--ae-muted); font-size: .73rem; }

/* Ricerca + barra alfabetica tipi scheda */
.ae-type-search {
	width: 100%; padding: 7px 10px; font-size: .85rem;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); color: var(--ae-text);
	outline: none; transition: border-color .15s;
	margin-bottom: 2px;
}
.ae-type-search:focus { border-color: var(--ae-accent); }
.ae-alpha-bar {
	display: flex; flex-wrap: wrap; gap: 3px; margin-bottom: 2px;
}
.ae-alpha-btn {
	min-width: 26px; height: 26px; padding: 0 5px;
	border: 1px solid var(--ae-border); border-radius: 6px;
	background: var(--ae-surface); color: var(--ae-muted);
	font-size: .72rem; font-weight: 600; cursor: pointer;
	transition: background .12s, color .12s, border-color .12s;
}
.ae-alpha-btn:hover { border-color: var(--ae-accent); color: var(--ae-accent); }
.ae-alpha-btn.is-active {
	background: var(--ae-accent); border-color: var(--ae-accent);
	color: #fff;
}

/* Select con ricerca (tipo scheda, gruppo anagrafico) */
.ae-ss { position: relative; }
.ae-ss-native { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }
.ae-ss-toggle {
	display: flex; align-items: center; gap: 8px; width: 100%;
	text-align: left; cursor: pointer;
}
.ae-ss-toggle .ae-ss-current { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-ss-toggle .ae-ico { flex-shrink: 0; color: var(--ae-muted); transition: transform .15s; }
.ae-ss-toggle[aria-expanded="true"] { border-color: var(--ae-accent); }
.ae-ss-toggle[aria-expanded="true"] .ae-ico { transform: rotate(180deg); }

.ae-ss-panel {
	position: absolute; z-index: 60; top: calc(100% + 4px); left: 0; right: 0;
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); box-shadow: var(--ae-shadow-lg);
	padding: 9px; max-height: 340px; display: flex; flex-direction: column;
}
.ae-ss-search {
	width: 100%; padding: 7px 10px; font-size: .85rem; flex-shrink: 0;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-bg); color: var(--ae-text); outline: none;
	transition: border-color .15s;
}
.ae-ss-search:focus { border-color: var(--ae-accent); }
.ae-ss-alpha { margin: 7px 0 5px; flex-shrink: 0; }
.ae-ss-alpha .ae-alpha-btn { min-width: 21px; height: 21px; font-size: .64rem; padding: 0 3px; }
.ae-ss-list { overflow: auto; display: grid; gap: 2px; }
.ae-ss-cat {
	font-size: .64rem; text-transform: uppercase; letter-spacing: .06em;
	color: var(--ae-muted); margin: 7px 0 2px; padding: 0 4px;
}
.ae-ss-cat:first-child { margin-top: 0; }
.ae-ss-opt {
	display: block; width: 100%; text-align: left; cursor: pointer;
	padding: 6px 9px; font-size: .87rem; line-height: 1.3;
	border: 1px solid transparent; border-radius: var(--ae-radius-sm);
	background: transparent; color: var(--ae-text);
}
.ae-ss-opt:hover, .ae-ss-opt:focus { background: var(--ae-surface-2); outline: none; }
.ae-ss-opt.is-active {
	background: color-mix(in srgb, var(--ae-accent) 12%, transparent);
	color: var(--ae-accent); font-weight: 600;
}
.ae-ss-empty { color: var(--ae-muted); font-size: .82rem; padding: 10px 4px; margin: 0; text-align: center; }

/* Filtro liste lato utente (sidebar Tipologie, filtri mappa) */
.ae-tf-hide { display: none !important; }
.ae-tf-search {
	width: 100%; padding: 6px 9px; font-size: .8rem;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); color: var(--ae-text);
	outline: none; margin: 6px 0 5px; transition: border-color .15s;
}
.ae-tf-search:focus { border-color: var(--ae-accent); }
.ae-sidebar-block .ae-alpha-bar,
.ae-map-filters .ae-alpha-bar { margin-bottom: 7px; }
.ae-sidebar-block .ae-alpha-btn,
.ae-map-filters .ae-alpha-btn { min-width: 21px; height: 21px; font-size: .64rem; padding: 0 3px; }

.ae-admin-detail {
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); padding: 18px; box-shadow: var(--ae-shadow);
}

.ae-fieldrow {
	display: flex; align-items: center; gap: 10px; padding: 9px 11px;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface); margin-bottom: 6px;
}
.ae-fieldrow.is-dragging { opacity: .5; }
.ae-fieldrow .ae-drag { cursor: grab; color: var(--ae-muted); }
.ae-fieldrow-body { flex: 1; min-width: 0; }
.ae-fieldrow-body strong { font-size: .87rem; font-weight: 570; }
.ae-fieldrow-body small { display: block; color: var(--ae-muted); font-size: .73rem; }
.ae-fieldrow .ae-tagmini { font-size: .68rem; padding: 1px 6px; border-radius: 4px; background: var(--ae-surface-2); color: var(--ae-muted); }

/* L'accesso è ridisegnato in fondo al foglio («ACCESSO»). */

.ae-account-head { display: flex; gap: 16px; align-items: center; margin-bottom: 18px; }
.ae-account-head img { border-radius: 50%; }

@media (max-width: 640px) {
	.ae-main { padding: 14px; }
	.ae-nav-link span { display: none; }
	.ae-user-btn span { display: none; }
	.ae-results.ae-grid { grid-template-columns: 1fr; }
}

@media print {
	.ae-topbar, .ae-page-actions, .ae-filters, .ae-sidebar, .ae-detail-actions, .ae-toasts { display: none !important; }
	.ae-app { background: #fff; }
}

/* ---------- Importazione e manutenzione ---------- */

.ae-steps { display: flex; gap: 8px; margin: 14px 0 18px; flex-wrap: wrap; }
.ae-step {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 7px 14px 7px 8px; border-radius: 999px;
	background: var(--ae-surface-2); color: var(--ae-muted); font-size: .82rem;
}
.ae-step b {
	width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center;
	background: var(--ae-border); color: var(--ae-muted); font-size: .74rem;
}
.ae-step.is-active { background: color-mix(in srgb, var(--ae-accent) 12%, transparent); color: var(--ae-accent); font-weight: 600; }
.ae-step.is-active b { background: var(--ae-accent); color: #fff; }
.ae-step.is-done { color: var(--ae-ok); }
.ae-step.is-done b { background: var(--ae-ok); color: #fff; }

.ae-import-drop {
	border: 2px dashed var(--ae-border); border-radius: var(--ae-radius);
	background: var(--ae-surface-2); padding: 40px 20px;
	display: grid; gap: 6px; justify-items: center; text-align: center;
	cursor: pointer; color: var(--ae-muted); transition: border-color .15s, background .15s;
}
.ae-import-drop:hover, .ae-import-drop:focus-visible { border-color: var(--ae-accent); }
.ae-import-drop.is-drag { border-color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 8%, transparent); }
.ae-import-drop strong { color: var(--ae-text); font-size: 1rem; }
.ae-import-drop span { font-size: .82rem; }

.ae-help { margin-top: 14px; font-size: .85rem; }
.ae-help summary { cursor: pointer; color: var(--ae-accent); }
.ae-help ul { margin: 10px 0 0; padding-left: 20px; color: var(--ae-muted); line-height: 1.7; }
.ae-help strong { color: var(--ae-text); }

.ae-import-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 14px; }

.ae-table-scroll { overflow-x: auto; margin: 10px 0 18px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); }
.ae-data-table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.ae-data-table th {
	text-align: left; padding: 9px 12px; background: var(--ae-surface-2);
	font-size: .74rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ae-muted);
	position: sticky; top: 0;
}
.ae-data-table td { padding: 9px 12px; border-top: 1px solid var(--ae-border); vertical-align: top; }
.ae-data-table small { color: var(--ae-muted); }
.ae-data-table code { font-size: .78rem; background: var(--ae-surface-2); padding: 1px 5px; border-radius: 4px; }
.ae-map-table td { width: 50%; }
.ae-map-table tr.is-missing { background: color-mix(in srgb, var(--ae-warn) 6%, transparent); }
.ae-map-table small { display: block; margin-top: 4px; font-size: .74rem; }

.ae-progress { height: 8px; border-radius: 5px; background: var(--ae-border); overflow: hidden; margin: 12px 0 8px; }
.ae-progress span { display: block; height: 100%; width: 0; background: var(--ae-accent); transition: width .3s; }
.ae-progress > .ae-progress-bar { display: block; height: 100%; width: 0; background: var(--ae-accent); transition: width .3s; }
.ae-notice--warn { border-color: #d97706; background: color-mix(in srgb, #d97706 8%, transparent); }

.ae-dupe-group {
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius);
	padding: 14px; margin-bottom: 12px; background: var(--ae-surface);
}
.ae-dupe-reasons { display: flex; gap: 5px; flex-wrap: wrap; margin-bottom: 10px; }
.ae-dupe-members { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px; }
.ae-dupe-member {
	display: flex; align-items: flex-start; gap: 9px; padding: 10px;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); cursor: pointer;
}
.ae-dupe-member:has(input:checked) { border-color: var(--ae-ok); background: color-mix(in srgb, var(--ae-ok) 7%, transparent); }
.ae-dupe-member small { display: block; color: var(--ae-muted); font-size: .74rem; }
.ae-dupe-actions { display: flex; align-items: center; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.ae-dupe-actions .ae-btn { margin-left: auto; }

/* ---------- Acquisizione documenti ---------- */

.ae-scan-capture { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-bottom: 12px; }
.ae-scan-action {
	display: grid; justify-items: center; gap: 4px;
	padding: 26px 16px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius);
	background: var(--ae-surface); cursor: pointer; color: var(--ae-muted);
	font-family: inherit; transition: border-color .15s, transform .1s, background .15s;
}
.ae-scan-action:hover { border-color: var(--ae-accent); color: var(--ae-accent); transform: translateY(-2px); }
.ae-scan-action strong { color: var(--ae-text); font-size: .95rem; }
.ae-scan-action:hover strong { color: var(--ae-accent); }
.ae-scan-action span { font-size: .76rem; }

.ae-scan-drop {
	border: 2px dashed var(--ae-border); border-radius: var(--ae-radius);
	padding: 16px; display: flex; align-items: center; justify-content: center; gap: 10px;
	color: var(--ae-muted); font-size: .85rem; cursor: pointer; background: var(--ae-surface-2);
}
.ae-scan-drop:hover, .ae-scan-drop.is-drag { border-color: var(--ae-accent); color: var(--ae-accent); }

.ae-scan-pages { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.ae-scan-pages:empty { display: none; }
.ae-scan-page {
	position: relative; width: 112px; height: 150px; border-radius: var(--ae-radius-sm);
	overflow: hidden; border: 1px solid var(--ae-border); background: var(--ae-surface);
}
.ae-scan-page img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ae-scan-page-file { display: grid; place-items: center; height: 100%; gap: 6px; padding: 8px; text-align: center; color: var(--ae-muted); font-size: .7rem; word-break: break-all; }
.ae-scan-page-n {
	position: absolute; bottom: 4px; left: 4px; width: 20px; height: 20px; border-radius: 50%;
	background: rgba(0,0,0,.65); color: #fff; display: grid; place-items: center; font-size: .7rem;
}

.ae-scan-verdict {
	display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
	padding: 14px; border-radius: var(--ae-radius); margin-bottom: 16px;
	background: color-mix(in srgb, var(--c, var(--ae-accent)) 8%, transparent);
	border: 1px solid color-mix(in srgb, var(--c, var(--ae-accent)) 30%, transparent);
}
.ae-scan-verdict strong { display: block; font-size: 1.05rem; }
.ae-scan-verdict small { color: var(--ae-muted); font-size: .78rem; }

.ae-field.is-detected .ae-input { border-color: color-mix(in srgb, var(--ae-ok) 45%, var(--ae-border)); background: color-mix(in srgb, var(--ae-ok) 4%, var(--ae-surface)); }
.ae-field.is-detected .ae-chip--tag { --c: var(--ae-ok); }

/* ---------- Suggerimenti indirizzo ---------- */

.ae-field, .ae-geo-fields label, .ae-input-group { position: relative; }

.ae-suggest, .ae-geo-results, .ae-route-pop {
	position: absolute; z-index: 60; left: 0; right: 0; top: 100%;
	margin-top: 3px; max-height: 260px; overflow: auto;
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius-sm); box-shadow: var(--ae-shadow);
}
.ae-geo-results { position: static; margin-top: 0; }
.ae-suggest[hidden], .ae-geo-results[hidden], .ae-route-pop[hidden] { display: none; }

.ae-suggest button, .ae-geo-results button, .ae-route-pop button {
	display: block; width: 100%; text-align: left;
	padding: 8px 11px; border: 0; border-bottom: 1px solid var(--ae-border);
	background: none; cursor: pointer; font-size: .85rem; color: inherit; font-family: inherit;
	line-height: 1.35;
}
.ae-suggest button:last-child, .ae-geo-results button:last-child { border-bottom: 0; }
.ae-suggest button:hover, .ae-suggest button.is-active,
.ae-geo-results button:hover, .ae-geo-results button.is-active,
.ae-route-pop button:hover, .ae-route-pop button.is-active { background: var(--ae-surface-2); }
.ae-suggest-main { display: block; }
.ae-suggest-hint { display: block; color: var(--ae-muted); font-size: .74rem; margin-top: 1px; }
.ae-suggest-empty { padding: 10px 12px; color: var(--ae-muted); font-size: .82rem; }

.ae-input-group.ae-has-suggest { position: static; }

/* ---------- Barra alfabetica ---------- */

.ae-alpha {
	display: flex; flex-wrap: wrap; gap: 2px; align-items: center;
	padding: 6px; margin-bottom: 14px;
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius-sm);
}
.ae-alpha:empty { display: none; }

.ae-alpha-btn {
	min-width: 28px; height: 28px; padding: 0 7px;
	border: 0; border-radius: 6px; background: none;
	color: var(--ae-text); font-family: inherit; font-size: .82rem; font-weight: 550;
	cursor: pointer; transition: background .12s, color .12s;
}
.ae-alpha-btn:first-child { padding: 0 12px; margin-right: 4px; }
.ae-alpha-btn:hover:not(:disabled) { background: var(--ae-surface-2); }
.ae-alpha-btn.is-active { background: var(--ae-accent); color: #fff; }
.ae-alpha-btn.is-empty { color: var(--ae-border); cursor: default; }
.ae-app[data-theme="dark"] .ae-alpha-btn.is-empty { color: #3a4050; }

@media (max-width: 640px) {
	.ae-alpha { gap: 0; padding: 4px; }
	.ae-alpha-btn { min-width: 24px; height: 26px; padding: 0 4px; font-size: .78rem; }
	.ae-alpha-btn:first-child { padding: 0 9px; }
}

/* ---------- Finestra "che cosa faccio" ---------- */

.ae-choice-list { display: grid; gap: 8px; margin-bottom: 14px; }

.ae-choice-card {
	display: flex; align-items: flex-start; gap: 12px; width: 100%;
	padding: 13px 14px; text-align: left; cursor: pointer;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius);
	background: var(--ae-surface); font-family: inherit; color: inherit;
	position: relative; transition: border-color .15s, background .15s, transform .1s;
}
.ae-choice-card:hover:not(:disabled) { border-color: var(--c, var(--ae-accent)); transform: translateY(-1px); }
.ae-choice-card.is-primary {
	border-color: var(--ae-accent);
	background: color-mix(in srgb, var(--ae-accent) 6%, var(--ae-surface));
}
.ae-choice-card.is-blocked { opacity: .55; cursor: not-allowed; }

.ae-choice-ico {
	width: 36px; height: 36px; border-radius: 10px; flex: none;
	display: grid; place-items: center;
	background: color-mix(in srgb, var(--c, var(--ae-accent)) 14%, transparent);
	color: var(--c, var(--ae-accent));
}
.ae-choice-card.is-primary .ae-choice-ico { background: var(--ae-accent); color: #fff; }
.ae-choice-body { flex: 1; min-width: 0; }
.ae-choice-body strong { display: block; font-size: .93rem; font-weight: 620; margin-bottom: 2px; }
.ae-choice-body small { display: block; color: var(--ae-muted); font-size: .8rem; line-height: 1.45; }
.ae-choice-fields { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.ae-choice-fields .ae-chip { font-size: .68rem; padding: 1px 7px; }
.ae-choice-flag {
	position: absolute; top: -8px; right: 12px;
	background: var(--ae-accent); color: #fff;
	font-size: .66rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
	padding: 2px 8px; border-radius: 999px;
}

/* ---------- Fatturazione ---------- */

/* ---------- Incolla e compila ---------- */

.ae-tidy-extra:not(:empty) { margin-top: 8px; }
.ae-adopt-list { display: grid; gap: 4px; margin: 8px 0 0; }
.ae-adopt-row { align-items: flex-start; }
.ae-adopt-row small { display: block; color: var(--ae-muted); font-size: .74rem; }

.ae-tidy { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 6px; }
.ae-tidy .ae-btn { padding: 4px 9px; font-size: .76rem; }
.ae-tidy-report { flex: 1 1 200px; }


.ae-paste {
	grid-column: 1 / -1;
	border: 1px dashed var(--ae-border); border-radius: var(--ae-radius);
	padding: 12px 14px; background: var(--ae-surface-2); margin-bottom: 4px;
}
.ae-paste > summary { cursor: pointer; font-weight: 570; display: flex; align-items: center; gap: 8px; }
.ae-paste[open] > summary { margin-bottom: 10px; }
.ae-paste textarea { font-size: .86rem; }
.ae-paste-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.ae-field.is-detected .ae-input,
.ae-field.is-detected .ae-geo { border-color: #16a34a; box-shadow: 0 0 0 2px color-mix(in srgb, #16a34a 14%, transparent); }

/* ---------- Suggerimenti di ricerca ---------- */

.ae-suggest-wrap { position: relative; }
.ae-suggest-box {
	position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40;
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius); box-shadow: 0 12px 32px rgba(0, 0, 0, .18);
	max-height: 380px; overflow: auto; padding: 5px;
}
.ae-suggest-item {
	display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
	padding: 8px 10px; border: 0; border-radius: var(--ae-radius-sm);
	background: none; color: inherit; font: inherit; cursor: pointer;
}
.ae-suggest-item:hover, .ae-suggest-item.is-active { background: var(--ae-surface-2); }
.ae-suggest-body { min-width: 0; }
.ae-suggest-body strong { display: block; font-weight: 570; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-suggest-body small { display: block; color: var(--ae-muted); font-size: .76rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-suggest-box mark { background: color-mix(in srgb, var(--ae-accent) 28%, transparent); color: inherit; border-radius: 3px; padding: 0 1px; }
.ae-suggest-empty { padding: 12px; color: var(--ae-muted); font-size: .86rem; }
.ae-suggest-empty small { display: block; margin-top: 4px; font-size: .76rem; }
.ae-suggest-foot { padding: 7px 10px 4px; font-size: .72rem; color: var(--ae-muted); border-top: 1px solid var(--ae-border); margin-top: 4px; }

.ae-brand-logo { height: 30px; max-width: 190px; object-fit: contain; display: block; }

.ae-logo-field {
	display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius);
	padding: 14px; background: var(--ae-surface); margin-bottom: 16px;
}
.ae-logo-preview {
	width: 190px; min-height: 96px; display: grid; place-items: center;
	border: 1px dashed var(--ae-border); border-radius: var(--ae-radius-sm);
	background: var(--ae-surface-2); padding: 10px; flex: none;
}
.ae-logo-preview img { max-width: 100%; max-height: 130px; object-fit: contain; }
.ae-logo-preview span { display: grid; justify-items: center; gap: 4px; color: var(--ae-muted); }
.ae-logo-preview small { font-size: .76rem; }
.ae-logo-side { flex: 1 1 220px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.ae-logo-side .ae-input-group { width: 140px; }

.ae-doc-logo { margin-bottom: 18px; }
.ae-doc-logo img { max-width: 280px; object-fit: contain; }


.ae-tab-panel { display: none; }
.ae-tab-panel.is-active { display: block; }

.ae-toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px; }
.ae-toolbar .ae-search-box { flex: 1 1 240px; }

.ae-w-sixth { grid-column: span 2; }
@media (max-width: 640px) { .ae-w-sixth { grid-column: span 6; } }

.ae-inv-list { display: grid; gap: 6px; }
.ae-inv-row {
	display: grid; grid-template-columns: 1fr 1.6fr 1fr auto; gap: 14px; align-items: center;
	width: 100%; text-align: left; padding: 11px 14px; font: inherit; color: inherit; cursor: pointer;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); background: var(--ae-surface);
	transition: border-color .15s, background .15s;
}
.ae-inv-row:hover { border-color: var(--ae-accent); background: var(--ae-surface-2); }
.ae-inv-row strong { display: block; font-weight: 570; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-inv-row small { color: var(--ae-muted); font-size: .76rem; }
.ae-inv-amount { text-align: right; }
@media (max-width: 720px) {
	.ae-inv-row { grid-template-columns: 1fr auto; }
	.ae-inv-who { grid-column: 1 / -1; }
}

.ae-badge {
	display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: .72rem;
	font-weight: 600; background: var(--ae-surface-2); color: var(--ae-muted); white-space: nowrap;
}
.ae-badge--bozza { background: color-mix(in srgb, #94a3b8 18%, transparent); color: #64748b; }
.ae-badge--emessa { background: color-mix(in srgb, #0ea5e9 18%, transparent); color: #0369a1; }
.ae-badge--inviata { background: color-mix(in srgb, #7c3aed 18%, transparent); color: #6d28d9; }
.ae-badge--consegnata,
.ae-badge--pagata,
.ae-badge--attivo { background: color-mix(in srgb, #16a34a 18%, transparent); color: #15803d; }
.ae-badge--scartata { background: color-mix(in srgb, #dc2626 18%, transparent); color: #b91c1c; }
.ae-badge--annullata,
.ae-badge--disdetto { background: color-mix(in srgb, #64748b 18%, transparent); color: #475569; }
.ae-badge--sospeso { background: color-mix(in srgb, #d97706 18%, transparent); color: #b45309; }

/* Righe del documento: ogni riga è una card con le etichette sopra i campi,
   descrizione larga in alto, numeri in basso, totale in evidenza. */
.ae-inv-lines { display: grid; gap: 10px; margin-bottom: 12px; counter-reset: riga; }
.ae-inv-line {
	position: relative; display: grid; grid-template-columns: 34px 1fr 34px; gap: 10px; align-items: start;
	padding: 12px 12px 12px 8px; border: 1px solid var(--ae-border); border-radius: 14px;
	background: linear-gradient(180deg, color-mix(in srgb, var(--ae-surface) 96%, var(--ae-accent)), var(--ae-surface));
	box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -18px rgba(15, 23, 42, .25);
	transition: box-shadow .2s, border-color .2s, transform .2s;
}
.ae-inv-line:hover { border-color: color-mix(in srgb, var(--ae-accent) 35%, var(--ae-border)); box-shadow: 0 10px 30px -18px rgba(15, 23, 42, .35); }
.ae-inv-line:focus-within { border-color: var(--ae-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ae-accent) 14%, transparent); }
.ae-inv-line-n { counter-increment: riga; display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; margin-top: 18px; border-radius: 50%; font-size: .74rem; font-weight: 800; color: #fff; background: linear-gradient(135deg, var(--ae-accent), color-mix(in srgb, var(--ae-accent) 60%, #06b6d4)); box-shadow: 0 4px 10px -4px var(--ae-accent); }
.ae-inv-line-n::before { content: counter(riga); }
.ae-inv-line-main { display: grid; gap: 10px; min-width: 0; }
.ae-inv-line-tools { display: flex; flex-direction: column; gap: 4px; margin-top: 18px; }
.ae-inv-cell { display: grid; gap: 4px; min-width: 0; }
.ae-inv-cell-l { font-size: .66rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ae-muted); padding-left: 2px; }
.ae-inv-cell-in { display: flex; align-items: center; gap: 6px; }
.ae-inv-cell-in > .ae-input { flex: 1 1 auto; min-width: 0; }
.ae-inv-cell-in > i { font-style: normal; font-size: .8rem; font-weight: 700; color: var(--ae-muted); }
.ae-inv-cell--desc .ae-input { font-size: .95rem; font-weight: 500; }
.ae-inv-line .ae-input, .ae-inv-line select.ae-input { padding: 9px 10px; font-size: .88rem; }
.ae-inv-line-nums { display: grid; grid-template-columns: 90px 96px minmax(130px, 1fr) 90px minmax(170px, 1.4fr) minmax(120px, .9fr); gap: 10px; align-items: end; }
.ae-inv-cell--total { justify-self: stretch; }
.ae-inv-line-total { display: flex; align-items: center; justify-content: flex-end; min-height: 39px; padding: 0 12px; border-radius: 10px; font-size: 1rem; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 9%, transparent); }
.ae-inv-line .ae-line-item { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 10px; }
.ae-inv-line .ae-line-item.is-on { color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 12%, transparent); }
.ae-inv-line [data-del-line]:hover { color: #b91c1c; background: #fef2f2; }
@media (max-width: 1100px) {
	.ae-inv-line-nums { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
	.ae-inv-line { grid-template-columns: 30px 1fr 30px; padding: 10px; }
	.ae-inv-line-nums { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ae-inv-cell--total { grid-column: 1 / -1; }
}

/* ---------- Tablet (≤1000px): campi a 12 colonne più larghi ---------- */

@media (max-width: 1000px) {
	.ae-w-quarter { grid-column: span 6; }
}

/* ---------- ≤900px: sidebar e colonne si impilano (già in base),
              topbar a due righe con menu scorrevole ---------- */

@media (max-width: 900px) {
	/* La barra dei menu sotto i 720px è ridefinita in fondo al foglio
	   («La barra sul telefono»): qui resta solo il resto. */
	.ae-sidebar { position: static; }

	/* La mappa con altezza inline si adatta allo schermo. */
	.ae-map-canvas[style] { height: clamp(320px, 58dvh, 560px) !important; }
	.ae-map-filters { max-height: none; }
	/* Su schermi stretti prima la mappa, poi i filtri. */
	.ae-map-layout > .ae-map-filters { order: 2; }
	.ae-map-layout > .ae-map-canvas { order: 1; }
}

/* ---------- ≤720px: telefono ---------- */

@media (max-width: 720px) {
	.ae-app { border-radius: 10px; }

	.ae-page-head { gap: 10px; margin-bottom: 14px; }
	.ae-page-actions { width: 100%; }
	.ae-page-actions .ae-btn { flex: 1 1 auto; justify-content: center; }

	.ae-form-grid, .ae-values { gap: 12px; }
	.ae-w-quarter { grid-column: span 12; }
	.ae-w-sixth { grid-column: span 6; }

	.ae-filters { gap: 8px; }
	.ae-search-box { flex: 1 1 100%; }
	.ae-toolbar .ae-search-box { flex: 1 1 100%; }

	/* Card statistiche: due per riga. */
	.ae-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
	.ae-stat { padding: 12px; gap: 10px; }
	.ae-stat-ico { width: 34px; height: 34px; }
	.ae-stat-n { font-size: 1.25rem; }

	.ae-results.ae-grid { grid-template-columns: 1fr; gap: 10px; }
	.ae-rel-grid, .ae-dupe-members, .ae-check-grid { grid-template-columns: 1fr; }
	.ae-plan-grid { grid-template-columns: 1fr; }
	.ae-social-grid { grid-template-columns: 1fr; }

	/* Dettaglio: testata compatta, azioni a tutta larghezza. */
	.ae-detail-head { gap: 12px; }
	.ae-detail-actions { width: 100%; }
	.ae-detail-actions .ae-btn { flex: 1 1 auto; justify-content: center; }

	/* Il piede del form sticky segue il padding ridotto dei contenitori. */
	.ae-form-footer { margin: 0 -14px -14px; padding: 12px 14px calc(12px + env(safe-area-inset-bottom)); }
	.ae-form-footer .ae-btn--primary { flex: 1 1 auto; justify-content: center; }

	/* Drawer: a tutto schermo, con area sicura. */
	.ae-drawer-panel { width: 100%; }
	.ae-drawer-head, .ae-modal-head { padding: 12px 14px; }
	.ae-drawer-body, .ae-modal-body { padding: 14px; }
	.ae-drawer-body { padding-bottom: calc(14px + env(safe-area-inset-bottom)); }

	/* Modale: diventa un foglio dal basso, sempre tutto visibile. */
	.ae-modal-panel {
		top: auto; bottom: 0; left: 0; right: 0;
		transform: none; width: 100%;
		max-height: min(92dvh, 100%);
		border-radius: var(--ae-radius) var(--ae-radius) 0 0;
		padding-bottom: env(safe-area-inset-bottom);
		animation: ae-sheet-in .22s ease;
	}

	/* Palette comandi: attaccata in alto, larghezza piena. */
	.ae-palette-panel { top: max(10px, env(safe-area-inset-top)); width: calc(100% - 20px); }
	.ae-palette-results { max-height: 60dvh; }

	/* Toast: centrati in basso, dentro l'area sicura. */
	.ae-toasts {
		left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom));
		justify-items: center;
	}
	.ae-toast { max-width: 100%; }

	/* Documento fattura: i totali non restano schiacciati a destra. */
	.ae-inv-print { padding: 14px; }
	.ae-doc-client { text-align: left; }
	.ae-inv-totals, .ae-doc-totals { width: 100%; }


	.ae-scan-capture { grid-template-columns: repeat(2, 1fr); gap: 8px; }
	.ae-scan-action { padding: 18px 10px; }

	.ae-import-drop { padding: 28px 14px; }
	.ae-steps { gap: 6px; }
	.ae-step { font-size: .76rem; padding: 6px 11px 6px 7px; }

	.ae-account-head { flex-wrap: wrap; }
	.ae-logo-preview { width: 100%; }
}

@keyframes ae-sheet-in { from { transform: translateY(24px); opacity: .5; } }

/* ---------- ≤480px: schermi molto stretti ---------- */

@media (max-width: 480px) {
	.ae-user-btn span { display: none; }
	.ae-user-btn { padding: 3px; }
	.ae-brand-logo { max-width: 130px; }
	.ae-brand-name { font-size: .95rem; }

	.ae-stats-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); }
	.ae-scan-capture { grid-template-columns: 1fr 1fr; }
	.ae-grid-3 { grid-template-columns: 1fr 1fr; }
	.ae-import-summary { grid-template-columns: 1fr 1fr; }

	.ae-inv-row { padding: 10px 12px; gap: 8px; }
	.ae-item { padding: 12px; }
	.ae-item-preview dt { min-width: 72px; }

	.ae-uploader--avatar .ae-thumb { width: 96px; height: 96px; }
	.ae-thumb { width: 78px; height: 78px; }
	.ae-scan-page { width: 96px; height: 128px; }

	.ae-geo-map, .ae-route-map { height: 200px; }

	.ae-daterange { flex-wrap: wrap; }
	.ae-daterange .ae-input { min-width: 130px; flex: 1; }
}

/* ---------- Tocco: bersagli comodi, niente zoom involontario ---------- */

@media (pointer: coarse) {
	.ae-btn { min-height: 42px; }
	.ae-icon-btn { width: 40px; height: 40px; }
	.ae-viewmode .ae-icon-btn { width: 36px; height: 34px; }
	.ae-input { min-height: 44px; }
	.ae-app select.ae-input { min-height: 44px; }
	textarea.ae-input { min-height: 84px; }
	.ae-nav-link { padding: 9px 13px; }
	.ae-alpha-btn { min-width: 30px; height: 32px; }
	.ae-pager button { min-width: 40px; height: 40px; }
	.ae-tab { padding: 11px 14px; }
	.ae-chip button { padding: 4px 2px 4px 4px; }
	.ae-thumb-x, .ae-rel-x { width: 28px; height: 28px; }
	.ae-suggest button, .ae-geo-results button, .ae-relation-results button,
	.ae-palette-results button, .ae-suggest-item, .ae-usermenu-pop a,
	.ae-mini-row, .ae-admin-item { min-height: 44px; }
	.ae-checklist-row input[type=checkbox], .ae-check input[type=checkbox],
	.ae-choice input[type=checkbox], .ae-choice input[type=radio] { width: 20px; height: 20px; }
}

/* iOS ingrandisce la pagina se un campo ha testo sotto i 16px:
   sui telefoni i campi salgono a 16px e lo zoom non scatta. */
@media (max-width: 720px) and (pointer: coarse) {
	.ae-input, .ae-palette-input, .ae-rte-area { font-size: 16px; }
}

/* ---------- Preferenze di sistema ---------- */

@media (prefers-reduced-motion: reduce) {
	.ae-app *, .ae-app *::before, .ae-app *::after,
	.ae-drawer-panel, .ae-modal-panel, .ae-toast {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------- Schermi bassi (telefono in orizzontale) ---------- */

@media (max-height: 480px) {
	.ae-topbar { position: static; }
	.ae-modal-panel { max-height: 100dvh; border-radius: 0; }
	.ae-palette-panel { top: 8px; }
	.ae-palette-results { max-height: calc(100dvh - 120px); }
	.ae-form-footer { position: static; }
}

/* Avviso di cambio tipologia nel form scheda. */
.ae-hint--typechange {
	color: var(--ae-warn);
	background: color-mix(in srgb, var(--ae-warn) 9%, transparent);
	border: 1px solid color-mix(in srgb, var(--ae-warn) 30%, transparent);
	border-radius: var(--ae-radius-sm);
	padding: 7px 10px;
}

/* ==========================================================
   SCADENZARIO, SCHEDA CONTABILE, INCASSI, MODELLI
   ========================================================== */

.ae-aging-grid {
	display: grid;
	grid-template-columns: 1.3fr repeat(5, 1fr);
	gap: 10px;
	margin: 14px 0 18px;
}

.ae-aging-total,
.ae-aging-cell {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 12px 14px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	background: var(--ae-surface);
	text-align: left;
	font: inherit;
	cursor: default;
}

.ae-aging-cell {
	cursor: pointer;
	border-left: 3px solid var(--c, #94a3b8);
	transition: transform .12s ease, box-shadow .12s ease;
}

.ae-aging-cell:hover { transform: translateY(-1px); box-shadow: var(--ae-shadow-sm); }
.ae-aging-cell.is-active { background: color-mix(in srgb, var(--c) 10%, transparent); border-color: var(--c); }

.ae-aging-total { background: var(--ae-surface-2, #f8fafc); }
.ae-aging-n { font-size: 17px; font-weight: 700; }
.ae-aging-l { font-size: 12px; color: var(--ae-muted); }
.ae-aging-sub { font-size: 11px; color: var(--ae-muted); }
.ae-aging-sub.is-bad { color: #dc2626; font-weight: 600; }

.ae-inv-row--ledger {
	display: flex;
	align-items: center;
	gap: 8px;
	padding-right: 10px;
}

.ae-inv-row--ledger .ae-inv-open {
	flex: 1;
	display: grid;
	grid-template-columns: 150px 1fr 160px auto;
	align-items: center;
	gap: 12px;
	background: none;
	border: 0;
	padding: 12px 14px;
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
}

/* --- incassi sul documento --- */

.ae-pay-block {
	margin-top: 18px;
	padding: 14px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	background: var(--ae-surface-2, #f8fafc);
}

.ae-pay-head { display: flex; align-items: center; gap: 10px; }
.ae-pay-head .ae-section-title { margin: 0; }

.ae-pay-state {
	margin-left: auto;
	font-size: 12px;
	font-weight: 600;
	padding: 3px 9px;
	border-radius: 999px;
}

.ae-pay-state.is-open { background: #fef3c7; color: #92400e; }
.ae-pay-state.is-closed { background: #dcfce7; color: #166534; }

.ae-pay-list { list-style: none; margin: 10px 0; padding: 0; }

.ae-pay-list li {
	display: grid;
	grid-template-columns: 90px 110px 1fr auto;
	align-items: center;
	gap: 10px;
	padding: 6px 0;
	border-bottom: 1px dashed var(--ae-border);
	font-size: 13px;
}

.ae-pay-amt { font-weight: 700; }
.ae-pay-how, .ae-pay-date { color: var(--ae-muted); }

/* --- scheda contabile --- */

.ae-table--st { width: 100%; border-collapse: collapse; margin-bottom: 16px; font-size: 13px; }
.ae-table--st th { text-align: left; font-size: 12px; color: var(--ae-muted); border-bottom: 1px solid var(--ae-border); padding: 6px 4px; }
.ae-table--st td { padding: 6px 4px; border-bottom: 1px solid var(--ae-border); }
.ae-table--st .ae-num, .ae-num { text-align: right; }
.ae-mov--incasso td { color: #166534; }
.ae-warn { color: #dc2626; font-weight: 600; }
.ae-chip--billing { --c: #16a34a; }

@media (max-width: 900px) {
	.ae-aging-grid { grid-template-columns: 1fr 1fr; }
	.ae-inv-row--ledger { flex-wrap: wrap; }
	.ae-inv-row--ledger .ae-inv-open { grid-template-columns: 1fr; gap: 4px; }
	.ae-pay-list li { grid-template-columns: 1fr auto; }
}

/* ==========================================================
   AGENDA: GIORNO, SETTIMANA, MESE, ANNO
   ========================================================== */

.ae-cal-bar {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	margin: 14px 0 12px;
	padding: 10px 12px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	background: var(--ae-surface);
}

.ae-cal-nav { display: flex; align-items: center; gap: 6px; }
.ae-cal-title { font-size: 16px; margin-left: 8px; text-transform: capitalize; }
.ae-cal-views { display: flex; gap: 4px; margin-left: auto; }
.ae-cal-filters { display: flex; gap: 8px; }
.ae-cal-filters .ae-select { width: auto; min-width: 150px; }

.ae-cal { overflow-x: auto; }

.ae-cal-grid {
	min-width: 640px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	overflow: hidden;
	background: var(--ae-surface);
}

.ae-cal-headrow,
.ae-cal-bodyrow {
	display: grid;
	grid-template-columns: 62px repeat(var(--cols), minmax(120px, 1fr));
}

.ae-cal-headrow { border-bottom: 1px solid var(--ae-border); background: var(--ae-surface-2, #f8fafc); }

.ae-cal-col-head {
	padding: 8px 10px;
	font-size: 13px;
	border-left: 1px solid var(--ae-border);
	border-top: 3px solid var(--c, transparent);
	display: flex;
	flex-direction: column;
	gap: 1px;
}

.ae-cal-col-head small { color: var(--ae-muted); font-size: 11px; }
.ae-cal-col-head.is-today { background: color-mix(in srgb, var(--ae-primary, #4f46e5) 8%, transparent); }

.ae-cal-hours { border-right: 1px solid var(--ae-border); }

.ae-cal-hour {
	position: relative;
	border-bottom: 1px solid var(--ae-border);
	font-size: 11px;
	color: var(--ae-muted);
}

.ae-cal-hour span { position: absolute; top: -7px; right: 6px; background: var(--ae-surface); padding: 0 3px; }

.ae-cal-col {
	position: relative;
	border-left: 1px solid var(--ae-border);
	cursor: copy;
}

.ae-cal-col.is-today { background: color-mix(in srgb, var(--ae-primary, #4f46e5) 4%, transparent); }
.ae-cal-line { position: absolute; left: 0; right: 0; height: 1px; background: var(--ae-border); pointer-events: none; }

.ae-cal-closed {
	position: absolute;
	left: 0;
	right: 0;
	background: repeating-linear-gradient(45deg, rgba(148,163,184,.16) 0 6px, transparent 6px 12px);
	pointer-events: none;
}

.ae-cal-ev {
	position: absolute;
	left: 3px;
	right: 3px;
	display: flex;
	flex-direction: column;
	gap: 1px;
	padding: 3px 6px;
	border: 0;
	border-left: 3px solid var(--c, #4f46e5);
	border-radius: 5px;
	background: color-mix(in srgb, var(--c) 16%, var(--ae-surface));
	color: inherit;
	font: inherit;
	font-size: 12px;
	line-height: 1.25;
	text-align: left;
	overflow: hidden;
	cursor: pointer;
	transition: transform .1s ease, box-shadow .1s ease;
}

.ae-cal-ev:hover { transform: translateY(-1px); box-shadow: var(--ae-shadow-sm); z-index: 3; }
.ae-cal-ev strong { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ae-cal-ev small { color: var(--ae-muted); font-size: 11px; }

/* --- mese --- */

.ae-cal-month { border: 1px solid var(--ae-border); border-radius: var(--ae-radius); overflow: hidden; background: var(--ae-surface); }
.ae-cal-dows, .ae-cal-cells { display: grid; grid-template-columns: repeat(7, 1fr); }
.ae-cal-dows { background: var(--ae-surface-2, #f8fafc); border-bottom: 1px solid var(--ae-border); }
.ae-cal-dow { padding: 7px 8px; font-size: 12px; color: var(--ae-muted); text-transform: uppercase; letter-spacing: .04em; }

.ae-cal-cell {
	min-height: 108px;
	padding: 5px 6px;
	border-left: 1px solid var(--ae-border);
	border-top: 1px solid var(--ae-border);
	display: flex;
	flex-direction: column;
	gap: 2px;
	cursor: copy;
}

.ae-cal-cell.is-other { background: var(--ae-surface-2, #f8fafc); opacity: .6; }
.ae-cal-cell.is-today { background: color-mix(in srgb, var(--ae-primary, #4f46e5) 7%, transparent); }
.ae-cal-cell.is-closed { background: repeating-linear-gradient(45deg, rgba(148,163,184,.14) 0 6px, transparent 6px 12px); }
.ae-cal-daynum { font-size: 12px; font-weight: 600; color: var(--ae-muted); }
.ae-cal-cell.is-today .ae-cal-daynum { color: var(--ae-primary, #4f46e5); }

.ae-cal-pill {
	display: flex;
	align-items: center;
	gap: 5px;
	padding: 2px 5px;
	border: 0;
	border-radius: 4px;
	background: color-mix(in srgb, var(--c) 15%, transparent);
	font: inherit;
	font-size: 11.5px;
	text-align: left;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	cursor: pointer;
}

.ae-cal-pill i { width: 6px; height: 6px; border-radius: 50%; background: var(--c); flex: none; }
.ae-cal-more { border: 0; background: none; font: inherit; font-size: 11px; color: var(--ae-muted); text-align: left; cursor: pointer; padding: 0 5px; }

/* --- anno ---
   Le regole portano il prefisso .ae-app perché i temi di WordPress
   vestono i <button> a modo loro (dimensioni, colori, ombre): senza
   specificità i mesi sparivano, bianchi su bianco. */

.ae-app .ae-cal-year { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }

.ae-app .ae-y-month {
	--m: var(--ae-accent);
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	padding: 10px 10px 12px;
	background: var(--ae-surface);
	box-shadow: var(--ae-shadow);
	min-width: 0;
	transition: transform .15s, box-shadow .15s;
}
.ae-app .ae-y-month:hover { transform: translateY(-2px); box-shadow: 0 16px 34px -20px color-mix(in srgb, var(--m) 70%, #000); }
/* ogni stagione ha il suo colore */
.ae-app .ae-y-month:nth-child(12), .ae-app .ae-y-month:nth-child(1), .ae-app .ae-y-month:nth-child(2) { --m: #38bdf8; }
.ae-app .ae-y-month:nth-child(3), .ae-app .ae-y-month:nth-child(4), .ae-app .ae-y-month:nth-child(5) { --m: #34d399; }
.ae-app .ae-y-month:nth-child(6), .ae-app .ae-y-month:nth-child(7), .ae-app .ae-y-month:nth-child(8) { --m: #f59e0b; }
.ae-app .ae-y-month:nth-child(9), .ae-app .ae-y-month:nth-child(10), .ae-app .ae-y-month:nth-child(11) { --m: #f97316; }

.ae-app .ae-y-title {
	display: flex; justify-content: space-between; align-items: center; gap: 8px;
	width: 100%; min-height: 0; margin: 0 0 8px; padding: 6px 8px;
	border: 0; border-radius: 8px; box-shadow: none; text-shadow: none;
	background: color-mix(in srgb, var(--m) 14%, transparent);
	color: color-mix(in srgb, var(--m) 70%, var(--ae-text));
	font-family: inherit; font-size: .9rem; font-weight: 700; line-height: 1.2; letter-spacing: -.01em; text-transform: capitalize;
	cursor: pointer; text-align: left;
}
.ae-app .ae-y-title:hover { background: color-mix(in srgb, var(--m) 24%, transparent); color: var(--ae-text); }
.ae-app .ae-y-title small {
	font-size: .72rem; font-weight: 650; line-height: 1; padding: 3px 8px; border-radius: 999px;
	background: var(--m); color: #fff; min-width: 1.6em; text-align: center;
}
.ae-app .ae-y-title small:empty { display: none; }

.ae-app .ae-y-dows, .ae-app .ae-y-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.ae-app .ae-y-dows { margin-bottom: 3px; }
.ae-app .ae-y-dows span { font-size: .66rem; font-weight: 600; text-transform: uppercase; color: var(--ae-muted); text-align: center; line-height: 1.6; }
.ae-app .ae-y-dows span:nth-child(n+6) { color: color-mix(in srgb, var(--m) 70%, var(--ae-muted)); }

.ae-app .ae-y-day {
	aspect-ratio: 1; min-height: 0; min-width: 0; margin: 0; padding: 0;
	display: flex; align-items: center; justify-content: center;
	border: 0; border-radius: 6px; box-shadow: none; text-shadow: none;
	font-family: inherit; font-size: .74rem; font-weight: 500; line-height: 1; font-variant-numeric: tabular-nums;
	cursor: pointer; color: var(--ae-text);
	/* la giacenza del giorno: più prenotazioni, più caldo il colore */
	background:
		linear-gradient(0deg, color-mix(in srgb, var(--m) calc(var(--q, 0) * 90%), transparent) 0 100%),
		var(--ae-surface-2);
	transition: transform .1s, box-shadow .1s;
}
.ae-app .ae-y-day:nth-child(7n+6), .ae-app .ae-y-day:nth-child(7n+7) { background-color: color-mix(in srgb, var(--m) 8%, var(--ae-surface-2)); }
.ae-app .ae-y-day:hover { transform: scale(1.12); box-shadow: 0 0 0 2px var(--m); z-index: 1; position: relative; }
.ae-app .ae-y-day.is-out { background: none; cursor: default; pointer-events: none; }
.ae-app .ae-y-day.is-today { background: var(--m); color: #fff; font-weight: 700; box-shadow: 0 0 0 3px color-mix(in srgb, var(--m) 30%, transparent); }

/* --- legenda, risorse, scheda --- */

.ae-cal-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 12px; font-size: 12px; color: var(--ae-muted); }
.ae-legend-item { display: inline-flex; align-items: center; gap: 6px; }
.ae-legend-item i { width: 10px; height: 10px; border-radius: 3px; }

.ae-res-row {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border: 1px solid var(--ae-border);
	border-left: 3px solid var(--c, #4f46e5);
	border-radius: var(--ae-radius);
	margin-bottom: 8px;
}

.ae-res-row.is-off { opacity: .55; }
.ae-res-body { flex: 1; display: flex; flex-direction: column; }
.ae-res-body small { color: var(--ae-muted); font-size: 12px; }

.ae-days { display: flex; flex-wrap: wrap; gap: 6px; }
.ae-day { position: relative; }
.ae-day input { position: absolute; opacity: 0; }

.ae-day span {
	display: inline-block;
	padding: 5px 11px;
	border: 1px solid var(--ae-border);
	border-radius: 999px;
	font-size: 12px;
	cursor: pointer;
	user-select: none;
}

.ae-day input:checked + span {
	background: color-mix(in srgb, var(--ae-primary, #4f46e5) 14%, transparent);
	border-color: var(--ae-primary, #4f46e5);
	font-weight: 600;
}

.ae-bk-states { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.ae-bk-states .ae-btn.is-active { border-color: var(--c); background: color-mix(in srgb, var(--c) 14%, transparent); font-weight: 600; }

.ae-kv { display: grid; grid-template-columns: 130px 1fr; gap: 6px 14px; margin: 0 0 16px; font-size: 14px; }
.ae-kv dt { color: var(--ae-muted); font-size: 13px; }
.ae-kv dd { margin: 0; }

.ae-linkish { border: 0; background: none; padding: 0; font: inherit; color: var(--ae-primary, #4f46e5); cursor: pointer; text-decoration: underline; }

.ae-notice--ok { border-color: #16a34a; background: color-mix(in srgb, #16a34a 8%, transparent); }

@media (max-width: 900px) {
	.ae-app .ae-cal-year { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ae-cal-views { margin-left: 0; }
	.ae-cal-cell { min-height: 84px; }
	.ae-kv { grid-template-columns: 1fr; gap: 2px 0; }
	.ae-kv dd { margin-bottom: 8px; }
}

@media (max-width: 600px) {
	.ae-app .ae-cal-year { grid-template-columns: 1fr; }
}

/* L'agenda senza risorse: un vicolo cieco spiegato, non un tabellone muto */
.ae-empty-booking p { margin: 8px 0 0; max-width: 62ch; }
.ae-empty-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }

/* Il calendario mentre carica: resta leggibile, non sparisce */
.ae-cal.is-loading { opacity: .55; transition: opacity .12s ease; }

/* La griglia si scorre dentro di sé: la pagina non salta a ogni vista */
.ae-cal-bodyrow { max-height: 62vh; overflow-y: auto; }

.ae-cal-vuoto {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 12px 0 0;
	padding: 11px 14px;
	border: 1px dashed var(--ae-border);
	border-radius: var(--ae-radius);
	color: var(--ae-muted);
	font-size: 13.5px;
}

.ae-cal-vuoto strong { color: var(--ae-text, inherit); font-weight: 600; }

/* ==========================================================
   MAGAZZINO
   ========================================================== */

.ae-item-row {
	display: grid;
	grid-template-columns: 140px 1fr 150px auto;
	align-items: center;
	gap: 12px;
}

.ae-item-row.is-off { opacity: .5; }

.ae-num.is-neg { color: #dc2626; font-weight: 600; }
.ae-num.is-pos { color: #16a34a; font-weight: 600; }

.ae-table--st td .ae-dot {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	margin-right: 5px;
	vertical-align: baseline;
}

/* Il banco di registrazione: gli input in fila, la lista sotto */
.ae-rilev .ae-section-title { margin-top: 22px; }

.ae-rilev .ae-count {
	display: inline-block;
	min-width: 22px;
	padding: 1px 7px;
	margin-left: 6px;
	border-radius: 999px;
	background: color-mix(in srgb, var(--ae-primary, #4f46e5) 14%, transparent);
	font-size: 12px;
	font-weight: 600;
	text-align: center;
}

.ae-rilev .ae-suggest-box { position: static; margin-top: 6px; max-height: 210px; }
.ae-btn.ae-w-full { width: 100%; justify-content: center; }

@media (max-width: 900px) {
	.ae-item-row { grid-template-columns: 1fr; gap: 4px; }
}

/* ==========================================================
   L'ANAGRAFICA COME PUNTO DI PARTENZA
   ========================================================== */

.ae-doable {
	margin: 18px 0 22px;
	padding: 16px 18px 18px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	background: var(--ae-surface-2, #f8fafc);
}

.ae-doable h3 {
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 0 0 14px;
	font-size: 13px;
	letter-spacing: .03em;
	text-transform: uppercase;
	color: var(--ae-muted);
}

.ae-doable-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 8px;
}

.ae-do {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 11px 13px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	background: var(--ae-surface);
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
	transition: transform .1s ease, box-shadow .1s ease, border-color .1s ease;
}

.ae-do:hover { transform: translateY(-1px); box-shadow: var(--ae-shadow-sm); border-color: var(--ae-primary, #4f46e5); }
.ae-do span { display: flex; flex-direction: column; gap: 1px; }
.ae-do strong { font-weight: 600; font-size: 13.5px; }
.ae-do small { color: var(--ae-muted); font-size: 11.5px; line-height: 1.35; }
.ae-do .ae-ico { flex: none; margin-top: 1px; color: var(--ae-primary, #4f46e5); }

.ae-do--go { border-color: var(--ae-primary, #4f46e5); background: color-mix(in srgb, var(--ae-primary, #4f46e5) 7%, var(--ae-surface)); }
.ae-do--danger .ae-ico { color: var(--ae-danger, #dc2626); }
.ae-do--danger:hover { border-color: var(--ae-danger, #dc2626); }

/* L'interruttore della fatturazione */
.ae-switch {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin-top: 14px;
	padding-top: 14px;
	border-top: 1px solid var(--ae-border);
	cursor: pointer;
}

.ae-switch input { position: absolute; opacity: 0; width: 0; height: 0; }

.ae-switch-track {
	flex: none;
	position: relative;
	width: 42px;
	height: 24px;
	margin-top: 2px;
	border-radius: 999px;
	background: var(--ae-border);
	transition: background .15s ease;
}

.ae-switch-track i {
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 3px rgba(0,0,0,.25);
	transition: transform .15s ease;
}

.ae-switch input:checked + .ae-switch-track { background: #16a34a; }
.ae-switch input:checked + .ae-switch-track i { transform: translateX(18px); }
.ae-switch input:focus-visible + .ae-switch-track { outline: 2px solid var(--ae-primary, #4f46e5); outline-offset: 2px; }

.ae-switch-text { display: flex; flex-direction: column; gap: 2px; }
.ae-switch-text strong { font-size: 13.5px; }
.ae-switch-text small { color: var(--ae-muted); font-size: 12px; max-width: 62ch; line-height: 1.4; }

/* ==========================================================
   IL PANNELLO A TUTTO SCHERMO
   ========================================================== */

/* Il pulsante mostra l'icona dell'azione che farebbe, non dello stato */
.ae-drawer-full { width: auto; padding: 0 12px; gap: 6px; border: 1px solid var(--ae-border); border-radius: 999px; font-size: .8rem; font-weight: 600; color: var(--ae-muted); }
.ae-drawer-full:hover { color: var(--ae-text); border-color: var(--ae-accent); }
.ae-drawer-full .ae-full-on, .ae-drawer-full .ae-full-off { display: inline-flex; align-items: center; gap: 6px; }
.ae-drawer-full em { font-style: normal; }
.ae-drawer-full .ae-full-off,
.ae-drawer.is-full .ae-drawer-full .ae-full-on { display: none; }
.ae-drawer.is-full .ae-drawer-full .ae-full-off { display: inline-flex; }

/* A tutto schermo il pannello parte sotto la barra dei menu, non
   sopra: la navigazione resta visibile e cliccabile, così da dentro
   un modulo si esce anche senza chiudere il pannello. Lo spazio da
   lasciare lo misura il JS sulla barra vera (`--ae-top-gap`), perché
   dipende dal tema e da quante voci vanno a capo. */
.ae-drawer.is-full {
	top: var(--ae-top-gap, 0px);
}

.ae-drawer.is-full .ae-drawer-panel {
	top: 0; right: 0; bottom: 0; left: 0;
	width: 100%;
	animation: ae-grow .18s ease;
}

/* La barra resta sopra a qualunque cosa: se un tema la rende fissa e
   il calcolo sbaglia di un pixel, si vede lei, non il velo grigio. */
.ae-app .ae-topbar { z-index: 100000; }
/* …ma non sopra il menu del tema: le tendine di GeneratePress (che
   sta a 500) devono poter scendere sopra la nostra barra, e la barra
   di WordPress (99999) tenere le sue. La barra resta comunque sopra
   la mappa e i contenuti della pagina, che stanno nel loro scomparto. */
.ae-app .ae-topbar { z-index: 300; }
.ae-map-canvas, .ae-geo-map, .ae-route-map, .ae-mini-map, .ae-acq-map, .ae-main { isolation: isolate; }
.ae-main { position: relative; z-index: 1; }

@keyframes ae-grow { from { transform: scale(.99); opacity: .5; } }

.ae-drawer.is-full .ae-drawer-head {
	padding-inline: max(24px, calc(50% - 620px));
}

/* A tutto schermo il contenuto non si spalma da bordo a bordo: si
   centra su una colonna leggibile, ed è lì che i campi respirano. */
.ae-drawer.is-full .ae-drawer-body {
	padding: 26px max(24px, calc(50% - 620px)) 40px;
}

/* La griglia dei moduli è già a dodici colonne: allargata la colonna,
   i campi si affiancano da soli. Qui serve solo un po' più d'aria. */
@media (min-width: 1100px) {
	.ae-drawer.is-full .ae-form-grid { gap: 18px 22px; }
}

/* La barra dei pulsanti in fondo segue la stessa colonna */
.ae-drawer.is-full .ae-form-footer {
	padding-inline: max(24px, calc(50% - 620px));
}

@media (max-width: 900px) {
	/* Sul telefono il pannello è già a tutta pagina: il pulsante non serve */
	.ae-drawer-full { display: none; }
	.ae-drawer.is-full .ae-drawer-body,
	.ae-drawer.is-full .ae-drawer-head { padding-inline: 16px; }
}

/* ==========================================================
   LA FATTURA COMINCIA DAL CLIENTE
   ========================================================== */

.ae-lookup .ae-lookup-box { margin: 14px 0 18px; }

.ae-lk-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }

.ae-lk-row {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 12px 14px;
	border: 1px solid var(--ae-border);
	border-radius: var(--ae-radius);
	background: var(--ae-surface);
	font: inherit;
	color: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color .12s ease, transform .12s ease;
}

.ae-lk-row:hover { border-color: var(--ae-primary, #4f46e5); transform: translateY(-1px); }
.ae-lk-row[disabled] { opacity: .55; cursor: progress; }

.ae-lk-src {
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 10.5px;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--ae-muted);
}

.ae-lk-row strong { font-size: 15px; font-weight: 600; }
.ae-lk-row small { color: var(--ae-muted); font-size: 12.5px; }

/* Il legame fra riga di fattura e articolo di magazzino */
.ae-line-item { color: var(--ae-muted); }
.ae-line-item.is-on { color: #16a34a; background: color-mix(in srgb, #16a34a 12%, transparent); }
.ae-line-item.is-on:hover { background: color-mix(in srgb, #16a34a 20%, transparent); }

/* =========================================================
   Home — la plancia di comando
   Il cielo è sempre notte, in entrambi i temi: lo spazio non
   ha una versione chiara. Il ponte sotto segue il tema.
   ========================================================= */

.ae-home {
	--sky-0: #05071a;
	--sky-1: #0d1238;
	--sky-2: #1b1f5c;
	--sky-ink: #eef1ff;
	--sky-muted: #9aa3d1;
	--sky-line: rgba(160, 172, 255, .16);
	--sky-glass: rgba(20, 26, 70, .55);
}
.ae-app[data-view="home"] .ae-main { padding: 0; }

.ae-sky {
	position: relative; overflow: hidden; color: var(--sky-ink);
	background:
		radial-gradient(900px 420px at 12% -10%, rgba(124, 131, 255, .28), transparent 60%),
		radial-gradient(700px 380px at 88% 12%, rgba(52, 211, 153, .16), transparent 60%),
		radial-gradient(600px 500px at 60% 110%, rgba(244, 114, 182, .16), transparent 60%),
		linear-gradient(180deg, var(--sky-0) 0%, var(--sky-1) 55%, var(--sky-2) 100%);
	display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	gap: 24px; padding: 48px 48px 40px; align-items: center;
	isolation: isolate;
}
.ae-sky::after {
	content: ""; position: absolute; inset: auto 0 0; height: 56px; pointer-events: none;
	background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--ae-bg) 70%, transparent));
	z-index: 2;
}
.ae-sky-canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }

/* --- Hero --- */

.ae-hero { position: relative; z-index: 3; max-width: 560px; }
.ae-hero-kicker {
	display: inline-flex; align-items: center; gap: 9px; margin: 0 0 14px;
	font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: var(--sky-muted);
}
.ae-hero-dot { width: 8px; height: 8px; border-radius: 50%; background: #34d399; box-shadow: 0 0 0 4px rgba(52, 211, 153, .18), 0 0 14px #34d399; animation: ae-pulse 2.4s ease-in-out infinite; }
@keyframes ae-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(.75); opacity: .7; } }

.ae-hero-title { font-size: clamp(1.9rem, 3.6vw, 3rem); font-weight: 700; letter-spacing: -.03em; margin: 0 0 10px; line-height: 1.08; color: #fff; }
.ae-hero-title em { font-style: normal; background: linear-gradient(90deg, #c7ccff, #7c83ff 45%, #38bdf8); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ae-hero-sub { font-size: 1.02rem; color: var(--sky-muted); margin: 0 0 22px; max-width: 48ch; min-height: 1.6em; transition: opacity .3s; }
.ae-home.is-loading .ae-hero-sub { opacity: .5; }

.ae-hero-search {
	display: flex; align-items: center; gap: 12px; width: 100%; max-width: 520px;
	padding: 13px 16px; margin-bottom: 18px;
	border: 1px solid var(--sky-line); border-radius: 14px; cursor: text;
	background: var(--sky-glass); color: var(--sky-muted); font: inherit; font-size: .95rem; text-align: left;
	backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06), 0 10px 30px -18px rgba(0, 0, 0, .8);
	transition: border-color .2s, box-shadow .2s;
}
.ae-hero-search:hover, .ae-hero-search:focus-visible { border-color: rgba(124, 131, 255, .7); box-shadow: 0 0 0 4px rgba(124, 131, 255, .18); outline: 0; color: var(--sky-ink); }
.ae-hero-search span { flex: 1; }
.ae-hero-search kbd { font: 600 .72rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; padding: 4px 7px; border-radius: 6px; border: 1px solid var(--sky-line); color: var(--sky-muted); }

.ae-hero-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ae-launch {
	display: inline-flex; align-items: center; gap: 7px; padding: 9px 13px;
	border-radius: 999px; border: 1px solid var(--sky-line); cursor: pointer;
	background: rgba(255, 255, 255, .04); color: var(--sky-ink); font: inherit; font-size: .86rem; font-weight: 550; text-decoration: none;
	transition: background .15s, transform .15s, border-color .15s;
}
.ae-launch:hover { background: rgba(124, 131, 255, .22); border-color: rgba(124, 131, 255, .6); transform: translateY(-1px); color: #fff; }
.ae-launch:first-child { background: linear-gradient(135deg, #7c83ff, #4f46e5); border-color: transparent; color: #fff; box-shadow: 0 10px 24px -12px #4f46e5; }

/* --- Il sistema: sole al centro, pianeti in orbita --- */

.ae-system {
	position: relative; z-index: 3; aspect-ratio: 1; max-width: 560px; width: 100%; margin: 0 auto;
	--R: 50%;
}
.ae-orbits, .ae-orbit { position: absolute; inset: 0; border-radius: 50%; }
.ae-orbit { border: 1px solid var(--sky-line); }
.ae-orbit--1 { inset: 27%; }
.ae-orbit--2 { inset: 19%; border-style: dashed; }
.ae-orbit--3 { inset: 11%; }
.ae-orbit--4 { inset: 3%; }

.ae-sun {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	display: grid; place-items: center; gap: 6px; text-align: center; z-index: 2;
}
.ae-sun-core {
	width: 74px; height: 74px; border-radius: 50%; display: grid; place-items: center; color: #fff;
	background: radial-gradient(circle at 35% 30%, #fff3c4, #fbbf24 35%, #f97316 75%, #b45309);
	box-shadow: 0 0 0 10px rgba(251, 191, 36, .10), 0 0 0 22px rgba(251, 191, 36, .05), 0 0 60px 8px rgba(251, 191, 36, .45);
	animation: ae-sun 6s ease-in-out infinite;
}
@keyframes ae-sun { 0%, 100% { box-shadow: 0 0 0 10px rgba(251, 191, 36, .10), 0 0 0 22px rgba(251, 191, 36, .05), 0 0 60px 8px rgba(251, 191, 36, .45); } 50% { box-shadow: 0 0 0 14px rgba(251, 191, 36, .13), 0 0 0 30px rgba(251, 191, 36, .05), 0 0 80px 14px rgba(251, 191, 36, .5); } }
.ae-sun-name { font-size: .78rem; font-weight: 650; letter-spacing: .1em; text-transform: uppercase; color: var(--sky-muted); }

.ae-planets { position: absolute; inset: 0; }
.ae-orbiter {
	position: absolute; inset: 0; pointer-events: none;
	animation: ae-orbit var(--dur) linear infinite;
	animation-delay: calc(var(--dur) * -1 * var(--phase));
	/* le orbite disegnate sopra stanno a 23%, 31%, 39%, 47% dal centro */
	--r: calc(23% + var(--ring) * 8%);
}
.ae-orbiter .ae-planet {
	animation: ae-orbit-back var(--dur) linear infinite;
	animation-delay: calc(var(--dur) * -1 * var(--phase));
}
@keyframes ae-orbit { from { transform: rotate(0turn); } to { transform: rotate(1turn); } }
@keyframes ae-orbit-back { from { transform: translate(-50%, -50%) rotate(0turn); } to { transform: translate(-50%, -50%) rotate(-1turn); } }
.ae-system:hover .ae-orbiter, .ae-system:hover .ae-planet,
.ae-system:focus-within .ae-orbiter, .ae-system:focus-within .ae-planet { animation-play-state: paused; }

.ae-planet {
	position: absolute; left: 50%; top: 50%; pointer-events: auto;
	/* il pianeta sta a distanza --r dal sole, lungo l'asse dell'orbita */
	margin-left: var(--r);
	display: grid; grid-template-columns: auto auto; align-items: center; gap: 10px;
	padding: 6px 12px 6px 6px; border-radius: 999px; border: 1px solid transparent;
	background: none; color: var(--sky-ink); text-decoration: none; font: inherit; cursor: pointer; white-space: nowrap;
	transition: background .2s, border-color .2s, box-shadow .2s;
}
.ae-planet:hover, .ae-planet:focus-visible {
	background: var(--sky-glass); border-color: color-mix(in srgb, var(--c) 55%, transparent);
	box-shadow: 0 16px 40px -18px #000; outline: 0; z-index: 5;
	backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.ae-planet-body {
	width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; color: #fff;
	background: radial-gradient(circle at 32% 28%, color-mix(in srgb, var(--c) 30%, #fff), var(--c) 45%, color-mix(in srgb, var(--c) 45%, #000) 100%);
	box-shadow: 0 0 0 5px color-mix(in srgb, var(--c) 18%, transparent), 0 0 24px color-mix(in srgb, var(--c) 55%, transparent), inset -6px -6px 12px rgba(0, 0, 0, .35);
	transition: transform .2s;
}
.ae-planet:hover .ae-planet-body { transform: scale(1.12); }
.ae-planet-cap { display: grid; line-height: 1.15; }
.ae-planet-cap strong { font-size: .84rem; font-weight: 650; }
.ae-planet-n { font-size: 1.05rem; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; color: #fff; }
.ae-planet-cap small { font-size: .7rem; color: var(--sky-muted); }

/* La casella dei pianeti è vuota finché non arrivano i dati: si vede
   almeno il sole. */
.ae-home.is-loading .ae-planets { opacity: .35; }

/* --- Il ponte --- */

.ae-deck { padding: 8px clamp(12px, 1rem + 1.2vw, 24px) clamp(12px, 1rem + 1.2vw, 24px); }

.ae-telemetry { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0 0 18px; position: relative; z-index: 4; }
.ae-tile {
	display: grid; grid-template-columns: auto 1fr; grid-template-areas: "ico n" "ico l" "ico h"; column-gap: 12px; align-items: center;
	padding: 14px 16px; border-radius: var(--ae-radius); text-decoration: none; color: inherit;
	background: var(--ae-surface); border: 1px solid var(--ae-border); box-shadow: var(--ae-shadow);
	transition: transform .15s, border-color .15s, box-shadow .15s;
}
.ae-tile:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--c) 45%, var(--ae-border)); box-shadow: 0 18px 40px -22px color-mix(in srgb, var(--c) 60%, #000); }
.ae-tile-ico { grid-area: ico; width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; color: #fff; background: linear-gradient(135deg, var(--c), color-mix(in srgb, var(--c) 60%, #000)); box-shadow: 0 6px 16px -8px var(--c); }
.ae-tile-n { grid-area: n; font-size: 1.35rem; font-weight: 700; letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1.1; }
.ae-tile-l { grid-area: l; font-size: .82rem; color: var(--ae-muted); font-weight: 550; }
.ae-tile-h { grid-area: h; font-size: .72rem; color: var(--ae-muted); opacity: .8; margin-top: 2px; }

.ae-signals { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.ae-signal { margin: 0; display: flex; flex-direction: column; }
.ae-signal h2 { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ae-signal h2 .ae-count { margin-left: auto; }
.ae-signal .ae-placeholder { flex: 1; }
.ae-sig-list { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.ae-sig-row {
	display: flex; align-items: center; gap: 12px; padding: 8px 9px; border-radius: 9px;
	text-decoration: none; color: inherit; border-left: 3px solid var(--c, var(--ae-accent));
	transition: background .15s;
}
.ae-sig-row:hover { background: var(--ae-surface-2); }
.ae-sig-time { font-size: .78rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--ae-muted); min-width: 74px; }
.ae-sig-body { flex: 1; min-width: 0; display: grid; line-height: 1.25; }
.ae-sig-body strong { font-size: .9rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-sig-body small { font-size: .76rem; color: var(--ae-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-sig-amt { font-weight: 650; font-variant-numeric: tabular-nums; font-size: .9rem; }
.ae-sig-more { display: inline-flex; align-items: center; gap: 5px; margin-top: 12px; font-size: .82rem; font-weight: 550; color: var(--ae-accent); text-decoration: none; }
.ae-sig-more:hover { text-decoration: underline; }

.ae-console {
	display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 18px; padding: 10px 14px;
	border-radius: var(--ae-radius-sm); border: 1px solid var(--ae-border); background: var(--ae-surface-2);
	font: 500 .76rem/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--ae-muted);
}
.ae-console span, .ae-console a, .ae-console button { display: inline-flex; align-items: center; gap: 5px; }
.ae-console b { color: var(--ae-text); font-weight: 650; }
.ae-console a, .ae-console button.ae-link { color: var(--ae-accent); text-decoration: none; background: none; border: 0; font: inherit; cursor: pointer; padding: 0; }
.ae-console .is-ok { color: var(--ae-ok); }
.ae-console .is-warn { color: var(--ae-warn); }
.ae-console-sep { width: 1px; height: 14px; background: var(--ae-border); }

/* --- Schermi stretti: le orbite diventano una griglia --- */

@media (max-width: 980px) {
	.ae-sky { grid-template-columns: 1fr; padding: 36px 24px 32px; }
	.ae-system { max-width: 480px; }
	.ae-telemetry { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
	.ae-sky { padding: 28px 16px 24px; }
	.ae-hero-actions .ae-launch span { display: none; }
	.ae-hero-actions .ae-launch:first-child span { display: inline; }
	.ae-system { aspect-ratio: auto; max-width: none; }
	.ae-orbits, .ae-sun { display: none; }
	.ae-planets { position: static; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
	.ae-orbiter { position: static; animation: none; pointer-events: auto; }
	.ae-orbiter .ae-planet { position: static; margin: 0; animation: none; transform: none; width: 100%; white-space: normal; background: var(--sky-glass); border-color: var(--sky-line); }
	.ae-signals { grid-template-columns: 1fr; }
	.ae-telemetry { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
	.ae-tile { padding: 12px; column-gap: 10px; }
	.ae-tile-n { font-size: 1.08rem; }
	.ae-tile-ico { width: 34px; height: 34px; }
}
@media (prefers-reduced-motion: reduce) {
	.ae-orbiter, .ae-orbiter .ae-planet, .ae-sun-core, .ae-hero-dot { animation: none; }
	.ae-orbiter { transform: rotate(calc(var(--phase) * 1turn)); }
	.ae-orbiter .ae-planet { transform: translate(-50%, -50%) rotate(calc(var(--phase) * -1turn)); }
}

/* ---------- Footer (1.17.2) — scuro in entrambi i temi ---------- */

.ae-footer {
	margin-top: auto;
	background: #151a22; color: #c7cdd6;
	padding: 36px 22px 24px;
	font-size: .875rem; line-height: 1.6;
	border-top: 1px solid #232a35;
}
.ae-footer a { color: #4a90ff; text-decoration: none; }
.ae-footer a:hover { text-decoration: underline; }
.ae-footer-inner {
	max-width: 1100px; margin: 0 auto;
	display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 32px; align-items: start;
}
.ae-footer-logo { display: block; height: 40px; width: auto; max-width: 100%; margin: 0 0 14px; }
.ae-footer-brand { color: #fff; font-weight: 600; margin: 0 0 2px; }
.ae-footer-role { color: #9aa3b0; margin: 0 0 12px; }
.ae-footer-addr { font-style: normal; }
.ae-footer h4 { margin: 0 0 10px; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: #8e97a5; font-weight: 600; }
.ae-footer p { margin: 0 0 6px; }
.ae-footer-mono { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.ae-footer-bottom {
	max-width: 1100px; margin: 26px auto 0; padding-top: 14px;
	border-top: 1px solid #2a313c;
	display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px;
	font-size: .75rem; color: #8e97a5;
}
.ae-app[data-view="home"] .ae-footer { border-top-color: #2a313c; }
@media (max-width: 760px) {
	.ae-footer { padding: 26px 16px 20px; }
	.ae-footer-inner { grid-template-columns: 1fr; gap: 20px; }
}
@media print { .ae-footer { display: none; } }

/* ---------- Recapiti aggiuntivi (email e telefoni con etichetta) ---------- */

.ae-contacts { margin-top: 6px; }
.ae-contact-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.ae-contact-list:empty { margin-bottom: 0; }
.ae-contact-row {
	display: grid; grid-template-columns: auto minmax(90px, 1fr) minmax(0, 2fr) auto; gap: 6px; align-items: center;
	padding: 6px; border-radius: var(--ae-radius-sm); background: var(--ae-surface-2);
}
.ae-contact-row .ae-input { min-height: 0; padding: 7px 10px; font-size: .88rem; }
.ae-contact-row .ae-contact-label { text-transform: capitalize; }
.ae-contact-ico { width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; color: #fff; background: var(--ae-accent); flex: none; }
.ae-contact-row[data-kind="tel"] .ae-contact-ico, .ae-contact-card[data-kind="tel"] .ae-contact-ico { background: #16a34a; }
.ae-contact-row[data-kind="email"] .ae-contact-ico, .ae-contact-card[data-kind="email"] .ae-contact-ico { background: #0ea5e9; }
.ae-contact-remove { color: var(--ae-muted); }
.ae-contact-remove:hover { color: var(--ae-danger); }
.ae-contact-add { display: flex; flex-wrap: wrap; gap: 6px; }
.ae-btn--sm { padding: 6px 10px; font-size: .82rem; }

.ae-detail-contacts { padding: 0 0 14px; }
.ae-detail-contacts h3 { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ae-contact-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; }
.ae-contact-card {
	display: flex; align-items: center; gap: 10px; padding: 8px 10px;
	border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); background: var(--ae-surface);
	text-decoration: none; color: inherit; transition: border-color .15s, background .15s;
}
.ae-contact-card:hover { border-color: var(--ae-accent); background: var(--ae-surface-2); }
.ae-contact-body { flex: 1; min-width: 0; display: grid; line-height: 1.2; }
.ae-contact-body small { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--ae-muted); }
.ae-contact-body strong { font-size: .92rem; font-weight: 600; overflow-wrap: anywhere; }
.ae-contact-card .ae-copy { opacity: .5; }
.ae-contact-card:hover .ae-copy { opacity: 1; }
@media (max-width: 560px) {
	.ae-contact-row { grid-template-columns: auto minmax(0, 1fr) auto; }
	.ae-contact-row .ae-contact-value { grid-column: 2 / span 2; }
}

/* ---------- Leggibilità: etichetta / valore ---------- */
.ae-values .ae-value { margin: 0 0 10px; border: 1px solid var(--ae-border); border-radius: 8px; overflow: hidden; background: var(--ae-surface); }
.ae-values .ae-value > dt { display: block; margin: 0; padding: 5px 10px; background: var(--ae-label-bg, #1f2937); color: var(--ae-label-fg, #fff); font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1.4; }
.ae-values .ae-value > dd { margin: 0; padding: 8px 10px; color: var(--ae-text); font-size: 15px; line-height: 1.45; font-weight: 500; }
.ae-values .ae-value > dd .ae-pre { font-size: 14px; font-weight: 400; }
.ae-app[data-theme="dark"] { --ae-label-bg: #e5e7eb; --ae-label-fg: #111827; }

/* ---------- IMU ---------- */
.ae-imu { margin: 18px 0 8px; }
.ae-imu-year { font-weight: 400; opacity: .7; }
.ae-imu-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin: 10px 0; }
.ae-imu-cell { border: 1px solid var(--ae-border); border-radius: 8px; padding: 8px 10px; background: var(--ae-surface); }
.ae-imu-cell span { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--ae-muted); }
.ae-imu-cell b { display: block; font-size: 16px; margin-top: 2px; }
.ae-imu-cell small { display: block; color: var(--ae-muted); font-size: 11px; margin-top: 2px; }
.ae-imu-total { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 14px; padding: 12px 14px; border-radius: 10px; background: color-mix(in srgb, var(--ae-accent) 12%, transparent); border: 1px solid color-mix(in srgb, var(--ae-accent) 35%, transparent); }
.ae-imu-total span { font-size: 12px; text-transform: uppercase; letter-spacing: .05em; color: var(--ae-muted); }
.ae-imu-total b { font-size: 24px; grid-row: 1 / span 2; }
.ae-imu-total small { color: var(--ae-muted); }
.ae-imu-total.is-exempt { background: color-mix(in srgb, #16a34a 12%, transparent); border-color: color-mix(in srgb, #16a34a 35%, transparent); }
.ae-imu-warn { display: flex; gap: 6px; align-items: center; color: #b45309; font-size: .85rem; margin: 8px 0 0; }
.ae-imu-note { color: var(--ae-muted); font-size: .78rem; margin: 8px 0 0; }
.ae-imu-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.ae-imu-table th, .ae-imu-table td { padding: 5px 6px; border-bottom: 1px solid var(--ae-border); text-align: left; white-space: nowrap; }
.ae-imu-table input { width: 70px; }
.ae-imu-table input[data-r="fonte"] { width: 220px; }

/* ---------- Particella catastale ---------- */
.ae-parcel { margin: 18px 0 8px; }
.ae-parcel-ref { font-weight: 400; opacity: .7; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: .85em; }
.ae-parcel-map { height: 260px; border-radius: 10px; border: 1px solid var(--ae-border); overflow: hidden; margin: 8px 0; }
.ae-parcel-meta { color: var(--ae-muted); font-size: .8rem; margin: 4px 0 8px; }
.ae-parcel-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 6px 0; }
.ae-parcel-note { color: var(--ae-muted); font-size: .78rem; margin: 8px 0 0; }
.ae-acq-catasto { margin-top: 10px; }
.ae-acq-catasto ol { margin: 6px 0 4px 18px; padding: 0; }
.ae-acq-catasto li { margin: 3px 0; }

/* ---------- Acquisizione unificata ---------- */
.ae-acq-sources { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.ae-acq-source { display: grid; gap: 6px; justify-items: start; text-align: left; padding: 14px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius); background: var(--ae-surface); cursor: pointer; color: var(--ae-text); transition: border-color .15s, transform .15s; }
.ae-acq-source:hover { border-color: var(--ae-accent); transform: translateY(-1px); }
.ae-acq-source.is-active { border-color: var(--ae-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ae-accent) 20%, transparent); }
.ae-acq-source.is-off { opacity: .5; cursor: not-allowed; }
.ae-acq-source .ae-ico { color: var(--ae-accent); }
.ae-acq-source strong { font-size: .95rem; }
.ae-acq-source span { font-size: .78rem; color: var(--ae-muted); line-height: 1.35; }
.ae-acq-form { margin-top: 14px; }
.ae-acq-form h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; }
.ae-acq-drop { border: 2px dashed var(--ae-border); border-radius: var(--ae-radius); padding: 18px; text-align: center; background: var(--ae-surface-2); }
.ae-acq-drop.is-drag { border-color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 8%, transparent); }
.ae-acq-drop p { margin: 6px 0 10px; color: var(--ae-muted); }
.ae-acq-drop-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.ae-acq-filelist { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; justify-content: center; }
.ae-acq-filelist .ae-chip button { border: 0; background: transparent; cursor: pointer; color: inherit; font-weight: 700; }
.ae-acq-or { text-align: center; color: var(--ae-muted); margin: 10px 0; font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; }
.ae-acq-paste { min-height: 160px; max-height: 420px; overflow: auto; padding: 10px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); background: var(--ae-surface); font-size: .86rem; }
.ae-acq-paste:empty::before { content: attr(data-placeholder); color: var(--ae-muted); }
.ae-acq-paste table { border-collapse: collapse; font-size: .8rem; }
.ae-acq-paste td, .ae-acq-paste th { border: 1px solid var(--ae-border); padding: 2px 6px; }
.ae-acq-portals { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.ae-acq-voice { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.ae-acq-area { display: grid; grid-template-columns: 1fr 300px; gap: 12px; }
.ae-acq-map { height: 380px; border-radius: var(--ae-radius); overflow: hidden; border: 1px solid var(--ae-border); }
.ae-acq-area-tools { display: flex; gap: 6px; margin-bottom: 8px; }
.ae-acq-area-tools .ae-input { flex: 1; }
.ae-acq-cats { display: grid; gap: 4px; margin: 8px 0; max-height: 220px; overflow: auto; }
.ae-acq-summary { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.ae-acq-summary .ae-stat { min-width: 120px; width: auto; flex: 1 1 140px; cursor: default; }
.ae-acq-summary .ae-stat.is-ok b { color: #16a34a; }
.ae-acq-summary .ae-stat.is-bad b { color: var(--ae-danger); }
.ae-acq-table-wrap { overflow: auto; border: 1px solid var(--ae-border); border-radius: var(--ae-radius); max-height: 460px; }
.ae-acq-table { width: 100%; border-collapse: collapse; font-size: .82rem; }
.ae-acq-table th { position: sticky; top: 0; background: var(--ae-label-bg, #1f2937); color: var(--ae-label-fg, #fff); text-align: left; padding: 6px 8px; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; white-space: nowrap; }
.ae-acq-table th small { display: block; font-weight: 400; opacity: .7; text-transform: none; letter-spacing: 0; }
.ae-acq-table td { padding: 5px 8px; border-bottom: 1px solid var(--ae-border); max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-acq-table tr.is-skip td, .ae-acq-table tr.is-invalid td { opacity: .6; }
.ae-acq-table tr.is-invalid .ae-acq-status { background: var(--ae-danger); color: #fff; }
.ae-acq-table tr.is-update .ae-acq-status { background: #d97706; color: #fff; }
.ae-acq-table tr.is-create .ae-acq-status { background: #16a34a; color: #fff; }
.ae-acq-dests { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-bottom: 10px; }
.ae-acq-dest { display: grid; gap: 4px; justify-items: start; text-align: left; padding: 12px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius); background: var(--ae-surface); cursor: pointer; color: var(--ae-text); }
.ae-acq-dest.is-active { border-color: var(--ae-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ae-accent) 20%, transparent); }
.ae-acq-dest:disabled { opacity: .45; cursor: not-allowed; }
.ae-acq-dest .ae-ico { color: var(--ae-accent); }
.ae-acq-dest span { font-size: .76rem; color: var(--ae-muted); }
.ae-acq-map-list { display: grid; gap: 6px; }
.ae-acq-map-row { display: grid; grid-template-columns: 1fr 24px 1fr 34px; align-items: center; gap: 8px; padding: 6px 8px; border: 1px solid var(--ae-border); border-radius: 8px; background: var(--ae-surface); }
.ae-acq-map-row.is-meta { opacity: .75; }
.ae-acq-map-col b { display: block; font-size: .86rem; }
.ae-acq-map-col small { display: block; color: var(--ae-muted); font-size: .74rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ae-acq-map-arrow { color: var(--ae-muted); text-align: center; }
.ae-acq-map-key { display: inline-flex; align-items: center; gap: 3px; color: var(--ae-muted); justify-self: end; }
.ae-acq-extras { display: grid; gap: 10px; }
.ae-acq-extras .ae-check { padding: 8px 10px; border: 1px solid var(--ae-border); border-radius: 8px; background: var(--ae-surface); }
.ae-acq-suggest { position: absolute; z-index: 30; background: var(--ae-surface); border: 1px solid var(--ae-border); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.12); display: grid; max-height: 220px; overflow: auto; margin-top: 4px; }
.ae-acq-suggest button { text-align: left; padding: 7px 10px; border: 0; background: transparent; cursor: pointer; color: var(--ae-text); }
.ae-acq-suggest button:hover { background: var(--ae-surface-2); }
.ae-acq-extras .ae-field { position: relative; }
.ae-acq-progress { padding: 30px 0; }
.ae-acq-bar { height: 12px; border-radius: 999px; background: var(--ae-surface-2); overflow: hidden; }
.ae-acq-bar span { display: block; height: 100%; background: var(--ae-accent); transition: width .3s; }
.ae-acq-created { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0; }
.ae-acq-created .ae-chip { cursor: pointer; }
.ae-acq-log pre { max-height: 240px; overflow: auto; font-size: .78rem; background: var(--ae-surface-2); padding: 10px; border-radius: 8px; }
.ae-acq-after { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; }
.ae-acq-profile { align-items: center; }
.ae-acq-profile .ae-item-actions { display: flex; gap: 6px; }
@media (max-width: 800px) {
	.ae-acq-area { grid-template-columns: 1fr; }
	.ae-acq-map-row { grid-template-columns: 1fr 1fr; }
	.ae-acq-map-arrow { display: none; }
}

/* ---------- L'assistente ---------- */

.ae-ask-btn {
	display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px; cursor: pointer;
	border: 1px solid color-mix(in srgb, var(--ae-accent) 40%, var(--ae-border)); background: color-mix(in srgb, var(--ae-accent) 10%, var(--ae-surface));
	color: var(--ae-accent); font: inherit; font-size: .84rem; font-weight: 600; transition: background .15s, transform .15s;
}
.ae-ask-btn:hover { background: color-mix(in srgb, var(--ae-accent) 18%, var(--ae-surface)); transform: translateY(-1px); }
@media (max-width: 720px) { .ae-ask-btn span { display: none; } .ae-ask-btn { padding: 7px 9px; } }

.ae-hero-ask {
	display: flex; align-items: center; gap: 10px; width: 100%; max-width: 560px; padding: 8px 8px 8px 16px; margin-bottom: 18px;
	border: 1px solid var(--sky-line); border-radius: 16px; background: var(--sky-glass); color: var(--sky-ink);
	backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06), 0 10px 30px -18px rgba(0, 0, 0, .8);
	transition: border-color .2s, box-shadow .2s;
}
.ae-hero-ask:focus-within { border-color: rgba(124, 131, 255, .7); box-shadow: 0 0 0 4px rgba(124, 131, 255, .18); }
.ae-hero-ask > .ae-ico { color: #c7ccff; flex: none; }
.ae-hero-ask-input { flex: 1; min-width: 0; border: 0; background: none; color: var(--sky-ink); font: inherit; font-size: .95rem; outline: 0; padding: 6px 0; }
.ae-hero-ask-input::placeholder { color: var(--sky-muted); }
.ae-hero-ask-go { display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px; border: 0; border-radius: 12px; cursor: pointer; background: linear-gradient(135deg, #7c83ff, #4f46e5); color: #fff; font: inherit; font-size: .86rem; font-weight: 650; }
.ae-hero-ask-search { display: inline-flex; align-items: center; gap: 5px; padding: 8px 9px; border: 1px solid var(--sky-line); border-radius: 10px; background: none; color: var(--sky-muted); cursor: pointer; font: inherit; }
.ae-hero-ask-search kbd { font: 600 .68rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; }
.ae-hero-ask-search:hover { color: var(--sky-ink); border-color: rgba(124, 131, 255, .6); }
@media (max-width: 720px) { .ae-hero-ask-go span, .ae-hero-ask-search kbd { display: none; } }

.ae-ask { display: flex; flex-direction: column; min-height: calc(100vh - 140px); }
.ae-ask-thread { flex: 1; display: flex; flex-direction: column; gap: 14px; padding-bottom: 12px; }
.ae-ask-hello { text-align: center; color: var(--ae-muted); padding: 30px 10px 10px; }
.ae-ask-hello .ae-ico { color: var(--ae-accent); }
.ae-ask-hello p { max-width: 46ch; margin: 10px auto 16px; }
.ae-ask-hints { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; }
.ae-ask-hint { padding: 7px 12px; border-radius: 999px; border: 1px solid var(--ae-border); background: var(--ae-surface); color: var(--ae-text); font: inherit; font-size: .84rem; cursor: pointer; }
.ae-ask-hint:hover { border-color: var(--ae-accent); color: var(--ae-accent); }
.ae-ask-msg { display: flex; flex-direction: column; max-width: 88%; }
.ae-ask-msg.is-user { align-self: flex-end; align-items: flex-end; }
.ae-ask-msg.is-assistant { align-self: flex-start; }
.ae-ask-bubble { padding: 11px 14px; border-radius: 16px; background: var(--ae-surface-2); font-size: .94rem; line-height: 1.5; }
.ae-ask-msg.is-user .ae-ask-bubble { background: linear-gradient(135deg, #7c83ff, #4f46e5); color: #fff; border-bottom-right-radius: 5px; }
.ae-ask-msg.is-assistant .ae-ask-bubble { border: 1px solid var(--ae-border); background: var(--ae-surface); border-bottom-left-radius: 5px; }
.ae-ask-bubble p { margin: 0 0 .5em; }
.ae-ask-bubble p:last-child { margin-bottom: 0; }
.ae-ask-bubble ul { margin: .3em 0 .5em 1.1em; padding: 0; }
.ae-ask-bubble li { margin: .2em 0; }
.ae-ask-ref, .ae-ask-src {
	display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px; border-radius: 999px; vertical-align: baseline;
	border: 1px solid color-mix(in srgb, var(--ae-accent) 35%, var(--ae-border)); background: color-mix(in srgb, var(--ae-accent) 10%, transparent);
	color: var(--ae-accent); font: inherit; font-size: .8rem; font-weight: 600; cursor: pointer; text-decoration: none;
}
.ae-ask-ref:hover, .ae-ask-src:hover { background: color-mix(in srgb, var(--ae-accent) 20%, transparent); }
.ae-ask-sources { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 6px; padding-left: 4px; font-size: .78rem; color: var(--ae-muted); }
.ae-ask-meta { display: block; margin-top: 4px; padding-left: 4px; font-size: .72rem; color: var(--ae-muted); }
.ae-ask-dots { display: inline-flex; gap: 4px; vertical-align: middle; }
.ae-ask-dots i { width: 7px; height: 7px; border-radius: 50%; background: var(--ae-accent); animation: ae-dots 1.2s ease-in-out infinite; }
.ae-ask-dots i:nth-child(2) { animation-delay: .2s; }
.ae-ask-dots i:nth-child(3) { animation-delay: .4s; }
@keyframes ae-dots { 0%, 80%, 100% { opacity: .25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
.ae-ask-form { position: sticky; bottom: 0; display: flex; gap: 8px; align-items: flex-end; padding: 10px 0 0; background: var(--ae-surface); }
.ae-ask-input { flex: 1; resize: none; }
.ae-ask-send { height: 42px; }

/* ---------- «Manda ad Alter Ego» ---------- */
.ae-acq-capture { padding: 14px 16px; margin-bottom: 14px; border-radius: var(--ae-radius); border: 1px dashed color-mix(in srgb, var(--ae-accent) 45%, var(--ae-border)); background: color-mix(in srgb, var(--ae-accent) 6%, var(--ae-surface)); }
.ae-acq-capture h4 { margin: 0 0 6px; display: flex; align-items: center; gap: 6px; }
.ae-acq-capture p { margin: 0 0 10px; font-size: .9rem; }
.ae-acq-capture-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 8px; }
.ae-acq-bookmarklet { cursor: grab; }
.ae-acq-bookmarklet:active { cursor: grabbing; }
.ae-acq-portals { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }

/* ---------- Microfono ---------- */
.ae-hero-ask-mic, .ae-ask-mic { position: relative; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.ae-hero-ask-mic { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--sky-line); background: none; color: var(--sky-muted); padding: 0; flex: none; }
.ae-hero-ask-mic:hover { color: var(--sky-ink); border-color: rgba(124, 131, 255, .6); }
.ae-ask-mic { height: 42px; width: 46px; padding: 0; }
.is-listening { color: #fff !important; background: #ef4444 !important; border-color: #ef4444 !important; animation: ae-listen 1.2s ease-in-out infinite; }
@keyframes ae-listen { 0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, .55); } 50% { box-shadow: 0 0 0 9px rgba(239, 68, 68, 0); } }

/* Il campo della home: il tema lo dipinge di bianco, qui è cielo. */
.ae-app .ae-hero-ask input.ae-hero-ask-input,
.ae-app .ae-hero-ask input.ae-hero-ask-input:focus { background: transparent; border: 0; box-shadow: none; outline: 0; color: var(--sky-ink); padding: 6px 0; margin: 0; min-height: 0; height: auto; font-size: .95rem; border-radius: 0; }
.ae-app .ae-hero-ask input.ae-hero-ask-input::placeholder { color: var(--sky-muted); opacity: 1; }

/* Il tasto per uscire dal pannello: con la scritta, come «Tutto schermo».
   A tutto schermo la barra dei menu è coperta, e la via d'uscita deve
   vedersi senza cercarla. */
.ae-drawer-close { width: auto; padding: 0 12px; gap: 6px; border: 1px solid var(--ae-border); border-radius: 999px; font-size: .8rem; font-weight: 600; color: var(--ae-muted); }
.ae-drawer-close:hover { color: var(--ae-danger); border-color: var(--ae-danger); }
.ae-drawer-close em { font-style: normal; }
@media (max-width: 560px) { .ae-drawer-close em, .ae-drawer-full em { display: none; } .ae-drawer-close, .ae-drawer-full { padding: 0 10px; } }

/* ---------- Voce narrante ---------- */
.ae-ask-speak { height: 42px; width: 46px; padding: 0; color: var(--ae-muted); }
.ae-ask-speak.is-on { color: #fff; background: var(--ae-accent); border-color: var(--ae-accent); }
.ae-ask-say {
	display: inline-flex; align-items: center; justify-content: center; margin: 6px 0 0;
	width: 26px; height: 26px; padding: 0; border-radius: 50%; cursor: pointer;
	border: 1px solid var(--ae-border); background: var(--ae-surface); color: var(--ae-muted);
}
.ae-ask-say:hover { color: var(--ae-accent); border-color: var(--ae-accent); }
.ae-ask-say.is-speaking { color: #fff; background: var(--ae-accent); border-color: var(--ae-accent); animation: ae-listen 1.4s ease-in-out infinite; }

.ae-drawer-close, .ae-drawer-full { display: inline-flex; align-items: center; justify-content: center; height: 34px; }
.ae-ask-voice-slot:empty { display: none; }
.ae-ask-voice { height: 42px; max-width: 150px; font-size: .8rem; padding: 0 8px; }
@media (max-width: 720px) { .ae-ask-voice-slot { display: none; } }

/* --------------------------------------------------------------------
 * Righe fattura collegate al magazzino
 *
 * Il pulsante acceso dice che la riga esce davvero da uno scaffale.
 * Il bordo ambra dice che ne stai fatturando più di quanti ne hai:
 * è un avviso, non un divieto — il programma non sa che cosa arriva
 * domani dal fornitore.
 * ------------------------------------------------------------------ */

.ae-app .ae-inv-line.is-short { box-shadow: inset 3px 0 0 #f59e0b; }
.ae-app .ae-inv-line.is-short [data-l="quantity"] { border-color: #f59e0b; background: #fffbeb; }
.ae-app .ae-inv-line.is-short .ae-line-item { color: #b45309; }
.ae-app .ae-line-item.is-on { color: var(--ae-accent); }

/* --------------------------------------------------------------------
 * Report PDF
 *
 * Il pulsante sta in due posti soltanto: nella barra in alto, per la
 * pagina che stai guardando, e nella testata del pannello, per il
 * documento che hai aperto. Due posti si imparano; un pulsante per
 * modulo, no.
 * ------------------------------------------------------------------ */

.ae-drawer-print { width: auto; padding: 0 12px; gap: 6px; border: 1px solid var(--ae-border); border-radius: 999px; font-size: .8rem; font-weight: 600; color: var(--ae-muted); }
.ae-drawer-print:hover { color: var(--ae-text); border-color: var(--ae-accent); }
.ae-drawer-print, .ae-drawer-close, .ae-drawer-full { display: inline-flex; align-items: center; justify-content: center; height: 34px; }
.ae-drawer-print em { font-style: normal; }
.ae-app .ae-page-print svg { max-width: none; }

@media (max-width: 560px) { .ae-drawer-print em { display: none; } .ae-drawer-print { padding: 0 10px; } }
@media print { .ae-drawer-print, .ae-page-print { display: none !important; } }

/* ====================================================================
   LA BARRA DEI MENU, RIVISTA
   
   Dieci voci, un logo e cinque comandi su una riga sola: il problema
   non è lo spazio, è che ogni pezzo se ne prendeva più del dovuto e la
   barra andava a capo. Qui si stringe tutto di qualche pixel, si alza
   il contrasto delle voci — erano grigio su bianco, si leggevano male
   — e i comandi a destra diventano pulsanti riconoscibili invece di
   glifi sbiaditi. Sopra il cielo stellato della home la barra si
   appoggia come un vetro, non come un foglio incollato.
   ================================================================== */

.ae-app .ae-topbar {
	gap: 10px 12px;
	padding: 9px 14px;
	flex-wrap: nowrap;
	background: color-mix(in srgb, var(--ae-surface) 88%, transparent);
	backdrop-filter: saturate(160%) blur(12px);
	-webkit-backdrop-filter: saturate(160%) blur(12px);
	border-bottom: 1px solid color-mix(in srgb, var(--ae-border) 80%, transparent);
	box-shadow: 0 1px 12px rgba(15, 23, 42, .06);
}

/* Il logo è un'insegna, non un pannello: bordi tondi e un filo di
   contorno perché il suo fondo chiaro non sbatta contro la barra. */
.ae-app .ae-brand { flex: 0 0 auto; }
.ae-app .ae-brand-logo {
	height: 34px; max-width: 140px;
	border-radius: 8px;
	box-shadow: 0 0 0 1px color-mix(in srgb, var(--ae-border) 70%, transparent);
}

/* Una riga sola. Se lo schermo non basta, la barra scorre: meglio
   scorrere che perdere metà altezza della pagina in un menu. */
.ae-app .ae-nav {
	flex: 1 1 auto;
	flex-wrap: nowrap;
	gap: 1px;
	overflow-x: auto;
	scrollbar-width: none;
	scroll-snap-type: x proximity;
	-webkit-overflow-scrolling: touch;
	mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent);
}
.ae-app .ae-nav::-webkit-scrollbar { display: none; }

.ae-app .ae-nav-link {
	flex: none;
	white-space: nowrap;
	scroll-snap-align: start;
	gap: 6px;
	padding: 7px 8px;
	font-size: .84rem;
	font-weight: 550;
	color: color-mix(in srgb, var(--ae-text) 74%, transparent);
}
.ae-app .ae-nav-link svg { opacity: .8; }
.ae-app .ae-nav-link:hover {
	background: var(--ae-surface-2);
	color: var(--ae-text);
}
.ae-app .ae-nav-link:hover svg { opacity: 1; }

/* La voce attiva si vede da lontano: fondo tinto, testo del colore
   dell'applicazione e un filo di contorno che la stacca. */
.ae-app .ae-nav-link.is-active {
	background: color-mix(in srgb, var(--ae-accent) 14%, transparent);
	color: var(--ae-accent);
	font-weight: 650;
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ae-accent) 28%, transparent);
}
.ae-app .ae-nav-link.is-active svg { opacity: 1; }
.ae-app .ae-nav-link:focus-visible {
	outline: 2px solid var(--ae-accent);
	outline-offset: 1px;
}

/* I comandi a destra: pulsanti veri, con un bordo che dice dove
   cliccare. Prima erano icone grigie appoggiate sul bianco. */
.ae-app .ae-topbar-right { flex: 0 0 auto; gap: 7px; }
.ae-app .ae-topbar-right .ae-icon-btn {
	width: 36px; height: 36px;
	border-color: color-mix(in srgb, var(--ae-border) 85%, transparent);
	color: color-mix(in srgb, var(--ae-text) 68%, transparent);
	background: color-mix(in srgb, var(--ae-surface-2) 55%, transparent);
}
.ae-app .ae-topbar-right .ae-icon-btn:hover {
	color: var(--ae-accent);
	border-color: color-mix(in srgb, var(--ae-accent) 45%, transparent);
	background: color-mix(in srgb, var(--ae-accent) 10%, transparent);
}
.ae-app .ae-topbar-right .ae-icon-btn svg { width: 17px; height: 17px; max-width: none; }

.ae-app .ae-topbar-right .ae-ask-btn { height: 36px; }
.ae-app .ae-user-btn { height: 36px; padding: 0 12px 0 4px; max-width: 210px; }
.ae-app .ae-user-btn span {
	/* Un indirizzo di posta lungo si mangiava una voce di menu: qui
	   si ferma, e per intero sta nel tooltip. */
	max-width: 118px;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

@media (max-width: 1100px) {
	/* Da qui in giù le etichette costano più di quanto rendano: le
	   icone bastano, il nome della voce resta nel tooltip e quella
	   attiva tiene la sua etichetta, così sai sempre dove sei. */
	.ae-app .ae-nav-link span { display: none; }
	.ae-app .ae-nav-link { padding: 7px 9px; }
	.ae-app .ae-nav-link.is-active span { display: inline; }
	.ae-app .ae-user-btn span { display: none; }
	.ae-app .ae-user-btn { padding: 0 4px; }
}

@media (max-width: 720px) {
	.ae-app .ae-topbar { padding: 8px 12px; gap: 8px; }
	.ae-app .ae-brand-logo { height: 28px; max-width: 112px; }
}

/* Al buio il viola dell'accento perde forza sul fondo scuro: la voce
   attiva e il pulsante «Chiedi» si schiariscono quel tanto che basta
   per restare leggibili senza diventare fosforescenti. */
.ae-app[data-theme="dark"] .ae-nav-link { color: color-mix(in srgb, var(--ae-text) 80%, transparent); }
.ae-app[data-theme="dark"] .ae-nav-link.is-active {
	color: color-mix(in srgb, var(--ae-accent) 72%, #fff);
	background: color-mix(in srgb, var(--ae-accent) 24%, transparent);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ae-accent) 45%, transparent);
}
.ae-app[data-theme="dark"] .ae-ask-btn { color: color-mix(in srgb, var(--ae-accent) 70%, #fff); }
.ae-app[data-theme="dark"] .ae-topbar {
	background: color-mix(in srgb, var(--ae-surface) 82%, transparent);
	box-shadow: 0 1px 14px rgba(0, 0, 0, .35);
}

/* =========================================================
   IMPAGINAZIONE RESPONSIVE — secondo passaggio (1.23.2)
   Copre le parti nate dopo il primo layer: barra dei menu,
   schede, tabelle contabili, agenda, home, assistente.
   Viene per ultimo e vince su tutto quello sopra.
   ========================================================= */

/* ---------- La barra segue la pagina ---------- */

/* La barra si ferma sotto quello che il tema tiene fisso in cima
   (il menu di GeneratePress, la barra di amministrazione di
   WordPress): la misura la fa il JS (`--ae-top-offset`) a ogni
   scorrimento, così il menu del sito resta visibile e cliccabile
   anche in fondo alla pagina. Senza JS vale la barra di WordPress. */
.ae-app .ae-topbar { top: var(--ae-top-offset, var(--wp-admin--admin-bar--height, 0px)); }
.ae-sidebar { top: calc(var(--ae-top-offset, 0px) + 74px); }

/* Il pannello — a lato o a tutto schermo — parte sotto le barre dei
   menu, non sopra: tema e Alter Ego restano sempre a portata di clic. */
.ae-drawer { top: var(--ae-top-gap, 0px); }

/* ---------- Tabelle: scorrono nel loro riquadro, mai fuori ---------- */

.table-scroll, .ae-table-field {
	overflow-x: auto; max-width: 100%;
	-webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
}
.table-scroll { margin-bottom: 16px; }
.table-scroll .ae-table--st { margin-bottom: 0; }
.ae-table--st th, .ae-table--st td { white-space: nowrap; }
.ae-table--st td:nth-child(2) { white-space: normal; min-width: 160px; }
.ae-table-field .ae-mini-table { min-width: 420px; }
.ae-imu-table { min-width: 560px; }
.ae-acq-table-wrap { -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
.ae-cal { -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }

/* La vista mese: sette colonne che si dividono lo spazio davvero.
   Con «1fr» secco una pillola lunga allargava la sua colonna e la
   griglia sfondava a destra già sul tablet. */
.ae-cal-dows, .ae-cal-cells { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.ae-cal-cell, .ae-cal-dow { min-width: 0; }
.ae-cal-pill { max-width: 100%; }
/* Il titolo dell'appuntamento si tronca con i puntini: in un
   contenitore flex l'ellissi non scatta, in uno «block» sì. */
.ae-cal-pill { display: block; }
.ae-cal-pill i { display: inline-block; vertical-align: middle; margin: -2px 4px 0 0; }

/* ---------- Schede (amministrazione, fatture, magazzino) ---------- */

@media (max-width: 720px) {
	.ae-tabs {
		flex-wrap: nowrap; gap: 0;
		overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
		scroll-snap-type: x proximity; overscroll-behavior-x: contain;
		margin: 0 -14px 14px; padding: 0 14px;
		mask-image: linear-gradient(90deg, transparent, #000 10px, #000 calc(100% - 24px), transparent);
		-webkit-mask-image: linear-gradient(90deg, transparent, #000 10px, #000 calc(100% - 24px), transparent);
	}
	.ae-tabs::-webkit-scrollbar { display: none; }
	.ae-tab { flex: none; white-space: nowrap; scroll-snap-align: start; padding: 10px 12px; }
}

/* ---------- Scadenzario, scheda contabile, incassi ---------- */

@media (max-width: 900px) {
	.ae-aging-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ae-aging-total { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
	.ae-aging-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 12px 0 14px; }
	.ae-aging-total { grid-column: 1 / -1; flex-direction: row; align-items: baseline; gap: 10px; }
	.ae-aging-cell { padding: 10px 12px; }
	.ae-aging-n { font-size: 15px; }
	.ae-inv-row--ledger { padding-right: 8px; }
	.ae-inv-row--ledger .ae-inv-open { padding: 10px 12px; }
	.ae-pay-list li { grid-template-columns: auto 1fr auto; }
	.ae-pay-list li > :nth-child(3) { grid-column: 1 / -1; }
	.ae-pay-block { padding: 12px; }
}

/* ---------- Agenda ---------- */

@media (max-width: 720px) {
	.ae-cal-bar { gap: 8px; padding: 8px 10px; }
	.ae-cal-nav { flex: 1 1 auto; }
	.ae-cal-title { font-size: 15px; margin-left: 4px; }
	.ae-cal-views { margin-left: 0; flex: 1 1 100%; }
	.ae-cal-views .ae-btn { flex: 1 1 0; justify-content: center; padding-inline: 6px; }
	.ae-cal-filters { flex: 1 1 100%; flex-wrap: wrap; }
	.ae-cal-filters .ae-select, .ae-cal-filters .ae-input { flex: 1 1 140px; width: auto; min-width: 0; }

	.ae-cal-headrow, .ae-cal-bodyrow { grid-template-columns: 48px repeat(var(--cols), minmax(110px, 1fr)); }
	.ae-cal-bodyrow { max-height: 60dvh; }
	.ae-cal-col-head { padding: 6px 8px; font-size: 12px; }
	.ae-cal-hour span { right: 4px; }

	.ae-cal-dow { padding: 5px 3px; font-size: 10px; letter-spacing: 0; text-align: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
	.ae-cal-cell { min-height: 68px; padding: 3px 3px 4px; gap: 1px; }
	.ae-cal-daynum { font-size: 11px; }
	.ae-cal-pill { font-size: 10px; padding: 1px 4px; gap: 3px; border-radius: 3px; }
	.ae-cal-pill i { width: 5px; height: 5px; }
	.ae-cal-more { font-size: 10px; padding: 0 3px; }
	.ae-cal-legend { gap: 8px 12px; }
}

@media (max-width: 420px) {
	/* Sette colonne in 360px: resta il numero del giorno e i pallini. */
	.ae-cal-cell { min-height: 56px; }
	.ae-cal-pill { display: flex; align-items: center; width: 100%; font-size: 0; padding: 2px 3px; }
	.ae-cal-pill i { margin: 0; }
	.ae-cal-pill i { width: 6px; height: 6px; }
	.ae-cal-pill::after { content: ""; flex: 1; height: 3px; border-radius: 2px; background: color-mix(in srgb, var(--c) 45%, transparent); }
}

/* ---------- Magazzino, anagrafica come punto di partenza ---------- */

@media (max-width: 720px) {
	.ae-doable { padding: 12px 12px 14px; margin: 14px 0 18px; }
	.ae-doable-grid { grid-template-columns: 1fr; }
	.ae-res-row { flex-wrap: wrap; }
	.ae-res-row .ae-res-body { flex: 1 1 160px; }
	.ae-rilev .ae-suggest-box { max-height: 40dvh; }
}

/* ---------- Home ---------- */

@media (max-width: 720px) {
	.ae-hero { max-width: none; }
	.ae-hero-sub { font-size: .95rem; margin-bottom: 16px; }
	.ae-hero-ask { padding: 6px 6px 6px 12px; gap: 6px; border-radius: 14px; }
	.ae-hero-ask-go { padding: 8px 11px; }
	.ae-console { gap: 6px 10px; padding: 8px 10px; }
	.ae-console-sep { display: none; }
}
@media (max-width: 420px) {
	.ae-planets { gap: 6px; }
	.ae-orbiter .ae-planet { padding: 5px 8px 5px 5px; gap: 8px; }
	.ae-planet-body { width: 38px; height: 38px; }
	.ae-planet-body svg { width: 16px; height: 16px; }
	.ae-planet-cap strong { font-size: .78rem; }
	.ae-planet-n { font-size: .95rem; }
	.ae-telemetry { grid-template-columns: 1fr 1fr; }
	.ae-tile { padding: 10px; }
	.ae-hero-actions .ae-launch { padding: 8px 11px; }
}

/* ---------- L'assistente ---------- */

@media (max-width: 720px) {
	.ae-ask { min-height: calc(100dvh - 150px); }
	.ae-ask-msg { max-width: 94%; }
	.ae-ask-bubble { padding: 10px 12px; font-size: .92rem; }
	.ae-ask-form { padding-bottom: env(safe-area-inset-bottom); gap: 6px; }
	.ae-ask-send, .ae-ask-mic, .ae-ask-speak { height: 44px; }
	.ae-ask-mic, .ae-ask-speak { width: 44px; }
	.ae-ask-hello { padding: 18px 6px 6px; }
}

/* ---------- Contatti, IMU, acquisizione ---------- */

@media (max-width: 720px) {
	.ae-contact-grid { grid-template-columns: 1fr; }
	.ae-imu-total b { font-size: 20px; }
	.ae-imu-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ae-acq-sources, .ae-acq-dests { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
	.ae-acq-source, .ae-acq-dest { padding: 11px; }
	.ae-acq-map { height: clamp(240px, 45dvh, 380px); }
	.ae-acq-summary .ae-stat { flex: 1 1 calc(50% - 10px); min-width: 0; }
	.ae-acq-capture { padding: 12px; }
}
@media (max-width: 420px) {
	.ae-acq-sources, .ae-acq-dests { grid-template-columns: 1fr; }
}

/* ---------- Dettaglio: etichette e valori ---------- */

@media (max-width: 720px) {
	.ae-values { gap: 10px; }
	.ae-values .ae-value { margin: 0; }
	.ae-values .ae-value > dd { padding: 7px 10px; font-size: 14.5px; }
	.ae-detail-title h2 { overflow-wrap: anywhere; }
	.ae-detail-meta { gap: 5px; }
}

/* ---------- Il pannello: testata compatta sul telefono ---------- */

@media (max-width: 720px) {
	.ae-drawer-head { gap: 8px; padding: 10px 12px; }
	.ae-drawer-title { font-size: .95rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	.ae-drawer-close, .ae-drawer-full, .ae-drawer-print { height: 36px; }
	.ae-drawer-body { padding: 12px 12px calc(12px + env(safe-area-inset-bottom)); }
	.ae-form-footer { margin: 0 -12px -12px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); gap: 8px; }
	.ae-form-footer .ae-btn { flex: 1 1 auto; justify-content: center; }
}

/* ---------- La barra sul telefono ----------
   Il logo e i comandi restano sulla prima riga; il menu scende su una
   seconda riga tutta sua, che scorre di lato e mostra le sole icone
   (l'etichetta la tiene la voce attiva, così si sa sempre dov'è). */

@media (max-width: 720px) {
	.ae-app .ae-topbar { flex-wrap: wrap; gap: 4px 8px; padding: 8px 12px 4px; }
	.ae-app .ae-brand { min-width: 0; }
	.ae-app .ae-topbar-right { margin-left: auto; gap: 6px; }
	.ae-app .ae-topbar-right .ae-icon-btn { width: 36px; height: 36px; }
	.ae-app .ae-nav {
		order: 10; flex: 1 1 100%; width: calc(100% + 24px);
		margin: 2px -12px 0; padding: 0 12px 2px;
		gap: 2px; justify-content: flex-start;
		mask-image: linear-gradient(90deg, transparent, #000 12px, #000 calc(100% - 28px), transparent);
		-webkit-mask-image: linear-gradient(90deg, transparent, #000 12px, #000 calc(100% - 28px), transparent);
	}
	.ae-app .ae-nav-link { padding: 8px 10px; min-height: 40px; }
	.ae-app .ae-nav-link span { display: none; }
	.ae-app .ae-nav-link.is-active span { display: inline; }
	.ae-app .ae-nav-link svg { width: 18px; height: 18px; }
	.ae-app .ae-user-btn { max-width: 44px; padding: 0 4px; }
}

/* Pochi menu e schermo ampio a sufficienza: le voci si distribuiscono
   sulla riga invece di ammucchiarsi a sinistra. */
@media (min-width: 480px) and (max-width: 720px) {
	.ae-app .ae-nav { justify-content: space-between; }
	.ae-app .ae-nav-link { flex: 0 1 auto; }
}

/* Con il pannello a tutto schermo la barra resta in vista anche
   sul telefono: la misura la fa il JS, qui basta non coprirla. */
@media (max-width: 720px) {
	.ae-drawer.is-full .ae-drawer-panel { animation: none; }
	.ae-drawer.is-full .ae-drawer-head { padding: 10px 12px; }
	.ae-drawer.is-full .ae-drawer-body { padding: 12px 12px calc(12px + env(safe-area-inset-bottom)); }
	.ae-drawer.is-full .ae-form-footer { padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); }
}

/* =========================================================
   LA PAGINA INTORNO ALL'APP
   Il tema (GeneratePress, ma non solo) mette aria sopra e sotto il
   contenuto, e l'editor lascia paragrafi vuoti attorno allo shortcode:
   sotto l'app restava una fascia bianca alta quanto una schermata.
   Qui il contenuto è l'app, e il resto sta zitto.
   ========================================================= */

body.ae-page .site-content,
body.ae-page .content-area,
body.ae-page .site-main,
body.ae-page .inside-article,
body.ae-page .entry-content { min-height: 0; }
body.ae-page .inside-article,
body.ae-page .entry-content { padding-bottom: 0; margin-bottom: 0; }
body.ae-page .entry-content > :last-child { margin-bottom: 0; }
body.ae-page .site-content { padding-bottom: 0; }
/* Paragrafi vuoti e a-capo lasciati dall'editor accanto all'app. */
body.ae-page .entry-content > p:empty,
body.ae-page .entry-content > br,
body.ae-page .ae-app + p:empty,
body.ae-page .ae-app + br { display: none; }

/* =========================================================
   ACCESSO
   Una carta sola al centro, il tasto dell'impronta in cima quando il
   dispositivo sa usarla, la password sotto. Niente che distragga.
   ========================================================= */

.ae-login-wall {
	min-height: min(78vh, 720px); padding: clamp(20px, 5vw, 56px) 16px;
	display: grid; place-items: center;
	background:
		radial-gradient(700px 360px at 15% 0%, color-mix(in srgb, var(--ae-accent) 14%, transparent), transparent 65%),
		radial-gradient(600px 320px at 90% 100%, color-mix(in srgb, #0ea5e9 12%, transparent), transparent 65%),
		var(--ae-bg);
}
.ae-login-card {
	width: 100%; max-width: 420px; padding: clamp(22px, 4vw, 34px);
	background: var(--ae-surface); border: 1px solid var(--ae-border);
	border-radius: 20px; box-shadow: var(--ae-shadow-lg);
	display: grid; gap: 14px;
}
.ae-login-brand { display: grid; justify-items: center; text-align: center; gap: 4px; margin-bottom: 4px; }
.ae-login-brand .ae-brand-mark { width: 48px; height: 48px; border-radius: 14px; margin-bottom: 6px; }
.ae-login-logo { height: 44px; max-width: 200px; object-fit: contain; margin-bottom: 6px; }
.ae-login-brand h2 { font-size: 1.3rem; margin: 0; }
.ae-login-card .ae-notice { margin: 0; }

.ae-login-passkey {
	display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
	padding: 12px 14px; border-radius: 14px; cursor: pointer; font: inherit; color: inherit;
	border: 1px solid color-mix(in srgb, var(--ae-accent) 40%, var(--ae-border));
	background: linear-gradient(135deg, color-mix(in srgb, var(--ae-accent) 10%, var(--ae-surface)), var(--ae-surface));
	transition: border-color .15s, transform .15s, box-shadow .15s;
}
.ae-login-passkey:hover, .ae-login-passkey:focus-visible { border-color: var(--ae-accent); transform: translateY(-1px); box-shadow: 0 12px 28px -18px var(--ae-accent); outline: 0; }
.ae-login-passkey-ico {
	width: 50px; height: 50px; border-radius: 50%; flex: none; display: grid; place-items: center; color: #fff;
	background: linear-gradient(135deg, var(--ae-accent), color-mix(in srgb, var(--ae-accent) 55%, #000));
	box-shadow: 0 0 0 5px color-mix(in srgb, var(--ae-accent) 14%, transparent);
}
.ae-login-passkey-text { display: grid; gap: 1px; min-width: 0; }
.ae-login-passkey-text strong { font-size: .98rem; }
.ae-login-passkey-text small { color: var(--ae-muted); font-size: .78rem; }
.ae-login-passkey.is-busy .ae-login-passkey-ico { animation: ae-listen 1.2s ease-in-out infinite; }
.ae-login-passkey.is-ok .ae-login-passkey-ico { background: var(--ae-ok); box-shadow: 0 0 0 5px color-mix(in srgb, var(--ae-ok) 18%, transparent); }

.ae-login-or { display: flex; align-items: center; gap: 12px; color: var(--ae-muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.ae-login-or::before, .ae-login-or::after { content: ""; flex: 1; height: 1px; background: var(--ae-border); }

.ae-login-form { display: grid; gap: 14px; }
/* Le etichette scure a tutta larghezza del resto dell'app qui sarebbero pesanti. */
.ae-login-form .ae-field > label.ae-label { background: none; color: var(--ae-muted); padding: 0; margin-bottom: 6px; font-size: .74rem; letter-spacing: .06em; border-radius: 0; }
.ae-login-input { position: relative; display: flex; align-items: center; }
.ae-login-input > .ae-ico { position: absolute; left: 12px; color: var(--ae-muted); pointer-events: none; }
.ae-login-input .ae-input { padding-left: 38px; min-height: 46px; font-size: 1rem; border-radius: 12px; }
.ae-login-input .ae-input:focus { border-color: var(--ae-accent); }
.ae-login-eye { position: absolute; right: 6px; width: 34px; height: 34px; border: 0; border-radius: 9px; background: none; color: var(--ae-muted); cursor: pointer; display: grid; place-items: center; }
.ae-login-eye:hover { background: var(--ae-surface-2); color: var(--ae-text); }
.ae-login-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size: .86rem; }
.ae-login-row .ae-check input { accent-color: var(--ae-accent); width: 16px; height: 16px; }
.ae-login-submit { width: 100%; justify-content: center; min-height: 46px; font-size: .98rem; border-radius: 12px; gap: 8px; }
.ae-login-submit[disabled] { opacity: .7; }
.ae-login-links, .ae-login-foot { margin: 0; text-align: center; font-size: .82rem; color: var(--ae-muted); }
.ae-login-foot { font-size: .76rem; }

/* Il pannello nell'account */
.ae-passkey-list { display: grid; gap: 8px; margin: 12px 0 14px; }
.ae-passkey-row { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); background: var(--ae-surface); }
.ae-passkey-ico { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; flex: none; background: color-mix(in srgb, var(--ae-accent) 14%, transparent); color: var(--ae-accent); }
.ae-passkey-body { flex: 1; min-width: 0; display: grid; }
.ae-passkey-body small { color: var(--ae-muted); font-size: .76rem; }
.ae-passkey-add { display: flex; gap: 8px; flex-wrap: wrap; }
.ae-passkey-add .ae-input { flex: 1 1 200px; }
@media (max-width: 560px) {
	.ae-login-card { padding: 20px 16px; border-radius: 16px; }
	.ae-login-wall { padding: 14px 10px; min-height: 0; }
	.ae-passkey-add .ae-btn { flex: 1 1 100%; justify-content: center; }
}

/* ---------- L'assistente chiede: la voce esiste già ---------- */
.ae-ask-choices {
	margin-top: 8px; padding: 12px; border-radius: 14px;
	border: 1px solid color-mix(in srgb, var(--ae-warn) 45%, var(--ae-border));
	background: color-mix(in srgb, var(--ae-warn) 7%, var(--ae-surface));
	display: grid; gap: 8px; max-width: 560px;
}
.ae-ask-choices.is-done { opacity: .55; }
.ae-ask-choices-title { display: flex; align-items: center; gap: 6px; font-size: .86rem; font-weight: 600; color: color-mix(in srgb, var(--ae-warn) 70%, var(--ae-text)); }
.ae-ask-choice-row { display: grid; gap: 6px; padding: 9px 10px; border: 1px solid var(--ae-border); border-radius: 10px; background: var(--ae-surface); }
.ae-ask-choice-who { display: grid; line-height: 1.25; }
.ae-ask-choice-who strong { font-size: .9rem; }
.ae-ask-choice-who small { color: var(--ae-muted); font-size: .74rem; }
.ae-ask-choice-btns, .ae-ask-choice-foot { display: flex; flex-wrap: wrap; gap: 5px; }
.ae-ask-choice-foot { padding-top: 2px; }
.ae-ask-choices .ae-btn--sm { padding: 5px 9px; font-size: .78rem; }
@media (max-width: 480px) {
	.ae-ask-choice-btns .ae-btn { flex: 1 1 calc(50% - 5px); justify-content: center; }
}

.ae-passkey-status { margin: 8px 0 0; padding: 8px 11px; border-radius: 9px; font-size: .82rem; background: var(--ae-surface-2); color: var(--ae-muted); }
.ae-passkey-status:empty { display: none; }
.ae-passkey-status.is-ok { background: color-mix(in srgb, var(--ae-ok) 12%, transparent); color: var(--ae-ok); }
.ae-passkey-status.is-warn { background: color-mix(in srgb, var(--ae-warn) 12%, transparent); color: #b45309; }
.ae-passkey-status.is-bad { background: color-mix(in srgb, var(--ae-danger) 10%, transparent); color: var(--ae-danger); }
.ae-passkey-status.is-busy { color: var(--ae-accent); }

/* =========================================================
   A TUTTA LARGHEZZA
   Il tema tiene il contenuto in una colonna: l'app la scavalca e
   si stende da bordo a bordo della finestra. Le griglie si riempiono
   da sole (auto-fill); quello che aveva una larghezza massima la
   perde, o la allarga.
   ========================================================= */

body.ae-page.ae-full { overflow-x: hidden; }
body.ae-page.ae-full .site-content,
body.ae-page.ae-full .content-area,
body.ae-page.ae-full .site-main,
body.ae-page.ae-full .inside-article,
body.ae-page.ae-full .entry-content,
body.ae-page.ae-full .grid-container { max-width: none; padding-left: 0; padding-right: 0; }
body.ae-page.ae-full .ae-app {
	--ae-vw: calc(100vw - var(--ae-sb, 0px));
	width: var(--ae-vw); max-width: none;
	margin-left: calc(50% - var(--ae-vw) / 2); margin-right: 0;
	border-radius: 0;
}
/* Anche sul telefono: i temi tengono margini e colonne pure lì, e
   sui 400 pixel di uno schermo ogni pixel conta. */
body.ae-page.ae-full .site-content,
body.ae-page.ae-full .site-main,
body.ae-page.ae-full .inside-article,
body.ae-page.ae-full .entry-content,
body.ae-page.ae-full .grid-container,
body.ae-page.ae-full .container { margin-left: 0; margin-right: 0; width: auto; max-width: none; }

/* Schermi larghi: più colonne, più aria ai lati, pannelli più ampi. */
@media (min-width: 1400px) {
	.ae-main { padding: 26px 36px; }
	.ae-results.ae-grid { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 18px; }
	.ae-layout-split { grid-template-columns: 280px 1fr; gap: 26px; }
	.ae-map-layout { grid-template-columns: 340px 1fr; }
	.ae-admin-split { grid-template-columns: 300px 1fr; }
	.ae-stats-grid { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
	.ae-rel-grid, .ae-contact-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
	.ae-plan-grid { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
	.ae-drawer-panel { width: min(1180px, 100%); }
	.ae-sky { padding: 56px 64px 48px; }
	.ae-deck { padding-inline: 36px; }
	.ae-telemetry { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.ae-footer-inner, .ae-footer-bottom { max-width: none; padding-inline: 14px; }
}
@media (min-width: 1800px) {
	.ae-main { padding: 30px 48px; }
	.ae-results.ae-grid { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
	.ae-drawer-panel { width: min(1320px, 100%); }
	.ae-sky { padding: 64px 96px 56px; }
	.ae-deck { padding-inline: 48px; }
}

/* Il pannello a tutto schermo usa davvero tutto lo schermo: la
   griglia a dodici colonne dei moduli si allarga con lui. */
@media (min-width: 721px) {
	.ae-drawer.is-full .ae-drawer-head,
	.ae-drawer.is-full .ae-drawer-body,
	.ae-drawer.is-full .ae-form-footer { padding-inline: max(24px, 2.5vw); }
	.ae-drawer.is-full .ae-drawer-body { padding-top: 26px; padding-bottom: 40px; }
}
@media (min-width: 1400px) {
	.ae-drawer.is-full .ae-form-grid, .ae-drawer.is-full .ae-values { gap: 18px 28px; }
	.ae-drawer.is-full .ae-form-topline { grid-template-columns: 220px 1fr; }
}

/* =========================================================
   TELEFONO: NIENTE SPAZIO SPRECATO
   Card compatte, valori che vanno a capo invece di troncarsi,
   sottotitolo sulla sua riga, margini ridotti all'osso.
   ========================================================= */

.ae-item-sub { display: block; }

@media (max-width: 720px) {
	.ae-main { padding: 8px; }
	.ae-panel { padding: 12px; margin-bottom: 10px; border-radius: 12px; }
	.ae-page-head { margin-bottom: 8px; gap: 6px; }
	.ae-page-head h1 { font-size: 1.2rem; }
	.ae-filters { margin-bottom: 8px; gap: 6px; }
	.ae-alpha { margin-bottom: 8px; }

	.ae-results.ae-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px; }
	.ae-item { padding: 10px 10px 8px 12px; gap: 6px; border-radius: 12px; }
	.ae-item-head { gap: 8px; }
	.ae-item .ae-avatar, .ae-item .ae-type-badge { width: 36px !important; height: 36px !important; font-size: .76rem; border-radius: 10px; }
	.ae-item .ae-avatar { border-radius: 50%; }
	.ae-item-title { font-size: .92rem; line-height: 1.25; }
	.ae-item-sub { font-size: .72rem; margin-top: 1px; }
	.ae-item-preview { font-size: .8rem; gap: 2px; }
	.ae-item-preview div { gap: 6px; align-items: baseline; }
	.ae-item-preview dt { min-width: 68px; max-width: 40%; font-size: .74rem; }
	.ae-item-preview dd { white-space: normal; overflow-wrap: anywhere; line-height: 1.3; }
	.ae-item-meta { gap: 4px; }
	.ae-item-meta .ae-chip, .ae-item-meta .ae-count, .ae-item-meta .ae-expiry { font-size: .7rem; padding: 1px 7px; }

	.ae-stats-grid { gap: 6px; margin-bottom: 10px; }
	.ae-stat { padding: 10px; border-radius: 12px; }
	.ae-detail { gap: 12px; }
	.ae-values { gap: 8px; }
	.ae-values .ae-value > dt { padding: 4px 8px; font-size: 10px; }
	.ae-values .ae-value > dd { padding: 6px 8px; font-size: 14px; }
	.ae-section-title { margin-top: 12px; }
}

@media (max-width: 400px) {
	.ae-results.ae-grid { grid-template-columns: 1fr; }
	.ae-main { padding: 6px; }
}

/* ---------- Aggiorna i dati mancanti ---------- */
.ae-enrich-list { display: grid; gap: 6px; max-height: 55vh; overflow: auto; }
.ae-enrich-row { display: flex; align-items: flex-start; gap: 10px; padding: 9px 10px; border: 1px solid var(--ae-border); border-radius: 10px; background: var(--ae-surface); cursor: pointer; }
.ae-enrich-row input[type=checkbox] { margin-top: 4px; width: 18px; height: 18px; accent-color: var(--ae-accent); flex: none; }
.ae-enrich-row.is-weak { border-style: dashed; }
.ae-enrich-body { flex: 1; min-width: 0; display: grid; gap: 3px; }
.ae-enrich-label { font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ae-muted); }
.ae-enrich-value { font-size: .92rem; font-weight: 500; overflow-wrap: anywhere; }
.ae-enrich-input { padding: 6px 9px; font-size: .9rem; min-height: 0; }
.ae-enrich-body small { color: var(--ae-muted); font-size: .74rem; display: inline-flex; align-items: center; gap: 3px; }
.ae-do.is-busy { opacity: .6; cursor: progress; }

/* ---------- Demo e azzeramento ---------- */
.ae-demo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; }
.ae-demo-card { border: 1px solid var(--ae-border); border-radius: var(--ae-radius); padding: 14px; background: var(--ae-surface); display: grid; gap: 8px; align-content: start; }
.ae-demo-card h3 { display: flex; align-items: center; gap: 6px; font-size: .95rem; margin: 0; }
.ae-demo-card .ae-hint { margin: 0; }
.ae-demo-card .ae-choice { align-items: flex-start; }
.ae-demo-card .ae-choice small { display: block; color: var(--ae-muted); font-size: .76rem; }
.ae-demo-stat { font-size: .8rem; color: var(--ae-muted); padding: 6px 9px; border-radius: 8px; background: var(--ae-surface-2); }
.ae-demo-card .ae-addon-btn.ae-btn--danger { color: var(--ae-danger); font-weight: 600; }
.ae-demo-card .ae-addon-btn[disabled] { opacity: .5; cursor: not-allowed; }
.ae-demo-card .ae-switch { margin-top: 4px; padding-top: 0; border-top: 0; }
.ae-demo-card .ae-progress { margin: 4px 0 0; }

.ae-tab--demo { color: color-mix(in srgb, var(--ae-warn) 80%, var(--ae-text)); font-weight: 600; }
.ae-tab--demo.is-active { color: var(--ae-warn); border-bottom-color: var(--ae-warn); }

/* ---------- Schede (tab): il tema non deve dipingerle ----------
   GeneratePress e altri temi vestono ogni <button>, e quello attivo o
   a fuoco diventava blu scuro con testo viola: illeggibile. Qui le
   schede hanno i loro colori, a prescindere dal tema. */
.ae-app .ae-tab,
.ae-app .ae-tab:hover,
.ae-app .ae-tab:focus,
.ae-app .ae-tab:active {
	background: transparent !important;
	box-shadow: none !important;
	text-shadow: none !important;
	border-radius: 8px 8px 0 0 !important;
	border-width: 0 0 2px !important;
	border-style: solid !important;
	border-color: transparent !important;
	color: var(--ae-muted) !important;
	outline: none;
}
.ae-app .ae-tab:hover { background: var(--ae-surface-2) !important; color: var(--ae-text) !important; }
.ae-app .ae-tab.is-active,
.ae-app .ae-tab.is-active:hover,
.ae-app .ae-tab.is-active:focus {
	background: color-mix(in srgb, var(--ae-accent) 12%, var(--ae-surface)) !important;
	color: var(--ae-accent) !important;
	border-bottom-color: var(--ae-accent) !important;
	font-weight: 650;
}
.ae-app .ae-tab:focus-visible { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ae-accent) 45%, transparent) !important; }
.ae-app[data-theme="dark"] .ae-tab.is-active { color: color-mix(in srgb, var(--ae-accent) 70%, #fff) !important; background: color-mix(in srgb, var(--ae-accent) 24%, transparent) !important; }
.ae-app .ae-tab--demo.is-active { color: #b45309 !important; border-bottom-color: var(--ae-warn) !important; background: color-mix(in srgb, var(--ae-warn) 12%, var(--ae-surface)) !important; }

/* =========================================================
 * 1.25.4 — Patrimonio immobiliare (tabellone di simulazione)
 * ========================================================= */
.ae-app .ae-stat-n, .ae-app .ae-stat-l { display: block; }
.ae-app .ae-btn[hidden], .ae-app [data-action][hidden] { display: none !important; }
.ae-estate .ae-page-actions { flex-wrap: wrap; }
.ae-estate-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 14px 0; padding: 10px 12px; background: var(--ae-surface-2); border-radius: var(--ae-radius-sm); }
.ae-estate-bar label { display: flex; align-items: center; gap: 8px; font-size: .85rem; color: var(--ae-muted); }
.ae-estate-bar select, .ae-estate-bar input { font: inherit; padding: 6px 9px; border: 1px solid var(--ae-border); border-radius: 8px; background: var(--ae-surface); color: var(--ae-text); }
.ae-estate-bar select { min-width: 220px; }
.ae-estate-anno input { width: 84px; }
.ae-estate-tablewrap { overflow-x: auto; border: 1px solid var(--ae-border); border-radius: var(--ae-radius); background: var(--ae-surface); margin-top: 14px; }
.ae-estate-table { width: 100%; border-collapse: collapse; font-size: .82rem; font-variant-numeric: tabular-nums; min-width: 1120px; }
.ae-estate-table th, .ae-estate-table td { padding: 7px 5px; border-bottom: 1px solid var(--ae-border); text-align: left; vertical-align: middle; white-space: nowrap; }
.ae-estate-table thead th { position: sticky; top: 0; z-index: 1; background: var(--ae-surface-2); font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ae-muted); }
.ae-estate-table th.ae-num, .ae-estate-table td.ae-num { text-align: right; }
.ae-estate-table td.ae-center { text-align: center; }
.ae-estate-table tbody tr:hover td { background: color-mix(in srgb, var(--ae-accent) 4%, transparent); }
.ae-estate-table tr.is-off td { opacity: .45; }
.ae-estate-table tr.is-off td.ae-estate-c-on, .ae-estate-table tr.is-off td.ae-estate-c-x { opacity: 1; }
.ae-estate-table tr.is-new td { background: color-mix(in srgb, var(--ae-warn) 7%, transparent); }
.ae-estate-table tfoot td { background: var(--ae-surface-2); font-weight: 600; border-top: 2px solid var(--ae-border); }
.ae-estate-c-title { white-space: normal !important; min-width: 150px; max-width: 240px; }
.ae-estate-c-title small { display: block; color: var(--ae-muted); font-size: .75rem; margin-top: 2px; }
.ae-estate-c-title small em { color: var(--ae-warn); font-style: normal; font-weight: 600; }
.ae-estate-title { font-weight: 600; color: var(--ae-text); text-decoration: none; }
.ae-estate-title:hover { color: var(--ae-accent); text-decoration: underline; }
.ae-estate-in { font: inherit; padding: 5px 7px; border: 1px solid var(--ae-border); border-radius: 7px; background: var(--ae-surface); color: var(--ae-text); max-width: 100%; }
.ae-estate-in[type="number"] { width: 78px; text-align: right; }
.ae-estate-in[size="2"], .ae-estate-in[size="3"] { width: 52px; }
.ae-estate-in[size="4"], .ae-estate-in[size="5"] { width: 62px; }
.ae-estate-in[size="12"] { width: 110px; }
.ae-estate-table select.ae-estate-in { max-width: 120px; }
.ae-estate-in:focus { outline: none; border-color: var(--ae-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ae-accent) 18%, transparent); }
.ae-estate-out { color: var(--ae-text); }
.ae-estate-out small { display: block; font-weight: 400; color: var(--ae-muted); font-size: .72rem; }
.ae-estate-warn { color: var(--ae-warn); margin-left: 4px; vertical-align: middle; cursor: help; }
.ae-estate-dirty { color: var(--ae-warn); font-weight: 600; font-size: .78rem; margin-left: 8px; }
.ae-estate-c-x { text-align: right; }
.ae-estate-c-x .ae-icon-btn { width: 28px; height: 28px; }
.ae-estate-switch { position: relative; display: inline-block; width: 36px; height: 20px; }
.ae-estate-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; z-index: 1; }
.ae-estate-switch i { position: absolute; inset: 0; border-radius: 20px; background: var(--ae-border); transition: background .15s; }
.ae-estate-switch i::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }
.ae-estate-switch input:checked + i { background: #16a34a; }
.ae-estate-switch input:checked + i::after { transform: translateX(16px); }
.ae-estate-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 14px; margin-top: 14px; }
.ae-estate-grid .ae-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.ae-estate-grid .ae-panel-head h2 { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 1rem; }
.ae-estate-heirs-t { width: 100%; border-collapse: collapse; font-size: .84rem; font-variant-numeric: tabular-nums; }
.ae-estate-heirs-t th, .ae-estate-heirs-t td { padding: 6px 6px; border-bottom: 1px solid var(--ae-border); text-align: left; }
.ae-estate-heirs-t th { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--ae-muted); }
.ae-estate-heirs-t th.ae-num, .ae-estate-heirs-t td.ae-num { text-align: right; white-space: nowrap; }
.ae-estate-heirs-t td.ae-center { text-align: center; }
.ae-estate-heirs-t .ae-estate-in[type="text"] { width: 130px; }
.ae-estate-dl { display: grid; gap: 6px; margin: 0; }
.ae-estate-dl > div { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px dashed var(--ae-border); }
.ae-estate-dl dt { color: var(--ae-muted); }
.ae-estate-dl dt small { color: var(--ae-muted); font-size: .75rem; }
.ae-estate-dl dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; }
.ae-estate-dl > div.is-total { border-bottom: 0; border-top: 2px solid var(--ae-border); margin-top: 4px; padding-top: 12px; font-size: 1.05rem; }
.ae-estate-dl > div.is-total dt { color: var(--ae-text); font-weight: 600; }
.ae-estate-dl > div.is-total dd { color: var(--ae-accent); font-size: 1.25rem; }
.ae-estate-avvisi { margin: 12px 0 0; padding-left: 18px; color: var(--ae-muted); font-size: .8rem; line-height: 1.6; }
.ae-estate-note { margin-top: 14px; }
.ae-estate-note .ae-help { display: flex; gap: 8px; align-items: flex-start; color: var(--ae-muted); line-height: 1.55; }
.ae-estate-note .ae-help svg { flex: none; margin-top: 3px; color: var(--ae-warn); }
@media (max-width: 900px) {
	.ae-estate-grid { grid-template-columns: minmax(0, 1fr); }
	.ae-estate-bar select { min-width: 0; flex: 1 1 160px; }
	.ae-estate .ae-page-actions .ae-btn { flex: 1 1 auto; justify-content: center; }
}
@media (max-width: 720px) {
	.ae-estate-tablewrap { border-radius: var(--ae-radius-sm); }
	.ae-estate-tablewrap::before { content: "Scorri di lato per vedere tutte le colonne"; display: block; padding: 6px 10px; font-size: .72rem; color: var(--ae-muted); background: var(--ae-surface-2); border-bottom: 1px solid var(--ae-border); }
	.ae-estate-table { font-size: .8rem; }
	.ae-estate-heirs-t .ae-estate-in[type="text"] { width: 96px; }
}

/* =========================================================
 * 1.26.0 — Documenti: la catena automatica e il suo resoconto
 * ========================================================= */
.ae-autodoc-wait { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; padding: 18px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius); background: var(--ae-surface); }
.ae-autodoc-wait > svg { color: var(--ae-accent); flex: none; }
.ae-autodoc-wait > div { flex: 1 1 260px; }
.ae-autodoc-wait .ae-progress { flex: 1 1 100%; margin: 4px 0 0; }
.ae-autodoc-wait .ae-progress span { animation: ae-autodoc-pulse 1.4s ease-in-out infinite alternate; }
@keyframes ae-autodoc-pulse { from { width: 25%; } to { width: 85%; } }
.ae-autodoc-list { display: grid; gap: 12px; margin-top: 12px; }
.ae-autodoc-item { border: 1px solid var(--ae-border); border-left: 4px solid #16a34a; border-radius: var(--ae-radius); background: var(--ae-surface); padding: 14px 16px; }
.ae-autodoc-item.is-low { border-left-color: var(--ae-warn); }
.ae-autodoc-item.is-bad { border-left-color: var(--ae-danger); }
.ae-autodoc-head { display: flex; align-items: center; gap: 12px; }
.ae-autodoc-head strong { display: block; font-size: 1.02rem; }
.ae-autodoc-head small { display: block; color: var(--ae-muted); font-size: .8rem; margin-top: 2px; }
.ae-autodoc-steps { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 6px; }
.ae-autodoc-steps li { display: flex; align-items: flex-start; gap: 8px; font-size: .88rem; line-height: 1.45; }
.ae-autodoc-steps li svg { flex: none; margin-top: 3px; color: #16a34a; }
.ae-autodoc-steps li.is-warn svg { color: var(--ae-warn); }
.ae-autodoc-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--ae-border); }
.ae-autodoc-item .ae-notice { margin-top: 10px; }
@media (max-width: 720px) {
	.ae-autodoc-item { padding: 12px; }
	.ae-autodoc-acts .ae-btn { flex: 1 1 auto; justify-content: center; }
}

.ae-estate-aventi { display: block; margin-top: 2px; color: var(--ae-accent); font-size: .74rem; white-space: normal; }

/* aggiornamento automatico del contatto */
.ae-enrich-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.ae-enrich-mode { display: flex; align-items: center; gap: 6px; font-size: .82rem; }
.ae-enrich-tag { display: inline-block; margin-left: 6px; padding: 0 7px; border-radius: 999px; font-size: .68rem; vertical-align: middle; }
.ae-enrich-tag.is-new { background: color-mix(in srgb, #16a34a 16%, transparent); color: #15803d; }
.ae-enrich-tag.is-upd { background: color-mix(in srgb, #d97706 16%, transparent); color: #b45309; }
.ae-enrich-old { display: block; font-size: .74rem; color: var(--ae-muted); text-decoration: line-through; }
.ae-enrich-lab { font-weight: 600; max-width: 240px; margin-bottom: 3px; }
.ae-enrich-bulk { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 10px 0; }
.ae-enrich-bulk label { display: flex; flex-direction: column; gap: 3px; font-size: .8rem; }
.ae-enrich-bulk label.ae-enrich-chk { grid-column: 1 / -1; flex-direction: row; align-items: center; gap: 6px; }
.ae-enrich-bulk select[multiple] { min-height: 96px; }
.ae-enrich-plan { font-size: .84rem; padding: 10px; border-radius: 10px; background: var(--ae-surface-2); margin-bottom: 8px; max-height: 220px; overflow: auto; }
.ae-enrich-plan ul { margin: 6px 0 0; padding-left: 18px; }
.ae-enrich-bulklog li { margin-bottom: 2px; }
@media (max-width: 640px) { .ae-enrich-bulk { grid-template-columns: 1fr; } }
.ae-enrich-q { display: flex; gap: 6px; margin-bottom: 8px; }
.ae-enrich-q .ae-input { flex: 1; }
.ae-enrich-diag { font-size: .78rem; color: var(--ae-muted); margin-bottom: 8px; }
.ae-enrich-diag summary { cursor: pointer; }
.ae-enrich-diaglist { margin: 6px 0; padding-left: 18px; }
.ae-enrich-diaglist a { color: inherit; }
.ae-do--accent { border-color: color-mix(in srgb, var(--ae-accent) 45%, transparent); background: color-mix(in srgb, var(--ae-accent) 8%, transparent); }
.ae-do--accent:hover { background: color-mix(in srgb, var(--ae-accent) 14%, transparent); }
.ae-do--accent strong { color: var(--ae-accent); }

/* Senza menu dell'app: la barra resta con insegna e strumenti; senza barra, il contenuto parte subito. */
.ae-app--no-nav .ae-topbar .ae-spacer { flex: 1 1 auto; }
.ae-app--no-topbar > .ae-main { padding-top: 12px; }

/* Il riquadro del cliente dentro il documento: i dati che finiscono in fattura,
   aperti e correggibili senza uscire dal documento. */
.ae-inv-client { margin: 0 0 14px; border: 1px solid var(--ae-border); border-radius: 14px; background: color-mix(in srgb, var(--ae-accent) 3%, var(--ae-surface)); overflow: hidden; }
.ae-inv-client > summary { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 11px 14px; cursor: pointer; list-style: none; font-size: .88rem; }
.ae-inv-client > summary::-webkit-details-marker { display: none; }
.ae-inv-client > summary::before { content: "▸"; color: var(--ae-muted); transition: transform .2s; }
.ae-inv-client[open] > summary::before { transform: rotate(90deg); }
.ae-inv-client > summary:hover { background: color-mix(in srgb, var(--ae-accent) 6%, transparent); }
.ae-inv-client-t { font-weight: 700; letter-spacing: -.01em; }
.ae-inv-client-s { font-size: .8rem; color: var(--ae-muted); margin-left: auto; text-align: right; }
.ae-inv-client-s.is-ok { color: var(--ae-ok); }
.ae-inv-client-s.is-ko { color: var(--ae-warn); font-weight: 600; }
.ae-inv-client > .ae-hint,
.ae-inv-client > .ae-form-grid,
.ae-inv-client-acts { padding: 0 14px; }
.ae-inv-client > .ae-form-grid { padding-bottom: 4px; }
.ae-inv-client-acts { display: flex; gap: 8px; flex-wrap: wrap; padding-bottom: 14px; padding-top: 8px; }
/* Un campo di fatturazione che manca: si vede, e smette di vedersi appena lo scrivi. */
.ae-inv-client .ae-field.is-manca .ae-input { border-color: var(--ae-warn); background: color-mix(in srgb, var(--ae-warn) 7%, transparent); }
.ae-inv-client .ae-field.is-manca .ae-label { color: var(--ae-warn); }
.ae-inv-client .ae-field .ae-label em { font-style: normal; font-size: .68rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; opacity: .85; }

/* Registro del bollo: il trimestre scaduto e quello che sta per scadere si vedono. */
.ae-bollo-table tr.is-scaduto > td { background: color-mix(in srgb, var(--ae-danger) 8%, transparent); }
.ae-bollo-table tr.is-imminente > td { background: color-mix(in srgb, var(--ae-warn) 10%, transparent); }
.ae-bollo-table tr.ae-bollo-nota > td { padding-top: 0; border-top: 0; }
.ae-bollo-table code { font-size: .84em; padding: 2px 7px; border-radius: 6px; background: color-mix(in srgb, var(--ae-accent) 10%, transparent); color: var(--ae-accent); font-weight: 700; }
.ae-table--inner { margin: 4px 0 8px; font-size: .88em; }
.ae-table--inner td { padding: 5px 8px; border-bottom: 1px solid var(--ae-border); }
/* ==================================================================
   Navigazione per flusso di lavoro (v1.38)
   Cinque voci al posto di undici: Lavoro, Archivio, Acquisisci,
   Contabilità, Impostazioni. Ogni gruppo apre un pannello con le
   voci vere, descritte in una riga. Il pannello si apre al passaggio
   del mouse sui desktop e al tocco sugli schermi piccoli.
   ================================================================== */

.ae-app .ae-nav--grouped { overflow: visible; mask-image: none; gap: 2px; }
.ae-app .ae-nav-group { position: relative; flex: none; }
.ae-app .ae-nav-group-btn {
	border: 0; background: transparent; cursor: pointer; font: inherit;
	display: inline-flex; align-items: center; border-radius: 8px;
	font-size: .84rem; font-weight: 550; gap: 6px; padding: 7px 8px;
	color: color-mix(in srgb, var(--ae-text) 74%, transparent);
}
.ae-app .ae-nav-group-btn > svg:last-child { width: 14px; height: 14px; opacity: .55; transition: transform .2s; margin-left: -2px; }
.ae-app .ae-nav-group.is-open .ae-nav-group-btn > svg:last-child,
.ae-app .ae-nav-group:hover .ae-nav-group-btn > svg:last-child { transform: rotate(180deg); }

/* Acquisisci è l'ingresso di ogni dato nuovo: si stacca dalle altre voci. */
.ae-app .ae-nav-link--accent {
	color: var(--ae-accent);
	background: color-mix(in srgb, var(--ae-accent) 9%, transparent);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ae-accent) 22%, transparent);
}
.ae-app .ae-nav-link--accent:hover { background: color-mix(in srgb, var(--ae-accent) 16%, transparent); color: var(--ae-accent); }

.ae-app .ae-nav-pop {
	position: absolute; top: calc(100% + 8px); left: 0; z-index: 50;
	min-width: 280px; padding: 8px;
	background: var(--ae-surface);
	border: 1px solid color-mix(in srgb, var(--ae-border) 90%, transparent);
	border-radius: 14px;
	box-shadow: 0 18px 44px -18px rgba(15, 23, 42, .35), 0 2px 8px rgba(15, 23, 42, .06);
	opacity: 0; visibility: hidden; transform: translateY(-6px);
	transition: opacity .16s ease, transform .16s ease, visibility .16s;
}
.ae-app .ae-nav-group.is-open .ae-nav-pop,
.ae-app .ae-nav-group:focus-within .ae-nav-pop { opacity: 1; visibility: visible; transform: none; }
@media (hover: hover) and (pointer: fine) {
	.ae-app .ae-nav-group:hover .ae-nav-pop { opacity: 1; visibility: visible; transform: none; }
}
/* Un ponte invisibile fra bottone e pannello: il mouse non «cade» nel vuoto. */
.ae-app .ae-nav-pop::before { content: ""; position: absolute; left: 0; right: 0; top: -10px; height: 10px; }

.ae-app .ae-nav-pop-hint {
	margin: 2px 10px 6px; font-size: .68rem; letter-spacing: .08em; text-transform: uppercase;
	color: color-mix(in srgb, var(--ae-text) 50%, transparent); font-weight: 600;
}
.ae-app .ae-nav-item {
	display: flex; align-items: center; gap: 12px;
	padding: 9px 10px; border-radius: 10px; text-decoration: none;
	color: var(--ae-text); position: relative;
}
.ae-app .ae-nav-item:hover, .ae-app .ae-nav-item:focus-visible { background: var(--ae-surface-2); outline: none; }
.ae-app .ae-nav-item.is-active { background: color-mix(in srgb, var(--ae-accent) 12%, transparent); }
.ae-app .ae-nav-item.is-active strong { color: var(--ae-accent); }
.ae-app .ae-nav-item-ico {
	flex: none; width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center;
	background: color-mix(in srgb, var(--ae-accent) 10%, transparent); color: var(--ae-accent);
}
.ae-app .ae-nav-item-ico svg { width: 18px; height: 18px; }
.ae-app .ae-nav-item-txt { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.ae-app .ae-nav-item-txt strong { font-size: .88rem; font-weight: 600; }
.ae-app .ae-nav-item-txt small { font-size: .74rem; color: color-mix(in srgb, var(--ae-text) 58%, transparent); }

/* Il badge: quante schede scadono, quanto è scaduto. Rosso solo se c'è davvero qualcosa. */
.ae-app .ae-nav-badge {
	margin-left: auto; flex: none; min-width: 22px; height: 22px; padding: 0 7px;
	border-radius: 999px; display: grid; place-items: center;
	font-size: .72rem; font-weight: 700; color: #fff;
	background: var(--ae-c5, #ef4444);
}
.ae-app .ae-nav-badge.is-warn { background: var(--ae-c4, #f59e0b); }
.ae-app .ae-nav-group-btn .ae-nav-dot {
	position: absolute; top: 5px; right: 6px; width: 7px; height: 7px; border-radius: 50%;
	background: var(--ae-c5, #ef4444); box-shadow: 0 0 0 2px var(--ae-surface);
}
.ae-app .ae-nav-group-btn { position: relative; }

/* «Nuovo»: il pulsante di creazione, uguale su ogni pagina. */
.ae-app .ae-quick { position: relative; }
.ae-app .ae-quick-btn {
	height: 36px; padding: 0 12px 0 10px; border-radius: 999px; border: 0; cursor: pointer; font: inherit;
	display: inline-flex; align-items: center; gap: 6px; font-size: .84rem; font-weight: 650; color: #fff;
	background: linear-gradient(135deg, color-mix(in srgb, var(--ae-accent) 80%, #fff), var(--ae-accent));
	box-shadow: 0 8px 18px -10px color-mix(in srgb, var(--ae-accent) 90%, transparent);
}
.ae-app .ae-quick-btn:hover { filter: brightness(1.06); }
.ae-app .ae-quick-btn svg { width: 16px; height: 16px; }
.ae-app .ae-quick-pop {
	position: absolute; top: calc(100% + 8px); right: 0; z-index: 50; min-width: 220px; padding: 6px;
	background: var(--ae-surface); border: 1px solid color-mix(in srgb, var(--ae-border) 90%, transparent);
	border-radius: 14px; box-shadow: 0 18px 44px -18px rgba(15, 23, 42, .35), 0 2px 8px rgba(15, 23, 42, .06);
}
.ae-app .ae-quick-item {
	display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
	padding: 9px 10px; border-radius: 10px; border: 0; background: transparent; cursor: pointer;
	font: inherit; font-size: .88rem; font-weight: 550; color: var(--ae-text); text-decoration: none;
}
.ae-app .ae-quick-item:hover, .ae-app .ae-quick-item:focus-visible { background: var(--ae-surface-2); outline: none; }
.ae-app .ae-quick-item svg { width: 18px; height: 18px; color: var(--ae-accent); }

@media (max-width: 1100px) {
	.ae-app .ae-nav-group-btn span { display: none; }
	.ae-app .ae-nav-group.is-active .ae-nav-group-btn span { display: inline; }
	.ae-app .ae-quick-btn span { display: none; }
	.ae-app .ae-quick-btn { width: 36px; padding: 0; justify-content: center; }
}
@media (max-width: 720px) {
	.ae-app .ae-nav--grouped { overflow-x: auto; }
	.ae-app .ae-nav-pop { position: fixed; left: 12px; right: 12px; top: auto; min-width: 0; }
}

/* Al buio i pannelli devono staccarsi dal cielo, non confondersi. */
.ae-app[data-theme="dark"] .ae-nav-pop,
.ae-app[data-theme="dark"] .ae-quick-pop {
	background: color-mix(in srgb, var(--ae-surface) 96%, #fff);
	box-shadow: 0 24px 60px -20px rgba(0, 0, 0, .8);
}
.ae-app[data-theme="dark"] .ae-nav-link--accent { color: color-mix(in srgb, var(--ae-accent) 70%, #fff); }

/* La home mette per primi i moduli che chiedono attenzione. */
.ae-app .ae-planet.is-hot .ae-planet-body::after {
	content: ""; position: absolute; inset: -6px; border-radius: 50%;
	border: 2px solid var(--c); opacity: .55; animation: ae-hot 1.8s ease-out infinite;
}
.ae-app .ae-planet-body { position: relative; }
@keyframes ae-hot { 0% { transform: scale(.9); opacity: .6; } 100% { transform: scale(1.35); opacity: 0; } }
.ae-app .ae-tile.is-hot { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c) 60%, transparent), 0 10px 24px -14px var(--c); }
.ae-app .ae-tile.is-quiet { opacity: .72; }
.ae-app .ae-tile.is-quiet:hover { opacity: 1; }

/* Le piastrelle in home stanno fra i numeri e i segnali, con respiro. */
.ae-deck .ae-tiles { margin: 4px 0 18px; }

/* Fattura — la scheda del cliente: tutti i dati che vanno nel documento. */
.ae-inv-client { margin-top: 10px; padding: 12px 14px; border-radius: 12px; background: var(--ae-surface-2); border: 1px solid var(--ae-border); }
.ae-inv-client-empty { margin: 0; font-size: .82rem; color: var(--ae-muted); }
.ae-inv-client-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; margin: 0; }
.ae-inv-client-grid > div:first-child, .ae-inv-client-grid > div:nth-child(2) { grid-column: 1 / -1; }
.ae-inv-client-grid dt { font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ae-muted); font-weight: 600; margin: 0 0 1px; }
.ae-inv-client-grid dd { margin: 0; font-size: .9rem; font-weight: 550; overflow-wrap: anywhere; }
.ae-inv-client-grid > div:first-child dd { font-size: 1rem; font-weight: 700; }
.ae-inv-client-grid .is-empty dd { color: var(--ae-muted); font-weight: 400; }
.ae-inv-client-warn { display: flex; gap: 6px; align-items: flex-start; margin: 10px 0 0; padding: 8px 10px; border-radius: 8px; font-size: .8rem; color: #9a5b00; background: color-mix(in srgb, #f59e0b 14%, transparent); }
.ae-app[data-theme="dark"] .ae-inv-client-warn { color: #fcd34d; }
.ae-inv-client-open { display: inline-flex; align-items: center; gap: 5px; margin-top: 10px; font-size: .82rem; }
@media (max-width: 560px) { .ae-inv-client-grid { grid-template-columns: 1fr; } }

/* =========================================================================
   Piastrelle — pannello dedicato (2.0.0)
   ========================================================================= */

/* La pagina tutta sua: intestazione con Esporta/Importa, poi la plancia. */
.ae-tiles-console .ae-page-head h1 { display: flex; align-items: center; gap: 9px; }
.ae-tiles-console .ae-tiles-admin { margin-top: 4px; }

/* Selettore di larghezza sopra l'anteprima */
.ae-tl-widths { display: inline-flex; gap: 3px; margin-left: auto; }
.ae-tl-w {
	padding: 3px 9px; font-size: .7rem; font-weight: 600; cursor: pointer;
	border: 1px solid var(--ae-border); border-radius: 999px;
	background: var(--ae-surface); color: var(--ae-muted);
	transition: background .12s, color .12s, border-color .12s;
}
.ae-tl-w:hover { border-color: var(--ae-accent); color: var(--ae-accent); }
.ae-tl-w.is-active { background: var(--ae-accent); border-color: var(--ae-accent); color: #fff; }
.ae-tl-preview-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* Il corpo si stringe per simulare tablet e telefono, restando centrato */
.ae-tl-preview-body { margin: 0 auto; transition: max-width .25s ease; }

/* Le intestazioni delle tabelle di acquisizione: tinta, non nero */
.ae-app .ae-acq-table th {
	background: color-mix(in srgb, var(--ae-accent) 12%, var(--ae-surface));
	color: var(--ae-accent);
	border-bottom: 1px solid color-mix(in srgb, var(--ae-accent) 30%, transparent);
}

/* Il guscio dell'app impone sempre testo e fondo suoi: nessuna palette
   e nessun tema del sito possono lasciare testo scuro su fondo scuro. */
.ae-app { color: var(--ae-text); background: var(--ae-bg); }
.ae-app .ae-panel, .ae-app .ae-card { color: var(--ae-text); }

/* --------------------------------------------------------------------------
   Agenda: allegati e collegamenti della prenotazione (2.0.16)
   -------------------------------------------------------------------------- */
.ae-app .ae-bk-links { display: grid; gap: 8px; margin-bottom: 8px; }
.ae-app .ae-bk-link { display: grid; grid-template-columns: minmax(120px, 1fr) minmax(160px, 1.7fr) auto; gap: 8px; align-items: center; }
.ae-app .ae-bk-link .ae-icon-btn { width: 34px; height: 34px; }
.ae-app .ae-bk-files { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; margin: 0 0 14px; }
.ae-app .ae-bk-file { display: grid; grid-template-rows: 88px auto; border: 1px solid var(--ae-border); border-radius: 12px; overflow: hidden; background: var(--ae-surface); text-decoration: none; color: var(--ae-text); transition: border-color .15s, transform .15s; }
.ae-app .ae-bk-file:hover { border-color: var(--ae-accent); transform: translateY(-1px); }
.ae-app .ae-bk-file img { width: 100%; height: 88px; object-fit: cover; display: block; }
.ae-app .ae-bk-file-ico { display: grid; place-items: center; height: 88px; color: var(--ae-muted); background: color-mix(in srgb, var(--ae-accent) 6%, var(--ae-surface)); }
.ae-app .ae-bk-file-name { font-size: .72rem; padding: 6px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ae-app .ae-bk-linklist { display: grid; gap: 6px; margin: 0 0 14px; }
.ae-app .ae-bk-linkrow { display: grid; grid-template-columns: auto 1fr; grid-template-areas: "i b" "i s"; column-gap: 10px; align-items: center; padding: 8px 12px; border: 1px solid var(--ae-border); border-radius: 10px; background: var(--ae-surface); color: var(--ae-text); text-decoration: none; }
.ae-app .ae-bk-linkrow:hover { border-color: var(--ae-accent); }
.ae-app .ae-bk-linkrow svg { grid-area: i; color: var(--ae-accent); }
.ae-app .ae-bk-linkrow b { grid-area: b; font-size: .88rem; }
.ae-app .ae-bk-linkrow small { grid-area: s; color: var(--ae-muted); font-size: .72rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 640px) { .ae-app .ae-bk-link { grid-template-columns: 1fr auto; } .ae-app .ae-bk-link [data-lk-url] { grid-column: 1 / -1; } }

/* --------------------------------------------------------------------------
   Anagrafica: stanza per videoconferenza (2.0.17)
   -------------------------------------------------------------------------- */
.ae-app .ae-video { margin: 0 0 22px; }
.ae-app .ae-video-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid var(--ae-border); border-radius: 12px; background: color-mix(in srgb, var(--ae-accent) 5%, var(--ae-surface)); }
.ae-app .ae-video-room { display: flex; align-items: center; gap: 8px; }
.ae-app .ae-video-room small { color: var(--ae-muted); font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; }
.ae-app .ae-video-room code { padding: 3px 9px; border-radius: 8px; background: var(--ae-surface); border: 1px solid var(--ae-border); font-size: .82rem; }
.ae-app .ae-video-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ae-app .ae-video-stage { margin-top: 12px; border-radius: 14px; overflow: hidden; background: #111; box-shadow: 0 18px 40px -22px rgba(0,0,0,.6); }
.ae-app .ae-video-stage iframe { display: block; width: 100%; height: min(70vh, 640px); border: 0; }
@media (max-width: 640px) { .ae-app .ae-video-stage iframe { height: 60vh; } }

/* ==================================================================
 * CONDIVIDERE — la finestra del biglietto
 * Un'anteprima di quello che vedrà chi lo riceve, le spunte sui modi
 * per mandarlo, e in fondo i permessi di prima, ripiegati.
 * ================================================================ */
.ae-app .ae-share { display: grid; gap: 14px; }
.ae-app .ae-share-preview { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border-radius: 14px;
	border: 1px solid color-mix(in srgb, var(--c, var(--ae-accent)) 28%, transparent);
	background: linear-gradient(120deg, color-mix(in srgb, var(--c, var(--ae-accent)) 12%, transparent), transparent 70%); }
.ae-app .ae-share-face { width: 54px; height: 54px; border-radius: 15px; flex: none; overflow: hidden; display: grid; place-items: center;
	background: color-mix(in srgb, var(--c, var(--ae-accent)) 18%, var(--ae-surface)); color: var(--c, var(--ae-accent)); }
.ae-app .ae-share-face img { width: 100%; height: 100%; object-fit: cover; }
.ae-app .ae-share-who { flex: 1; min-width: 0; display: grid; }
.ae-app .ae-share-who strong { font-size: 1.02rem; }
.ae-app .ae-share-who small { color: var(--ae-muted); }
.ae-app .ae-share-spiega { margin: 0; }

.ae-app .ae-share-scope { display: flex; flex-wrap: wrap; gap: 8px; }
.ae-app .ae-radio { display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border-radius: 999px; cursor: pointer;
	border: 1px solid var(--ae-border); background: var(--ae-surface); font-size: .86rem; font-weight: 600; }
.ae-app .ae-radio:has(input:checked) { border-color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 12%, transparent); color: var(--ae-accent); }

.ae-app .ae-share-title { margin: 4px 0 0; display: flex; align-items: center; gap: 7px; font-size: .78rem; font-weight: 700;
	letter-spacing: .1em; text-transform: uppercase; color: var(--ae-muted); }
.ae-app .ae-share-title small { font-weight: 500; letter-spacing: 0; text-transform: none; opacity: .8; }

.ae-app .ae-share-canali { display: grid; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: 8px; }
.ae-app .ae-share-ch { position: relative; display: flex; align-items: center; gap: 9px; padding: 10px 12px; border-radius: 12px; cursor: pointer;
	border: 1px solid var(--ae-border); background: var(--ae-surface); font-weight: 600; font-size: .88rem; transition: all .12s ease; }
.ae-app .ae-share-ch input { position: absolute; opacity: 0; pointer-events: none; }
.ae-app .ae-share-ch .ae-share-ico { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; flex: none;
	background: color-mix(in srgb, var(--c) 14%, transparent); color: var(--c); }
.ae-app .ae-share-ch .ae-share-nome { flex: 1; min-width: 0; }
.ae-app .ae-share-ch .ae-share-spunta { display: none; color: #fff; background: var(--c); border-radius: 50%; padding: 2px; }
.ae-app .ae-share-ch.is-on { border-color: var(--c); background: color-mix(in srgb, var(--c) 9%, transparent); }
.ae-app .ae-share-ch.is-on .ae-share-spunta { display: grid; place-items: center; }
.ae-app .ae-share-ch:hover { transform: translateY(-1px); }

.ae-app .ae-share-tools { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding-top: 4px; border-top: 1px dashed var(--ae-border); }
.ae-app .ae-share-off { margin-left: auto; }
.ae-app .ae-share-adv { border: 1px solid var(--ae-border); border-radius: 12px; padding: 10px 14px; background: var(--ae-surface); }
.ae-app .ae-share-adv summary { cursor: pointer; font-weight: 600; font-size: .88rem; display: flex; align-items: center; gap: 7px; }
.ae-app .ae-share-adv[open] summary { margin-bottom: 10px; }
.ae-app .ae-linkbtn { border: 0; background: none; padding: 0; color: var(--ae-accent); font: inherit; cursor: pointer; text-decoration: underline; }

.ae-app .ae-share-done { text-align: center; display: grid; gap: 10px; justify-items: center; }
.ae-app .ae-share-done-ico { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; color: #fff; background: #16a34a; }
.ae-app .ae-share-done h3 { margin: 0; }
.ae-app .ae-share-done p { margin: 0; }
.ae-app .ae-share-blocked { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.ae-app .ae-share-done-link { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center; width: 100%;
	padding: 10px 12px; border-radius: 10px; background: var(--ae-surface); border: 1px solid var(--ae-border); }
.ae-app .ae-share-done-link code { font-size: .78rem; overflow-wrap: anywhere; }
.ae-app .ae-share-done .ae-form-footer { width: 100%; }

/* ==================================================================
 * WHATSAPP
 * ================================================================ */
.ae-app .ae-wa-btn.ae-icon-btn { color: #128c4a; }
.ae-app .ae-wa-btn.ae-icon-btn:hover { background: color-mix(in srgb, #25d366 16%, transparent); }
.ae-app .ae-contact-wa { color: #128c4a; }
.ae-app .ae-wa { display: grid; gap: 12px; }
.ae-app .ae-wa-risultati { position: relative; margin-top: 6px; display: grid; gap: 4px; max-height: 220px; overflow: auto;
	border: 1px solid var(--ae-border); border-radius: 10px; padding: 5px; background: var(--ae-surface); }
.ae-app .ae-wa-ris { display: grid; text-align: left; border: 0; background: none; padding: 7px 9px; border-radius: 8px; cursor: pointer; font: inherit; }
.ae-app .ae-wa-ris:hover { background: color-mix(in srgb, var(--ae-accent) 12%, transparent); }
.ae-app .ae-wa-ris small { color: var(--ae-muted); }
.ae-app .ae-wa-modelli { display: grid; gap: 8px; }
.ae-app .ae-wa-modello { display: grid; gap: 3px; text-align: left; padding: 11px 13px; border-radius: 12px; cursor: pointer; font: inherit;
	border: 1px solid var(--ae-border); background: var(--ae-surface); }
.ae-app .ae-wa-modello:hover { border-color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 8%, transparent); }
.ae-app .ae-wa-modello small { color: var(--ae-muted); white-space: pre-wrap; }

/* ==================================================================
 * L'ASSISTENTE VOCALE
 * ================================================================ */
.ae-app .ae-guida { display: inline-flex; align-items: center; border-radius: 10px; }
.ae-app .ae-guida-btn.is-on { color: var(--ae-accent); background: color-mix(in srgb, var(--ae-accent) 15%, transparent); }
.ae-app .ae-guida-btn.is-on::after { content: ""; position: absolute; right: 5px; top: 5px; width: 6px; height: 6px; border-radius: 50%; background: #16a34a; }
.ae-app .ae-guida-btn { position: relative; }
.ae-app .ae-guida-more { width: 22px; min-width: 22px; padding: 0; opacity: .6; }
.ae-app .ae-guida-more:hover { opacity: 1; }
.ae-app .ae-voce-pan { display: grid; gap: 14px; }
.ae-app .ae-voce-prova { display: flex; flex-wrap: wrap; gap: 8px; }
.ae-app .ae-voce-pan input[type="range"] { width: 100%; accent-color: var(--ae-accent); }

@media (max-width: 640px) {
	.ae-app .ae-share-canali { grid-template-columns: 1fr 1fr; }
	.ae-app .ae-share-off { margin-left: 0; }
}

/* =========================================================================
   MODULI IN STILE PREMIUM (2.0.21)

   Un modulo si legge in verticale: etichetta discreta, campo largo e
   arioso, aiuto sotto. Le etichette non sono più fasce colorate né
   maiuscoletto acceso — quello urlava e rubava l'occhio al dato. Qui
   l'etichetta è un sottotitolo, il campo è il protagonista, e l'unico
   colore forte è l'accento: sul bordo del campo che ha il fuoco, sul
   riquadro scelto, sull'asterisco dei campi obbligatori.

   Vale ovunque: schede, anagrafiche, fatture, amministrazione, accesso.
   I colori vengono tutti dal tema (--ae-accent e compagni), quindi
   cambiando il colore dell'attività cambia tutto il modulo.
   ========================================================================= */

/* ---------- Etichette ---------- */
.ae-app .ae-field > label,
.ae-app .ae-form label.ae-label,
.ae-app label.ae-label {
	display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
	background: none; padding: 0; margin: 0 0 7px; border-radius: 0;
	color: var(--ae-ink-2);
	font-family: var(--ae-font);
	font-size: .82rem; font-weight: 550; letter-spacing: .01em; text-transform: none;
	position: static;
}
.ae-app .ae-field > label::after,
.ae-app .ae-form label.ae-label::after { content: none; }
.ae-app .ae-label small, .ae-app .ae-label .ae-opt { font-size: .74rem; font-weight: 400; color: var(--ae-muted); }
.ae-app .ae-label .ae-req { color: var(--ae-accent); font-weight: 700; }

/* ---------- Titoli di sezione ---------- */
.ae-app .ae-section-title {
	display: flex; align-items: center; gap: 10px;
	background: none; border: 0; border-bottom: 1px solid var(--ae-border);
	border-radius: 0; padding: 0 0 10px; margin: 22px 0 6px;
	font-family: var(--ae-serif);
	font-size: 1.34rem; font-weight: 600; letter-spacing: -.01em; text-transform: none;
	color: var(--ae-text);
}
.ae-app .ae-section-title::before {
	content: ""; flex: none; width: 4px; height: 1.05em; border-radius: 3px;
	background: linear-gradient(180deg, var(--ae-accent), var(--ae-accent-2));
}

/* ---------- Etichetta e valore nelle schede lette ---------- */
.ae-app .ae-values .ae-value {
	margin: 0 0 10px; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm);
	overflow: hidden; background: var(--ae-surface);
}
.ae-app .ae-values .ae-value > dt {
	display: block; margin: 0; padding: 9px 13px 0;
	background: none; color: var(--ae-muted);
	font-size: .68rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; line-height: 1.4;
}
.ae-app .ae-values .ae-value > dt::after { content: none; }
.ae-app .ae-values .ae-value > dd {
	margin: 0; padding: 3px 13px 10px; color: var(--ae-text);
	font-size: .98rem; line-height: 1.45; font-weight: 500;
}

/* ---------- Campi ---------- */
.ae-app .ae-input,
.ae-app select.ae-input,
.ae-app textarea.ae-input {
	border: 1px solid var(--ae-border-strong);
	border-radius: var(--ae-radius-sm);
	background: var(--ae-field-bg);
	padding: 12px 14px;
	font-size: .95rem;
	transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.ae-app select.ae-input { padding-right: 40px; }
.ae-app .ae-input:hover:not(:disabled):not([readonly]) { border-color: color-mix(in srgb, var(--ae-accent) 30%, var(--ae-border-strong)); }
.ae-app .ae-input:focus,
.ae-app select.ae-input:focus,
.ae-app textarea.ae-input:focus {
	outline: none;
	border-color: var(--ae-accent);
	background: var(--ae-field-bg-on);
	box-shadow: 0 0 0 4px var(--ae-accent-soft);
}
/* I campi che vivono dentro un'altra cornice restano nudi */
.ae-app .ae-mini-table .ae-input,
.ae-app .ae-tag-entry,
.ae-app .ae-rte-area,
.ae-app .ae-ss-search { border-color: transparent; background: none; }
.ae-app .ae-mini-table .ae-input:focus, .ae-app .ae-tag-entry:focus { box-shadow: none; }

/* ---------- La riga con l'interruttore ---------- */
.ae-app .ae-switch[data-billing-switch],
.ae-app .ae-switch--row {
	display: flex; align-items: center; gap: 16px; width: 100%;
	padding: 14px 16px; margin-top: 12px;
	border: 1px solid var(--ae-border-strong); border-radius: var(--ae-radius-sm);
	background: var(--ae-field-bg);
}
.ae-app .ae-switch[data-billing-switch] .ae-switch-text,
.ae-app .ae-switch--row .ae-switch-text { order: 1; flex: 1; display: grid; gap: 2px; }
.ae-app .ae-switch[data-billing-switch] .ae-switch-track,
.ae-app .ae-switch--row .ae-switch-track { order: 2; }

/* ---------- Il piede del modulo ---------- */
.ae-app .ae-form-footer { border-top: 1px solid var(--ae-border); }
.ae-app .ae-form-footer .ae-btn--primary { min-width: 140px; }

/* ---------- Accesso: stesso vestito ---------- */
.ae-app .ae-login-form .ae-field > label.ae-label {
	background: none; color: var(--ae-ink-2); padding: 0; margin-bottom: 7px;
	font-size: .82rem; font-weight: 550; letter-spacing: .01em; text-transform: none; border-radius: 0;
}
.ae-app .ae-login-input .ae-input { padding-left: 40px; }
.ae-app .ae-login-input > .ae-ico { left: 14px; }

/* ---------- Tabelle di acquisizione: intestazioni tinte, non nere ---------- */
.ae-app .ae-acq-table th {
	background: color-mix(in srgb, var(--ae-accent) 10%, var(--ae-surface));
	color: color-mix(in srgb, var(--ae-accent) 78%, var(--ae-text));
	border-bottom: 1px solid color-mix(in srgb, var(--ae-accent) 28%, transparent);
	letter-spacing: .08em;
}

/* ---------- I comandi nativi seguono il tema ----------
   Senza «color-scheme» le caselle, i pallini, i calendari e le barre
   di scorrimento restano bianchi anche sul tema scuro: sono disegnati
   dal sistema, non dal foglio di stile. */
.ae-app { color-scheme: light; }
.ae-app[data-theme="dark"] { color-scheme: dark; }
.ae-app input[type="checkbox"], .ae-app input[type="radio"] { accent-color: var(--ae-accent); }

/* L'interruttore acceso prende il colore dell'attività, non un verde suo.
   Da spento, sul tema scuro, la pista deve comunque vedersi. */
.ae-app .ae-switch input:checked + .ae-switch-track { background: var(--ae-accent); }
.ae-app[data-theme="dark"] .ae-switch-track { background: color-mix(in srgb, var(--ae-text) 24%, transparent); }
.ae-app[data-theme="dark"] .ae-switch input:checked + .ae-switch-track { background: var(--ae-accent); }

/* L'asterisco resta attaccato al nome del campo; «facoltativo» va a destra. */
.ae-app label.ae-label { justify-content: flex-start; }
.ae-app label.ae-label small,
.ae-app label.ae-label .ae-opt { margin-left: auto; }

@media (max-width: 640px) {
	.ae-app .ae-choices { grid-template-columns: 1fr; }
	.ae-app .ae-section-title { font-size: 1.18rem; margin-top: 16px; }
	.ae-app .ae-input { padding: 12px 13px; }
}

/* =========================================================================
   ETICHETTE IN GRASSETTO CON SFUMATURA (2.0.22)

   L'etichetta torna a farsi notare, ma senza urlare: il testo è in
   grassetto e viene «riempito» con una sfumatura che parte dal colore
   dell'attività e finisce nel nero del testo. Così la prima parola è
   colorata — l'occhio la trova — e la fine resta inchiostro, che si
   legge sempre.

   La sfumatura sul testo si ottiene con background-clip. Dove non c'è
   (browser vecchi) il testo resta del suo colore pieno: la regola che
   lo rende trasparente sta dentro @supports, quindi non può mai far
   sparire un'etichetta.

   Il rigo sotto il campo e la riga del titolo di sezione seguono la
   stessa sfumatura, che si spegne verso destra.
   ========================================================================= */

.ae-app label.ae-label,
.ae-app .ae-field > label,
.ae-app .ae-form label.ae-label,
.ae-app .ae-values .ae-value > dt {
	font-weight: 750;
	letter-spacing: .012em;
	color: color-mix(in srgb, var(--ae-accent) 55%, var(--ae-text));
	position: relative;
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
	.ae-app label.ae-label,
	.ae-app .ae-field > label,
	.ae-app .ae-form label.ae-label,
	.ae-app .ae-values .ae-value > dt {
		background-image: linear-gradient(100deg,
			color-mix(in srgb, var(--ae-accent) 88%, #000) 0%,
			var(--ae-accent) 38%,
			var(--ae-accent-2) 100%);
		-webkit-background-clip: text;
		background-clip: text;
		-webkit-text-fill-color: transparent;
	}

	/* Sul tema scuro le stesse tinte sarebbero cupe: si schiariscono,
	   così l'etichetta resta leggibile su fondo quasi nero. */
	.ae-app[data-theme="dark"] label.ae-label,
	.ae-app[data-theme="dark"] .ae-field > label,
	.ae-app[data-theme="dark"] .ae-form label.ae-label,
	.ae-app[data-theme="dark"] .ae-values .ae-value > dt {
		background-image: linear-gradient(100deg,
			color-mix(in srgb, var(--ae-accent) 55%, #fff) 0%,
			color-mix(in srgb, var(--ae-accent) 72%, #fff) 38%,
			color-mix(in srgb, var(--ae-accent-2) 66%, #fff) 100%);
	}

	/* Quello che sta dentro l'etichetta ma non è l'etichetta — «facoltativo»,
	   l'asterisco, le notine — riprende il proprio colore pieno. */
	.ae-app label.ae-label small,
	.ae-app label.ae-label .ae-opt,
	.ae-app label.ae-label em,
	.ae-app .ae-field > label small,
	.ae-app .ae-field > label .ae-opt {
		background: none;
		-webkit-text-fill-color: var(--ae-muted);
		color: var(--ae-muted);
		font-weight: 400;
	}
	.ae-app label.ae-label .ae-req,
	.ae-app .ae-field > label .ae-req {
		background: none;
		-webkit-text-fill-color: var(--ae-accent);
		color: var(--ae-accent);
	}
	.ae-app label.ae-label .ae-ico,
	.ae-app .ae-field > label .ae-ico { -webkit-text-fill-color: currentColor; }
}

/* Il filo sotto l'etichetta: pieno sotto le prime lettere, poi sfuma via. */
.ae-app label.ae-label::after,
.ae-app .ae-field > label::after,
.ae-app .ae-form label.ae-label::after {
	content: "";
	position: absolute; left: 0; right: 0; bottom: -3px; height: 1.5px;
	border-radius: 2px;
	background: linear-gradient(90deg,
		color-mix(in srgb, var(--ae-accent) 70%, transparent) 0,
		color-mix(in srgb, var(--ae-accent-2) 34%, transparent) 38%,
		transparent 82%);
}
.ae-app label.ae-label { padding-bottom: 4px; }

/* Nelle schede lette l'etichetta è più piccola: niente filo, basta la tinta. */
.ae-app .ae-values .ae-value > dt { font-size: .7rem; letter-spacing: .09em; }
.ae-app .ae-values .ae-value > dt::after { content: none; }

/* Dove l'etichetta fa da riga di un elenco (tabelline, righe compatte)
   la sfumatura darebbe fastidio: lì resta inchiostro. */
.ae-app .ae-mini-table label.ae-label,
.ae-app .ae-checklist-row label.ae-label,
.ae-app .ae-imu-table label.ae-label {
	background: none; -webkit-text-fill-color: var(--ae-ink-2); color: var(--ae-ink-2);
	font-weight: 600; padding-bottom: 0;
}
.ae-app .ae-mini-table label.ae-label::after,
.ae-app .ae-checklist-row label.ae-label::after { content: none; }

/* Il titolo di sezione: stessa sfumatura sul testo e sulla riga sotto. */
.ae-app .ae-section-title {
	border-bottom: 0;
	padding-bottom: 12px;
}
.ae-app .ae-section-title::after {
	content: "";
	position: absolute; left: 0; right: 0; bottom: 0; height: 2px; border-radius: 2px;
	background: linear-gradient(90deg,
		var(--ae-accent) 0,
		var(--ae-accent-2) 18%,
		color-mix(in srgb, var(--ae-accent-2) 26%, transparent) 42%,
		var(--ae-border) 70%,
		transparent 100%);
}
.ae-app .ae-section-title { position: relative; }

/* ---------- Allegati intelligenti (dettaglio scheda) ---------- */
.ae-detail-attach h3 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ae-detail-attach h3 .ae-attach-read { margin-left: auto; }
.ae-attach-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; margin: 6px 0 14px; }
.ae-attach-item { display: flex; flex-direction: column; border: 1px solid var(--ae-border); border-radius: var(--ae-radius-sm); overflow: hidden; background: var(--ae-surface); text-decoration: none; color: inherit; transition: transform .15s, box-shadow .15s; }
.ae-attach-item:hover { transform: translateY(-2px); box-shadow: var(--ae-shadow); }
.ae-attach-item img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.ae-attach-ico { display: grid; place-items: center; aspect-ratio: 1; color: var(--ae-muted); background: var(--ae-surface-2); }
.ae-attach-name { font-size: .72rem; padding: 6px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--ae-muted); }
.ae-attach-add { margin-top: 6px; }
.ae-attach-auto { margin-top: 8px; font-size: .84rem; }
.ae-attach-report { margin-top: 10px; }
.ae-attach-progress { padding: 10px 14px; border-radius: var(--ae-radius-sm); background: var(--ae-accent-soft); font-size: .86rem; display: flex; gap: 8px; align-items: center; }
.ae-attach-log { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ae-attach-log li { padding: 8px 12px; border-radius: var(--ae-radius-sm); background: var(--ae-surface-2); font-size: .86rem; border-left: 3px solid var(--ae-ok); }
.ae-attach-log li.is-ko { border-left-color: var(--ae-danger); }
.ae-attach-log li small { display: block; color: var(--ae-muted); margin-top: 2px; }
.ae-attach-log .ae-chip { margin-left: 4px; }

/* ---------- «Aggiungi un campo con etichetta» nei moduli ---------- */
.ae-add-field { border-top: 1px dashed var(--ae-border-strong); padding-top: 12px; }
.ae-add-field-btn { border-style: dashed; }
.ae-add-field-panel { margin-top: 8px; padding: 12px; border-radius: var(--ae-radius-sm); background: var(--ae-surface-2); border: 1px solid var(--ae-border); }
.ae-add-field-row { display: grid; grid-template-columns: 1fr auto auto auto; gap: 8px; align-items: center; }
.ae-add-field-row .ae-select { min-width: 170px; }
.ae-add-field-panel textarea { margin-top: 8px; }
.ae-add-field-panel .ae-hint { margin: 8px 0 0; }
@media (max-width: 640px) { .ae-add-field-row { grid-template-columns: 1fr 1fr; } .ae-add-field-row .ae-input:first-child { grid-column: 1 / -1; } }

/* [ae_login] da connesso: chi sei + Vai all'app */
.ae-login-wall--in .ae-login-avatar { width: 64px; height: 64px; border-radius: 50%; display: block; margin: 0 auto 10px; }
.ae-login-wall--in .ae-login-submit { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 100%; text-decoration: none; }
.ae-login-redirect { text-align: center; padding: 20px; }

/* =========================================================
   INDICE DI AFFIDABILITÀ
   Una riga: punteggio, giudizio con la barra sottile, tasti piccoli.
   ========================================================= */
.ae-fiducia { --c: var(--ae-muted); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px 18px; align-items: center; padding: 12px 16px 12px 14px; margin: 0 0 16px; border: 1px solid var(--ae-border); border-left: 4px solid var(--c); border-radius: var(--ae-radius, 14px); background: var(--ae-surface); }
.ae-fiducia-score { min-width: 64px; text-align: center; font-variant-numeric: tabular-nums; line-height: 1; color: var(--c); }
.ae-fiducia-score b { font-size: 2rem; font-weight: 700; letter-spacing: -.02em; }
.ae-fiducia-score small { font-size: .72rem; font-weight: 600; color: var(--ae-muted); margin-left: 1px; }
.ae-fiducia.is-vuota .ae-fiducia-score b { color: var(--ae-border-strong); }
.ae-fiducia-main { display: grid; gap: 4px; min-width: 0; }
.ae-fiducia-eyebrow { margin: 0; font-size: .68rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; color: var(--ae-muted); }
.ae-fiducia-eyebrow span { font-weight: 500; letter-spacing: .02em; text-transform: none; }
.ae-fiducia-giudizio { margin: 0; font-size: .9rem; line-height: 1.35; }
.ae-fiducia-giudizio strong { color: var(--ae-text); }
.ae-fiducia-giudizio span { color: var(--ae-ink-2); }
.ae-fiducia-bar { max-width: 320px; color: var(--ae-text); margin-top: 2px; }
.ae-fiducia-bar .ae-fid-gauge { display: block; width: 100%; height: auto; }
.ae-fiducia-scala { display: flex; justify-content: space-between; font-size: .62rem; color: var(--ae-muted); letter-spacing: .02em; }
.ae-fiducia-azioni { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; align-self: center; }
.ae-fiducia-azioni .ae-btn--sm { padding: 7px 11px; font-size: .8rem; }
.ae-fiducia-azioni .ae-btn svg { width: 14px; height: 14px; }
.ae-do.is-busy, .ae-btn.is-busy { opacity: .6; pointer-events: none; }
@media (max-width: 820px) { .ae-fiducia { grid-template-columns: auto 1fr; } .ae-fiducia-azioni { grid-column: 1 / -1; justify-content: flex-start; } }

/* Dettaglio in finestra */
.ae-fid-head { display: flex; gap: 16px; align-items: center; padding: 12px 14px; border: 1px solid var(--ae-border); border-radius: 12px; margin-bottom: 12px; }
.ae-fid-big { font-size: 2.6rem; font-weight: 700; line-height: 1; color: var(--c, var(--ae-accent)); }
.ae-fid-big small { font-size: .9rem; color: var(--ae-muted); font-weight: 500; }
.ae-fid-head p { margin: 2px 0 4px; font-size: .9rem; color: var(--ae-ink-2); }
.ae-fid-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ae-fid-row { display: grid; grid-template-columns: 26px 1fr auto; gap: 10px; align-items: start; padding: 8px 10px; border-radius: 10px; background: var(--ae-surface-2); }
.ae-fid-row p { margin: 2px 0 0; font-size: .84rem; color: var(--ae-ink-2); }
.ae-fid-row b { font-size: .9rem; }
.ae-fid-es { display: inline-flex; width: 22px; height: 22px; border-radius: 50%; align-items: center; justify-content: center; color: #fff; font-size: .72rem; font-weight: 700; background: #9ca3af; }
.ae-fid-row.is-ok .ae-fid-es { background: #16a34a; } .ae-fid-row.is-warn .ae-fid-es { background: #f59e0b; } .ae-fid-row.is-ko .ae-fid-es { background: #dc2626; }
.ae-fid-peso { font-size: .8rem; color: var(--ae-muted); font-variant-numeric: tabular-nums; }
.ae-fid-foot { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }

/* Anagrafica da sito web */
.ae-dasito-row { display: flex; gap: 8px; margin: 8px 0 12px; }
.ae-dasito-row .ae-input { flex: 1; }
.ae-dasito-head { display: flex; gap: 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--ae-border); border-radius: 12px; margin-bottom: 12px; background: var(--ae-surface-2); }
.ae-dasito-logo { width: 48px; height: 48px; object-fit: contain; border-radius: 8px; background: #fff; padding: 3px; border: 1px solid var(--ae-border); }
.ae-dasito .ae-ok { color: #16a34a; }
.ae-dasito-inline { display: grid; grid-template-columns: auto 1fr minmax(180px, 260px) auto; gap: 10px; align-items: center; padding: 10px 14px; margin: 0 0 12px; border: 1px dashed var(--ae-border-strong); border-radius: 12px; background: var(--ae-surface-2); color: var(--ae-accent); }
.ae-dasito-inline-txt { color: var(--ae-text); font-size: .88rem; }
.ae-dasito-inline-txt span { color: var(--ae-ink-2); }
@media (max-width: 760px) { .ae-dasito-inline { grid-template-columns: auto 1fr; } .ae-dasito-inline .ae-input, .ae-dasito-inline .ae-btn { grid-column: 1 / -1; } }

/* Attesa: metronomo in basso al centro */
.ae-attesa { position: fixed; left: 50%; bottom: 22px; transform: translateX(-50%); z-index: 100001; display: flex; align-items: center; gap: 12px; padding: 9px 16px 9px 12px; border-radius: 999px; background: color-mix(in srgb, #111827 88%, transparent); color: #fff; font-size: .84rem; font-weight: 500; box-shadow: 0 12px 30px rgba(0,0,0,.28); backdrop-filter: blur(8px); animation: ae-attesa-in .22s ease; pointer-events: none; }
.ae-attesa.is-via { opacity: 0; transition: opacity .25s; }
.ae-attesa-metro { position: relative; width: 26px; height: 26px; display: inline-block; }
.ae-attesa-metro::before { content: ""; position: absolute; left: 50%; bottom: 2px; width: 14px; height: 4px; margin-left: -7px; border-radius: 2px; background: rgba(255,255,255,.55); }
.ae-attesa-asta { position: absolute; left: 50%; bottom: 5px; width: 2px; height: 20px; margin-left: -1px; border-radius: 1px; background: #fff; transform-origin: 50% 100%; animation: ae-attesa-swing .9s ease-in-out infinite alternate; }
.ae-attesa-asta::after { content: ""; position: absolute; top: 2px; left: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--ae-accent, #7c83ff); }
@keyframes ae-attesa-swing { from { transform: rotate(-32deg); } to { transform: rotate(32deg); } }
@keyframes ae-attesa-in { from { opacity: 0; transform: translate(-50%, 8px); } }
@media (prefers-reduced-motion: reduce) { .ae-attesa-asta { animation-duration: 1.8s; } }

/* =========================================================
   INDICE DI AFFIDABILITÀ — la pagina
   ========================================================= */
.ae-fid-sommario { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin: 0 0 14px; }
.ae-fid-quadro { --c: var(--ae-muted); display: grid; gap: 2px; min-width: 108px; padding: 10px 14px; border: 1px solid var(--ae-border); border-left: 3px solid var(--c); border-radius: 12px; background: var(--ae-surface); cursor: pointer; font: inherit; text-align: left; transition: border-color .15s, transform .12s; }
.ae-fid-quadro:hover { transform: translateY(-1px); border-color: var(--c); }
.ae-fid-quadro.is-on { border-color: var(--c); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c) 18%, transparent); }
.ae-fid-quadro b { font-size: 1.5rem; line-height: 1; color: var(--c); font-variant-numeric: tabular-nums; }
.ae-fid-quadro span { font-size: .76rem; color: var(--ae-ink-2); }
.ae-fid-tot { margin: 0 0 0 auto; font-size: .82rem; color: var(--ae-muted); }
.ae-fid-filtri { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.ae-fid-filtri .ae-search-box { flex: 1 1 260px; }
.ae-fid-filtri select { max-width: 220px; }
.ae-fid-tabella { overflow-x: auto; border: 1px solid var(--ae-border); border-radius: 14px; background: var(--ae-surface); }
.ae-fid-tab { width: 100%; border-collapse: collapse; font-size: .9rem; }
.ae-fid-tab th { text-align: left; font-size: .7rem; text-transform: uppercase; letter-spacing: .07em; color: var(--ae-muted); font-weight: 600; padding: 10px 14px; border-bottom: 1px solid var(--ae-border); }
.ae-fid-tab td { padding: 10px 14px; border-bottom: 1px solid var(--ae-border); vertical-align: middle; }
.ae-fid-tab tr:last-child td { border-bottom: 0; }
.ae-fid-tab tr { --c: var(--ae-muted); }
.ae-fid-nome a { font-weight: 600; text-decoration: none; color: var(--ae-text); }
.ae-fid-nome a:hover { color: var(--ae-accent); }
.ae-fid-nome small { display: block; color: var(--ae-muted); font-size: .76rem; }
.ae-fid-val { display: flex; align-items: center; gap: 10px; color: var(--ae-text); }
.ae-fid-val .ae-fid-gauge { flex: none; }
.ae-fid-punti { font-size: .82rem; color: var(--c); white-space: nowrap; }
.ae-fid-punti b { font-size: 1rem; font-variant-numeric: tabular-nums; }
.ae-fid-c { white-space: nowrap; color: var(--ae-muted); }
.ae-fid-azioni { display: flex; gap: 5px; justify-content: flex-end; flex-wrap: wrap; }
.ae-fid-azioni .ae-btn--sm { padding: 6px 9px; }
@media (max-width: 720px) { .ae-fid-tab th:nth-child(3), .ae-fid-tab td:nth-child(3) { display: none; } }

/* ------------------------------------------------------------------
 * Il pulsantino «copia negli appunti» dei campi
 *
 * Sta in coda all'etichetta, non ruba spazio al campo e non entra nel
 * giro del tabulatore. Sul computer compare passando sopra al campo;
 * su telefono e tavoletta resta sempre visibile, perché lì il passaggio
 * del dito non esiste.
 * ---------------------------------------------------------------- */
.ae-field.ae-has-copy > .ae-label,
.ae-view-row.ae-has-copy > .ae-label { display: inline-flex; align-items: center; gap: 6px; }
.ae-copy-field {
	display: inline-flex; align-items: center; justify-content: center;
	width: 22px; height: 22px; padding: 0; margin: 0;
	border: 0; border-radius: 6px; background: transparent; cursor: pointer;
	color: var(--muted, #6b7280); opacity: 0; transform: translateY(1px);
	transition: opacity .15s ease, background .15s ease, color .15s ease;
}
.ae-copy-field svg { width: 13px; height: 13px; display: block; }
.ae-has-copy:hover .ae-copy-field,
.ae-has-copy:focus-within .ae-copy-field,
.ae-copy-field:focus-visible { opacity: 1; }
.ae-copy-field:hover { background: var(--soft, #eef1f7); color: var(--accent, #4f46e5); }
.ae-copy-field.is-done { opacity: 1; color: #16a34a; background: rgba(22,163,74,.12); }
@media (hover: none) {
	.ae-copy-field { opacity: .55; }
}
@media print {
	.ae-copy-field { display: none !important; }
}

/* ------------------------------------------------------------------
 * Rete di sicurezza contro i paragrafi automatici
 *
 * Se un tema o un costruttore di pagine reinfila i «paragrafi
 * automatici» nell'HTML dell'applicazione, i paragrafi vuoti restano
 * nel documento e allargano barre e moduli. Un paragrafo senza niente
 * dentro non ha mai un significato: si toglie di mezzo.
 * ---------------------------------------------------------------- */
.ae-app p:empty,
.ae-shop p:empty { display: none !important; }
.ae-topbar p, .ae-topbar-right p, .ae-quick p, .ae-nav p { display: none !important; }

/* ------------------------------------------------------------------
 * Ordini e licenze
 * ---------------------------------------------------------------- */
.ae-ord-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin: 18px 0; }
.ae-ord-quadro { display: flex; gap: 12px; align-items: center; padding: 14px 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--card, #fff); }
.ae-ord-ico { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: var(--soft, #eef1f7); color: var(--accent, #4f46e5); flex: none; }
.ae-ord-quadro b { display: block; font-size: 1.25rem; font-weight: 800; line-height: 1.15; }
.ae-ord-quadro span { display: block; font-size: .84rem; font-weight: 600; }
.ae-ord-quadro small { display: block; font-size: .76rem; color: var(--muted, #6b7280); }

.ae-ord-bar { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.ae-ord-search { flex: 1 1 280px; }
.ae-ord-chips { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ae-ord-anno { width: auto; min-width: 140px; }

.ae-ord-tab td { vertical-align: top; }
.ae-ord-tab small { display: block; color: var(--muted, #6b7280); font-size: .76rem; line-height: 1.45; }
.ae-ord-nota { font-style: italic; }
.ae-ord-righe { font-size: .84rem; line-height: 1.5; }
.ae-ord-righe em { font-style: normal; font-weight: 700; color: #16a34a; }
.ae-ord-tot b { font-size: 1rem; white-space: nowrap; }
.ae-ord-stato { width: auto; min-width: 150px; }
.ae-ord-doc { display: table-cell; }
.ae-ord-doc > * { margin: 0 4px 6px 0; }
.ae-ord-pill { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 999px; font-size: .74rem; font-weight: 700; background: var(--soft, #eef1f7); color: var(--muted, #6b7280); }
.ae-ord-pill.is-ok { background: rgba(22,163,74,.12); color: #15803d; }
.ae-ord-pill.is-wait { background: rgba(217,119,6,.12); color: #b45309; }
.ae-ord-azioni { white-space: nowrap; }
.ae-ord-azioni > * { margin: 0 4px 6px 0; }
.ae-ord-tab tr.is-pagato td:first-child { box-shadow: inset 3px 0 0 #16a34a; }
.ae-ord-tab tr.is-in_attesa td:first-child { box-shadow: inset 3px 0 0 #f59e0b; }
.ae-ord-tab tr.is-annullato td { opacity: .55; }
@media (max-width: 1100px) {
	.ae-ord-tab .ae-ord-righe { display: none; }
}

/* Il riquadro che spiega il regime fiscale scelto */
.ae-regime-box { margin-top: 4px; }
.ae-regime-note { margin-top: 8px; font-size: .85em; }
.ae-regime-note ul { margin: 4px 0 0; padding-left: 18px; }
.ae-regime-note li { margin: 2px 0; }
.ae-field.is-spento { opacity: .5; }
.ae-field.is-spento .ae-input { background: var(--soft, #eef1f7); cursor: not-allowed; }
.ae-notice--info { border-color: #4f46e5; background: color-mix(in srgb, #4f46e5 8%, transparent); }
