/* Base: reset, tipografia, focus, utilità. */
*, *::before, *::after{ box-sizing: border-box; }
html{ font-size: calc(16px * var(--text-scale)); -webkit-text-size-adjust: 100%; }
body{
  margin: 0;
  font-family: var(--font);
  font-size: var(--fs-md);
  line-height: var(--lh);
  background: var(--bg);
  color: var(--text);
  font-feature-settings: 'cv11', 'ss01';
}
[hidden]{ display: none !important; }
h1, h2, h3, h4{ line-height: 1.25; margin: 0; }
p{ margin: 0; }
a{ color: var(--primary); text-underline-offset: 2px; }
img, svg{ vertical-align: middle; }
button, input, select, textarea{ font: inherit; color: inherit; }
code, kbd, pre{ font-family: var(--mono); }
kbd{
  font-size: 0.75em; padding: 1px 5px; border-radius: var(--r-xs);
  border: 1px solid var(--border-strong); background: var(--surface-2); color: var(--text-muted);
}
::selection{ background: var(--primary-soft); }

/* Focus sempre visibile da tastiera (WCAG 2.4.7) */
:focus-visible{ outline: 2px solid var(--focus); outline-offset: 2px; }
:focus:not(:focus-visible){ outline: none; }

.visually-hidden{
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.skip-link{ position: absolute; left: var(--s-2); top: -100px; z-index: 1000; padding: 8px 14px; background: var(--surface-1); border: 1px solid var(--border-strong); border-radius: var(--r-sm); }
.skip-link:focus{ top: var(--s-2); }

.muted{ color: var(--text-muted); }
.subtle{ color: var(--text-subtle); font-size: var(--fs-sm); }
.stack{ display: flex; flex-direction: column; gap: var(--s-3); }
.row{ display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.spacer{ flex: 1; }
.num{ font-variant-numeric: tabular-nums; }

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

@media print{
  body{ background: #fff; color: #000; }
}
