/* Toggle clair/sombre commun au site public et au portail client. */
.color-theme-toggle {
  display: inline-flex;
  width: 3.5rem;
  height: 2.75rem;
  flex: 0 0 3.5rem;
  align-items: center;
  justify-content: center;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.color-theme-toggle__track {
  position: relative;
  display: block;
  width: 3.25rem;
  height: 1.875rem;
  border: 1px solid rgb(75 98 128 / .28);
  border-radius: 999px;
  background: #dbe4f0;
  box-shadow: inset 0 1px 2px rgb(15 35 65 / .08);
  transition: background-color 180ms ease, border-color 180ms ease, transform 100ms ease-out;
}

.color-theme-toggle__thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  display: grid;
  width: 1.5rem;
  height: 1.5rem;
  place-items: center;
  border-radius: 50%;
  background: #fff;
  color: #9a6300;
  box-shadow: 0 2px 5px rgb(15 35 65 / .22);
  transform: translateX(0);
  transition: color 180ms ease, transform 220ms cubic-bezier(.2, .82, .24, 1);
}

.color-theme-toggle__icon { display: block; grid-area: 1 / 1; pointer-events: none; }
.color-theme-toggle__icon--dark { display: none; }

.color-theme-toggle[aria-checked="true"] .color-theme-toggle__track {
  border-color: #1459c7;
  background: #1459c7;
}

.color-theme-toggle[aria-checked="true"] .color-theme-toggle__thumb {
  color: #1459c7;
  transform: translateX(1.375rem);
}

.color-theme-toggle[aria-checked="true"] .color-theme-toggle__icon--light { display: none; }
.color-theme-toggle[aria-checked="true"] .color-theme-toggle__icon--dark { display: block; }
.color-theme-toggle:hover .color-theme-toggle__track { border-color: #6f8caf; }
.color-theme-toggle:active .color-theme-toggle__track { transform: scale(.96); }
.color-theme-toggle:focus-visible { outline: 0; }
.color-theme-toggle:focus-visible .color-theme-toggle__track {
  box-shadow: 0 0 0 3px rgb(20 89 199 / .3), inset 0 1px 2px rgb(15 35 65 / .08);
}

html.theme-dark .color-theme-toggle:hover .color-theme-toggle__track { border-color: #89b8ff; }

.topbar-site-return {
  display: inline-flex;
  min-height: 2.25rem;
  align-items: center;
  gap: .45rem;
  padding: 0 .7rem;
  border: 1px solid var(--apple-separator, var(--border));
  border-radius: 999px;
  color: var(--apple-secondary, var(--muted));
  background: var(--apple-surface-muted, var(--card2));
  font-size: .76rem;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 140ms ease, color 140ms ease, background-color 140ms ease, transform 100ms ease-out;
}

.topbar-site-return:hover,
.topbar-site-return:focus-visible {
  border-color: color-mix(in srgb, var(--apple-blue, var(--accent)) 45%, transparent);
  color: var(--apple-blue, var(--accent));
  background: var(--apple-blue-soft, var(--accent-weak));
  text-decoration: none;
}

.topbar-site-return:active { transform: scale(.97); }
.topbar-site-return > svg { flex: 0 0 auto; }

.sidebar-site-admin-form,
.topbar-account-site-admin { margin: 0; }

.sidebar-site-admin-form .platform-leftmenu-link {
  width: 100%;
  border: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.topbar-account-utilities {
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-top: 1px solid var(--apple-separator, var(--border));
}

.topbar-account-utility,
.topbar-account-site-admin button {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  width: 100%;
  min-height: 42px;
  padding: 7px 8px;
  border: 0;
  border-radius: 10px;
  color: var(--apple-text, var(--text));
  background: transparent;
  font: inherit;
  font-size: .79rem;
  font-weight: 650;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}

.topbar-account-utility:hover,
.topbar-account-site-admin button:hover {
  color: var(--apple-blue, var(--accent));
  background: var(--apple-surface-muted, var(--card2));
  text-decoration: none;
}

.topbar-account-utility > i:last-child,
.topbar-account-site-admin button > i:last-child {
  color: var(--apple-tertiary, var(--muted));
  font-size: .62rem;
}

.workspace-login-actions {
  position: fixed;
  z-index: 10;
  top: max(14px, env(safe-area-inset-top));
  right: max(16px, env(safe-area-inset-right));
  display: flex;
  align-items: center;
  gap: 6px;
}

.workspace-login-actions .topbar-site-return {
  background: var(--apple-surface, var(--card));
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

@media (max-width: 900px) {
  .topbar-site-return span { display: none; }
  .topbar-site-return { width: 2.5rem; padding: 0; justify-content: center; }
}

@media (max-width: 640px) {
  .portal-space-tabs + .topbar-spacer + .topbar-actions > .topbar-site-return { display: none; }
}

@media (max-width: 480px) {
  .workspace-location { display: none; }
  .workspace-login-actions { top: 10px; right: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .color-theme-toggle__track,
  .color-theme-toggle__thumb,
  .topbar-site-return { transition: none; }
  .color-theme-toggle:active .color-theme-toggle__track,
  .topbar-site-return:active { transform: none; }
}

/* Révélation du thème depuis le toggle, identique au site public. */
::view-transition { pointer-events: none; }

::view-transition-old(root),
::view-transition-new(root) {
  animation: none;
  mix-blend-mode: normal;
}

::view-transition-old(root) { z-index: 1; }
::view-transition-new(root) { z-index: 2; }

html.theme-view-transition *,
html.theme-view-transition *::before,
html.theme-view-transition *::after {
  transition: none !important;
}

html.theme-transition-fallback,
html.theme-transition-fallback body,
html.theme-transition-fallback body *,
html.theme-transition-fallback body *::before,
html.theme-transition-fallback body *::after {
  transition-property: color, background-color, border-color, box-shadow, fill, stroke, opacity !important;
  transition-duration: 220ms !important;
  transition-timing-function: cubic-bezier(.2, .82, .24, 1) !important;
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) { animation-duration: .01ms !important; }
}
