/* Gestão Associativa V6.14.0 — login, identidade e navegação unificados */
:root{
  --unified-header:72px;
  --unified-sidebar:286px;
  --unified-sidebar-compact:82px;
  --login-background-image:none;
}

/* Entrada sem cabeçalho duplicado */
body:not(.logged-in)>#appHeader,
body:not(.logged-in)>#platformFooter{display:none!important}
body:not(.logged-in){min-height:100dvh;background:var(--bg)}
#loginView.loginUnifiedShell{
  position:relative;
  isolation:isolate;
  display:grid;
  place-items:center;
  width:100%;
  max-width:none;
  min-height:100dvh;
  margin:0;
  padding:clamp(18px,4vw,44px);
  background:
    linear-gradient(135deg,color-mix(in srgb,var(--brand) 9%,transparent),color-mix(in srgb,var(--brand3) 10%,transparent)),
    var(--login-background-image),
    linear-gradient(135deg,#f1f6ef 0%,var(--bg) 48%,#faf0e2 100%);
  background-size:cover;
  background-position:center;
}
#loginView.loginUnifiedShell::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:rgba(255,253,250,.72);
  backdrop-filter:blur(7px);
}
#loginView.loginUnifiedShell.hidden{display:none!important}
.loginUnifiedCard{
  width:min(100%,540px);
  padding:clamp(25px,4vw,42px);
  border:1px solid color-mix(in srgb,var(--line) 82%,#fff);
  border-radius:34px;
  background:color-mix(in srgb,var(--card) 95%,transparent);
  box-shadow:0 22px 70px rgba(34,22,13,.12);
  text-align:center;
}
.loginBrandLogo{
  display:block;
  width:108px;
  height:108px;
  margin:0 auto 22px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:26px;
  background:#fff;
  box-shadow:0 12px 34px color-mix(in srgb,var(--brand) 15%,transparent);
  object-fit:contain;
}
.loginEyebrow{
  margin:0 0 10px;
  color:var(--brand);
  font-size:12px;
  font-weight:850;
  letter-spacing:.22em;
  text-transform:uppercase;
}
.loginUnifiedCard h1{
  margin:0;
  color:var(--txt);
  font-size:clamp(31px,6vw,40px);
  font-weight:800;
  line-height:1.08;
  letter-spacing:-.04em;
  text-transform:none;
}
.loginAssociationName{
  margin:12px auto 28px;
  color:var(--muted);
  font-size:16px;
  font-weight:650;
  line-height:1.35;
  text-wrap:balance;
}
.loginUnifiedCard form{text-align:left}
.loginUnifiedCard label{
  margin:15px 0 7px;
  color:var(--muted);
  font-size:13px;
  font-weight:750;
  text-transform:none;
}
.loginInputWrap{position:relative}
.loginInputWrap>svg{
  position:absolute;
  left:17px;
  top:50%;
  width:21px;
  height:21px;
  transform:translateY(-50%);
  fill:none;
  stroke:var(--muted);
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
  pointer-events:none;
}
.loginUnifiedCard .loginInputWrap input{
  min-height:58px;
  padding:13px 52px;
  border:1px solid var(--line);
  border-radius:18px;
  background:color-mix(in srgb,var(--card) 94%,#fff);
  color:var(--txt);
  font-size:16px;
}
.loginUnifiedCard .loginInputWrap input:focus{
  border-color:var(--brand);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 12%,transparent);
  outline:0;
}
.passwordToggle{
  position:absolute;
  right:7px;
  top:50%;
  display:grid;
  place-items:center;
  width:44px;
  height:44px;
  padding:0;
  transform:translateY(-50%);
  border:0;
  border-radius:12px;
  background:transparent;
  color:var(--muted);
  cursor:pointer;
}
.passwordToggle:hover,.passwordToggle:focus-visible{background:var(--soft);color:var(--brand)}
.passwordToggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.loginUnifiedCard .loginBtn{
  width:100%;
  min-height:58px;
  margin:28px 0 0;
  border-radius:18px;
  background:var(--brand);
  color:#fff;
  font-size:17px;
  font-weight:760;
  box-shadow:0 13px 30px color-mix(in srgb,var(--brand) 24%,transparent);
}
.loginUnifiedCard #loginMsg{min-height:20px;margin:11px 0 0;text-align:center;line-height:1.35}
.loginHelpActions{display:flex;align-items:center;justify-content:center;gap:14px;margin:8px 0 0}
.loginHelpActions span{width:1px;height:18px;background:var(--line)}
.loginHelpActions button{
  padding:6px 0;
  border:0;
  background:transparent;
  color:var(--brand);
  font:inherit;
  font-size:13px;
  cursor:pointer;
}
.loginHelpActions button:hover{text-decoration:underline}
.loginAccessNote{max-width:400px;margin:22px auto 0;color:var(--muted);font-size:12px;line-height:1.55}
.loginCopyright{margin:25px 0 -13px;color:color-mix(in srgb,var(--muted) 80%,transparent);font-size:10.5px}

/* Cabeçalho compacto */
body.logged-in>#appHeader{
  min-height:var(--unified-header);
  padding:9px 16px;
  background:linear-gradient(135deg,var(--brand2),color-mix(in srgb,var(--brand2) 78%,#000));
  z-index:120;
}
body.logged-in #appHeader .headerLeft{display:flex;align-items:center;gap:11px;min-width:0}
body.logged-in #appHeader .brand{min-width:0;margin:0}
body.logged-in #appHeader .brand img{width:47px;height:47px;border-radius:14px;padding:3px}
body.logged-in #appHeader .brand h1{max-width:330px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:19px}
body.logged-in #appHeader .brand small{font-size:11px;text-transform:none}
body.logged-in #sidebarToggle{display:grid!important;place-items:center;flex:0 0 43px;width:43px;height:43px;margin:0;padding:0;font-size:22px;line-height:1}
.mobileSearchButton{display:none}

/* Estrutura lateral unificada */
body.logged-in #appView{
  display:block;
  min-height:calc(100dvh - var(--unified-header));
  max-width:none;
}
body.logged-in #appSidebar{
  position:fixed;
  z-index:90;
  top:var(--unified-header);
  bottom:0;
  left:0;
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  width:var(--unified-sidebar);
  color:#fff;
  background:linear-gradient(180deg,var(--brand2),color-mix(in srgb,var(--brand2) 82%,#000));
  border-right:1px solid rgba(255,255,255,.1);
  box-shadow:12px 0 34px rgba(18,10,6,.10);
  transition:width .2s ease,transform .24s ease;
}
.sidebarBrand{display:flex;align-items:center;gap:12px;min-width:0;padding:20px 18px 15px;border-bottom:1px solid rgba(255,255,255,.10)}
.sidebarBrand>img{flex:0 0 54px;width:54px;height:54px;padding:4px;border-radius:16px;background:#fff;object-fit:contain}
.sidebarBrandText{display:grid;min-width:0;gap:3px}
.sidebarBrandText strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:17px;line-height:1.15}
.sidebarBrandText small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(255,255,255,.64);font-size:11px}
.sidebarClose{display:none;margin-left:auto;border:0;background:transparent;color:rgba(255,255,255,.78);font-size:34px;font-weight:300;line-height:1;cursor:pointer}
.sidebarSectionLabel{padding:17px 19px 7px;color:rgba(255,255,255,.47);font-size:10px;font-weight:850;letter-spacing:.2em;text-transform:uppercase}
body.premium-interface #appSidebar>#menu{
  position:static!important;
  display:block!important;
  width:auto!important;
  max-width:none!important;
  height:auto!important;
  margin:0!important;
  padding:5px 12px 18px!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#fff;
  overscroll-behavior:contain;
}
body.premium-interface #appSidebar #menu .premiumNavGroup{margin:3px 0}
body.premium-interface #appSidebar #menu .premiumNavItem,
body.premium-interface #appSidebar #menu .premiumNavGroupButton{
  min-height:48px;
  margin:2px 0;
  padding:12px 13px;
  border:0;
  border-radius:14px;
  background:transparent;
  color:rgba(255,255,255,.74);
  font-size:14px;
  font-weight:560;
}
body.premium-interface #appSidebar #menu .premiumNavGroupButton{font-weight:650}
body.premium-interface #appSidebar #menu .premiumNavItem:hover,
body.premium-interface #appSidebar #menu .premiumNavGroupButton:hover{background:rgba(255,255,255,.09);color:#fff}
body.premium-interface #appSidebar #menu .premiumNavItem.active,
body.premium-interface #appSidebar #menu .premiumNavGroup.active>.premiumNavGroupButton{
  background:#fff;
  color:var(--brand2);
  font-weight:750;
}
body.premium-interface #appSidebar #menu .premiumNavItem.active::after{
  content:"";
  width:7px;
  height:7px;
  margin-left:auto;
  border-radius:50%;
  background:var(--brand3);
}
body.premium-interface #appSidebar #menu .premiumNavSubmenu{
  margin:4px 4px 7px 22px;
  padding:2px 0 2px 10px;
  border-left:1px solid rgba(255,255,255,.22);
}
body.premium-interface #appSidebar #menu .premiumNavSubItem{min-height:42px;padding:9px 10px;color:rgba(255,255,255,.66);font-size:13px}
body.premium-interface #appSidebar #menu .premiumNavSubItem.active{background:rgba(255,255,255,.94);color:var(--brand2)}
body.premium-interface #appSidebar #menu .premiumNavChevron{color:rgba(255,255,255,.55)}
.sidebarProfile{display:flex;align-items:center;gap:11px;min-width:0;padding:15px 16px;border-top:1px solid rgba(255,255,255,.12)}
.sidebarProfileAvatar{display:grid;place-items:center;flex:0 0 43px;width:43px;height:43px;border-radius:50%;background:color-mix(in srgb,#fff 86%,var(--brand));color:var(--brand2);font-size:16px;font-weight:850}
.sidebarProfileText{display:grid;min-width:0;gap:2px;flex:1}
.sidebarProfileText strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
.sidebarProfileText small{color:rgba(255,255,255,.55);font-size:11px;text-transform:capitalize}
.sidebarLogout{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border:0;border-radius:11px;background:transparent;color:rgba(255,255,255,.7);font-size:22px;cursor:pointer}
.sidebarLogout:hover{background:rgba(255,255,255,.1);color:#fff}
.sidebarBackdrop{display:none}
body.premium-interface #appView>#main{
  width:calc(100% - var(--unified-sidebar))!important;
  max-width:none!important;
  min-height:calc(100dvh - var(--unified-header))!important;
  margin-left:var(--unified-sidebar)!important;
  padding:22px 26px 54px!important;
  transition:width .2s ease,margin-left .2s ease;
}
body.logged-in>#platformFooter{margin-left:var(--unified-sidebar);transition:margin-left .2s ease}

/* Sidebar recolhida no computador */
@media(min-width:1051px){
  body.sidebar-collapsed #appSidebar{width:var(--unified-sidebar-compact)}
  body.sidebar-collapsed .sidebarBrand{justify-content:center;padding-inline:10px}
  body.sidebar-collapsed .sidebarBrand>img{width:48px;height:48px;flex-basis:48px}
  body.sidebar-collapsed .sidebarBrandText,
  body.sidebar-collapsed .sidebarSectionLabel,
  body.sidebar-collapsed .sidebarProfileText,
  body.sidebar-collapsed .sidebarLogout{display:none}
  body.sidebar-collapsed .sidebarProfile{justify-content:center;padding-inline:8px}
  body.sidebar-collapsed #appSidebar>#menu{padding-inline:8px!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavItem,
  body.sidebar-collapsed #appSidebar #menu .premiumNavGroupButton{justify-content:center!important;gap:0!important;padding:12px 8px!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavItem.active::after{display:none}
  body.premium-interface.sidebar-collapsed #appView>#main{width:calc(100% - var(--unified-sidebar-compact))!important;margin-left:var(--unified-sidebar-compact)!important}
  body.logged-in.sidebar-collapsed>#platformFooter{margin-left:var(--unified-sidebar-compact)}
}

/* Pesquisa móvel */
.mobileSearchDialog{position:fixed;inset:0;z-index:260;display:grid;align-items:start;justify-items:center;padding:84px 14px 14px}
.mobileSearchDialog.hidden{display:none!important}
.mobileSearchBackdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(14,10,8,.52);backdrop-filter:blur(4px)}
.mobileSearchPanel{position:relative;width:min(100%,520px);padding:20px;border:1px solid var(--line);border-radius:22px;background:var(--card);box-shadow:0 24px 70px rgba(0,0,0,.24)}
.mobileSearchHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.mobileSearchHead strong{font-size:20px}
.mobileSearchHead button{width:40px;height:40px;border:0;border-radius:12px;background:var(--soft);color:var(--txt);font-size:28px;cursor:pointer}
.mobileSearchField{position:relative}
.mobileSearchField span{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:25px;color:var(--muted)}
.mobileSearchField input{padding-left:46px}
.mobileSearchPanel>.btn{width:100%;margin:12px 0 0}

/* Carregamento de logótipo nas definições */
.brandingUploadControl{display:grid;grid-template-columns:88px minmax(0,1fr);gap:13px;align-items:center;margin:12px 0;padding:12px;border:1px dashed var(--line);border-radius:14px;background:var(--soft2)}
.brandingUploadPreview{width:88px;height:88px;padding:5px;border:1px solid var(--line);border-radius:16px;background:#fff;object-fit:contain}
.brandingUploadActions{display:grid;gap:7px;min-width:0}
.brandingUploadActions .btn{width:max-content;max-width:100%;margin:0}
.brandingUploadActions small{color:var(--muted);line-height:1.35}
.brandingUploadInput{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}

/* Alteração de palavra-passe */
.passwordResetDialog{width:min(calc(100% - 28px),500px);padding:0;border:0;border-radius:24px;background:var(--card);color:var(--txt);box-shadow:0 24px 80px rgba(0,0,0,.28)}
.passwordResetDialog::backdrop{background:rgba(15,10,7,.58);backdrop-filter:blur(4px)}
.passwordResetDialog form{padding:25px}
.passwordResetDialog h2{margin:0 0 5px;text-transform:none}
.passwordResetDialog p{margin:0 0 15px;color:var(--muted)}
.passwordResetActions{display:flex;justify-content:flex-end;gap:8px;margin-top:17px}

/* Telemóvel e tablet: menu fechado, conteúdo imediatamente visível */
@media(max-width:1050px){
  :root{--unified-header:64px}
  body.mobile-nav-open{overflow:hidden}
  body.logged-in>#appHeader{position:sticky;top:0;display:flex;align-items:center;flex-wrap:nowrap;min-height:var(--unified-header);padding:7px 10px}
  body.logged-in #appHeader .headerLeft{flex:1;min-width:0}
  body.logged-in #appHeader .brand{flex:1;gap:9px}
  body.logged-in #appHeader .brand img{width:42px;height:42px;border-radius:12px}
  body.logged-in #appHeader .brand h1{max-width:min(46vw,260px);font-size:16px}
  body.logged-in #appHeader .brand small{max-width:min(48vw,280px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9.5px}
  body.logged-in #sidebarToggle{display:grid!important;flex-basis:42px;width:42px;height:42px}
  body.logged-in #topTools{display:flex!important;flex:0 0 auto;width:auto!important;max-width:max-content;gap:5px}
  body.logged-in #topTools>.searchTop,
  body.logged-in #topTools>button:not(#mobileSearchButton):not(#updateAvailableBtn),
  body.logged-in #topTools>#syncState,
  body.logged-in #topTools>#rolePill,
  body.logged-in #topTools>#userEmail{display:none!important}
  body.logged-in #topTools>#updateAvailableBtn:not(.hidden){display:grid!important;width:39px;height:39px;padding:0;overflow:hidden;font-size:0}
  body.logged-in #topTools>#updateAvailableBtn:not(.hidden)::before{content:"⬆";font-size:17px}
  .mobileSearchButton{display:grid!important;place-items:center;width:42px;height:42px;padding:0;font-size:26px}
  body.logged-in #appSidebar,
  body.logged-in.sidebar-collapsed #appSidebar{
    top:0;
    z-index:230;
    width:min(88vw,360px);
    transform:translateX(-105%);
    box-shadow:18px 0 50px rgba(0,0,0,.32);
  }
  body.mobile-nav-open #appSidebar{transform:translateX(0)}
  .sidebarBrand{padding:22px 17px 18px}
  .sidebarClose{display:block}
  .sidebarBackdrop{position:fixed;inset:0;z-index:220;display:block!important;width:100%;height:100%;padding:0;border:0;background:rgba(15,12,9,.46);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s,visibility .22s;backdrop-filter:blur(3px)}
  body.mobile-nav-open .sidebarBackdrop{opacity:1;visibility:visible;pointer-events:auto}
  body.premium-interface #appSidebar>#menu,
  body.premium-interface.sidebar-collapsed #appSidebar>#menu{display:block!important;width:auto!important;padding:5px 12px 18px!important;overflow-y:auto!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavLabel{display:inline!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavChevron{display:block!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavSubmenu{display:none!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavGroup.open>.premiumNavSubmenu{display:block!important}
  body.sidebar-collapsed #appSidebar #menu .premiumNavItem,
  body.sidebar-collapsed #appSidebar #menu .premiumNavGroupButton{justify-content:flex-start!important;gap:11px!important;padding:12px 13px!important}
  body.premium-interface #appView::before{display:none!important;content:none!important}
  body.premium-interface #appView>#main,
  body.premium-interface.sidebar-collapsed #appView>#main{width:100%!important;margin-left:0!important;padding:16px 14px 48px!important}
  body.logged-in>#platformFooter,body.logged-in.sidebar-collapsed>#platformFooter{margin-left:0}
}

@media(max-width:600px){
  #loginView.loginUnifiedShell{padding:12px}
  .loginUnifiedCard{padding:24px 21px 20px;border-radius:28px}
  .loginBrandLogo{width:84px;height:84px;margin-bottom:17px;border-radius:22px}
  .loginEyebrow{margin-bottom:7px;font-size:10.5px}
  .loginUnifiedCard h1{font-size:30px}
  .loginAssociationName{margin:9px auto 20px;font-size:14px}
  .loginUnifiedCard label{margin-top:11px}
  .loginUnifiedCard .loginInputWrap input{min-height:54px}
  .loginUnifiedCard .loginBtn{min-height:54px;margin-top:20px}
  .loginHelpActions{gap:10px}
  .loginHelpActions button{font-size:12px}
  .loginAccessNote{margin-top:15px;font-size:11px}
  .loginCopyright{margin-top:17px;font-size:9.5px}
  body.logged-in #appHeader .brand small{display:none}
  body.logged-in #appHeader .brand h1{max-width:38vw}
  body.premium-interface #appView>#main,
  body.premium-interface.sidebar-collapsed #appView>#main{padding:14px 10px 44px!important}
  .brandingUploadControl{grid-template-columns:70px minmax(0,1fr);padding:10px}
  .brandingUploadPreview{width:70px;height:70px}
  .passwordResetActions{display:grid;grid-template-columns:1fr 1fr}
}

@media(max-width:390px){
  body.logged-in #appHeader .brand img{display:none}
  body.logged-in #appHeader .brand h1{max-width:42vw}
  .loginUnifiedCard{padding-inline:18px}
  .loginHelpActions{align-items:stretch;gap:7px}
  .loginHelpActions button{font-size:11.5px}
}

/* Portal de presenças continua independente da navegação principal. */
body.teacher-mode #appSidebar,body.teacher-mode .sidebarBackdrop{display:none!important}
body.teacher-mode #appView>#main{width:100%!important;margin:0!important;padding:0!important}

@media print{
  #appSidebar,.sidebarBackdrop,.mobileSearchDialog{display:none!important}
  body.premium-interface #appView>#main{width:100%!important;margin:0!important;padding:0!important}
}
