:root {
  color-scheme: light dark;
  --bg: light-dark(#f5f6f3, #151c1a);
  --surface: light-dark(#ffffff, #1e2824);
  --fg: light-dark(#20372e, #e8efeb);
  --muted: light-dark(#65736b, #a5b5ab);
  --line: light-dark(#e5eae5, #35433b);
  --brand: light-dark(#22664e, #9ad5b6);
  --brand-text: light-dark(#ffffff, #122f23);
  --soft: light-dark(#edf4ee, #283b30);
  --danger: light-dark(#ac3b34, #ffb4a5);
  --shadow: 0 2px 8px #172f2104;
  font: 14px/1.5 -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color: var(--fg); background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; }
button, input, select { font: inherit; color: inherit; }
button, a, input, select { touch-action: manipulation; }
button { cursor: pointer; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 10px 16px; min-height: 44px; font-weight: 600; transition: background .15s, border-color .15s; }
button:hover { border-color: var(--brand); }
button:active { background: var(--soft); }
button:disabled { opacity: .45; cursor: default; }
.primary { background: var(--brand); color: var(--brand-text); border-color: var(--brand); }
.primary:active { background: var(--brand); opacity: .85; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid var(--brand); outline-offset: 3px; }
.text-button { border: 0; background: transparent; color: var(--brand); padding: 8px 0; }
.danger, [role=alert] { color: var(--danger); }
[role=alert]:empty { display: none; }
h1, h2, h3, p { margin: 0; }
h1 { font-size: 27px; font-weight: 650; line-height: 1.2; letter-spacing: -.8px; }
h2 { font-size: 16px; font-weight: 650; line-height: 1.35; letter-spacing: -.2px; }
h3 { font-size: 14px; font-weight: 600; }
p { margin: 10px 0; }
.brand { font-size: 10px; letter-spacing: .16em; color: var(--muted); font-weight: 650; margin-bottom: 7px; }
.muted { font-size: 12px; color: var(--muted); font-weight: 400; }
.small { font-size: 11px; }
.numbers, .balance, .entry-amount, .available { font-variant-numeric: tabular-nums; letter-spacing: -.3px; }
#application { max-width: 560px; margin: auto; min-height: 100dvh; }
.app-header { padding: 28px 22px 12px; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.header-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.icon { width: 22px; height: 22px; flex-shrink: 0; }
.icon-button { width: 44px; height: 44px; padding: 10px; display: grid; place-items: center; background: var(--surface); border-radius: 50%; }
.app-version { display: block; font-size: 9px; line-height: 1.4; color: var(--muted); font-variant-numeric: tabular-nums; }
.header-actions .app-version { max-width: 150px; }
.stage-note { margin: 0 22px 20px; font-size: 11px; color: var(--muted); }
#status:not(:empty) { padding: 9px 12px; margin: 0 22px 16px; background: var(--soft); border-radius: 10px; font-size: 12px; }
main { padding: 0 22px calc(108px + env(safe-area-inset-bottom)); display: grid; gap: 16px; }
.panel { padding: 20px; background: var(--surface); border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--shadow); min-width: 0; }
.row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.row > span:first-child { min-width: 0; }
.row > strong { flex-shrink: 0; text-align: right; }
.wrap { flex-wrap: wrap; }
.eyebrow { font-size: 12px; font-weight: 600; }
.quiet-label { font-size: 10px; color: var(--muted); }
.balance { font-size: clamp(31px, 8.5vw, 39px); font-weight: 600; line-height: 1.2; letter-spacing: -1.4px; margin: 10px 0 20px; }
.bank-check { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.bank-copy { min-width: 0; display: grid; gap: 3px; }
.bank-value { font-size: 12px; font-weight: 500; }
.bank-copy small { font-size: 11px; line-height: 1.4; }
.compact-button { padding: 8px 12px; color: var(--brand); font-size: 12px; flex-shrink: 0; background: var(--soft); border-color: transparent; }
.forecast-title { border-top: 1px solid var(--line); margin-top: 20px; padding-top: 16px; color: var(--muted); font-size: 11px; }
.forecast-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; margin-top: 9px; }
.forecast-cell { display: grid; gap: 4px; }
.forecast-cell + .forecast-cell { border-left: 1px solid var(--line); padding-left: 16px; }
.forecast-cell span { font-size: 11px; }
.forecast-cell strong { font-size: clamp(16px, 4.5vw, 20px); font-weight: 600; overflow-wrap: anywhere; }
.budget-panel { background: var(--soft); border-color: transparent; box-shadow: none; }
.period-label { font-size: 11px; margin: 4px 0 8px; }
.budget-values { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 12px; align-items: end; margin-top: 18px; }
.budget-values > div { display: grid; gap: 3px; }
.budget-values .muted { font-size: 11px; }
.budget-used strong { font-size: 16px; font-weight: 500; }
.budget-available { text-align: right; }
.available { font-size: 26px; font-weight: 600; line-height: 1.2; letter-spacing: -.7px; }
.track { height: 9px; border-radius: 8px; background: light-dark(#d6e4d8, #435b49); overflow: hidden; margin: 14px 0 8px; }
.fill { height: 100%; background: var(--brand); border-radius: inherit; }
.budget-footer { text-align: right; font-size: 10px; }
.section-head { align-items: center; gap: 8px; }
.section-head h2 { font-size: 15px; flex: 1; }
.section-head button { font-size: 11px; white-space: nowrap; flex-shrink: 0; min-height: 44px; margin: -10px 0; }
.entry { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 15px 0; min-height: 76px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; font-weight: 400; }
.entry:hover { background: var(--bg); }
.entry:last-child { border-bottom: 0; }
.entry-icon { width: 32px; height: 32px; display: grid; place-items: center; background: var(--bg); color: var(--muted); border-radius: 11px; }
.entry-icon .icon { width: 17px; height: 17px; }
.is-income .entry-icon { background: var(--soft); color: var(--brand); }
.entry-main { min-width: 0; }
.entry strong, .entry small { display: block; overflow-wrap: anywhere; }
.entry strong { font-size: 13px; font-weight: 550; line-height: 1.4; }
.entry small { font-size: 10px; color: var(--muted); margin-top: 4px; line-height: 1.4; }
.entry-end { display: grid; gap: 4px; text-align: right; }
.entry-amount { white-space: nowrap; font-weight: 600; font-size: 13px; }
.is-income .entry-amount { color: var(--brand); }
.entry-status { font-size: 10px; color: var(--muted); }
.pending-totals { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; border-top: 1px solid var(--line); padding-top: 14px; margin-top: 4px; }
.pending-totals > div { display: grid; gap: 4px; }
.pending-totals > div:last-child { text-align: right; }
.pending-totals .muted { font-size: 11px; }
.pending-totals strong { font-size: 14px; font-weight: 600; }
.divider { border-top: 1px solid var(--line); padding-top: 14px; margin-top: 14px; }
.week-heading { margin: 2px 0; gap: 16px; }
.week-heading h2 { font-size: 17px; }
.week-heading .muted { font-size: 11px; margin-top: 3px; }
.week-buttons { display: flex; gap: 5px; }
.week-buttons button { min-width: 44px; padding: 8px 10px; font-size: 12px; }
.week-totals { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; }
.week-totals .muted { font-size: 11px; }
.week-totals strong { display: block; font-variant-numeric: tabular-nums; margin-top: 5px; font-size: 18px; font-weight: 600; }
.risk { color: var(--danger); }
.notice { padding: 14px 16px; border: 1px solid var(--danger); border-radius: 12px; font-size: 12px; margin: 0; }
.empty { padding: 22px 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.ledger-day { display: grid; gap: 4px; }
.ledger-day h2 { font-size: 15px; }
.ledger-balance { border-top: 1px solid var(--line); margin-top: 6px; padding-top: 14px; display: grid; gap: 10px; font-size: 12px; }
.ledger-balance .muted { font-size: 11px; }
.list-button { width: 100%; text-align: left; margin-top: 10px; display: flex; justify-content: space-between; align-items: center; font-size: 13px; }
.badge { font-size: 10px; color: var(--muted); background: var(--bg); border-radius: 6px; padding: 4px 7px; white-space: nowrap; }
.version-result { font-size: 12px; color: var(--muted); overflow-wrap: anywhere; }
nav { position: fixed; z-index: 2; bottom: 0; left: 50%; transform: translateX(-50%); width: min(100%, 560px); display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); border-radius: 22px 22px 0 0; background: var(--surface); box-shadow: 0 -8px 24px #172f2106; }
nav button { border: 0; min-width: 0; background: transparent; padding: 4px 0; color: var(--muted); font-size: 10px; font-weight: 500; display: flex; flex-direction: column; align-items: center; gap: 5px; min-height: 50px; border-radius: 12px; }
nav button > span { display: grid; place-items: center; height: 24px; }
nav button[aria-current] { color: var(--brand); font-weight: 650; }
nav button[aria-current] > span { position: relative; }
nav .new-action span { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 15px; background: var(--brand); color: var(--brand-text); box-shadow: 0 3px 8px #173f2518; }
nav .new-action { margin-top: -14px; gap: 4px; }
nav .new-action .icon { width: 24px; height: 24px; }
.access { max-width: 430px; padding: max(64px, 12vh) 28px 40px; margin: auto; }
.access h1 { font-size: 32px; max-width: 300px; line-height: 1.2; letter-spacing: -1px; margin: 18px 0 12px; }
.access p { color: var(--muted); font-size: 13px; line-height: 1.7; }
.access form { margin-top: 32px; }
.access form button { margin: 20px 0; width: 100%; }
.access .app-version { font-size: 10px; }
label { display: block; margin: 20px 0 7px; font-size: 12px; font-weight: 600; }
input, select { width: 100%; padding: 12px 14px; background: var(--bg); border: 1px solid var(--line); border-radius: 12px; min-height: 48px; font-size: 16px; line-height: 1.4; }
input[type=checkbox] { width: 20px; height: 20px; min-height: 20px; margin: 0; flex-shrink: 0; accent-color: var(--brand); }
.check { display: flex; gap: 10px; align-items: center; line-height: 1.5; font-weight: 400; }
.actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--line); }
.actions .primary { flex: 1; }
.actions .text-button { padding: 8px 10px; }
#setup-form > button { margin-top: 24px; width: 100%; }
dialog { color: var(--fg); background: var(--surface); border: 1px solid var(--line); border-radius: 24px; padding: 24px; width: min(calc(100% - 24px), 480px); max-height: calc(100dvh - 32px); overflow: auto; box-shadow: 0 20px 80px #0b231b28; }
dialog::backdrop { background: #0c241e66; backdrop-filter: blur(3px); }
dialog h2 { font-size: 21px; letter-spacing: -.6px; }
dialog p { font-size: 12px; color: var(--muted); line-height: 1.65; }
dialog [role=alert] { color: var(--danger); }
.dialog-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 6px; }
.dialog-head .text-button { font-size: 12px; }
#entry-amount, #opening-value, #bank-value { font-size: 25px; font-weight: 600; letter-spacing: -.5px; padding: 12px 14px; }
#delete-confirmation { border-top: 1px solid var(--line); margin-top: 20px; padding-top: 14px; }
#delete-confirmation button { margin: 4px 4px 4px 0; }
@media (max-width: 400px) {
  .app-header { padding: 24px 16px 10px; }
  .stage-note { margin: 0 16px 18px; }
  #status:not(:empty) { margin-left: 16px; margin-right: 16px; }
  main { padding-left: 16px; padding-right: 16px; gap: 14px; }
  .panel { padding: 17px; border-radius: 18px; }
  .quiet-label { font-size: 9px; }
  .entry { grid-template-columns: 28px minmax(0, 1fr) auto; gap: 8px; }
  .entry-icon { width: 28px; height: 28px; border-radius: 9px; }
  .section-head h2 { font-size: 14px; }
  .section-head button { font-size: 10px; }
  .entry-amount { font-size: 12px; }
  .entry strong { font-size: 12px; }
}
@media (max-width: 350px) {
  h1 { font-size: 24px; }
  .quiet-label { max-width: 75px; text-align: right; }
  .forecast-grid { gap: 10px; }
  .forecast-cell + .forecast-cell { padding-left: 10px; }
  .available { font-size: 23px; }
  .week-heading { justify-content: center; text-align: center; }
  .entry-icon { display: none; }
  .entry { grid-template-columns: minmax(0, 1fr) auto; }
}
@media (max-width: 560px) {
  dialog { margin: auto 0 0; width: 100%; max-width: 100%; max-height: calc(100dvh - 32px); border-radius: 24px 24px 0 0; padding: 24px 22px calc(24px + env(safe-area-inset-bottom)); border-bottom: 0; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; scroll-behavior: auto !important; } }

.category-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px}.category-row>strong{font-size:11px;font-weight:400;color:var(--muted)}.category-row>button{font-size:11px;padding:8px 10px}.panel>.section-head{margin-bottom:8px}

.ledger-controls{display:grid;gap:20px}.period-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:var(--line);border-radius:13px}.period-switch button{border:0;background:transparent;color:var(--muted);min-height:40px;padding:8px 16px;font-size:13px}.period-switch button[aria-pressed=true]{background:var(--surface);color:var(--fg);box-shadow:0 1px 4px #142b2110}.period-title::first-letter{text-transform:uppercase}

.ledger-month-heading{flex-wrap:nowrap;gap:10px}.ledger-month-heading>div:first-child{min-width:0;flex:1}.ledger-month-heading h2{font-size:16px}.ledger-month-heading .week-buttons{flex-shrink:0}

textarea{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:10px;width:100%;padding:10px;resize:vertical}
.card-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0}.card-toolbar h2{text-transform:capitalize}
.card-summary{display:grid;gap:8px}.card-summary p{margin:0}.card-total{font-size:30px;line-height:1.3;font-variant-numeric:tabular-nums}
.card-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:baseline;width:100%;text-align:left;padding:12px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}
.card-line>strong:first-child{font-size:14px;overflow-wrap:anywhere}.card-line>strong:nth-child(2){white-space:nowrap;text-align:right;font-size:14px;font-variant-numeric:tabular-nums}.card-line small{grid-column:1/-1;color:var(--muted);font-size:12px}

.card-bill-hero{display:grid;gap:5px}.card-bill-metrics{display:grid;gap:8px}.card-bill-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-top:8px;border-top:1px solid var(--line)}
body.desktop-shell .card-summary{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:12px 24px;padding:18px}
body.desktop-shell .card-summary>p,body.desktop-shell .card-bill-actions{grid-column:1/-1}
body.desktop-shell .card-bill-actions button{min-height:34px;padding:6px 10px;font-size:12px}
body.desktop-shell .card-screen>.actions button{flex:0 0 auto}
body.desktop-shell .card-screen>.panel{padding:18px}

.recurrence-line{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px;margin:0}
.recurrence-day{display:flex;flex-direction:column;justify-content:center;align-items:center;border-right:1px solid var(--line);padding-right:10px;font-variant-numeric:tabular-nums}
.recurrence-day>strong{font-size:29px;line-height:1;font-weight:650;color:var(--brand)}.recurrence-day>small{font-size:9px;color:var(--muted);margin-top:3px}
.recurrence-content{min-width:0;display:grid;gap:4px}.recurrence-content h2{font-size:14px}.recurrence-content>.row>strong{font-size:14px}
.recurrence-details{display:flex;gap:6px 12px;align-items:center;flex-wrap:wrap}.recurrence-details>.muted{font-size:11px;line-height:1.4;flex:1 1 300px}
.recurrence-actions{display:flex;gap:10px;flex-shrink:0}.recurrence-actions button{font-size:11px;min-height:24px;padding:1px 0;border:0;border-radius:0;color:var(--brand);background:transparent;font-weight:600;white-space:nowrap}
@media(max-width:600px){.recurrence-line{grid-template-columns:44px minmax(0,1fr);padding:9px;gap:9px}.recurrence-day>strong{font-size:27px}}
/* Lançamentos futuros: compacto */
.future-head{font-size:13px;margin:10px 0 2px;color:var(--muted);font-weight:600}
.future-once{display:grid}
.future-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto auto;gap:8px;align-items:center;width:100%;height:30px;min-height:30px;padding:0 4px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;text-align:left;font-weight:400;font-size:13px}
.future-row:hover{background:var(--soft,rgba(128,128,128,.08))}.future-row strong{font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.future-date{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.future-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.future-cat{font-size:11px;white-space:nowrap}
.future-row.due-today .future-date{color:light-dark(#926113,#e9bd68);font-weight:600}.future-row.due-today .future-date::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}
.recurrence-line{grid-template-columns:62px minmax(0,1fr);gap:10px;padding:5px 10px;border-radius:8px}
.recurrence-day{padding-right:8px}.recurrence-day>strong{font-size:19px}.recurrence-day>small{font-size:9px;margin-top:1px;text-align:center;line-height:1.1}
.recurrence-content{gap:0}.recurrence-content h2{font-size:13px;font-weight:500}.recurrence-details{gap:2px 10px}.recurrence-details>.muted{font-size:11px;line-height:1.3;flex:1 1 260px}
.recurrence-actions button{min-height:20px}
@media(max-width:600px){.future-row{grid-template-columns:46px minmax(0,1fr) auto}.future-cat{display:none}.recurrence-line{grid-template-columns:54px minmax(0,1fr);padding:5px 8px}.recurrence-day>strong{font-size:18px}}

/* Recorrentes: sem caixa, só uma linha fina entre os itens (como em A pagar e receber, no Início) */
.recurrence-line{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:6px 4px}
.recurrence-line:last-of-type{border-bottom:0}

/* Lançamentos futuros: avulsos e recorrentes na mesma linha: data · descrição · valor */
.future-row{grid-template-columns:52px minmax(0,1fr) auto 78px!important;border-radius:0!important;cursor:pointer}
.future-row .future-desc small{font-size:11px}
.future-row .future-link{font-size:11px;min-height:0;padding:0;border:0;background:none;color:var(--brand);font-weight:600;text-align:right}
.st-row{border-radius:0!important}
@media(max-width:600px){.future-row{grid-template-columns:46px minmax(0,1fr) auto!important}.future-row .future-link,.future-row>span:last-child:empty{display:none}.future-row .future-desc small{display:none}}
.future-row.rec{height:30px;min-height:30px;max-height:30px;padding-top:0;padding-bottom:0}
.future-row button.future-link{min-height:0;height:20px;line-height:20px;padding:0;margin:0}
/* Lançamentos futuros em duas colunas no desktop */
.future-cols{display:grid;grid-template-columns:1fr;gap:6px 28px;align-items:start}
.future-col{display:grid;gap:0;align-content:start;min-width:0}
@media(min-width:1000px){.future-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.future-row.rec .future-desc small{white-space:nowrap}
/* Descrição mais perto da data e valor mais perto do editar */
.future-row{grid-template-columns:24px minmax(0,1fr) auto 38px!important;gap:6px!important}
.future-row .future-link{text-align:right;justify-self:end}
@media(max-width:600px){.future-row{grid-template-columns:24px minmax(0,1fr) auto!important}}
.future-sub{font-size:12px;font-weight:600;margin:10px 0 2px;color:var(--fg);text-transform:uppercase;letter-spacing:.04em}
.future-head+.future-sub,.future-head+.muted+.future-sub{margin-top:4px}
/* Débito automático: marca discreta */
.auto-badge{display:inline-block;font-size:9px;font-weight:600;line-height:1;padding:2px 4px;border-radius:4px;border:1px solid var(--line);color:var(--muted);vertical-align:1px;letter-spacing:.03em;white-space:nowrap}
