[data-portfolio-personal-list] article,
[data-portfolio-public-list] article {
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

[data-portfolio-personal-list] article:hover,
[data-portfolio-public-list] article:hover {
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.05);
}

.portfolio-load-dialog {
  overflow: hidden;
}

.highcharts-fullscreen,
.highcharts-fullscreen-open,
.highcharts-fullscreen-open body {
  background-color: #ffffff !important;
}

:fullscreen {
  background-color: #ffffff !important;
}

:-webkit-full-screen {
  background-color: #ffffff !important;
}

:-moz-full-screen {
  background-color: #ffffff !important;
}

.portfolio-load-inner {
  position: relative;
  max-height: 90vh;
  overflow-y: auto;
  padding-right: 0.75rem;
  box-sizing: border-box;
  padding-bottom: 1.5rem;
}

/* Fichier généré par Tailwind CSS (sortie compilée). */

/* Bouton officiel Google Identity (gsi-material-button) - styles minimaux adaptés */
.gsi-material-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  border-radius: 9999px;
  border: 1px solid #dadce0;
  background-color: #fff;
  color: #3c4043;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.25rem;
  padding: 0.5rem 1.25rem;
  cursor: pointer;
  box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);
}

.gsi-material-button:hover {
  background-color: #f8f9fa;
}

.gsi-material-button:focus-visible {
  outline: 2px solid #22c55e;
  outline-offset: 2px;
}

.gsi-material-button-content-wrapper {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}

.gsi-material-button-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.gsi-material-button svg {
  width: 18px;
  height: 18px;
}

.gsi-material-button-contents {
  white-space: nowrap;
}

/* Drapeaux (autocomplete, réutilisable dans toute l'appli) */
.flag {
  display: inline-block;
  width: 16px;
  height: 16px;
  border-radius: 9999px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

.flag-fr { background-image: url("/static/img/flags/fr.svg"); }
.flag-de { background-image: url("/static/img/flags/de.svg"); }
.flag-it { background-image: url("/static/img/flags/it.svg"); }
.flag-nl { background-image: url("/static/img/flags/nl.svg"); }
.flag-be { background-image: url("/static/img/flags/be.svg"); }
.flag-ch { background-image: url("/static/img/flags/ch.svg"); }
.flag-ie { background-image: url("/static/img/flags/ie.svg"); }
.flag-lu { background-image: url("/static/img/flags/lu.svg"); }
.flag-us { background-image: url("/static/img/flags/us.svg"); }
.flag-es { background-image: url("/static/img/flags/es.svg"); }
.flag-pt { background-image: url("/static/img/flags/pt.svg"); }
.flag-no { background-image: url("/static/img/flags/no.svg"); }
.flag-gb { background-image: url("/static/img/flags/gb.svg"); }
.flag-eu { background-image: url("/static/img/flags/eu.svg"); }
.flag-se { background-image: url("/static/img/flags/se.svg"); }
.flag-world { background-image: url("/static/img/flags/world.svg"); }
.flag-pl { background-image: url("/static/img/flags/pl.svg"); }
.flag-fi { background-image: url("/static/img/flags/fi.svg"); }
.flag-dk { background-image: url("/static/img/flags/dk.svg"); }
.flag-at { background-image: url("/static/img/flags/at.svg"); }
.flag-jp { background-image: url("/static/img/flags/jp.svg"); }
.flag-ca { background-image: url("/static/img/flags/ca.svg"); }

/* Icônes (heroicons) pour les actions de portefeuille sur la page backtest */
.icon {
  display: inline-block;
  width: 14px;
  height: 14px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.icon-portfolio-rename {
  -webkit-mask-image: url("/static/img/icons/portfolio-rename.svg");
  mask-image: url("/static/img/icons/portfolio-rename.svg");
}

.icon-portfolio-load {
  -webkit-mask-image: url("/static/img/icons/portfolio-load.svg");
  mask-image: url("/static/img/icons/portfolio-load.svg");
}

.icon-portfolio-reset {
  -webkit-mask-image: url("/static/img/icons/portfolio-reset.svg");
  mask-image: url("/static/img/icons/portfolio-reset.svg");
}

.icon-portfolio-copy {
  -webkit-mask-image: url("/static/img/icons/portfolio-copy.svg");
  mask-image: url("/static/img/icons/portfolio-copy.svg");
}

.asset-reset-btn {
  border: 0;
  background: transparent;
  box-shadow: none;
  transition: background-color 0.2s ease;
}

.asset-reset-btn:hover {
  background-color: rgba(15, 23, 42, 0.08);
}

.asset-reset-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.35);
}

.asset-spinner {
  animation: spinner-rotate 800ms linear infinite;
}

.asset-spinner:not(.hidden) {
  display: inline-block;
}

.modal-loading-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  border-radius: 26px;
  background-color: rgba(255, 255, 255, 0.8);
  backdrop-filter: blur(4px);
  pointer-events: auto;
}

.modal-loading-overlay:not(.hidden) {
  display: flex;
  align-items: center;
  justify-content: center;
}

.modal-loading-spinner {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  border: 3px solid rgba(15, 23, 42, 0.15);
  border-top-color: #6366f1;
  border-left-color: #6366f1;
  animation: spinner-rotate 700ms linear infinite;
}

@keyframes spinner-rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.icon-save {
  -webkit-mask-image: url("/static/img/icons/save.svg");
  mask-image: url("/static/img/icons/save.svg");
}

.icon-save-sm {
  width: 0.7rem;
  height: 0.7rem;
}

/* Icônes dans le menu contextuel Highcharts */
.highcharts-contextmenu .highcharts-menu-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.35rem 0.9rem;
}

.highcharts-contextmenu .highcharts-menu-item::before {
  content: "";
  display: inline-block;
  width: 1rem;
  height: 1rem;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(1)::before {
  opacity: 1;
  -webkit-mask-image: url("/static/img/icons/fullscreen.svg");
  mask-image: url("/static/img/icons/fullscreen.svg");
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(2)::before {
  opacity: 1;
  -webkit-mask-image: url("/static/img/icons/download-png.svg");
  mask-image: url("/static/img/icons/download-png.svg");
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(3)::before {
  opacity: 1;
  -webkit-mask-image: url("/static/img/icons/download-csv.svg");
  mask-image: url("/static/img/icons/download-csv.svg");
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(1) {
  color: #0f172a;
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(2) {
  color: #0f172a;
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(3) {
  color: #0f172a;
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(1)::before {
  background-color: #4f46e5;
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(2)::before {
  background-color: #059669;
}

.highcharts-contextmenu .highcharts-menu-item:nth-child(3)::before {
  background-color: #d97706;
}

.highcharts-contextmenu .highcharts-menu-item.highcharts-menu-item-disabled,
.highcharts-contextmenu .highcharts-menu-item.shp-highcharts-download-disabled {
  color: #94a3b8;
  cursor: not-allowed;
  opacity: 0.75;
}

.highcharts-contextmenu .highcharts-menu-item.highcharts-menu-item-disabled::before,
.highcharts-contextmenu .highcharts-menu-item.shp-highcharts-download-disabled::before {
  background-color: #94a3b8;
  opacity: 0.5;
}

.highcharts-contextmenu .highcharts-menu-item.shp-highcharts-download-disabled::after {
  content: "";
  display: inline-flex;
  width: 1rem;
  height: 1rem;
  margin-left: auto;
  background-color: currentColor;
  color: inherit;
  -webkit-mask-image: url("/static/img/icons/padlock.svg");
  mask-image: url("/static/img/icons/padlock.svg");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  opacity: inherit;
  filter: none;
  mix-blend-mode: normal;
}

/* Les en-têtes/pieds des tableaux d'allocation respectent les coins arrondis du cadre */
[data-portfolio-rows] > :first-child,
[data-optimisation-assets-container] > :first-child,
[data-mc-assets-container] > :first-child {
  border-top-left-radius: 1rem;
  border-top-right-radius: 1rem;
}

[data-portfolio-rows] > :last-child,
[data-optimisation-assets-container] > :last-child,
[data-mc-assets-container] > :last-child {
  border-bottom-left-radius: 1rem;
  border-bottom-right-radius: 1rem;
}

[data-portfolio-rows] > .grid > :first-child {
  text-align: center;
}

.portfolio-panel {
  --portfolio-focus-color: #6366f1;
  --portfolio-hover-bg: #eef2ff;
}

.portfolio-panel-2 {
  --portfolio-focus-color: #059669;
  --portfolio-hover-bg: #ecfdf5;
}

.portfolio-panel-3 {
  --portfolio-focus-color: #0ea5e9;
  --portfolio-hover-bg: #e0f2fe;
}

.portfolio-panel [data-asset-autocomplete-input]:is(:focus-visible, :focus) {
  border-color: var(--portfolio-focus-color);
  --tw-ring-color: var(--portfolio-focus-color);
}

.portfolio-panel .portfolio-weight-group:focus-within {
  border-color: var(--portfolio-focus-color);
  --tw-ring-color: var(--portfolio-focus-color);
}

.portfolio-panel [data-asset-spinner] {
  border-color: var(--portfolio-focus-color);
  border-top-color: transparent;
}

.portfolio-accent-btn {
  color: #475569;
  background-color: transparent;
  transition: color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
}

.portfolio-accent-btn:hover {
  color: var(--portfolio-focus-color, #475569);
  background-color: var(--portfolio-hover-bg, #eef2ff);
}

.portfolio-accent-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--portfolio-focus-color, #6366f1);
}

.asset-reset-btn:hover {
  color: #475569;
  background-color: #f1f5f9;
}

/* Les radios stylisées de type "pill" laissent le label gérer l’interaction */
label.group input[type="radio"] {
  pointer-events: none;
}


