*{box-sizing:border-box;margin:0;padding:0}
:root{--brand:#0a66c2;--brand2:#084b92;--brand-light:#e8f2fc;--bg:#f4f8ff;--card:#fff;--line:#e5e9f0;--ink:#172033;--muted:#667085;--ok:#16a34a;--warn:#f59e0b;--err:#ef4444;--radius:16px;--shadow:0 10px 30px rgba(16,24,40,.09)}
html,body{height:100%;width:100%;overflow:hidden}
body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}
.hidden{display:none!important}.muted{color:var(--muted)}
.btn{border:0;border-radius:12px;padding:10px 16px;font-weight:700;cursor:pointer;transition:.15s}.btn.primary{background:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand2)}.btn.ghost{background:#f3f4f6;color:#111827}.btn.ghost:hover{background:#e5e7eb}.btn.danger{background:var(--err);color:#fff}.btn.small{padding:7px 10px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed}
input,textarea,select{width:100%;border:1px solid #d0d5dd;border-radius:12px;padding:10px 12px;font-size:14px;background:#fff}textarea{resize:vertical;min-height:90px}label{display:block;font-size:13px;color:#475467;margin-bottom:6px}.small{font-size:12px;color:#667085}

/* Login */
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#eef7ff,#f8fbff);overflow:auto}.login-card{width:min(430px,94vw);background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:var(--shadow)}.login-card img{height:58px;margin-bottom:18px}.login-card h1{color:var(--brand);font-size:26px;margin-bottom:8px}.login-card p{color:#536179;margin-bottom:20px}.login-card .sep{text-align:center;color:#667085;font-size:12px;margin:14px 0}.login-card .form{display:grid;gap:10px}
.login-header{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-bottom:28px}
.login-header img{width:90px;height:auto;margin-bottom:20px}
.login-header h1{margin:0;font-size:36px;font-weight:700;color:#0b5fb3}
.login-header p{margin-top:10px;font-size:16px;color:#64748b;max-width:320px;line-height:1.5}

/* Estrutura principal */
.app-shell{height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr);overflow:hidden}.sidebar{height:100vh;background:#fff;border-right:1px solid var(--line);padding:18px;display:flex;flex-direction:column;gap:18px;overflow:auto}.brand{display:flex;gap:10px;align-items:center}.brand img{height:46px}.brand h1{font-size:16px;color:var(--brand)}.user-box{padding:12px;background:var(--brand-light);border-radius:14px}.nav{display:grid;gap:8px}.nav button{width:100%;text-align:left;background:transparent;border:0;border-radius:12px;padding:12px;font-weight:700;color:#25324a;cursor:pointer}.nav button:hover,.nav button.active{background:var(--brand-light);color:var(--brand)}.sidebar-footer{margin-top:auto;display:grid;gap:8px}
.main{min-width:0;height:100vh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:68px;flex:0 0 68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px}.topbar h2{font-size:20px}.page{height:calc(100vh - 68px);overflow:auto;padding:22px}

/* Home */
.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:18px}.module-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:var(--shadow);cursor:pointer;transition:.15s}.module-card:hover{transform:translateY(-2px)}.module-card h3{font-size:20px;margin-bottom:6px}.module-card p{color:var(--muted);font-size:14px}.tag{display:inline-block;margin-top:14px;background:var(--brand-light);color:var(--brand);font-size:12px;font-weight:800;padding:5px 9px;border-radius:999px}.tag.green{background:#eaf8ef;color:#107d3a}.tag.gray{background:#f2f4f7;color:#475467}

/* Calendário Auditórios */
.calendar-toolbar{display:flex;align-items:end;gap:16px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;margin-bottom:14px}.group{display:flex;flex-direction:column;gap:6px}.grow{flex:1}.calendar-wrap{height:calc(100vh - 190px);min-height:460px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:14px;overflow:hidden}
#calendar{height:100%!important}
.fc .fc-button-primary{background:var(--brand);border-color:var(--brand);border-radius:12px}.fc .fc-toolbar-title{font-weight:800}.fc td,.fc th{border-color:var(--line)}.fc .fc-daygrid-day-frame{min-height:105px}.fc .fc-daygrid-event{display:block!important;margin-top:4px;padding:5px 8px;border-radius:9px;white-space:normal!important;line-height:1.25;background:var(--brand-light);color:var(--brand);border:1px solid var(--brand);font-weight:700}.fc-daygrid-event .title{white-space:normal!important}.fc .fc-day-today{background:#f0f7ff!important}

/* Calendário Teletrabalho */
.tele-toolbar{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:#fff;margin-bottom:14px}
.tele-toolbar .group{min-width:190px}
.tele-legend{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px;padding:10px 14px;border:1px solid var(--line);border-radius:18px;background:#fff;font-size:13px}
.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:14px;height:14px;border-radius:4px;display:inline-block}
.tele-calendar-wrap{height:calc(100vh - 250px);min-height:430px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:14px;overflow:hidden}
#teleCalendar{height:100%!important}

/* Modais */
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.38);display:none;align-items:center;justify-content:center;z-index:50;padding:24px}.modal{width:100%;max-width:740px;background:#fff;border-radius:18px;box-shadow:0 16px 40px rgba(0,0,0,.22);display:flex;flex-direction:column;max-height:92vh;overflow:hidden;position:relative}.modal .content{padding:20px;overflow:auto}.modal .close-x{position:absolute;top:14px;right:14px;width:36px;height:36px;border:1px solid #d0d5dd;border-radius:10px;background:#f8fafc;cursor:pointer;font-size:22px;line-height:1;z-index:2}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:12px}.full{grid-column:1/-1}.dates-grid,.times-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.times-grid{grid-template-columns:1fr 1fr 1fr}.allday{border:1px dashed #d1d5db;border-radius:12px;padding:10px;display:flex;align-items:center;gap:10px}.actions{display:flex;gap:10px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--line);background:#fafafa}

/* Utilizadores */
.table-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}.table-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--line)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #eef1f6;font-size:14px}th{background:#fafafa;color:#475467}.user-form{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:16px;box-shadow:var(--shadow)}.perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:12px}.perm-box{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fcfcfd}

/* Toast */
.toast{position:fixed;right:24px;bottom:24px;z-index:2000;background:#fff;border:1px solid var(--line);border-left-width:6px;padding:14px 16px;border-radius:14px;box-shadow:var(--shadow);width:min(430px,90vw);font-size:14px}.toast.ok{border-left-color:var(--ok)}.toast.warn{border-left-color:var(--warn)}.toast.err{border-left-color:var(--err)}.toast .title{font-weight:800;margin-bottom:2px}.toast .msg{color:#475467}

/* Responsivo */
@media(max-width:850px){
  html,body{overflow:auto}
  .app-shell{height:auto;min-height:100vh;display:block;overflow:visible}
  .sidebar{height:auto;position:relative;overflow:visible}
  .main{height:auto;min-height:100vh;overflow:visible}
  .topbar{height:auto;min-height:58px;padding:14px}
  .page{height:auto;min-height:calc(100vh - 58px);padding:14px;overflow:visible}
  .form-grid,.dates-grid,.times-grid{grid-template-columns:1fr}
  .calendar-wrap,.tele-calendar-wrap{height:75vh;min-height:520px}
}


.main {
  height: 100vh;
  overflow: hidden;
}

.page {
  height: calc(100vh - 68px);
  overflow: hidden;
  padding: 18px;
}

.calendar-toolbar,
.tele-toolbar {
  flex-shrink: 0;
}

.calendar-wrap,
.tele-calendar-wrap {
  height: calc(100vh - 190px) !important;
  min-height: 0 !important;
  overflow: hidden !important;
  padding: 14px;
}

#calendar,
#teleCalendar {
  height: 100% !important;
}

.fc {
  height: 100% !important;
}

.fc-view-harness,
.fc-view-harness-active {
  height: 100% !important;
}

.fc .fc-scrollgrid {
  height: 100% !important;
}

.fc-daygrid-body,
.fc-daygrid-body table {
  width: 100% !important;
}

.fc .fc-daygrid-day-frame {
  min-height: 0 !important;
}

.fc .fc-daygrid-day-events {
  margin-bottom: 0 !important;
}

/* Correção definitiva para o calendário caber na tela */

.main {
  height: 100vh;
  overflow: hidden;
}

.page {
  height: calc(100vh - 68px);
  overflow: hidden;
  padding: 12px 18px;
}

.calendar-toolbar {
  padding: 10px 14px !important;
  margin-bottom: 10px !important;
}

.calendar-toolbar input,
.calendar-toolbar select {
  height: 42px;
  padding: 8px 12px;
}

.calendar-wrap {
  height: calc(100vh - 185px) !important;
  min-height: 0 !important;
  overflow: hidden !important;
  padding: 12px !important;
}

#calendar {
  height: 100% !important;
}

.fc {
  height: 100% !important;
}

.fc-view-harness {
  height: calc(100% - 58px) !important;
}

.fc .fc-daygrid-day-frame {
  min-height: 0 !important;
}

.fc .fc-daygrid-event {
  font-size: 12px !important;
  line-height: 1.15 !important;
  padding: 3px 6px !important;
}

.fc .fc-toolbar-title {
  font-size: 24px !important;
}

.fc .fc-toolbar {
  margin-bottom: 10px !important;
}

/* HOME ERP LOOK */

.module-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 22px;
  margin-top: 26px;
}

.module-card {
  min-height: 190px;
  padding: 26px;
  border-radius: 24px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border: 1px solid #dbeafe;
  box-shadow: 0 18px 40px rgba(10, 102, 194, 0.09);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.module-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 22px 55px rgba(10, 102, 194, 0.16);
  border-color: #93c5fd;
}

.module-card h3 {
  font-size: 22px;
  line-height: 1.2;
  color: #0f2a4a;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.module-card h3::first-letter {
  font-size: 44px;
}

.module-card p {
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.5;
  color: #64748b;
}

.module-card .tag {
  align-self: flex-start;
  margin-top: 18px;
  background: #e0f2fe;
  color: #075985;
  font-size: 12px;
  padding: 7px 12px;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: .04em;
}

/* destaque visual dos emojis/ícones */
.module-card h3 {
  white-space: pre-line;
}

.module-card h3 span,
.module-card h3 {
  font-weight: 800;
}

/* página inicial mais limpa */
#homeView h2 {
  font-size: 30px;
  color: #0f172a;
}

#homeView .muted {
  font-size: 16px;
  margin-top: 6px;
}
/* Permitir scroll nas páginas internas */
.page {
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* Gestão de utilizadores pode rolar normalmente */
#usersView {
  height: calc(100vh - 68px) !important;
  overflow-y: auto !important;
  padding-bottom: 80px !important;
}

/* Tabela com scroll horizontal se precisar */
.table-card {
  overflow-x: auto !important;
  overflow-y: visible !important;
}

/* Evita a tabela cortar no fim */
#usersTableBody {
  padding-bottom: 40px;
}

/* Mantém o menu lateral fixo e independente */
.sidebar {
  height: 100vh;
  overflow-y: auto;
}

.powerbi-container{
    width:100%;
    height:92vh;
    border-radius:16px;
    overflow:hidden;
}

.powerbi-container iframe{
    width:100%;
    height:100%;
    border:none;
}

.powerbi-container{
    width:100%;
    height:calc(100vh - 120px);
    overflow:hidden;
    border-radius:16px;
}

.powerbi-container iframe{
    width:100%;
    height:calc(100% + 60px);
    border:none;

    /* esconde a barra inferior */
    margin-bottom:-50px;
}
.powerbi-container{
    position:relative;
    width:100%;
    height:calc(100vh - 80px); /* aumenta ou diminui aqui */
    overflow:hidden;
    border-radius:18px;
    background:#fff;
}

.powerbi-container iframe{
    width:100%;
    height:calc(100% + 30px); /* quanto maior, mais sobe o Power BI */
    border:none;
    margin-bottom:-30px;      /* manter igual ao valor acima */
    display:block;
}

/* Máscara branca que tapa a barra Microsoft */
.powerbi-container::after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    height:20px;              /* AJUSTA AQUI */
    background:#fff;
    z-index:999;
    pointer-events:none;
}

/* POWER BI - esconder barra inferior */

.bi-frame-wrap{
  position: relative !important;
  width: 100% !important;
  height: calc(100vh - 25px) !important;
  min-height: 0 !important;
  overflow: hidden !important;
  border-radius: 18px !important;
  background: #fff !important;
}

#biFrame{
  width: 100% !important;
  height: calc(100% + 5px) !important;
  border: 0 !important;
  display: block !important;
}

/* máscara branca para tapar a barra Microsoft/Power BI */
.bi-frame-wrap::after{
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 0px; /* aumenta ou diminui aqui */
  background: #fff;
  z-index: -50;
  pointer-events: none;
}

/* Gestão de Salas - melhorias */
.sala-times-grid{
  grid-template-columns:1fr 1fr !important;
}

#salasCalendar .fc-event,
#salasCalendar .fc-daygrid-event{
  color:#fff !important;
  font-weight:800 !important;
}

#salasCalendar .fc-daygrid-event .title{
  display:block;
  color:#fff !important;
}

#salasCalendar .event-responsavel{
  display:block;
  margin-top:2px;
  font-size:11px;
  line-height:1.15;
  color:rgba(255,255,255,.95);
  font-weight:700;
}

#salasCalendar .fc-event-main{
  color:#fff !important;
}

/* Popup grande de conflito - Gestão de Salas */
.sala-conflict-backdrop{
  position:fixed;
  inset:0;
  background:rgba(15,23,42,.48);
  z-index:99999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}

.sala-conflict-card{
  width:min(620px,92vw);
  background:#fff;
  border-radius:24px;
  box-shadow:0 28px 80px rgba(15,23,42,.30);
  border:1px solid #fee2e2;
  overflow:hidden;
}

.sala-conflict-head{
  padding:24px 28px;
  background:#fff5f5;
  border-bottom:1px solid #fee2e2;
  color:#991b1b;
}

.sala-conflict-head h3{
  margin:0;
  font-size:24px;
}

.sala-conflict-body{
  padding:24px 28px;
  color:#1f2937;
  line-height:1.6;
  font-size:16px;
}

.sala-conflict-body p{
  margin-bottom:10px;
}

.sala-conflict-body strong{
  color:#111827;
}

.sala-conflict-actions{
  padding:18px 28px;
  background:#f8fafc;
  display:flex;
  justify-content:flex-end;
}

.sala-conflict-actions .btn{
  min-width:110px;
}


/* Gestão de Salas - cores definitivas por sala */
#salasCalendar .fc-event.sala-event-reuniao,
#salasCalendar .fc-daygrid-event.sala-event-reuniao,
#salasCalendar a.fc-event.sala-event-reuniao{
  background-color:#16a34a !important;
  border-color:#15803d !important;
  color:#fff !important;
}

#salasCalendar .fc-event.sala-event-conselhos,
#salasCalendar .fc-daygrid-event.sala-event-conselhos,
#salasCalendar a.fc-event.sala-event-conselhos{
  background-color:#2563eb !important;
  border-color:#1d4ed8 !important;
  color:#fff !important;
}

#salasCalendar .fc-event.sala-event-outra,
#salasCalendar .fc-daygrid-event.sala-event-outra,
#salasCalendar a.fc-event.sala-event-outra{
  background-color:#64748b !important;
  border-color:#475569 !important;
  color:#fff !important;
}

#salasCalendar .fc-event-main,
#salasCalendar .fc-event-main-frame,
#salasCalendar .fc-daygrid-event .title,
#salasCalendar .event-responsavel{
  color:#fff !important;
}

#salasCalendar .fc-daygrid-event{
  border-width:1.5px !important;
  box-shadow:0 1px 3px rgba(15,23,42,.14) !important;
}


/* Sala em branco */
#salasCalendar .fc-event.sala-event-branco,
#salasCalendar .fc-daygrid-event.sala-event-branco,
#salasCalendar a.fc-event.sala-event-branco{
  background:#f59e0b !important;
  border-color:#d97706 !important;
  color:#ffffff !important;
}


/* Gestão de Salas - visual pastel com barra lateral */
#salasCalendar .fc-daygrid-event,
#salasCalendar .fc-event{
  border-width:1px !important;
  border-radius:10px !important;
  box-shadow:0 1px 3px rgba(15,23,42,.08) !important;
  overflow:hidden !important;
}

#salasCalendar .fc-daygrid-event::before,
#salasCalendar .fc-event::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:5px;
  border-radius:10px 0 0 10px;
}

#salasCalendar .fc-event.sala-event-reuniao,
#salasCalendar .fc-daygrid-event.sala-event-reuniao,
#salasCalendar a.fc-event.sala-event-reuniao{
  background:#eaf8ef !important;
  border-color:#52b36d !important;
  color:#166534 !important;
}

#salasCalendar .fc-event.sala-event-reuniao::before,
#salasCalendar .fc-daygrid-event.sala-event-reuniao::before{
  background:#16a34a !important;
}

#salasCalendar .fc-event.sala-event-conselhos,
#salasCalendar .fc-daygrid-event.sala-event-conselhos,
#salasCalendar a.fc-event.sala-event-conselhos{
  background:#eaf3ff !important;
  border-color:#5b8def !important;
  color:#1d4ed8 !important;
}

#salasCalendar .fc-event.sala-event-conselhos::before,
#salasCalendar .fc-daygrid-event.sala-event-conselhos::before{
  background:#2563eb !important;
}

#salasCalendar .fc-event.sala-event-branco,
#salasCalendar .fc-daygrid-event.sala-event-branco,
#salasCalendar a.fc-event.sala-event-branco{
  background:#fff7ed !important;
  border-color:#fb923c !important;
  color:#9a3412 !important;
}

#salasCalendar .fc-event.sala-event-branco::before,
#salasCalendar .fc-daygrid-event.sala-event-branco::before{
  background:#f97316 !important;
}

#salasCalendar .fc-event.sala-event-outra,
#salasCalendar .fc-daygrid-event.sala-event-outra,
#salasCalendar a.fc-event.sala-event-outra{
  background:#f1f5f9 !important;
  border-color:#94a3b8 !important;
  color:#334155 !important;
}

#salasCalendar .fc-event.sala-event-outra::before,
#salasCalendar .fc-daygrid-event.sala-event-outra::before{
  background:#64748b !important;
}

#salasCalendar .fc-event-main,
#salasCalendar .fc-event-main-frame,
#salasCalendar .fc-daygrid-event .title,
#salasCalendar .event-responsavel{
  color:inherit !important;
}

#salasCalendar .fc-daygrid-event .title{
  display:block;
  padding-left:4px;
  font-weight:700 !important;
}

#salasCalendar .event-responsavel{
  display:block;
  margin-top:2px;
  padding-left:4px;
  font-size:11px;
  line-height:1.15;
  font-weight:600;
  opacity:.78;
}


/* Popup: adicionar reserva de sala ao calendário (.ics) */
.sala-calendar-backdrop{
  position:fixed;
  inset:0;
  background:rgba(15,23,42,.45);
  z-index:99999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}

.sala-calendar-card{
  width:min(560px,92vw);
  background:#fff;
  border-radius:24px;
  box-shadow:0 28px 80px rgba(15,23,42,.28);
  border:1px solid #dbeafe;
  overflow:hidden;
}

.sala-calendar-head{
  padding:24px 28px;
  background:linear-gradient(180deg,#f8fbff 0%,#eef7ff 100%);
  border-bottom:1px solid #dbeafe;
}

.sala-calendar-head h3{
  margin:0 0 6px;
  font-size:24px;
  color:#0f2a4a;
}

.sala-calendar-head p{
  margin:0;
  color:#667085;
  font-size:14px;
}

.sala-calendar-body{
  padding:22px 28px;
  color:#1f2937;
  line-height:1.55;
  font-size:15px;
}

.sala-calendar-body p{
  margin-bottom:8px;
}

.sala-calendar-body strong{
  color:#111827;
}

.sala-calendar-actions{
  padding:18px 28px;
  background:#f8fafc;
  display:flex;
  justify-content:flex-end;
  gap:10px;
}

@media(max-width:640px){
  .sala-calendar-actions{
    flex-direction:column-reverse;
  }
  .sala-calendar-actions .btn{
    width:100%;
  }
}
