:root{
  --bg:#F8F6F2; --panel:#F3ECDD; --card-solid:#FFFFFF;
  --card-hover:#F2ECDD; --border:#E7E0D3; --border-soft:#EFE8D6;
  --text:#2F2A24; --text-dim:#4A4038; --text-faint:#7A746B;
  --gold:#C98A2E; --gold-soft:#E0A952; --gold-light:#F5D8A6; --gold-dim:#A6701F;
  --gold-gradient:linear-gradient(135deg,var(--gold),var(--gold-soft));
  --paid-bg:#E3F0DE; --paid-text:#2E6B3F;
  --due-bg:#FBEACB; --due-text:#8A5D14;
  --overdue-bg:#FBE0D8; --overdue-text:#9C3F26;
  --vacant-bg:#EDEAE0; --vacant-text:#7A7263;
  --partial-bg:#DCE8F2; --partial-text:#1B4E75;
  --shadow-sm:0 1px 2px rgba(47,42,36,0.06);
  --shadow-md:0 10px 30px rgba(47,42,36,0.09);
  --radius-lg:16px; --radius-pill:999px;
  --font-serif:'Playfair Display',serif;
  --font-display:'Plus Jakarta Sans',sans-serif; --font-body:'Inter',sans-serif; --font-mono:'IBM Plex Mono',monospace;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);}
code{font-family:var(--font-mono);background:var(--panel);padding:1px 5px;border-radius:4px;}

.logo-img{display:block;width:220px;max-width:100%;height:auto;margin:0 auto;}
.logo-img.compact{width:160px;}

.brand{display:flex;align-items:baseline;gap:12px;}
.brand h1{font-family:var(--font-display);font-weight:600;font-size:26px;margin:0;color:var(--gold-soft);letter-spacing:0.2px;}
.brand span{font-size:12px;color:var(--text-faint);letter-spacing:0.4px;text-transform:uppercase;}

.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 20% 15%,var(--gold-light) 0%,transparent 45%),var(--bg);}
.auth-card{background:var(--card-solid);border:1px solid var(--border-soft);border-radius:20px;padding:36px 34px;width:100%;max-width:400px;box-shadow:var(--shadow-md);}
.auth-card .logo-img{margin-bottom:20px;}
.auth-card h2.section-title{text-align:center;font-size:22px;}
.auth-card p.section-sub{text-align:center;margin-bottom:24px;}
.auth-card form{display:flex;flex-direction:column;gap:16px;}
.field-icon{position:relative;}
.field-icon svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--text-faint);pointer-events:none;}
.field-icon input{padding-left:36px;}
.field-icon .toggle-visibility{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;padding:2px;cursor:pointer;color:var(--text-faint);display:flex;}
.field-icon .toggle-visibility svg{position:static;transform:none;}
.error-line{font-size:12.5px;color:var(--overdue-text);margin:0;background:var(--overdue-bg);padding:8px 11px;border-radius:8px;}

.app{display:flex;min-height:100vh;}
.sidebar{width:220px;flex-shrink:0;display:flex;flex-direction:column;background:var(--card-solid);border-right:1px solid var(--border-soft);padding:24px 16px;position:sticky;top:0;height:100vh;}
.sidebar .logo-img{padding:0 6px 22px;border-bottom:1px solid var(--border-soft);margin-bottom:16px;box-sizing:content-box;}
.sidebar-nav{display:flex;flex-direction:column;gap:3px;flex:1;overflow-y:auto;}
.sidebar-nav button{display:flex;align-items:center;gap:10px;text-align:left;border:none;background:transparent;color:var(--text-dim);font-family:var(--font-body);font-size:13.5px;font-weight:500;padding:10px 13px;border-radius:11px;cursor:pointer;}
.sidebar-nav button:hover{background:var(--gold-light);color:var(--gold-dim);}
.sidebar-nav button.active{background:var(--gold-gradient);color:#fff;box-shadow:var(--shadow-sm);}
.sidebar-foot{border-top:1px solid var(--border-soft);padding-top:14px;margin-top:14px;display:flex;align-items:center;gap:10px;}
.sidebar-foot .who-info{flex:1;min-width:0;}
.sidebar-foot .who-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.role-pill{background:var(--gold-light);color:var(--gold-dim);font-size:10px;padding:2px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:0.3px;display:inline-block;margin-top:2px;}

.main{flex:1;min-width:0;padding:32px 36px 60px;max-width:1180px;}

h2.section-title{font-family:var(--font-display);font-weight:700;font-size:21px;margin:0 0 4px;color:var(--text);}
p.section-sub{font-size:13px;color:var(--text-faint);margin:0 0 20px;}
.panel-block{background:var(--card-solid);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:22px;margin-bottom:20px;box-shadow:var(--shadow-sm);}

.field{display:flex;flex-direction:column;gap:6px;}
.field label{font-size:12px;color:var(--text-faint);}
input,select{font-family:var(--font-body);font-size:13px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:9px 12px;border-radius:10px;outline:none;}
input:focus,select:focus{border-color:var(--gold-dim);}

.btn{font-family:var(--font-body);font-size:12.5px;font-weight:600;padding:8px 16px;border-radius:var(--radius-pill);border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;}
.btn:hover{background:var(--panel);color:var(--text);}
.btn.primary{background:var(--gold-gradient);border-color:transparent;color:#fff;box-shadow:var(--shadow-sm);}
.btn.primary:hover{filter:brightness(1.05);}
.btn.small{padding:5px 12px;font-size:11.5px;}
.btn:focus-visible, .sidebar-nav button:focus-visible, input:focus-visible, select:focus-visible{outline:2px solid var(--gold-dim);outline-offset:2px;}

.note-line{font-size:12px;color:var(--text-faint);line-height:1.6;margin:0;}

.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px;flex-wrap:wrap;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;}
.field input,.field select{width:100%;}
.search{min-width:220px;}

table{width:100%;border-collapse:collapse;font-size:13.5px;}
th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:0.3px;color:var(--text-faint);font-weight:500;padding:0 10px 10px;border-bottom:1px solid var(--border-soft);}
td{padding:12px 10px;border-bottom:1px solid var(--border-soft);color:var(--text-dim);}
tr:last-child td{border-bottom:none;}
td.strong{color:var(--text);font-weight:500;}
td.mono{font-family:var(--font-mono);}

.badge{display:inline-block;font-size:11px;padding:3px 9px;border-radius:6px;font-weight:500;}
.badge.paid{background:var(--paid-bg);color:var(--paid-text);}
.badge.due{background:var(--due-bg);color:var(--due-text);}
.badge.overdue{background:var(--overdue-bg);color:var(--overdue-text);}
.badge.vacant{background:var(--vacant-bg);color:var(--vacant-text);}
.badge.partial{background:var(--partial-bg);color:var(--partial-text);}

.low-stock{color:var(--overdue-text);font-size:11px;margin-left:6px;}
.btn.danger{border-color:var(--overdue-text);color:var(--overdue-text);}

.avatar-circle{width:72px;height:72px;border-radius:50%;background:var(--panel);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:20px;font-weight:500;color:var(--text);flex-shrink:0;}
.avatar-circle img{width:100%;height:100%;object-fit:cover;}

.stat-line{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:13px;}
.stat-line:last-child{border-bottom:none;}
.stat-line .l{color:var(--text-faint);} .stat-line .v{font-family:var(--font-mono);color:var(--text);}

.letterhead{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--border-soft);}
.lh-name{font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--text);}
.lh-address{font-size:11.5px;color:var(--text-faint);}

.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(8px);background:var(--gold);color:#1C1608;font-size:13px;font-weight:500;padding:10px 18px;border-radius:9px;opacity:0;pointer-events:none;transition:all .25s ease;z-index:50;max-width:80%;text-align:center;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

.subtabs{display:flex;gap:4px;background:var(--panel);border-radius:9px;padding:3px;margin-bottom:18px;width:fit-content;flex-wrap:wrap;}
.subtabs button{border:none;background:transparent;color:var(--text-faint);font-size:12.5px;font-weight:500;padding:7px 14px;border-radius:6px;cursor:pointer;}
.subtabs button.active{background:var(--gold);color:#1C1608;}

.pos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px;margin-bottom:6px;}
.pos-item{background:var(--card-solid);border:1px solid var(--border-soft);border-radius:10px;padding:10px 8px;text-align:center;cursor:pointer;}
.pos-item:hover{background:var(--card-hover);border-color:var(--gold-dim);}
.pos-item.selected{border-color:var(--gold);background:var(--card-hover);}
.pos-img{width:100%;aspect-ratio:1;border-radius:8px;background:var(--panel);display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:6px;color:var(--gold-dim);}
.pos-item .n{font-size:11px;color:var(--text);font-weight:500;line-height:1.3;}
.pos-item .p{font-size:11px;font-family:var(--font-mono);color:var(--text-faint);margin-top:2px;}

@media (max-width:760px){
  .app{flex-direction:column;}
  .sidebar{width:100%;height:auto;position:static;flex-direction:row;align-items:center;padding:12px;gap:10px;overflow-x:auto;}
  .sidebar .logo-img{border-bottom:none;margin-bottom:0;padding:0 10px 0 0;flex-shrink:0;width:120px;}
  .sidebar-nav{flex-direction:row;flex:0 0 auto;}
  .sidebar-nav button{white-space:nowrap;}
  .sidebar-foot{border-top:none;margin-top:0;padding-top:0;flex-shrink:0;}
  .sidebar-foot .who-info{display:none;}
  .main{padding:20px 14px 50px;}
  .form-grid{grid-template-columns:1fr;}

  /* Tables: keep normal table layout internally (thead/tr/td keep their
     default display values — only the <table> box itself scrolls), rather
     than crushing columns to fit or rebuilding every table as mobile cards. */
  table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;}
  td, th{white-space:nowrap;}

  .toolbar{gap:10px;}
  .search{width:100%;min-width:0;}
  .toolbar > div, .toolbar > .field{width:100%;}

  .auth-shell{padding:16px;}
  .auth-card{padding:28px 20px;}

  .stat-grid{grid-template-columns:1fr;}
  .chart-legend{flex-wrap:wrap;row-gap:6px;}
  .topitem-label{max-width:74px;}
  .fin-bar-label{width:92px;font-size:11.5px;}
  .fin-bar-value{width:76px;font-size:11px;}
  .dash-header .pill-group{width:100%;justify-content:space-between;}
}

#printArea{display:none;}
@media print{
  body *{visibility:hidden;}
  #printArea, #printArea *{visibility:visible;}
  #printArea{display:block;position:absolute;top:0;left:0;width:100%;padding:24px;}
}

.dash-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px;}
.dash-header .section-title, .dash-header .section-sub{margin-bottom:0;}
.pill-group{display:flex;gap:4px;background:var(--panel);padding:4px;border-radius:var(--radius-pill);flex-shrink:0;}
.pill-btn{border:none;background:transparent;padding:7px 14px;border-radius:var(--radius-pill);font-family:var(--font-body);font-size:12px;font-weight:600;color:var(--text-dim);cursor:pointer;white-space:nowrap;}
.pill-btn:hover{color:var(--text);}
.pill-btn.active{background:var(--gold-gradient);color:#fff;box-shadow:var(--shadow-sm);}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:20px;}
.stat-tile{background:var(--card-solid);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-sm);border-left:3px solid var(--border);cursor:pointer;}
.stat-tile.no-drill{cursor:default;}
.stat-tile.accent-overdue{border-left-color:var(--overdue-text);}
.stat-tile.accent-due{border-left-color:var(--due-text);}
.stat-tile.accent-paid{border-left-color:var(--paid-text);}
.stat-tile.accent-partial{border-left-color:var(--partial-text);}
.stat-tile.accent-neutral{border-left-color:var(--gold);}
.stat-tile .stat-label{font-size:11.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.3px;margin-bottom:6px;}
.stat-tile .stat-big{font-family:var(--font-display);font-size:24px;font-weight:700;color:var(--text);line-height:1.15;}
.stat-tile .stat-sub{font-size:12px;color:var(--text-faint);margin-top:4px;}
.stat-drill{margin:-6px 0 20px;}

.chart-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;margin-bottom:8px;align-items:start;}
.chart-title{font-family:var(--font-display);font-size:13px;font-weight:700;color:var(--text);margin:0 0 12px;}
.chart-legend{display:flex;gap:16px;margin-bottom:8px;}
.chart-legend span, .status-legend span{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-dim);}
.chart-legend i, .status-legend i{width:10px;height:10px;border-radius:3px;display:inline-block;}
.trend-svg{width:100%;height:auto;display:block;}

.status-bar{display:flex;width:100%;height:20px;border-radius:6px;overflow:hidden;background:var(--panel);margin-bottom:14px;}
.status-seg{height:100%;}
.status-legend{display:flex;flex-wrap:wrap;gap:10px 16px;}
.status-legend b{color:var(--text);font-family:var(--font-mono);font-weight:600;}

.topitems-chart{display:flex;flex-direction:column;gap:10px;}
.topitem-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;}
.topitem-label{font-size:12px;color:var(--text-dim);max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.topitem-track{height:14px;background:var(--panel);border-radius:5px;overflow:hidden;}
.topitem-fill{height:100%;background:var(--gold-gradient);border-radius:5px;}
.topitem-value{font-family:var(--font-mono);font-size:11.5px;color:var(--text-faint);white-space:nowrap;}

@media (max-width:900px){ .chart-grid{grid-template-columns:1fr;} }

.fin-bar-row{display:flex;align-items:center;gap:12px;padding:10px 0;cursor:pointer;}
.fin-bar-label{width:130px;flex-shrink:0;font-size:12.5px;color:var(--text-dim);}
.fin-bar-track{flex:1;height:16px;background:var(--panel);border-radius:5px;overflow:hidden;}
.fin-bar-fill{height:100%;border-radius:5px;}
.fin-bar-fill.income{background:var(--paid-text);}
.fin-bar-fill.expense{background:var(--overdue-text);}
.fin-bar-value{width:100px;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-size:12.5px;color:var(--text);}
