/*
 * Habillage Paxia Animae pour Agilefant 3.3.3.
 * Chargée après main.min.css (structure.tag et login.jsp) : ne contient que des surcharges, l'application d'origine
 * reste intacte. Palette reprise du site www.paxiaanimae.fr (variables CSS de son index.html) :
 *   indigo #3c357d   indigo-deep #2b2660   blue #3f72af   blue-deep #2f5a8f   liens #3f6dab
 *   green  #4a7d63   green-light #75a27d   sky  #acc4e1   sky-soft  #dfe9f5
 *   bg     #f5f8fc   ink #2f3352           muted #5f668a
 * Les couleurs sémantiques (charge rouge/jaune/vert, états des tâches, erreurs, notes jaunes) sont conservées.
 */

/* ---- Police : chasse fixe pour toute l'interface (texte, champs, boutons, menus, arbre, tableaux) ---- */
* { font-family: monospace, monospace !important; }

/* ---- Fond de page (bg du site) et bandeau supérieur blanc (logo, liens, recherche, onglets) ---- */
body { background: #f5f8fc; color: #2f3352; }
#headerWrapper, #controlWrapper { background: #fff; }
#controlWrapper { border-bottom: 1px solid rgba(60, 53, 125, .14); }
#headerWrapper { padding-bottom: 0; height: 2.3em; }
/* Menu latéral élargi à 18em (demande du 11/10) ; le corps de page est décalé d'autant pour ne pas passer sous le menu */
#menuWrapper { width: 18em; }
#bodyWrapper { margin-left: 18em; }
#navigationTabsWrapper { margin-left: 19em; }
/* Onglets principaux : posés sur le bandeau blanc, l'onglet courant se fond dans la page */
#navigationTabsWrapper ul li.navitab-selected { background: #f5f8fc; }
#bodyWrapper, #bodyWrapperNoMenu { border-left-color: rgba(60, 53, 125, .14); }
#footerWrapper { border-top-color: rgba(60, 53, 125, .14); }
/* Blocs de contenu : blancs, coins arrondis et ombre douce comme les cartes du site */
.ui-widget-content { background: #fff; }
.ui-corner-all.ui-widget-content { box-shadow: 0 8px 24px rgba(60, 53, 125, .08); }
/* Tableaux : en-têtes et lignes paires dans les bleus pâles du site */
.dynamictable-header { background-color: #dfe9f5 !important; }
.dynamictable-even .dynamictable-cell { background-color: #eef3fa; }

/* ---- Texte et liens ---- */
a:link, a:visited { color: #3f6dab; }
a:hover, a:active { color: #4a7d63; }
.linkColors:link, .linkColors:visited, .linkColors:active, .linkColors { color: #3f6dab !important; }
.linkColors:hover { color: #4a7d63 !important; }
.quickHelpLink { color: #3f6dab !important; }
h2, h2 > a, h2 > a:visited, h2 > a:hover { color: #3c357d !important; }
h3 { color: #5f668a; }
#footerText a:hover { color: #4a7d63; }
#footerText { color: #5f668a; }

/* ---- Cadres et séparateurs (ancien bleu #a6c9e2 -> sky) ---- */
#controlWrapper, #footerWrapper { border-color: #acc4e1; }
#bodyWrapper, #bodyWrapperNoMenu { border-left-color: #acc4e1; }
div.corner-border, .widget, .widgetHeader { border-color: #acc4e1; }
.widgetHeader { background: #dfe9f5; }
.autocomplete-suggestionList, .autocomplete-suggestionList li, .autocomplete-searchBoxContainer { border-color: #acc4e1; }

/* ---- Onglets principaux (Daily Work, Backlog, Timesheets…) ---- */
#navigationTabsWrapper ul li {
  border-color: #acc4e1;
  background: #dfe9f5 url("../img/ui/ui-bg_glass_85_dfeffc_1x400.png") repeat-x scroll 50% 50%;
}
#navigationTabsWrapper ul li a { color: #3c357d !important; }
#navigationTabsWrapper ul li.navitab-selected a { color: #4a7d63 !important; }

/* ---- Thème jQuery UI (accordéon du menu, sous-onglets, dialogues, en-têtes de blocs) ---- */
.ui-widget-content { border-color: #acc4e1; color: #2f3352; }
.ui-widget-header {
  border: 1px solid #2b2660;
  background: #3c357d;
  background: linear-gradient(90deg, #3c357d, #3f72af 60%, #75a27d);
  color: #fff;
}
.ui-state-default, .ui-widget-content .ui-state-default {
  border: 1px solid #acc4e1;
  background: #dfe9f5 url("../img/ui/ui-bg_glass_85_dfeffc_1x400.png") 50% 50% repeat-x;
  color: #3c357d;
}
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #3c357d; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus {
  border: 1px solid #3f72af;
  background: #c9dbee url("../img/ui/ui-bg_glass_75_d0e5f5_1x400.png") 50% 50% repeat-x;
  color: #2b2660;
}
.ui-state-active, .ui-widget-content .ui-state-active {
  border: 1px solid #3f72af;
  background: #f5f8fc url("../img/ui/ui-bg_inset-hard_100_f5f8f9_1x100.png") 50% 50% repeat-x;
  color: #4a7d63;
}
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #4a7d63; }
#menuAccordion .ui-state-active { border-bottom-color: #dfe9f5 !important; }

/* Icônes jQuery UI (flèches, croix…) : sprites recolorés dans la palette (static/img/ui/ui-icons_<couleur>.png) */
.ui-icon, .ui-widget-content .ui-icon { background-image: url(../img/ui/ui-icons_3f72af_256x240.png); }
.ui-widget-header .ui-icon { background-image: url(../img/ui/ui-icons_dfe9f5_256x240.png); }
.ui-state-default .ui-icon { background-image: url(../img/ui/ui-icons_3c357d_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { background-image: url(../img/ui/ui-icons_2b2660_256x240.png); }
.ui-state-active .ui-icon { background-image: url(../img/ui/ui-icons_4a7d63_256x240.png); }

/* Bloc « My tasks without story » : gris foncé d'origine remplacé par l'indigo profond */
.tasksWithoutStory-table .ui-widget-header {
  background: #2b2660;
  background: linear-gradient(90deg, #2b2660, #3c357d);
  border-color: #2b2660;
}

/* ---- Barres d'action de l'arbre des stories et de l'édition multiple ---- */
.storytree-actions .headerbar { background: linear-gradient(90deg, #3c357d, #3f72af 60%, #75a27d); }
.multiEditContainer { background: #dfe9f5; border-color: #3f72af; }

/* ---- Arbre des backlogs du menu (dynatree) ---- */
div.ui-dynatree-container a { color: #3f6dab; }
span.ui-dynatree-document a, span.ui-dynatree-folder a { color: #3f6dab !important; }
span.ui-dynatree-document a:hover, span.ui-dynatree-folder a:hover { color: #4a7d63 !important; }
span.ui-dynatree-selected a { color: #4a7d63; }

/* ---- Tableaux dynamiques ---- */
.dynamictable a:link, .dynamictable a:visited { color: #3f6dab; }
.dynamictable a:hover, .dynamictable a:active { color: #4a7d63; }
.project-story-table .dynamictable-row,
.product-project-table .dynamictable-row,
.portfolio-ranked-project-table .dynamictable-row,
.portfolio-unranked-project-table .dynamictable-row { background-color: #eef3fa; }
.backlog-id-link span, .story-id-link span { color: #3f6dab; }
.privatePortfolios option { color: #3c357d; }

/* ---- Boutons ---- */
input.dynamics-button, button.dynamics-button, .actionColumn .edit, li.dynamictable-captionaction {
  border-color: #acc4e1;
  color: #2f3352;
}
input.dynamics-button:hover, button.dynamics-button:hover, li.dynamictable-captionaction:hover { border-color: #3f72af; }
.actionColumn .edit:hover, .label-add:hover { color: #4a7d63; }
div.storyTreeContainer .openCreateDialogLink,
div.storyTreeContainer .openCreateDialogLink:active,
div.storyTreeContainer .openCreateDialogLink:visited { color: #3f6dab !important; }
div.storyTreeContainer .openCreateDialogLink:hover { color: #4a7d63 !important; }

/* ---- Étiquettes (labels) ---- */
.label-item { background-color: #dfe9f5; border-color: #acc4e1; color: #2f3352; }
.label-add { border-color: #acc4e1; }

/* ---- Info-bulles ---- */
.infobubble div.details-links { color: #3f6dab; }
.infobubble a:hover { color: #4a7d63; }
.bubbleHierarchyContainer a:hover, .bubbleHierarchyContainer a:link,
.bubbleHierarchyContainer a:visited, .bubbleHierarchyContainer a:active { color: #3f6dab; }

/* ---- Éléments masqués (demande du 11/10) : pied de page Agilefant/Aalto et logo-lien Agilefant de l'en-tête ---- */
#footerText { display: none; }
#headerDiv a { display: none; }

/* ---- Encarts « Note ! » (classe warning-note : Daily Work, pages d'administration) : carte d'information douce
   à la place du jaune vif d'origine ---- */
.warning-note {
  width: auto;
  margin: .8em .3em;
  padding: .9em 1.2em;
  border: 1px solid #acc4e1;
  border-left: 4px solid #3f72af;
  border-radius: 10px;
  background: #eef3fa;
  color: #2f3352;
  line-height: 1.45;
  box-shadow: 0 4px 14px rgba(60, 53, 125, .08);
}
.warning-note strong { color: #3c357d; }
.warning-note a { color: #3f6dab !important; }   /* lien « What is Daily Work? » : couleur codée en dur dans la page */
.warning-note a:hover { color: #4a7d63 !important; }

/* ---- Formulaires (Timesheets, administration… : tables .formTable) et page de connexion : codes modernes.
   Volontairement limité à ces zones : les champs d'édition en ligne des tableaux dynamiques gardent leur taille. ---- */
.formTable { border-collapse: separate; border-spacing: 0 .55em; margin-top: .2em; }
.formTable > tbody > tr > td:first-child {
  padding: .5em 1.4em 0 0;
  vertical-align: top;
  white-space: nowrap;
  color: #5f668a;
  font-weight: 600;
}
#subItems { padding: .4em 1em 1em; }
#subItemHeader td.header { padding: .4em 0 .2em; color: #3c357d; font-size: 1.05em; font-weight: 700; }
#advancedBacklogs { margin-bottom: .4em; }

.formTable input[type="text"], .formTable input[type="search"], .formTable input[type="password"],
.formTable select, .formTable textarea,
#login input[type="text"], #login input[type="password"] {
  box-sizing: border-box;
  padding: .45em .7em;
  border: 1px solid #acc4e1;
  border-radius: 8px;
  background: #fff;
  color: #2f3352;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}
.formTable input:focus, .formTable select:focus, .formTable textarea:focus,
#login input[type="text"]:focus, #login input[type="password"]:focus {
  border-color: #3f72af;
  box-shadow: 0 0 0 3px rgba(63, 114, 175, .18);
}
.formTable select { padding-right: 1.6em; }
.formTable select[multiple] { min-width: 24em; min-height: 14em; padding: .35em; }
.formTable select[multiple] option { padding: .25em .6em; border-radius: 5px; }
.formTable select[multiple] option:checked { background: #3c357d linear-gradient(0deg, #3c357d, #3c357d); color: #fff; }
.formTable input[type="checkbox"], #login input[type="checkbox"] {
  width: 1.05em; height: 1.05em; margin: 0 .5em 0 0; vertical-align: -.1em; accent-color: #3c357d;
}

/* Boutons : pilule indigo (action principale), pilule blanche cerclée (actions secondaires) */
.formTable input[type="submit"]:not(.dynamics-button), .formTable input[type="button"]:not(.dynamics-button),
.formTable button:not(.dynamics-button), #login input[type="submit"] {
  padding: .5em 1.3em;
  margin: .2em .6em 0 0;
  border: 1px solid #3c357d;
  border-radius: 999px;
  background: #3c357d;
  color: #fff;
  font-weight: 600;
  cursor: pointer;
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.formTable input[type="submit"]:not(.dynamics-button):hover, .formTable button:not(.dynamics-button):hover,
#login input[type="submit"]:hover { background: #2b2660; border-color: #2b2660; }
.formTable input[type="submit"]:focus-visible, #login input[type="submit"]:focus-visible { box-shadow: 0 0 0 3px rgba(60, 53, 125, .25); }
.formTable input[type="submit"][name^="action:"] {
  background: #fff;
  color: #3c357d;
}
.formTable input[type="submit"][name^="action:"]:hover { background: #eef3fa; color: #2b2660; }

/* ---- Champs et boutons : style étendu à toute l'application (demande du 11/10) ----
   Base commune pour tous les champs de saisie (sélecteur de semaine, « daily work of », dialogues, administration…),
   sauf la recherche rapide (loupe intégrée) qui garde son habillage. */
select:not(.ui-autocomplete-input), textarea,
input[type="text"]:not(.ui-autocomplete-input):not(.searchByText),
input[type="password"], input[type="number"], input[type="search"]:not(.ui-autocomplete-input) {
  box-sizing: border-box;
  padding: .3em .55em;
  border: 1px solid #acc4e1;
  border-radius: 7px;
  background: #fff;
  color: #2f3352;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
}
select:not(.ui-autocomplete-input):focus, textarea:focus,
input[type="text"]:not(.ui-autocomplete-input):focus, input[type="password"]:focus,
input[type="number"]:focus, input[type="search"]:not(.ui-autocomplete-input):focus {
  border-color: #3f72af;
  box-shadow: 0 0 0 3px rgba(63, 114, 175, .18);
}
input[type="checkbox"], input[type="radio"] { accent-color: #3c357d; }

/* Édition en ligne des tableaux (dynamics-editor-element : largeur calculée par le JavaScript, d'où box-sizing) */
.dynamics-editor-element { box-sizing: border-box; padding: .25em .5em; border-radius: 6px; }
.dynamics-validation-invalid input, .dynamics-validation-invalid select, input.validation-error {
  border-color: #c55; background-color: #fff1f1; box-shadow: 0 0 0 3px rgba(204, 85, 85, .15);
}

/* Boutons des tableaux (Save, Cancel, edit…) : pilules compactes ; Save en indigo plein */
input.dynamics-button, button.dynamics-button, .actionColumn .edit {
  box-sizing: border-box;
  height: auto !important;
  min-height: 0;
  padding: .3em .9em;
  border: 1px solid #acc4e1;
  border-radius: 999px;
  background: #fff;
  color: #3c357d;
  font-weight: 600;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
input.dynamics-button:hover, input.dynamics-button:focus, button.dynamics-button:hover, button.dynamics-button:focus,
.actionColumn .edit:hover { background: #eef3fa; border-color: #3f72af; color: #2b2660; }
input.dynamics-button[value="Save"], input.dynamics-button[value="Create"], input.dynamics-button[value="OK"],
input.dynamics-button[value="Done"] { background: #3c357d; border-color: #3c357d; color: #fff; }
input.dynamics-button[value="Save"]:hover, input.dynamics-button[value="Create"]:hover, input.dynamics-button[value="OK"]:hover,
input.dynamics-button[value="Done"]:hover { background: #2b2660; border-color: #2b2660; color: #fff; }

/* Boutons des bandeaux (Create task, Create story, Expand all…) */
li.dynamictable-captionaction {
  background: #fff !important;
  border: 1px solid #acc4e1;
  border-radius: 999px;
  color: #3c357d;
  font-weight: 600;
  padding: 2px 10px 2px 6px !important;
}
li.dynamictable-captionaction:hover { background: #eef3fa !important; border-color: #3f72af; color: #2b2660; }

/* En-têtes de colonnes des tableaux : coins arrondis, texte indigo */
.dynamictable-header { border-radius: 6px; color: #3c357d; }

/* Sélecteur de semaine (Spent effort) et ses flèches */
.listTable select { font-weight: 600; }
.spentEffortArrow a { color: #3f6dab; font-size: 1.2em; padding: 0 .3em; }
.spentEffortArrow a:hover { color: #4a7d63; }

/* ---- Correctifs tableaux (11/10) ----
   Bouton Edit des lignes : largeur fixe de 2,8em à l'origine, incompatible avec la marge intérieure des pilules */
.actionColumn .edit {
  width: auto;
  min-width: 2.8em;
  padding: .1em .5em;
  font-size: 80%;
  line-height: 1.4;
  display: inline-block;
}
/* Badges de statut (Not Started, Started, Done…) : pilules centrées dans la colonne, fond teinté + texte coloré +
   point de couleur, dans la palette Paxia. Sémantique conservée : neutre, texte en dégradé animé (en cours),
   indigo (en attente), rouge foncé plein (bloqué), vert clair (prêt), vert plein (terminé), encre (reporté). */
.taskState, .storyState {
  display: block;
  box-sizing: border-box;
  width: fit-content;
  min-width: 0;
  margin: 1px auto;
  padding: 2px 10px 2px 8px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 80%;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1.5;
  white-space: nowrap;
  text-align: center;
}
.taskState::before, .storyState::before {
  content: "";
  display: inline-block;
  width: .55em;
  height: .55em;
  margin-right: .5em;
  border-radius: 50%;
  background: currentColor;
  vertical-align: .05em;
  opacity: .85;
}
.taskStateNOT_STARTED, .storyStateNOT_STARTED { background: #eef1f6; border-color: #d9dfea; color: #5f668a; }
.taskStatePENDING,     .storyStatePENDING     { background: #e9e7f4; border-color: #cfcbe6; color: #3c357d; }
.taskStateBLOCKED,     .storyStateBLOCKED     { background: #8b1a1a; border-color: #6b1111; color: #fff; }
.taskStateIMPLEMENTED, .storyStateIMPLEMENTED { background: #e6f1e9; border-color: #c5ddcc; color: #3f6b55; }
.taskStateDONE,        .storyStateDONE        { background: #4a7d63; border-color: #4a7d63; color: #fff; }
.taskStateDEFERRED,    .storyStateDEFERRED    { background: #2f3352; border-color: #2f3352; color: #fff; }
.taskStateDONE::before, .storyStateDONE::before, .taskStateDEFERRED::before, .storyStateDEFERRED::before,
.taskStateBLOCKED::before, .storyStateBLOCKED::before { opacity: .7; }
/* Started (demande du 11/10) : fond neutre, texte en dégradé indigo -> bleu -> vert qui défile en continu pour dire
   « en cours », point bleu qui pulse au même rythme. Deux calques de fond : le dégradé, découpé sur les lettres
   (background-clip: text), au-dessus d'un calque blanc découpé sur la pilule (une ombre intérieure ne convient pas :
   elle se dessine par-dessus les fonds et masquerait le texte).
   Dégradé périodique (même couleur aux deux bouts) sur une image de 2 largeurs, décalée d'exactement une période par
   cycle : boucle sans à-coup. Désactivé si l'utilisateur a demandé moins d'animations (prefers-reduced-motion). */
.taskStateSTARTED, .storyStateSTARTED {
  background-image: linear-gradient(90deg, #3c357d 0%, #3f72af 25%, #4a7d63 50%, #3f72af 75%, #3c357d 100%),
                    linear-gradient(#fff, #fff);
  background-size: 200% 100%, auto;
  background-repeat: repeat, no-repeat;
  -webkit-background-clip: text, padding-box;
  background-clip: text, padding-box;
  color: transparent;
  border-color: #3f72af;
  animation: paxia-started-flow 2.4s linear infinite;
}
.taskStateSTARTED::before, .storyStateSTARTED::before {
  background: #3f72af;
  animation: paxia-started-pulse 1.2s ease-in-out infinite;
}
@keyframes paxia-started-flow { from { background-position: 0 0, 0 0; } to { background-position: -200% 0, 0 0; } }
@keyframes paxia-started-pulse { 0%, 100% { opacity: .5; transform: scale(.85); } 50% { opacity: 1; transform: scale(1.15); } }
@media (prefers-reduced-motion: reduce) {
  .taskStateSTARTED, .storyStateSTARTED, .taskStateSTARTED::before, .storyStateSTARTED::before { animation: none; }
}

/* ---- Pictogrammes (demande du 11/10) : icônes Material Design (person, group, folder) en SVG bleu palette,
   static/img/{users,team,backlog}.svg. L'autocomplétion (choix d'utilisateur, d'équipe, de backlog) les charge en
   fond ; les PNG 16x16 de même nom, utilisés par les balises img des onglets (Workload, Iterations, Projects,
   Backlogs) et du choix d'assigné des Timesheets, sont régénérés à partir des mêmes SVG dans l'overlay. ---- */
.autocomplete-suggestionIcon { background-repeat: no-repeat; background-position: center; background-size: 16px 16px; margin-top: .15em; }
.autocomplete-userIcon { background-image: url(../img/users.svg); }
.autocomplete-teamIcon { background-image: url(../img/team.svg); }
.autocomplete-backlogIcon { background-image: url(../img/backlog.svg); }
/* Onglets principaux (balises img des JSP : dailyWork, backlog, timesheets, portfolio, settings = Material speed,
   folder, schedule, work, settings) et boutons OK/annuler des étiquettes (ok, cancel = Material check vert, close
   rouge) : mêmes PNG 16x16 régénérés depuis les SVG de l'overlay. Cadre des boutons OK/annuler dans la palette. */
.label-ok, .label-cancel { border: 1px solid #acc4e1; border-radius: 6px; background-color: #fff; transition: background-color .15s, border-color .15s; }
.label-ok:hover { background-color: #e6f1e9; border-color: #4a7d63; }
.label-cancel:hover { background-color: #fbe9e7; border-color: #a63d35; }

/* ---- Demandes du 11/10 (soir) ----
   Bouton de bandeau n° 2 de la page (le JS numérote les boutons « dynamictable-caption-item-<n> » par id, dans l'ordre
   de création sur la page, n à partir de 0) : élargi de 105 à 125 px pour que son libellé ne déborde pas. */
#dynamictable-caption-item-1 { width: 125px; }
/* Lien « Register » de l'en-tête droit : retiré dans l'overlay WEB-INF/tags/structure/defaultRightHeader.tag
   (lien et séparateur « | »), pas de CSS. */
/* Tableaux d'administration (équipes, utilisateurs) : lignes sur le bleu très pâle de la palette */
.administration-team-table .dynamictable-row, .administration-user-table .dynamictable-row { background: #f6f8fc; }
