/* Account/workspace chrome. Built entirely from the shared DT neumorphic
   tokens so the control has equal contrast and depth in both themes. */
.account-menu {
    position: relative;
    z-index: var(--neu-z-tooltip);
    flex: 0 0 auto;
    min-width: 0;
    color: var(--neu-text);
    font-family: var(--neu-font-sans);
    font-size: var(--neu-text-sm);
}

/* Audited global-to-partner context remains visible across every shared shell. */
.role-home-context-banner,
.role-home-context-banner * { box-sizing: border-box; }

.role-home-context-banner ::selection {
  background: var(--neu-solid, #e4e4df);
  color: var(--neu-solid-on, #171716);
}

.role-home-context-banner {
  position: relative;
  z-index: 20;
  display: flex;
  min-height: 4.6rem;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .7rem clamp(1rem, 2vw, 1.5rem);
  border-bottom: 1px solid var(--neu-line-strong);
  background: var(--neu-surface-sunken);
  color: var(--neu-text);
  font-family: var(--neu-font-sans, Inter, sans-serif);
}

.dt-admin-shell .role-home-context-banner {
  position: fixed;
  top: var(--app-topbar-h, 4.25rem);
  right: 0;
  left: var(--app-sidebar-w, 17.5rem);
  z-index: calc(var(--neu-z-sidebar, 200) - 1);
}

.role-home-context-banner__copy {
  display: grid;
  min-width: 0;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .7rem;
}

.role-home-context-banner__copy > .material-icons {
  color: var(--neu-text-strong);
  font-size: 1.3rem;
}

.role-home-context-banner h2,
.role-home-context-banner p { margin: 0; }
.role-home-context-banner h2 { color: var(--neu-text-strong); font-size: .86rem; letter-spacing: -.01em; }
.role-home-context-banner p { max-width: 75ch; margin-top: .16rem; color: var(--neu-text-muted); font-size: .7rem; }
.role-home-context-banner__actions {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: .5rem;
}
.role-home-context-banner__actions form { margin: 0; }
.role-home-context-banner__actions a,
.role-home-context-banner__actions button {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  border: 1px solid var(--neu-line-strong);
  border-radius: var(--neu-r-sm);
  padding: .55rem .75rem;
  background: transparent;
  color: var(--neu-text-strong);
  font: inherit;
  font-size: .74rem;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.role-home-context-banner__actions a:hover,
.role-home-context-banner__actions button:hover { background: var(--neu-surface); }
.role-home-context-banner__actions a:focus-visible,
.role-home-context-banner__actions button:focus-visible {
  outline: 3px solid var(--neu-focus, currentColor);
  outline-offset: 3px;
}
.dt-admin-shell .role-home-context-banner ~ .main {
  top: calc(var(--app-topbar-h, 4.25rem) + 4.6rem);
}

@media (max-width: 860px) {
  .dt-admin-shell .role-home-context-banner { left: 0; }
}

@media (max-width: 720px) {
  .role-home-context-banner { align-items: stretch; flex-direction: column; min-height: 8.4rem; }
  .role-home-context-banner__actions { justify-content: flex-start; }
  .dt-admin-shell .role-home-context-banner ~ .main {
    top: calc(var(--app-topbar-h, 4.25rem) + 8.4rem);
  }
}

@media (max-width: 420px) {
  .role-home-context-banner p { font-size: .66rem; }
}

@media (prefers-reduced-motion: reduce) {
  .role-home-context-banner *,
  .role-home-context-banner *::before,
  .role-home-context-banner *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
  }
}

.account-menu__trigger {
    display: inline-flex;
    align-items: center;
    gap: var(--neu-sp-2);
    max-width: min(18rem, 34vw);
    min-height: 2.75rem;
    padding: var(--neu-sp-1) var(--neu-sp-2);
    border: 1px solid transparent;
    border-radius: var(--neu-r-md);
    background: transparent;
    box-shadow: none;
    color: var(--neu-text);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: color var(--neu-dur-2) var(--neu-ease),
                background-color var(--neu-dur-2) var(--neu-ease),
                box-shadow var(--neu-dur-2) var(--neu-ease),
                transform var(--neu-dur-2) var(--neu-ease);
    list-style: none;
}
.account-menu__trigger::-webkit-details-marker { display: none; }
.account-menu__trigger:hover { background: var(--neu-accent-soft); color: var(--neu-text-strong); box-shadow: none; }
.account-menu__trigger:active,
.account-menu[data-open='true'] .account-menu__trigger,
.account-menu[open]:not([data-account-menu-bound='true']) .account-menu__trigger { background: var(--neu-surface-sunken); box-shadow: var(--neu-press-xs); transform: translateY(1px); }
.account-menu__trigger:focus-visible { outline: 0; box-shadow: var(--neu-ring); }
.account-menu__avatar {
    display: grid;
    width: 2rem;
    height: 2rem;
    flex: 0 0 2rem;
    place-items: center;
    border-radius: var(--neu-r-circle);
    background: transparent;
    box-shadow: none;
    color: var(--neu-text-strong);
    font-size: 1.25rem;
}
.account-menu__trigger-copy { display: grid; min-width: 0; text-align: left; line-height: var(--neu-leading-tight); }
.account-menu__trigger-copy small {
    color: var(--neu-text-subtle);
    font-size: var(--neu-text-2xs);
    font-weight: var(--neu-weight-medium);
    letter-spacing: var(--neu-tracking-wide);
    text-transform: uppercase;
}
.account-menu__trigger-copy strong { overflow: hidden; color: var(--neu-text-strong); text-overflow: ellipsis; white-space: nowrap; }
.account-menu__chevron { margin-left: var(--neu-sp-1); color: var(--neu-text-faint); font-size: 1.1rem; transition: transform var(--neu-dur-2) var(--neu-ease); }
.account-menu[data-open='true'] .account-menu__chevron,
.account-menu[open]:not([data-account-menu-bound='true']) .account-menu__chevron { transform: rotate(180deg); }

.account-menu__panel {
    position: absolute;
    top: calc(100% + var(--neu-sp-3));
    right: 0;
    z-index: var(--neu-z-tooltip);
    width: min(24rem, calc(100vw - var(--neu-sp-4)));
    max-height: min(42rem, calc(100vh - 5.5rem));
    padding: var(--neu-sp-3);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    border: 1px solid var(--neu-line);
    border-radius: var(--neu-r-xl);
    background: var(--neu-surface);
    box-shadow: var(--neu-float-lg);
    color: var(--neu-text);
    opacity: 0;
    visibility: hidden;
    transform: translateY(calc(-1 * var(--neu-sp-2))) scale(.985);
    transform-origin: top right;
    pointer-events: none;
    transition: opacity var(--neu-dur-2) var(--neu-ease-out),
                transform var(--neu-dur-2) var(--neu-ease-out),
                visibility 0s linear var(--neu-dur-2);
}
.account-menu[data-open='true'] .account-menu__panel,
.account-menu[open]:not([data-account-menu-bound='true']) .account-menu__panel {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) scale(1);
    pointer-events: auto;
    transition-delay: 0s;
}

.account-menu__identity {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: var(--neu-sp-3);
    margin-bottom: var(--neu-sp-2);
    padding: var(--neu-sp-3);
    border-radius: var(--neu-r-lg);
    background: var(--neu-surface-sunken);
    box-shadow: var(--neu-press-sm);
}
.account-menu__identity > .material-symbols-outlined { color: var(--neu-text-strong); font-size: 1.65rem; }
.account-menu__identity > span:last-child { display: grid; min-width: 0; }
.account-menu__identity strong,
.account-menu__identity small,
.account-menu__workspace strong,
.account-menu__workspace small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-menu__identity strong { color: var(--neu-text-strong); font-size: var(--neu-text-md); }
.account-menu__identity small,
.account-menu__workspace small { color: var(--neu-text-muted); font-size: var(--neu-text-2xs); }

.account-menu__section-label {
    margin: var(--neu-sp-3) var(--neu-sp-2) var(--neu-sp-1);
    color: var(--neu-text-faint);
    font-size: var(--neu-text-2xs);
    font-weight: var(--neu-weight-semi);
    letter-spacing: var(--neu-tracking-caps);
    text-transform: uppercase;
}
.account-menu__workspaces,
.account-menu__language { display: grid; min-width: 0; gap: var(--neu-sp-1); }
.account-menu__workspaces { grid-template-columns: minmax(0, 1fr); }
.account-menu__workspaces form { min-width: 0; margin: 0; }
.account-menu__item {
    display: flex;
    align-items: center;
    gap: var(--neu-sp-3);
    width: 100%;
    min-height: 44px;
    padding: var(--neu-sp-2) var(--neu-sp-3);
    border: 0;
    border-radius: var(--neu-r-md);
    background: transparent;
    box-shadow: none;
    color: var(--neu-text-muted);
    font: inherit;
    font-weight: var(--neu-weight-medium);
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: color var(--neu-dur-1) var(--neu-ease),
                background var(--neu-dur-1) var(--neu-ease),
                box-shadow var(--neu-dur-1) var(--neu-ease);
}
.account-menu__item:hover:not(:disabled) { background: var(--neu-accent-soft); color: var(--neu-text-strong); }
.account-menu__item:active:not(:disabled) { background: var(--neu-surface-sunken); box-shadow: var(--neu-press-xs); }
.account-menu__item:focus-visible { outline: 0; box-shadow: var(--neu-ring); color: var(--neu-text-strong); }
.account-menu__item > .material-symbols-outlined { flex: 0 0 auto; color: currentColor; font-size: 1.2rem; }
.account-menu__workspace { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; min-height: 3.25rem; }
.account-menu__workspace > span:nth-child(2) { display: grid; min-width: 0; }
.account-menu__workspace strong { color: var(--neu-text-strong); font-size: var(--neu-text-sm); }
.account-menu__workspace[data-switching='true'] {
    background: var(--neu-surface-sunken);
    box-shadow: var(--neu-press-sm);
    color: var(--neu-text-strong);
    cursor: progress;
    opacity: 1;
}
.account-menu__switch-status {
    min-height: 1.05rem;
    margin: var(--neu-sp-1) var(--neu-sp-2) 0;
    overflow: hidden;
    color: var(--neu-text-muted);
    font-size: var(--neu-text-2xs);
    line-height: var(--neu-leading-snug);
    opacity: 0;
    text-overflow: ellipsis;
    transform: translateY(-2px);
    white-space: nowrap;
    transition: opacity var(--neu-dur-2) var(--neu-ease-out),
                transform var(--neu-dur-2) var(--neu-ease-out);
}
.account-menu__switch-status[data-visible='true'] { opacity: 1; transform: translateY(0); }
.account-menu__workspace.is-current {
    background: var(--neu-surface-sunken);
    box-shadow: var(--neu-press-sm);
    color: var(--neu-text-strong);
    cursor: default;
    opacity: 1;
}
.account-menu__current {
    min-width: 0;
    overflow: hidden;
    padding: .2rem var(--neu-sp-2);
    border-radius: var(--neu-r-pill);
    background: var(--neu-surface-raised);
    box-shadow: var(--neu-raise-xs);
    color: var(--neu-text-subtle);
    font-size: var(--neu-text-2xs);
    text-overflow: ellipsis;
    white-space: nowrap;
}
.account-menu__language { grid-template-columns: repeat(3, 1fr); }
.account-menu__language .account-menu__item { min-width: 0; justify-content: center; gap: var(--neu-sp-1); padding-inline: var(--neu-sp-1); font-size: var(--neu-text-xs); }
.account-menu__language .account-menu__item > span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-menu__language .account-menu__item[aria-checked='true'] { background: var(--neu-surface-sunken); box-shadow: var(--neu-press-sm); color: var(--neu-text-strong); }
.account-menu__separator { height: 1px; margin: var(--neu-sp-3) var(--neu-sp-2); background: linear-gradient(90deg, transparent, var(--neu-line-strong), transparent); }
.account-menu__theme { margin-top: var(--neu-sp-2); }
.account-menu__theme [data-theme-action-icon]::before { content: 'light_mode'; }
:root[data-theme='light'] .account-menu__theme [data-theme-action-icon]::before { content: 'dark_mode'; }
.account-menu__logout { color: var(--neu-danger); }

.store-account-context { display: flex; min-width: 0; }

.account-context-unavailable {
    display: grid;
    max-width: 42rem;
    min-height: 24rem;
    place-content: center;
    justify-items: start;
    gap: var(--neu-sp-4);
    margin: 0 auto;
    padding: var(--neu-sp-8);
    border: 1px solid var(--neu-line-strong);
    border-radius: var(--neu-r-lg);
    background: var(--neu-surface-raised);
    box-shadow: var(--neu-raise-sm);
}
.account-context-unavailable > * { margin: 0; }
.account-context-unavailable > .material-symbols-outlined { font-size: 2.5rem; }
.account-context-unavailable p { color: var(--neu-text-muted); }

@media (max-width: 56rem) {
    .account-menu__trigger {
        width: 2.75rem;
        max-width: 2.75rem;
        justify-content: center;
        padding: 0;
    }
    .account-menu__trigger-copy { display: none; }
    .account-menu__chevron { display: none; }
}

@media (max-width: 48rem) {
    .account-menu__panel { position: fixed; top: calc(var(--app-topbar-h, var(--neu-topbar-h)) - var(--neu-sp-1)); right: var(--neu-sp-2); }
    .store-header__actions--with-context { flex-wrap: nowrap; }

    /* With scripts unavailable, the native disclosure cannot coordinate with
       the mobile navigation rail. Keep that rail out of the open menu's hit
       and paint area; closing the disclosure restores it immediately. */
    body.dt-admin-shell:not(.dt-admin-shell--visual-opt-out):has(
        .account-menu[open]:not([data-account-menu-bound])
    ) .sidebar {
        visibility: hidden;
        pointer-events: none;
    }
}

body.dt-admin-shell:not(.dt-admin-shell--visual-opt-out)
    .account-menu__workspace[data-account-context-choice] { min-height: 3.25rem; }

@media (prefers-reduced-motion: reduce) {
    .account-menu__trigger,
    .account-menu__chevron,
    .account-menu__panel,
    .account-menu__item,
    .account-menu__switch-status { transition-duration: .01ms !important; }
}

@media print {
    .account-menu { display: none !important; }
}

/* Managed Artist workspaces keep the real actor and owner boundary visible in
   both the shared admin shell and the full-screen Designer. */
.managed-artist-context-banner,
.managed-artist-context-banner * { box-sizing: border-box; }

.managed-artist-context-banner {
    position: relative;
    z-index: 21;
    display: flex;
    min-width: 0;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem clamp(1rem, 2vw, 1.5rem);
    border-bottom: 1px solid var(--neu-line-strong);
    background: var(--neu-surface-sunken);
    color: var(--neu-text);
    font-family: var(--neu-font-sans, Inter, sans-serif);
    animation: managed-artist-context-arrive var(--neu-dur-2, 180ms) var(--neu-ease-out, cubic-bezier(.16, 1, .3, 1)) both;
}

.managed-artist-context-banner ::selection {
    background: var(--neu-solid);
    color: var(--neu-solid-on);
}

.managed-artist-context-banner__copy {
    display: grid;
    min-width: 0;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .7rem;
}

.managed-artist-context-banner__copy > .material-icons {
    color: var(--neu-text-strong);
    font-size: var(--neu-text-lg);
}

.managed-artist-context-banner h2,
.managed-artist-context-banner p { margin: 0; overflow-wrap: anywhere; }
.managed-artist-context-banner h2 {
    color: var(--neu-text-strong);
    font-size: var(--neu-text-lg);
    letter-spacing: -.01em;
    line-height: 1.35;
}
.managed-artist-context-banner p {
    max-width: 82ch;
    margin-top: .16rem;
    color: var(--neu-text-muted);
    font-size: var(--neu-text-sm);
    line-height: 1.4;
}
.managed-artist-context-banner p strong { color: var(--neu-text-strong); }
.managed-artist-context-banner .managed-artist-context-banner__session {
    color: var(--neu-text-subtle);
    font-size: var(--neu-text-2xs);
}

.managed-artist-context-banner__actions {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
}
.managed-artist-context-banner__actions form { margin: 0; }
.managed-artist-context-banner__actions a,
.managed-artist-context-banner__actions button {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    border: 1px solid var(--neu-line-strong);
    border-radius: var(--neu-r-sm);
    padding: .55rem .8rem;
    background: var(--neu-surface);
    box-shadow: var(--neu-raise-xs);
    color: var(--neu-text-strong);
    font: inherit;
    font-size: var(--neu-text-xs);
    font-weight: 700;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}
.managed-artist-context-banner__actions button {
    border-color: transparent;
    background: var(--neu-solid);
    color: var(--neu-solid-on);
}
.managed-artist-context-banner__actions a:hover { background: var(--neu-surface-raised); }
.managed-artist-context-banner__actions button:hover { background: var(--neu-solid-hover); }
.managed-artist-context-banner__actions a:focus-visible,
.managed-artist-context-banner__actions button:focus-visible {
    outline: 3px solid var(--neu-focus, currentColor);
    outline-offset: 3px;
}
.managed-artist-context-banner__actions .material-icons { font-size: var(--neu-text-lg); }

.dt-admin-shell .managed-artist-context-banner {
    position: fixed;
    top: calc(var(--app-topbar-h, 4.25rem) + var(--delegated-context-banner-height, 0px));
    right: 0;
    left: var(--app-sidebar-w, 17.5rem);
    z-index: calc(var(--neu-z-sidebar, 200) - 1);
}
.dt-admin-shell .managed-artist-context-banner ~ .main {
    top: calc(
        var(--app-topbar-h, 4.25rem)
        + var(--delegated-context-banner-height, 0px)
        + var(--managed-artist-context-banner-height, 0px)
    );
}

@keyframes managed-artist-context-arrive {
    from { transform: translateY(-4px); filter: contrast(.94); }
}

@media (max-width: 860px) {
    .dt-admin-shell .managed-artist-context-banner { left: 0; }
}

@media (max-width: 720px) {
    .managed-artist-context-banner { align-items: stretch; flex-direction: column; }
    .managed-artist-context-banner__actions { justify-content: flex-start; }
}

@media (max-width: 420px) {
    .managed-artist-context-banner { padding-inline: .75rem; }
    .managed-artist-context-banner__actions {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }
    .managed-artist-context-banner__actions form,
    .managed-artist-context-banner__actions a,
    .managed-artist-context-banner__actions button { width: 100%; min-width: 0; }
}

@media (prefers-reduced-motion: reduce) {
    .managed-artist-context-banner { animation: none; }
}

@media print {
    .managed-artist-context-banner { display: none !important; }
}

/* New flow / Old flow switch: unsaved-changes confirmation (both flows). */
.account-flow-confirm {
  max-width: min(440px, calc(100vw - 32px));
  padding: 22px 22px 18px;
  border: 1px solid var(--neu-line);
  border-radius: 14px;
  background: var(--neu-surface-raised);
  color: var(--neu-text);
  box-shadow: 0 24px 60px -24px rgba(0, 0, 0, 0.55);
}
.account-flow-confirm::backdrop {
  background: var(--neu-scrim, rgba(0, 0, 0, 0.45));
}
.account-flow-confirm h2 {
  margin: 0 0 8px;
  font-size: 1.0625rem;
  font-weight: 650;
}
.account-flow-confirm p {
  margin: 0 0 18px;
  color: var(--neu-text-muted);
  line-height: 1.5;
}
.account-flow-confirm__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

/* Partner workspace switch: a visible status while the next page loads. */
.partner-switch-status {
    position: fixed;
    z-index: 10000;
    top: var(--neu-sp-4);
    left: 50%;
    max-width: calc(100vw - 2rem);
    display: flex;
    align-items: center;
    gap: var(--neu-sp-3);
    padding: var(--neu-sp-3) var(--neu-sp-5);
    border-radius: var(--neu-r-pill);
    background: var(--neu-surface);
    box-shadow: var(--neu-raise-lg);
    color: var(--neu-text-strong);
    font-size: var(--neu-text-sm);
    font-weight: var(--neu-weight-semi);
    transform: translateX(-50%);
}
.partner-switch-status[hidden] { display: none; }
.partner-switch-status .neu-spinner { flex: none; width: 1.1rem; height: 1.1rem; }
.partner-switch-status > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
[data-partner-switching='true'], [data-partner-switching='true'] a[data-partner-switch] { cursor: progress; }
[data-busy='true'] { cursor: progress; }
button[data-busy='true'] { display: inline-flex; align-items: center; gap: var(--neu-sp-2); }
[data-busy='true'] > .neu-spinner { flex: none; width: 1rem; height: 1rem; border-width: 2px; }

/* The button that started a partner switch keeps full contrast while it works
   (disabled buttons elsewhere dim to half opacity); its spinner follows the
   button text so it stays visible on the solid fill in both themes. */
.neu-btn--primary[data-busy='true'],
.neu-btn--primary[data-busy='true']:disabled {
    opacity: 1;
    background: var(--neu-solid);
    color: var(--neu-solid-on);
}
.neu-btn[data-busy='true'] > .neu-spinner {
    border-color: currentColor;
    border-top-color: transparent;
}
/* The other partner buttons wait while one switch runs. Show them as a quiet
   pressed control with readable text rather than a half-transparent solid
   fill, which left dark text on a dark grey button in the dark theme. */
form[data-partner-switch] .neu-btn--primary:disabled:not([data-busy='true']) {
    opacity: 1;
    background: var(--neu-surface-sunken);
    color: var(--neu-text-muted);
    box-shadow: var(--neu-press-xs);
}
form[data-partner-switch] .neu-btn--primary:disabled:not([data-busy='true']) span {
    color: var(--neu-text-muted);
}
