/* KhatePe — look & feel (loaded last, so it wins over the older styles)
   "Ivory emerald": warm ivory paper, deep emerald brand, one brass accent, hairline borders, Fraunces for figures and headings,
   Plus Jakarta Sans for everything else. Money in = green, money out = red (--credit / --debit). */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url(../assets/fonts/jakarta-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url(../assets/fonts/jakarta-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:400 700;font-display:swap;src:url(../assets/fonts/fraunces-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:400 700;font-display:swap;src:url(../assets/fonts/fraunces-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
/* 4 more font pairings, self-hosted the same way (Settings → Appearance → Font). Each has one heading
   weight (matches how Fraunces is actually used — h2/h3 are always 600) and two body weights (400 regular,
   600 for buttons/bold text). Latin + latin-ext only, same as Fraunces/Jakarta above — no Devanagari glyphs,
   same limitation the app already has today. */
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/poppins600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/poppins600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Nunito';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/nunito400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Nunito';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/nunito400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Nunito';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/nunito600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Nunito';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/nunito600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Sora';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/sora600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Sora';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/sora600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/manrope400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/manrope400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/manrope600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/manrope600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Lora';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/lora600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Lora';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/lora600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Karla';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/karla400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Karla';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/karla400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Karla';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/karla600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Karla';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/karla600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/outfit600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/outfit600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/worksans400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/worksans400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/worksans600-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/worksans600-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
  --bg:#faf8f4;--card:#ffffff;--ink:#16181d;--muted:#706b5f;--line:#e9e4da;
  --green:#0f5c4a;--greenSoft:#e8f1ec;            /* brand emerald (old variable names kept so every screen follows) */
  --red:#b5473c;--redSoft:#f8e9e6;--amber:#9a7420;--blue:#2f5f8a;
  --credit:#1b7d56;--creditSoft:#e6f3ec;--debit:#b5473c;--debitSoft:#f8e9e6;
  --brass:#b8912f;--brand-gold:#0f5c4a;--brand-black:#0c1f1a;
  --gt:var(--green);                                /* the brand colour when it is used as TEXT: the same as --green, except in Indigo where plain indigo is too dark to read on the dark background */
  --radius:14px;--serif:'Fraunces',Georgia,'Times New Roman',serif;
  --body:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  font-family:var(--body);font-size:14.5px;color-scheme:light}
/* font pairing (independent of colour theme — Settings → Appearance → Font), same 5-swatch-picker pattern
   as data-theme above. 'jakarta' (Fraunces + Plus Jakarta Sans) is the default and has no attribute block —
   it's just :root's own font-family/--serif above. */
:root[data-font=poppins]{--serif:'Poppins',system-ui,sans-serif;--body:'Nunito',system-ui,sans-serif}
:root[data-font=sora]{--serif:'Sora',system-ui,sans-serif;--body:'Manrope',system-ui,sans-serif}
:root[data-font=lora]{--serif:'Lora',Georgia,serif;--body:'Karla',system-ui,sans-serif}
:root[data-font=outfit]{--serif:'Outfit',system-ui,sans-serif;--body:'Work Sans',system-ui,sans-serif}
/* "dark" is now the Midnight Indigo theme (5-theme picker, Settings → Appearance) — brand accent (--green,
   used for buttons/highlights, not money) moved from teal to indigo; --credit/--debit (money in/out) are
   untouched so green-in/red-out stays true in every theme regardless of the brand accent colour. */
:root[data-theme=dark]{
  --bg:#181425;--card:#231e3d;--ink:#f2f1f7;--muted:#8f8ea3;--line:#332c55;
  --green:#534ab7;--greenSoft:#26215c;--red:#ee8a7e;--redSoft:#2c1a18;--amber:#d4b15f;--blue:#8db8e0;
  --credit:#5fd0a0;--creditSoft:#12261e;--debit:#ee8a7e;--debitSoft:#2c1a18;
  --brass:#a79cf0;--brand-gold:#534ab7;--brand-black:#0c0a17;--gt:#a79cf0;color-scheme:dark}
:root[data-theme=terracotta]{
  --bg:#fbf0e4;--card:#ffffff;--ink:#3a2a1f;--muted:#6f6254;--line:#ecdfd0;
  --green:#a8472a;--greenSoft:#f5e2d6;--red:#a93f35;--redSoft:#f8e5df;--amber:#9a6b18;--blue:#2f5f8a;
  --credit:#5c7a3f;--creditSoft:#e6efdb;--debit:#a93f35;--debitSoft:#f8e5df;
  --brass:#c15a35;--brand-gold:#c15a35;--brand-black:#3a2a1f;color-scheme:light}
:root[data-theme=mono]{
  --bg:#ffffff;--card:#fafafa;--ink:#111111;--muted:#6b6b6b;--line:#e5e5e5;
  --green:#111111;--greenSoft:#f0f0f0;--red:#c23635;--redSoft:#fcebeb;--amber:#9a7420;--blue:#2f5f8a;
  --credit:#137a5a;--creditSoft:#e1f5ee;--debit:#c23635;--debitSoft:#fcebeb;
  --brass:#111111;--brand-gold:#111111;--brand-black:#000000;color-scheme:light}
:root[data-theme=gold]{
  --bg:#fffaf0;--card:#ffffff;--ink:#4a3b12;--muted:#786838;--line:#f0e6cc;
  --green:#7d5f18;--greenSoft:#faf0d7;--red:#a9432f;--redSoft:#fbe4de;--amber:#8a6a1f;--blue:#2f5f8a;
  --credit:#5c7a3f;--creditSoft:#eef3de;--debit:#a9432f;--debitSoft:#fbe4de;
  --brass:#b8912f;--brand-gold:#8a6a1f;--brand-black:#4a3b12;color-scheme:light}
body{font-family:inherit;line-height:1.5;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font-family:inherit}
h2,h3,.dlghead h2,.authcard h1{font-family:var(--serif);font-weight:600;letter-spacing:-.01em}
h2{font-size:24px}
.num,td.num,.stat b,.spamt,.spgbal{font-variant-numeric:tabular-nums lining-nums}
/* ---- surfaces: flat paper, hairline borders, almost no shadow ---- */
.card,.stat,.spgroup,.authcard,.spmonhead{border-radius:var(--radius);border:1px solid var(--line);box-shadow:none;background:var(--card)}
.stat{padding:18px 20px}
.stat small{font-weight:600;letter-spacing:1px;color:var(--muted);font-size:10.5px}
.stat b{font-family:var(--serif);font-size:26px;font-weight:600;letter-spacing:-.02em}
header.top{background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(10px);backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--line);box-shadow:none}
th{font-weight:600;letter-spacing:.9px;color:var(--muted);background:transparent;font-size:10.5px}
td,th{padding:13px 14px}
td{border-bottom:1px solid var(--line)}
@media (hover:hover){tbody tr:hover{background:color-mix(in srgb,var(--green) 5%,transparent)}}
.tag{border-radius:999px;font-weight:600;padding:3px 10px}
.pill{border-radius:999px}
/* Settings → Appearance theme picker */
.thpicker{display:flex;flex-wrap:wrap;gap:8px}
.thsw{display:flex;align-items:center;gap:7px;border-radius:12px;border:1px solid var(--line);padding:8px 12px;background:var(--card);font-weight:600}
.thsw.on{border-color:var(--green);background:var(--greenSoft);color:var(--gt)}
.thdot{width:14px;height:14px;border-radius:50%;flex:0 0 auto;display:inline-block;border:1px solid rgba(0,0,0,.08)}
dialog{border-radius:20px;border:1px solid var(--line);box-shadow:0 30px 80px rgba(12,31,26,.25);background:var(--card);color:var(--ink)}
dialog::backdrop{background:rgba(12,31,26,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
/* ---- controls ---- */
input,select,textarea{border-radius:12px;border-color:var(--line);padding:11px 14px;background:var(--card)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 16%,transparent)}
.btn{border-radius:12px;border-color:var(--line);font-weight:600;padding:9px 16px;background:var(--card);transition:background .12s,border-color .12s}
@media (hover:hover){.btn:hover{border-color:var(--green);background:var(--greenSoft)}}
.btn.primary{background:var(--green);border-color:var(--green);color:#fbf8f1;box-shadow:none}
@media (hover:hover){.btn.primary:hover{background:color-mix(in srgb,var(--green) 88%,#000);border-color:color-mix(in srgb,var(--green) 88%,#000)}}
:root[data-theme=dark] .btn.primary{color:#fff}
:root[data-theme=dark] .cashbtn.in,:root[data-theme=dark] .cashbtn.out{color:#06140e}
.btn.danger{color:var(--debit)}
@media (hover:hover){.btn.danger:hover{background:var(--debitSoft);border-color:var(--debit)}}
.seg button.on,.seg2 button.on{border-color:var(--green);background:var(--greenSoft);color:var(--gt);font-weight:700}
.cbar .track i,.track i:not(.red){background:var(--green)}
input[type=checkbox],input[type=radio]{accent-color:var(--green)}
a{color:var(--gt)}
/* ---- sidebar: deep emerald, ivory text, one brass line for the active page ---- */
.sidebar{background:var(--brand-black);border-right:0;color:#d6dcd3}
.sidebar-brand{background:transparent;border-bottom:1px solid rgba(255,255,255,.07);padding:20px 18px 16px}
.pbbrand{display:flex;align-items:center;gap:11px}
.pbbrand img{width:34px;height:34px;border-radius:9px;background:#fff}
.pbbrand b{color:#f5efe0;font-family:var(--serif);font-size:19px;font-weight:600;letter-spacing:-.01em}
.brand-caption{color:#a9bdb3;letter-spacing:1.8px;font-weight:600;font-size:9px}
.nav-label{color:#9bb0a6;font-weight:600;letter-spacing:1.6px}
.sidebar nav button{color:#d6dcd3;border-radius:11px;font-weight:500;gap:12px}
@media (hover:hover){.sidebar nav button:hover{background:rgba(255,255,255,.05)}}
.sidebar nav button.on{background:rgba(245,239,224,.09);border-color:transparent;color:#fbf6e8;font-weight:600;box-shadow:inset 3px 0 0 var(--brass)}
.nav-icon{width:20px;color:#a9bdb3}
.nav-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.sidebar nav button.on .nav-icon{color:#e2c77e}
.sidebar-footer{border-top:1px solid rgba(255,255,255,.07);color:#a9bdb3}
.sidebar-footer b{color:#f5efe0;font-family:var(--serif);font-weight:600}
.sbsignout{border-color:rgba(255,255,255,.15);color:#e8e3d4;border-radius:11px}
@media (hover:hover){.sbsignout:hover{background:rgba(255,255,255,.07)}}
.hdricon{display:inline-flex;align-items:center;justify-content:center}
.hdricon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
/* ---- sign-in ---- */
#authGate{background:var(--bg)}
.authcard{padding:36px 28px;box-shadow:0 24px 60px rgba(12,31,26,.08)}
.authcard h1{font-size:26px}
.authlogo{width:64px;border-radius:16px}
/* ---- money in / out ---- */
.in,.stat.in b,.spgbal.in,.spamt.in,.pbfriendbal.in b{color:var(--credit)}
.out,.stat.out b,.spgbal.out,.spamt.out,.pbfriendbal.out b{color:var(--debit)}
.pbdot.in,.seg button.on.in{background:var(--creditSoft);color:var(--credit);border-color:var(--credit)}
.pbdot.out,.seg button.on.out{background:var(--debitSoft);color:var(--debit);border-color:var(--debit)}
.spav{border-radius:14px;background:var(--greenSoft);color:var(--gt);font-family:var(--serif);font-weight:600}
.spmonhead{padding:15px 18px}
@media(max-width:600px){:root{font-size:14px}h2{font-size:21px}.stat b{font-size:22px}}
@media print{:root,:root[data-theme=dark]{--green:#1f2937;--greenSoft:#fff;--credit:#15803d;--debit:#b91c1c}.card,.stat{box-shadow:none}}
.btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px}
.ib{display:inline-flex;align-items:center;justify-content:center;border-radius:9px;color:var(--muted);padding:7px}.ib svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}@media (hover:hover){.ib:hover{color:var(--gt);background:var(--greenSoft);border-color:var(--line)}}@media (hover:hover){.ib.del:hover{color:var(--debit);background:var(--debitSoft)}}
.clipmark svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-2px;color:var(--muted)}
/* Split list: search, month totals, hints */
.sphint{font-size:12.5px;color:var(--muted);margin:2px 2px 14px;line-height:1.5}
.sphint b{color:var(--ink);font-weight:600}
.spmorewrap{padding:14px 0 0;text-align:center}
.spquick{display:flex;gap:8px;margin:0 0 8px}
/* Split: foreign money, personal tag, compact members */
.linkbtn{background:none;border:0;padding:6px 0 0;color:var(--gt);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}
.spfx{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
.tag.pers{background:var(--bg);color:var(--muted);border:1px solid var(--line);font-size:10.5px;padding:1px 7px;vertical-align:2px}
.spmember{display:block!important;border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:8px;background:var(--bg)}
.spmtop{display:flex;gap:8px;align-items:center}
.spmtop input{flex:1}
.spmmore{margin-top:6px}
.spmmore summary{cursor:pointer;font-size:12px;color:var(--muted);padding:2px 0}
.spmgrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:8px}
@media(max-width:600px){.spmgrid{grid-template-columns:1fr}}
#spPayers{display:grid;grid-template-columns:1fr 1fr;column-gap:14px}
#spPayers .sprowin{flex-wrap:wrap;gap:4px}
#spPayers .spinwrap{flex:1 0 100%}
#spPayers .spsum{grid-column:1/-1}
/* phone: payers and "who shared it" in two columns, tighter rows */
#spPayers .sprowin{padding:5px 0;border-bottom:0;font-size:13px}
#spPayers .spinwrap input{padding:6px 8px}
/* Add expense → Split: one person per row — face, name, their share right under the name (it used to be hidden in
   "Equally"), and a big tick box / number box on the right */
#spRows .spquick{flex-wrap:wrap}
#spRows .sprowin.spwho{padding:9px 0;border-bottom:1px solid var(--line);gap:10px;font-size:14px}
#spRows .sprowin.spwho:last-child{border-bottom:0}
.spwleft{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.spwtxt{display:flex;flex-direction:column;min-width:0}
.spwtxt b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.spwtxt .spshare{flex:none;text-align:left;font-size:13.5px;font-weight:700;color:var(--ink);margin-top:1px;min-height:1.2em}
.spwtxt .spshare.zero{color:var(--muted);font-weight:500}
.spav.mini2{flex:0 0 32px;width:32px;height:32px;font-size:13px}
#spRows .sprowin input[type=checkbox]{width:24px;height:24px;flex:0 0 24px}
.spquick .btn{padding:5px 10px;font-size:12px}
/* Loans / Groups rows: the payer's face instead of the arrow and date badge; who shared it as small faces under the amount */
.sprow .rowav{flex:0 0 36px;width:36px;height:36px;font-size:15px}
img.spav,img.meav{display:block;object-fit:cover;padding:0}
.spphoto{background:var(--greenSoft)}
.spstack{display:flex;justify-content:flex-end;margin-top:4px}
.spav.mini{flex:none;width:20px;height:20px;font-size:10px;font-family:inherit;border:1.5px solid var(--card);margin-left:-6px;box-sizing:content-box}
.spstack .spav.mini:first-child{margin-left:0}
.spav.mini.more{width:auto;min-width:18px;padding:0 3px;border-radius:10px;background:var(--line);color:var(--muted);font-size:9px}
/* the signed-in person's face: sidebar footer and Home */
.meav{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:50%;background:var(--greenSoft);color:var(--gt);font-weight:700;font-size:14px}
.meav.big{flex-basis:40px;width:40px;height:40px;font-size:17px}
.sbme{display:flex;align-items:center;gap:10px;min-width:0}
h1.hello{display:flex;align-items:center;gap:10px}
/* Personal / Loans / Groups: the totals, search and Filters stay at the top while the entries scroll */
.stickytools{position:sticky;top:calc(var(--hdrh,0px) + var(--sphh,0px));z-index:15;background:var(--bg);padding:6px 0 2px;margin-top:-6px}
.stickytools .stats{margin-bottom:8px}
.stickytools .filters2{margin-bottom:6px}
/* New / Edit group: the Add a member box at the top of Members */
.spaddmem{display:flex;gap:8px;margin:2px 0 4px}
.spaddmem input{flex:1;min-width:0;padding:9px 12px}
.spaddmem .btn{flex:none}
.spaddnote{font-size:12px;min-height:1.1em;margin:0 2px 6px}
/* a Loans / Groups entry whose shares do not add up */
.tag.spwarn{background:var(--debitSoft);color:var(--debit);border:1px solid var(--debit);font-size:10.5px;padding:1px 7px;vertical-align:2px}
/* Cash tracker */
.cashall{margin:0 2px 10px;font-size:13px;color:var(--muted)}.cashall b{color:var(--ink)}
.cashnew{margin:0 0 12px}
.cashbar2{display:flex;align-items:center;gap:8px;margin:12px 0}
.cashbar2 .btn{flex:none}
.cashname{flex:1;min-width:0;font-weight:700;font-size:17px;border:1px solid transparent;background:transparent;padding:6px 8px}
@media (hover:hover){.cashname:hover{border-color:var(--line)}}
.cashtot{text-align:center;padding:16px}
.cashtot small{display:block;color:var(--muted);font-size:12px}
.cashtot>b{display:block;font-family:var(--serif);font-size:30px;margin:2px 0 10px;font-variant-numeric:tabular-nums}
.cashexp{display:flex;align-items:center;justify-content:center;gap:8px;border-top:1px solid var(--line);padding-top:10px;font-size:13px;color:var(--muted)}
.cashexp input{width:130px;text-align:center;padding:8px 10px}
.cashdiff{margin:8px 0 0;font-weight:700;min-height:1.2em}
.cashextra{color:var(--brass)}
.cashsec{padding:8px 14px;margin-bottom:10px}
.cashhead{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:6px 0;font:inherit;color:inherit;text-align:left;cursor:pointer}
.cashhead b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cashhead .dim{font-size:12.5px;white-space:nowrap}
.cashhead .chev{width:12px;color:var(--muted);font-size:11px;flex:none}
.cashrate{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);padding:6px 0}
.cashrate input{width:110px;text-align:center;padding:7px 10px}
.cashline{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.cashden{flex:0 0 76px;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis}
.cashcount{width:92px;flex:none;text-align:center;padding:8px 10px}
.cashsub{flex:1;min-width:0;text-align:right;font-size:15px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.cashadd input{flex:1;min-width:0;padding:8px 10px}
.cashrm{color:var(--debit);margin:6px 0 4px;font-size:12.5px}
.cashaddcur{width:100%;margin:2px 0 10px}
.cashrow .spav{background:var(--greenSoft)}
/* Settings → Categories: press and hold, then drag */
.catchip{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.catchip.dragging{border-color:var(--green);background:var(--greenSoft);box-shadow:0 6px 16px #0003;transform:scale(1.06);position:relative;z-index:2}
.pbcatbox.sorting .catchip:not(.dragging){opacity:.75}
/* Split: member page, access, share, emoji */
.spmemstats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.spmemstats div{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--bg)}
.spmemstats small{display:block;font-size:11px;color:var(--muted)}
.spmemstats b{font-family:var(--serif);font-size:18px;font-variant-numeric:tabular-nums}
.spmemstats .tot{grid-column:1/-1}
.spcheck{display:flex;gap:10px;align-items:flex-start;padding:10px 0;cursor:pointer;font-size:14px}
.spcheck input{width:20px;height:20px;flex:0 0 20px;margin-top:1px}
.spswitch span{display:flex;flex-direction:column}
.spw{font-style:normal;font-size:11px;color:var(--muted)}
.spaccess select{width:auto;padding:6px 8px;font-size:12.5px}
.spaccess .sprow{flex-wrap:wrap;gap:8px}
.spaccess .spbtns{display:flex;gap:6px;flex-wrap:wrap}
.spqr{text-align:center;padding:10px 0}
.spqr img{width:220px;height:220px;image-rendering:pixelated;border-radius:12px;border:1px solid var(--line);background:#fff;padding:8px;display:block;margin:0 auto 8px}
#spWaText{font-size:13px;line-height:1.5;font-family:inherit}
.pbemo{border:0;background:none;padding:0 4px 0 0;font-size:15px;cursor:pointer}
.pbemoin{flex:0 0 52px!important;min-width:0!important;text-align:center;font-size:18px}
.spmemstats{grid-template-columns:repeat(3,1fr)}
.spmemstats b{font-size:16px}
.spcheck{flex-wrap:wrap}
.spcheck small{flex-basis:100%;padding-left:30px;margin-top:-4px}
.spconv{border:1px dashed var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
/* Split home: friends, groups and total */
button.spstat{text-align:left;font:inherit;color:inherit;cursor:pointer;width:100%}
.spstat b{display:block}
.spstat.in b{color:var(--credit)}.spstat.out b{color:var(--debit)}
.spstat.on{border-color:var(--green);box-shadow:inset 0 0 0 1px var(--green)}
.spstatsub{display:block;font-size:11px;color:var(--muted);margin-top:4px;line-height:1.3}
@media(max-width:600px){.spstatsub{font-size:9.5px}}

/* ---- Cashbook: By month / All ---- */
.pbstep{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 8px;container-type:inline-size}
@container (max-width:15.5em){.pbstep .pbperall{flex:1 0 100%}}   /* em follows the phone's font size: only a big font on a narrow phone puts All on its own row */
.pbarrow{flex:0 0 42px;height:42px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--gt);font:inherit;font-size:30px;font-weight:700;line-height:1;padding:0 0 4px;cursor:pointer}
.pbarrow:disabled{opacity:.3;cursor:default}
.pbmonth{flex:1;min-width:0;min-height:42px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:700;font-size:16px;line-height:1.2;padding:4px 8px;cursor:pointer}
.pbmonth small{font-weight:400;color:var(--muted)}
.pos{color:var(--credit)}.neg{color:var(--debit)}
.pbmrow{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:14px;padding:11px 14px;margin-bottom:8px;text-align:left;font:inherit;cursor:pointer}
.pbmrow.on{border-color:var(--green);background:var(--greenSoft)}
.pbmrow small{display:block;color:var(--muted);font-size:12px}
.pbmbal{text-align:right}
@media(max-width:360px){.pbmonth{font-size:14.5px}.pbmonth small{display:none}.pbbal b{font-size:19px}}
/* Cashbook v2: balance card, quick period choices, Spending breakdown */
.pbbal{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);background:var(--greenSoft);border-radius:16px;padding:12px 16px;margin:0 0 8px}
.pbbal span{font-weight:600;color:var(--ink)}
.pbbal b{font-size:22px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.pbquick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.pbq{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer}
.pbq.on{border-color:var(--green);background:var(--greenSoft);color:var(--gt)}
.pbhead{justify-content:space-between!important;align-items:center;margin:10px 0 6px!important}
.pbbreak{border:1px solid var(--line);background:var(--card);color:var(--gt);border-radius:999px;padding:7px 14px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.pbperall{flex:0 0 auto;min-width:46px;height:42px;padding:0 14px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
.pbperall.on{border-color:var(--green);background:var(--greenSoft);color:var(--gt)}
.pbhandle{display:flex;justify-content:center;margin:-2px 0 2px}
.pbhandle button{border:1px solid var(--line);background:var(--card);color:var(--gt);border-radius:999px;padding:6px 14px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.pbhandle button span{font-size:9px;margin-right:2px}
.pbslim{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:var(--greenSoft);color:var(--ink);border-radius:14px;padding:9px 14px;margin:0 0 8px;font:inherit;font-weight:600;cursor:pointer;text-align:left}
.pbslim b{font-size:17px;font-variant-numeric:tabular-nums}
.pbshow{color:var(--gt);font-size:12.5px;white-space:nowrap}
.pbbalfold{display:none;font-size:10px!important;padding:0;overflow:hidden;border:0;background:var(--card);color:var(--gt);width:28px;height:28px;border-radius:50%;font:inherit;font-weight:700;cursor:pointer;flex:none}
@media(max-width:360px){.pbhandle{display:none}.pbbalfold{display:inline-block}.pbbal{gap:8px}}

/* ==================== words stay whole — big phone font, small phone (13 Oct 2026) ====================
   overflow-wrap:anywhere let a squeezed column break "Rent" into "Ren / t" and "₹48,00,360" into "₹48,00,36 / 0" (even at normal size on a 390 px phone).
   break-word keeps each word whole and breaks only a word longer than its whole box; where a word does not fit, the row WRAPS instead:
   the amount moves under the text, the cards go two / one per row. The em sizes follow the phone's font size. tests/layout.cjs checks it. */
@media screen{
  .dlghead h2{overflow-wrap:break-word;word-break:normal;min-width:auto;max-width:100%}
  .spgmain,.spmain,.htxt,.impcol>span,.barrow>span,.spmonhead>span,.spgbal small,.sprow .spmain small,
  .pbbook .spgmain b,.pbbook .spgmain small,.hometile .hstats>span,.stat small,.stat .spstatsub,.sphead h2,#balChip,.cashsub{overflow-wrap:break-word;word-break:normal}
  /* an amount is never split, not even after its minus sign */
  .stat b,.hometile .hstats strong,.spgbal,.spamt{white-space:nowrap;overflow-wrap:normal}
  .spgbal small,.spamt small{white-space:normal}
  /* summary cards: as many per row as their amounts allow, then two, then one — all the same width on a row */
  .stats,.sp-stats,.pb-stats{display:flex!important;flex-wrap:wrap}
  .stats>.stat{flex:1 1 0;min-width:auto;max-width:100%}
  /* entry rows: the amount moves under the text when the text would get less than ~5 letters' room */
  .sprow{flex-wrap:wrap;row-gap:4px}
  .sprow .spmain{flex:1 1 5em}
  .sprow .spamt{flex:0 0 auto;margin-left:auto;min-width:auto}
  /* book rows and group rows: the balance moves under the name the same way */
  .pbbookopen{flex-wrap:wrap;row-gap:4px}
  .pbbookopen .spgmain,.spgopen .spgmain{flex:1 1 7em}
  .pbbook .spgbal,.spgbal{flex:0 0 auto;margin-left:auto;max-width:100%;min-width:auto}
  /* Home tiles: "Spent this month" and "Income" side by side while both amounts fit, else one under the other */
  .hometile .hstats>span{flex:1 1 110px;min-width:auto}
  /* bar rows (Reports, group Summary): name and amount side by side while both fit, else the amount under the name; the bar stays full width */
  .barrow{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px}
  .barrow>span:first-child{flex:1 1 7em;min-width:0}
  .barrow .num{margin-left:auto;text-align:right;white-space:nowrap}
  .barrow .num:has(>span){white-space:normal}.barrow .num>span{white-space:nowrap}   /* "+₹… −₹…": may go on two lines, each amount whole */
  .barrow .track{flex:1 1 100%}
  .sphead h2{min-width:auto;max-width:100%}
  /* book title: keeps its words whole; a long one goes onto its own line under ← Books */
  .bookname{overflow-wrap:break-word;word-break:normal;min-width:auto;max-width:100%}
  .bookbar .btn.sm{margin-left:auto}
  /* Filters: with a big font on a narrow phone the left list becomes a row of tabs on top, so the choices get the full width */
  .fdlgbody{flex-wrap:wrap;align-content:flex-start;container-type:inline-size;overflow-y:auto}
  .fradio .flabel,.fcrow .flabel{min-width:auto}
  @container (max-width:21em){
    .fdlgbody .frail{width:100%;display:flex;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--line)}
    .fdlgbody .frailitem{width:auto;flex:none;white-space:nowrap;border-bottom:0}
    .fdlgbody .frailitem.on{border-left:0;padding-left:10px;box-shadow:inset 0 -3px var(--green)}
    .fdlgbody .fpane{flex:1 1 100%;overflow-y:visible}
  }
}
