:root{
  --teal:#14b8a6; --blue:#3b6fb5; --purple:#8b2fb0;
  --grad:linear-gradient(135deg,#15b8a6 0%,#3b6fb5 52%,#8b2fb0 100%);
  --primary:#0d9488; --primary-d:#0f766e; --primary-soft:#e3f6f3;
  --bg:#f3f6fb; --surface:#ffffff; --surface-2:#f8fafc;
  --border:#e7ecf3; --border-2:#eef2f7;
  --ink:#0f1b2d; --muted:#64748b; --faint:#9aa7b8;
  --green:#16a34a; --green-bg:#e8f6ee;
  --red:#e11d48; --red-bg:#fdeaef;
  --amber:#d97706; --amber-bg:#fdf1e0;
  --topbar-bg:rgba(255,255,255,.85); --tabbar-bg:rgba(255,255,255,.95); --hover:#d8e0ea;
  --radius:14px;
  --shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.05);
  --shadow-md:0 4px 18px rgba(16,24,40,.08);
  --shadow-lg:0 16px 40px rgba(16,24,40,.14);
  --sidebar-w:248px;
  --gold:var(--primary); --gold-soft:var(--primary-soft);
  --text:var(--ink); --yellow:var(--amber);
  --glass:var(--surface); --glass-2:var(--surface-2);
  --stroke:var(--border); --stroke-soft:var(--border-2);
}
body[data-theme="dark"]{
  --bg:#0e131b; --surface:#161d28; --surface-2:#1c2531;
  --border:#28323f; --border-2:#222b37;
  --ink:#e8edf4; --muted:#9aa7b8; --faint:#6c7888;
  --primary-soft:#0c2b2a;
  --green-bg:#102619; --red-bg:#2a1019; --amber-bg:#291f0f;
  --topbar-bg:rgba(22,29,40,.85); --tabbar-bg:rgba(22,29,40,.95); --hover:#33414f;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 1px 3px rgba(0,0,0,.3);
  --shadow-md:0 4px 18px rgba(0,0,0,.45);
  --shadow-lg:0 16px 40px rgba(0,0,0,.55);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--bg);min-height:100vh;font-size:14px;-webkit-font-smoothing:antialiased;transition:background .25s,color .25s}
body[data-lang="bn"]{font-family:'Hind Siliguri','Inter',system-ui,sans-serif}
h1,h2,h3,.bn-brand{font-family:'Poppins',sans-serif}
body[data-lang="bn"] h1,body[data-lang="bn"] h2,body[data-lang="bn"] h3{font-family:'Hind Siliguri','Poppins',sans-serif}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px;border:2px solid var(--bg)}
::-webkit-scrollbar-track{background:transparent}
.glass{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}

.logo-badge{background:transparent;border-radius:14px;display:flex;align-items:center;justify-content:center;overflow:visible;flex-shrink:0;position:relative}
.logo-badge img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 6px rgba(59,111,181,.18))}
.logo-badge.sm{width:38px;height:38px}
.logo-badge.lg{width:64px;height:64px}
.logo-badge.xl{width:104px;height:104px}
.logo-badge.xl img{filter:drop-shadow(0 6px 18px rgba(20,184,166,.28)) drop-shadow(0 6px 18px rgba(139,47,176,.18))}

#auth{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(900px 500px at 15% 0%,rgba(20,184,166,.10),transparent 60%),radial-gradient(900px 600px at 100% 100%,rgba(139,47,176,.10),transparent 55%),var(--bg)}
.auth-card{width:100%;max-width:392px;padding:38px 32px;text-align:center;box-shadow:var(--shadow-lg)}
.auth-card .logo-badge{margin:0 auto 18px}
.auth-logo{font-size:24px;font-weight:800;letter-spacing:-.6px}
.auth-logo b{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.auth-sub{color:var(--muted);font-size:12.5px;margin-bottom:26px}
.auth-card input{width:100%;padding:13px 15px;border-radius:11px;background:var(--surface-2);border:1px solid var(--border);margin-bottom:14px;outline:none;transition:.18s}
.auth-card input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft);background:var(--surface)}
.auth-err{color:var(--red);font-size:12.5px;min-height:18px;margin-bottom:6px;text-align:left;font-weight:500}
.auth-toggles{display:flex;gap:8px;justify-content:center;margin-bottom:20px}

.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;padding:10px 16px;border-radius:10px;font-weight:600;font-size:13.5px;background:var(--surface);border:1px solid var(--border);color:var(--ink);transition:.16s}
.btn:hover{background:var(--surface-2);border-color:var(--hover)}
.btn:active{transform:translateY(1px)}
.btn-gold{background:var(--primary);color:#fff;border-color:transparent}
.btn-gold:hover{background:var(--primary-d);box-shadow:0 4px 14px rgba(13,148,136,.32)}
.btn-grad{background:var(--grad);color:#fff;border-color:transparent;width:100%}
.btn-grad:hover{filter:brightness(1.05);box-shadow:0 6px 18px rgba(59,111,181,.3)}
.btn-sm{padding:7px 12px;font-size:12.5px;border-radius:9px}
.btn-danger{color:var(--red);border-color:#f6c6d2}
body[data-theme="dark"] .btn-danger{border-color:#5b2230}
.btn-danger:hover{background:var(--red-bg)}
.btn-ghost{background:transparent}
.btn-ok{color:var(--green);border-color:#bfe6cd}
body[data-theme="dark"] .btn-ok{border-color:#22503a}
.btn-ok:hover{background:var(--green-bg)}

/* segmented + icon controls */
.seg{display:flex;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;overflow:hidden;padding:2px}
.seg button{padding:7px 11px;font-weight:600;font-size:12.5px;color:var(--muted);transition:.15s;border-radius:8px;white-space:nowrap}
.seg button.active{background:var(--primary);color:#fff}
.icon-btn{width:38px;height:38px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);color:var(--muted);display:flex;align-items:center;justify-content:center;transition:.15s}
.icon-btn:hover{color:var(--ink);border-color:var(--hover)}
.icon-btn svg{width:18px;height:18px}

#app{display:none}
.shell{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);flex-shrink:0;position:sticky;top:0;height:100vh;padding:20px 14px;display:flex;flex-direction:column;gap:4px;background:var(--surface);border-right:1px solid var(--border)}
.side-brand{display:flex;align-items:center;gap:11px;padding:6px 8px 18px;border-bottom:1px solid var(--border-2);margin-bottom:14px}
.side-brand .bn{font-size:16.5px;font-weight:800;letter-spacing:-.4px;line-height:1.1;font-family:'Poppins'}
.side-brand .bn b{color:var(--primary)}
.side-brand .bt{font-size:10px;color:var(--faint);font-weight:600;letter-spacing:1.2px;text-transform:uppercase;margin-top:3px}
.nav-label{font-size:10.5px;font-weight:700;color:var(--faint);letter-spacing:.8px;text-transform:uppercase;padding:8px 12px 4px}
.nav-item{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;color:var(--muted);font-weight:500;transition:.15s;cursor:pointer}
.nav-item svg{width:18px;height:18px;flex-shrink:0;stroke-width:2}
.nav-item:hover{background:var(--surface-2);color:var(--ink)}
.nav-item.active{background:var(--primary-soft);color:var(--primary-d);font-weight:600}
body[data-theme="dark"] .nav-item.active{color:#5ee0d2}
.nav-item.active svg{stroke:var(--primary)}
body[data-theme="dark"] .nav-item.active svg{stroke:#5ee0d2}
.side-foot{margin-top:auto;font-size:11px;color:var(--faint);padding:12px;border-top:1px solid var(--border-2)}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;background:var(--topbar-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
.page-title{font-size:19px;font-weight:700;letter-spacing:-.3px}
.topbar-actions{display:flex;align-items:center;gap:9px}
.mode-pill{font-size:11px;padding:5px 11px;border-radius:20px;border:1px solid var(--border);color:var(--muted);font-weight:600;background:var(--surface)}
.mode-pill.local{color:var(--amber);border-color:#f3dcb4;background:var(--amber-bg)}
.mode-pill.live{color:var(--green);border-color:#bfe6cd;background:var(--green-bg)}
body[data-theme="dark"] .mode-pill.local{border-color:#4a3a18}
body[data-theme="dark"] .mode-pill.live{border-color:#1f4a33}
.content{padding:24px;flex:1;max-width:1320px;width:100%}
@media(min-width:1100px){.content{padding:26px 32px}}
.tabbar{display:none}

.welcome{display:flex;align-items:center;gap:18px;padding:20px 22px;margin-bottom:20px;position:relative;overflow:hidden}
.welcome::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--grad)}
.welcome h2{font-size:18px;font-weight:800;letter-spacing:-.3px}
.welcome p{color:var(--muted);font-size:13px;line-height:1.6;margin-top:5px;max-width:700px}
.welcome .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.welcome .tag{font-size:11px;font-weight:600;padding:4px 10px;border-radius:20px;background:var(--primary-soft);color:var(--primary-d)}
body[data-theme="dark"] .welcome .tag{color:#5ee0d2}

.grid{display:grid;gap:16px}
.stat-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:18px}
.stat{padding:20px;position:relative;overflow:hidden}
.stat .label{font-size:12px;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:8px}
.stat .ic-box{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:var(--primary-soft);color:var(--primary)}
.stat .ic-box svg{width:16px;height:16px}
body[data-theme="dark"] .stat .ic-box{color:#5ee0d2}
.stat .value{font-size:27px;font-weight:800;margin-top:12px;letter-spacing:-.6px;font-family:'Poppins'}
.stat .sub{font-size:11.5px;color:var(--faint);margin-top:5px;font-weight:500}
.stat.profit-pos .value{color:var(--green)}.stat.profit-pos .ic-box{background:var(--green-bg);color:var(--green)}
.stat.profit-neg .value{color:var(--red)}.stat.profit-neg .ic-box{background:var(--red-bg);color:var(--red)}
.stat .value.gold{color:var(--primary)}
body[data-theme="dark"] .stat .value.gold{color:#5ee0d2}

@media(min-width:900px){.dash-lists{grid-template-columns:1fr 1fr}}
.card{padding:20px}
.card h3{font-size:14.5px;font-weight:700;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.card h3 .hint{font-size:11px;color:var(--faint);font-weight:500}
.chart-wrap{position:relative;height:290px}
.chart-wrap.sm{height:250px}
.mini-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--border-2)}
.mini-row:last-child{border-bottom:none}
.mini-row .ttl{font-weight:600;font-size:13.5px}
.mini-row .meta{font-size:11.5px;color:var(--muted);margin-top:2px}
.mini-amt{font-weight:700;font-family:'Poppins';white-space:nowrap}

.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}
.input,.select{padding:10px 13px;border-radius:10px;background:var(--surface);border:1px solid var(--border);outline:none;transition:.16s;min-width:0;color:var(--ink)}
.input:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.input::placeholder{color:var(--faint)}
.select{appearance:none;padding-right:34px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center}
.field{position:relative}
.search{flex:1;min-width:200px}
.search .input{width:100%;padding-left:38px}
.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--faint)}
.spacer{flex:1}
.total-pill{font-size:13px;color:var(--muted);font-weight:500}
.total-pill b{color:var(--ink);font-size:17px;font-family:'Poppins';margin-left:6px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{padding:7px 13px;border-radius:9px;background:var(--surface);border:1px solid var(--border);font-size:12.5px;font-weight:600;color:var(--muted);transition:.15s}
.chip:hover{color:var(--ink);border-color:var(--hover)}
.chip.active{background:var(--primary-soft);color:var(--primary-d);border-color:#b9e7e0}
body[data-theme="dark"] .chip.active{color:#5ee0d2;border-color:#1f4a46}

.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border-2)}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;padding:12px 14px;font-weight:700;font-size:11.5px;color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none;text-transform:uppercase;letter-spacing:.3px}
th:hover{color:var(--ink)}
th .arrow{color:var(--primary);font-size:10px;margin-left:3px}
td{padding:12px 14px;border-bottom:1px solid var(--border-2);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:.1s}
tbody tr:hover{background:var(--surface-2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:600}
.badge::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.b-active{background:var(--green-bg);color:var(--green)}
.b-inactive{background:var(--surface-2);color:var(--muted)}
.b-paid{background:var(--green-bg);color:var(--green)}
.b-unpaid{background:var(--red-bg);color:var(--red)}
.b-partial{background:var(--amber-bg);color:var(--amber)}
.b-overdue{background:var(--red-bg);color:var(--red)}

.client-grid{grid-template-columns:repeat(auto-fill,minmax(255px,1fr))}
.client-card{padding:18px;cursor:pointer;transition:.16s}
.client-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--hover)}
.client-card .cc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.client-card .cc-name{font-weight:700;font-size:15.5px;font-family:'Poppins'}
.client-card .cc-row{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12.5px;margin-top:10px}
.client-card .cc-row svg{width:14px;height:14px;flex-shrink:0;color:var(--faint)}
.client-card .cc-svc{margin-top:13px;font-size:11px;font-weight:700;letter-spacing:.3px;color:var(--primary-d);background:var(--primary-soft);display:inline-block;padding:4px 10px;border-radius:7px}
body[data-theme="dark"] .client-card .cc-svc{color:#5ee0d2}

#toasts{position:fixed;top:18px;right:18px;z-index:300;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.toast{display:flex;align-items:center;gap:11px;padding:13px 16px;border-radius:12px;min-width:250px;max-width:350px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);animation:slideIn .3s cubic-bezier(.2,.9,.3,1);pointer-events:auto;font-size:13.5px;font-weight:500}
.toast.out{animation:slideOut .3s forwards}
.toast .ic{width:22px;height:22px;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center}
.toast .ic svg{width:13px;height:13px;color:#fff}
.toast.ok{border-left:3px solid var(--green)}.toast.ok .ic{background:var(--green)}
.toast.err{border-left:3px solid var(--red)}.toast.err .ic{background:var(--red)}
.toast.info{border-left:3px solid var(--primary)}.toast.info .ic{background:var(--primary)}
.toast-act{flex-shrink:0;background:var(--primary-soft);color:var(--primary-d);border-radius:8px;padding:6px 12px;font-weight:700;font-size:12px;transition:.15s}
.toast-act:hover{background:var(--primary);color:#fff}
body[data-theme="dark"] .toast-act{color:#5ee0d2}
@keyframes slideIn{from{transform:translateX(120%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes slideUp{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes slideOut{to{transform:translateX(120%);opacity:0}}

.overlay{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(15,27,45,.5);backdrop-filter:blur(3px);animation:fade .2s}
.overlay.show{display:flex}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{width:100%;max-width:520px;max-height:90vh;overflow-y:auto;padding:26px;box-shadow:var(--shadow-lg);animation:pop .25s cubic-bezier(.2,.9,.3,1)}
.modal.wide{max-width:660px}
@keyframes pop{from{transform:scale(.96) translateY(8px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}
.modal-head h2{font-size:18px;font-weight:700}
.modal-head .x{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--muted);background:var(--surface-2);transition:.15s}
.modal-head .x:hover{color:var(--ink);background:var(--border-2)}
.modal-head .x svg{width:16px;height:16px}
.form-grid{display:grid;gap:14px}
@media(min-width:520px){.form-grid.two{grid-template-columns:1fr 1fr}}
.fld label{display:block;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:6px}
.fld .input,.fld .select,.fld textarea{width:100%}
.fld textarea{padding:11px 13px;border-radius:10px;background:var(--surface);border:1px solid var(--border);outline:none;resize:vertical;min-height:74px;transition:.16s;color:var(--ink)}
.fld textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.fld.err .input,.fld.err .select,.fld.err textarea{border-color:var(--red);box-shadow:0 0 0 3px var(--red-bg)}
.fld .err-msg{color:var(--red);font-size:11.5px;margin-top:5px;display:none;font-weight:500}
.fld.err .err-msg{display:block}
.modal-foot{display:flex;gap:10px;margin-top:24px}
.modal-foot .btn{flex:1}
.confirm{max-width:410px;text-align:center;padding:30px 26px}
.confirm .ic{width:50px;height:50px;border-radius:50%;background:var(--red-bg);color:var(--red);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
.confirm h2{font-size:17px;margin-bottom:8px}
.confirm p{color:var(--muted);font-size:13.5px;line-height:1.5;margin-bottom:22px}
.empty{text-align:center;padding:48px 20px;color:var(--muted)}
.empty .ic{width:56px;height:56px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--faint)}
.empty .ic svg{width:24px;height:24px}
.empty h3{font-size:15px;color:var(--ink);margin-bottom:6px}
.empty p{font-size:13px;max-width:320px;margin:0 auto;line-height:1.5}
.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:54px;color:var(--muted);gap:14px}
.spinner{width:34px;height:34px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.detail-meta .dm{padding:12px 14px;background:var(--surface-2);border-radius:10px;border:1px solid var(--border-2)}
.detail-meta .dm .k{font-size:11px;color:var(--faint);margin-bottom:4px;font-weight:600}
.detail-meta .dm .v{font-weight:600;font-size:13.5px;word-break:break-word}
.sub-head{font-size:12.5px;font-weight:700;color:var(--primary-d);margin:18px 0 10px;text-transform:uppercase;letter-spacing:.4px}
body[data-theme="dark"] .sub-head{color:#5ee0d2}
.kv-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border-2);font-size:13px}
.kv-row:last-child{border-bottom:none}
.kv-row .k{color:var(--muted)}.kv-row .v{font-weight:600}

@media(max-width:860px){
  .sidebar{display:none}
  .content{padding:18px 14px 92px}
  .topbar{padding:13px 16px}
  .page-title{font-size:17px}
  .welcome{flex-direction:column;align-items:flex-start;gap:12px}
  .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:90;background:var(--tabbar-bg);border-top:1px solid var(--border);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:8px 4px calc(8px + env(safe-area-inset-bottom));justify-content:space-around;box-shadow:0 -2px 12px rgba(16,24,40,.06)}
  .tab{display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 4px;border-radius:9px;color:var(--muted);flex:1;font-size:10px;font-weight:600;transition:.15s}
  .tab svg{width:21px;height:21px;stroke-width:2}
  .tab.active{color:var(--primary)}
  body[data-theme="dark"] .tab.active{color:#5ee0d2}
  .modal{padding:22px 18px}
  .detail-meta{grid-template-columns:1fr}
  .stat .value{font-size:24px}
  .topbar-actions .mode-pill{display:none}
}
@media(max-width:430px){.seg button{padding:7px 9px;font-size:12px}.topbar-actions{gap:6px}}

/* ===== premium animations & components ===== */
@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
#view .welcome,#view .stat,#view .card,#view .client-card{animation:fadeUp .5s cubic-bezier(.2,.9,.3,1) both}
#view .stat:nth-child(1){animation-delay:.03s}#view .stat:nth-child(2){animation-delay:.09s}#view .stat:nth-child(3){animation-delay:.15s}#view .stat:nth-child(4){animation-delay:.21s}
.btn-gold:active,.btn-grad:active{transform:scale(.97)}
.stat::after{content:'';position:absolute;right:-28px;top:-28px;width:90px;height:90px;border-radius:50%;background:var(--primary-soft);opacity:.45;pointer-events:none}
.stat.profit-pos::after{background:var(--green-bg)}.stat.profit-neg::after{background:var(--red-bg)}
.trend{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:20px;margin-right:7px}
.trend.up{background:var(--green-bg);color:var(--green)}.trend.down{background:var(--red-bg);color:var(--red)}
.act{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border-2)}
.act:last-child{border-bottom:none}
.act .ttl{font-weight:600;font-size:13.5px}
.act .meta{font-size:11.5px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}
.act-ic{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.act-ic svg{width:16px;height:16px}
.act-ic.sale{background:var(--green-bg);color:var(--green)}
.act-ic.cost{background:var(--red-bg);color:var(--red)}
.act-ic.payment{background:var(--primary-soft);color:var(--primary)}
body[data-theme="dark"] .act-ic.payment{color:#5ee0d2}
.tc{display:flex;align-items:center;gap:12px;padding:9px 0}
.tc .tc-name{width:130px;font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.tc .bar{flex:1;height:8px;border-radius:6px;background:var(--surface-2);overflow:hidden}
.tc .fill{height:100%;border-radius:6px;background:var(--grad);width:0;transition:width .9s cubic-bezier(.2,.9,.3,1)}
.tc .tc-amt{font-weight:700;font-size:12.5px;white-space:nowrap;font-family:'Poppins';flex-shrink:0}
@media(max-width:520px){.tc .tc-name{width:88px}}
.skel{background:linear-gradient(90deg,var(--surface-2) 25%,var(--border-2) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:10px}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.linkbox{background:var(--surface-2);border:1px dashed var(--border);border-radius:11px;padding:14px}
/* premium toggle switch (overrides .fld label rule) */
.fld label.switch,label.switch{display:inline-flex!important;align-items:center;gap:12px;cursor:pointer;font-size:13.5px;font-weight:600;user-select:none;margin-bottom:0!important;color:var(--ink);line-height:1.3}
.switch input[type="checkbox"]{position:absolute;opacity:0;width:0;height:0;pointer-events:none;margin:0}
.switch .track{position:relative;width:44px;height:24px;border-radius:24px;background:var(--border);transition:background .25s ease;flex-shrink:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.switch .track::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .28s cubic-bezier(.34,1.56,.64,1),box-shadow .25s ease;box-shadow:0 1px 3px rgba(0,0,0,.25),0 0 0 1px rgba(0,0,0,.04)}
.switch input:checked + .track{background:var(--primary);box-shadow:inset 0 1px 2px rgba(13,148,136,.4)}
.switch input:checked + .track::after{transform:translateX(20px);box-shadow:0 2px 6px rgba(13,148,136,.4)}
.switch input:focus-visible + .track{box-shadow:0 0 0 3px var(--primary-soft),inset 0 1px 2px rgba(0,0,0,.08)}
.switch .label-txt{flex:1;min-width:0}
.link-hint{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--primary-d);margin-top:12px;font-weight:500}
.link-hint svg{width:14px;height:14px}
body[data-theme="dark"] .link-hint{color:#5ee0d2}
#auth{overflow:hidden}
.auth-orbs span{position:absolute;border-radius:50%;filter:blur(70px);opacity:.45;pointer-events:none}
.auth-orbs span:nth-child(1){width:360px;height:360px;background:#14b8a6;top:-90px;left:-70px;animation:float1 16s ease-in-out infinite}
.auth-orbs span:nth-child(2){width:320px;height:320px;background:#8b2fb0;bottom:-110px;right:-70px;animation:float2 18s ease-in-out infinite}
.auth-orbs span:nth-child(3){width:260px;height:260px;background:#3b6fb5;top:42%;left:54%;animation:float1 20s ease-in-out infinite reverse}
@keyframes float1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,-36px) scale(1.12)}}
@keyframes float2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-34px,28px) scale(.92)}}
.auth-card{position:relative;animation:fadeUp .6s cubic-bezier(.2,.9,.3,1) both}
.auth-card::before{content:'';position:absolute;top:0;left:24px;right:24px;height:3px;border-radius:0 0 4px 4px;background:var(--grad)}
.auth-card .logo-badge.xl{position:relative}
.auth-card .logo-badge.xl::after{content:'';position:absolute;inset:-14px;border-radius:50%;background:radial-gradient(circle,rgba(20,184,166,.35),rgba(139,47,176,.18) 55%,transparent 75%);filter:blur(18px);z-index:-1;animation:glow 4s ease-in-out infinite}
@keyframes glow{0%,100%{opacity:.55;transform:scale(.96)}50%{opacity:.95;transform:scale(1.08)}}
.auth-input-wrap{position:relative;margin-bottom:14px}
.auth-input-wrap input{margin-bottom:0!important;padding-right:44px}
.auth-input-wrap .eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--faint)}
.auth-input-wrap .eye:hover{color:var(--muted)}
.auth-input-wrap .eye svg{width:18px;height:18px}

/* premium polish */
.glass{transition:box-shadow .25s ease, border-color .25s ease, transform .25s ease}
.nav-item{transition:background .2s ease, color .2s ease, transform .15s ease}
.nav-item:active{transform:scale(.97)}
.btn{transition:background .18s ease, border-color .18s ease, transform .12s ease, box-shadow .18s ease}
.icon-btn{transition:background .18s ease, color .18s ease, transform .18s ease}
.icon-btn:active{transform:scale(.92) rotate(-8deg)}
.seg button{transition:background .2s ease, color .2s ease}
.cur-toggle button.active,.seg button.active{box-shadow:0 4px 12px rgba(13,148,136,.32)}
tr{transition:background .15s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.welcome,.stat,.card,.client-card{will-change:transform,opacity}
#view{animation:fadeIn .25s ease both}
.act{transition:background .15s ease;border-radius:8px;padding:11px 8px;margin:0 -8px}
.act:hover{background:var(--surface-2)}
.toast{animation:slideInBounce .45s cubic-bezier(.34,1.56,.64,1) both}
@keyframes slideInBounce{0%{transform:translateX(120%);opacity:0}60%{transform:translateX(-8px);opacity:1}100%{transform:translateX(0)}}
.chip{transition:background .18s ease, color .18s ease, border-color .18s ease, transform .12s ease}
.chip:active{transform:scale(.96)}
.badge{transition:transform .2s ease}
tbody tr:hover .badge{transform:scale(1.04)}
/* page-title smooth replace */
.page-title{transition:opacity .2s ease}

/* ===== RBAC / chips / perms / devices ===== */
.user-chip{display:flex;align-items:center;gap:8px;padding:4px 11px 4px 4px;border-radius:30px;background:var(--surface-2);border:1px solid var(--border);cursor:pointer;transition:.18s}
.user-chip:hover{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.uc-avatar{width:30px;height:30px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}
.uc-meta{display:flex;flex-direction:column;line-height:1.18}
.uc-name{font-weight:600;font-size:13px}
.uc-role{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.uc-role.superadmin{color:#8b2fb0}
.uc-role.employee{color:#3b6fb5}
@media(max-width:640px){.uc-meta{display:none}}
.glass.stat[onclick]{cursor:pointer;position:relative}
.glass.stat[onclick]:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--primary)}
.glass.stat[onclick]:active{transform:translateY(-1px) scale(.992)}
.glass.stat[onclick]::after{content:'→';position:absolute;top:14px;right:16px;font-size:17px;font-weight:700;color:var(--primary);opacity:0;transform:translateX(-5px);transition:.22s cubic-bezier(.2,.9,.3,1)}
.glass.stat[onclick]:hover::after{opacity:.75;transform:translateX(0)}
.perm-grid{border:1px solid var(--border);border-radius:13px;overflow:hidden;margin-top:6px}
.perm-head,.perm-row{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr 1fr;align-items:center}
.perm-head{background:var(--surface-2);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.perm-head span{padding:11px 12px;text-align:center}
.perm-head span:first-child{text-align:left}
.perm-row{border-top:1px solid var(--border)}
.perm-row .perm-sec{padding:11px 12px;font-weight:600;font-size:13px}
.ck{display:flex;align-items:center;justify-content:center;padding:9px;cursor:pointer}
.ck input{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}
.emp-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border:1px solid var(--border);border-radius:13px;margin-bottom:10px;flex-wrap:wrap;transition:.16s}
.emp-row:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.emp-info{display:flex;align-items:center;gap:11px}
.emp-acts{display:flex;gap:8px;flex-wrap:wrap}
.dev-log{display:flex;flex-direction:column;gap:9px}
.dev-item{display:flex;align-items:center;gap:13px;padding:11px 13px;border:1px solid var(--border);border-radius:13px;background:var(--surface-2)}
.dev-ic{width:36px;height:36px;border-radius:10px;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--primary);flex-shrink:0}
.dev-ic svg{width:18px;height:18px}
.dev-meta{flex:1;min-width:0}
.dev-time{font-size:11.5px;color:var(--muted);white-space:nowrap}

/* password show toggle */
.pw-wrap{position:relative}
.pw-wrap input{padding-right:42px;width:100%}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--muted);cursor:pointer;padding:6px;display:flex;align-items:center;border-radius:8px;transition:.15s}
.pw-eye:hover{color:var(--primary);background:var(--surface-2)}
.pw-eye svg{width:18px;height:18px}

/* quotation builder + perm view-only */
.perm-row .pf{color:var(--faint);text-align:center}
.qitem{display:grid;grid-template-columns:1fr 70px 104px 92px 34px;gap:8px;align-items:center;margin-bottom:8px}
.qitem .qline{font-weight:700;font-size:13px;text-align:right;color:var(--ink)}
.qtotals{margin-top:16px;max-width:300px;margin-left:auto}
.qtot-row{display:flex;justify-content:space-between;padding:5px 2px;font-size:13px;color:var(--muted)}
.qtot-row b{color:var(--ink)}
.qtot-row.total{border-top:2px solid var(--primary);margin-top:5px;padding-top:9px}
.qtot-row.total span{font-weight:700;color:var(--ink)}
.qtot-row.total b{color:var(--primary);font-size:17px}
@media(max-width:560px){.qitem{grid-template-columns:1fr 1fr 1fr;}.qitem .qline{grid-column:1/2;text-align:left}}

/* ===== ANIMATION + UI POLISH v1.5 ===== */

/* Page-level enter animation */
@keyframes pageEnter{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
#view{animation:pageEnter .32s cubic-bezier(.2,.9,.3,1)}

/* Staggered card entrance */
#view .glass,.grid .glass{animation:fadeUp .38s cubic-bezier(.2,.9,.3,1) both}
#view .glass:nth-child(1){animation-delay:.04s}
#view .glass:nth-child(2){animation-delay:.08s}
#view .glass:nth-child(3){animation-delay:.12s}
#view .glass:nth-child(4){animation-delay:.16s}
#view .glass:nth-child(5){animation-delay:.20s}
#view .glass:nth-child(6){animation-delay:.24s}

/* Sidebar nav item hover */
.nav-item{transition:background .18s,color .18s,transform .15s,box-shadow .18s}
.nav-item:hover{transform:translateX(3px)}
.nav-item.active{box-shadow:0 2px 12px color-mix(in srgb,var(--primary) 22%,transparent)}

/* Button micro-interactions */
.btn{transition:background .18s,color .18s,border-color .18s,transform .12s,box-shadow .18s,opacity .15s}
.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.12)}
.btn:active:not(:disabled){transform:translateY(0) scale(.97)}
.btn-gold:hover:not(:disabled){box-shadow:0 4px 16px color-mix(in srgb,var(--primary) 35%,transparent)}
.btn-danger:hover:not(:disabled){box-shadow:0 4px 14px rgba(220,38,38,.3)}

/* Input focus ring */
.input,.select,textarea{transition:border-color .18s,box-shadow .18s,background .15s}
.input:focus,.select:focus,textarea:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}

/* Glass card hover lift */
.glass.card{transition:box-shadow .22s,transform .22s,border-color .22s}
.glass.card:hover{box-shadow:0 8px 28px rgba(0,0,0,.10),0 2px 8px rgba(0,0,0,.06)}

/* Stat card count-up pop */
@keyframes statPop{0%{transform:scale(.85);opacity:0}60%{transform:scale(1.06)}100%{transform:scale(1);opacity:1}}
.stat-val{animation:statPop .45s cubic-bezier(.2,.9,.3,1) both}

/* Table row hover */
tbody tr{transition:background .14s}
tbody tr:hover{background:color-mix(in srgb,var(--primary) 5%,transparent) !important}

/* Badge pulse (overdue) */
@keyframes badgePulse{0%,100%{opacity:1}50%{opacity:.7}}
.b-overdue{animation:badgePulse 2s ease-in-out infinite}

/* Switch toggle */
.track{transition:background .22s}
input[type=checkbox]:focus+.track{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 25%,transparent)}

/* Modal scale-in */
@keyframes popIn{from{transform:scale(.93) translateY(12px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.modal{animation:popIn .26s cubic-bezier(.2,.9,.3,1)}

/* Sidebar bottom version chip */
.sidebar-footer{transition:opacity .2s}
.sidebar-footer:hover{opacity:.8}

/* Topbar */
.topbar{transition:box-shadow .2s}

/* Bottom tabbar (mobile) */
.bottom-nav a{transition:color .15s,background .15s}
.bottom-nav a:active{background:color-mix(in srgb,var(--primary) 10%,transparent);border-radius:10px}

/* Scroll smooth */
*{scroll-behavior:smooth}

/* Quotation item row enter */
@keyframes itemSlideIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
.qitem{animation:itemSlideIn .2s ease both}

/* Reminder card rows */
.mini-row{transition:background .15s,transform .15s}
.mini-row:hover{background:var(--surface-2);border-radius:10px;transform:translateX(2px)}

/* Dashboard stats click ripple */
.stat[onclick]{position:relative;overflow:hidden}
.stat[onclick]:active::after{content:'';position:absolute;inset:0;background:rgba(255,255,255,.15);border-radius:inherit;animation:ripple .4s ease}
@keyframes ripple{from{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(2)}}

/* Skeleton shimmer (already exists, tweak speed) */
@media(max-width:640px){
  .form-grid.two{grid-template-columns:1fr !important}
  .toolbar{flex-wrap:wrap;gap:8px}
  .toolbar .spacer{display:none}
  .topbar{padding:10px 14px}
  .modal{padding:18px}
  .qitem{grid-template-columns:1fr 1fr 1fr !important}
}

/* Reduced motion */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
}

/* ===== Cost sub-tabs (Salary / Software / Office Cost) ===== */
.cost-subtabs{display:none;gap:9px;margin-bottom:16px;flex-wrap:wrap}
@media(max-width:860px){.cost-subtabs{display:flex}}
.cost-subtab{display:flex;align-items:center;gap:7px;padding:9px 16px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-weight:600;font-size:13px;cursor:pointer;transition:background .22s,color .22s,border-color .22s,transform .15s,box-shadow .22s}
.cost-subtab svg{width:16px;height:16px;transition:transform .25s}
.cost-subtab:hover{transform:translateY(-1px);border-color:var(--primary);color:var(--ink)}
.cost-subtab.active{background:linear-gradient(135deg,var(--primary),var(--primary-d));color:#fff;border-color:transparent;box-shadow:0 4px 14px color-mix(in srgb,var(--primary) 32%,transparent)}
.cost-subtab.active svg{transform:scale(1.12)}
.cost-subtab:active{transform:translateY(0) scale(.97)}
@keyframes subtabIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
#costSubContent{animation:subtabIn .32s cubic-bezier(.2,.9,.3,1)}
@media(max-width:640px){.cost-subtabs{gap:7px}.cost-subtab{padding:8px 12px;font-size:12.5px;flex:1;justify-content:center}}

/* ===== Sidebar nested Costs group (Salary / Software / Office Cost) — professional ERP style ===== */
.nav-group{display:flex;flex-direction:column;border-radius:11px;transition:background .25s}
.nav-group.expanded{background:var(--surface-2)}
.nav-item .chev{margin-left:auto;width:14px;height:14px;flex-shrink:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .2s;opacity:.45}
.nav-group.expanded>.nav-item .chev{transform:rotate(90deg);opacity:.85}
.nav-group.expanded>.nav-item{color:var(--ink);font-weight:600}
.nav-subwrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1);margin:0 6px}
.nav-group.expanded .nav-subwrap{grid-template-rows:1fr}
.nav-subwrap>div{overflow:hidden;display:flex;flex-direction:column;padding:2px 0 6px;gap:1px}
.nav-subitem{display:flex;align-items:center;gap:9px;padding:8px 10px 8px 16px;border-radius:8px;font-size:12.5px;font-weight:500;color:var(--muted);cursor:pointer;transition:background .16s,color .16s,padding-left .16s;position:relative;margin-left:14px;border-left:2px solid var(--border)}
.nav-subitem svg{width:14px;height:14px;flex-shrink:0;opacity:.75}
.nav-subitem:hover{background:var(--surface);color:var(--ink);padding-left:19px}
.nav-subitem.active{background:var(--surface);color:var(--primary-d);font-weight:700;border-left-color:var(--primary)}
body[data-theme="dark"] .nav-subitem.active{color:#5ee0d2}
.nav-subitem.active svg{opacity:1}
/* ======================================================================
   PREMIUM POLISH — demo banner, disabled-write states, micro-interactions
   Uses only existing CSS variables so the theme/colors stay identical.
   ====================================================================== */

/* ---------- Demo mode banner ---------- */
.demo-banner{
  position:fixed;top:0;left:0;right:0;z-index:300;
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:8px 16px;font-size:12px;font-weight:700;letter-spacing:.4px;
  color:#fff;background:var(--grad);
  box-shadow:0 2px 10px rgba(0,0,0,.15);
  animation:demoBannerIn .4s cubic-bezier(.2,.9,.3,1);
}
@keyframes demoBannerIn{from{transform:translateY(-100%)}to{transform:translateY(0)}}
body.demo-mode #app{margin-top:34px}
@media(max-width:640px){.demo-banner{font-size:10.5px;padding:7px 10px}}

/* Grey out + block pointer feedback on write controls while in demo mode.
   Buttons stay visible (so the UI still looks complete) but signal "locked". */
body.demo-mode .btn-gold,
body.demo-mode .btn-grad,
body.demo-mode .btn-danger,
body.demo-mode [onclick*="Sale("],
body.demo-mode [onclick*="Cost("],
body.demo-mode [onclick*="Client("],
body.demo-mode [onclick*="Pay("],
body.demo-mode [onclick*="Quote("]{
  position:relative;
}
body.demo-mode .btn-gold::after,
body.demo-mode .btn-grad::after{
  content:'🔒';font-size:10px;margin-left:2px;opacity:.85;
}

/* ---------- Sidebar brand — clickable to dashboard ---------- */
.side-brand{cursor:pointer;border-radius:12px;transition:background .18s,transform .15s}
.side-brand:hover{background:var(--surface-2)}
.side-brand:active{transform:scale(.98)}
.side-brand:focus-visible{outline:2px solid var(--primary);outline-offset:2px}

/* ---------- Button micro-interactions ---------- */
.btn{position:relative;overflow:hidden;transition:background .16s,border-color .16s,transform .12s,box-shadow .2s}
.btn:active{transform:translateY(1px) scale(.98)}
.btn-gold,.btn-grad{transition:background .16s,transform .14s cubic-bezier(.2,.9,.3,1),box-shadow .22s}
.btn-gold:hover,.btn-grad:hover{transform:translateY(-1px)}
.btn-gold:active,.btn-grad:active{transform:translateY(0) scale(.97)}
.icon-btn{transition:background .16s,color .16s,transform .14s,box-shadow .2s}
.icon-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.icon-btn:active{transform:translateY(0) scale(.94)}

/* ---------- Card hover lift (dashboard stats, list cards) ---------- */
.stat,.card{transition:transform .22s cubic-bezier(.2,.9,.3,1),box-shadow .22s}
.stat:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.card:hover{box-shadow:var(--shadow-md)}
.stat .ic-box{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.stat:hover .ic-box{transform:scale(1.1) rotate(-4deg)}

/* ---------- Stat value count-up feel ---------- */
@keyframes statPop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.stat .value{animation:statPop .45s cubic-bezier(.2,.9,.3,1)}

/* ---------- Nav item active glow ---------- */
.nav-item{position:relative;transition:background .18s,color .18s,transform .15s}
.nav-item.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--primary) 18%,transparent)}
.nav-item:active{transform:scale(.98)}

/* ---------- Page content fade-in on tab switch ---------- */
@keyframes contentIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.content{animation:contentIn .28s cubic-bezier(.2,.9,.3,1)}

/* ---------- Mini-row hover (recent transactions / lists) ---------- */
.mini-row{transition:background .16s,padding-left .16s;border-radius:8px}
.mini-row:hover{background:var(--surface-2);padding-left:8px}

/* ---------- Logo badge subtle breathing glow (brand polish) ---------- */
@keyframes logoGlow{0%,100%{filter:drop-shadow(0 2px 6px rgba(59,111,181,.18))}50%{filter:drop-shadow(0 4px 12px rgba(20,184,166,.28))}}
.side-brand .logo-badge img{animation:logoGlow 4s ease-in-out infinite}

/* ---------- Welcome banner shimmer accent ---------- */
.welcome::before{background:var(--grad);background-size:200% 100%;animation:shimmerBar 4s ease-in-out infinite}
@keyframes shimmerBar{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

/* ======================================================================
   ACCOUNTING MODULE — premium financial UI
   ====================================================================== */

/* ---------- Accounting sub-tabs (Chart of Accounts / Journal / Ledger / etc.) ---------- */
.acc-subtabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.acc-subtab{display:flex;align-items:center;gap:7px;padding:10px 16px;border-radius:11px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-weight:600;font-size:13px;cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .15s,box-shadow .2s}
.acc-subtab svg{width:15px;height:15px}
.acc-subtab:hover{transform:translateY(-1px);border-color:var(--primary);color:var(--ink)}
.acc-subtab.active{background:linear-gradient(135deg,var(--primary),var(--primary-d));color:#fff;border-color:transparent;box-shadow:0 4px 14px color-mix(in srgb,var(--primary) 34%,transparent)}
.acc-subtab:active{transform:translateY(0) scale(.97)}

/* ---------- Financial statement layout ---------- */
.fin-statement{max-width:820px;margin:0 auto}
.fin-statement .fin-header{text-align:center;padding:8px 0 22px;border-bottom:2px solid var(--ink);margin-bottom:4px}
.fin-statement .fin-header h2{font-size:19px;font-weight:800;font-family:'Poppins';letter-spacing:-.3px}
.fin-statement .fin-header .fin-sub{font-size:12.5px;color:var(--muted);margin-top:4px;font-weight:500}
.fin-section{margin:20px 0}
.fin-section-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.9px;color:var(--primary-d);padding:8px 0;border-bottom:1px solid var(--border-2);margin-bottom:6px}
body[data-theme="dark"] .fin-section-title{color:#5ee0d2}
.fin-row{display:flex;align-items:center;justify-content:space-between;padding:8px 4px;font-size:13.5px;border-bottom:1px dashed var(--border-2)}
.fin-row:last-child{border-bottom:none}
.fin-row .fin-code{font-size:11px;color:var(--faint);font-weight:600;margin-right:8px;min-width:38px;display:inline-block}
.fin-row .fin-amt{font-weight:700;font-family:'Poppins';font-variant-numeric:tabular-nums}
.fin-total-row{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;font-size:14.5px;font-weight:800;border-top:2px solid var(--ink);margin-top:6px}
.fin-total-row .fin-amt{font-family:'Poppins';font-size:17px}
.fin-grand-total{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-radius:var(--radius);background:linear-gradient(135deg,var(--primary-soft),transparent);border:1px solid var(--primary);margin-top:16px}
.fin-grand-total .lbl{font-size:13px;font-weight:700;color:var(--primary-d)}
body[data-theme="dark"] .fin-grand-total .lbl{color:#5ee0d2}
.fin-grand-total .fin-amt{font-size:22px;font-weight:800;font-family:'Poppins'}
.fin-grand-total.profit .fin-amt{color:var(--green)}
.fin-grand-total.loss .fin-amt{color:var(--red)}

/* ---------- Balanced/unbalanced indicator pill ---------- */
.bal-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:5px 12px;border-radius:20px}
.bal-pill.ok{color:var(--green);background:var(--green-bg);border:1px solid #bfe6cd}
.bal-pill.bad{color:var(--red);background:var(--red-bg);border:1px solid #f6c6d2}
body[data-theme="dark"] .bal-pill.ok{border-color:#22503a}
body[data-theme="dark"] .bal-pill.bad{border-color:#5b2230}

/* ---------- Chart of Accounts tree ---------- */
.coa-group{margin-bottom:18px}
.coa-group-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:var(--surface-2);font-weight:700;font-size:13px;margin-bottom:6px}
.coa-type-badge{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;padding:3px 8px;border-radius:6px}
.coa-type-badge.asset{background:var(--green-bg);color:var(--green)}
.coa-type-badge.liability{background:var(--red-bg);color:var(--red)}
.coa-type-badge.equity{background:var(--amber-bg);color:var(--amber)}
.coa-type-badge.revenue{background:var(--primary-soft);color:var(--primary-d)}
body[data-theme="dark"] .coa-type-badge.revenue{color:#5ee0d2}
.coa-type-badge.expense{background:#f0e6fb;color:#8b2fb0}
body[data-theme="dark"] .coa-type-badge.expense{background:#2a1c38;color:#c99ee8}
.coa-row{display:flex;align-items:center;gap:12px;padding:9px 14px 9px 28px;font-size:13px;border-bottom:1px solid var(--border-2)}
.coa-row:last-child{border-bottom:none}
.coa-row .coa-code{font-family:'Poppins';font-weight:700;font-size:12px;color:var(--faint);min-width:44px}
.coa-row .coa-name{flex:1;font-weight:600}

/* ---------- Ledger account cards ---------- */
.ledger-account{margin-bottom:22px}
.ledger-account-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--surface-2);border-radius:10px 10px 0 0;border:1px solid var(--border)}
.ledger-account-head .name{font-weight:700;font-size:13.5px}
.ledger-account-head .code{font-size:11px;color:var(--faint);font-family:'Poppins';font-weight:700;margin-right:8px}
.ledger-account-head .closing{font-family:'Poppins';font-weight:800;font-size:14.5px}
.ledger-table{border:1px solid var(--border);border-top:none;border-radius:0 0 10px 10px;overflow:hidden}

/* ---------- KPI strip (accounting overview cards) ---------- */
.acc-kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}
.acc-kpi{padding:16px 18px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .2s,box-shadow .2s}
.acc-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.acc-kpi::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px}
.acc-kpi.assets::before{background:var(--green)}
.acc-kpi.liabilities::before{background:var(--red)}
.acc-kpi.equity::before{background:var(--amber)}
.acc-kpi.income::before{background:var(--primary)}
.acc-kpi .lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.acc-kpi .val{font-size:20px;font-weight:800;font-family:'Poppins';margin-top:8px;letter-spacing:-.4px}

/* ---------- Purchase status badges reuse .badge, vendor pill ---------- */
.vendor-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--muted);background:var(--surface-2);padding:4px 10px;border-radius:20px}

/* ---------- Journal entry line detail (double-entry visual) ---------- */
.je-lines{background:var(--surface-2);border-radius:9px;padding:10px 12px;margin-top:6px}
.je-line-row{display:flex;align-items:center;gap:10px;font-size:12px;padding:4px 0}
.je-line-row .acct{flex:1;color:var(--muted);font-weight:500}
.je-line-row .dr{color:var(--ink);font-weight:700;font-family:'Poppins';min-width:80px;text-align:right}
.je-line-row .cr{color:var(--primary-d);font-weight:700;font-family:'Poppins';min-width:80px;text-align:right}
body[data-theme="dark"] .je-line-row .cr{color:#5ee0d2}

/* ======================================================================
   CRM — lead pipeline (kanban board)
   ====================================================================== */
.kanban-wrap{display:flex;gap:14px;overflow-x:auto;padding-bottom:8px}
.kanban-col{flex:1 1 0;min-width:230px;background:var(--surface-2);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:10px}
.kanban-col-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px;border-bottom:2px solid var(--border-2)}
.kanban-col-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.kanban-col-count{font-size:11px;font-weight:700;color:var(--faint);background:var(--surface);padding:2px 8px;border-radius:10px}
.kanban-col.stage-new .kanban-col-head{border-color:var(--faint)}
.kanban-col.stage-contacted .kanban-col-head{border-color:#3b82f6}
.kanban-col.stage-proposal .kanban-col-head{border-color:var(--amber)}
.kanban-col.stage-won .kanban-col-head{border-color:var(--green)}
.kanban-col.stage-lost .kanban-col-head{border-color:var(--red)}
.kanban-cards{display:flex;flex-direction:column;gap:9px;min-height:60px}
.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;cursor:pointer;transition:transform .16s,box-shadow .16s,border-color .16s}
.kanban-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--primary)}
.kanban-card .kc-name{font-weight:700;font-size:13px;margin-bottom:2px}
.kanban-card .kc-company{font-size:11.5px;color:var(--muted);margin-bottom:8px}
.kanban-card .kc-value{font-family:'Poppins';font-weight:800;font-size:14px;color:var(--primary-d)}
body[data-theme="dark"] .kanban-card .kc-value{color:#5ee0d2}
.kanban-card .kc-meta{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.kc-source-badge{font-size:10px;font-weight:700;padding:3px 8px;border-radius:10px;background:var(--surface-2);color:var(--muted)}
.kc-empty{text-align:center;padding:20px 8px;color:var(--faint);font-size:12px}

/* ---------- Lead detail modal: activity timeline ---------- */
.activity-timeline{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.activity-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border-2)}
.activity-item:last-child{border-bottom:none}
.activity-ic{width:30px;height:30px;border-radius:9px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--primary-soft);color:var(--primary)}
body[data-theme="dark"] .activity-ic{color:#5ee0d2}
.activity-ic svg{width:15px;height:15px}
.activity-body .activity-type{font-size:12px;font-weight:700;color:var(--ink)}
.activity-body .activity-date{font-size:11px;color:var(--faint);margin-left:6px;font-weight:500}
.activity-body .activity-desc{font-size:12.5px;color:var(--muted);margin-top:2px}

/* ---------- Stage move dropdown on card ---------- */
.stage-select{width:100%;margin-top:8px;font-size:11.5px;padding:5px 8px;border-radius:7px;background:var(--surface-2);border:1px solid var(--border);color:var(--muted);font-weight:600}
