/* ============================================================
   MEGA LIMITED — Application design layer (everything after login).
   Loaded after mega.css on every portal page (body.site-app, set in
   layouts/app.blade.php): staff role dashboards, investor, shareholder,
   partner and admin portals. Restyles the shared components every
   dashboard is built from — shell, sidebar, top bar, profile menu, KPI
   tiles, panels, tables, tabs, buttons, forms, badges, dialogs — so all
   roles upgrade together. Presentation only; no behaviour or content.
   Dark-mode aware; honours prefers-reduced-motion.
   ============================================================ */

.site-app{
  --ap-canvas:#f3f6f9;
  --ap-surface:#ffffff;
  --ap-raised:#ffffff;
  --ap-ink:#0f2530;
  --ap-ink-2:#3d5561;
  --ap-muted:#6b8290;
  --ap-line:#e3eaef;
  --ap-line-strong:#d2dde4;
  --ap-head:#f6f9fb;
  --ap-hover:#f1f7fb;
  --ap-primary:#0272A7;
  --ap-primary-2:#04476a;
  --ap-primary-soft:rgba(2,114,167,.09);
  --ap-gold:#EDC91E;
  --ap-good:#15803d; --ap-good-soft:#e8f6ee;
  --ap-warn:#b45309; --ap-warn-soft:#fdf3e2;
  --ap-bad:#b42318;  --ap-bad-soft:#fdecec;
  --ap-info:#1d4ed8; --ap-info-soft:#e9f0fd;
  --ap-r-sm:8px; --ap-r:12px; --ap-r-lg:16px;
  --ap-sh-1:0 1px 2px rgba(15,37,48,.05),0 1px 3px rgba(15,37,48,.04);
  --ap-sh-2:0 2px 4px rgba(15,37,48,.04),0 8px 24px -8px rgba(15,37,48,.12);
  --ap-sh-3:0 12px 32px -8px rgba(15,37,48,.22),0 4px 10px rgba(15,37,48,.06);
  --ap-ring:0 0 0 3px rgba(2,114,167,.18);
  --ap-ease:cubic-bezier(.2,.7,.2,1);
}
[data-theme="dark"] .site-app{
  --ap-canvas:#0b151a; --ap-surface:#111e25; --ap-raised:#14232b;
  --ap-ink:#e6eff4; --ap-ink-2:#b5c7d1; --ap-muted:#86a0ad;
  --ap-line:#1f333d; --ap-line-strong:#2a434f; --ap-head:#15252e; --ap-hover:#172a33;
  --ap-primary:#3FA9D6; --ap-primary-2:#2b87b0; --ap-primary-soft:rgba(63,169,214,.14);
  --ap-good:#4ade80; --ap-good-soft:rgba(74,222,128,.12);
  --ap-warn:#fbbf24; --ap-warn-soft:rgba(251,191,36,.12);
  --ap-bad:#f87171;  --ap-bad-soft:rgba(248,113,113,.12);
  --ap-info:#93c5fd; --ap-info-soft:rgba(147,197,253,.12);
  --ap-sh-1:0 1px 2px rgba(0,0,0,.4); --ap-sh-2:0 8px 24px -8px rgba(0,0,0,.6); --ap-sh-3:0 16px 40px -10px rgba(0,0,0,.7);
}

/* ---------- canvas & typography ---------- */
.site-app,.site-app .pmain{background:var(--ap-canvas);}
.site-app{color:var(--ap-ink);}
.site-app .pbody{padding:28px clamp(16px,2.4vw,36px) 48px;}
.site-app .pbody h4{color:var(--ap-ink);letter-spacing:-.01em;}
.site-app .note{color:var(--ap-muted);}
.site-app ::selection{background:rgba(237,201,30,.4);}
.site-app table,.site-app .kpi .v,.site-app .stat-num{font-variant-numeric:tabular-nums;}
.site-app *{scrollbar-width:thin;scrollbar-color:var(--ap-line-strong) transparent;}
.site-app ::-webkit-scrollbar{width:9px;height:9px;}
.site-app ::-webkit-scrollbar-thumb{background:var(--ap-line-strong);border-radius:9px;border:2px solid transparent;background-clip:padding-box;}

/* ---------- sidebar ---------- */
.site-app .psidebar{box-shadow:inset -1px 0 0 rgba(255,255,255,.06);}
.site-app .psidebar .pbrand{padding:0 8px 18px;margin-bottom:14px;}
.site-app .psidebar .pbrand img{border-radius:10px;background:#fff;padding:2px;}
.site-app .psidebar .pbrand .word{letter-spacing:.08em;font-size:14.5px;}
.site-app .pwho{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08);border-radius:var(--ap-r);padding:12px;margin:0 2px 14px;}
.site-app .pavatar{box-shadow:0 0 0 3px rgba(237,201,30,.25);}
.site-app .pnav a,.site-app .ceo-sec-head,.site-app .ceo-sec-item{position:relative;border-radius:9px;transition:background-color .18s,color .18s,padding-left .18s;}
.site-app .pnav a i,.site-app .ceo-sec-head i,.site-app .ceo-sec-item i{width:18px;text-align:center;flex:0 0 18px;}
.site-app .pnav a.active,.site-app .ceo-sec-item.active{background:linear-gradient(90deg,rgba(237,201,30,.98),rgba(242,214,89,.92));box-shadow:0 6px 16px -8px rgba(237,201,30,.75);}
.site-app .pnav a.active::before,.site-app .ceo-sec-item.active::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--sb-active-ink,#062634);opacity:.85;}
.site-app .pnav a:hover:not(.active),.site-app .ceo-sec-item:hover:not(.active){padding-left:16px;}
.site-app .ceo-sec-item:hover:not(.active){padding-left:38px;}
.site-app .ceo-sec-head.open,.site-app .ceo-sec-head[aria-expanded="true"]{background:rgba(255,255,255,.07);color:#fff;}
.site-app .pfoot{font-size:11.5px;letter-spacing:.02em;}

/* ---------- top bar ---------- */
.site-app .ptop{
  position:sticky;top:0;z-index:60;min-height:66px;padding:12px clamp(16px,2.4vw,36px);
  background:rgba(255,255,255,.85);backdrop-filter:saturate(170%) blur(12px);-webkit-backdrop-filter:saturate(170%) blur(12px);
  border-bottom:1px solid var(--ap-line);box-shadow:0 1px 0 rgba(15,37,48,.02);
}
[data-theme="dark"] .site-app .ptop{background:rgba(17,30,37,.85);}
.site-app .ptop h2{font-size:18px;font-weight:800;color:var(--ap-ink);letter-spacing:-.015em;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.site-app .ptop h2 .accessflag{margin:0;}
.site-app .reqbell-btn{width:40px;height:40px;border-radius:11px;border-color:var(--ap-line);background:var(--ap-surface);color:var(--ap-ink-2);transition:border-color .18s,box-shadow .18s,color .18s;}
.site-app .reqbell-btn:hover{border-color:var(--ap-primary);color:var(--ap-primary);box-shadow:var(--ap-ring);}
.site-app .reqbell-badge{box-shadow:0 0 0 2px var(--ap-surface);}
.site-app .pmenu-btn{border-radius:12px;border-color:var(--ap-line);padding:4px 12px 4px 4px;background:var(--ap-surface);transition:border-color .18s,box-shadow .18s;}
.site-app .pmenu-btn:hover{border-color:var(--ap-primary);box-shadow:var(--ap-ring);}
.site-app .pmenu-avatar{border-radius:9px;width:32px;height:32px;background:linear-gradient(135deg,var(--ap-primary),var(--ap-primary-2));}
.site-app .pmenu-drop{border-radius:var(--ap-r);border-color:var(--ap-line);box-shadow:var(--ap-sh-3);padding:8px;min-width:240px;animation:apPop .16s var(--ap-ease);}
.site-app .pmenu-drop a{border-radius:9px;font-weight:500;color:var(--ap-ink-2);}
.site-app .pmenu-drop a i{width:18px;text-align:center;color:var(--ap-muted);}
.site-app .pmenu-drop a:hover{background:var(--ap-hover);color:var(--ap-ink);}
.site-app .pmenu-drop a:hover i{color:var(--ap-primary);}
@keyframes apPop{from{opacity:0;transform:translateY(-4px) scale(.98);}to{opacity:1;transform:none;}}

/* ---------- access flag / page badges ---------- */
.site-app .accessflag{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:5px 12px;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;}
.site-app .accessflag::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.8;}
.site-app .accessflag.full{background:var(--ap-good-soft);color:var(--ap-good);}
.site-app .accessflag.ro{background:var(--ap-bad-soft);color:var(--ap-bad);}
.site-app .accessflag.min{background:var(--ap-head);color:var(--ap-muted);}

/* ---------- KPI tiles ---------- */
.site-app .kpi-row{gap:16px;margin-bottom:24px;}
.site-app .kpi{
  position:relative;overflow:hidden;background:var(--ap-raised);border:1px solid var(--ap-line);border-radius:var(--ap-r-lg);
  padding:18px 18px 16px;box-shadow:var(--ap-sh-1);transition:transform .25s var(--ap-ease),box-shadow .25s var(--ap-ease),border-color .25s;
}
.site-app .kpi:hover{transform:translateY(-2px);box-shadow:var(--ap-sh-2);border-color:var(--ap-line-strong);}
.site-app .kpi>i:first-child{
  display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;font-size:15px;
  background:var(--ap-primary-soft);color:var(--ap-primary);
}
.site-app .kpi .v{font-size:clamp(18px,1.6vw,23px);font-weight:800;color:var(--ap-ink);margin-top:12px;letter-spacing:-.02em;line-height:1.15;overflow-wrap:anywhere;}
.site-app .kpi .l{font-size:12px;font-weight:600;color:var(--ap-muted);margin-top:4px;letter-spacing:.01em;}
.site-app .kpi::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--ap-primary),#80C3EC);opacity:.0;transition:opacity .25s;}
.site-app .kpi:hover::after{opacity:1;}
.site-app .kpi-good>i:first-child,.site-app .kpi.good>i:first-child{background:var(--ap-good-soft);color:var(--ap-good);}
.site-app .kpi-warn>i:first-child,.site-app .kpi.warn>i:first-child{background:var(--ap-warn-soft);color:var(--ap-warn);}
.site-app .kpi-bad>i:first-child{background:var(--ap-bad-soft);color:var(--ap-bad);}
.site-app .kpi-good .v,.site-app .kpi-warn .v{color:var(--ap-ink);}
.site-app .kpi-bad .v{color:var(--ap-bad);}
.site-app .kpi.good,.site-app .kpi.warn{border-left-width:1px;}
.site-app .kpi.good::after{background:var(--ap-good);opacity:1;}
.site-app .kpi.warn::after{background:var(--ap-warn);opacity:1;}

/* ---------- panels / cards ---------- */
.site-app .card,.site-app .ceo-dash-grid>div,.site-app .ceo-panel,.site-app .req-row{
  background:var(--ap-surface);border:1px solid var(--ap-line);border-radius:var(--ap-r-lg);box-shadow:var(--ap-sh-1);
}
.site-app .card-head{background:var(--ap-head);color:var(--ap-ink);border-bottom:1px solid var(--ap-line);font-weight:700;}
.site-app .card-body{padding:20px 22px;}

/* ---------- section titles ---------- */
.site-app .ceo-section-title{
  border-bottom:0;padding:0 0 0 12px;margin:28px 0 14px;font-size:15px;font-weight:800;color:var(--ap-ink);letter-spacing:-.01em;position:relative;flex-wrap:wrap;
}
.site-app .ceo-section-title::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:4px;border-radius:4px;background:linear-gradient(180deg,var(--ap-gold),var(--ap-primary));}
.site-app .ceo-section-title i{color:var(--ap-primary);}
.site-app .ceo-section-title .note{font-weight:500;font-size:12.5px;}
.site-app .pbody>.ceo-section-title:first-child,.site-app [id$="ViewBody"]>.ceo-section-title:first-child{margin-top:4px;}

/* ---------- tables ---------- */
.site-app .table-wrap,.site-app .ceo-table-wrap{
  background:var(--ap-surface);border:1px solid var(--ap-line);border-radius:var(--ap-r-lg);box-shadow:var(--ap-sh-1);overflow:auto;
}
.site-app table.tbl,.site-app .ceo-table{border-collapse:separate;border-spacing:0;font-size:13.5px;}
.site-app table.tbl thead th,.site-app .ceo-table thead th{
  background:var(--ap-head);color:var(--ap-muted);font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:12px 14px;border-bottom:1px solid var(--ap-line);white-space:nowrap;position:sticky;top:0;z-index:1;
}
.site-app table.tbl tbody td,.site-app .ceo-table tbody td{padding:12px 14px;border-bottom:1px solid var(--ap-line);color:var(--ap-ink-2);vertical-align:middle;}
.site-app table.tbl tbody tr:nth-child(even),.site-app .ceo-table tbody tr:nth-child(even){background:transparent;}
.site-app table.tbl tbody tr,.site-app .ceo-table tbody tr{transition:background-color .15s;}
.site-app table.tbl tbody tr:hover,.site-app .ceo-table tbody tr:hover{background:var(--ap-hover);}
.site-app table.tbl tbody tr:last-child td,.site-app .ceo-table tbody tr:last-child td{border-bottom:0;}
.site-app table.tbl tbody td:first-child,.site-app .ceo-table tbody td:first-child{color:var(--ap-ink);font-weight:600;}
.site-app .table-wrap>table.tbl,.site-app .ceo-table-wrap>.ceo-table{margin:0;}
/* a bare table (not in a wrapper) still gets the card treatment */
.site-app .pbody table.tbl:not(.table-wrap table){background:var(--ap-surface);border:1px solid var(--ap-line);border-radius:var(--ap-r-lg);overflow:hidden;box-shadow:var(--ap-sh-1);}
.site-app .ceo-empty,.site-app td.ceo-empty{padding:40px 16px !important;text-align:center;color:var(--ap-muted) !important;font-weight:500 !important;}
.site-app .ceo-empty::before{content:"\f07c";font-family:"Font Awesome 6 Free","Font Awesome 5 Free";font-weight:400;display:block;font-size:26px;margin-bottom:8px;opacity:.45;}

/* ---------- buttons ---------- */
.site-app .ceo-btn,.site-app .btn-mega,.site-app .btn-outline-mega,.site-app .btn-gold,.site-app .btn-danger,.site-app .ceo-btn-sm,.site-app .btn-sm{
  border-radius:9px;font-weight:600;letter-spacing:.005em;transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s,transform .12s;
}
.site-app .ceo-btn{border:1px solid var(--ap-line-strong);background:var(--ap-surface);color:var(--ap-ink-2);padding:9px 15px;box-shadow:var(--ap-sh-1);}
.site-app .ceo-btn:hover{border-color:var(--ap-primary);color:var(--ap-primary);background:var(--ap-surface);}
.site-app .ceo-btn-primary,.site-app .btn-mega{background:linear-gradient(135deg,var(--ap-primary),var(--ap-primary-2));border:1px solid transparent;color:#fff;box-shadow:0 6px 14px -8px rgba(2,114,167,.8);}
.site-app .ceo-btn-primary:hover,.site-app .btn-mega:hover{color:#fff;filter:brightness(1.06);box-shadow:0 10px 20px -10px rgba(2,114,167,.9);transform:translateY(-1px);}
.site-app .ceo-btn:focus-visible,.site-app .btn-mega:focus-visible,.site-app .ceo-btn-sm:focus-visible{outline:none;box-shadow:var(--ap-ring);}
.site-app .ceo-btn-sm,.site-app .ceo-btn.ceo-btn-sm,.site-app .btn-sm{padding:6px 11px;font-size:12.5px;}
.site-app button.ceo-btn-sm:not(.ceo-btn):not(.btn-danger){border:1px solid var(--ap-line-strong);background:var(--ap-surface);color:var(--ap-ink-2);border-radius:8px;cursor:pointer;}
.site-app button.ceo-btn-sm:not(.ceo-btn):not(.btn-danger):hover{border-color:var(--ap-primary);color:var(--ap-primary);}
.site-app .btn-danger{background:var(--ap-bad);border:1px solid transparent;}
.site-app .btn-danger.btn-sm,.site-app .btn-sm.btn-danger{background:var(--ap-bad-soft);color:var(--ap-bad);border:1px solid transparent;}
.site-app .btn-danger.btn-sm:hover{background:var(--ap-bad);color:#fff;}
.site-app button:disabled,.site-app .ceo-btn:disabled{opacity:.55;cursor:not-allowed;transform:none !important;}
.site-app .ceo-panel-actions{gap:10px;}

/* ---------- tabs ---------- */
.site-app .ceo-tabs{background:var(--ap-surface);border:1px solid var(--ap-line);border-radius:12px;padding:4px;gap:4px;display:inline-flex;max-width:100%;box-shadow:var(--ap-sh-1);}
.site-app .ceo-tab{border:0;background:transparent;border-radius:9px;padding:8px 14px;color:var(--ap-muted);font-weight:600;}
.site-app .ceo-tab:hover:not(.active){background:var(--ap-hover);color:var(--ap-ink);}
.site-app .ceo-tab.active{background:linear-gradient(135deg,var(--ap-primary),var(--ap-primary-2));color:#fff;box-shadow:0 4px 10px -6px rgba(2,114,167,.8);}
.site-app .reqbell-tabs button.active{color:var(--ap-primary);border-bottom-color:var(--ap-primary);}

/* ---------- forms ---------- */
.site-app .ceo-input,.site-app .form-control,.site-app .pbody select,.site-app .pbody input[type=text],.site-app .pbody input[type=number],.site-app .pbody input[type=date],.site-app .pbody input[type=email],.site-app .pbody input[type=tel],.site-app .pbody input[type=search],.site-app .pbody textarea{
  border:1px solid var(--ap-line-strong);border-radius:10px;background:var(--ap-surface);color:var(--ap-ink);
  transition:border-color .18s,box-shadow .18s;min-height:40px;
}
.site-app .ceo-input:hover,.site-app .form-control:hover{border-color:#b9c9d3;}
.site-app .ceo-input:focus,.site-app .form-control:focus,.site-app .pbody select:focus,.site-app .pbody input:focus,.site-app .pbody textarea:focus{outline:none;border-color:var(--ap-primary);box-shadow:var(--ap-ring);}
.site-app .ceo-modal-body label,.site-app .ceo-form-wrap label,.site-app .pbody label{color:var(--ap-ink-2);font-size:12.5px;font-weight:700;letter-spacing:.01em;}
.site-app .ceo-toolbar{gap:10px;padding:10px;background:var(--ap-surface);border:1px solid var(--ap-line);border-radius:12px;box-shadow:var(--ap-sh-1);}
.site-app .ceo-toolbar .form-control{width:auto;min-width:160px;}

/* ---------- status pills ---------- */
.site-app .badge{border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:none;}
.site-app .badge-success{background:var(--ap-good-soft);color:var(--ap-good);}
.site-app .badge-warning{background:var(--ap-warn-soft);color:var(--ap-warn);}
.site-app .badge-danger{background:var(--ap-bad-soft);color:var(--ap-bad);}
.site-app .badge-info{background:var(--ap-info-soft);color:var(--ap-info);}
.site-app .badge-secondary{background:var(--ap-head);color:var(--ap-muted);}
.site-app .cbdg{border-radius:999px;padding:3px 10px;font-size:11px;font-weight:700;letter-spacing:.02em;}
.site-app .cbdg-red{background:var(--ap-bad-soft);color:var(--ap-bad);}
.site-app .cbdg-amber{background:var(--ap-warn-soft);color:var(--ap-warn);}
.site-app .cbdg-green{background:var(--ap-good-soft);color:var(--ap-good);}

/* ---------- alerts ---------- */
.site-app .alert{border-radius:12px;border:1px solid transparent;border-left-width:4px;padding:12px 16px;}
.site-app .alert-success{background:var(--ap-good-soft);color:var(--ap-good);border-left-color:var(--ap-good);}
.site-app .alert-warning{background:var(--ap-warn-soft);color:var(--ap-warn);border-left-color:var(--ap-warn);}
.site-app .alert-danger{background:var(--ap-bad-soft);color:var(--ap-bad);border-color:transparent;border-left-color:var(--ap-bad);}
.site-app .alert-info{background:var(--ap-info-soft);color:var(--ap-info);border-left-color:var(--ap-info);}

/* ---------- dialogs ---------- */
.site-app .ceo-modal,.site-app .modal-backdrop{background:rgba(9,22,29,.48);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.site-app .ceo-modal-content,.site-app .modal-card{border-radius:var(--ap-r-lg);border:1px solid var(--ap-line);box-shadow:var(--ap-sh-3);background:var(--ap-surface);animation:apModal .22s var(--ap-ease);}
@keyframes apModal{from{opacity:0;transform:translateY(10px) scale(.985);}to{opacity:1;transform:none;}}
.site-app .ceo-modal-header{background:var(--ap-surface);border-bottom:1px solid var(--ap-line);padding:18px 22px;}
.site-app .ceo-modal-header h3{color:var(--ap-ink);font-size:16.5px;font-weight:800;letter-spacing:-.01em;}
.site-app .ceo-modal-body{padding:20px 22px;}
.site-app .ceo-modal-footer{background:var(--ap-head);border-top:1px solid var(--ap-line);padding:14px 22px;}
.site-app .ceo-btn-close{width:34px;height:34px;border-radius:9px;border:1px solid var(--ap-line);background:var(--ap-surface);color:var(--ap-muted);font-size:18px;line-height:1;cursor:pointer;transition:color .15s,border-color .15s,background-color .15s;}
.site-app .ceo-btn-close:hover{color:var(--ap-bad);border-color:var(--ap-bad);background:var(--ap-bad-soft);}

/* ---------- pagination ---------- */
.site-app .pager button{border-radius:8px;border-color:var(--ap-line-strong);}
.site-app .pager button:not(:disabled):hover{border-color:var(--ap-primary);color:var(--ap-primary);}

/* ---------- member / shareholder / partner portals use the same tiles ---------- */
.site-app .mtab .card,.site-app .staffpanel-wrap .card{margin-bottom:18px;}

/* ---------- motion ---------- */
.site-app [id$="ViewBody"]>*,.site-app #sPanel>*{animation:apFade .28s var(--ap-ease) both;}
@keyframes apFade{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
@media(prefers-reduced-motion:reduce){
  .site-app *,.site-app *::before,.site-app *::after{animation:none !important;transition-duration:.01ms !important;}
}

/* ---------- responsive refinements (with responsive.css) ---------- */
@media(max-width:980px){
  .site-app .ptop{min-height:60px;}
  .site-app .ptop h2{font-size:16px;}
  .site-app .ceo-tabs{display:flex;}
  .site-app .ceo-toolbar{padding:8px;}
  .site-app .ceo-toolbar .form-control{min-width:0;flex:1 1 140px;}
}
@media(min-width:1600px){
  .site-app .kpi{padding:20px 20px 18px;}
}

/* =====================================================================
   Accessible states (4 Nov 2026) — every button keeps readable text in
   normal, hover, focus and active states, in light and dark themes
   (WCAG 2.2 AA, 4.5:1). Fixes found by an automated contrast sweep of
   all button classes used in the app:
   - generic .ceo-btn:hover painted a WHITE background under the WHITE
     text of .ceo-btn-primary (primary buttons vanished on hover);
   - link-styled small buttons (<a class="ceo-btn-sm|btn-sm|ceo-btn-outline">)
     inherited dark link ink on the dark theme;
   - light-blue primary fills and gold buttons were below 4.5:1.
   Colours keep the existing brand palette; only shades are adjusted.
   ===================================================================== */
.site-app{--ap-btn-a:#0272A7;--ap-btn-b:#04476a;--ap-btn-ha:#035d88;--ap-btn-hb:#033a57;--ap-btn-ink:#ffffff;--ap-outline-ink:#0272A7;}
[data-theme="dark"] .site-app{--ap-btn-a:#1d79a8;--ap-btn-b:#17648c;--ap-btn-ha:#1a6d97;--ap-btn-hb:#124f70;--ap-btn-ink:#ffffff;--ap-outline-ink:#8fd0ef;}

/* Filled primary buttons: same look at rest, a deeper fill on hover — never a white fill. */
.site-app .ceo-btn-primary,.site-app .ceo-btn.ceo-btn-primary,.site-app .btn-mega,.site-app a.btn-mega,.site-app a.ceo-btn-primary{
  background:linear-gradient(135deg,var(--ap-btn-a),var(--ap-btn-b));color:var(--ap-btn-ink);border-color:transparent;}
.site-app .ceo-btn-primary:hover,.site-app .ceo-btn.ceo-btn-primary:hover,.site-app .btn-mega:hover,.site-app a.btn-mega:hover,.site-app a.ceo-btn-primary:hover,
.site-app .ceo-btn-primary:focus-visible,.site-app .btn-mega:focus-visible{
  background:linear-gradient(135deg,var(--ap-btn-ha),var(--ap-btn-hb));color:var(--ap-btn-ink);border-color:transparent;filter:none;}
.site-app .ceo-btn-primary:active,.site-app .btn-mega:active{background:var(--ap-btn-hb);color:var(--ap-btn-ink);}
.site-app .ceo-btn-primary *,.site-app .btn-mega *{color:inherit;}

/* Outline buttons: readable ink at rest, filled on hover. */
.site-app .btn-outline-mega,.site-app a.btn-outline-mega{color:var(--ap-outline-ink);border-color:var(--ap-outline-ink);background:transparent;}
.site-app .btn-outline-mega:hover,.site-app a.btn-outline-mega:hover{background:linear-gradient(135deg,var(--ap-btn-a),var(--ap-btn-b));color:var(--ap-btn-ink);border-color:transparent;}

/* Gold buttons: navy text on gold (about 8:1). */
.site-app .btn-gold,.site-app a.btn-gold,.site-app .btn-gold:hover,.site-app a.btn-gold:hover{color:#13306B;}

/* Secondary/ghost buttons written as links get the same treatment as <button>. */
.site-app a.ceo-btn-sm:not(.ceo-btn):not(.ceo-btn-primary):not(.btn-mega):not(.btn-danger):not(.btn-gold),
.site-app a.btn-sm:not(.ceo-btn):not(.ceo-btn-primary):not(.btn-mega):not(.btn-danger):not(.btn-gold):not(.btn-outline-mega),
.site-app .ceo-btn-outline{
  display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ap-line-strong);background:var(--ap-surface);color:var(--ap-ink-2);
  border-radius:8px;padding:6px 11px;font-size:12.5px;font-weight:600;text-decoration:none;cursor:pointer;}
.site-app a.ceo-btn-sm:not(.ceo-btn):not(.ceo-btn-primary):not(.btn-mega):not(.btn-danger):not(.btn-gold):hover,
.site-app a.btn-sm:not(.ceo-btn):not(.ceo-btn-primary):not(.btn-mega):not(.btn-danger):not(.btn-gold):not(.btn-outline-mega):hover,
.site-app .ceo-btn-outline:hover{border-color:var(--ap-primary);color:var(--ap-primary);background:var(--ap-surface);}
.site-app .ceo-btn:not(.ceo-btn-primary):not(.ceo-btn-danger):hover{background:var(--ap-surface);color:var(--ap-primary);}

/* Danger: solid red keeps white text; the small soft-red variant keeps its design and turns solid red on hover. */
.site-app .btn-danger:not(.btn-sm),.site-app .btn-danger:not(.btn-sm):hover,.site-app .ceo-btn-danger,.site-app .ceo-btn-danger:hover{color:#fff;}
.site-app .ceo-btn-danger{background:#b42318;border-color:transparent;}
.site-app .ceo-btn-danger:hover,.site-app .btn-danger:not(.btn-sm):hover{background:#8f1c13;}
[data-theme="dark"] .site-app .btn-danger:not(.btn-sm){background:#b42318;}
[data-theme="dark"] .site-app .btn-danger.btn-sm:hover,[data-theme="dark"] .site-app .btn-sm.btn-danger:hover{background:#b42318;color:#fff;}

/* Muted text (helper text, small labels, placeholders, the × close icon) raised to at least 4.5:1 on white. */
.site-app{--ap-muted:#5b7280;}
[data-theme="dark"] .site-app{--ap-muted:#93abb8;}

/* Visible keyboard focus everywhere. */
.site-app button:focus-visible,.site-app a.ceo-btn-sm:focus-visible,.site-app a.btn-sm:focus-visible,.site-app .ceo-btn:focus-visible,.site-app [role=button]:focus-visible{outline:3px solid #C9A227;outline-offset:2px;}

/* ---------- forms: professional, readable controls in both themes ---------- */
.site-app .form-control::placeholder,.site-app .ceo-input::placeholder,.site-app textarea::placeholder{color:var(--ap-muted);opacity:1;}
.site-app select.form-control option,.site-app .pbody select option{background:var(--ap-surface);color:var(--ap-ink);}
.site-app .form-control:disabled,.site-app .ceo-input:disabled{background:var(--ap-head);color:var(--ap-ink-2);cursor:not-allowed;opacity:1;}
.site-app input[type=file].form-control{padding:7px 10px;line-height:1.6;}
.site-app input[type=file]::file-selector-button{margin-right:10px;border:1px solid var(--ap-line-strong);background:var(--ap-head);color:var(--ap-ink);border-radius:8px;padding:6px 12px;font-weight:600;cursor:pointer;}
.site-app input[type=file]::file-selector-button:hover{border-color:var(--ap-primary);color:var(--ap-primary);}
.site-app .field label,.site-app .ceo-modal-card label{color:var(--ap-ink-2);}
.site-app .field{margin-bottom:14px;}
.site-app input[type=checkbox],.site-app input[type=radio]{accent-color:var(--ap-primary);width:18px;height:18px;vertical-align:middle;}
.site-app .ceo-modal-card{background:var(--ap-surface);color:var(--ap-ink);border:1px solid var(--ap-line);border-radius:16px;box-shadow:var(--ap-sh-3);padding:20px 22px;}
.site-app .ceo-modal-card h3{color:var(--ap-ink);}
.site-app .alert{border-radius:10px;}

/* ===== Homepage Projects workflow (COO prepares, CEO/Owner approve) — 6 Nov 2026 ===== */
.hpw-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 14px;border-bottom:1px solid var(--border,#e4e9ee);}
.hpw-tab{background:none;border:0;border-bottom:3px solid transparent;padding:9px 12px;font-weight:700;font-size:13px;color:var(--muted,#667085);cursor:pointer;}
.hpw-tab span{display:inline-block;min-width:22px;padding:1px 7px;margin-left:4px;border-radius:999px;background:var(--light,#f2f5f8);font-size:11.5px;}
.hpw-tab.on{color:#0272A7;border-bottom-color:#0272A7;}
.hpw-list{display:grid;gap:14px;}
.hpw-card{display:grid;grid-template-columns:240px minmax(0,1fr);border:1px solid var(--border,#e4e9ee);border-radius:14px;overflow:hidden;background:var(--surface,#fff);}
.hpw-cover{position:relative;min-height:190px;background:#0b2d40 center/cover no-repeat;display:flex;flex-direction:column;align-items:center;justify-content:center;color:rgba(255,255,255,.7);gap:6px;font-size:13px;}
.hpw-cover>i{font-size:28px;}
.hpw-photos{position:absolute;left:10px;bottom:10px;background:rgba(0,0,0,.55);color:#fff;font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:999px;}
.hpw-body{padding:14px 16px;display:flex;flex-direction:column;gap:6px;min-width:0;}
.hpw-body h4{margin:2px 0 0;font-size:16.5px;}
.hpw-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.hpw-sector{font-size:12px;font-weight:700;color:#0272A7;margin-right:4px;}
.hpw-desc{margin:0;font-size:13px;color:var(--muted,#475467);line-height:1.55;}
.hpw-facts{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--muted,#475467);}
.hpw-facts i{color:#0272A7;margin-right:3px;}
.hpw-note{font-size:12.5px;padding:7px 10px;border-radius:8px;background:var(--light,#f2f5f8);color:var(--fg,#1d2939);}
.hpw-note-wait{background:rgba(237,201,30,.16);}
.hpw-note-bad{background:rgba(180,35,24,.08);color:#9a2f2f;}
.hpw-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px;}
.hpw-danger{color:#B42318 !important;}
.hpw-form{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:18px;}
.hpw-col label{display:block;font-weight:700;font-size:12.5px;margin:10px 0 4px;}
.hpw-hint{font-weight:400;color:var(--muted,#667085);font-size:11.5px;}
.hpw-2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.hpw-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
.hpw-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:6px;}
.hpw-ph{position:relative;border:1px solid var(--border,#e4e9ee);border-radius:10px;overflow:hidden;background:var(--surface,#fff);}
.hpw-ph img{width:100%;height:96px;object-fit:cover;display:block;}
.hpw-ph .hpw-cap,.hpw-ph .hpw-newcap{margin:0;border:0;border-top:1px solid var(--border,#e4e9ee);border-radius:0;font-size:12px;padding:6px 8px;}
.hpw-ph-tag{position:absolute;left:6px;top:6px;right:6px;font-size:10.5px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.6);}
.hpw-ph.is-new{outline:2px solid #EDC91E;}
.hpw-ph.is-remove img{opacity:.35;filter:grayscale(1);}
.hpw-ph.is-remove{outline:2px dashed #B42318;}
.hpw-ph.is-bad{outline:2px solid #B42318;}
.hpw-ph-btns{display:flex;border-top:1px solid var(--border,#e4e9ee);}
.hpw-ph-btns button{flex:1;background:none;border:0;padding:6px 0;cursor:pointer;color:var(--muted,#475467);}
.hpw-ph-btns button:hover{background:var(--light,#f2f5f8);color:#0272A7;}
.hpw-drop{display:flex !important;flex-direction:column;align-items:center;gap:3px;border:2px dashed var(--border,#cfd8e0);border-radius:12px;padding:16px;margin-top:10px !important;cursor:pointer;text-align:center;color:var(--muted,#475467);font-weight:400 !important;}
.hpw-drop:hover{border-color:#0272A7;color:#0272A7;}
.hpw-drop i{font-size:22px;color:#0272A7;}
.hpw-drop input{display:none;}
.hpw-compare{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.hpw-cmp-h{font-weight:800;font-size:12px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;color:var(--muted,#667085);}
.hpw-cmp-new{color:#9a6a0a;}
.hpw-public{border:1px solid var(--border,#e4e9ee);border-radius:14px;overflow:hidden;background:var(--surface,#fff);max-width:520px;}
.hpw-public-img{position:relative;height:220px;background:#0b2d40 center/cover no-repeat;}
.hpw-public-status{position:absolute;left:12px;top:12px;background:#EDC91E;color:#1d2939;font-weight:800;font-size:11px;padding:3px 9px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em;}
.hpw-public-body{padding:14px 16px;}
.hpw-public-sector{font-size:12px;font-weight:700;color:#0272A7;}
.hpw-public-body h4{margin:6px 0;font-size:17px;}
.hpw-public-body p{font-size:13.5px;color:var(--muted,#475467);line-height:1.6;margin:0 0 8px;}
.hpw-public-body ul{margin:6px 0 0;padding-left:18px;font-size:13px;}
.hpw-public-prog{height:7px;background:var(--light,#eef2f6);border-radius:99px;overflow:hidden;}
.hpw-public-prog span{display:block;height:100%;background:linear-gradient(90deg,#0272A7,#2E9BD1);}
.hpw-public-progtxt{font-size:11.5px;color:var(--muted,#667085);margin-top:3px;}
.hpw-public-thumbs{display:flex;gap:6px;margin-top:10px;}
.hpw-public-thumbs img{width:56px;height:42px;object-fit:cover;border-radius:6px;}
@media (max-width:820px){.hpw-card{grid-template-columns:1fr;}.hpw-cover{min-height:160px;}.hpw-form,.hpw-compare{grid-template-columns:1fr;}.hpw-3{grid-template-columns:1fr 1fr;}}

/* ===== Homepage sector targets editor ===== */
.mgr-tgt-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
.mgr-tgt{border:1px solid var(--border,#e4e9ee);border-radius:14px;padding:14px 16px;background:var(--surface,#fff);display:flex;flex-direction:column;gap:6px;}
.mgr-tgt-h{display:flex;align-items:center;gap:10px;font-size:15px;}
.mgr-tgt-ic{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:#fff;}
.mgr-tgt label{font-size:12px;font-weight:700;margin-top:4px;display:block;}
.mgr-tgt-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.mgr-tgt-prev{background:var(--light,#f2f5f8);border-radius:10px;padding:8px 10px;font-size:12px;display:flex;flex-direction:column;gap:2px;}
.mgr-tgt-prev span{color:var(--muted,#667085);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;}
.mgr-tgt-prev b{font-size:14px;color:#0272A7;}
.mgr-tgt-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap;}
.mgr-tgt-upd{font-size:11.5px;color:var(--muted,#667085);}
.mgr-tgt-ro{font-size:12px;color:var(--muted,#667085);}
.hpw-drop.is-over{border-color:#0272A7;background:rgba(2,114,167,.06);}

/* ── Digital Operations (CTO / IT Manager), 7 Nov 2026 ── */
.dops-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border,#e5e7eb);}
.dops-tab{border:1px solid var(--border,#e5e7eb);background:var(--surface,#fff);color:var(--text,#1f2937);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;gap:6px;align-items:center;}
.dops-tab:hover{border-color:#0272A7;color:#0272A7;}
.dops-tab.active{background:#03344e;border-color:#03344e;color:#fff;}
.dops-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start;}
.dops-intro{font-size:12.5px;color:var(--muted,#6b7280);max-width:820px;margin:0;line-height:1.55;}
.dops-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}
.dops-grid2 .card{margin:0;}
.dops-h4{font-size:14px;margin:0 0 10px;color:#03344e;display:flex;gap:8px;align-items:center;}
.dops-att{cursor:pointer;padding:8px 12px;margin-bottom:6px;font-size:13px;}
.dops-att:hover{filter:brightness(.97);}
.dops-pills{display:flex;gap:6px;margin:12px 0;}
.dops-pill{border:1px solid #0272A7;background:transparent;color:#0272A7;border-radius:8px;padding:5px 14px;font-weight:600;font-size:12.5px;cursor:pointer;}
.dops-pill.active{background:#0272A7;color:#fff;}
.dops-list{margin:0;padding-left:18px;font-size:13px;line-height:1.6;}
.dops-list li{margin-bottom:3px;}
@media (max-width:900px){.dops-grid2{grid-template-columns:1fr;}}

/* ── Professional registers & Command Centre (8 Nov 2026) ── */
.rg-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:flex-start;}
.rg-intro{font-size:12.5px;color:var(--muted,#6b7280);max-width:820px;margin:0;line-height:1.55;}
.rg-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;font-size:12px;color:#03344e;}
.rg-meta span{background:rgba(2,114,167,.08);border-radius:999px;padding:3px 10px;}
.rg-meta i{color:#0272A7;margin-right:4px;}
tr.rg-overdue td{background:rgba(220,38,38,.05);}
.rg-form{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;}
.rg-f-textarea,.rg-f-checklist{grid-column:1 / -1;}
.rg-checklist{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;border:1px solid var(--border,#e5e7eb);border-radius:10px;padding:10px 12px;margin-bottom:8px;}
.rg-checklist label{font-weight:400;display:flex;gap:8px;align-items:flex-start;font-size:13px;margin:0;}
.rg-cl-view{list-style:none;margin:0;padding:0;font-size:13px;}
.rg-cl-view li{color:var(--muted,#6b7280);margin:2px 0;}
.rg-cl-view li.done{color:var(--text,#1f2937);}
.rg-cl-view li.done i{color:var(--green,#1C7C3C);}
.rg-status-box{margin-top:12px;padding:10px 12px;border:1px dashed var(--border,#d1d5db);border-radius:10px;}
.rg-history{list-style:none;margin:0;padding:0;font-size:12.5px;}
.rg-history li{padding:6px 0;border-bottom:1px solid var(--border,#eef0f3);}
.rg-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin-bottom:16px;}
.rg-card{border:1px solid var(--border,#e5e7eb);border-radius:12px;padding:12px 14px;background:var(--surface,#fff);cursor:pointer;transition:box-shadow .15s,border-color .15s;}
.rg-card:hover{border-color:#0272A7;box-shadow:0 6px 18px -10px rgba(2,52,78,.45);}
.rg-card-h{display:flex;gap:10px;align-items:center;font-size:14px;color:#03344e;}
.rg-card-h i{width:30px;height:30px;border-radius:9px;background:rgba(2,114,167,.1);color:#0272A7;display:flex;align-items:center;justify-content:center;flex:0 0 30px;}
.rg-card-n{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted,#6b7280);}
.rg-card-n .bad{color:#B42318;} .rg-card-n .warn{color:#B45309;}
@media (max-width:760px){ .rg-form,.rg-checklist{grid-template-columns:1fr;} }

/* Payee details (13 Nov 2026) */
.payee-cell{font-size:12.5px;line-height:1.55;min-width:190px;}
.payee-cell i{color:var(--green,#0272A7);}
.payee-num{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;letter-spacing:.03em;}
.payee-copy{padding:1px 7px !important;font-size:11px !important;margin-left:4px;}

/* Guarantee allocation (13 Nov 2026) */
.ga-tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:700;margin-top:2px;}
.ga-same{background:#dcf3e4;color:#1c6b3c;}
.ga-near{background:#e3eefb;color:#1A4A8A;}
.ga-far{background:#fff4d6;color:#7a4b00;}
.ga-bar{height:6px;background:#e7edf2;border-radius:999px;overflow:hidden;margin:4px 0 2px;min-width:90px;}
.ga-bar span{display:block;height:100%;border-radius:999px;}
.ga-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px 14px;background:var(--light,#f6f8fa);border:1px solid var(--border);border-radius:10px;padding:12px;margin:8px 0 10px;}
.ga-panel span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.ga-panel b{font-size:13.5px;}

/* General staff department banner (13 Nov 2026) */
.gs-dept-banner{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 16px;background:var(--light,#f6f8fa);border:1px solid var(--border);border-left:4px solid var(--green,#0272A7);border-radius:10px;padding:12px 14px;margin-bottom:10px;}
.gs-dept-banner span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.gs-dept-banner b{font-size:14px;}

/* Portal language switch EN | SW (13 Nov 2026) */
.plang{display:inline-flex;border:1px solid var(--border,#d6dde4);border-radius:999px;overflow:hidden;flex:0 0 auto;background:var(--card,#fff);}
.plang button{border:0;background:transparent;color:var(--muted,#5b6875);font:600 12px/1 inherit;padding:7px 11px;cursor:pointer;min-width:38px;}
.plang button.on{background:var(--primary,#0272A7);color:#fff;}
.plang button:focus-visible{outline:2px solid var(--primary,#0272A7);outline-offset:-2px;}
.plang-float{position:fixed;right:16px;bottom:16px;z-index:1050;box-shadow:0 4px 14px rgba(0,0,0,.15);}
