/* Shared responsive behavior; page-specific layouts stay in their own styles. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
.character-tabs { top: var(--site-nav-height); }
.table-scroll-hint { display: none; }
[hidden] { display: none !important; }

@media (max-width: 640px) {
  /* 16px avoids focus zoom on iOS while preserving the user's pinch zoom. */
  body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), select, textarea) {
    min-width: 0;
    max-width: 100%;
    min-height: 44px;
    font-size: 16px;
  }
  body :is(.btn, .lookup-submit, .sub-nav-btn, .chip, .friend-submit, .friend-copy, .friend-toggle,
    .range-btn, .mode-btn, .refresh-btn, .segment, .tab, .pager button, .close, .app-table-sort,
    .link-btn, .chart-latest, .ss-arrow, .tracked-remove, .who button, .check, .auto, .inline-select,
    .chart-scrubber input, .map-controls input[type="range"], .weapon-pagination button) {
    min-height: 44px;
  }
  body :is(.table-wrap, .app-table-wrap, .friends-table-wrap, .scroll-table, .lb-wrap) {
    min-width: 0;
    max-width: 100%;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
    scrollbar-color: #64748b #0c0f14;
  }
  .table-scroll-hint {
    display: block;
    margin: 10px 0 8px;
    color: #94a3b8;
    font: 12px/1.6 'Inter', sans-serif;
  }
  .table-scroll-hint:has(+ [hidden]) { display: none; }
  .character-tabs { top: var(--site-nav-height); }
  body[data-page="character"] main,
  body[data-page="my-characters"] main { padding-top: calc(var(--site-nav-height) + 24px); }
  body[data-page="players"] main,
  body[data-page="friends"] main,
  body[data-page="faction-focus"] main,
  body[data-page="stream"] main,
  body[data-page="headshots"] main,
  body[data-page="alert-oracle"] main { padding-top: calc(var(--site-nav-height) + 28px); }

  /* Retain the character identity while moving across wide friend tables. */
  .friends-table th:nth-child(2),
  .friends-table td:nth-child(2) {
    position: sticky;
    left: 0;
    z-index: 1;
    max-width: 160px;
    white-space: normal;
    overflow-wrap: anywhere;
    background: #0c0f14;
    border-right: 1px solid #263147;
  }
  .friends-table th:nth-child(2) { z-index: 2; }
  .friend-load { display: inline-flex; align-items: center; min-height: 44px; }
  .friends-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .friends-kpi { min-width: 0; padding: 16px; }
  .friend-actions > button { flex: 1; padding-inline: 10px; }
  .friend-input { width: 100%; }

  /* Quick filters should not push the chart multiple screens down. */
  .range-buttons { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .range-buttons > :last-child { grid-column: 1 / -1; }
  .mode-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .focus-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .focus-kpi { min-width: 0; }
  .focus-kpi strong { font-size: 1.15rem; overflow-wrap: anywhere; }
  .focus-kpi span { font-size: .55rem; letter-spacing: .08em; }

  body[data-page="alert-oracle"] .controls { align-items: stretch; }
  body[data-page="alert-oracle"] .controls > label:not(.auto) { width: 100%; min-width: 0; }
  body[data-page="alert-oracle"] .controls select { width: 100%; max-width: 100%; }
  body[data-page="alert-oracle"] .controls > button { width: 100%; margin-top: 0; }
  body[data-page="alert-oracle"] .auto { margin-top: 0; }
  body[data-page="alert-oracle"] .empty-state { align-items: flex-start; }
  body[data-page="alert-oracle"] .oracle-mark { display: none; }
  .oracle-chart-heading { flex-wrap: wrap; }
  .chart-scrubber { gap: 10px; }
  .chart-readout > div { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .chart-readout small { display: inline; margin-left: 6px; font-size: 11px; }
  .forecast { grid-template-columns: minmax(0, 1fr); }
  .forecast .faction {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 4px 12px;
    align-items: center;
    border-right: 0;
    border-bottom: 1px solid var(--border);
    padding: 16px;
  }
  .forecast .faction .bar,
  .forecast .faction p { grid-column: 1 / -1; }
  .forecast .faction .bar { margin: 6px 0; }
  .forecast .odds { font-size: 32px; }
  .validation dl { grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
  .validation dd { overflow-wrap: anywhere; }

  body[data-page="players"] h1 { font-size: clamp(25px, 7vw, 34px); overflow-wrap: anywhere; }
  .drawer { width: 100%; max-height: 100dvh; }
  .drawer-head { padding-top: max(18px, env(safe-area-inset-top, 0px)); }
  .drawer-body { padding-bottom: max(32px, env(safe-area-inset-bottom, 0px)); }
  .signals .sev { float: none; display: block; margin-bottom: 6px; }
  .panel > h3 { flex-wrap: wrap; }
  .pager { flex-wrap: wrap; gap: 10px; }
  .toolbar label { min-width: 0; }
  .toolbar select { min-width: 0; }
  .tracked-remove { width: 44px; top: 0; right: 0; }
  .tracked-name { padding-right: 36px; }
  .search-row { grid-template-columns: minmax(0, 1fr) auto; }
  .my-characters-manage .manage-tools { gap: 8px; }
  .selected-tools { justify-content: flex-start; }
  body .btn { max-width: 100%; white-space: normal; text-align: center; padding-block: 8px; }
  .shift { min-width: 0; }
  .lookup-status { overflow-wrap: anywhere; }
  .lookup-form { grid-template-columns: minmax(0, 1fr) auto; }
  .toast { width: max-content; max-width: calc(100% - 28px); text-align: center; bottom: max(16px, env(safe-area-inset-bottom, 0px)); }
}

@media (max-width: 400px) {
  body[data-page="my-characters"] .lookup-form { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
