/* ========================================================================
   Phase 4 Step 7 — Mobile TOC drawer + open button

   Hidden on desktop (>=1000px) where the sidebar TOC handles this job.
   On mobile, a small floating button bottom-LEFT (bottom-right is reserved
   for the dark-mode fallback toggle) opens a slide-up panel that contains
   the same article TOC as the desktop sidebar.

   Reduced-motion: instant open/close, no slide.
   ======================================================================== */

/* --- Hide everything by default; only revealed inside the mobile @media --- */
.cai-mobile-toc,
.cai-mobile-toc-backdrop,
.cai-mobile-toc__open {
  display: none;
}

@media (max-width: 999.98px) {

  /* ----- Open button (bottom-left, fixed) ----- */
  .cai-mobile-toc__open {
    position: fixed;
    left: 16px;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    height: 44px;
    padding: 0 0.95rem 0 0.8rem;
    border: 1px solid var(--cai-border-strong);
    border-radius: var(--cai-radius-pill);
    background: var(--cai-bg);
    color: var(--cai-text-strong);
    font-family: var(--cai-font-sans);
    font-size: 0.86rem;
    font-weight: 500;
    box-shadow: var(--cai-shadow-md);
    cursor: pointer;
    z-index: 8500;            /* below drawer (9050) + backdrop (9040) */
    transition: transform var(--cai-duration-fast) var(--cai-easing),
                opacity   var(--cai-duration)      var(--cai-easing);
  }
  .cai-mobile-toc__open:hover { transform: translateY(-1px); }
  .cai-mobile-toc__open:active { transform: translateY(0); }
  .cai-mobile-toc__open:focus-visible {
    outline: 2px solid var(--cai-primary);
    outline-offset: 2px;
  }
  /* Hide the open button while the drawer is open */
  .cai-mobile-toc-locked .cai-mobile-toc__open {
    opacity: 0;
    pointer-events: none;
  }

  /* ----- Backdrop (dark scrim under the drawer) ----- */
  .cai-mobile-toc-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    background: var(--cai-drawer-backdrop-bg);
    z-index: var(--cai-z-drawer-backdrop);   /* 9040 */
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--cai-duration) var(--cai-easing);
  }
  .cai-mobile-toc-backdrop.is-open {
    opacity: 1;
    pointer-events: auto;
  }

  /* ----- Drawer panel (slides up from bottom) ----- */
  .cai-mobile-toc {
    display: flex;
    flex-direction: column;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    max-height: var(--cai-drawer-max-h);      /* 80vh */
    background: var(--cai-bg);
    border-top: 1px solid var(--cai-border-strong);
    border-radius: var(--cai-radius-lg) var(--cai-radius-lg) 0 0;
    box-shadow: 0 -8px 32px rgba(11, 18, 32, 0.18);
    z-index: var(--cai-z-drawer);             /* 9050 */
    transform: translateY(100%);
    transition: transform var(--cai-duration) var(--cai-easing);
    overflow: hidden;          /* round-corners + scrolling inner nav */
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  .cai-mobile-toc[hidden] { display: none; }
  .cai-mobile-toc.is-open { transform: translateY(0); }

  /* Drag handle visual indicator at the top of the panel */
  .cai-mobile-toc::before {
    content: "";
    display: block;
    width: 40px;
    height: 4px;
    margin: 0.55rem auto 0;
    background: var(--cai-border-strong);
    border-radius: var(--cai-radius-pill);
  }

  /* ----- Drawer header (title + close button) ----- */
  .cai-mobile-toc__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--cai-space-md) var(--cai-space-lg) var(--cai-space-sm);
    border-bottom: 1px solid var(--cai-border);
  }
  .cai-mobile-toc__title {
    margin: 0;
    font-family: var(--cai-font-sans);
    font-size: var(--cai-eyebrow-size);
    font-weight: var(--cai-eyebrow-weight);
    letter-spacing: var(--cai-eyebrow-spacing);
    text-transform: uppercase;
    color: var(--cai-eyebrow-color);
  }
  .cai-mobile-toc__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: var(--cai-btn-ghost-bg);
    color: var(--cai-btn-ghost-text);
    border: 1px solid transparent;
    border-radius: var(--cai-radius-md);
    cursor: pointer;
    transition: background-color var(--cai-duration-fast) var(--cai-easing);
  }
  .cai-mobile-toc__close:hover { background: var(--cai-btn-ghost-hover-bg); color: var(--cai-text-strong); }
  .cai-mobile-toc__close:focus-visible { outline: 2px solid var(--cai-primary); outline-offset: 2px; }

  /* ----- Drawer nav (scrollable TOC list) ----- */
  .cai-mobile-toc__nav {
    overflow-y: auto;
    overscroll-behavior: contain;     /* don't propagate scroll to body */
    padding: var(--cai-space-md) var(--cai-space-lg) var(--cai-space-xl);
    -webkit-overflow-scrolling: touch;
  }
  .cai-mobile-toc__nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    font-family: var(--cai-font-sans);
    font-size: 0.95rem;
    line-height: 1.4;
  }
  .cai-mobile-toc__nav li { margin: 0; }
  .cai-mobile-toc__nav a {
    display: block;
    padding: 0.7rem 0;
    color: var(--cai-text-strong);
    text-decoration: none;
    border-bottom: 1px solid var(--cai-border);
  }
  .cai-mobile-toc__nav li:last-child > a { border-bottom: none; }
  .cai-mobile-toc__nav a:hover,
  .cai-mobile-toc__nav a:focus-visible {
    color: var(--cai-primary-dark);
    outline: none;
  }
  .cai-mobile-toc__nav ul ul {
    margin: 0 0 0 var(--cai-space-md);
    font-size: 0.88rem;
  }
  .cai-mobile-toc__nav ul ul a {
    color: var(--cai-text-secondary);
    padding: 0.55rem 0;
  }

  /* Body scroll lock while drawer is open */
  body.cai-mobile-toc-locked {
    overflow: hidden;
    /* Compensate for the scrollbar disappearing on Windows so the layout
       doesn't shift horizontally. Mobile usually has no visible scrollbar
       so this is mostly defensive. */
    padding-right: var(--cai-scrollbar-width, 0px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .cai-mobile-toc,
  .cai-mobile-toc-backdrop,
  .cai-mobile-toc__open {
    transition: none;
  }
}
