/* SidelineWorks shared interaction primitives — UX/UI Slice 1.3. */

:root {
  --slw-detail-width: 420px;
  --slw-layer-z: 130;
  --slw-dialog-z: 150;
}

/* Legacy role layouts no longer reserve an empty right column. */
body[data-slw-shell-role="at"] .at-desktop-right,
body[data-slw-shell-role="coach"] .coach-desktop-right,
body[data-slw-shell-role="at"] .at-mobile-detail-overlay,
body[data-slw-shell-role="coach"] :is(.mobile-sheet, .mobile-sheet-overlay) {
  display: none !important;
}

body[data-slw-shell-role="at"] .at-desktop-grid,
body[data-slw-shell-role="coach"] .coach-desktop-grid {
  display: block;
}

body[data-slw-shell-role="at"] .at-desktop-left,
body[data-slw-shell-role="coach"] .coach-desktop-left {
  width: 100%;
  max-width: none;
  min-width: 0;
}

.slw-adaptive-detail,
.slw-dialog-layer {
  position: fixed;
  inset: 0;
}

.slw-adaptive-detail {
  z-index: var(--slw-layer-z);
  pointer-events: none;
}

.slw-adaptive-detail[hidden],
.slw-dialog-layer[hidden] {
  display: none;
}

.slw-adaptive-detail__backdrop,
.slw-dialog-layer__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(2, 5, 14, 0.68);
  opacity: 0;
  transition: opacity var(--slw-motion-duration-fast, 120ms) var(--slw-motion-easing-standard, ease);
}

.slw-adaptive-detail__surface {
  position: absolute;
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--slw-color-border, #2b354f);
  background: var(--slw-color-surface, #0D1326);
  color: var(--slw-color-text-primary, #F7F8FC);
  box-shadow: -20px 0 60px rgba(0, 0, 0, 0.34);
  pointer-events: auto;
  transition: transform var(--slw-motion-duration-standard, 180ms) var(--slw-motion-easing-standard, ease),
    opacity var(--slw-motion-duration-fast, 120ms) var(--slw-motion-easing-standard, ease);
}

.slw-adaptive-detail__handle {
  display: none;
  width: 40px;
  height: 4px;
  margin: 8px auto 0;
  border-radius: 999px;
  background: var(--slw-color-border-strong, #3a4665);
}

.slw-adaptive-detail__header,
.slw-dialog__header {
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 16px 12px 20px;
  border-block-end: 1px solid var(--slw-color-border, #2b354f);
}

.slw-adaptive-detail__header h2,
.slw-dialog__header h2 {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  font: 700 1rem/1.25 var(--slw-font-heading, "Space Grotesk", sans-serif);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.slw-adaptive-detail__close,
.slw-dialog__close {
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1px solid var(--slw-color-border, #2b354f);
  border-radius: 10px;
  background: var(--slw-color-surface-subtle, rgba(247, 248, 252, 0.06));
  color: var(--slw-color-text-muted, #AEB6C9);
  font: 500 1.4rem/1 var(--slw-font-body, Inter, sans-serif);
  cursor: pointer;
}

.slw-adaptive-detail__close svg {
  width: 20px;
  height: 20px;
}

.slw-adaptive-detail__close:hover,
.slw-dialog__close:hover {
  border-color: var(--slw-color-focus, #00E6C3);
  color: var(--slw-color-text-primary, #F7F8FC);
}

.slw-adaptive-detail__signal {
  padding: 9px 16px;
  border-block-end: 1px solid var(--slw-color-border, #2b354f);
  color: var(--slw-color-status-restricted-foreground, #F59E0B);
  background: color-mix(in srgb, var(--slw-color-status-restricted, #F59E0B) 10%, transparent);
  font: 600 0.75rem/1.35 var(--slw-font-body, Inter, sans-serif);
}

.slw-adaptive-detail__signal[hidden] {
  display: none;
}

.slw-adaptive-detail__body {
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 16px;
}

.slw-adaptive-detail[data-mode="pane"] {
  inset-inline-start: auto;
  width: var(--slw-detail-width);
}

.slw-adaptive-detail[data-mode="pane"] .slw-adaptive-detail__backdrop {
  display: none;
}

.slw-adaptive-detail[data-mode="pane"] .slw-adaptive-detail__surface {
  inset: 72px 0 0 auto;
  width: var(--slw-detail-width);
  border-block: 0;
  border-inline-end: 0;
  border-radius: 0;
}

body.slw-adaptive-detail-pane-open .slw-shell-workspace {
  padding-inline-end: calc(var(--slw-detail-width) + clamp(14px, 1.7vw, 28px));
}

.slw-adaptive-detail[data-mode="sheet"],
.slw-adaptive-detail[data-mode="fullscreen"] {
  pointer-events: auto;
}

.slw-adaptive-detail[data-mode="sheet"] .slw-adaptive-detail__backdrop,
.slw-adaptive-detail[data-mode="fullscreen"] .slw-adaptive-detail__backdrop {
  opacity: 1;
}

.slw-adaptive-detail[data-mode="sheet"] .slw-adaptive-detail__surface {
  inset: auto 12px 12px;
  max-height: min(86dvh, 820px);
  border-radius: 18px;
  box-shadow: 0 -18px 60px rgba(0, 0, 0, 0.42);
}

.slw-adaptive-detail[data-mode="sheet"] .slw-adaptive-detail__handle {
  display: block;
}

.slw-adaptive-detail[data-mode="fullscreen"] .slw-adaptive-detail__surface {
  inset: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.slw-adaptive-detail[data-mode="fullscreen"] .slw-adaptive-detail__header {
  padding-block-start: max(12px, env(safe-area-inset-top, 0px));
}

.slw-adaptive-detail[data-mode="fullscreen"] .slw-adaptive-detail__body {
  padding-block-end: max(18px, env(safe-area-inset-bottom, 0px));
}

/* Shared state surface. */
.slw-state {
  width: 100%;
  min-height: 168px;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 20px;
  border: 1px solid var(--slw-color-border, #2b354f);
  border-radius: 14px;
  background: var(--slw-color-surface, #0D1326);
  color: var(--slw-color-text-primary, #F7F8FC);
}

.slw-state__icon {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: var(--slw-color-surface-subtle, rgba(247, 248, 252, 0.06));
  color: var(--slw-color-text-muted, #AEB6C9);
}

.slw-state__icon svg {
  width: 24px;
  height: 24px;
}

.slw-state--loading .slw-state__icon svg,
.slw-state--pending .slw-state__icon svg {
  animation: slw-state-spin 1.2s linear infinite;
}

.slw-state--error .slw-state__icon,
.slw-state--denied .slw-state__icon,
.slw-state--conflict .slw-state__icon {
  color: var(--slw-color-status-out-foreground, #EF4444);
  background: color-mix(in srgb, var(--slw-color-status-out, #EF4444) 12%, transparent);
}

.slw-state--stale .slw-state__icon,
.slw-state--offline .slw-state__icon,
.slw-state--pending .slw-state__icon {
  color: var(--slw-color-status-restricted-foreground, #F59E0B);
  background: color-mix(in srgb, var(--slw-color-status-restricted, #F59E0B) 12%, transparent);
}

.slw-state--success .slw-state__icon {
  color: var(--slw-color-status-cleared-foreground, #22C55E);
  background: color-mix(in srgb, var(--slw-color-status-cleared, #22C55E) 12%, transparent);
}

.slw-state__copy {
  min-width: 0;
}

.slw-state__title {
  margin: 0;
  font: 700 0.95rem/1.3 var(--slw-font-heading, "Space Grotesk", sans-serif);
}

.slw-state__description,
.slw-state__detail {
  margin: 5px 0 0;
  color: var(--slw-color-text-muted, #AEB6C9);
  font: 400 0.82rem/1.5 var(--slw-font-body, Inter, sans-serif);
}

.slw-state__detail {
  font-size: 0.74rem;
}

.slw-state__action,
.slw-task-preview__action,
.slw-dialog__button {
  min-height: 44px;
  padding: 9px 14px;
  border: 1px solid var(--slw-color-border-strong, #3a4665);
  border-radius: 10px;
  background: transparent;
  color: var(--slw-color-text-primary, #F7F8FC);
  font: 650 0.78rem/1.2 var(--slw-font-body, Inter, sans-serif);
  cursor: pointer;
}

.slw-state__action:hover,
.slw-task-preview__action:hover,
.slw-dialog__button--secondary:hover {
  background: var(--slw-color-surface-hover, #18213b);
}

@keyframes slw-state-spin {
  to { transform: rotate(360deg); }
}

/* Segmented controls and filters. */
[data-slw-segmented],
[data-slw-filter-group] {
  display: inline-flex;
  align-items: stretch;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--slw-color-border, #2b354f);
  border-radius: 12px;
  background: var(--slw-color-surface-subtle, rgba(247, 248, 252, 0.06));
}

[data-slw-segmented] > button,
[data-slw-filter-group] > button {
  min-height: 44px;
  padding: 8px 14px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--slw-color-text-muted, #AEB6C9);
  font: 650 0.78rem/1.2 var(--slw-font-body, Inter, sans-serif);
  cursor: pointer;
}

[data-slw-segmented] > button[aria-pressed="true"],
[data-slw-filter-group] > button[aria-pressed="true"] {
  border-color: color-mix(in srgb, var(--slw-color-focus, #00E6C3) 45%, transparent);
  background: color-mix(in srgb, var(--slw-color-focus, #00E6C3) 12%, transparent);
  color: var(--slw-color-text-primary, #F7F8FC);
}

/* Existing status badges gain a non-color cue. */
.slw-status-badge__dot {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: currentColor;
}

.slw-status-badge--out .slw-status-badge__dot {
  border-radius: 2px;
}

/* Compact task preview for role dashboards. */
.slw-task-preview {
  min-height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 16px;
  border: 1px solid var(--slw-color-border, #2b354f);
  border-inline-start: 3px solid var(--slw-color-focus, #00E6C3);
  border-radius: 12px;
  background: var(--slw-color-surface, #0D1326);
}

.slw-task-preview[data-priority="high"] {
  border-inline-start-color: var(--slw-color-status-out-foreground, #EF4444);
}

.slw-task-preview__body {
  min-width: 0;
}

.slw-task-preview__body h3,
.slw-task-preview__body p {
  margin: 0;
}

.slw-task-preview__body h3 {
  font: 700 0.86rem/1.3 var(--slw-font-heading, "Space Grotesk", sans-serif);
}

.slw-task-preview__body p,
.slw-task-preview__body span {
  display: block;
  margin-top: 3px;
  color: var(--slw-color-text-muted, #AEB6C9);
  font: 400 0.75rem/1.4 var(--slw-font-body, Inter, sans-serif);
}

/* Accessible modal dialog. */
.slw-dialog-layer {
  z-index: var(--slw-dialog-z);
  display: grid;
  place-items: center;
  padding: 16px;
}

.slw-dialog-layer__backdrop {
  opacity: 1;
}

.slw-dialog {
  position: relative;
  width: min(520px, 100%);
  max-height: min(82dvh, 720px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--slw-color-border, #2b354f);
  border-radius: 16px;
  background: var(--slw-color-surface, #0D1326);
  color: var(--slw-color-text-primary, #F7F8FC);
  box-shadow: 0 28px 90px rgba(0, 0, 0, 0.48);
}

.slw-dialog__body {
  min-height: 0;
  overflow-y: auto;
  padding: 20px;
  color: var(--slw-color-text-muted, #AEB6C9);
  font: 400 0.88rem/1.55 var(--slw-font-body, Inter, sans-serif);
}

.slw-dialog__body > :first-child { margin-top: 0; }
.slw-dialog__body > :last-child { margin-bottom: 0; }

.slw-dialog__actions {
  min-height: 68px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 16px;
  border-block-start: 1px solid var(--slw-color-border, #2b354f);
}

.slw-dialog__button--primary {
  border-color: transparent;
  background: var(--slw-color-focus, #00E6C3);
  color: var(--slw-color-canvas, #070A14);
}

@media (max-width: 767px) {
  .slw-state {
    min-height: 148px;
    grid-template-columns: 40px minmax(0, 1fr);
    padding: 16px;
  }

  .slw-state__icon {
    width: 40px;
    height: 40px;
  }

  .slw-state__action {
    grid-column: 1 / -1;
    width: 100%;
  }

  [data-slw-segmented],
  [data-slw-filter-group] {
    max-width: 100%;
    overflow-x: auto;
  }

  [data-slw-segmented] > button,
  [data-slw-filter-group] > button {
    flex: 0 0 auto;
  }

  .slw-task-preview {
    align-items: flex-start;
    flex-direction: column;
  }

  .slw-task-preview__action {
    width: 100%;
  }

  .slw-dialog-layer {
    align-items: end;
    padding: 12px;
  }

  .slw-dialog {
    width: 100%;
    max-height: 88dvh;
    border-radius: 18px;
  }

  .slw-dialog__actions {
    padding-block-end: max(12px, env(safe-area-inset-bottom, 0px));
  }
}

@media (min-width: 900px) and (max-width: 1199px) and (orientation: landscape) {
  :root { --slw-detail-width: min(420px, 42vw); }
  .slw-adaptive-detail[data-mode="pane"] .slw-adaptive-detail__surface { inset-block-start: 72px; }
}

@media (prefers-reduced-motion: reduce) {
  .slw-adaptive-detail__backdrop,
  .slw-dialog-layer__backdrop,
  .slw-adaptive-detail__surface {
    transition-duration: 0.01ms;
  }

  .slw-state--loading .slw-state__icon svg,
  .slw-state--pending .slw-state__icon svg {
    animation: none;
  }
}
