/* Shared touch layouts for the public site, HUB and administration. */
.admin-mobile-navigation { display: none; }
@media (max-width: 1180px) {
  .site-nav { max-height: calc(100dvh - 94px); overflow-y: auto; overscroll-behavior: contain; }
  .site-header { backdrop-filter: none; background: rgba(255,255,255,.98); }
  .site-nav .private-user-panel, .site-nav .private-notification-panel { position: static; width: 100%; max-width: 100%; margin-top: 8px; box-shadow: none; }
  .site-nav .private-user-menu { width: 100%; }
}
@media (max-width: 1020px) {
  .admin-mobile-navigation { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
  .admin-mobile-navigation label { display: grid; gap: 6px; margin: 0; color: var(--navy); font-size: 13px; }
  .admin-mobile-navigation select { width: 100%; min-height: 46px; padding: 10px; border: 1px solid var(--line-strong); border-radius: 8px; background: #fff; color: var(--navy); }
  .admin-mobile-navigation .button { width: auto; min-height: 46px; padding: 10px 16px; }
  .admin-sidebar { display: none; }
}
@media (max-width: 760px) {
  html { scroll-padding-top: 88px; }
  body { -webkit-text-size-adjust: 100%; }
  body :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea) { min-width: 0; max-width: 100%; font-size: 16px !important; }
  body :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select) { min-height: 44px; }
  body :is(button,.button,.nav-toggle) { min-height: 44px; touch-action: manipulation; }
  body .button { white-space: normal; overflow-wrap: anywhere; line-height: 1.35; text-align: center; }
  body :is(input[type=checkbox],input[type=radio]) { width: 20px; height: 20px; flex: 0 0 auto; }
  fieldset { min-inline-size: 0; }
  main, main > *, form, form > *, section > *, .admin-content, .private-project-column { min-width: 0; }
  :is(h1,h2,h3,legend,.private-project-reference,.admin-section-head strong) { overflow-wrap: anywhere; }
  .site-header { gap: 10px; padding: 10px 14px; }
  .site-header .brand { width: clamp(130px,42vw,170px); min-width: 0; }
  .nav-toggle { width: 44px; }
  .site-nav { top: 76px; left: 12px; right: 12px; }
  .site-nav a, .site-nav summary { min-height: 44px; }
  .private-header .private-brand-lockup { gap: 7px; min-width: 0; }
  .private-header .private-meteovise-brand img { width: clamp(64px,20vw,88px); }
  .private-header .private-meteovise-hub-brand img { width: clamp(84px,26vw,108px); }
  .hero { padding-top: 106px; padding-bottom: 38px; }
  .hero h1 { font-size: clamp(2rem,8.5vw,3rem); line-height: 1.09; }
  .section { padding-inline: 18px; }
  .coordinate-inputs { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .radolan-query, .hero-query { min-width: 0; }
  .tool-panel-head, .precip-card, .tool-actions { flex-wrap: wrap; }
  .radolan-map-output, .private-map-output, .wind-map-output { min-height: 290px; height: min(65svh,460px); }
  .wind-map-panel { min-height: 0; grid-template-rows: auto minmax(0,1fr); }
  .radolan-map-frame { height: 100%; min-height: 0; }
  .map-loading-card { max-width: calc(100% - 24px); padding: 20px; }
  .map-placeholder { max-width: calc(100% - 24px); }
  .site-footer { gap: 20px; }
  .footer-links { flex-wrap: wrap; gap: 12px; }
  .footer-links a { display: inline-flex; align-items: center; min-height: 44px; }

  .private-dashboard { grid-template-columns: minmax(0,1fr); width: calc(100% - 24px); padding-top: 94px; gap: 18px; }
  .private-dashboard > * { min-width: 0; max-width: 100%; }
  .meteovise-hub-welcome, .private-dashboard-section, .private-task-center, .private-dashboard-guide, .private-dashboard-admin { padding: 20px; border-radius: 14px; }
  .meteovise-hub-welcome { gap: 18px; }
  .meteovise-hub-logo { width: min(205px,100%); }
  .meteovise-hub-greeting { max-width: 100%; }
  .meteovise-hub-greeting strong { overflow-wrap: anywhere; }
  .private-task-center { margin-bottom: 0; }
  .private-task-center-head, .private-dashboard-section-head, .private-project-map-head { flex-direction: column; align-items: flex-start; gap: 12px; }
  .private-task-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .private-task-grid button { grid-template-columns: 1fr; gap: 8px; padding: 13px; }
  .private-task-grid button > span { display: none; }
  .private-task-grid strong { font-size: 1.5rem; }
  .private-task-grid small { white-space: normal; font-size: 12px; line-height: 1.4; }
  .private-product-card, .private-product-card.wind-available { min-height: 0; padding: 22px; }
  .private-product-grid { gap: 16px; }
  .private-product-card ul { margin-block: 16px; }
  .private-project-controls { grid-template-columns: minmax(0,1fr); }
  .private-project-module-filter { flex-wrap: wrap; max-width: 100%; overflow-x: visible; }
  .private-project-module-filter > span { flex-basis: 100%; padding-block: 4px; }
  .private-project-module-filter button { font-size: 12px; padding-inline: 9px; }
  .private-project-map { height: 320px; }
  .private-project-map-meta { flex-wrap: wrap; }
  .private-dashboard-guide ol { grid-template-columns: 1fr; }
  .private-project summary, .private-project-detail-hero { gap: 12px; }
  .private-project-detail { width: calc(100% - 24px); padding-top: 94px; }
  .private-project-detail h1 { font-size: clamp(1.8rem,7vw,2.6rem); }
  .private-project-detail-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .private-project-detail-card-head { flex-wrap: wrap; }
  .private-project-detail-documents > article, .private-document-row { grid-template-columns: 32px minmax(0,1fr); }
  .private-project-detail-documents > article > .button, .private-project-detail-documents > article > .private-document-status, .private-project-detail-documents > article > .private-invoice-status { grid-column: 2; justify-self: start; }
  .private-report-question { grid-column: 1 / -1; }
  .private-report-question-body form > div, .private-report-message-list li > div { flex-wrap: wrap; gap: 10px; }
  .private-project-detail-documents :is(strong,small,span) { white-space: normal; overflow-wrap: anywhere; }
  .private-main { grid-template-columns: minmax(0,1fr); padding-inline: 12px; }
  .private-toolbar, .private-report-card, .private-report-config { padding: 20px; }
  .private-report-layout, .private-report-form { grid-template-columns: minmax(0,1fr); }
  .private-report-layout > *, .private-report-form > * { grid-column: auto; }
  .private-report-preview { min-width: 0; }
  .private-report-date-row { display: flex; flex-wrap: wrap; gap: 8px; }
  .private-report-date-row input { flex: 1 1 160px; }
  .private-report-date-row button { flex: 0 0 44px; width: 44px; }
  .private-report-options, .private-report-customer-fields { grid-template-columns: minmax(0,1fr); }

  .admin-dashboard { padding-inline: 12px; }
  .admin-content { width: 100%; }
  .admin-head h1 { font-size: clamp(1.7rem,7vw,2rem); }
  .admin-filter-form, .admin-report-filter-form, .admin-question-filter, .admin-product-form, .admin-form-grid, .admin-invoice-item, .admin-user-form { grid-template-columns: minmax(0,1fr); }
  .admin-filter-form > *, .admin-product-form > *, .admin-form-grid > *, .admin-invoice-item > * { grid-column: auto; min-width: 0; }
  .admin-invoice-create, .admin-invoice-upload, .admin-existing-invoice-import { padding: 16px; min-width: 0; }
  .admin-invoice-action-picker { grid-template-columns: minmax(0,1fr); padding: 12px; }
  .admin-invoice-item, .admin-existing-invoice-import .admin-invoice-item { grid-template-columns: minmax(0,1fr); }
  .admin-section-head .button { max-width: 100%; }
  .admin-table-wrap { max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; }
  .admin-table :is(td,th) { font-size: 13px; }
  .admin-table td small { font-size: 12px; line-height: 1.45; }
  .admin-table td::before { font-size: 11px; }
  .admin-table code { max-width: 100%; overflow-wrap: anywhere; }
  .mobile-record-table, .mobile-record-table tbody { display: block; min-width: 0; width: 100%; }
  .mobile-record-table thead { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); }
  .mobile-record-table tr { display: block; padding: 8px 14px; border-bottom: 2px solid var(--line); }
  .mobile-record-table td { display: grid; grid-template-columns: minmax(78px,.38fr) minmax(0,1fr); gap: 6px 12px; padding: 10px 0; border-bottom: 1px solid #edf2f6; white-space: normal; overflow-wrap: anywhere; }
  .mobile-record-table td::before { content: attr(data-label); font-size: 11px; font-weight: 700; color: #52667b; }
  .mobile-record-table td > :not(:first-child) { grid-column: 2; }
  .mobile-record-table td[colspan] { display: block; }
  .mobile-record-table td[colspan]::before { content: none; }
  .mobile-record-table .button { width: 100%; min-width: 0; }
  .admin-user-detail-actions, .admin-filter-actions { flex-wrap: wrap; }
  .admin-user-detail-actions .button { flex: 1 1 120px; }
  .admin-finance-kpis strong { font-size: 1.65rem; }
  .admin-cashflow-card .admin-section-head { max-width: calc(100vw - 48px); }

  dialog { max-width: calc(100vw - 20px); max-height: calc(100dvh - 24px); }
  .admin-user-dialog, .admin-invoice-dialog { width: calc(100vw - 20px); }
  .admin-user-dialog-panel, .admin-invoice-dialog .admin-invoice-create { max-height: calc(100dvh - 28px); overflow-y: auto; }
  .private-settings-modal { padding: 10px; }
  .private-settings-dialog { width: 100%; max-height: calc(100dvh - 20px); }
  .private-settings-dialog > header, .private-settings-content, .private-settings-dialog > footer { padding: 18px; }
  .private-settings-dialog > footer, .admin-user-dialog-actions { flex-wrap: wrap; gap: 10px; }
  .private-settings-dialog > footer .button { flex: 1 1 130px; }
  .private-settings-row { gap: 16px; }
  .private-settings-row h3 { font-size: 16px; }
  .private-settings-row p { font-size: 14px; }
  .agb-modal-panel { width: calc(100vw - 20px); max-height: calc(100dvh - 20px); overflow-y: auto; padding: 24px 20px; }
  .pdf-modal-panel { width: calc(100vw - 16px); height: calc(100dvh - 20px); grid-template-rows: auto minmax(0,1fr) auto; }
  .pdf-modal-head { padding: 18px; }
  .pdf-modal-actions { flex-wrap: wrap; padding: 12px; }
  .pdf-modal-actions .button { flex: 1 1 120px; }
  .private-auth-shell { padding: 24px 12px; min-height: 100svh; }
  .private-auth-card { padding: 28px 22px; }
}
