/* ==========================================================================
   VisioBali - design system (redesign mockup). Classi semantiche, zero inline.
   Token e componenti portati da mockup/Web Platform.dc.html.
   ========================================================================== */

:root {
	--blue: #2467F0;
	--blue-d: #1b56d4;
	--ink: #16213E;
	--ink-2: #243769;
	--muted: #6E7686;
	--muted-2: #4A5163;
	--muted-3: #9AA0AE;
	--bg: #F4F5FB;
	--bg-2: #FBFBFD;
	--card: #ffffff;
	--line: rgba(20, 30, 55, .08);
	--line-2: rgba(20, 30, 55, .06);
	--line-3: rgba(20, 30, 55, .12);
	--yellow: #E8FF2E;
	--gold: #F5C451;
	--green: #33D17A;
	--green-l: #7ef0a8;
	--r-sm: 10px;
	--r: 12px;
	--r-md: 13px;
	--r-lg: 20px;
	--r-xl: 22px;
	--r-pill: 999px;
	--font: 'Inter', system-ui, -apple-system, sans-serif;
	--font-display: 'Plus Jakarta Sans', var(--font);
	--font-mono: 'Geist Mono', ui-monospace, monospace;
	--shadow-cta: 0 16px 34px -12px rgba(36, 103, 240, .6);
	--shadow-cta-sm: 0 10px 24px -10px rgba(36, 103, 240, .6);
	--shadow-card: 0 30px 60px -24px rgba(20, 30, 55, .35);
	--shadow-card-dark: 0 30px 60px -24px rgba(20, 30, 55, .5);
	--shadow-badge: 0 6px 16px -10px rgba(20, 30, 55, .3);

	/* Compat: token HSL del vecchio design, usati negli inline di app/admin.
	   Mappati ai colori del nuovo design cosi' `hsl(var(--lime))` ecc. risolvono on-brand. */
	--lime: 224 90% 54%;
	--lime-hover: 222 80% 46%;
	--lime-foreground: 0 0% 100%;
	--lime-soft: 225 100% 96%;
	--primary: 224 90% 54%;
	--primary-foreground: 0 0% 100%;
	--foreground: 223 48% 16%;
	--foreground-muted: 220 9% 48%;
	--card-foreground: 223 48% 16%;
	--card: 0 0% 100%;
	--card-elevated: 0 0% 100%;
	--background: 220 25% 98%;
	--background-secondary: 228 33% 97%;
	--border: 220 16% 90%;
	--input: 220 16% 88%;
	--ring: 224 90% 54%;
	--destructive: 0 74% 55%;
	--success: 151 55% 42%;
	--warning: 40 86% 52%;
	--accent: 258 100% 82%;
	--peach: 34 100% 86%;
	--sun: 72 100% 59%;
	--ocean-deep: 223 48% 16%;
	--radius: 12px;
	--dot: 224 90% 54%;
	--shadow-lime: 0 14px 40px -16px rgba(36, 103, 240, .3);
}

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
	background: #fff;
	color: var(--ink);
	font-family: var(--font);
	-webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
.mono { font-family: var(--font-mono); }
.eyebrow {
	font-size: 12.5px;
	text-transform: uppercase;
	letter-spacing: 0.16em;
	color: var(--blue);
	font-weight: 700;
}
h1, h2, h3, h4 { font-family: var(--font-display); letter-spacing: -0.03em; margin: 0; }

/* ---------- layout ---------- */
.container { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 24px; }
.section-pad { padding: 88px 0; }
.section-tint { background: var(--bg-2); border-top: 1px solid var(--line-2); }

/* ---------- bottoni ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	font-family: var(--font);
	font-size: 16px;
	font-weight: 600;
	line-height: 1;
	border: 1px solid transparent;
	border-radius: var(--r);
	padding: 15px 26px;
	cursor: pointer;
	white-space: nowrap;
	transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { color: #fff; background: var(--blue); box-shadow: var(--shadow-cta); }
.btn-primary:hover { background: var(--blue-d); }
.btn-ghost { color: var(--ink); background: var(--bg); border-color: var(--line-3); }
.btn-yellow { color: var(--ink); background: var(--yellow); }
.btn-yellow:hover { filter: brightness(.97); }
.btn-sm { font-size: 14px; padding: 10px 18px; border-radius: var(--r-sm); }
.btn-block { width: 100%; }
.btn .i { width: 18px; height: 18px; }

/* ---------- nav ---------- */
.nav {
	position: sticky;
	top: 0;
	z-index: 50;
	background: rgba(255, 255, 255, .86);
	backdrop-filter: blur(14px);
	border-bottom: 1px solid var(--line);
}
.nav-inner { height: 68px; display: flex; align-items: center; justify-content: space-between; }
.nav-logo { display: flex; align-items: center; gap: 11px; }
.nav-logo-img { height: 28px; }
.nav-links { display: flex; align-items: center; gap: 32px; }
.nav-links a { font-size: 14px; font-weight: 500; color: var(--muted-2); }
.nav-links a:hover { color: var(--ink); }
.nav-cta { display: flex; align-items: center; gap: 12px; }
.nav-lang-wrap { position: relative; }
.nav-lang { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; color: var(--muted-2); background: none; border: 0; cursor: pointer; font-family: var(--font); padding: 4px 7px; border-radius: 8px; }
.nav-lang:hover { background: var(--bg); }
.nav-lang-caret { stroke: var(--muted-3); transition: transform .15s ease; }
.nav-lang-wrap.is-open .nav-lang-caret { transform: rotate(180deg); }
.nav-lang-flag { display: inline-block; width: 20px; height: 14px; border-radius: 3px; overflow: hidden; box-shadow: 0 0 0 1px rgba(0, 0, 0, .08); flex-shrink: 0; }
.nav-lang-flag svg { display: block; width: 100%; height: 100%; }
.nav-lang-menu { position: absolute; top: calc(100% + 8px); right: 0; min-width: 168px; background: #fff; border: 1px solid var(--line-3); border-radius: 12px; box-shadow: 0 16px 40px -12px rgba(20, 30, 55, .28); padding: 6px; z-index: 60; }
.nav-lang-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; background: none; border-radius: 8px; cursor: pointer; font-family: var(--font); font-size: 14px; font-weight: 500; color: var(--ink); text-align: left; }
.nav-lang-item:hover { background: var(--bg); }
.nav-lang-item.is-active { color: var(--blue); font-weight: 600; }
.nav-signin { font-size: 14px; font-weight: 600; color: var(--ink); padding: 9px 14px; }
.burger { display: none; width: 42px; height: 42px; border-radius: 11px; background: var(--bg); border: 1px solid var(--line-3); align-items: center; justify-content: center; cursor: pointer; }

/* ---------- hero ---------- */
.hero { padding: 88px 0 96px; background: radial-gradient(900px 500px at 80% -10%, #EAF1FF 0%, transparent 60%); }
.hero-grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 56px; align-items: center; }
.hero-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #fff;
	border: 1px solid var(--line-3);
	border-radius: var(--r-pill);
	padding: 6px 12px 6px 8px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--muted-2);
	margin-bottom: 22px;
	box-shadow: var(--shadow-badge);
}
.hero-badge-mark { width: 20px; height: 20px; border-radius: 6px; background: var(--blue); display: grid; place-items: center; }
.hero-h1 { font-size: 60px; line-height: 1.02; font-weight: 800; letter-spacing: -0.04em; margin: 0 0 20px; }
.hero-sub { font-size: 18px; line-height: 1.6; color: var(--muted-2); margin: 0 0 30px; max-width: 52ch; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 26px; }
.hero-facts { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; color: var(--muted); font-size: 13px; }
.hero-fact { display: flex; align-items: center; gap: 7px; }
.hero-fact svg { stroke: var(--green); }

/* hero visual: card impilate */
.hero-visual { position: relative; height: 440px; }
.hero-card-rec {
	position: absolute; top: 20px; right: 0; width: 300px;
	background: #fff; border: 1px solid var(--line); border-radius: var(--r-xl);
	padding: 20px; box-shadow: var(--shadow-card);
}
.hero-rec-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em; color: var(--blue); font-weight: 700; margin-bottom: 14px; }
.hero-rec-title { font-family: var(--font-display); font-weight: 800; font-size: 22px; letter-spacing: -0.02em; }
.hero-rec-meta { font-size: 13px; color: var(--muted); margin-top: 3px; }
.hero-rec-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 16px; }
.hero-rec-stat { background: var(--bg); border-radius: var(--r); padding: 12px; }
.hero-rec-stat-k { font-size: 10px; color: var(--muted-3); text-transform: uppercase; }
.hero-rec-stat-v { font-weight: 700; font-size: 16px; }
.hero-rec-cta { margin-top: 14px; background: var(--blue); color: #fff; border-radius: var(--r); padding: 12px; text-align: center; font-size: 14px; font-weight: 600; }
.hero-card-wallet {
	position: absolute; bottom: 10px; left: 0; width: 250px;
	background: var(--ink); color: #fff; border-radius: var(--r-lg);
	padding: 18px; box-shadow: var(--shadow-card-dark);
}
.hero-wallet-row { display: flex; align-items: center; gap: 10px; }
.hero-wallet-ic { width: 36px; height: 36px; border-radius: var(--r-sm); background: rgba(51, 209, 122, .2); display: grid; place-items: center; }
.hero-wallet-t { font-size: 13px; font-weight: 700; }
.hero-wallet-s { font-size: 11px; color: rgba(255, 255, 255, .6); }
.hero-wallet-bar { margin-top: 14px; height: 6px; background: rgba(255, 255, 255, .15); border-radius: 3px; overflow: hidden; }
.hero-wallet-bar > span { display: block; height: 100%; width: 100%; background: var(--green); }

/* ---------- logos / trust bar ---------- */
.logos { border-top: 1px solid var(--line-2); border-bottom: 1px solid var(--line-2); background: var(--bg-2); }
.logos-inner { padding: 22px 24px; display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.logos-label { font-size: 12px; color: var(--muted-3); text-transform: uppercase; letter-spacing: 0.14em; font-weight: 600; }
.logos-list { display: flex; align-items: center; gap: 36px; flex-wrap: wrap; opacity: .55; font-family: var(--font-display); font-weight: 800; font-size: 18px; color: var(--ink); }

/* ---------- section heading ---------- */
.sec-head-center { text-align: center; max-width: 640px; margin: 0 auto 48px; }
.sec-head-center .eyebrow { margin-bottom: 12px; }
.sec-title { font-weight: 800; font-size: 38px; letter-spacing: -0.03em; margin: 0 0 12px; }
.sec-sub { font-size: 16px; color: var(--muted-2); line-height: 1.6; margin: 0; }
.sec-head-split { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 40px; flex-wrap: wrap; }
.sec-link { font-size: 14px; font-weight: 600; color: var(--blue); display: inline-flex; align-items: center; gap: 6px; }

/* ---------- how it works ---------- */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.step { background: var(--bg); border: 1px solid var(--line-2); border-radius: var(--r-lg); padding: 24px; }
.step-ic { width: 44px; height: 44px; border-radius: var(--r-md); background: #fff; border: 1px solid var(--line); display: grid; place-items: center; margin-bottom: 16px; }
.step-ic svg { stroke: var(--blue); }
.step-num { font-size: 12px; color: var(--blue); margin-bottom: 6px; }
.step h3 { font-weight: 700; font-size: 18px; margin: 0 0 6px; }
.step p { font-size: 14px; color: var(--muted-2); line-height: 1.55; margin: 0; }
.step-wide {
	background: var(--ink); color: #fff; border-radius: var(--r-lg); padding: 24px;
	grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between;
	gap: 24px; flex-wrap: wrap;
}
.step-wide-l { display: flex; align-items: center; gap: 18px; }
.step-wide-ic { width: 44px; height: 44px; border-radius: var(--r-md); background: rgba(51, 209, 122, .2); display: grid; place-items: center; }
.step-wide .step-num { color: var(--green-l); margin-bottom: 4px; }
.step-wide h3 { font-weight: 700; font-size: 18px; margin: 0; }
.step-wide p { font-size: 14px; color: rgba(255, 255, 255, .7); margin: 4px 0 0; }

/* ---------- services cards ---------- */
.cards-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.svc-card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px; display: block; transition: transform .12s ease, box-shadow .12s ease; }
.svc-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-card); }
.svc-ic { width: 46px; height: 46px; border-radius: var(--r-md); background: rgba(36, 103, 240, .1); display: grid; place-items: center; margin-bottom: 16px; }
.svc-ic svg { stroke: var(--blue); }
.svc-ic.teal { background: rgba(27, 198, 201, .12); }
.svc-ic.teal svg { stroke: #1BC6C9; }
.svc-ic.gold { background: rgba(245, 196, 81, .14); }
.svc-ic.gold svg { stroke: #c99a1f; }
.svc-card h3 { font-weight: 700; font-size: 18px; margin: 0 0 6px; }
.svc-card p { font-size: 14px; color: var(--muted-2); line-height: 1.55; margin: 0 0 14px; }
.svc-from { font-size: 13px; font-weight: 600; color: var(--blue); }

/* ---------- pricing / membership ---------- */
.pricing { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.plan { background: #fff; border: 1px solid var(--line-3); border-radius: var(--r-xl); padding: 28px; position: relative; }
.plan-name { font-weight: 800; font-size: 20px; margin: 0 0 4px; }
.plan-tag { font-size: 13px; color: var(--muted); margin: 0 0 18px; }
.plan-price { font-family: var(--font-display); font-weight: 800; font-size: 36px; letter-spacing: -0.02em; }
.plan-price span { font-size: 15px; font-weight: 500; color: var(--muted); }
.plan-price-note { font-size: 13px; color: var(--muted); margin-bottom: 20px; }
.plan-cta { display: block; text-align: center; border-radius: var(--r); padding: 13px; font-size: 14px; font-weight: 600; margin-bottom: 20px; background: var(--bg); color: var(--ink); border: 1px solid var(--line-3); }
.plan-feats { display: flex; flex-direction: column; gap: 11px; font-size: 13.5px; color: var(--muted-2); }
.plan-feat { display: flex; gap: 9px; }
.plan-feat svg { flex: none; stroke: var(--green); }
.plan-featured { background: linear-gradient(160deg, var(--ink), var(--ink-2)); color: #fff; box-shadow: var(--shadow-card-dark); }
.plan-featured .plan-tag,
.plan-featured .plan-price-note,
.plan-featured .plan-price span { color: rgba(255, 255, 255, .6); }
.plan-featured .plan-feats { color: rgba(255, 255, 255, .85); }
.plan-featured .plan-feat svg { stroke: var(--yellow); }
.plan-featured .plan-cta { background: var(--yellow); color: var(--ink); border: 0; font-weight: 700; }
.plan-badge { position: absolute; top: 20px; right: 20px; font-size: 11px; font-weight: 700; background: var(--yellow); color: var(--ink); border-radius: var(--r-pill); padding: 5px 11px; }
.plan-matrix { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; margin-top: 40px; }
.plan-matrix-head { padding: 18px 22px; border-bottom: 1px solid var(--line-2); font-family: var(--font-display); font-weight: 700; font-size: 16px; }
.plan-matrix-scroll { overflow-x: auto; }
.plan-matrix table { width: 100%; min-width: 560px; border-collapse: collapse; }
.plan-matrix th, .plan-matrix td { padding: 13px 22px; font-size: 13.5px; border-bottom: 1px solid var(--line-2); text-align: center; }
.plan-matrix th:first-child, .plan-matrix td:first-child { text-align: left; color: var(--ink); }
.plan-matrix thead th { font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted-3); font-weight: 700; }
.plan-matrix tbody tr:last-child td { border-bottom: 0; }
.plan-matrix .yes { color: #2a9d63; font-weight: 700; }
.plan-matrix .no { color: var(--muted-3); }
.plan-matrix .val { font-weight: 600; color: var(--ink); }

/* ---------- VOA / levy quick services ---------- */
.pill-blue { display: inline-flex; align-items: center; gap: 7px; background: rgba(36, 103, 240, .08); color: var(--blue); border-radius: var(--r-pill); padding: 6px 13px; font-size: 12px; font-weight: 700; margin-bottom: 14px; }
.quick2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.quick-card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-xl); padding: 28px; display: flex; gap: 20px; align-items: flex-start; }
.quick-ic { width: 54px; height: 54px; border-radius: 15px; background: rgba(36, 103, 240, .1); display: grid; place-items: center; flex: none; }
.quick-ic svg { stroke: var(--blue); }
.quick-ic.gold { background: rgba(245, 196, 81, .14); }
.quick-ic.gold svg { stroke: #c99a1f; }
.quick-body { flex: 1; }
.quick-head { display: flex; align-items: center; gap: 9px; margin-bottom: 6px; }
.quick-head h3 { font-weight: 700; font-size: 19px; margin: 0; }
.quick-min { font-size: 10px; font-weight: 700; background: rgba(51, 209, 122, .12); color: #2a9d63; border-radius: var(--r-pill); padding: 3px 8px; }
.quick-card p { font-size: 14px; color: var(--muted-2); line-height: 1.55; margin: 0 0 14px; }
.quick-foot { display: flex; align-items: center; justify-content: space-between; }
.quick-price { font-size: 14px; font-weight: 700; }
.quick-price span { font-size: 12px; font-weight: 500; color: var(--muted-3); }

/* ---------- reviews ---------- */
.rating-row { display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap; margin-bottom: 44px; }
.rating-card { display: flex; align-items: center; gap: 13px; background: #fff; border: 1px solid var(--line-3); border-radius: 16px; padding: 14px 20px; box-shadow: 0 10px 26px -16px rgba(20, 30, 55, .3); }
.rating-k { font-size: 12px; color: var(--muted); }
.rating-v { font-family: var(--font-display); font-weight: 800; font-size: 16px; }
.rating-v span { font-size: 12px; font-weight: 500; color: var(--muted-3); }
.rating-stars { display: flex; gap: 2px; }
.rating-stars span { width: 18px; height: 18px; background: #00B67A; display: grid; place-items: center; }
.testi { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.testi-card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px; }
.testi-stars { color: var(--gold); font-size: 14px; letter-spacing: 2px; margin-bottom: 12px; }
.testi-quote { font-size: 14.5px; color: var(--muted-2); line-height: 1.6; margin: 0 0 16px; }
.testi-who { display: flex; align-items: center; gap: 10px; }
.testi-av { width: 36px; height: 36px; border-radius: 999px; background: var(--bg); display: grid; place-items: center; font-weight: 700; font-size: 13px; color: var(--muted-2); }
.testi-name { font-size: 13px; font-weight: 700; }
.testi-role { font-size: 12px; color: var(--muted); }

/* ---------- payment methods ---------- */
.pay { padding: 44px 0; background: var(--bg-2); border-top: 1px solid var(--line-2); border-bottom: 1px solid var(--line-2); }
.pay-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.pay-title { font-family: var(--font-display); font-weight: 800; font-size: 18px; letter-spacing: -0.02em; margin-bottom: 4px; }
.pay-sub { font-size: 13.5px; color: var(--muted); margin: 0; max-width: 36ch; }
.pay-list { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pay-chip { display: inline-flex; align-items: center; gap: 7px; background: #fff; border: 1px solid var(--line-3); border-radius: 11px; padding: 10px 14px; font-size: 13px; font-weight: 600; }
.pay-chip svg { stroke: var(--blue); }
.pay-chip-tag { font-size: 9px; font-weight: 700; background: rgba(36, 103, 240, .12); color: var(--blue); border-radius: 6px; padding: 2px 6px; }

/* ---------- instagram ---------- */
.ig-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 32px; flex-wrap: wrap; }
.ig-follow { font-size: 14px; font-weight: 600; color: #fff; background: linear-gradient(135deg, #F58529, #DD2A7B, #8134AF); border-radius: 11px; padding: 11px 18px; display: inline-flex; align-items: center; gap: 8px; }
.ig-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; }
.ig-cell { position: relative; aspect-ratio: 1; border-radius: 14px; overflow: hidden; display: block; }
.ig-cell img { width: 100%; height: 100%; object-fit: cover; }
.ig-cell.flip img { transform: scaleX(-1); }

/* ---------- app download ---------- */
.appdl { background: linear-gradient(160deg, var(--ink), var(--ink-2)); color: #fff; }
.app-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.app-badge { display: inline-flex; align-items: center; gap: 7px; background: rgba(255, 255, 255, .12); border-radius: var(--r-pill); padding: 6px 13px; font-size: 12px; font-weight: 700; color: var(--yellow); margin-bottom: 20px; }
.app-title { font-weight: 800; font-size: 40px; letter-spacing: -0.03em; margin: 0 0 16px; }
.app-sub { font-size: 17px; color: rgba(255, 255, 255, .75); line-height: 1.6; margin: 0 0 28px; max-width: 44ch; }
.app-stores { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 26px; }
.store-btn { display: inline-flex; align-items: center; gap: 11px; background: #fff; color: var(--ink); border-radius: 14px; padding: 12px 20px; }
.store-btn-k { font-size: 10px; color: var(--muted); }
.store-btn-v { font-family: var(--font-display); font-weight: 700; font-size: 17px; line-height: 1; }
.app-rating { display: flex; align-items: center; gap: 8px; }
.app-rating-stars { display: flex; gap: 1px; }
.app-rating-txt { font-size: 13px; color: rgba(255, 255, 255, .75); }
.app-phone-wrap { display: flex; justify-content: center; }
.app-phone { width: 230px; background: #fff; border-radius: 36px; padding: 10px; box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .6); }
.app-phone-screen { background: var(--bg); border-radius: 28px; overflow: hidden; }
.app-phone-hero { height: 150px; background: linear-gradient(160deg, var(--blue), var(--ink)); position: relative; }
.app-phone-notch { position: absolute; top: 14px; left: 50%; transform: translateX(-50%); width: 70px; height: 20px; background: #000; border-radius: 12px; }
.app-phone-cap { position: absolute; bottom: 16px; left: 16px; color: #fff; }
.app-phone-cap-k { font-size: 10px; opacity: .7; }
.app-phone-cap-v { font-family: var(--font-display); font-weight: 700; font-size: 15px; }
.app-phone-body { padding: 14px; }
.app-phone-row { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 12px; margin-bottom: 10px; }
.app-phone-row-k { font-size: 10px; color: var(--muted-3); }
.app-phone-row-v { font-size: 13px; font-weight: 600; color: var(--blue); }
.app-phone-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.app-phone-stat { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 10px; text-align: center; }
.app-phone-stat-v { font-size: 16px; font-weight: 800; font-family: var(--font-display); }
.app-phone-stat-k { font-size: 9px; color: var(--muted-3); }

/* ---------- guarantee ---------- */
.guarantee { padding: 56px 0; background: #fff; }
.guarantee-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.gtee { text-align: center; padding: 0 8px; }
.gtee-ic { width: 44px; height: 44px; border-radius: var(--r-md); display: grid; place-items: center; margin: 0 auto 12px; background: rgba(36, 103, 240, .1); }
.gtee-ic svg { stroke: var(--blue); }
.gtee-ic.green { background: rgba(51, 209, 122, .12); }
.gtee-ic.green svg { stroke: #2a9d63; }
.gtee-ic.gold { background: rgba(245, 196, 81, .14); }
.gtee-ic.gold svg { stroke: #c99a1f; }
.gtee-t { font-family: var(--font-display); font-weight: 700; font-size: 15px; margin-bottom: 4px; }
.gtee-d { font-size: 12.5px; color: var(--muted); line-height: 1.5; }

/* ---------- CTA banner ---------- */
.cta-band { padding: 72px 0; }
.cta-box { background: radial-gradient(600px 300px at 80% 0%, rgba(36, 103, 240, .25), transparent 60%), var(--ink); border-radius: 28px; padding: 56px 40px; text-align: center; }
.cta-title { font-weight: 800; font-size: 36px; letter-spacing: -0.03em; color: #fff; margin: 0 0 12px; }
.cta-sub { font-size: 17px; color: rgba(255, 255, 255, .75); margin: 0 auto 28px; max-width: 48ch; }

/* ---------- footer ---------- */
.footer { background: #0F1729; color: rgba(255, 255, 255, .7); padding: 56px 0 32px; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; }
.footer-brand { display: flex; align-items: center; gap: 11px; margin-bottom: 14px; }
.footer-brand-mark { width: 32px; height: 32px; border-radius: 9px; background: var(--blue); display: grid; place-items: center; }
.footer-brand-text { font-family: var(--font-display); font-weight: 800; font-size: 19px; color: #fff; }
.footer-desc { font-size: 13.5px; line-height: 1.6; margin: 0 0 16px; max-width: 32ch; }
.footer-addr { font-size: 12px; color: rgba(255, 255, 255, .4); }
.footer-col-t { font-family: var(--font-display); font-weight: 700; font-size: 13px; color: #fff; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 0.08em; }
.footer-col a { display: block; font-size: 13.5px; color: rgba(255, 255, 255, .7); margin-bottom: 10px; }
.footer-col a:hover { color: #fff; }
.footer-bottom { border-top: 1px solid rgba(255, 255, 255, .1); margin-top: 36px; padding-top: 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: 12.5px; color: rgba(255, 255, 255, .5); }

/* ---------- form controls (riusabili app/admin) ---------- */
.field { margin-bottom: 16px; }
.field-label,
label.field-label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin-bottom: 7px; }
.input {
	width: 100%; background: var(--bg); border: 1px solid var(--line-3); border-radius: var(--r);
	padding: 13px; font-size: 14px; font-family: var(--font); color: var(--ink); outline: none;
	transition: border-color .12s ease, box-shadow .12s ease;
}
.input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(36, 103, 240, .1); background: var(--bg); }
.input::placeholder { color: var(--muted-3); }
.alert { border-radius: var(--r); padding: 13px 15px; font-size: 13.5px; line-height: 1.5; }
.alert-success { background: rgba(51, 209, 122, .1); color: #1f7a49; border: 1px solid rgba(51, 209, 122, .3); }
.alert-error { background: rgba(234, 67, 53, .08); color: #c0392b; border: 1px solid rgba(234, 67, 53, .25); }
.divider-or { display: flex; align-items: center; gap: 14px; color: var(--muted-3); font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; }
.divider-or::before, .divider-or::after { content: ''; height: 1px; flex: 1; background: var(--line-3); }

/* ---------- business / company ---------- */
.biz-hero { background: linear-gradient(160deg, var(--ink), var(--ink-2)); color: #fff; padding: 64px 0; }
.biz-hero-grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 48px; align-items: center; }
.biz-badge { display: inline-flex; align-items: center; gap: 7px; background: rgba(255, 255, 255, .12); border-radius: var(--r-pill); padding: 6px 13px; font-size: 12px; font-weight: 700; color: var(--yellow); margin-bottom: 20px; }
.biz-h1 { font-weight: 800; font-size: 42px; letter-spacing: -0.03em; line-height: 1.05; margin: 0 0 16px; color: #fff; }
.biz-sub { font-size: 17px; color: rgba(255, 255, 255, .75); line-height: 1.6; margin: 0 0 28px; max-width: 46ch; }
.biz-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.btn-ghost-dark { background: rgba(255, 255, 255, .12); color: #fff; border: 0; }
.btn-ghost-dark:hover { background: rgba(255, 255, 255, .2); }
.biz-price-card { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .12); border-radius: var(--r-xl); padding: 26px; }
.biz-price-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em; color: #8fb4ff; font-weight: 700; margin-bottom: 8px; }
.biz-price { display: flex; align-items: baseline; gap: 8px; margin-bottom: 20px; }
.biz-price-from { font-size: 13px; color: rgba(255, 255, 255, .6); }
.biz-price-val { font-family: var(--font-display); font-weight: 800; font-size: 34px; }
.biz-feats { display: flex; flex-direction: column; gap: 12px; }
.biz-feat { display: flex; gap: 10px; font-size: 14px; }
.biz-feat svg { flex: none; stroke: var(--green-l); }
@media (max-width: 1000px) { .biz-hero-grid { grid-template-columns: 1fr; gap: 32px; } .biz-h1 { font-size: 34px; } }

/* ---------- pagina pricing (servizi + liste) ---------- */
.stack > * + * { margin-top: 48px; }
.gap-top { margin-top: 24px; }
.eyebrow.warn { color: var(--gold); }
.price-card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 20px; display: flex; flex-direction: column; }
.price-card-name { font-weight: 600; font-size: 16px; line-height: 1.3; margin-top: 12px; }
.price-card-price { font-family: var(--font-display); font-size: 24px; font-weight: 700; margin: 4px 0; }
.price-card-aud { font-size: 13px; color: var(--muted); line-height: 1.5; margin: 0; }
.price-card-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 12px; }
.check-list { list-style: none; padding: 0; margin: 16px 0 0; display: grid; gap: 10px; }
.check-list li { display: flex; gap: 10px; font-size: 14.5px; color: var(--muted-2); }
.check-list li .mk { flex: none; font-weight: 700; }
.check-list.pos li .mk { color: #2a9d63; }
.check-list.neg li .mk { color: var(--gold); }
.card-sub-h { font-family: var(--font-display); font-size: 20px; font-weight: 800; letter-spacing: -0.02em; margin: 4px 0 0; }
.card-title-sm { font-weight: 600; font-size: 15px; }
.card-text { font-size: 14px; color: var(--muted); line-height: 1.6; margin: 8px 0 0; }
.card-text a { color: var(--blue); font-weight: 600; }
.cta-card { padding: 28px; display: flex; flex-wrap: wrap; gap: 24px; align-items: center; justify-content: space-between; }
.cta-card-title { font-size: 22px; font-weight: 700; font-family: var(--font-display); letter-spacing: -0.02em; }
.cta-card-sub { color: var(--muted); margin-top: 6px; font-size: 15px; }

/* ---------- pagina contenuto / statiche (render_static_page) ---------- */
.page { padding: 56px 0 72px; }
.page-narrow { max-width: 760px; margin: 0 auto; padding: 0 24px; }
.page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: 0.16em; color: var(--blue); font-weight: 700; margin-bottom: 12px; }
.page-title { font-weight: 800; font-size: 40px; letter-spacing: -0.03em; margin: 0 0 12px; line-height: 1.05; }
.page-desc { font-size: 17px; color: var(--muted-2); line-height: 1.6; margin: 0 0 8px; max-width: 60ch; }
.page-updated { margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.page-updated a { color: var(--blue); font-weight: 600; }
.prose { margin-top: 28px; }
.prose > .lead { font-size: 17px; color: var(--muted-2); line-height: 1.7; margin: 0 0 24px; }
.prose h2 { font-family: var(--font-display); font-weight: 700; font-size: 20px; letter-spacing: -0.02em; margin: 32px 0 8px; }
.prose h3 { font-family: var(--font-display); font-weight: 700; font-size: 16px; margin: 24px 0 6px; }
.prose p { font-size: 14.5px; color: var(--muted-2); line-height: 1.7; margin: 0 0 18px; }
.prose a:not(.btn) { color: var(--blue); font-weight: 600; }
.prose ul, .prose ol { margin: 0 0 18px; padding-left: 20px; }
.prose li { font-size: 14.5px; color: var(--muted-2); line-height: 1.7; margin-bottom: 8px; }
.prose strong { color: var(--ink); font-weight: 700; }
.prose table { width: 100%; border-collapse: collapse; margin: 0 0 20px; font-size: 14px; }
.prose th, .prose td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.prose th { color: var(--ink); font-weight: 700; }

/* ---------- componenti contenuto (usati nei callback delle pagine) ---------- */
.muted { color: var(--muted); }
.text-brand { color: var(--blue); }
.lead { font-size: 17px; color: var(--muted-2); line-height: 1.7; }
.card {
	background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg);
	padding: 20px 22px; box-shadow: 0 1px 2px rgba(20, 30, 55, .04);
}
.card-premium {
	background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg);
	padding: 20px 22px; transition: border-color .18s, box-shadow .18s, transform .18s;
}
.card-premium:hover { border-color: rgba(36, 103, 240, .25); box-shadow: var(--shadow-card); transform: translateY(-2px); }
.not-prose { margin: 20px 0; }
.card > :first-child { margin-top: 0; }
.card > :last-child { margin-bottom: 0; }
.card-kicker { font-weight: 600; font-size: 14.5px; color: var(--ink); margin: 16px 0 6px; }
.card-warn { border-color: rgba(245, 196, 81, .5); }
.actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.card-grid { display: grid; gap: 16px; grid-template-columns: 1fr; }
.badge-row { display: flex; flex-wrap: wrap; gap: 10px; }
.badge-row.center { justify-content: center; margin-top: 32px; }
@media (min-width: 640px) { .card-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .card-grid-3 { grid-template-columns: repeat(3, 1fr); } }
/* accordion (FAQ) */
.accordion-item { border-bottom: 1px solid var(--line); }
.accordion-item summary { cursor: pointer; font-weight: 600; font-size: 15px; padding: 16px 0; list-style: none; display: flex; justify-content: space-between; gap: 12px; }
.accordion-item summary::-webkit-details-marker { display: none; }
.accordion-item summary::after { content: "+"; color: var(--muted); font-size: 18px; }
.accordion-item[open] summary::after { content: "\2212"; }
.accordion-item > div, .accordion-item > p { padding: 0 0 16px; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.accordion { margin: 20px 0; }
.accordion-body { padding: 0 0 16px; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.service-cta-row { display: flex; gap: 10px; flex-wrap: wrap; margin: 20px 0; }

/* ---------- utility ---------- */
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ==========================================================================
   App console shell (/app) - sidebar + topbar + main, mobile tabbar
   ========================================================================== */
.app-console { display: grid; grid-template-columns: 248px 1fr; min-height: 100vh; background: #F7F8FC; }
.app-sidebar { display: flex; flex-direction: column; background: #fff; border-right: 1px solid var(--line); padding: 22px 16px; position: sticky; top: 0; height: 100vh; }
.app-sidebar-logo { display: flex; align-items: center; gap: 10px; padding: 0 8px 22px; font-family: var(--font-display); font-weight: 800; font-size: 18px; }
.app-sidebar-logo .nav-logo-mark { width: 32px; height: 32px; }
.app-nav { display: flex; flex-direction: column; gap: 3px; }
.app-nav a { display: flex; align-items: center; gap: 12px; padding: 11px 12px; border-radius: var(--r-sm); color: var(--muted-2); font-size: 14px; }
.app-nav a:hover { background: var(--bg); color: var(--ink); }
.app-nav a.is-active { background: rgba(36, 103, 240, .08); color: var(--blue); font-weight: 600; }
.app-nav a svg { flex: none; }
.app-upgrade { margin-top: auto; background: linear-gradient(150deg, var(--ink), var(--ink-2)); border-radius: 16px; padding: 16px; color: #fff; }
.app-upgrade-t { font-size: 12px; font-weight: 700; display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
.app-upgrade-d { font-size: 11px; color: rgba(255, 255, 255, .65); line-height: 1.5; margin-bottom: 10px; }
.app-upgrade-btn { display: block; background: var(--yellow); color: var(--ink); border-radius: 9px; padding: 8px; text-align: center; font-size: 12px; font-weight: 700; }
.app-body { min-width: 0; display: flex; flex-direction: column; }
.app-mobilebar { display: none; align-items: center; justify-content: space-between; padding: 16px 20px; background: #fff; border-bottom: 1px solid var(--line); }
.app-mobilebar-logo { display: flex; align-items: center; gap: 9px; font-family: var(--font-display); font-weight: 800; font-size: 16px; }
.app-mobilebar-logo .nav-logo-mark { width: 28px; height: 28px; }
.app-topbar { display: flex; align-items: center; justify-content: space-between; padding: 18px 28px; border-bottom: 1px solid var(--line); background: #fff; gap: 16px; flex-wrap: wrap; }
.app-topbar-l { min-width: 0; }
.app-topbar-title { font-family: var(--font-display); font-weight: 700; font-size: 20px; letter-spacing: -0.02em; }
.app-topbar-sub { font-size: 12px; color: var(--muted-3); }
.app-topbar-actions { display: flex; align-items: center; gap: 12px; }
.app-icon-btn { width: 40px; height: 40px; border-radius: 11px; background: var(--bg); border: 1px solid var(--line); display: grid; place-items: center; position: relative; color: var(--muted-2); }
.app-icon-btn .dot { position: absolute; top: 7px; right: 8px; min-width: 8px; height: 8px; padding: 0 3px; border-radius: 999px; background: var(--blue); border: 2px solid #fff; font-size: 8px; color: #fff; line-height: 8px; }
.app-avatar { width: 40px; height: 40px; border-radius: 11px; background: linear-gradient(150deg, var(--ink), var(--blue)); display: grid; place-items: center; color: #fff; font-weight: 700; }
.app-back { color: var(--muted); display: inline-flex; align-items: center; gap: 6px; font-size: 14px; margin-bottom: 4px; }
.app-content { padding: 28px; width: 100%; max-width: 1120px; }
.app-content > .stack > * + * { margin-top: 20px; }

/* KPI cards */
.app-kpi { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.kpi { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 18px; }
.kpi-k { font-size: 12px; color: var(--muted); }
.kpi-v { font-family: var(--font-display); font-weight: 800; font-size: 28px; margin-top: 4px; }
.kpi-v.warn { color: #c99a1f; }
.kpi-v.green { color: #2a9d63; }

/* form app/admin: stila automaticamente label/input dentro .app-content e .admin-main */
.app-content .field, .admin-main .field { margin-bottom: 16px; }
.app-content .field > label, .admin-main .field > label { display: block; font-size: 13px; font-weight: 600; color: var(--muted-2); margin-bottom: 6px; }
.app-content input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=submit]):not([type=button]):not(.btn),
.app-content select,
.app-content textarea,
.admin-main input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=submit]):not([type=button]):not(.btn):not(.admin-search input),
.admin-main select,
.admin-main textarea {
	width: 100%; max-width: 100%; background: #fff; border: 1px solid var(--line-3); border-radius: var(--r);
	padding: 12px 14px; font-size: 14px; font-family: var(--font); color: var(--ink); outline: none;
	transition: border-color .12s ease, box-shadow .12s ease;
}
.app-content input:focus, .app-content select:focus, .app-content textarea:focus,
.admin-main input:focus, .admin-main select:focus, .admin-main textarea:focus {
	border-color: var(--blue); box-shadow: 0 0 0 3px rgba(36, 103, 240, .1);
}
.app-content textarea, .admin-main textarea { min-height: 90px; resize: vertical; }

/* ---------- admin back office console ---------- */
.admin-wrap { display: grid; grid-template-columns: 252px 1fr; min-height: 100vh; background: #F7F8FC; }
.admin-sidebar { display: flex; flex-direction: column; background: #fff; border-right: 1px solid var(--line); padding: 18px 14px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.admin-brand { display: flex; align-items: center; gap: 8px; padding: 0 8px 16px; font-family: var(--font-display); font-weight: 800; }
.admin-brand-sub { font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted-3); font-weight: 700; }
.admin-nav { display: flex; flex-direction: column; }
.admin-nav-group { margin-bottom: 10px; }
.admin-nav-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted-3); font-weight: 700; padding: 8px 12px 4px; }
.admin-nav-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: var(--r-sm); color: var(--muted-2); font-size: 13.5px; }
.admin-nav-item:hover { background: var(--bg); color: var(--ink); }
.admin-nav-item.is-active { background: rgba(36, 103, 240, .08); color: var(--blue); font-weight: 600; }
.admin-nav-item svg { flex: none; }
.admin-switch { margin-top: auto; display: flex; align-items: center; gap: 8px; padding: 10px 12px; font-size: 13px; color: var(--muted); }
.admin-main-col { min-width: 0; display: flex; flex-direction: column; }
.admin-topbar { display: flex; align-items: center; gap: 12px; padding: 12px 24px; background: #fff; border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 30; }
.admin-burger { display: none; }
.admin-search { flex: 1; max-width: 420px; position: relative; }
.admin-search-ico { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--muted-3); display: inline-flex; }
.admin-search input { width: 100%; background: var(--bg); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 9px 12px 9px 34px; font-size: 13px; font-family: var(--font); color: var(--ink); outline: none; }
.admin-search input:focus { border-color: var(--blue); background: #fff; }
.admin-topbar-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.admin-quick { position: relative; }
.admin-quick-menu { position: absolute; right: 0; top: calc(100% + 6px); background: #fff; border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-card); padding: 6px; min-width: 180px; z-index: 40; display: flex; flex-direction: column; }
.admin-quick-menu a { padding: 8px 10px; border-radius: var(--r-sm); font-size: 13px; color: var(--muted-2); }
.admin-quick-menu a:hover { background: var(--bg); color: var(--ink); }
.admin-role-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: var(--muted-2); background: var(--bg); border-radius: var(--r-pill); padding: 5px 11px; }
.admin-icon-btn { width: 36px; height: 36px; border-radius: 10px; background: var(--bg); border: 1px solid var(--line); display: grid; place-items: center; color: var(--muted-2); cursor: pointer; }
.admin-user-email { font-size: 12px; }
.admin-nav-mobile { display: none; }
.admin-main { padding: 24px; width: 100%; max-width: 1200px; }
@media (max-width: 1000px) {
	.admin-wrap { grid-template-columns: 1fr; }
	.admin-sidebar { display: none; }
	.admin-burger { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: var(--bg); border: 1px solid var(--line); cursor: pointer; }
	.admin-search { display: none; }
	.admin-user-email { display: none; }
	.admin-main { padding: 16px; }
	.admin-nav-mobile:not([hidden]) { display: flex; flex-wrap: wrap; gap: 4px; padding: 12px 16px; background: #fff; border-bottom: 1px solid var(--line); }
	.admin-nav-mobile a { font-size: 12px; color: var(--muted-2); padding: 6px 10px; border-radius: var(--r-sm); background: var(--bg); display: inline-flex; align-items: center; gap: 6px; }
}

/* status badge (compat con render_status_badge) */
.status-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; border-radius: var(--r-pill); padding: 4px 10px; background: var(--bg); color: var(--muted-2); }
.status-badge .status-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.status-badge.tone-success { background: rgba(51, 209, 122, .12); color: #1f7a49; }
.status-badge.tone-destructive { background: rgba(234, 67, 53, .1); color: #c0392b; }
.status-badge.tone-warning { background: rgba(245, 196, 81, .18); color: #a97d10; }
.status-badge.tone-ocean, .status-badge.tone-lime { background: rgba(36, 103, 240, .1); color: var(--blue); }

/* mobile tabbar (bottom) */
.app-mobile-tabbar { display: none; }
.mobile-tabbar-inner { display: flex; }
.tab { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px 0; font-size: 10px; color: var(--muted); }
.tab.is-active { color: var(--blue); }
.tab-ico { position: relative; }
.tab-badge { position: absolute; top: -4px; right: -8px; background: var(--blue); color: #fff; font-size: 9px; font-weight: 700; border-radius: 999px; min-width: 15px; height: 15px; display: grid; place-items: center; padding: 0 3px; }

@media (max-width: 900px) {
	.app-console { grid-template-columns: 1fr; }
	.app-sidebar { display: none; }
	.app-mobilebar { display: flex; }
	.app-content { padding: 20px 16px 90px; }
	.app-kpi { grid-template-columns: 1fr 1fr; }
	.app-mobile-tabbar { display: block; position: fixed; bottom: 0; left: 0; right: 0; z-index: 40; background: rgba(255, 255, 255, .95); backdrop-filter: blur(10px); border-top: 1px solid var(--line); padding-bottom: env(safe-area-inset-bottom); }
}

/* ---------- tracker landing ---------- */
.tk-hero-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 40px; align-items: center; }
.tk-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; }
.tk-note { background: var(--bg); border: 1px solid var(--line); border-radius: var(--r); padding: 14px 16px; margin-top: 24px; font-size: 14px; line-height: 1.6; color: var(--muted-2); max-width: 34rem; }
.tk-note strong { color: var(--ink); }
.tk-step-num { font-family: var(--font-display); font-size: 32px; font-weight: 800; color: rgba(36, 103, 240, .25); line-height: 1; }
.tk-step-t { font-weight: 600; font-size: 15px; margin-top: 12px; line-height: 1.35; }
.tk-card-head { display: flex; align-items: center; justify-content: space-between; }
.tk-uc { font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em; color: var(--muted-3); font-weight: 600; }
.tk-visa-name { font-weight: 700; font-size: 18px; margin-top: 4px; }
.tk-visa-name.sm { font-size: 15px; }
.pill + .sec-title, .pill + h1 { margin-top: 16px; }
.sec-sub + .badge-row { margin-top: 24px; }
.cta-card.center { justify-content: center; text-align: center; }
.tk-inner { margin-top: 12px; }
.tk-inner + .tk-inner { margin-top: 10px; }
.tk-days { font-size: 30px; font-weight: 700; line-height: 1; }
.tk-progress { margin-top: 14px; height: 6px; border-radius: 999px; background: rgba(20, 30, 55, .1); overflow: hidden; }
.tk-progress > span { display: block; height: 100%; width: 60%; background: var(--gold); }
.tk-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.tk-reminders { padding: 8px; }
.tk-reminder { display: flex; gap: 14px; padding: 14px; }
.tk-reminder + .tk-reminder { border-top: 1px solid var(--line); }
.tk-reminder-dot { height: 38px; width: 38px; border-radius: var(--r); display: grid; place-items: center; flex-shrink: 0; background: rgba(36, 103, 240, .12); color: var(--blue); }
.tk-reminder.now .tk-reminder-dot { background: rgba(245, 196, 81, .2); color: #a97d10; }
.tk-reminder-t { font-weight: 600; font-size: 14px; }
.tk-reminder-s { font-weight: 500; font-size: 14px; margin-top: 3px; }
.tk-reminder-d { color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.tk-sponsor-row { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.tk-sponsor-av { height: 48px; width: 48px; border-radius: 14px; background: rgba(36, 103, 240, .12); display: grid; place-items: center; font-weight: 700; color: var(--blue); }
.tk-channels { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 24px; max-width: 34rem; }
.tk-channel { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 500; color: var(--muted-2); }
.tk-channel .mk { flex: none; font-weight: 700; color: #2a9d63; }
.tk-upgrade-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.tk-upgrade-caption { font-size: 12.5px; color: var(--muted); margin: 0; }
@media (max-width: 1000px) { .tk-hero-grid, .tk-2col { grid-template-columns: 1fr; gap: 28px; } }
@media (max-width: 560px) { .tk-channels { grid-template-columns: 1fr; } }

/* ---------- path finder (wizard) ---------- */
.wizard { min-height: 100vh; display: flex; flex-direction: column; }
.wizard-head { max-width: 46rem; margin: 0 auto; width: 100%; padding: 20px 24px 0; }
.wizard-head-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.wizard-back { color: var(--muted); padding: 6px; margin-left: -6px; font-size: 18px; }
.wizard-head-right { display: flex; align-items: center; gap: 12px; }
.wizard-head-right a { font-size: 13px; color: var(--muted); }
.wizard-head-time { margin-top: 12px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--muted); }
.wizard-progress { display: flex; gap: 6px; margin-top: 16px; }
.wizard-bar { height: 5px; border-radius: 3px; flex: 1; background: #EAEBF4; transition: background-color .2s; }
.wizard-bar.is-active { background: var(--blue); }
.wizard-main { flex: 1; max-width: 46rem; margin: 0 auto; width: 100%; padding: 40px 24px 120px; }
.wizard-eyebrow { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; color: var(--blue); margin-bottom: 14px; }
.wizard-step { display: none; }
.wizard-step.is-current { display: block; }
.wizard-step.is-active { display: block; } /* apply.js (app) usa is-active; wizard.js (pubblico) usa is-current */
.wizard-variant { display: none; }
.wizard-variant.is-active { display: block; }
.wizard-h2 { font-family: var(--font-display); font-size: clamp(1.6rem, 5vw, 2rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.12; }
.wizard-sub { color: var(--muted); margin-top: 10px; line-height: 1.6; }
.wizard-opts { display: flex; flex-direction: column; gap: 10px; margin-top: 24px; }
.wizard-opt { display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left; padding: 16px; width: 100%; background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); cursor: pointer; transition: border-color .15s, background-color .15s; }
.wizard-opt:hover { border-color: rgba(36, 103, 240, .4); }
.wizard-opt.is-selected { border-color: var(--blue); background: rgba(36, 103, 240, .06); }
.wizard-opt-label { font-weight: 600; display: block; }
.wizard-opt-desc { display: block; font-size: 13px; color: var(--muted); margin-top: 3px; }
.wizard-opt-dot { height: 22px; width: 22px; border-radius: 999px; border: 2px solid var(--line-3); flex-shrink: 0; position: relative; }
.wizard-opt.is-selected .wizard-opt-dot { border-color: var(--blue); background: var(--blue); }
.wizard-opt.is-selected .wizard-opt-dot::after { content: ""; position: absolute; inset: 0; margin: auto; height: 9px; width: 5px; border: solid #fff; border-width: 0 2px 2px 0; transform: translateY(-1px) rotate(45deg); }
.wizard-nat, .wizard-date-input { width: 100%; background: #fff; border: 1px solid var(--line-3); border-radius: var(--r); padding: 15px 16px; font-size: 15px; color: var(--ink); font-family: var(--font); margin-top: 24px; }
.wizard-nat:focus, .wizard-date-input:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(36, 103, 240, .15); }
.wizard-date-label { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); margin-top: 24px; }
.wizard-date-input { margin-top: 7px; }
.wizard-unsure { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; margin-top: 14px; padding: 14px 16px; border-radius: var(--r); border: 1px solid var(--line-3); background: #fff; font-size: 14px; color: var(--muted-2); cursor: pointer; }
.wizard-unsure.is-selected { border-color: var(--blue); background: rgba(36, 103, 240, .08); color: var(--ink); }
.wizard-hint { font-size: 12px; color: var(--muted); margin-top: 12px; }
.wizard-foot { position: sticky; bottom: 0; padding: 16px 24px calc(16px + env(safe-area-inset-bottom)); background: rgba(255, 255, 255, .9); backdrop-filter: blur(10px); border-top: 1px solid var(--line); }
.wizard-foot-inner { max-width: 46rem; margin: 0 auto; }
.wizard-seo { max-width: 46rem; margin: 0 auto; width: 100%; padding: 40px 24px 56px; display: flex; flex-direction: column; gap: 32px; }
.wizard-seo-h2 { font-family: var(--font-display); font-size: 22px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.2; }
.wizard-seo-h3 { font-family: var(--font-display); font-size: 18px; font-weight: 700; margin-bottom: 14px; }
.wizard-routes { display: flex; flex-direction: column; gap: 12px; }
.wizard-route { display: flex; align-items: flex-start; gap: 12px; padding: 16px; }
.wizard-route-title { font-weight: 600; font-size: 14.5px; display: block; }
.wizard-route-desc { display: block; font-size: 13px; color: var(--muted); margin-top: 3px; }
.wizard-route-price { display: block; font-size: 13px; color: var(--blue); font-weight: 600; margin-top: 6px; }
.wizard-disclaimer { padding: 16px; border-left: 4px solid var(--blue); }
.wizard-disclaimer-t { font-weight: 600; font-size: 14px; margin-bottom: 6px; }
.wizard-disclaimer-p { font-size: 13px; color: var(--muted); line-height: 1.6; }

/* ---------- pill ---------- */
.pill { display: inline-flex; align-items: center; gap: 6px; background: rgba(36, 103, 240, .08); color: var(--blue); border-radius: var(--r-pill); padding: 6px 13px; font-size: 12px; font-weight: 700; }
.pill-warn { background: rgba(245, 196, 81, .18); color: #a97d10; }

/* ---------- path result (recommendation) ---------- */
.result-page { max-width: 640px; margin: 0 auto; width: 100%; padding: 0 24px 72px; }
.result-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 0; }
.result-head a { color: var(--muted); font-size: 14px; }
.result-hero { text-align: center; margin-bottom: 24px; }
.result-hero h1 { font-weight: 800; font-size: 28px; letter-spacing: -0.03em; margin: 16px 0 0; }
.result-hero p { color: var(--muted); margin-top: 8px; }
.stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.stat-box { border: 1px solid var(--line); border-radius: var(--r); padding: 14px; }
.stat-box + .stat-box-row, .stat-box.mt { margin-top: 12px; }
.stat-box-v { font-weight: 600; margin-top: 6px; }
.stat-box.warn { border-color: rgba(245, 196, 81, .5); }
.stat-box.next { background: rgba(36, 103, 240, .06); border-color: rgba(36, 103, 240, .25); }
.stat-box p { font-size: 14px; margin-top: 6px; line-height: 1.6; color: var(--muted-2); }
.stat-box ul { margin: 8px 0 0; padding-left: 18px; font-size: 14px; color: var(--muted); line-height: 1.6; }
.result-cta { display: flex; flex-direction: column; gap: 10px; margin-top: 24px; }
.alt-card { display: block; padding: 16px; }
.alt-card-row { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; }
.alt-card-name { font-weight: 600; }
.alt-card-price { color: var(--blue); font-size: 14px; font-weight: 600; white-space: nowrap; }
.alt-card-sum { color: var(--muted); font-size: 14px; margin-top: 6px; }
.result-disclaimer { color: var(--muted); margin: 32px auto 0; font-size: 12.5px; text-align: center; line-height: 1.6; max-width: 30rem; }
.result-alts { margin-top: 32px; }
.result-alts .eyebrow { margin-bottom: 12px; }
.stat-box .pill { margin-top: 10px; }
.upsell { display: block; padding: 16px; margin-top: 16px; }
.upsell .eyebrow { margin-bottom: 4px; }
.upsell-t { font-weight: 600; }
.upsell-d { color: var(--muted); font-size: 13px; margin-top: 4px; }

/* ---------- card centrata (verify-email, reset-password, 404, stati) ---------- */
.center-page { min-height: 100vh; display: grid; place-items: center; background: var(--bg); padding: 40px 24px; }
.center-card { width: 100%; max-width: 460px; background: #fff; border: 1px solid var(--line); border-radius: var(--r-xl); padding: 40px; text-align: center; box-shadow: var(--shadow-card); }
.center-logo { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 22px; font-family: var(--font-display); font-weight: 800; font-size: 20px; }
.center-logo .nav-logo-mark { width: 32px; height: 32px; }
.center-card h1 { font-weight: 800; font-size: 28px; letter-spacing: -0.03em; margin: 0 0 8px; }
.center-card > p { font-size: 14px; color: var(--muted); margin: 0 0 4px; line-height: 1.6; }
.center-card .alert { text-align: left; margin: 18px 0; }
.center-card .field { text-align: left; }
.center-card form { margin-top: 20px; }
.center-card .btn-block + .btn-block, .center-card form + .btn { margin-top: 12px; }
.center-404 { font-family: var(--font-display); font-weight: 800; font-size: 72px; letter-spacing: -0.04em; line-height: 1; color: var(--blue); margin-bottom: 8px; }

/* ---------- auth (split) ---------- */
.auth-page { min-height: 100vh; display: grid; place-items: center; background: var(--bg); padding: 40px 24px; }
.auth-shell { width: 100%; max-width: 460px; }
.auth-split { display: grid; grid-template-columns: 1fr; border: 1px solid var(--line-3); border-radius: 24px; overflow: hidden; box-shadow: 0 30px 70px -40px rgba(20, 30, 55, .4); background: #fff; }
.auth-form { background: #fff; padding: 44px; display: flex; flex-direction: column; justify-content: center; }
.auth-form h1 { font-weight: 800; font-size: 26px; letter-spacing: -0.03em; margin: 0 0 6px; }
.auth-form-sub { font-size: 14px; color: var(--muted); margin: 0 0 26px; }
.auth-form-sub a, .auth-link { color: var(--blue); font-weight: 600; }
.auth-terms { display: flex; gap: 10px; align-items: flex-start; font-size: 12.5px; color: var(--muted-2); line-height: 1.5; margin-bottom: 20px; cursor: pointer; }
.auth-terms input { margin: 2px 0 0; accent-color: var(--blue); width: 16px; height: 16px; flex: none; }
.auth-alt { margin-top: 18px; text-align: center; font-size: 14px; color: var(--muted); }
.auth-form .alert { margin: 18px 0; }
.auth-form .btn-ghost { margin-top: 18px; }
.auth-forgot { background: none; border: 0; color: var(--muted); font-size: 13px; cursor: pointer; font-family: var(--font); margin-top: 10px; }

/* ---------- responsive ---------- */
@media (max-width: 1000px) {
	.testi { grid-template-columns: 1fr 1fr; }
	.ig-grid { grid-template-columns: repeat(4, 1fr); }
	.app-grid { grid-template-columns: 1fr; gap: 32px; }
	.guarantee-grid { grid-template-columns: 1fr 1fr; }
	.footer-grid { grid-template-columns: 1fr 1fr; gap: 28px; }
}
@media (max-width: 760px) {
	.ig-grid { grid-template-columns: repeat(3, 1fr); }
	.footer-grid { grid-template-columns: 1fr; }
	.app-title { font-size: 32px; }
	.auth-form { padding: 32px 24px; }
}
@media (max-width: 1000px) {
	.hero-grid { grid-template-columns: 1fr; gap: 36px; }
	.hero-h1 { font-size: 46px; }
}
@media (max-width: 760px) {
	.nav-links, .nav-cta { display: none; }
	.burger { display: inline-flex; }
	.hero-h1 { font-size: 38px; }
	.hero-visual { display: none; }
	.steps, .cards-3, .pricing, .quick2, .testi { grid-template-columns: 1fr; }
	.section-pad { padding-top: 56px; padding-bottom: 56px; }
}

/* ============================================================
   APP / ADMIN - classi strutturali portate da style.css.
   Sulle pagine app/admin ($redesign) carica solo site.css, ma il contenuto
   usa ancora questi componenti (app-card, admin-table, timeline, kpi-*,
   stepper, progress...). Portati verbatim: usano i token compat gia' presenti
   piu' sopra -> resa on-brand. (input-base NON serve: gli <input> in
   .app-content/.admin-main sono gia' stilizzati dalla regola form globale.)
   ============================================================ */
.surface-navy { background: hsl(var(--ocean-deep)); color: hsl(var(--primary-foreground)); }
.btn-pill { border-radius: 999px; }
.status-badge.tone-muted { background: hsl(var(--card-elevated)); color: hsl(var(--foreground-muted)); border-color: hsl(var(--border)); }

.auth-wrap { min-height: 100vh; display: flex; flex-direction: column; background: hsl(var(--background)); }
.auth-head { max-width: 28rem; margin: 0 auto; width: 100%; padding: 1.25rem 1.25rem 0; display: flex; align-items: center; justify-content: space-between; }
.auth-main { flex: 1; max-width: 28rem; margin: 0 auto; width: 100%; padding: 2.5rem 1.25rem; }
.auth-logo { font-family: var(--font-display); font-weight: 800; font-size: 1.15rem; letter-spacing: -0.03em; }
.auth-logo b { color: hsl(var(--lime)); }

.app-card { background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); box-shadow: var(--shadow-card); padding: 1rem 1.1rem; }
.app-list { display: flex; flex-direction: column; gap: 0.75rem; }
.app-row { display: flex; align-items: center; gap: 0.85rem; padding: 0.9rem 1rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); }
.app-row:hover { border-color: hsl(var(--primary) / 0.25); }
.section-title { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; color: hsl(var(--foreground-muted)); margin: 1.5rem 0 0.6rem; font-weight: 600; }
.empty-state { text-align: center; padding: 2.5rem 1rem; color: hsl(var(--foreground-muted)); }
.empty-state svg { margin: 0 auto 0.75rem; opacity: 0.5; }

.timeline { position: relative; padding-left: 1.5rem; }
.timeline::before { content: ""; position: absolute; left: 0.35rem; top: 0.4rem; bottom: 0.4rem; width: 2px; background: hsl(var(--border)); }
.timeline-item { position: relative; padding: 0 0 1.1rem 0; }
.timeline-item::before { content: ""; position: absolute; left: -1.5rem; top: 0.3rem; height: 0.75rem; width: 0.75rem; border-radius: 999px; background: hsl(var(--lime)); border: 2px solid hsl(var(--background)); }
.timeline-item .t-time { font-size: 0.7rem; color: hsl(var(--foreground-muted)); }

.stepper { display: flex; gap: 0.35rem; margin-bottom: 1.25rem; }
.stepper .step { flex: 1; height: 0.3rem; border-radius: 999px; background: hsl(var(--border)); }
.stepper .step.done, .stepper .step.current { background: hsl(var(--lime)); }
.progress { height: 0.5rem; background: hsl(var(--border)); border-radius: 999px; overflow: hidden; }
.progress > span { display: block; height: 100%; background: hsl(var(--lime)); border-radius: 999px; }

.admin-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.admin-table th { text-align: left; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; color: hsl(var(--foreground-muted)); padding: 0.5rem 0.75rem; border-bottom: 1px solid hsl(var(--border)); }
.admin-table td { padding: 0.7rem 0.75rem; border-bottom: 1px solid hsl(var(--border) / 0.6); }
.admin-table tr:hover td { background: hsl(var(--card-elevated) / 0.5); }
.admin-table-wrap { overflow-x: auto; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); }
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: 0.85rem; }
.kpi-value { font-size: 1.75rem; font-weight: 700; font-family: var(--font-display); }
.kpi-label { font-size: 0.72rem; color: hsl(var(--foreground-muted)); text-transform: uppercase; letter-spacing: 0.05em; margin-top: 0.2rem; }
.admin-h1 { font-size: 1.5rem; font-weight: 600; font-family: var(--font-display); margin-bottom: 0.25rem; }
.admin-filters { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 1rem 0; }
.admin-filters a, .admin-filters .chip { font-size: 0.8rem; padding: 0.35rem 0.75rem; border-radius: 999px; border: 1px solid hsl(var(--border)); color: hsl(var(--foreground-muted)); }
.admin-filters a.is-active { background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); border-color: transparent; }

/* ============================================================
   APP / ADMIN CONTENT - vocabolario condiviso (migrazione inline -> classi)
   Piccolo set di classi testo/colore riusabili in tutte le pagine app/admin.
   NB: .muted (testo attenuato) e .mono (font monospazio) esistono gia' piu'
   sopra - riusarle, non ridefinirle. .stack e' gia' preso (spaziatura
   margin-based) - non usarlo per flex-column.
   ============================================================ */
.tx-lime { color: hsl(var(--lime)); }
.tx-lime-h { color: hsl(var(--lime-hover)); }
.tx-fg { color: hsl(var(--foreground)); }
.tx-danger { color: hsl(var(--destructive)); }
.tx-warn { color: hsl(var(--warning)); }
.tx-success { color: hsl(var(--success)); }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nowrap { white-space: nowrap; }

/* >>> WF-CONTENT-COMPONENTS: le classi component-specific delle pagine
   app/admin vengono appese qui sotto dalla migrazione inline->classi <<< */

/* --- migrazione inline->classi: app/case.php --- */
/* ============================================================
   app/case.php - classi component-specific (migrazione inline -> classi)
   Namespace: case-*
   NB: .app-card e' definita in style.css (che carica DOPO site.css),
   quindi gli override di border-color usano selettore composto
   (.app-card.case-*) per vincere la cascata a parita' di sorgente.
   ============================================================ */

/* Riga chiave/valore (card ricevuta/corriere) */
.case-kv-row { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; font-size: 0.78rem; }
.case-kv-val { font-weight: 500; text-align: right; text-transform: capitalize; max-width: 60%; }

/* Contenitore pagina */
.case-page { display: flex; flex-direction: column; gap: 1.25rem; }

/* Wrapper flessibile che consente il troncamento del contenuto */
.case-min0 { min-width: 0; }
.case-noshrink { flex-shrink: 0; }

/* Hero */
.case-hero { padding: 1.25rem; position: relative; overflow: hidden; }
.case-hero-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.case-eyebrow { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.08em; }
.case-hero-title { font-size: 1.35rem; line-height: 1.2; font-weight: 700; margin-top: 0.25rem; }
.case-hero-sub { font-size: 0.72rem; margin-top: 0.25rem; }
.case-stat-grid { margin-top: 1rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.case-stat-tile { border-radius: 0.75rem; background: hsl(var(--background)); border: 1px solid hsl(var(--border)); padding: 0.6rem 0.75rem; }
.case-stat-label { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; }
.case-stat-value { font-size: 0.85rem; font-weight: 600; margin-top: 0.15rem; }

/* Prossima azione (card premium: composto per vincere anche su :hover) */
.card-premium.case-next-action { display: flex; align-items: center; gap: 0.85rem; padding: 1rem; border-color: hsl(var(--warning) / 0.4); background: hsl(var(--warning) / 0.06); }
.case-next-icon { height: 2.5rem; width: 2.5rem; border-radius: 0.75rem; background: hsl(var(--warning) / 0.15); display: grid; place-items: center; flex-shrink: 0; }
.case-next-body { min-width: 0; flex: 1; }
.case-action-eyebrow { display: block; font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.case-action-label { display: block; font-size: 0.9rem; font-weight: 600; }

/* Blocca l'invio */
.case-blocker-banner { margin-bottom: 0.75rem; display: flex; align-items: flex-start; gap: 0.6rem; border-radius: 0.75rem; background: hsl(var(--warning) / 0.15); border: 1px solid hsl(var(--warning) / 0.3); padding: 0.6rem 0.75rem; }
.case-blocker-icon { flex-shrink: 0; margin-top: 0.1rem; }
.case-blocker-eyebrow { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.case-label-strong { font-size: 0.85rem; font-weight: 600; }
.case-ready { margin-bottom: 0.75rem; display: flex; align-items: center; gap: 0.5rem; font-size: 0.85rem; font-weight: 600; }
.case-blocker-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.4rem; }
.case-blocker-item { display: flex; align-items: center; gap: 0.75rem; border-radius: 0.5rem; padding: 0.4rem 0.5rem; }
.case-blocker-dot { height: 0.5rem; width: 0.5rem; border-radius: 999px; flex-shrink: 0; }
.case-body-sm { font-size: 0.85rem; }
.case-blocker-hint { font-size: 0.72rem; margin-left: auto; text-align: right; }
.case-fine-print { margin-top: 0.75rem; font-size: 0.72rem; }

/* Titoli di sezione: icona inline nell'h2 */
.case-h2-icon { display: inline-flex; }

/* Visto approvato (app-card: composto per l'override di border-color) */
.app-card.case-approved-row { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; border-color: hsl(var(--success) / 0.4); }
.case-title-sm { display: block; font-weight: 600; font-size: 0.85rem; }
.case-approved-sub { display: block; font-size: 0.72rem; margin-top: 0.15rem; }
.case-approved-icon { flex-shrink: 0; display: inline-flex; }

/* Card impilata (pagamento / corriere) */
.case-card-stack { display: flex; flex-direction: column; gap: 0.5rem; }
.case-price-note { font-size: 0.72rem; padding-top: 0.25rem; line-height: 1.6; }
.case-pay-warn { font-size: 0.72rem; padding-top: 0.25rem; }
.case-manage-link { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 600; padding-top: 0.25rem; }

/* Timeline */
.case-timeline-label { font-size: 0.78rem; line-height: 1.35; }

/* Documenti */
.case-docs-head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 0.75rem; }
.case-docs-count { font-size: 0.72rem; }
.case-doc-row { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
.case-doc-label { font-weight: 500; font-size: 0.85rem; display: flex; align-items: center; gap: 0.4rem; }
.case-req-dot { font-size: 0.7rem; }
.case-doc-meta { font-size: 0.72rem; margin-top: 0.2rem; display: inline-flex; align-items: center; gap: 0.35rem; max-width: 200px; }
.case-dot-sep { opacity: 0.6; }
.case-doc-empty { font-size: 0.72rem; margin-top: 0.2rem; }
.case-doc-btn { flex-shrink: 0; cursor: pointer; }
.case-hidden { display: none; }

/* Attivita' */
.case-event-title { font-weight: 500; font-size: 0.85rem; }
.case-event-note { font-size: 0.78rem; margin-top: 0.25rem; }
.case-event-date { font-size: 0.65rem; margin-top: 0.35rem; }

/* Azioni rapide */
.case-quick-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.case-quick-card { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.case-quick-icon { height: 2.25rem; width: 2.25rem; border-radius: 0.75rem; background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); display: grid; place-items: center; }
.case-assist { grid-column: 1 / -1; display: flex; align-items: center; gap: 0.85rem; }
.case-assist-sub { display: block; font-size: 0.72rem; }

/* Card flag documento (app-card: composto per l'override di border-color) */
.app-card.case-flagged { border-color: hsl(var(--destructive) / 0.4); }

/* CTA fissa in basso */
.case-cta-dock { position: fixed; left: 0; right: 0; bottom: calc(4.75rem + env(safe-area-inset-bottom)); z-index: 35; padding: 0 1.25rem; pointer-events: none; }
.case-cta-inner { max-width: 42rem; margin: 0 auto; pointer-events: auto; }
.case-cta-btn { min-height: 3rem; }
/* --- migrazione inline->classi: app/family.php --- */
/* app/family.php - family dashboard. Semantic classes extracted from inline styles (prefix fam-). */

/* page shell */
.fam-page { display:flex;flex-direction:column;gap:1.5rem; }

/* hero header */
.fam-hero { padding:1.25rem;display:flex;align-items:flex-start;gap:.75rem; }
.fam-hero-icon { height:2.75rem;width:2.75rem;border-radius:.85rem;background:hsl(var(--lime) / .15);display:grid;place-items:center;flex-shrink:0; }
.fam-title { font-family:var(--font-display);font-size:1.25rem;font-weight:600;line-height:1.2; }
.fam-hero-sub { font-size:.72rem;margin-top:.25rem; }

/* generic flex-column helpers used across rows */
.fam-col-min { min-width:0; }
.fam-col-grow { flex:1;min-width:0; }
.fam-noshrink { flex-shrink:0; }

/* identity block (holder / member name + subtitle) */
.fam-name { font-weight:600;font-size:.9rem; }
.fam-sub { font-size:.7rem;margin-top:.15rem; }
.fam-edit { font-size:.72rem;flex-shrink:0; }

/* section header row (title left, action right) */
.fam-row-head { display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.6rem; }
.fam-pill-tall { min-height:2.25rem; }

/* empty-state card body */
.fam-empty { padding:1.5rem;font-size:.85rem; }

/* members list */
.fam-members { display:flex;flex-direction:column;gap:.7rem; }
.fam-member { padding:1rem;display:flex;flex-direction:column;gap:.6rem; }
.fam-member-head { display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem; }
.fam-del-form { flex-shrink:0;line-height:0; }
.fam-member-stats { display:grid;grid-template-columns:1fr 1fr;gap:.5rem; }

/* family bundle card */
.fam-bundle-card { padding:1rem;display:flex;flex-direction:column;gap:.5rem; }
.fam-bundle-row { display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-size:.82rem; }
.fam-amount { font-weight:500; }
.fam-fine { font-size:.72rem; }
.fam-bundle-cta { align-self:flex-start;margin-top:.5rem; }

/* upsell card */
.fam-upsell-icon { height:2.5rem;width:2.5rem;border-radius:.85rem;background:hsl(var(--lime) / .15);display:grid;place-items:center;flex-shrink:0; }
.fam-upsell-label { font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600; }
.fam-upsell-title { font-size:.9rem;font-weight:600; }
.fam-upsell-tagline { font-size:.7rem; }
.fam-upsell-note { font-size:.7rem;margin-top:.5rem;text-align:center; }

/* shared vault */
.fam-vault-title { display:inline-flex;align-items:center;gap:.4rem; }
.fam-vault-upload { cursor:pointer;white-space:nowrap; }
.fam-doc-icon { display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:.7rem;background:hsl(var(--card-elevated));flex-shrink:0; }
.fam-doc-name { font-size:.85rem; }

/* footer notice */
.fam-notice { display:flex;align-items:flex-start;gap:.6rem;font-size:.72rem; }

/* risk pill (static base; tone colors stay inline via $styles[$tone]) */
.fam-risk-pill { display:inline-flex;align-items:center;gap:.35rem;border:1px solid;border-radius:999px;padding:.25rem .7rem;font-size:.7rem;font-weight:500; }

/* --- compound modifiers: override component classes defined in style.css
   (loaded after site.css, where these fam- classes are appended), so a plain
   class would lose the cascade on the same property. --- */
.card-premium.fam-upsell { padding:1rem;display:flex;align-items:center;gap:.75rem;border-color:hsl(var(--lime) / .25);background:hsl(var(--lime) / .05); }
.section-title.fam-flush-top { margin-top:0; }
.section-title.fam-flush { margin:0; }
.btn-ghost.fam-del-btn { color:hsl(var(--foreground-muted));padding:.25rem; }
/* --- migrazione inline->classi: app/index.php --- */
/* app/index.php - home dashboard. Semantic classes extracted from inline styles (prefix dash-). */

/* shell */
.dash-home { display:flex;flex-direction:column;gap:1.5rem; }

/* greeting header */
.dash-eyebrow { font-size:.66rem;text-transform:uppercase;letter-spacing:.2em; }
.dash-h1 { font-size:1.6rem;margin-top:.25rem; }

/* hero card (active case / no active case) */
.dash-hero-card { display:block;padding:1.25rem; }
.dash-active-head { display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem; }
.dash-minw0 { min-width:0; }
.dash-card-eyebrow { font-size:.62rem;text-transform:uppercase;letter-spacing:.2em;font-weight:600; }
.dash-card-title { font-family:var(--font-display);font-size:1.25rem;font-weight:600;margin-top:.35rem; }
.dash-card-ref { font-size:.7rem;margin-top:.25rem; }
.dash-noactive-eyebrow { display:inline-flex;align-items:center;gap:.4rem;font-size:.7rem;font-weight:600;margin-bottom:.5rem; }
.dash-noactive-title { font-family:var(--font-display);font-size:1.1rem;font-weight:600;line-height:1.3; }
.dash-cta-pill { display:inline-flex;align-items:center;gap:.5rem;margin-top:1rem;background:hsl(var(--lime));color:hsl(var(--lime-foreground));border-radius:999px;padding:.6rem 1rem;font-size:.85rem;font-weight:600; }
.dash-promo-sub { font-size:.78rem;margin-top:.4rem;line-height:1.35; }

/* priority / action-required card */
.dash-priority-card { padding:1rem 1.1rem; }
.dash-priority-row { display:flex;align-items:center;gap:.75rem; }
.dash-action-label { font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600; }
.dash-priority-title { font-size:.9rem;font-weight:600; }
.dash-priority-actions { display:flex;gap:.5rem;margin-top:.85rem; }
.dash-btn-round { border-radius:.85rem; }
.dash-btn-grow { flex:1; }

/* quick actions grid */
.dash-section-eyebrow { font-size:.66rem;text-transform:uppercase;letter-spacing:.2em;margin-bottom:.6rem; }
.dash-quick-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem; }
.dash-quick-tile { aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;padding:.5rem; }
.dash-quick-label { font-size:.66rem;font-weight:500;text-align:center;line-height:1.2; }

/* recent updates section */
.dash-section-head { display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem; }
.dash-viewall { font-size:.66rem;display:inline-flex;align-items:center;gap:.25rem; }
.dash-empty { padding:1.25rem;text-align:center;font-size:.75rem;display:flex;align-items:center;justify-content:center;gap:.5rem; }
.dash-notif-list { display:flex;flex-direction:column;gap:.5rem; }
.dash-notif { display:flex;align-items:flex-start;gap:.75rem;padding:.85rem .9rem; }
.dash-notif-icon { height:2rem;width:2rem;border-radius:.65rem;display:grid;place-items:center;flex-shrink:0;background:hsl(var(--card-elevated));color:hsl(var(--foreground-muted)); }
.dash-notif-title { display:block;font-size:.85rem;font-weight:600; }
.dash-notif-body { display:block;font-size:.7rem; }
.dash-notif-dot { height:.5rem;width:.5rem;border-radius:999px;background:hsl(var(--lime));margin-top:.35rem;flex-shrink:0; }

/* home_nav_card() row (renewal / emergency / rewards / recommend / assistant) */
.dash-nav-card { display:flex;align-items:center;gap:.85rem;padding:1rem 1.1rem; }
.dash-tile { height:2.5rem;width:2.5rem;border-radius:.85rem;display:grid;place-items:center;flex-shrink:0; }
.dash-fill { min-width:0;flex:1; }
.dash-nav-eyebrow { display:block;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600; }
.dash-nav-title { display:block;font-weight:600;font-size:.9rem; }
.dash-nav-sub { display:block;font-size:.72rem;margin-top:.1rem; }
.dash-nav-arrow { flex-shrink:0; }

/* --- inline->classi: app/apply.php --- */
/* app/apply.php - classi estratte dagli inline style (namespace: aapply-) */

/* -- stato "visa non trovato" -- */
.app-card.aapply-notice-card { text-align: center; display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem; }
.aapply-icon-center { display: inline-flex; justify-content: center; }
.aapply-notice-actions { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; }

/* -- wizard shell / stepper header -- */
.aapply-wizard { display: flex; flex-direction: column; gap: 1.5rem; padding-bottom: 7rem; }
.aapply-step-eyebrow { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.aapply-step-title { font-size: 1.5rem; font-weight: 600; margin-top: 0.25rem; }

/* -- contenitore verticale di ogni step -- */
.aapply-section-body { display: flex; flex-direction: column; gap: 1rem; }

/* -- micro-label uppercase riutilizzabile -- */
.aapply-eyebrow { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.08em; }
.aapply-eyebrow-gap { margin-bottom: 0.5rem; }

/* -- step Confirm: visa selezionata + pacchetti -- */
.card-premium.aapply-visa-card { padding: 1.25rem; }
.aapply-visa-name { font-family: var(--font-display); font-size: 1.25rem; font-weight: 600; margin-top: 0.25rem; }
.aapply-visa-summary { font-size: 0.85rem; margin-top: 0.4rem; }
.aapply-duration { margin-top: 0.75rem; display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.72rem; }
.aapply-body-sm { font-size: 0.85rem; }
.section-title.aapply-section-title-tight { margin: 0 0 0.6rem; }
.aapply-block { display: block; }
.aapply-pkg-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.aapply-min0 { min-width: 0; }
.aapply-pkg-name-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.aapply-w600 { font-weight: 600; }
.pill.aapply-pill-bestfit { font-size: 0.58rem; text-transform: uppercase; letter-spacing: 0.05em; background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); }
.aapply-note { font-size: 0.68rem; margin-top: 0.2rem; }
.aapply-pkg-price-col { text-align: right; flex-shrink: 0; }
.aapply-pkg-price { font-family: var(--font-display); font-size: 1.15rem; font-weight: 600; }
.aapply-micro { font-size: 0.6rem; }

/* -- step Trip -- */
.aapply-field-hint { font-size: 0.68rem; margin-top: 0.3rem; }

/* -- step Documents -- */
.card-premium.aapply-empty-note { padding: 1.25rem; font-size: 0.85rem; }
.aapply-doc-head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
.aapply-doc-label { font-weight: 500; font-size: 0.85rem; display: flex; align-items: center; gap: 0.4rem; }
.aapply-doc-uploaded { display: none; font-size: 0.68rem; margin-top: 0.3rem; align-items: center; gap: 0.35rem; }
.aapply-doc-up-btn { flex-shrink: 0; cursor: pointer; }
.aapply-hidden { display: none; }
.aapply-docs-footnote { font-size: 0.68rem; line-height: 1.6; margin-top: 0.75rem; }

/* -- step Review -- */
.aapply-review-visa { font-weight: 600; margin-top: 0.25rem; }
.aapply-doc-present-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.3rem; }
.aapply-status-gap { margin-top: 0.5rem; }
.aapply-review-rows { display: flex; flex-direction: column; gap: 0.5rem; }
.aapply-capitalize { text-transform: capitalize; }
.aapply-total-row { display: flex; align-items: baseline; justify-content: space-between; margin-top: 0.4rem; }
.aapply-strong-sm { font-weight: 600; font-size: 0.85rem; }
.aapply-amount-lg { font-family: var(--font-display); font-size: 1.5rem; font-weight: 600; }
.aapply-complex-note { display: none; font-size: 0.68rem; line-height: 1.6; margin-top: 0.5rem; }
.aapply-agree-row { display: flex; align-items: flex-start; gap: 0.6rem; font-size: 0.78rem; }
.aapply-agree-check { margin-top: 0.15rem; width: auto; }

/* -- step Payment -- */
.aapply-amount-row { display: flex; align-items: baseline; justify-content: space-between; }
.aapply-pay-row { display: flex; align-items: flex-start; gap: 0.75rem; }
.aapply-pay-icon { height: 2.5rem; width: 2.5rem; border-radius: 0.75rem; background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); display: grid; place-items: center; flex-shrink: 0; }
.aapply-min0-grow { min-width: 0; flex: 1; }
.aapply-noshrink { flex-shrink: 0; }
.aapply-secure-note { border-radius: var(--radius); border: 1px solid hsl(var(--border) / 0.6); background: hsl(var(--card-elevated) / 0.4); padding: 0.75rem; font-size: 0.68rem; line-height: 1.6; display: flex; align-items: flex-start; gap: 0.5rem; }
.aapply-shield-icon { flex-shrink: 0; margin-top: 0.1rem; }

/* -- barra azioni fissa -- */
.aapply-actionbar { position: fixed; left: 0; right: 0; bottom: calc(4.75rem + env(safe-area-inset-bottom)); z-index: 35; padding: 0 1.25rem; pointer-events: none; }
.aapply-actionbar-inner { max-width: 42rem; margin: 0 auto; pointer-events: auto; display: flex; gap: 0.6rem; }
.aapply-action-back { min-height: 3rem; flex-shrink: 0; }
.aapply-action-next { min-height: 3rem; flex: 1; }

/* --- inline->classi: app/approved-visa.php --- */
.aapprovedvisa-page { display:flex; flex-direction:column; gap:1.25rem; }
.aapprovedvisa-row { display:flex; align-items:flex-start; gap:0.75rem; }
.aapprovedvisa-icon-badge { height:2.75rem; width:2.75rem; border-radius:0.85rem; background:hsl(var(--lime) / 0.1); display:grid; place-items:center; flex-shrink:0; }
.aapprovedvisa-title { font-family:var(--font-display); font-size:1.5rem; font-weight:600; line-height:1.2; }
.aapprovedvisa-lead { font-size:0.85rem; margin-top:0.25rem; }
.aapprovedvisa-empty { padding:2rem; text-align:center; }
.aapprovedvisa-empty-title { font-weight:600; }
.aapprovedvisa-empty-text { font-size:0.85rem; margin-top:0.4rem; }
.aapprovedvisa-empty-action { margin-top:1.25rem; }
.aapprovedvisa-card-icon { flex-shrink:0; margin-top:0.15rem; display:inline-flex; }
.aapprovedvisa-card-body { flex:1; min-width:0; }
.aapprovedvisa-card-name { font-weight:600; font-size:0.85rem; }
.aapprovedvisa-card-meta { font-size:0.68rem; margin-top:0.15rem; }
.aapprovedvisa-card-actions { margin-top:0.75rem; display:flex; gap:0.5rem; flex-wrap:wrap; }

/* --- inline->classi: app/assistant.php --- */
.aassistant-empty-card { font-size: .85rem; line-height: 1.6; }
.aassistant-lang-note { font-size: .7rem; margin-top: .5rem; opacity: .8; }

/* --- inline->classi: app/business-dashboard.php --- */
/* ============================================================
   app/business-dashboard.php - classi component-specific (migrazione inline -> classi)
   Namespace: abusinessdashboard-*
   NB: .card-premium e' definita anche in style.css (che carica DOPO site.css)
   e imposta 'background'; l'override del gradiente hero usa selettore
   composto (.card-premium.abusinessdashboard-hero) per vincere la cascata.
   Il solo override di 'padding' (che style.css non imposta) usa classe piana.
   ============================================================ */

/* Contenitore pagina */
.abusinessdashboard-page { display: flex; flex-direction: column; gap: 1.25rem; }

/* Eyebrow header (sopra il titolo) */
.abusinessdashboard-eyebrow { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.2em; }
.abusinessdashboard-title { font-family: var(--font-display); font-size: 1.25rem; font-weight: 600; line-height: 1.2; margin-top: 0.15rem; }

/* Hero riepilogo (card-premium con gradiente lime) */
.card-premium.abusinessdashboard-hero { padding: 1.25rem; background: linear-gradient(135deg, hsl(var(--lime) / 0.1), hsl(var(--card))); }

/* Sezioni card-premium standard (solo padding) */
.abusinessdashboard-section { padding: 1.25rem; }

/* Statistiche compatte (bd_stat) */
.abusinessdashboard-stat { border: 1px solid hsl(var(--border)); border-radius: 0.75rem; padding: 0.75rem; background: hsl(var(--card)); }
.abusinessdashboard-stat-label { display: flex; align-items: center; gap: 0.4rem; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.06em; }
.abusinessdashboard-stat-value { font-size: 0.9rem; font-weight: 600; margin-top: 0.3rem; line-height: 1.25; }
.abusinessdashboard-stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }

/* Riga status/tipo */
.abusinessdashboard-status { font-size: 0.72rem; margin-top: 0.85rem; }
.abusinessdashboard-strong { font-weight: 600; }

/* Etichette di sezione */
.abusinessdashboard-section-label { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.2em; margin-bottom: 1rem; }
.abusinessdashboard-section-label-icon { display: flex; align-items: center; gap: 0.5rem; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.2em; margin-bottom: 0.75rem; }
.abusinessdashboard-notes-label { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.2em; margin-bottom: 0.4rem; }

/* Stepper milestone */
.abusinessdashboard-milestones { display: flex; flex-direction: column; gap: 0.85rem; list-style: none; }
.abusinessdashboard-milestone { display: flex; align-items: flex-start; gap: 0.75rem; }
.abusinessdashboard-milestone-icon { height: 2.25rem; width: 2.25rem; border-radius: 0.85rem; display: grid; place-items: center; flex-shrink: 0; }
.abusinessdashboard-milestone-body { flex: 1; min-width: 0; }
.abusinessdashboard-milestone-label { font-size: 0.9rem; font-weight: 500; }
.abusinessdashboard-milestone-sub { font-size: 0.72rem; }
.abusinessdashboard-milestone-pending { color: hsl(var(--foreground-muted) / 0.5); margin-top: 0.55rem; flex-shrink: 0; }

/* Documenti richiesti */
.abusinessdashboard-doc-list { display: flex; flex-direction: column; gap: 0.6rem; list-style: none; }
.abusinessdashboard-doc-item { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.9rem; }
.abusinessdashboard-doc-check { flex-shrink: 0; margin-top: 0.1rem; }

/* Note manager */
.abusinessdashboard-notes-text { font-size: 0.9rem; white-space: pre-wrap; }

/* Azioni in fondo */
.abusinessdashboard-actions { display: flex; flex-direction: column; gap: 0.6rem; }

/* --- inline->classi: app/business.php --- */
/* app/business.php - classi semantiche estratte dagli style inline (namespace abusiness-). */

/* Card statistica compatta (bq_stat) */
.abusiness-stat-card { border:1px solid hsl(var(--border));border-radius:0.75rem;padding:0.75rem;background:hsl(var(--card)); }
.abusiness-stat-label { display:flex;align-items:center;gap:0.4rem;font-size:0.62rem;text-transform:uppercase;letter-spacing:0.06em;color:hsl(var(--foreground-muted)); }
.abusiness-stat-value { font-size:0.9rem;font-weight:600;margin-top:0.3rem;line-height:1.25; }

/* Result screen */
.abusiness-result { display:flex;flex-direction:column;gap:1.25rem; }
.abusiness-result-header { padding:1.25rem;background:linear-gradient(135deg, hsl(var(--lime) / 0.14), hsl(var(--card))); }
.abusiness-result-eyebrow { display:flex;align-items:center;gap:0.4rem;font-size:0.62rem;text-transform:uppercase;letter-spacing:0.2em;font-weight:600; }
.abusiness-result-title { font-family:var(--font-display);font-size:1.5rem;font-weight:600;margin-top:0.5rem; }
.abusiness-stat-grid { display:grid;grid-template-columns:1fr 1fr;gap:0.75rem;margin-top:0.85rem; }

/* Pannelli card-premium della result screen */
.abusiness-panel { padding:1.25rem; }
.abusiness-panel-label { display:flex;align-items:center;gap:0.5rem;font-size:0.62rem;text-transform:uppercase;letter-spacing:0.2em;color:hsl(var(--foreground-muted));margin-bottom:0.75rem; }
.abusiness-doc-list { display:flex;flex-direction:column;gap:0.6rem;list-style:none; }
.abusiness-doc-item { display:flex;align-items:flex-start;gap:0.5rem;font-size:0.9rem; }
.abusiness-doc-icon { flex-shrink:0;margin-top:0.1rem; }
.abusiness-next-label { font-size:0.62rem;text-transform:uppercase;letter-spacing:0.2em;color:hsl(var(--foreground-muted));margin-bottom:0.35rem; }
.abusiness-panel-text { font-size:0.9rem; }
.abusiness-cta-stack { display:flex;flex-direction:column;gap:0.6rem; }

/* Wizard */
.abusiness-counter-row { display:flex;justify-content:flex-end; }
.abusiness-progress-init { width:12.5%; }
.abusiness-form-error { padding:0.85rem 1rem;margin-bottom:1rem;background:hsl(var(--destructive) / 0.08);border-color:hsl(var(--destructive) / 0.3);font-size:0.82rem; }
.abusiness-answers { margin-top:0.85rem; }
.abusiness-contact-fields { margin-top:1rem; }
.abusiness-field-flush { margin-bottom:0; }
.abusiness-btn-flex { flex:1; }

/* --- inline->classi: app/case-courier.php --- */
/* app/case-courier.php - classi semantiche estratte da stili inline (prefix acasecourier-) */

/* timeline dot markers */
.acasecourier-dot-icon { display:inline-flex; }
.acasecourier-dot-current { height:.85rem;width:.85rem;border-radius:999px;background:hsl(var(--lime));box-shadow:0 0 0 4px hsl(var(--lime) / .2); }
.acasecourier-dot-todo { color:hsl(var(--foreground-muted) / .4); }

/* page + hero */
.acasecourier-page { display:flex;flex-direction:column;gap:1.25rem;padding-bottom:1.5rem; }
.acasecourier-hero { padding:1.25rem;display:flex;align-items:flex-start;gap:.75rem; }
.acasecourier-hero-badge { height:2.75rem;width:2.75rem;border-radius:.85rem;background:hsl(var(--lime) / .15);display:grid;place-items:center;flex-shrink:0; }
.acasecourier-hero-title { font-family:var(--font-display);font-size:1.25rem;font-weight:600;line-height:1.2; }
.acasecourier-hero-sub { font-size:.72rem;margin-top:.25rem; }

/* shared bits */
.acasecourier-flex-min { min-width:0; }
.acasecourier-lead-icon { flex-shrink:0;margin-top:.1rem; }
.acasecourier-strong { font-weight:500; }
.acasecourier-subtext { font-size:.72rem;margin-top:.15rem; }

/* reassurance / note cards */
.acasecourier-note-lime { padding:1rem;display:flex;align-items:flex-start;gap:.75rem;border-color:hsl(var(--lime) / .3);background:hsl(var(--lime) / .06); }
.acasecourier-note-text { font-size:.75rem;line-height:1.55; }

/* pickup summary */
.acasecourier-summary { display:flex;flex-direction:column;gap:.5rem; }
.acasecourier-eyebrow { font-size:.6rem;text-transform:uppercase;letter-spacing:.08em; }
.acasecourier-addr-row { display:flex;align-items:flex-start;gap:.5rem;font-size:.85rem; }
.acasecourier-when-row { display:flex;align-items:center;gap:.4rem;font-size:.72rem; }

/* timeline */
.acasecourier-section-title { font-family:var(--font-display);font-size:1rem;font-weight:600;margin:0 0 .75rem; }
.acasecourier-tl-text { font-size:.78rem;line-height:1.35;padding-top:.05rem; }
.acasecourier-tl-note { font-size:.68rem;margin-top:.15rem; }
.acasecourier-tl-time { font-size:.62rem;margin-top:.15rem; }
.acasecourier-empty-note { font-size:.68rem;margin-top:.75rem; }

/* custody actions */
.acasecourier-eyebrow-bold { font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:.75rem; }
.acasecourier-opt-stack { display:grid;grid-template-columns:1fr;gap:.5rem; }
.acasecourier-btn-tap { min-height:2.75rem; }
.acasecourier-btn-report { background:hsl(var(--destructive) / .1);border:1px solid hsl(var(--destructive) / .3); }
.acasecourier-help-note { font-size:.68rem;margin-top:.75rem;line-height:1.5; }
.acasecourier-custody-log { list-style:none;margin:1rem 0 0;padding:.75rem 0 0;border-top:1px solid hsl(var(--border) / .5);display:flex;flex-direction:column;gap:.6rem; }
.acasecourier-custody-item { display:flex;align-items:flex-start;gap:.5rem;font-size:.72rem; }

/* issue alert */
.acasecourier-alert-danger { border-color:hsl(var(--destructive) / .3);background:hsl(var(--destructive) / .05);display:flex;align-items:flex-start;gap:.75rem; }
.acasecourier-alert-body { font-size:.85rem; }
.acasecourier-alert-title { font-weight:600; }

/* request form */
.acasecourier-form { display:flex;flex-direction:column;gap:.85rem; }
.acasecourier-warn-box { padding:1rem;align-items:flex-start;gap:.75rem;border-color:hsl(var(--warning) / .4);background:hsl(var(--warning) / .05); }
.acasecourier-form-row2 { display:grid;grid-template-columns:1fr 1fr;gap:.75rem; }
.acasecourier-consent-box { flex-direction:column;gap:.75rem;border-radius:.85rem;border:1px solid hsl(var(--warning) / .4);background:hsl(var(--warning) / .05);padding:1rem; }
.acasecourier-consent-head { display:flex;align-items:flex-start;gap:.5rem; }
.acasecourier-consent-text { font-size:.78rem;line-height:1.4; }
.acasecourier-confirm-pad { padding:.5rem .25rem 0; }
.acasecourier-err-pad { padding:0 .25rem; }
.acasecourier-fee-note { font-size:.68rem;padding:0 .25rem; }
.acasecourier-btn-submit { min-height:3.25rem; }

/* --- inline->classi: app/case-renew.php --- */
/* app/case-renew.php - classi semantiche estratte da stili inline (prefix acaserenew-) */

/* label/value rows (rn_row + review member row) */
.acaserenew-row { display:flex;align-items:center;justify-content:space-between;gap:0.75rem;font-size:0.8rem; }
.acaserenew-row-val { font-weight:500;text-align:right; }
.acaserenew-label-md { font-weight:500;font-size:0.9rem; }

/* page + overview */
.acaserenew-page { padding-bottom:2rem; }
.acaserenew-overview { display:flex;flex-direction:column;gap:1.25rem; }

/* hero (compound: .card-premium in style.css imposta background) */
.card-premium.acaserenew-hero { padding:1.25rem;background:linear-gradient(135deg, hsl(var(--lime) / 0.12), hsl(var(--card))); }
.acaserenew-hero-row { display:flex;align-items:flex-start;gap:0.85rem; }
.acaserenew-hero-icon { width:2.75rem;height:2.75rem;border-radius:1rem;background:hsl(var(--lime) / 0.15);display:grid;place-items:center;flex-shrink:0; }
.acaserenew-hero-body { min-width:0;flex:1; }
.acaserenew-h1 { font-size:1.25rem;font-weight:600;line-height:1.2; }
.acaserenew-hero-sub { font-size:0.75rem;margin-top:0.25rem; }
.acaserenew-hero-badge { margin-top:0.5rem; }

/* stat grid */
.acaserenew-stat-grid { display:grid;grid-template-columns:1fr 1fr;gap:0.5rem; }
.app-card.acaserenew-stat { padding:0.75rem 0.85rem; }
.acaserenew-stat-k { font-size:0.6rem;text-transform:uppercase;letter-spacing:0.06em; }
.acaserenew-stat-v { font-size:0.85rem;font-weight:600;margin-top:0.2rem; }

/* recommended-action + package summary cards */
.acaserenew-card-col { padding:1rem 1.15rem;display:flex;flex-direction:column;gap:0.5rem; }
.acaserenew-rec-eyebrow { font-size:0.6rem;text-transform:uppercase;letter-spacing:0.08em;font-weight:700; }
.acaserenew-badge-inline { align-self:flex-start;margin-top:0.15rem; }
.acaserenew-pkg-head { display:flex;align-items:center;justify-content:space-between;gap:0.5rem; }
.acaserenew-pkg-name { font-weight:600;font-size:0.9rem; }
.pill.acaserenew-rec-pill { font-size:0.58rem;text-transform:uppercase;letter-spacing:0.05em; }
.acaserenew-save { font-size:0.7rem; }
.acaserenew-join { font-size:0.72rem;display:inline-flex;align-items:center;gap:0.3rem;font-weight:600; }

/* quick actions */
.acaserenew-actions { display:flex;flex-direction:column;gap:0.6rem; }
.acaserenew-btn-tall { min-height:3rem; }
.acaserenew-approw { justify-content:space-between;min-height:3.25rem; }
.acaserenew-approw-plain { justify-content:space-between; }
.acaserenew-approw-btn { width:100%;justify-content:space-between;min-height:3.25rem;background:hsl(var(--card));cursor:pointer;text-align:left; }
.acaserenew-row-label { display:inline-flex;align-items:center;gap:0.5rem;font-weight:500;font-size:0.9rem; }
.acaserenew-icon-primary { color:hsl(var(--primary)); }
.acaserenew-dim { opacity:0.55; }
.acaserenew-nocontact { font-size:0.68rem; }
.acaserenew-form-flush { margin:0; }

/* wizard shell (compound: .section-title in style.css imposta margin) */
.acaserenew-wizard { display:flex;flex-direction:column;gap:1rem; }
.acaserenew-back { align-self:flex-start; }
.section-title.acaserenew-stepcount-flush { margin:0; }
.acaserenew-bar { width:20%; }

/* wizard steps */
.acaserenew-h2 { font-size:1.1rem;font-weight:600;margin-bottom:0.85rem; }
.acaserenew-h2-tight { font-size:1.1rem;font-weight:600;margin-bottom:0.5rem; }
.acaserenew-summary { display:flex;flex-direction:column;gap:0.5rem; }
.acaserenew-btn-mt { margin-top:1rem; }
.acaserenew-note { font-size:0.82rem;margin-bottom:0.85rem; }
.acaserenew-empty { font-size:0.85rem; }
.acaserenew-pkg-body { min-width:0; }
.acaserenew-pkg-title { font-weight:600;font-size:0.9rem;display:flex;align-items:center;gap:0.5rem; }
.pill.acaserenew-pkg-pill { font-size:0.55rem;text-transform:uppercase;letter-spacing:0.05em; }
.acaserenew-pkg-sub { font-size:0.7rem;margin-top:0.2rem; }
.acaserenew-submit-note { font-size:0.7rem;margin-top:0.6rem; }

/* --- inline->classi: app/cases.php --- */
.acases-section-title { margin-top: 0; }
.acases-row-muted { opacity: .8; }
.acases-row-main { min-width: 0; flex: 1; }
.acases-row-title { font-weight: 600; font-size: .9rem; }
.acases-row-sub { font-size: .7rem; margin-top: .15rem; }
.acases-row-aside { display: flex; align-items: center; gap: .5rem; flex-shrink: 0; }
.acases-page { display: flex; flex-direction: column; gap: 1.5rem; }
.acases-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.acases-title { font-size: 1.4rem; }
.acases-new { min-height: 2.25rem; }
.acases-empty-text { font-size: .9rem; }

/* --- inline->classi: app/courier-request.php --- */
.acourierrequest-page { display:flex;flex-direction:column;gap:1.25rem; }
.acourierrequest-header { display:flex;align-items:flex-start;gap:.75rem; }
.acourierrequest-badge { height:2.75rem;width:2.75rem;border-radius:.85rem;background:hsl(var(--lime) / .1);display:grid;place-items:center;flex-shrink:0; }
.acourierrequest-header-text { min-width:0; }
.acourierrequest-title { font-family:var(--font-display);font-size:1.5rem;font-weight:600;line-height:1.2; }
.acourierrequest-subtitle { font-size:.85rem;margin-top:.25rem; }
.empty-state.acourierrequest-empty { text-align:center;padding:2rem 1.5rem; }
.acourierrequest-empty-title { font-weight:600; }
.acourierrequest-empty-text { font-size:.85rem;margin-top:.4rem; }
.acourierrequest-empty-cta { margin-top:1.25rem;display:inline-flex; }
.section-title.acourierrequest-section-flush { margin-top:0; }
.acourierrequest-row { min-height:4rem; }
.acourierrequest-row-body { flex:1;min-width:0; }
.acourierrequest-row-title { font-weight:600;font-size:.9rem; }
.acourierrequest-row-status { font-size:.7rem;margin-top:.15rem;text-transform:uppercase;letter-spacing:.06em; }
.acourierrequest-row-cta { flex-shrink:0;font-size:.75rem;font-weight:600;display:inline-flex;align-items:center;gap:.25rem; }

/* --- inline->classi: app/courier-tracking.php --- */
.acouriertracking-page { display:flex; flex-direction:column; gap:1.25rem; }
.acouriertracking-header { display:flex; align-items:flex-start; gap:.75rem; }
.acouriertracking-icon-badge { height:2.75rem; width:2.75rem; border-radius:.85rem; background:hsl(var(--lime) / .1); display:grid; place-items:center; flex-shrink:0; }
.acouriertracking-header-text { min-width:0; }
.acouriertracking-title { font-family:var(--font-display); font-size:1.5rem; font-weight:600; line-height:1.2; }
.acouriertracking-subtitle { font-size:.85rem; margin-top:.25rem; }
.acouriertracking-empty { text-align:center; padding:2rem 1.5rem; }
.acouriertracking-empty-icon { margin-bottom:.5rem; display:flex; justify-content:center; }
.acouriertracking-empty-title { font-weight:600; }
.acouriertracking-empty-text { font-size:.85rem; margin-top:.4rem; }
.acouriertracking-empty-action { margin-top:1.25rem; display:inline-flex; }
.acouriertracking-row-icon { flex-shrink:0; display:inline-flex; }
.acouriertracking-row-body { flex:1; min-width:0; }
.acouriertracking-row-title { font-weight:600; font-size:.85rem; }
.acouriertracking-row-meta { font-size:.68rem; margin-top:.15rem; }

/* --- inline->classi: app/documents.php --- */
/* app/documents.php - semantic classes extracted from inline styles (zero visual change). */

/* intro / empty state */
.adocuments-intro { font-size:.82rem;margin-bottom:1.1rem; }
.adocuments-empty-title { font-weight:600; }
.adocuments-empty-text { margin-top:.4rem;font-size:.82rem; }
.adocuments-empty-action { margin-top:1rem; }

/* case selector */
.adocuments-case-field { display:block;margin-bottom:0; }
.adocuments-case-label { display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.4rem; }

/* summary stat tiles */
.adocuments-stat-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:.9rem;text-align:center; }
.adocuments-stat-tile { background:hsl(var(--card-elevated));border:1px solid hsl(var(--border));border-radius:.7rem;padding:.55rem .35rem; }
.adocuments-stat-label { font-size:.58rem;text-transform:uppercase;letter-spacing:.05em; }
.adocuments-stat-value { font-weight:600;margin-top:.15rem; }

/* requirements note */
.adocuments-note { font-size:.82rem; }

/* requirement / document card */
.adocuments-doc-card { margin-bottom:.7rem; }
.adocuments-doc-head { display:flex;align-items:flex-start;justify-content:space-between;gap:.85rem; }
.adocuments-info { min-width:0; }
.adocuments-doc-title { font-weight:600;font-size:.88rem;display:flex;align-items:center;gap:.35rem; }
.adocuments-req-mark { font-weight:700; }
.adocuments-doc-file { margin-top:.35rem;display:inline-flex;align-items:center;gap:.35rem;font-size:.74rem;max-width:220px; }
.adocuments-doc-status { margin-top:.45rem; }
.adocuments-doc-meta { margin-top:.35rem;font-size:.68rem; }
.adocuments-hint { margin-top:.35rem;font-size:.74rem; }
.adocuments-upload-btn { cursor:pointer;white-space:nowrap;align-self:flex-start; }
.adocuments-reupload-alert { margin-top:.6rem;border-radius:.6rem;background:hsl(var(--destructive)/.1);border:1px solid hsl(var(--destructive)/.3);padding:.5rem .65rem;font-size:.72rem; }
.adocuments-doc-actions { margin-top:.6rem;display:flex;gap:.5rem;flex-wrap:wrap; }
.adocuments-inline-form { display:inline; }

/* additional uploads */
.adocuments-other-head { display:flex;align-items:center;justify-content:space-between;gap:.85rem; }
.adocuments-other-title { font-weight:600;font-size:.88rem; }
.adocuments-file-row { margin-top:.6rem; }
.adocuments-file-icon { display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:.7rem;background:hsl(var(--card-elevated));flex-shrink:0; }
.adocuments-file-main { flex:1;min-width:0; }
.adocuments-file-name { font-size:.85rem; }
.adocuments-file-date { font-size:.68rem; }

/* preview modal */
.adocuments-preview-name { font-size:.82rem; }

/* Delete buttons: compound selector so the destructive colour beats .btn-ghost
   (style.css .btn-ghost sets color:hsl(var(--foreground)) and loads after site.css's
   .tx-danger, so a plain utility class would lose the equal-specificity cascade;
   the original inline style won on specificity 1,0,0,0). */
.btn-ghost.adocuments-del-btn { color:hsl(var(--destructive)); }

/* --- inline->classi: app/emergency.php --- */
/* --- migrazione inline->classi: app/emergency.php --- */
/* ============================================================
   app/emergency.php - classi component-specific (migrazione inline -> classi)
   Namespace: aemergency-*
   Colori delegati al vocabolario condiviso (muted, tx-lime, tx-success,
   tx-danger). L'header di allerta e' una .card-premium che sovrascrive
   border-color: usa selettore composto (.card-premium.aemergency-alert-header)
   per vincere anche su .card-premium:hover (stessa specificita', appeso dopo).
   ============================================================ */

/* Badge di rischio (server-rendered + preview live JS): parte statica dello span */
.aemergency-risk-badge { display:inline-flex; align-items:center; gap:0.4rem; border-radius:999px; padding:0.25rem 0.7rem; font-size:0.7rem; font-weight:500; border:1px solid; }

/* Etichetta gruppo campo bool (Yes/No) */
.aemergency-field-label { font-size:0.68rem; text-transform:uppercase; letter-spacing:0.06em; margin-bottom:0.4rem; }
.aemergency-seg-grid { display:grid; grid-template-columns:1fr 1fr; gap:0.5rem; }

/* Flusso verticale di pagina (conferma / form) */
.aemergency-flow { display:flex; flex-direction:column; gap:1.25rem; }

/* Conferma richiesta inviata */
.aemergency-done-card { padding:1.25rem; display:flex; flex-direction:column; gap:0.75rem; }
.aemergency-done-icon { height:2.75rem; width:2.75rem; border-radius:0.85rem; background:hsl(var(--success) / 0.15); display:grid; place-items:center; }
.aemergency-done-title { font-family:var(--font-display); font-size:1.25rem; font-weight:600; }
.aemergency-body { font-size:0.85rem; }
.aemergency-expert-link { display:inline-flex; align-items:center; gap:0.4rem; font-size:0.85rem; font-weight:600; }

/* Header di allerta (card-premium: composto per vincere su :hover) */
.card-premium.aemergency-alert-header { padding:1.25rem; background:hsl(var(--destructive) / 0.06); border-color:hsl(var(--destructive) / 0.25); display:flex; align-items:flex-start; gap:0.75rem; }
.aemergency-alert-icon { height:2.75rem; width:2.75rem; border-radius:0.85rem; background:hsl(var(--destructive) / 0.15); display:grid; place-items:center; flex-shrink:0; }
.aemergency-alert-title { font-family:var(--font-display); font-size:1.25rem; font-weight:600; line-height:1.2; }
.aemergency-alert-sub { font-size:0.72rem; margin-top:0.25rem; }

/* Gruppo campi del form */
.aemergency-fields { display:flex; flex-direction:column; gap:1rem; }

/* Card upload documento */
.aemergency-upload-card { padding:1rem; display:flex; align-items:center; justify-content:space-between; gap:0.75rem; cursor:pointer; }
.aemergency-min0 { min-width:0; }
.aemergency-upload-label { font-size:0.85rem; font-weight:500; display:inline-flex; align-items:center; gap:0.5rem; }
.aemergency-icon-inline { display:inline-flex; }
.aemergency-hint { font-size:0.68rem; margin-top:0.15rem; }
.aemergency-hidden { display:none; }

/* Azioni submit */
.aemergency-actions { display:flex; flex-direction:column; gap:0.65rem; }
.aemergency-btn-danger { background:hsl(var(--destructive)); color:#fff; }
.aemergency-btn-tall { min-height:3.25rem; }
.aemergency-legal { font-size:0.68rem; text-align:center; }

/* --- inline->classi: app/family-add.php --- */
.afamilyadd-form { display:flex;flex-direction:column;gap:1.25rem; }
.card-premium.afamilyadd-header { padding:1.25rem;display:flex;align-items:flex-start;gap:.75rem; }
.afamilyadd-icon-badge { height:2.75rem;width:2.75rem;border-radius:.85rem;background:hsl(var(--lime) / .15);display:grid;place-items:center;flex-shrink:0; }
.afamilyadd-header-text { min-width:0; }
.afamilyadd-title { font-family:var(--font-display);font-size:1.25rem;font-weight:600;line-height:1.2; }
.afamilyadd-subtitle { font-size:.72rem;margin-top:.25rem; }
.afamilyadd-seg-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem; }
.afamilyadd-grid-2 { display:grid;grid-template-columns:1fr 1fr;gap:.75rem; }
.card-premium.afamilyadd-upload { padding:1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer; }
.afamilyadd-upload-label { font-size:.85rem;font-weight:500;display:inline-flex;align-items:center;gap:.5rem; }
.afamilyadd-submit { min-height:3.25rem; }
</content>
</invoke>

/* --- inline->classi: app/help.php --- */
/* ============================================================
   app/help.php - classi component-specific (migrazione inline -> classi)
   Namespace: ahelp-*
   NB: .section-title e' definita in site.css e style.css (che carica DOPO)
   e imposta 'margin'; l'override margin:0 usa selettore composto
   (.section-title.ahelp-section-flush) per vincere la cascata.
   Gli override di 'padding' su .card-premium (che style.css non imposta)
   usano classi piane. Colore testo attenuato -> classe esistente .muted.
   ============================================================ */

/* Contenitore pagina */
.ahelp-page { display:flex;flex-direction:column;gap:1.5rem; }

/* Header */
.ahelp-title { font-family:var(--font-display);font-size:1.5rem;font-weight:600;line-height:1.2; }
.ahelp-subtitle { font-size:0.85rem;margin-top:0.25rem; }

/* Gruppo (sezione di edge-case) */
.ahelp-group { display:flex;flex-direction:column;gap:0.75rem; }
.section-title.ahelp-section-flush { margin:0; }

/* Card edge-case */
.ahelp-card { padding:1rem; }
.ahelp-item { display:flex;align-items:flex-start;gap:0.75rem; }
.ahelp-icon-badge { height:2.25rem;width:2.25rem;border-radius:0.85rem;background:hsl(var(--card-elevated));display:grid;place-items:center;flex-shrink:0; }
.ahelp-item-body { min-width:0;flex:1; }
.ahelp-item-title { font-weight:600;font-size:0.85rem; }
.ahelp-item-text { font-size:0.75rem;margin-top:0.15rem; }

/* Chip di azione (tono via style inline dinamico) */
.ahelp-chips { margin-top:0.75rem;display:flex;flex-wrap:wrap;gap:0.5rem; }
.ahelp-chip { display:inline-flex;align-items:center;gap:0.4rem;border-radius:999px;padding:0.4rem 0.75rem;font-size:0.72rem;font-weight:600; }

/* CTA finale ("Still stuck?") */
.ahelp-cta { padding:1.25rem;text-align:center; }
.ahelp-cta-text { font-size:0.75rem;margin-top:0.25rem; }
.ahelp-cta-btn { margin-top:0.85rem; }

/* --- inline->classi: app/notifications.php --- */
/* app/notifications.php - inline -> semantic classes */
.anotifications-unread-bar { display:flex;align-items:center;justify-content:space-between;gap:0.75rem;margin-bottom:1rem; }
.anotifications-count { font-size:0.72rem; }
.anotifications-section-head { display:flex;align-items:center;justify-content:space-between; }
.anotifications-empty-group { text-align:center;font-size:0.8rem;padding:1rem; }
.anotifications-item-btn { display:flex;align-items:flex-start;gap:0.75rem;width:100%;text-align:left;background:transparent;border:0;padding:0;font:inherit;color:inherit;cursor:pointer; }
.anotifications-icon-tile { height:2.25rem;width:2.25rem;border-radius:0.85rem;display:grid;place-items:center;flex-shrink:0; }
.anotifications-item-body { min-width:0;flex:1; }
.anotifications-title-row { display:flex;align-items:center;gap:0.4rem; }
.anotifications-title { font-weight:600;font-size:0.9rem; }
.anotifications-unread-dot { height:0.5rem;width:0.5rem;border-radius:999px;background:hsl(var(--lime));flex-shrink:0; }
.anotifications-item-text { display:block;font-size:0.78rem;margin-top:0.15rem; }
.anotifications-meta { display:flex;flex-wrap:wrap;align-items:center;gap:0.4rem;font-size:0.68rem;margin-top:0.4rem; }
.anotifications-channel-pill { padding:0.05rem 0.5rem;font-size:0.62rem;background:hsl(var(--card-elevated));color:hsl(var(--foreground-muted)); }
.anotifications-status-badge { padding:0.05rem 0.5rem;font-size:0.62rem; }
.anotifications-item-arrow { flex-shrink:0;margin-top:0.15rem; }
.anotifications-tracker-actions { margin-top:0.75rem;padding-top:0.75rem;border-top:1px solid hsl(var(--border));display:grid;grid-template-columns:1fr 1fr;gap:0.4rem; }

/* --- inline->classi: app/payment-failed.php --- */
/* --- migrazione inline->classi: app/payment-failed.php --- */
/* ============================================================
   app/payment-failed.php - classi component-specific (migrazione inline -> classi)
   Namespace: apaymentfailed-*
   Colore icona delegato al vocabolario condiviso (tx-danger).
   ============================================================ */

/* Card centrale dell'esito pagamento (su .card-premium) */
.apaymentfailed-card { padding:1.5rem; text-align:center; }

/* Cerchio icona di errore */
.apaymentfailed-icon { height:3.5rem; width:3.5rem; border-radius:0.85rem; background:hsl(var(--destructive) / 0.1); display:grid; place-items:center; margin:0 auto 1rem; }

/* Titolo */
.apaymentfailed-title { font-family:var(--font-display); font-size:1.5rem; font-weight:600; }

/* Testo esplicativo (motivo) */
.apaymentfailed-lead { font-size:0.85rem; margin-top:0.5rem; }

/* Contenitore azioni (bottoni) */
.apaymentfailed-actions { margin-top:1.5rem; display:grid; gap:0.65rem; }

/* --- inline->classi: app/profile.php --- */
/* app/profile.php - semantic classes extracted from inline styles (zero visual change). */

/* avatar header */
.aprofile-avatar-row { display:flex;align-items:center;gap:1rem; }
.aprofile-avatar-btn { position:relative;width:4rem;height:4rem;border-radius:999px;background:hsl(var(--card-elevated));border:1px solid hsl(var(--border));overflow:hidden;flex-shrink:0;display:grid;place-items:center; }
.aprofile-avatar-img { width:100%;height:100%;object-fit:cover; }
.aprofile-avatar-spinner { position:absolute;inset:0;display:grid;place-items:center;background:hsl(0 0% 0% / .45);color:#fff;opacity:0;transition:opacity .15s; }
.aprofile-fill-col { min-width:0;flex:1; }
.aprofile-email { font-weight:600;overflow-wrap:anywhere; }
.aprofile-photo-hint { font-size:.72rem;margin-top:.15rem; }

/* completion meter */
.aprofile-meter { margin-top:1rem; }
.aprofile-meter-head { display:flex;align-items:center;justify-content:space-between;font-size:.72rem;margin-bottom:.4rem; }
.aprofile-meter-label { font-weight:600; }
.aprofile-meter-done { display:inline-flex;align-items:center;gap:.3rem; }

/* form sections */
.aprofile-section-title { margin-bottom:.15rem; }
.aprofile-section-sub { font-size:.72rem;margin-bottom:.55rem; }
.aprofile-field-last { margin-bottom:0; }
.aprofile-input-disabled { opacity:.65;cursor:not-allowed; }
.aprofile-action-gap { margin-top:1.25rem; }

/* account rows */
.aprofile-row-icon { display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:.7rem;background:hsl(var(--card-elevated));flex-shrink:0; }
.aprofile-row-title { font-weight:600;font-size:.9rem; }
.aprofile-row-desc { font-size:.72rem; }

/* --- inline->classi: app/recommend.php --- */
.arecommend-intro-pill { margin-bottom: .75rem; }
.arecommend-intro-lead { font-size: .85rem; margin-bottom: 1.1rem; line-height: 1.55; }
.arecommend-empty-title { font-weight: 600; }
.arecommend-empty-desc { margin-top: .4rem; font-size: .82rem; }
.arecommend-empty-action { margin-top: 1rem; }
.arecommend-field-last { margin-bottom: 0; }
.arecommend-notes-input { min-height: 88px; }
.arecommend-submit { margin-top: 1.1rem; }
.arecommend-fineprint { font-size: .68rem; text-align: center; margin-top: .7rem; line-height: 1.5; }
.arecommend-form-error { display: none; margin-top: .7rem; font-size: .78rem; text-align: center; }

/* --- inline->classi: app/renewal-package.php --- */
.arenewalpackage-page { display:flex;flex-direction:column;gap:1.25rem }
.arenewalpackage-title { font-size:1.5rem;line-height:1.2;font-weight:600 }
.arenewalpackage-note { font-size:0.85rem;margin-top:0.35rem }
.arenewalpackage-empty { text-align:center;padding:2rem 1.25rem }
.arenewalpackage-empty-title { font-weight:600 }
.arenewalpackage-empty-action { margin-top:1.25rem }
.arenewalpackage-row-main { flex:1;min-width:0 }
.arenewalpackage-row-head { display:flex;align-items:center;gap:0.5rem }
.arenewalpackage-row-name { font-weight:600;font-size:0.9rem }
.arenewalpackage-badge { display:inline-flex;align-items:center;gap:0.2rem;flex-shrink:0;font-size:0.6rem;text-transform:uppercase;letter-spacing:0.06em;font-weight:700 }
.arenewalpackage-row-meta { font-size:0.7rem;margin-top:0.15rem }
.arenewalpackage-price { flex-shrink:0;font-family:var(--font-display);font-size:1.15rem;font-weight:600 }

/* --- inline->classi: app/renewal.php --- */
/* /app/renewal.php - renewal case-selector hub */
.arenewal-page { display:flex;flex-direction:column;gap:1.25rem; }
.arenewal-header { display:flex;align-items:flex-start;gap:0.85rem; }
.arenewal-icon-badge { width:2.75rem;height:2.75rem;border-radius:1rem;background:hsl(var(--lime) / 0.10);display:grid;place-items:center;flex-shrink:0; }
.arenewal-header-text { min-width:0; }
.arenewal-title { font-size:1.5rem;line-height:1.15;font-weight:600; }
.arenewal-subtitle { font-size:0.85rem;margin-top:0.25rem; }
.arenewal-empty { text-align:center;padding:2rem 1.25rem; }
.arenewal-empty-title { font-weight:600; }
.arenewal-empty-text { font-size:0.85rem;margin-top:0.35rem; }
.arenewal-empty-cta { margin-top:1.25rem; }
.arenewal-section-flush { margin-top:0; }
.arenewal-row-fill { flex:1;min-width:0; }
.arenewal-row-title { font-weight:600;font-size:0.9rem; }
.arenewal-row-status { font-size:0.68rem;letter-spacing:0.05em;text-transform:uppercase;margin-top:0.15rem; }
.arenewal-row-cta { display:inline-flex;align-items:center;gap:0.25rem;flex-shrink:0;font-weight:600;font-size:0.78rem; }

/* --- inline->classi: app/reupload-required.php --- */
.areuploadrequired-page { display:flex; flex-direction:column; gap:1.25rem; }
.areuploadrequired-header { display:flex; align-items:flex-start; gap:0.75rem; }
.areuploadrequired-alert-icon { height:2.75rem; width:2.75rem; border-radius:0.85rem; background:hsl(var(--destructive) / 0.1); display:grid; place-items:center; flex-shrink:0; }
.areuploadrequired-title { font-family:var(--font-display); font-size:1.5rem; font-weight:600; line-height:1.2; }
.areuploadrequired-subtitle { font-size:0.85rem; margin-top:0.25rem; }
.areuploadrequired-empty-card { padding:2rem; text-align:center; }
.areuploadrequired-empty-icon { display:flex; justify-content:center; margin-bottom:0.5rem; }
.areuploadrequired-empty-title { font-weight:600; }
.areuploadrequired-empty-note { font-size:0.85rem; margin-top:0.4rem; }
.areuploadrequired-doc-card { display:flex; flex-direction:column; gap:0.75rem; }
.areuploadrequired-doc-head { display:flex; align-items:flex-start; justify-content:space-between; gap:0.75rem; }
.areuploadrequired-doc-info { min-width:0; }
.areuploadrequired-doc-name { font-weight:600; font-size:0.85rem; text-transform:capitalize; }
.areuploadrequired-doc-file { font-size:0.68rem; margin-top:0.15rem; }
.areuploadrequired-doc-badge { flex-shrink:0; }
.areuploadrequired-doc-actions { display:flex; flex-wrap:wrap; gap:0.5rem; align-items:center; }
.areuploadrequired-upload-btn { cursor:pointer; }
.areuploadrequired-file-input { display:none; }
.areuploadrequired-case-link { font-size:0.75rem; }

/* --- inline->classi: app/rewards.php --- */
.arewards-page { display: flex; flex-direction: column; gap: 1.25rem; }
.arewards-title { font-size: 1.4rem; margin-top: .15rem; }
.arewards-link-eyebrow { display: flex; align-items: center; gap: .4rem; margin-bottom: .75rem; }
.arewards-link-box { display: flex; align-items: center; gap: .5rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: .75rem; padding: .5rem .6rem; }
.arewards-link-input { flex: 1; min-width: 0; background: transparent; border: 0; font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: .72rem; color: inherit; padding: 0; }
.arewards-copy-btn { flex-shrink: 0; padding: .45rem .7rem; font-size: .75rem; }
.arewards-code-row { margin-top: .85rem; display: flex; align-items: flex-end; justify-content: space-between; gap: .75rem; }
.arewards-min0 { min-width: 0; }
.arewards-code { font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 1.05rem; font-weight: 600; letter-spacing: .15em; }
.arewards-noshrink { flex-shrink: 0; }
.arewards-stat-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: .5rem; }
.arewards-stat-card { padding: .75rem .85rem; }
.arewards-stat-val { font-weight: 600; font-size: .9rem; margin-top: .3rem; line-height: 1.2; }
.arewards-bonus-row { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.arewards-bonus-count { font-weight: 600; font-size: .9rem; margin-top: .35rem; }
.arewards-bonus-sub { font-size: .75rem; margin-top: .15rem; }
.arewards-bonus-icon { height: 3rem; width: 3rem; border-radius: 1rem; background: hsl(var(--lime)/0.15); display: grid; place-items: center; flex-shrink: 0; }
.arewards-progress-mt { margin-top: .85rem; }
.arewards-how-eyebrow { margin-bottom: .6rem; }
.arewards-rw-label { font-size: .85rem; flex: 1; min-width: 0; }
.arewards-rw-amount { font-size: .78rem; font-weight: 600; text-align: right; flex-shrink: 0; }
.arewards-friends-eyebrow { display: flex; align-items: center; gap: .4rem; }
.arewards-total { font-size: .72rem; }
.arewards-section-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .6rem; }
.arewards-empty { font-size: .85rem; margin: 0; }
.arewards-item-title { font-weight: 500; font-size: .85rem; }
.arewards-item-sub { font-size: .7rem; margin-top: .1rem; }
.arewards-history-eyebrow { display: flex; align-items: center; gap: .4rem; margin-bottom: .6rem; }
.arewards-credit-amount { font-weight: 600; font-size: .85rem; flex-shrink: 0; }
.arewards-disclaimer { font-size: .7rem; text-align: center; line-height: 1.6; margin: 0; }

/* --- inline->classi: app/service.php --- */
/* app/service.php - classi estratte dagli inline style (namespace: aservice-) */

/* -- stato "servizio non trovato" -- */
.app-card.aservice-notfound-card { text-align: center; display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem; }
.aservice-icon-center { display: inline-flex; justify-content: center; }
.aservice-notfound-title { font-weight: 600; }
.aservice-notfound-sub { font-size: 0.85rem; margin-top: 0.25rem; }
.aservice-notice-actions { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; }

/* -- colonna pagina + header -- */
.aservice-page { display: flex; flex-direction: column; gap: 1.75rem; padding-bottom: 9rem; }
.aservice-title { font-size: 1.75rem; line-height: 1.2; font-weight: 600; }
.aservice-summary { margin-top: 0.5rem; }
.aservice-meta { margin-top: 0.75rem; display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; }
.aservice-desc { font-size: 0.9rem; line-height: 1.7; color: hsl(var(--foreground) / 0.85); }

/* -- sezioni (pacchetti / documenti) -- */
.aservice-section-title { font-family: var(--font-display); font-size: 1.15rem; font-weight: 600; margin-bottom: 0.85rem; }
.aservice-note-card { font-size: 0.85rem; }
/* .pill: definita in style.css (carica DOPO site.css) -> selettore composto per vincere la cascata */
.pill.aservice-link-plain { background: none; padding: 0; color: hsl(var(--lime)); }

/* -- card pacchetto -- */
.aservice-pkg-card { cursor: pointer; display: block; }
.aservice-pkg-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.aservice-pkg-main { min-width: 0; }
.aservice-pkg-name-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.aservice-pkg-name { font-family: var(--font-display); font-size: 1.1rem; font-weight: 600; }
/* .pill: composto per l'override di background/color/font-size (style.css carica dopo) */
.pill.aservice-badge { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.05em; background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); }
.aservice-pkg-days { font-size: 0.72rem; margin-top: 0.25rem; }
.aservice-pkg-price-col { text-align: right; flex-shrink: 0; }
.aservice-pkg-price { font-family: var(--font-display); font-size: 1.4rem; font-weight: 600; }
.aservice-pkg-idr { font-size: 0.62rem; }
.aservice-feat-list { list-style: none; padding: 0; margin: 0.85rem 0 0; display: flex; flex-direction: column; gap: 0.4rem; }
.aservice-feat-icon { flex-shrink: 0; margin-top: 0.05rem; }

/* -- requisiti documenti -- */
.aservice-req-label { font-weight: 500; font-size: 0.9rem; }
.aservice-req-desc { font-size: 0.78rem; margin-top: 0.2rem; }

/* -- barra CTA fissa -- */
.aservice-cta-bar { position: fixed; left: 0; right: 0; bottom: calc(4.75rem + env(safe-area-inset-bottom)); z-index: 35; padding: 0 1.25rem; pointer-events: none; }
.aservice-cta-inner { max-width: 42rem; margin: 0 auto; pointer-events: auto; }
.aservice-cta-btn { min-height: 3rem; }

/* --- inline->classi: app/settings-language.php --- */
.asettingslanguage-lang-btn { width:100%; min-height:3.6rem; cursor:pointer; text-align:left; }
.asettingslanguage-lang-text { flex:1; display:flex; flex-direction:column; gap:0.2rem; }
.asettingslanguage-lang-name { font-weight:600; font-size:0.95rem; }
.asettingslanguage-lang-code { font-size:0.65rem; text-transform:uppercase; letter-spacing:0.15em; }
.asettingslanguage-check { display:inline-flex; }

/* --- inline->classi: app/settings-notifications.php --- */
.asettingsnotifications-master-title { margin: 0 0 0.75rem; }
.asettingsnotifications-master-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.5rem; }
.asettingsnotifications-master-option { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; cursor: pointer; background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: 0.6rem 0.7rem; }
.asettingsnotifications-note { font-size: 0.72rem; margin-top: 0.6rem; }
.asettingsnotifications-type-label { font-weight: 600; font-size: 0.9rem; }
.asettingsnotifications-type-help { font-size: 0.76rem; margin-top: 0.15rem; }
.asettingsnotifications-channel-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; margin-top: 0.75rem; }
.asettingsnotifications-channel-option { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8rem; cursor: pointer; background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: 0.55rem 0.65rem; }
.asettingsnotifications-channel-icon { display: inline-flex; }
.asettingsnotifications-submit { margin-top: 0.25rem; }

/* --- inline->classi: app/settings.php --- */
/* ============================================================
   app/settings.php - classi component-specific (inline -> classi)
   Namespace: asettings-*
   NB: color:hsl(var(--destructive)) -> classe esistente .tx-danger.
   ============================================================ */

/* Righe della lista impostazioni + bottone logout (stessa min-height app-row) */
.asettings-row { min-height:3.4rem; }

/* Span-contenitore icona (inline-flex): icona leading, chevron, icona logout */
.asettings-icon { display:inline-flex; }

/* Etichetta della riga (occupa lo spazio, semibold) */
.asettings-label { flex:1;font-weight:600;font-size:0.9rem; }
/* Variante etichetta allineata a sinistra (bottone logout) */
.asettings-label-left { text-align:left; }

/* Form del bottone di logout */
.asettings-signout-form { margin-top:1rem; }
/* Bottone di logout (full width, cursore; min-height via .asettings-row, colore via .tx-danger) */
.asettings-signout { width:100%;cursor:pointer; }

/* --- inline->classi: app/support.php --- */
.asupport-page { display:flex;flex-direction:column;gap:1.25rem; }
.asupport-title { font-family:var(--font-display);font-size:1.5rem;font-weight:600; }
.asupport-lead { font-size:0.85rem;margin-top:0.25rem; }
.asupport-channels { display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:0.75rem; }
.card-premium.asupport-channel { display:flex;align-items:center;gap:0.75rem;padding:1rem;min-height:4.5rem; }
.asupport-channel-icon { height:2.5rem;width:2.5rem;border-radius:0.75rem;background:hsl(var(--lime) / 0.1);display:grid;place-items:center;flex-shrink:0; }
.asupport-channel-text { min-width:0; }
.asupport-channel-label { display:block;font-weight:600;font-size:0.85rem; }
.asupport-channel-desc { display:block;font-size:0.68rem; }
.card-premium.asupport-faq-card { padding:1.25rem; }
.asupport-faq-head { display:flex;align-items:center;gap:0.5rem;margin-bottom:0.5rem; }
.asupport-faq-icon { display:inline-flex; }
.asupport-faq-label { font-weight:600; }
.asupport-faq-text { font-size:0.85rem; }

/* --- inline->classi: app/tracker-new.php --- */
/* ============================================================
   app/tracker-new.php - classi component-specific (migrazione inline -> classi)
   Namespace: atrackernew-*
   Schermata di successo dopo la creazione del visto (4 CTA).
   Colori testo/troncamento riusano il vocabolario condiviso
   (tx-lime-h, muted, truncate) - qui solo layout/spaziatura.
   ============================================================ */
.atrackernew-success { display: flex; flex-direction: column; gap: 1.25rem; }
.atrackernew-confirm-card { border: 1px solid hsl(var(--lime) / 0.3); background: hsl(var(--lime) / 0.05); border-radius: var(--radius); padding: 1.5rem; text-align: center; }
.atrackernew-confirm-icon { height: 3.25rem; width: 3.25rem; margin: 0 auto; border-radius: 1rem; background: hsl(var(--lime) / 0.15); display: grid; place-items: center; }
.atrackernew-confirm-title { font-size: 1.35rem; font-weight: 600; margin-top: 1rem; }
.atrackernew-confirm-lead { font-size: 0.85rem; margin-top: 0.5rem; line-height: 1.5; max-width: 24rem; margin-left: auto; margin-right: auto; }
.atrackernew-actions { display: grid; grid-template-columns: 1fr; gap: 0.6rem; }
.atrackernew-cta-primary { width: 100%; display: flex; align-items: center; gap: 0.75rem; text-align: left; border: 1px solid hsl(var(--lime) / 0.4); background: hsl(var(--lime) / 0.1); border-radius: var(--radius); padding: 0.9rem 1rem; cursor: pointer; min-height: 3rem; }
.atrackernew-cta { width: 100%; display: flex; align-items: center; gap: 0.75rem; text-align: left; border: 1px solid hsl(var(--border)); background: hsl(var(--card)); border-radius: var(--radius); padding: 0.9rem 1rem; cursor: pointer; min-height: 3rem; }
.atrackernew-cta-link { display: flex; align-items: center; gap: 0.75rem; border: 1px solid hsl(var(--border)); background: hsl(var(--card)); border-radius: var(--radius); padding: 0.9rem 1rem; min-height: 3rem; }
.atrackernew-cta-link-dashed { display: flex; align-items: center; gap: 0.75rem; border: 1px dashed hsl(var(--border)); background: hsl(var(--card)); border-radius: var(--radius); padding: 0.9rem 1rem; min-height: 3rem; }
.atrackernew-cta-icon { flex-shrink: 0; }
.atrackernew-cta-icon-fg { color: hsl(var(--foreground) / 0.7); }
.atrackernew-cta-label { font-weight: 600; font-size: 0.88rem; }
.atrackernew-cta-textcol { min-width: 0; }
.atrackernew-cta-line-title { display: block; font-weight: 600; font-size: 0.88rem; }
.atrackernew-cta-line-sub { display: block; font-size: 0.68rem; margin-top: 0.1rem; }
.atrackernew-cta-hint { font-weight: 400; }
.atrackernew-skip { display: block; text-align: center; font-size: 0.82rem; margin-top: 0.25rem; }

/* --- inline->classi: app/tracker-view.php --- */
/* --- migrazione inline->classi: app/tracker-view.php --- */
/* ============================================================
   app/tracker-view.php - classi component-specific (migrazione inline -> classi)
   Namespace: atrackerview-*
   NB: .app-card e' definita in style.css (che carica DOPO site.css), quindi gli
   override di proprieta' di .app-card (padding/background/border) usano selettore
   composto (.app-card.atrackerview-*) per vincere la cascata a parita' di sorgente.
   ============================================================ */

/* Contenitore pagina */
.atrackerview-col { display:flex;flex-direction:column;gap:1.25rem; }

/* Hero stato */
.app-card.atrackerview-hero { padding:1.25rem; }
.atrackerview-hero-head { display:flex;align-items:flex-start;justify-content:space-between;gap:1rem; }
.atrackerview-minw0 { min-width:0; }
.atrackerview-badge { display:inline-flex;align-items:center;border-radius:999px;padding:0.15rem 0.6rem;font-size:0.6rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em; }
.atrackerview-title { font-size:1.35rem;font-weight:600;margin-top:0.6rem;overflow-wrap:anywhere; }
.atrackerview-subtitle { font-size:0.72rem;margin-top:0.25rem; }
.atrackerview-days-col { text-align:right;flex-shrink:0; }
.atrackerview-days-label { font-size:0.6rem;text-transform:uppercase;letter-spacing:0.05em; }
.atrackerview-days-num { font-size:1.9rem;font-weight:600;line-height:1;margin-top:0.35rem; }
.atrackerview-days-date { font-size:0.68rem;margin-top:0.35rem; }

/* Barra di avanzamento */
.atrackerview-progress { margin-top:1.25rem; }
.atrackerview-progress-track { height:0.5rem;border-radius:999px;background:hsl(var(--card-elevated));overflow:hidden; }
.atrackerview-progress-bar { height:100%;border-radius:999px; }
.atrackerview-progress-help { font-size:0.72rem;margin-top:0.5rem; }

/* Prossimo passo */
.app-card.atrackerview-nextstep { background:hsl(var(--card-elevated));display:flex;align-items:flex-start;gap:0.75rem; }
.atrackerview-nextstep-icon { flex-shrink:0;margin-top:0.1rem; }
.atrackerview-nextstep-body { font-size:0.85rem;margin-top:0.25rem;line-height:1.5; }

/* Etichetta overline riusata (next step / fatti / label form) */
.atrackerview-overline { font-size:0.6rem;text-transform:uppercase;letter-spacing:0.05em;font-weight:600; }

/* Fatti rapidi */
.atrackerview-facts-grid { display:grid;grid-template-columns:1fr 1fr;gap:0.6rem; }
.app-card.atrackerview-fact { padding:0.85rem; }
.atrackerview-fact-head { display:flex;align-items:center;gap:0.4rem; }
.atrackerview-fact-val { font-size:0.85rem;font-weight:500;margin-top:0.4rem; }

/* Azioni */
.atrackerview-actions-grid { display:grid;grid-template-columns:1fr;gap:0.6rem; }
.app-card.atrackerview-action { display:flex;align-items:center;gap:0.65rem;padding:0.9rem 1rem; }
.atrackerview-action-btn { width:100%;text-align:left;cursor:pointer; }
.app-card.atrackerview-action-dashed { border-style:dashed; }
.app-card.atrackerview-action-plus { border-color:hsl(var(--lime) / 0.3);background:hsl(var(--lime) / 0.05); }
.atrackerview-action-title { font-size:0.85rem;font-weight:600; }
.atrackerview-action-sub { font-size:0.68rem; }
.atrackerview-icon-primary { color:hsl(var(--primary)); }

/* Form "gia' rinnovato" */
.app-card.atrackerview-form { padding:1rem; }
.atrackerview-form-row { display:flex;gap:0.5rem;margin-top:0.5rem; }
.atrackerview-input-grow { flex:1; }
.atrackerview-form-hint { font-size:0.68rem;margin-top:0.5rem; }

/* --- inline->classi: app/tracker.php --- */
/* ============================================================
   /app/tracker.php - classi semantiche estratte dagli stili inline.
   Zero cambiamento visivo: stessi valori CSS degli inline sostituiti.
   NB: .btn* e .app-card sono definite in style.css (che carica DOPO
   site.css). Dove un inline sovrascriveva una proprieta' gia' settata
   da quelle classi, uso un selettore COMPOSTO (.btn.atracker-* /
   .app-card.atracker-*) per vincere la cascata a prescindere
   dall'ordine di caricamento, come i precedenti .btn-ghost.fam-del-btn
   e .app-card.case-*.
   ============================================================ */

/* --- layout pagina --- */
.atracker-page { display: flex; flex-direction: column; gap: 1.5rem; }
.atracker-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.atracker-textcol { min-width: 0; }
.atracker-noshrink { flex-shrink: 0; }

/* --- intestazione --- */
.atracker-eyebrow { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 600; }
.atracker-title { font-size: 1.4rem; font-weight: 600; margin-top: 0.35rem; }
.atracker-lead { font-size: 0.82rem; margin-top: 0.35rem; line-height: 1.5; }

/* --- riepilogo (3 stat card) --- */
.atracker-summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.6rem; }
.app-card.atracker-stat-danger { padding: 0.85rem; background: hsl(var(--destructive) / 0.08); border-color: hsl(var(--destructive) / 0.2); }
.app-card.atracker-stat-warn { padding: 0.85rem; background: hsl(var(--warning) / 0.08); border-color: hsl(var(--warning) / 0.2); }
.app-card.atracker-stat-ok { padding: 0.85rem; background: hsl(var(--lime) / 0.08); border-color: hsl(var(--lime) / 0.2); }
.atracker-stat-num { font-size: 1.25rem; font-weight: 600; margin-top: 0.5rem; line-height: 1; }
.atracker-stat-label { font-size: 0.68rem; margin-top: 0.3rem; }

/* --- empty state --- */
.atracker-empty-title { font-weight: 600; font-size: 0.95rem; }
.atracker-empty-text { font-size: 0.82rem; margin: 0.5rem auto 0; max-width: 20rem; line-height: 1.5; }
.atracker-empty-cta { margin-top: 1.25rem; }

/* --- lista visti --- */
.atracker-list { display: flex; flex-direction: column; gap: 0.75rem; }
.app-card.atracker-visa-card { padding: 1rem; }
.atracker-visa-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.atracker-tag-row { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }
.atracker-tag { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.05em; }
.atracker-visa-name { display: block; font-weight: 600; font-size: 0.92rem; margin-top: 0.4rem; }
.atracker-visa-meta { font-size: 0.7rem; margin-top: 0.15rem; }
.atracker-visa-expiry { text-align: right; flex-shrink: 0; }
.atracker-expiry-label { font-size: 0.65rem; }
.atracker-expiry-date { font-weight: 600; font-size: 0.82rem; }
.atracker-expiry-days { font-size: 0.65rem; margin-top: 0.15rem; }

/* --- barra azioni card --- */
.atracker-actions { display: flex; align-items: center; gap: 0.5rem; margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid hsl(var(--border) / 0.6); }
.atracker-inline-form { display: inline; }
.btn.atracker-reminder-btn { font-size: 0.7rem; gap: 0.35rem; }
.btn.atracker-open-btn { border: 1px solid hsl(var(--border)); font-size: 0.7rem; gap: 0.35rem; }
.atracker-actions-right { margin-left: auto; display: flex; align-items: center; gap: 0.25rem; }
.btn-ghost.atracker-icon-btn { padding: 0.4rem; }
.btn-ghost.atracker-icon-btn-del { color: hsl(var(--foreground-muted)); }

/* --- pill rischio (inline in stringa PHP; tail dinamico $style resta inline) --- */
.atracker-risk-pill { display: inline-flex; align-items: center; border-radius: 999px; padding: 0.15rem 0.55rem; font-size: 0.6rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; border: 1px solid; }

/* --- inline->classi: admin/analytics.php --- */
.adanalytics-kpi-delta { margin-top: 0.25rem; display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.72rem; }
.adanalytics-page { display: flex; flex-direction: column; gap: 2rem; }
.adanalytics-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.adanalytics-subtitle { font-size: 0.9rem; }
.adanalytics-period-nav { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }
.adanalytics-section-title { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.2em; margin-bottom: 0.85rem; }
.adanalytics-footnote { font-size: 0.72rem; margin-top: 0.5rem; }
.adanalytics-settings-form { padding: 1.25rem; display: flex; flex-direction: column; gap: 1rem; }
.adanalytics-form-hint { font-size: 0.75rem; margin: 0; }
.adanalytics-field-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; }
.adanalytics-field-label { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; }
.adanalytics-input-full { width: 100%; }

/* --- inline->classi: admin/audit-log.php --- */
.adauditlog-page { display: flex; flex-direction: column; gap: 1.25rem; }
.adauditlog-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 0.75rem; }
.adauditlog-subtitle { font-size: 0.9rem; }
.adauditlog-header-actions { display: flex; align-items: center; gap: 0.5rem; }
.adauditlog-filters { padding: 0.85rem; display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.6rem; }
.adauditlog-filter-full { grid-column: span 2; }
.adauditlog-filter-actor { font-size: 0.78rem; }
.adauditlog-filter-actions { display: flex; gap: 0.5rem; }
.adauditlog-table { min-width: 960px; }
.adauditlog-entity { font-size: 0.75rem; }
.adauditlog-action { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em; }
.adauditlog-id { font-size: 0.72rem; }
.adauditlog-case-link { font-weight: 600; }
.adauditlog-actor { font-size: 0.78rem; }
.adauditlog-role { font-size: 0.75rem; }

/* --- inline->classi: admin/case.php --- */
/* ============================================================
   admin/case.php - classi component-specific (migrazione inline -> classi)
   Namespace: adcase-*
   Colori delegati al vocabolario condiviso (muted, mono, tx-fg, tx-lime,
   tx-warn, tx-danger, tx-success). Nessun conflitto con il blocco <style>
   in-pagina (cd-*): gli inline convertiti non toccano proprieta' che i
   cd-* impostano. Appeso dopo le definizioni base di site.css, quindi le
   classi qui sotto vincono la cascata a parita' di specificita' su
   .card-premium / .status-badge / .admin-h1 / .btn (che caricano prima).
   ============================================================ */

/* layout pagina + header */
.adcase-page { display:flex; flex-direction:column; gap:1.5rem; }
.adcase-back-link { display:inline-flex; align-items:center; gap:0.4rem; font-size:0.85rem; width:max-content; }
.adcase-header-top { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.adcase-shrink { min-width:0; }
.adcase-eyebrow { font-size:0.72rem; text-transform:uppercase; letter-spacing:0.06em; }
.adcase-h1-flush { margin:0.35rem 0 0; }
.adcase-client-lines { font-size:0.85rem; margin-top:0.6rem; line-height:1.7; }
.adcase-header-side { display:flex; flex-direction:column; align-items:flex-end; gap:0.5rem; }
.adcase-badge-urgency { text-transform:uppercase; font-size:0.62rem; letter-spacing:0.05em; }

/* griglia gestione (status/urgency/assegnazioni) */
.adcase-inline-row { display:flex; gap:0.5rem; }
.adcase-select-grow { flex:1; }

/* sezione blockers */
.adcase-section-warn { border-color:hsl(var(--warning) / 0.4); }
.adcase-blocker-list { list-style:none; margin:0.85rem 0 0; padding:0; display:flex; flex-direction:column; gap:0.4rem; font-size:0.88rem; }
.adcase-blocker-item { display:flex; align-items:center; gap:0.5rem; }

/* attribution */
.adcase-attr-grid { margin:0.85rem 0 0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0.5rem 1rem; font-size:0.85rem; }
.adcase-attr-key { font-size:0.65rem; text-transform:uppercase; letter-spacing:0.05em; }
.adcase-break { word-break:break-all; }

/* pagamenti */
.adcase-pay-row { display:flex; flex-wrap:wrap; gap:1.5rem; margin-top:0.85rem; font-size:0.9rem; }
.adcase-cap { font-size:0.72rem; }
.adcase-strong { font-weight:600; }
.adcase-pay-list { margin-top:0.85rem; border-top:1px solid hsl(var(--border)); }
.adcase-pay-item { display:flex; align-items:center; justify-content:space-between; gap:0.75rem; padding:0.5rem 0; border-bottom:1px solid hsl(var(--border)); font-size:0.78rem; }
.adcase-empty-note { font-size:0.78rem; margin-top:0.85rem; }

/* checklist documenti */
.adcase-h2-gap { margin-bottom:0.85rem; }
.adcase-doc-list { display:flex; flex-direction:column; gap:0.75rem; }
.adcase-sm { font-size:0.85rem; }
.adcase-doc-card { padding:1rem; display:flex; flex-direction:column; gap:0.75rem; }
.adcase-doc-head { display:flex; align-items:flex-start; justify-content:space-between; gap:0.75rem; }
.adcase-doc-title { font-weight:500; font-size:0.88rem; text-transform:capitalize; }
.adcase-doc-file { font-size:0.75rem; text-transform:none; }
.adcase-doc-note { font-size:0.72rem; margin-top:0.3rem; }
.adcase-doc-actions { display:flex; flex-wrap:wrap; align-items:center; gap:0.5rem; }
.adcase-download { font-size:0.75rem; }
.adcase-doc-review { display:flex; flex-wrap:wrap; align-items:center; gap:0.5rem; margin-left:auto; }
.adcase-review-input { height:2rem; font-size:0.78rem; min-width:12rem; }
.adcase-btn-approve { background:hsl(var(--success) / 0.15); border-color:hsl(var(--success) / 0.3); }
.adcase-btn-reject { background:hsl(var(--destructive) / 0.15); border-color:hsl(var(--destructive) / 0.3); }
.adcase-btn-fix { background:hsl(var(--warning) / 0.15); border-color:hsl(var(--warning) / 0.3); }

/* courier & custody */
.adcase-courier-empty { font-size:0.85rem; margin-top:0.85rem; }
.adcase-courier-body { margin-top:0.85rem; font-size:0.88rem; }
.adcase-courier-facts { display:flex; flex-wrap:wrap; gap:0.35rem 1.5rem; }
.adcase-custody { margin-top:0.75rem; border-top:1px solid hsl(var(--border)); padding-top:0.6rem; }
.adcase-custody-h { font-size:0.68rem; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:0.4rem; }
.adcase-custody-row { display:flex; align-items:center; justify-content:space-between; gap:0.75rem; padding:0.25rem 0; font-size:0.78rem; }

/* note */
.adcase-note-form { margin-top:0.85rem; }
.adcase-textarea { width:100%; resize:vertical; }
.adcase-note-actions { display:flex; align-items:center; justify-content:space-between; gap:0.75rem; margin-top:0.5rem; }
.adcase-check-label { font-size:0.8rem; display:inline-flex; align-items:center; gap:0.4rem; }
.adcase-notes-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(14rem,1fr)); gap:1rem; margin-top:1rem; }
.adcase-notes-h { font-size:0.68rem; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:0.5rem; }
.adcase-notes-h-int { font-size:0.68rem; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:0.5rem; display:inline-flex; align-items:center; gap:0.3rem; }
.adcase-note-col { display:flex; flex-direction:column; gap:0.4rem; }
.adcase-note-empty { font-size:0.78rem; }
.adcase-note-card { border:1px solid hsl(var(--border)); border-radius:0.5rem; padding:0.5rem 0.65rem; font-size:0.8rem; }
.adcase-note-card-int { border:1px solid hsl(var(--warning) / 0.3); background:hsl(var(--warning) / 0.08); border-radius:0.5rem; padding:0.5rem 0.65rem; font-size:0.8rem; }
.adcase-prewrap { white-space:pre-wrap; }
.adcase-note-date { font-size:0.68rem; margin-top:0.25rem; }

/* timeline / attivita' */
.adcase-timeline { list-style:none; margin:0.85rem 0 0; padding:0 0 0 1rem; border-left:1px solid hsl(var(--border)); display:flex; flex-direction:column; gap:0.85rem; }
.adcase-timeline-item { position:relative; }
.adcase-ev-title { font-size:0.88rem; }
.adcase-medium { font-weight:500; }
.adcase-badge-internal { margin-left:0.4rem; font-size:0.6rem; text-transform:uppercase; letter-spacing:0.05em; }
.adcase-ev-note { font-size:0.78rem; margin-top:0.15rem; white-space:pre-wrap; }
.adcase-ev-date { font-size:0.68rem; margin-top:0.15rem; }

/* e-visa upload */
.adcase-visa-hint { font-size:0.78rem; margin-top:0.35rem; }
.adcase-visa-form { margin-top:0.85rem; display:flex; flex-direction:column; gap:0.75rem; }
.adcase-visa-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(11rem,1fr)); gap:0.75rem; }

/* --- inline->classi: admin/cases.php --- */
/* ============================================================
   admin/cases.php - classi component-specific (migrazione inline -> classi)
   Prefix: adcases-. Riusa il vocabolario condiviso (.muted .mono .tx-fg
   .tx-lime-h .nowrap) - non ridefinirlo qui.
   Selettori composti (.base.adcases-*) dove serve battere una base-class
   ridefinita in style.css (caricato DOPO site.css): .input-base, .card-premium,
   .status-badge, .kpi-label.
   ============================================================ */

/* --- wrapper pagina (colonna flex) --- */
.adcases-page { display: flex; flex-direction: column; gap: 1.25rem; }

/* --- badge documenti (span inline in stringa PHP) --- */
.adcases-doc-badge { font-size: 0.72rem; }

/* --- header: sottotitolo/lead --- */
.adcases-lead { font-size: 0.9rem; }

/* --- KPI cards --- */
.adcases-kpi-head { display: flex; align-items: center; gap: 0.5rem; }
.kpi-label.adcases-kpi-label-flush { margin: 0; }
.adcases-kpi-value { margin-top: 0.5rem; }

/* --- barra filtri --- */
.card-premium.adcases-filter-form { padding: 0.85rem; display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem; }
.adcases-search-wrap { position: relative; flex: 1; min-width: 220px; }
.adcases-search-icon { position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%); pointer-events: none; }
.input-base.adcases-search-input { width: 100%; padding-left: 2.25rem; }
.input-base.adcases-filter-select { width: auto; }

/* --- tabella casi --- */
.adcases-table { min-width: 1050px; }
.adcases-ref-link { font-size: 0.72rem; font-weight: 600; }
.status-badge.adcases-urgency-badge { margin-top: 0.25rem; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.05em; }
.adcases-price { font-size: 0.72rem; }
.adcases-cell-sm { font-size: 0.75rem; }
.adcases-cell-right { text-align: right; }
.adcases-open-link { font-size: 0.75rem; font-weight: 600; }

/* --- inline->classi: admin/courier-detail.php --- */
.adcourierdetail-info-label { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.06em; }
.adcourierdetail-info-value { font-size: 0.85rem; margin-top: 0.15rem; }
.adcourierdetail-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.25rem; }
.adcourierdetail-header-text { min-width: 0; }
.adcourierdetail-id { font-size: 0.72rem; }
.adcourierdetail-title { margin: 0; display: flex; align-items: center; gap: 0.5rem; }
.adcourierdetail-icon { display: inline-flex; }
.adcourierdetail-info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.85rem; }
.adcourierdetail-passport-flag { margin-top: 0.85rem; display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 600; background: hsl(var(--warning) / 0.12); border-radius: 0.5rem; padding: 0.35rem 0.6rem; }
.adcourierdetail-divider { border-top: 1px solid hsl(var(--border)); margin-top: 0.85rem; padding-top: 0.85rem; }
.adcourierdetail-addr-row { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.85rem; }
.adcourierdetail-addr-icon { display: inline-flex; margin-top: 0.1rem; }
.adcourierdetail-prewrap { white-space: pre-wrap; }
.adcourierdetail-maps-link { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; margin-top: 0.5rem; }
.adcourierdetail-client-link { display: flex; align-items: center; gap: 0.5rem; font-size: 0.88rem; margin-bottom: 0.5rem; }
.adcourierdetail-case-link { display: flex; align-items: center; gap: 0.5rem; font-size: 0.88rem; }
.adcourierdetail-custody-current { font-size: 0.78rem; margin-top: 0.5rem; }
.adcourierdetail-empty { font-size: 0.78rem; }
.adcourierdetail-tl-item { font-size: 0.85rem; }
.adcourierdetail-tl-note { font-size: 0.78rem; }
.adcourierdetail-tl-time { font-size: 0.7rem; margin-top: 0.15rem; }
.adcourierdetail-scroll { max-height: 16rem; overflow: auto; }
.adcourierdetail-audit-item { font-size: 0.8rem; }
.adcourierdetail-audit-body { font-size: 0.75rem; }
.adcourierdetail-badge-row { display: flex; align-items: center; gap: 0.5rem; }
.adcourierdetail-textarea-reason { width: 100%; resize: vertical; margin-bottom: 0.6rem; }
.adcourierdetail-status-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; max-height: 20rem; overflow: auto; }
.adcourierdetail-status-btn { justify-content: flex-start; text-align: left; }
.adcourierdetail-select { width: 100%; margin-bottom: 0.5rem; }
.adcourierdetail-textarea { width: 100%; resize: vertical; margin-bottom: 0.5rem; }
.adcourierdetail-readonly-badge { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; }
.adcourierdetail-readonly-note { font-size: 0.82rem; }

/* --- inline->classi: admin/courier.php --- */
.adcourier-page { display: flex; flex-direction: column; gap: 1.25rem; }
.adcourier-header { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.adcourier-subtitle { font-size: 0.9rem; }
.adcourier-header-meta { font-size: 0.75rem; text-align: right; }
.adcourier-banner { padding: 0.85rem; display: flex; align-items: flex-start; gap: 0.6rem; }
.adcourier-banner-icon { display: inline-flex; flex-shrink: 0; margin-top: 0.1rem; }
.adcourier-banner-text { font-size: 0.78rem; line-height: 1.5; }
.adcourier-table-wide { min-width: 1000px; }
.adcourier-cell-right { text-align: right; }
.adcourier-group-row { background: hsl(var(--card-elevated) / 0.5); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.66rem; font-weight: 600; }
.adcourier-ref-link { font-size: 0.72rem; font-weight: 600; }
.adcourier-passport-row { margin-top: 0.25rem; }
.adcourier-badge-sm { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.05em; }
.adcourier-client-name { font-size: 0.85rem; }
.adcourier-meta-sm { font-size: 0.72rem; }
.adcourier-addr-cell { max-width: 22rem; }
.adcourier-addr { font-size: 0.82rem; }
.adcourier-pkg-line { font-size: 0.7rem; margin-top: 0.15rem; }
.adcourier-date-cell { font-size: 0.78rem; }
.adcourier-slot { font-size: 0.7rem; }
.adcourier-inline-form { margin: 0; }
.adcourier-select-sm { width: auto; max-width: 11rem; padding: 0.3rem 0.4rem; font-size: 0.75rem; }
.adcourier-assign-name { font-size: 0.78rem; }
.adcourier-open-link { font-size: 0.75rem; font-weight: 600; }

/* --- inline->classi: admin/custody-detail.php --- */
.adcustodydetail-header { display:flex; align-items:center; gap:0.75rem; margin-bottom:1.25rem; }
.adcustodydetail-id { font-size:0.72rem; }
.adcustodydetail-title { margin:0; display:flex; align-items:center; gap:0.5rem; }
.adcustodydetail-icon-inline { display:inline-flex; }
.adcustodydetail-meta-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:0.85rem; font-size:0.85rem; }
.adcustodydetail-loc-row { border-top:1px solid hsl(var(--border)); margin-top:0.85rem; padding-top:0.85rem; font-size:0.85rem; display:flex; align-items:flex-start; gap:0.5rem; }
.adcustodydetail-loc-icon { display:inline-flex; margin-top:0.1rem; }
.adcustodydetail-ext-link { display:inline-flex; align-items:center; gap:0.35rem; font-size:0.8rem; margin-top:0.6rem; }
.adcustodydetail-note-row { border-top:1px solid hsl(var(--border)); margin-top:0.85rem; padding-top:0.85rem; font-size:0.85rem; white-space:pre-wrap; }
.adcustodydetail-related-link { display:flex; align-items:center; gap:0.5rem; font-size:0.85rem; }
.adcustodydetail-related-link-mt { margin-top:0.5rem; }
.adcustodydetail-empty { font-size:0.8rem; }
.adcustodydetail-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:0.5rem; }
.adcustodydetail-list-scroll { max-height:16rem; overflow:auto; }
.adcustodydetail-chain-item { font-size:0.85rem; border-radius:0.5rem; padding:0.5rem 0.75rem; }
.adcustodydetail-note { font-size:0.75rem; white-space:pre-wrap; }
.adcustodydetail-date { font-size:0.7rem; }
.adcustodydetail-empty-audit { font-size:0.78rem; }
.adcustodydetail-audit-item { font-size:0.8rem; }
.adcustodydetail-select { width:100%; height:2.5rem; margin-bottom:0.5rem; }
.adcustodydetail-textarea { width:100%; resize:vertical; margin-bottom:0.5rem; }
.adcustodydetail-readonly { font-size:0.82rem; }

/* --- inline->classi: admin/dashboard.php --- */
/* ============================================================
   admin/dashboard.php - classi component-specific (migrazione inline -> classi)
   Namespace: addashboard-*
   NB: .empty-state e .admin-table-wrap sono definite anche in style.css
   (che carica DOPO site.css) e impostano padding / border+background;
   quegli override usano selettore composto (.empty-state.addashboard-empty,
   .admin-table-wrap.addashboard-table-wrap) per vincere la cascata.
   Gli override di 'padding' su .card-premium (che style.css non imposta),
   di 'margin-top' su .kpi-value e le classi su .muted usano classi piane.
   Colore link delegato al vocabolario condiviso (tx-lime); white-space:nowrap
   -> classe esistente .nowrap.
   ============================================================ */

/* Contenitore pagina */
.addashboard-page { display:flex;flex-direction:column;gap:1.5rem; }

/* Header (titolo + refresh) */
.addashboard-header { display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:0.75rem; }
.addashboard-subtitle { font-size:0.85rem; }

/* Barra azioni rapide */
.addashboard-actions { display:flex;flex-wrap:wrap;gap:0.5rem; }

/* Widget KPI (anchor + icona + valore + hint) */
.addashboard-kpi-link { display:block;text-decoration:none;color:inherit; }
.addashboard-kpi-icon { display:inline-flex; }
.addashboard-kpi-value { margin-top:0.4rem; }
.addashboard-kpi-hint { font-size:0.62rem;margin-top:0.15rem; }

/* Griglia code operative */
.addashboard-queues { display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,28rem),1fr));gap:1rem; }

/* Card coda (card-premium: style.css non imposta padding) */
.addashboard-queue-card { padding:1rem; }
.addashboard-card-head { display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem; }
.addashboard-card-title { font-size:0.9rem;font-weight:600; }
.addashboard-card-action { font-size:0.72rem;display:inline-flex;align-items:center;gap:0.25rem;text-decoration:none; }

/* Empty-state coda (composto: style.css .empty-state imposta padding) */
.empty-state.addashboard-empty { padding:1.75rem 1rem;font-size:0.82rem; }

/* Wrap tabella senza bordo (composto: style.css .admin-table-wrap imposta border+background) */
.admin-table-wrap.addashboard-table-wrap { border:none;background:transparent; }

/* Celle tabella coda */
.addashboard-ref-cell { font-family:monospace;font-size:0.75rem; }
.addashboard-cell-right { text-align:right; }
.addashboard-open-link { text-decoration:none; }

/* --- inline->classi: admin/document.php --- */
/* ============================================================
   admin/document.php - dettaglio documento back office
   Classi semantiche estratte dagli inline style (zero cambi visivi).
   Vocab condiviso riusato: muted, mono, tx-lime, tx-fg, tx-warn.
   ============================================================ */

/* Scheda metadati: label/valore */
.addocument-info-label { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.06em; }
.addocument-info-value { font-size: 0.85rem; margin-top: 0.15rem; }

/* Header di pagina (back + titolo) */
.addocument-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.25rem; }
.addocument-header-titles { min-width: 0; }
.addocument-doc-id { font-size: 0.72rem; }

/* Icona inline (span attorno all'icona) */
.addocument-icon-inline { display: inline-flex; }

/* Griglia metadati */
.addocument-meta-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.85rem; }

/* Link entità collegate */
.addocument-related-link { display: flex; align-items: center; gap: 0.5rem; font-size: 0.88rem; }
.addocument-related-link-spaced { margin-bottom: 0.5rem; }

/* Note */
.addocument-note-line { font-size: 0.82rem; margin-bottom: 0.5rem; }
.addocument-note-internal { font-size: 0.82rem; border-radius: 0.4rem; padding: 0.35rem 0.5rem; background: hsl(var(--warning) / 0.12); }
.addocument-note-internal-label { font-weight: 600; display: inline-flex; align-items: center; gap: 0.25rem; }
.addocument-readonly-note { font-size: 0.82rem; }

/* Timeline audit */
.addocument-timeline { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.addocument-timeline-empty { font-size: 0.78rem; }
.addocument-timeline-item { font-size: 0.85rem; }
.addocument-timeline-note { font-size: 0.78rem; white-space: pre-wrap; }
.addocument-timeline-date { font-size: 0.7rem; margin-top: 0.15rem; }

/* Form (campi input-base) */
.addocument-reason-field { width: 100%; resize: vertical; margin-bottom: 0.6rem; }
.addocument-status-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.addocument-reviewer-select { width: 100%; margin-bottom: 0.5rem; }
.addocument-note-field { width: 100%; resize: vertical; margin-bottom: 0.5rem; }

/* Compound: vincono per specificità su .admin-h1 / .btn (definite in style.css, caricata dopo) */
.admin-h1.addocument-title { margin: 0; display: flex; align-items: center; gap: 0.5rem; }
.btn.addocument-open-btn { margin-top: 1rem; display: inline-flex; align-items: center; gap: 0.4rem; }
.btn.addocument-status-btn { text-transform: capitalize; }

/* --- inline->classi: admin/documents.php --- */
/* ============================================================
   admin/documents.php - classi component-specific (migrazione inline -> classi)
   Prefix: addocuments-. Riusa il vocabolario condiviso (.muted .tx-lime
   .tx-warn .tx-fg) - non ridefinirlo qui.
   Selettori composti (.base.addocuments-*) dove serve battere una base-class
   ridefinita in style.css (caricato DOPO site.css): .input-base, .card-premium.
   Le classi .doc-* del blocco <style> in-page NON impostano background/color,
   quindi le note usano classi piane (nessun conflitto di cascata).
   ============================================================ */

/* --- form azioni di review (margin reset) --- */
.addocuments-action-form { margin: 0; }

/* --- testo di aiuto sotto i campi note --- */
.addocuments-form-hint { font-size: 0.72rem; margin-bottom: 0.35rem; }

/* --- textarea note (input-base ridefinita in style.css -> compound) --- */
.input-base.addocuments-review-textarea { width: 100%; resize: vertical; }

/* --- bottone Save nei popover --- */
.addocuments-save-btn { margin-top: 0.4rem; }

/* --- select assegnazione reviewer (full width, compound su input-base) --- */
.input-base.addocuments-select-full { width: 100%; }

/* --- header: sottotitolo/lead --- */
.addocuments-lead { font-size: 0.85rem; max-width: 52rem; }

/* --- barra filtri secondari (card-premium ridefinita in style.css -> compound) --- */
.card-premium.addocuments-filter-form { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; padding: 0.75rem; margin-bottom: 1rem; }
.addocuments-filter-search { flex: 1; min-width: 14rem; height: 2.4rem; }
.input-base.addocuments-filter-select { height: 2.4rem; width: auto; }

/* --- banner privacy (colore testo via .muted) --- */
.addocuments-privacy-banner { display: inline-flex; align-items: flex-start; gap: 0.5rem; border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated) / 0.5); border-radius: 0.9rem; padding: 0.75rem 1rem; font-size: 0.75rem; margin-bottom: 1.25rem; }
.addocuments-banner-icon { display: inline-flex; flex-shrink: 0; margin-top: 0.1rem; }

/* --- lista documenti (colonna) --- */
.addocuments-list { display: flex; flex-direction: column; gap: 0.6rem; }

/* --- card documento (padding, compound su card-premium) --- */
.card-premium.addocuments-doc-card { padding: 1rem; }
.addocuments-doc-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; }
.addocuments-doc-main { min-width: 0; flex: 1; }
.addocuments-doc-title { font-weight: 600; font-size: 0.85rem; display: inline-flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.addocuments-req-key { text-transform: capitalize; }
.addocuments-doc-filename { font-weight: 400; }

/* --- note (background su .doc-note; colore via .tx-warn dove serve) --- */
.addocuments-note-ai { background: hsl(var(--primary) / 0.12); color: hsl(var(--primary)); }
.addocuments-note-client { background: hsl(var(--card-elevated)); }
.addocuments-note-internal { background: hsl(var(--warning) / 0.12); }
.addocuments-note-label { font-weight: 600; }
.addocuments-note-label-icon { font-weight: 600; display: inline-flex; align-items: center; gap: 0.25rem; }

/* --- footer meta card (reviewer / next action) --- */
.addocuments-doc-foot { font-size: 0.72rem; margin-top: 0.5rem; display: flex; flex-wrap: wrap; gap: 0.15rem 1rem; }

/* --- lato card: status badge + freccia --- */
.addocuments-doc-side { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; }
.addocuments-open-link { display: inline-flex; }

/* --- inline->classi: admin/lead.php --- */
/* ============================================================
   admin/lead.php - classi component-specific (migrazione inline -> classi)
   Namespace: adlead-*
   NB: gli override di 'padding' su .card-premium (che style.css non imposta)
   usano classi piane. Colore testo attenuato -> classe esistente .muted;
   colore distruttivo -> .tx-danger. Il badge banda punteggio e' MIXED:
   parte statica in .adlead-band-badge, background/color dinamici inline.
   ============================================================ */

/* Badge banda punteggio (parte statica; background/color via $st inline) */
.adlead-band-badge { display:inline-block;border-radius:6px;padding:.2rem .55rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em; }

/* Definition list field (dt/dd + variante full-width) */
.adlead-field-wide { grid-column:1 / -1; }
.adlead-field-dt { font-size:.62rem;text-transform:uppercase;letter-spacing:.06em; }
.adlead-field-dd { margin:.15rem 0 0;overflow-wrap:anywhere; }

/* Header pagina */
.adlead-back-link { display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;text-decoration:none; }
.adlead-header { display:flex;align-items:flex-start;gap:.75rem;flex-wrap:wrap;margin:1rem 0 1.25rem; }
.adlead-header-main { flex:1;min-width:0; }
.adlead-title { overflow-wrap:anywhere; }
.adlead-header-sub { font-size:.78rem;margin:0; }
.adlead-score-row { display:flex;align-items:center;gap:.4rem; }
.adlead-score-value { font-weight:600; }

/* Barra azioni */
.adlead-actions { display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem; }
.adlead-form-flush { margin:0; }

/* Layout a due colonne */
.adlead-layout { display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start; }
.adlead-col-main { flex:2 1 24rem;min-width:0;display:flex;flex-direction:column;gap:1rem; }
.adlead-col-side { flex:1 1 16rem;min-width:0;display:flex;flex-direction:column;gap:1rem; }

/* Card premium: solo padding / padding + colonna flessibile */
.adlead-card-pad { padding:1.25rem; }
.adlead-card-stack { padding:1.25rem;display:flex;flex-direction:column;gap:.85rem; }

/* Etichette di sezione (colore via .muted) */
.adlead-card-label { font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.9rem; }
.adlead-panel-label { font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em; }
.adlead-score-label { font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.6rem; }

/* Griglia campi (dl) */
.adlead-field-grid { display:grid;grid-template-columns:1fr 1fr;gap:.85rem 1rem;margin:0;font-size:.85rem; }

/* Note interne */
.adlead-notes-head { display:flex;align-items:center;justify-content:space-between; }
.adlead-note-count { font-size:.72rem; }
.adlead-note-form { display:flex;gap:.5rem;margin:0;align-items:flex-end; }
.adlead-note-input { flex:1;resize:vertical; }
.adlead-note-list { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem; }
.adlead-note-item { background:hsl(var(--card-elevated) / .6);border-radius:.6rem;padding:.75rem;font-size:.85rem; }
.adlead-note-body { white-space:pre-wrap;overflow-wrap:anywhere; }
.adlead-note-meta { font-size:.62rem;margin-top:.4rem; }
.adlead-note-empty { font-size:.78rem; }

/* Pipeline / follow-up */
.adlead-field-label { display:block;font-size:.72rem; }
.adlead-control { margin-top:.3rem;width:100%; }
.adlead-followup-form { margin:0;display:flex;flex-direction:column;gap:.5rem; }
.adlead-btn-center { justify-content:center; }

/* Score breakdown list */
.adlead-score-list { list-style:none;margin:0;padding:0;font-size:.75rem;display:flex;flex-direction:column;gap:.4rem; }

/* --- inline->classi: admin/leads.php --- */
/* /admin/leads.php - extracted inline styles (namespace: adleads-) */

.adleads-band-badge { display:inline-block; border-radius:6px; padding:.1rem .4rem; font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }

.adleads-page-head { display:flex; align-items:flex-end; justify-content:space-between; flex-wrap:wrap; gap:.75rem; margin-bottom:1.25rem; }
.adleads-subtitle { font-size:.85rem; margin:0; }

.adleads-kpi-grid { grid-template-columns:repeat(auto-fill,minmax(9rem,1fr)); margin-bottom:1.25rem; }
.adleads-kpi-link { display:block; text-decoration:none; color:inherit; }
.adleads-icon-inline { display:inline-flex; }
.adleads-kpi-value { font-size:1.35rem; margin-top:.4rem; }

.adleads-filter-form { padding:1rem; margin-bottom:1.25rem; display:flex; flex-direction:column; gap:.75rem; }
.adleads-search-row { display:flex; align-items:center; gap:.5rem; }
.adleads-search-input { flex:1; background:transparent; border:0; outline:0; font-size:.9rem; color:inherit; }
.adleads-filter-row { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; font-size:.8rem; }
.adleads-filter-select { width:auto; padding:.4rem .5rem; font-size:.8rem; }
.adleads-followup-note { color:hsl(38 92% 62%); }
.adleads-clear-link { display:inline-flex; align-items:center; gap:.25rem; text-decoration:none; }

.adleads-empty-title { font-weight:600; }

.adleads-actions-col { text-align:right; }
.adleads-td-lead { min-width:12rem; }
.adleads-lead-name { font-weight:600; color:inherit; }
.adleads-lead-sub { font-size:.7rem; max-width:14rem; }
.adleads-td-service { max-width:11rem; }
.adleads-price { font-size:.7rem; }
.adleads-status-pill { display:inline-block; border-radius:6px; padding:.15rem .5rem; font-size:.72rem; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); }
.adleads-form-flush { margin:0; }
.adleads-assign-select { width:auto; max-width:9rem; padding:.3rem .4rem; font-size:.75rem; }
.adleads-td-next { min-width:7rem; }
.adleads-next-note { font-size:.7rem; max-width:9rem; }

.adleads-actions { display:inline-flex; gap:.15rem; align-items:center; justify-content:flex-end; }
.adleads-action { display:inline-flex; padding:.3rem; border-radius:6px; }
.adleads-btn-reset { background:none; border:0; cursor:pointer; }
.adleads-telegram { color:hsl(var(--primary)); }
.adleads-call { color:hsl(38 92% 60%); }
.adleads-inline-form { display:inline; margin:0; }

/* --- inline->classi: admin/notifications.php --- */
/* /admin/notifications - classi semantiche estratte dagli inline (zero cambiamento visivo).
   Shared vocab riusato (NON ridefinito qui): muted, tx-danger, tx-lime, tx-lime-h, mono, truncate, nowrap. */

/* Wrapper pagina + header */
.adnotifications-page { display: flex; flex-direction: column; gap: 1.25rem; }
.adnotifications-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 0.75rem; }
.adnotifications-lead { font-size: 0.9rem; }
.adnotifications-pill-group { display: flex; gap: 0.5rem; }
.adnotifications-pill-failed { border-color: hsl(var(--destructive) / 0.4); }

/* Barra filtri */
.adnotifications-filters { padding: 0.75rem; display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.adnotifications-filter-label { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.75rem; }
.adnotifications-select { width: auto; }
.adnotifications-search { flex: 1; min-width: 14rem; }

/* Tabella log */
.adnotifications-table { min-width: 960px; }
.adnotifications-row { vertical-align: top; }
.adnotifications-when-cell { font-size: 0.75rem; }
.adnotifications-unread { font-size: 0.62rem; margin-top: 0.15rem; }
.adnotifications-user-link { font-weight: 500; }
.adnotifications-type-cell { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; }
.adnotifications-title-cell { max-width: 22rem; }
.adnotifications-title { font-weight: 500; font-size: 0.8rem; }
.adnotifications-body { font-size: 0.72rem; }
.adnotifications-error { font-size: 0.62rem; margin-top: 0.2rem; max-width: 12rem; }
.adnotifications-case-cell { font-size: 0.72rem; }
.adnotifications-case-link { font-weight: 600; }

/* --- inline->classi: admin/overview.php --- */
/* ============================================================
   admin/overview.php - classi component-specific (migrazione inline -> classi)
   Namespace: adoverview-*
   NB: gemella di admin/dashboard.php (stessa struttura KPI).
   .card-premium non imposta 'padding' e .kpi-value l'override 'margin-top'
   usano classi piane (ad_overview.css carica DOPO site.css/style.css).
   color:hsl(var(--success)) -> vocabolario condiviso (tx-success);
   .muted resta invariata. Icona KPI: color dinamico (ov_tone) resta inline,
   solo display:inline-flex estratto in classe.
   ============================================================ */

/* Contenitore pagina */
.adoverview-page { display:flex;flex-direction:column;gap:1.5rem; }
.adoverview-subtitle { font-size:0.85rem; }

/* Card self-check ruoli protetti */
.adoverview-selfcheck-card { padding:1.25rem; }
.adoverview-selfcheck-head { display:flex;align-items:flex-start;justify-content:space-between;gap:0.75rem;flex-wrap:wrap; }
.adoverview-selfcheck-info { display:flex;align-items:flex-start;gap:0.75rem;min-width:0; }
.adoverview-selfcheck-icon { margin-top:0.1rem; }
.adoverview-selfcheck-text { min-width:0; }
.adoverview-selfcheck-title { font-size:0.9rem;font-weight:600; }
.adoverview-selfcheck-desc { font-size:0.78rem;margin-top:0.2rem; }
.adoverview-selfcheck-action { flex-shrink:0; }

/* Widget KPI (anchor + icona + valore + hint) */
.adoverview-kpi-link { display:block;text-decoration:none;color:inherit; }
.adoverview-kpi-icon { display:inline-flex; }
.adoverview-kpi-value { margin-top:0.4rem; }
.adoverview-kpi-hint { font-size:0.62rem;margin-top:0.15rem; }

/* Griglia card di navigazione (pipeline / casi) */
.adoverview-nav-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:1rem; }
.adoverview-nav-card { padding:1.25rem;display:block;text-decoration:none;color:inherit; }
.adoverview-nav-title { font-size:0.9rem;font-weight:600;margin-bottom:0.25rem; }
.adoverview-nav-desc { font-size:0.78rem; }

/* --- inline->classi: admin/passport-custody.php --- */
.adpassportcustody-page { display: flex; flex-direction: column; gap: 1.25rem; }
.adpassportcustody-lede { font-size: 0.9rem; max-width: 52rem; }
.adpassportcustody-kpi-label { display: inline-flex; align-items: center; gap: 0.35rem; margin: 0; }
.adpassportcustody-ico { display: inline-flex; }
.adpassportcustody-ico-fixed { display: inline-flex; flex-shrink: 0; }
.adpassportcustody-banner { display: flex; align-items: flex-start; gap: 0.6rem; border: 1px solid hsl(var(--lime) / 0.3); background: hsl(var(--lime) / 0.06); border-radius: 0.9rem; padding: 0.85rem 1rem; font-size: 0.78rem; }
.adpassportcustody-banner-ico { display: inline-flex; flex-shrink: 0; margin-top: 0.1rem; }
.adpassportcustody-chain-list { display: flex; flex-direction: column; gap: 0.75rem; }
.adpassportcustody-card-flush { padding: 0; }
.adpassportcustody-summary-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; }
.adpassportcustody-summary-main { min-width: 0; flex: 1; }
.adpassportcustody-title-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.adpassportcustody-chain-title { font-weight: 600; font-size: 0.9rem; }
.adpassportcustody-latest { font-size: 0.72rem; margin-top: 0.35rem; margin-left: 1.5rem; }
.adpassportcustody-strong { font-weight: 600; }
.adpassportcustody-body { border-top: 1px solid hsl(var(--border)); padding: 1rem; display: flex; flex-direction: column; gap: 1rem; }
.adpassportcustody-links { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.adpassportcustody-timeline-flush { margin: 0; }
.adpassportcustody-event-title { font-weight: 600; font-size: 0.85rem; }
.adpassportcustody-event-meta { font-size: 0.72rem; margin-top: 0.15rem; display: inline-flex; align-items: center; gap: 0.3rem; }
.adpassportcustody-event-note { font-size: 0.72rem; margin-top: 0.15rem; white-space: pre-wrap; }
.adpassportcustody-add-title { margin: 0 0 0.5rem; }
.adpassportcustody-input { height: 2.4rem; }
.adpassportcustody-textarea { resize: vertical; }
.adpassportcustody-form-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.6rem; }
.adpassportcustody-check-label { font-size: 0.75rem; display: inline-flex; align-items: center; gap: 0.4rem; }

/* --- inline->classi: admin/payment.php --- */
.adpayment-topbar { display:flex;align-items:center;gap:0.75rem;margin-bottom:1.25rem }
.adpayment-ref { font-size:0.72rem }
.adpayment-amount { margin:0;display:flex;align-items:center;gap:0.5rem }
.adpayment-icon-inline { display:inline-flex }
.adpayment-meta-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0.85rem;font-size:0.85rem }
.adpayment-receipt-link { display:inline-flex;align-items:center;gap:0.35rem;font-size:0.85rem;margin-top:0.85rem }
.adpayment-notes { border-top:1px solid hsl(var(--border));margin-top:0.85rem;padding-top:0.85rem;font-size:0.85rem;white-space:pre-wrap }
.adpayment-related-link { display:flex;align-items:center;gap:0.5rem;font-size:0.85rem }
.adpayment-related-link-mt { margin-top:0.5rem }
.adpayment-empty { font-size:0.8rem }
.adpayment-timeline { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0.75rem }
.adpayment-timeline-empty { font-size:0.78rem }
.adpayment-event { font-size:0.85rem }
.adpayment-event-body { font-size:0.78rem;white-space:pre-wrap }
.adpayment-event-time { font-size:0.7rem;margin-top:0.15rem }
.adpayment-btn-grid { display:grid;grid-template-columns:1fr 1fr;gap:0.5rem }
.adpayment-refund-input { width:100%;height:2.4rem;margin-bottom:0.5rem }
.adpayment-refund-status-form { border-top:1px solid hsl(var(--border));margin-top:0.85rem;padding-top:0.85rem }
.adpayment-note-input { width:100%;resize:vertical;margin-bottom:0.5rem }
.adpayment-readonly-note { font-size:0.82rem }

/* --- inline->classi: admin/payments.php --- */
/* admin/payments.php - semantic classes extracted from inline styles */

/* Status badge pill (dynamic border/background/color kept inline). */
.adpayments-badge { display:inline-block;padding:0.12rem 0.55rem;border-radius:999px;font-size:0.7rem; }

/* Page header row: title block + export action. */
.adpayments-header { display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:0.75rem; }

/* Header subtitle / lead text. */
.adpayments-lead { font-size:0.85rem; }

/* KPI grid top spacing. */
.adpayments-kpi-grid { margin-top:1.25rem; }

/* KPI sub-note under each value. */
.adpayments-kpi-note { font-size:0.7rem;margin-top:0.15rem; }

/* Search + status filter bar. */
.adpayments-filters { display:flex;flex-wrap:wrap;gap:0.6rem;align-items:center;margin:1.25rem 0; }

/* Search input wrapper (positions the icon). */
.adpayments-search { flex:1;min-width:220px;position:relative; }

/* Search icon inside the input (color handled by .muted). */
.adpayments-search-icon { position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);pointer-events:none; }

/* Search text input. */
.adpayments-search-input { width:100%;padding-left:2.25rem;height:2.4rem; }

/* Status select. */
.adpayments-status-select { height:2.4rem;width:auto; }

/* Payments table minimum width. */
.adpayments-table { min-width:1200px; }

/* Right-aligned table column (header + cell). */
.adpayments-col-right { text-align:right; }

/* Body row alignment. */
.adpayments-row { vertical-align:top; }

/* Small table cell text (order code, invoice, refund). */
.adpayments-cell-sm { font-size:0.75rem; }

/* Client display name. */
.adpayments-client-name { font-weight:500; }

/* Client email cell (truncated). */
.adpayments-client-email { font-size:0.7rem;max-width:160px; }

/* Amount cell. */
.adpayments-amount { text-align:right;font-weight:600; }

/* Small muted note text in cells. */
.adpayments-note { font-size:0.7rem; }

/* Receipt "uploaded" indicator. */
.adpayments-receipt-ok { display:inline-flex;align-items:center;gap:0.25rem;color:#10b981;font-size:0.72rem; }

/* Row action buttons container. */
.adpayments-actions { display:flex;flex-wrap:wrap;gap:0.35rem;justify-content:flex-end; }

/* Small action button / link. */
.adpayments-action-btn { font-size:0.72rem; }

/* Inline (single-button) action form. */
.adpayments-form-inline { display:inline; }

/* Inline refund form with amount input. */
.adpayments-refund-form { display:inline-flex;align-items:center;gap:0.25rem; }

/* Refund amount input. */
.adpayments-refund-input { width:5rem;height:2rem;font-size:0.72rem; }

/* --- inline->classi: admin/recommendations.php --- */
/* /admin/recommendations - classi semantiche estratte dagli stili inline (zero variazione visiva). */

.adrecommendations-page { display:flex; flex-direction:column; gap:1.25rem; }
.adrecommendations-header { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:0.75rem; }
.adrecommendations-eyebrow { display:inline-flex; align-items:center; gap:0.4rem; font-size:0.68rem; text-transform:uppercase; letter-spacing:0.2em; font-weight:600; }
.adrecommendations-h1 { margin-top:0.25rem; }
.adrecommendations-lead { font-size:0.9rem; }
.adrecommendations-filter-select { width:auto; }
.adrecommendations-table { min-width:1000px; }
.adrecommendations-th-actions { text-align:right; }
.adrecommendations-row { vertical-align:top; }
.adrecommendations-cell-id { font-size:0.72rem; }
.adrecommendations-client-link { font-weight:600; }
.adrecommendations-cell-sm { font-size:0.75rem; }
.adrecommendations-cell-lang { font-size:0.75rem; text-transform:uppercase; }
.adrecommendations-cell-summary { max-width:24rem; }
.adrecommendations-summary-clamp { font-size:0.78rem; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.adrecommendations-cell-date { font-size:0.72rem; }
.adrecommendations-actions { display:flex; flex-wrap:wrap; gap:0.35rem; justify-content:flex-end; }
.adrecommendations-status-form { display:inline-flex; align-items:center; gap:0.25rem; margin:0; }
.adrecommendations-status-select { width:auto; height:2rem; font-size:0.72rem; }
.adrecommendations-btn-text { font-size:0.72rem; }
.adrecommendations-note-pop { position:relative; }
.adrecommendations-note-summary { font-size:0.72rem; list-style:none; cursor:pointer; }
.adrecommendations-note-panel { margin-top:0.4rem; padding:0.65rem; border:1px solid hsl(var(--border)); border-radius:0.6rem; background:hsl(var(--card)); width:20rem; max-width:100%; }
.adrecommendations-note-form { margin:0; }
.adrecommendations-note-label { font-size:0.7rem; margin-bottom:0.35rem; }
.adrecommendations-note-textarea { width:100%; resize:vertical; }
.adrecommendations-note-save { margin-top:0.4rem; }

/* --- inline->classi: admin/renewals.php --- */
/* admin/renewals.php - inline style extraction (namespace: adrenewals-) */

.adrenewals-layout { display:flex;flex-direction:column;gap:1.25rem }
.adrenewals-subtitle { font-size:0.9rem }
.adrenewals-table { min-width:760px }
.adrenewals-id { font-size:0.72rem }
.adrenewals-link { font-weight:600 }
.adrenewals-text-sm { font-size:0.75rem }
.adrenewals-actions { text-align:right }

/* --- inline->classi: admin/request.php --- */
.adrequest-header { display:flex;align-items:center;gap:0.75rem;margin-bottom:1.25rem; }
.adrequest-reqnum { font-size:0.75rem; }
.adrequest-title { margin:0;text-transform:capitalize; }
.adrequest-controls-grid { display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr)); }
.adrequest-field { width:100%;height:2.4rem; }
.adrequest-actions { display:flex;justify-content:flex-end;margin-top:1rem; }
.adrequest-meta { display:grid;gap:0.5rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));font-size:0.75rem;margin-top:1rem;border-top:1px solid hsl(var(--border));padding-top:1rem; }
.adrequest-meta-item { display:flex;align-items:center;gap:0.4rem; }
.adrequest-client-name { font-size:0.88rem; }
.adrequest-client-email { font-size:0.78rem; }
.adrequest-divider-top { border-top:1px solid hsl(var(--border));margin-top:0.85rem;padding-top:0.85rem; }
.adrequest-link { display:inline-flex;align-items:center;gap:0.4rem;font-size:0.85rem;font-weight:600; }
.adrequest-note-caption { font-size:0.72rem;margin-bottom:0.25rem; }
.adrequest-note-body { font-size:0.85rem;white-space:pre-wrap; }
.adrequest-task-list { display:flex;flex-direction:column;gap:0.5rem; }
.adrequest-task-row { display:flex;align-items:center;justify-content:space-between;gap:0.5rem;border:1px solid hsl(var(--border));border-radius:0.6rem;padding:0.5rem 0.75rem; }
.adrequest-task-main { min-width:0; }
.adrequest-task-title { font-size:0.85rem; }
.adrequest-task-desc { font-size:0.72rem; }
.adrequest-task-actions { display:flex;align-items:center;gap:0.35rem;flex-shrink:0; }
.adrequest-task-select { height:2rem;font-size:0.78rem;width:auto;padding:0 0.4rem; }
.adrequest-btn-icon { padding:0.4rem 0.6rem; }
.adrequest-empty { font-size:0.8rem; }
.adrequest-add-row { display:flex;gap:0.5rem;margin-top:0.85rem; }
.adrequest-field-flex { flex:1;height:2.4rem; }
.adrequest-textarea { width:100%;resize:vertical; }
.adrequest-btn-spaced { margin-top:0.5rem; }
.adrequest-form-caption { font-size:0.72rem;margin-bottom:0.4rem; }
.adrequest-activity-list { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0.85rem; }
.adrequest-activity-item { font-size:0.85rem; }
.adrequest-activity-body { font-size:0.78rem;white-space:pre-wrap; }
.adrequest-activity-meta { font-size:0.7rem;margin-top:0.15rem; }

/* --- inline->classi: admin/requests.php --- */
.adrequests-status-badge { display: inline-block; padding: 0.12rem 0.55rem; border-radius: 999px; font-size: 0.7rem; }
.adrequests-header { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 0.75rem; }
.adrequests-subtitle { font-size: 0.85rem; }
.adrequests-header-form { margin: 0; }
.adrequests-chip-count { opacity: 0.6; }
.adrequests-filter-form { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem; }
.adrequests-search { max-width: 20rem; flex: 1; min-width: 12rem; height: 2.4rem; }
.adrequests-filter-select { height: 2.4rem; width: auto; }
.adrequests-table { min-width: 900px; }
.adrequests-req-link { font-size: 0.75rem; font-weight: 600; }
.adrequests-req-sub { font-size: 0.7rem; margin-top: 0.15rem; }
.adrequests-td-cap { text-transform: capitalize; }
.adrequests-td-sm { font-size: 0.78rem; }

/* --- inline->classi: admin/results.php --- */
.adresults-header-row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 0.75rem; }
.adresults-col-min { min-width: 0; }
.adresults-lead { font-size: 0.85rem; max-width: 52rem; }
.adresults-header-action { flex-shrink: 0; }
.adresults-ai-card { padding: 0.85rem 1rem; margin-bottom: 1rem; }
.adresults-search-form { padding: 0.85rem; display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem; margin-bottom: 1rem; }
.adresults-icon { display: inline-flex; }
.adresults-search-input { flex: 1; min-width: 16rem; height: 2.4rem; }
.adresults-publish-card { padding: 1.15rem; margin-bottom: 1.5rem; }
.adresults-publish-head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; }
.adresults-card-h2 { font-weight: 600; font-size: 0.95rem; }
.adresults-step-label { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; margin-top: 1.15rem; }
.adresults-step-label-lead { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; margin-top: 0.85rem; }
.adresults-pick-hint { font-size: 0.8rem; margin-top: 0.4rem; }
.adresults-step-body { margin-top: 0.5rem; }
.adresults-rc-text { min-width: 0; flex: 1; }
.adresults-rc-actions { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; }
.adresults-field-input { height: 2.4rem; }
.adresults-field-note { font-size: 0.72rem; margin-top: 0.5rem; }
.adresults-publish-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem; margin-top: 1.1rem; border-top: 1px solid hsl(var(--border)); padding-top: 0.9rem; }
.adresults-publish-note { font-size: 0.72rem; }
.adresults-recent-card { padding: 1.15rem; }
.adresults-recent-h2 { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.5rem; }
.adresults-recent-name { font-weight: 500; font-size: 0.85rem; }
.adresults-recent-actions { display: flex; align-items: center; gap: 0.85rem; flex-shrink: 0; }
.adresults-recent-date { font-size: 0.72rem; }

/* --- inline->classi: admin/role-qa.php --- */
.adroleqa-page { display: flex; flex-direction: column; gap: 1.25rem; }
.adroleqa-header { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.adroleqa-intro { max-width: 42rem; }
.adroleqa-title { display: flex; align-items: center; gap: .5rem; }
.adroleqa-lede { font-size: .85rem; margin: .25rem 0 0; }
.adroleqa-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.adroleqa-form-flush { margin: 0; }
.adroleqa-card { padding: 1.25rem; }
.adroleqa-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.adroleqa-role-meta { min-width: 0; }
.adroleqa-role-name { font-size: 1.05rem; font-weight: 600; margin: 0; text-transform: capitalize; }
.adroleqa-role-email { font-size: .72rem; margin: .15rem 0 0; word-break: break-all; }
.adroleqa-caps { margin-top: 1rem; font-size: .78rem; display: flex; flex-direction: column; gap: .6rem; }
.adroleqa-cap-label { font-size: .72rem; }
.adroleqa-cred-title { font-weight: 600; }
.adroleqa-cred-label { flex-shrink: 0; }
.adroleqa-card-actions { margin-top: 1rem; display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.adroleqa-verify { padding: 1.25rem; font-size: .85rem; }
.adroleqa-verify-h2 { font-size: 1rem; font-weight: 600; margin: 0 0 .5rem; }
.adroleqa-verify-steps { list-style: decimal; padding-left: 1.2rem; margin: 0; display: flex; flex-direction: column; gap: .25rem; }

/* --- inline->classi: admin/roles.php --- */
/* ============================================================
   admin/roles.php - inline style -> classi semantiche (namespace adroles-)
   Zero cambiamento visivo. La pagina vive dentro <main class="admin-main">.
   Ordine di caricamento: site.css -> (queste classi) -> style.css.
   Dove una regola base ha specificita' >= alla classe singola, si usa un
   selettore composto per vincere la cascata (come da convenzione del progetto).
   ============================================================ */

/* Layout pagina / header */
.adroles-page { display:flex;flex-direction:column;gap:1.25rem; }
.adroles-header { display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem; }
.adroles-lead { font-size:.85rem;margin:0; }

/* Tabella ruoli */
.adroles-table { min-width:680px; }
/* th a destra: .admin-table th impone text-align:left (0,1,1) -> composto (0,2,1) */
.admin-table th.adroles-th-right { text-align:right; }
.adroles-role-name { font-weight:500; }
.adroles-row-desc { font-size:.7rem; }
.adroles-slug { font-size:.75rem; }
.adroles-count { font-size:.8rem; }
.adroles-actions-td { text-align:right;white-space:nowrap; }
.adroles-actions { display:inline-flex;gap:.4rem;justify-content:flex-end; }
.adroles-inline-form { display:inline;margin:0; }
/* Bottone Delete: style.css .btn-ghost (color:foreground) carica DOPO, stessa
   specificita' -> composto per far vincere il destructive (cfr. .btn-ghost.adocuments-del-btn). */
.btn-ghost.adroles-del-btn { color:hsl(var(--destructive)); }

/* Builder */
/* padding: site.css .card-premium impone 20px 22px (0,1,0) -> composto (0,2,0) */
.card-premium.adroles-builder { padding:1.5rem; }
.adroles-builder-head { display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:1.25rem; }
.adroles-eyebrow { font-size:.68rem;text-transform:uppercase;letter-spacing:.14em; }
.adroles-builder-title { font-size:1.25rem;font-weight:600;margin:.15rem 0 0; }
.adroles-form { display:flex;flex-direction:column;gap:1.25rem; }
.adroles-grid-2 { display:grid;grid-template-columns:1fr 1fr;gap:.75rem; }
/* .field azzerato: .admin-main .field impone margin-bottom:16px (0,2,0) -> composto (0,3,0) */
.admin-main .field.adroles-field { margin:0; }

/* Permessi */
.adroles-perms { display:flex;flex-direction:column;gap:1rem; }
.adroles-perms-head { display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap; }
.adroles-perms-title { font-size:.9rem;font-weight:600;margin:0;display:flex;align-items:center;gap:.5rem; }
.adroles-perms-tools { display:flex;gap:.75rem;font-size:.72rem; }
.adroles-group-label { font-size:.62rem;text-transform:uppercase;letter-spacing:.16em;margin-bottom:.5rem; }

/* Footer azioni */
.adroles-footer { display:flex;align-items:center;justify-content:flex-end;gap:.6rem;border-top:1px solid hsl(var(--border) / .5);padding-top:1rem; }

/* --- inline->classi: admin/service.php --- */
/* /admin/services/{id} - service detail/editor (service.php)
   Estrazione inline -> classi semantiche (namespace adservice-).
   Riuso vocabolario condiviso: .muted, .mono, .tx-danger (non ridefinite).
   Modificatori .svc-label-flush / .svc-grid-tight stanno nel <style> in-pagina
   (conflitto stessa proprieta' con classi svc-* del blocco). */

/* Campo full width (input-base gia' fa width:100%; classe esplicita per fedelta') */
.adservice-input-full { width: 100%; }
.adservice-resize-v { resize: vertical; }
.adservice-readonly { opacity: 0.7; }

/* Header pagina */
.adservice-back-link { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; text-decoration: none; }
.adservice-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; margin: 1rem 0 0.5rem; }
.adservice-header-info { min-width: 0; }
.adservice-title-wrap { overflow-wrap: anywhere; }
.adservice-slug { font-size: 0.78rem; margin: 0.25rem 0 0; }

/* Form / azioni / note */
.adservice-form-flush { margin: 0; }
.adservice-spaced-top { margin-top: 1.25rem; }
.adservice-actions-row { margin-top: 1.25rem; display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }
.adservice-note { font-size: 0.78rem; margin-top: 1rem; }
.adservice-hint { font-size: 0.75rem; }
.adservice-mt { margin-top: 1rem; }

/* Card prezzo */
.adservice-card-pad { padding: 1rem; }
.adservice-price-lg { font-size: 1.8rem; font-weight: 700; line-height: 1.1; margin-top: 0.25rem; }
.adservice-price-meta { font-size: 0.72rem; margin-top: 0.35rem; }
.adservice-preview-grid { display: grid; grid-template-columns: 1fr auto; gap: 0.35rem 1rem; margin-top: 0.5rem; font-size: 0.85rem; }
.adservice-preview-val { text-align: right; font-weight: 600; }

/* Sezioni traduzioni */
.adservice-section { margin-bottom: 2rem; }
.adservice-h2 { font-size: 1.05rem; font-weight: 600; margin: 0 0 0.85rem; }
.adservice-empty-text { font-size: 0.85rem; }
.adservice-card-block { padding: 1.25rem; margin-bottom: 1rem; }
.adservice-split { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; }
.adservice-value { font-weight: 600; margin-top: 0.15rem; }
.adservice-grid-top { margin-top: 0.85rem; }
.adservice-bullet-list { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.35rem; }

/* Tabella price history */
.adservice-table { min-width: 640px; }
.adservice-num { text-align: right; }
/* .admin-table th ha text-align:left (0,1,1): serve pari specificita' per il right-align */
.admin-table th.adservice-num { text-align: right; }

/* --- inline->classi: admin/services.php --- */
/* ============================================================
   admin/services.php - classi component-specific (migrazione inline -> classi)
   Namespace: adservices-*
   NB: colori/mono/nowrap riusano il vocabolario condiviso (tx-*, .muted,
   .mono, .nowrap) direttamente nell'attributo class del markup.
   Le regole composte qui sotto (.admin-table th.*, .input-base.*, .muted.*)
   servono a vincere la cascata su classi base definite in style.css (che
   carica DOPO site.css) - stesso pattern di app/case.php (.app-card.case-*).
   ============================================================ */

/* Intestazione pagina (titolo + azione) */
.adservices-page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 0.75rem; }

/* Sottotitolo descrittivo sotto l'h1 */
.adservices-subtitle { font-size: 0.85rem; }

/* Barra di ricerca/filtri */
.adservices-toolbar { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; margin: 1.25rem 0 0.85rem; }

/* Campo di ricerca (contiene l'icona in absolute) */
.adservices-search-field { flex: 1; min-width: 220px; position: relative; }

/* Icona lente dentro il campo di ricerca */
.adservices-search-icon { position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%); pointer-events: none; }

/* Spaziatura sotto la riga dei tab */
.adservices-filters { margin-bottom: 1rem; }

/* Larghezza minima tabella (scroll orizzontale nel wrap) */
.adservices-table { min-width: 840px; }

/* Riga tabella allineata in alto */
.adservices-row { vertical-align: top; }

/* Nome servizio (cella) */
.adservices-name { font-weight: 600; }

/* Link al nome servizio */
.adservices-service-link { text-decoration: none; }

/* Slug servizio sotto il nome */
.adservices-slug { font-size: 0.72rem; }

/* Indicatore di stato inline (icona + testo) */
.adservices-status { display: inline-flex; align-items: center; gap: 0.3rem; }

/* Cella prezzo pubblicato */
.adservices-price-cell { text-align: right; font-weight: 600; }

/* Cella azione (Open) */
.adservices-action-cell { text-align: right; }

/* Link "Open" della riga */
.adservices-open-link { font-size: 0.75rem; font-weight: 600; }

/* --- override composti (vincono su style.css, che carica dopo site.css) --- */

/* Intestazione colonna prezzo (allineata a destra vs .admin-table th text-align:left) */
.admin-table th.adservices-price-th { text-align: right; }

/* Input di ricerca (padding-left per l'icona vs .input-base padding shorthand) */
.input-base.adservices-search-input { width: 100%; padding-left: 2.25rem; height: 2.4rem; }

/* Badge "No price": colore warning deve vincere su .muted (style.css) */
.muted.adservices-noprice { font-weight: 400; color: hsl(var(--warning)); }

/* --- inline->classi: admin/settings.php --- */
/* ============================================================
   admin/settings.php - classi component-specific (inline -> classi)
   Namespace: adsettings-*
   NB: colori/troncamento riusano il vocabolario condiviso
   (muted, tx-lime, tx-danger, truncate) - qui solo layout/spaziatura.
   Gli override di 'padding' su .card-premium (che style.css non imposta)
   usano classi piane.
   ============================================================ */

/* Contenitore pagina */
.adsettings-page { display:flex;flex-direction:column;gap:1.5rem; }

/* Header (titolo + badge identita') */
.adsettings-header { display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:0.75rem; }
.adsettings-subtitle { font-size:0.9rem; }

/* Badge identita' utente (card-premium) */
.adsettings-identity { padding:0.5rem 0.85rem;display:flex;align-items:center;gap:0.5rem;font-size:0.75rem; }
.adsettings-identity-icon { display:inline-flex; }
.adsettings-identity-name { font-weight:600; }
.adsettings-role-badge { text-transform:uppercase;letter-spacing:0.05em; }

/* Barra tab */
.adsettings-tabs { border-bottom:1px solid hsl(var(--border));padding-bottom:0; }
.adsettings-tab { display:inline-flex;align-items:center;gap:0.4rem; }

/* Griglia card */
.adsettings-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem; }

/* Card informativa (card-premium) */
.adsettings-card { padding:1.25rem; }
.adsettings-card-title { font-size:0.72rem;text-transform:uppercase;letter-spacing:0.05em;margin-bottom:0.85rem; }
.adsettings-card-body { display:flex;flex-direction:column;gap:0.6rem; }

/* Riga label->valore */
.adsettings-field { display:flex;align-items:center;justify-content:space-between;gap:0.75rem;font-size:0.85rem; }
.adsettings-field-label { display:inline-flex;align-items:center;gap:0.5rem; }
.adsettings-field-value { font-weight:500; }

/* Riga toggle (solo visivo) */
.adsettings-toggle-row { display:flex;align-items:center;justify-content:space-between;gap:0.75rem;font-size:0.85rem;padding:0.15rem 0; }
.adsettings-toggle-track { position:relative;display:inline-block;height:1.25rem;width:2.25rem;border-radius:999px;background:hsl(var(--lime));flex-shrink:0; }
.adsettings-toggle-knob { position:absolute;top:0.125rem;right:0.125rem;height:1rem;width:1rem;border-radius:999px;background:hsl(var(--background)); }

/* Nota informativa */
.adsettings-note { font-size:0.72rem; }

/* Pannello catalogo servizi (card-premium) */
.adsettings-panel { padding:1.5rem; }
.adsettings-catalog-title { font-weight:600;font-size:0.9rem; }
.adsettings-catalog-desc { font-size:0.8rem;margin-top:0.35rem;max-width:44rem; }
.adsettings-catalog-cta { margin-top:1rem; }

/* Form + bottone di logout (colore via .tx-danger) */
.adsettings-signout-form { margin-top:0.5rem; }
.adsettings-signout-btn { width:100%;padding:1rem;display:flex;align-items:center;justify-content:center;gap:0.5rem;cursor:pointer;font-weight:600;font-size:0.85rem; }

/* --- inline->classi: admin/setup.php --- */
.adsetup-title { font-size: 1.75rem; }
.adsetup-block { margin-top: 1.5rem; }
.adsetup-intro { margin-top: .5rem; font-size: .9rem; }

/* --- inline->classi: admin/team.php --- */
.adteam-page { display:flex; flex-direction:column; gap:1.25rem; }
.adteam-header { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:.75rem; }
.adteam-intro { font-size:.85rem; margin:0; }
.adteam-card-pad { padding:1.25rem; }
.adteam-summary { cursor:pointer; font-weight:600; display:flex; align-items:center; gap:.5rem; }
.adteam-invite-form { margin-top:1rem; display:flex; flex-wrap:wrap; gap:.6rem; align-items:center; }
.adteam-invite-email { flex:1; min-width:220px; }
.adteam-invite-role { width:auto; }
.adteam-hint { font-size:.72rem; margin:.75rem 0 0; }
.adteam-h2 { font-weight:600; margin:0 0 .75rem; display:flex; align-items:center; gap:.5rem; }
.adteam-list { display:flex; flex-direction:column; }
.adteam-invite-row { display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding:.6rem 0; border-top:1px solid hsl(var(--border) / .5); }
.adteam-invite-info { min-width:0; }
.adteam-name { font-weight:500; }
.adteam-meta { font-size:.7rem; }
.adteam-invite-actions { display:flex; align-items:center; gap:.4rem; }
.adteam-form-flush { margin:0; }
.adteam-table-wide { min-width:820px; }
.adteam-actions-col { text-align:right; }
.adteam-inactive { opacity:.6; }
.adteam-roles-gap { margin-top:.4rem; }
.adteam-cell-sm { font-size:.75rem; }
.adteam-form-inline { display:inline; margin:0; }
.adteam-actions-empty { font-size:.72rem; }

/* --- inline->classi: admin/user.php --- */
/* ============================================================
   admin/user.php - classi component-specific (migrazione inline -> classi)
   Prefix: aduser-. Riusa il vocabolario condiviso (.muted .tx-fg .tx-lime
   .tx-lime-h .truncate .nowrap) - non ridefinirlo qui.
   Selettori composti (.base.aduser-*) dove serve battere una base-class
   ridefinita in style.css (caricato DOPO site.css): .card-premium (imposta
   padding:20px 22px), .admin-h1 (imposta margin-bottom:0.25rem).
   NB: font-family:monospace resta classe propria (.mono = var(--font-mono),
   diverso da monospace) -> nessuno swap a .mono.
   ============================================================ */

/* --- layout pagina --- */
.aduser-col { display: flex; flex-direction: column; gap: 1.25rem; }
.aduser-cols { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 1.25rem; }
.aduser-col-main { flex: 2 1 380px; min-width: 0; display: flex; flex-direction: column; gap: 1.25rem; }
.aduser-col-side { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: 1.25rem; }

/* --- topbar (back + titolo + azione) --- */
.aduser-topbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.aduser-topbar-left { display: flex; align-items: center; gap: 0.75rem; min-width: 0; }
.aduser-minw0 { min-width: 0; }
.aduser-iflex { display: inline-flex; }
.aduser-id { font-family: monospace; font-size: 0.72rem; }
.admin-h1.aduser-h1-flush { margin-bottom: 0; }

/* --- card (padding: batte .card-premium di style.css) + titoli --- */
.card-premium.aduser-card { padding: 1.25rem; }
.aduser-card-title { font-weight: 600; font-size: 0.9rem; margin-bottom: 0.75rem; }
.aduser-section-head { display: flex; align-items: center; gap: 0.5rem; font-weight: 600; font-size: 0.9rem; margin-bottom: 0.75rem; }

/* --- profilo (griglia + voce) --- */
.aduser-profile-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0.75rem; font-size: 0.85rem; }
.aduser-prof-item { display: flex; align-items: center; gap: 0.5rem; }

/* --- righe lista (us_section) --- */
.aduser-empty { font-size: 0.8rem; }
.aduser-row-main { min-width: 0; flex: 1; }
.aduser-row-label { font-size: 0.85rem; }
.aduser-row-sub { font-size: 0.7rem; margin-top: 0.15rem; }
.aduser-row-right { font-size: 0.75rem; text-align: right; }

/* --- ruoli (chip + rimozione + form) --- */
.aduser-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.aduser-empty-sm { font-size: 0.78rem; }
.aduser-chip { display: inline-flex; align-items: center; gap: 0.35rem; background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); border-radius: 999px; padding: 0.25rem 0.6rem; font-size: 0.75rem; }
.aduser-inline-form { display: inline; line-height: 0; }
.aduser-chip-x { background: none; border: 0; cursor: pointer; padding: 0; font-size: 0.9rem; line-height: 1; }
.aduser-role-form { display: flex; gap: 0.5rem; margin-top: 0.85rem; }
.aduser-flex1 { flex: 1; }

/* --- note interne --- */
.aduser-notes-list { display: flex; flex-direction: column; gap: 0.5rem; max-height: 16rem; overflow: auto; }
.aduser-note { border: 1px solid hsl(var(--border)); border-radius: 0.5rem; padding: 0.5rem 0.65rem; font-size: 0.85rem; }
.aduser-note-body { white-space: pre-wrap; }
.aduser-note-time { font-size: 0.7rem; margin-top: 0.25rem; }
.aduser-note-form { margin-top: 0.75rem; }
.aduser-note-input { width: 100%; margin-bottom: 0.5rem; }

/* --- audit history --- */
.aduser-audit-list { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; max-height: 18rem; overflow: auto; margin: 0; padding: 0; }
.aduser-audit-item { font-size: 0.78rem; }
.aduser-audit-time { font-size: 0.7rem; }
.aduser-audit-link { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.78rem; margin-top: 0.65rem; }

/* --- inline->classi: admin/users.php --- */
/* ============================================================
   admin/users.php - classi component-specific (migrazione inline -> classi)
   Namespace: adusers-*
   NB: colori riusano il vocabolario condiviso (.tx-lime .tx-lime-h .muted)
   direttamente nell'attributo class del markup - non ridefinirlo qui.
   Le regole composte in fondo (.input-base.*, .admin-filters.*, .admin-table
   th/td.*) servono a vincere la cascata su base-class definite in style.css
   (che carica DOPO site.css) - stesso pattern di admin/cases.php e services.php.
   ============================================================ */

/* --- wrapper pagina (colonna flex) --- */
.adusers-page { display: flex; flex-direction: column; gap: 1.25rem; }

/* --- header: sottotitolo/lead sotto l'h1 --- */
.adusers-lead { font-size: 0.9rem; }

/* --- icona dentro la KPI card (colore lime via .tx-lime) --- */
.adusers-kpi-icon { margin-bottom: 0.4rem; }

/* --- barra ricerca + filtri --- */
.adusers-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem; }

/* --- form di ricerca (contiene l'icona in absolute) --- */
.adusers-search-field { flex: 1; min-width: 220px; position: relative; }

/* --- icona lente dentro il campo di ricerca (colore via .muted) --- */
.adusers-search-icon { position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%); pointer-events: none; }

/* --- tabella: cella nome (enfasi) --- */
.adusers-name-cell { font-weight: 500; }

/* --- tabella: contenitore inline delle azioni di riga --- */
.adusers-actions { display: inline-flex; align-items: center; justify-content: flex-end; gap: 0.85rem; }

/* --- link "Email" della riga (colore via .tx-lime-h) --- */
.adusers-email-link { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.8rem; }

/* --- link "Cases" della riga (colore via .muted) --- */
.adusers-cases-link { font-size: 0.8rem; }

/* --- override composti (vincono su style.css, che carica dopo site.css) --- */

/* Input di ricerca: padding-left per l'icona vs .input-base padding shorthand */
.input-base.adusers-search-input { padding-left: 2.25rem; }

/* Riga tab/filtri a filo vs .admin-filters margin:1rem 0 */
.admin-filters.adusers-filters-flush { margin: 0; }

/* Colonna azioni allineata a destra vs .admin-table th text-align:left */
.admin-table th.adusers-actions-col,
.admin-table td.adusers-actions-col { text-align: right; }


/* ============================================================
   BLOCCHI <style> IN-PAGE app/admin -> scopati sotto body.page-<area>-<nome>
   (classe body impostata da app_head/admin_head). @keyframes globali.
   ============================================================ */

/* --- <style> in-page scopato: app/apply.php (body.page-app-apply) --- */
body.page-app-apply .apply-form { display: grid; gap: 0.85rem; }
body.page-app-apply .apply-form .field { margin-bottom: 0; }
body.page-app-apply .apply-2col { display: grid; gap: 0.85rem; }
@media (min-width: 480px) {
body.page-app-apply .apply-2col { grid-template-columns: 1fr 1fr; }
}
body.page-app-apply .opt-card { transition: border-color .15s, box-shadow .15s; cursor: pointer; }
body.page-app-apply .opt-card.is-selected { border-color: hsl(var(--lime)); box-shadow: 0 0 0 3px hsl(var(--lime) / 0.15); }
body.page-app-apply .seg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; }
body.page-app-apply .seg-btn { padding: 0.7rem 0.5rem; border-radius: var(--radius); border: 1px solid hsl(var(--border)); background: hsl(var(--card)); font-size: 0.85rem; font-weight: 500; text-transform: capitalize; cursor: pointer; transition: background .15s, color .15s, border-color .15s; }
body.page-app-apply .seg-btn.is-selected { background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); border-color: hsl(var(--lime)); }
body.page-app-apply .rev-row { display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem; font-size: 0.8rem; }
body.page-app-apply .rev-row .muted { flex-shrink: 0; }
body.page-app-apply .rev-row b { font-weight: 500; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* --- <style> in-page scopato: app/assistant.php (body.page-app-assistant) --- */
body.page-app-assistant .assistant-chat { display: flex; flex-direction: column; }
body.page-app-assistant .chat-topbar { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: 1rem; }
body.page-app-assistant .chat-scroll { display: flex; flex-direction: column; gap: 1.25rem; padding-bottom: 4.5rem; }
body.page-app-assistant .chat-empty { display: flex; flex-direction: column; gap: .7rem; }
body.page-app-assistant .chat-empty[hidden] { display: none; }
body.page-app-assistant .chat-suggests { display: grid; gap: .5rem; }
body.page-app-assistant .chat-suggest { text-align: left; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: .7rem .8rem; font-size: .85rem; color: hsl(var(--foreground)); cursor: pointer; transition: border-color .15s; }
body.page-app-assistant .chat-suggest:hover { border-color: hsl(var(--lime) / .5); }
body.page-app-assistant .chat-cta { display: flex; align-items: center; gap: .65rem; font-size: .85rem; text-decoration: none; color: hsl(var(--foreground)); }
body.page-app-assistant .chat-cta-ai { background: hsl(var(--lime) / .06); border-color: hsl(var(--lime) / .3); }
body.page-app-assistant .chat-cta-ico { display: inline-grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: .7rem; background: hsl(var(--card-elevated)); color: hsl(var(--lime)); flex-shrink: 0; }
body.page-app-assistant .chat-messages { display: flex; flex-direction: column; gap: .8rem; }
body.page-app-assistant .chat-bubble { display: flex; }
body.page-app-assistant .chat-bubble.is-user { justify-content: flex-end; }
body.page-app-assistant .chat-bubble-text { max-width: 88%; border-radius: 1.1rem; padding: .6rem .85rem; font-size: .88rem; line-height: 1.55; white-space: pre-wrap; overflow-wrap: anywhere; }
body.page-app-assistant .chat-bubble.is-user .chat-bubble-text { background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); border-top-right-radius: .3rem; }
body.page-app-assistant .chat-bubble.is-assistant .chat-bubble-text { background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); border-top-left-radius: .3rem; }
body.page-app-assistant .chat-cursor { display: inline-block; width: .5rem; height: .95rem; margin-left: .1rem; background: hsl(var(--lime) / .7); vertical-align: text-bottom; animation: chat-blink 1s steps(2, start) infinite; }
@keyframes chat-blink { 50% { opacity: 0; } }
body.page-app-assistant .chat-composer { position: fixed; left: 0; right: 0; bottom: calc(4.75rem + env(safe-area-inset-bottom)); z-index: 35; max-width: 42rem; margin: 0 auto; padding: 0 1.25rem; display: flex; align-items: flex-end; gap: .5rem; }
body.page-app-assistant .chat-composer textarea { flex: 1; resize: none; max-height: 8rem; border: 1px solid hsl(var(--border)); background: hsl(var(--card)); border-radius: 1.4rem; padding: .7rem 1rem; font: inherit; font-size: .9rem; line-height: 1.4; box-shadow: var(--shadow-card); outline: none; }
body.page-app-assistant .chat-composer textarea:focus { border-color: hsl(var(--lime) / .5); }
body.page-app-assistant .chat-send { flex-shrink: 0; width: 2.75rem; height: 2.75rem; border-radius: 999px; border: 0; background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); display: grid; place-items: center; cursor: pointer; box-shadow: var(--shadow-lime); transition: background .15s, opacity .15s; }
body.page-app-assistant .chat-send:hover:not(:disabled) { background: hsl(var(--lime-hover)); }
body.page-app-assistant .chat-send:disabled { opacity: .45; cursor: default; }

/* --- <style> in-page scopato: app/business.php (body.page-app-business) --- */
body.page-app-business .bq-top { display:flex; flex-direction:column; gap:0.15rem; margin-bottom:0.35rem; }
body.page-app-business .bq-eyebrow { font-size:0.62rem; text-transform:uppercase; letter-spacing:0.2em; color:hsl(var(--foreground-muted)); }
body.page-app-business .bq-heading { font-family:var(--font-display); font-size:1.15rem; font-weight:600; }
body.page-app-business .bq-counter { font-size:0.7rem; color:hsl(var(--foreground-muted)); }
body.page-app-business .bq-progress { height:0.35rem; width:100%; background:hsl(var(--border)); border-radius:999px; overflow:hidden; margin:0.75rem 0 1.25rem; }
body.page-app-business .bq-progress > span { display:block; height:100%; background:hsl(var(--lime)); border-radius:999px; transition:width .25s ease; }
body.page-app-business .bq-qtitle { font-size:1rem; font-weight:600; line-height:1.3; }
body.page-app-business .bq-qhint { font-size:0.78rem; margin-top:0.3rem; }
body.page-app-business .bq-grid { display:grid; gap:0.5rem; }
body.page-app-business .bq-grid.cols-2 { grid-template-columns:1fr 1fr; }
body.page-app-business .bq-grid.cols-4 { grid-template-columns:repeat(4, 1fr); }
body.page-app-business .bq-pick { display:flex; align-items:center; justify-content:center; text-align:center; min-height:2.9rem; padding:0.7rem 0.9rem; border-radius:0.85rem; border:1px solid hsl(var(--border)); background:hsl(var(--card)); font-size:0.9rem; font-weight:500; cursor:pointer; transition:border-color .15s, background-color .15s, color .15s; position:relative; }
body.page-app-business .bq-pick:hover { border-color:hsl(var(--lime) / 0.4); }
body.page-app-business .bq-pick:has(input:checked) { background:hsl(var(--lime)); color:hsl(var(--lime-foreground)); border-color:hsl(var(--lime)); }
body.page-app-business .bq-pick input { position:absolute; opacity:0; pointer-events:none; }
body.page-app-business .bq-pick.bq-pick-start { justify-content:flex-start; text-align:left; }
body.page-app-business .bq-err { color:hsl(var(--destructive)); font-size:0.72rem; margin-top:0.35rem; }
body.page-app-business .bq-actions { display:flex; gap:0.75rem; margin-top:1.25rem; }
body.page-app-business .bq-disclaimer { margin-top:1.5rem; font-size:0.68rem; color:hsl(var(--foreground-muted)); text-align:center; line-height:1.6; }

/* --- <style> in-page scopato: app/case-courier.php (body.page-app-case-courier) --- */
body.page-app-case-courier .cr-field { display:flex; flex-direction:column; }
body.page-app-case-courier .cr-field > span.cr-label { font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:hsl(var(--foreground-muted)); margin-bottom:.4rem; }
body.page-app-case-courier .cr-field input[type=text], body.page-app-case-courier .cr-field input[type=date], body.page-app-case-courier .cr-field input[type=tel], body.page-app-case-courier .cr-field input[type=url], body.page-app-case-courier .cr-field select, body.page-app-case-courier .cr-field textarea { width:100%; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); border-radius:.85rem; padding:.7rem .85rem; font-size:.9rem; color:hsl(var(--foreground)); }
body.page-app-case-courier .cr-field input:focus, body.page-app-case-courier .cr-field select:focus, body.page-app-case-courier .cr-field textarea:focus { outline:none; border-color:hsl(var(--lime) / .6); }
body.page-app-case-courier .cr-field textarea { resize:vertical; min-height:3rem; }
body.page-app-case-courier .cr-err { color:hsl(var(--destructive)); font-size:.72rem; margin-top:.3rem; }
body.page-app-case-courier .cr-seg { display:flex; align-items:center; gap:.5rem; border-radius:.85rem; border:1px solid hsl(var(--border)); background:hsl(var(--card-elevated)); padding:.65rem .75rem; font-size:.85rem; cursor:pointer; }
body.page-app-case-courier .cr-seg:has(input:checked) { border-color:hsl(var(--lime) / .6); background:hsl(var(--lime) / .1); }
body.page-app-case-courier .cr-seg input { accent-color:hsl(var(--lime)); }
body.page-app-case-courier .cr-consent { display:flex; align-items:flex-start; gap:.6rem; cursor:pointer; }
body.page-app-case-courier .cr-consent input { margin-top:.2rem; width:1rem; height:1rem; accent-color:hsl(var(--lime)); flex-shrink:0; }
body.page-app-case-courier .cr-tl { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.85rem; }
body.page-app-case-courier .cr-tl li { display:flex; align-items:flex-start; gap:.75rem; }
body.page-app-case-courier .cr-dotcol { display:flex; flex-direction:column; align-items:center; }
body.page-app-case-courier .cr-line { margin-top:.25rem; width:1px; height:1.25rem; background:hsl(var(--border)); }
body.page-app-case-courier .cr-line.done { background:hsl(var(--success) / .4); }

/* --- <style> in-page scopato: app/case-renew.php (body.page-app-case-renew) --- */
body.page-app-case-renew .rn-pick { cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:0.75rem; transition:border-color .15s, box-shadow .15s; }
body.page-app-case-renew .rn-pick:hover { border-color:hsl(var(--lime) / 0.35); }
body.page-app-case-renew .rn-pick:has(input:checked) { border-color:hsl(var(--lime)); box-shadow:0 0 0 3px hsl(var(--lime) / 0.15); }
body.page-app-case-renew .rn-dot { width:1.15rem; height:1.15rem; border-radius:999px; border:1px solid hsl(var(--border)); display:grid; place-items:center; flex-shrink:0; color:transparent; }
body.page-app-case-renew .rn-pick:has(input:checked) .rn-dot { background:hsl(var(--lime)); border-color:hsl(var(--lime)); color:hsl(var(--lime-foreground)); }
body.page-app-case-renew .rn-pick input { position:absolute; opacity:0; pointer-events:none; }

/* --- <style> in-page scopato: app/case.php (body.page-app-case) --- */
body.page-app-case .cd-h2 { font-family: var(--font-display); font-size: 1rem; font-weight: 600; margin: 0 0 0.75rem; display: flex; align-items: center; gap: 0.5rem; }
body.page-app-case .cd-h2.cd-h2-flush { margin: 0; }
body.page-app-case .cd-tl .timeline-item::before { background: var(--dot); box-shadow: var(--dot-ring, none); }

/* --- <style> in-page scopato: app/documents.php (body.page-app-documents) --- */
body.page-app-documents .doc-card.is-flagged { border-color: hsl(var(--destructive) / .4); }
body.page-app-documents .doc-card.dragover { border-color: hsl(var(--lime)); background: hsl(var(--lime) / .04); }
body.page-app-documents .doc-modal { position: fixed; inset: 0; z-index: 60; background: hsl(var(--background) / .9); display: grid; place-items: center; padding: 1rem; }
body.page-app-documents .doc-modal[hidden] { display: none; }
body.page-app-documents .doc-modal-card { width: 100%; max-width: 40rem; max-height: 85vh; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); overflow: hidden; display: flex; flex-direction: column; }
body.page-app-documents .doc-modal-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .7rem .85rem; border-bottom: 1px solid hsl(var(--border)); }
body.page-app-documents .doc-modal-body { flex: 1; overflow: auto; display: grid; place-items: center; background: hsl(var(--card-elevated)); min-height: 40vh; }
body.page-app-documents .doc-frame { width: 100%; height: 70vh; border: 0; }
body.page-app-documents .doc-img { max-width: 100%; max-height: 75vh; object-fit: contain; }

/* --- <style> in-page scopato: app/emergency.php (body.page-app-emergency) --- */
body.page-app-emergency .eh-seg { display:flex; align-items:center; justify-content:center; min-height:2.75rem; border-radius:0.75rem; border:1px solid hsl(var(--border)); background:hsl(var(--card-elevated)); font-size:0.85rem; font-weight:500; cursor:pointer; transition:border-color .15s, background-color .15s; position:relative; }
body.page-app-emergency .eh-seg:has(input:checked) { background:hsl(var(--lime)); color:hsl(var(--lime-foreground)); border-color:hsl(var(--lime)); }
body.page-app-emergency .eh-seg input { position:absolute; opacity:0; pointer-events:none; }
body.page-app-emergency .eh-field { display:flex; flex-direction:column; }
body.page-app-emergency .eh-field > span { font-size:0.68rem; text-transform:uppercase; letter-spacing:0.06em; color:hsl(var(--foreground-muted)); margin-bottom:0.4rem; }
body.page-app-emergency .eh-field input { width:100%; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); border-radius:0.75rem; padding:0.7rem 0.85rem; font-size:0.9rem; color:hsl(var(--foreground)); }
body.page-app-emergency .eh-field input:focus { outline:none; border-color:hsl(var(--lime) / 0.6); }
body.page-app-emergency .eh-err { color:hsl(var(--destructive)); font-size:0.72rem; margin-top:0.3rem; }

/* --- <style> in-page scopato: app/family-add.php (body.page-app-family-add) --- */
body.page-app-family-add .ff-field { display:flex; flex-direction:column; }
body.page-app-family-add .ff-field > span { font-size:.68rem; text-transform:uppercase; letter-spacing:.06em; color:hsl(var(--foreground-muted)); margin-bottom:.4rem; }
body.page-app-family-add .ff-field input[type=text], body.page-app-family-add .ff-field input[type=date] { width:100%; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); border-radius:.75rem; padding:.7rem .85rem; font-size:.9rem; color:hsl(var(--foreground)); }
body.page-app-family-add .ff-field input[type=text]:focus, body.page-app-family-add .ff-field input[type=date]:focus { outline:none; border-color:hsl(var(--lime) / .6); }
body.page-app-family-add .ff-seg { display:flex; align-items:center; justify-content:center; min-height:2.75rem; border-radius:.75rem; border:1px solid hsl(var(--border)); background:hsl(var(--card-elevated)); font-size:.8rem; font-weight:500; cursor:pointer; transition:border-color .15s, background-color .15s; position:relative; text-align:center; }
body.page-app-family-add .ff-seg:has(input:checked) { background:hsl(var(--lime)); color:hsl(var(--lime-foreground)); border-color:hsl(var(--lime)); }
body.page-app-family-add .ff-seg input { position:absolute; opacity:0; pointer-events:none; }
body.page-app-family-add .ff-err { color:hsl(var(--destructive)); font-size:.72rem; margin-top:.3rem; }
body.page-app-family-add .ff-err.ff-err-pull { margin-top:-.85rem; }

/* --- <style> in-page scopato: app/family.php (body.page-app-family) --- */
body.page-app-family .fam-stat { border-radius:.8rem; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); padding:.5rem .65rem; }
body.page-app-family .fam-stat-label { font-size:.58rem; text-transform:uppercase; letter-spacing:.05em; color:hsl(var(--foreground-muted)); }
body.page-app-family .fam-stat-value { font-weight:600; font-size:.8rem; margin-top:.15rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* --- <style> in-page scopato: app/profile.php (body.page-app-profile) --- */
body.page-app-profile #avatar-btn:hover #avatar-spinner { opacity: 1; }

/* --- <style> in-page scopato: app/rewards.php (body.page-app-rewards) --- */
body.page-app-rewards .rw-item { display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding:.6rem 0; border-bottom:1px solid hsl(var(--border) / 0.5); }
body.page-app-rewards .rw-item:last-child { border-bottom:0; }

/* --- <style> in-page scopato: app/service.php (body.page-app-service) --- */
body.page-app-service .svc-pkg { transition: border-color .15s, box-shadow .15s; }
body.page-app-service .svc-pkg.is-selected { border-color: hsl(var(--lime)); box-shadow: 0 0 0 3px hsl(var(--lime) / 0.15); }
body.page-app-service .svc-feat { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.78rem; color: hsl(var(--foreground) / 0.85); }

/* --- <style> in-page scopato: admin/case.php (body.page-admin-case) --- */
body.page-admin-case .cd-label { display: block; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; color: hsl(var(--foreground-muted)); margin-bottom: 0.35rem; }
body.page-admin-case .cd-h2 { font-size: 1rem; font-weight: 600; display: inline-flex; align-items: center; gap: 0.5rem; }
body.page-admin-case .cd-section { padding: 1.25rem; }
body.page-admin-case .cd-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin-top: 1.25rem; }

/* --- <style> in-page scopato: admin/cases.php (body.page-admin-cases) --- */
body.page-admin-cases .cases-kpis { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }
@media (min-width: 640px) {
body.page-admin-cases .cases-kpis { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
body.page-admin-cases .cases-kpis { grid-template-columns: repeat(6, 1fr); }
}
body.page-admin-cases .cases-kpi { display: block; }
body.page-admin-cases .cases-kpi:hover { border-color: hsl(var(--lime) / 0.4); }
body.page-admin-cases .cases-kpi-ico { height: 2rem; width: 2rem; border-radius: 0.6rem; display: grid; place-items: center; }

/* --- <style> in-page scopato: admin/courier-detail.php (body.page-admin-courier-detail) --- */
body.page-admin-courier-detail .cd-card { padding: 1.25rem; }
body.page-admin-courier-detail .cd-card + .cd-card { margin-top: 1.25rem; }
body.page-admin-courier-detail .cd-h2 { font-size: 0.9rem; font-weight: 600; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.85rem; }
body.page-admin-courier-detail .cd-timeline { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
@media (min-width: 1024px) {
body.page-admin-courier-detail .cd-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.25rem; align-items: start; }
}

/* --- <style> in-page scopato: admin/custody-detail.php (body.page-admin-custody-detail) --- */
body.page-admin-custody-detail .cd-label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; color: hsl(var(--foreground-muted)); }
body.page-admin-custody-detail .cd-card { padding: 1.25rem; }
body.page-admin-custody-detail .cd-card + .cd-card { margin-top: 1.25rem; }
body.page-admin-custody-detail .cd-h2 { font-size: 0.9rem; font-weight: 600; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.85rem; }
@media (min-width: 1024px) {
body.page-admin-custody-detail .cd-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.25rem; align-items: start; }
}

/* --- <style> in-page scopato: admin/document.php (body.page-admin-document) --- */
body.page-admin-document .dl-card { padding: 1.25rem; }
body.page-admin-document .dl-card + .dl-card { margin-top: 1.25rem; }
body.page-admin-document .dl-h2 { font-size: 0.9rem; font-weight: 600; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.85rem; }
@media (min-width: 1024px) {
body.page-admin-document .dl-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.25rem; align-items: start; }
}

/* --- <style> in-page scopato: admin/documents.php (body.page-admin-documents) --- */
body.page-admin-documents .doc-actions { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: flex-start; margin-top: 0.85rem; border-top: 1px solid hsl(var(--border)); padding-top: 0.85rem; }
body.page-admin-documents .doc-act { font-size: 0.72rem; display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.3rem 0.6rem; border-radius: 999px; border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated)); color: hsl(var(--foreground)); cursor: pointer; line-height: 1.15; }
body.page-admin-documents .doc-act:hover { border-color: hsl(var(--foreground-muted)); }
body.page-admin-documents .doc-act.is-approve { color: hsl(var(--success)); border-color: hsl(var(--success) / 0.4); background: hsl(var(--success) / 0.12); }
body.page-admin-documents .doc-act.is-reject { color: hsl(var(--destructive)); border-color: hsl(var(--destructive) / 0.4); background: hsl(var(--destructive) / 0.12); }
body.page-admin-documents .doc-act.is-warn { color: hsl(var(--warning)); border-color: hsl(var(--warning) / 0.4); background: hsl(var(--warning) / 0.12); }
body.page-admin-documents details.doc-pop > summary { list-style: none; }
body.page-admin-documents details.doc-pop > summary::-webkit-details-marker { display: none; }
body.page-admin-documents .doc-pop-body { margin-top: 0.4rem; padding: 0.65rem; border: 1px solid hsl(var(--border)); border-radius: 0.6rem; background: hsl(var(--card)); width: 22rem; max-width: 100%; }
body.page-admin-documents .doc-meta { font-size: 0.72rem; color: hsl(var(--foreground-muted)); margin-top: 0.3rem; display: flex; flex-wrap: wrap; gap: 0.15rem 0.75rem; }
body.page-admin-documents .doc-note { font-size: 0.72rem; margin-top: 0.35rem; display: inline-block; padding: 0.2rem 0.45rem; border-radius: 0.35rem; }
body.page-admin-documents .doc-urgent-pill { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.1rem 0.4rem; border-radius: 999px; border: 1px solid hsl(var(--destructive) / 0.4); background: hsl(var(--destructive) / 0.1); color: hsl(var(--destructive)); }

/* --- <style> in-page scopato: admin/passport-custody.php (body.page-admin-passport-custody) --- */
body.page-admin-passport-custody .pc-badge { font-size: 0.62rem; padding: 0.1rem 0.45rem; border-radius: 999px; border: 1px solid hsl(var(--border)); display: inline-flex; align-items: center; gap: 0.25rem; }
body.page-admin-passport-custody .pc-badge.is-warn { color: hsl(var(--warning)); border-color: hsl(var(--warning) / 0.4); background: hsl(var(--warning) / 0.12); }
body.page-admin-passport-custody .pc-badge.is-problem { color: hsl(var(--destructive)); border-color: hsl(var(--destructive) / 0.4); background: hsl(var(--destructive) / 0.12); }
body.page-admin-passport-custody details.pc-chain > summary { list-style: none; cursor: pointer; padding: 1rem; }
body.page-admin-passport-custody details.pc-chain > summary::-webkit-details-marker { display: none; }
body.page-admin-passport-custody details.pc-chain > summary .pc-chevron { transition: transform 0.15s; }
body.page-admin-passport-custody details.pc-chain[open] > summary .pc-chevron { transform: rotate(90deg); }
body.page-admin-passport-custody .pc-add { border: 1px solid hsl(var(--border)); border-radius: 0.75rem; background: hsl(var(--card-elevated)); padding: 0.85rem; }
body.page-admin-passport-custody .pc-add-grid { display: grid; gap: 0.5rem; }
@media (min-width: 640px) {
body.page-admin-passport-custody .pc-add-grid { grid-template-columns: 1fr 1fr; }
body.page-admin-passport-custody .pc-add-grid .pc-span2 { grid-column: 1 / -1; }
}

/* --- <style> in-page scopato: admin/payment.php (body.page-admin-payment) --- */
body.page-admin-payment .pd-label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; color: hsl(var(--foreground-muted)); }
body.page-admin-payment .pd-card { padding: 1.25rem; }
body.page-admin-payment .pd-card + .pd-card { margin-top: 1.25rem; }
body.page-admin-payment .pd-h2 { font-size: 0.9rem; font-weight: 600; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.85rem; }
@media (min-width: 1024px) {
body.page-admin-payment .pd-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.25rem; align-items: start; }
}

/* --- <style> in-page scopato: admin/request.php (body.page-admin-request) --- */
body.page-admin-request .rq-label { display: block; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.06em; color: hsl(var(--foreground-muted)); margin-bottom: 0.35rem; }
body.page-admin-request .rq-card { padding: 1.25rem; }
body.page-admin-request .rq-card + .rq-card { margin-top: 1.25rem; }
body.page-admin-request .rq-h2 { font-size: 0.9rem; font-weight: 600; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.85rem; }
@media (min-width: 1024px) {
body.page-admin-request .rq-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1.25rem; align-items: start; }
}

/* --- <style> in-page scopato: admin/results.php (body.page-admin-results) --- */
body.page-admin-results .res-hint { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.75rem; color: hsl(var(--foreground-muted)); }
body.page-admin-results .res-hint .res-ico { color: hsl(var(--primary)); display: inline-flex; flex-shrink: 0; margin-top: 0.1rem; }
body.page-admin-results .rc-list { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 0.65rem; }
body.page-admin-results .rc-card { display: block; border: 1px solid hsl(var(--border)); border-radius: 0.75rem; padding: 0.7rem 0.85rem; cursor: pointer; background: hsl(var(--card-elevated)); transition: border-color .15s ease, background .15s ease; }
body.page-admin-results .rc-card:hover { border-color: hsl(var(--foreground-muted)); }
body.page-admin-results .rc-card:has(input:checked) { border-color: hsl(var(--lime)); background: hsl(var(--lime) / 0.07); }
body.page-admin-results .rc-top { display: flex; align-items: flex-start; gap: 0.6rem; }
body.page-admin-results .rc-top input { margin-top: 0.2rem; flex-shrink: 0; }
body.page-admin-results .rc-ref { font-family: var(--font-mono, monospace); font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; color: hsl(var(--foreground-muted)); }
body.page-admin-results .rc-name { font-weight: 600; font-size: 0.85rem; margin-top: 0.1rem; }
body.page-admin-results .rc-meta { font-size: 0.72rem; color: hsl(var(--foreground-muted)); margin-top: 0.15rem; }
body.page-admin-results .res-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.75rem; margin-top: 0.95rem; }
body.page-admin-results .res-field { display: flex; flex-direction: column; gap: 0.3rem; }
body.page-admin-results .res-field > span { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.05em; color: hsl(var(--foreground-muted)); }
body.page-admin-results .res-file { display: flex; align-items: center; gap: 0.5rem; border: 2px dashed hsl(var(--border)); border-radius: 0.9rem; padding: 0.85rem 1rem; font-size: 0.8rem; color: hsl(var(--foreground-muted)); }
body.page-admin-results .res-recent { display: flex; flex-direction: column; }
body.page-admin-results .res-recent-row { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.65rem 0; border-top: 1px solid hsl(var(--border)); }
body.page-admin-results .res-recent-row:first-child { border-top: 0; }

/* --- <style> in-page scopato: admin/role-qa.php (body.page-admin-role-qa) --- */
body.page-admin-role-qa .qa-grid { display:grid; grid-template-columns:1fr; gap:1rem; }
@media (min-width:768px) {
body.page-admin-role-qa .qa-grid { grid-template-columns:1fr 1fr; }
}
body.page-admin-role-qa .qa-cred { margin-top:1rem; border:1px solid hsl(var(--lime) / .3); background:hsl(var(--card-elevated)); border-radius:.65rem; padding:.85rem; font-size:.78rem; display:flex; flex-direction:column; gap:.6rem; }
body.page-admin-role-qa .qa-cred-row { display:flex; align-items:center; gap:.5rem; }
body.page-admin-role-qa .qa-cred-row input { flex:1; min-width:0; font-family:var(--font-mono,monospace); font-size:.75rem; }
body.page-admin-role-qa .qa-list { list-style:disc; padding-left:1.1rem; margin:.25rem 0 0; display:flex; flex-direction:column; gap:.15rem; }

/* --- <style> in-page scopato: admin/roles.php (body.page-admin-roles) --- */
body.page-admin-roles .role-perm { display:flex; align-items:center; gap:.5rem; font-size:.78rem; border:1px solid hsl(var(--border)); background:hsl(var(--card-elevated)); border-radius:.65rem; padding:.5rem .7rem; cursor:pointer; }
body.page-admin-roles .role-perm input { accent-color:hsl(var(--lime)); }
body.page-admin-roles .role-perm-grid { display:grid; grid-template-columns:1fr; gap:.4rem; }
@media (min-width:640px) {
body.page-admin-roles .role-perm-grid { grid-template-columns:1fr 1fr; }
}

/* --- <style> in-page scopato: admin/service.php (body.page-admin-service) --- */
body.page-admin-service .svc-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (max-width: 640px) {
body.page-admin-service .svc-grid { grid-template-columns: 1fr; }
}
body.page-admin-service .svc-field { display: block; }
body.page-admin-service .svc-field.svc-full { grid-column: 1 / -1; }
body.page-admin-service .svc-label { display: block; font-size: 0.72rem; color: hsl(var(--foreground-muted)); margin-bottom: 0.3rem; }
body.page-admin-service .svc-switches { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.6rem 1rem; margin-top: 1.5rem; padding: 1rem; border: 1px solid hsl(var(--border)); border-radius: 0.9rem; background: hsl(var(--card-elevated) / 0.4); }
@media (max-width: 640px) {
body.page-admin-service .svc-switches { grid-template-columns: 1fr; }
}
body.page-admin-service .svc-switch { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; font-size: 0.85rem; cursor: pointer; }
body.page-admin-service .svc-price-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (max-width: 640px) {
body.page-admin-service .svc-price-cards { grid-template-columns: 1fr; }
}
body.page-admin-service .svc-tabs { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 1.25rem 0; border-bottom: 1px solid hsl(var(--border)); }
body.page-admin-service .svc-tab { font-size: 0.82rem; padding: 0.5rem 0.9rem; border-radius: 0.6rem 0.6rem 0 0; color: hsl(var(--foreground-muted)); text-decoration: none; border: 1px solid transparent; border-bottom: none; }
body.page-admin-service .svc-tab.is-active { color: hsl(var(--foreground)); background: hsl(var(--card-elevated) / 0.5); border-color: hsl(var(--border)); }
body.page-admin-service .svc-tab.is-disabled { opacity: 0.4; pointer-events: none; }
body.page-admin-service .svc-en { font-size: 0.78rem; padding: 0.45rem 0.6rem; border-radius: 0.5rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); color: hsl(var(--foreground) / 0.85); }
body.page-admin-service .svc-label.svc-label-flush { margin: 0; }
body.page-admin-service .svc-grid.svc-grid-tight { gap: 0.5rem; }

/* --- <style> in-page scopato: admin/team.php (body.page-admin-team) --- */
body.page-admin-team .team-chip { display:inline-flex; align-items:center; gap:.35rem; font-size:.62rem; text-transform:uppercase; letter-spacing:.05em; padding:.15rem .5rem; border-radius:999px; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); white-space:nowrap; }
body.page-admin-team .team-chip.is-owner { background:hsl(var(--lime) / .15); border-color:hsl(var(--lime) / .4); color:hsl(var(--lime-hover)); font-weight:700; }
body.page-admin-team .team-chip.is-custom { background:hsl(var(--foreground) / .06); }
body.page-admin-team .team-chip form { display:inline; margin:0; line-height:0; }
body.page-admin-team .team-chip .x { background:none; border:0; padding:0; margin:0; cursor:pointer; color:inherit; display:inline-flex; }
body.page-admin-team .team-chip .x:hover { color:hsl(var(--destructive)); }
body.page-admin-team .team-chip-select { height:1.55rem; padding:0 .5rem; border-radius:999px; background:hsl(var(--card-elevated)); border:1px solid hsl(var(--border)); font-size:.62rem; color:inherit; }
body.page-admin-team .team-roles { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; }
/* --- inline->classi pubbliche: p_reqdoc --- */
.reqdoc-field-flush { margin-bottom: 0; }
.reqdoc-check-icon { flex-shrink: 0; margin-top: .15rem; }
.reqdoc-form { margin-top: 1.5rem; display: grid; gap: .9rem; }
.reqdoc-fields { display: grid; gap: .9rem; grid-template-columns: 1fr; }
.reqdoc-result { margin-top: 2rem; display: grid; gap: 1rem; }
.reqdoc-rec-card { border: 1px solid hsl(var(--lime)/.35); background: hsl(var(--lime)/.06); border-radius: var(--radius); padding: 1.25rem; }
.reqdoc-rec-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; font-weight: 600; }
.prose .reqdoc-rec-title { font-size: 1.25rem; margin: .35rem 0 0; }
.prose .reqdoc-rec-aud { font-size: .9rem; margin-top: .35rem; }
.reqdoc-urgent { border: 1px solid hsl(var(--warning)/.5); background: hsl(var(--warning)/.12); border-radius: var(--radius); padding: 1rem; font-size: .9rem; line-height: 1.5; }
.reqdoc-doc-card { padding: 1rem; }
.reqdoc-card-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; margin-bottom: .6rem; }
.prose .reqdoc-doc-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; font-size: .9rem; }
.reqdoc-doc-item { display: flex; gap: .5rem; }
.reqdoc-review { border: 1px solid hsl(var(--lime)/.35); background: hsl(var(--lime)/.08); border-radius: var(--radius); padding: 1rem; font-size: .9rem; line-height: 1.5; }

/* --- inline->classi pubbliche: p_ptransp --- */
.ptransp-price-table { padding: 0; overflow: hidden; }
.ptransp-price-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 1rem; font-size: .9rem; }
.ptransp-price-value { font-weight: 600; white-space: nowrap; }
.ptransp-note { font-size: .8rem; }
.ptransp-maintained { margin-top: 2.5rem; padding: 1.25rem; }
.ptransp-maintained-title { font-weight: 600; }
.ptransp-maintained-text { font-size: .85rem; margin-top: .4rem; line-height: 1.6; }
.ptransp-maintained-meta { font-size: .78rem; margin-top: .5rem; }

/* --- inline->classi pubbliche: p_svcstat --- */
.svcstat-panel { padding: 0; overflow: hidden; }
.svcstat-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 1rem; font-size: .9rem; }
.svcstat-status { display: inline-flex; align-items: center; gap: .4rem; font-size: .78rem; font-weight: 600; }
.svcstat-dot { width: .5rem; height: .5rem; border-radius: 9999px; background: hsl(var(--success)); }
.svcstat-note { font-size: .78rem; margin-top: 1rem; }

/* --- inline->classi pubbliche: p_logout --- */
.logoutp-main { text-align: center; }
.logoutp-title { font-size: 1.5rem; margin-top: 2rem; }
.logoutp-form { margin-top: 1.5rem; }
.logoutp-cancel { margin-top: .75rem; }

/* --- inline->classi pubbliche: p_svcpage --- */
.svcpage-cta-row-end { margin-top: 2rem; }


/* --- tracker_form.php (widget app, classi uniche .tf-*) --- */
.tf-chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.tf-chip { display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0.5rem 0.85rem; border-radius: 0.75rem; border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated)); font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: background .15s, color .15s, border-color .15s; position: relative; }
.tf-chip input { position: absolute; opacity: 0; pointer-events: none; }
.tf-chip:has(input:checked) { background: hsl(var(--lime)); color: hsl(var(--lime-foreground)); border-color: hsl(var(--lime)); }
.tf-2col { display: grid; gap: 0.85rem; }
@media (min-width: 480px) { .tf-2col { grid-template-columns: 1fr 1fr; } }
.tf-check { display: flex; align-items: flex-start; gap: 0.6rem; font-size: 0.85rem; cursor: pointer; }
.tf-check input { width: 1.05rem; height: 1.05rem; margin-top: 0.1rem; accent-color: hsl(var(--lime)); flex-shrink: 0; }
/* --- inline->classi: tracker_form.php (widget app) --- */
/* --- inline->classi: inc/partials/tracker_form.php (wizard Aggiungi/Modifica visto) ---
   Prefix: trkf-. Riusa il vocabolario condiviso (.muted .tx-lime .tx-success
   .tx-warn .truncate) - non ridefinirlo qui.
   NB: .app-card e .btn* sono definite in style.css (che carica DOPO site.css),
   e .dropzone pure; per vincere la cascata gli override di loro proprieta'
   usano selettori composti (.app-card.trkf-*, .btn.trkf-*, .dropzone.trkf-*).
   I .field del form sono dentro .app-content (.app-content .field = 0,0,2,0):
   il flush usa .tracker-wizard .field.trkf-field-flush (0,0,3,0) per vincere. */

/* Campi senza margine inferiore (tutti i .field del wizard) */
.tracker-wizard .field.trkf-field-flush { margin-bottom: 0; }

/* Form radice del wizard */
.trkf-form { display: flex; flex-direction: column; gap: 1.5rem; padding-bottom: 2rem; }

/* Intestazione step */
.trkf-step-eyebrow { font-size: 0.62rem; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; }
.trkf-step-title { font-size: 1.4rem; font-weight: 600; margin-top: 0.25rem; }
.trkf-progress { margin-top: 0.75rem; }
.trkf-progress-fill { width: 25%; }

/* Corpo della card contenitore (override padding di .app-card) */
.app-card.trkf-card-body { display: flex; flex-direction: column; gap: 1.15rem; padding: 1.25rem; }

/* Colonna verticale interna agli step */
.trkf-col { display: flex; flex-direction: column; gap: 1.15rem; }

/* Riga icona + testo */
.trkf-row { display: flex; align-items: flex-start; gap: 0.6rem; }

/* Icone inline (wrapper span) */
.trkf-icon { flex-shrink: 0; }
.trkf-icon-top { flex-shrink: 0; margin-top: 0.1rem; }
.trkf-icon-primary { color: hsl(var(--primary)); }

/* Testi ausiliari */
.trkf-lead { font-weight: 600; font-size: 0.85rem; }
.trkf-sub { font-size: 0.72rem; margin-top: 0.15rem; }
.trkf-fine { font-size: 0.72rem; line-height: 1.6; }
.trkf-hint { font-size: 0.68rem; margin-top: 0.3rem; }
.trkf-select-hint { font-size: 0.68rem; margin-top: 0.4rem; }
.trkf-section-label { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; margin-bottom: 0.4rem; }
.trkf-check-note { display: block; font-size: 0.7rem; margin-top: 0.15rem; }
.trkf-check-gap { margin-top: 0.75rem; }

/* Card "non sono sicuro" (override background/border di .app-card) */
.app-card.trkf-unsure-card { background: hsl(var(--primary) / 0.05); border-color: hsl(var(--primary) / 0.25); display: flex; flex-direction: column; gap: 0.85rem; }

/* Riquadri informativi */
.trkf-box { border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated) / 0.4); border-radius: var(--radius); padding: 0.85rem; }
.trkf-warn-box { border: 1px solid hsl(var(--warning) / 0.3); background: hsl(var(--warning) / 0.06); border-radius: var(--radius); padding: 0.85rem; }
.trkf-reminder-box { border: 1px solid hsl(var(--lime) / 0.25); background: hsl(var(--lime) / 0.05); border-radius: var(--radius); padding: 1rem; display: flex; flex-direction: column; gap: 0.85rem; }

/* Upload: dropzone (override padding/text-align di .dropzone) e file caricato */
.dropzone.trkf-dropzone { display: flex; align-items: center; gap: 0.75rem; justify-content: flex-start; text-align: left; padding: 0.85rem 1rem; }
.trkf-drop-text { font-size: 0.8rem; }
.trkf-done { display: none; align-items: center; gap: 0.6rem; border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated) / 0.5); border-radius: var(--radius); padding: 0.6rem 0.85rem; }
.trkf-done-name { font-size: 0.8rem; flex: 1; min-width: 0; }
.btn.trkf-remove-btn { flex-shrink: 0; padding: 0.3rem; }

/* Barra azioni */
.trkf-actions { display: flex; gap: 0.6rem; }
.trkf-back-btn { min-height: 3rem; flex-shrink: 0; visibility: hidden; }
.trkf-next-btn { min-height: 3rem; flex: 1; }
.courier-logout-form { margin: 0; }
/* --- inline->classi: courier/index.php --- */
/* courier/index.php - pickups list */

/* Empty-state notice inside a section */
.coidx-empty { text-align:center;font-size:.85rem; }

/* Task link row: top-align icon with multiline body */
.coidx-task-row { align-items:flex-start; }

/* Lime icon badge (color via .tx-lime) */
.coidx-task-icon { height:2.5rem;width:2.5rem;border-radius:.75rem;background:hsl(var(--lime)/.15);display:grid;place-items:center;flex-shrink:0; }

/* Task body column, allowed to shrink/grow */
.coidx-task-body { flex:1;min-width:0; }

/* Address line: icon + text inline */
.coidx-addr-line { display:flex;align-items:center;gap:.4rem; }

/* Address label */
.coidx-addr { font-size:.92rem; }

/* Landmark line */
.coidx-landmark { font-size:.75rem;display:block; }

/* Meta line: date + package count */
.coidx-meta { font-size:.75rem;display:flex;gap:.75rem;margin-top:.3rem; }

/* Status badge spacing */
.coidx-badge { margin-top:.4rem; }
/* --- inline->classi: courier/task.php --- */
.cotask-landmark { font-size: .85rem; }
.cotask-badges { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .5rem; }
.cotask-client { margin-top: .75rem; font-size: .85rem; }
.cotask-case { font-size: .78rem; margin-top: .25rem; }
.cotask-maps { margin-top: .35rem; }
.cotask-hint { font-size: .8rem; margin: 0 0 .75rem; }
.cotask-actions { display: grid; gap: .5rem; }
.cotask-event-title { font-size: .85rem; font-weight: 600; }
.cotask-event-note { font-size: .8rem; }
.cotask-empty { font-size: .85rem; }

/* --- tools/index.php (Bali Visa Tools) --- */
.tools-grid { margin-top: 1.5rem; }
.tools-card { padding: 1rem; display: flex; flex-direction: column; gap: .75rem; text-decoration: none; }
.tools-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
.tools-tile { display: grid; place-items: center; height: 2.5rem; width: 2.5rem; border-radius: .65rem; background: hsl(var(--lime)/.12); color: hsl(var(--lime)); flex-shrink: 0; }
.tools-badge { font-size: .62rem; text-transform: uppercase; letter-spacing: .14em; border-radius: 999px; padding: .2rem .55rem; font-weight: 600; }
.tools-badge-live { background: hsl(var(--success)/.14); color: hsl(var(--success)); }
.tools-badge-soon { background: hsl(var(--foreground)/.05); color: hsl(var(--foreground-muted)); border: 1px solid hsl(var(--border)); }
.tools-card-name { font-weight: 600; }
.tools-card-desc { font-size: .9rem; margin-top: .25rem; line-height: 1.5; }
.tools-card-cta { margin-top: auto; font-weight: 600; font-size: .9rem; color: hsl(var(--foreground-muted)); }
.tools-card-cta-live { color: hsl(var(--lime)); }

/* Pagina servizio: spec-row a colpo d'occhio + avviso inside-Indonesia (port VisaSpecRow / InsideIndonesiaNotice) */
.svcpage-spec { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem; margin: 1rem 0; padding: .75rem; border: 1px solid hsl(var(--border)/.5); border-radius: var(--radius); background: hsl(var(--card-elevated)/.4); }
.svcpage-spec-item { display: flex; align-items: flex-start; gap: .5rem; padding: .55rem .7rem; border-radius: calc(var(--radius) - 4px); background: hsl(var(--background)/.45); }
.svcpage-spec-ico { color: hsl(var(--lime)); flex-shrink: 0; margin-top: .1rem; display: inline-flex; }
.svcpage-spec-tx { min-width: 0; }
.svcpage-spec dt { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: hsl(var(--foreground-muted)); }
.svcpage-spec dd { margin: 0; font-size: .9rem; font-weight: 600; color: hsl(var(--foreground)); line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (min-width: 640px) { .svcpage-spec { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .svcpage-spec { grid-template-columns: repeat(5, 1fr); } }

.svcpage-inside { display: flex; align-items: flex-start; gap: .75rem; margin: 1.25rem 0; padding: 1rem; border: 1px solid hsl(var(--ocean-deep)/.3); border-radius: var(--radius); background: hsl(var(--ocean-deep)/.06); }
.svcpage-inside-ico { color: hsl(var(--ocean-deep)); flex-shrink: 0; margin-top: .1rem; display: inline-flex; }
.svcpage-inside-t { font-weight: 600; font-size: .9rem; margin-bottom: .25rem; }
.svcpage-inside-b { font-size: .9rem; color: hsl(var(--foreground-muted)); line-height: 1.55; margin: 0; }

/* ---------- pagina guarantee (Visa Guarantee) ---------- */
.guarantee-badge { display: inline-flex; align-items: center; gap: 6px; background: hsl(var(--lime) / .12); color: hsl(var(--lime)); border-radius: var(--r-pill); padding: 6px 13px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; }

/* ---------- services/index.php: indice servizi "image-led" (VisaCard grid + CategoryTabs) ---------- */
/* CategoryTabs: pill filtranti via ?cat=, tab attiva evidenziata, conteggio per categoria. */
.svcidx-tabs { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; max-width: 760px; margin: 0 auto; }
.svcidx-tab { display: inline-flex; align-items: center; gap: .5rem; padding: .5rem 1rem; border-radius: var(--r-pill); border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated)); color: hsl(var(--foreground)); font-size: .9rem; font-weight: 600; text-decoration: none; transition: border-color .18s, background .18s, color .18s; }
.svcidx-tab:hover { border-color: hsl(var(--lime) / .5); }
.svcidx-tab.is-active { background: hsl(var(--lime)); border-color: hsl(var(--lime)); color: hsl(var(--lime-foreground)); }
.svcidx-tab-count { display: inline-flex; align-items: center; justify-content: center; min-width: 1.4rem; height: 1.4rem; padding: 0 .35rem; border-radius: var(--r-pill); font-size: .72rem; font-weight: 700; background: hsl(var(--foreground) / .06); color: hsl(var(--foreground-muted)); }
.svcidx-tab.is-active .svcidx-tab-count { background: hsl(var(--lime-foreground) / .22); color: hsl(var(--lime-foreground)); }

/* Griglia auto-fit: min(300px,100%) evita l'overflow orizzontale su schermi stretti. */
.svcidx-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); }
.card-premium.svcidx-card { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.svcidx-card-media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.svcidx-card-img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s ease; }
.card-premium.svcidx-card:hover .svcidx-card-img { transform: scale(1.05); }
.svcidx-card-badge { position: absolute; top: .75rem; left: .75rem; display: inline-flex; align-items: center; padding: .3rem .7rem; border-radius: var(--r-pill); background: hsl(var(--card-elevated) / .9); border: 1px solid hsl(var(--border)); color: hsl(var(--foreground)); font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; backdrop-filter: blur(4px); }
.svcidx-card-body { display: flex; flex-direction: column; gap: .6rem; padding: 1.05rem 1.15rem 1.25rem; flex: 1; }
.svcidx-card-title { font-size: 1.1rem; font-weight: 700; line-height: 1.25; margin: 0; }
.svcidx-card-title a { color: inherit; text-decoration: none; transition: color .18s; }
.svcidx-card-title a:hover { color: hsl(var(--lime)); }
.svcidx-card-price { display: flex; align-items: baseline; gap: .3rem; }
.svcidx-card-from { font-size: .8rem; font-weight: 600; color: hsl(var(--foreground-muted)); }
.svcidx-card-amt { font-size: 1.35rem; font-weight: 800; color: hsl(var(--foreground)); }
.svcidx-card-spec { display: flex; align-items: center; gap: .5rem; font-size: .85rem; color: hsl(var(--foreground-muted)); }
.svcidx-card-dot { color: hsl(var(--border)); }
.svcidx-card-cta { margin-top: auto; align-self: flex-start; }
.svcidx-empty { text-align: center; color: hsl(var(--foreground-muted)); font-size: .95rem; padding: 2.5rem 0; }

/* ---------- plans: billing toggle (segmented) + sconto membro + disclaimer ---------- */
.plans-billing { display: flex; justify-content: center; margin: 0 0 28px; }
.plans-billing-seg { display: inline-flex; gap: 4px; background: var(--bg); border: 1px solid var(--line-3); border-radius: var(--r-pill); padding: 4px; }
.plans-billing-opt { border: 0; background: none; cursor: pointer; font-family: var(--font); font-size: 13.5px; font-weight: 600; color: var(--muted); border-radius: var(--r-pill); padding: 8px 16px; transition: background .15s ease, color .15s ease; }
.plans-billing-opt:hover { color: var(--ink); }
.plans-billing-opt.is-active { background: var(--ink); color: #fff; }
/* Toggle prezzi: display gestito da JS via [data-billing] sulla griglia. */
.pricing[data-billing="monthly"] .plans-annual-only { display: none; }
.pricing[data-billing="annual"] .plans-monthly-only { display: none; }
/* Griglia a 5 piani (Free/Basic/Plus/Pro/Family): 5 col -> 3 -> 1. */
.pricing.plans5 { grid-template-columns: repeat(5, 1fr); gap: 16px; align-items: stretch; }
.pricing.plans5 .plan { padding: 22px 20px; }
.pricing.plans5 .plan-price { font-size: 30px; }
.pricing.plans5 .plan-badge { position: static; display: inline-block; margin-bottom: 12px; }
@media (max-width: 1080px) { .pricing.plans5 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .pricing.plans5 { grid-template-columns: 1fr; } }
.plans-annual-badge { display: inline-block; margin-bottom: 20px; font-size: 12px; font-weight: 700; color: #2a9d63; background: rgba(51, 209, 122, .12); border-radius: var(--r-pill); padding: 4px 11px; }
.plan-featured .plans-annual-badge { color: var(--green-l); background: rgba(126, 240, 168, .16); }
.plans-discount { margin: 0 0 20px; }
.plans-discount-main { font-size: 13px; font-weight: 700; color: #2a9d63; }
.plans-discount-eg { margin-top: 3px; font-size: 12px; font-weight: 500; color: var(--muted); }
.plan-featured .plans-discount-main { color: var(--green-l); }
.plan-featured .plans-discount-eg { color: rgba(255, 255, 255, .6); }
.plans-disclaimer { max-width: 680px; margin: 32px auto 0; border: 1px solid var(--line-2); border-radius: var(--r-lg); background: var(--bg-2); padding: 18px 20px; font-size: 13px; line-height: 1.6; color: var(--muted); }
.plans-disclaimer p { margin: 0; }
.plans-disclaimer p + p { margin-top: 10px; }
.plans-disclaimer strong { color: var(--ink); font-weight: 600; }
/* Chip di rassicurazione sotto l'hero dei piani. */
.plans-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 20px; }
.plans-chip { display: inline-flex; align-items: center; gap: 7px; background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--r-pill); padding: 7px 13px; font-size: 12px; font-weight: 600; color: var(--muted-2); }
.plans-chip svg { flex: none; stroke: var(--green); }
.plans-expert { margin-top: 24px; text-align: center; }
.plans-expert a { font-size: 14px; font-weight: 600; color: var(--blue); }
.plans-expert a:hover { text-decoration: underline; }

/* ---------- header: WhatsApp link ---------- */
.nav-whatsapp { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: #128C7E; padding: 9px 12px; border-radius: 10px; }
.nav-whatsapp:hover { background: rgba(18, 140, 126, .09); }

/* ---------- landing: Bali Arrival Pack strip (#quick) ---------- */
.arrival-grid { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: stretch; }
.arrival-card { display: flex; flex-direction: column; position: relative; }
.arrival-card-pack { border-color: rgba(36, 103, 240, .4); box-shadow: var(--shadow-lime); background: linear-gradient(180deg, #fff, rgba(36, 103, 240, .045)); }
.arrival-badge { position: absolute; top: -11px; left: 20px; display: inline-flex; align-items: center; gap: 5px; background: var(--blue); color: #fff; border-radius: var(--r-pill); padding: 4px 11px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; box-shadow: var(--shadow-cta-sm); }
.arrival-name { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .14em; color: hsl(var(--foreground-muted)); }
.arrival-price { display: flex; align-items: baseline; gap: 8px; margin-top: 8px; }
.arrival-price-v { font-family: var(--font-display); font-weight: 800; font-size: 34px; letter-spacing: -0.03em; }
.arrival-price-u { font-size: 12px; color: hsl(var(--foreground-muted)); }
.arrival-price-free { font-family: var(--font-display); font-weight: 800; font-size: 30px; letter-spacing: -0.03em; color: hsl(var(--lime)); }
.arrival-tagline { font-size: 14px; color: var(--muted-2); line-height: 1.55; margin: 10px 0 0; }
.arrival-breakdown { margin-top: 16px; border-top: 1px solid var(--line); }
.arrival-breakdown summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 6px; padding-top: 12px; font-size: 12px; font-weight: 600; color: var(--muted-2); }
.arrival-breakdown summary::-webkit-details-marker { display: none; }
.arrival-breakdown summary::after { content: ""; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform .15s ease; margin-top: -3px; }
.arrival-breakdown[open] summary::after { transform: rotate(-135deg); margin-top: 1px; }
.arrival-bd { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 12px 0 0; padding: 12px; background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--r); }
.arrival-bd-col { min-width: 0; }
.arrival-bd dt { font-size: 10px; text-transform: uppercase; letter-spacing: 0; color: hsl(var(--foreground-muted)); white-space: nowrap; }
.arrival-bd dd { margin: 3px 0 0; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }
.arrival-cta { margin-top: auto; }
.arrival-included { margin-top: auto; padding-top: 18px; display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: hsl(var(--foreground-muted)); }
.arrival-included svg { stroke: hsl(var(--lime)); }
.arrival-footnote { margin: 18px 0 0; font-size: 12px; color: hsl(var(--foreground-muted)); line-height: 1.5; }
@media (min-width: 640px) { .arrival-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .arrival-grid { grid-template-columns: repeat(4, 1fr); } }

/* ---------- landing: biometrics band (#biometrics) ---------- */
.lp-bio { display: flex; gap: 22px; align-items: flex-start; }
.lp-bio-ic { flex: none; width: 54px; height: 54px; border-radius: 15px; background: rgba(245, 196, 81, .16); display: grid; place-items: center; }
.lp-bio-ic svg { stroke: #c99a1f; }
.lp-bio-body { flex: 1; min-width: 0; }
.lp-bio-body .sec-title { font-size: 28px; margin: 8px 0 14px; }
.lp-bio-text { font-size: 15px; color: var(--muted-2); line-height: 1.6; margin: 0 0 12px; max-width: 68ch; }
.lp-bio-cta { margin-top: 6px; }
@media (max-width: 640px) { .lp-bio { flex-direction: column; } }

/* ---------- landing: families & referral band (#community) ---------- */
.lp-band-grid { display: grid; grid-template-columns: 1fr; gap: 20px; }
.lp-band { display: flex; flex-direction: column; align-items: flex-start; }
.lp-band-ic { width: 50px; height: 50px; border-radius: 14px; background: rgba(36, 103, 240, .1); display: grid; place-items: center; margin-bottom: 16px; }
.lp-band-ic svg { stroke: var(--blue); }
.lp-band-ic.gift { background: rgba(51, 209, 122, .14); }
.lp-band-ic.gift svg { stroke: #2a9d63; }
.lp-band-title { font-family: var(--font-display); font-weight: 800; font-size: 22px; letter-spacing: -0.02em; margin: 0 0 8px; }
.lp-band-sub { font-size: 14.5px; color: var(--muted-2); line-height: 1.6; margin: 0 0 18px; max-width: 46ch; }
.lp-band-cta { margin-top: auto; }
@media (min-width: 760px) { .lp-band-grid { grid-template-columns: 1fr 1fr; } }

/* --- tools: hub flagship + pagine tool (checker/overstay/expiry/reminder/photo) --- */
.tools-flagship { display: flex; gap: .85rem; align-items: flex-start; margin: 1.5rem 0; padding: 1rem 1.15rem; border: 1px solid hsl(var(--lime)/.4); background: hsl(var(--lime)/.05); border-radius: var(--radius); text-decoration: none; }
.tools-flagship:hover { background: hsl(var(--lime)/.09); }
.tools-flagship-tile { display: grid; place-items: center; height: 2.5rem; width: 2.5rem; border-radius: .65rem; background: hsl(var(--lime)/.15); color: hsl(var(--lime)); flex-shrink: 0; }
.tools-flagship-body { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
.tools-flagship-eyebrow { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; color: hsl(var(--lime)); font-weight: 700; }
.tools-flagship-title { font-family: var(--font-display); font-weight: 700; font-size: 1rem; color: var(--ink); }
.tools-flagship-desc { font-size: .9rem; color: hsl(var(--foreground-muted)); line-height: 1.55; margin-top: .1rem; }
.tools-flagship-cta { display: inline-flex; align-items: center; gap: .35rem; font-size: .9rem; font-weight: 600; color: hsl(var(--lime)); margin-top: .35rem; }

.tool-form { margin-top: 1.5rem; display: grid; gap: .9rem; }
.tool-field { margin-bottom: 0; }
.tool-field > label { display: block; font-size: 13px; font-weight: 600; color: hsl(var(--foreground-muted)); margin-bottom: .4rem; }
.tool-select, .tool-input { width: 100%; background: hsl(var(--card-elevated)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: .7rem .75rem; font: inherit; font-size: 15px; color: var(--ink); outline: none; }
.tool-select:focus, .tool-input:focus { border-color: hsl(var(--lime)); box-shadow: 0 0 0 3px hsl(var(--lime)/.12); }

.tool-grid { margin-top: 1.5rem; display: grid; gap: 1rem; grid-template-columns: 1fr; }
.tool-card { border: 1px solid hsl(var(--border)); background: hsl(var(--card)); border-radius: var(--radius); padding: 1.25rem; }
.tool-card-fields { display: grid; gap: .9rem; }

.tool-empty { margin-top: 1.5rem; border: 1px dashed hsl(var(--border)); border-radius: var(--radius); padding: 2rem 1.25rem; text-align: center; }
.tool-empty-title { font-weight: 600; }
.tool-empty-body { font-size: .9rem; margin-top: .35rem; line-height: 1.5; }

.tool-result { margin-top: 1.5rem; display: grid; gap: 1rem; }
.tool-result-head { display: flex; align-items: center; gap: .75rem; }
.tool-flag { font-size: 2rem; line-height: 1; }
.tool-result-eyebrow { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; font-weight: 600; }
.prose .tool-result-title { font-size: 1.35rem; margin: .15rem 0 0; }

.tool-callout { border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated)); border-radius: var(--radius); padding: 1rem 1.15rem; display: grid; gap: .35rem; }
.tool-stat-line { font-size: .95rem; }
.tool-stat-line strong { font-size: 1.1rem; }

.tool-rec-card { border: 1px solid hsl(var(--lime)/.35); background: hsl(var(--lime)/.06); border-radius: var(--radius); padding: 1.25rem; display: grid; gap: .6rem; justify-items: start; }
.tool-rec-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; font-weight: 600; }
.tool-rec-body { font-size: .92rem; line-height: 1.6; margin: 0; }

.tool-note { border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: 1rem 1.15rem; }
.tool-note-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; margin-bottom: .35rem; }
.tool-note-body { font-size: .9rem; line-height: 1.6; margin: .35rem 0 0; color: hsl(var(--foreground-muted)); }

.tool-common-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .16em; margin-bottom: .6rem; }
.tool-common-grid { display: grid; gap: .5rem; grid-template-columns: 1fr; }
.tool-common-link { display: flex; align-items: center; justify-content: space-between; gap: .5rem; border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: .7rem .9rem; font-size: .9rem; font-weight: 600; text-decoration: none; color: var(--ink); }
.tool-common-link:hover { border-color: hsl(var(--lime)/.5); }

.tool-disclaimer { font-size: .78rem; color: hsl(var(--foreground-muted)); line-height: 1.6; margin-top: 1rem; }

.tool-num { font-size: 2.75rem; font-weight: 800; line-height: 1; letter-spacing: -.02em; color: var(--ink); }
.tool-num-label { font-size: .65rem; text-transform: uppercase; letter-spacing: .12em; color: hsl(var(--foreground-muted)); font-weight: 600; margin-top: .25rem; }
.tool-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-top: 1rem; }
.tool-metric { border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: .75rem .85rem; }
.tool-metric-label { font-size: .62rem; text-transform: uppercase; letter-spacing: .12em; color: hsl(var(--foreground-muted)); }
.tool-metric-value { font-size: 1.1rem; font-weight: 700; margin-top: .15rem; }

.tool-warn { margin-top: 1rem; border: 1px solid hsl(var(--warning)/.5); background: hsl(var(--warning)/.12); border-radius: var(--radius); padding: .9rem 1rem; font-size: .88rem; line-height: 1.55; }
.tool-actions { margin-top: 1rem; display: grid; gap: .6rem; }

.tool-banner { border-radius: var(--radius); padding: 1rem 1.15rem; border: 1px solid hsl(var(--border)); font-weight: 600; font-size: .95rem; }
.tool-banner-ok { border-color: hsl(var(--lime)/.4); background: hsl(var(--lime)/.08); }
.tool-banner-soon { border-color: hsl(var(--warning)/.5); background: hsl(var(--warning)/.12); }
.tool-banner-critical, .tool-banner-expired { border-color: hsl(var(--destructive)/.5); background: hsl(var(--destructive)/.1); }

.tool-daterow { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid hsl(var(--border)); font-size: .92rem; }
.tool-daterow-value { font-weight: 700; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.tool-safe { color: hsl(var(--lime)); }

.tool-reminders { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: .5rem; text-align: center; }
.tool-reminder { border: 1px solid hsl(var(--border)); border-radius: .6rem; padding: .6rem .2rem; }
.tool-reminder-active { border-color: hsl(var(--lime)/.5); background: hsl(var(--lime)/.12); }
.tool-reminder-num { font-size: 1.15rem; font-weight: 800; }
.tool-reminder-word { font-size: .62rem; text-transform: uppercase; letter-spacing: .08em; color: hsl(var(--foreground-muted)); }

.tool-photo-grid { margin-top: 1.5rem; display: grid; gap: 1rem; grid-template-columns: 1fr; }
.tool-photo-panel { border: 1px solid hsl(var(--border)); background: hsl(var(--card)); border-radius: var(--radius); padding: 1.25rem; }
.tool-photo-preview-panel { display: flex; flex-direction: column; align-items: center; }
.tool-photo-kicker { font-size: .65rem; text-transform: uppercase; letter-spacing: .14em; font-weight: 600; display: flex; align-items: center; gap: .4rem; }
.tool-photo-drop { position: relative; margin-top: .9rem; display: flex; align-items: center; justify-content: center; height: 11rem; border: 1px dashed hsl(var(--border)); border-radius: var(--radius); background: hsl(var(--card-elevated)); cursor: pointer; text-align: center; }
.tool-photo-drop:hover { border-color: hsl(var(--lime)/.5); }
.tool-photo-input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); border: 0; }
.tool-photo-drop-text { font-size: .9rem; color: hsl(var(--foreground-muted)); padding: 0 1rem; }
.tool-photo-fb { font-size: .82rem; margin: .75rem 0 0; line-height: 1.5; min-height: 1.2em; }
.prose .tool-photo-req { list-style: disc; margin: 1rem 0 0; padding-left: 1.25rem; font-size: .88rem; color: hsl(var(--foreground-muted)); }
.prose .tool-photo-req li { margin-bottom: .3rem; }
.tool-photo-frame { margin-top: .9rem; width: 10rem; height: 15rem; border: 1px solid hsl(var(--border)); border-radius: .6rem; overflow: hidden; background: hsl(var(--card-elevated)); display: grid; place-items: center; }
.tool-photo-img { width: 100%; height: 100%; object-fit: cover; }
.tool-photo-frame-ph { font-size: .8rem; color: hsl(var(--foreground-muted)); }
.tool-photo-canvas { display: none; }
.tool-photo-actions { margin-top: 1rem; display: grid; gap: .5rem; width: 100%; }
.tool-photo-download.is-disabled { opacity: .5; pointer-events: none; }

/* Visa Checker: card raccomandazione (title/subtitle/reason + azioni). */
.tool-rec-title { font-size: 1.5rem; font-weight: 800; line-height: 1.15; letter-spacing: -.01em; color: var(--ink); }
.tool-rec-sub { font-size: .9rem; }
.tool-rec-actions { width: 100%; }

/* Liste bullet con icona (checker "how" / expiry "when to file"). */
.prose ul.tool-bullets { list-style: none; margin: 1rem 0 0; padding: 0; display: grid; gap: .5rem; }
.prose .tool-bullets li { display: flex; align-items: flex-start; gap: .5rem; margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--muted-2); }
.tool-bullets li svg { flex: none; margin-top: .1rem; color: hsl(var(--lime)); }

/* Expiry/Reminder: label con icona, blocco schedule, warning con icona. */
.tool-field label.tool-label-icon { display: flex; align-items: center; gap: .4rem; }
.tool-field label.tool-label-icon svg { flex: none; }
.tool-schedule { border: 1px solid hsl(var(--border)); background: hsl(var(--card-elevated)); border-radius: var(--radius); padding: 1rem 1.15rem; }
.tool-warn-flex { display: flex; align-items: flex-start; gap: .5rem; }
.tool-warn-icon { flex: none; margin-top: .1rem; color: hsl(var(--warning)); }
.tool-inline-link { color: hsl(var(--lime)); }
.tool-inline-link:hover { text-decoration: underline; }

@media (min-width: 760px) {
	.tool-grid, .tool-photo-grid { grid-template-columns: 1fr 1fr; align-items: start; }
	.tool-common-grid { grid-template-columns: 1fr 1fr; }
}

/* Disclaimer globale di piattaforma nel footer (VisioDisclaimer). */
.footer-disclaimer { display: flex; align-items: flex-start; gap: .6rem; margin-top: 32px; padding: 14px 16px; border: 1px solid rgba(255, 255, 255, .12); border-radius: 14px; background: rgba(255, 255, 255, .04); }
.footer-disclaimer-icon { flex-shrink: 0; margin-top: 2px; color: hsl(var(--warning)); }
.footer-disclaimer-text { margin: 0; font-size: 12px; line-height: 1.6; color: rgba(255, 255, 255, .6); }

/* Signup: nota informativa sotto un campo (es. WhatsApp). Riusa .field/.auth-terms. */
.auth-hint { margin: 6px 0 0; font-size: 12px; color: var(--muted); line-height: 1.5; }

/* Tracker: validazione leggera WhatsApp E.164 (stato .is-invalid gestito da tracker-form.js). */
.trkf-wa-field.is-invalid input { box-shadow: 0 0 0 2px hsl(var(--destructive) / .45); }
.trkf-wa-field.is-invalid .trkf-hint { color: hsl(var(--destructive)); }

/* Arrival Pack - pagina servizio dedicata /services/b1-evoa (riusa .arrival-*, .card, .check-list). */
.arrivalpk-hero-grid { display: grid; grid-template-columns: 1fr; gap: 32px; align-items: center; }
.arrivalpk-eyebrow-pill { display: inline-flex; align-items: center; gap: 7px; padding: 6px 13px; border-radius: var(--r-pill); background: hsl(var(--lime) / .1); color: hsl(var(--lime)); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.arrivalpk-eyebrow-pill svg { stroke: currentColor; }
.arrivalpk-h1 { font-family: var(--font-display); font-weight: 800; font-size: clamp(30px, 5vw, 52px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 0; }
.arrivalpk-sub { margin: 18px 0 0; font-size: 17px; line-height: 1.6; color: var(--muted-2); max-width: 42ch; }
.arrivalpk-cta-row { display: flex; flex-wrap: wrap; gap: 12px; margin: 24px 0 0; }
.arrivalpk-facts { display: flex; flex-wrap: wrap; gap: 10px 20px; margin: 22px 0 0; }
.arrivalpk-fact { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: hsl(var(--foreground-muted)); }
.arrivalpk-fact svg { stroke: hsl(var(--lime)); flex: none; }
.arrivalpk-hero-aside { display: flex; }
.arrivalpk-hero-aside > .arrival-card { flex: 1; }
.arrivalpk-note { margin: 14px 0 0; font-size: 13px; color: hsl(var(--foreground-muted)); line-height: 1.55; }
@media (min-width: 900px) {
	.arrivalpk-hero-grid { grid-template-columns: 1.15fr .85fr; gap: 48px; }
}

/* Service page: hint risparmio membro Visio Plus sotto il prezzo. */
.prose .svcpage-memberhint { margin: 8px 0 0; font-size: 13px; color: hsl(var(--foreground-muted)); }

/* Service page - ApplicantsSelector (widget gruppo, math replicata da service-page.js). */
.svcpage-applicants { margin: 1rem 0 .5rem; padding: .9rem 1rem; border: 1px solid hsl(var(--border) / .5); border-radius: var(--radius); background: hsl(var(--card-elevated) / .4); }
.svcpage-applicants-head { display: flex; align-items: center; gap: .75rem; }
.svcpage-applicants-ico { display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; flex-shrink: 0; border-radius: calc(var(--radius) - 2px); background: hsl(var(--lime) / .12); color: hsl(var(--lime)); }
.svcpage-applicants-ico svg { stroke: currentColor; }
.svcpage-applicants-copy { min-width: 0; flex: 1; }
.svcpage-applicants-t { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; color: hsl(var(--foreground-muted)); }
.svcpage-applicants-sub { font-size: .85rem; color: hsl(var(--foreground) / .85); line-height: 1.35; }
.svcpage-applicants-stepper { display: flex; align-items: center; gap: .5rem; flex-shrink: 0; }
.svcpage-applicants-btn { display: inline-flex; align-items: center; justify-content: center; width: 2.1rem; height: 2.1rem; border: 1px solid hsl(var(--border) / .5); border-radius: 999px; background: transparent; color: hsl(var(--foreground)); font-size: 1.15rem; line-height: 1; cursor: pointer; transition: border-color .15s ease; }
.svcpage-applicants-btn:hover:not(:disabled) { border-color: hsl(var(--lime) / .5); }
.svcpage-applicants-btn:disabled { opacity: .4; cursor: default; }
.svcpage-applicants-n { min-width: 2ch; text-align: center; font-weight: 700; font-size: 1.15rem; color: hsl(var(--foreground)); }
.svcpage-applicants-detail { display: none; margin: .9rem 0 0; padding: .75rem 0 0; border-top: 1px solid hsl(var(--border) / .4); }
.svcpage-applicants-detail.is-open { display: block; }
.svcpage-applicants-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; font-size: .9rem; margin: 0 0 .4rem; }
.svcpage-applicants-row dt { margin: 0; color: hsl(var(--foreground-muted)); }
.svcpage-applicants-row dd { margin: 0; font-weight: 600; color: hsl(var(--foreground)); }
.svcpage-applicants-row-save dt, .svcpage-applicants-row-save dd { color: hsl(var(--lime)); }
.svcpage-applicants-row-total { padding-top: .5rem; margin-top: .5rem; border-top: 1px solid hsl(var(--border) / .4); }
.svcpage-applicants-row-total dt { font-weight: 700; color: hsl(var(--foreground)); }
.svcpage-applicants-row-total dd { font-family: var(--font-display); font-size: 1.25rem; font-weight: 800; }
.prose .svcpage-applicants-note { margin: .5rem 0 0; font-size: .72rem; color: hsl(var(--foreground-muted)); line-height: 1.5; }

/* Service page - PurchaseRail (barra sticky in fondo, mobile-first). */
.svcpage-rail { position: sticky; bottom: 0; z-index: 20; margin: 2rem 0 0; padding: .7rem .9rem; border-top: 1px solid hsl(var(--border) / .6); border-radius: var(--radius) var(--radius) 0 0; background: hsl(var(--card) / .96); backdrop-filter: blur(8px); box-shadow: 0 -6px 20px -12px hsl(var(--foreground) / .35); }
.svcpage-rail-inner { display: flex; align-items: center; gap: .75rem; }
.svcpage-rail-info { min-width: 0; flex: 1; }
.svcpage-rail-name { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; color: hsl(var(--foreground-muted)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.svcpage-rail-price { display: flex; align-items: baseline; gap: .35rem; flex-wrap: wrap; margin-top: .1rem; }
.svcpage-rail-caption { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: hsl(var(--foreground-muted)); }
.svcpage-rail-from { font-size: .8rem; font-weight: 600; color: hsl(var(--foreground-muted)); }
.svcpage-rail-amount { font-size: 1.15rem; font-weight: 800; color: hsl(var(--foreground)); }
.svcpage-rail-actions { display: flex; align-items: center; gap: .5rem; flex-shrink: 0; }
.prose a.svcpage-rail-wa { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem .7rem; border: 1px solid hsl(var(--border) / .5); border-radius: calc(var(--radius) - 2px); color: hsl(var(--foreground)); font-size: .82rem; font-weight: 600; text-decoration: none; }
.prose a.svcpage-rail-wa:hover { border-color: hsl(var(--lime) / .5); }
.svcpage-rail-wa svg { stroke: hsl(var(--lime)); flex: none; }
.svcpage-rail-apply { flex-shrink: 0; }
@media (max-width: 480px) {
	.svcpage-rail-caption { display: none; }
	.svcpage-rail-wa span { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
}

/* ============================================================= */
/* Landing.tsx port — home pubblica (index.php). Prefisso .lp-*   */
/* Riusa .container/.section-pad/.card-premium/.btn/.eyebrow/     */
/* .sec-title/.sec-sub/.arrival-*/.svcidx-*. Token hex esistenti. */
/* ============================================================= */

/* Heading di sezione allineato a sinistra (variante di .sec-head-center). */
.lp-sec-head { max-width: 680px; margin: 0 0 40px; }
.lp-sec-head .eyebrow { margin-bottom: 12px; }
.lp-sec-head .sec-sub { margin-top: 14px; }

/* ---------- HERO ---------- */
.lp-hero { background: linear-gradient(90deg, var(--bg) 0%, rgba(244, 245, 251, .9) 42%, rgba(244, 245, 251, .3) 100%), url('/assets/img/bali-hero.png') center right / cover no-repeat; }
.lp-hero-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; max-width: 34rem; }
.lp-chip { font-size: 12px; padding: 5px 11px; border-radius: var(--r-pill); background: var(--card); border: 1px solid var(--line-3); color: var(--muted-2); }
.lp-reviews { display: flex; flex-wrap: wrap; gap: 12px; margin: 0 0 24px; }
.lp-review { display: inline-flex; align-items: center; gap: 8px; padding: 8px 13px; border-radius: 16px; background: var(--card); border: 1px solid var(--line-3); box-shadow: var(--shadow-badge); font-size: 12px; font-weight: 700; color: var(--ink); }
.lp-review svg { color: var(--gold); flex: none; }
.lp-hero-visual { display: flex; justify-content: center; }

/* ---------- Dashboard mock (hero + platform) ---------- */
.lp-mock { width: 100%; max-width: 420px; padding: 22px; }
.lp-mock-head { display: flex; align-items: center; justify-content: space-between; }
.lp-mock-live { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.lp-mock-dot { width: 8px; height: 8px; border-radius: 999px; background: var(--blue); }
.lp-mock-brand { font-size: 12px; color: var(--muted); }
.lp-mock-k { font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--muted); }
.lp-mock-visa { margin-top: 16px; border-radius: var(--r-lg); padding: 18px; background: linear-gradient(135deg, #1f3f96 0%, var(--ink) 100%); color: #fff; }
.lp-mock-visa .lp-mock-k { color: rgba(255, 255, 255, .75); }
.lp-mock-visa-name { margin-top: 4px; font-size: 20px; font-weight: 800; letter-spacing: -.02em; }
.lp-mock-visa-row { margin-top: 18px; display: flex; align-items: flex-end; justify-content: space-between; }
.lp-mock-visa-right { text-align: right; }
.lp-mock-days { font-size: 34px; font-weight: 800; line-height: 1; margin-top: 4px; }
.lp-mock-status { font-size: 13px; font-weight: 700; margin-top: 4px; }
.lp-mock-bar { margin-top: 16px; height: 6px; border-radius: 999px; background: rgba(255, 255, 255, .2); overflow: hidden; }
.lp-mock-bar > span { display: block; height: 100%; width: 60%; background: #fff; border-radius: 999px; }
.lp-mock-row { margin-top: 14px; display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--line-2); border-radius: var(--r); background: var(--bg-2); }
.lp-mock-row-ic { width: 34px; height: 34px; border-radius: 9px; background: rgba(245, 196, 81, .25); color: var(--ink); display: grid; place-items: center; flex: none; }
.lp-mock-row-body { flex: 1; min-width: 0; }
.lp-mock-row-t { font-size: 13px; font-weight: 700; }
.lp-mock-ready { font-size: 12px; font-weight: 700; color: var(--blue); flex: none; }
.lp-mock-renew { margin-top: 12px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 14px; border-radius: var(--r); background: var(--blue); color: #fff; font-weight: 700; font-size: 12px; }
.lp-mock-renew-l { display: inline-flex; align-items: center; gap: 8px; }
.lp-mock-renew-r { opacity: .8; }
.lp-mock-row-sm { padding: 10px 12px; }
.lp-mock-row-sm svg { color: var(--ink); flex: none; }
.lp-mock-row-t2 { flex: 1; min-width: 0; font-size: 12px; color: var(--muted-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-mock-pct { font-size: 12px; font-weight: 700; color: var(--green); }
.lp-mock-floats { margin-top: 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.lp-mock-float { display: flex; align-items: center; gap: 10px; padding: 10px; border: 1px solid var(--line-2); border-radius: var(--r); }
.lp-mock-float-ic { width: 28px; height: 28px; border-radius: 8px; background: rgba(36, 103, 240, .12); color: var(--blue); display: grid; place-items: center; flex: none; }
.lp-mock-float-v { font-size: 12px; font-weight: 700; }

/* ---------- Visa guarantee strip ---------- */
.lp-guarantee { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: linear-gradient(90deg, rgba(36, 103, 240, .1), rgba(36, 103, 240, .04) 50%, transparent); }
.lp-guarantee-inner { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; padding-top: 20px; padding-bottom: 20px; }
.lp-guarantee-head { display: flex; align-items: center; gap: 12px; }
.lp-guarantee-ic { width: 40px; height: 40px; border-radius: 12px; background: rgba(36, 103, 240, .15); color: var(--blue); display: grid; place-items: center; flex: none; }
.lp-guarantee-kicker { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; color: var(--blue); }
.lp-guarantee-title { font-size: 16px; font-weight: 700; color: var(--ink); line-height: 1.3; }
.lp-guarantee-body { flex: 1; min-width: 240px; font-size: 13px; color: var(--muted-2); line-height: 1.5; margin: 0; }
.lp-guarantee-cta { display: inline-flex; align-items: center; gap: 6px; padding: 9px 18px; border-radius: var(--r-pill); background: var(--blue); color: #fff; font-size: 13px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.lp-guarantee-cta:hover { background: var(--blue-d); }

/* ---------- Trust bar ---------- */
.lp-trustbar { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--bg-2); }
.lp-trustbar-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; padding-top: 34px; padding-bottom: 34px; }
.lp-trustbar-item { display: flex; align-items: center; gap: 10px; }
.lp-trustbar-ic { width: 34px; height: 34px; border-radius: 9px; background: rgba(36, 103, 240, .1); color: var(--blue); display: grid; place-items: center; flex: none; }
.lp-trustbar-label { font-size: 13px; font-weight: 700; color: var(--muted-2); }

/* ---------- Who Visio is for ---------- */
.lp-who-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.lp-who-card { padding: 24px; display: flex; flex-direction: column; }
.lp-who-ic { width: 44px; height: 44px; border-radius: 12px; background: rgba(36, 103, 240, .1); color: var(--blue); display: grid; place-items: center; margin-bottom: 16px; }
.lp-who-title { font-size: 16px; font-weight: 700; letter-spacing: -.01em; }
.lp-who-body { margin: 6px 0 0; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.lp-who-cta { margin-top: 12px; display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 700; color: var(--blue); text-decoration: none; }
.lp-who-cta:hover { text-decoration: underline; }

/* Families band */
.lp-fam-band { margin-top: 28px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; padding: 24px; border: 1px solid rgba(36, 103, 240, .25); border-radius: var(--r-lg); background: rgba(36, 103, 240, .05); }
.lp-fam-band-body { flex: 1; min-width: 260px; }
.lp-fam-band-kicker { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .16em; color: var(--blue); }
.lp-fam-band-title { margin: 6px 0 0; font-family: var(--font-display); font-size: 22px; font-weight: 800; letter-spacing: -.02em; line-height: 1.2; }
.lp-fam-band-sub { margin: 8px 0 0; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.lp-fam-band-cta { flex: none; }

/* ---------- Tracker section ---------- */
.lp-tracker-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.lp-tracker-feats { margin: 24px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lp-tracker-feat { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 600; color: var(--muted-2); }
.lp-tracker-feat-ic { width: 32px; height: 32px; border-radius: 8px; background: rgba(36, 103, 240, .1); color: var(--blue); display: grid; place-items: center; flex: none; }
.lp-tracker-note { margin: 16px 0 0; font-size: 12px; color: var(--muted); line-height: 1.6; max-width: 30rem; }
.lp-tracker-visual { display: flex; justify-content: center; }
.lp-trackcard { width: 100%; max-width: 460px; padding: 24px; }
.lp-trackcard-head { display: flex; align-items: center; justify-content: space-between; }
.lp-trackcard-free { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .1em; padding: 3px 9px; border-radius: 999px; background: rgba(36, 103, 240, .15); color: var(--blue); }
.lp-trackcard-visa { margin-top: 16px; padding: 18px; border: 1px solid var(--line-2); border-radius: var(--r-lg); background: var(--bg-2); }
.lp-trackcard-visa-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.lp-trackcard-visa-name { margin-top: 3px; font-size: 18px; font-weight: 800; letter-spacing: -.02em; }
.lp-trackcard-warn { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; padding: 3px 9px; border-radius: 999px; background: rgba(245, 196, 81, .22); color: #a9791a; white-space: nowrap; }
.lp-trackcard-stats { margin-top: 16px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lp-trackcard-days { font-size: 28px; font-weight: 800; line-height: 1; margin-top: 3px; }
.lp-trackcard-date { font-size: 14px; font-weight: 700; margin-top: 6px; }
.lp-trackcard-bar { margin-top: 16px; height: 6px; border-radius: 999px; background: var(--line-3); overflow: hidden; }
.lp-trackcard-bar > span { display: block; height: 100%; width: 60%; background: var(--gold); border-radius: 999px; }
.lp-trackcard-sponsor { margin-top: 16px; display: flex; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--line-2); border-radius: var(--r); background: var(--bg-2); }
.lp-trackcard-sponsor-ic { width: 36px; height: 36px; border-radius: 9px; background: rgba(51, 209, 122, .15); color: #2a9d63; display: grid; place-items: center; flex: none; }
.lp-trackcard-sponsor-body { flex: 1; min-width: 0; }
.lp-trackcard-sponsor-name { font-size: 14px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-trackcard-msg { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; color: #2a9d63; padding: 5px 10px; border-radius: 8px; background: rgba(51, 209, 122, .12); flex: none; }
.lp-trackcard-actions { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.lp-trackcard-btn { text-align: center; font-size: 12px; font-weight: 700; padding: 11px 10px; border-radius: var(--r); }
.lp-trackcard-btn-primary { background: var(--blue); color: #fff; }
.lp-trackcard-btn-ghost { background: var(--bg); border: 1px solid var(--line-3); color: var(--ink); }

/* ---------- Visa checker teaser ---------- */
.lp-checker-cta { margin-top: 22px; }
.lp-checker-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 32px; align-items: start; }
.lp-checker-questions { display: grid; gap: 12px; }
.lp-checker-q { padding: 18px; display: flex; align-items: flex-start; gap: 16px; }
.lp-checker-q-ic { width: 40px; height: 40px; border-radius: 12px; background: rgba(36, 103, 240, .12); color: var(--blue); display: grid; place-items: center; flex: none; }
.lp-checker-q-body { flex: 1; min-width: 0; }
.lp-checker-q-num { font-size: 11px; text-transform: uppercase; letter-spacing: .16em; color: var(--muted); }
.lp-checker-q-title { margin-top: 2px; font-size: 16px; font-weight: 700; letter-spacing: -.01em; }
.lp-checker-chips { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 7px; }
.lp-checker-chip { font-size: 12px; padding: 4px 11px; border-radius: 999px; background: var(--bg-2); border: 1px solid var(--line-2); color: var(--muted-2); }
.lp-checker-rec { padding: 26px; position: sticky; top: 96px; border-color: rgba(36, 103, 240, .25); background: linear-gradient(160deg, var(--card), rgba(36, 103, 240, .06)); }
.lp-checker-rec-label { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; color: var(--blue); }
.lp-checker-rec-name { margin-top: 8px; font-size: 24px; font-weight: 800; letter-spacing: -.02em; }
.lp-checker-rec-desc { margin: 8px 0 0; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.lp-checker-rec-meta { margin-top: 20px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lp-checker-rec-cell { padding: 12px; border-radius: var(--r); background: var(--bg-2); border: 1px solid var(--line-2); }
.lp-checker-rec-v { margin-top: 3px; font-size: 14px; font-weight: 700; }
.lp-checker-rec-docs { margin-top: 16px; padding: 14px; border-radius: var(--r); background: var(--bg-2); border: 1px solid var(--line-2); }
.lp-checker-rec-list { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 8px; }
.lp-checker-rec-list li { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.lp-checker-rec-list svg { color: var(--blue); flex: none; }
.lp-checker-rec-cta { margin-top: 22px; width: 100%; }

/* ---------- Pain point ---------- */
.lp-pain-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.lp-pain-card { padding: 24px; border-color: rgba(245, 196, 81, .3); }
.lp-pain-ic { width: 40px; height: 40px; border-radius: 12px; background: rgba(245, 196, 81, .2); color: #a9791a; display: grid; place-items: center; margin-bottom: 12px; }
.lp-pain-title { font-size: 16px; font-weight: 700; letter-spacing: -.01em; }
.lp-pain-body { margin: 6px 0 0; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.lp-pain-solution { margin-top: 24px; padding: 28px; display: flex; flex-wrap: wrap; align-items: center; gap: 18px; border-color: rgba(36, 103, 240, .25); background: linear-gradient(135deg, rgba(36, 103, 240, .08), transparent); }
.lp-pain-solution-ic { width: 48px; height: 48px; border-radius: 14px; background: var(--blue); color: #fff; display: grid; place-items: center; flex: none; }
.lp-pain-solution-t { flex: 1; min-width: 240px; font-size: 20px; font-weight: 800; letter-spacing: -.02em; }

/* ---------- Platform ---------- */
.lp-platform-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 40px; align-items: center; }
.lp-platform-visual { display: flex; justify-content: center; }
.lp-platform-features { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lp-platform-card { padding: 20px; }
.lp-platform-ic { width: 36px; height: 36px; border-radius: 9px; background: rgba(36, 103, 240, .1); color: var(--blue); display: grid; place-items: center; margin-bottom: 12px; }
.lp-platform-title { font-size: 14px; font-weight: 700; letter-spacing: -.01em; }
.lp-platform-body { margin: 6px 0 0; font-size: 12.5px; color: var(--muted-2); line-height: 1.6; }

/* ---------- How it works ---------- */
.lp-how-media { border-radius: var(--r-xl); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow-badge); margin-bottom: 40px; }
.lp-how-media img { display: block; width: 100%; height: 240px; object-fit: cover; }
.lp-how-head { margin-bottom: 28px; }
.lp-how-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.lp-how-card { padding: 20px; }
.lp-how-top { display: flex; align-items: center; justify-content: space-between; }
.lp-how-num { font-size: 30px; font-weight: 800; letter-spacing: -.02em; color: rgba(36, 103, 240, .28); line-height: 1; }
.lp-how-ic { width: 36px; height: 36px; border-radius: 10px; background: rgba(36, 103, 240, .1); color: var(--blue); display: grid; place-items: center; }
.lp-how-title { margin-top: 14px; font-size: 15px; font-weight: 700; letter-spacing: -.01em; line-height: 1.35; }

/* ---------- Comparison ---------- */
.lp-comp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.lp-comp-card { padding: 26px; }
.lp-comp-card-ours { border-color: rgba(36, 103, 240, .35); box-shadow: inset 0 0 0 1px rgba(36, 103, 240, .12); background: linear-gradient(160deg, var(--card), rgba(36, 103, 240, .05)); }
.lp-comp-head { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .12em; margin-bottom: 18px; }
.lp-comp-head-old { color: var(--muted); }
.lp-comp-head-new { color: var(--blue); }
.lp-comp-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.lp-comp-item { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; color: var(--ink); font-weight: 600; }
.lp-comp-item-old { color: var(--muted-2); font-weight: 400; }
.lp-comp-mark { width: 20px; height: 20px; border-radius: 999px; display: grid; place-items: center; flex: none; margin-top: 1px; }
.lp-comp-mark-old { background: rgba(245, 196, 81, .2); color: #a9791a; }
.lp-comp-mark-new { background: rgba(36, 103, 240, .15); color: var(--blue); }

/* ---------- Services categories head ---------- */
.lp-services-head { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; margin-bottom: 44px; }
.lp-services-head-copy { margin-bottom: 0; }
.lp-services-media { border-radius: var(--r-xl); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow-badge); }
.lp-services-media img { display: block; width: 100%; height: 260px; object-fit: cover; }
.lp-services-all { margin-top: 28px; display: flex; justify-content: center; }

/* ---------- Biometrics ---------- */
.lp-bm-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: 40px; align-items: start; }
.lp-bm-copy { max-width: 34rem; }
.lp-bm-note { margin-top: 22px; display: inline-flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: var(--r); background: var(--bg-2); border: 1px solid var(--line-2); font-size: 12.5px; color: var(--muted-2); }
.lp-bm-note svg { color: var(--blue); flex: none; }
.lp-bm-cta { margin-top: 22px; }
.lp-bm-card { padding: 28px; }
.lp-bm-card-title { font-size: 18px; font-weight: 800; margin-bottom: 16px; }
.lp-bm-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.lp-bm-list li { display: flex; gap: 8px; font-size: 14px; color: var(--muted-2); line-height: 1.5; }
.lp-bm-dot { color: var(--blue); font-weight: 800; }

/* ---------- Pricing + membership (Visa Care) ---------- */
.lp-care-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.lp-care-card { padding: 28px; position: relative; display: flex; flex-direction: column; }
.lp-care-card-featured { border-color: rgba(36, 103, 240, .4); box-shadow: inset 0 0 0 1px rgba(36, 103, 240, .25); background: linear-gradient(160deg, var(--card), rgba(36, 103, 240, .05)); }
.lp-care-badge { position: absolute; top: -13px; left: 28px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; padding: 5px 11px; border-radius: 999px; background: var(--blue); color: #fff; box-shadow: var(--shadow-cta-sm); }
.lp-care-name { font-size: 18px; font-weight: 800; letter-spacing: -.01em; }
.lp-care-price { margin-top: 12px; display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.lp-care-amt { font-size: 34px; font-weight: 800; letter-spacing: -.02em; }
.lp-care-per { font-size: 14px; color: var(--muted); }
.lp-care-annual { margin-top: 4px; font-size: 12px; font-weight: 600; color: var(--blue); }
.lp-care-discount { margin-top: 12px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 10px; background: var(--bg-2); border: 1px solid var(--line-2); font-size: 12px; color: var(--muted-2); }
.lp-care-discount svg { color: var(--blue); flex: none; }
.lp-care-desc { margin: 12px 0 0; font-size: 14px; color: var(--muted-2); line-height: 1.6; }
.lp-care-bullets { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 10px; flex: 1; }
.lp-care-bullets li { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; color: var(--muted-2); }
.lp-care-bullets svg { color: var(--blue); flex: none; margin-top: 2px; }
.lp-care-cta { margin-top: 22px; width: 100%; }
.lp-care-disclaimer { margin: 24px auto 0; max-width: 640px; text-align: center; font-size: 12px; color: var(--muted); line-height: 1.6; }
.lp-care-assur { margin: 28px auto 0; max-width: 720px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.lp-care-assur-item { display: flex; align-items: center; gap: 10px; padding: 13px 15px; border-radius: var(--r); background: var(--bg-2); border: 1px solid var(--line-2); font-size: 12px; color: var(--muted-2); }
.lp-care-assur-item svg { color: var(--blue); flex: none; }

/* ---------- Referral ---------- */
.lp-ref { padding: 40px; display: grid; grid-template-columns: 1.4fr .6fr; gap: 32px; align-items: center; background: linear-gradient(135deg, rgba(22, 33, 62, .06), var(--card) 60%); }
.lp-ref-kicker { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; background: rgba(36, 103, 240, .12); color: var(--blue); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.lp-ref-kicker svg { flex: none; }
.lp-ref-title { margin: 16px 0 0; font-size: 30px; font-weight: 800; letter-spacing: -.03em; }
.lp-ref-give { margin: 8px 0 0; font-size: 22px; font-weight: 800; color: var(--blue); }
.lp-ref-sub { margin: 12px 0 0; font-size: 15px; color: var(--muted-2); line-height: 1.6; max-width: 40rem; }
.lp-ref-uses { margin-top: 20px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; max-width: 32rem; }
.lp-ref-use { padding: 12px; border-radius: var(--r); border: 1px solid var(--line-2); background: var(--bg-2); }
.lp-ref-use-t { font-size: 13px; font-weight: 700; }
.lp-ref-use-b { margin-top: 4px; font-size: 12px; color: var(--muted); line-height: 1.4; }
.lp-ref-cta-wrap { display: flex; justify-content: flex-end; }

/* ---------- Testimonials ---------- */
.lp-testi-badges { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 28px; }
.lp-testi-badge { display: inline-flex; align-items: center; gap: 8px; padding: 8px 13px; border-radius: 16px; background: var(--card); border: 1px solid var(--line-3); box-shadow: var(--shadow-badge); font-size: 12px; font-weight: 700; }
.lp-testi-badge svg { color: var(--gold); flex: none; }
.lp-testi-scroll { overflow-x: auto; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; padding-bottom: 8px; }
.lp-testi-track { display: flex; gap: 16px; width: max-content; }
.lp-testi-card { flex: 0 0 340px; max-width: 88vw; padding: 22px; display: flex; flex-direction: column; scroll-snap-align: start; }
.lp-testi-stars { color: var(--gold); font-size: 15px; letter-spacing: 2px; margin-bottom: 12px; }
.lp-testi-quote { margin: 0; font-size: 14px; line-height: 1.65; color: var(--muted-2); flex: 1; }
.lp-testi-who { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line-2); display: flex; align-items: center; gap: 12px; }
.lp-testi-flag { width: 36px; height: 36px; border-radius: 999px; background: rgba(36, 103, 240, .12); display: grid; place-items: center; font-size: 18px; flex: none; }
.lp-testi-who-body { min-width: 0; display: flex; flex-direction: column; }
.lp-testi-name { font-size: 14px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-testi-role { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- FAQ ---------- */
.lp-faq { max-width: 760px; }
.lp-faq-list { display: grid; gap: 12px; }
.lp-faq-item { padding: 6px 22px; }
.lp-faq-q { cursor: pointer; list-style: none; font-size: 16px; font-weight: 700; padding: 18px 0; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.lp-faq-q::-webkit-details-marker { display: none; }
.lp-faq-q::after { content: '+'; font-size: 22px; font-weight: 400; color: var(--blue); flex: none; }
.lp-faq-item[open] .lp-faq-q::after { content: '\2212'; }
.lp-faq-a { font-size: 14px; color: var(--muted-2); line-height: 1.7; padding: 0 0 20px; }

/* ---------- Final CTA ---------- */
.lp-final-sub { color: rgba(255, 255, 255, .8); font-size: 16px; line-height: 1.6; margin: 0 auto 28px; max-width: 40rem; }
.lp-final-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }

/* ---------- Responsive ---------- */
@media (max-width: 1000px) {
	.lp-tracker-grid, .lp-checker-grid, .lp-platform-grid, .lp-bm-grid, .lp-services-head, .lp-ref { grid-template-columns: 1fr; gap: 32px; }
	.lp-checker-rec { position: static; }
	.lp-platform-visual { order: 2; }
	.lp-ref-cta-wrap { justify-content: flex-start; }
}
@media (max-width: 820px) {
	.lp-who-grid, .lp-pain-grid, .lp-care-grid { grid-template-columns: 1fr 1fr; }
	.lp-how-grid { grid-template-columns: 1fr 1fr; }
	.lp-trustbar-grid { grid-template-columns: 1fr 1fr; }
	.lp-platform-features { grid-template-columns: 1fr; }
	.lp-care-assur { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
	.lp-who-grid, .lp-pain-grid, .lp-care-grid, .lp-comp-grid, .lp-tracker-feats, .lp-mock-floats, .lp-ref-uses { grid-template-columns: 1fr; }
	.lp-trustbar-grid { grid-template-columns: 1fr; }
	.lp-how-grid { grid-template-columns: 1fr 1fr; }
	.lp-hero { background: radial-gradient(900px 500px at 80% -10%, #EAF1FF 0%, transparent 60%); }
}

/* ---------- services: allineamento contenuti ./new (arrival-pack / index / service-page) ---------- */
/* b1-evoa: griglia prezzi a 3 card (senza il pack, gia' hero) — port di ArrivalPackPage.tsx */
@media (min-width: 1000px) { .arrival-grid.arrival-grid-3 { grid-template-columns: repeat(3, 1fr); } }

/* services index: riga audience nella VisaCard + sezione path-finder finale */
.svcidx-card-audience { margin: 0; font-size: .85rem; line-height: 1.5; color: hsl(var(--foreground-muted)); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.svcidx-path { max-width: 640px; margin: 44px auto 0; text-align: center; }
.svcidx-path .sec-title { margin-bottom: 10px; }
.svcidx-path-body { margin: 0 auto; }
.svcidx-path-body a { color: hsl(var(--lime)); font-weight: 600; text-decoration: none; }
.svcidx-path-body a:hover { text-decoration: underline; }
.svcidx-path-note { margin: 12px 0 0; font-size: .78rem; color: hsl(var(--foreground-muted)); }

/* service page: Visa Guarantee badge (variante card di VisaGuaranteeBadge.tsx) */
.svcpage-guarantee { display: flex; align-items: flex-start; gap: .75rem; margin: 1rem 0; padding: 1rem; border: 1px solid hsl(var(--lime) / .25); border-radius: var(--radius); background: hsl(var(--lime) / .06); }
.svcpage-guarantee-ico { flex-shrink: 0; margin-top: .1rem; display: inline-flex; color: hsl(var(--lime)); }
.svcpage-guarantee-tx { min-width: 0; }
.svcpage-guarantee-label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: hsl(var(--lime)); }
.svcpage-guarantee-head { margin-top: .15rem; font-size: 1rem; font-weight: 600; color: hsl(var(--foreground)); line-height: 1.3; }
.svcpage-guarantee-short { margin: .35rem 0 0; font-size: .82rem; color: hsl(var(--foreground-muted)); line-height: 1.55; }
.svcpage-guarantee-link { display: inline-flex; align-items: center; gap: .25rem; margin-top: .5rem; font-size: .82rem; font-weight: 600; color: hsl(var(--lime)); text-decoration: none; }
.svcpage-guarantee-link:hover { text-decoration: underline; }

/* service page: Human review card (port di HumanReviewCard.tsx, accento lavanda) */
.svcpage-hrcard { display: flex; align-items: flex-start; gap: .75rem; margin: 1.25rem 0; padding: 1rem; border: 1px solid rgba(124, 111, 214, .3); border-radius: var(--radius); background: rgba(124, 111, 214, .06); }
.svcpage-hrcard-ico { flex-shrink: 0; margin-top: .1rem; display: inline-flex; color: #6f5fd0; }
.svcpage-hrcard-tx { min-width: 0; }
.svcpage-hrcard-t { font-weight: 600; font-size: .95rem; color: hsl(var(--foreground)); }
.svcpage-hrcard-b { margin: .35rem 0 0; font-size: .88rem; color: hsl(var(--foreground-muted)); line-height: 1.55; }
.svcpage-hrcard-link { display: inline-flex; align-items: center; gap: .25rem; margin-top: .5rem; font-size: .85rem; font-weight: 600; color: #6f5fd0; text-decoration: none; }
.svcpage-hrcard-link:hover { text-decoration: underline; }

/* service page: 2a CTA above-the-fold = WhatsApp (icona lime) */
.svcpage-wa-cta svg { stroke: hsl(var(--lime)); flex: none; }

/* service page: "Submitted by <data>" nella purchase rail (port di PurchaseRail.tsx) */
.svcpage-rail-submitted { display: inline-flex; align-items: center; gap: .3rem; margin-top: .15rem; font-size: .68rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: hsl(var(--foreground-muted)); white-space: nowrap; overflow: hidden; }
.svcpage-rail-submitted svg { stroke: hsl(var(--lime)); flex: none; }
.svcpage-rail-by { color: hsl(var(--foreground)); }

/* ==========================================================================
   Referral landing (/r/:code) — public_html/referral.php
   Shell minimale centrata (~460px), riusa card-premium/btn-*/eyebrow. Mobile-first.
   ========================================================================== */
.ref-page { min-height: 100vh; background: hsl(var(--background)); }
.ref-header { max-width: 460px; margin: 0 auto; padding: 20px; display: flex; align-items: center; }
.ref-logo { display: inline-flex; align-items: center; }
.ref-main { max-width: 460px; margin: 0 auto; padding: 48px 20px 80px; }

.ref-tile { flex-shrink: 0; display: grid; place-items: center; height: 36px; width: 36px; border-radius: 12px; background: hsl(var(--lime) / .14); color: hsl(var(--lime)); }

.ref-banner { display: flex; align-items: flex-start; gap: 12px; padding: 16px; border-radius: 16px; border: 1px solid hsl(var(--lime) / .25); background: linear-gradient(135deg, hsl(var(--lime) / .15), hsl(var(--lime) / .05) 45%, transparent); }
.ref-banner-tile { background: hsl(var(--lime) / .2); }
.ref-banner-body { min-width: 0; }
.ref-banner-eyebrow { font-size: 12px; letter-spacing: .2em; }
.ref-banner-title { font-size: 14px; font-weight: 600; line-height: 1.35; margin-top: 4px; color: hsl(var(--foreground)); }
.ref-banner-note { font-size: 12px; color: hsl(var(--foreground-muted)); margin-top: 4px; }

.ref-h1 { font-family: var(--font-display); font-size: 34px; font-weight: 600; line-height: 1.05; margin-top: 24px; color: hsl(var(--foreground)); }
.ref-intro { font-size: 14px; line-height: 1.6; color: hsl(var(--foreground-muted)); margin: 12px 0 0; }

.ref-code-card.card-premium { margin-top: 24px; padding: 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ref-code-label { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: hsl(var(--foreground-muted)); }
.ref-code-value { font-size: 18px; font-weight: 600; letter-spacing: .18em; margin-top: 2px; color: hsl(var(--foreground)); }
.ref-code-side { text-align: right; }
.ref-code-applied { font-size: 12px; font-weight: 600; color: hsl(var(--lime)); margin-top: 2px; }

.ref-cta { margin-top: 32px; display: grid; gap: 8px; }

.ref-features { margin-top: 40px; display: grid; gap: 12px; }
.ref-feature.card-premium { padding: 16px; display: flex; align-items: flex-start; gap: 12px; }
.ref-feature-body { min-width: 0; }
.ref-feature-title { font-size: 14px; font-weight: 600; color: hsl(var(--foreground)); }
.ref-feature-text { font-size: 12px; color: hsl(var(--foreground-muted)); margin-top: 2px; }

.ref-disclaimer { margin-top: 32px; font-size: 12px; line-height: 1.6; text-align: center; color: hsl(var(--foreground-muted)); }
