:root{--green:#1f5f3a;--green2:#2e7d4f;--bg:#f6f7f4;--card:#fff;--text:#111;--muted:#555;--red:#b3261e;--warn:#fff3cd;--warnb:#c99a00;--radius:14px}
[hidden]{display:none!important}
*{box-sizing:border-box}
html{font-size:18px}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);padding-bottom:96px;line-height:1.4}
.topbar{background:var(--green);color:#fff;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top))}
.topbar h1{margin:0;font-size:1.25rem}
.topbar .sub{font-size:.9rem;opacity:.9}
main{max-width:640px;margin:0 auto;padding:12px 14px}
h2{font-size:1.2rem;margin:18px 0 10px}
label{display:block;font-weight:600;margin:12px 0}
input,select,textarea{display:block;width:100%;margin-top:6px;font-size:1.15rem;padding:14px;border:2px solid #999;border-radius:10px;background:#fff;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:3px solid var(--green2);border-color:var(--green2)}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:0;border-radius:var(--radius);font-size:1.15rem;font-weight:700;cursor:pointer;text-align:center;color:#fff;background:var(--green)}
.btn-big{min-height:64px;padding:14px;margin:10px 0}
.btn-small{width:auto;min-height:52px;min-width:56px;padding:8px 16px;font-size:1.1rem}
.btn-primary{background:var(--green)}
.btn-secondary{background:#e7ece6;color:var(--text);border:2px solid #9aa79a}
.btn-danger{background:#fff;color:var(--red);border:2px solid var(--red)}
.btn-voice{background:#0b4f8a}
.btn-voice.listening{background:var(--red);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.75}}
.btn:active{transform:scale(.98)}
.file-btn{font-weight:700}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row2 .btn{margin:10px 0}
.type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.type-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:76px;font-size:1.6rem;border-radius:var(--radius);border:3px solid #9aa79a;background:#fff;color:var(--text);cursor:pointer}
.type-btn span{font-size:.9rem;font-weight:700;margin-top:2px}
.type-btn[aria-pressed=true]{border-color:var(--green);background:#dff0e4;box-shadow:inset 0 0 0 2px var(--green)}
.hint{color:var(--muted);font-size:.95rem;margin:4px 0}
.save-status{font-weight:700;font-size:1.05rem;min-height:1.4em}
.save-status.ok{color:var(--green)}
.save-status.err{color:var(--red)}
.thumbs{display:flex;flex-wrap:wrap;gap:8px}
.thumb{position:relative}
.thumb img{width:88px;height:88px;object-fit:cover;border-radius:10px;border:2px solid #ccc}
.thumb button{position:absolute;top:-8px;right:-8px;width:36px;height:36px;border-radius:50%;border:0;background:var(--red);color:#fff;font-size:1.1rem}
.banner{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:10px 14px;font-weight:600}
.banner .btn{width:auto}
.banner.warn{background:var(--warn);border-bottom:3px solid var(--warnb)}
.banner.info{background:#e3f0fb;border-bottom:3px solid #0b4f8a}
.month-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.month-nav h2{margin:0;text-align:center}
.totals{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.total{background:var(--card);border-radius:var(--radius);padding:12px;border:1px solid #ddd}
.total .k{font-size:.85rem;color:var(--muted);font-weight:600}
.total .v{font-size:1.4rem;font-weight:800}
.total.net .v{color:var(--green)}
.total.net.neg .v{color:var(--red)}
.entry-list{list-style:none;padding:0;margin:0}
.entry{background:var(--card);border:1px solid #ddd;border-radius:var(--radius);padding:12px;margin:8px 0}
.entry .top{display:flex;justify-content:space-between;font-weight:700}
.entry .meta{color:var(--muted);font-size:.9rem}
.entry .note{margin:6px 0;white-space:pre-wrap;word-break:break-word}
.entry .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.entry .actions .btn{min-height:52px;font-size:1rem}
.empty{color:var(--muted);text-align:center;padding:24px}
.tabbar{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,1fr);background:#fff;border-top:2px solid #ccc;padding-bottom:env(safe-area-inset-bottom)}
.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:72px;font-size:1.5rem;border:0;background:none;color:var(--text);cursor:pointer}
.tab span{font-size:.8rem;font-weight:700}
.tab[aria-current=page]{background:#dff0e4;color:var(--green);box-shadow:inset 0 4px 0 var(--green)}
.toast{position:fixed;left:12px;right:12px;bottom:88px;max-width:600px;margin:0 auto;background:#14532d;color:#fff;font-size:1.15rem;font-weight:800;padding:18px;border-radius:var(--radius);text-align:center;box-shadow:0 6px 20px rgba(0,0,0,.3);z-index:20}
.toast.err{background:var(--red)}
.panel{background:#fff;border:2px solid #0b4f8a;border-radius:var(--radius);padding:12px;margin:10px 0}
.check{display:flex;align-items:center;gap:10px}
.check input{width:28px;height:28px;margin:0}
.report{background:#fff;border-radius:var(--radius);padding:16px;margin-top:12px;border:1px solid #ddd}
.report h3{margin:0 0 4px}
.report table{width:100%;border-collapse:collapse;font-size:.85rem;margin:8px 0 14px}
.report th,.report td{border:1px solid #bbb;padding:5px 6px;text-align:left;vertical-align:top}
.report th{background:#eef2ee}
.report td.num,.report th.num{text-align:right}
.report .rtotals td{font-weight:700}
.report .rphotos{display:flex;flex-wrap:wrap;gap:10px}
.report .rphotos figure{margin:0;width:180px;break-inside:avoid}
.report .rphotos img{width:180px;max-height:240px;object-fit:contain;border:1px solid #bbb}
.report .rphotos figcaption{font-size:.75rem}
.report .fine{font-size:.8rem;color:#444}

.tax-note{background:#fff3cd;border:2px solid var(--warnb);border-radius:10px;padding:10px 12px;font-weight:800}
.warn-box{background:#fdecea;border:2px solid var(--red);border-radius:10px;padding:10px;font-weight:600}
.privacy-note{background:#eef4fb;border-radius:10px;padding:8px 10px}
.rate-row{background:#fff;border:1px solid #ccc;border-radius:var(--radius);padding:4px 12px;margin:8px 0}
#pctPreview{font-weight:700;color:var(--green)}
@media print{
  html{font-size:12pt}
  body{background:#fff;padding:0}
  .no-print,.tabbar,.toast,.banner{display:none!important}
  .view{display:none!important}
  body:not(.print-tax) #view-report{display:block!important}
  body.print-tax #view-tax{display:block!important}
  main{max-width:none;padding:0}
  .report{border:0;padding:0;margin:0}
}
/* v1.1: keep the tab bar on top and tappable; never let wide tables widen the phone screen */
.tabbar{z-index:10}
.toast{pointer-events:none}
.report{overflow-wrap:anywhere}
.report th,.report td{overflow-wrap:anywhere;word-break:normal}
.report td.num,.report th.num{white-space:nowrap;overflow-wrap:normal}
.report table{font-size:.8rem}
.report th,.report td{padding:4px}
/* v1.2: Help & feedback */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px}
.topbar-text{min-width:0}
.help-btn{flex:none;min-height:52px;min-width:96px;padding:8px 14px;border:0;border-radius:var(--radius);background:#fff;color:var(--green);font-size:1.1rem;font-weight:800;cursor:pointer}
a.btn{text-decoration:none}
.btn-call{background:#14532d;font-size:1.35rem;min-height:76px}
#helperDetails summary{min-height:52px;display:flex;align-items:center;font-weight:700;cursor:pointer}
.warn-line{color:var(--red);font-weight:700}
#fb-text{font-family:inherit}
/* v1.3: update banner (sticky at the top, never over the tab bar or Save button at the bottom) */
.update-banner{position:sticky;top:0;z-index:15;display:block;width:100%;min-height:64px;padding:14px 16px;border:0;border-bottom:3px solid #0a3d1f;background:#14532d;color:#fff;font-size:1.15rem;font-weight:800;text-align:center;cursor:pointer}
.update-banner.blocked{background:var(--warn);color:var(--text);border-bottom-color:var(--warnb)}
