/* Logged-in portal layout */
.portal-wrap{
  display:flex;
  min-height:calc(100vh - 64px);
  background:#f6f8fb;
}
.portal-sidebar{
  width:260px;
  padding:18px;
  background:#ffffff;
  border-right:1px solid #eef0f3;
  position:sticky;
  top:64px;
  height:calc(100vh - 64px);
  overflow:auto;
}
.portal-brand{margin-bottom:16px;}
.portal-brand-title{font-weight:800; font-size:18px; letter-spacing:.2px;}
.portal-brand-sub{font-size:13px; color:#667085; margin-top:4px; word-break:break-word;}
.portal-nav{display:flex; flex-direction:column; gap:8px;}
.portal-nav-section{margin-top:14px; font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:#98a2b3;}
.portal-link{
  display:block;
  padding:10px 12px;
  border-radius:12px;
  text-decoration:none;
  border:1px solid #eef0f3;
  background:#fff;
  color:#101828;
  font-weight:600;
}
.portal-link:hover{background:#f8fafc;}
.portal-main{
  flex:1;
  padding:22px;
}
.portal-card{
  background:#fff;
  border:1px solid #eef0f3;
  border-radius:18px;
  padding:18px;
  box-shadow:0 1px 2px rgba(16,24,40,.04);
}
.portal-h1{font-size:28px; font-weight:900; margin:0 0 8px;}
.portal-muted{color:#667085; margin:0 0 14px;}
.portal-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:14px;
}
@media (max-width: 980px){
  .portal-sidebar{display:none;}
  .portal-main{padding:16px;}
  .portal-grid{grid-template-columns:1fr;}
}
.badge{
  display:inline-flex; align-items:center;
  font-size:12px; font-weight:700;
  border:1px solid #eef0f3;
  border-radius:999px;
  padding:4px 10px;
  background:#fff;
}
.badge-ok{border-color:#d1fadf; background:#ecfdf3; color:#027a48;}
.badge-warn{border-color:#fed7aa; background:#fffbeb; color:#b45309;}
.badge-info{border-color:#dbeafe; background:#eff6ff; color:#1d4ed8;}


/* UX */
button, .tb-btn, .tb-btn-primary, .tb-btn-secondary, .portal-link { cursor: pointer; }

/* Allow full-width content when needed */
.portal-main{max-width:none;}
