@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  --paper:#EFEAE1;
  --paper-2:#E6E0D3;
  --ink:#1F2A24;
  --ink-soft:#4A4A3F;
  --label:#8B8272;
  --line:#C9BFA8;
  --green:#2F6B4F;
  --rust:#A13D2B;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Source Serif 4', serif;
  padding:32px 16px 80px;
  -webkit-font-smoothing:antialiased;
}
.sheet{max-width:680px; margin:0 auto;}
h1{
  font-family:'Fraunces', serif;
  font-weight:600;
  font-size:1.9rem;
  margin:0;
  letter-spacing:-0.01em;
}

/* ---- Connexion / inscription ---- */
.auth-wrap{max-width:380px; margin:60px auto;}
.auth-card{
  background:var(--paper-2);
  border:1px solid var(--line);
  border-radius:2px;
  padding:32px 28px;
}
.auth-card h1{margin-bottom:6px;}
.auth-sub{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.75rem;
  color:var(--label);
  letter-spacing:0.06em;
  text-transform:uppercase;
  margin-bottom:24px;
}
.champ{margin-bottom:16px;}
.champ label{
  display:block;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.72rem;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--ink-soft);
  margin-bottom:6px;
}
.champ input{
  width:100%;
  font-family:'Source Serif 4', serif;
  font-size:1rem;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:2px;
  background:var(--paper);
  color:var(--ink);
}
.champ input:focus{outline:none; border-color:var(--ink);}
.bouton{
  width:100%;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.85rem;
  letter-spacing:0.04em;
  text-transform:uppercase;
  background:var(--ink);
  color:var(--paper);
  border:none;
  padding:12px;
  border-radius:2px;
  cursor:pointer;
  margin-top:8px;
}
.bouton:hover{background:#2c3a32;}
.lien-bas{
  text-align:center;
  margin-top:18px;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.8rem;
  color:var(--ink-soft);
}
.lien-bas a{color:var(--ink); text-decoration:underline;}
.erreur{
  background:#f3ded8;
  border:1px solid var(--rust);
  color:var(--rust);
  font-family:'IBM Plex Mono', monospace;
  font-size:0.8rem;
  padding:10px 12px;
  border-radius:2px;
  margin-bottom:18px;
}
.succes{
  background:#dfeee5;
  border:1px solid var(--green);
  color:var(--green);
  font-family:'IBM Plex Mono', monospace;
  font-size:0.8rem;
  padding:10px 12px;
  border-radius:2px;
  margin-bottom:18px;
}

/* ---- Barre supérieure app ---- */
.barre-compte{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.72rem;
  color:var(--label);
  letter-spacing:0.04em;
  margin-bottom:14px;
}
.barre-compte a{color:var(--ink-soft);}

header{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  border-bottom:2px solid var(--ink);
  padding-bottom:14px;
  margin-bottom:20px;
  flex-wrap:wrap;
  gap:8px;
}
.mois-input{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.85rem;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color:var(--ink-soft);
  background:transparent;
  border:none;
  border-bottom:1px dotted var(--line);
  text-align:right;
  padding:2px 0;
  width:160px;
}
.mois-input:focus{outline:none; border-bottom-color:var(--ink);}

.statut-ligne{
  text-align:right;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.68rem;
  letter-spacing:0.06em;
  color:var(--label);
  margin-bottom:18px;
  text-transform:uppercase;
}

.solde-card{
  background:var(--ink);
  color:var(--paper);
  border-radius:2px;
  padding:22px 24px;
  margin-bottom:32px;
  position:relative;
  overflow:hidden;
}
.solde-label{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.72rem;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color:#B9B2A0;
  margin-bottom:6px;
}
.compte-depart{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:6px;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.78rem;
  color:#B9B2A0;
  border-bottom:1px dotted #4a4438;
  padding-bottom:10px;
  margin-bottom:10px;
  margin-top:32px;
}
.compte-depart label{align-self:flex-start; text-transform:uppercase; letter-spacing:0.06em;}
.compte-depart .montant-wrap{display:flex; align-items:center; gap:4px; color:#E7E2D6; font-size:0.95rem;}
.compte-depart .montant-wrap span{color:#8a8370; margin-right:2px;}
.compte-depart input{
  font-family:'IBM Plex Mono', monospace;
  background:transparent;
  border:none;
  color:#E7E2D6;
  text-align:right;
  width:100px;
  font-size:0.95rem;
  font-variant-numeric:tabular-nums;
  -moz-appearance:textfield;
}
.compte-depart input:focus{outline:none; border-bottom:1px solid #E7E2D6;}
.compte-depart input.negatif{color:#E8A08C;}
.compte-depart input::-webkit-outer-spin-button,
.compte-depart input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.signe-toggle{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.8rem;
  line-height:1;
  background:transparent;
  border:1px solid #6b6355;
  color:#E7E2D6;
  width:22px;
  height:22px;
  border-radius:50%;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  margin-right:2px;
}
.signe-toggle.negatif{border-color:#E8A08C; color:#E8A08C;}
.signe-toggle:focus-visible{outline:2px solid #E7E2D6; outline-offset:2px;}

.solde-valeur{
  font-family:'Fraunces', serif;
  font-size:2.6rem;
  font-weight:500;
  line-height:1;
  border-bottom:3px double #6b6355;
  display:inline-block;
  padding-bottom:8px;
}
.solde-valeur.positif{color:#8FD9AE;}
.solde-valeur.negatif{color:#E8A08C;}
.solde-sub{
  margin-top:12px;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.78rem;
  color:#B9B2A0;
  display:flex;
  gap:18px;
  flex-wrap:wrap;
}
.stamp{
  position:absolute;
  top:18px;
  right:20px;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.65rem;
  letter-spacing:0.1em;
  text-transform:uppercase;
  padding:5px 10px;
  border:1.5px solid currentColor;
  border-radius:3px;
  transform:rotate(4deg);
}
.stamp.positif{color:#8FD9AE;}
.stamp.negatif{color:#E8A08C;}

section{margin-bottom:30px;}
.section-head{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  border-bottom:1px solid var(--ink);
  padding-bottom:6px;
  margin-bottom:10px;
}
.section-title{font-family:'Fraunces', serif; font-size:1.1rem; font-weight:600;}
.section-total{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.9rem;
  color:var(--ink-soft);
  font-variant-numeric:tabular-nums;
}
.ligne{
  display:grid;
  grid-template-columns:22px 1fr 120px 28px;
  gap:10px;
  align-items:center;
  padding:7px 0;
  border-bottom:1px dotted var(--line);
}
.ligne.inactive{opacity:0.45;}
.ligne.inactive input[type="text"]{text-decoration:line-through;}
.ligne .case-active{
  width:16px;
  height:16px;
  accent-color:var(--green);
  cursor:pointer;
}
.ligne input[type="text"]{
  font-family:'Source Serif 4', serif;
  font-size:0.95rem;
  border:none;
  background:transparent;
  color:var(--ink);
  padding:2px 0;
}
.ligne input[type="text"]:focus{outline:none;}
.ligne input[type="text"]::placeholder{color:var(--label);}
.ligne .montant-wrap{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.95rem;
  font-variant-numeric:tabular-nums;
}
.ligne .montant-wrap span{color:var(--label); margin-right:2px;}
.ligne input[type="number"]{
  font-family:'IBM Plex Mono', monospace;
  font-size:0.95rem;
  border:none;
  background:transparent;
  color:var(--ink);
  text-align:right;
  width:100%;
  padding:2px 0;
  font-variant-numeric:tabular-nums;
}
.ligne input[type="number"]:focus{outline:none;}
.ligne input[type="number"]::-webkit-outer-spin-button,
.ligne input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.supprimer{
  background:none; border:none; color:var(--label);
  font-size:1.1rem; cursor:pointer; line-height:1; padding:0; text-align:center;
}
.supprimer:hover{color:var(--rust);}
.ajouter{
  margin-top:10px;
  background:none;
  border:1px dashed var(--line);
  color:var(--ink-soft);
  font-family:'IBM Plex Mono', monospace;
  font-size:0.78rem;
  letter-spacing:0.04em;
  padding:8px 12px;
  border-radius:2px;
  cursor:pointer;
  width:100%;
  text-align:left;
}
.ajouter:hover{border-color:var(--ink); color:var(--ink);}
.ajouter:focus-visible, .supprimer:focus-visible, .mois-input:focus-visible{
  outline:2px solid var(--ink); outline-offset:2px;
}
footer{
  text-align:center;
  font-family:'IBM Plex Mono', monospace;
  font-size:0.7rem;
  color:var(--label);
  margin-top:40px;
  letter-spacing:0.04em;
  line-height:1.7;
}
@media (max-width:480px){
  .solde-valeur{font-size:2.1rem;}
  .ligne{grid-template-columns:18px 1fr 96px 24px; gap:6px;}
  .stamp{position:static; display:inline-block; margin-bottom:10px; transform:rotate(0);}
  .compte-depart{margin-top:0;}
}
