/* Shared sizing fixes. Keep colors, desktop composition and native zoom intact. */
.main-content, .layout > .app, .news-shell { min-width: 0; }
.main-content :is(input, select, textarea),
.layout > .app :is(input, select, textarea) { min-width: 0; max-width: 100%; }
.main-content :is(.input-group, .form-group, .form-field, .field),
.layout > .app :is(.field, .search-field) { min-width: 0; }
.main-content :is(.section-header, .header-row, .page-header) { flex-wrap: wrap; }
.main-content :is(.section-header, .header-row, .page-header) > div { min-width: 0; }
.main-content :is(h1, h2, h3, .team-name, .escola-meta),
.layout > .app :is(h1, h2, h3, .profile-row span:last-child) { overflow-wrap: anywhere; }
.main-content :is(.table-wrap, .table-scroll, .account-table-scroll, .review-wrap, .sorteio-table-wrap),
.layout > .app :is(.table-wrap, .table-scroll) { min-width: 0; max-width: 100%; overflow-x: auto; }
.main-content .escola-card .escola-info,
.main-content .team-card .team-info { min-width: 0; }
.main-content .escola-card .escola-nome { flex-wrap: wrap; overflow-wrap: anywhere; }
.main-content .escola-card .tag-propria { flex-shrink: 0; }
.main-content .escola-card .team-btns { width: auto; min-width: 0; max-width: 100%; }
.main-content .news-layout { grid-template-columns: minmax(0, 430px) minmax(0, 1fr); }
.main-content .news-layout > *, .main-content .news-panel form { min-width: 0; }
.main-content .news-panel :is(input, textarea, select) { min-width: 0; max-width: 100%; }
.main-content .news-item__body { overflow-wrap: anywhere; }
.main-content .team-detail-identity > img { flex-shrink: 0; }
.main-content .team-detail-identity > div { min-width: 0; overflow-wrap: anywhere; }
.main-content .dashboard-filters > * { min-width: 0; }
.main-content .dashboard-filters select { width: 100%; }
.main-content .dashboard-row { flex-wrap: wrap; }
.main-content .dashboard-row :is(strong, small) { overflow-wrap: anywhere; }

/* Coarse-pointer inputs need readable text without Safari's automatic focus zoom.
   Keep rem scaling so the accessibility text-size preference is still respected. */
@media (pointer: coarse) {
  :is(.main-content, .layout > .app) :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea) {
    font-size: max(16px, 1rem);
  }
}

@media (max-width: 900px) {
  .main-content .news-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  :root:is([data-font-scale=xlarge], [data-font-scale=largest]) .main-content .permission-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .topbar :is(.mobile-sidebar-toggle, .accessibility-trigger),
  .layout > .app .top-bar :is(.icon-btn, .accessibility-trigger) {
    width: 44px; min-width: 44px; height: 44px; min-height: 44px; flex-shrink: 0;
  }
  .main-content .escola-card {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    align-items: start;
  }
  .main-content .escola-card .team-btns {
    grid-column: 1 / -1;
    justify-content: flex-end;
    width: 100%;
    padding-top: 0;
  }
  .main-content .escola-card .team-btns:not(:has(*)) { display: none; }
  .main-content .escola-card .btn { min-height: 44px; }
  .main-content :is(.form-actions, .action-buttons) { flex-wrap: wrap; }
  .main-content :is(.form-actions, .action-buttons) > * { max-width: 100%; }
  .main-content .search-bar input { min-width: 0; }
  .main-content .search-bar button { flex-shrink: 0; min-width: 44px; min-height: 44px; }
  .main-content .news-panel input[type=file] { width: 100%; }
}
/* The mobile management dock is fixed; sticky match actions must stay above it. */
@media (max-width: 650px) {
  [data-interface=gestao] .main-content .match-final-controls {
    bottom: calc(86px + env(safe-area-inset-bottom, 0px));
  }
}
@media (max-width: 480px) {
  .main-content .dashboard-filters { grid-template-columns: minmax(0, 1fr); }
  .layout > .app .profile-row { align-items: flex-start; flex-direction: column; gap: 6px; }
  .layout > .app .profile-info-list { min-width: 0; }
  .main-content :is(.btn-create, .btn-submit, .btn-primary, .btn-back),
  .layout > .app :is(.btn-save, .student-profile__button) { max-width: 100%; white-space: normal; text-align: center; }
}
