@media (orientation: portrait) {
  body { padding: 0.6rem; }
  header { align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; }
  h1 { margin: 0; font-size: 1.25rem; }
  header nav { display: none; }
  .nav-select { display: block; max-width: 50%; }

  input, select, button { font-size: 16px; }
  button, select, input:not([type="checkbox"]):not([type="file"]) { min-height: 2.5rem; box-sizing: border-box; }
  input[type="checkbox"] { width: 1.1rem; height: 1.1rem; }
  form > input[type="search"], #login-form > * { flex: 1 1 100%; }
  .bulk { gap: 0.4rem 0.3rem; }

  .panel > summary, .panel > .panel-head { padding: 0.5rem 0.75rem; }
  .panel > :not(summary):not(.panel-head) { margin-inline: 0.5rem; }
  .panel > summary + *, .panel > .panel-head + * { margin-top: 0.75rem; }
  .panel > :last-child { margin-bottom: 0.75rem; }
  .panel > table { width: calc(100% - 1rem); }
  .tabs { overflow-x: auto; }
  .tab { white-space: nowrap; }

  table { font-size: 0.85rem; }
  th, td { padding: 0.4rem 0.3rem; }
  th { font-size: 0.7rem; letter-spacing: 0.02em; }
  td { overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
  td.num { overflow-wrap: normal; white-space: nowrap; }
  td.nowrap { white-space: normal; overflow-wrap: normal; }
  td input:not([type="checkbox"]), td select { min-height: 2.25rem; padding: 0.2rem 0.3rem; }
  td select { min-width: 3.6rem; padding-right: 0; }
  td input.price-input { width: 4rem; appearance: textfield; -moz-appearance: textfield; }
  td input.price-input::-webkit-inner-spin-button, td input.price-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
  td:has(input, select) { padding-inline: 0.25rem; }
  td .sub + select { margin-top: 0.3rem; }
  td .trend { display: block; margin: 0; }
  .pill { padding: 0.1rem 0.45rem; font-size: 0.75rem; }
  .table-scroll { max-height: 50vh; }

  dialog { max-width: calc(100vw - 2rem); box-sizing: border-box; }
  dialog input { flex: 1 1 100%; }

  .group { margin-bottom: 1rem; }
  .stat-grid { grid-template-columns: 1fr; gap: 0.5rem; margin-bottom: 0.75rem; }
  .stat { padding: 0.6rem 0.75rem; }
  .stat-value { margin: 0.1rem 0; font-size: 1.5rem; }
  .chart { padding: 0.75rem; }
  .chart-head { flex-wrap: wrap; gap: 0.5rem; }
  .chart-controls { justify-content: flex-start; gap: 0.5rem; }
  .chart-tooltip { width: max-content; max-width: 80%; white-space: normal; }
  .pie-grid, .movers { gap: 0.75rem; }
  .movers { margin-top: 0.75rem; }

  .card-header { flex-direction: column; align-items: center; gap: 0.75rem; }
  .card-header > div:last-child { align-self: stretch; }
  .card-photo { height: auto; max-height: 40vh; }
  .card-photo-empty { width: 100%; height: 8rem; }
  .card-title { font-size: 1.3rem; }
  .card-facts { font-size: 1rem; }

  .trade-sides { gap: 0.75rem; }
}
