/* Mobile overrides for Lamprey. Desktop styles remain in styles.css. */
@media (max-width: 820px) {
  html { scroll-padding-top: 116px; }
  /* clip prevents horizontal bleed without creating a scrolling ancestor that breaks sticky positioning on iOS. */
  body { overflow-x: clip; }

  .app-shell { display: block; min-height: 100vh; }
  .main { width: 100%; min-width: 0; }

  /* Five primary destinations fit comfortably; secondary money views live under More. */
  .sidebar {
    position: fixed;
    inset: auto 0 0 0;
    width: 100%;
    height: auto;
    padding: 6px max(6px, env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left));
    background: rgba(11, 25, 40, .98);
    border-top: 1px solid rgba(255,255,255,.08);
    z-index: 100;
  }
  .brand, .sidebar-footer { display: none; }
  .nav {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 3px;
    width: 100%;
  }
  .nav-item[data-route="investments"],
  .nav-item[data-route="recurring"] { display: none; }
  .mobile-nav-more {
    min-width: 0;
    min-height: 50px;
    padding: 6px 2px 5px;
    border-radius: 9px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 3px;
    font-size: .68rem;
    line-height: 1.05;
    text-align: center;
    white-space: nowrap;
  }
  .nav-item {
    min-width: 0;
    min-height: 50px;
    padding: 6px 2px 5px;
    border-radius: 9px;
    flex-direction: column;
    justify-content: center;
    gap: 3px;
    font-size: .68rem;
    line-height: 1.05;
    text-align: center;
    white-space: nowrap;
  }
  .nav-icon { width: auto; font-size: 1.08rem; line-height: 1; }

  /* Header stays pinned under iOS browser chrome. */
  .app-header {
    position: sticky;
    top: 0;
    z-index: 50;
    height: auto;
    min-height: 106px;
    padding: calc(9px + env(safe-area-inset-top)) 14px 11px;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "brand profile"
      "search search";
    gap: 9px 12px;
    align-items: center;
  }
  .mobile-brand {
    display: block;
    grid-area: brand;
    font-size: 1rem;
    letter-spacing: -.01em;
  }
  .profile-badge { grid-area: profile; }
  .global-search { grid-area: search; grid-column: auto; width: 100%; }
  .global-search input {
    height: 44px;
    font-size: 16px;
    padding-right: 14px;
  }
  .global-search kbd { display: none; }

  /* Transactions already has a purpose-built search/filter surface; avoid duplicate search boxes. */
  body[data-view="transactions"] .app-header {
    min-height: 58px;
    grid-template-areas: "brand profile";
  }
  body[data-view="transactions"] .app-header .global-search { display: none; }
  body[data-view="transactions"] .view { padding-top: 14px; }

  .view {
    width: 100%;
    max-width: none;
    padding: 18px 14px calc(86px + env(safe-area-inset-bottom));
  }
  .page-heading { display: block; margin-bottom: 16px; }
  .page-heading h1 { font-size: 1.5rem; }
  .page-heading p { margin-top: 5px; font-size: .82rem; line-height: 1.45; }
  .heading-action { display: none; }

  /* Summary metrics stay compact instead of becoming a five-card vertical wall. */
  .metric-strip {
    display: flex;
    gap: 9px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x proximity;
    scrollbar-width: none;
    margin: 0 -14px 12px;
    padding: 0 14px 3px;
  }
  .metric-strip::-webkit-scrollbar { display: none; }
  .metric-card {
    flex: 0 0 154px;
    min-height: 92px;
    padding: 13px 14px;
    scroll-snap-align: start;
  }
  .metric-label { font-size: .76rem; }
  .metric-value { font-size: 1.18rem; }
  .metric-foot { margin-top: 6px; font-size: .72rem; }

  .overview-grid,
  .overview-bottom,
  .cash-flow-layout,
  .spending-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }
  .overview-grid, .overview-bottom { margin-bottom: 12px; }
  .panel-pad { padding: 15px; }
  .panel-header { margin-bottom: 12px; gap: 10px; }
  .panel-header h2 { font-size: 1rem; }
  .panel-header p { font-size: .75rem; line-height: 1.4; }
  .link-button { font-size: .78rem; }
  .cash-flow-layout { gap: 12px; }
  .flow-row { font-size: .86rem; }
  .flow-visual { height: 100px; }
  .notice { padding: 9px 0; }
  .notice strong { font-size: .82rem; }
  .notice p { font-size: .75rem; }

  .data-row { gap: 10px; padding: 12px 0; }
  .row-main { gap: 9px; }
  .merchant-icon, .account-icon { width: 32px; height: 32px; }
  .row-title { font-size: .86rem; }
  .row-meta { max-width: 56vw; font-size: .74rem; }
  .row-value { font-size: .84rem; }
  .row-subvalue { font-size: .7rem; }

  .account-summary-row { grid-template-columns: 36px minmax(0,1fr) auto; gap: 9px; }
  .summary-icon { width: 36px; height: 36px; }
  .account-summary-row strong { font-size: .84rem; }
  .account-summary-row p { font-size: .72rem; }
  .summary-amount { font-size: .9rem; }

  /* iOS zooms controls whose text is smaller than 16px. */
  .toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px;
  }
  .toolbar .search-control { grid-column: 1 / -1; min-width: 0; }
  .control {
    width: 100%;
    min-width: 0;
    height: 44px;
    font-size: 16px;
  }
  .clear-button {
    grid-column: 1 / -1;
    justify-self: start;
    min-height: 38px;
    padding: 0 4px;
    font-size: .82rem;
  }

  /* Transactions use a dedicated compact mobile card instead of reflowing a desktop table. */
  .desktop-transaction-table { display: none; }
  .mobile-transaction-list {
    display: grid;
    gap: 9px;
  }
  .mobile-transaction-card {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    grid-template-areas:
      "merchant amount"
      "meta amount"
      "date amount";
    gap: 4px 12px;
    padding: 14px 15px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 13px;
    box-shadow: var(--shadow);
  }
  .mobile-transaction-merchant {
    grid-area: merchant;
    min-width: 0;
    font-size: .98rem;
    font-weight: 720;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-transaction-amount {
    grid-area: amount;
    align-self: start;
    font-size: .95rem;
    font-weight: 750;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  .mobile-transaction-meta {
    grid-area: meta;
    min-width: 0;
    color: var(--muted);
    font-size: .78rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-transaction-date {
    grid-area: date;
    color: var(--muted);
    font-size: .76rem;
  }

  .accounts-total { margin-bottom: 14px; }
  .accounts-total small { font-size: .74rem; }
  .accounts-total strong { font-size: 1.45rem; }
  .account-group { margin-top: 18px; }
  .group-title { margin-bottom: 4px; }
  .group-title h2, .group-title strong { font-size: .9rem; }
  .account-line {
    grid-template-columns: 32px minmax(0, 1fr) auto 12px;
    gap: 9px;
    padding: 13px 2px;
  }
  .account-mask { display: none; }
  .account-name { font-size: .86rem; }
  .account-meta { max-width: 52vw; font-size: .74rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .account-balance { font-size: .84rem; }

  .spending-hero { padding: 16px; align-items: stretch; }
  .spend-total small, .spend-total span { font-size: .75rem; }
  .spend-total strong { font-size: 1.6rem; }
  .spend-bars { height: 112px; gap: 7px; }
  .spend-bar-col span { font-size: .7rem; }
  .category-line {
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 8px 10px;
    padding: 12px 0;
    font-size: .82rem;
  }
  .category-track { grid-column: 1 / -1; grid-row: 2; }
  .category-percent { min-width: 38px; font-size: .75rem; }

  .holdings-grid { grid-template-columns: minmax(0, 1fr); gap: 9px; }
  .holding-card h3 { min-height: 0; margin-bottom: 10px; font-size: .86rem; }
  .holding-card .ticker { font-size: .78rem; }
  .holding-meta { font-size: .74rem; }

  .recurring-summary,
  .detail-metrics {
    display: flex;
    overflow-x: auto;
    gap: 9px;
    margin: 0 -14px 12px;
    padding: 0 14px 3px;
    scrollbar-width: none;
  }
  .recurring-summary::-webkit-scrollbar,
  .detail-metrics::-webkit-scrollbar { display: none; }
  .mini-stat, .detail-metric { flex: 0 0 154px; }
  .mini-stat small, .detail-metric small { font-size: .72rem; }
  .mini-stat strong, .detail-metric strong { font-size: 1.02rem; }

  .account-detail-head { display: block; margin-bottom: 14px; }
  .detail-title { align-items: flex-start; }
  .detail-title h1 { font-size: 1.25rem; }
  .detail-title p, .detail-back { font-size: .76rem; }

  .more-grid { display: grid; gap: 10px; }
  .more-link {
    display: grid;
    grid-template-columns: 40px minmax(0,1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 16px;
  }
  .more-link strong { font-size: .92rem; }
  .more-link p { margin: 3px 0 0; color: var(--muted); font-size: .76rem; }

  .empty-state { padding: 38px 14px; }
}

@media (max-width: 370px) {
  .nav-item, .mobile-nav-more { font-size: .62rem; padding-inline: 0; }
  .nav-icon { font-size: 1rem; }
  .view { padding-left: 11px; padding-right: 11px; }
  .metric-strip, .recurring-summary, .detail-metrics { margin-left: -11px; margin-right: -11px; padding-left: 11px; padding-right: 11px; }
  .metric-card { flex-basis: 146px; }
}
