/* ===================================================================
   BisenLedger — module components (Phase 2+). Loaded after app.css.
   =================================================================== */

/* ---- ghost button / small ---- */
.btn-ghost{display:inline-flex;align-items:center;gap:7px;font-size:13px;border:1px solid var(--line2);
  background:var(--card);border-radius:var(--r-md);padding:9px 13px;color:var(--muted);cursor:pointer;font-family:inherit;}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent);}
.btn-ghost.sm{padding:7px 11px;font-size:12px;}
.pos{color:var(--green)!important;} .neg{color:var(--red)!important;}

/* ---- KPI grid ---- */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:14px;}
.kpi{background:var(--sec);border-radius:var(--r-md);padding:13px 14px;}
.kpi-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-bottom:7px;}
.kpi-label .ti{font-size:15px;}
.kpi-value{font-size:23px;font-weight:600;line-height:1.1;}
.kpi-accent{background:var(--green-50);}
.kpi-accent .kpi-label{color:var(--green);}
.kpi-accent .kpi-value{color:var(--green-ink);}

/* ---- stat strip ---- */
.statstrip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-md);padding:10px 13px;font-size:12.5px;color:var(--muted);margin-bottom:14px;}
.statstrip b{color:var(--ink);font-weight:600;}
.statstrip .sep{color:var(--line2);}
.statstrip .ti{font-size:14px;vertical-align:-2px;}

/* ---- panels / charts ---- */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:15px 16px;box-shadow:var(--shadow);margin-bottom:14px;}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap;}
.panel-title{font-size:13.5px;font-weight:600;color:var(--ink);}
.panel-title.mb{margin-bottom:12px;}
.legend{display:flex;gap:12px;font-size:11px;color:var(--muted);}
.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:0;}
.trend .grid{stroke:var(--line);stroke-width:.5;}
.trend .axis{font-size:10px;fill:var(--faint);}
.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;}

/* ---- bar rows ---- */
.bar-row{margin-bottom:11px;}
.bar-top{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:5px;color:var(--muted);}
.bar-top b{color:var(--ink);font-weight:600;}
.bar-track{height:8px;border-radius:4px;background:var(--sec);overflow:hidden;}
.bar-fill{height:8px;border-radius:4px;background:#1D9E75;}
.bar-fill.is-loss{background:#E24B4A;}

/* ---- pipeline ---- */
.pipe-row{display:flex;align-items:center;gap:9px;margin-bottom:9px;}
.pipe-label{font-size:12px;color:var(--muted);width:108px;flex:none;}
.pipe-bar{height:18px;border-radius:4px;display:flex;align-items:center;padding-left:8px;min-width:26px;}
.pipe-bar span{font-size:11px;font-weight:600;}

/* ---- highlight card ---- */
.highlight{background:var(--green-50);border-radius:var(--r-lg);padding:14px 16px;margin-bottom:14px;}
.hl-label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:600;color:var(--green);margin-bottom:8px;}
.hl-name{font-size:16px;font-weight:600;color:var(--green-ink);}
.hl-sub{font-size:12px;color:var(--green);margin-top:3px;}

/* ---- activity ---- */
.activity-item{display:flex;gap:10px;align-items:flex-start;padding:7px 0;}
.ai-dot{color:var(--accent);font-size:16px;line-height:1;margin-top:2px;}
.ai-text{font-size:12.5px;color:var(--ink);}
.ai-meta{font-size:11px;color:var(--faint);}

/* ---- empty states ---- */
.empty{display:flex;align-items:center;gap:8px;justify-content:center;color:var(--faint);font-size:13px;padding:18px;text-align:center;}
.empty .ti{font-size:18px;}
.empty a{color:var(--accent);}
.empty.hidden,.hidden{display:none;}
.empty-card{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding:36px 20px;}
.empty-card>.ti{font-size:34px;color:var(--faint);}
.empty-title{font-size:16px;font-weight:600;}
.empty-card p{font-size:13px;color:var(--muted);margin:0 0 6px;}

/* ---- info banner ---- */
.banner-info{display:flex;gap:9px;align-items:flex-start;background:var(--accent-50);color:var(--accent-700);
  border-radius:var(--r-md);padding:11px 13px;font-size:12.5px;margin-bottom:16px;}
.banner-info .ti{font-size:17px;flex:none;}

/* ---- toolbar / inline search ---- */
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.search-inline{position:relative;flex:1;min-width:160px;max-width:340px;}
.search-inline .ti{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--faint);font-size:15px;}
.search-inline input{width:100%;height:36px;padding-left:32px;font-size:13px;background:var(--card);}

/* ---- breadcrumb ---- */
.crumb{font-size:12px;color:var(--faint);margin-bottom:10px;display:flex;align-items:center;gap:6px;}
.crumb a{color:var(--muted);} .crumb a:hover{color:var(--accent);} .crumb .ti{font-size:13px;}

/* ---- monogram ---- */
.mono{width:40px;height:40px;border-radius:var(--r-md);display:inline-flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;flex:none;}
.mono.lg{width:46px;height:46px;font-size:21px;}

/* ---- company cards ---- */
.co-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;}
.co-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:15px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:13px;}
.co-card.is-top{border:2px solid var(--accent);}
.co-card.is-risk{border:1px solid #E7B4B4;}
.co-head{display:flex;align-items:flex-start;gap:11px;}
.co-id{min-width:0;flex:1;}
.co-name{font-size:15px;font-weight:600;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.co-meta{font-size:11px;color:var(--faint);margin-top:2px;}
.badge{font-size:10px;font-weight:600;border-radius:var(--r-md);padding:2px 7px;}
.ribbon{font-size:10px;font-weight:600;border-radius:var(--r-md);padding:2px 8px;display:inline-flex;align-items:center;gap:4px;flex:none;}
.ribbon.blue{color:var(--accent-700);background:var(--accent-50);}
.ribbon.red{color:var(--red);background:var(--red-50);}
.co-profit{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;}
.co-profit .lbl{font-size:11px;color:var(--muted);}
.co-profit .val{font-size:24px;font-weight:600;line-height:1.1;}
.co-profit .roi{font-size:11px;color:var(--muted);text-align:right;}
.co-mini{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.co-mini>div{background:var(--sec);border-radius:var(--r-md);padding:8px 9px;}
.co-mini span{font-size:10px;color:var(--muted);display:block;}
.co-mini b{font-size:13px;font-weight:600;}
.co-bar .track{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--sec);}
.co-bar .fill{height:8px;}
.co-bar .fill.exp{background:#E24B4A;} .co-bar .fill.prof{background:#1D9E75;} .co-bar .fill.loss{background:#E24B4A;}
.bar-legend{display:flex;gap:14px;margin-top:5px;font-size:11px;color:var(--faint);}
.bar-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;}
.bar-note{font-size:11px;margin-top:5px;} .bar-note.neg{color:var(--red);}
.co-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:11px;}
.co-actions{display:flex;gap:2px;align-items:center;}
.ico{width:32px;height:32px;border-radius:var(--r-md);display:inline-flex;align-items:center;justify-content:center;color:var(--faint);font-size:16px;border:none;background:transparent;cursor:pointer;}
.ico:hover{background:var(--sec);color:var(--ink);}
.ico.danger{color:var(--red);} .ico.danger:hover{background:var(--red-50);}
.co-actions form{display:inline;}
.co-show-id{display:flex;align-items:flex-start;gap:12px;}
.head-actions{display:flex;gap:8px;align-items:center;}

/* ---- forms ---- */
.form-stack{display:flex;flex-direction:column;gap:14px;}
.sec-head{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--ink);margin-bottom:13px;}
.sec-head .ti{font-size:18px;color:var(--accent);}
.sec-note{font-size:11.5px;color:var(--faint);margin:0 0 13px;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:13px;}
.grid2 .full{grid-column:1/-1;}
.req{color:var(--red);} .opt{color:var(--faint);font-weight:400;}
.mono-pick{display:flex;align-items:center;gap:14px;margin-bottom:15px;flex-wrap:wrap;}
.swatches{display:flex;gap:7px;margin-top:6px;}
.sw{width:22px;height:22px;border-radius:50%;cursor:pointer;box-shadow:0 0 0 2px var(--card);}
.sw.on{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px currentColor;}
.segmented{display:inline-flex;border:1px solid var(--line2);border-radius:var(--r-md);overflow:hidden;}
.segmented span{font-size:12px;padding:8px 14px;cursor:pointer;color:var(--muted);border-left:1px solid var(--line2);}
.segmented span:first-child{border-left:none;}
.segmented span.on{background:var(--accent-50);color:var(--accent-700);font-weight:600;}
.rupee{position:relative;}
.rupee span{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--faint);}
.rupee input{padding-left:24px;}
.form-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.foot-btns{display:flex;gap:9px;}
.mt{margin-top:4px;}

/* ---- settings ---- */
.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;}
.set-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:15px;box-shadow:var(--shadow);}
.set-card:hover:not(.soon){border-color:var(--accent);}
.set-card.soon{opacity:.6;}
.set-ic{width:40px;height:40px;border-radius:var(--r-md);background:var(--sec);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-size:20px;flex:none;}
.set-ic.blue{background:var(--accent-50);color:var(--accent);}
.set-title{font-size:14px;font-weight:600;}
.set-sub{font-size:12px;color:var(--muted);}
.set-card .go{margin-left:auto;color:var(--faint);}

@media (max-width:560px){ .grid2{grid-template-columns:1fr;} .co-mini{grid-template-columns:1fr 1fr 1fr;} }

/* ===================================================================
   Phase 3 — tables, project detail, smart capture, collections
   =================================================================== */

/* ---- data tables ---- */
.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow-x:auto;box-shadow:var(--shadow);}
.data-table{width:100%;border-collapse:collapse;font-size:13px;min-width:560px;}
.data-table thead th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:var(--faint);
  font-weight:600;padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap;}
.data-table tbody td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top;}
.data-table tbody tr:last-child td{border-bottom:none;}
.data-table tbody tr:hover{background:var(--sec);}
.data-table .num{text-align:right;white-space:nowrap;}
.data-table .ta-right{text-align:right;white-space:nowrap;}
.data-table .t-link{font-weight:600;color:var(--accent-700);}
.data-table .t-link:hover{color:var(--accent);}
.t-sub{font-size:11px;color:var(--faint);margin-top:2px;}
.data-table form{display:inline;}

/* ---- project detail: money flow ---- */
.flow-bar{display:flex;height:30px;border-radius:var(--r-md);overflow:hidden;background:var(--sec);}
.flow-exp{background:#E24B4A;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;}
.flow-prof{background:#1D9E75;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;}
.flow-legend{display:flex;gap:16px;margin-top:9px;font-size:11.5px;color:var(--muted);flex-wrap:wrap;}
.flow-legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;}
.cand-progress{margin-top:16px;}
.cp-top{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);margin-bottom:6px;}
.cp-top b{color:var(--ink);}
.cp-note{font-size:11px;color:var(--faint);margin-top:5px;}

/* ---- smart capture / form layout ---- */
.cap-layout{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.cap-fields{flex:1;min-width:280px;}
.cap-shot{flex:none;width:220px;}
.shot-img{width:100%;border-radius:var(--r-lg);border:1px solid var(--line);display:block;}
.file-chip{display:inline-flex;align-items:center;gap:8px;background:var(--sec);border:1px solid var(--line2);
  border-radius:var(--r-md);padding:11px 13px;font-size:13px;color:var(--ink);}
.re-scan{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--accent);margin-top:9px;}
.ai{font-size:10px;font-weight:600;border-radius:9px;padding:1px 7px;display:inline-flex;align-items:center;gap:3px;vertical-align:1px;}
.ai.auto{color:var(--accent-700);background:var(--accent-50);}
.ai.sug{color:var(--amber);background:var(--amber-50);}
.ai .ti{font-size:11px;}
.banner-success{display:flex;gap:9px;align-items:flex-start;background:var(--green-50);color:var(--green-ink);
  border-radius:var(--r-md);padding:11px 13px;font-size:12.5px;margin-bottom:16px;}
.banner-success .ti{font-size:17px;color:var(--green);flex:none;}

/* ---- dropzone ---- */
.dropzone{display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;cursor:pointer;
  border:1.5px dashed var(--line2);border-radius:var(--r-lg);padding:28px 16px;background:var(--sec);}
.dropzone:hover{border-color:var(--accent);background:var(--accent-50);}
.dropzone>.ti{font-size:34px;color:var(--faint);}
.dz-title{font-size:14px;font-weight:600;}
.dz-sub{font-size:12px;color:var(--muted);}
.dz-name{font-size:12px;color:var(--accent);margin-top:6px;font-weight:600;}

/* ---- manager action cards ---- */
.action-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;}
.action-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:15px;box-shadow:var(--shadow);}
.action-card.primary{border-color:var(--accent);background:var(--accent-50);}
.action-card:hover{border-color:var(--accent);}
.ac-ic{width:42px;height:42px;border-radius:var(--r-md);background:var(--sec);color:var(--accent);
  display:inline-flex;align-items:center;justify-content:center;font-size:21px;flex:none;}
.action-card.primary .ac-ic{background:#fff;}
.ac-title{font-size:14px;font-weight:600;}
.ac-sub{font-size:12px;color:var(--muted);}

/* ---- collection live summary ---- */
.live-summary{background:var(--sec);border-radius:var(--r-md);padding:13px;}
.ls-row{display:flex;justify-content:space-between;font-size:12.5px;padding:5px 0;color:var(--muted);}
.ls-row b{color:var(--ink);font-weight:600;}
.ls-sep{height:1px;background:var(--line);margin:6px 0;}
.ls-note{font-size:11px;color:var(--faint);margin-top:9px;}

@media (max-width:640px){ .cap-shot{width:100%;} .action-cards{grid-template-columns:1fr;} }

/* ===================================================================
   Polish — native date + file inputs styled to match the design system
   =================================================================== */
input[type="date"]{
  width:100%;font-size:14px;font-family:inherit;color:var(--ink);background:#fff;
  border:1px solid var(--line2);border-radius:var(--r-md);padding:9px 12px;outline:none;
}
input[type="date"]:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(24,95,165,.13);}
input[type="date"]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6;}
input[type="date"]::-webkit-calendar-picker-indicator:hover{opacity:1;}

/* custom file upload control */
.file-up{display:flex;align-items:center;gap:10px;border:1px solid var(--line2);border-radius:var(--r-md);
  padding:6px;background:#fff;cursor:pointer;transition:border-color .15s;}
.file-up:hover{border-color:var(--accent);}
.file-up-btn{display:inline-flex;align-items:center;gap:7px;background:var(--accent-50);color:var(--accent-700);
  border-radius:var(--r-sm);padding:8px 13px;font-size:13px;font-weight:600;flex:none;}
.file-up-btn .ti{font-size:16px;}
.file-up-name{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.file-up.has-file{border-color:var(--accent);}
.file-up.has-file .file-up-name{color:var(--ink);font-weight:500;}

/* ===================================================================
   Phase 4 — Pipeline Kanban + Follow-ups
   =================================================================== */
.kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px;scroll-snap-type:x proximity;}
.kanban-col{flex:none;width:248px;background:var(--sec);border:1px solid var(--line);border-radius:var(--r-lg);
  display:flex;flex-direction:column;scroll-snap-align:start;}
.kanban-col.drop-over{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-50);}
.kcol-head{display:flex;align-items:center;gap:7px;padding:11px 12px;border-bottom:1px solid var(--line);}
.kdot{width:9px;height:9px;border-radius:50%;background:var(--stage);flex:none;}
.kcol-title{font-size:12.5px;font-weight:600;color:var(--ink);}
.kcol-count{font-size:11px;font-weight:600;color:var(--muted);background:var(--card);border:1px solid var(--line2);
  border-radius:20px;padding:1px 8px;}
.kcol-add{margin-left:auto;color:var(--faint);font-size:16px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;}
.kcol-add:hover{background:var(--card);color:var(--accent);}
.kcol-body{flex:1;padding:10px;display:flex;flex-direction:column;gap:9px;min-height:90px;}
.kcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:11px;
  box-shadow:var(--shadow);cursor:grab;}
.kcard:active{cursor:grabbing;}
.kcard.dragging{opacity:.45;}
.kcard-title{font-size:13px;font-weight:600;line-height:1.3;margin-bottom:5px;}
.kcard-meta{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px;}
.kcard-meta .ti{font-size:13px;}
.kcard-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}
.ktag{font-size:10.5px;color:var(--muted);background:var(--sec);border-radius:5px;padding:2px 7px;display:inline-flex;align-items:center;gap:4px;}
.ktag .ti{font-size:12px;}
.kcard-fu{font-size:11px;color:var(--amber);margin-top:7px;display:flex;align-items:center;gap:5px;}
.kcard-foot{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);}
.kmove{flex:1;min-width:0;font-size:11px;padding:5px 7px;border:1px solid var(--line2);border-radius:6px;background:#fff;color:var(--muted);}
.kcard-actions{display:flex;align-items:center;gap:1px;}
.kcard-actions form{display:inline;}
.kcard-actions .ico{width:28px;height:28px;font-size:15px;}
.kcol-empty{font-size:11px;color:var(--faint);text-align:center;padding:18px 6px;border:1px dashed var(--line2);border-radius:var(--r-md);}

/* follow-ups */
.fu-group{margin-bottom:16px;}
.fu-ghead{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:8px;}
.fu-gcount{font-size:11px;color:var(--faint);font-weight:400;}
.fu-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.fu-row:last-child{border-bottom:none;}
.fu-row.is-done{opacity:.6;}
.fu-row.is-done .fu-title{text-decoration:line-through;}
.fu-ic{width:32px;height:32px;border-radius:var(--r-md);background:var(--sec);display:inline-flex;align-items:center;justify-content:center;font-size:17px;flex:none;}
.fu-main{flex:1;min-width:140px;}
.fu-title{font-size:13.5px;font-weight:600;}
.fu-meta{font-size:11.5px;color:var(--faint);margin-top:2px;}
.fu-date{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px;white-space:nowrap;}
.fu-date .ti{font-size:14px;}
.fu-actions{display:flex;align-items:center;gap:5px;}
.fu-actions form{display:inline;}

@media (max-width:768px){ .kanban-col{width:80vw;max-width:300px;} }

/* ===================================================================
   Phase 5 — Compliance + Reports
   =================================================================== */
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none;}
input[type="month"]{width:100%;font-size:14px;font-family:inherit;color:var(--ink);background:#fff;
  border:1px solid var(--line2);border-radius:var(--r-md);padding:9px 12px;outline:none;}
input[type="month"]:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(24,95,165,.13);}
.gen-form{display:flex;align-items:center;gap:8px;}
.gen-form input[type="month"]{width:auto;}

.cmp-row{display:flex;align-items:center;gap:11px;padding:12px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.cmp-row:last-child{border-bottom:none;}
.cmp-main{flex:1;min-width:130px;}
.cmp-title{font-size:13.5px;font-weight:600;}
.cmp-sub{font-size:11.5px;color:var(--faint);margin-top:2px;}
.cmp-due{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:96px;}
.cmp-due .ti{font-size:14px;}
.cmp-amt{font-size:13.5px;font-weight:600;min-width:70px;text-align:right;}
.cmp-actions{display:flex;align-items:center;gap:6px;}
.cmp-actions form{display:inline;}

/* ===================================================================
   Phase 8 — forecast tiles + needs-attention widget
   =================================================================== */
.forecast-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px;}
.fc-tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;box-shadow:var(--shadow);}
.fc-tile.fc-accent{background:var(--accent-50);border-color:#CFE2F4;}
.fc-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-bottom:8px;}
.fc-label .ti{font-size:15px;}
.fc-value{font-size:22px;font-weight:600;line-height:1.1;}
.fc-unit{font-size:12px;color:var(--muted);font-weight:400;}
.fc-sub{font-size:11px;color:var(--faint);margin-top:4px;}
.attn-panel .panel-title{display:flex;align-items:center;gap:7px;}
.attn-row{display:flex;align-items:center;gap:11px;padding:10px 4px;border-bottom:1px solid var(--line);}
.attn-row:last-child{border-bottom:none;}
.attn-ic{font-size:17px;flex:none;}
.attn-text{flex:1;font-size:13px;color:var(--ink);}
.attn-go{color:var(--faint);font-size:16px;}
.attn-row:hover .attn-text{color:var(--accent);}

/* ===================================================================
   Premium executive dashboard
   =================================================================== */
.hero{position:relative;overflow:hidden;border-radius:18px;padding:26px 26px 20px;margin-bottom:16px;
  background:linear-gradient(135deg,#16314F 0%,#0C447C 62%,#185FA5 100%);
  box-shadow:0 18px 40px -18px rgba(12,68,124,.55);color:#fff;}
.hero::before{content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 1px);background-size:22px 22px;}
.hero-glow{position:absolute;top:-120px;right:-80px;width:340px;height:340px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(176,137,47,.38),transparent 70%);}
.hero-main{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap;}
.hero-greet{font-size:21px;font-weight:600;letter-spacing:.1px;}
.hero-date{font-size:12px;color:rgba(255,255,255,.72);margin-top:5px;display:flex;align-items:center;gap:6px;}
.hero-date b{color:#fff;}
.hero-profit-label{margin-top:18px;font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:#D8B45C;font-weight:600;}
.hero-profit{font-size:44px;font-weight:700;line-height:1.05;letter-spacing:-.5px;
  background:linear-gradient(90deg,#fff 30%,#CFE2F4);-webkit-background-clip:text;background-clip:text;color:transparent;}
.hero-profit.neg{background:linear-gradient(90deg,#FFC9C9,#FF8F8F);-webkit-background-clip:text;background-clip:text;}
.hero-chips{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap;}
.hchip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:6px 11px;border-radius:999px;
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(3px);}
.hchip .ti{font-size:14px;color:#D8B45C;}

.gauge{width:118px;height:118px;flex:none;}
.g-track{fill:none;stroke:rgba(255,255,255,.14);stroke-width:8;}
.g-fill{fill:none;stroke:#D8B45C;stroke-width:8;stroke-linecap:round;transform:rotate(-90deg);transform-origin:center;
  transition:stroke-dashoffset 1.2s cubic-bezier(.22,.8,.3,1);}
.g-num{fill:#fff;font-size:17px;font-weight:700;}
.g-cap{fill:rgba(255,255,255,.65);font-size:8.5px;letter-spacing:1px;text-transform:uppercase;}

.hero-kpis{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:22px;}
.hk{display:flex;gap:11px;align-items:flex-start;background:rgba(255,255,255,.97);border-radius:14px;padding:13px 14px;
  box-shadow:0 10px 24px -14px rgba(9,30,54,.5);transition:transform .18s ease,box-shadow .18s ease;}
.hk:hover{transform:translateY(-3px);box-shadow:0 16px 30px -14px rgba(9,30,54,.55);}
.hk-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none;color:#fff;font-size:18px;}
.ic-blue{background:linear-gradient(135deg,#378ADD,#0C447C);}
.ic-red{background:linear-gradient(135deg,#E9705F,#A32D2D);}
.ic-gold{background:linear-gradient(135deg,#D8B45C,#8a6a20);}
.ic-green{background:linear-gradient(135deg,#2BB48A,#0F6E56);}
.hk-label{font-size:11px;color:var(--muted);letter-spacing:.4px;text-transform:uppercase;font-weight:600;}
.hk-value{font-size:19px;font-weight:700;color:var(--ink);margin-top:2px;}
.hk-value.neg,.fc-hero-value .neg{color:var(--red);}
.hk-unit{font-size:11px;color:var(--muted);font-weight:500;}
.hk-sub{font-size:10.5px;color:var(--faint);margin-top:2px;}
.spark{width:96px;height:26px;margin-top:3px;display:block;}
.spark path{fill:none;stroke:#0F6E56;stroke-width:2;stroke-linecap:round;}

.deck{display:grid;grid-template-columns:1fr 1.4fr;gap:14px;margin-bottom:14px;}
@media(max-width:900px){.deck{grid-template-columns:1fr;}}
.fc-hero{position:relative;display:flex;gap:14px;align-items:flex-start;border-radius:16px;padding:20px;
  background:linear-gradient(135deg,#E6F1FB,#F6FAFE 70%);border:1px solid #CFE2F4;overflow:hidden;}
.fc-hero-ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;flex:none;font-size:22px;color:#fff;
  background:linear-gradient(135deg,#185FA5,#0C447C);box-shadow:0 8px 18px -8px rgba(24,95,165,.6);}
.fc-hero-label{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--accent-700);font-weight:700;}
.fc-hero-value{font-size:30px;font-weight:700;color:var(--navy);margin-top:4px;line-height:1.05;}
.fc-hero-sub{font-size:12px;color:var(--muted);margin-top:5px;}
.fc-hero-go{position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;
  background:#fff;color:var(--accent);border:1px solid #CFE2F4;transition:all .15s;}
.fc-hero-go:hover{background:var(--accent);color:#fff;}

.attn-row{border-left:3px solid transparent;padding-left:9px;border-radius:0 8px 8px 0;transition:background .15s;}
.attn-row.t-red{border-left-color:var(--red);}
.attn-row.t-amber{border-left-color:var(--amber);}
.attn-row:hover{background:var(--accent-50);}

.chart-panel .chart-wrap{position:relative;}
.trend2 .grid{stroke:var(--line);stroke-width:1;}
.trend2 .axis{fill:var(--faint);font-size:10px;}
.pt{stroke:#fff;stroke-width:1.6;}
.pt-col{fill:#185FA5;}
.pt-exp{fill:#E24B4A;}
.chart-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;
  font-size:12.5px;color:var(--faint);background:linear-gradient(180deg,transparent,rgba(255,255,255,.6));}
.chart-empty .ti{font-size:17px;}

.hl-premium{position:relative;overflow:hidden;background:linear-gradient(135deg,#16314F,#0C447C);
  border:none;box-shadow:0 14px 30px -16px rgba(12,68,124,.6);}
.hl-premium .hl-label{color:#D8B45C;}
.hl-premium .hl-name,.hl-premium .hl-sub{color:#fff;}
.hl-premium .hl-sub{color:rgba(255,255,255,.75);}
.hl-mark{position:absolute;right:-14px;bottom:-18px;font-size:110px;color:rgba(216,180,92,.14);pointer-events:none;}

.pipe-label{display:flex;align-items:center;gap:7px;}

/* entrance motion */
@keyframes riseIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
.rise{animation:riseIn .55s cubic-bezier(.22,.8,.3,1) both;}
.rise.d1{animation-delay:.08s;}
.rise.d2{animation-delay:.16s;}
.rise.d3{animation-delay:.24s;}
.rise.d4{animation-delay:.32s;}
@keyframes growW{from{width:0;}}
.grow{animation:growW .9s cubic-bezier(.22,.8,.3,1) both;animation-delay:.35s;}
@keyframes drawA{from{opacity:0;}to{opacity:1;}}
.draw-area{animation:drawA 1s ease .3s both;}
@media (prefers-reduced-motion: reduce){
  .rise,.grow,.draw-area{animation:none !important;}
  .g-fill{transition:none;}
}
@media(max-width:700px){
  .hero{padding:20px 16px 16px;border-radius:15px;}
  .hero-profit{font-size:34px;}
  .gauge{width:92px;height:92px;}
}

/* ===================================================================
   Premium sidebar — navy identity, gold active, grouped nav
   (overrides app.css; loaded after it)
   =================================================================== */
.sidebar{
  background:linear-gradient(180deg,#16314F 0%,#122A45 55%,#0E2238 100%);
  border-right:none;
  box-shadow:6px 0 24px -14px rgba(9,30,54,.55);
}
.sidebar::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.35;
  background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:22px 22px;}
.sidebar,.sidebar-nav{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent;}
.sidebar-nav::-webkit-scrollbar{width:6px;}
.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:3px;}

.sidebar-brand{border-bottom:1px solid rgba(255,255,255,.08);position:relative;}
.sidebar .logo{background:linear-gradient(135deg,#D8B45C,#B0892F);color:#16314F;font-weight:700;
  box-shadow:0 6px 14px -6px rgba(216,180,92,.55);}
.sidebar .brand-name{color:#fff;letter-spacing:.2px;}

.sidebar .nav-label{color:rgba(216,180,92,.75);letter-spacing:1.1px;font-weight:600;padding:15px 12px 5px;}
.sidebar .nav-item{position:relative;color:rgba(255,255,255,.66);border-radius:10px;}
.sidebar .nav-item .ti{color:rgba(255,255,255,.55);transition:color .15s;}
.sidebar .nav-item:hover{background:rgba(255,255,255,.07);color:#fff;}
.sidebar .nav-item:hover .ti{color:#fff;}
.sidebar .nav-item.on{background:rgba(255,255,255,.10);color:#fff;font-weight:600;}
.sidebar .nav-item.on .ti{color:#D8B45C;}
.sidebar .nav-item.on::before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;
  background:linear-gradient(180deg,#D8B45C,#B0892F);}
.sidebar .nav-item.locked{color:rgba(255,255,255,.35);}
.sidebar .nav-item.locked .ti{color:rgba(255,255,255,.3);}
.sidebar .nav-item.locked:hover{background:none;color:rgba(255,255,255,.35);}

.sidebar-user{border-top:1px solid rgba(255,255,255,.08);position:relative;}
.sidebar .who-name{color:#fff;}
.sidebar .who-role{color:rgba(255,255,255,.5);}
.sidebar .avatar.is-admin{box-shadow:0 0 0 2px rgba(216,180,92,.6);}
.sidebar .logout{color:rgba(255,255,255,.6);}
.sidebar .logout:hover{background:rgba(226,75,74,.2);color:#FFB3B3;}

/* ===================================================================
   Premium skin — applied to EVERY screen (tables, toolbars, buttons,
   badges, panels) + pager / range pills / mini search
   =================================================================== */
.panel,.card{border-radius:16px;border:1px solid #E7EDF3;box-shadow:0 8px 24px -18px rgba(22,49,79,.35);}
.page-title{letter-spacing:-.3px;}
.page-sub{color:var(--faint);}

/* buttons */
.btn-primary{background:linear-gradient(135deg,#185FA5,#0C447C);border:none;
  box-shadow:0 8px 18px -8px rgba(24,95,165,.55);transition:transform .15s,box-shadow .15s;}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 22px -8px rgba(24,95,165,.6);}
.btn-ghost{border:1px solid #D8E3EE;background:#fff;transition:all .15s;}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent-700);background:var(--accent-50);}
.btn-ghost.xls{color:#0F6E56;border-color:#BFE3D6;}
.btn-ghost.xls:hover{background:#E1F5EE;border-color:#0F6E56;color:#0F6E56;}

/* toolbars */
.toolbar{background:#fff;border:1px solid #E7EDF3;border-radius:14px;padding:10px 12px;
  box-shadow:0 6px 18px -14px rgba(22,49,79,.35);gap:9px;}
.toolbar select,.toolbar input[type="text"]{border-radius:10px;}
.search-inline{display:flex;align-items:center;gap:7px;background:var(--sec);border:1px solid transparent;
  border-radius:10px;padding:0 10px;flex:1;min-width:170px;transition:all .15s;}
.search-inline:focus-within{background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px rgba(24,95,165,.12);}
.search-inline .ti{color:var(--faint);font-size:16px;}
.search-inline input{border:none !important;background:transparent !important;box-shadow:none !important;padding:9px 0;flex:1;outline:none;}

/* tables */
.table-wrap{border-radius:14px;border:1px solid #E7EDF3;overflow:hidden;background:#fff;
  box-shadow:0 8px 24px -18px rgba(22,49,79,.35);}
.data-table thead th{background:linear-gradient(180deg,#F4F8FC,#EAF2F9);color:#0C447C;
  font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;font-weight:700;
  border-bottom:1px solid #DCE7F1;padding:11px 14px;}
.data-table tbody td{padding:12px 14px;border-bottom:1px solid #F0F4F8;}
.data-table tbody tr{transition:background .12s;}
.data-table tbody tr:hover{background:#F6FAFE;}
.data-table tbody tr:last-child td{border-bottom:none;}
.badge{border-radius:999px;padding:3px 10px;font-weight:600;letter-spacing:.2px;}

/* pager */
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;}
.pager-info{font-size:12px;color:var(--muted);}
.pager-info b{color:var(--ink);}
.pager-nav{display:flex;gap:5px;}
.pg{min-width:32px;height:32px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:9px;font-size:12.5px;color:var(--muted);background:#fff;border:1px solid #E2E9F0;transition:all .13s;}
.pg:hover{border-color:var(--accent);color:var(--accent-700);}
.pg.on{background:linear-gradient(135deg,#185FA5,#0C447C);color:#fff;border-color:transparent;font-weight:600;
  box-shadow:0 6px 12px -6px rgba(24,95,165,.55);}
.pg.off{opacity:.4;pointer-events:none;}
.pg.gap{border:none;background:none;pointer-events:none;}

/* range pills (reports) */
.rangecard{margin-bottom:14px;}
.rangebar{display:flex;gap:7px;flex-wrap:wrap;}
.rpill{border:1px solid #DCE7F1;background:#fff;border-radius:999px;padding:7px 15px;font-size:12.5px;
  color:var(--muted);cursor:pointer;font-family:inherit;transition:all .14s;}
.rpill:hover{border-color:var(--accent);color:var(--accent-700);}
.rpill.on{background:linear-gradient(135deg,#16314F,#0C447C);color:#fff;border-color:transparent;font-weight:600;
  box-shadow:0 8px 16px -8px rgba(12,68,124,.6);}
.range-custom{display:flex;gap:12px;align-items:flex-end;margin-top:12px;padding-top:12px;border-top:1px dashed #DCE7F1;flex-wrap:wrap;}

/* mini search in panel heads (manager desk) */
.mini-search{display:flex;align-items:center;gap:6px;background:var(--sec);border-radius:9px;padding:0 10px;}
.mini-search input{border:none;background:transparent;padding:7px 0;font-size:12.5px;outline:none;width:170px;}
.mini-search .ti{color:var(--faint);font-size:14px;}

@media(max-width:700px){
  .toolbar{padding:9px;}
  .rangebar{gap:5px;}
  .rpill{padding:6px 11px;font-size:12px;}
}

/* ===================================================================
   Hotfix layer — bulletproof buttons + KPI uplift
   =================================================================== */
.rpill,.pg,.btn-primary,.btn-ghost{
  -webkit-appearance:none;appearance:none;font-family:inherit;line-height:1.2;cursor:pointer;text-decoration:none;}
.rpill{outline:none;}
.rpill:focus-visible,.pg:focus-visible{box-shadow:0 0 0 3px rgba(24,95,165,.25);}

.kpi{background:#fff;border:1px solid #E7EDF3;border-radius:15px;padding:15px 16px;
  box-shadow:0 8px 22px -16px rgba(22,49,79,.4);transition:transform .16s,box-shadow .16s;}
.kpi:hover{transform:translateY(-2px);box-shadow:0 14px 26px -16px rgba(22,49,79,.5);}
.kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.6px;font-weight:600;color:var(--muted);}
.kpi-label .ti{color:var(--accent);font-size:15px;}
.kpi-value{font-size:22px;font-weight:700;margin-top:6px;}
.kpi.kpi-accent{background:linear-gradient(135deg,#E6F1FB,#F6FAFE);border-color:#CFE2F4;}
.kpi.kpi-accent .kpi-label .ti{color:var(--accent-700);}

/* ===================================================================
   Enterprise auth — split-screen brand panel + form side
   =================================================================== */
.auth-body{background:#F4F7FB;}
.auth-split{display:grid;grid-template-columns:1.05fr 1fr;min-height:100vh;}
.auth-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;
  padding:44px 48px;color:#fff;
  background:linear-gradient(150deg,#16314F 0%,#0C447C 58%,#185FA5 100%);}
.auth-hero::before{content:"";position:absolute;inset:0;opacity:.45;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.08) 1px,transparent 1px);background-size:24px 24px;}
.ah-glow{position:absolute;bottom:-160px;left:-100px;width:420px;height:420px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(176,137,47,.35),transparent 70%);}
.ah-top{position:relative;display:flex;align-items:center;gap:13px;}
.ah-name{font-size:19px;font-weight:700;letter-spacing:.2px;}
.ah-tag{font-size:12px;color:rgba(255,255,255,.65);}
.ah-mid{position:relative;}
.ah-headline{font-size:clamp(28px,3.4vw,42px);font-weight:700;line-height:1.12;letter-spacing:-.6px;margin:0 0 30px;
  background:linear-gradient(90deg,#fff 40%,#CFE2F4);-webkit-background-clip:text;background-clip:text;color:transparent;}
.ah-feats{display:flex;flex-direction:column;gap:16px;max-width:430px;}
.ah-feat{display:flex;gap:13px;align-items:flex-start;}
.ah-fic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none;font-size:19px;color:#D8B45C;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(3px);}
.ah-feat b{display:block;font-size:14px;margin-bottom:2px;}
.ah-feat span{font-size:12.5px;color:rgba(255,255,255,.62);line-height:1.45;}
.ah-foot{position:relative;font-size:11.5px;color:rgba(255,255,255,.55);display:flex;align-items:center;gap:7px;}

.auth-side{display:flex;align-items:center;justify-content:center;padding:36px 22px;}
.auth-side-inner{width:100%;max-width:410px;}
.auth-card{border-radius:18px;border:1px solid #E7EDF3;box-shadow:0 24px 60px -30px rgba(22,49,79,.35);padding:26px;}
.auth-title{font-size:20px;letter-spacing:-.2px;}
.auth-cta{border-radius:12px;padding:12px;font-size:14px;}
.auth-secure{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11px;color:var(--faint);margin-top:13px;}
.auth-secure .ti{font-size:13px;color:#0F6E56;}
.mobile-only{display:none;}

.passcode-input{width:100%;text-align:center;font-size:26px;letter-spacing:14px;font-weight:700;color:var(--navy);
  padding:13px 10px 13px 24px;border:1.5px solid var(--line2);border-radius:13px;outline:none;transition:all .15s;}
.passcode-input:focus{border-color:#B0892F;box-shadow:0 0 0 4px rgba(176,137,47,.15);}
.passcode-input::placeholder{letter-spacing:10px;color:#C9D4DE;}
.passcode-shield.pulse{animation:shieldPulse 2.2s ease-in-out infinite;}
@keyframes shieldPulse{0%,100%{box-shadow:0 0 0 0 rgba(176,137,47,.35);}50%{box-shadow:0 0 0 10px rgba(176,137,47,0);}}

@media(max-width:920px){
  .auth-split{grid-template-columns:1fr;}
  .auth-hero{display:none;}
  .mobile-only{display:flex;}
  .auth-side{padding:34px 18px 50px;align-items:flex-start;}
}
@media (prefers-reduced-motion: reduce){.passcode-shield.pulse{animation:none;}}

/* ===================================================================
   Profile page
   =================================================================== */
.profile-hero{position:relative;overflow:hidden;border-radius:18px;padding:24px 26px;margin-bottom:16px;color:#fff;
  background:linear-gradient(135deg,#16314F 0%,#0C447C 62%,#185FA5 100%);
  box-shadow:0 18px 40px -18px rgba(12,68,124,.55);
  display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;}
.profile-hero::before{content:"";position:absolute;inset:0;opacity:.4;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.09) 1px,transparent 1px);background-size:22px 22px;}
.ph-glow{position:absolute;top:-120px;right:-70px;width:300px;height:300px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(176,137,47,.35),transparent 70%);}
.ph-id{position:relative;display:flex;align-items:center;gap:16px;}
.ph-avatar{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;font-size:26px;font-weight:700;flex:none;
  color:#16314F;background:linear-gradient(135deg,#E8C87A,#B0892F);box-shadow:0 0 0 3px rgba(216,180,92,.4),0 10px 22px -10px rgba(0,0,0,.5);}
.ph-name{font-size:20px;font-weight:700;letter-spacing:-.2px;}
.ph-meta{font-size:12.5px;color:rgba(255,255,255,.68);margin:3px 0 7px;}
.ph-role{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:5px 11px;border-radius:999px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);}
.ph-role.gold{color:#F3DCA4;border-color:rgba(216,180,92,.45);background:rgba(176,137,47,.22);}
.ph-stats{position:relative;display:flex;gap:10px;flex-wrap:wrap;}
.ph-stat{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.14);border-radius:13px;
  padding:11px 15px;min-width:110px;backdrop-filter:blur(3px);}
.ph-sv{font-size:14.5px;font-weight:700;}
.ph-sl{font-size:10.5px;color:rgba(255,255,255,.6);text-transform:uppercase;letter-spacing:.6px;margin-top:3px;}
.field-icon.locked input{background:var(--sec);color:var(--faint);}
@media(max-width:700px){.profile-hero{padding:20px 16px;}.ph-stats{width:100%;}}

/* ===================================================================
   Bisen Intelligence — smart insight cards + report narrative
   =================================================================== */
.intel-panel{border:1px solid #D9E6F2;background:linear-gradient(180deg,#FBFDFF,#fff);}
.intel-mark{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:8px;margin-right:2px;
  background:linear-gradient(135deg,#185FA5,#0C447C);color:#D8B45C;font-size:14px;vertical-align:-7px;}
.intel-para{font-size:13.5px;line-height:1.65;color:var(--ink);margin:0 0 10px;max-width:860px;}
.intel-para:first-of-type{font-size:14.5px;font-weight:500;}
.intel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin-top:6px;}
.intel-card{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:12px;
  border:1px solid var(--line);background:#fff;border-left-width:3px;}
.intel-card.t-red{border-left-color:var(--red);background:linear-gradient(90deg,#FFF7F7,#fff 40%);}
.intel-card.t-amber{border-left-color:var(--amber);background:linear-gradient(90deg,#FFFBF3,#fff 40%);}
.intel-card.t-blue{border-left-color:var(--accent);background:linear-gradient(90deg,#F5FAFF,#fff 40%);}
.intel-card.t-green{border-left-color:var(--green);background:linear-gradient(90deg,#F4FCF9,#fff 40%);}
.intel-ic{font-size:16px;flex:none;margin-top:1px;}
.t-red .intel-ic{color:var(--red);} .t-amber .intel-ic{color:var(--amber);}
.t-blue .intel-ic{color:var(--accent);} .t-green .intel-ic{color:var(--green);}
.intel-text{font-size:12.5px;line-height:1.55;color:var(--ink);}
.intel-actions{margin-top:14px;padding-top:13px;border-top:1px dashed #DCE7F1;}
.intel-act-head{font-size:11px;text-transform:uppercase;letter-spacing:.8px;font-weight:700;color:var(--accent-700);
  display:flex;align-items:center;gap:6px;margin-bottom:9px;}
.intel-act{display:flex;gap:9px;align-items:flex-start;font-size:13px;line-height:1.5;padding:5px 0;}
.intel-act-no{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;flex:none;font-size:11px;font-weight:700;
  background:linear-gradient(135deg,#E8C87A,#B0892F);color:#16314F;margin-top:1px;}
.lang-pills{display:flex;gap:6px;}
.lpill{padding:5px 13px;border-radius:999px;font-size:12px;border:1px solid #DCE7F1;color:var(--muted);text-decoration:none;transition:all .14s;}
.lpill:hover{border-color:var(--accent);color:var(--accent-700);}
.lpill.on{background:linear-gradient(135deg,#16314F,#0C447C);color:#fff;border-color:transparent;font-weight:600;}

/* project business type chip */
.type-chip{display:inline-flex;align-items:center;font-size:10px;font-weight:700;letter-spacing:.5px;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;background:#E6F1FB;color:#0C447C;}
.type-chip.works{background:#FAEEDA;color:#854F0B;}

/* ===================================================================
   Ask Bisen — chat
   =================================================================== */
.ask-panel{display:flex;flex-direction:column;padding:0;overflow:hidden;max-width:860px;}
.ask-thread{flex:1;min-height:340px;max-height:60vh;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:14px;}
.ask-empty{text-align:center;padding:34px 16px;color:var(--muted);}
.ask-hero-ic{display:inline-grid;place-items:center;width:56px;height:56px;border-radius:17px;font-size:27px;color:#D8B45C;
  background:linear-gradient(135deg,#16314F,#0C447C);box-shadow:0 12px 26px -12px rgba(12,68,124,.6);margin-bottom:12px;}
.ask-hero-title{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.ask-empty p{font-size:12.5px;margin:0 0 14px;}
.ask-chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.ask-chips.sm{justify-content:flex-start;margin-top:8px;}
.chip{border:1px solid #CFE2F4;background:#F6FAFE;color:var(--accent-700);border-radius:999px;padding:7px 13px;
  font-size:12px;cursor:pointer;font-family:inherit;transition:all .14s;}
.chip:hover{background:var(--accent);border-color:var(--accent);color:#fff;}
.msg{display:flex;gap:10px;max-width:86%;}
.msg.me{align-self:flex-end;flex-direction:column;align-items:flex-end;gap:3px;}
.msg.me .bubble{background:linear-gradient(135deg,#185FA5,#0C447C);color:#fff;border-radius:15px 15px 4px 15px;
  padding:10px 14px;font-size:13.5px;box-shadow:0 8px 18px -10px rgba(24,95,165,.5);}
.msg-time{font-size:10px;color:var(--faint);}
.msg.bot{align-self:flex-start;}
.bot-ic{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none;font-size:15px;color:#D8B45C;
  background:linear-gradient(135deg,#16314F,#0C447C);margin-top:2px;}
.bot-bubble{background:#F6FAFE;border:1px solid #DCE9F5;color:var(--ink);border-radius:4px 15px 15px 15px;
  padding:11px 14px;font-size:13.5px;line-height:1.6;}
.ask-bar{display:flex;gap:9px;padding:13px 14px;border-top:1px solid var(--line);background:#fff;}
.ask-bar input{flex:1;border:1.5px solid var(--line2);border-radius:12px;padding:11px 14px;font-size:13.5px;outline:none;transition:all .15s;}
.ask-bar input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(24,95,165,.12);}
.ask-send{width:46px;padding:0;border-radius:12px;display:grid;place-items:center;font-size:17px;}
.ask-note{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--faint);margin-top:11px;max-width:860px;}
.ask-note .ti{color:#0F6E56;font-size:14px;}
@media(max-width:700px){.ask-thread{max-height:none;}}

/* ===================================================================
   Toolbar polish — inline filter bar on desktop (overrides the global
   width:100% on selects/inputs), clean full-width stack on mobile
   =================================================================== */
.toolbar{align-items:center;}
.toolbar select{width:auto;flex:0 1 auto;min-width:150px;max-width:230px;}
.toolbar > input[type="text"]{width:auto;flex:1 1 220px;min-width:180px;}
.toolbar .search-inline{flex:1 1 240px;min-width:200px;}
.toolbar .btn-ghost,.toolbar .btn-primary{flex:0 0 auto;white-space:nowrap;}
@media(max-width:640px){
  .toolbar select,.toolbar > input[type="text"],.toolbar .search-inline{flex:1 1 100%;max-width:none;min-width:0;}
  .toolbar .btn-ghost,.toolbar .btn-primary{flex:1 1 auto;}
}

/* ═══════════ PHASE 16 — GROWTH MODULES ═══════════ */

/* Step navigation (project page) */
.steps-nav{display:flex;align-items:center;gap:6px;margin:4px 0 16px;padding:8px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 24px -18px rgba(22,49,79,.35);overflow-x:auto;}
.snav{display:flex;align-items:center;gap:10px;padding:9px 16px 9px 10px;border-radius:12px;text-decoration:none;color:var(--muted);white-space:nowrap;transition:background .15s,color .15s;flex:1;min-width:0;}
.snav b{display:block;font-size:13px;color:inherit;line-height:1.2;}
.snav small{display:block;font-size:10.5px;opacity:.75;margin-top:1px;}
.snav-no{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--accent-50);color:var(--accent-700);font-weight:800;font-size:12.5px;flex:none;}
.snav.on{background:linear-gradient(135deg,#16314F,#0C447C);color:#fff;box-shadow:0 10px 20px -12px rgba(12,68,124,.65);}
.snav.on b{color:#fff;}
.snav.on .snav-no{background:rgba(216,180,92,.22);color:#F3DCA4;}
.snav.locked{opacity:.55;cursor:not-allowed;}
.snav.locked .snav-no{background:#EEF1F4;color:#8A97A4;font-size:12px;}
.snav-sep{color:var(--line2);flex:none;font-size:14px;}
.step-panel[hidden]{display:none;}

/* Inline quick-add row */
.inline-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:linear-gradient(90deg,#F6FAFE,#FCFDFE);border:1.5px dashed #B7C9DA;border-radius:12px;padding:10px 12px;margin-bottom:14px;}
.inline-add input,.inline-add select{width:auto;flex:1;min-width:120px;margin:0;}
.inline-add input[type="date"]{flex:none;width:150px;}
.inline-add button{flex:none;margin:0;}
.inline-add.sm{padding:8px 10px;margin:10px 0 0;background:#fff;}
.inline-add.sm input,.inline-add.sm select{min-width:100px;font-size:12.5px;}

/* Candidate detail row */
.row-muted td{opacity:.62;}
.cand-detail>td{padding:14px 18px !important;}
.cd-head{font-size:10.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--accent-700);margin-bottom:8px;}
.cd-chips{display:flex;gap:8px;flex-wrap:wrap;}
.pchip{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line);border-left:3px solid var(--green);border-radius:10px;padding:7px 12px;font-size:12px;color:var(--ink);}
.pchip.out{border-left-color:var(--red);}
.pchip b{font-weight:700;}

/* Money timeline rows (brokers, collections) */
.ml-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-left:3px solid var(--green);border-radius:10px;padding:9px 13px;font-size:12.5px;margin-bottom:7px;background:#fff;}
.ml-row.out{border-left-color:var(--red);}
.ml-row b{font-weight:700;flex:none;}
.ml-row span{color:var(--muted);}
.ml-row .badge{margin-left:auto;flex:none;}

/* Broker cards */
.b-card{display:block;text-decoration:none;color:inherit;padding:16px;transition:transform .15s,box-shadow .15s;}
.b-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px -18px rgba(22,49,79,.4);}
.b-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.b-avatar{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#16314F,#0C447C);color:#F3DCA4;font-weight:800;font-size:16px;flex:none;}
.b-name{font-weight:700;font-size:14.5px;color:var(--ink);}
.b-sub{font-size:11.5px;color:var(--faint);margin-top:2px;}
.b-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;border-top:1px solid var(--line);padding-top:11px;}
.b-stats>div{display:flex;flex-direction:column;gap:2px;}
.b-l{font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);}
.b-stats b{font-size:13px;}

/* Bill lines (gross → deductions → net) */
.bill-lines{border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.bl{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;font-size:13px;border-bottom:1px solid var(--line);}
.bl:last-child{border-bottom:0;}
.bl.red{color:var(--red);background:#FCFDFE;}
.bl.net{background:linear-gradient(90deg,var(--accent-50),#F6FAFE);font-size:14px;}
.bl.net span,.bl.net b{font-weight:800;color:var(--accent-700);}

/* Settlement rows */
.settle-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-left:3px solid var(--amber);border-radius:11px;padding:9px 12px;margin-bottom:8px;background:#fff;}
.settle-row.paid{border-left-color:var(--green);}
.settle-row.over{border-left-color:var(--red);background:#FFFBFB;}
.st-ic{font-size:17px;color:var(--amber);flex:none;}
.settle-row.paid .st-ic{color:var(--green);}
.settle-row.over .st-ic{color:var(--red);}
.st-name{flex:1;min-width:0;}
.st-name b{display:block;font-size:13px;}
.st-name small{display:block;font-size:10.5px;color:var(--faint);margin-top:1px;}
.settle-row.over .st-name small{color:var(--red);font-weight:700;}
.st-amt{width:120px !important;flex:none;margin:0 !important;font-size:13px;text-align:right;}
.settle-row input[readonly]{background:#F6F8FA;color:var(--muted);}
.settle-row button{flex:none;margin:0;}

/* Service fee card */
.fee-card{display:flex;justify-content:space-between;align-items:center;border-radius:14px;padding:14px 16px;margin-top:10px;background:linear-gradient(135deg,#16314F,#0C447C);color:#fff;box-shadow:0 14px 26px -14px rgba(12,68,124,.65);}
.fee-card small{opacity:.7;font-size:10.5px;}
.fee-card i{color:#D8B45C;}
.fee-amt{font-size:18px;font-weight:800;color:#F3DCA4;}

/* Mobile */
@media (max-width:640px){
  .steps-nav{padding:6px;}
  .snav{padding:8px 10px 8px 8px;}
  .snav small{display:none;}
  .snav-sep{display:none;}
  .inline-add{flex-direction:column;align-items:stretch;}
  .inline-add input,.inline-add select,.inline-add input[type="date"]{width:100%;flex:none;}
  .settle-row{flex-wrap:wrap;}
  .st-amt{width:100% !important;text-align:left;}
  .b-stats{grid-template-columns:1fr 1fr;}
}

/* Grid + category bars (P16 dependencies) */
.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;}
.cat-row{display:flex;align-items:center;gap:12px;padding:8px 0;font-size:13px;}
.cat-row>span{flex:none;width:34%;min-width:110px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cat-row>b{flex:none;margin-left:auto;font-size:12.5px;}
.cat-bar{flex:1;height:8px;border-radius:99px;background:var(--accent-50);overflow:hidden;}
.cat-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#185FA5,#0C447C);}

/* ── Phase 16: quick table filter ── */
.panel-head .qfilter{width:auto;max-width:190px;padding:7px 12px;font-size:12.5px;border:1px solid var(--line2);border-radius:9px;background:#FBFCFE;}
.panel-head .qfilter:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-50);}
@media (max-width:640px){.panel-head .qfilter{max-width:130px;}}
.data-table td.nowrap{white-space:nowrap;}

/* ── Patch 16.2: contract + status actions ── */
.banner-danger{display:flex;gap:11px;align-items:flex-start;background:#FCEBEB;border:1px solid #F3C9C9;border-left:4px solid var(--red);border-radius:12px;padding:12px 15px;font-size:13px;color:#7A1F1F;margin-bottom:14px;line-height:1.55;}
.banner-danger .ti{font-size:17px;color:var(--red);margin-top:1px;}
.contract-chip{display:inline-flex;gap:8px;align-items:center;background:var(--green-50);color:var(--green-ink);border:1px solid #BFE8D9;border-radius:99px;padding:7px 15px;font-size:12.5px;font-weight:600;margin-bottom:14px;}
.won-box{background:linear-gradient(180deg,#F2FBF7,#fff);border:1px solid #BFE8D9;border-radius:12px;padding:12px;margin-top:10px;}

/* ── Patch 16.3: contract chip edit + cascade ── */
.contract-line{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.contract-line .contract-chip{margin-bottom:0;}
.chip-edit summary{list-style:none;cursor:pointer;color:var(--accent-700);display:inline-flex;align-items:center;padding:5px 8px;border:1px solid var(--line2);border-radius:8px;background:#fff;font-size:12px;}
.chip-edit summary::-webkit-details-marker{display:none;}
.chip-edit-form{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap;}
.chip-edit-form input[type=date]{width:auto;max-width:160px;padding:8px 10px;font-size:12.5px;}

/* ── Patch 16.5: section headings (gold) + compact KPI breakdowns ── */
.step-head{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;color:#B0892F;margin:4px 2px 10px;}
.step-head .ti{font-size:15px;color:#B0892F;}
.kpi .kpi-break{display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line2);font-size:9.5px;color:var(--faint);line-height:1.45;}
.kpi .kpi-break b{color:var(--muted);font-weight:700;font-size:10px;}
.kpi .kpi-break .ti{font-size:10px;color:var(--accent);}
@media (max-width:640px){.step-head{font-size:10.5px;letter-spacing:.8px;}}

/* ── Patch 16.9: Webcotec support widget ── */
.sw-root{position:fixed;right:22px;bottom:22px;z-index:120;display:flex;flex-direction:column;align-items:flex-end;gap:12px;}
.sw-fab{position:relative;width:60px;height:60px;border-radius:50%;border:1.5px solid rgba(216,180,92,.55);
  background:linear-gradient(180deg,#1E4269,#122C4A);color:#E9CD8A;font-size:26px;cursor:pointer;
  box-shadow:0 10px 22px -6px rgba(12,42,71,.55);display:flex;align-items:center;justify-content:center;
  transition:transform .18s ease, box-shadow .18s ease;}
.sw-fab:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 14px 28px -8px rgba(12,42,71,.6);}
.sw-pulse{position:absolute;inset:-9px;border-radius:50%;background:rgba(24,95,165,.18);animation:swPulse 2.4s ease-out infinite;pointer-events:none;}
@keyframes swPulse{0%{transform:scale(.85);opacity:.7;}70%{transform:scale(1.25);opacity:0;}100%{opacity:0;}}
.sw-dot{position:absolute;width:12px;height:12px;border-radius:50%;background:#22C55E;border:2.5px solid #fff;}
.sw-dot.fab{top:2px;right:2px;}
.sw-hint{background:#fff;color:var(--ink);font-size:12.5px;font-weight:700;padding:8px 15px;border-radius:99px;
  box-shadow:0 6px 16px -6px rgba(22,49,79,.25);animation:swHintIn .5s ease .8s both;}
@keyframes swHintIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.sw-card{width:330px;max-width:calc(100vw - 34px);background:#fff;border-radius:20px;overflow:hidden;
  box-shadow:0 22px 48px -16px rgba(22,49,79,.4);opacity:0;transform:translateY(14px) scale(.97);
  transition:opacity .22s ease, transform .22s ease;}
.sw-card.on{opacity:1;transform:none;}
.sw-head{display:flex;align-items:flex-start;gap:12px;padding:16px 16px 15px;background:linear-gradient(135deg,#1B3A5E,#0C2A47);}
.sw-logo{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#D8B45C,#B0892F);
  color:#16314F;font-weight:800;font-size:19px;display:flex;align-items:center;justify-content:center;flex:none;}
.sw-title{color:#fff;font-size:15.5px;font-weight:700;}
.sw-sub{color:#BBD0E4;font-size:11.5px;margin-top:2px;}
.sw-rule{display:block;width:42px;height:3px;border-radius:2px;background:#D8B45C;margin-top:7px;}
.sw-close{margin-left:auto;background:none;border:none;color:#9FB6CC;font-size:17px;cursor:pointer;padding:2px;}
.sw-close:hover{color:#fff;}
.sw-body{padding:14px 16px 13px;}
.sw-person{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1.5px solid #EDF1F5;margin-bottom:12px;}
.sw-avatar{position:relative;width:44px;height:44px;border-radius:50%;background:var(--accent-50);color:var(--accent-700);
  font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center;flex:none;}
.sw-avatar .sw-dot{bottom:0;right:-1px;}
.sw-name{font-size:14px;font-weight:700;color:var(--ink);}
.sw-online{font-size:11px;color:var(--green);margin-top:2px;}
.sw-row{display:flex;align-items:center;gap:11px;background:#F7FAFD;border-radius:11px;padding:9px 12px;
  margin-bottom:8px;text-decoration:none;transition:background .15s ease;}
.sw-row:hover{background:#EEF4FA;}
.sw-ric{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex:none;}
.sw-ric.blue{background:var(--accent-50);color:var(--accent);}
.sw-ric.gold{background:#FAEEDA;color:#B0892F;}
.sw-row small{display:block;font-size:9.5px;letter-spacing:.6px;color:var(--faint);font-weight:700;}
.sw-row b{font-size:12.5px;color:var(--accent-700);}
.sw-wa{display:flex;align-items:center;justify-content:center;gap:8px;background:#22B45E;color:#fff;
  font-size:13px;font-weight:700;border-radius:13px;padding:12px;text-decoration:none;margin-top:2px;
  box-shadow:0 8px 18px -8px rgba(34,180,94,.55);transition:transform .15s ease;}
.sw-wa:hover{transform:translateY(-1px);color:#fff;}
.sw-wa .ti{font-size:18px;}
.sw-foot{text-align:center;font-size:9.5px;color:var(--faint);margin-top:10px;}
@media (max-width:900px){.sw-root{right:14px;bottom:calc(74px + env(safe-area-inset-bottom));}}
@media print{.sw-root{display:none;}}

/* ── Patch 16.14: goods money quick-add ── */
.inline-add{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#FBFCFE;border:1.5px dashed var(--line2);border-radius:13px;padding:11px 13px;}
.inline-add input{margin:0;}
.segmented.sm span{padding:7px 13px;font-size:12px;}
