/*
 * eSuite Forgejo V7 R06 · refino das alturas, paginacao, rodape e overflow.
 * Fonte de identidade: eSuite-one-conceito-validacao-V7.zip.
 * Alvo do ZIP de origem: Forgejo 15.0.10.
 * Preserva o layout HTML, formulários, fluxos e permissões nativos.
 */
:root,
.theme-dark {
  color-scheme:dark;
  --es-bg:#2F343F;--es-slate:#3B404F;--es-card:#404651;
  --es-bar:#333C4D;--es-panel:#293144;--es-selected:#252C39;
  --es-hover:#2B4267;--es-blue:#376FC4;--es-nav:#5A6889;
  --es-text:#E8F2FA;--es-muted:#D4DCE9;--es-field:#232933;
  --es-search:#161E2D;--es-line:rgba(160,183,220,.16);
  --es-shadow:0 18px 38px rgba(3,9,22,.54),0 32px 66px rgba(3,9,22,.24),inset 0 1px 0 rgba(232,242,250,.055);

  /* Tokens usados pelo tema nativo e pela base Fomantic/Forgejo. */
  --color-body:#2F343F;
  --color-box-header:#333C4D;
  --color-box-body:#293144;
  --color-box-body-highlight:#2B4267;
  --color-menu:#293144;
  --color-card:#293144;
  --color-primary:#376FC4;
  --color-primary-dark-1:#2B4267;
  --color-primary-light-1:#5A6889;
  --color-text:#E8F2FA;
  --color-text-light:#D4DCE9;
  --color-text-light-2:#D4DCE9;
  --color-text-light-3:#5A6889;
  --color-link:#D4DCE9;
  --color-hover:#2B4267;
  --color-active:#252C39;
  --color-border:rgba(160,183,220,.16);
  --color-secondary-bg:#333C4D;
  --color-input-background:#232933;
}
html{background:var(--es-bg);scrollbar-color:#5A6889 transparent}
body,.full.height{background:var(--es-bg)!important;color:var(--es-text)}
body{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
::selection{color:var(--es-text);background:var(--es-hover)}
:focus-visible{outline:2px solid var(--es-blue);outline-offset:2px}
a{transition:color .15s ease}a:hover{color:#D4DCE9}
button,input,textarea,select{font:inherit}

/* Cabeçalho opaco e identidade vetorial original do repositório. */
#navbar,.navbar{background:linear-gradient(100deg,#29303F,#333C4D 64%,#293144)!important;border-bottom:1px solid var(--es-line)!important;box-shadow:0 10px 26px rgba(4,10,24,.27);min-height:64px}
#navbar .ui.secondary.menu,.navbar .ui.secondary.menu{background:transparent!important;border:0!important;box-shadow:none!important}
#navbar .item,.navbar .item{color:var(--es-muted)!important}
#navbar .item:hover,.navbar .item:hover{background:rgba(212,220,233,.085)!important;color:var(--es-text)!important}
#navbar #navbar-logo{display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;min-height:62px!important;min-width:208px!important;width:208px!important;padding:4px 12px!important;background-image:url('../img/esuite-horizontal-white.svg')!important;background-size:184px 44px!important;background-position:center!important;background-repeat:no-repeat!important}
#navbar #navbar-logo>img{display:none!important}
#navbar #navbar-logo::before{display:none!important;content:none!important}

/* Superfícies: cores V7 sólidas, separadores e sombras mantidos. */
.ui.segment,.ui.card,.ui.cards>.card,.ui.modal,.ui.popup,.ui.dropdown .menu,.ui.menu,.ui.segments{
  background-color:var(--es-panel)!important;color:var(--es-text)!important;
  border-color:var(--es-line)!important;
}
.ui.segment,.ui.card,.ui.modal{border-radius:12px!important}
.ui.segment,.ui.card,.ui.popup,.ui.dropdown .menu,.ui.modal{box-shadow:var(--es-shadow)!important}
.ui.menu .item,.ui.menu .header.item,.ui.dropdown .menu>.item{color:var(--es-muted)!important}
.ui.dropdown .menu>.item:hover,.ui.menu .item:hover{background:var(--es-hover)!important;color:var(--es-text)!important}
.ui.dropdown .menu>.selected.item,.ui.menu .active.item{background:var(--es-selected)!important;color:var(--es-text)!important}
.ui.tabular.menu .active.item{border-color:var(--es-blue)!important}
.ui.secondary.menu .active.item{background:var(--es-selected)!important}
.ui.table{background:var(--es-panel)!important;border-color:var(--es-line)!important;color:var(--es-muted)!important}
.ui.table thead th{background:var(--es-bar)!important;color:var(--es-muted)!important}
.ui.table tr:hover td{background:var(--es-hover)!important}
.ui.table th,.ui.table td{border-color:var(--es-line)!important}
.ui.form input:not([type=checkbox]):not([type=radio]),.ui.form textarea,.ui.form select{
  background:var(--es-field)!important;color:var(--es-text)!important;
  border:1px solid rgba(160,183,220,.24)!important;border-radius:9px!important;
}
.ui.form input:focus,.ui.form textarea:focus{border-color:var(--es-blue)!important;box-shadow:0 0 0 3px rgba(55,111,196,.17)!important}
.ui.form label{color:var(--es-muted)!important}
.ui.form input::placeholder,.ui.form textarea::placeholder{color:var(--es-nav)!important}
.ui.primary.button,.ui.blue.button,.ui.button.primary{background:var(--es-blue)!important;color:var(--es-text)!important;border-radius:9px!important;box-shadow:0 10px 25px rgba(4,10,24,.23)!important}
.ui.primary.button:hover,.ui.blue.button:hover,.ui.button.primary:hover{background:var(--es-hover)!important}
.ui.button:not(.primary):not(.blue):not(.red):not(.green){background:var(--es-bar);color:var(--es-muted);border-radius:9px}
.ui.button:not(.primary):not(.blue):not(.red):not(.green):hover{background:var(--es-hover);color:var(--es-text)}
.ui.message,.flash-message{border-radius:10px}

/* Refino das telas internas nativas: efeitos e tons da V7, sem alterar dados,
   alturas de linhas, heatmap, estado de issues, diffs ou controles funcionais. */
.page-content.dashboard,.page-content.repository,.page-content.explore,
.page-content.organization,.page-content.user.profile{
  background:linear-gradient(180deg,#2F343F 0%,#2F343F 63%,#2B3344 100%)!important;
  color:var(--es-text)!important;
}
.page-content:not(.home):not(.signin) .ui.secondary.menu:not(.navbar-left):not(.navbar-right),
.page-content:not(.home):not(.signin) .ui.tabular.menu{
  background:var(--es-bar)!important;border-color:var(--es-line)!important;
  box-shadow:0 8px 20px rgba(4,10,24,.15);
  border-radius:10px 10px 0 0;
}
.page-content:not(.home):not(.signin) .ui.secondary.menu .active.item,
.page-content:not(.home):not(.signin) .ui.tabular.menu .active.item{
  background:var(--es-selected)!important;color:var(--es-text)!important;
  border-bottom-color:var(--es-blue)!important;
}
.page-content:not(.home):not(.signin) .ui.secondary.menu .item:hover,
.page-content:not(.home):not(.signin) .ui.tabular.menu .item:hover{
  background:var(--es-hover)!important;color:var(--es-text)!important;
}
.page-content:not(.home):not(.signin) .ui.vertical.menu{
  background:linear-gradient(180deg,#29303F,#2B3344 55%,#2E3648)!important;
  border:1px solid var(--es-line)!important;
  box-shadow:10px 0 28px rgba(4,10,24,.15)!important;
}
.page-content:not(.home):not(.signin) .ui.vertical.menu .item:not(.active){
  color:var(--es-nav)!important;background:transparent!important;
}
.page-content:not(.home):not(.signin) .ui.vertical.menu .item.active{
  color:var(--es-text)!important;background:var(--es-selected)!important;
  box-shadow:inset 3px 0 var(--es-blue);
}
.page-content:not(.home):not(.signin) .ui.vertical.menu .item:hover{
  color:var(--es-text)!important;background:var(--es-hover)!important;
}
.page-content.dashboard .ui.segment:not(.basic),
.page-content.explore .ui.segment:not(.basic),
.page-content.organization .ui.segment:not(.basic),
.page-content.user.profile .ui.segment:not(.basic),
.page-content:not(.home):not(.signin) .ui.card,
.page-content:not(.home):not(.signin) .ui.dropdown .menu{
  background:linear-gradient(140deg,#293144,#333C4D)!important;
  border-color:var(--es-line)!important;
  box-shadow:var(--es-shadow)!important;
}
.page-content:not(.home):not(.signin) .ui.input>input,
.page-content:not(.home):not(.signin) input[type=search]{
  background:var(--es-field)!important;color:var(--es-text)!important;
  border:1px solid rgba(160,183,220,.24)!important;border-radius:9px!important;
}
.page-content:not(.home):not(.signin) .ui.input>input::placeholder,
.page-content:not(.home):not(.signin) input[type=search]::placeholder{color:var(--es-nav)!important}
.page-content:not(.home):not(.signin) .ui.input>input:focus,
.page-content:not(.home):not(.signin) input[type=search]:focus{
  border-color:var(--es-blue)!important;box-shadow:0 0 0 3px rgba(55,111,196,.17)!important;
}
.page-content:not(.home):not(.signin) .ui.label:not(.red):not(.green):not(.orange):not(.yellow){
  background:var(--es-selected)!important;color:var(--es-muted)!important;
}
.page-content:not(.home):not(.signin) .ui.table tbody tr:hover td{
  background:var(--es-hover)!important;
}
.page-content:not(.home):not(.signin) .ui.dropdown .menu>.item:not(.selected):not(:hover){
  background:var(--es-panel)!important;
}

/* Dashboard autenticado: a faixa real é a PAI .secondary-nav, não o menu.
   Forgejo 15 aplica padding:1px 12px na .dashboard .secondary-nav. A cor
   precisa pintar o pai inteiro; o recuo de 12px permanece para o conteúdo.
   Medição: secondary-nav 0–2776px, menu 12–2764px (viewport 2792px). */
.page-content.dashboard.feeds > .secondary-nav{
  background:#333C4D!important;
  border-bottom-color:var(--es-line)!important;
}
.page-content.dashboard.feeds > .secondary-nav .ui.secondary.stackable.menu{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0!important;
}

/* Zero contribuições: Forgejo usa style="fill: var(--color-secondary-alpha-60)"
   nos rects vazios. Estado computado na VPS5 era rgba(43,54,66,.6),
   praticamente invisível em #2F343F. Não tocar células com níveis ativos. */
.page-content.dashboard.feeds #user-heatmap,
.page-content.user.profile #user-heatmap{
  --color-secondary-alpha-60:#232B38;
}
.page-content.dashboard.feeds #user-heatmap rect.vch__day__square[style*="var(--color-secondary-alpha-60)"],
.page-content.user.profile #user-heatmap rect.vch__day__square[style*="var(--color-secondary-alpha-60)"]{
  fill:#232B38!important;
  stroke:rgba(160,183,220,.16);
  stroke-width:.35px;
}

/* As categorias de alerta, status e diff mantêm a semântica nativa:
   NÃO repintar indiscriminadamente .red/.green/.negative/.positive. */
.repo-header,.repository .ui.secondary.menu{border-color:var(--es-line)}
.page-content.home .ui.header,.page-content.repository .ui.header{color:var(--es-text)}
.ui.label:not(.red):not(.green):not(.orange){border-color:var(--es-line)}

/* O Forgejo usa .ui.middle.very.relaxed.page.grid, cujo padding de página cresce
   com o viewport. Limitá-lo a 1120px SEM retirar esse padding comprime os campos
   para poucos pixels em 2486px. Sobrescrever explicitamente padding-inline. */
.page-content.user.signin{position:relative;isolation:auto;min-height:calc(100dvh - 115px);padding:clamp(24px,4vh,60px) 20px!important;background:transparent!important}
.page-content.user.signin>.ui.middle.very.relaxed.page.grid{
  position:relative;z-index:1;display:flex!important;align-items:center;
  justify-content:center;width:100%!important;max-width:1160px!important;
  padding:0!important;margin:0 auto!important;
  min-height:calc(100dvh - 205px);box-sizing:border-box!important;
}
.page-content.user.signin.es-v7-login-ready>.ui.middle.very.relaxed.page.grid{
  display:grid!important;grid-template-columns:minmax(0,1fr) minmax(360px,465px);
  column-gap:clamp(34px,5vw,82px);row-gap:22px;
}
.page-content.user.signin>.ui.grid>.column{
  width:100%!important;min-width:0!important;max-width:480px!important;
  margin:0 auto!important;padding:28px!important;
  background:var(--es-panel)!important;border:1px solid rgba(55,111,196,.22)!important;
  border-radius:20px!important;box-shadow:var(--es-shadow)!important;
}
.page-content.user.signin .es-v7-login-intro{position:relative;min-width:0;max-width:610px}
.es-v7-login-intro img{display:block;width:min(290px,72%);height:auto;object-fit:contain;margin-bottom:38px}
.es-v7-login-intro .es-v7-login-eyebrow{
  color:var(--es-muted);font-size:11px;font-weight:760;letter-spacing:.17em;
  text-transform:uppercase;margin:0 0 12px;
}
.es-v7-login-intro h1{
  max-width:580px;margin:0 0 18px;font-size:clamp(36px,3.8vw,56px);
  line-height:1.09;letter-spacing:-.045em;font-weight:670;color:var(--es-text);
  text-shadow:0 5px 26px rgba(4,10,24,.22);
}
.es-v7-login-intro p{max-width:550px;color:var(--es-muted);font-size:15px;line-height:1.8}
.es-v7-login-intro .es-v7-login-label{
  display:inline-flex;margin-top:12px;padding:7px 12px;border-radius:9px;
  color:var(--es-muted);background:var(--es-selected);
  border:1px solid var(--es-line);font-size:11px;
}
.page-content.user.signin .ui.container.fluid{min-width:0!important;width:100%!important}
.page-content.user.signin .ui.form input:not([type=checkbox]):not([type=radio]){
  display:block;box-sizing:border-box;width:100%!important;min-width:0;
}
.page-content.user.signin .ui.form .ui.button{
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-weight:650!important;min-height:42px;
}
.page-content.user.signin .ui.container.fluid>.ui.top.attached.header{
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-size:20px!important;text-align:left!important;padding:12px 16px!important;
}
.page-content.user.signin .ui.top.attached.header{background:var(--es-bar)!important;color:var(--es-text)!important;border:1px solid var(--es-line)!important;border-radius:11px!important}
.page-content.user.signin .ui.attached.segment{background:var(--es-panel)!important;border-color:var(--es-line)!important;border-radius:11px!important;box-shadow:none!important}
.page-content.user.signin .ui.form .field>label{color:var(--es-muted)!important}

/* Home original: herda o texto do home.tmpl fornecido, sem reescrever conteúdo. */
.page-content.home.esuite-home{position:relative;isolation:auto;min-height:calc(100vh - 64px);min-height:calc(100dvh - 64px);box-sizing:border-box;background:transparent!important;color:var(--es-text)!important;overflow:hidden}
.esuite-home .es-home-container{position:relative;z-index:1;width:min(1180px,calc(100% - 40px));margin:0 auto;padding:48px 0 66px}
.esuite-home .es-home-hero{display:flex;flex-direction:column;align-items:flex-start;text-align:left;min-height:550px;justify-content:center;padding:50px 16px 75px;position:relative}
.esuite-home .es-home-light{display:none}
.esuite-home .es-home-brand img{display:block;width:min(290px,78vw);object-fit:contain;height:auto}
.esuite-home .es-home-eyebrow{color:#D4DCE9;font-size:10px;line-height:1.6;font-weight:750;letter-spacing:.18em}
.esuite-home .es-home-hero .es-home-eyebrow{margin-top:29px}
.esuite-home .es-home-hero h1{max-width:750px;font-weight:675;font-size:clamp(43px,5vw,75px);line-height:1.07;letter-spacing:-.05em;color:var(--es-text);margin:14px 0 16px}
.esuite-home .es-home-hero h1 span{color:#D4DCE9}
.esuite-home .es-home-lead{font-size:clamp(15px,1.5vw,19px);line-height:1.7;max-width:610px;color:var(--es-muted)}
.esuite-home .es-home-actions{display:flex;justify-content:flex-start;gap:12px;margin-top:24px;flex-wrap:wrap}
.esuite-home .es-home-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 20px;font-weight:660;font-size:12px;border-radius:9px;transition:background .15s ease}
.esuite-home .es-home-primary{background:var(--es-blue);color:var(--es-text)!important;box-shadow:0 10px 25px rgba(4,10,24,.23)}
.esuite-home .es-home-primary:hover{background:var(--es-hover);transform:none}
.esuite-home .es-home-secondary{background:var(--es-bar);border:1px solid var(--es-line);color:var(--es-muted)!important}
.esuite-home .es-home-secondary:hover{background:var(--es-hover);color:var(--es-text)!important}
.esuite-home .es-home-access{color:#D4DCE9;font-size:11px}
.esuite-home .es-home-section-head{max-width:670px;margin-bottom:25px}
.esuite-home .es-home-section-head h2,.esuite-home .es-home-card h3,.esuite-home .es-home-closing h2{color:var(--es-text)}
.esuite-home .es-home-section-head>p:last-child,.esuite-home .es-home-card p,.esuite-home .es-home-closing p{color:var(--es-muted)}
.esuite-home .es-home-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}
.esuite-home .es-home-card{padding:23px;border:1px solid var(--es-line);border-radius:15px;background:linear-gradient(147deg,#293144,#333C4D);box-shadow:0 17px 36px rgba(4,10,24,.18)}
.esuite-home .es-home-featured{border-top:2px solid var(--es-blue)}
.esuite-home .es-home-card-kicker{color:#D4DCE9;font-size:9px;font-weight:750;letter-spacing:.12em}
.esuite-home .es-home-chips span{background:var(--es-selected);color:var(--es-muted);border-color:var(--es-line)}
.esuite-home .es-home-closing{display:flex;align-items:center;justify-content:space-between;gap:22px;border-top:1px solid var(--es-line);margin:28px 0 0;padding:29px 0}

/* O BODY mede só 936px, embora a .full.height alcance 1528px no Home.
   Em R04/RC06 a pintura no body era recortada exatamente nessa fronteira
   durante a rolagem. Transferir a imagem de fundo para o contêiner que
   efetivamente cobre toda a página, sem duplicar overlay no body. */
body:has(.page-content.home.esuite-home){
  background:transparent!important;
}
body:has(.page-content.home.esuite-home) .full.height{
  background-color:var(--es-bg)!important;
  background-image:linear-gradient(180deg,rgba(47,52,63,.30),rgba(59,64,79,.33)),url('../img/fundo-neural-institucional.png')!important;
  background-position:center center!important;
  background-size:cover!important;
  background-repeat:no-repeat!important;
  background-attachment:fixed!important;
}
body:has(.page-content.home.esuite-home) footer,
body:has(.page-content.home.esuite-home) .page-footer{
  background:transparent!important;
}
body:has(.page-content.home.esuite-home) .es-v7-neural{
  background:none!important;
  filter:none!important;
}

/* Cenário homologado: V7 usa o PNG intacto; z-index AUTO em estágio e imagem. */
.es-v7-environment{position:absolute;inset:0;z-index:auto;isolation:auto;overflow:hidden;pointer-events:none;margin:0!important;padding:0!important}
.es-v7-neural{position:absolute;inset:0;background:linear-gradient(180deg,rgba(47,52,63,.30),rgba(59,64,79,.33)),url('../img/fundo-neural-institucional.png') center/cover no-repeat;filter:saturate(.70)}
.es-v7-atmosphere{position:absolute;inset:0;background:radial-gradient(ellipse 50% 52% at 55% 59%,rgba(64,70,81,.17),transparent 75%),linear-gradient(90deg,rgba(47,52,63,.16),transparent 25%,transparent 75%,rgba(47,52,63,.17))}
.es-v7-stage{position:absolute;top:0;right:0;width:min(45vw,1100px);aspect-ratio:1841/1037;z-index:auto;isolation:auto;overflow:visible}
.es-v7-vortex{position:absolute;top:0;right:0;width:100%;height:auto;display:block;object-fit:contain;mix-blend-mode:screen;opacity:.90;filter:saturate(.74) contrast(1.16) brightness(.91) drop-shadow(0 1px 11px rgba(55,111,196,.10));transform:translateZ(0)}
.es-v7-orbs{position:absolute;inset:0;pointer-events:none;opacity:.98}
.es-v7-orb{position:absolute;top:var(--y);left:var(--x);width:var(--size);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 32% 25%,#E8F2FA 0 9%,#D4DCE9 22%,#376FC4 58%,#2F343F 91%);box-shadow:inset -2px -2px 4px rgba(47,52,63,.52),0 0 0 1px rgba(212,220,233,.20),0 0 16px rgba(55,111,196,.38);animation:es-v7-float var(--duration) ease-in-out var(--delay) infinite}
.es-v7-orb::before{content:"";position:absolute;inset:-55%;border-radius:50%;background:radial-gradient(circle,rgba(55,111,196,.21),transparent 72%)}
.es-v7-orb::after{content:"";position:absolute;left:22%;top:16%;width:26%;height:19%;background:rgba(232,242,250,.82);border-radius:50%;filter:blur(.4px)}
.es-v7-orb--silver{background:radial-gradient(circle at 30% 26%,#E8F2FA 0 17%,#D4DCE9 42%,#404651 83%,#2F343F 100%)}
.es-v7-orb--slate{background:radial-gradient(circle at 31% 25%,#E8F2FA 0 8%,#D4DCE9 15%,#404651 47%,#3B404F 76%,#2F343F 100%)}
.es-v7-orb--ice{background:radial-gradient(circle at 34% 29%,#E8F2FA 0 21%,#D4DCE9 63%,#376FC4 87%,#3B404F 100%)}
@keyframes es-v7-float{0%,100%{transform:translate3d(-50%,-50%,0);opacity:.84}50%{transform:translate3d(-50%,-50%,0) translate3d(var(--dx),var(--dy),0);opacity:1}}
.page-content.user.signin .es-v7-environment{inset:0}

@media(max-width:1100px){.esuite-home .es-home-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.es-v7-stage{width:53vw}.page-content.user.signin.es-v7-login-ready>.ui.middle.very.relaxed.page.grid{column-gap:24px}}
@media(max-width:880px){.page-content.user.signin.es-v7-login-ready>.ui.middle.very.relaxed.page.grid{display:flex!important;flex-direction:column;justify-content:center;gap:24px;max-width:520px!important}.es-v7-login-intro img{width:min(210px,65%);margin-bottom:18px}.es-v7-login-intro h1{font-size:33px}.es-v7-login-intro p{font-size:13px;line-height:1.65}.es-v7-login-intro .es-v7-login-label{margin-top:2px}}
@media(max-width:767px){#navbar #navbar-logo{min-width:52px!important;width:52px!important;padding:6px!important;background-image:url('../img/logo.svg')!important;background-size:34px 34px!important}.es-v7-stage{width:62vw}.esuite-home .es-home-hero{padding:40px 0 55px}.page-content.user.signin>.ui.grid>.column{padding:18px!important}}
@media(max-width:600px){.esuite-home .es-home-container{width:calc(100% - 28px);padding:24px 0 42px}.esuite-home .es-home-grid{grid-template-columns:1fr}.esuite-home .es-home-hero{min-height:450px}.esuite-home .es-home-hero h1{font-size:40px}.esuite-home .es-home-closing{flex-direction:column;align-items:flex-start}.es-v7-stage{width:92vw;right:-8vw;opacity:.57}}
@media(prefers-reduced-motion:reduce){.es-v7-orb{animation:none;transform:translate3d(-50%,-50%,0)}*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* R06: a regra nativa .full.height tem flex-grow:1 e padding-bottom:80px.
   Em feeds com menos registros que a altura da tela, o flex-grow cria centenas
   de pixels vazios ENTRE a paginacao e o rodape. Fazer o footer seguir o
   conteudo real sem alterar os controles ou o estilo da lista. */
body:has(.page-content.dashboard.feeds){
  height:auto!important;
  min-height:0!important;
  overflow-x:clip!important;
}
body:has(.page-content.dashboard.feeds) .full.height{
  flex-grow:0!important;
  padding-bottom:0!important;
}

/* R06: login em desktop deve caber entre navbar (64px) e footer (37px).
   O padding-bottom:80px da .full.height deixava a imagem terminar longe do
   rodape; a grade de altura 100dvh-205px somada ao padding do page content
   causava a rolagem mesmo numa viewport alta. Centralizar o layout pelo pai. */
body:has(.page-content.user.signin){overflow-x:clip!important}
body:has(.page-content.user.signin) .full.height{padding-bottom:0!important}
.page-content.user.signin{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:calc(100dvh - 101px)!important;
  max-width:100%!important;
}
.page-content.user.signin>.ui.middle.very.relaxed.page.grid{
  min-height:0!important;
  height:auto!important;
  max-width:100%!important;
}

/* Nao modificar o conteudo do footer; apenas impedir largura excessiva.
   overflow-x:clip evita barra horizontal sem criar scroll-container vertical. */
body:has(.page-content.dashboard.feeds) .page-footer,
body:has(.page-content.user.signin) .page-footer{
  box-sizing:border-box!important;
  max-width:100%!important;
  min-width:0!important;
  flex-wrap:wrap;
}

@media(max-width:880px){
  .page-content.user.signin{display:block!important}
  .page-content.user.signin>.ui.middle.very.relaxed.page.grid{min-height:0!important}
}

/* R07/RC09: a estrutura nativa do Forgejo reserva 80px abaixo do conteúdo
   em TODAS as rotas. O ajuste RC08 cobria apenas feeds/login; na Home,
   Explorar, Administração e demais rotas continuava o mesmo vão. Ao mesmo
   tempo, flex-grow:1 alongava a .full.height quando a lista era menor que a
   viewport, gerando centenas de pixels entre lista e rodapé em tela alta.

   Não impor altura fixa ou cortar overflow vertical: páginas com conteúdo
   legítimo extenso devem continuar rolando naturalmente. */
.full.height{
  padding-bottom:0!important;
  min-width:0!important;
  max-width:100%!important;
}
body:not(:has(.page-content.user.signin)) .full.height{
  flex-grow:0!important;
}

/* Ritmo de espaçamento estável entre paginação/lista e o rodapé em todas
   as telas internas (sem atingir o layout editorial da Home nem o Login). */
.page-content:not(.home):not(.signin){
  padding-bottom:20px!important;
}

/* A barra inferior não deve produzir largura própria além do viewport,
   mesmo com idioma, licença e API lado a lado. Clip não bloqueia scroll Y. */
body{overflow-x:clip!important}
.page-footer{
  box-sizing:border-box!important;
  max-width:100%!important;
  min-width:0!important;
  flex-wrap:wrap;
}


/* V7 R08 / RC10 — rodape na base da viewport, sem sobreposicao.
   Corrige o RC09: flex-grow:0 fazia o rodape aparecer no meio da tela.
   O rodape continua APOS o conteudo quando a pagina ultrapassa a viewport.
   A imagem e o gradiente acompanham o corpo ate a extremidade do rodape. */
body{
  display:flex!important;
  flex-direction:column!important;
  height:auto!important;
  min-height:100vh!important;
  min-height:100dvh!important;
  background-color:var(--es-bg)!important;
  background-image:linear-gradient(180deg,#2F343F 0%,#2F343F 63%,#2B3344 100%)!important;
  background-position:center bottom!important;
  background-size:100% 100%!important;
  background-repeat:no-repeat!important;
  background-attachment:scroll!important;
}
/* R06/RC08 define min-height:0 no feed. A viewport permanece o piso. */
body:has(.page-content.dashboard.feeds){
  min-height:100vh!important;
  min-height:100dvh!important;
}
.full.height{
  flex:1 0 auto!important;
  min-height:0!important;
  padding-bottom:0!important;
  background:transparent!important;
}
/* Vencer especificamente os dois overrides anteriores, sem eliminar o
   espaco de 20px entre paginacao e rodape nem alterar o login. */
body:not(:has(.page-content.user.signin)) .full.height,
body:has(.page-content.dashboard.feeds) .full.height{
  flex-grow:1!important;
}
.page-footer{
  flex-shrink:0!important;
  background:transparent!important;
  margin-top:auto!important;
  position:static!important;
}
/* Os gradientes locais terminavam antes do rodape quando a tela era alta.
   Uma unica camada no body os ancora ao final real da pagina. */
.page-content.dashboard,.page-content.repository,.page-content.explore,
.page-content.organization,.page-content.user.profile{
  background:transparent!important;
}
/* Altura minima da Home deve descontar cabecalho e rodape, nao apenas
   a barra superior; paginas compridas continuam em fluxo normal. */
.page-content.home.esuite-home{
  min-height:calc(100vh - 102px)!important;
  min-height:calc(100dvh - 102px)!important;
}
/* A altura minima do login inclui seu padding de centralizacao.
   Evita que 76px de padding sejam somados alem da viewport. */
.page-content.user.signin{
  box-sizing:border-box!important;
  min-height:calc(100vh - 102px)!important;
  min-height:calc(100dvh - 102px)!important;
}
/* Home: PNG e overlay existentes, intactos; agora pintados no BODY completo,
   incluindo a area sob o rodape. Sem background-attachment:fixed que ancora
   o gradiente na janela e o separa da pagina longa. */
body:has(.page-content.home.esuite-home){
  background-color:var(--es-bg)!important;
  background-image:linear-gradient(180deg,rgba(47,52,63,.30),rgba(59,64,79,.33)),url('../img/fundo-neural-institucional.png')!important;
  background-position:center bottom!important;
  background-size:cover!important;
  background-repeat:no-repeat!important;
  background-attachment:scroll!important;
}
body:has(.page-content.home.esuite-home) .full.height{
  background:transparent!important;
  background-image:none!important;
}
body:has(.page-content.home.esuite-home) .page-footer{
  background:transparent!important;
}
