/* Restart Abruzzo — foglio di stile pubblico.
   Direzione: impostazione editoriale (gerarchia chiara, etichette di rubrica) + schede impresa e offerte
   immediate da consultare, con un colore distintivo. Mobile-first, nessuna dipendenza. */
@font-face {
  font-family: 'Bricolage Grotesque';
  src: url('/fonts/bricolage-grotesque-latin-opsz-normal.woff2') format('woff2');
  font-weight: 200 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Source Serif 4';
  src: url('/fonts/source-serif-4-latin-opsz-normal.woff2') format('woff2');
  font-weight: 200 900; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Source Serif 4';
  src: url('/fonts/source-serif-4-latin-opsz-italic.woff2') format('woff2');
  font-weight: 200 900; font-style: italic; font-display: swap;
}

:root {
  --paper: #fbf8f2;
  --paper-2: #f2ece1;
  --card: #ffffff;
  --ink: #141413;
  --ink-2: #45433e;
  --ink-3: #6b6860;
  --rule: #e4ddd0;
  --accent: #0f5e5c;          /* verde petrolio: link, stati "aperto" */
  --accent-soft: #e0eeec;
  --signal: #f6b80a;          /* colore distintivo (zafferano), sovrascritto dalle impostazioni */
  --signal-ink: #141413;      /* testo sopra il colore distintivo */
  --signal-soft: #fdf1cc;
  --warn: #8a4b00;
  --warn-soft: #fbedd5;
  --danger: #a3261b;
  --ok: #24653a;
  --display: 'Bricolage Grotesque', 'Helvetica Neue', Arial, sans-serif;
  --serif: 'Source Serif 4', 'Iowan Old Style', Georgia, serif;
  --sans: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --w: 76rem;
  --radius: 10px;
  --radius-s: 6px;
  --focus: 3px solid #1a73e8;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 1.0625rem/1.6 var(--sans); text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--accent); text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: var(--focus); outline-offset: 2px; }
h1, h2, h3, h4 { font-family: var(--display); line-height: 1.08; margin: 0 0 .5em; font-weight: 750; letter-spacing: -.02em; }
h1 { font-size: clamp(2.2rem, 6vw, 4rem); }
h2 { font-size: clamp(1.6rem, 3.4vw, 2.3rem); }
h3 { font-size: 1.25rem; letter-spacing: -.01em; }
p { margin: 0 0 1em; }
.sr-only { 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 { position: absolute; left: -999px; top: 0; background: var(--ink); color: #fff; padding: .6rem 1rem; z-index: 100; }
.skip:focus { left: 1rem; top: 1rem; }
.wrap { max-width: var(--w); margin: 0 auto; padding: 0 1rem; }
@media (min-width: 48rem) { .wrap { padding: 0 1.5rem; } }
.muted { color: var(--ink-3); }
.small { font-size: .875rem; }
@media (max-width: 40rem) { .hide-sm { display: none; } .masthead > .wrap { gap: .75rem; } .brand-name { font-size: 1.3rem; } }
@media (max-width: 30rem) { .mast-actions .services-cta { display: none; } }

/* ---------------------------------------------------------------- testata */
.topbar { background: var(--ink); color: #e9e4da; font-size: .82rem; }
.topbar .wrap { display: flex; gap: 1.25rem; justify-content: flex-end; flex-wrap: wrap; padding-top: .35rem; padding-bottom: .35rem; }
.topbar a { color: #e9e4da; text-decoration: none; }
.topbar a:hover, .topbar a[aria-current] { text-decoration: underline; }
@media (max-width: 47.99rem) { .topbar { display: none; } }

.masthead { background: var(--paper); border-bottom: 2px solid var(--ink); position: sticky; top: 0; z-index: 30; }
.masthead > .wrap { display: flex; align-items: center; gap: 1.5rem; min-height: 4.25rem; }
.brand { display: flex; align-items: center; gap: .55rem; text-decoration: none; color: var(--ink); flex: none; }
.brand img { height: 2.4rem; width: auto; }
.brand-name { font-family: var(--display); font-size: 1.55rem; font-weight: 800; letter-spacing: -.035em; line-height: 1; }
.brand-name span { background: var(--signal); color: var(--signal-ink); padding: 0 .2em; margin-left: .05em; border-radius: 3px; }
.mainnav { flex: 1; }
.mainnav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: .25rem; }
.mainnav a { display: block; padding: .5rem .75rem; color: var(--ink); text-decoration: none; font: 650 1rem var(--display); border-radius: 999px; white-space: nowrap; }
.mainnav a:hover { background: var(--paper-2); }
.mainnav a[aria-current="page"] { background: var(--ink); color: #fff; }
.mainnav .secondary { display: none; }
.mast-actions { display: flex; align-items: center; gap: .5rem; margin-left: auto; }
.icon-btn { display: inline-flex; align-items: center; gap: .4rem; background: none; border: 1.5px solid var(--ink); border-radius: 999px; padding: .42rem .8rem; font: 600 .9rem var(--sans); color: var(--ink); cursor: pointer; text-decoration: none; }
.icon-btn:hover { background: var(--paper-2); }
.icon-btn svg { width: 1.05rem; height: 1.05rem; }
.menu-toggle { display: none; }
@media (max-width: 60rem) {
  .menu-toggle { display: inline-flex; }
  .mainnav { display: none; }
  .mainnav.open { display: block; position: absolute; left: 0; right: 0; top: 100%; background: var(--paper); border-bottom: 2px solid var(--ink); box-shadow: 0 16px 30px rgba(0,0,0,.1); }
  .mainnav.open ul { flex-direction: column; padding: .5rem 1rem 1rem; gap: 0; }
  .mainnav.open a { border-radius: 0; padding: .8rem 0; border-bottom: 1px solid var(--rule); font-size: 1.15rem; }
  .mainnav.open a[aria-current="page"] { background: none; color: var(--ink); box-shadow: inset 4px 0 0 var(--signal); padding-left: .75rem; }
  .mainnav.open .secondary { display: block; }
  .mainnav.open .secondary a { font: 400 1rem var(--sans); color: var(--ink-2); }
}

/* ---------------------------------------------------------------- pulsanti, etichette */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; font: 650 1rem/1.2 var(--sans); padding: .75rem 1.25rem; border-radius: 999px; border: 2px solid var(--ink); background: var(--ink); color: #fff; text-decoration: none; cursor: pointer; }
.btn:hover { background: #333; border-color: #333; }
.btn-ghost { background: transparent; color: var(--ink); }
.btn-ghost:hover { background: var(--paper-2); }
.btn-signal { background: var(--signal); border-color: var(--signal); color: var(--signal-ink); }
.btn-signal:hover { background: var(--ink); border-color: var(--ink); color: #fff; }
.btn-small { padding: .45rem .9rem; font-size: .9rem; }
.kicker { font: 700 .75rem/1.2 var(--sans); letter-spacing: .09em; text-transform: uppercase; color: var(--ink-2); margin: 0 0 .5rem; }
.more { font-weight: 650; text-decoration: none; white-space: nowrap; color: var(--ink); border-bottom: 2px solid var(--signal); }
.more::after { content: ' →'; }
.more:hover { background: var(--signal-soft); }
.lede { font-family: var(--serif); font-size: 1.3rem; line-height: 1.45; color: var(--ink-2); }

.label { display: inline-block; font: 700 .7rem/1 var(--sans); letter-spacing: .07em; text-transform: uppercase; padding: .32rem .5rem; border-radius: 4px; background: var(--paper-2); color: var(--ink); }
.label-interview { background: var(--signal); color: var(--signal-ink); }
.label-video, .label-audio { background: var(--ink); color: #fff; }
.label-guide { background: var(--accent-soft); color: var(--accent); }
.label-analysis { background: #ece4ff; color: #4a2fa0; }
.label-idea { background: #ffe3d6; color: #8a3a12; }
.label-event, .label-grant { background: #fff; border: 1px solid var(--rule); }
.tag { display: inline-block; font: 600 .78rem/1.2 var(--sans); padding: .3rem .6rem; border-radius: 999px; background: var(--card); border: 1px solid var(--rule); color: var(--ink-2); text-decoration: none; }
a.tag:hover { border-color: var(--ink); }
.tags { display: flex; flex-wrap: wrap; gap: .35rem; margin: .75rem 0; padding: 0; list-style: none; }
.badge { display: inline-block; font: 700 .7rem/1 var(--sans); letter-spacing: .05em; text-transform: uppercase; padding: .32rem .5rem; border-radius: 4px; }
.badge-open { background: var(--accent-soft); color: var(--accent); }
.badge-warn { background: var(--warn-soft); color: var(--warn); }
.badge-closed { background: #ece8e1; color: var(--ink-3); }
.badge-sponsor { background: #fff; border: 1px dashed var(--ink-3); color: var(--ink-2); }
.badge-demo { background: #222; color: #fff; }
.row-top { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; }

/* ---------------------------------------------------------------- sezioni */
main { min-height: 50vh; }
.section { padding: 3rem 0; }
.section + .section { border-top: 1px solid var(--rule); }
.section-head { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.section-head h2 { margin: 0; }
.band { background: var(--card); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.band-ink { background: var(--ink); color: #f3efe6; }
.band-ink h2, .band-ink h3 a { color: #fff; }
.band-ink .muted { color: #b9b4aa; }
.band-ink .more { color: #fff; }
.band-signal { background: var(--signal); color: var(--signal-ink); }
.band-signal .btn { background: var(--ink); border-color: var(--ink); color: #fff; }

.hero { padding: 2.75rem 0 2rem; }
.hero h1 { max-width: 18ch; }
.hero .lede { max-width: 44rem; }
.hero-pill { display: inline-block; background: var(--signal); color: var(--signal-ink); font: 700 .78rem var(--sans); letter-spacing: .07em; text-transform: uppercase; padding: .4rem .7rem; border-radius: 999px; margin-bottom: 1rem; }
.hero-search { display: flex; gap: .5rem; max-width: 40rem; margin-top: 1.5rem; background: var(--card); border: 2px solid var(--ink); border-radius: 999px; padding: .3rem .3rem .3rem 1.1rem; }
.hero-search { align-items: center; }
.hero-search input[type=search] { flex: 1; border: 0; background: transparent; font: inherit; font-size: 1.05rem; min-width: 0; padding: .45rem .25rem; }
.hero-search input:focus { outline: none; }
.hero-search:focus-within { box-shadow: 0 0 0 3px #1a73e8; }

/* ---------------------------------------------------------------- griglie e card */
.grid { display: grid; gap: 1.5rem; }
@media (min-width: 40rem) { .grid-2, .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 64rem) { .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } }

.story-card { display: flex; flex-direction: column; gap: .55rem; }
.story-card .media { position: relative; aspect-ratio: 3 / 2; background: var(--paper-2); overflow: hidden; border-radius: var(--radius); }
.story-card .media img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.story-card:hover .media img { transform: scale(1.03); }
.story-card h3 { font-size: 1.3rem; margin: 0; }
.story-card h3 a, .story-card h2 a { color: inherit; text-decoration: none; }
.story-card h3 a:hover, .story-card h2 a:hover { text-decoration: underline; text-decoration-color: var(--signal); text-decoration-thickness: 3px; }
.story-card p { margin: 0; color: var(--ink-2); }
.band-ink .story-card p { color: #cfc9be; }
.play { position: absolute; left: .75rem; bottom: .75rem; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--signal); }
.play::after { content: ''; position: absolute; left: 1.05rem; top: .8rem; border-left: .85rem solid var(--signal-ink); border-top: .55rem solid transparent; border-bottom: .55rem solid transparent; }
.placeholder-img { width: 100%; height: 100%; min-height: 6rem; display: grid; place-items: center; color: var(--ink-3); font: 600 .75rem var(--sans); letter-spacing: .05em; text-transform: uppercase;
  background: repeating-linear-gradient(135deg, var(--paper-2) 0 12px, #e9e1d2 12px 24px); }

/* carosello in homepage */
.carousel-section { padding: 0 0 2rem; }
.carousel { position: relative; }
.carousel-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; border-radius: var(--radius); gap: 0; }
.carousel-track::-webkit-scrollbar { display: none; }
.carousel-track:focus-visible { outline: var(--focus); outline-offset: 3px; }
.slide { flex: 0 0 100%; scroll-snap-align: start; position: relative; min-height: 26rem; background: var(--ink); color: #fff; overflow: hidden; display: flex; align-items: flex-end; }
@media (min-width: 48rem) { .slide { min-height: 30rem; } }
.slide-media { position: absolute; inset: 0; }
.slide-media img, .slide-media .placeholder-img { width: 100%; height: 100%; object-fit: cover; }
.slide-media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,20,19,0) 25%, rgba(20,20,19,.88) 100%); }
.slide-body { position: relative; padding: 1.5rem 1.25rem 4.5rem; max-width: 46rem; }
@media (min-width: 48rem) { .slide-body { padding: 2.25rem 2.25rem 4.75rem; } }
.slide h3 { font-size: clamp(1.7rem, 4vw, 2.8rem); margin: .5rem 0 .4rem; color: #fff; }
.slide h3 a { color: inherit; text-decoration: none; }
.slide h3 a:hover { text-decoration: underline; text-decoration-color: var(--signal); }
.slide p { color: #ece7dc; margin: 0 0 1rem; font-size: 1.05rem; max-width: 38rem; }
.carousel-controls { position: absolute; left: 1.25rem; right: 1.25rem; bottom: 1rem; display: flex; align-items: center; gap: .5rem; }
@media (min-width: 48rem) { .carousel-controls { left: 2.25rem; right: 2.25rem; } }
.carousel-controls[hidden] { display: none; }
.carousel-btn { width: 2.4rem; height: 2.4rem; border-radius: 50%; border: 1.5px solid #fff; background: rgba(20,20,19,.4); color: #fff; font: 700 1rem var(--sans); cursor: pointer; display: grid; place-items: center; }
.carousel-btn:hover { background: var(--signal); color: var(--signal-ink); border-color: var(--signal); }
.carousel-pause { margin-left: auto; font-size: .75rem; }
.carousel-dots { display: flex; gap: .35rem; flex-wrap: wrap; }
.dot { width: .7rem; height: .7rem; border-radius: 999px; border: 0; padding: 0; background: rgba(255,255,255,.5); cursor: pointer; }
.dot[aria-current="true"] { width: 1.8rem; background: var(--signal); }

/* apertura editoriale */
.opening { display: grid; gap: 2rem; }
@media (min-width: 60rem) { .opening { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 2.5rem; } }
.lead .media { aspect-ratio: 16 / 10; }
.lead h2 { font-size: clamp(1.9rem, 4.2vw, 3rem); margin: .2rem 0 .5rem; }
.lead .lede { margin: 0; }
.latest { border-top: 3px solid var(--ink); }
.latest h2 { font: 800 .85rem var(--sans); letter-spacing: .08em; text-transform: uppercase; margin: .75rem 0 .25rem; }
.latest ul { list-style: none; margin: 0; padding: 0; }
.headline { display: grid; grid-template-columns: 1fr auto; gap: .75rem; padding: .9rem 0; border-bottom: 1px solid var(--rule); align-items: start; }
.headline h3 { font-size: 1.08rem; margin: .35rem 0 0; line-height: 1.2; }
.headline h3 a { color: var(--ink); text-decoration: none; }
.headline h3 a:hover { text-decoration: underline; }
.headline .thumb { width: 5.5rem; aspect-ratio: 1; border-radius: var(--radius-s); overflow: hidden; background: var(--paper-2); }
.headline .thumb img { width: 100%; height: 100%; object-fit: cover; }

/* elenchi */
.list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.row { padding: 1rem 1.1rem; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); display: grid; gap: .3rem; }
.row h3 { font-size: 1.15rem; margin: 0; }
.row h3 a { color: var(--ink); text-decoration: none; }
.row h3 a:hover { text-decoration: underline; }
.row .meta { display: flex; flex-wrap: wrap; gap: .25rem 1rem; font-size: .9rem; color: var(--ink-3); }
.row .meta strong { color: var(--ink-2); font-weight: 650; }
.row:hover, .job-card:hover { border-color: var(--ink); }

/* scheda offerta */
.job-card { display: grid; grid-template-columns: auto 1fr; gap: .4rem 1rem; padding: 1rem 1.1rem; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); position: relative; }
.job-card h3 { font-size: 1.18rem; margin: .3rem 0 0; }
.job-card h3 a { color: var(--ink); text-decoration: none; }
.job-card h3 a::after { content: ''; position: absolute; inset: 0; }  /* tutta la scheda cliccabile */
.job-card h3 a:focus-visible { outline: none; }
.job-card:focus-within { outline: var(--focus); outline-offset: 2px; }
.job-company { margin: .1rem 0 .4rem; font-weight: 600; color: var(--ink-2); }
.job-deadline { grid-column: 2; margin: 0; font-size: .85rem; color: var(--ink-3); }
@media (min-width: 48rem) { .job-card { grid-template-columns: auto 1fr auto; align-items: center; } .job-deadline { grid-column: 3; text-align: right; max-width: 12rem; } }
.chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem; }
.chip { font-size: .8rem; font-weight: 600; padding: .22rem .55rem; border-radius: 999px; background: var(--paper-2); color: var(--ink-2); }
.logo { width: 3.25rem; height: 3.25rem; border-radius: 12px; border: 1px solid var(--rule); background: #fff; display: grid; place-items: center; overflow: hidden; flex: none; }
.logo img { width: 100%; height: 100%; object-fit: contain; padding: .25rem; }
.logo-fallback { background: var(--signal); color: var(--signal-ink); font: 800 1.05rem var(--display); border-color: transparent; }

/* scheda impresa */
.company-card { background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); overflow: hidden; display: flex; flex-direction: column; }
.company-card:hover { border-color: var(--ink); }
.company-card .media { aspect-ratio: 16 / 9; background: var(--paper-2); overflow: hidden; }
.company-card .media img { width: 100%; height: 100%; object-fit: cover; }
.company-card-body { padding: 0 1.1rem 1.1rem; position: relative; flex: 1; display: flex; flex-direction: column; gap: .2rem; }
.logo-float { width: 4rem; height: 4rem; margin-top: -2rem; margin-bottom: .5rem; box-shadow: 0 4px 14px rgba(0,0,0,.08); }
.company-card h3 { margin: .2rem 0 0; font-size: 1.3rem; }
.company-card h3 a { color: var(--ink); text-decoration: none; }
.company-card p { margin: 0; }
.open-jobs { margin-top: auto; align-self: flex-start; padding-top: .6rem; font-weight: 700; color: var(--ink); text-decoration: none; }
.open-jobs::before { content: ''; display: inline-block; width: .55rem; height: .55rem; border-radius: 50%; background: #2fa35a; margin-right: .4rem; vertical-align: middle; }
.person-card { display: flex; gap: 1rem; align-items: center; padding: 1rem; background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); }
.person-card h3 { margin: 0; font-size: 1.15rem; }
.person-card h3 a { color: var(--ink); text-decoration: none; }
.person-card p { margin: 0; }
.avatar { width: 4.5rem; height: 4.5rem; border-radius: 50%; overflow: hidden; flex: none; display: grid; place-items: center; }
.avatar img { width: 100%; height: 100%; object-fit: cover; }

/* colonne opportunità */
.opp-col h3.col-title { display: flex; justify-content: space-between; align-items: baseline; font: 800 1.4rem var(--display); border-top: 3px solid var(--ink); padding-top: .75rem; margin-bottom: .9rem; }
.opp-col h3.col-title span { font: 700 .8rem var(--sans); color: var(--ink-3); }
.opp-col .job-card { grid-template-columns: auto 1fr; }
.opp-col .job-deadline { grid-column: 2; text-align: left; }

.deadline-list { list-style: none; margin: 0; padding: 0; }
.deadline-list li { display: grid; grid-template-columns: 4.2rem 1fr; gap: .9rem; padding: .8rem 0; border-bottom: 1px solid var(--rule); align-items: start; }
.date-chip { text-align: center; border-radius: var(--radius-s); background: var(--ink); color: #fff; padding: .35rem 0; line-height: 1.1; }
.date-chip b { display: block; font: 800 1.4rem var(--display); }
.date-chip span { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--signal); }

.service-tiles { display: grid; gap: 1rem; }
@media (min-width: 48rem) { .service-tiles { grid-template-columns: 1fr 1fr; } }
.tile { border: 2px solid var(--ink); background: var(--card); border-radius: var(--radius); padding: 1.5rem; }
.tile h3 { margin-bottom: .4rem; font-size: 1.4rem; }
.empty { border: 1.5px dashed var(--rule); border-radius: var(--radius); padding: 1.25rem; color: var(--ink-3); background: rgba(255,255,255,.5); }
.band-ink .empty { border-color: #45433e; background: transparent; color: #b9b4aa; }
.partners { display: flex; flex-wrap: wrap; gap: 1.5rem 2.5rem; align-items: center; }
.partners img { max-height: 3rem; width: auto; filter: grayscale(1); opacity: .85; }
.partners a:hover img { filter: none; opacity: 1; }

/* tab di sezione (rubriche, opportunità, imprese e rete) */
.tabs { display: flex; gap: .4rem; flex-wrap: wrap; margin: 0 0 1.75rem; padding: 0; list-style: none; }
.tabs a { display: inline-block; padding: .45rem .9rem; border: 1.5px solid var(--ink); border-radius: 999px; color: var(--ink); text-decoration: none; font: 650 .92rem var(--sans); background: var(--card); }
.tabs a:hover { background: var(--paper-2); }
.tabs a[aria-current] { background: var(--ink); color: #fff; }
.tabs a .count { font-weight: 500; opacity: .7; }

/* ---------------------------------------------------------------- filtri e moduli */
.page-head { padding: 2.5rem 0 1.25rem; max-width: 52rem; }
@media (max-width: 47.99rem) { .page-head { padding: 1.5rem 0 .75rem; } .page-head h1 { font-size: 2.2rem; } .page-head .lede { font-size: 1.05rem; margin-bottom: .75rem; } .layout-list { gap: 1rem; } .tabs { margin-bottom: 1rem; } }
.page-head h1 { margin-bottom: .35rem; }
.page-head .lede { margin-bottom: 1rem; }
.layout-list { display: grid; gap: 2rem; padding-bottom: 3rem; }
.layout-full { padding-bottom: 3rem; }
@media (min-width: 60rem) { .layout-list { grid-template-columns: 17rem minmax(0, 1fr); } }
.filters { background: var(--card); border: 1.5px solid var(--ink); border-radius: var(--radius); align-self: start; }
.filters details { padding: 0; }
.filters details[open] { padding: 0 1rem 1rem; }
.filters summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: .8rem 1rem; font: 700 1.05rem var(--display); }
.filters details[open] summary { padding: .8rem 0; margin-bottom: .25rem; border-bottom: 1px solid var(--rule); }
.filters summary::-webkit-details-marker { display: none; }
.filters summary::after { content: ''; width: .55rem; height: .55rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin: -.25rem .2rem 0; }
.filters details[open] summary::after { transform: rotate(-135deg); margin-top: .25rem; }
.filter-count { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding: 0 .4rem; border-radius: 999px; background: var(--signal); color: var(--signal-ink); font: 800 .8rem var(--sans); margin-left: .35rem; vertical-align: middle; }
.filters.is-desktop summary { display: none; }
.filters.is-desktop details[open] { padding: 1rem; }
.filter-fields { display: grid; gap: 0 .75rem; padding-top: .5rem; }
@media (min-width: 21rem) and (max-width: 59.99rem) { .filter-fields { grid-template-columns: 1fr 1fr; } .filter-fields > fieldset:first-child { grid-column: 1 / -1; } }
.filter-actions { display: flex; gap: .75rem; align-items: center; }
@media (max-width: 59.99rem) { .filter-actions { position: sticky; bottom: 0; background: var(--card); padding: .6rem 0 .2rem; box-shadow: 0 -8px 12px -8px rgba(0,0,0,.12); } .filter-fields select { padding: .5rem .45rem; font-size: .95rem; } }
.active-filters { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.active-filters a { display: inline-block; padding: .3rem .7rem; border-radius: 999px; background: var(--ink); color: #fff; text-decoration: none; font-size: .85rem; font-weight: 600; }
.active-filters a.clear { background: transparent; color: var(--ink); text-decoration: underline; }
@media (min-width: 60rem) { .filters { position: sticky; top: 5.5rem; } }
.filters fieldset { border: 0; padding: 0; margin: 0 0 .9rem; }
.filters legend, .filters label { font-weight: 650; font-size: .88rem; display: block; margin-bottom: .3rem; }

.result-bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.field { margin-bottom: 1rem; }
.field label { display: block; font-weight: 650; margin-bottom: .3rem; }
.field .hint { font-size: .85rem; color: var(--ink-3); margin-top: .25rem; }
input[type=text], input[type=email], input[type=tel], input[type=search], input[type=url], input[type=date], select, textarea {
  width: 100%; font: inherit; color: var(--ink); background: #fff; border: 1.5px solid #b9b1a2; border-radius: var(--radius-s); padding: .6rem .7rem; }
textarea { min-height: 8rem; resize: vertical; }
input:focus, select:focus, textarea:focus { outline: var(--focus); outline-offset: 1px; border-color: var(--ink-2); }
.field-error input, .field-error select, .field-error textarea { border-color: var(--danger); border-width: 2px; }
.error-text { color: var(--danger); font-size: .9rem; font-weight: 650; margin-top: .25rem; }
.check { display: flex; gap: .55rem; align-items: flex-start; font-weight: 400 !important; }
.check input { margin-top: .3rem; width: 1.1rem; height: 1.1rem; flex: none; accent-color: var(--ink); }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.alert { padding: .9rem 1rem; border-radius: var(--radius-s); margin: 0 0 1.25rem; border-left: 4px solid; }
.alert-ok { background: #e4f1e6; border-color: var(--ok); }
.alert-error { background: #fbe5e2; border-color: var(--danger); }
.alert-warn { background: var(--warn-soft); border-color: var(--warn); }
.alert-info { background: var(--accent-soft); border-color: var(--accent); }
.form-box { background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius); padding: 1.25rem; }
.searchbar { display: flex; gap: .5rem; }
.searchbar input { flex: 1; }

/* ---------------------------------------------------------------- articolo / scheda */
.article-head { padding: 2.5rem 0 1rem; max-width: 52rem; }
.article-head h1 { font-size: clamp(2.1rem, 5.5vw, 3.6rem); }
.byline { color: var(--ink-3); font-size: .95rem; display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.cover { margin: 1rem 0 2rem; }
.cover img { width: 100%; max-height: 40rem; object-fit: cover; border-radius: var(--radius); }
.cover figcaption, figure figcaption { font-size: .85rem; color: var(--ink-3); margin-top: .4rem; }
.prose { font-family: var(--serif); font-size: 1.2rem; line-height: 1.7; max-width: 42rem; }
.prose h2 { font-size: 1.7rem; margin-top: 1.6em; }
.prose h3 { font-size: 1.35rem; margin-top: 1.4em; }
.prose blockquote { margin: 1.5em 0; padding: .25rem 0 .25rem 1.25rem; border-left: 5px solid var(--signal); font-style: italic; font-size: 1.35rem; color: var(--ink); }
.prose ul, .prose ol { padding-left: 1.3rem; }
.prose li { margin-bottom: .35em; }
.prose img { border-radius: var(--radius); margin: 1.5em 0; }
.prose table { border-collapse: collapse; width: 100%; font: .95rem var(--sans); }
.prose th, .prose td { border-bottom: 1px solid var(--rule); padding: .5rem; text-align: left; }
.detail-layout { display: grid; gap: 2rem; padding-bottom: 3rem; }
@media (min-width: 60rem) { .detail-layout { grid-template-columns: minmax(0, 1fr) 21rem; gap: 3rem; } }
@media (max-width: 59.99rem) { .detail-layout > aside.factsheet { order: -1; } }
.factsheet { background: var(--card); border: 2px solid var(--ink); border-radius: var(--radius); padding: 1.2rem 1.25rem; align-self: start; }
@media (min-width: 60rem) { .factsheet.sticky { position: sticky; top: 5.5rem; } }
.factsheet dl { margin: 0; display: grid; gap: .65rem; }
.factsheet dt { font: 700 .72rem var(--sans); letter-spacing: .07em; text-transform: uppercase; color: var(--ink-3); }
.factsheet dd { margin: 0; font-weight: 550; }
.factsheet .btn { width: 100%; margin-top: 1rem; }
.notice { padding: 1rem 1.1rem; border-radius: var(--radius-s); background: var(--warn-soft); border-left: 4px solid var(--warn); margin: 0 0 1.5rem; }
.demo-banner { background: #222; color: #fff; text-align: center; padding: .5rem 1rem; font: 600 .85rem var(--sans); }
.source-box { font-size: .92rem; color: var(--ink-2); border-top: 1px solid var(--rule); margin-top: 2rem; padding-top: 1rem; }
.history { font-size: .9rem; color: var(--ink-2); }

/* pagina impresa */
.company-hero { position: relative; margin-top: 1.5rem; border-radius: var(--radius); overflow: hidden; background: var(--ink); }
.company-hero .cover-img { aspect-ratio: 21 / 8; }
.company-hero .cover-img img { width: 100%; height: 100%; object-fit: cover; opacity: .92; }
.company-hero .cover-img .placeholder-img { background: var(--signal); }
.company-id { display: flex; gap: .5rem 1.25rem; align-items: flex-start; flex-wrap: wrap; padding: 0 0 1.5rem; position: relative; }
.company-id .logo { width: 6rem; height: 6rem; border-radius: 18px; border: 3px solid var(--paper); box-shadow: 0 6px 20px rgba(0,0,0,.12); margin-top: -3rem; margin-left: 1rem; }
.company-id > div { padding-top: .9rem; min-width: 0; flex: 1 1 20rem; }
.company-id > .btn { margin-top: 1rem; }
.company-id .logo-fallback { font-size: 1.8rem; }
.company-id h1 { margin: 0; font-size: clamp(2rem, 5vw, 3.2rem); }
.company-id .lede { margin: .25rem 0 0; font-size: 1.15rem; }
.facts { list-style: none; margin: 0 0 1.5rem; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.facts li { background: var(--card); border: 1px solid var(--rule); border-radius: 999px; padding: .4rem .85rem; font-size: .9rem; }
.facts li b { font-weight: 700; }
.anchors { display: flex; gap: 1.5rem; border-bottom: 1px solid var(--rule); margin-bottom: 2rem; overflow-x: auto; }
.anchors a { padding: .75rem 0; font: 650 1rem var(--display); color: var(--ink-2); text-decoration: none; border-bottom: 3px solid transparent; white-space: nowrap; }
.anchors a:hover { color: var(--ink); border-bottom-color: var(--signal); }
.gallery { display: grid; gap: .6rem; grid-template-columns: repeat(2, 1fr); margin: 1rem 0 2rem; }
@media (min-width: 48rem) { .gallery { grid-template-columns: repeat(3, 1fr); } .gallery figure:first-child { grid-column: span 2; grid-row: span 2; } }
.gallery-2, .gallery-4 { grid-template-columns: repeat(2, 1fr) !important; }
.gallery-2 figure:first-child, .gallery-4 figure:first-child { grid-column: auto !important; grid-row: auto !important; }
.gallery figure { margin: 0; border-radius: var(--radius-s); overflow: hidden; background: var(--paper-2); }
.gallery img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; }
.gallery figcaption { font-size: .78rem; padding: .3rem .5rem; color: var(--ink-3); background: var(--card); }
.open-count { display: inline-block; background: var(--signal); color: var(--signal-ink); font: 800 .9rem var(--sans); border-radius: 999px; padding: .1rem .6rem; margin-left: .4rem; vertical-align: middle; }

/* embed con consenso */
.embed { position: relative; aspect-ratio: 16/9; background: var(--ink); border-radius: var(--radius); overflow: hidden; margin: 1.5rem 0; }
.embed.audio { aspect-ratio: auto; min-height: 10rem; }
.embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.embed-consent { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; padding: 1.5rem; color: #f4efe6; gap: .75rem; }
.embed-consent p { margin: 0; max-width: 32rem; font-size: .95rem; }
.embed-consent .btn { background: var(--signal); border-color: var(--signal); color: var(--signal-ink); }

.ad-slot { margin: 2rem 0; min-height: 280px; display: block; }
.ad-slot[hidden] { display: none; }
.ad-label { font: 600 .7rem var(--sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin-bottom: .25rem; }

.pager { display: flex; gap: .5rem; align-items: center; justify-content: center; margin: 2rem 0; flex-wrap: wrap; }
.pager a, .pager span { padding: .45rem .85rem; border: 1.5px solid var(--ink); border-radius: 999px; text-decoration: none; color: var(--ink); background: var(--card); }
.pager [aria-current] { background: var(--ink); color: #fff; }
mark { background: var(--signal-soft); color: inherit; padding: 0 .1em; }
.search-tabs { display: flex; gap: .5rem; flex-wrap: wrap; margin: 1rem 0; padding: 0; list-style: none; }
.search-tabs a { display: inline-block; padding: .35rem .8rem; border-radius: 999px; border: 1.5px solid var(--ink); text-decoration: none; color: var(--ink); font-size: .9rem; }
.search-tabs a[aria-current] { background: var(--ink); color: #fff; }

/* ---------------------------------------------------------------- piè di pagina */
.site-footer { background: var(--ink); color: #d8d2c6; margin-top: 3rem; padding: 3rem 0 1.5rem; font-size: .95rem; }
.site-footer a { color: #f1ece2; }
.footer-grid { display: grid; gap: 1.5rem; }
@media (min-width: 48rem) { .footer-grid { grid-template-columns: 1.4fr 1fr 1fr; } }
.site-footer h2 { font: 800 .85rem var(--sans); text-transform: uppercase; letter-spacing: .08em; color: var(--signal); }
.site-footer .brand-name { font-size: 1.8rem; }
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.site-footer .legal { border-top: 1px solid #3a3935; margin-top: 2rem; padding-top: 1rem; display: flex; gap: 1rem; flex-wrap: wrap; justify-content: space-between; font-size: .85rem; }
.made-with { white-space: nowrap; }
.made-with .heart { color: #ff4d5a; font-size: 1.1em; }
.linklike { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; cursor: pointer; }

.consent { position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 50; max-width: 40rem; margin: 0 auto; background: var(--card); color: var(--ink); border: 2px solid var(--ink); border-radius: var(--radius); box-shadow: 0 10px 40px rgba(0,0,0,.18); padding: 1.1rem 1.2rem; }
.consent[hidden] { display: none; }
.consent h2 { font-size: 1.25rem; margin-bottom: .35rem; }
.consent .actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.consent fieldset { border: 1px solid var(--rule); border-radius: var(--radius-s); margin: .75rem 0 0; padding: .6rem .8rem; }

@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
@media print { .masthead .mast-actions, .mainnav, .topbar, .site-footer, .consent, .ad-slot { display: none !important; } .masthead { position: static; } }
