/* ─────────────────────────────────────────────────────────────────────
 * main.css — BUNDLED (auto-generated by scripts/build-css.mjs)
 * Generated: 2026-05-30T10:18:20.433Z
 *
 * Sources (in order):
 *   - tokens.css
 *   - reset.css
 *   - base.css
 *   - components.css
 *   - pages.css
 *   - utilities (inline below)
 *
 * Layer order = cascade specificity:
 *   tokens > reset > base > components > pages > utilities
 *
 * Modificare i sorgenti in public/assets/<source>.css, poi rebuild.
 * NON modificare direttamente questo file: ogni rebuild lo sovrascrive.
 * ───────────────────────────────────────────────────────────────────── */

@layer tokens, reset, base, components, pages, utilities;

/* ═══ tokens.css ═══════════════════════════════════════════════ */
@layer tokens {
/* ─────────────────────────────────────────────────────────────────────
 * tokens.css — design system FlowForge, single source of truth
 *
 * Standards 2026:
 *  • CSS custom properties (variabili)
 *  • CSS Color 4 (oklch for accessible contrast tuning future-proof)
 *  • Palette swap via [data-theme] attribute (sky default | emerald | violet | amber)
 *  • Dark mode default (per il brand industrial premium)
 *  • Type scale modular (1.25 ratio = Major Third)
 *  • Spacing 4px-base scale (Material/Tailwind compat)
 *  • Motion ridotta in prefers-reduced-motion
 *
 * Cambiare palette: `<html data-theme="emerald">` → tutto il portal verde.
 * Cambiare un singolo token: modifica qui, propaga ovunque.
 * ───────────────────────────────────────────────────────────────────── */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/Inter-2026.woff2') format('woff2-variations'),
       url('/fonts/Inter-2026.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/Inter-2026-Italic.woff2') format('woff2-variations'),
       url('/fonts/Inter-2026-Italic.woff2') format('woff2');
}

:root {
  /* ═══ BRAND PALETTE — default: sky ════════════════════════════════ */
  /* Cambia il default brand: modifica i 3 valori sky qui sotto.
   * Per swap dinamico, usa data-theme su <html>. */
  --color-brand:        #0ea5e9;  /* sky-500 */
  --color-brand-hover:  #38bdf8;  /* sky-400 */
  --color-brand-deep:   #2563eb;  /* blue-600 */
  --color-brand-soft:   rgb(14 165 233 / 0.10);
  --color-brand-glow:   rgb(14 165 233 / 0.28);
  --color-brand-edge:   rgb(14 165 233 / 0.30);

  /* ═══ SURFACES (dark theme — industrial premium) ══════════════════ */
  --color-surface-0:        #0b0b0d;
  --color-surface-1:        #131318;
  --color-surface-2:        #1a1a20;
  --color-surface-3:        #22222a;
  --color-surface-glass:    rgb(11 11 13 / 0.72);

  /* ═══ TEXT ════════════════════════════════════════════════════════ */
  --color-text-primary:    #f5f5f7;
  --color-text-secondary:  #a8a8b0;
  --color-text-tertiary:   #6b6b75;
  --color-text-disabled:   #4a4a52;
  --color-text-on-brand:   #ffffff;   /* testo su button brand — bianco per contrasto AA su gradient sky→blue */

  /* ═══ BORDER ══════════════════════════════════════════════════════ */
  --color-border-faint:    #1f1f26;
  --color-border-default:  #2a2a33;
  --color-border-strong:   #3a3a45;
  --color-border-focus:    var(--color-brand);

  /* ═══ SEMANTIC ════════════════════════════════════════════════════ */
  --color-success:         #34d399;
  --color-success-bg:      rgb(52 211 153 / 0.10);
  --color-warning:         #fbbf24;
  --color-warning-bg:      rgb(251 191 36 / 0.10);
  --color-error:           #f87171;
  --color-error-bg:        rgb(248 113 113 / 0.08);
  --color-error-edge:      rgb(248 113 113 / 0.25);
  --color-info:            var(--color-brand);
  --color-info-bg:         var(--color-brand-soft);

  /* ═══ SPACING — 4px base scale ════════════════════════════════════ */
  --space-0:   0;
  --space-1:   0.25rem;   /* 4 */
  --space-2:   0.5rem;    /* 8 */
  --space-3:   0.75rem;   /* 12 */
  --space-4:   1rem;      /* 16 */
  --space-5:   1.25rem;   /* 20 */
  --space-6:   1.5rem;    /* 24 */
  --space-7:   1.75rem;   /* 28 */
  --space-8:   2rem;      /* 32 */
  --space-10:  2.5rem;    /* 40 */
  --space-12:  3rem;      /* 48 */
  --space-16:  4rem;      /* 64 */
  --space-20:  5rem;      /* 80 */
  --space-24:  6rem;      /* 96 */
  --space-32:  8rem;      /* 128 */

  /* ═══ TYPOGRAPHY — Major Third modular scale (1.25) ═══════════════ */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;

  --text-xs:    0.6875rem;   /* 11px — micro: label, badge */
  --text-sm:    0.8125rem;   /* 13px — small: caption, foot */
  --text-base:  0.9375rem;   /* 15px — body */
  --text-md:    1rem;        /* 16px — body-emphasis */
  --text-lg:    1.0625rem;   /* 17px — lede */
  --text-xl:    1.1875rem;   /* 19px — h4 */
  --text-2xl:   1.375rem;    /* 22px — h3 */
  --text-3xl:   1.75rem;     /* 28px — h2 */
  --text-4xl:   2.25rem;     /* 36px — h1 */
  --text-5xl:   3rem;        /* 48px — hero */
  --text-6xl:   3.75rem;     /* 60px — hero-xl */

  --leading-none:    1;
  --leading-tight:   1.1;
  --leading-snug:    1.35;
  --leading-normal:  1.55;
  --leading-relaxed: 1.7;

  --tracking-tighter: -0.025em;
  --tracking-tight:   -0.015em;
  --tracking-normal:  -0.005em;
  --tracking-wide:     0.02em;
  --tracking-caps:     0.04em;
  --tracking-widest:   0.18em;

  --weight-regular: 400;
  --weight-medium:  500;
  --weight-semi:    600;
  --weight-bold:    700;

  /* ═══ RADIUS ══════════════════════════════════════════════════════ */
  --radius-xs:    0.25rem;   /* 4 */
  --radius-sm:    0.5rem;    /* 8 */
  --radius-md:    0.75rem;   /* 12 */
  --radius-lg:    1rem;      /* 16 */
  --radius-xl:    1.25rem;   /* 20 */
  --radius-2xl:   1.5rem;    /* 24 */
  --radius-pill:  9999px;

  /* ═══ SHADOW ══════════════════════════════════════════════════════ */
  --shadow-xs:    0 1px 2px rgb(0 0 0 / 0.30);
  --shadow-sm:    0 1px 3px rgb(0 0 0 / 0.40);
  --shadow-md:    0 4px 14px rgb(0 0 0 / 0.35), 0 1px 2px rgb(0 0 0 / 0.30);
  --shadow-lg:    0 10px 40px rgb(0 0 0 / 0.50), 0 2px 6px rgb(0 0 0 / 0.30);
  --shadow-xl:    0 20px 60px rgb(0 0 0 / 0.60), 0 4px 12px rgb(0 0 0 / 0.40);
  --shadow-glow:  0 0 0 1px var(--color-brand), 0 0 16px var(--color-brand-glow);
  --shadow-inner: inset 0 1px 2px rgb(0 0 0 / 0.40);

  /* ═══ MOTION ══════════════════════════════════════════════════════ */
  --ease-linear:    linear;
  --ease-out:       cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out:    cubic-bezier(0.65, 0, 0.35, 1);
  --ease-bounce:    cubic-bezier(0.68, -0.55, 0.265, 1.55);

  --duration-instant: 100ms;
  --duration-fast:    180ms;
  --duration-normal:  280ms;
  --duration-slow:    450ms;
  --duration-slowest: 700ms;

  /* ═══ Z-INDEX SCALE ═══════════════════════════════════════════════ */
  --z-base:       1;
  --z-sticky:     100;
  --z-dropdown:   500;
  --z-overlay:    1000;
  --z-modal:      5000;
  --z-toast:      9000;
  --z-tooltip:    9500;
  --z-max:        9999;

  /* ═══ LAYOUT ══════════════════════════════════════════════════════ */
  --layout-max-prose:    44rem;     /* 704px — reading width */
  --layout-max-content:  72rem;     /* 1152px — page width */
  --layout-max-narrow:   28rem;     /* 448px — auth forms */
  --layout-max-wide:     90rem;     /* 1440px — admin dashboards */

  /* ═══ FOCUS ═══════════════════════════════════════════════════════ */
  --focus-ring:        0 0 0 2px var(--color-surface-0), 0 0 0 4px var(--color-brand);
  --focus-ring-offset: 2px;
}

/* ═══ PALETTE SWAPS via [data-theme] ═══════════════════════════════════
 * <html data-theme="emerald"> → tutto il portal verde.
 * Aggiungi nuove palette qui senza toccare il resto del CSS. */

[data-theme='emerald'] {
  --color-brand:       #10b981;  /* emerald-500 */
  --color-brand-hover: #34d399;
  --color-brand-deep:  #047857;
  --color-brand-soft:  rgb(16 185 129 / 0.10);
  --color-brand-glow:  rgb(16 185 129 / 0.28);
  --color-brand-edge:  rgb(16 185 129 / 0.30);
}

[data-theme='violet'] {
  --color-brand:       #8b5cf6;
  --color-brand-hover: #a78bfa;
  --color-brand-deep:  #6d28d9;
  --color-brand-soft:  rgb(139 92 246 / 0.10);
  --color-brand-glow:  rgb(139 92 246 / 0.28);
  --color-brand-edge:  rgb(139 92 246 / 0.30);
}

[data-theme='amber'] {
  --color-brand:       #f59e0b;
  --color-brand-hover: #fbbf24;
  --color-brand-deep:  #d97706;
  --color-brand-soft:  rgb(245 158 11 / 0.10);
  --color-brand-glow:  rgb(245 158 11 / 0.28);
  --color-brand-edge:  rgb(245 158 11 / 0.30);
  --color-text-on-brand: #0b0b0d;
}

/* ═══ ACCESSIBILITY MEDIA QUERIES ═══════════════════════════════════ */

@media (prefers-reduced-motion: reduce) {
  :root {
    --duration-instant: 1ms;
    --duration-fast:    1ms;
    --duration-normal:  1ms;
    --duration-slow:    1ms;
    --duration-slowest: 1ms;
  }
  *, *::before, *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 1ms !important;
  }
}

@media (prefers-contrast: more) {
  :root {
    --color-border-default: #6a6a75;
    --color-text-secondary: #d4d4dc;
    --color-text-tertiary:  #b0b0b8;
  }
}

}

/* ═══ reset.css ═══════════════════════════════════════════════ */
@layer reset {
/* ─────────────────────────────────────────────────────────────────────
 * Modern CSS reset (2026)
 * Based on Josh Comeau's reset + Andy Bell modern-normalize ideas.
 * No browser defaults to fight against — predictable styling baseline.
 * ───────────────────────────────────────────────────────────────────── */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* Use modern viewport units for mobile */
  block-size: 100%;
}

body {
  min-block-size: 100dvh;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-synthesis: none;
  /* Default cursor: standard. No surprise text-selection cursors */
}

/* Media: responsive by default */
img, picture, video, canvas, svg {
  display: block;
  max-inline-size: 100%;
}

/* Inherit fonts for form controls */
input, button, textarea, select {
  font: inherit;
  color: inherit;
}

/* Avoid text overflow */
p, h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}

/* Heading defaults */
h1, h2, h3, h4, h5, h6 {
  line-height: var(--leading-tight);
  text-wrap: balance;
  font-weight: var(--weight-bold);
}

p {
  text-wrap: pretty;
}

/* Link reset — never relies on browser defaults */
a {
  color: inherit;
  text-decoration: none;
}

/* Lists reset (we add markers per-component when needed) */
ul[role='list'], ol[role='list'] {
  list-style: none;
  padding: 0;
}

/* Tables defaults — predictable */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* Visible focus everywhere — accessibility CRITICAL */
:focus-visible {
  outline: 2px solid var(--color-brand);
  outline-offset: var(--focus-ring-offset);
  border-radius: var(--radius-xs);
}

/* Remove default focus on mouse — keyboard-only visible */
:focus:not(:focus-visible) {
  outline: none;
}

/* Smooth scroll-anchoring */
:target {
  scroll-margin-block-start: var(--space-16);
}

/* Hidden utility (a11y-correct) */
[hidden]:not([hidden='until-found']) {
  display: none !important;
}

.visually-hidden {
  position: absolute !important;
  inline-size: 1px !important;
  block-size: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

}

/* ═══ base.css ═══════════════════════════════════════════════ */
@layer base {
/* ─────────────────────────────────────────────────────────────────────
 * base.css — body, typography, root layout primitives
 * ───────────────────────────────────────────────────────────────────── */

html {
  font-family: var(--font-sans);
  /* OpenType features per Inter Variable */
  font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11', 'ss01';
  font-variation-settings: 'opsz' 14;
}

body {
  background: var(--color-surface-0);
  color: var(--color-text-primary);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  letter-spacing: var(--tracking-normal);
  display: flex;
  flex-direction: column;
  min-block-size: 100dvh;
}

/* Subtle industrial dotted texture (decorative, behind content) */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image: radial-gradient(circle at 1px 1px, rgb(255 255 255 / 0.02) 1px, transparent 0);
  background-size: 24px 24px;
  pointer-events: none;
  z-index: 0;
}

/* Heading scale */
h1 { font-size: var(--text-4xl); letter-spacing: var(--tracking-tighter); }
h2 { font-size: var(--text-3xl); letter-spacing: var(--tracking-tight); }
h3 { font-size: var(--text-2xl); letter-spacing: var(--tracking-tight); }
h4 { font-size: var(--text-xl); }
h5 { font-size: var(--text-lg); }
h6 { font-size: var(--text-md); font-weight: var(--weight-semi); }

/* Strong + em */
strong, b { font-weight: var(--weight-semi); color: var(--color-text-primary); }
em, i { font-style: italic; color: var(--color-text-primary); }

/* Inline code */
code {
  font-family: var(--font-mono);
  font-size: 0.88em;
  background: var(--color-surface-2);
  border: 1px solid var(--color-border-faint);
  border-radius: var(--radius-xs);
  padding: 0.125em 0.375em;
  color: var(--color-text-primary);
}

pre {
  font-family: var(--font-mono);
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  overflow-x: auto;
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
}
pre code {
  background: transparent;
  border: 0;
  padding: 0;
}

/* hr */
hr {
  border: 0;
  border-block-start: 1px solid var(--color-border-faint);
  margin-block: var(--space-8);
}

/* mark */
mark {
  background: var(--color-brand-soft);
  color: var(--color-brand);
  padding: 0.125em 0.25em;
  border-radius: var(--radius-xs);
}

/* selection */
::selection {
  background: var(--color-brand-glow);
  color: var(--color-text-primary);
}

/* scrollbar (webkit + firefox) */
* {
  scrollbar-width: thin;
  scrollbar-color: var(--color-border-strong) transparent;
}
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: var(--color-border-default);
  border-radius: 4px;
}
*::-webkit-scrollbar-thumb:hover { background: var(--color-border-strong); }

/* Link default — solo dentro componenti prose (rispetta brand) */
.prose a, .markdown a {
  color: var(--color-brand-hover);
  text-decoration: underline;
  text-decoration-color: rgb(56 189 248 / 0.4);
  text-underline-offset: 3px;
  transition: text-decoration-color var(--duration-fast) var(--ease-out);
}
.prose a:hover { text-decoration-color: var(--color-brand-hover); }

}

/* ═══ components.css ═══════════════════════════════════════════════ */
@layer components {
/* ─────────────────────────────────────────────────────────────────────
 * components.css — primitive UI riusabili in tutte le pagine portal
 *
 * Pattern: BEM-light (componente.elemento--modificatore)
 * Tutti i componenti parametrizzabili via custom property locale.
 * ───────────────────────────────────────────────────────────────────── */

/* ═══ HEADER ═══════════════════════════════════════════════════════ */
.site-header {
  position: sticky;
  inset-block-start: 0;
  z-index: var(--z-sticky);
  background: var(--color-surface-glass);
  border-block-end: 1px solid var(--color-border-faint);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
}
.site-header__inner {
  max-inline-size: var(--layout-max-content);
  margin-inline: auto;
  padding: var(--space-4) var(--space-6);
  display: flex;
  align-items: center;
  gap: var(--space-4);
}
.site-header__nav {
  margin-inline-start: auto;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

/* ═══ BRAND ════════════════════════════════════════════════════════ */
.brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  color: inherit;
  text-decoration: none;
}
.brand__mark {
  inline-size: 36px;
  block-size: 36px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-deep) 100%);
  display: grid;
  place-items: center;
  box-shadow: 0 2px 8px var(--color-brand-edge), inset 0 1px 0 rgb(255 255 255 / 0.2);
  flex-shrink: 0;
}
.brand__mark svg {
  inline-size: 22px;
  block-size: 22px;
  color: var(--color-text-on-brand);
}
.brand__logo {
  /* Logo immagine ufficiale Zeli SRL: 120x46 native, scalata per navbar.
     object-fit:contain preserva proporzione su retina + responsive. */
  inline-size: auto;
  block-size: 40px;
  max-inline-size: 140px;
  object-fit: contain;
  flex-shrink: 0;
  display: block;
}
.brand__text { display: flex; flex-direction: column; line-height: var(--leading-tight); }
.brand__name {
  font-size: var(--text-md);
  font-weight: var(--weight-bold);
  letter-spacing: -0.01em;
}
.brand__sub {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--color-text-tertiary);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  margin-block-start: 2px;
}

/* ═══ BUTTON ═══════════════════════════════════════════════════════
 * Variants: --primary | --secondary | --ghost | --danger
 * Sizes:    --sm | --md (default) | --lg
 * States:   :hover, :focus-visible, :active, :disabled
 *
 * tap-target: min 40px (mobile) → 48px on small screens (a11y) */
.btn {
  --btn-bg: var(--color-surface-1);
  --btn-fg: var(--color-text-primary);
  --btn-border: var(--color-border-default);
  --btn-pad-x: var(--space-4);
  --btn-pad-y: var(--space-3);
  --btn-font: var(--text-base);

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-block-size: 40px;
  padding: var(--btn-pad-y) var(--btn-pad-x);
  background: var(--btn-bg);
  color: var(--btn-fg);
  border: 1px solid var(--btn-border);
  border-radius: var(--radius-sm);
  font-family: inherit;
  font-size: var(--btn-font);
  font-weight: var(--weight-semi);
  letter-spacing: var(--tracking-normal);
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-out);
  text-decoration: none;
  white-space: nowrap;
  user-select: none;
}
.btn:hover:not(:disabled) {
  border-color: var(--color-border-strong);
  background: var(--color-surface-2);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}
.btn:active:not(:disabled) {
  transform: translateY(0) scale(0.98);
  box-shadow: var(--shadow-xs);
}
.btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--color-brand-glow), 0 0 0 1px var(--color-brand);
}
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.btn svg {
  inline-size: 16px;
  block-size: 16px;
  flex-shrink: 0;
}

/* Primary — gradient brand */
.btn--primary {
  --btn-bg: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-deep) 100%);
  --btn-fg: var(--color-text-on-brand);
  --btn-border: transparent;
  box-shadow: 0 2px 8px var(--color-brand-edge), inset 0 1px 0 rgb(255 255 255 / 0.2);
}
.btn--primary:hover:not(:disabled) {
  box-shadow: 0 4px 12px var(--color-brand-glow), inset 0 1px 0 rgb(255 255 255 / 0.2);
  filter: brightness(1.05);
}

/* Ghost — border sottile visibile, hover surface-1 */
.btn--ghost {
  --btn-bg: transparent;
  --btn-border: var(--color-border-default);
  --btn-fg: var(--color-text-primary);
}
.btn--ghost:hover:not(:disabled) {
  background: var(--color-surface-1);
  color: var(--color-text-primary);
  border-color: var(--color-border-strong);
  box-shadow: none;
}

/* Danger — red, per cancel/delete */
.btn--danger {
  --btn-bg: var(--color-error-bg);
  --btn-border: var(--color-error-edge);
  --btn-fg: var(--color-error);
}
.btn--danger:hover:not(:disabled) {
  background: var(--color-error);
  color: var(--color-text-on-brand);
  border-color: var(--color-error);
}

/* Sizes */
.btn--sm {
  --btn-pad-x: var(--space-3);
  --btn-pad-y: var(--space-2);
  --btn-font: var(--text-sm);
  min-block-size: 32px;
}
.btn--lg {
  --btn-pad-x: var(--space-6);
  --btn-pad-y: var(--space-4);
  --btn-font: var(--text-md);
  min-block-size: 48px;
}

/* Full-width modifier */
.btn--block {
  inline-size: 100%;
}

/* ═══ FORM ═════════════════════════════════════════════════════════ */
.form-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-block-end: var(--space-4);
}
.form-field__label {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-text-secondary);
  letter-spacing: var(--tracking-wide);
}
.form-field__hint {
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
}
.form-field__error {
  font-size: var(--text-sm);
  color: var(--color-error);
  margin-block-start: var(--space-1);
}

.input {
  inline-size: 100%;
  min-block-size: 44px;
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-sm);
  font-family: inherit;
  font-size: var(--text-base);
  color: var(--color-text-primary);
  transition: border-color var(--duration-fast) var(--ease-out),
              box-shadow var(--duration-fast) var(--ease-out);
}
.input::placeholder { color: var(--color-text-tertiary); }
.input:focus {
  outline: none;
  border-color: var(--color-brand);
  box-shadow: 0 0 0 3px var(--color-brand-glow);
}
.input:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.input--error {
  border-color: var(--color-error);
}
.input--error:focus {
  box-shadow: 0 0 0 3px var(--color-error-bg);
}

textarea.input {
  min-block-size: 96px;
  resize: vertical;
  line-height: var(--leading-snug);
}

/* ─── SELECT come <input> — custom arrow, no native UI ────────────── */
/* Standard 2026: select stilizzato uniformemente ai text input.
 * Native arrow nascosta via appearance:none + arrow custom SVG inline. */
select.input {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%23a0a0aa' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right var(--space-3) center;
  background-size: 12px;
  padding-inline-end: calc(var(--space-3) + 12px + var(--space-3));
  cursor: pointer;
}
select.input::-ms-expand { display: none; }
select.input:focus {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%230ea5e9' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}

/* ─── FORM GRID — label sopra input, gap costante ─────────────────── */
.form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-4);
  align-items: end;
}
.form-grid .field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-inline-size: 0;
}
.form-grid .field--span2 { grid-column: span 2; min-inline-size: 0; }
.form-grid .field__label {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-text-secondary);
  letter-spacing: 0;
}
.form-grid .field__actions {
  display: flex;
  gap: var(--space-2);
  align-items: end;
}
@media (max-width: 640px) {
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .field--span2 { grid-column: span 1; }
}

/* ─── AUDIT LOG — list grid 3 col (timestamp | action | ip) ───────── */
.audit-log {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-sm);
  overflow: hidden;
}
.audit-log__row {
  display: grid;
  grid-template-columns: 160px 1fr 140px;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-3) var(--space-4);
  border-block-end: 1px solid var(--color-border-faint);
  font-size: var(--text-sm);
  transition: background var(--duration-fast) var(--ease-out);
}
.audit-log__row:last-child {
  border-block-end: 0;
}
.audit-log__row:hover {
  background: var(--color-surface-1);
}
.audit-log__ts {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-text-secondary);
  white-space: nowrap;
}
.audit-log__action {
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.625rem;
  border-radius: var(--radius-pill);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: var(--weight-medium);
  background: var(--color-surface-2);
  color: var(--color-text-primary);
  border: 1px solid var(--color-border-default);
  justify-self: start;
  white-space: nowrap;
}
.audit-log__action--ok {
  background: rgb(16 185 129 / 0.10);
  color: #6ee7b7;
  border-color: rgb(16 185 129 / 0.30);
}
.audit-log__action--warn {
  background: rgb(245 158 11 / 0.10);
  color: #fcd34d;
  border-color: rgb(245 158 11 / 0.30);
}
.audit-log__action--err {
  background: rgb(239 68 68 / 0.10);
  color: #fca5a5;
  border-color: rgb(239 68 68 / 0.30);
}
.audit-log__ip {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  justify-self: end;
  white-space: nowrap;
}
@media (max-width: 640px) {
  .audit-log__row {
    grid-template-columns: 1fr;
    gap: var(--space-1);
  }
  .audit-log__ip { justify-self: start; }
}

/* ─── SCHEMA TABLE — per /integrazioni/<id> NodeDef detail ─────────── */
.schema-table {
  inline-size: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.schema-table th, .schema-table td {
  padding: var(--space-2) var(--space-3);
  text-align: start;
  border-block-end: 1px solid var(--color-border-faint);
  vertical-align: top;
}
.schema-table th {
  background: var(--color-surface-1);
  font-weight: var(--weight-semi);
  color: var(--color-text-secondary);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}
.schema-table td code {
  font-size: 12px;
  background: var(--color-surface-2);
  padding: 2px 6px;
  border-radius: var(--radius-xs);
}
.schema-table tr:hover td { background: var(--color-surface-1); }

/* ─── CODE BLOCK — pre formattati con highlight light ─────────────── */
.code-block {
  background: var(--color-surface-0);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-4);
  overflow-x: auto;
  font-family: var(--font-mono);
  font-size: 12px;
  line-height: 1.6;
  color: var(--color-text-primary);
}
.code-block code {
  background: transparent;
  padding: 0;
  font-family: inherit;
  white-space: pre;
}
.code-block[data-lang]::before {
  content: attr(data-lang);
  display: inline-block;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--color-text-tertiary);
  background: var(--color-surface-1);
  padding: 2px 8px;
  border-radius: var(--radius-xs);
  margin-block-end: var(--space-2);
}

/* ─── INTEGRAZIONI CATALOG — pagina pubblica /integrazioni ────────── */
.hero-stats {
  display: flex;
  justify-content: center;
  gap: var(--space-8);
  margin-block-start: var(--space-6);
  flex-wrap: wrap;
}
.hero-stat {
  text-align: center;
}
.hero-stat__value {
  font-size: var(--text-4xl);
  font-weight: var(--weight-bold);
  color: var(--color-brand);
  line-height: 1;
}
.hero-stat__label {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  margin-block-start: var(--space-2);
}

.integration-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--space-4);
}
.integration-card {
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  transition: all var(--duration-fast) var(--ease-out);
}
.integration-card:hover {
  border-color: var(--color-brand);
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
.integration-card[data-status="coming-soon"] {
  border-color: var(--color-border-faint);
  opacity: 0.88;
}
.integration-card[data-status="coming-soon"]:hover {
  border-color: var(--color-border-strong);
}
.integration-card__head {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
}
.integration-card__icon {
  font-size: 2rem;
  line-height: 1;
  flex-shrink: 0;
}
.integration-card__title-wrap {
  flex: 1;
  min-width: 0;
}
.integration-card__title {
  font-size: var(--text-lg);
  font-weight: var(--weight-semi);
  margin: 0;
  letter-spacing: var(--tracking-tight);
}
.integration-card__defid {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  display: block;
  margin-block-start: 2px;
}
.integration-card__desc {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin: 0;
}
.integration-card__example {
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  background: var(--color-surface-0);
  border-left: 2px solid var(--color-brand);
  padding: var(--space-2) var(--space-3);
  margin: 0;
  border-radius: 0 var(--radius-xs) var(--radius-xs) 0;
}
.integration-card__example strong {
  color: var(--color-text-secondary);
}
.integration-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  margin-block-start: auto;
}
.integration-card__tag {
  display: inline-block;
  padding: 2px 8px;
  background: var(--color-surface-2);
  border: 1px solid var(--color-border-faint);
  border-radius: var(--radius-pill);
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--color-text-tertiary);
}

/* ─── SESSION LIST (used by /account/security) ─────────────────────── */
.session-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.session-list__item {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-sm);
  align-items: center;
}
.session-list__meta {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-block-start: var(--space-1);
}

/* ─── INPUT GROUP (input + adornment button, es. password eye) ──── */
.input-group {
  position: relative;
}
.input-group .input--with-action {
  padding-inline-end: 48px;
}
.input__action {
  position: absolute;
  inset-inline-end: 4px;
  inset-block-start: 50%;
  transform: translateY(-50%);
  inline-size: 36px;
  block-size: 36px;
  background: transparent;
  border: 0;
  color: var(--color-text-tertiary);
  cursor: pointer;
  display: grid;
  place-items: center;
  border-radius: var(--radius-xs);
  transition: color var(--duration-fast) var(--ease-out),
              background var(--duration-fast) var(--ease-out);
}
.input__action:hover {
  color: var(--color-text-primary);
  background: var(--color-surface-2);
}
.input__action:focus-visible {
  color: var(--color-brand);
  outline: 2px solid var(--color-brand);
  outline-offset: 1px;
}
.input__action svg {
  inline-size: 18px;
  block-size: 18px;
  display: block;
}
/* Toggle visibilita` SVG basata su stato del button */
.input__action[data-state='visible'] .icon-eye-open  { display: none; }
.input__action[data-state='visible'] .icon-eye-closed { display: block; }
.input__action[data-state='hidden']  .icon-eye-open   { display: block; }
.input__action[data-state='hidden']  .icon-eye-closed { display: none; }

/* ═══ CARD ═════════════════════════════════════════════════════════ */
.card {
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-sm);
}
.card__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-block-end: var(--space-4);
  padding-block-end: var(--space-4);
  border-block-end: 1px solid var(--color-border-faint);
}
.card__title {
  font-size: var(--text-xl);
  font-weight: var(--weight-semi);
  letter-spacing: var(--tracking-tight);
}
.card__subtitle {
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
  margin-block-start: var(--space-1);
}
.card--danger {
  border-color: rgb(239 68 68 / 0.35);
  background: rgb(239 68 68 / 0.03);
}

/* ═══ INFO LIST (dl/dt/dd 2-col grid) ═════════════════════════════════
 * Usata in /account/profile, /admin/payments detail, ecc. per visualizzare
 * "campo → valore" senza tabella vera (le tabelle DT/DD sono dichiarative).
 * Pattern enterprise: griglia 2 colonne con label fissa 180px su desktop,
 * collassa a singola colonna su mobile. */
.info-list {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: var(--space-2) var(--space-4);
  margin: 0;
}
.info-list dt {
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
  font-weight: var(--weight-medium);
  align-self: center;
}
.info-list dd {
  margin: 0;
  font-size: var(--text-sm);
  color: var(--color-text-primary);
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.info-list dd code {
  font-family: var(--font-mono);
  background: var(--color-surface-2);
  padding: 2px 8px;
  border-radius: var(--radius-sm);
  font-size: var(--text-xs);
}
@media (max-width: 640px) {
  .info-list {
    grid-template-columns: 1fr;
    gap: var(--space-1);
  }
  .info-list dt { margin-block-start: var(--space-2); }
}

/* ═══ DANGER ROW (zona pericolosa profilo) ═══════════════════════════ */
.danger-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block: var(--space-3);
}
.danger-row > div:first-child { flex: 1; min-inline-size: 0; }
.danger-sep {
  border: 0;
  border-block-start: 1px solid var(--color-border-faint);
  margin: 0;
}

/* ═══ ALERT ════════════════════════════════════════════════════════ */
.alert {
  --alert-fg: var(--color-text-primary);
  --alert-bg: var(--color-surface-2);
  --alert-edge: var(--color-border-default);
  display: flex;
  gap: var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--alert-edge);
  background: var(--alert-bg);
  color: var(--alert-fg);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
}
.alert svg { flex-shrink: 0; inline-size: 18px; block-size: 18px; margin-block-start: 1px; }
.alert--info    { --alert-bg: var(--color-info-bg);    --alert-edge: var(--color-brand-edge);  --alert-fg: var(--color-brand); }
.alert--success { --alert-bg: var(--color-success-bg); --alert-edge: rgb(52 211 153 / 0.30); --alert-fg: var(--color-success); }
.alert--warning { --alert-bg: var(--color-warning-bg); --alert-edge: rgb(251 191 36 / 0.30); --alert-fg: var(--color-warning); }
.alert--error   { --alert-bg: var(--color-error-bg);   --alert-edge: var(--color-error-edge);  --alert-fg: var(--color-error); }

/* ═══ BADGE ════════════════════════════════════════════════════════ */
.badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: 0.125rem 0.5rem;
  background: var(--color-surface-2);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--color-text-secondary);
  letter-spacing: var(--tracking-wide);
  font-family: var(--font-mono);
}
.badge--brand   { background: var(--color-brand-soft);   border-color: var(--color-brand-edge);  color: var(--color-brand); }
.badge--success,
.badge--ok { background: var(--color-success-bg);   border-color: rgb(52 211 153 / 0.30); color: var(--color-success); }
.badge--warning { background: var(--color-warning-bg);   border-color: rgb(251 191 36 / 0.30); color: var(--color-warning); }
.badge--error   { background: var(--color-error-bg);     border-color: var(--color-error-edge); color: var(--color-error); }

/* ═══ STAT PILLS — KPI pattern usato in admin/workspaces, dashboard ═════
   Pattern: numero grosso colorato + label uppercase piccolissimo, dentro
   un pill border-radius. Allinea con i contatori di Linear/Stripe admin. */
.stat-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 8px 14px;
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-pill);
  transition: border-color var(--duration-fast) var(--ease-out);
}
.stat-pill:hover { border-color: var(--color-border-strong); }
.stat-pill__num {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  line-height: 1;
  color: var(--color-text-primary);
  font-variant-numeric: tabular-nums;
}
.stat-pill__lbl {
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--color-text-tertiary);
}
.stat-pill--success {
  background: var(--color-success-bg);
  border-color: rgb(52 211 153 / 0.30);
}
.stat-pill--success .stat-pill__num { color: var(--color-success); }
.stat-pill--warn {
  background: var(--color-warning-bg);
  border-color: rgb(251 191 36 / 0.30);
}
.stat-pill--warn .stat-pill__num { color: var(--color-warning); }
.stat-pill--brand {
  background: var(--color-brand-soft);
  border-color: var(--color-brand-edge);
}
.stat-pill--brand .stat-pill__num { color: var(--color-brand); }

/* ═══ NAVLINK (header nav item) ════════════════════════════════════ */
.navlink {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-text-secondary);
  transition: all var(--duration-fast) var(--ease-out);
  text-decoration: none;
  min-block-size: 36px;
}
.navlink:hover {
  background: var(--color-surface-1);
  color: var(--color-text-primary);
}
.navlink--active {
  background: var(--color-brand-soft);
  color: var(--color-brand);
}
.navlink--cta {
  background: var(--color-brand);
  color: var(--color-text-on-brand);
  font-weight: var(--weight-semi);
}
.navlink--cta:hover {
  background: var(--color-brand-hover);
  color: var(--color-text-on-brand);
}

/* ═══ STATUS DOT (online/offline indicator) ════════════════════════ */
.status-dot {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  color: var(--color-text-tertiary);
}
.status-dot::before {
  content: '';
  inline-size: 7px;
  block-size: 7px;
  border-radius: var(--radius-pill);
  background: var(--color-success);
  box-shadow: 0 0 8px var(--color-success);
  animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.5; }
}

/* ═══ FOOTER ═══════════════════════════════════════════════════════ */
.site-footer {
  margin-block-start: auto;
  padding: var(--space-8) var(--space-6);
  border-block-start: 1px solid var(--color-border-faint);
  background: var(--color-surface-1);
}
.site-footer__inner {
  max-inline-size: var(--layout-max-content);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  align-items: center;
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  font-family: var(--font-mono);
  letter-spacing: var(--tracking-wide);
  text-align: center;
}
.site-footer__row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
}
.site-footer__row a {
  color: var(--color-text-secondary);
  text-decoration: none;
  transition: color var(--duration-fast);
}
.site-footer__row a:hover { color: var(--color-brand); }
.site-footer__sep { color: var(--color-border-default); }
.site-footer__row--legal { color: var(--color-text-disabled); font-size: 10.5px; }

/* ═══ CONTAINER UTILITY ════════════════════════════════════════════ */
.container {
  max-inline-size: var(--layout-max-content);
  margin-inline: auto;
  padding-inline: var(--space-6);
}
.container--narrow { max-inline-size: var(--layout-max-narrow); }
.container--prose  { max-inline-size: var(--layout-max-prose); }
.container--wide   { max-inline-size: var(--layout-max-wide); }

/* ═══ MOBILE ADJUSTMENTS ═══════════════════════════════════════════ */
@media (max-width: 640px) {
  .site-header__inner { padding: var(--space-3) var(--space-4); }
  .site-header__nav .navlink:not(.navlink--cta) { display: none; }
  .container { padding-inline: var(--space-4); }
  .card { padding: var(--space-4); }
  .btn { min-block-size: 44px; }
}

}

/* ═══ pages.css ═══════════════════════════════════════════════ */
@layer pages {
/* ─────────────────────────────────────────────────────────────────────
 * pages.css — stili specifici per pagine pubbliche (error, auth, hero)
 *
 * Riusa tokens + components.css. Layout-specific only.
 * ───────────────────────────────────────────────────────────────────── */

/* ═══ ERROR PAGE (404 / 403 / 500) ══════════════════════════════════ */
.error-page {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-block-size: calc(100dvh - 200px);
  padding: var(--space-12) var(--space-6);
  text-align: center;
}
.error-page__code {
  font-family: var(--font-mono);
  font-size: clamp(5rem, 18vw, 10rem);
  font-weight: var(--weight-bold);
  line-height: var(--leading-none);
  letter-spacing: var(--tracking-tighter);
  background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-deep) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  margin-block-end: var(--space-4);
}
.error-page__title {
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tighter);
  margin-block-end: var(--space-3);
  color: var(--color-text-primary);
}
.error-page__message {
  font-size: var(--text-md);
  color: var(--color-text-secondary);
  max-inline-size: 32rem;
  margin-block-end: var(--space-8);
  line-height: var(--leading-relaxed);
  text-wrap: pretty;
}
.error-page__actions {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  justify-content: center;
}
.error-page__refid {
  margin-block-start: var(--space-12);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-text-disabled);
  letter-spacing: var(--tracking-wide);
}

/* Variant overrides per status code */
.error-page--404 .error-page__code { /* default sky */ }
.error-page--403 .error-page__code {
  background: linear-gradient(135deg, var(--color-warning) 0%, #d97706 100%);
  -webkit-background-clip: text;
  background-clip: text;
}
.error-page--500 .error-page__code {
  background: linear-gradient(135deg, var(--color-error) 0%, #b91c1c 100%);
  -webkit-background-clip: text;
  background-clip: text;
}

/* ═══ AUTH PAGE (login / signup / verify) ═══════════════════════════ */
.auth-page {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  padding: var(--space-12) var(--space-6);
}
.auth-card {
  inline-size: 100%;
  max-inline-size: var(--layout-max-narrow);
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-xl);
  padding: var(--space-8);
  box-shadow: var(--shadow-lg);
}
.auth-card__header {
  text-align: center;
  margin-block-end: var(--space-8);
}
.auth-card__title {
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight);
  margin-block-end: var(--space-2);
}
.auth-card__subtitle {
  color: var(--color-text-secondary);
  font-size: var(--text-base);
}
.auth-card__divider {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-block: var(--space-6);
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  font-family: var(--font-mono);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
}
.auth-card__divider::before,
.auth-card__divider::after {
  content: '';
  flex: 1;
  block-size: 1px;
  background: var(--color-border-faint);
}
.auth-card__footer {
  margin-block-start: var(--space-6);
  text-align: center;
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
}
.auth-card__footer a {
  color: var(--color-brand-hover);
  text-decoration: none;
  font-weight: var(--weight-medium);
}
.auth-card__footer a:hover { text-decoration: underline; }

/* OAuth button (Google/GitHub) */
.oauth-btn {
  inline-size: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface-2);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-sm);
  color: var(--color-text-primary);
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-out);
  min-block-size: 44px;
  text-decoration: none;
}
.oauth-btn:hover {
  background: var(--color-surface-3);
  border-color: var(--color-border-strong);
}
.oauth-btn svg { inline-size: 18px; block-size: 18px; }

/* ═══ HERO (landing) ════════════════════════════════════════════════ */
.hero {
  padding: clamp(var(--space-12), 8vw, var(--space-32)) var(--space-6) var(--space-16);
  text-align: center;
}
.hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.375rem 0.875rem;
  background: var(--color-brand-soft);
  border: 1px solid var(--color-brand-edge);
  border-radius: var(--radius-pill);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: var(--weight-semi);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--color-brand);
  margin-block-end: var(--space-6);
}
.hero__eyebrow::before {
  content: '';
  inline-size: 6px;
  block-size: 6px;
  border-radius: var(--radius-pill);
  background: var(--color-brand);
  box-shadow: 0 0 6px var(--color-brand);
}
.hero__title {
  font-size: clamp(var(--text-4xl), 7vw, var(--text-6xl));
  letter-spacing: var(--tracking-tighter);
  line-height: var(--leading-tight);
  margin-block-end: var(--space-4);
  text-wrap: balance;
}
.hero__title .accent {
  background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-hover) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero__subtitle {
  font-size: var(--text-lg);
  color: var(--color-text-secondary);
  max-inline-size: 36rem;
  margin: 0 auto var(--space-8);
  line-height: var(--leading-relaxed);
  text-wrap: pretty;
}
.hero__actions {
  display: flex;
  gap: var(--space-3);
  justify-content: center;
  flex-wrap: wrap;
}

/* ═══ PRICING ═══════════════════════════════════════════════════════ */
/* 5 tier (free/starter/pro/team/enterprise) — layout responsivo
   esplicito invece di auto-fit (che con minmax 260px su 5 card lasciava
   Enterprise orfano in una seconda riga su viewport medi). */
.pricing-grid {
  display: grid;
  grid-template-columns: 1fr;                            /* mobile */
  gap: var(--space-3);
  margin-block: var(--space-8);
  /* Container quasi a viewport per dare respiro alle 5 col */
  max-inline-size: min(1800px, calc(100% - 32px));
  margin-inline: auto;
}
@media (min-width: 640px)  { .pricing-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .pricing-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1280px) { .pricing-grid { grid-template-columns: repeat(5, 1fr); gap: var(--space-3); } }

/* Layout 5-col su viewport ampi: prezzo non-wrap + card padding ridotto */
@media (min-width: 1280px) {
  .pricing-card { padding: var(--space-5) var(--space-4); }
  .pricing-card__name { font-size: var(--text-lg); }
  .pricing-card__price {
    font-size: clamp(var(--text-2xl), 2.2vw, var(--text-3xl));
    white-space: nowrap;
    overflow-wrap: normal;
  }
  .pricing-card__price .cycle { font-size: 0.34em; white-space: nowrap; }
  .pricing-card__tagline { font-size: var(--text-sm); }
  .pricing-card__features li { font-size: var(--text-sm); }
}
.pricing-card {
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  transition: all var(--duration-fast) var(--ease-out);
}
.pricing-card:hover {
  border-color: var(--color-border-strong);
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
.pricing-card--featured {
  border-color: var(--color-brand);
  box-shadow: 0 0 0 1px var(--color-brand), 0 10px 40px var(--color-brand-glow);
  position: relative;
}
.pricing-card--featured::before {
  content: 'Popolare';
  position: absolute;
  inset-block-start: -10px;
  inset-inline-start: 50%;
  transform: translateX(-50%);
  background: var(--color-brand);
  color: var(--color-text-on-brand);
  padding: 0.125rem 0.75rem;
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  font-family: var(--font-mono);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
}
.pricing-card__name {
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight);
}
.pricing-card__price {
  font-size: var(--text-4xl);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tighter);
  line-height: var(--leading-none);
}
.pricing-card__price .currency {
  font-size: 0.5em;
  color: var(--color-text-tertiary);
  font-weight: var(--weight-medium);
  margin-inline-end: 0.125em;
}
.pricing-card__price .cycle {
  font-size: 0.3em;
  color: var(--color-text-tertiary);
  font-weight: var(--weight-medium);
  margin-inline-start: 0.5em;
}
.pricing-card__features {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  margin-block: var(--space-4);
}
.pricing-card__features li {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
}
.pricing-card__features li::before {
  content: '';
  inline-size: 16px;
  block-size: 16px;
  flex-shrink: 0;
  margin-block-start: 2px;
  background: var(--color-brand);
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/contain no-repeat;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* ═══ PROSE (legal pages) ═══════════════════════════════════════════ */
.prose-wrap {
  max-inline-size: var(--layout-max-prose);
  margin-inline: auto;
  padding: var(--space-12) var(--space-6) var(--space-24);
}
.prose-wrap h1 {
  font-size: var(--text-4xl);
  margin-block-end: var(--space-3);
}
.prose-wrap .lede {
  font-size: var(--text-lg);
  color: var(--color-text-secondary);
  margin-block-end: var(--space-8);
  line-height: var(--leading-snug);
}
.prose-wrap h2 {
  font-size: var(--text-2xl);
  margin-block: var(--space-12) var(--space-4);
  scroll-margin-block-start: var(--space-16);
}
.prose-wrap h3 {
  font-size: var(--text-md);
  margin-block: var(--space-8) var(--space-3);
}
.prose-wrap p {
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin-block-end: var(--space-4);
}
.prose-wrap ul, .prose-wrap ol {
  margin-block-end: var(--space-5);
  padding-inline-start: var(--space-6);
  color: var(--color-text-secondary);
}
.prose-wrap li { margin-block-end: var(--space-2); line-height: var(--leading-snug); }
.prose-wrap li::marker { color: var(--color-brand); }

/* ═══ ONBOARD 2FA PAGE ══════════════════════════════════════════════ */
/* Variante wide della auth-card per il flow setup TOTP */
.auth-card--wide {
  max-inline-size: 640px;
}

/* Stepper verticale 1-2-3 */
.onboard-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}
.onboard-steps__item {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: var(--space-4);
  align-items: start;
}
.onboard-steps__num {
  inline-size: 28px;
  block-size: 28px;
  border-radius: 9999px;
  background: var(--color-brand);
  color: var(--color-on-brand, #fff);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--weight-bold);
  font-size: var(--text-sm);
  font-feature-settings: 'tnum';
  margin-block-start: 2px;
}
.onboard-steps__item > div > strong {
  display: block;
  font-size: var(--text-md);
  font-weight: var(--weight-semi);
  margin-block-end: var(--space-1);
}

/* QR block — QR + manual entry side-by-side su desktop, stacked su mobile */
.qr-block {
  display: grid;
  grid-template-columns: 192px 1fr;
  gap: var(--space-6);
  align-items: start;
  padding: var(--space-5);
  border: 1px solid var(--color-border-faint);
  border-radius: var(--radius-lg);
  background: var(--color-surface-2);
  margin-block-start: var(--space-4);
}
@media (max-width: 540px) {
  .qr-block {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
  }
}
.qr-block__code {
  inline-size: 192px;
  block-size: 192px;
  background: #fff;
  border-radius: var(--radius-md);
  padding: var(--space-3);
  display: flex;
  align-items: center;
  justify-content: center;
}
.qr-block__code svg {
  inline-size: 100%;
  block-size: 100%;
  display: block;
}
.qr-block__manual {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.qr-block__label,
.qr-block__secret {
  display: block;
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-faint);
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
  user-select: all;
  word-break: break-all;
}
.qr-block__secret {
  letter-spacing: 0.06em;
  font-size: var(--text-md);
}

/* Code input (6 digit, large, centered) */
.input--code {
  font-family: var(--font-mono);
  font-size: var(--text-xl);
  letter-spacing: 0.4em;
  text-align: center;
  padding-block: var(--space-3);
  font-variant-numeric: tabular-nums;
}

/* Recovery codes panel — appare DOPO la conferma 2FA */
.recovery-panel {
  margin-block-start: var(--space-8);
  border: 2px solid var(--color-warning, #f59e0b);
  border-radius: var(--radius-xl);
  background: var(--color-warning-soft, color-mix(in srgb, var(--color-warning, #f59e0b) 8%, transparent));
  padding: var(--space-6);
}
.recovery-panel__header { margin-block-end: var(--space-4); }
.recovery-panel__title {
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  margin-block: var(--space-1) var(--space-2);
}
.recovery-panel__codes {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  background: var(--color-surface-1);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  margin-block: var(--space-4);
  user-select: all;
}
.recovery-panel__codes .code {
  padding: var(--space-1) var(--space-2);
  background: var(--color-surface-2);
  border-radius: var(--radius-sm);
  letter-spacing: 0.05em;
}
@media (max-width: 540px) {
  .recovery-panel__codes { grid-template-columns: 1fr; }
}
.recovery-panel__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: flex-end;
}

/* tiny text — smaller than .small */
.tiny {
  font-size: var(--text-xs);
  line-height: var(--leading-snug);
}

/* ═══ NAVBAR LANGUAGE SWITCHER (IT|EN) ═══════════════════════════════ */
.nav-lang {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  margin-inline-start: var(--space-3);
  padding: 4px 8px;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border-default);
  background: var(--color-surface-1);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.04em;
}
.nav-lang__opt {
  color: var(--color-text-tertiary);
  text-decoration: none;
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  transition: color var(--duration-fast), background var(--duration-fast);
}
.nav-lang__opt:hover {
  color: var(--color-text-primary);
  background: var(--color-surface-2);
}
.nav-lang__opt--active {
  color: var(--color-text-on-brand);
  background: var(--color-brand-600);
}
.nav-lang__opt--active:hover {
  color: var(--color-text-on-brand);
  background: var(--color-brand-700);
}
.nav-lang__sep {
  color: var(--color-text-quaternary);
  user-select: none;
}

/* ═══ NAVBAR ACCOUNT MENU (loggedIn) ═════════════════════════════════ */
.navlink-account {
  position: relative;
  margin-inline-start: var(--space-2);
}
.navlink-account > summary {
  list-style: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border-default);
  background: var(--color-surface-1);
  color: var(--color-text-primary);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  transition: background var(--duration-fast), border-color var(--duration-fast);
}
.navlink-account > summary::-webkit-details-marker { display: none; }
.navlink-account > summary::marker { content: ''; }
.navlink-account > summary:hover {
  background: var(--color-surface-2);
  border-color: var(--color-border-strong);
}
.navlink-account[open] > summary {
  background: var(--color-surface-2);
  border-color: var(--color-brand);
}
.account-avatar {
  inline-size: 24px;
  block-size: 24px;
  border-radius: 9999px;
  background: var(--color-brand);
  color: var(--color-on-brand, #fff);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
}
.account-name {
  max-inline-size: 120px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.account-caret {
  inline-size: 12px;
  block-size: 12px;
  opacity: 0.6;
  transition: transform var(--duration-fast);
}
.navlink-account[open] .account-caret {
  transform: rotate(180deg);
}
.account-menu {
  position: absolute;
  inset-block-start: calc(100% + var(--space-2));
  inset-inline-end: 0;
  min-inline-size: 240px;
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-lg);
  padding: var(--space-2);
  box-shadow: var(--shadow-lg);
  z-index: 50;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.account-menu__header {
  padding: var(--space-3);
  border-block-end: 1px solid var(--color-border-faint);
  margin-block-end: var(--space-1);
}
.account-menu__name {
  font-size: var(--text-sm);
  font-weight: var(--weight-semi);
  color: var(--color-text-primary);
}
.account-menu__email {
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-block-start: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.account-menu__item {
  display: block;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  font-size: var(--text-sm);
  color: var(--color-text-primary);
  text-decoration: none;
  background: transparent;
  border: 0;
  inline-size: 100%;
  text-align: start;
  cursor: pointer;
  transition: background var(--duration-fast);
}
.account-menu__item:hover {
  background: var(--color-surface-2);
}
.account-menu__item--danger {
  color: var(--color-error, #ef4444);
}
.account-menu__item--danger:hover {
  background: color-mix(in srgb, var(--color-error, #ef4444) 10%, transparent);
}
.account-menu__sep {
  border: 0;
  border-block-start: 1px solid var(--color-border-faint);
  margin: var(--space-1) 0;
}
.account-menu__form {
  margin: 0;
}

/* ═══ PRICING v2 — comparison table + FAQ ═══════════════════════════ */
.pricing-card__yearly {
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-block: var(--space-1) var(--space-3);
}
.pricing-card__llm {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  background: color-mix(in srgb, var(--color-brand) 8%, transparent);
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
  margin-block-end: var(--space-3);
}
.pricing-card__llm strong { color: var(--color-brand); }
.pricing-card__tagline {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  min-block-size: 2.5em;
  margin-block-start: var(--space-1);
}
.pricing-card__badge {
  position: absolute;
  inset-block-start: -12px;
  inset-inline-end: var(--space-4);
  background: var(--color-brand);
  color: var(--color-on-brand, #fff);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-caps);
  padding: var(--space-1) var(--space-3);
  border-radius: 9999px;
  text-transform: uppercase;
}
.pricing-card { position: relative; }
.pricing-card--featured {
  border-color: var(--color-brand);
  box-shadow: 0 0 0 1px var(--color-brand), var(--shadow-lg);
}

/* Comparison table */
.comparison-table {
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--color-surface-1);
  margin-block-start: var(--space-4);
}
.comparison-table__row {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.2fr 1fr;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-block-end: 1px solid var(--color-border-faint);
  font-size: var(--text-sm);
  align-items: center;
}
.comparison-table__row:last-child { border-block-end: 0; }
.comparison-table__row--head {
  background: var(--color-surface-2);
  font-weight: var(--weight-semi);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--color-text-tertiary);
}
@media (max-width: 720px) {
  .comparison-table__row {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-2);
  }
  .comparison-table__row--head { display: none; }
}
.badge {
  display: inline-block;
  font-size: var(--text-xs);
  padding: 0 var(--space-2);
  border-radius: 9999px;
  font-weight: var(--weight-semi);
  margin-inline-start: var(--space-2);
}
.badge--brand {
  background: var(--color-brand);
  color: var(--color-on-brand, #fff);
}
.check {
  color: var(--color-success, #10b981);
  font-weight: var(--weight-bold);
  margin-inline-end: var(--space-1);
}
.cross {
  color: var(--color-error, #ef4444);
  font-weight: var(--weight-bold);
  margin-inline-end: var(--space-1);
}

/* FAQ */
.faq-list {
  max-inline-size: var(--layout-max-prose, 720px);
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.faq-item {
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
}
.faq-item[open] {
  border-color: var(--color-brand);
}
.faq-item > summary {
  cursor: pointer;
  font-weight: var(--weight-semi);
  list-style: none;
  position: relative;
  padding-inline-end: var(--space-6);
}
.faq-item > summary::-webkit-details-marker { display: none; }
.faq-item > summary::marker { content: ''; }
.faq-item > summary::after {
  content: '+';
  position: absolute;
  inset-inline-end: 0;
  inset-block-start: 50%;
  transform: translateY(-50%);
  font-size: var(--text-lg);
  color: var(--color-text-tertiary);
  transition: transform var(--duration-fast);
}
.faq-item[open] > summary::after {
  content: '−';
}
.faq-item > p {
  margin-block-start: var(--space-2);
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  font-size: var(--text-sm);
}
.mt-16 { margin-block-start: var(--space-16, 4rem); }

/* Hero trust badges */
.hero__trust {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-3) var(--space-5);
  margin: var(--space-8) auto 0;
  padding: 0;
  max-inline-size: 800px;
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
}
.hero__trust li {
  position: relative;
  padding-inline-start: var(--space-5);
}
.hero__trust li::before {
  content: '✓';
  position: absolute;
  inset-inline-start: 0;
  color: var(--color-success, #10b981);
  font-weight: var(--weight-bold);
}
.hero__trust strong {
  color: var(--color-text-primary);
}

/* ═══ COOKIE BANNER + MODAL (GDPR EDPB 5/2020) ══════════════════════ */
.cookie-banner {
  position: fixed;
  inset-inline: var(--space-4);
  inset-block-end: var(--space-4);
  max-inline-size: 1120px;
  margin-inline: auto;
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  z-index: 90;
  padding: var(--space-5) var(--space-6);
  /* Slide up subtle */
  animation: cookieBannerSlide var(--duration-base) var(--ease-out);
}
@keyframes cookieBannerSlide {
  from { transform: translateY(12px); opacity: 0; }
  to   { transform: translateY(0);     opacity: 1; }
}
.cookie-banner__inner {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--space-6);
  align-items: center;
}
@media (max-width: 768px) {
  .cookie-banner__inner {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
}
.cookie-banner__title {
  font-size: var(--text-md);
  margin-block-end: var(--space-2);
}
.cookie-banner__desc {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
}
.cookie-banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: flex-end;
}
@media (max-width: 768px) {
  .cookie-banner__actions {
    flex-direction: column;
    align-items: stretch;
  }
  .cookie-banner__actions .btn { inline-size: 100%; }
}

.cookie-modal {
  max-inline-size: 560px;
  inline-size: 100%;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-lg);
  padding: 0;
  background: var(--color-surface-1);
  color: var(--color-text-primary);
  box-shadow: var(--shadow-lg);
  /* Centra esplicitamente — alcuni browser (Safari, Chrome con utility CSS
     globali tipo "all: revert" / table) non auto-centrano i <dialog> con
     showModal(). Forziamo position fixed + translate per garantire center. */
  position: fixed;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
}
.cookie-modal::backdrop {
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(2px);
}
.cookie-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  border-block-end: 1px solid var(--color-border-faint);
}
.cookie-modal__header h2 {
  margin: 0;
  font-size: var(--text-lg);
}
.cookie-modal__close {
  background: none;
  border: 0;
  font-size: var(--text-xl);
  color: var(--color-text-tertiary);
  cursor: pointer;
  padding: 0 var(--space-2);
  line-height: 1;
}
.cookie-modal__close:hover { color: var(--color-text-primary); }
.cookie-modal__body {
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  max-block-size: 60vh;
  overflow-y: auto;
}
.cookie-modal__footer {
  display: flex;
  gap: var(--space-3);
  justify-content: flex-end;
  padding: var(--space-4) var(--space-5);
  border-block-start: 1px solid var(--color-border-faint);
}
.cookie-option {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: var(--space-3);
  align-items: start;
  padding: var(--space-3);
  border: 1px solid var(--color-border-faint);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: background var(--duration-fast);
}
.cookie-option:hover { background: var(--color-surface-2); }
.cookie-option input[type="checkbox"] {
  inline-size: 18px;
  block-size: 18px;
  margin-block-start: 3px;
  accent-color: var(--color-brand);
}
.cookie-option strong {
  display: block;
  font-size: var(--text-sm);
  font-weight: var(--weight-semi);
  margin-block-end: var(--space-1);
}
.cookie-option p {
  font-size: var(--text-xs);
  color: var(--color-text-secondary);
  margin: 0;
  line-height: var(--leading-snug);
}

/* Tabella cookie-policy */
.cookie-table {
  inline-size: 100%;
  border-collapse: collapse;
  margin-block: var(--space-3) var(--space-5);
  font-size: var(--text-sm);
}
.cookie-table th,
.cookie-table td {
  text-align: start;
  padding: var(--space-2) var(--space-3);
  border-block-end: 1px solid var(--color-border-faint);
}
.cookie-table th {
  font-weight: var(--weight-semi);
  color: var(--color-text-tertiary);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
}

/* ═══ ONBOARD WORKSPACE + COLD-START MODAL ══════════════════════════ */
.slug-input {
  display: flex;
  align-items: stretch;
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-sm);
  background: var(--color-surface-1);
  overflow: hidden;
}
.slug-input:focus-within {
  border-color: var(--color-brand);
  box-shadow: 0 0 0 3px var(--color-brand-glow);
}
.slug-input__prefix,
.slug-input__suffix {
  display: inline-flex;
  align-items: center;
  padding: 0 var(--space-3);
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
  background: var(--color-surface-2);
  white-space: nowrap;
}
.slug-input__field {
  flex: 1;
  min-inline-size: 0;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  font-family: var(--font-mono);
  text-align: center;
}
.slug-input__field:focus { box-shadow: none !important; }
.slug-input__status.is-ok { color: var(--color-success, #10b981); }
.slug-input__status.is-err { color: var(--color-error, #ef4444); }

.plan-pick__option {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: background var(--duration-fast), border-color var(--duration-fast);
}
.plan-pick__option:hover { background: var(--color-surface-2); }
.plan-pick__option--selected {
  border-color: var(--color-brand);
  background: color-mix(in srgb, var(--color-brand) 5%, transparent);
}
.plan-pick__option input[type="radio"] {
  margin-block-start: 4px;
  accent-color: var(--color-brand);
}
.plan-pick__option strong { display: block; font-size: var(--text-md); }
.plan-pick__option span {
  display: block;
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  margin-block-start: 2px;
}

/* Cold-start modal — <dialog showModal()> centratura affidabile.
   Safari/Firefox alcune versioni NON centrano native il <dialog> in
   showModal mode quando ci sono custom CSS; forziamo via position:fixed
   + transform translate. inset:0 garantisce contained nel viewport. */
.cold-start-modal {
  max-inline-size: 480px;
  inline-size: calc(100% - 32px);
  position: fixed;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-lg);
  background: var(--color-surface-1);
  color: var(--color-text-primary);
  padding: 0;
  box-shadow: var(--shadow-lg);
}
.cold-start-modal::backdrop {
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(4px);
}
.cold-start-modal__body {
  padding: var(--space-8) var(--space-6) var(--space-6);
  text-align: center;
}
.cold-start-modal__spinner {
  inline-size: 56px;
  block-size: 56px;
  margin-inline: auto;
  color: var(--color-brand);
}
.spinner {
  inline-size: 100%;
  block-size: 100%;
  animation: spinner-rotate 1.4s linear infinite;
}
.spinner circle {
  stroke-dasharray: 90, 150;
  stroke-dashoffset: -35;
  animation: spinner-dash 1.4s ease-in-out infinite;
}
@keyframes spinner-rotate {
  100% { transform: rotate(360deg); }
}
@keyframes spinner-dash {
  0%   { stroke-dasharray: 1, 150; stroke-dashoffset: 0; }
  50%  { stroke-dasharray: 90, 150; stroke-dashoffset: -35; }
  100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; }
}
.cold-start-modal__title {
  font-size: var(--text-xl);
  margin-block: var(--space-5) var(--space-2);
}
.cold-start-modal__step {
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  margin-block-end: var(--space-5);
}
.cold-start-modal__progress {
  list-style: none;
  padding: 0;
  margin: 0;
  text-align: start;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.cold-start-modal__progress li {
  position: relative;
  padding-inline-start: var(--space-6);
  font-size: var(--text-sm);
  color: var(--color-text-tertiary);
  transition: color var(--duration-fast);
}
.cold-start-modal__progress li::before {
  content: '○';
  position: absolute;
  inset-inline-start: 0;
  color: var(--color-border-strong);
}
.cold-start-modal__progress li.done {
  color: var(--color-text-secondary);
}
.cold-start-modal__progress li.done::before {
  content: '✓';
  color: var(--color-success, #10b981);
}
.cold-start-modal__progress li.active {
  color: var(--color-text-primary);
  font-weight: var(--weight-medium);
}
.cold-start-modal__progress li.active::before {
  content: '●';
  color: var(--color-brand);
  animation: pulse 1s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.5; }
}

/* ═══ DASHBOARD + ADMIN + ACCOUNT — view-specific classes ═══════════ */

/* Generic text helpers ───────────────────────────────────────────── */
.text-muted    { color: var(--color-text-tertiary); }
.text-warn     { color: var(--color-warning, #f59e0b); }
.link-brand    { color: var(--color-accent); text-decoration: none; }
.link-brand:hover { text-decoration: underline; }

/* Card brand-border (CTA enfasi) ──────────────────────────────────── */
.card--brand-border { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent); }

/* Form ─────────────────────────────────────────────────────────────── */
.form { display: flex; flex-direction: column; gap: var(--space-4); max-width: 480px; }

/* Tabella dati cluster-wide ───────────────────────────────────────── */
.table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
.table thead th {
  text-align: left; padding: var(--space-3) var(--space-2);
  border-block-end: 1px solid var(--color-border-strong);
  color: var(--color-text-secondary); font-weight: var(--weight-medium);
}
.table tbody td {
  padding: var(--space-3) var(--space-2);
  border-block-end: 1px solid var(--color-border-faint);
  vertical-align: top;
}
.table tbody tr:last-child td { border-block-end: 0; }
.table--compact thead th, .table--compact tbody td { padding: var(--space-2); font-size: var(--text-xs); }
.table code { font-family: var(--font-mono); font-size: var(--text-xs); }

/* KV (key-value list, billing) ────────────────────────────────────── */
.kv { display: grid; grid-template-columns: 160px 1fr; gap: var(--space-2) var(--space-4); margin: 0; }
.kv dt { color: var(--color-text-secondary); font-size: var(--text-sm); }
.kv dd { margin: 0; font-size: var(--text-sm); }

/* Account layout (sidebar + content) ──────────────────────────────── */
.account-layout {
  display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--space-6);
  max-width: var(--container-max); margin: 0 auto; padding: var(--space-6) var(--space-4);
  align-items: start;
}
@media (max-width: 768px) { .account-layout { grid-template-columns: 1fr; } }
.account-content { min-width: 0; }
.account-content__header { margin-block-end: var(--space-6); }
.account-content__header h1 { margin: 0 0 var(--space-1); }
.account-actions { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-block-start: var(--space-4); }

/* Dashboard grid (workspace cards + admin KPI) ────────────────────── */
.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--space-4);
}
.dashboard-section-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-4); margin-block-end: var(--space-4);
}
.dashboard-section-header h2 { margin: 0; }
.dashboard-card__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.dashboard-quicklinks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--space-4);
  margin-block-start: var(--space-6);
}
.quicklinks-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.quicklinks-list a { color: var(--color-accent); text-decoration: none; font-size: var(--text-sm); }
.quicklinks-list a:hover { text-decoration: underline; }

/* ═══ /docs — sezioni con respiro typografico ═══════════════════════
 * Le sezioni della docs sono <section class="card mb-6"> con <h2> +
 * contenuto rich (ol/ul/p/code). Override per dare:
 *  - padding interno maggiore (spazio dai bordi al testo)
 *  - margin-block-end ai capostesto h2 (respiro tra titolo e contenuto)
 *  - line-height + max-width sui paragrafi per leggibilita\`
 *  - spacing tra paragrafi/liste consecutive
 * Selector specifico per non impattare altre .card del portal.
 */
section.card[id="getting-started"],
section.card[id="workspace"],
section.card[id="editor"],
section.card[id="team"],
section.card[id="llm"],
section.card[id="api"],
section.card[id="billing"],
section.card[id="security"],
section.card[id="faq"],
section.card[id="contatti"] {
  padding: var(--space-10) var(--space-10);
  scroll-margin-block-start: var(--space-12);
}
@media (max-width: 768px) {
  section.card[id="getting-started"],
  section.card[id="workspace"],
  section.card[id="editor"],
  section.card[id="team"],
  section.card[id="llm"],
  section.card[id="api"],
  section.card[id="billing"],
  section.card[id="security"],
  section.card[id="faq"],
  section.card[id="contatti"] {
    padding: var(--space-6) var(--space-5);
  }
}

/* Capostesto h2 dentro card docs: rimuoviamo margin-top (gia\` annullato
 * inline dai vecchi style), aggiungiamo margin-block-end generoso per
 * staccare dal contenuto sotto. */
section.card[id] > h2,
section.card[id] > h2:first-child {
  margin-block-start: 0;
  margin-block-end: var(--space-6);
  font-size: var(--text-2xl);
  font-weight: var(--font-weight-bold);
  letter-spacing: -0.01em;
  padding-block-end: var(--space-4);
  border-block-end: 1px solid var(--color-border-default);
}

/* Paragrafi e liste dentro card docs: line-height + spacing comodi */
section.card[id] p,
section.card[id] li {
  line-height: var(--leading-relaxed);
}
section.card[id] p {
  margin-block: 0 var(--space-4);
}
section.card[id] ol,
section.card[id] ul {
  margin-block: 0 var(--space-5);
  padding-inline-start: var(--space-6);
}
section.card[id] ol li,
section.card[id] ul li {
  margin-block-end: var(--space-2);
}
section.card[id] ol li:last-child,
section.card[id] ul li:last-child {
  margin-block-end: 0;
}

/* Alert e blockquote dentro docs: piu\` aria sopra/sotto */
section.card[id] .alert {
  margin-block: var(--space-5) var(--space-3);
  padding: var(--space-4) var(--space-5);
}

/* Progress bar (LLM usage workspace card) ─────────────────────────── */
.progress-row { display: flex; align-items: center; gap: var(--space-2); margin-block-start: var(--space-1); }
.progress {
  flex: 1; appearance: none; -webkit-appearance: none;
  width: 100%; height: 6px; border: 0; border-radius: 999px;
  background: var(--color-surface-2); overflow: hidden;
}
.progress::-webkit-progress-bar { background: var(--color-surface-2); border-radius: 999px; }
.progress::-webkit-progress-value { background: var(--color-accent); border-radius: 999px; }
.progress::-moz-progress-bar { background: var(--color-accent); border-radius: 999px; }

/* KPI cards (admin top row) ──────────────────────────────────────── */
.kpi-card {
  background: var(--color-surface-1);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
}
.kpi-card__label { color: var(--color-text-tertiary); font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.06em; }
.kpi-card__value { font-size: var(--text-xl); font-weight: var(--weight-bold); margin-block-start: var(--space-2); }
.kpi-card--success { border-color: var(--color-success, #10b981); }
.kpi-card--danger  { border-color: var(--color-danger, #ef4444); }
.kpi-card--danger .kpi-card__value { color: var(--color-danger, #ef4444); }

/* Badge variants ──────────────────────────────────────────────────── */
.badge--success { background: rgba(16, 185, 129, 0.12); color: #10b981; border: 1px solid rgba(16, 185, 129, 0.30); }
.badge--warn    { background: rgba(245, 158, 11, 0.12); color: #f59e0b; border: 1px solid rgba(245, 158, 11, 0.30); }
.badge--danger  { background: rgba(239, 68, 68, 0.12);  color: #ef4444; border: 1px solid rgba(239, 68, 68, 0.30); }
.badge--muted   { background: var(--color-surface-2); color: var(--color-text-tertiary); border: 1px solid var(--color-border-faint); }

/* Role + plan badges (cosmetici, color-coded) ─────────────────────── */
.role-owner  { background: rgba(14, 165, 233, 0.12); color: var(--color-accent); border: 1px solid rgba(14, 165, 233, 0.30); }
.role-admin  { background: rgba(168, 85, 247, 0.12); color: #a855f7;            border: 1px solid rgba(168, 85, 247, 0.30); }
.role-editor { background: rgba(34, 197, 94, 0.12);  color: #22c55e;            border: 1px solid rgba(34, 197, 94, 0.30); }
.role-viewer { background: var(--color-surface-2); color: var(--color-text-tertiary); border: 1px solid var(--color-border-faint); }

.plan-free       { background: var(--color-surface-2); color: var(--color-text-tertiary); }
.plan-starter    { background: rgba(14, 165, 233, 0.12); color: var(--color-accent); border: 1px solid rgba(14, 165, 233, 0.30); }
.plan-pro        { background: rgba(168, 85, 247, 0.12); color: #a855f7; border: 1px solid rgba(168, 85, 247, 0.30); }
.plan-team       { background: rgba(34, 197, 94, 0.12);  color: #22c55e; border: 1px solid rgba(34, 197, 94, 0.30); }
.plan-enterprise { background: rgba(245, 158, 11, 0.12); color: #f59e0b; border: 1px solid rgba(245, 158, 11, 0.30); }

/* ═══ ADMIN: link-as-button (form POST trigger) ════════════════════ */
.link-brand-button {
  background: none; border: 0; padding: 0; cursor: pointer;
  color: var(--color-accent);
  font-size: var(--text-sm);
  font-family: inherit;
  text-align: left;
}
.link-brand-button:hover { text-decoration: underline; }

/* Admin security table — color coding outcome + improved layout */
.security-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-3);
  margin-block: var(--space-4);
}
.security-event {
  background: var(--color-surface-1);
  border-left: 3px solid var(--color-border-default);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-1);
}
.security-event--ok { border-left-color: #10b981; }
.security-event--warn { border-left-color: #f59e0b; }
.security-event--danger { border-left-color: #ef4444; background: rgba(239,68,68,0.06); }
.security-event__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.security-event__action { font-family: var(--font-mono); font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.security-event__ts { font-size: var(--text-xs); color: var(--color-text-tertiary); }
.security-event__meta { font-size: var(--text-xs); color: var(--color-text-tertiary); font-family: var(--font-mono); word-break: break-all; }

/* ═══ ACCOUNT — sidebar + main grid /account/* ══════════════════════ */
/* Layout 2 colonne: sidebar 240px sticky + main fluido.
   Su mobile (<=768px) collassa a singola colonna, sidebar diventa
   barra orizzontale wrap. */
.account-container {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: var(--space-6);
  align-items: start;
}
.account-main {
  min-inline-size: 0; /* permette wrap di code/tables dentro card */
}
@media (max-width: 768px) {
  .account-container {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
}

.account-sidebar {
  position: sticky;
  top: var(--space-4);
  align-self: start;
}
.account-sidebar nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.account-sidebar__link {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  color: var(--color-text-secondary);
  text-decoration: none;
  font-size: var(--text-sm);
  transition: background var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);
}
.account-sidebar__link:hover {
  background: var(--color-surface-2);
  color: var(--color-text-primary);
}
.account-sidebar__link--active {
  background: var(--color-brand-soft);
  color: var(--color-accent);
  font-weight: var(--weight-medium);
}
.account-sidebar__icon { font-size: 1.1em; opacity: 0.9; }

@media (max-width: 768px) {
  .account-sidebar { position: static; }
  .account-sidebar nav ul { flex-direction: row; flex-wrap: wrap; }
  .account-sidebar__link { padding: var(--space-2); }
}

/* Form fields (api-keys create, email change, ecc.) ─────────────── */
.form-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.form-field label {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  font-weight: var(--weight-medium);
}
.form-field__hint {
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
}
.form-field input[type="text"],
.form-field input[type="email"],
.form-field input[type="password"],
.form-field input[type="number"],
.form-field select,
.form-field textarea,
.form input[type="text"],
.form input[type="email"],
.form input[type="password"],
.form input[type="number"],
.form select,
.form textarea {
  background: var(--color-surface-2);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md);
  padding: var(--space-2) var(--space-3);
  color: var(--color-text-primary);
  font-size: var(--text-sm);
  font-family: inherit;
  transition: border-color var(--duration-fast) var(--ease-out);
}
.form-field input:focus,
.form input:focus,
.form select:focus,
.form textarea:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px var(--color-brand-soft);
}

/* Scope checkbox grid (api-keys) ─────────────────────────────────── */
.scope-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-2);
  margin-block: var(--space-2);
}
.scope-grid label {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--color-surface-2);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md);
  cursor: pointer;
  font-size: var(--text-sm);
  transition: border-color var(--duration-fast) var(--ease-out);
}
.scope-grid label:hover { border-color: var(--color-border-strong); }
.scope-grid label:has(input:checked) {
  border-color: var(--color-accent);
  background: var(--color-brand-soft);
}
.scope-grid input[type="checkbox"] { margin-block-start: 2px; }

/* ============================================================================
 * /sicurezza — Sentinel WAF marketing page
 * ============================================================================ */

/* Wrapper marketing-grade: piu` largo del prose-wrap (44rem)
 * per accomodare tabelle comparison + grid di cards.
 * 72rem (1152px) = layout-max-content standard del design system. */
.marketing-wrap {
  max-inline-size: var(--layout-max-content);
  margin-inline: auto;
  padding: var(--space-12) var(--space-6) var(--space-24);
}
.marketing-wrap h2 {
  font-size: var(--text-2xl);
  font-weight: var(--font-weight-bold);
  margin-block: var(--space-12) var(--space-4);
  letter-spacing: -0.01em;
  color: var(--color-text-primary);
}
.marketing-wrap h3 {
  font-size: var(--text-lg);
  font-weight: var(--font-weight-semibold);
  margin-block: var(--space-6) var(--space-3);
  color: var(--color-text-primary);
}
.marketing-wrap p {
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin-block-end: var(--space-4);
  font-size: 1.0625rem;
  max-inline-size: 56rem;
  /* Testo giustificato con sillabazione automatica per evitare
   * spazi interword troppo larghi (pattern tipografico standard
   * per testi marketing/editoriale in italiano). */
  text-align: justify;
  text-justify: inter-word;
  -webkit-hyphens: auto;
  hyphens: auto;
  hyphenate-limit-chars: 6 3 3;
}
.marketing-wrap > p:first-of-type,
.marketing-wrap > h2 + p {
  /* Paragrafi di intro non hanno il vincolo larghezza colonna */
  max-inline-size: 56rem;
}
.marketing-wrap ul {
  margin-block-end: var(--space-5);
  padding-inline-start: var(--space-6);
  max-inline-size: 56rem;
}
.marketing-wrap ul li {
  color: var(--color-text-secondary);
  line-height: var(--leading-relaxed);
  margin-block-end: var(--space-2);
  text-align: justify;
  text-justify: inter-word;
  -webkit-hyphens: auto;
  hyphens: auto;
  hyphenate-limit-chars: 6 3 3;
}
.marketing-wrap ul li strong {
  color: var(--color-text-primary);
}

/* Cards: testo giustificato anche dentro le card per coerenza visiva */
.card-feature p,
.card-pillar p {
  text-align: justify;
  text-justify: inter-word;
  -webkit-hyphens: auto;
  hyphens: auto;
  hyphenate-limit-chars: 6 3 3;
}

/* Locale italiana per la sillabazione corretta */
.marketing-wrap, .card-feature, .card-pillar {
  /* Browser usa il pattern di sillabazione della lingua del documento
   * (lang="it" sul <html>). Esplicitamo per defense-in-depth. */
}
[lang="it"] .marketing-wrap p,
[lang="it"] .marketing-wrap ul li,
[lang="it"] .card-feature p,
[lang="it"] .card-pillar p {
  hyphenate-character: "\2010"; /* hyphen U+2010 invece di "-" ASCII */
}

.hero-marketing {
  background: linear-gradient(135deg, var(--color-surface) 0%, var(--color-brand-soft) 100%);
  padding-block: clamp(3rem, 6vw, 5rem);
  border-block-end: 1px solid var(--color-border);
}
.hero-marketing__inner {
  max-inline-size: 56rem;
  margin-inline: auto;
  padding-inline: var(--space-6);
  text-align: center;
}
.hero-marketing__title {
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: var(--font-weight-bold);
  line-height: 1.15;
  margin-block: var(--space-3) var(--space-5);
  letter-spacing: -0.02em;
}
.hero-marketing__lede {
  font-size: clamp(1rem, 1.4vw, 1.18rem);
  color: var(--color-text-secondary);
  line-height: 1.6;
  max-inline-size: 48rem;
  margin-inline: auto;
}
.hero-marketing__chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
  margin-block-start: var(--space-6);
}

/* Chip color variants */
.chip {
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.85rem;
  border-radius: var(--radius-full);
  font-size: var(--text-sm);
  font-weight: var(--font-weight-medium);
  background: var(--color-surface-subtle);
  color: var(--color-text-primary);
  border: 1px solid var(--color-border);
}
.chip--success { background: rgb(16 185 129 / 0.12); color: rgb(6 95 70); border-color: rgb(16 185 129 / 0.3); }
.chip--info    { background: rgb(59 130 246 / 0.12); color: rgb(30 64 175); border-color: rgb(59 130 246 / 0.3); }
.chip--accent  { background: var(--color-brand-soft); color: var(--color-brand); border-color: var(--color-brand); }
.chip--neutral { background: var(--color-surface-subtle); color: var(--color-text-secondary); }
[data-theme="dark"] .chip--success { color: rgb(167 243 208); }
[data-theme="dark"] .chip--info    { color: rgb(191 219 254); }

/* Cards grid */
.cards-grid {
  display: grid;
  gap: var(--space-5);
  margin-block: var(--space-6) var(--space-8);
}
.cards-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr)); }
.cards-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr)); }

.card-feature, .card-pillar {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  transition: border-color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);
}
.card-feature:hover, .card-pillar:hover {
  border-color: var(--color-brand);
  transform: translateY(-2px);
}
.card-feature__icon {
  font-size: 2rem;
  line-height: 1;
  margin-block-end: var(--space-3);
}
.card-feature h3, .card-pillar h3 {
  font-size: 1.15rem;
  font-weight: var(--font-weight-semibold);
  margin-block: 0 var(--space-2);
  color: var(--color-text-primary);
}
.card-feature p, .card-pillar p {
  font-size: var(--text-sm);
  color: var(--color-text-secondary);
  line-height: 1.55;
  margin-block: 0;
}

/* Comparison table — extended for /sicurezza */
.comparison-table-wrap {
  margin-block: var(--space-6);
  overflow-x: auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
}
.comparison-table-wrap > .comparison-table {
  inline-size: 100%;
  border-collapse: collapse;
  font-size: var(--text-sm);
}
.comparison-table-wrap thead th {
  background: var(--color-surface-subtle);
  text-align: start;
  padding: var(--space-3) var(--space-4);
  font-weight: var(--font-weight-semibold);
  border-block-end: 2px solid var(--color-border);
}
.comparison-table-wrap tbody th {
  text-align: start;
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface);
  font-weight: var(--font-weight-medium);
  color: var(--color-text-primary);
  white-space: nowrap;
}
.comparison-table-wrap td {
  padding: var(--space-3) var(--space-4);
  border-block-start: 1px solid var(--color-border);
  color: var(--color-text-secondary);
  vertical-align: top;
}
.comparison-table__own {
  background: var(--color-brand-soft) !important;
  color: var(--color-text-primary) !important;
  font-weight: var(--font-weight-medium);
}
.comparison-table__note {
  font-size: var(--text-xs);
  color: var(--color-text-tertiary);
  margin-block-start: var(--space-3);
  padding: var(--space-3) var(--space-4);
  font-style: italic;
}

/* CTA bar */
.cta-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-block: var(--space-8) var(--space-4);
  padding: var(--space-6);
  background: linear-gradient(135deg, var(--color-brand-soft) 0%, var(--color-surface) 100%);
  border: 1px solid var(--color-brand);
  border-radius: var(--radius-lg);
}
.cta-bar__text h3 {
  margin-block: 0 var(--space-1);
  font-size: 1.25rem;
  font-weight: var(--font-weight-semibold);
}
.cta-bar__text p {
  margin-block: 0;
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
}
.cta-bar__actions {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
}
@media (max-width: 640px) {
  .cta-bar { flex-direction: column; align-items: stretch; text-align: center; }
  .cta-bar__actions { justify-content: center; }
}

}


/* ═══ UTILITIES (last layer, override all) ═════════════════════════ */
@layer utilities {
  .hidden { display: none !important; }
  .text-center { text-align: center; }
  .text-left { text-align: start; }
  .text-right { text-align: end; }

  .stack { display: flex; flex-direction: column; gap: var(--space-4); }
  .stack-2 { display: flex; flex-direction: column; gap: var(--space-2); }
  .stack-6 { display: flex; flex-direction: column; gap: var(--space-6); }
  .row { display: flex; align-items: center; gap: var(--space-3); }
  .row-end { justify-content: flex-end; }
  .row-between { justify-content: space-between; }

  .mt-2  { margin-block-start: var(--space-2); }
  .mt-4  { margin-block-start: var(--space-4); }
  .mt-6  { margin-block-start: var(--space-6); }
  .mt-8  { margin-block-start: var(--space-8); }
  .mb-2  { margin-block-end: var(--space-2); }
  .mb-4  { margin-block-end: var(--space-4); }
  .mb-6  { margin-block-end: var(--space-6); }
  .mb-8  { margin-block-end: var(--space-8); }

  .muted { color: var(--color-text-tertiary); }
  .small { font-size: var(--text-sm); }
  .mono  { font-family: var(--font-mono); }

  .text-secondary { color: var(--color-text-secondary); }
  .text-tertiary  { color: var(--color-text-tertiary); }
  .text-brand     { color: var(--color-brand); }
  .text-eyebrow {
    font-family: var(--font-mono);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    letter-spacing: var(--tracking-widest);
    text-transform: uppercase;
    color: var(--color-text-tertiary);
  }

  .link-brand {
    color: var(--color-brand-hover);
    text-decoration: none;
    transition: color var(--duration-fast);
  }
  .link-brand:hover {
    color: var(--color-brand);
    text-decoration: underline;
  }

  .section--padded    { padding-block: var(--space-16); }
  .section--padded-lg { padding-block: var(--space-24); }
}
