/* Shared constraints for the 17-stage cross-portal quality contract. */
html{-webkit-text-size-adjust:100%}body{min-width:0}header{flex-wrap:wrap}main,section,article,.card,.grid>*,.fields>*{min-width:0}input,select,textarea{max-width:100%;font-size:16px}button,a.button{min-height:44px;touch-action:manipulation}img,video,canvas{max-width:100%}h1,h2,h3,p,dd,td,th,.pill{overflow-wrap:anywhere}dialog{max-width:96vw}nav{max-width:100%}.tablewrap{max-width:100%;overflow-x:auto}@media(max-width:640px){header{gap:12px}.row{flex-wrap:wrap}.grid,.fields{grid-template-columns:1fr}.card{max-width:100%}}

/* Tablet / iPad optimizations (portrait ~768-1024px, landscape ~1024-1366px).
   Does not override mobile (<650px) or large desktop (>1366px) rules. */
@media (min-width: 768px) and (max-width: 1366px) {
  .portal-app main { padding: 0 20px; max-width: 100%; }
  .portal-header { padding: 12px 20px; }
  .portal-stats, .portal-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .portal-app #portal-orders .grid,
  .portal-app #commerce-order-board .grid { grid-template-columns: 1fr 1fr; }
  .auth-mode .auth-art { min-height: 420px; padding: 24px; }
  .auth-art h2 { font-size: 22px; max-width: 240px; }
  .portal-nav { padding-left: max(12px, env(safe-area-inset-left)); padding-right: max(12px, env(safe-area-inset-right)); }
  .portal-nav a, .portal-app .portal-nav button { font-size: 11px; min-height: 52px; }
  .tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  dialog { max-width: 90vw; width: 90vw; }
  .geo-grid { grid-template-columns: 1fr; }
  #geo-map { height: 420px; }
  .admin-app .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-app .dashboard-grid, .admin-app .dashboard-bottom { grid-template-columns: 1fr; }
}
@media (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {
  .portal-stats, .portal-actions { grid-template-columns: 1fr 1fr; }
  .portal-hero { flex-direction: column; align-items: flex-start; }
  .portal-hero h2 { font-size: 22px; }
  .admin-app .admin-topbar { flex-wrap: wrap; height: auto; }
  .page-toolbar { flex-direction: column; align-items: flex-start; gap: 8px; }
  .portal-app.auth-mode main { grid-template-columns: 1fr; }
  .auth-mode .auth-art { position: relative; min-height: 280px; }
}
@media (min-width: 1024px) and (max-width: 1366px) and (orientation: landscape) {
  .portal-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .portal-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .geo-grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
  #geo-map { height: 480px; }
  .admin-app .kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
/* GPS status messages — clearer and non-overlapping */
.gps-status { font-size: 13px; line-height: 1.5; padding: 10px 12px; border-radius: 10px; margin: 8px 0; }
.gps-status.disabled { background: #fff4e5; color: #9a5b00; }
.gps-status.stale { background: #fff8e6; color: #8a6d00; }
.gps-status.out-of-coverage { background: #ffebee; color: #a12036; }
.gps-status.ok { background: #e8faf0; color: #0d6e4f; }
