:root { --blue:#1f4e79; --blue-dark:#173b5c; --blue-light:#e8f0f8; --ink:#1d2733; --muted:#5f6b78;
        --line:#dde3ea; --bg:#f5f7fa; --ok:#1e7b46; --err:#b42318; --radius:8px; }
* { box-sizing:border-box; }
html { font-size:18px; }
body { margin:0; font-family:"Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
       color:var(--ink); background:var(--bg); line-height:1.5; }
a { color:var(--blue); }
header.top { position:sticky; top:0; z-index:50; background:var(--blue); color:#fff; height:64px; display:flex; align-items:center;
             justify-content:space-between; padding:0 28px; }
header.top .brand { font-size:1.35rem; font-weight:700; letter-spacing:.2px; color:#fff; text-decoration:none; }
header.top .who { display:flex; gap:18px; align-items:center; font-size:.95rem; }
header.top .who a, header.top .who button { color:#fff; }
.layout { display:flex; min-height:calc(100vh - 64px); }
nav.side { position:sticky; top:64px; align-self:flex-start; height:calc(100vh - 64px); width:200px; background:#fff; border-inline-end:1px solid var(--line); padding:20px 0; flex-shrink:0; }
nav.side a { display:block; padding:12px 26px; text-decoration:none; color:var(--ink); font-size:1.05rem;
             border-inline-start:4px solid transparent; }
nav.side a:hover { background:var(--blue-light); }
nav.side a.active { border-inline-start-color:var(--blue); background:var(--blue-light); font-weight:600; color:var(--blue); }
main { flex:1; min-width:0; padding:30px 28px; max-width:1120px; }
h1 { font-size:1.75rem; margin:0 0 6px; }
h2 { font-size:1.25rem; margin:28px 0 10px; }
.sub { color:var(--muted); margin:0 0 22px; }
.card { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:22px 26px; margin-bottom:22px; }
.flash { padding:12px 18px; border-radius:var(--radius); margin-bottom:18px; }
.flash.ok { background:#e6f4ec; color:var(--ok); border:1px solid #b9e0c8; }
.flash.error { background:#fdecea; color:var(--err); border:1px solid #f5c2bd; }
table { width:100%; border-collapse:collapse; }
th { white-space:nowrap; text-align:start; font-weight:600; color:var(--muted); font-size:.85rem; text-transform:uppercase;
     letter-spacing:.4px; padding:8px 10px; border-bottom:2px solid var(--line); }
td { padding:11px 10px; border-bottom:1px solid var(--line); vertical-align:middle; }
td.num, th.num { text-align:end; font-variant-numeric:tabular-nums; }
.big { font-size:1.2rem; font-weight:600; }
.neg { color:var(--err); }
.btn { white-space:nowrap; display:inline-block; background:var(--blue); color:#fff; border:none; border-radius:6px;
       padding:10px 20px; font-size:1rem; cursor:pointer; text-decoration:none; font-family:inherit; }
.btn:hover { background:var(--blue-dark); }
.btn.light { background:#fff; color:var(--blue); border:1px solid var(--blue); }
.btn.small { padding:5px 12px; font-size:.85rem; }
.link { background:none; border:none; color:var(--blue); cursor:pointer; font-size:.9rem; padding:2px 6px;
        font-family:inherit; text-decoration:underline; }
.link.danger { color:var(--err); }
.inline { display:inline; margin:0; }
label { display:block; font-weight:600; margin:16px 0 6px; }
input[type=text], input[type=email], input[type=password], input[type=tel], select {
  font-size:1rem; padding:10px 12px; border:1px solid #b9c3cf; border-radius:6px; width:100%;
  max-width:420px; font-family:inherit; background:#fff; }
.hint { color:var(--muted); font-size:.85rem; font-weight:400; }
.actions { margin-top:24px; display:flex; gap:12px; align-items:center; }
.head-row { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
/* categories */
table.cats { font-size:.95rem; }
table.cats td { padding:8px 8px; }
table.cats td.name { min-width:215px; }
table.cats .rowtools .link { padding:2px 3px; }
.card.scroll { overflow-x:auto; }
table.cats tr.main td.name { font-size:1.05rem; }
tr.main td { background:#eef3f8; font-weight:600; border-top:2px solid #cfdae6; }
tr.subrow td:first-child { padding-inline-start:38px; }
.seg { display:inline-flex; border:1px solid #b9c3cf; border-radius:6px; overflow:hidden; }
.seg button { white-space:nowrap; border:none; background:#fff; padding:4px 8px; font-size:.8rem; cursor:pointer;
              border-inline-end:1px solid #b9c3cf; font-family:inherit; color:var(--ink); }
.seg button:last-child { border-inline-end:none; }
.seg button.on { background:var(--blue); color:#fff; font-weight:600; }
.inh { color:var(--muted); font-size:.92rem; }
.own { display:inline-block; background:#fff4d6; color:#7a5300; border:1px solid #f0d58a; border-radius:12px;
       padding:1px 10px; font-size:.85rem; font-weight:600; }
.tick { width:26px; height:26px; border-radius:5px; border:2px solid #9aa7b5; background:#fff; cursor:pointer;
        color:#fff; font-weight:700; line-height:20px; padding:0; font-size:.9rem; }
.tick.on { background:var(--ok); border-color:var(--ok); }
.rowtools { white-space:nowrap; text-align:end; }
.rowtools .link { font-size:.85rem; }
details.addsub summary { cursor:pointer; color:var(--blue); font-size:.92rem; list-style:none; }
details.addsub summary::-webkit-details-marker { display:none; }
.addform { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:8px; }
.addform input[type=text] { max-width:280px; }
.addform select { max-width:200px; }
.legend { color:var(--muted); font-size:.88rem; margin-top:10px; }
.login-wrap { max-width:440px; margin:70px auto; }
.mobiles li { padding:6px 0; }
@media (max-width: 800px) {
  .layout { flex-direction:column; }
  nav.side { position:static; height:auto; width:100%; display:flex; overflow-x:auto; padding:0; border-inline-end:none; border-bottom:1px solid var(--line); }
  nav.side a { border-inline-start:none; border-bottom:3px solid transparent; padding:12px 16px; white-space:nowrap; }
  nav.side a.active { border-bottom-color:var(--blue); }
  main { padding:20px 14px; }
  header.top { padding:0 14px; }
  table.cats td.name { width:auto; }
  .seg button { padding:4px 7px; }
  .hide-sm { display:none; }
  table { font-size:.9rem; }
}
tr[id] { scroll-margin-top:90px; }
/* ---- stage 2 ---- */
a.plain { color:inherit; text-decoration:none; }
a.plain:hover { text-decoration:underline; }
.pos { color:var(--ok); }
.muted { color:var(--muted); }
.nowrap { white-space:nowrap; }
.btnrow { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.needs { display:inline-block; background:#fff1e6; color:#b54708; border:1px solid #f9c89b; border-radius:12px;
         padding:1px 10px; font-size:.82rem; font-weight:600; }
.todo-line { font-size:1.05rem; }
.pill { white-space:nowrap; display:inline-block; border-radius:12px; padding:1px 10px; font-size:.82rem; font-weight:600; }
.pill.transfer { background:#e8f0f8; color:var(--blue); border:1px solid #bcd0e6; }
.pill.splitp { background:#efe9fb; color:#5b3fa0; border:1px solid #d4c6f2; margin-bottom:2px; }
.pill.dup { background:#eef0f3; color:#5f6b78; border:1px solid #d5dae1; }
.pill.likely { background:#fff4d6; color:#7a5300; border:1px solid #f0d58a; }
.pill.err { background:#fdecea; color:var(--err); border:1px solid #f5c2bd; }
.filters { display:flex; flex-wrap:wrap; gap:8px; align-items:center; background:#fff; border:1px solid var(--line);
           border-radius:var(--radius); padding:12px 14px; margin-bottom:12px; }
.filters input, .filters select { font-size:.9rem; padding:6px 8px; max-width:190px; width:auto; }
.filters input[type=search] { width:230px; max-width:230px; }
.filters .range input { width:70px; }
.chk { display:inline-flex; gap:6px; align-items:center; font-weight:400; margin:0; font-size:.92rem; }
label.chk { margin:10px 0; }
.filters label.chk { margin:0; }
.toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 10px; font-size:.95rem; }
.btn.undo { background:#fff; color:var(--ink); border:1px solid #9aa7b5; }
.btn.undo:hover { background:#eef3f8; }
.card.tight { padding:8px 14px; }
table.txns { font-size:.95rem; }
table.txns td { padding:9px 8px; }
table.txns td.desc { min-width:200px; }
table.txns td.acct { white-space:nowrap; }
table.txns .note { color:var(--muted); font-size:.82rem; }
table.txns tr.todo td:first-child { box-shadow: inset 4px 0 0 #f79009; }
table.txns td.cat { min-width:200px; }
.split div { font-size:.85rem; }
select.needsel { border:2px solid #f79009; background:#fff8f1; font-size:.85rem; padding:5px 6px; min-width:190px; max-width:230px; color:#b54708; font-weight:600; }
tr.flashrow td { background:#eef6ff; }
.offer { background:#eef6ff; border:1px solid #bcd0e6; border-radius:var(--radius); padding:10px 16px; margin-bottom:12px; }
.offer-form { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.offer-form .kw { max-width:180px; font-weight:600; padding:6px 10px; font-size:.95rem; }
.grid2 { display:grid; grid-template-columns:repeat(2, minmax(0, 420px)); gap:0 24px; }
.grid3 { display:grid; grid-template-columns:repeat(3, minmax(0, 260px)); gap:0 20px; }
input.wide { max-width:680px; }
input[type=date], input[type=file] { font-size:1rem; padding:8px 10px; border:1px solid #b9c3cf; border-radius:6px; font-family:inherit; }
.amountrow { display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
label.radio { display:inline-flex; gap:6px; align-items:center; font-weight:400; margin:4px 16px 4px 0; }
.cur { font-weight:600; }
.delete-form { margin-top:18px; border-top:1px solid var(--line); padding-top:12px; }
table.splits td { padding:6px 8px; }
table.splits select { max-width:320px; }
table.splits input { max-width:200px; }
.splitsum { font-weight:600; font-size:1.05rem; }
.splitsum.ok { color:var(--ok); }
.splitsum.bad { color:#b54708; }
.btn:disabled { background:#9aa7b5; cursor:not-allowed; }
table.sample { font-size:.85rem; }
table.sample td { padding:5px 8px; white-space:nowrap; }
.stats { display:flex; gap:12px; margin-bottom:14px; flex-wrap:wrap; }
.stat { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:10px 16px; font-size:.92rem; color:var(--muted); }
.stat span { display:block; font-size:1.6rem; font-weight:700; color:var(--ink); }
.stat.dup span { color:#5f6b78; } .stat.likely span { color:#b54708; } .stat.err span { color:var(--err); }
tr.st-duplicate td { color:#8a95a1; background:#f7f8fa; }
tr.st-likely td { background:#fffaeb; }
tr.st-error td { background:#fef3f2; }
table.history tr.undone td { color:#8a95a1; text-decoration:line-through; }
table.history tr.undone td.rowtools { text-decoration:none; }
@media (max-width: 800px) { .grid2, .grid3 { grid-template-columns:1fr; } .filters input[type=search] { width:100%; max-width:none; } }
/* fit transaction tables at 1280px without horizontal scrolling */
table.txns { font-size:.9rem; }
table.txns td { padding:8px 6px; }
table.txns th { padding:8px 6px; }
table.txns td.desc { min-width:150px; word-break:break-word; }
table.txns td.cat { min-width:0; max-width:190px; }
table.txns td.cat .pill { white-space:normal; }
table.txns td.big { font-size:1.05rem; }
table.txns td.bal { font-size:.82rem; }
select.needsel { min-width:0; width:165px; max-width:165px; }
table.preview td.note { max-width:220px; }
/* ---- stage 3 ---- */
.monthnav { display:flex; gap:8px; flex-wrap:nowrap; justify-content:flex-end; flex-shrink:0; }
.tabs { display:flex; gap:4px; border-bottom:2px solid var(--line); margin:0 0 16px; }
.tabs a { padding:8px 18px; text-decoration:none; color:var(--muted); border-bottom:3px solid transparent; margin-bottom:-2px; font-weight:600; }
.tabs a.on { color:var(--blue); border-bottom-color:var(--blue); }
.cards3, .cards4 { display:grid; gap:12px; margin-bottom:16px; }
.cards3 { grid-template-columns:repeat(3, 1fr); }
.cards4 { grid-template-columns:repeat(4, 1fr); }
.cards3 .stat span, .cards4 .stat span { font-size:1.5rem; }
.stat .hint { font-size:.8rem; margin-top:2px; }
a.link-card { text-decoration:none; color:var(--muted); }
a.link-card:hover { border-color:var(--blue); }
.warn { color:#b54708 !important; }
.blue { color:var(--blue) !important; }
table.budget { font-size:.95rem; }
table.budget td { padding:7px 8px; }
table.budget tr.subrow td:first-child { padding-inline-start:26px; }
table.budget input.amt { width:110px; max-width:110px; text-align:end; padding:5px 8px; font-size:.95rem; }
table.budget .cur { margin-inline-end:4px; color:var(--muted); font-weight:400; }
table.budget .auto { display:inline-block; width:125px; text-align:end; color:var(--ink); }
table.budget td.ups { font-size:.85rem; white-space:nowrap; }
.chip { display:inline-block; background:#eef3f8; border:1px solid #cfdae6; border-radius:10px; padding:0 8px; font-size:.78rem; color:var(--blue); }
.savebar { position:sticky; bottom:0; background:var(--bg); padding:12px 0; margin-top:8px; border-top:1px solid var(--line); }
table.progress td.barcol { width:110px; }
.bar { height:8px; background:#e9edf2; border-radius:4px; overflow:hidden; }
.bar div { height:100%; border-radius:4px; }
.bar .ok { background:#2e9b5f; }
.bar .over { background:#d92d20; }
.twocol { display:grid; grid-template-columns:1.2fr 1fr; gap:16px; }
.cardtitle { margin:0 0 10px; font-size:1.1rem; }
table.upcoming td { padding:8px 6px; }
@media (max-width: 800px) { .cards3, .cards4, .twocol { grid-template-columns:1fr; } }
/* ---- stage 4 ---- */
table.maser td { padding:8px 6px; }
table.maser tr.sel td { background:#eef6ff; }
table.maser tr.total td { border-top:2px solid var(--line); }
.opts { display:flex; flex-direction:column; gap:8px; max-width:640px; }
label.opt { display:flex; align-items:center; gap:8px; font-weight:400; margin:0; padding:10px 14px;
            border:1px solid #b9c3cf; border-radius:6px; background:#fff; cursor:pointer; }
label.opt.on, label.opt:has(input:checked) { border-color:var(--blue); background:#eef6ff; box-shadow:0 0 0 1px var(--blue); }
input.small-in { width:90px !important; max-width:90px; padding:5px 8px; font-size:.95rem; }
.example { background:#fffaeb; border:1px solid #f0d58a; border-radius:6px; padding:10px 14px; margin-top:18px; max-width:640px; }
details.maser-cats summary { cursor:pointer; color:var(--blue); }
.catgrid { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px 20px; margin-top:10px; font-size:.9rem; }
@media (max-width: 800px) { .catgrid { grid-template-columns:1fr; } }
.stack > .card table.maser { max-width:900px; }
.stat span.neg { color:var(--err); }
.stat span.pos { color:var(--ok); }
/* ---- stage 5 ---- */
.warnbox { background:#fffaeb; border:1px solid #f0d58a; border-radius:var(--radius); padding:10px 16px; margin-bottom:14px; }
.pill.adjust { background:#fdf2fa; color:#9e165f; border:1px solid #f5c2e0; }
.rec { color:var(--ok); font-weight:700; font-size:.85rem; }
.stat .lbl { font-size:inherit; font-weight:400; color:var(--muted); display:block; }
.hints { background:#fff8f1; border:1px solid #f9c89b; border-radius:var(--radius); padding:10px 16px; margin-bottom:14px; }
.hints ul { margin:6px 0 0; padding-inline-start:20px; }
.hints li { margin:4px 0; }
table.recon tr.later td { color:var(--muted); }
table.rep td { padding:8px 8px; }
table.rep tr.lvl1 { display:none; }
table.rep tr.lvl1 td:first-child { padding-inline-start:30px; color:var(--muted); }
table.rep tr.toggle { cursor:pointer; background:#f6f9fc; }
table.rep tr.toggle:hover { background:#eef3f8; }
table.rep tr.bold td { font-weight:700; }
table.rep .caret { color:var(--blue); display:inline-block; width:14px; }
table.yeargrid { font-size:.8rem; }
table.yeargrid td, table.yeargrid th { padding:6px 4px; white-space:nowrap; }
table.yeargrid td:first-child { white-space:normal; min-width:150px; }
details.pick { position:relative; }
details.pick summary { cursor:pointer; padding:6px 10px; border:1px solid #b9c3cf; border-radius:6px; background:#fff; font-size:.9rem; list-style:none; }
details.pick .pickbox { position:absolute; z-index:20; background:#fff; border:1px solid var(--line); border-radius:6px; padding:10px 14px;
  box-shadow:0 6px 18px rgba(0,0,0,.12); min-width:220px; max-height:360px; overflow:auto; }
details.pick .pickbox.wide { min-width:520px; display:grid; grid-template-columns:1fr 1fr; gap:6px 18px; }
details.pick label.chk { display:flex; margin:3px 0; }
details.pick label.sub { padding-inline-start:18px; font-size:.85rem; }
.tabs { flex-wrap:wrap; }
details.pick .pickbox.wide { inset-inline-end:0; }
/* ---- stage 6 ---- */
ol.steps { margin:0 0 10px; padding-inline-start:22px; line-height:1.8; }
table.links td { padding:10px 8px; }
table.links select { max-width:290px; }
table.links select { max-width:250px; }
table.links td.appbal { min-width:130px; max-width:170px; }
/* ---- stage 7 ---- */
.openbox { background:#e6f4ec; border:1px solid #b9e0c8; border-radius:var(--radius); padding:10px 14px; }
.coachbar { background:#fff4d6; border-bottom:1px solid #f0d58a; padding:8px 28px; display:flex; gap:16px; align-items:center; justify-content:space-between; font-size:.95rem; }
table.access td { padding:6px 6px; }
table.access tr.views td { border-top:none; padding-top:0; font-size:.88rem; }
table.access details summary { cursor:pointer; color:var(--blue); }
.notes li { margin:6px 0; }
.bycoach { display:inline-block; background:#fff4d6; color:#7a5300; border:1px solid #f0d58a; border-radius:10px; padding:0 8px; font-size:.78rem; }
.pill.openp { background:#e6f4ec; color:var(--ok); border:1px solid #b9e0c8; }
.homecoach { max-width:560px; font-size:.92rem; }
.homecoach .btnrow { justify-content:flex-end; }
.coachnotes { background:#fffdf5; border-color:#f0d58a; }
textarea.notearea { width:100%; font:inherit; font-size:.95rem; padding:8px 10px; border:1px solid #b9c3cf; border-radius:6px; }
/* ---- stage 8 ---- */
table.examples td { padding:6px 6px; }
code { background:#eef3f8; border-radius:4px; padding:1px 6px; font-size:.92em; }
.smsbubble { background:#e8f0f8; border-radius:14px 14px 14px 4px; padding:10px 14px; max-width:460px; font-size:.95rem; }
table.texts td { padding:8px 6px; }

/* ---- stage 9: right-to-left (Hebrew) ---- */
.langbtn { background:transparent; color:#fff; border:1px solid rgba(255,255,255,.6); border-radius:14px; padding:2px 12px;
           font:inherit; font-size:.9rem; cursor:pointer; }
.langbtn:hover { background:rgba(255,255,255,.15); }
[dir=rtl] body { font-family:"Segoe UI", "Arial Hebrew", "Noto Sans Hebrew", "DejaVu Sans", Arial, sans-serif; }
[dir=rtl] table.txns tr.todo td:first-child { box-shadow: inset -4px 0 0 #f79009; }
[dir=rtl] .seg button:last-child { border-inline-end:none; }
[dir=rtl] .caret { transform:scaleX(-1); }
[dir=rtl] th, [dir=rtl] td { text-align:start; }
[dir=rtl] th.num, [dir=rtl] td.num, [dir=rtl] .num { text-align:end; }
.hdate { color:var(--muted); font-size:.82em; white-space:nowrap; }
table.owed td { padding:9px 6px; }
table.owed select { font-size:.88rem; padding:5px 8px; }
/* Stage 10: regular payments, looks paid, changed since copy */
.suggest { margin-top:12px; border-top:1px dashed #cfdae6; padding-top:10px; }
.card > .suggest:first-child { margin-top:0; border-top:0; padding-top:0; }
.suggest-title { font-size:1rem; margin:0 0 4px; color:var(--blue); }
.paidhint { font-size:.8rem; color:#7a5a00; background:#fff6d6; border-radius:6px; padding:1px 6px; display:inline-block; margin-top:2px; }
.changed-note { display:block; font-size:.75rem; color:#7a5a00; white-space:nowrap; }
tr.changed td:first-child { box-shadow: inset 3px 0 0 #e0a800; }
[dir="rtl"] tr.changed td:first-child { box-shadow: inset -3px 0 0 #e0a800; }
/* Stage H — transfers between currencies */
.fxbox { background:var(--blue-light); border:1px solid #c9d9ea; border-radius:var(--radius); padding:12px 16px; margin-top:18px; }
.fxbox:empty { display:none; }
.fxrow { display:flex; gap:12px; align-items:baseline; flex-wrap:wrap; margin:4px 0; }
.fxrow.warn { color:#8a5a00; }
.fxlbl { min-width:110px; color:var(--muted); font-weight:600; }
.fxcmp { font-weight:600; margin-inline-start:6px; }
.fxfill { margin-top:10px; }
.conv { color:var(--muted); font-size:.85rem; font-weight:400; white-space:nowrap; }
[hidden] { display:none !important; }
