/**
 * Project workspace + SAR sheet — non-desktop layout bands.
 * Uses html[data-viewport] from viewport-constants.mjs and
 * html[data-shell-page-type="project"] from project.js.
 *
 * Companion: admin-shell.js `usesOverlayNavDrawer()` sets
 * html[data-shell-nav-overlay] for phone + tablet project routes.
 */

/* ── Project shell grid — drop 320px main min (admin-shell.css GH #245) ── */
html[data-shell-page-type="project"][data-viewport^="tablet-"],
html[data-shell-page-type="project"][data-viewport^="mobile-"],
html[data-shell-page-type="project"][data-viewport="desktop-s"] {
  .admin-shell[data-bilateral-chrome] {
    grid-template-columns: minmax(0, var(--shell-sidebar-w)) minmax(0, 1fr);
  }

  .admin-shell[data-bilateral-chrome][data-sidebar="browse"] {
    grid-template-columns: minmax(0, min(440px, 42vw)) minmax(0, 1fr);
  }

  .admin-shell[data-bilateral-chrome][data-sidebar="ribbon"] {
    grid-template-columns: minmax(44px, 60px) minmax(0, 1fr);
  }
}

/* ── Overlay nav drawer (phone + tablet project) ─────────────────────── */
html[data-shell-nav-overlay] .admin-shell,
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="open"],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="rail"],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="browse"],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="hidden"],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="ribbon"],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="closed"],
html[data-shell-nav-overlay] .admin-shell[data-bilateral-chrome][data-sidebar="edge-overlay"] {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr) auto;
  grid-template-areas:
    "shellhdr"
    "shellmain";
}

html[data-shell-nav-overlay] .admin-shell > .main-content {
  grid-column: 1;
  grid-row: 2;
  min-width: 0;
  width: 100%;
}

html[data-shell-nav-overlay] .admin-shell > .shell-top-cluster {
  grid-column: 1 / -1;
  grid-row: 1;
  width: 100%;
}

html[data-shell-nav-overlay] .admin-shell > .shell-footer {
  grid-column: 1 / -1;
  grid-row: 3;
  width: 100%;
  position: relative;
}

html[data-shell-nav-overlay] .admin-shell > .admin-shell__nav-column {
  position: fixed;
  top: var(--shell-header-height, 0);
  left: 0;
  bottom: var(--shell-footer-height, 0);
  width: min(280px, 88vw);
  max-width: min(280px, 88vw);
  z-index: 999;
  grid-column: auto;
  grid-row: auto;
}

/* Collapsed (ribbon): tuck the drawer off-screen — main content gets full width. */
html[data-shell-nav-overlay] .admin-shell[data-sidebar="ribbon"] > .admin-shell__nav-column {
  width: 0;
  max-width: 0;
  overflow: visible;
  pointer-events: none;
  background: transparent;
  border: none;
}

html[data-shell-nav-overlay]
  .admin-shell[data-sidebar="ribbon"]:not(:has([data-notebook-left-chrome]))
  > .admin-shell__nav-column
  [data-project-nav-mount] {
  display: none;
}

/* Notebook navigator — same 46px collapsed rail on overlay/tablet project routes (all slugs). */
html[data-guide-project-surface="notebook"][data-shell-nav-overlay]
  .admin-shell:has([data-notebook-left-chrome][data-rail-collapsed="true"])
  > .admin-shell__nav-column {
  width: 46px;
  max-width: 46px;
  min-width: 0;
  pointer-events: auto;
  overflow: hidden;
}

html[data-guide-project-surface="notebook"][data-shell-nav-overlay]
  .admin-shell:has([data-notebook-left-chrome][data-rail-collapsed="true"])
  > .admin-shell__nav-column
  [data-project-nav-mount] {
  display: flex;
}

html[data-guide-project-surface="notebook"][data-viewport^="tablet-"]
  .admin-shell:has([data-notebook-left-chrome][data-rail-collapsed="true"]):not(
    :has([data-notebook-right-chrome])
  ),
html[data-guide-project-surface="notebook"][data-viewport^="tablet-"]
  .admin-shell[data-bilateral-chrome]:has(
    [data-notebook-left-chrome][data-rail-collapsed="true"]
  ):not(:has([data-notebook-right-chrome])) {
  --shell-sidebar-w: 46px;
  grid-template-columns: 46px minmax(0, 1fr);
}

html[data-guide-project-surface="notebook"][data-shell-page-type="project"][data-viewport="desktop-s"]
  .admin-shell[data-bilateral-chrome]:has(
    [data-notebook-left-chrome][data-rail-collapsed="true"]
  ):not(:has([data-notebook-right-chrome])) {
  --shell-sidebar-w: 46px;
  grid-template-columns: 46px minmax(0, 1fr);
}

/* Notebook + hoisted inspector — preserve 3-column grid on tablet/desktop-s when not overlay. */
html[data-guide-project-surface="notebook"][data-viewport^="tablet-"]:not([data-shell-nav-overlay])
  .admin-shell[data-bilateral-chrome]:has([data-notebook-left-chrome]):has(
    [data-notebook-right-chrome]
  ):not(:has([data-notebook-left-chrome][data-rail-collapsed="true"])):not(
    :has([data-notebook-right-chrome][data-insp-collapsed="true"])
  ),
html[data-guide-project-surface="notebook"][data-viewport="desktop-s"]:not([data-shell-nav-overlay])
  .admin-shell[data-bilateral-chrome]:has([data-notebook-left-chrome]):has(
    [data-notebook-right-chrome]
  ):not(:has([data-notebook-left-chrome][data-rail-collapsed="true"])):not(
    :has([data-notebook-right-chrome][data-insp-collapsed="true"])
  ) {
  grid-template-columns: minmax(0, var(--shell-sidebar-w)) minmax(0, 1fr) minmax(
      0,
      var(--shell-right-rail-w, 340px)
    );
}

html[data-shell-nav-overlay] .admin-shell[data-sidebar="ribbon"] .admin-shell__nav-column-chrome {
  pointer-events: auto;
  left: 0;
  right: auto;
}

html[data-shell-nav-overlay] .admin-shell > .admin-shell__nav-column > .sidebar {
  position: absolute;
  inset: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  transform: translateX(-100%);
  transition: transform var(--s-duration-normal) cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: var(--s-shadow-lg);
}

html[data-shell-nav-overlay] .admin-shell[data-shell-mobile-drawer="open"] > .admin-shell__nav-column > .sidebar {
  transform: translateX(0);
}

html[data-shell-nav-overlay] .admin-shell__mobile-drawer-backdrop {
  z-index: 998;
}

/* ── Project workspace grid — cap / collapse rails ───────────────────── */
html[data-viewport^="tablet-"],
html[data-viewport="desktop-s"] {
  .pw-project__grid:not(.pw-project__grid--right-collapsed) {
    --pw-col-right: min(240px, 36vw);
  }
}

html[data-viewport^="mobile-"] {
  /* Details drawer collapsed to icon rail — center gets full width. */
  .pw-project__grid {
    grid-template-columns:
      0
      0
      minmax(0, 1fr)
      0
      22px;
  }

  .pw-project__grid--no-timeline-side {
    grid-template-columns:
      0
      0
      minmax(0, 1fr)
      0
      22px;
  }
}

/* Context rail icons — regulatory touch floor on coarse pointers. */
@media (hover: none) {
  .pw-context-rail__icons {
    flex: 0 0 var(--s-size-touch-target-min, 44px);
    padding: var(--s-space-2) 0;
  }

  .pw-context-rail__icon {
    width: var(--s-size-touch-target-min, 44px);
    height: var(--s-size-touch-target-min, 44px);
  }
}

/* ── SAR sheet — stack 3D viewer under scatter/table on narrow bands ──── */
html[data-viewport^="tablet-"],
html[data-viewport^="mobile-"] {
  .sar-sheet__body {
    flex-direction: column;
  }

  .sar-sheet__left {
    flex: 1 1 0;
    min-height: 180px;
    width: 100%;
  }

  .sar-sheet__right {
    flex: 0 0 min(36vh, 280px);
    width: 100%;
    min-height: 160px;
    border-left: none;
    border-top: 1px solid var(--s-color-border);
  }

  .sar-sheet__hsplit {
    flex: 0 0 var(--s-space-2);
    width: 100%;
    height: var(--s-space-2);
    cursor: ns-resize;
    border-left: none;
    border-top: 1px solid var(--s-color-border);
  }

  .sar-sheet__row--scatter {
    max-height: min(38vh, 280px);
  }

  .sar-sheet__header {
    padding: var(--s-space-2);
    gap: var(--s-space-2);
  }

  .sar-sheet__search {
    max-width: none;
    min-width: 0;
  }
}

/* Tabular table — horizontal scroll instead of clipping columns. */
html[data-viewport^="tablet-"],
html[data-viewport^="mobile-"] {
  .th-body,
  .pw-project__center .sar-sheet {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ── Shell header on project routes ──────────────────────────────────── */
html[data-shell-page-type="project"][data-viewport^="tablet-"],
html[data-shell-page-type="project"][data-viewport^="mobile-"] {
  .shell-header__right-cluster {
    min-width: 0;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .shell-header__right-cluster::-webkit-scrollbar {
    display: none;
  }

  .project-view-switcher {
    flex-shrink: 0;
  }

  .shell-header-page-actions {
    min-width: 0;
    flex-wrap: nowrap;
  }
}

html[data-viewport^="mobile-"] {
  .shell-header-page-actions .sar-workspace-toolbar__zoom {
    display: none;
  }
}

/* Touch / tablet: hamburger destinations overlay is click-only (no hover stickiness). */
@media (hover: none) {
  .hamburger-host:not(.is-open):not(.force-closed):hover > .hamburger-overlay,
  .hamburger-host:not(.is-open):focus-within > .hamburger-overlay {
    display: none;
  }

  .hamburger-host.is-open > .hamburger-overlay {
    display: flex;
  }

  .hamburger-host.force-closed > .hamburger-overlay,
  .hamburger-host.force-closed:hover > .hamburger-overlay,
  .hamburger-host.force-closed:focus-within > .hamburger-overlay,
  .hamburger-host.force-closed:has(> .hamburger-overlay:hover) > .hamburger-overlay,
  .hamburger-host.force-closed.is-open > .hamburger-overlay,
  .hamburger-overlay[hidden] {
    display: none;
  }
}

/* Project nav column scroll when in overlay drawer. */
html[data-shell-nav-overlay] .project-nav {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
