/**
 * Sidebar Layout - Flex-based with icon-only collapsed mode
 * Extracted from: dev-docs/mockups/layout-hybrid.html
 */

/* ============================================
   SIDEBAR TOGGLE (hidden checkbox)
   ============================================ */
.sidebar-toggle-input {
  display: none;
}

/* ============================================
   PAGE LAYOUT - Flex Container
   ============================================ */
.page-layout {
  display: flex;
}

/* Offset for fixed header (logged-in users only) */
.user-logged-in .page-layout {
  padding-top: var(--header-height, 3.5rem);
}

/* ============================================
   SIDEBAR - Fixed for logged-in users
   ============================================ */
.sidebar-left {
  position: sticky;
  top: 0;
  width: var(--sidebar-width, 280px);
  height: 100vh;
  flex-shrink: 0;
  background: var(--color-white);
  border-right: 1px solid var(--color-gray-200, #e5e7eb);
  z-index: 1000;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: width 0.3s ease-in-out;
}

/* Logged-in users: fixed sidebar below fixed header */
.user-logged-in .sidebar-left {
  position: fixed;
  top: var(--header-height, 3.5rem);
  left: 0;
  height: calc(100vh - var(--header-height, 3.5rem));
}

/* Disable transition on initial load */
.sidebar-left.sidebar-no-transition {
  transition: none;
}

/* ============================================
   SIDEBAR CONTENT
   ============================================ */
.sidebar-content {
  flex: 1;
  padding: 1.5rem 0;
  overflow-y: auto;
}

.sidebar-left .block {
  padding: 0 0.75rem;
  margin-bottom: 1.5rem;
}

.sidebar-left .block h2 {
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--color-gray-400, #9ca3af);
  padding: 0 0.75rem;
  margin-bottom: 0.5rem;
}

/* ============================================
   MENU LINKS
   ============================================ */
.sidebar-left ul.menu {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.sidebar-left ul.menu li {
  margin: 0;
}

.sidebar-left ul.menu li a {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 0.75rem;
  border-radius: 6px;
  color: var(--color-gray-600, #4b5563);
  text-decoration: none;
  font-size: 0.875rem;
  transition: background 0.15s, color 0.15s;
  border-left: 3px solid transparent;
  overflow: hidden;
  white-space: nowrap;
}

.sidebar-left ul.menu li a:hover {
  background: var(--color-gray-50, #f9fafb);
  color: var(--color-gray-900, #111827);
}

.sidebar-left ul.menu li a.is-active {
  background: var(--color-active-bg, #e8f5e9);
  color: var(--color-active-text, #00a166);
  border-left-color: var(--color-primary, #00d084);
}

/* Nav label - no transition to prevent text blinking */
.sidebar-left .nav-label {
  opacity: 1;
  width: auto;
}

/* ============================================
   SIDEBAR FOOTER
   ============================================ */
.sidebar-footer {
  flex-shrink: 0;
  padding: 0.75rem;
  border-top: 1px solid var(--color-gray-100, #f3f4f6);
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.sidebar-footer a,
.sidebar-footer button {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.75rem;
  border-radius: 6px;
  color: var(--color-gray-500, #6b7280);
  text-decoration: none;
  font-size: 0.8125rem;
  transition: background 0.15s, color 0.15s;
  background: transparent;
  border: none;
  cursor: pointer;
  width: 100%;
  text-align: left;
  overflow: hidden;
  white-space: nowrap;
}

.sidebar-footer a:hover,
.sidebar-footer button:hover {
  background: var(--color-gray-50, #f9fafb);
  color: var(--color-gray-700, #374151);
}

.sidebar-footer svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  opacity: 0.7;
}

/* Collapse button */
.sidebar-collapse-btn {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.75rem;
  border-radius: 6px;
  color: var(--color-gray-500, #6b7280);
  font-size: 0.8125rem;
  transition: background 0.15s, color 0.15s;
  background: transparent;
  border: none;
  cursor: pointer;
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}

.sidebar-collapse-btn:hover {
  background: var(--color-gray-50, #f9fafb);
  color: var(--color-gray-700, #374151);
}

.sidebar-collapse-btn svg {
  transition: transform 0.3s ease;
}

/* ============================================
   COLLAPSED STATE - Icon-only mode (64px)
   ============================================ */

/* Collapsed sidebar width */
.sidebar-collapsed body:not(.no-sidebar) .sidebar-left {
  width: var(--sidebar-collapsed-width, 64px);
}

/* Collapsed: main content margin */
.sidebar-collapsed body:not(.no-sidebar) .main-content {
  margin-left: var(--sidebar-collapsed-width, 64px);
}

/* Hide text labels when collapsed */
.sidebar-collapsed .sidebar-left .nav-label,
.sidebar-collapsed .sidebar-left .block h2 {
  opacity: 0;
  width: 0;
  overflow: hidden;
}

/* Center icons and hide text when collapsed */
.sidebar-collapsed .sidebar-left ul.menu li a {
  justify-content: center;
  align-items: center;
  padding: 0;
  gap: 0;
  font-size: 0;
  width: 32px;
  height: 32px;
  margin: 0 auto;
}

/* Menu icon sizing when collapsed */
.sidebar-collapsed .sidebar-left ul.menu li a::before {
  width: 16px;
  height: 16px;
  background: var(--color-gray-600, #4b5563);
  opacity: 1;
}

.sidebar-collapsed .sidebar-left ul.menu li a.is-active::before {
  background: var(--color-active-text, #00a166);
}

/* Footer items when collapsed */
.sidebar-collapsed .sidebar-left .sidebar-footer a,
.sidebar-collapsed .sidebar-left .sidebar-collapse-btn {
  justify-content: center;
  align-items: center;
  padding: 0;
  gap: 0;
  font-size: 0;
  width: 32px;
  height: 32px;
  margin: 0 auto;
}

/* Footer SVG icons when collapsed */
.sidebar-collapsed .sidebar-left .sidebar-footer svg {
  width: 16px;
  height: 16px;
}

/* Flip collapse icon when collapsed */
.sidebar-collapsed .sidebar-left .sidebar-collapse-btn svg {
  transform: rotate(180deg);
}

/* ============================================
   MAIN CONTENT
   ============================================ */
.main-content {
  flex: 1;
  min-width: 0;
  transition: margin-left 0.3s ease-in-out;
}

/* Expanded sidebar: offset main content */
.sidebar-expanded body:not(.no-sidebar) .main-content {
  margin-left: var(--sidebar-width, 280px);
}

/* ============================================
   ADMIN TOOLBAR COMPATIBILITY
   ============================================ */
.toolbar-tray-open .sidebar-left,
.toolbar-vertical .sidebar-left {
  display: none;
}

.toolbar-tray-open.user-logged-in .page-layout,
.toolbar-vertical.user-logged-in .page-layout {
  padding-top: 0;
}

/* ============================================
   MOBILE RESPONSIVE
   ============================================ */
@media (max-width: 768px) {
  .page-layout {
    flex-direction: column;
  }

  /* Sidebar as overlay on mobile */
  .sidebar-left {
    position: fixed;
    top: var(--header-height, 3.5rem);
    left: 0;
    width: min(280px, 85vw);
    height: calc(100vh - var(--header-height, 3.5rem));
    transform: translateX(-100%);
    z-index: 1050;
  }

  /* Reset main content margin on mobile (sidebar is overlay) */
  .sidebar-expanded .main-content,
  .sidebar-collapsed .main-content {
    margin-left: 0;
  }

  /* Reset desktop collapsed styles for mobile */
  .sidebar-left .sidebar-content,
  .sidebar-left .sidebar-footer {
    opacity: 1;
    visibility: visible;
  }

  .sidebar-left .nav-label,
  .sidebar-left .block h2 {
    opacity: 1;
    width: auto;
  }

  .sidebar-left ul.menu li a,
  .sidebar-left .sidebar-footer a,
  .sidebar-left .sidebar-collapse-btn {
    justify-content: flex-start;
    padding: 0.625rem 0.75rem;
    gap: 0.75rem;
    font-size: 0.875rem;
    width: auto;
    height: auto;
  }

  /* Mobile: expanded = sidebar visible (slide in) */
  .sidebar-expanded .sidebar-left {
    transform: translateX(0);
  }

  /* Mobile: collapsed = sidebar hidden */
  .sidebar-collapsed .sidebar-left {
    transform: translateX(-100%);
    width: min(280px, 85vw);
  }

  /* Hide the footer collapse button on mobile */
  .sidebar-collapse-btn {
    display: none;
  }

  /* Backdrop overlay when sidebar open */
  .sidebar-expanded .sidebar-left::before {
    content: '';
    position: fixed;
    top: var(--header-height, 3.5rem);
    left: min(280px, 85vw);
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: -1;
  }
}

/* ============================================
   ACCESSIBILITY
   ============================================ */
@media (prefers-reduced-motion: reduce) {
  .sidebar-left,
  .sidebar-left ul.menu li a,
  .sidebar-footer a,
  .sidebar-collapse-btn,
  .sidebar-collapse-btn svg {
    transition: none;
  }
}

/* ============================================
   PRINT STYLES
   ============================================ */
@media print {
  .sidebar-left {
    display: none !important;
  }

  .page-layout {
    display: block;
    padding-top: 0;
  }

  .main-content {
    margin: 0;
    width: 100%;
  }
}
