/* Conti di Paolo: un libro mastro di notte.
   Carta scura color bosco, numeri in Fraunces, ottone per le soglie.
   Il segno più è verde, il segno meno corallo, e le soglie sono le uniche tacche dorate. */

:root {
  --fondo: #0E1714;
  --superficie: #15221E;
  --filo: #26362F;
  --inchiostro: #EDEBE3;
  --sbiadito: #9AABA3;
  --ottone: #C9A24A;
  --verde: #86CFA6;
  --corallo: #E8876C;
  --fuoco: #C9A24A;

  --display: 'Fraunces', 'Iowan Old Style', Georgia, serif;
  --testo: 'Instrument Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;

  --margine: 16px;
  --barra: 64px;
  --raggio: 6px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--fondo);
  color: var(--inchiostro);
  font: 400 16px/1.45 var(--testo);
  min-height: 100dvh;
  overflow-x: hidden;
}

.num { font-variant-numeric: tabular-nums; }

h1, h2 { margin: 0; font-weight: 400; }

/* ---------- Intestazione ---------- */

.intestazione {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: calc(env(safe-area-inset-top) + 12px) var(--margine) 12px;
  background: var(--fondo);
  border-bottom: 1px solid var(--filo);
}

.intestazione h1 {
  font-family: var(--display);
  font-size: 1.6rem;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.intestazione__azioni { display: flex; align-items: center; gap: 4px; }

.icona {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  background: none;
  border: 0;
  color: var(--sbiadito);
  border-radius: var(--raggio);
  cursor: pointer;
}
.icona svg { width: 22px; height: 22px; }
.icona:hover { color: var(--inchiostro); }

.badge {
  font: 500 0.75rem var(--testo);
  background: none;
  cursor: pointer;
  padding: 3px 8px;
  border: 1px solid var(--ottone);
  color: var(--ottone);
  border-radius: 99px;
}

/* ---------- Contenuto ---------- */

main {
  padding: 8px var(--margine) calc(var(--barra) + env(safe-area-inset-bottom) + 32px);
  max-width: 640px;
  margin: 0 auto;
}

.blocco { margin-top: 28px; }

.blocco h2,
.blocco__testa h2 {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--sbiadito);
  margin-bottom: 4px;
}

.blocco__testa {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--filo);
}
.blocco__testa strong { font-family: var(--display); font-weight: 400; font-size: 1.15rem; }

.vuoto, .nota {
  color: var(--sbiadito);
  font-size: 0.92rem;
  margin: 14px 0;
}

/* ---------- Riepilogo ---------- */

.hero { padding-top: 12px; }

.hero__etichetta {
  margin: 0;
  color: var(--sbiadito);
  font-size: 0.95rem;
}

.hero__cifra {
  margin: 2px 0 14px;
  font-family: var(--display);
  font-size: clamp(2.8rem, 13vw, 4.2rem);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.02em;
  font-optical-sizing: auto;
}

.hero__dettagli {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--filo);
}
.hero__dettagli div { padding: 10px 8px 0 0; }
.hero__dettagli dt { font-size: 0.78rem; color: var(--sbiadito); }
.hero__dettagli dd { margin: 2px 0 0; font-size: 1rem; }

.gauge { padding: 16px 0 14px; border-bottom: 1px solid var(--filo); }
.gauge:last-of-type { border-bottom: 0; }

.gauge__testa {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 12px;
}
.gauge__testa span { font-size: 1rem; }
.gauge__testa strong { font-family: var(--display); font-weight: 400; font-size: 1.25rem; }

.gauge__pista {
  position: relative;
  height: 12px;
  background: var(--superficie);
  border-radius: 2px;
}

.gauge__riempi {
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--w);
  background: var(--verde);
  border-radius: 2px;
  transition: width 900ms cubic-bezier(.2, .7, .2, 1);
}
.gauge--tra .gauge__riempi { background: var(--ottone); }
.gauge--sopra .gauge__riempi { background: var(--corallo); }

.tacca {
  position: absolute;
  top: -7px;
  bottom: -7px;
  width: 2px;
  margin-left: -1px;
  background: var(--ottone);
}
.tacca--tetto { background: var(--inchiostro); }

.gauge__scala {
  position: relative;
  height: 18px;
  margin-top: 6px;
  font-size: 0.72rem;
  color: var(--sbiadito);
}
.gauge__scala span { position: absolute; transform: translateX(-50%); white-space: nowrap; }
.gauge__scala span:first-child { left: 0; transform: none; }

.gauge__msg { margin: 4px 0 0; font-size: 0.9rem; color: var(--sbiadito); }
.gauge--sopra .gauge__msg { color: var(--corallo); }

.elenco { margin: 0; }
.elenco__riga {
  display: flex;
  justify-content: space-between;
  padding: 12px 0;
  border-bottom: 1px solid var(--filo);
}
.elenco__riga dt { color: var(--sbiadito); }
.elenco__riga dd { margin: 0; }

/* ---------- Righe cliccabili ---------- */

.riga {
  width: 100%;
  min-height: 60px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0;
  background: none;
  border: 0;
  border-bottom: 1px solid var(--filo);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.riga:disabled { cursor: default; opacity: 0.6; }
.riga:not(:disabled):active { background: var(--superficie); }

.riga__testo { display: flex; flex-direction: column; min-width: 0; }
.riga__titolo { overflow-wrap: anywhere; }
.riga__sotto { font-size: 0.82rem; color: var(--sbiadito); }
.riga__valore {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  white-space: nowrap;
}

.pos { color: var(--verde); }
.neg { color: var(--corallo); }

/* ---------- Entrate: filtri ---------- */

.filtri { display: flex; gap: 8px; margin: 12px 0 0; overflow-x: auto; scrollbar-width: none; }
.filtri::-webkit-scrollbar { display: none; }

.chip {
  flex: 0 0 auto;
  min-height: 40px;
  padding: 0 14px;
  background: none;
  color: var(--sbiadito);
  border: 1px solid var(--filo);
  border-radius: 99px;
  font: inherit;
  cursor: pointer;
}
.chip[aria-pressed="true"] { color: var(--fondo); background: var(--inchiostro); border-color: var(--inchiostro); }

/* ---------- Storico ---------- */

.barra {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
}
.barra .nota { margin: 0; flex: 1; }

.giorno {
  padding: 16px 0;
  border-bottom: 1px solid var(--filo);
}
.giorno__testa {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
}
.giorno__testa time { font-weight: 500; }
.giorno__testa strong { font-family: var(--display); font-weight: 400; font-size: 1.15rem; }
.giorno__delta { margin: 4px 0 0; font-size: 0.9rem; color: var(--sbiadito); }
.giorno__testo { margin: 8px 0 0; font-size: 0.95rem; }
.giorno__fonte { margin: 6px 0 0; font-size: 0.75rem; color: var(--sbiadito); }

/* ---------- Bottoni, moduli ---------- */

.bottone {
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid var(--ottone);
  background: none;
  color: var(--ottone);
  border-radius: var(--raggio);
  font: 500 0.95rem var(--testo);
  cursor: pointer;
  white-space: nowrap;
}
.bottone--pieno { background: var(--ottone); color: var(--fondo); }
.bottone--ghost { border-color: var(--filo); color: var(--sbiadito); }
.bottone--largo { width: 100%; margin-top: 24px; }
.bottone:disabled { opacity: 0.5; }

.modulo { display: grid; gap: 16px; margin-top: 12px; }
.modulo label, dialog label {
  display: grid;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--sbiadito);
}

input, select {
  width: 100%;
  min-height: 48px;
  padding: 10px 12px;
  background: var(--fondo);
  color: var(--inchiostro);
  border: 1px solid var(--filo);
  border-radius: var(--raggio);
  font: 400 16px var(--testo); /* 16px evita lo zoom automatico su iOS */
}
input:focus, select:focus, button:focus-visible, .riga:focus-visible, .icona:focus-visible, .tabs button:focus-visible {
  outline: 2px solid var(--ottone);
  outline-offset: 2px;
}

.azioni { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; }

/* ---------- Finestra di modifica ---------- */

dialog {
  width: min(560px, 100vw);
  max-height: 88dvh;
  margin: auto auto 0;
  padding: 20px var(--margine) calc(20px + env(safe-area-inset-bottom));
  background: var(--superficie);
  color: var(--inchiostro);
  border: 0;
  border-radius: 14px 14px 0 0;
}
dialog::backdrop { background: rgba(4, 10, 8, 0.7); }
dialog h2 {
  font-family: var(--display);
  font-size: 1.4rem;
  font-weight: 600;
  margin-bottom: 14px;
  color: var(--inchiostro);
}
dialog[open] { animation: su 260ms cubic-bezier(.2, .7, .2, 1); }
@keyframes su { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }

/* ---------- Barra in basso ---------- */

.tabs {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 6;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  padding-bottom: env(safe-area-inset-bottom);
  background: var(--fondo);
  border-top: 1px solid var(--filo);
}
.tabs button {
  min-height: var(--barra);
  background: none;
  border: 0;
  border-top: 2px solid transparent;
  margin-top: -1px;
  color: var(--sbiadito);
  font: 500 0.82rem var(--testo);
  cursor: pointer;
}
.tabs button[aria-current="page"] { color: var(--inchiostro); border-top-color: var(--ottone); }

/* ---------- Avviso ---------- */

.avviso {
  position: fixed;
  left: 50%;
  bottom: calc(var(--barra) + env(safe-area-inset-bottom) + 12px);
  transform: translateX(-50%);
  z-index: 10;
  max-width: calc(100vw - 32px);
  padding: 10px 16px;
  background: var(--inchiostro);
  color: var(--fondo);
  border-radius: var(--raggio);
  font-size: 0.92rem;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}
.avviso--errore { background: var(--corallo); }

/* ---------- Schermi larghi ---------- */

@media (min-width: 720px) {
  .tabs { left: 50%; right: auto; width: 640px; transform: translateX(-50%); border-left: 1px solid var(--filo); border-right: 1px solid var(--filo); }
  .intestazione { padding-left: calc(50% - 320px + var(--margine)); padding-right: calc(50% - 320px + var(--margine)); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- Patrimonio per gruppo, bilancio futuro ---------- */

.elenco--hero { margin-top: 6px; border-top: 1px solid var(--filo); }
.elenco__riga--doppia { align-items: center; gap: 12px; }
.elenco__riga--doppia dt { display: flex; flex-direction: column; min-width: 0; color: var(--inchiostro); }
.elenco__riga--doppia dd { white-space: nowrap; }

.cifra-secondaria {
  margin: 2px 0 6px;
  font-family: var(--display);
  font-size: 1.9rem;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

/* ---------- Tasse ---------- */

.hero__dettagli--2 { grid-template-columns: 1fr 1fr; }
.elenco--fitto .elenco__riga { padding: 9px 0; }
.elenco__riga--forte dt, .elenco__riga--forte dd { color: var(--inchiostro); font-weight: 500; }
.riga--chiusa { opacity: 0.55; }
.blocco__testa .bottone { min-height: 36px; padding: 0 12px; font-size: 0.85rem; }
input[type="date"] { -webkit-appearance: none; appearance: none; color-scheme: dark; }
.tabs button { padding: 0 2px; font-size: 0.78rem; }
