/*
 * k0nsult-mobile.css — Mobile-first shim overlay
 * DO NOT modify existing page CSS — this adds on top
 * Variables: --bg #0a0e14, --acc #58e5b3 (forum_v2 palette)
 * Generated: 2026-04-28
 */

/* ─── BASE RESET / VIEWPORT ─────────────────────────────────── */
:root {
  --km-bg:      #0a0e14;
  --km-bg2:     #11161e;
  --km-acc:     #58e5b3;
  --km-acc2:    #ffb86c;
  --km-fg:      #e8eef5;
  --km-line:    #1f2937;
  --km-nav-h:   56px;    /* bottom nav height */
  --km-hdr-h:   52px;    /* sticky header height */
  --km-drawer-w:280px;
  --km-safe-b:  env(safe-area-inset-bottom, 0px);
  --km-safe-t:  env(safe-area-inset-top,    0px);
  --km-safe-l:  env(safe-area-inset-left,   0px);
  --km-safe-r:  env(safe-area-inset-right,  0px);
}

/* Base: ensure 16px font so iOS doesn't auto-zoom on inputs */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* Touch targets: all interactive elements ≥ 44px */
@media (max-width: 1024px) {
  button,
  [role="button"],
  input[type="button"],
  input[type="submit"],
  input[type="reset"],
  .btn,
  .nav-btn,
  .filter-btn,
  .stol-link,
  .channel-link,
  .header-link {
    min-height: 44px;
    min-width: 44px;
    padding-top: max(8px, 0.5em);
    padding-bottom: max(8px, 0.5em);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
  }

  /* Input zoom prevention — 16px forces iOS to skip auto-zoom */
  input[type="text"],
  input[type="search"],
  input[type="email"],
  input[type="password"],
  input[type="number"],
  input[type="tel"],
  input[type="url"],
  textarea,
  select {
    font-size: 16px !important;
  }

  /* Prevent overscroll/pull-to-refresh on iOS */
  body {
    overscroll-behavior-y: contain;
  }
}

/* ─── BOTTOM NAV ────────────────────────────────────────────── */
.k-mobile-bottom-nav {
  display: none; /* hidden by default, JS shows on mobile */
}

@media (max-width: 1024px) {
  .k-mobile-bottom-nav {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: calc(var(--km-nav-h) + var(--km-safe-b));
    padding-bottom: var(--km-safe-b);
    background: var(--km-bg2);
    border-top: 1px solid var(--km-line);
    z-index: 9999;
    align-items: stretch;
  }

  .k-mobile-bottom-nav .kmbn-item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    text-decoration: none;
    color: #6b7f8f;
    font-family: ui-monospace, monospace;
    font-size: 9px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    padding: 6px 4px;
    border: none;
    background: none;
    transition: color 0.15s, background 0.15s;
    cursor: pointer;
    min-height: 44px;
    -webkit-tap-highlight-color: transparent;
  }

  .k-mobile-bottom-nav .kmbn-item .kmbn-icon {
    font-size: 20px;
    line-height: 1;
  }

  .k-mobile-bottom-nav .kmbn-item:hover,
  .k-mobile-bottom-nav .kmbn-item.active {
    color: var(--km-acc);
    background: rgba(88, 229, 179, 0.06);
  }

  .k-mobile-bottom-nav .kmbn-item.active .kmbn-icon {
    filter: drop-shadow(0 0 4px rgba(88, 229, 179, 0.7));
  }

  /* Push body content up so it's not behind bottom nav */
  body {
    padding-bottom: calc(var(--km-nav-h) + var(--km-safe-b));
  }
}

/* ─── HAMBURGER BUTTON ──────────────────────────────────────── */
.k-hamburger {
  display: none;
  background: none;
  border: 1px solid var(--km-line);
  border-radius: 4px;
  width: 44px;
  height: 44px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  cursor: pointer;
  padding: 8px;
  -webkit-tap-highlight-color: transparent;
  z-index: 10001;
  position: relative;
}

.k-hamburger span {
  display: block;
  width: 20px;
  height: 2px;
  background: var(--km-acc);
  border-radius: 1px;
  transition: transform 0.25s, opacity 0.25s;
}

.k-hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.k-hamburger.open span:nth-child(2) { opacity: 0; }
.k-hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 1024px) {
  .k-hamburger {
    display: flex;
  }
}

/* ─── SLIDE DRAWER ──────────────────────────────────────────── */
.k-drawer {
  position: fixed;
  top: 0;
  left: 0;
  width: var(--km-drawer-w);
  height: 100%;
  background: var(--km-bg2);
  border-right: 1px solid var(--km-line);
  z-index: 10000;
  transform: translateX(-100%);
  transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
  overflow-y: auto;
  padding: calc(var(--km-safe-t) + 60px) 0 calc(var(--km-safe-b) + 80px);
  will-change: transform;
}

.k-drawer.open {
  transform: translateX(0);
}

.k-drawer-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.6);
  z-index: 9998;
  -webkit-tap-highlight-color: transparent;
}

.k-drawer-overlay.visible {
  display: block;
}

.k-drawer nav a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 20px;
  color: var(--km-fg);
  text-decoration: none;
  font-family: ui-monospace, monospace;
  font-size: 13px;
  border-left: 3px solid transparent;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  min-height: 52px;
}

.k-drawer nav a:hover,
.k-drawer nav a.active {
  background: rgba(88, 229, 179, 0.07);
  border-left-color: var(--km-acc);
  color: var(--km-acc);
}

.k-drawer nav a .kdw-icon {
  font-size: 18px;
  width: 24px;
  text-align: center;
}

.k-drawer-title {
  padding: 10px 20px 6px;
  font-family: ui-monospace, monospace;
  font-size: 9px;
  color: #4a5568;
  text-transform: uppercase;
  letter-spacing: 1.5px;
}

/* ─── STICKY HEADER MOBILE PATCH ───────────────────────────── */
@media (max-width: 1024px) {
  /* Ensure sticky headers clear notch */
  .header[style*="sticky"],
  .header,
  header {
    padding-top: calc(var(--km-safe-t) + 10px);
    padding-left: calc(var(--km-safe-l) + 12px);
    padding-right: calc(var(--km-safe-r) + 12px);
  }
}

/* ─── PHONE ≤ 640px ─────────────────────────────────────────── */
@media (max-width: 640px) {

  /* Single column layout — override common grid patterns */
  .grid3,
  .cols,
  .hero-stats,
  .stats,
  .stats-bar,
  .stoly-grid,
  .channels-grid,
  .links-grid {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  /* Cards full-width */
  .card,
  .stol-card,
  .channel-card,
  .link-item,
  .stat,
  .stat-card {
    width: 100% !important;
    min-width: 0 !important;
  }

  /* Hide desktop sidebar elements */
  .sidebar {
    display: none !important;
  }

  /* Main area full-width when sidebar hidden */
  .container,
  .main {
    width: 100% !important;
    min-width: 0 !important;
  }

  /* flex container → column */
  .container[style*="flex"],
  .container {
    flex-direction: column !important;
  }

  /* Toolbar / controls wrap */
  .toolbar,
  .controls,
  .cta-bar,
  .nav,
  .stats-bar {
    flex-wrap: wrap !important;
    gap: 6px !important;
    padding: 8px 12px !important;
  }

  /* Wrap headers */
  .header {
    flex-wrap: wrap !important;
    gap: 6px !important;
  }

  .header h1 {
    font-size: 14px !important;
  }

  /* full-width wrap inside body */
  .wrap,
  .main,
  .container {
    padding-left: max(12px, var(--km-safe-l)) !important;
    padding-right: max(12px, var(--km-safe-r)) !important;
  }

  /* Hero stat numbers — smaller on phone */
  .hero-stat .num {
    font-size: 22px !important;
  }

  /* Pre / code blocks — scrollable, don't break layout */
  pre, code {
    overflow-x: auto !important;
    max-width: 100% !important;
    word-break: break-word !important;
    font-size: 11px !important;
  }

  /* ASCII art — shrink */
  .ascii {
    font-size: 8px !important;
    line-height: 1.1 !important;
    overflow-x: auto !important;
  }

  /* Thread list items — stack meta */
  .thread-item {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 4px !important;
  }

  /* Voice lounge: sidebar hidden, layout single col */
  .container[style],
  .container {
    display: block !important;
  }

  /* Search input full width */
  .search-box,
  .search-wrap input {
    width: 100% !important;
    min-width: 0 !important;
  }

  /* Button rows — wrap */
  .stol-actions,
  .channel-actions {
    flex-wrap: wrap !important;
    gap: 6px !important;
  }

  /* Mic button — ensure tappable */
  .mic-btn {
    width: 72px !important;
    height: 72px !important;
  }

  /* Score/nav overflow */
  .nav {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
}

/* ─── TABLET ≤ 1024px ───────────────────────────────────────── */
@media (min-width: 641px) and (max-width: 1024px) {

  /* 2-column max for grids */
  .grid3,
  .cols,
  .stoly-grid,
  .channels-grid,
  .links-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }

  /* Hero stats — 2-up */
  .hero-stats {
    grid-template-columns: repeat(2, 1fr) !important;
    display: grid !important;
  }

  /* Sidebar — narrower on tablet */
  .sidebar {
    width: 180px !important;
  }

  /* Wrap headers */
  .header {
    flex-wrap: wrap;
    gap: 8px;
  }
}

/* ─── LANDSCAPE PHONE ────────────────────────────────────────── */
@media (max-width: 896px) and (orientation: landscape) {
  /* Reduce bottom nav height in landscape — keyboard area is precious */
  .k-mobile-bottom-nav {
    height: calc(44px + var(--km-safe-b));
  }

  body {
    padding-bottom: calc(44px + var(--km-safe-b));
  }

  /* Voice mic area — less vertical padding */
  .mic-area {
    padding: 4px 0 !important;
    gap: 6px !important;
  }
}

/* ─── SWIPE HINT ─────────────────────────────────────────────── */
/* Subtle left-edge visual hint for swipe-to-open drawer */
@media (max-width: 1024px) {
  body::before {
    content: '';
    position: fixed;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 60px;
    background: linear-gradient(180deg, transparent, var(--km-acc), transparent);
    opacity: 0.25;
    border-radius: 0 2px 2px 0;
    z-index: 9997;
    pointer-events: none;
  }
}

/* ─── TOUCH RIPPLE ──────────────────────────────────────────── */
.k-ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(88, 229, 179, 0.25);
  transform: scale(0);
  animation: k-ripple-anim 0.45s linear;
  pointer-events: none;
}

@keyframes k-ripple-anim {
  to {
    transform: scale(4);
    opacity: 0;
  }
}

/* Ensure ripple host has overflow hidden */
.k-ripple-host {
  position: relative;
  overflow: hidden;
}

/* ─── DESKTOP: ensure shim is invisible ─────────────────────── */
@media (min-width: 1025px) {
  .k-mobile-bottom-nav,
  .k-hamburger,
  .k-drawer,
  .k-drawer-overlay {
    display: none !important;
  }
}
