@import url("https://fonts.googleapis.com/css2?family=Elms+Sans:wght@300;400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap");

/* ==========================================================================
   widu. — tema de SOGo (login + webmail)
   Se inyecta con sub_filter desde el vhost (zz-mail.widu.it.com), justo antes
   de </head>, DESPUES de theme-widu.css y styles.css de SOGo.

   ESTE ARCHIVO NO PINTA LA PALETA. De eso se encarga `mail-theme-build`, que
   reescribe los colores dentro de theme-default.css y de las paletas de
   Common.js (ver la cabecera de /usr/local/bin/mail-theme-build). Aqui solo
   van los remates que no salen de una paleta: tipografia, logo y layout.

   OJO CON EL ALCANCE: sub_filter aplica a todo el HTML que sale de /SOGo, o
   sea al login Y a la app de correo. El archivo esta partido en dos mitades y
   cada regla cuelga de una de estas dos raices, nunca de ninguna:

     · LOGIN   -> #loginContent / main[ui-view="login"]
     · WEBMAIL -> body[ng-app]:not([ng-app="SOGo.MainUI"])
                  (MainUI es la app del login; Mailer/Contacts/Scheduler/
                   Preferences/Administration son el webmail)

   Sin ese apellido, cualquier regla se filtra a la otra pantalla y rompe el
   layout de Angular Material. Es la regla de oro del archivo.

   Diseno del login: pantalla partida a la mitad, sin tarjeta flotante. Naranja
   con el logo a la izquierda, blanco con el formulario a la derecha. En
   telefono se apila: naranja arriba, blanco abajo.

   Tokens tomados de /var/www/mailfront/assets/mail.css — mantener en sync.
   ========================================================================== */

#loginContent,
main[ui-view="login"] {
  --orange:      #FD5107;
  --orange-deep: #D33F03;
  --paper:       #FFFFFF;
  --ink:         #171310;
  --line:        rgba(23, 19, 16, .14);
  --r-pill: 999px;
  --ease: cubic-bezier(.22, .61, .36, 1);
  --font-body: "Elms Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
}

/* ---- Lienzo -------------------------------------------------------------- */

/* md-content trae su propio fondo gris (md-hue-1) y no llega al alto completo,
   dejando una franja gris al pie. Se fuerza blanco y 100vh en toda la cadena. */
main[ui-view="login"].md-background,
main[ui-view="login"],
main[ui-view="login"] > md-content,
main[ui-view="login"] > md-content.md-bg {
  background: var(--paper) !important;
  min-height: 100vh !important;
  font-family: var(--font-body);
}

/* :has() acota la regla al <body> SOLO cuando la pagina es el login, sin
   filtrarse al webmail — ahi no existe main[ui-view=login]. Cierra la franja
   gris que queda debajo de main. */
body:has(main[ui-view="login"]) {
  background: var(--paper) !important;
}

/* Sin tarjeta: el contenedor ocupa toda la pantalla y las dos mitades llegan
   a los bordes. Nada de radio, sombra ni margenes. */
#loginContent {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  min-height: 100vh;
  margin: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: var(--paper) !important;
}

/* ---- Mitad izquierda: marca --------------------------------------------- */

/* margin:0 es obligatorio: SOGo le pone `margin:auto; margin-top:60px;
   margin-bottom:60px` a .sg-logo, y los margenes automaticos en un flex item
   anulan el stretch del eje transversal, dejando bandas claras arriba y abajo. */
#loginContent .sg-logo {
  background: var(--orange);
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: stretch !important;
  margin: 0 !important;
  padding: 40px !important;
  min-width: 0;
}

/* El logo real (trazo "wi" + "du.") en blanco sobre el naranja. `content`
   sobre <img> reemplaza el recurso sin tocar el markup, que es lo unico que
   se puede hacer desde CSS inyectado. El archivo se genero con ImageMagick
   desde /var/www/widuLanding/logo.jpg derivando el alfa de la luminancia,
   para conservar el antialiasing de los trazos. */
#loginContent .sg-logo img {
  content: url("/sig/logo-white.png");
  width: min(340px, 62%) !important;
  height: auto !important;
  max-height: none !important;
  max-width: 62% !important;
  margin: 0 !important;
}

/* ---- Mitad derecha: formulario ------------------------------------------ */

#loginContent .sg-login,
#loginContent .sg-login.md-bg {
  background: var(--paper) !important;
  display: flex;
  align-items: center;
  min-width: 0;
}

#loginContent .sg-login-content {
  padding: 40px !important;
  min-width: 0;
}

#loginContent .sg-login-content::before {
  content: "Entra a tu correo";
  display: block;
  font-family: var(--font-body);
  font-size: 22px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 28px;
}

/* ---- Campos -------------------------------------------------------------- */

#loginContent md-input-container label {
  font-family: var(--font-body) !important;
  color: rgba(23, 19, 16, .58) !important;
  font-weight: 500;
}

#loginContent md-input-container input {
  font-family: var(--font-body) !important;
  color: var(--ink) !important;
  border-color: var(--line) !important;
}

#loginContent md-input-container.md-input-focused label,
#loginContent md-input-container.md-input-focused md-icon {
  color: var(--orange) !important;
}

#loginContent md-input-container.md-input-focused input {
  border-color: var(--orange) !important;
  box-shadow: inset 0 -1px 0 0 var(--orange);
}

#loginContent md-icon {
  color: rgba(23, 19, 16, .42) !important;
  transition: color .2s var(--ease);
}

/* ---- Boton de conectar ---------------------------------------------------
   Se apunta a `.md-button`, con punto, y NO a `md-button`: la directiva
   mdButton es replace:true, o sea que en el DOM ya no queda ningun elemento
   <md-button> — lo sustituye un <button class="md-button md-fab">. Con el
   selector de elemento estas reglas no casaban con nada y el FAB se quedaba
   con el naranja palido del tono hue-2 de la paleta.
   (md-switch, md-icon y md-input-container si sobreviven como elementos; por
   eso el resto del archivo sigue usandolos tal cual.) */

#loginContent .md-button.md-fab {
  background: var(--orange) !important;
  color: #fff !important;
  box-shadow: 0 6px 18px rgba(253, 81, 7, .34) !important;
  transition: transform .18s var(--ease), box-shadow .18s var(--ease);
}

#loginContent .md-button.md-fab:not([disabled]):hover {
  background: var(--orange-deep) !important;
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(253, 81, 7, .42) !important;
}

#loginContent .md-button.md-fab[disabled] {
  background: rgba(23, 19, 16, .16) !important;
  box-shadow: none !important;
}

#loginContent .md-button:not(.md-fab) {
  font-family: var(--font-body) !important;
  color: var(--orange-deep) !important;
  border-radius: var(--r-pill);
}

/* ---- Switch "recordar usuario" ------------------------------------------ */

#loginContent md-switch.md-checked .md-thumb {
  background-color: var(--orange) !important;
}

#loginContent md-switch.md-checked .md-bar {
  background-color: rgba(253, 81, 7, .42) !important;
}

#loginContent md-switch .md-label {
  font-family: var(--font-body) !important;
  color: rgba(23, 19, 16, .66) !important;
  font-size: 14px;
}

/* ---- Pantalla de bienvenida (login correcto) ---------------------------- */

/* Al autenticar, SOGo expande un <sg-ripple class="md-accent md-bg"> hasta
   inundar la pantalla. De fabrica ese fondo es el verde de la paleta
   `sogo-green`; con las paletas de widu. ya sale naranja, pero se fija aqui
   ademas por si el runtime no llegara a generar la clase: NADA en el flujo de
   "entraste bien" debe verse verde.

   `:not(.md-warn)` es imprescindible: el mismo elemento se reutiliza para el
   error de credenciales, y ahi tiene que quedarse rojo. */
#loginContent sg-ripple:not(.md-warn),
#loginContent sg-ripple:not(.md-warn).md-bg {
  background-color: var(--orange) !important;
}

/* Palomita y texto sobre el naranja: blanco pleno, no el tono claro de la
   paleta (quedaba naranja claro sobre naranja). */
#loginContent sg-ripple-content md-icon,
#loginContent sg-ripple-content .md-fg {
  color: #fff !important;
  fill: #fff !important;
}

#loginContent sg-ripple-content .md-fg {
  font-family: var(--font-body);
  font-size: 17px;
  letter-spacing: .01em;
}

/* ---- Enlace de vuelta a la ayuda ---------------------------------------- */

main[ui-view="login"]::after {
  content: "Configuración IMAP, webmail y ayuda → mail.widu.it.com/info";
  position: fixed;
  left: 50%;
  width: 50%;
  bottom: 20px;
  text-align: center;
  font-family: var(--font-body);
  font-size: 12.5px;
  color: rgba(23, 19, 16, .48);
  pointer-events: none;
}

/* ---- Movil: se apila, naranja arriba y blanco abajo ---------------------- */

@media (max-width: 960px) {
  #loginContent {
    min-height: 100vh;
  }

  /* SOGo topa .sg-login en max-width:50%, que solo tiene sentido en el split
     horizontal. Apilado hay que soltarlo o el formulario se sale por la
     derecha (pasa igual en el login de fabrica). */
  #loginContent .sg-login {
    max-width: 100% !important;
    width: 100% !important;
  }

  #loginContent .sg-logo {
    min-height: 34vh;
    padding: 28px !important;
  }

  #loginContent .sg-logo img {
    width: min(260px, 70%) !important;
    max-width: 70% !important;
  }

  #loginContent .sg-login-content {
    padding: 32px 24px !important;
  }

  main[ui-view="login"]::after {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  #loginContent .md-button.md-fab,
  #loginContent md-icon {
    transition: none !important;
  }

  #loginContent .md-button.md-fab:not([disabled]):hover {
    transform: none;
  }
}

/* ==========================================================================
   WEBMAIL
   Todo lo de aqui abajo cuelga de body[ng-app]:not([ng-app="SOGo.MainUI"]).
   MainUI es la app del login; el resto (Mailer, Contacts, Scheduler,
   Preferences, Administration) es el correo ya abierto. Ver la regla de oro
   de la cabecera.

   Los colores ya vienen resueltos por mail-theme-build. Aqui solo va lo que
   una paleta no puede dar: la tipografia de la marca y el logo.
   ========================================================================== */

body[ng-app]:not([ng-app="SOGo.MainUI"]) {
  --orange:      #FD5107;
  --butter:      #FCE08D;
  --ink:         #241B15;
  --font-body: "Elms Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "Space Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
}

/* ---- Tipografia ---------------------------------------------------------
   Se enumeran los elementos en vez de usar un selector universal a proposito.
   Un `*` alcanzaria tambien a md-icon —cuyo glifo ES la fuente Material
   Icons— y a los <pre> del visor de correo en texto plano, donde la anchura
   fija es lo que mantiene alineadas las tablas ASCII y las firmas. */
body[ng-app]:not([ng-app="SOGo.MainUI"]),
body[ng-app]:not([ng-app="SOGo.MainUI"]) button,
body[ng-app]:not([ng-app="SOGo.MainUI"]) input,
body[ng-app]:not([ng-app="SOGo.MainUI"]) textarea,
body[ng-app]:not([ng-app="SOGo.MainUI"]) select,
body[ng-app]:not([ng-app="SOGo.MainUI"]) label,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-toolbar,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-list-item,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-tab-item,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-menu-content,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-dialog,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-tooltip,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-autocomplete,
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-chips,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .md-button,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .md-title,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .md-subhead,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .md-caption,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .sg-md-title,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .sg-md-subhead {
  font-family: var(--font-body);
}

/* Los nombres de carpeta y las cabeceras de la lista respiran mejor con algo
   de peso; Elms Sans es mas ligera que la Roboto que asume Material. */
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-toolbar .md-title,
body[ng-app]:not([ng-app="SOGo.MainUI"]) .sg-md-title {
  font-weight: 600;
  letter-spacing: -.005em;
}

/* ---- Logo en la barra lateral -------------------------------------------
   La cabecera del sidenav (avatar + nombre + correo) va sobre primary hue-2,
   o sea tinta oscura: el wordmark blanco contrasta.

   Se pone como background-image y NO con el atajo `background`, que borraria
   el background-color que Angular Material inyecta en runtime para esa clase
   y dejaria la cabecera transparente. Tampoco se usa ::before: md-toolbar.md-tall
   tiene alto fijo y un hijo mas empujaria el correo fuera del recuadro. */
body[ng-app]:not([ng-app="SOGo.MainUI"]) md-sidenav.md-sidenav-left > md-toolbar {
  background-image: url("/sig/logo-white.png");
  background-repeat: no-repeat;
  background-position: right 16px top 14px;
  background-size: 58px auto;
}

/* ---- Detalles que la paleta no alcanza ---------------------------------- */

/* styles.css trae este borde en verde fijo (#cbe5c8), fuera de toda paleta:
   es la barra vertical de las citas y de los bloques anidados del hilo. */
body[ng-app]:not([ng-app="SOGo.MainUI"]) .sg-subcontent {
  border-left-color: var(--butter);
}

/* El resaltado de resultados de busqueda (mark.js) usa el amarillo del
   navegador; se alinea con el mantequilla de la marca. */
body[ng-app]:not([ng-app="SOGo.MainUI"]) mark {
  background-color: var(--butter);
  color: var(--ink);
}

/* Texto plano y codigo: se re-declara la monoespaciada de la marca despues de
   la regla de tipografia, para que ningun bloque preformateado herede una
   proporcional y pierda la alineacion. */
body[ng-app]:not([ng-app="SOGo.MainUI"]) pre,
body[ng-app]:not([ng-app="SOGo.MainUI"]) code,
body[ng-app]:not([ng-app="SOGo.MainUI"]) tt {
  font-family: var(--font-mono);
}
