/* Caderneta — estilos */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,700&family=Inter:wght@400;500;600&display=swap');

:root{
  --ink:#1a1614;          /* tinta escura, quase preto quente */
  --paper:#f4efe6;        /* papel morno */
  --paper-2:#ece5d8;      /* papel mais fundo */
  --line:#d9cfbd;         /* linha do caderno */
  --verde:#2f7d5b;        /* verde conta (deltas positivos) */
  --coral:#c8583f;        /* gasto alto / alerta (deltas negativos) */
  --dourado:#b8893a;      /* acento */
  --muted:#7c7266;
  --card:#fbf8f2;
  --shadow:0 1px 2px rgba(26,22,20,.06),0 8px 24px rgba(26,22,20,.06);
  --r:18px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:'Inter',system-ui,sans-serif;
  background:var(--paper);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
.wrap{max-width:520px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;
  padding:calc(env(safe-area-inset-top) + 20px) 20px calc(env(safe-area-inset-bottom) + 120px)}

/* ---- cabeçalho / marca ---- */
header{margin-bottom:18px}
.brand{display:flex;align-items:center;gap:9px;margin-bottom:18px}
.brand .mark{width:26px;height:26px;border-radius:7px;background:var(--ink);position:relative;flex:none}
.brand .mark::after{content:"";position:absolute;inset:7px 7px auto 7px;height:2px;background:var(--dourado);
  box-shadow:0 5px 0 var(--paper),0 10px 0 var(--paper)}
.brand b{font-family:'Fraunces',serif;font-weight:600;font-size:19px;letter-spacing:-.01em}
.brand span{font-size:12px;color:var(--muted);margin-left:auto;font-variant-numeric:tabular-nums}
.syncbtn{border:0;background:none;color:var(--muted);font-size:17px;cursor:pointer;padding:2px 0 2px 6px;line-height:1}
.syncbtn.on{color:var(--verde)}

/* ---- abas Despesas / Património ---- */
.tabs{display:flex;background:var(--paper-2);border-radius:13px;padding:3px;margin-bottom:20px}
.tabs button{flex:1;border:0;background:none;font:inherit;font-size:14px;font-weight:500;color:var(--muted);
  padding:9px 0;border-radius:10px;cursor:pointer;transition:.18s}
.tabs button.sel{background:var(--card);color:var(--ink);font-weight:600;box-shadow:var(--shadow)}

/* ---- filtro de período ---- */
.periodpick{display:flex;gap:7px;margin-bottom:16px;overflow-x:auto;scrollbar-width:none}
.periodpick::-webkit-scrollbar{display:none}
.periodpick button{border:1.5px solid var(--line);background:none;border-radius:10px;padding:7px 13px;
  font:inherit;font-size:13px;color:var(--muted);cursor:pointer;flex:none;transition:.15s}
.periodpick button.sel{border-color:var(--ink);background:var(--ink);color:var(--paper);font-weight:500}

.period{font-size:12.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;text-align:center}
.total{font-family:'Fraunces',serif;font-weight:600;font-size:52px;line-height:1;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:2px;justify-content:center}
.total .cur{font-size:26px;color:var(--muted);font-weight:400}
.total.zero{color:var(--muted)}
.subtotal{margin-top:9px;font-size:13.5px;color:var(--muted);text-align:center}
.subtotal b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}

/* ---- donut por categoria ---- */
.donutwrap{margin:22px auto 6px;display:flex;justify-content:center}
.donutwrap svg{width:min(240px,68vw);height:auto;display:block}
.donut-center-num{font-family:'Fraunces',serif;font-weight:600;font-size:30px;fill:var(--ink)}
.donut-center-lbl{font-size:11.5px;fill:var(--muted);font-family:'Inter',system-ui,sans-serif}
.donut-emoji{font-size:15px}

/* legenda: linhas com bolinha de cor + nome + valor */
.cats{margin-top:14px;display:flex;flex-direction:column;gap:2px}
.cat{display:grid;grid-template-columns:auto 22px 1fr auto;align-items:center;gap:10px;padding:10px 0;
  border-bottom:1px solid var(--line)}
.cat:last-child{border-bottom:0}
.cat .sw{width:11px;height:11px;border-radius:4px;flex:none}
.cat .ic{width:22px;height:22px;font-size:15px;display:grid;place-items:center}
.cat .nm{font-size:14.5px;font-weight:500}
.cat .amt{font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.cat .amt small{margin-left:7px;font-size:11px;color:var(--muted);font-weight:400}

.empty{margin-top:40px;text-align:center;color:var(--muted)}
.empty .big{font-family:'Fraunces',serif;font-size:21px;color:var(--ink);margin-bottom:7px}
.empty p{font-size:14px;line-height:1.5;max-width:280px;margin:0 auto}

/* ---- lista recente ---- */
.recent{margin-top:30px}
.recent h2, .sechead{font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:10px;
  display:flex;justify-content:space-between;align-items:center}
.recent h2 button{background:none;border:0;color:var(--dourado);font:inherit;font-size:12px;cursor:pointer}
.row{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:12px;padding:11px 0;
  border-bottom:1px solid var(--line);animation:in .35s ease both}
@keyframes in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.row .ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:16px;background:var(--paper-2)}
.row .info .d{font-size:14.5px;font-weight:500;line-height:1.3}
.row .info .m{font-size:12px;color:var(--muted);margin-top:2px}
.row .val{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.row .val button{background:none;border:0;color:var(--muted);font-size:11px;cursor:pointer;display:block;margin-top:2px;opacity:.6;margin-left:auto}
.row .val .delta{display:block;font-size:11.5px;font-weight:500;margin-top:2px}
.delta.up{color:var(--verde)}
.delta.down{color:var(--coral)}

/* ---- Património ---- */
.hero{margin-bottom:4px}
.addasset{width:100%;margin:20px 0 6px;background:none;border:1.5px dashed var(--line);border-radius:14px;
  padding:14px;font:inherit;font-size:14px;font-weight:500;color:var(--muted);cursor:pointer;transition:.15s}
.addasset:active{transform:scale(.99)}
.evo{margin-top:24px}
.evo svg{width:100%;height:auto;display:block}
.evo .placeholder{font-size:13px;color:var(--muted);padding:18px 0;text-align:center}
.evo-axis{font-size:10px;fill:var(--muted);font-family:'Inter',system-ui,sans-serif;font-variant-numeric:tabular-nums}
.evo-endlbl{font-size:11.5px;font-weight:600;fill:var(--ink);font-family:'Inter',system-ui,sans-serif;font-variant-numeric:tabular-nums}
.assets{margin-top:22px}
.assets .grp{margin-bottom:6px}
.precosbar{display:flex;align-items:center;justify-content:space-between;margin-top:14px;font-size:11.5px;color:var(--muted)}
.precosbar button{background:none;border:0;color:var(--dourado);font:inherit;font-size:12px;cursor:pointer}

/* ---- botão de captura (signature) ---- */
.dock{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:center;
  padding:0 20px calc(env(safe-area-inset-bottom) + 22px);pointer-events:none;z-index:40}
.dock-inner{max-width:520px;width:100%;display:flex;justify-content:center}
.capture{pointer-events:auto;position:relative;width:100%;display:flex;align-items:center;gap:10px;
  background:var(--ink);color:var(--paper);border:0;border-radius:20px;padding:16px 18px;cursor:pointer;
  box-shadow:0 8px 30px rgba(26,22,20,.28);font:inherit;transition:transform .15s}
.capture:active{transform:scale(.985)}
.capture .plus{width:34px;height:34px;border-radius:11px;background:var(--dourado);color:var(--ink);
  font-size:24px;display:grid;place-items:center;flex:none;font-weight:600;line-height:1}
.capture .lbl{text-align:center;flex:1}
.capture .lbl b{display:block;font-size:15px;font-weight:600}
.capture .lbl small{font-size:12px;opacity:.65}
.capture .mic{width:38px;height:38px;border-radius:50%;background:rgba(244,239,230,.12);display:grid;place-items:center;flex:none}
.capture .mic svg{width:19px;height:19px;fill:var(--paper)}

/* ---- folhas (sheets) ---- */
.sheet-bg{position:fixed;inset:0;background:rgba(26,22,20,.4);backdrop-filter:blur(3px);opacity:0;
  pointer-events:none;transition:opacity .25s;z-index:50}
.sheet-bg.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--card);z-index:60;
  border-radius:26px 26px 0 0;padding:10px 22px calc(env(safe-area-inset-bottom) + 26px);
  transform:translateY(100%);transition:transform .32s cubic-bezier(.32,.72,0,1);max-width:520px;margin:0 auto;
  box-shadow:0 -10px 40px rgba(26,22,20,.2);max-height:88dvh;overflow-y:auto}
.sheet.on{transform:none}
.grip{width:38px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 18px}
.sheet h3{font-family:'Fraunces',serif;font-weight:600;font-size:20px;margin-bottom:16px}

.field{position:relative;margin-bottom:14px}
.field textarea, .field input{width:100%;border:1.5px solid var(--line);background:var(--paper);border-radius:14px;
  padding:15px;font:inherit;font-size:16px;resize:none;color:var(--ink);line-height:1.4}
.field textarea{padding-right:52px;min-height:56px}
.field textarea:focus, .field input:focus{outline:none;border-color:var(--dourado)}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:500}
.field .micbtn{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:38px;height:38px;
  border-radius:50%;border:0;background:var(--paper-2);cursor:pointer;display:grid;place-items:center;transition:.2s}
.field .micbtn svg{width:18px;height:18px;fill:var(--ink)}
.field .micbtn.rec{background:var(--coral)}
.field .micbtn.rec svg{fill:#fff}
.field .micbtn.rec::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--coral);
  animation:pulse 1.2s ease-out infinite}
@keyframes pulse{0%{opacity:.7;transform:scale(1)}100%{opacity:0;transform:scale(1.4)}}

.hint{font-size:12.5px;color:var(--muted);margin-bottom:16px;line-height:1.5}
.hint b{color:var(--ink)}

/* preview do que a app percebeu */
.parsed{background:var(--paper);border:1.5px solid var(--line);border-radius:14px;padding:14px;margin-bottom:16px;
  display:none}
.parsed.on{display:block;animation:in .3s ease both}
.parsed .line{display:flex;align-items:center;gap:10px;justify-content:space-between}
.parsed .amt{font-family:'Fraunces',serif;font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}
.catpick, .chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.chips{margin-top:0;margin-bottom:14px}
.chip{border:1.5px solid var(--line);background:var(--card);border-radius:10px;padding:7px 11px;font:inherit;
  font-size:13px;cursor:pointer;display:flex;align-items:center;gap:5px;transition:.15s}
.chip.sel{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.chip .e{font-size:14px}

.save{width:100%;background:var(--verde);color:#fff;border:0;border-radius:14px;padding:16px;font:inherit;
  font-size:16px;font-weight:600;cursor:pointer;transition:.15s;letter-spacing:.01em}
.save:disabled{background:var(--line);color:var(--muted);cursor:default}
.save:active:not(:disabled){transform:scale(.99)}
.danger{width:100%;background:none;border:0;color:var(--coral);font:inherit;font-size:14px;font-weight:500;
  cursor:pointer;padding:14px 0 0}

.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 100px);transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:var(--paper);padding:12px 20px;border-radius:14px;font-size:14px;font-weight:500;
  opacity:0;pointer-events:none;transition:.3s;z-index:70;box-shadow:var(--shadow);white-space:nowrap}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

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