:root{
  --bg:#EFF2F7; --surface:#FFFFFF; --surface-2:#F7F9FC;
  --ink:#172033; --ink-soft:#4B5468; --muted:#8791A3; --border:#E1E6EF;
  --primary:#1D3A6E; --primary-tint:#E9EFFB;
  --verified:#0E7C6B; --verified-tint:#E4F5F1;
  --pending:#B4690E; --pending-tint:#FBF0E2;
  --alert:#B3261E; --alert-tint:#FAEAE9;
  --super:#6B3FA0; --super-tint:#F1E9FA;
  --radius:12px;
  --shadow: 0 1px 2px rgba(23,32,51,.04), 0 8px 24px -12px rgba(23,32,51,.12);
  font-family:'Inter',sans-serif;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;}
h1,h2,h3,.font-display{font-family:'Sora',sans-serif;}
a{color:inherit;}
button{font-family:'Inter',sans-serif;cursor:pointer;}
.mono{font-family:'IBM Plex Mono',monospace;}

.login-screen{min-height:100vh;display:flex;}
.login-brand{
  flex:1;background:radial-gradient(circle at 20% 15%, #2C5AA6, transparent 55%), linear-gradient(160deg,var(--primary),#122A52 75%);
  color:#fff;padding:60px 56px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;
}
.login-logo{font-family:'Sora',sans-serif;font-weight:800;font-size:20px;display:flex;gap:6px;align-items:center;margin-bottom:64px;}
.login-logo span{font-weight:500;opacity:.85;}
.login-brand h1{font-size:33px;line-height:1.28;font-weight:700;max-width:420px;margin:0 0 14px;}
.login-brand p{font-size:14px;opacity:.78;max-width:380px;line-height:1.65;}
.login-panel{width:440px;flex:none;background:#fff;display:flex;align-items:center;justify-content:center;padding:40px;}
.login-card{width:100%;max-width:320px;}
.login-card h2{font-size:22px;margin:0 0 4px;}
.login-card .sub{font-size:12.5px;color:var(--muted);margin:0 0 24px;}
.login-card label{font-size:11px;font-weight:700;color:var(--ink-soft);display:block;margin:14px 0 5px;}
.login-card input[type=email],.login-card input[type=text],.login-card input[type=password]{
  width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);font-size:13px;background:var(--surface-2);
}
.btn-login{width:100%;margin-top:22px;background:var(--primary);color:#fff;border:none;border-radius:8px;padding:11px;font-size:13.5px;font-weight:700;}
.btn-login:disabled{opacity:.5;cursor:not-allowed;}
.forgot{display:block;text-align:center;margin-top:14px;font-size:12px;color:var(--primary);font-weight:600;text-decoration:none;}
.mfa-icon{width:42px;height:42px;border-radius:10px;background:var(--primary-tint);color:var(--primary);display:flex;align-items:center;justify-content:center;margin-bottom:14px;}
.mfa-boxes{display:flex;gap:8px;margin:16px 0 6px;}
.mfa-box{width:40px;height:46px;text-align:center;font-size:17px;font-weight:700;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);font-family:'Sora',sans-serif;}
.mfa-box:focus{outline:2px solid var(--primary);outline-offset:1px;}
.alert-box{padding:10px 13px;border-radius:8px;font-size:12.5px;margin-bottom:16px;line-height:1.5;}
.alert-error{background:var(--alert-tint);color:var(--alert);}
.alert-success{background:var(--verified-tint);color:var(--verified);}
.alert-info{background:var(--primary-tint);color:var(--primary);}
.qr-box{border:1px solid var(--border);border-radius:10px;padding:16px;text-align:center;background:var(--surface-2);margin:14px 0;}
.secret-key{font-family:'IBM Plex Mono',monospace;font-size:12px;background:#fff;border:1px solid var(--border);border-radius:6px;padding:8px 10px;word-break:break-all;margin-top:8px;}
@media (max-width:900px){ .login-brand{display:none;} .login-panel{width:100%;} }

/* ================= APP TOPNAV (matches design mockup) ================= */
.topnav{
  position:sticky;top:0;z-index:50;
  background:var(--surface);border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:4px;
  padding:0 16px;height:58px;
}
.logo{font-family:'Sora',sans-serif;font-weight:800;font-size:19px;color:var(--primary);display:flex;align-items:center;gap:6px;white-space:nowrap;flex:none;text-decoration:none;}
.logo .dot{color:var(--verified);}
.logo span{font-weight:500;color:var(--ink-soft);font-size:16px;}
.topnav-search{width:220px;position:relative;margin-right:6px;}
.topnav-search input{
  width:100%;padding:8px 12px 8px 34px;border-radius:8px;border:none;background:var(--surface-2);
  font-size:13px;color:var(--ink);
}
.topnav-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted);}

.nav-icons{display:flex;align-items:stretch;height:100%;flex:1;justify-content:center;}
.nav-icons a{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:0 13px;color:var(--ink-soft);min-width:50px;border-bottom:2px solid transparent;text-decoration:none;
}
.nav-icons a span.lbl{font-size:10.5px;font-weight:600;color:var(--ink-soft);}
.nav-icons a.active{color:var(--ink);border-bottom-color:var(--ink);}
.nav-icons a.active span.lbl{color:var(--ink);}
.nav-icons a .nbadge{
  position:absolute;top:4px;right:6px;background:var(--alert);color:#fff;font-size:9px;font-weight:700;
  min-width:14px;height:14px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 3px;
}
.nav-icons a .avatar{margin-bottom:1px;}

.topnav-right{display:flex;align-items:center;gap:12px;margin-left:auto;padding-left:12px;border-left:1px solid var(--border);}
.breadcrumbs{background:var(--surface-2);border-bottom:1px solid var(--border);font-size:12px;display:flex;align-items:center;gap:6px;padding:9px 16px;}
.breadcrumbs a{color:var(--muted);text-decoration:none;}
.breadcrumbs a:hover{color:var(--primary);text-decoration:underline;}
.breadcrumbs .crumb-sep{color:var(--muted);opacity:0.5;}
.breadcrumbs .crumb-current{color:var(--ink);font-weight:600;}
.icon-btn{
  position:relative;width:34px;height:34px;border-radius:8px;border:none;background:var(--surface-2);
  display:flex;align-items:center;justify-content:center;color:var(--ink-soft);text-decoration:none;
}
.role-badge{font-size:10.5px;font-weight:700;padding:5px 10px;border-radius:999px;white-space:nowrap;background:var(--primary-tint);color:var(--primary);}
.role-badge.admin{background:var(--super-tint);color:var(--super);}
.role-badge.qm{background:var(--verified-tint);color:var(--verified);}

.wrap{max-width:900px;margin:32px auto;padding:0 20px;}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius,12px);padding:22px;box-shadow:0 1px 2px rgba(23,32,51,.04),0 8px 24px -12px rgba(23,32,51,.12);}
.btn-ghost{background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--border);border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:700;text-decoration:none;}

.btn{border:none;border-radius:8px;padding:9px 16px;font-size:12.5px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px;text-decoration:none;}
.btn-primary{background:var(--primary);color:#fff;}
.btn-primary:hover{background:#16305E;}
.btn-danger{background:var(--alert);color:#fff;}
.btn-sm{padding:6px 11px;font-size:11.5px;}
.btn:disabled{opacity:.5;cursor:not-allowed;}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.form-grid .full{grid-column:1/-1;}
.form-field label{font-size:11px;font-weight:700;color:var(--ink-soft);display:block;margin-bottom:5px;}
.form-field input,.form-field select{
  width:100%;padding:9px 11px;border-radius:8px;border:1px solid var(--border);font-size:13px;background:var(--surface-2);
}
.form-field .hint{font-size:10.5px;color:var(--muted);margin-top:4px;}

table.data-table{width:100%;border-collapse:collapse;font-size:12.5px;}
table.data-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:9px 10px;border-bottom:1px solid var(--border);font-weight:700;background:var(--surface-2);}
table.data-table td{padding:11px 10px;border-bottom:1px solid var(--border);vertical-align:middle;}
table.data-table tr:last-child td{border-bottom:none;}

.avatar{width:36px;height:36px;border-radius:8px;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Sora',sans-serif;font-weight:700;font-size:13px;flex:none;overflow:hidden;position:relative;}
.avatar.purple{background:var(--super);}
.avatar.sm{width:30px;height:30px;font-size:11px;border-radius:7px;}
.avatar.lg{width:64px;height:64px;font-size:20px;border-radius:14px;}
.avatar img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;}
.name-cell{display:flex;align-items:center;gap:10px;}

.status-pill{font-size:10px;font-weight:700;padding:3px 9px;border-radius:6px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;}
.status-pill i{width:6px;height:6px;border-radius:50%;display:inline-block;}
.status-active{background:var(--verified-tint);color:var(--verified);} .status-active i{background:var(--verified);}
.status-pending{background:var(--pending-tint);color:var(--pending);} .status-pending i{background:var(--pending);}
.status-suspended{background:var(--alert-tint);color:var(--alert);} .status-suspended i{background:var(--alert);}
.status-archived{background:#EDEFF3;color:#7A8296;} .status-archived i{background:#7A8296;}
.status-verified{background:var(--verified-tint);color:var(--verified);}
.status-expiring{background:var(--alert-tint);color:var(--alert);}
.status-expired{background:#EDEFF3;color:#7A8296;}

.cert-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}
.cert-row:last-child{border-bottom:none;}
.cert-icon{width:34px;height:34px;border-radius:8px;background:var(--surface-2);color:var(--primary);display:flex;align-items:center;justify-content:center;flex:none;}
.cert-main{flex:1;min-width:0;}
.cert-title{font-size:13px;font-weight:700;}
.cert-meta{font-size:11px;color:var(--muted);margin-top:2px;}
.field-lock{display:inline-flex;align-items:center;gap:4px;font-size:9.5px;color:var(--muted);font-weight:600;margin-top:3px;}

.filter-bar{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;align-items:center;}
.filter-bar input,.filter-bar select{padding:8px 11px;border-radius:8px;border:1px solid var(--border);font-size:12.5px;background:var(--surface-2);}
.filter-bar input{flex:1;min-width:180px;}

.section-title{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;margin:20px 0 10px;}
.section-title:first-child{margin-top:0;}

/* ---------- Organizational Console: nested/dynamic sidebar ---------- */
.oc-shell{display:flex;align-items:flex-start;gap:20px;max-width:1200px;margin:0 auto;padding:0 20px 40px;}
.oc-sidebar{width:270px;flex:none;position:sticky;top:78px;}
.oc-sidebar .card{padding:10px;}
.oc-sidebar-title{padding:8px 8px 12px;}
.oc-sidebar-title h3{margin:0;font-size:14.5px;font-family:'Sora',sans-serif;}
.oc-sidebar-title span{font-size:11px;color:var(--muted);}

.oc-single-link{display:flex;align-items:center;gap:9px;padding:10px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--ink-soft);text-decoration:none;}
.oc-single-link:hover{background:var(--surface-2);}
.oc-single-link.active{background:var(--primary-tint);color:var(--primary);}
.oc-single-link .n{margin-left:auto;color:var(--muted);font-weight:700;font-size:10.5px;}

.oc-menu-head{display:flex;align-items:center;justify-content:space-between;padding:10px;border-radius:8px;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--ink-soft);}
.oc-menu-head:hover{background:var(--surface-2);}
.oc-menu-head .lbl{display:flex;align-items:center;gap:9px;}
.oc-toggle{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--muted);flex:none;background:#fff;}
.oc-submenu{display:none;padding:2px 0 6px 19px;margin-left:19px;border-left:2px solid var(--border);}
.oc-submenu.open{display:block;}
.oc-submenu a{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-radius:7px;font-size:12px;font-weight:600;color:var(--ink-soft);text-decoration:none;}
.oc-submenu a:hover{background:var(--surface-2);}
.oc-submenu a.active{background:var(--primary-tint);color:var(--primary);}
.oc-submenu a .n{color:var(--muted);font-weight:700;font-size:10px;}

.oc-dept-node{margin-bottom:1px;}
.oc-dept-node-head{display:flex;align-items:center;justify-content:space-between;border-radius:7px;}
.oc-dept-node-head:hover{background:var(--surface-2);}
.oc-dept-node-label{flex:1;padding:8px 4px 8px 10px;font-size:12.5px;font-weight:700;color:var(--ink-soft);text-decoration:none;}
.oc-dept-node-label:hover{color:var(--primary);}
.oc-dept-node-label.active{color:var(--primary);}
.oc-toggle-sm{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--muted);flex:none;margin-right:8px;cursor:pointer;background:#fff;}
.oc-dept-submenu{display:none;padding:2px 0 6px 16px;margin-left:15px;border-left:2px solid var(--border);}
.oc-dept-submenu.open{display:block;}
.oc-dept-submenu a{display:flex;align-items:center;justify-content:space-between;padding:6px 9px;border-radius:6px;font-size:11.5px;font-weight:600;color:var(--ink-soft);text-decoration:none;}
.oc-dept-submenu a:hover{background:var(--surface-2);}
.oc-dept-submenu a.active{background:var(--primary-tint);color:var(--primary);}
.oc-dept-submenu a .n{color:var(--muted);font-weight:700;font-size:10px;}
.oc-ncofi-link{color:var(--alert) !important;font-weight:700 !important;margin-top:2px;}

.oc-main{flex:1;min-width:0;}
.oc-crumb{font-size:11.5px;color:var(--muted);margin-bottom:12px;}
.oc-crumb b{color:var(--ink);}

.oc-exec-row{display:flex;align-items:center;gap:12px;background:var(--primary-tint);border-radius:10px;padding:13px 16px;margin-bottom:14px;}
.oc-exec-row .nm{font-weight:700;font-size:13.5px;color:var(--primary);}
.oc-exec-row .rl{font-size:11px;color:var(--ink-soft);}
.oc-dept-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.oc-dept-card{border:1px solid var(--border);border-radius:10px;padding:13px;text-decoration:inherit;color:inherit;display:block;transition:.15s;}
.oc-dept-card:hover{border-color:var(--primary);box-shadow:var(--shadow);}
.oc-dept-name{font-size:12.5px;font-weight:700;}
.oc-dept-head{font-size:11px;color:var(--muted);margin-top:1px;}
.oc-dept-meta{font-size:10px;color:var(--muted);margin-top:7px;display:flex;gap:10px;}

.oc-stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px;}
.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:var(--shadow);}
.kpi-card .val{font-family:'Sora',sans-serif;font-size:25px;font-weight:700;}
.kpi-card .lbl{font-size:10.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.02em;margin-top:2px;}

@media (max-width:1080px){
  .oc-shell{flex-direction:column;}
  .oc-sidebar{width:100%;position:static;}
  .oc-dept-grid{grid-template-columns:repeat(2,1fr);}
}

.hub-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:14px;margin-top:18px;}
.hub-card{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--border);border-radius:12px;text-decoration:none;color:inherit;background:#fff;transition:.15s;}
.hub-card:hover{border-color:var(--primary);box-shadow:var(--shadow);}
.hub-card .hub-icon{width:38px;height:38px;border-radius:10px;background:var(--primary-tint);color:var(--primary);display:flex;align-items:center;justify-content:center;flex:none;}
.hub-card.admin .hub-icon{background:var(--super-tint);color:var(--super);}
.hub-card .hub-title{font-weight:700;font-size:13px;}
.hub-card .hub-sub{font-size:11px;color:var(--muted);margin-top:1px;}
@media (max-width:700px){ .hub-grid{grid-template-columns:1fr;} }

/* ================= HOME DASHBOARD (3-column, role-specific) ================= */
.home-shell{display:flex;gap:20px;max-width:1320px;margin:0 auto;padding:20px 20px 40px;align-items:flex-start;}
.home-left{width:270px;flex:none;}
.home-right{width:280px;flex:none;}
.home-center{flex:1;min-width:0;}

.profile-card{border-radius:var(--radius);overflow:hidden;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow);margin-bottom:16px;}
.profile-banner{height:52px;background:linear-gradient(120deg,var(--primary),#16305E);}
.profile-banner.admin{background:linear-gradient(120deg,var(--super),#4B2A73);}
.profile-card-body{padding:0 16px 16px;margin-top:-30px;}
.profile-card-body .avatar.lg{border:3px solid #fff;}
.profile-card-name{font-family:'Sora',sans-serif;font-weight:700;font-size:15px;margin-top:10px;}
.profile-card-title{font-size:11.5px;color:var(--ink-soft);margin-top:1px;}
.profile-card-loc{font-size:11px;color:var(--muted);margin-top:6px;}
.profile-card-entity{font-size:11px;color:var(--ink-soft);margin-top:3px;display:flex;align-items:center;gap:5px;}
.profile-card-entity .dot{color:var(--primary);}
.mfa-pill{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;color:var(--verified);background:var(--verified-tint);padding:4px 9px;border-radius:999px;margin-top:9px;}

.profile-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:14px;text-align:center;}
.profile-stats-row .val{font-family:'Sora',sans-serif;font-weight:700;font-size:16px;}
.profile-stats-row .lbl{font-size:9px;color:var(--muted);font-weight:700;text-transform:uppercase;}
.cert-badges-row{display:flex;gap:8px;margin-top:12px;justify-content:center;}
.cert-badge{width:34px;height:34px;border-radius:50%;background:var(--verified-tint);color:var(--verified);display:flex;align-items:center;justify-content:center;font-size:8.5px;font-weight:700;text-align:center;line-height:1.1;}

.home-nav{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:8px;margin-bottom:16px;}
.home-nav a, .home-nav .hn-disabled{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--ink-soft);text-decoration:none;}
.home-nav a:hover{background:var(--surface-2);}
.home-nav a.active{background:var(--primary-tint);color:var(--primary);font-weight:700;}
.home-nav a .n{margin-left:auto;background:var(--primary-tint);color:var(--primary);font-size:10px;font-weight:700;padding:1px 7px;border-radius:999px;}
.home-nav a.active .n{background:#fff;}
.home-nav .hn-disabled{color:var(--muted);cursor:default;}
.home-nav .hn-disabled .soon{margin-left:auto;font-size:9px;font-style:italic;}
.home-nav .hn-section{font-size:9.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:12px 10px 4px;}
.home-nav hr{border:none;border-top:1px solid var(--border);margin:6px 4px;}

.capacity-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border);}
.capacity-row:last-child{border-bottom:none;}
.capacity-row .nm{font-size:12.5px;font-weight:700;}
.capacity-row .rl{font-size:10.5px;color:var(--muted);}
.capacity-track{flex:1;height:6px;background:var(--surface-2);border-radius:99px;overflow:hidden;margin:0 12px;}
.capacity-fill{height:100%;border-radius:99px;}
.capacity-fill.avail{background:var(--verified);}
.capacity-fill.near{background:var(--pending);}
.capacity-fill.full{background:var(--alert);}
.capacity-meta{font-size:10px;color:var(--muted);text-align:right;white-space:nowrap;}
.capacity-tag{font-size:10px;font-weight:700;padding:4px 9px;border-radius:999px;white-space:nowrap;}
.capacity-tag.avail{background:var(--verified-tint);color:var(--verified);}
.capacity-tag.near{background:var(--pending-tint);color:var(--pending);}
.capacity-tag.full{background:var(--alert-tint);color:var(--alert);}

.approval-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}
.approval-row:last-child{border-bottom:none;}
.approval-row .txt{font-size:12.5px;}
.approval-row .txt b{font-weight:700;}
.approval-row .meta{font-size:10.5px;color:var(--muted);margin-top:2px;}

.schedule-item{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border);}
.schedule-item:last-child{border-bottom:none;}
.schedule-date{width:40px;flex:none;text-align:center;}
.schedule-date .d{font-family:'Sora',sans-serif;font-weight:700;font-size:16px;}
.schedule-date .m{font-size:9px;color:var(--muted);text-transform:uppercase;}
.schedule-tag{font-size:9px;font-weight:700;text-transform:uppercase;padding:2px 7px;border-radius:5px;display:inline-block;margin-bottom:2px;}
.schedule-title{font-size:12.5px;font-weight:700;}
.schedule-meta{font-size:10.5px;color:var(--muted);margin-top:1px;}

.alert-banner-card{background:var(--pending-tint);border:1px solid #F0D9B5;border-radius:var(--radius);padding:16px;margin-bottom:16px;position:relative;}
.alert-banner-card h4{margin:0 0 4px;font-size:13.5px;}
.alert-banner-card p{margin:0 0 10px;font-size:12px;color:var(--ink-soft);}
.alert-banner-progress{height:5px;background:rgba(0,0,0,.08);border-radius:99px;overflow:hidden;margin-bottom:12px;}
.alert-banner-progress .fill{height:100%;background:var(--pending);}

.filter-pills{display:flex;gap:6px;margin-bottom:14px;}
.filter-pills a{padding:7px 14px;border-radius:999px;font-size:11.5px;font-weight:700;color:var(--ink-soft);text-decoration:none;border:1px solid var(--border);}
.filter-pills a.active{background:var(--ink);color:#fff;border-color:var(--ink);}

.feed-item2{display:flex;align-items:flex-start;gap:10px;padding:11px 0;border-bottom:1px solid var(--border);}
.feed-item2:last-child{border-bottom:none;}
.feed-item2 .txt{font-size:12.5px;flex:1;}
.feed-item2 .txt b{font-weight:700;}
.feed-item2 .time{font-size:10.5px;color:var(--muted);white-space:nowrap;}

.mini-cal{width:100%;border-collapse:collapse;}
.mini-cal th{font-size:9px;color:var(--muted);font-weight:700;padding:4px 0;}
.mini-cal td{text-align:center;font-size:11px;padding:5px 0;color:var(--ink-soft);position:relative;}
.mini-cal td.today{background:var(--primary);color:#fff;border-radius:50%;font-weight:700;}
.mini-cal td.has-event:not(.today)::after{content:'';position:absolute;bottom:1px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--pending);}

.msg-preview-row{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--border);}
.msg-preview-row:last-child{border-bottom:none;}
.msg-preview-row .nm{font-size:12px;font-weight:700;}
.msg-preview-row .snip{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;}
.msg-preview-row .dot{width:7px;height:7px;border-radius:50%;background:var(--primary);flex:none;margin-left:auto;}

.co-row{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--border);}
.co-row:last-child{border-bottom:none;}
.co-row .nm{font-size:12px;font-weight:700;}
.co-row .rl{font-size:10.5px;color:var(--muted);}

.qa-btn{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#fff;font-size:12px;font-weight:700;color:var(--ink-soft);text-decoration:none;margin-bottom:8px;}
.qa-btn:hover{border-color:var(--primary);color:var(--primary);}
.qa-btn:last-child{margin-bottom:0;}

.snapshot-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px;}
.snapshot-cell{background:var(--surface-2);border-radius:9px;padding:11px;}
.snapshot-cell .val{font-family:'Sora',sans-serif;font-weight:700;font-size:19px;}
.snapshot-cell .lbl{font-size:9.5px;color:var(--muted);font-weight:700;text-transform:uppercase;margin-top:2px;}

.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.card-head h3{margin:0;font-size:14.5px;}
.card-head .hint, a.hint{font-size:11px;color:var(--muted);font-weight:600;text-decoration:none;}
a.hint:hover{color:var(--primary);}

@media (max-width:1100px){
  .home-shell{flex-direction:column;}
  .home-left, .home-right{width:100%;}
}

/* Wraps an avatar+name block in a link to that person's profile without
   breaking the surrounding flex layout (display:contents makes the <a>
   itself invisible to layout, while its children still participate). */
.plink{color:inherit;text-decoration:none;display:contents;}
.plink:hover .avatar{box-shadow:0 0 0 2px var(--primary);}
.plink:hover .nm{color:var(--primary);}
