/* stile.css — aggiunte di autoadv (il resto è in kit.css)

   Tema CHIARO come tutta la suite (24/09/2026): i colori scritti a mano qui
   sono solo quelli che servono sul bianco — fondi tenui e testi scuri degli
   accenti (tutti almeno 4.5:1). Il resto segue le variabili del kit. */

/* ---- schede cliente ---- */
.cliente-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 1.1rem; cursor: pointer; transition: .15s; }
.cliente-card:hover { border-color: var(--accent); transform: translateY(-1px); }
.cliente-card h3 { margin-bottom: .2rem; }
.cliente-card .settore { color: var(--mut); font-size: .82rem; margin-bottom: .8rem; }
.cliente-card .righe { display: flex; flex-direction: column; gap: .35rem; font-size: .82rem; }
.cliente-card .righe > div { display: flex; justify-content: space-between; gap: .5rem; }
.canali-pallini { display: flex; gap: .25rem; }
.pallino { width: 22px; height: 22px; border-radius: 6px; display: grid; place-items: center;
  font-size: .62rem; font-weight: 700; background: var(--panel3); color: var(--mut); }
.pallino.instagram { background: #fbe7f1; color: #a8306f; }
.pallino.facebook { background: #e6eefb; color: #1a52b5; }
.pallino.tiktok { background: #e1f3ea; color: #13704e; }
.pallino.linkedin { background: #e3eefa; color: #0a5bb0; }

/* ---- i fatti veri, quelli ancora da confermare ----
   Ogni riquadro è una domanda sola («è vero questo?») con sotto la frase da cui
   viene: quella frase è l'unica cosa che permette di rispondere, quindi sta
   sempre in chiaro e non dietro a un «mostra i dettagli». */
.fatto { background: var(--panel2); border: 1px solid var(--line); border-radius: var(--radius-s);
  padding: .7rem .8rem; margin-bottom: .5rem; }
.fatto > b { display: block; font-size: .9rem; line-height: 1.45; margin-bottom: .35rem; }
.fatto .citazione { font-size: .78rem; color: var(--mut); line-height: 1.5; margin-bottom: .55rem; }
.fatto .citazione.fonte { color: var(--mut2); font-size: .74rem; }

/* ---- calendario: vista anno ---- */
.mese-box { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: .85rem; }
.mese-box h3 { font-size: .88rem; display: flex; justify-content: space-between; align-items: center;
  margin-bottom: .55rem; cursor: pointer; }
.mese-box h3 span { color: var(--mut); font-weight: 400; font-size: .76rem; }
.mese-box h3:hover { color: var(--accent); }
.intestazione-giorni { display: grid; grid-template-columns: repeat(7,1fr); gap: 2px; margin-bottom: 2px; }
.intestazione-giorni span { font-size: .58rem; color: var(--mut2); text-align: center; text-transform: uppercase; }

/* ---- calendario: vista mese ---- */
.mese-griglia { display: grid; grid-template-columns: repeat(7, minmax(0,1fr)); gap: .4rem; }
.mese-cella { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-xs);
  min-height: 108px; padding: .35rem; display: flex; flex-direction: column; gap: .25rem; }
.mese-cella.fuori { opacity: .35; }
.mese-cella.oggi { border-color: var(--accent2); }
.mese-cella.drop { border-color: var(--accent); background: var(--panel2); }
.mese-cella > .n { font-size: .7rem; color: var(--mut); font-weight: 700; display: flex;
  justify-content: space-between; align-items: center; }
.mese-cella > .n em { font-style: normal; color: var(--warn); font-size: .6rem; font-weight: 600; }
.mini-uscita { background: var(--panel2); border-left: 3px solid var(--line2); border-radius: 4px;
  padding: .18rem .3rem; font-size: .68rem; cursor: grab; line-height: 1.25; }
.mini-uscita:hover { background: var(--panel3); }
.mini-uscita.dragging { opacity: .35; }
.mini-uscita[data-canale=instagram] { border-left-color: var(--rosa); }
.mini-uscita[data-canale=facebook] { border-left-color: var(--accent); }
.mini-uscita[data-canale=tiktok] { border-left-color: var(--accent2); }
.mini-uscita[data-canale=linkedin] { border-left-color: #0a66c2; }
.mini-uscita.pubblicata { opacity: .55; }
.mini-uscita .st { float: right; font-size: .6rem; }

/* ---- dettaglio uscita ---- */
.uscita-corpo { display: grid; grid-template-columns: 1fr 320px; gap: 1.2rem; }
@media (max-width: 900px) { .uscita-corpo { grid-template-columns: 1fr; } }
.uscita-corpo label { margin-bottom: .7rem; }
.brief-box { background: var(--panel2); border: 1px solid var(--line); border-radius: var(--radius-s);
  padding: .7rem; font-size: .82rem; color: var(--mut); line-height: 1.5; }
.scelta-media { display: flex; gap: .5rem; margin-bottom: .8rem; }
.scelta-media .btn { flex: 1; }
.media-uscita { border: 1px solid var(--line); border-radius: var(--radius-s); overflow: hidden;
  position: relative; background: var(--panel2); margin-bottom: .5rem; }
.media-uscita img, .media-uscita video { width: 100%; display: block; max-height: 340px; object-fit: contain; }
/* La riga sotto ogni file dice CHE COS'è quel file, e nella colonna stretta
   del pannello ci sta solo andando a capo: senza wrap l'etichetta sparirebbe. */
.media-uscita .barra { display: flex; flex-wrap: wrap; gap: .3rem; padding: .4rem; align-items: center;
  font-size: .74rem; }
.media-uscita .barra .spacer { flex: 1; }
.media-attesa { display: flex; align-items: center; gap: .5rem; padding: 1rem; color: var(--mut); font-size: .84rem; }

/* ---- cosa non va in un post ----
   Si leggono appena prima di approvare, quindi la sola cosa che deve arrivare
   con la coda dell'occhio è la differenza fra «non pubblicarlo così» (rosso) e
   «si può fare meglio» (giallo): la porta il bordo, non il testo. */
.obiezione { background: var(--panel2); border: 1px solid var(--line); border-left: 3px solid var(--warn);
  border-radius: var(--radius-s); padding: .6rem .75rem; margin-bottom: .5rem;
  font-size: .86rem; line-height: 1.5; }
.obiezione.blocca { border-left-color: var(--err); }
.obiezione .muted { font-size: .82rem; }
.obiezione .da-fare { margin-top: .4rem; }
.obiezione .da-fare b { color: #15724f; }

/* ---- la scena, prima di spendere ----
   Il passo di approvazione: chi si vede, dove e cosa succede, scritto in campi
   correggibili a mano. Deve sembrare lo stesso pannello, solo più fitto: campi
   piccoli, perché qui se ne leggono parecchi di fila. */
.scena { background: var(--panel2); border: 1px solid var(--line); border-radius: var(--radius-s);
  padding: .75rem; margin-bottom: .8rem; }
.scena-testa { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; margin-bottom: .6rem;
  font-size: .9rem; }
.scena-testa .muted2 { font-size: .74rem; }
.scena-sez { font-size: .74rem; text-transform: uppercase; letter-spacing: .04em; color: var(--mut2);
  margin: .8rem 0 .35rem; }
.scena-riga { display: flex; flex-direction: column; gap: .3rem; margin-bottom: .5rem; }
.scena input[type=text], .scena textarea { font-size: .82rem; padding: .4rem .55rem; }
.scena textarea { min-height: 0; }
.scena label { font-size: .78rem; }
.scena-conto { font-size: .8rem; color: var(--mut); line-height: 1.5; margin: .9rem 0 .5rem; }
.scena-piede { display: flex; gap: .4rem; }
.scena-piede .btn { flex: 1; }
.scena-vuota { font-size: .78rem; color: var(--mut2); line-height: 1.5; margin-bottom: .7rem; }

/* Quanto lungo dev'essere il video: tre riquadri affiancati, dentro ognuno le
   conseguenze (i secondi e la spesa). Quello scelto si accende, quelli che la
   scena scritta non regge restano spenti e non si possono premere. */
.scelta-durata { display: flex; gap: .4rem; margin-bottom: .5rem; }
.scelta-durata .durata { flex: 1; display: flex; flex-direction: column; gap: .1rem;
  align-items: flex-start; text-align: left; cursor: pointer; font-size: .72rem; color: var(--mut);
  background: var(--panel); border: 1px solid var(--line2); border-radius: var(--radius-xs);
  padding: .45rem .55rem; transition: .15s; }
.scelta-durata .durata b { font-size: .84rem; color: var(--ink); font-weight: 700; }
.scelta-durata .durata:hover:not(:disabled) { border-color: var(--line2); background: var(--panel3); }
.scelta-durata .durata.scelta { border-color: var(--accent); background: var(--panel3); }
.scelta-durata .durata.scelta b { color: var(--accent); }
.scelta-durata .durata:disabled { opacity: .35; cursor: not-allowed; }

/* L'interruttore della musica: la spiegazione conta più dell'interruttore,
   quindi sta tutta lì accanto e non dietro a un punto interrogativo. */
.scena .scena-musica { display: flex; align-items: flex-start; gap: .5rem; margin: .8rem 0 .2rem;
  font-size: .76rem; color: var(--mut); line-height: 1.45; cursor: pointer; }
.scena-musica input { margin-top: .2rem; flex: none; }
.scena-musica b { color: var(--ink); }

/* Le parole che dirà la voce — e che compaiono a schermo — si vedono solo
   quando la voce è accesa: a voce spenta sarebbero un campo in più da leggere
   per niente, perché nessuno le sentirà e nessuno le vedrà. */
.scena .scena-parlato { display: none; }
.scena.con-voce .scena-parlato { display: block; }

/* ---- campagne ---- */
.campagna { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 1.1rem; margin-bottom: .8rem; }
.campagna-testa { display: flex; align-items: center; gap: .7rem; margin-bottom: .8rem; }
.campagna-testa h3 { margin-right: auto; }
.campagna-numeri { display: grid; grid-template-columns: repeat(auto-fit,minmax(110px,1fr)); gap: .7rem; }
.campagna-numeri > div { background: var(--panel2); border-radius: var(--radius-xs); padding: .5rem .65rem; }
.campagna-numeri .e { font-size: .68rem; color: var(--mut); text-transform: uppercase; letter-spacing: .04em; }
.campagna-numeri .v { font-size: 1.05rem; font-weight: 700; font-variant-numeric: tabular-nums; }

/* ---- passi guidati ---- */
.passi { display: flex; gap: .4rem; margin-bottom: 1.2rem; }
.passo { flex: 1; height: 3px; background: var(--panel3); border-radius: 2px; }
.passo.fatto { background: var(--accent); }
.riga-form { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
@media (max-width: 640px) { .riga-form { grid-template-columns: 1fr; } }

/* ---- sezione brain ---- */
.brain-azione { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
  padding: .85rem 1rem; margin-bottom: .6rem; }
.brain-testa { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; font-size: .92rem; }
.brain-carico { background: var(--panel2); border: 1px solid var(--line2); border-radius: var(--radius-xs);
  margin-top: .55rem; padding: .55rem .7rem; font-size: .78rem; color: var(--mut);
  white-space: pre-wrap; max-height: 180px; overflow: auto; }

/* ---- avanzamento lavoro ---- */
.lavoro-box { background: var(--panel2); border: 1px solid var(--line2); border-radius: var(--radius-s);
  padding: .8rem; display: flex; align-items: center; gap: .7rem; font-size: .86rem; margin-bottom: .8rem; }

/* ---- pallini del calendario annuale ----
   Nella vista anno ogni giorno pieno mostrava un pallino solo, sempre dello
   stesso blu: che però è il blu di Facebook, e leggerlo come "tutto Facebook"
   era inevitabile. Ora c'è un pallino per canale presente quel giorno, con i
   colori delle viste mese e settimana. La regola sta qui e non in kit.css
   perché kit.css è condiviso e lo riscrive comune/sync.sh. */
.cal-g .punti { position: absolute; bottom: 2px; left: 0; right: 0;
  display: flex; justify-content: center; gap: 2px; }
.cal-g .punti i { position: static; transform: none;
  width: 4px; height: 4px; border-radius: 50%; background: var(--mut2); }
.cal-g .punti i[data-canale=instagram] { background: var(--rosa); }
.cal-g .punti i[data-canale=facebook] { background: var(--accent); }
.cal-g .punti i[data-canale=tiktok] { background: var(--accent2); }
.cal-g .punti i[data-canale=linkedin] { background: #0a66c2; }

/* ---- post «dai concorrenti» (competitor-radar) ----
   Nascono dagli spunti del radar (vedi materializza-spunti.js). Si segnano in
   viola — lo stesso della card "Spunti dal mercato" — per distinguerli a colpo
   d'occhio dai post del piano, in tutte le viste e nel pannello cliente.
   Sta qui e non in kit.css perché kit.css è condiviso e lo riscrive sync.sh. */
.mini-uscita.radar { border-left-color: var(--viola);
  box-shadow: inset 3px 0 0 0 rgba(111, 66, 193, .30); }
.cal-g.radar { outline: 2px solid rgba(111, 66, 193, .70); outline-offset: -2px; border-radius: 6px; }
.segno-radar { width: 11px; height: 11px; border-radius: 3px; background: var(--viola); display: inline-block; }
.chip-filtro { font-size: .78rem; padding: .2rem .6rem; border-radius: 999px; cursor: pointer;
  background: var(--panel2); border: 1px solid var(--line2); color: var(--mut); }
.chip-filtro.on { background: #f0eafa; border-color: #cdbcec; color: #5e35ab; }

/* ---- avviso rosso nel pannello Canali ----
   .badge (kit.css) non va a capo: un messaggio lungo usciva dal riquadro.
   Qui diventa un blocco che va a capo, con gli stessi colori di .badge.err.
   Sta qui e non in kit.css perché kit.css è condiviso e lo riscrive sync.sh. */
.badge.avviso-canali { display: block; white-space: normal; overflow-wrap: anywhere;
  border-radius: var(--radius-s); line-height: 1.45; font-weight: 600; padding: .5rem .7rem; }
