
:root{
  --gehosp-bg: #f7f8fa;
  --gehosp-card: #ffffff;
  --gehosp-border: #e6e8ee;
  --gehosp-muted: #6b7280;
  --gehosp-primary: #0d6efd;
}

html, body {
  height: 100%;
  background: var(--gehosp-bg);
}

.portal-home-body{
  margin: 0;
}

.portal-home-shell{
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 1rem;
}

.portal-home-wrap{
  width: 100%;
  max-width: 1240px;
}

.portal-hero{
  margin-bottom: 2rem;
}

.portal-logo{
  width: 82px;
  height: 82px;
  border-radius: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(13,110,253,.12);
  color: var(--gehosp-primary);
  font-size: 2rem;
  font-weight: 700;
}

.portal-title{
  font-size: 2.4rem;
  font-weight: 700;
  margin-bottom: .35rem;
}

.portal-subtitle{
  color: var(--gehosp-muted);
  font-size: 1.05rem;
  margin-bottom: 0;
}

.portal-grid{
  max-width: 1120px;
  margin: 0 auto;
}

.module-body{
  margin: 0;
}

.module-shell{
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.module-topbar{
  background: #ffffff;
  border-bottom: 1px solid var(--gehosp-border);
  padding: .9rem 1.25rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 1rem;
}

.module-brand-link{
  display:flex;
  align-items:center;
  gap:.75rem;
  color: inherit;
}

.module-brand-badge{
  width: 44px;
  height: 44px;
  border-radius: 14px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(13,110,253,.12);
  color: var(--gehosp-primary);
  font-weight: 700;
}

.module-topbar-actions{
  display:flex;
  align-items:center;
  gap:.75rem;
}

.module-page{
  padding: 1.25rem;
}

.card-soft{
  background: var(--gehosp-card);
  border: 1px solid var(--gehosp-border);
  border-radius: 1rem;
  box-shadow: 0 8px 22px rgba(17,24,39,.06);
}

.banner-tile{
  border: 1px solid var(--gehosp-border);
  border-radius: 1.25rem;
  background: #ffffff;
  padding: 1.15rem;
  transition: transform .12s ease, box-shadow .12s ease;
  height: 100%;
  box-shadow: 0 8px 22px rgba(17,24,39,.05);
}

.banner-tile:hover{
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(17,24,39,.10);
}

.banner-icon{
  width: 56px;
  height: 56px;
  border-radius: 18px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(13,110,253,.10);
  color: var(--gehosp-primary);
  font-size: 1.35rem;
}

.banner-title{
  font-weight: 700;
  margin: .85rem 0 .2rem 0;
}

.banner-desc{
  color: var(--gehosp-muted);
  margin: 0 0 .95rem 0;
  font-size: .95rem;
}

.banner-link{
  text-decoration: none;
  color: inherit;
}

.portal-open{
  color: var(--gehosp-primary);
  font-weight: 600;
}

.kpi{
  display:flex;
  gap: 1rem;
  flex-wrap: wrap;
}

.kpi .kpi-item{
  padding: .9rem 1rem;
  border: 1px dashed var(--gehosp-border);
  border-radius: 1rem;
  background: #ffffff;
  min-width: 220px;
}

.kpi .kpi-item .label{ color: var(--gehosp-muted); font-size:.85rem;}
.kpi .kpi-item .value{ font-size:1.25rem; font-weight: 700; }
.footer-note{ color: var(--gehosp-muted); font-size: .85rem; }

@media (max-width: 768px){
  .portal-home-shell{
    align-items: flex-start;
    padding-top: 1.5rem;
  }

  .portal-title{
    font-size: 2rem;
  }

  .module-topbar{
    flex-direction: column;
    align-items: stretch;
  }

  .module-topbar-actions{
    justify-content: space-between;
  }
}


/* Layout dos módulos que usam site.css */
.app-shell{
  min-height: 100vh;
  display: flex;
}

.sidebar{
  width: 270px;
  background: #ffffff;
  border-right: 1px solid var(--gehosp-border);
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 1rem;
  flex: 0 0 270px;
}

.brand{
  display:flex;
  gap:.75rem;
  align-items:center;
  padding: .25rem .25rem 1rem .25rem;
  border-bottom: 1px solid var(--gehosp-border);
  margin-bottom: 1rem;
}

.brand-badge{
  width: 44px;
  height: 44px;
  border-radius: 14px;
  display:flex;
  align-items:center;
  justify-content:center;
  background: rgba(13,110,253,.12);
  color: var(--gehosp-primary);
  font-weight: 700;
}

.brand-title{
  line-height: 1.1;
}

.brand-title strong{
  display:block;
  font-size: 1.05rem;
}

.brand-title small{
  color: var(--gehosp-muted);
}

.nav-section-title{
  font-size: .75rem;
  letter-spacing: .06em;
  color: var(--gehosp-muted);
  margin: 1rem .25rem .5rem .25rem;
  text-transform: uppercase;
}

.side-nav .nav-link{
  border-radius: .75rem;
  color: #111827;
  display:flex;
  gap:.6rem;
  align-items:center;
  padding: .6rem .75rem;
}

.side-nav .nav-link:hover{
  background: #f2f4f8;
}

.side-nav .nav-link.active{
  background: rgba(13,110,253,.12);
  color: var(--gehosp-primary);
  font-weight: 600;
}

.content{
  flex: 1;
  min-width: 0;
  display:flex;
  flex-direction:column;
}

.topbar{
  background: #ffffff;
  border-bottom: 1px solid var(--gehosp-border);
  padding: .75rem 1.25rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 1rem;
}

.page{
  padding: 1.25rem;
}
