/* Auto-generated shell CSS bundle. Rebuild: python scripts/build_css_bundles.py */

/* === base.css === */
:root {
  --admin-bar-height: 3.25rem;
  --touch-min: 2.75rem;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-right: env(safe-area-inset-right, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
  --safe-left: env(safe-area-inset-left, 0px);
  --app-vh: 100dvh;

  --color-navy: #0b2d4a;
  --color-navy-deep: #071f36;
  --color-navy-soft: #e7eef6;
  --color-orange: #e86a17;
  --color-orange-deep: #c4530d;
  --color-orange-soft: #fff1e6;

  --admin-bar-bg: #f3f6fa;
  --admin-bar-surface: #ffffff;
  --admin-bar-surface-hover: #eaf0f7;
  --admin-bar-border: #c3cedb;
  --admin-bar-border-strong: #9aabc0;
  --admin-bar-text: var(--color-navy);
  --admin-bar-muted: #5b6d82;
  --admin-bar-accent: var(--color-orange);
  --admin-bar-accent-deep: var(--color-orange-deep);
  --admin-bar-accent-soft: var(--color-orange-soft);
  --admin-bar-primary: var(--color-navy);
  --admin-bar-primary-soft: var(--color-navy-soft);
  --admin-bar-shadow: 0 1px 0 rgba(7, 31, 54, 0.06),
    0 8px 24px rgba(7, 31, 54, 0.08);
  --admin-bar-backdrop: rgba(7, 31, 54, 0.34);

  --switch-track: #b7c4d4;
  --switch-track-border: #95a6bb;

  --font-ui: "IBM Plex Sans", "Segoe UI", sans-serif;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  overflow-x: clip;
}

html,
body {
  margin: 0;
  min-height: 100%;
  min-height: var(--app-vh);
  font-family: var(--font-ui);
  color: var(--admin-bar-text);
  background: #fff;
}

body {
  padding-top: calc(var(--admin-bar-height) + var(--safe-top));
  overflow-x: clip;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* === admin-bar.css === */
.admin-bar {
  position: fixed;
  inset: 0 0 auto;
  z-index: 1000;
  height: calc(var(--admin-bar-height) + var(--safe-top, 0px));
  padding-top: var(--safe-top, 0px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-left: max(1rem, var(--safe-left, 0px));
  padding-right: max(1rem, var(--safe-right, 0px));
  background: var(--admin-bar-bg);
  border-bottom: 1px solid var(--admin-bar-border);
  box-shadow: var(--admin-bar-shadow);
  color: var(--admin-bar-text);
}

.admin-bar__start,
.admin-bar__end {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
}

.admin-bar__start {
  flex: 1;
}

.admin-bar__button {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  height: 2.1rem;
  padding: 0 0.75rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.25rem;
  background: var(--admin-bar-surface);
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.875rem;
  font-weight: 500;
  text-decoration: none;
  cursor: pointer;
  transition: background 140ms ease, border-color 140ms ease;
}

.admin-bar__button:hover {
  background: var(--admin-bar-surface-hover);
  border-color: var(--admin-bar-border-strong);
}

.admin-bar__button:focus-visible {
  outline: 2px solid var(--admin-bar-accent);
  outline-offset: 2px;
}

.admin-bar__button[aria-current="page"] {
  background: var(--color-navy);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.admin-bar__button[aria-current="page"]:hover {
  background: var(--color-navy-deep);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.admin-bar__button-icon {
  width: auto;
  height: auto;
  font-size: 0.85rem;
  line-height: 1;
  flex-shrink: 0;
}

.admin-bar__button--icon {
  width: 2rem;
  height: 2rem;
  min-width: 2rem;
  min-height: 2rem;
  padding: 0;
  justify-content: center;
}

.admin-bar__button--icon .admin-bar__button-icon {
  font-size: 0.78rem;
}

.admin-bar__user {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  flex-shrink: 0;
  padding: 0.15rem 0.15rem 0.15rem 0.55rem;
  border: 1px solid transparent;
  border-radius: 0.25rem;
  background: transparent;
  color: inherit;
  font: inherit;
  text-decoration: none;
  cursor: pointer;
}

.admin-bar__user:hover {
  border-color: var(--admin-bar-border);
  background: color-mix(in srgb, var(--admin-bar-primary-soft, #dfe8f1) 55%, transparent);
}

.admin-bar__user:focus-visible {
  outline: 2px solid var(--admin-bar-accent);
  outline-offset: 2px;
}

.admin-bar__username {
  font-size: 0.875rem;
  font-weight: 500;
  white-space: nowrap;
}

.admin-bar__avatar {
  width: 2rem;
  height: 2rem;
  border-radius: 0.35rem;
  object-fit: cover;
  border: 1px solid var(--admin-bar-border);
  background: var(--admin-bar-primary-soft);
}

@media (max-width: 640px) {
  .admin-bar {
    padding-left: max(0.75rem, var(--safe-left, 0px));
    padding-right: max(0.75rem, var(--safe-right, 0px));
    gap: 0.5rem;
  }

  .admin-bar .ui-switch__label {
    max-width: 6.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .admin-bar__button-text {
    display: none;
  }

  .admin-bar__username {
    display: none;
  }

  .admin-bar__brand > span:last-child {
    max-width: 9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

/* === anchor-modal.css === */
.ui-modal[data-anchor-modal] .ui-modal__dialog {
  width: min(34rem, 100%);
  max-height: none;
}

.anchor-modal__copy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  height: 2.35rem;
  padding: 0 0.8rem;
  border: 1px solid var(--color-navy-deep);
  border-radius: 0.3rem;
  background: var(--color-navy);
  color: #fff1e6;
  font: inherit;
  font-size: 0.84rem;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
}

.anchor-modal__copy:hover {
  background: var(--color-orange);
  border-color: var(--color-orange-deep);
  color: #fff;
}

.anchor-modal__copy:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

/* === field.css === */
.field-stack {
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
}

.field-stack[hidden] {
  display: none !important;
}

.field {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.field[hidden] {
  display: none !important;
}

.field__label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--admin-bar-text);
}

.field__label--caps {
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--admin-bar-muted);
}

.field__hint {
  margin-left: 0.35rem;
  font-size: 0.75rem;
  font-weight: 400;
  color: var(--admin-bar-muted);
  text-transform: none;
  letter-spacing: 0;
}

.field__row {
  display: flex;
  gap: 0.45rem;
}

.field__input,
.field__textarea,
.field__select {
  width: 100%;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.3rem;
  background: var(--admin-bar-surface);
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.875rem;
  transition: border-color 140ms ease, box-shadow 140ms ease;
}

.field__input,
.field__select {
  height: 2.35rem;
  padding: 0 0.75rem;
}

/* Textareas often use field__input; don't inherit the fixed single-line height. */
textarea.field__input,
.field__textarea {
  height: auto;
  min-height: 4.5rem;
  padding: 0.65rem 0.75rem;
  resize: vertical;
  line-height: 1.45;
}

/* Many screens use select.field__input; treat them like .field__select. */
.field__select,
select.field__input {
  appearance: none;
  background-color: var(--admin-bar-surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%230b2d4a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5L6 7.5 9 4.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.65rem center;
  padding-right: 1.8rem;
  opacity: 1;
  cursor: pointer;
  color: var(--admin-bar-text);
}

.field__select:disabled,
select.field__input:disabled {
  opacity: 0.7;
  cursor: default;
}

.field__input--grow {
  flex: 1;
  min-width: 0;
}

.field__control {
  display: flex;
  align-items: stretch;
  width: 100%;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.3rem;
  background: var(--admin-bar-surface);
  transition: border-color 140ms ease, box-shadow 140ms ease;
  overflow: hidden;
}

.field__control:hover {
  border-color: var(--admin-bar-border-strong);
}

.field__control:focus-within {
  border-color: var(--color-orange);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-orange) 22%, white);
}

.field__control .field__input {
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
}

.field__control .field__input:hover,
.field__control .field__input:focus {
  border: 0;
  box-shadow: none;
}

.field__affix {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  padding: 0 0.55rem;
  background: color-mix(in srgb, var(--color-navy) 5%, white);
  color: var(--admin-bar-muted);
  font-size: 0.85rem;
  font-weight: 600;
  user-select: none;
}

.field__affix--prefix {
  border-right: 1px solid var(--admin-bar-border);
}

.field__affix--suffix {
  border-left: 1px solid var(--admin-bar-border);
}

.field__input:hover,
.field__textarea:hover,
.field__select:hover {
  border-color: var(--admin-bar-border-strong);
}

.field__input:focus,
.field__textarea:focus,
.field__select:focus {
  outline: none;
  border-color: var(--color-orange);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-orange) 22%, white);
}

.field__input.is-invalid,
.field__textarea.is-invalid,
.field__select.is-invalid {
  border-color: #c62828;
}

.field__input.is-invalid:focus,
.field__textarea.is-invalid:focus,
.field__select.is-invalid:focus {
  border-color: #c62828;
  box-shadow: 0 0 0 3px rgba(198, 40, 40, 0.18);
}

.field__error {
  font-size: 0.75rem;
  font-weight: 500;
  color: #c62828;
}

.field__error[hidden] {
  display: none !important;
}

.field__help {
  font-size: 0.78rem;
  line-height: 1.45;
  color: var(--admin-bar-muted);
}

.field__range {
  width: 100%;
  height: 1.5rem;
  margin: 0;
  accent-color: var(--color-navy);
  cursor: pointer;
}

.field__range:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.field__range:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 3px;
}

/* === modal.css === */
.ui-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1200;
  background: var(--admin-bar-backdrop);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 180ms ease, visibility 180ms ease;
}

.ui-modal-backdrop.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.ui-modal {
  position: fixed;
  inset: 0;
  z-index: 1201;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity 180ms ease, visibility 180ms ease;
}

.ui-modal.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.ui-modal__dialog {
  display: flex;
  flex-direction: column;
  width: min(44rem, 100%);
  max-height: min(40rem, calc(var(--app-vh, 100vh) - 2.5rem));
  background: var(--admin-bar-surface);
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.4rem;
  box-shadow: 0 24px 60px rgba(7, 31, 54, 0.28);
  color: var(--admin-bar-text);
  overflow: hidden;
  transform: translateY(0.75rem) scale(0.98);
  transition: transform 200ms ease;
}

.ui-modal__dialog--wide {
  width: min(72rem, 100%);
  max-height: min(56rem, calc(var(--app-vh, 100vh) - 2.5rem));
}

.ui-modal__dialog--xl {
  width: min(90rem, calc(100vw - 2.5rem));
  max-height: min(56rem, calc(var(--app-vh, 100vh) - 2.5rem));
}

.ui-modal.is-open .ui-modal__dialog {
  transform: translateY(0) scale(1);
}

.ui-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  min-height: 3.25rem;
  padding: 0.65rem 1rem;
  border-bottom: 1px solid var(--admin-bar-border);
  background: var(--admin-bar-bg);
}

.ui-modal__heading {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}

.ui-modal__title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
}

.ui-modal__meta {
  margin: 0;
  color: var(--admin-bar-muted);
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.35;
}

.ui-modal__meta[hidden] {
  display: none !important;
}

.ui-modal__badge {
  margin-left: 0.55rem;
  padding: 0.15rem 0.4rem;
  border-radius: 0.2rem;
  background: var(--color-navy);
  color: #fff1e6;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  vertical-align: middle;
}

.ui-modal__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--touch-min, 2.75rem);
  height: var(--touch-min, 2.75rem);
  padding: 0;
  border: 1px solid transparent;
  border-radius: 0.25rem;
  background: transparent;
  color: var(--admin-bar-muted);
  cursor: pointer;
}

.ui-modal__close:hover {
  background: var(--admin-bar-surface-hover);
  color: var(--admin-bar-text);
  border-color: var(--admin-bar-border);
}

.ui-modal__close:focus-visible {
  outline: 2px solid var(--admin-bar-accent);
  outline-offset: 2px;
}

.ui-modal__body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 1rem;
}

.ui-modal__dialog--confirm {
  width: min(26rem, 100%);
  max-height: none;
}

.ui-modal__dialog--confirm.is-warning {
  width: min(32rem, 100%);
}

.ui-modal__warning {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  margin: 0 0 0.85rem;
  padding: 0.9rem 1rem;
  border: 2px solid color-mix(in srgb, #c45c26 70%, #8a2e00);
  border-radius: 0.4rem;
  background: #fff4ec;
  color: #7a2e00;
  font-size: 0.98rem;
  font-weight: 700;
  line-height: 1.4;
}

.ui-modal__warning[hidden] {
  display: none !important;
}

.ui-modal__warning::before {
  content: "\f071";
  flex: 0 0 auto;
  margin-top: 0.1rem;
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 1.15rem;
  line-height: 1;
  color: #c45c26;
}

.ui-modal__message {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--admin-bar-text);
}

.ui-modal__footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.55rem;
  padding: 0.85rem 1rem;
  border-top: 1px solid var(--admin-bar-border);
  background: var(--admin-bar-bg);
}

.ui-modal__footer--actions {
  flex-wrap: wrap;
}

.ui-modal__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 2.2rem;
  padding: 0 0.95rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.25rem;
  background: var(--admin-bar-surface);
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
}

.ui-modal__button:hover {
  background: var(--admin-bar-surface-hover);
  border-color: var(--admin-bar-border-strong);
}

.ui-modal__button:focus-visible {
  outline: 2px solid var(--admin-bar-accent);
  outline-offset: 2px;
}

.ui-modal__button--danger {
  background: #c62828;
  border-color: #9e1e1e;
  color: #fff;
}

.ui-modal__button--danger:hover {
  background: #9e1e1e;
  border-color: #7f1818;
  color: #fff;
}

.ui-modal__button--primary {
  background: var(--color-navy);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.ui-modal__button--primary:hover {
  background: var(--color-navy-deep);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

body.ui-modal-open {
  overflow: hidden;
}

/* Shared scroll lock — used by ui-modal + sheet overlays (filters, chat history). */
html.is-scroll-locked,
html.is-scroll-locked body {
  overflow: hidden;
  overscroll-behavior: none;
}

body.is-scroll-locked {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
}

@media (max-width: 40rem) {
  .ui-modal {
    align-items: stretch;
    justify-content: flex-end;
    padding: 0;
  }

  .ui-modal__dialog,
  .ui-modal__dialog--wide,
  .ui-modal__dialog--xl,
  .ui-modal__dialog--confirm {
    width: 100%;
    max-width: 100%;
    max-height: calc(var(--app-vh, 100vh) - var(--safe-top, 0px));
    border-radius: 0.75rem 0.75rem 0 0;
    margin-top: var(--safe-top, 0px);
  }

  .ui-modal__footer {
    padding-bottom: max(0.85rem, var(--safe-bottom, 0px));
    flex-wrap: wrap;
  }

  .ui-modal__button {
    min-height: var(--touch-min, 2.75rem);
  }
}


/* === pluriworks-nav.css === */
.pluriworks-nav {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  padding: 0.75rem 0.75rem 1.5rem;
}

.pluriworks-nav__top {
  display: none;
  align-items: center;
  justify-content: flex-start;
  flex-shrink: 0;
}

/* Burger only for icon-rail / narrow flyout — not on the expanded desktop menu. */
.pluriworks-nav.is-icon-only .pluriworks-nav__top {
  display: flex;
}

.pluriworks-nav__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 0.3rem;
  background: transparent;
  color: var(--color-navy);
  cursor: pointer;
}

.pluriworks-nav__toggle:hover {
  background: #fff;
  border-color: var(--admin-bar-border);
}

.pluriworks-nav__toggle:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

.pluriworks-nav__toggle-icon {
  transition: opacity 140ms ease, transform 180ms ease;
}

.pluriworks-nav__toggle-icon--close {
  display: none;
}

.pluriworks-nav.is-flyout-open .pluriworks-nav__toggle-icon--open {
  display: none;
}

.pluriworks-nav.is-flyout-open .pluriworks-nav__toggle-icon--close {
  display: inline-block;
}

.pluriworks-nav__menu {
  display: flex;
  flex-direction: column;
  gap: 1.15rem;
  min-width: 0;
}

.pluriworks-nav__category-title {
  margin: 0 0 0.4rem 0.45rem;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--admin-bar-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pluriworks-nav__items {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.pluriworks-nav__item,
.pluriworks-nav__item:link,
.pluriworks-nav__item:visited {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  width: 100%;
  min-height: 2.05rem;
  padding: 0.35rem 0.55rem;
  border: 1px solid transparent;
  border-radius: 0.3rem;
  background: transparent;
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.84rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease,
    padding 180ms ease, gap 180ms ease, justify-content 180ms ease,
    min-height 180ms ease;
}

.pluriworks-nav__item:hover {
  background: #fff;
  border-color: var(--admin-bar-border);
}

.pluriworks-nav__item:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

/* Active = current page. Force light label: --admin-bar-text is the same
   navy as the active background, so any leftover default/link color reads
   as invisible. */
.pluriworks-nav__item.is-active,
.pluriworks-nav__item.is-active:link,
.pluriworks-nav__item.is-active:visited,
.pluriworks-nav__item.is-active:hover,
.pluriworks-nav__item.is-active:active {
  background: var(--color-navy);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.pluriworks-nav__item.is-active:hover {
  background: var(--color-navy-deep);
}

.pluriworks-nav__item.is-active .pluriworks-nav__label,
.pluriworks-nav__item.is-active:link .pluriworks-nav__label,
.pluriworks-nav__item.is-active:visited .pluriworks-nav__label {
  color: #fff1e6;
}

.pluriworks-nav__icon {
  width: 1rem;
  flex-shrink: 0;
  font-size: 0.78rem;
  text-align: center;
  color: var(--admin-bar-muted);
  transition: width 180ms ease, font-size 180ms ease;
}

.pluriworks-nav__item.is-active .pluriworks-nav__icon {
  color: var(--color-orange);
}

.pluriworks-nav__label {
  min-width: 0;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Icon rail — absolute so width can animate over the stage. */
.pluriworks-nav.is-icon-only {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: var(--ui-split-primary, 3.5rem);
  height: auto;
  min-height: calc(100vh - var(--admin-bar-height));
  gap: 0.55rem;
  padding: 0.65rem 0.35rem 1rem;
  overflow-x: hidden;
  overflow-y: auto;
  box-shadow: none;
  transition:
    width 260ms cubic-bezier(0.22, 1, 0.36, 1),
    padding 260ms cubic-bezier(0.22, 1, 0.36, 1),
    gap 260ms cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 260ms ease;
}

.pluriworks-nav.is-icon-only .pluriworks-nav__top {
  justify-content: center;
  transition: justify-content 180ms ease;
}

.pluriworks-nav.is-icon-only .pluriworks-nav__menu {
  gap: 0.45rem;
  transition: gap 260ms ease;
}

.pluriworks-nav.is-icon-only .pluriworks-nav__category-title,
.pluriworks-nav.is-icon-only .pluriworks-nav__label {
  max-width: 0;
  opacity: 0;
  margin: 0;
  transform: translateX(-0.4rem);
  pointer-events: none;
  transition:
    max-width 220ms ease,
    opacity 160ms ease,
    transform 200ms ease,
    margin 220ms ease;
}

.pluriworks-nav.is-icon-only .pluriworks-nav__item {
  justify-content: center;
  gap: 0;
  min-height: 2.25rem;
  padding: 0.45rem 0.25rem;
}

.pluriworks-nav.is-icon-only .pluriworks-nav__icon {
  width: auto;
  font-size: 0.9rem;
}

/* Flyout open */
.pluriworks-nav.is-icon-only.is-flyout-open {
  width: var(--pluriworks-nav-flyout-width);
  padding: 0.75rem 0.75rem 1.5rem;
  gap: 0.85rem;
  box-shadow: 12px 0 32px rgba(7, 31, 54, 0.18);
}

.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__top {
  justify-content: flex-start;
}

.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__menu {
  gap: 1.15rem;
}

.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__category-title,
.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__label {
  max-width: 12rem;
  opacity: 1;
  margin: 0 0 0.4rem 0.45rem;
  transform: translateX(0);
  pointer-events: auto;
  transition-delay: 70ms;
}

.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__label {
  margin: 0;
}

.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__item {
  justify-content: flex-start;
  gap: 0.55rem;
  min-height: 2.05rem;
  padding: 0.35rem 0.55rem;
}

.pluriworks-nav.is-icon-only.is-flyout-open .pluriworks-nav__icon {
  width: 1rem;
  font-size: 0.78rem;
}

@media (prefers-reduced-motion: reduce) {
  .pluriworks-nav.is-icon-only,
  .pluriworks-nav.is-icon-only .pluriworks-nav__category-title,
  .pluriworks-nav.is-icon-only .pluriworks-nav__label,
  .pluriworks-nav.is-icon-only .pluriworks-nav__item,
  .pluriworks-nav.is-icon-only .pluriworks-nav__icon,
  .pluriworks-nav.is-icon-only .pluriworks-nav__menu,
  .pluriworks-nav-backdrop {
    transition: none !important;
  }
}

/* === pluriworks-stage.css === */
.pluriworks-stage {
  --stage-paper: #f4f7fb;
  --stage-warm: rgba(232, 106, 23, 0.16);
  --stage-cool: rgba(11, 45, 74, 0.1);

  position: relative;
  isolation: isolate;
  min-height: calc(var(--app-vh, 100vh) - var(--admin-bar-height) - var(--safe-top, 0px));
  overflow: hidden;
  background: var(--stage-paper);
}

.pluriworks-stage__atmosphere {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}

.pluriworks-stage__wash {
  position: absolute;
  border-radius: 50%;
  filter: blur(48px);
  opacity: 0.9;
  will-change: transform;
}

.pluriworks-stage__wash--a {
  width: min(52vw, 34rem);
  height: min(52vw, 34rem);
  top: -12%;
  right: -8%;
  background: radial-gradient(circle, var(--stage-warm), transparent 68%);
  animation: pluriworks-drift-a 28s ease-in-out infinite alternate;
}

.pluriworks-stage__wash--b {
  width: min(58vw, 40rem);
  height: min(58vw, 40rem);
  bottom: -18%;
  left: -12%;
  background: radial-gradient(circle, var(--stage-cool), transparent 70%);
  animation: pluriworks-drift-b 34s ease-in-out infinite alternate;
}

.pluriworks-stage__wash--c {
  width: min(42vw, 28rem);
  height: min(42vw, 28rem);
  top: 38%;
  left: 42%;
  background: radial-gradient(circle, rgba(232, 106, 23, 0.12), transparent 72%);
  animation: pluriworks-drift-c 22s ease-in-out infinite alternate;
}

.pluriworks-stage__content {
  position: relative;
  z-index: 1;
  min-height: inherit;
}

@keyframes pluriworks-drift-a {
  from {
    transform: translate3d(0, 0, 0) scale(1);
  }
  to {
    transform: translate3d(-6%, 10%, 0) scale(1.08);
  }
}

@keyframes pluriworks-drift-b {
  from {
    transform: translate3d(0, 0, 0) scale(1.05);
  }
  to {
    transform: translate3d(8%, -7%, 0) scale(1);
  }
}

@keyframes pluriworks-drift-c {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    transform: translate3d(-10%, -6%, 0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .pluriworks-stage__wash {
    animation: none;
  }
}

/* === pluriworks.css === */
.pluriworks {
  --pluriworks-nav-bg: #f7f9fc;
  --pluriworks-nav-border: var(--admin-bar-border);
  --pluriworks-nav-flyout-width: 15.5rem;

  position: relative;
  min-height: calc(var(--app-vh, 100vh) - var(--admin-bar-height) - var(--safe-top, 0px));
  background: #fff;
}

/* Two tracks only: nav | stage. The resize handle sits on the seam. */
.pluriworks.ui-split {
  --ui-split-primary: 15.5rem;
  grid-template-columns: var(--ui-split-primary) minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
}

.pluriworks-nav {
  grid-column: 1;
  grid-row: 1;
  position: sticky;
  top: calc(var(--admin-bar-height) + var(--safe-top, 0px));
  z-index: 8;
  height: calc(var(--app-vh, 100vh) - var(--admin-bar-height) - var(--safe-top, 0px));
  overflow: auto;
  scrollbar-width: none;
  background: var(--pluriworks-nav-bg);
  border-right: 1px solid var(--pluriworks-nav-border);
  container-type: inline-size;
  container-name: pluriworks-nav;
}

.pluriworks-nav::-webkit-scrollbar {
  display: none;
}

.pluriworks-stage {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
}

.pluriworks > .ui-split__handle {
  grid-column: 1;
  grid-row: 1;
  justify-self: end;
  align-self: stretch;
  /* Above the stage so the seam stays draggable in icon-rail mode too. */
  z-index: 10;
  width: 0;
  background: transparent;
}

.pluriworks > .ui-split__handle::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: -0.5rem;
  width: 1rem;
}

.pluriworks > .ui-split__handle::before {
  left: 0;
  width: 2px;
  background: var(--color-navy);
  opacity: 0;
  pointer-events: none;
  transition: opacity 120ms ease, width 120ms ease;
}

.pluriworks > .ui-split__handle:hover::before,
.pluriworks > .ui-split__handle.is-active::before,
.pluriworks > .ui-split__handle:focus-visible::before {
  opacity: 1;
  width: 3px;
  background: var(--color-navy);
}

@media (max-width: 56rem) {
  .pluriworks.ui-split {
    --ui-split-primary: 3.5rem;
    grid-template-columns: var(--ui-split-primary) minmax(0, 1fr);
  }

  .pluriworks > .ui-split__handle {
    visibility: hidden;
    pointer-events: none;
  }
}

.pluriworks-nav-backdrop {
  position: absolute;
  inset: 0;
  z-index: 7;
  grid-column: 1 / -1;
  grid-row: 1;
  background: rgba(7, 31, 54, 0.28);
  border: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 220ms ease, visibility 220ms ease;
}

.pluriworks-nav-backdrop.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.pluriworks-nav-backdrop[hidden] {
  display: none !important;
}

.pluriworks.is-nav-flyout-open .pluriworks-stage {
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .pluriworks-nav-backdrop {
    transition: none;
  }
}

/* === switch.css === */
.ui-switch {
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  cursor: pointer;
  user-select: none;
}

.ui-switch__input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
}

.ui-switch__track {
  position: relative;
  width: 2.5rem;
  height: 1.35rem;
  flex-shrink: 0;
  border-radius: 0.25rem;
  background: var(--switch-track);
  border: 1px solid var(--switch-track-border);
  transition: background 160ms ease, border-color 160ms ease;
}

.ui-switch__track::after {
  content: "";
  position: absolute;
  top: 1px;
  left: 1px;
  width: 1.05rem;
  height: 1.05rem;
  border-radius: 0.15rem;
  background: #fff;
  box-shadow: 0 1px 2px rgba(7, 31, 54, 0.22);
  transition: transform 160ms ease;
}

.ui-switch__input:checked + .ui-switch__track {
  background: var(--color-orange);
  border-color: var(--color-orange-deep);
}

.ui-switch__input:checked + .ui-switch__track::after {
  transform: translateX(1.1rem);
}

.ui-switch__input:focus-visible + .ui-switch__track {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

.ui-switch__label {
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--admin-bar-text);
  white-space: nowrap;
}

/* === toast.css === */
.ui-toast-host {
  position: fixed;
  inset-inline: 0;
  bottom: 1.5rem;
  z-index: 12000;
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
  gap: 0.55rem;
  padding-inline: 1rem;
  pointer-events: none;
}

.ui-toast {
  --toast-navy: var(--color-navy, #0b2d4a);
  --toast-navy-deep: var(--color-navy-deep, #071f36);
  --toast-orange: var(--color-orange, #e86a17);
  --toast-cream: #fff8f1;
  --toast-accent: var(--toast-orange);
  --toast-accent-soft: color-mix(in srgb, var(--toast-accent) 16%, white);

  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  width: max-content;
  max-width: min(28rem, 100%);
  padding: 0.75rem 1.15rem 0.75rem 0.8rem;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--toast-navy) 18%, transparent);
  border-radius: 0.55rem;
  background:
    linear-gradient(
      135deg,
      color-mix(in srgb, var(--toast-cream) 88%, white) 0%,
      color-mix(in srgb, var(--color-navy-soft, #e7eef6) 55%, white) 100%
    );
  box-shadow:
    0 14px 34px color-mix(in srgb, var(--toast-navy-deep) 22%, transparent),
    0 2px 0 color-mix(in srgb, white 70%, transparent) inset;
  color: var(--toast-navy-deep);
  font: inherit;
  font-size: 0.92rem;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: 0.01em;
  text-align: left;
  opacity: 0;
  transform: translateY(1rem) scale(0.96);
  will-change: transform, opacity;
}

.ui-toast[data-toast-type="success"] {
  --toast-accent: #1f7a4c;
  --toast-accent-soft: color-mix(in srgb, #1f7a4c 14%, white);
}

.ui-toast[data-toast-type="error"] {
  --toast-accent: #b42318;
  --toast-accent-soft: color-mix(in srgb, #b42318 14%, white);
}

.ui-toast[data-toast-type="copy"],
.ui-toast[data-toast-type="cut"],
.ui-toast[data-toast-type="paste"],
.ui-toast[data-toast-type="rename"],
.ui-toast[data-toast-type="download"],
.ui-toast[data-toast-type="export"],
.ui-toast[data-toast-type="upload"],
.ui-toast[data-toast-type="refresh"],
.ui-toast[data-toast-type="sync"],
.ui-toast[data-toast-type="send"],
.ui-toast[data-toast-type="info"] {
  --toast-accent: var(--toast-orange);
  --toast-accent-soft: color-mix(in srgb, var(--toast-orange) 16%, white);
}

.ui-toast[data-toast-type="delete"] {
  --toast-accent: #b42318;
  --toast-accent-soft: color-mix(in srgb, #b42318 14%, white);
}

.ui-toast[data-toast-type="wait"] {
  --toast-accent: var(--color-navy, #0b2d4a);
  --toast-accent-soft: color-mix(in srgb, var(--color-navy, #0b2d4a) 12%, white);
}

.ui-toast[data-toast-sticky="1"]::after,
.ui-toast[data-toast-type="wait"]::after {
  display: none;
}

.ui-toast__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.85rem;
  height: 1.85rem;
  border-radius: 999px;
  background: var(--toast-accent-soft);
  color: var(--toast-accent);
  font-size: 0.92rem;
}

.ui-toast__message {
  min-width: 0;
}

.ui-toast::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  transform-origin: left center;
  transform: scaleX(0);
  background: linear-gradient(
    90deg,
    var(--toast-accent),
    color-mix(in srgb, var(--toast-navy) 55%, var(--toast-accent))
  );
}

.ui-toast.is-visible {
  animation: ui-toast-in 0.38s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.ui-toast.is-visible::after {
  animation: ui-toast-progress var(--toast-duration, 5.2s) linear both;
}

.ui-toast.is-leaving {
  animation: ui-toast-out 0.28s cubic-bezier(0.4, 0, 0.2, 1) both;
}

@keyframes ui-toast-in {
  0% {
    opacity: 0;
    transform: translateY(1.15rem) scale(0.94);
  }
  60% {
    opacity: 1;
    transform: translateY(-0.12rem) scale(1.015);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes ui-toast-out {
  0% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateY(0.7rem) scale(0.96);
  }
}

@keyframes ui-toast-progress {
  from {
    transform: scaleX(1);
  }
  to {
    transform: scaleX(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .ui-toast,
  .ui-toast.is-visible,
  .ui-toast.is-leaving,
  .ui-toast.is-visible::after {
    animation: none;
  }

  .ui-toast.is-visible {
    opacity: 1;
    transform: none;
  }

  .ui-toast.is-visible::after {
    transform: scaleX(0);
  }

  .ui-wait .fa-spinner {
    animation: none;
  }
}

/* Inline panel wait (modals, empty states). */
.ui-wait {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  min-height: 4.5rem;
  padding: 1.25rem 1rem;
  color: var(--color-navy, #0b2d4a);
  font-size: 0.92rem;
  font-weight: 600;
}

.ui-wait .fa-spinner {
  color: var(--color-orange, #e86a17);
  font-size: 1.1rem;
}

.is-waiting {
  position: relative;
}

/* === ui-button.css === */
/* Shared primary/secondary controls used across portal + admin. */

.ui-button {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 2.35rem;
  height: auto;
  padding: 0.45rem 0.85rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.3rem;
  background: rgba(255, 255, 255, 0.92);
  color: var(--color-navy);
  font: inherit;
  font-size: 0.84rem;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background 140ms ease,
    border-color 140ms ease,
    color 140ms ease;
}

@media (max-width: 40rem) {
  .ui-button {
    min-height: var(--touch-min, 2.75rem);
  }
}

.ui-button:hover {
  background: rgba(231, 238, 246, 0.9);
  border-color: var(--admin-bar-border-strong);
}

.ui-button:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

.ui-button:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.ui-button.is-busy {
  pointer-events: none;
  opacity: 0.78;
  cursor: wait;
}

.ui-button.is-busy .fa-spinner {
  color: inherit;
}

.ui-button[hidden] {
  display: none !important;
}

.ui-button--primary {
  background: var(--color-navy);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.ui-button--primary:hover {
  background: var(--color-navy-deep);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.ui-button--primary:disabled:hover {
  background: var(--color-navy);
  border-color: var(--color-navy-deep);
  color: #fff1e6;
}

.ui-button--accent {
  background: var(--color-orange);
  border-color: var(--color-orange-deep);
  color: #fff8f2;
}

.ui-button--accent:hover:not(:disabled) {
  background: var(--color-orange-deep);
  border-color: var(--color-orange-deep);
  color: #fff8f2;
  box-shadow: 0 0.35rem 0.85rem color-mix(in srgb, var(--color-orange) 28%, transparent);
}

.ui-button--accent:disabled:hover {
  background: var(--color-orange);
  border-color: var(--color-orange-deep);
  color: #fff8f2;
  box-shadow: none;
}

/* === ui-split.css === */
.ui-split {
  --ui-split-primary: 22rem;
  display: grid;
  grid-template-columns: var(--ui-split-primary) auto minmax(0, 1fr);
  align-items: stretch;
  min-width: 0;
  min-height: 0;
}

.ui-split__handle {
  position: relative;
  width: 1rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: col-resize;
  touch-action: none;
  user-select: none;
}

.ui-split__handle::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
  transform: translateX(-50%);
  background: var(--admin-bar-border);
  transition: background 120ms ease, width 120ms ease;
}

.ui-split__handle:hover::before,
.ui-split__handle.is-active::before,
.ui-split__handle:focus-visible::before {
  width: 3px;
  background: var(--color-navy);
}

.ui-split__handle:focus-visible {
  outline: none;
}

.ui-split.is-resizing,
.ui-split.is-resizing * {
  cursor: col-resize !important;
  user-select: none !important;
}

@media (max-width: 56rem) {
  .ui-split {
    grid-template-columns: 1fr;
  }

  .ui-split__handle {
    display: none;
  }
}

/* === ui-table.css === */
.ui-data-table {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.ui-data-table__toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.ui-data-table__search {
  position: relative;
  display: block;
  width: min(22rem, 100%);
}

.ui-data-table__search-icon {
  position: absolute;
  top: 50%;
  left: 0.75rem;
  transform: translateY(-50%);
  font-size: 0.78rem;
  color: var(--admin-bar-muted);
  pointer-events: none;
}

.ui-data-table__search-input {
  width: 100%;
  height: 2.35rem;
  padding: 0 0.75rem 0 2.15rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.3rem;
  background: rgba(255, 255, 255, 0.92);
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.875rem;
}

.ui-data-table__search-input::placeholder {
  color: var(--admin-bar-muted);
}

.ui-data-table__search-input:hover {
  border-color: var(--admin-bar-border-strong);
}

.ui-data-table__search-input:focus {
  outline: none;
  border-color: var(--color-navy);
  box-shadow: 0 0 0 3px var(--color-navy-soft);
}

.ui-table-wrap {
  overflow: auto;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.35rem;
  background: rgba(255, 255, 255, 0.88);
  backdrop-filter: blur(6px);
}

.ui-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.ui-table th,
.ui-table td {
  padding: 0.55rem 0.85rem;
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--admin-bar-border);
}

.ui-table th {
  padding: 0.35rem 0.85rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--admin-bar-muted);
  background: rgba(247, 249, 252, 0.95);
}

.ui-table__th--sortable {
  padding: 0;
}

.ui-table__sort {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: 100%;
  min-height: 2rem;
  padding: 0.35rem 0.85rem;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  text-align: left;
  cursor: pointer;
}

.ui-table__sort:hover {
  color: var(--color-navy);
  background: rgba(231, 238, 246, 0.7);
}

.ui-table__th--sortable.is-sorted .ui-table__sort {
  color: var(--color-navy);
}

.ui-table__sort:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: -2px;
}

.ui-table__sort-icon {
  font-size: 0.7rem;
  opacity: 0.55;
}

.ui-table__th--sortable.is-sorted .ui-table__sort-icon {
  opacity: 1;
  color: var(--color-orange);
}

.ui-table tbody tr:last-child td {
  border-bottom: 0;
}

.ui-table tbody tr:hover td {
  background: rgba(231, 238, 246, 0.55);
}

.ui-table__mark {
  padding: 0.05em 0;
  border-radius: 0.15em;
  background: color-mix(in srgb, var(--color-orange) 34%, white);
  color: inherit;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

.ui-table__cell--date {
  white-space: nowrap;
  width: 8.5rem;
  color: var(--admin-bar-muted);
}

.ui-table__cell--actions {
  width: 1%;
  white-space: nowrap;
}

.ui-table__cell--empty {
  color: var(--admin-bar-muted);
  text-align: center;
}

.ui-table__action {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  min-height: 2.1rem;
  height: auto;
  margin-left: 0.35rem;
  padding: 0.25rem 0.65rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.25rem;
  background: var(--admin-bar-surface);
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.8rem;
  font-weight: 500;
  cursor: pointer;
}

@media (max-width: 40rem) {
  .ui-table__action {
    min-height: var(--touch-min, 2.75rem);
  }

  .ui-table th,
  .ui-table td {
    padding: 0.65rem 0.7rem;
  }
}

.ui-table__action:first-child {
  margin-left: 0;
}

.ui-table__action:hover {
  background: var(--admin-bar-surface-hover);
  border-color: var(--admin-bar-border-strong);
}

.ui-table__action--danger:hover {
  background: #fdeceb;
  border-color: #e2a8a4;
  color: #9e1e1e;
}

.ui-table__action:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

/* === ui-tabs.css === */
.ui-tabs {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.35rem;
  background: rgba(255, 255, 255, 0.88);
  backdrop-filter: blur(6px);
  overflow: hidden;
}

.ui-tabs__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin: 0;
  padding: 0;
  border-bottom: 1px solid var(--admin-bar-border);
  background: rgba(247, 249, 252, 0.95);
}

@media (max-width: 48rem) {
  .ui-tabs__list {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }

  .ui-tabs__tab {
    min-height: var(--touch-min, 2.75rem);
    height: auto;
    flex: 0 0 auto;
  }
}

.ui-tabs__tab {
  appearance: none;
  height: 2.35rem;
  padding: 0 0.9rem;
  border: 0;
  border-right: 1px solid var(--admin-bar-border);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  color: var(--admin-bar-muted);
  font: inherit;
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}

.ui-tabs__tab.is-disabled,
.ui-tabs__tab:disabled,
.ui-tabs__tab[aria-disabled="true"] {
  color: color-mix(in srgb, var(--admin-bar-muted) 70%, white);
  background: transparent;
  cursor: not-allowed;
  opacity: 0.55;
}

.ui-tabs__tab.is-disabled:hover,
.ui-tabs__tab:disabled:hover,
.ui-tabs__tab[aria-disabled="true"]:hover {
  color: color-mix(in srgb, var(--admin-bar-muted) 70%, white);
  background: transparent;
}

.ui-tabs__tab:hover {
  color: var(--color-navy);
  background: rgba(231, 238, 246, 0.7);
}

.ui-tabs__tab.is-active,
.ui-tabs__tab[aria-selected="true"] {
  color: var(--color-navy);
  border-bottom-color: var(--color-orange);
  background: rgba(255, 255, 255, 0.95);
}

.ui-tabs__tab:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: -2px;
}

.ui-tabs__panels {
  min-height: 12rem;
}

.ui-tabs__panel {
  padding: 1rem 1.1rem 1.15rem;
}

.ui-tabs__panel[hidden] {
  display: none !important;
}

.ui-tabs__empty {
  margin: 0;
  color: var(--admin-bar-muted);
  font-size: 0.875rem;
}

/* === ui-pager.css === */
.ui-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  margin-top: 0.85rem;
  padding: 0.65rem 0.15rem 0.15rem;
}

.ui-pager__size {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  color: var(--admin-bar-muted);
  font-size: 0.82rem;
}

.ui-pager__select {
  height: 2rem;
  padding: 0 1.7rem 0 0.55rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.25rem;
  background: var(--admin-bar-surface)
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%230b2d4a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5L6 7.5 9 4.5'/%3E%3C/svg%3E")
    no-repeat right 0.45rem center;
  color: var(--admin-bar-text);
  font: inherit;
  font-size: 0.82rem;
  appearance: none;
}

.ui-pager__select:focus {
  outline: none;
  border-color: var(--color-navy);
  box-shadow: 0 0 0 3px var(--color-navy-soft);
}

.ui-pager__status,
.ui-pager__page {
  margin: 0;
  font-size: 0.82rem;
  color: var(--admin-bar-muted);
  font-variant-numeric: tabular-nums;
}

.ui-pager__controls {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}

.ui-pager__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.25rem;
  background: var(--admin-bar-surface);
  color: var(--admin-bar-text);
  cursor: pointer;
}

.ui-pager__button:hover:not(:disabled) {
  background: var(--admin-bar-surface-hover);
  border-color: var(--admin-bar-border-strong);
}

.ui-pager__button:disabled {
  opacity: 0.45;
  cursor: default;
}

.ui-pager__button:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 2px;
}

@media (max-width: 640px) {
  .ui-pager {
    justify-content: center;
  }
}

/* === pluriworks-page-manager.css === */
.page-manager {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.page-manager__name {
  font-weight: 600;
  color: var(--color-navy);
}

.page-manager__url {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.84rem;
}

.page-manager__roles {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
}

.page-manager__role {
  display: inline-flex;
  align-items: center;
  height: 1.3rem;
  padding: 0 0.4rem;
  border-radius: 0.2rem;
  background: var(--color-navy-soft);
  color: var(--color-navy);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.page-manager__bool {
  display: inline-flex;
  align-items: center;
  height: 1.3rem;
  padding: 0 0.45rem;
  border-radius: 0.2rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.page-manager__bool--yes {
  background: var(--color-navy-soft);
  color: var(--color-navy);
}

.page-manager__bool--no {
  background: color-mix(in srgb, #b42318 12%, white);
  color: #8f1d16;
}

.page-manager-edit {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.page-manager-edit__code-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

/* === pluriworks-view.css === */
/* Active workspace panel chrome (shared by chat + admin views). */

.pluriworks-view {
  display: none;
  min-height: inherit;
  padding: 1.25rem 1.35rem 1.75rem;
}

.pluriworks-view.is-active {
  display: block;
}

.pluriworks-view__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}

.pluriworks-view__title {
  margin: 0;
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--color-navy);
}

.pluriworks-view__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45rem;
}

@media (max-width: 48rem) {
  .pluriworks-view {
    padding: 1rem 0.9rem 1.35rem;
  }

  .pluriworks-view__header {
    flex-direction: column;
    align-items: stretch;
    gap: 0.75rem;
  }

  .pluriworks-view__title {
    font-size: 1.2rem;
  }

  .pluriworks-view__actions {
    justify-content: flex-start;
  }

  .pluriworks-view__actions .ui-button {
    min-height: var(--touch-min, 2.75rem);
  }
}

/* === pluriworks-event-settings.css === */
/* Settings panels used by portal admin integrations (from flexpage event-settings). */

.event-settings {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  width: 100%;
  max-width: none;
}

.event-settings__section {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  width: 100%;
  max-width: none;
  padding: 1rem 1.1rem 1.15rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.35rem;
  background: rgba(255, 255, 255, 0.88);
  box-sizing: border-box;
}

/* Connection pages use the section as the form root (no outer .event-settings). */
form.event-settings__section {
  width: 100%;
  max-width: none;
}

.event-settings__title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-navy);
}

.event-settings__section-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1rem;
}

.event-settings__link {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--color-orange-deep);
  text-decoration: none;
}

.event-settings__link:hover {
  text-decoration: underline;
}

.event-settings__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0.85rem 1rem;
}

.event-settings__grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.event-settings__grid .field--span-all {
  grid-column: 1 / -1;
}

@media (max-width: 40rem) {
  .event-settings__grid--2 {
    grid-template-columns: minmax(0, 1fr);
  }
}

.event-settings__switches {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.event-settings__switches .ui-switch {
  justify-content: flex-start;
  padding: 0.45rem 0.55rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.3rem;
  background: #fff;
}

.event-settings__status {
  margin: 0;
  min-height: 1.2rem;
  font-size: 0.82rem;
  color: var(--admin-bar-muted);
}

.event-settings__status:empty {
  display: none;
  min-height: 0;
}

/* Selects match :read-only in Chromium — do not grey them out like true
   read-only text fields. Scope muted styling to text controls + disabled. */
input.field__input:disabled,
input.field__input:read-only,
textarea.field__input:disabled,
textarea.field__input:read-only,
textarea.field__textarea:disabled,
textarea.field__textarea:read-only,
.field__select:disabled,
select.field__input:disabled {
  opacity: 0.7;
  cursor: default;
  background: rgba(247, 249, 252, 0.95);
}

.ui-switch:has(.ui-switch__input:disabled) {
  opacity: 0.6;
  cursor: not-allowed;
  pointer-events: none;
}

/* === portal-shell.css === */
/* Portal shell glue on top of flexpage-redesign styleset */

/* Auth panel chrome lives in portal-auth.css (login / 2FA / set-password). */

body.body--auth {
  padding-top: 0;
}

.portal-stage {
  min-height: calc(var(--app-vh, 100vh) - var(--admin-bar-height) - var(--safe-top, 0px));
}

/* Modals are rendered inside the stage. While open, lift the stage above the
   sticky nav and resize seam so fixed overlays are not trapped underneath. */
body.ui-modal-open .pluriworks-stage {
  z-index: 9;
}

body.ui-modal-open .pluriworks-nav,
body.ui-modal-open .pluriworks > .ui-split__handle {
  z-index: 1;
  pointer-events: none;
}

.portal-stage .pluriworks-view {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.portal-stage .pluriworks-view__header {
  margin-bottom: 0;
}

.portal-stage .portal-integration-note {
  margin-bottom: 0;
}

/* Icon rail: pull page chrome up — avoid a tall empty band above the title. */
body.is-nav-icon-only .portal-stage .pluriworks-view {
  gap: 0.75rem;
  padding-top: 0.65rem;
  padding-left: max(0.75rem, var(--safe-left, 0px));
  padding-right: max(0.75rem, var(--safe-right, 0px));
  padding-bottom: max(1rem, var(--safe-bottom, 0px));
  min-height: 0;
}

body.is-nav-icon-only .portal-stage .pluriworks-view__title {
  font-size: 1.2rem;
}

/* Anchors: kill underline only. Color is owned entirely by pluriworks-nav
   (.pluriworks-nav__item / .is-active) so a later :link/:visited rule cannot
   paint the navy active pill with the same navy text color. */
a.pluriworks-nav__item {
  text-decoration: none;
  box-sizing: border-box;
}

/* Pin Legal at the bottom of the sidebar when the rail is tall enough. */
.pluriworks-nav {
  min-height: calc(var(--app-vh, 100vh) - var(--admin-bar-height, 3.25rem) - var(--safe-top, 0px));
}

.pluriworks-nav__menu {
  flex: 1 1 auto;
}

.pluriworks-nav__category--footer {
  margin-top: auto;
  padding-top: 0.35rem;
}

.pluriworks-nav__category--app {
  padding-top: 0.35rem;
}

.pluriworks-nav__category--app[hidden],
.pluriworks-nav__item[hidden] {
  display: none !important;
}

a.page-manager__name {
  text-decoration: none;
}

a.page-manager__name:hover {
  text-decoration: underline;
}

a.ui-table__action {
  text-decoration: none;
}

@media (max-width: 56rem) {
  .portal-stage .pluriworks-view__header {
    flex-direction: column;
    align-items: stretch;
  }

  .portal-stage .pluriworks-view__actions {
    justify-content: flex-start;
  }
}

.portal-form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin-top: 0.5rem;
}

.portal-section-actions {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem;
}

.portal-section-lede {
  margin: 0 0 0.85rem;
  color: var(--admin-bar-muted);
  font-size: 0.875rem;
  max-width: 56rem;
}

.portal-integration-note {
  margin: 0 0 1.1rem;
  padding: 0.9rem 1rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.35rem;
  background: rgba(255, 255, 255, 0.88);
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}

.portal-integration-note__title {
  margin: 0 0 0.65rem;
  color: var(--color-navy);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.portal-integration-note__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.85rem 1.5rem;
  margin: 0;
}

@media (max-width: 48rem) {
  .portal-integration-note__list {
    grid-template-columns: minmax(0, 1fr);
  }
}

.portal-integration-note__row {
  display: grid;
  gap: 0.25rem;
  min-width: 0;
}

.portal-integration-note__row dt {
  color: var(--admin-bar-muted);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.portal-integration-note__row dd {
  margin: 0;
  color: var(--admin-bar-text);
  font-size: 0.875rem;
  line-height: 1.45;
  max-width: none;
}

.portal-integration-note__row ul {
  margin: 0.15rem 0 0;
  padding-left: 1.1rem;
}

.portal-integration-note__row li + li {
  margin-top: 0.25rem;
}

.portal-section-actions .page-manager__role {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 2.2rem;
  padding: 0 0.75rem;
  border-radius: 0.3rem;
  font-size: 0.78rem;
}

.portal-field-value {
  display: flex;
  align-items: center;
  min-height: 2.35rem;
  color: var(--admin-bar-text);
  font-size: 0.875rem;
}

.portal-status-chip {
  height: 2.35rem;
  padding: 0 0.75rem;
  border-radius: 0.3rem;
  font-size: 0.78rem;
}

.event-settings__section .event-settings__grid > .field {
  min-width: 0;
}

.event-settings__grid--4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 64rem) {
  .event-settings__grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 36rem) {
  .event-settings__grid--4 {
    grid-template-columns: minmax(0, 1fr);
  }
}

.admin-bar__brand {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  color: var(--color-navy);
  text-decoration: none;
  font-weight: 600;
  font-size: 0.95rem;
}

.admin-bar__brand-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.85rem;
  height: 1.85rem;
  border-radius: 0.35rem;
  border: 1px solid color-mix(in srgb, var(--color-orange) 28%, var(--admin-bar-border));
  background: var(--color-orange-soft);
  color: var(--color-orange-deep);
  font-size: 0.85rem;
  line-height: 1;
  transition:
    background 140ms ease,
    border-color 140ms ease,
    color 140ms ease;
}

.admin-bar__brand:hover .admin-bar__brand-mark {
  background: color-mix(in srgb, var(--color-orange) 22%, white);
  border-color: color-mix(in srgb, var(--color-orange) 40%, var(--admin-bar-border));
}

.admin-bar__brand:focus-visible {
  outline: 2px solid var(--color-orange);
  outline-offset: 3px;
  border-radius: 0.25rem;
}

/* === portal-pwa.css === */
/* Install-help dialog — compact sheet, not a full-height empty body. */

.ui-modal__dialog--pwa-help {
  width: min(26rem, 100%);
  max-height: min(34rem, calc(var(--app-vh, 100vh) - 2.5rem));
  height: auto;
}

.ui-modal__dialog--pwa-help .ui-modal__body {
  flex: 0 1 auto;
  padding: 1.1rem 1.15rem 1.2rem;
}

.portal-pwa-help {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}

.portal-pwa-help__hero {
  display: flex;
  justify-content: center;
}

.portal-pwa-help__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 0.75rem;
  background: color-mix(in srgb, var(--color-navy, #0b2d4a) 10%, #fff);
  color: var(--color-navy, #0b2d4a);
  font-size: 1.15rem;
}

.portal-pwa-help__steps {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  counter-reset: pwa-step;
}

.portal-pwa-help__steps > li {
  position: relative;
  margin: 0;
  padding: 0.65rem 0.75rem 0.65rem 2.55rem;
  border: 1px solid var(--admin-bar-border, #d5dde6);
  border-radius: 0.45rem;
  background: color-mix(in srgb, #fff 92%, transparent);
  color: var(--admin-bar-text, #0b2d4a);
  font-size: 0.9rem;
  line-height: 1.45;
  counter-increment: pwa-step;
}

.portal-pwa-help__steps > li::before {
  content: counter(pwa-step);
  position: absolute;
  left: 0.65rem;
  top: 0.65rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.45rem;
  height: 1.45rem;
  border-radius: 999px;
  background: var(--color-navy, #0b2d4a);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 650;
  line-height: 1;
}

.portal-pwa-help__alt {
  color: var(--admin-bar-muted, #5b6b7c);
}

.portal-pwa-help__note,
.portal-pwa-help__link {
  margin: 0;
  color: var(--admin-bar-muted, #5b6b7c);
  font-size: 0.84rem;
  line-height: 1.45;
}

.portal-pwa-help__link a {
  color: var(--color-navy, #0b2d4a);
  text-underline-offset: 0.12em;
}

@media (max-width: 40rem) {
  .ui-modal__dialog--pwa-help {
    width: 100%;
    max-height: min(78dvh, 30rem);
    margin-top: auto;
  }
}

/* === motion.css === */
/* Shared portal motion — soft presence, not noise. */

:root {
  --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-ease-out: cubic-bezier(0.33, 1, 0.68, 1);
  --motion-fast: 140ms;
  --motion-med: 280ms;
  --motion-slow: 420ms;
  --motion-rise: 0.55rem;
}

@keyframes motion-rise {
  from {
    opacity: 0;
    transform: translateY(var(--motion-rise));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes motion-fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes motion-slide-down {
  from {
    opacity: 0;
    transform: translateY(-0.4rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes motion-slide-up {
  from {
    opacity: 0;
    transform: translateY(0.55rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* —— Page chrome —— */

.pluriworks-nav__menu {
  animation: motion-fade calc(var(--motion-slow) + 40ms) var(--motion-ease) both;
}

.pluriworks-view.is-active {
  animation: motion-rise var(--motion-slow) var(--motion-ease) both;
}

/* Chat keeps its own choreography — avoid a second rise. */
body.body--chat .pluriworks-view.is-active {
  animation: none;
}

.portal-auth__panel,
.portal-auth--legal .portal-legal {
  animation: motion-rise 520ms var(--motion-ease) both;
}

.portal-cookie-banner {
  animation: motion-slide-up var(--motion-slow) var(--motion-ease) both;
}

/* Optional scroll / late-mount reveals */
[data-motion="reveal"] {
  opacity: 0;
  transform: translateY(0.45rem);
  transition:
    opacity var(--motion-slow) var(--motion-ease),
    transform var(--motion-slow) var(--motion-ease);
}

[data-motion="reveal"].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger siblings marked for motion */
[data-motion-stagger] > [data-motion="reveal"].is-visible:nth-child(1) {
  transition-delay: 0ms;
}
[data-motion-stagger] > [data-motion="reveal"].is-visible:nth-child(2) {
  transition-delay: 40ms;
}
[data-motion-stagger] > [data-motion="reveal"].is-visible:nth-child(3) {
  transition-delay: 80ms;
}
[data-motion-stagger] > [data-motion="reveal"].is-visible:nth-child(4) {
  transition-delay: 120ms;
}
[data-motion-stagger] > [data-motion="reveal"].is-visible:nth-child(5) {
  transition-delay: 160ms;
}
[data-motion-stagger] > [data-motion="reveal"].is-visible:nth-child(n + 6) {
  transition-delay: 200ms;
}

/* —— Controls —— */

.ui-button,
.admin-bar__button,
.admin-action {
  transition:
    background var(--motion-fast) ease,
    border-color var(--motion-fast) ease,
    color var(--motion-fast) ease,
    transform var(--motion-fast) var(--motion-ease-out),
    box-shadow var(--motion-fast) ease;
}

.ui-button:hover:not(:disabled),
.admin-bar__button:hover,
.admin-action:hover {
  transform: translateY(-1px);
}

.ui-button:active:not(:disabled),
.admin-bar__button:active,
.admin-action:active {
  transform: translateY(0);
}

.ui-button--primary:hover:not(:disabled) {
  box-shadow: 0 0.35rem 0.85rem color-mix(in srgb, var(--color-navy, #0b2d4a) 22%, transparent);
}

/* —— Surfaces —— */

.ui-table tbody tr {
  transition: background-color var(--motion-fast) ease;
}

.ui-tabs__tab {
  transition:
    color var(--motion-fast) ease,
    background var(--motion-fast) ease,
    border-bottom-color var(--motion-fast) ease,
    transform var(--motion-fast) var(--motion-ease-out);
}

.ui-tabs__tab:active {
  transform: translateY(1px);
}

.ui-tabs__panel.is-active:not([hidden]) {
  animation: motion-fade var(--motion-med) var(--motion-ease) both;
}

.field__input,
.field__textarea,
.field__select,
.field__control {
  transition:
    border-color var(--motion-fast) ease,
    box-shadow var(--motion-fast) ease,
    background-color var(--motion-fast) ease;
}

.admin-block,
.portal-integration-note,
.pluriworks-view__header {
  animation: motion-rise calc(var(--motion-slow) + 40ms) var(--motion-ease) both;
}

.pluriworks-view__header {
  animation-delay: 30ms;
}

.admin-block,
.portal-integration-note {
  animation-delay: 70ms;
}

/* Parent view already rises — don't nest a second lift inside it. */
.pluriworks-view.is-active .pluriworks-view__header,
.pluriworks-view.is-active .admin-block,
.pluriworks-view.is-active .portal-integration-note {
  animation: none;
}

/* Dynamically filled lists — soft enter when rows appear */
.portal-docs__list > *,
.portal-faq__list > *,
.portal-suggestions__list > *,
.portal-people__list > *,
.portal-docs__cat-list > .portal-docs__rail-btn,
.portal-docs__tag-list > .portal-docs__tag-chip {
  animation: motion-rise var(--motion-med) var(--motion-ease) both;
}

.portal-docs__list > *:nth-child(1),
.portal-faq__list > *:nth-child(1),
.portal-suggestions__list > *:nth-child(1),
.portal-people__list > *:nth-child(1),
.portal-docs__cat-list > .portal-docs__rail-btn:nth-child(1),
.portal-docs__tag-list > .portal-docs__tag-chip:nth-child(1) {
  animation-delay: 0ms;
}
.portal-docs__list > *:nth-child(2),
.portal-faq__list > *:nth-child(2),
.portal-suggestions__list > *:nth-child(2),
.portal-people__list > *:nth-child(2),
.portal-docs__cat-list > .portal-docs__rail-btn:nth-child(2),
.portal-docs__tag-list > .portal-docs__tag-chip:nth-child(2) {
  animation-delay: 35ms;
}
.portal-docs__list > *:nth-child(3),
.portal-faq__list > *:nth-child(3),
.portal-suggestions__list > *:nth-child(3),
.portal-people__list > *:nth-child(3),
.portal-docs__cat-list > .portal-docs__rail-btn:nth-child(3),
.portal-docs__tag-list > .portal-docs__tag-chip:nth-child(3) {
  animation-delay: 70ms;
}
.portal-docs__list > *:nth-child(4),
.portal-faq__list > *:nth-child(4),
.portal-suggestions__list > *:nth-child(4),
.portal-people__list > *:nth-child(4),
.portal-docs__cat-list > .portal-docs__rail-btn:nth-child(4),
.portal-docs__tag-list > .portal-docs__tag-chip:nth-child(4) {
  animation-delay: 105ms;
}
.portal-docs__list > *:nth-child(5),
.portal-faq__list > *:nth-child(5),
.portal-suggestions__list > *:nth-child(5),
.portal-people__list > *:nth-child(5),
.portal-docs__cat-list > .portal-docs__rail-btn:nth-child(5),
.portal-docs__tag-list > .portal-docs__tag-chip:nth-child(5) {
  animation-delay: 140ms;
}
.portal-docs__list > *:nth-child(n + 6),
.portal-faq__list > *:nth-child(n + 6),
.portal-suggestions__list > *:nth-child(n + 6),
.portal-people__list > *:nth-child(n + 6),
.portal-docs__cat-list > .portal-docs__rail-btn:nth-child(n + 6),
.portal-docs__tag-list > .portal-docs__tag-chip:nth-child(n + 6) {
  animation-delay: 160ms;
}

/* Forced replay after filter clicks (folders / categories / tags) */
.motion-list-enter {
  animation: motion-rise var(--motion-med) var(--motion-ease) both !important;
  animation-delay: var(--motion-list-delay, 0ms) !important;
}

/* Tenant / org data tables — soft row settle on search, sort, page */
.pluriworks-view .ui-data-table tbody tr {
  animation: motion-fade calc(var(--motion-med) + 20ms) var(--motion-ease) both;
}

.pluriworks-view .ui-data-table tbody tr:nth-child(1) {
  animation-delay: 0ms;
}
.pluriworks-view .ui-data-table tbody tr:nth-child(2) {
  animation-delay: 25ms;
}
.pluriworks-view .ui-data-table tbody tr:nth-child(3) {
  animation-delay: 50ms;
}
.pluriworks-view .ui-data-table tbody tr:nth-child(4) {
  animation-delay: 75ms;
}
.pluriworks-view .ui-data-table tbody tr:nth-child(5) {
  animation-delay: 100ms;
}
.pluriworks-view .ui-data-table tbody tr:nth-child(n + 6) {
  animation-delay: 120ms;
}

/* —— Workspace / Organisation action chrome —— */

.portal-docs__rail-btn,
.portal-docs__tag-chip,
.portal-docs__visibility .ui-button,
.portal-faq__visibility .ui-button,
.portal-suggestions__status .ui-button {
  transition:
    background var(--motion-fast) ease,
    border-color var(--motion-fast) ease,
    color var(--motion-fast) ease,
    transform var(--motion-fast) var(--motion-ease-out),
    box-shadow var(--motion-fast) ease;
}

.portal-docs__rail-btn:active,
.portal-docs__tag-chip:active,
.portal-docs__visibility .ui-button:active:not(:disabled),
.portal-faq__visibility .ui-button:active:not(:disabled),
.portal-suggestions__status .ui-button:active:not(:disabled) {
  transform: scale(0.97);
}

.portal-people__row,
.portal-docs__item,
.portal-vault__card,
.portal-faq__item,
.portal-suggestions__item {
  transition:
    border-color var(--motion-fast) ease,
    background-color var(--motion-fast) ease,
    transform var(--motion-fast) var(--motion-ease-out),
    box-shadow var(--motion-fast) ease;
}

.portal-people__row:hover,
.portal-docs__item:hover,
.portal-vault__card:hover,
.portal-faq__item:hover,
.portal-suggestions__item:hover {
  transform: translateY(-1px);
  box-shadow: 0 0.35rem 0.9rem color-mix(in srgb, #071f36 8%, transparent);
}

.portal-people__row:active,
.portal-docs__item:active,
.portal-vault__card:active,
.portal-faq__item:active,
.portal-suggestions__item:active {
  transform: translateY(0);
  box-shadow: none;
}

.portal-people__row > .fa-chevron-right {
  transition: transform var(--motion-fast) var(--motion-ease-out);
}

.portal-people__row:hover > .fa-chevron-right {
  transform: translateX(0.15rem);
}

.ui-pager {
  animation: motion-fade var(--motion-med) var(--motion-ease) both;
}

/* —— Action pulses (bespoke per interaction; no sparkles) —— */

.motion-pulse {
  position: relative;
  overflow: visible;
  transform-origin: center;
}

/* Filter / rail chip selected — quick press + accent wash */
.motion-pulse.is-pulse--select {
  animation: motion-pulse-select 320ms var(--motion-ease-out) both;
}

.motion-pulse.is-pulse--select > i {
  display: inline-block;
  animation: motion-pulse-select-icon 320ms var(--motion-ease-out) both;
}

/* Create succeeded — soft lift + warm underline draw */
.motion-pulse.is-pulse--create {
  animation: motion-pulse-create 480ms var(--motion-ease) both;
}

.motion-pulse.is-pulse--create::after {
  content: "";
  position: absolute;
  left: 12%;
  right: 12%;
  bottom: 0.15rem;
  height: 2px;
  border-radius: 1px;
  background: var(--color-orange, #c45c26);
  transform-origin: center;
  animation: motion-pulse-underline 480ms var(--motion-ease) both;
  pointer-events: none;
}

.motion-pulse.is-pulse--create > i {
  display: inline-block;
  animation: motion-pulse-create-icon 480ms var(--motion-ease) both;
}

/* Affirmative confirm — calm green nod */
.motion-pulse.is-pulse--confirm {
  animation: motion-pulse-confirm 420ms var(--motion-ease) both;
}

.motion-pulse.is-pulse--confirm > i {
  display: inline-block;
  animation: motion-pulse-confirm-icon 420ms var(--motion-ease) both;
}

/* Soft acknowledge — barely-there fade scale */
.motion-pulse.is-pulse--soft {
  animation: motion-pulse-soft 280ms var(--motion-ease-out) both;
}

@keyframes motion-pulse-select {
  0% {
    transform: scale(1);
    box-shadow: none;
  }
  35% {
    transform: scale(0.97);
    background-color: color-mix(
      in srgb,
      var(--color-navy, #0b2d4a) 8%,
      transparent
    );
  }
  100% {
    transform: scale(1);
    box-shadow: none;
  }
}

@keyframes motion-pulse-select-icon {
  0%,
  100% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(1px);
  }
}

@keyframes motion-pulse-create {
  0% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(-2px);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes motion-pulse-create-icon {
  0% {
    transform: scale(1) translateY(0);
  }
  35% {
    transform: scale(1.12) translateY(-1px);
  }
  100% {
    transform: scale(1) translateY(0);
  }
}

@keyframes motion-pulse-underline {
  0% {
    opacity: 0;
    transform: scaleX(0.2);
  }
  45% {
    opacity: 1;
    transform: scaleX(1);
  }
  100% {
    opacity: 0;
    transform: scaleX(0.85);
  }
}

@keyframes motion-pulse-confirm {
  0% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.03);
    background-color: color-mix(in srgb, var(--color-success, #2f8f5b) 12%, transparent);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes motion-pulse-confirm-icon {
  0% {
    transform: scale(1);
    color: inherit;
  }
  40% {
    transform: scale(1.18);
    color: var(--color-success, #2f8f5b);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes motion-pulse-soft {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  45% {
    opacity: 0.85;
    transform: scale(0.985);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

/* Modals — slightly softer settle than the base styleset default */
.ui-modal-backdrop {
  transition:
    opacity var(--motion-med) var(--motion-ease),
    visibility var(--motion-med) var(--motion-ease);
}

.ui-modal {
  transition:
    opacity var(--motion-med) var(--motion-ease),
    visibility var(--motion-med) var(--motion-ease);
}

.ui-modal__dialog {
  transition: transform 260ms var(--motion-ease);
}

.ui-modal.is-open .ui-modal__dialog {
  transform: translateY(0) scale(1);
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --motion-rise: 0;
  }

  .pluriworks-nav__menu,
  .pluriworks-view.is-active,
  .portal-auth__panel,
  .portal-auth--legal .portal-legal,
  .portal-cookie-banner,
  .admin-block,
  .portal-integration-note,
  .pluriworks-view__header,
  .ui-tabs__panel.is-active:not([hidden]),
  .portal-docs__list > *,
  .portal-faq__list > *,
  .portal-suggestions__list > *,
  .portal-people__list > *,
  .portal-docs__cat-list > .portal-docs__rail-btn,
  .portal-docs__tag-list > .portal-docs__tag-chip,
  .pluriworks-view .ui-data-table tbody tr,
  .ui-pager,
  .motion-list-enter {
    animation: none !important;
  }

  [data-motion="reveal"] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .ui-button:hover:not(:disabled),
  .admin-bar__button:hover,
  .admin-action:hover,
  .ui-button:active:not(:disabled),
  .admin-bar__button:active,
  .admin-action:active,
  .ui-button--primary:hover:not(:disabled),
  .portal-docs__rail-btn:active,
  .portal-docs__tag-chip:active,
  .portal-docs__visibility .ui-button:active:not(:disabled),
  .portal-faq__visibility .ui-button:active:not(:disabled),
  .portal-suggestions__status .ui-button:active:not(:disabled),
  .portal-people__row:hover,
  .portal-people__row:active,
  .portal-docs__item:hover,
  .portal-docs__item:active,
  .portal-vault__card:hover,
  .portal-vault__card:active,
  .portal-faq__item:hover,
  .portal-faq__item:active,
  .portal-suggestions__item:hover,
  .portal-suggestions__item:active,
  .portal-people__row:hover > .fa-chevron-right,
  .ui-tabs__tab:active {
    transform: none;
    box-shadow: none;
  }

  .motion-pulse.is-pulse--select,
  .motion-pulse.is-pulse--create,
  .motion-pulse.is-pulse--confirm,
  .motion-pulse.is-pulse--soft,
  .motion-pulse.is-pulse--select > i,
  .motion-pulse.is-pulse--create > i,
  .motion-pulse.is-pulse--confirm > i,
  .motion-pulse.is-pulse--create::after {
    animation: none !important;
  }
}

/* === portal-cookies.css === */
.portal-cookie-banner {
  position: fixed;
  z-index: 40;
  right: max(1rem, var(--safe-right, 0px));
  bottom: max(1rem, var(--safe-bottom, 0px));
  left: max(1rem, var(--safe-left, 0px));
  width: min(28rem, calc(100% - 2rem));
  margin-inline: auto;
  padding: 1rem 1.05rem 1.05rem;
  border: 1px solid var(--admin-bar-border);
  border-radius: 0.4rem;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: var(--admin-bar-shadow, 0 10px 30px rgba(11, 45, 74, 0.12));
  color: var(--admin-bar-text);
}

.portal-cookie-banner[hidden] {
  display: none !important;
}

.portal-cookie-banner__title {
  margin: 0 0 0.35rem;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-navy);
}

.portal-cookie-banner__text {
  margin: 0 0 0.85rem;
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--admin-bar-muted);
}

.portal-cookie-banner__text a {
  color: var(--color-navy);
  font-weight: 600;
  text-underline-offset: 0.12em;
}

.portal-cookie-banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}

@media (min-width: 40rem) {
  .portal-cookie-banner {
    margin-inline: 0;
    margin-left: auto;
    left: auto;
  }
}

@media (max-width: 40rem) {
  .portal-cookie-banner__actions .ui-button {
    min-height: var(--touch-min, 2.75rem);
    flex: 1 1 auto;
    justify-content: center;
  }
}
