/* Shared responsive rules, loaded after each page's local styles. */
img, video, canvas { max-width:100%; }
input, select, textarea { box-sizing:border-box; max-width:100%; }
:where(.page, .section, .main, .card, .form-group, .info-row, .flash, .warning) {
  min-width:0;
  overflow-wrap:anywhere;
}
.eventi-grid { grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr)); }
.tabs { max-width:100%; overflow-x:auto; overscroll-behavior-x:contain; }
.tabs > * { flex-shrink:0; }

.admin-page .sidebar { overflow-y:auto; overscroll-behavior:contain; }
.admin-page .sidebar > * { flex-shrink:0; }
.admin-page .main { min-width:0; }
.admin-page .table-wrap { max-width:100%; overflow-x:auto; overscroll-behavior-x:contain; }
.admin-page .table-wrap:focus-visible { outline:2px solid var(--verde); outline-offset:3px; }
.admin-page .table-scroll-hint { margin:0 0 8px; font-size:.8rem; line-height:1.5; color:rgba(255,255,255,.7); }
.admin-page :where(.page-header, .form-card-header, .file-item, .campo-item) { gap:12px; flex-wrap:wrap; }
.admin-page :where(.page-header, .form-card-header, .file-item, .campo-item) > * { min-width:0; max-width:100%; }
.admin-page :where(.file-name, .section-path, .info-val, .img-info, .campo-info) { overflow-wrap:anywhere; min-width:0; }
.admin-page .forms-grid { grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr)); }

@media (max-width:1024px) {
  .admin-page .hamburger { display:flex; min-width:44px; min-height:44px; align-items:center; justify-content:center; }
  .admin-page .sidebar {
    transform:translateX(-100%); transition:transform .3s; z-index:160;
    width:min(280px,calc(100vw - 56px)); padding-top:76px;
    padding-bottom:max(24px,env(safe-area-inset-bottom));
    visibility:hidden;
  }
  .admin-page .sidebar.open { transform:translateX(0); visibility:visible; }
  .admin-page .overlay.open { display:block; }
  .admin-page.menu-open { overflow:hidden; }
  .admin-page .main { margin-left:0 !important; padding:76px 20px 32px !important; }
  .admin-page :where(.settings-row, .campo-form-grid) { grid-template-columns:minmax(0,1fr); }
}

@media (max-width:768px) {
  /* 16px avoids automatic form zoom on iOS. */
  input:not([type=checkbox]):not([type=radio]):not([type=color]), select, textarea { font-size:16px !important; min-width:0; }
  :where(.btn, .btn-sm, .tab-btn, .btn-entra, .btn-submit, .btn-delete, .btn-registrati) {
    min-height:44px; max-width:100%; white-space:normal; justify-content:center;
    text-align:center; overflow-wrap:anywhere;
  }
  :where(.info-row, .install-popup-actions, .download-bar, .download-bar-actions) { flex-wrap:wrap; }
  .info-row > * { min-width:0; overflow-wrap:anywhere; }
  .download-bar { padding-bottom:max(14px,env(safe-area-inset-bottom)); }
  .download-bar-actions { width:100%; }
  .download-bar-actions button { flex:1; min-width:0; min-height:44px; }
  .install-popup { max-height:calc(100dvh - 32px); overflow-y:auto; }
  .admin-page .main { padding:76px 16px 32px !important; }
  .admin-page .page-title { font-size:2rem; overflow-wrap:anywhere; }
  .admin-page :where(.card, .settings-card, .add-campo-card, .upload-card, .form-card, .gate-box) { padding:20px 16px; }
  .admin-page :where(.form-row, .campo-form-row, .info-grid, .risposta-card-fields) { grid-template-columns:minmax(0,1fr); }
  .admin-page .stats { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .admin-page .stat-card { min-width:0; padding:20px 12px; }
  .admin-page :where(.stat-row, .radio-row, .toolbar, .actions, .actions-bar, .header-actions, .img-row, .img-upload-form) { flex-wrap:wrap; }
  .admin-page .img-info { min-width:0; flex-basis:150px; }
  .admin-page .upload-row > .form-group { width:100%; min-width:0; }
  .admin-page .upload-row :where(input, select) { width:100%; min-width:0; }
  .admin-page :where(.search-box, .img-upload-form) { width:100%; max-width:100%; min-width:0; }
  .admin-page .risposta-field-val { white-space:normal; overflow-wrap:anywhere; }
  .admin-page .foto-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .admin-page .foto-overlay :where(button, .btn) { min-width:44px; min-height:44px; }
  .admin-page .album-grid { grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr)); }
  .admin-page .album-settings > div { min-width:0 !important; flex-basis:100% !important; }
  .admin-page th, .admin-page td { padding:12px; }
  .admin-page .box { max-width:100%; padding:28px 20px; }
}

@media (max-width:400px) {
  body:not(.admin-page) header { gap:8px; padding-left:12px; padding-right:12px; }
  body:not(.admin-page) header .logo-text { min-width:0; font-size:1.1rem; }
  body:not(.admin-page) header .logo-img { max-width:140px; height:auto; max-height:28px; object-fit:contain; }
  body:not(.admin-page) header nav { flex-shrink:0; }
  body:not(.admin-page) header nav a { margin-left:6px; }
  .admin-page .btn { padding-left:12px; padding-right:12px; }
}

/* Gallery controls stay in the document flow until the user scrolls. */
.photo-gallery-page { --gallery-header-height:76px; }
.photo-gallery-page .album-header { padding-top:calc(var(--gallery-header-height) + 24px); overflow-wrap:anywhere; }
.photo-gallery-page .select-toggle {
  position:sticky; top:calc(var(--gallery-header-height) + 8px); right:auto;
  display:block; width:max-content; max-width:calc(100% - 32px);
  margin:0 16px 16px auto; min-height:44px;
}
.photo-gallery-page .feed-check { pointer-events:none; }
.photo-gallery-page.has-photo-selection { padding-bottom:var(--download-bar-height, 120px); }
.photo-gallery-page .lightbox img { max-height:100dvh; }
.photo-gallery-page .lb-close {
  min-width:44px; min-height:44px;
  top:max(12px,env(safe-area-inset-top)); right:max(12px,env(safe-area-inset-right));
}
.photo-gallery-page .lb-counter { bottom:max(20px,env(safe-area-inset-bottom)); }

/* Short viewports and the on-screen keyboard must leave steps scrollable. */
.membership-onboarding-page .step {
  padding-top:max(80px,calc(env(safe-area-inset-top) + 64px));
  padding-bottom:max(32px,calc(env(safe-area-inset-bottom) + 16px));
  scroll-padding-block:80px 32px;
}
.membership-onboarding-page .step > * { flex-shrink:0; }
.membership-onboarding-page .lang-switch { top:max(12px,env(safe-area-inset-top)); }
.membership-onboarding-page .lang-switch button { min-width:44px; min-height:44px; }
.membership-card-page {
  min-height:100svh;
  padding-top:max(96px,calc(env(safe-area-inset-top) + 80px));
  padding-bottom:max(24px,env(safe-area-inset-bottom));
}
.membership-card-page .stage { flex-shrink:0; }
.membership-card-page .top-link { display:inline-flex; align-items:center; min-height:44px; }

@media (pointer:coarse), (max-width:768px) {
  :where(.btn, .btn-sm, .btn-test, .install-popup button) { min-height:44px; }
  body:not(.admin-page) .nav-login { display:inline-flex; align-items:center; min-height:44px; }
  .admin-page .sidebar :where(a:not(.sidebar-logo), .sidebar-group-toggle) { min-height:44px; }
  .admin-page .sidebar-bottom a { display:flex; align-items:center; }
  .admin-page :where(.checkbox-row, .radio-row label, .manual-item) { min-height:44px; }
  .admin-page :where(.checkbox-row, .radio-row, .manual-item) label { cursor:pointer; }
  .admin-page :where(input[type=checkbox], input[type=radio]) { width:20px; height:20px; flex-shrink:0; }
}

@media (prefers-reduced-motion:reduce) {
  .admin-page .sidebar { transition:none; }
}
