:root{
  --ink:#1f241f; --ink-mute:#6a766b; --paper:#ffffff; --paper-2:#eef1ec; --card:#ffffff;
  --rule:#d8d3c4; --rule-soft:#e7e3d6; --forest:#4a6741; --forest-soft:rgba(74,103,65,.10);
  --gold:#c89d4f; --crimson:#a33c3c; --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box;}
body{margin:0;font-family:'Inter',system-ui,Arial,sans-serif;background:var(--paper);color:var(--ink);font-size:15px;line-height:1.45;}
h1,h2,h3{font-family:'Fraunces',Georgia,serif;font-weight:600;}
a{color:var(--forest);text-decoration:none;}
a:hover{text-decoration:underline;}
.muted{color:var(--ink-mute);}
.mono{font-family:var(--mono);font-size:13px;}
.right{text-align:right;}
.center{text-align:center;}

/* top bar */
.topbar{display:flex;align-items:center;justify-content:space-between;background:#23291f;color:#f5f3ec;padding:11px 22px;}
.topbar .brand{font-family:'Fraunces',serif;font-size:19px;color:#f5f3ec;}
.topbar .brand em{color:var(--gold);font-style:italic;}
.topbar .brand span{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:rgba(245,243,236,.6);margin-left:6px;}
.topbar nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap;row-gap:6px;}
.topbar nav a{color:rgba(245,243,236,.85);font-size:14px;}
.topbar .who{font-size:13px;color:rgba(245,243,236,.55);}
.topbar .logout{color:var(--gold);}

.wrap{max-width:1380px;margin:22px auto;padding:0 26px;}
.auth-wrap{min-height:88vh;display:flex;align-items:center;justify-content:center;padding:20px;}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--rule);background:var(--card);color:var(--ink);padding:8px 15px;border-radius:7px;font-size:14px;cursor:pointer;font-family:inherit;}
.btn:hover{text-decoration:none;border-color:var(--forest);}
.btn.primary{background:var(--forest);border-color:var(--forest);color:#fff;}
.btn.ghost{background:transparent;}
.btn.danger{background:#fff;border-color:var(--crimson);color:var(--crimson);}
.btn.small{padding:5px 11px;font-size:13px;}

/* page head */
.page-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap;}
.page-head h1{font-size:27px;margin:0;}

/* flashes */
.flashes{margin-bottom:16px;}
.flash{padding:10px 14px;border-radius:7px;margin-bottom:8px;font-size:14px;}
.flash.success{background:var(--forest-soft);border:1px solid var(--forest);}
.flash.error{background:#f7e4e1;border:1px solid var(--crimson);color:#7a2a2a;}
.flash.warning{background:#f8f0db;border:1px solid var(--gold);}

/* auth card */
.auth-card{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:30px 32px;width:100%;max-width:380px;box-shadow:0 6px 30px rgba(0,0,0,.06);}
.auth-card h1{margin:0 0 2px;font-size:24px;}
.auth-card h1 em{color:var(--gold);font-style:italic;}
.auth-card .sub{margin:0 0 20px;color:var(--ink-mute);font-size:13px;letter-spacing:.1em;text-transform:uppercase;}
.auth-card label{display:block;font-size:13px;color:var(--ink-mute);margin-bottom:12px;}
.auth-card .check{display:flex;align-items:center;gap:8px;}
.auth-card input{width:100%;}
.auth-card input[type=checkbox]{width:auto;}
.auth-card .alt{margin-top:16px;font-size:13px;text-align:center;}
.auth-card .hint{color:var(--ink-mute);font-weight:400;}

/* inputs */
input,select,textarea{font-family:inherit;font-size:14px;padding:8px 11px;border:1px solid var(--rule);border-radius:6px;background:#fff;color:var(--ink);}
input:focus,select:focus,textarea:focus{outline:2px solid var(--forest-soft);border-color:var(--forest);}
.auth-card input{margin-top:4px;}

/* search */
.search{display:flex;gap:8px;margin-bottom:18px;}
.search input{flex:1;}

/* cards & forms */
.card{background:var(--card);border:1px solid var(--rule);border-radius:11px;padding:22px 24px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;}
.form-grid label{display:flex;flex-direction:column;font-size:13px;color:var(--ink-mute);gap:5px;}
.form-grid .span2{grid-column:1/-1;}
.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}

/* tables */
table.grid{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--rule);border-radius:10px;overflow:hidden;margin-top:8px;}
table.grid th,table.grid td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--rule-soft);font-size:14px;}
table.grid thead th{background:var(--paper-2);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-mute);}
table.grid tfoot th{background:var(--paper-2);font-size:14px;}
table.grid tr:last-child td{border-bottom:none;}
.x{background:none;border:none;color:var(--crimson);cursor:pointer;font-size:14px;padding:2px 6px;}

/* business detail nav */
.biz-nav{display:flex;align-items:center;gap:16px;margin-bottom:16px;}
.biz-nav-mid{flex:1;text-align:center;}
.biz-nav-mid h1{margin:0;font-size:26px;}
.biz-sub{font-size:13px;color:var(--ink-mute);margin-top:2px;}
.navarrow{font-size:26px;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border:1px solid var(--rule);border-radius:50%;background:var(--card);color:var(--forest);text-decoration:none;flex-shrink:0;}
.navarrow:hover{background:var(--forest);color:#fff;text-decoration:none;}
.navarrow.disabled{opacity:.3;pointer-events:none;}
.biz-actions{display:flex;align-items:center;gap:8px;margin-bottom:18px;flex-wrap:wrap;}

/* summary cards */
.summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px;}
.sumcard{background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:14px 18px;display:flex;flex-direction:column;gap:3px;}
.sumcard span{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-mute);}
.sumcard strong{font-size:22px;font-family:'Fraunces',serif;}
.sumcard.income strong{color:var(--forest);}
.sumcard.expense strong{color:#b5683a;}
.sumcard.net.pos strong{color:var(--forest);}
.sumcard.net.neg strong{color:var(--crimson);}

/* tabs */
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--rule);margin-bottom:14px;}
.tabs a{padding:10px 17px;font-size:15.5px;color:var(--ink);opacity:.62;font-weight:600;border-bottom:3px solid transparent;margin-bottom:-2px;letter-spacing:.1px;}
.tabs a.on{color:var(--forest);opacity:1;border-bottom-color:var(--forest);font-weight:800;}
.tabs a:hover{text-decoration:none;color:var(--forest);opacity:1;}

/* entry add row */
.entry-row{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center;}
.entry-row input,.entry-row select{padding:7px 10px;}
.entry-row input[type=text]{flex:1;min-width:120px;}
.entry-row .amt{max-width:120px;text-align:right;}

/* pills */
.pill{font-size:11px;padding:2px 9px;border-radius:20px;text-transform:capitalize;}
.pill.asset{background:var(--forest-soft);color:var(--forest);}
.pill.liability{background:#f7e4e1;color:var(--crimson);}
.pill.equity{background:#f8f0db;color:#8a6a25;}

/* reports */
.report-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.yearform{display:flex;gap:6px;align-items:center;}
.yearform input{width:90px;}
.report .rep-biz{margin:0;font-size:22px;}
.report .rep-period{margin-bottom:8px;}
.report h3{font-size:15px;border-bottom:1px solid var(--rule);padding-bottom:4px;margin:18px 0 4px;}
table.rep{width:100%;border-collapse:collapse;font-size:14px;}
table.rep td{padding:4px 2px;}
table.rep .subtotal td{border-top:1px solid var(--ink-mute);font-weight:600;padding-top:6px;}
table.rep.nettable{margin-top:14px;}
table.rep .grand td{border-top:2px solid var(--ink);border-bottom:3px double var(--ink);font-weight:700;font-size:16px;padding:8px 2px;}
table.rep .grand.pos td{color:var(--forest);}
table.rep .grand.neg td{color:var(--crimson);}

.empty{text-align:center;padding:40px 20px;background:var(--card);border:1px dashed var(--rule);border-radius:11px;}
.empty p{color:var(--ink-mute);margin-bottom:16px;}

@media (max-width:680px){
  .form-grid{grid-template-columns:1fr;}
  .summary{grid-template-columns:1fr;}
}

/* ===== client hierarchy additions ===== */
.crumb{font-size:13px;color:var(--ink-mute);margin-bottom:10px;}
.crumb a{color:var(--ink-mute);}
.crumb span{color:var(--ink);}
.client-meta{display:flex;flex-wrap:wrap;gap:18px 34px;margin-bottom:22px;}
.client-meta>div{display:flex;flex-direction:column;gap:2px;}
.client-meta span{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-mute);}
.client-meta strong{font-size:15px;font-weight:600;}
.client-meta .full{flex-basis:100%;}
.section-h{font-size:18px;margin:6px 0 12px;}
.biz-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;}
.biz-card{display:block;background:var(--card);border:1px solid var(--rule);border-radius:11px;padding:16px 18px;position:relative;transition:border-color .12s;}
.biz-card.cmpl-ok{border-left:4px solid #2e7d32;}
.biz-card.cmpl-bad{border-left:4px solid #c0392b;}
.biz-card-flag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px;}
.biz-card.cmpl-ok .biz-card-flag{color:#2e7d32;}
.biz-card.cmpl-bad .biz-card-flag{color:#c0392b;}
.biz-card:hover{border-color:var(--forest);text-decoration:none;}
.biz-card-name{font-family:'Fraunces',serif;font-weight:600;font-size:17px;color:var(--ink);margin-bottom:3px;}
.biz-card-sub{font-size:12px;color:var(--ink-mute);}
.biz-card-loc{font-size:12px;color:var(--ink-mute);margin-top:2px;}
.biz-card-go{display:inline-block;margin-top:10px;font-size:13px;color:var(--forest);}

.summary.four{grid-template-columns:repeat(4,1fr);}
.tabs.scroll{overflow-x:auto;white-space:nowrap;}
.tabs.scroll a{display:inline-block;}

.statussel{font-size:12px;padding:3px 6px;border-radius:5px;border:1px solid var(--rule);}
.statussel.paid{background:var(--forest-soft);border-color:var(--forest);color:var(--forest);}
.statussel.sent{background:#f8f0db;border-color:var(--gold);color:#8a6a25;}
.statussel.draft{background:var(--paper-2);}

.note-add{display:flex;gap:8px;align-items:flex-start;margin-bottom:14px;}
.note-add textarea{flex:1;}
.timeline{display:flex;flex-direction:column;gap:10px;}
.tl-item{background:var(--card);border:1px solid var(--rule);border-radius:9px;padding:12px 14px;position:relative;}
.tl-time{font-size:11px;color:var(--ink-mute);margin-bottom:4px;}
.tl-body{font-size:14px;white-space:pre-wrap;}
.tl-item form{position:absolute;top:8px;right:8px;}

.report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;}
.report-card h3{margin:0 0 6px;font-size:18px;}
.rep-quick{display:flex;justify-content:space-between;align-items:baseline;margin:12px 0;padding:10px 12px;background:var(--paper-2);border-radius:7px;}
.rep-quick span{font-size:12px;color:var(--ink-mute);}
.rep-quick strong{font-size:18px;font-family:'Fraunces',serif;}
.rep-quick strong.pos{color:var(--forest);}
.rep-quick strong.neg{color:var(--crimson);}
.report-card .form-actions{justify-content:flex-start;}

@media (max-width:760px){ .summary.four{grid-template-columns:1fr 1fr;} }

/* subtabs (Accounting / Payroll) */
.subtabs{display:flex;gap:6px;margin-bottom:12px;}
.subtab{padding:5px 13px;font-size:13px;border:1px solid var(--rule);border-radius:20px;color:var(--ink-mute);background:var(--card);}
.subtab.on{background:var(--forest);border-color:var(--forest);color:#fff;}
.subtab:hover{text-decoration:none;}
/* CSV import row */
.import-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px;padding:8px 12px;background:var(--paper-2);border:1px dashed var(--rule);border-radius:8px;}
.import-label{font-size:12px;color:var(--ink-mute);font-weight:600;}

/* move-to-client form in business header */
.move-form{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;margin-left:auto;padding:4px 8px;background:var(--paper-2);border:1px solid var(--rule);border-radius:8px;}
.move-form select,.move-form input{font-size:13px;padding:4px 6px;}
.biz-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}

/* ===== Practice Hub ===== */
.hub-grid{display:grid;grid-template-columns:minmax(320px,1fr) minmax(340px,1.3fr);gap:24px;align-items:start;}
@media (max-width:820px){ .hub-grid{grid-template-columns:1fr;} }
.hub-col h2:first-child{margin-top:0;}
.reminder-list{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;}
.reminder{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;background:#f8f0db;border:1px solid var(--gold);border-radius:9px;}
.reminder.overdue{background:#fbeae8;border-color:var(--crimson);}
.task-list{display:flex;flex-direction:column;gap:6px;}
.task{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--card);border:1px solid var(--rule);border-radius:9px;}
.task.pri-high{border-left:3px solid var(--crimson);}
.task.done{opacity:.7;}
.task-main{flex:1;}
.task-title{font-weight:600;font-size:14px;}
.task-actions{display:flex;gap:6px;align-items:center;}
.check{background:none;border:none;font-size:20px;line-height:1;color:var(--forest);cursor:pointer;padding:0;}
.check.on{color:var(--ink-mute);}
.wa{background:#25d366 !important;border-color:#25d366 !important;color:#fff !important;}
.note-list{display:flex;flex-direction:column;gap:8px;}
.pnote{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;background:var(--card);border:1px solid var(--rule);border-radius:9px;}
.pnote.pinned{background:#fffdf5;border-color:var(--gold);}
.pnote-body{font-size:13px;white-space:pre-wrap;}
.pnote-act{display:flex;gap:4px;align-items:flex-start;}

.stat-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:8px;}
.stat{flex:1;min-width:140px;background:var(--card);border:1px solid var(--rule);border-radius:10px;padding:14px 16px;}
.stat span{display:block;font-size:12px;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.05em;}
.stat strong{font-size:24px;}
.tfoot th{border-top:2px solid var(--ink);}

/* ===== Business Overview dashboard ===== */
.contact-bar{display:flex;align-items:center;gap:8px;background:var(--paper-2);border:1px solid var(--rule);border-radius:10px;padding:10px 14px;margin-bottom:14px;flex-wrap:wrap;}
.btn.wa{background:#25d366 !important;border-color:#25d366 !important;color:#fff !important;}
.ov-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start;}
@media (max-width:900px){ .ov-grid{grid-template-columns:1fr;} }
.ov-main{display:flex;flex-direction:column;gap:16px;}
.ov-side{display:flex;flex-direction:column;gap:14px;}
.ov-card{background:var(--card);border:1px solid var(--rule);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.04);}
.ov-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;color:#fff;}
.ov-head h3{margin:0;font-size:16px;}
.ov-head-sub{font-size:12px;opacity:.85;margin-top:2px;}
.ov-head.green{background:linear-gradient(135deg,#2f4a32,#3f6342);}
.ov-head.purple{background:linear-gradient(135deg,#3a335e,#4a4080);}
.ov-head.blue{background:linear-gradient(135deg,#5a2d6e,#7a3d8e);}
.ov-head .btn.ghost{background:rgba(255,255,255,.15) !important;border-color:rgba(255,255,255,.3) !important;color:#fff !important;}
.year-nav{display:flex;align-items:center;gap:10px;font-size:15px;}
.year-nav a{color:#fff;text-decoration:none;font-size:20px;opacity:.8;padding:0 4px;}
.year-nav a:hover{opacity:1;}
.sales-stats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--rule);}
.sales-stats>div{padding:12px 14px;border-right:1px solid var(--rule);}
.sales-stats>div:last-child{border-right:none;}
.sales-stats span{display:block;font-size:11px;color:var(--ink-mute);letter-spacing:.04em;}
.sales-stats strong{font-size:18px;}
.sales-stats .crimson{color:var(--crimson);}
.month-grid{display:grid;grid-template-columns:repeat(6,1fr);}
@media (max-width:700px){ .month-grid{grid-template-columns:repeat(3,1fr);} }
.mcell{padding:10px 12px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);min-height:64px;}
.mname{font-size:11px;font-weight:700;color:var(--ink-mute);letter-spacing:.05em;display:flex;align-items:center;gap:5px;}
.mgross{font-size:14px;font-weight:600;margin-top:3px;}
.mtax{font-size:11px;color:var(--forest);text-decoration:none;}
.mtax-link{background:none;border:none;color:#2563a6;font-size:11px;cursor:pointer;padding:0;text-decoration:underline;}
.mempty{font-size:12px;color:#bbb;margin-top:6px;}
.mcell.filed{background:#eef6ee;}
.mcell.open{background:#fdf6e3;}
.mcell.income{background:#eef3fb;}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;}
.dot.green{background:#3f8a45;}.dot.amber{background:#d4900a;}.dot.blue{background:#2563a6;}
.ov-body{padding:8px 12px;}
.side-card{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:14px;}
.side-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;letter-spacing:.05em;color:var(--ink-mute);margin-bottom:10px;}
.side-head a{font-size:12px;font-weight:500;}
dl.kv{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 12px;}
dl.kv dt{color:var(--ink-mute);font-size:13px;}
dl.kv dd{margin:0;text-align:right;font-weight:600;font-size:13px;}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#3f6342,#2f4a32);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;}

/* ===== Practice Dashboard ===== */
.dash-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px;}
@media (max-width:1000px){ .dash-cards{grid-template-columns:repeat(2,1fr);} }
.dcard{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;background:var(--card);border:1px solid var(--rule);text-decoration:none;color:inherit;box-shadow:0 1px 2px rgba(0,0,0,.04);}
.dcard-ico{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;}
.dcard.blue .dcard-ico{background:#e7f0fb;}.dcard.green .dcard-ico{background:#e9f5ea;}.dcard.amber .dcard-ico{background:#fdf2dc;}.dcard.purple .dcard-ico{background:#efe9f8;}.dcard.red .dcard-ico{background:#fbe9e7;}
.dcard span{display:block;font-size:11px;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.04em;}
.dcard strong{font-size:24px;line-height:1.1;}
.dcard small{color:var(--ink-mute);font-size:11px;}
.dash-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start;}
@media (max-width:1000px){ .dash-grid{grid-template-columns:1fr;} }
.dash-main,.dash-side{display:flex;flex-direction:column;gap:16px;}
.sdot{width:10px;height:10px;border-radius:50%;display:inline-block;}
.sdot.green{background:#3f8a45;}.sdot.yellow{background:#d4900a;}.sdot.red{background:#c0392b;}.sdot.gray{background:#bbb;}
.barchart{display:flex;align-items:flex-end;gap:6px;height:160px;padding:8px 4px;}
.barcol{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;}
.bars{flex:1;display:flex;align-items:flex-end;gap:2px;width:100%;justify-content:center;}
.bar{width:42%;border-radius:3px 3px 0 0;min-height:1px;}
.bar.inc{background:#3f8a45;}.bar.exp{background:#c0654a;}
.barlbl{font-size:10px;color:var(--ink-mute);margin-top:4px;}
.legend{font-size:12px;color:var(--ink-mute);text-align:center;padding:4px;}
.key{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 3px 0 8px;}
.key.inc{background:#3f8a45;}.key.exp{background:#c0654a;}
.alert-list{display:flex;flex-direction:column;}
.alert{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit;}
.alert:last-child{border-bottom:none;}
.alert strong{font-size:14px;}
.acount{margin-left:auto;min-width:26px;text-align:center;padding:2px 8px;border-radius:20px;font-weight:700;font-size:13px;background:#eee;color:#444;}
.acount.red{background:#fbe4e0;color:#c0392b;}.acount.amber{background:#fdf0d5;color:#a8740a;}.acount.purple{background:#efe6f8;color:#6a4caf;}
.mini-stat{display:flex;justify-content:space-between;padding:8px 4px;border-bottom:1px solid var(--rule);}
.mini-stat:last-child{border-bottom:none;}
.mini-stat span{color:var(--ink-mute);font-size:13px;}
.mini-stat strong{font-size:16px;}
.filerow{display:flex;align-items:center;gap:8px;padding:7px 14px;text-decoration:none;color:inherit;font-size:13px;border-bottom:1px solid var(--rule);}
.filerow:last-child{border-bottom:none;}
.mono.pos,.pos{color:#2f6e3a;}.mono.neg,.neg{color:#b0432e;}

/* ===== Month-end checklist ===== */
.checklist{display:flex;flex-direction:column;gap:2px;}
.check-item{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid var(--rule);margin:0;}
.check-item:last-child{border-bottom:none;}
.checkbox{width:24px;height:24px;border-radius:6px;border:2px solid var(--rule);background:#fff;cursor:pointer;font-size:14px;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.checkbox.on{background:var(--forest);border-color:var(--forest);}
.checkbox:disabled{opacity:.6;cursor:not-allowed;}
.check-item span.done{color:var(--ink-mute);text-decoration:line-through;}

/* ===== Dashboard v2 ===== */
.stat-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px;}
@media (max-width:1100px){ .stat-strip{grid-template-columns:repeat(3,1fr);} }
@media (max-width:600px){ .stat-strip{grid-template-columns:repeat(2,1fr);} }
.sstat{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--card);border:1px solid var(--rule);border-radius:11px;text-decoration:none;color:inherit;}
.si{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;}
.si.blue{background:#e7f0fb;}.si.green{background:#e9f5ea;}.si.amber{background:#fdf2dc;}.si.purple{background:#efe9f8;}.si.red{background:#fbe9e7;}.si.teal{background:#e0f2ef;}
.sstat strong{font-size:20px;line-height:1.1;display:block;}
.sstat span{font-size:11px;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.03em;}
.dtabs{display:flex;gap:6px;border-bottom:2px solid var(--rule);margin-bottom:16px;flex-wrap:wrap;}
.dtab{background:none;border:none;padding:10px 16px;font-size:14px;font-weight:600;color:var(--ink-mute);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;}
.dtab.on{color:var(--forest);border-bottom-color:var(--forest);}


/* ===== Overview: maximized, horizontal ===== */
.ov-info-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px;align-items:start;}
@media (max-width:1100px){ .ov-info-row{grid-template-columns:repeat(2,1fr);} }
@media (max-width:620px){ .ov-info-row{grid-template-columns:1fr;} }
.ov-two{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;}
@media (max-width:900px){ .ov-two{grid-template-columns:1fr;} }
.ov-stack{display:flex;flex-direction:column;gap:16px;}
.side-card{background:var(--card);border:1px solid var(--rule);border-radius:11px;padding:14px 16px;box-shadow:0 1px 2px rgba(0,0,0,.03);}

/* ===== Sales-tax: collapsible setup + working area ===== */
.setup-fold{border:1px solid var(--rule);border-radius:10px;background:var(--paper-2);margin-bottom:16px;}
.setup-fold>summary{list-style:none;cursor:pointer;padding:11px 16px;display:flex;align-items:center;gap:12px;}
.setup-fold>summary::-webkit-details-marker{display:none;}
.setup-title{font-weight:700;font-size:14px;}
.setup-sum{font-size:13px;flex:1;}
.setup-toggle{font-size:12px;}
.setup-fold[open]>summary .setup-toggle::after{content:' (close)';}
.setup-fold>.card{margin:0 12px 12px;}
.form-grid.compact{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 14px;align-items:end;}
@media (max-width:1000px){ .form-grid.compact{grid-template-columns:repeat(2,1fr);} }
@media (max-width:680px){
  .form-grid.compact{grid-template-columns:1fr;}
  .ov-three{grid-template-columns:1fr !important;}
}
.work-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:6px 0 10px;flex-wrap:wrap;}
.add-period-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap;background:var(--paper-2);padding:7px 10px;border-radius:9px;border:1px solid var(--rule);}
.add-period-row .amt{max-width:96px;text-align:right;}

/* sales-tax overview filters */
.st-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0;}
.st-filters input,.st-filters select{padding:8px 11px;border:1px solid var(--rule);border-radius:8px;}
.st-filters #stFilter{flex:1;min-width:200px;}

/* version history */
.timeline{max-width:760px;}
.rel{border-left:3px solid var(--rule);padding:2px 0 16px 18px;position:relative;}
.rel::before{content:'';position:absolute;left:-8px;top:4px;width:13px;height:13px;border-radius:50%;background:var(--forest);border:2px solid #fff;}
.rel-head{display:flex;align-items:center;gap:10px;}
.rel-ver{font-weight:700;font-size:16px;}
.rel-date{font-size:12px;}
.rel-title{font-size:13px;color:var(--ink-mute);margin:2px 0 6px;font-style:italic;}
.rel-list{margin:0;padding-left:18px;}
.rel-list li{font-size:13.5px;margin:3px 0;}
.app-footer{max-width:1380px;margin:30px auto 16px;padding:12px 26px 0;border-top:1px solid var(--rule);color:var(--ink-mute);font-size:12px;display:flex;justify-content:space-between;}
.app-footer a{color:var(--ink-mute);}

/* ===== Modal (receipt confirmation) ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(20,24,20,.45);z-index:1000;align-items:center;justify-content:center;padding:20px;}
.modal-box{background:#fff;border-radius:14px;padding:22px 24px;width:100%;max-width:440px;box-shadow:0 18px 60px rgba(0,0,0,.28);}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.modal-x{background:none;border:none;font-size:26px;line-height:1;color:var(--ink-mute);cursor:pointer;padding:0 4px;}
.modal-x:hover{color:var(--ink);}
.copy-row{display:flex;gap:8px;margin-top:5px;}
.copy-row input{flex:1;font-family:'Inter',monospace;font-size:14px;background:var(--paper-2);font-weight:600;}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;}

/* modal form grid */
.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;}
.modal-grid label,.modal-box form label{font-size:12px;font-weight:600;color:var(--ink-mute);display:block;}
.modal-grid input{width:100%;margin-top:3px;}

/* sales-tax setup sections */
.setup-sec{margin-bottom:9px;}
.setup-sec-h{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--forest);font-weight:700;border-bottom:1px solid var(--rule);padding-bottom:3px;margin-bottom:7px;}
.form-grid.compact label.chk{display:flex;flex-direction:row;gap:7px;align-items:center;justify-content:flex-start;font-weight:600;font-size:12px;padding:0;text-align:left;}
.form-grid.compact label{gap:2px;font-size:12px;}
.form-grid.compact input,.form-grid.compact select{padding:5px 8px;font-size:13px;}
.form-grid.compact label.chk input{width:auto;margin-top:0;}

/* dropbox receipt search results */
.dbx-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border:1px solid var(--rule);border-radius:8px;margin-bottom:6px;}
.dbx-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* lookup popup (NAICS search) */
.lookup-pop{display:none;position:absolute;top:100%;left:0;right:0;z-index:50;background:#fff;border:1px solid var(--rule);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.16);max-height:240px;overflow:auto;margin-top:2px;}
.lookup-item{padding:7px 10px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--paper-2);}
.lookup-item:hover{background:var(--paper-2);}
.lookup-item strong{color:var(--forest);font-family:monospace;margin-right:6px;}

/* business status badges on client cards */
.biz-status{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:1px 7px;border-radius:10px;margin-left:6px;vertical-align:middle;}
.biz-status-inactive{background:#eceae4;color:#6a665c;}
.biz-status-closed{background:#fbeede;color:#9a6a1c;}
.biz-status-terminated{background:#fae3e1;color:#a23;}

/* nav: Tools dropdown + CTA */
.nav-cta{font-weight:700;}
.nav-more{position:relative;display:inline-block;}
.nav-more-btn{cursor:pointer;}
.nav-more-menu{display:none;position:absolute;top:100%;right:0;background:#fff;border:1px solid var(--rule);border-radius:10px;box-shadow:0 10px 28px rgba(0,0,0,.16);min-width:150px;z-index:200;padding:6px 0;}
.nav-more:hover .nav-more-menu, .nav-more:focus-within .nav-more-menu{display:block;}
.nav-more-menu a{display:block;padding:8px 16px;white-space:nowrap;color:var(--ink) !important;}
.nav-more-menu a:hover{background:var(--paper-2);color:var(--ink) !important;}
.nav-more-menu .nav-sec{display:block;padding:8px 16px 3px;font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-mute,#8a93a0);}
.nav-more-menu hr{border:0;border-top:1px solid var(--rule);margin:5px 0;}

/* Income screen: 12 month tiles */
.month-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:10px;margin-bottom:18px;}
.month-tile{display:block;border:1px solid var(--rule);border-radius:12px;padding:12px 12px;background:#fff;text-decoration:none;color:var(--ink);transition:transform .05s,box-shadow .1s,border-color .1s;overflow:hidden;}
.month-tile:hover{box-shadow:0 6px 16px rgba(0,0,0,.10);transform:translateY(-1px);border-color:var(--forest);}
.month-tile.on{border-color:var(--forest);background:#f3f6f3;box-shadow:inset 0 0 0 1px var(--forest);}
.month-tile.empty{border:1.5px dashed #c0392b;background:#fdf3f2;}
.month-tile.future{border:1px dashed var(--rule);background:#fcfcfb;}
.month-tile.future .mt-name,.month-tile.future .mt-total{color:var(--ink-mute);}
.month-tile.empty .mt-name{color:#c0392b;}
.month-tile.empty .mt-total{color:#c0392b;}
.month-tile.locked{border-color:var(--forest);background:#eef4ee;}
.month-tile .mt-lock{font-size:10px;color:var(--forest);font-weight:700;}
.month-tile .mt-name{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink-mute);}
.month-tile .mt-total{font-size:15px;font-weight:700;margin:3px 0 1px;font-variant-numeric:tabular-nums;letter-spacing:-.02em;white-space:nowrap;}
.month-tile .mt-meta{font-size:11px;color:var(--ink-mute);}
.month-tile.yeartile{background:var(--paper-2);}
.up{color:#1c7a3d;} .down{color:#a23;}
.compare-bar{display:flex;gap:24px;flex-wrap:wrap;padding:12px 16px;border:1px solid var(--rule);border-radius:12px;background:var(--paper-2);margin-bottom:14px;}
.compare-bar .cb-cell{display:flex;flex-direction:column;}
.compare-bar .cb-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute);}
.compare-bar .cb-val{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;}
.month-panel{margin-top:4px;}
/* ==========================================================================
   LK BOOKS — MOBILE / TABLET ADD-ON
   Paste this whole block at the very END of your app/static/style.css file.
   It only applies on phones & tablets (screens 820px and narrower); your
   desktop layout is untouched. Nothing else in your version changes.
   ========================================================================== */

@media (max-width: 820px) {

  /* --- page padding: give content room on small screens --- */
  body { -webkit-text-size-adjust: 100%; }
  main, .container, .wrap, .page, .content { padding-left: 12px !important; padding-right: 12px !important; }

  /* --- top navigation: let it wrap and scroll instead of overflowing --- */
  .topbar { height: auto !important; }
  .topbar nav, nav {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: 4px 12px; row-gap: 6px;
    font-size: 15px;
  }
  .topbar nav a, nav a { padding: 6px 2px; }
  .who { width: 100%; order: 99; font-size: 12px; }

  /* --- WIDE TABLES: make them swipe sideways instead of squashing --- */
  table.grid, table.report, table.data {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
    border-collapse: collapse;
  }
  table.grid thead, table.grid tbody, table.grid tfoot { display: table; width: 100%; min-width: 640px; }
  table.grid th, table.grid td { white-space: nowrap; }

  /* --- entry / filing rows: stack the inputs vertically, full width --- */
  .entry-row, .add-period-row, .import-row, form.entry-row {
    display: flex; flex-direction: column; align-items: stretch; gap: 8px;
  }
  .entry-row > *, .add-period-row > *, .import-row > * {
    width: 100% !important; max-width: none !important; box-sizing: border-box;
  }

  /* --- inputs: 16px stops iOS from zooming in when you tap a field --- */
  input, select, textarea { font-size: 16px !important; }
  input[type="text"], input[type="date"], input[type="number"], input[type="search"],
  input[type="month"], select, textarea {
    width: 100%; box-sizing: border-box; padding: 11px 12px;
  }

  /* --- buttons: bigger tap targets; full width when stacked in forms --- */
  .btn { padding: 11px 14px; font-size: 15px; }
  .btn.small { padding: 9px 12px; }
  .entry-row .btn, .add-period-row .btn, .import-row .btn { width: 100%; }

  /* --- summary / overview cards: one per row --- */
  .stat-row, .ov-cards, .sumcards, .card-row, .stat-grid {
    display: grid !important; grid-template-columns: 1fr !important; gap: 10px;
  }
  .sumcard, .ov-card, .stat, .card, .side-card { width: auto !important; }

  /* --- business detail tab bar: swipe sideways --- */
  .biz-nav, .tabs, .tablinks {
    display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch;
    white-space: nowrap; gap: 4px; flex-wrap: nowrap;
  }
  .biz-nav a, .tabs a, .tablink { flex: 0 0 auto; }

  /* --- two-column layouts collapse to one --- */
  .row, .cols, .two-col, .split, .grid-2 { display: block !important; }
  .side, .sidebar, .side-card { width: auto !important; float: none !important; }

  /* --- modals: fit the screen, scroll if tall --- */
  .modal-box {
    width: 94vw !important; max-width: 94vw !important;
    max-height: 88vh; overflow-y: auto; margin: 4vh auto;
  }
  .modal-overlay { padding: 0 !important; }

  /* --- income month tiles (newer builds): 3 across on phones --- */
  .month-tiles { grid-template-columns: repeat(3, 1fr) !important; }

  /* --- page headers wrap their buttons under the title --- */
  .page-head, .work-head, .ov-head, .side-head {
    display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
  }
  h1 { font-size: 22px; }
  h2 { font-size: 19px; }
}

/* Slightly larger phones / small tablets in portrait */
@media (min-width: 560px) and (max-width: 820px) {
  .month-tiles { grid-template-columns: repeat(4, 1fr) !important; }
}

/* =================  iPhone / small-screen refinements (v1.14.5)  ================= */
/* hamburger hidden on desktop */
.nav-toggle{ display:none; }

@media (max-width: 820px) {
  /* keep the bar reachable while scrolling */
  .topbar{ position: sticky; top: 0; z-index: 500; flex-wrap: wrap; padding: 10px 14px; }
  .topbar .brand{ font-size: 17px; }

  /* show the hamburger; collapse the nav into a tap-to-open drawer */
  .nav-toggle{
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 40px; border-radius: 9px; cursor: pointer;
    background: transparent; color: #f5f3ec; font-size: 20px; line-height: 1;
    border: 1px solid rgba(245,243,236,.3);
  }
  .topbar nav{
    display: none; order: 99; width: 100%;
    flex-direction: column; align-items: stretch; gap: 0; margin-top: 8px;
  }
  .topbar.nav-open nav{ display: flex; }
  .topbar nav > a,
  .topbar nav > .nav-more > .nav-more-btn,
  .topbar nav .priv-toggle,
  .topbar nav .who,
  .topbar nav .logout{
    width: 100%; box-sizing: border-box;
    padding: 13px 6px; font-size: 16px;
    border-top: 1px solid rgba(245,243,236,.10);
    text-align: left;
  }
  .topbar nav .who{ color: rgba(245,243,236,.55); }
  /* Tools submenu: show inline (no hover on touch) and indent it */
  .topbar nav .nav-more{ width: 100%; }
  .topbar nav .nav-more-menu{
    display: block; position: static; background: transparent;
    border: none; box-shadow: none; padding: 0 0 6px 16px; min-width: 0;
  }
  .topbar nav .nav-more-menu a{
    color: rgba(245,243,236,.8) !important; padding: 10px 6px; border: none;
  }
  .topbar nav .nav-cta{
    color: var(--gold) !important; font-weight: 700;
  }

  /* business header: keep arrows tappable, smaller title */
  .biz-nav{ gap: 8px; }
  .biz-nav-mid h1{ font-size: 20px; line-height: 1.2; }
  .navarrow{ min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; font-size: 20px; }

  /* business action buttons: wrap as chips; the Move-to-client form stacks */
  .biz-actions{ display: flex; flex-wrap: wrap; gap: 8px; align-items: stretch; }
  .biz-actions .btn{ padding: 10px 12px; }
  .biz-actions .move-form{
    flex-direction: column; align-items: stretch; width: 100%; gap: 6px;
    margin-top: 4px; padding-top: 10px; border-top: 1px solid var(--rule);
  }
  .biz-actions .move-form select,
  .biz-actions .move-form .newcli,
  .biz-actions .move-form .btn{ width: 100% !important; max-width: none !important; }

  /* tab bar: hint that it scrolls + comfortable tap height */
  .tabs.scroll{ -webkit-overflow-scrolling: touch; }
  .tabs.scroll a{ padding: 11px 14px; }

  /* contact bar wraps */
  .contactbar{ flex-wrap: wrap; gap: 8px; }
}

.copybtn{font-size:10.5px;font-family:-apple-system,system-ui,sans-serif;padding:1px 7px;margin-left:2px;border:1px solid var(--rule);border-radius:5px;background:#fff;color:var(--ink-mute);cursor:pointer;vertical-align:middle;}
.copybtn:hover,.copybtn.done{background:var(--forest);color:#fff;border-color:var(--forest);}

/* Practice Hub: business detail card on a task */
.task-bizinfo{margin:7px 0 2px;padding:8px 10px;border:1px solid var(--rule);border-left:3px solid var(--forest);border-radius:8px;background:var(--paper-2);font-size:12.5px;line-height:1.5;}
.task-bizinfo .bi-row{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--ink-mute);}
.task-bizinfo .bi-row span{white-space:nowrap;}
.task-bizinfo a{color:var(--forest);text-decoration:none;}
.task-bizinfo a:hover{text-decoration:underline;}

/* v1.45.90: month pickers on report headers */
.yearform input[type=month]{width:150px;}
