:root{--bg:#F0EFEB;--bg2:#FFFFFF;--bg3:#E8E7E2;--border:#D8D7D2;--border2:#C8C7C2;--txt:#1A1A2E;--txt2:#5A5A6E;--txt3:#9A9AAE;--acc:#E91E8C;--acc2:#C4177A;--grn:#059669;--grn2:#10B981;--amb:#D97706;--amb2:#F59E0B;--red:#DC2626;--red2:#EF4444;--r:10px;--r-sm:6px;--r-lg:16px;--sidebar-w:220px;--topbar-h:52px}
/* ══ SCROLL ARCHITECTURE ══════════════════════════════════════════════
   body: overflow:hidden — traps scroll to #content only
   #content: the ONE scroll container for all app content
   sidebar + topbar: fixed, never scroll with content
   mobile: body gets overflow:auto, #content height:auto
   ══════════════════════════════════════════════════════════════════ */
body{font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--txt);min-height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}
#content{
  position:relative;
  margin-left:var(--sidebar-w);
  padding-top:var(--topbar-h);
  padding-bottom:80px;
  box-sizing:border-box;
  height:100vh;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
}
@media(max-width:768px){
  body{overflow-y:auto !important;-webkit-overflow-scrolling:touch !important}
  #content{
    margin-left:0 !important;
    height:auto !important;
    min-height:calc(100vh - var(--topbar-h)) !important;
    overflow-y:auto !important;
    overflow-x:hidden !important;
    -webkit-overflow-scrolling:touch !important;
  }
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;height:100%}
 @media(max-width:768px){}
a{color:var(--acc2);text-decoration:none}
a:hover{text-decoration:underline}
button{cursor:pointer;font-family:inherit}
input,select,textarea{font-family:inherit}
ul{list-style:none}
#impersonate-banner{position:fixed;top:0;left:0;right:0;background:#D29922;color:#000;text-align:center;padding:6px 16px;font-size:12px;font-weight:700;z-index:9999}
#impersonate-banner button{background:rgba(0,0,0,.15);border:none;border-radius:4px;padding:2px 10px;margin-left:12px;font-weight:700;font-size:11px;cursor:pointer}
#topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-h);background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;z-index:100}
#platform-logo{font-size:18px;font-weight:900;letter-spacing:-1px;color:#0d1b3e}
#platform-logo span{color:var(--acc2)}
#platform-version{font-size:10px;color:var(--txt3);background:var(--bg3);border:1px solid var(--border2);border-radius:4px;padding:1px 6px}
.env-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:1px}
.env-badge.dev{background:rgba(210,153,34,.15);color:#D29922;border:1px solid rgba(210,153,34,.3)}
#user-name{font-size:13px;color:var(--txt2)}
#logout-btn{font-size:18px;color:var(--txt2);padding:4px;border-radius:6px;transition:color .2s}
#logout-btn:hover{color:var(--red2);text-decoration:none}
#impersonate-widget{position:relative}
#impersonate-btn{background:var(--bg3);border:1px solid var(--border2);border-radius:8px;padding:6px 12px;font-size:12px;color:var(--txt);font-weight:600;transition:border-color .2s}
#impersonate-btn:hover{border-color:var(--acc)}
#impersonate-dropdown{position:fixed;top:var(--topbar-h);right:0;background:var(--bg2);border:1px solid var(--border2);border-radius:0 0 12px 12px;padding:8px;min-width:240px;max-width:100vw;box-shadow:0 8px 24px rgba(0,0,0,.4);z-index:200}
.imp-title{font-size:10px;font-weight:700;color:var(--txt3);text-transform:uppercase;letter-spacing:1px;padding:4px 8px 8px;border-bottom:1px solid var(--border);margin-bottom:4px}
.imp-user{display:flex;flex-direction:column;width:100%;background:none;border:none;border-radius:8px;padding:8px;text-align:left;transition:background .15s;cursor:pointer}
.imp-user:hover{background:var(--bg3)}
.imp-name{font-size:13px;font-weight:600;color:var(--txt)}
.imp-role{font-size:11px;color:var(--txt2)}
#hamburger{display:none}
#sidebar{position:fixed;top:var(--topbar-h);left:0;bottom:0;width:var(--sidebar-w);background:var(--bg2);border-right:1px solid var(--border);overflow-y:auto;padding:12px 0;z-index:90}
#nav-menu{padding:0 8px}
#nav-menu li{margin-bottom:2px}
.nav-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);font-size:13px;font-weight:500;color:var(--txt2);text-decoration:none;transition:background .15s,color .15s;white-space:nowrap}
.nav-item:hover{background:var(--bg3);color:var(--txt);text-decoration:none}
.nav-item.active{background:rgba(31,111,235,.15);color:var(--acc2);font-weight:700}

.app-error{margin:40px;padding:24px;background:rgba(248,81,73,.08);border:1px solid rgba(248,81,73,.25);border-radius:var(--r);color:var(--red2)}
.toolbar{display:flex;gap:10px;padding:16px 24px;background:var(--bg2);border-bottom:1px solid var(--border);flex-wrap:wrap}
.toolbar-search{flex:1;min-width:200px;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:8px 12px;color:var(--txt);font-size:13px;outline:none;transition:border-color .2s}
.toolbar-search:focus{border-color:var(--acc)}
.toolbar-select{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:8px 12px;color:var(--txt);font-size:13px;cursor:pointer;outline:none}
.empty-state{text-align:center;padding:60px 20px;color:var(--txt2);font-size:15px}
#diag-panel{position:fixed;bottom:16px;right:16px;z-index:500}
#diag-toggle{background:var(--amb);color:#000;border:none;border-radius:50%;width:40px;height:40px;font-size:16px;box-shadow:0 4px 12px rgba(0,0,0,.4);cursor:pointer}
#diag-content{position:absolute;bottom:48px;right:0;background:var(--bg2);border:1px solid var(--amb2);border-radius:var(--r);padding:16px;width:360px;max-height:400px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,.4);font-family:'JetBrains Mono',monospace;font-size:11px}
.diag-title{font-weight:700;color:var(--amb2);margin-bottom:8px}
.diag-link{display:block;margin-top:12px;color:var(--acc2);font-size:11px}
.app-header{display:flex;align-items:flex-start;justify-content:space-between;padding:24px 24px 0;flex-wrap:wrap;gap:16px}
.app-title{font-size:22px;font-weight:900;color:var(--txt)}
.app-subtitle{font-size:12px;color:var(--txt2);margin-top:4px}
.app-stats{display:flex;gap:10px;flex-wrap:wrap}
.stat-pill{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r);padding:8px 16px;text-align:center;min-width:80px}
.stat-value{display:block;font-size:18px;font-weight:900;color:var(--acc2)}
.stat-label{display:block;font-size:10px;color:var(--txt2);text-transform:uppercase;letter-spacing:1px;margin-top:2px}
.companies-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;padding:16px 24px 40px}
.company-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;transition:border-color .2s,transform .15s,box-shadow .2s;position:relative;overflow:hidden}
.company-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--card-color,var(--acc))}
.company-card:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.3)}
.card-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}
.card-identity{display:flex;gap:10px;align-items:center;flex:1}
.card-flag{font-size:28px;line-height:1}
.card-name{font-size:15px;font-weight:700;color:var(--txt);line-height:1.2}
.card-industry{font-size:11px;color:var(--txt2);margin-top:3px}
.score-ring{display:flex;flex-direction:column;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;border:3px solid var(--border2);flex-shrink:0}
.score-ring.score-hi{border-color:var(--grn2)}.score-ring.score-md{border-color:var(--amb2)}.score-ring.score-lo{border-color:var(--red2)}.score-ring.score-na{border-color:var(--border2)}
.score-val{font-size:13px;font-weight:900;line-height:1}
.score-ring.score-hi .score-val{color:var(--grn2)}.score-ring.score-md .score-val{color:var(--amb2)}.score-ring.score-lo .score-val{color:var(--red2)}.score-ring.score-na .score-val{color:var(--txt2)}
.score-lbl{font-size:8px;color:var(--txt2);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.card-meta{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.meta-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--txt2)}
.meta-icon{font-size:13px;width:18px;text-align:center}
.card-frameworks{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:16px;min-height:24px}
.fw-badge{background:rgba(31,111,235,.1);border:1px solid rgba(31,111,235,.2);color:var(--acc2);border-radius:4px;padding:2px 7px;font-size:10px;font-weight:600;white-space:nowrap}
.fw-badge.more{background:var(--bg3);border-color:var(--border2);color:var(--txt2)}
.card-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn-card{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:var(--r-sm);font-size:12px;font-weight:700;border:none;cursor:pointer;text-decoration:none;transition:background .15s;white-space:nowrap;font-family:inherit}
.btn-card.btn-primary{background:var(--acc);color:#fff}.btn-card.btn-primary:hover{background:var(--acc2);text-decoration:none}
.btn-card.btn-secondary{background:var(--bg3);color:var(--txt2);border:1px solid var(--border2)}.btn-card.btn-secondary:hover{color:var(--txt);background:var(--border2)}
#tenant-widget{position:relative;margin-right:6px}
#tenant-btn{display:flex;align-items:center;gap:6px;padding:5px 10px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;color:var(--txt);cursor:pointer;font-size:12px;font-weight:500;font-family:inherit;height:32px;white-space:nowrap}
#tenant-btn:hover{border-color:var(--acc);color:var(--acc)}
.t-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}
#tenant-dropdown{position:absolute;top:38px;right:0;width:270px;background:var(--bg2);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:600;overflow:hidden}
.td-search{padding:8px 10px;border-bottom:1px solid var(--border)}
#td-search-input{width:100%;padding:5px 9px;background:var(--bg);border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--txt);font-family:inherit;outline:none}
.td-list{max-height:340px;overflow-y:auto}
.td-sep{font-size:10px;font-weight:700;color:var(--txt2);text-transform:uppercase;letter-spacing:.06em;padding:6px 12px 2px}
.td-form{margin:0}
.td-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 12px;background:none;border:none;cursor:pointer;font-family:inherit;text-align:left;color:var(--txt);transition:background .1s}
.td-item:hover{background:var(--bg)}
.td-active{background:rgba(233,30,140,.08)!important;color:var(--acc)!important}
.td-info{display:flex;flex-direction:column;flex:1;min-width:0}
.td-name{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-sub{font-size:10px;color:var(--txt2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-active .td-sub{color:inherit;opacity:.7}

/* ── MOBILE RESPONSIVE ──────────────────────────────────────────── */
@media (max-width: 768px) {
  :root { --sidebar-w: 0px; }
  #sidebar { transform: translateX(-220px); transition: transform .25s ease; position: fixed; z-index: 800; height: calc(100dvh - var(--topbar-h)); max-height: calc(100vh - var(--topbar-h)); width: 220px !important; top: var(--topbar-h); padding-bottom: 120px !important; -webkit-overflow-scrolling: touch; overflow-y: auto; }
  #sidebar.open { transform: translateX(0); }
  #sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 799; }
  #sidebar-overlay.show { display: block; }
  #topbar { padding: 0 10px; gap: 6px; }
  #hamburger{display:flex !important;background:none;border:none;cursor:pointer;color:var(--txt);font-size:20px;padding:4px 6px;border-radius:var(--r-sm);transition:background .15s;order:-1;align-items:center;justify-content:center;min-width:36px;min-height:36px}
  #tenant-widget { display: flex !important; }
  #tenant-btn { font-size:10px !important; padding:3px 6px !important; height:28px !important; }
  /* removed stray #content rule — CSS-004 */
}

@media (max-width: 480px) {
  #topbar { padding: 0 8px; }
  .reg-hero { padding: 16px !important; }
  #platform-version { display: none !important; }
  .env-badge { display: none !important; }
  #topbar-left { gap: 4px !important; }
  #topbar-center { margin: 0 4px !important; }
  #omnibar-trigger { padding: 0 8px !important; }
  #task-btn { padding: 4px 8px !important; font-size:11px !important; }
  #task-btn-label { display:none !important; }
}

#topbar { justify-content: flex-start; gap: 8px; padding: 0 12px; }

  display: flex; align-items: center; gap: 8px;
  width: 100%; padding: 0 12px; height: 32px;
  background: var(--bg3); border: 1.5px solid var(--border);
  border-radius: 8px; cursor: pointer; font-size: 12px;
  color: var(--txt2); font-family: inherit; text-align: left;
  transition: border-color .15s, box-shadow .15s;
  position: relative; z-index: 102;
}


/* ── MOBILE TOPBAR ─────────────────────────────────────────────── */
@media (max-width: 768px) {
}

/* ════════════════════════════════════════════════════════
   TOPBAR LAYOUT & OMNIBAR — definitive rules, do not edit
   Z-index ladder: topbar=100, omnibar-modal=9000
   ════════════════════════════════════════════════════════ */
#topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-h);background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;padding:0 12px;z-index:100}
#topbar-left{display:flex;align-items:center;gap:6px;flex-shrink:0}
#topbar-center{flex:1;min-width:0;max-width:480px;margin:0 8px}
#topbar-right{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}
#omnibar-trigger{display:flex;align-items:center;gap:8px;width:100%;padding:0 12px;height:32px;background:var(--bg3);border:1.5px solid var(--border);border-radius:8px;cursor:pointer;font-size:12px;color:var(--txt2);font-family:inherit;transition:border-color .15s,box-shadow .15s}
#omnibar-trigger:hover{border-color:var(--acc);color:var(--txt);box-shadow:0 0 0 3px rgba(233,30,140,.1)}
#omnibar-trigger:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(233,30,140,.15)}
#omnibar-trigger svg{flex-shrink:0;opacity:.5}
#omnibar-placeholder{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
#omnibar-trigger kbd{margin-left:auto;font-size:10px;padding:1px 5px;background:var(--bg2);border:1px solid var(--border);border-radius:4px;font-family:inherit;flex-shrink:0}
#omnibar-modal{position:fixed;inset:0;z-index:9000;display:none;align-items:flex-start;justify-content:center;padding-top:80px}
#omnibar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:8999;backdrop-filter:blur(1px)}
#omnibar-box{position:relative;z-index:9001;width:100%;max-width:620px;background:var(--bg2);border:1px solid var(--border);border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.4);overflow:hidden;margin:0 16px}
#omnibar-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}
#omnibar-search-icon{font-size:18px;flex-shrink:0}
#omnibar-input{flex:1;background:transparent;border:none;outline:none;font-size:16px;color:var(--txt);font-family:inherit}
#omnibar-input::placeholder{color:var(--txt2)}
#omnibar-esc{font-size:11px;padding:2px 7px;background:var(--bg3);border:1px solid var(--border);border-radius:5px;cursor:pointer;color:var(--txt2);font-family:inherit;flex-shrink:0}
#omnibar-results{max-height:400px;overflow-y:auto}
#omnibar-empty{display:none}
.omni-group-label{padding:6px 16px 2px;font-size:10px;font-weight:700;color:var(--txt2);text-transform:uppercase;letter-spacing:.07em;background:var(--bg3)}
.omni-item{display:flex;align-items:center;gap:10px;padding:9px 16px;cursor:pointer;transition:background .1s;text-decoration:none;color:var(--txt)}
.omni-item:hover,.omni-item.omni-active{background:rgba(233,30,140,.08);border-left:3px solid var(--acc)}
.omni-item-icon{font-size:16px;flex-shrink:0;width:24px;text-align:center}
.omni-item-
.omni-item-title{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.omni-item-sub{font-size:11px;color:var(--txt2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.omni-item-cat{font-size:10px;padding:1px 6px;border-radius:4px;background:var(--bg3);color:var(--txt2);flex-shrink:0}
#omnibar-footer{display:flex;gap:12px;padding:8px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--txt2)}
#omnibar-footer kbd{font-size:10px;padding:1px 5px;background:var(--bg3);border:1px solid var(--border);border-radius:3px;font-family:inherit;margin-right:2px}
.omni-highlight{color:var(--acc);font-weight:700}
@media(max-width:768px){
  #topbar-right #impersonate-widget{display:none}
  #topbar-center{max-width:none;margin:0 4px}
  #omnibar-trigger kbd{display:none}
  #omnibar-modal{padding-top:16px}
  #omnibar-box{margin:0 8px}
}
#omnibar-modal{display:none}
#omnibar-modal.is-open{display:flex}

/* ── TASK PANEL ───────────────────────────────────────────── */
#task-panel{display:none;position:fixed;top:var(--topbar-h);right:0;width:380px;height:calc(100vh - var(--topbar-h));background:var(--bg2);border-left:1px solid var(--border);z-index:700;flex-direction:column;box-shadow:-4px 0 24px rgba(0,0,0,.15)}
#task-panel.is-open{display:flex!important}
.task-item{padding:10px 16px;border-bottom:1px solid var(--border);display:flex;gap:10px;align-items:flex-start;transition:background .1s}
.task-item:hover{background:var(--bg3)}
.task-check{width:18px;height:18px;border-radius:50%;border:2px solid var(--border);cursor:pointer;flex-shrink:0;margin-top:2px;transition:all .15s}
.task-check:hover{border-color:var(--acc);background:rgba(233,30,140,.1)}
.task-
.task-title{font-size:13px;color:var(--txt);line-height:1.35;margin-bottom:3px}
.task-title.overdue{color:#DC2626}
.task-meta{font-size:10px;color:var(--txt2);display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.task-actions{display:flex;gap:3px;opacity:0;transition:opacity .15s;flex-shrink:0}
.task-item:hover .task-actions{opacity:1}
.ta-btn{padding:2px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg2);cursor:pointer;font-size:10px;color:var(--txt2);font-family:inherit}
.ta-btn:hover{border-color:var(--acc);color:var(--acc)}
.tp-tab{padding:8px 12px;border:none;background:none;cursor:pointer;font-size:11px;font-weight:600;color:var(--txt2);border-bottom:2px solid transparent;font-family:inherit;white-space:nowrap;transition:color .1s}
.tp-tab.active{color:var(--acc);border-bottom-color:var(--acc)}
.tp-tab.danger{color:#DC2626}
.stat-box{text-align:center;padding:6px 4px;background:var(--bg3);border-radius:7px;border:1px solid var(--border)}
@media(max-width:768px){#task-panel{width:100%}}

/* ── TASK BUTTON IN TOPBAR-CENTER ─────────────────────────── */
#topbar-center { display:flex; align-items:center; gap:8px; flex:1; min-width:0; max-width:680px; margin:0 8px; }
#task-btn { display:flex; align-items:center; gap:6px; padding:0 12px; height:32px; background:var(--bg3); border:1.5px solid var(--border); border-radius:8px; cursor:pointer; font-size:12px; color:var(--txt2); font-family:inherit; white-space:nowrap; flex-shrink:0; transition:border-color .15s,box-shadow .15s; position:relative; }
#task-btn:hover { border-color:var(--acc); color:var(--txt); box-shadow:0 0 0 3px rgba(233,30,140,.1); }
#task-btn.active { border-color:var(--acc); color:var(--acc); background:rgba(233,30,140,.06); }
#task-btn-label { font-weight:600; }
#task-badge { display:none; min-width:18px; height:18px; background:#DC2626; color:#fff; border-radius:9px; font-size:10px; font-weight:700; align-items:center; justify-content:center; padding:0 4px; margin-left:2px; }
#task-badge.show { display:flex; }
#omnibar-trigger { flex:1; min-width:0; }

/* ── MAP FIX ─────────────────────────────────────────────── */
#global-map { width:100% !important; height:100% !important; }
.leaflet-container { width:100% !important; height:100% !important; }

#dashboard{overflow-y:auto;height:calc(100vh - var(--topbar-h))}
#dash{min-height:100%;padding-bottom:80px}

/* A-03: Hide scrollbar on tab rows */
.app-tabs,.tab-row,.tabs-row{scrollbar-width:none;-ms-overflow-style:none;overflow-x:auto}
.app-tabs::-webkit-scrollbar,.tab-row::-webkit-scrollbar{display:none}

/* ── Mobile fixes 2026-04-21 ────────────────────────────────────── */
@media (max-width: 768px) {
  #topbar-right { display:flex !important; align-items:center; gap:4px; flex-shrink:0; }
  #impersonate-widget { display:flex !important; }
  #impersonate-btn { font-size:10px !important; padding:3px 7px !important; max-width:100px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  /* Fix course detail layout on mobile */
  #course-detail-wrap { flex-direction:column !important; }
  #course-sidebar-panel { width:100% !important; border-right:none !important; border-bottom:1px solid var(--border) !important; max-height:180px !important; }
  #course-main-panel { padding:16px !important; }
  /* Fix category pills - horizontal scroll instead of wrap */
  #cat-filter-row { flex-wrap:nowrap !important; overflow-x:auto !important; -webkit-overflow-scrolling:touch; padding-bottom:6px; scrollbar-width:none; }
  #cat-filter-row::-webkit-scrollbar { display:none; }
  /* Fix CPAS top controls */
  #cpas-top-controls { position:sticky !important; top:0 !important; z-index:10 !important; background:var(--bg) !important; padding:8px 12px !important; }
}
@media (max-width: 480px) {
  #impersonate-btn { max-width:80px; font-size:9px !important; }
  #tenant-btn { max-width:90px; font-size:9px !important; }
}

/* ── CPAS sticky controls ───────────────────────────────────────── */
#cpas-top-controls {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--bg);
  padding: 8px 0;
  margin-bottom: 12px;
}
@media print {
  #cpas-top-controls { display: none !important; }
}

/* ── Course grid - category pills single scrollable row on mobile ─ */
@media (max-width: 768px) {
  #cat-filter-row {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
    max-width: 100%;
    scrollbar-width: none;
  }
  #cat-filter-row::-webkit-scrollbar { display: none; }
  #cat-filter-row a { white-space: nowrap; flex-shrink: 0; }

  /* Course detail - stack sidebar above content */
  #course-detail-wrap {
    flex-direction: column !important;
  }
  #course-sidebar-panel {
    width: 100% !important;
    max-height: 160px !important;
    border-right: none !important;
    border-bottom: 1px solid var(--border) !important;
    overflow-y: auto !important;
  }
  #course-main-panel {
    overflow-y: auto !important;
  }

  /* Course grid header - wrap nicely */
  #courses-grid-header {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 8px !important;
  }
  #courses-grid-header form {
    width: 100% !important;
    margin-left: 0 !important;
  }
  #courses-grid-header form input[type=text] {
    flex: 1 !important;
    width: auto !important;
  }
}

#diagApp{overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;}


/* ═══════════════════════════════════════════════════════════
   MOBILE RESPONSIVE FIXES — Bug report 2026-04-22
   ═══════════════════════════════════════════════════════════ */

@media(max-width:768px){

  /* Fix 1: All fixed-wrapper apps must fill screen properly */
  [id$="App"],[id$="Wrap"],[id$="wrap"]{
    left:0 !important;
    width:100% !important;
  }

  /* Fix 2: Flex panel apps — allow vertical scroll on mobile */
  #complianceApp,#riskApp,#incidentsApp,#policiesApp,
  #booksApp,#coursesApp,#dataRegistryApp,#reportingApp,
  #wizardsApp,.pmo-wrap,.inv-wrap,#co-wrap,#reg-wrap,#qwrap{
    flex-direction:column !important;
    overflow-y:auto !important;
    overflow-x:hidden !important;
  }

  /* Fix 3: Left panels go full-width on mobile */
  #course-sidebar-panel,#course-detail-wrap,
  [id$="-panel"],[class*="sidebar-panel"]{
    width:100% !important;
    max-width:100% !important;
    border-right:none !important;
    border-bottom:1px solid var(--border) !important;
    max-height:40vh;
  }

  /* Fix 4: Search bar visibility on mobile */
  #omnibar-trigger,
  [id*="search"] input,
  .ld-search-bar,
  input[type="search"],
  input[placeholder*="Search"],
  input[placeholder*="search"]{
    min-width:200px !important;
    font-size:16px !important;
    padding:10px 14px !important;
  }

  /* Fix 5: Contact card not cut off */
  .bbp-person-avatar,
  [class*="contact-card"],[class*="member-card"]{
    flex-wrap:wrap !important;
    width:100% !important;
    box-sizing:border-box !important;
  }

  /* Fix 6: Tables scroll horizontally */
  table{
    display:block;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    white-space:nowrap;
    max-width:100%;
  }
  table td, table th{
    white-space:normal;
    min-width:80px;
  }

  /* Fix 7: Buttons min touch target */
  button,.btn,a.btn,[class*="-btn"]{
    min-height:40px !important;
    min-width:40px;
  }

  /* Fix 8: Modal full screen on mobile */
  .bbp-modal,[class*="modal"]{
    inset:0 !important;
    border-radius:0 !important;
    max-height:100vh !important;
    max-width:100vw !important;
  }

  /* Fix 9: Grid 2-col -> 1-col on mobile */
  [style*="grid-template-columns: repeat(2"],
  [style*="grid-template-columns:repeat(2"]{
    grid-template-columns:1fr !important;
  }
  [style*="grid-template-columns: repeat(3"],
  [style*="grid-template-columns: repeat(4"]{
    grid-template-columns:1fr 1fr !important;
  }

  /* Fix 10: Map touch events */
  .leaflet-container{
    touch-action:auto !important;
    -ms-touch-action:auto !important;
  }
  .leaflet-touch .leaflet-bar a{
    width:34px !important;
    height:34px !important;
    line-height:34px !important;
  }

  /* Fix 11: Top bar on mobile */
  #topbar{
    padding:0 8px !important;
    gap:6px !important;
  }
  #topbar .logo-text,
  #topbar [class*="version"]{
    display:none;
  }

  /* Fix 12: Course category filters wrap properly */
  #cat-filter-row{
    flex-wrap:wrap !important;
    gap:6px !important;
    overflow-x:auto !important;
    padding-bottom:4px;
    scrollbar-width:none;
  }

  /* Fix 13: Newsletter editorial calendar table */
  .cal-tbl{
    font-size:11px;
  }
  .cal-tbl td:nth-child(4),
  .cal-tbl th:nth-child(4){
    display:none;
  }

  /* Fix 14: Stat cards 2x2 grid */
  [style*="grid-template-columns:repeat(4"]{
    grid-template-columns:1fr 1fr !important;
  }

  /* Fix 15: Loading overlay */
  #grc-loading,
  [id*="loading"],[class*="loading"]{
    background:var(--bg) !important;
  }
}

/* Extra small screens */
@media(max-width:480px){
  [style*="grid-template-columns:1fr 1fr"]{
    grid-template-columns:1fr !important;
  }
  .nl-tabs,.app-tabs,.tab-row{
    overflow-x:auto;
    flex-wrap:nowrap;
    font-size:11px;
  }
  .nl-tab,.app-tab{
    padding:8px 10px !important;
    white-space:nowrap;
  }
}
