/*
   PriceLive v18.2.0 — Mobile UI System
   Goal: one coherent mobile interaction model across public pages.
   This file intentionally sits last in the cascade.
*/

@media (max-width: 900px) {
  :root {
    --mobile-gutter: max(14px, env(safe-area-inset-left));
    --mobile-gutter-right: max(14px, env(safe-area-inset-right));
    --mobile-bottom: max(16px, env(safe-area-inset-bottom));
    --mobile-control: 44px;
    --mobile-control-sm: 40px;
    --mobile-radius: 18px;
  }

  html { overflow-x: clip !important; }
  body {
    overflow-x: clip !important;
    font-size: 15px;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }

  body:not(.pl-index-zoom):not(.pl-board-page) {
    padding-bottom: var(--mobile-bottom);
  }

  body:not(.pl-index-zoom):not(.pl-board-page) .page-wrapper {
    padding: 14px var(--mobile-gutter-right) 36px var(--mobile-gutter);
  }
  body:not(.pl-index-zoom):not(.pl-board-page) .container {
    width: 100%;
    max-width: 100%;
    padding-inline: 0;
  }

  /* Unified interactive sizing */
  a, button, input, select, textarea, summary,
  .tab-btn, .tf-btn, .cat-btn, .faq-filter,
  .refresh-btn, .copy-table-btn, .copy-pill, .heatmap-toggle,
  .asset-action-btn, .asset-chart-btn,
  .pl-topbar-icon, .pl-topbar-login, .pl-topbar-mobile, .pl-topbar-sidebar,
  .pl-sidebar-close, .pl-sidebar-login,
  .pl-chat-choice-close, .pl-ai-back, .pl-ai-close, .pl-ai-send, .pl-ai-fab {
    min-height: var(--mobile-control);
  }

  .theme-toggle, .sidebar-toggle, .pl-topbar-icon, .pl-topbar-sidebar {
    width: var(--mobile-control);
    min-width: var(--mobile-control);
  }

  /* Prevent iOS input zoom. */
  input, select, textarea, .faq-search-wrap input, .pl-ai-input input,
  .ai-chat-input input { font-size: 16px !important; }

  /* Shared typography floor: labels may be compact, content never microscopic. */
  .page-wrapper p, .page-wrapper li, .page-wrapper td, .page-wrapper th,
  .card p, .feature-card p, .asset-page-body, .asset-page-intro,
  .faq-answer, .faq-item .answer, .faq-card div,
  .ticket-info, .ticket-card, .doc-section, .doc-nav,
  .dashboard-wrapper, .feature-page, .calculator-page, .alarm-page {
    font-size: clamp(0.875rem, 2.8vw, 1rem);
    line-height: 1.9;
  }

  .page-wrapper h1, .page-wrapper h2, .page-wrapper h3,
  .dashboard-title, .tickets-title, .page-header h1, .calc-header h1 {
    letter-spacing: -.025em;
  }

  /* Shared navigation */
  .pl-topbar-wrap {
    width: calc(100% - 20px) !important;
    max-width: none !important;
    top: max(8px, env(safe-area-inset-top)) !important;
    margin: 0 auto !important;
  }
  .pl-topbar {
    min-height: 56px !important;
    padding: 7px 8px !important;
    border-radius: 17px !important;
    gap: 7px !important;
  }
  .pl-topbar-logo { width: 38px !important; height: 38px !important; }
  .pl-topbar-brand { min-width: 0 !important; }
  .pl-topbar-brand-text { min-width: 0; }
  .pl-topbar-brand-title { font-size: .95rem !important; }
  .pl-topbar-link, .pl-topbar-menu-btn { min-height: 44px !important; }
  .pl-topbar-actions { gap: 5px !important; }
  .pl-topbar-login { min-width: 44px !important; padding-inline: 10px !important; }

  .pl-sidebar {
    width: min(380px, 86vw) !important;
    max-width: 86vw !important;
    padding-bottom: env(safe-area-inset-bottom);
  }
  .pl-sidebar-nav { padding: 12px 10px 20px; }
  .pl-nav-item { min-height: 48px !important; padding: 9px 12px !important; font-size: .95rem !important; }
  .pl-nav-icon { width: 28px !important; height: 28px !important; }
  .pl-sidebar-close { width: 44px !important; min-width: 44px; }
  .pl-sidebar-login { min-height: 44px; padding: 0 14px; }
  .pl-subnav a { min-height: 44px; display: flex; align-items: center; }

  /* Shared cards and forms */
  .card, .feature-card, .asset-page-card, .ticket-card, .plan-card,
  .compare-table-wrap, .doc-nav, .doc-section, .api-test-panel {
    border-radius: var(--mobile-radius);
  }
  .card, .feature-card, .asset-page-card, .ticket-card, .plan-card,
  .doc-section, .api-test-panel { padding: 16px !important; }

  .theme-toggle, .sidebar-toggle, .refresh-btn, .copy-table-btn,
  .asset-action-btn, .asset-chart-btn, .tab-btn, .tf-btn,
  .category-filter .cat-btn, .faq-filter {
    font-size: .85rem !important;
  }

  .tabs { gap: 5px !important; padding: 5px !important; }
  .tab-btn { min-width: 44px !important; padding: 0 12px !important; }

  /* Tables: readable, horizontally scrollable only as a deliberate last resort. */
  .table-responsive, .table-wrap, .doc-table-wrap, .compare-table-wrap,
  .api-table-wrap, .board-table-scroll, .table-scroll, .data-table-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: auto !important;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    border-radius: 14px;
  }
  .doc-table, .data-table, .compare-table, .api-table,
  .board-market-table, table.data-table {
    min-width: 0 !important;
    width: 100%;
  }
  .doc-table th, .doc-table td, .data-table th, .data-table td,
  .compare-table th, .compare-table td, .api-table th, .api-table td,
  .board-market-table th, .board-market-table td {
    font-size: .82rem !important;
    padding: 9px 10px !important;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .compare-table {
    font-size: .82rem !important;
  }

  /* Content widths */
  .asset-page-shell { padding: 14px var(--mobile-gutter-right) 40px var(--mobile-gutter) !important; }
  .asset-page-header { padding: 17px !important; border-radius: 20px; }
  .asset-page-price { font-size: clamp(1.25rem, 7vw, 1.8rem); }
  .asset-chart { min-height: 280px !important; }
  .asset-chart-toolbar { flex-wrap: nowrap !important; overflow-x: auto; padding-bottom: 4px; }
  .asset-chart-btn { flex: 0 0 auto; min-width: 76px; }
  .asset-share-grid { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
  .asset-share-option { min-height: 52px; font-size: .82rem; }

  /* News / analysis / academy cards */
  .news-card, .analysis-card, .academy-card, .article-card,
  .content-card { min-width: 0; }
  .news-card img, .analysis-card img, .academy-card img,
  .article-card img, .content-card img { width: 100%; height: auto; max-height: 220px; object-fit: cover; }
  .card-meta, .news-meta, .analysis-meta, .academy-meta, .article-meta { font-size: .78rem !important; }
  .badge, .category-badge, .news-category, .analysis-category { font-size: .75rem !important; min-height: 30px; }
  .pagination { gap: 6px; flex-wrap: wrap; }
  .pagination a, .pagination button { min-width: 44px; min-height: 44px; }

  /* FAQ */
  .faq-search-wrap { min-height: 48px !important; }
  .faq-search-wrap input { height: 48px !important; }
  .faq-filters, .category-filter { overflow-x: auto; scrollbar-width: none; }
  .faq-filter, .category-filter .cat-btn { min-height: 44px !important; font-size: .82rem !important; padding-inline: 13px !important; flex: 0 0 auto; }
  .faq-question, .faq-card summary { min-height: 52px; font-size: .95rem !important; line-height: 1.8; }
  .faq-answer, .faq-card div { font-size: .9rem !important; line-height: 1.9 !important; }

  /* Dashboard */
  .dashboard-wrapper { padding-inline: 0 !important; }
  .dashboard-header, .dashboard-title { margin-inline: 0; }
  .dashboard-feature-links, .quick-actions, .dashboard-actions { grid-template-columns: 1fr !important; }
  .dashboard-feature-links a, .quick-action, .connect-bot, .admin-access { min-height: 52px; }
  .profile-card, .profile-panel { display: block !important; }

  /* Alarm */
  .alarm-item { padding: 13px !important; }
  .alarm-item .info .name { font-size: .9rem !important; }
  .alarm-item .info .target { font-size: .82rem !important; }
  .alarm-actions button, .alarm-actions a { min-width: 44px; min-height: 44px; }

  /* Tickets */
  .ticket-list-item, .ticket-card { padding: 14px !important; }
  .ticket-list-item { gap: 10px; }
  .ticket-actions { display: flex; flex-wrap: wrap; gap: 8px; }
  .ticket-actions > * { min-width: 44px; min-height: 44px; }
  .modal-content { width: min(94vw, 680px) !important; max-height: 88dvh; overflow: auto; padding: 16px !important; }

  /* Calculator */
  .calculator-page { padding-inline: 0 !important; }
  .calculator-tabs, .calc-tabs { display: flex; overflow-x: auto; gap: 6px; }
  .calculator-tabs > *, .calc-tabs > * { flex: 0 0 auto; min-height: 44px; }
  .compare-table-wrap { padding: 0 !important; }
  .calculator-page .compare-table { min-width: 520px !important; }

  /* Code/docs */
  pre, code { overflow-x: auto; max-width: 100%; }
  pre { font-size: .8rem; line-height: 1.65; padding: 12px !important; border-radius: 14px; }
  .doc-section h2, .doc-section h3 { font-size: 1.12rem; }

  /* Chat: modal-like, keyboard aware, no accidental overlap with system UI */
  .pl-ai-widget { z-index: 1600 !important; }
  .pl-ai-box {
    width: min(100vw - 20px, 430px) !important;
    height: min(78dvh, 640px) !important;
    min-height: 360px !important;
    max-height: calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 92px) !important;
    border-radius: 22px !important;
    margin-inline: auto !important;
  }
  .pl-ai-header { min-height: 58px; padding: 9px 12px !important; }
  .pl-ai-close, .pl-ai-back { width: 44px !important; min-width: 44px; }
  .pl-ai-messages { padding: 12px !important; font-size: .9rem; }
  .pl-ai-input { padding: 9px 10px calc(9px + env(safe-area-inset-bottom)) !important; gap: 8px; }
  .pl-ai-input input { min-width: 0; min-height: 46px; }
  .pl-ai-input button { min-width: 50px; min-height: 46px; }
  .pl-chat-chooser { width: min(100vw - 20px, 430px) !important; margin-inline: auto; }
  .pl-chat-choice { min-height: 64px !important; font-size: .9rem; }
  .pl-ai-fab { width: 48px !important; height: 48px !important; min-height: 48px !important; }

  /* Character should never compete with interaction targets on small screens. */
  .pl-character { display: none !important; }

  /* Toasts respect safe areas. */
  .toast-message, .pl-toast, .toast {
    bottom: calc(12px + env(safe-area-inset-bottom)) !important;
    max-width: calc(100vw - 28px) !important;
    font-size: .85rem !important;
    min-height: 44px;
  }
}

@media (max-width: 480px) {
  :root { --mobile-gutter: max(12px, env(safe-area-inset-left)); --mobile-gutter-right: max(12px, env(safe-area-inset-right)); }
  .page-wrapper { padding-inline: var(--mobile-gutter-right) !important; }
  .pl-topbar-wrap { width: calc(100% - 14px) !important; }
  .pl-topbar-brand-sub { display: none !important; }
  .pl-topbar-brand-title { font-size: .9rem !important; }
  .pl-sidebar { width: min(360px, 88vw) !important; max-width: 88vw !important; }
  .card, .feature-card, .asset-page-card, .ticket-card, .plan-card, .doc-section { padding: 14px !important; }
  .asset-share-grid { grid-template-columns: 1fr 1fr !important; gap: 7px; }
  .asset-share-option { font-size: .78rem; }
  .pagination a, .pagination button { min-width: 42px; }
}

@media (max-width: 380px) {
  .pl-topbar-actions { gap: 4px !important; }
  .pl-topbar-icon, .pl-topbar-sidebar { width: 42px !important; min-width: 42px !important; }
  .pl-topbar-login { width: 42px !important; min-width: 42px !important; padding: 0 !important; }
  .pl-topbar-login span { display: none !important; }
  .sidebar-nav .nav-item { font-size: .9rem !important; }
  .card h2 { font-size: 1rem !important; }
}

@media (max-width: 900px) {
  /* Tables and numeric cells should wrap instead of forcing viewport overflow. */
  .currency-price, .currency-buy-sell, .item-price, .price-value,
  .buy-price, .sell-price, .ticket-id, .api-endpoint, .endpoint-url {
    min-width: 0 !important;
    max-width: 100%;
    white-space: normal !important;
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  .currency-buy-sell { flex-wrap: wrap; }
  .currencies-grid.two-columns { grid-template-columns: 1fr !important; }

  /* Board was a separate fullscreen implementation, so it gets its own mobile flow. */
  body.pl-board-page {
    overflow-y: auto !important;
    min-height: 100dvh !important;
  }
  body.pl-board-page .board-app {
    width: 100% !important;
    height: auto !important;
    min-height: 100dvh;
    grid-template-rows: auto auto auto auto auto !important;
    padding: calc(10px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom)) !important;
    gap: 10px !important;
  }
  body.pl-board-page .board-header {
    position: sticky;
    top: 8px;
    z-index: 8;
    padding: 9px 10px !important;
  }
  body.pl-board-page .board-brand strong { font-size: 1rem; }
  body.pl-board-page .board-brand span { font-size: .72rem; }
  body.pl-board-page .board-actions button,
  body.pl-board-page .board-actions a { width: 44px !important; height: 44px !important; }
  body.pl-board-page .board-grid-wrap {
    grid-template-columns: repeat(2, minmax(0,1fr)) !important;
    gap: 10px !important;
    overflow: visible !important;
  }
  body.pl-board-page .board-column {
    min-height: 0 !important;
    padding: 13px !important;
  }
  body.pl-board-page .board-table-scroll { overflow-x: auto !important; overflow-y: visible !important; }
  body.pl-board-page .board-column table { font-size: .84rem !important; }
  body.pl-board-page .board-column th,
  body.pl-board-page .board-column td { padding: 9px 8px !important; font-size: .82rem !important; }
  body.pl-board-page .board-column td:nth-child(2) { font-size: .9rem !important; }
  body.pl-board-page .fx-ticker { min-height: 48px; }
  body.pl-board-page .fx-ticker-label { min-width: 70px; padding-inline: 10px; font-size: .82rem; }
  body.pl-board-page .fx-item { padding: 8px 10px; font-size: .78rem; }
  body.pl-board-page .fx-item b { font-size: .84rem; }
  body.pl-board-page .board-footer { font-size: .75rem !important; line-height: 1.7; }
}

@media (max-width: 640px) {
  body.pl-board-page .board-grid-wrap { grid-template-columns: 1fr !important; }
  body.pl-board-page .board-column { min-height: 0 !important; }
}

/* v18.2.1 — compact mobile refinement
   Keep the v18 visual system, but restore the tighter density of the legacy mobile UI. */
@media (max-width: 900px) {
  :root {
    --mobile-control: 40px;
    --mobile-control-sm: 36px;
    --mobile-radius: 15px;
  }

  body:not(.pl-index-zoom) .page-wrapper {
    padding-top: 10px;
    padding-bottom: 28px;
  }

  /* Smaller shared top controls and a narrower drawer on phones. */
  .theme-toggle, .sidebar-toggle,
  .pl-topbar-icon, .pl-topbar-sidebar,
  .pl-topbar-login {
    width: 38px !important;
    min-width: 38px !important;
    height: 38px !important;
    min-height: 38px !important;
  }
  .pl-sidebar {
    width: min(300px, 78vw) !important;
    max-width: 78vw !important;
  }
  .pl-sidebar-header { padding: 12px 14px !important; }
  .pl-sidebar-user { padding: 10px 12px !important; }
  .pl-sidebar-avatar { width: 34px; height: 34px; }
  .pl-sidebar-nav { padding: 8px 8px 14px !important; }
  .pl-nav-item { min-height: 42px !important; padding: 7px 10px !important; border-radius: 12px; font-size: .88rem !important; }
  .pl-nav-icon { width: 27px !important; height: 27px !important; border-radius: 8px !important; }
  .pl-subnav a { min-height: 38px; padding: 7px 16px 7px 10px; font-size: .72rem; }
  .pl-sidebar-footer { padding: 9px 12px; font-size: .58rem; }
}

@media (max-width: 480px) {
  .pl-sidebar {
    width: min(292px, 76vw) !important;
    max-width: 76vw !important;
  }
  .pl-nav-item { font-size: .84rem !important; }
}

@media (max-width: 900px) {
  body { font-size: 14px; }
  .page-wrapper p, .page-wrapper li, .page-wrapper td, .page-wrapper th,
  .card p, .feature-card p, .asset-page-body, .asset-page-intro,
  .faq-answer, .faq-item .answer, .faq-card div,
  .ticket-info, .ticket-card, .doc-section, .doc-nav,
  .dashboard-wrapper, .feature-page, .calculator-page, .alarm-page {
    font-size: clamp(.82rem, 2.6vw, .93rem) !important;
    line-height: 1.82 !important;
  }
  .theme-toggle, .sidebar-toggle, .refresh-btn, .copy-table-btn,
  .asset-action-btn, .asset-chart-btn, .tab-btn, .tf-btn,
  .category-filter .cat-btn, .faq-filter {
    font-size: .78rem !important;
  }
}
