/*
 * Couche responsive finale de la plateforme Evoleo Scan.
 * Elle ne change ni la palette ni la logique des composants : elle sécurise
 * uniquement leurs dimensions, leurs grilles et leurs zones de défilement.
 */
*,*::before,*::after{box-sizing:border-box}
html{width:100%;max-width:100%;overflow-x:hidden;-webkit-text-size-adjust:100%}
body{width:100%;max-width:100%;overflow-x:hidden}
img,svg,video,canvas,iframe{max-width:100%}
input,select,textarea,button{min-width:0;max-width:100%}
textarea{resize:vertical}
.app-shell,.main-content,.content,.page-heading,.section-head,.topbar,
.dashboard-page,.calendar-page,.billing-page,.accounting-page,.deadline-page,
.settings-page-section,.accountant-dossier-page{min-width:0;max-width:100%}
.page-heading>div,.section-head>div,.topbar>*{min-width:0}
.page-heading h1,.page-heading p,.section-head h2,.section-head p,
.admin-row strong,.admin-row small,.setting-line strong,.setting-line small{
  overflow-wrap:anywhere;
}

/* Les tableaux métier défilent dans leur propre zone et jamais dans la page. */
.table-card,.business-document-table,.balance-table-wrap,.deadline-table-wrap,
.party-invoice-table,.invoice-list-table,.audit-table-wrap,.bank-payment-ledger,
.invoice-sheet-lines,.payment-history,.calendar-table-wrap{
  max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
}
.balance-table,.deadline-table,.bank-payment-ledger table,.payment-history table,
.invoice-sheet-lines table{width:100%}

/* Les fenêtres restent utilisables sur les petits écrans et avec clavier. */
.admin-modal,.calendar-modal,.document-preview-modal,.delete-confirm-modal,
.party-create-modal,.clean-modal,.invoice-dialog,.invoice-preview-modal{
  max-width:100vw;max-height:100dvh;
}
.admin-modal-box,.calendar-modal-box,.party-create-dialog,.clean-modal-dialog,
.invoice-dialog__box,.delete-confirm-box{
  max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;
}

@media(max-width:1180px){
  /* Navigation */
  .app-shell{display:block!important;width:100%!important}
  .main-content,.sidebar-collapsed .main-content{
    width:100%!important;max-width:100%!important;margin-left:0!important;
  }
  .sidebar,.sidebar-collapsed .sidebar{
    position:fixed!important;z-index:2000!important;inset:0 auto 0 0!important;
    width:min(290px,88vw)!important;min-width:0!important;max-width:88vw!important;
    height:100dvh!important;overflow-x:hidden!important;overflow-y:auto!important;
    transform:translateX(-105%)!important;transition:transform .22s ease!important;
    box-shadow:18px 0 45px rgba(9,31,48,.22)!important;
  }
  .sidebar.open{transform:translateX(0)!important}
  .sidebar-overlay{z-index:1900!important}
  .menu-button{display:inline-grid!important;place-items:center!important}
  .sidebar-close{display:grid!important;place-items:center!important}
  .topbar{position:sticky!important;top:0;z-index:1000!important;width:100%!important}
  .top-dossier-context{min-width:0!important;max-width:min(52vw,620px)!important;overflow:hidden!important}
  .top-dossier-context>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .content,.main-content>section.content{width:100%!important;max-width:100%!important;padding-inline:24px!important}

  /* Grilles générales */
  .stats-grid,.summary-grid,.receipt-summary,.calendar-summary,.invoice-summary,
  .balance-kpis,.reminder-kpis,.deadline-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .document-shortcuts,.document-section-cards,.settings-grid,.account-info-grid,
  .recent-documents-grid,.admin-dashboard-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .accounting-charts,.billing-grid,.parties-workspace,.invoice-general-overview,
  .calendar-layout,.appointments-layout{
    grid-template-columns:1fr!important;
  }

  /* Barres de recherche et d’action */
  .page-filters,.audit-filters,.balance-filters,.deadline-filters,
  .reminder-filter-fields,.calendar-filters{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .billing-toolbar,.parties-toolbar,.receipts-heading,.invoice-list-panel__head,
  .invoice-list-panel__controls{max-width:100%}

  /* Facturation */
  .invoice-line-edit{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .invoice-line-edit .edit-description{grid-column:span 2}
  .invoice-sheet-add-line,.invoice-sheet-edit-line{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  .invoice-create-dialog,.invoice-edit-sheet .invoice-create-dialog{
    width:min(820px,82vw)!important;max-width:100vw!important;
  }
  .invoice-pdf-studio{grid-template-columns:1fr!important}
  .invoice-pdf-actions{flex-wrap:wrap}
}

@media(min-width:900px) and (max-width:1180px){
  /* Sur iPad et petit ordinateur la navigation reste visible et compréhensible. */
  body .sidebar,body.sidebar-collapsed .sidebar{
    position:fixed!important;inset:0 auto 0 0!important;
    width:230px!important;min-width:230px!important;max-width:230px!important;
    height:100dvh!important;transform:none!important;box-shadow:none!important;
  }
  body .main-content,body.sidebar-collapsed .main-content{
    width:calc(100% - 230px)!important;max-width:calc(100% - 230px)!important;
    margin-left:230px!important;
  }
  body .sidebar-overlay,body .sidebar-close,body .menu-button{display:none!important}
  body.sidebar-mobile-open{overflow:auto!important}
}

@media(max-width:760px){
  .content,.main-content>section.content{padding:18px 14px 32px!important}
  .topbar{height:60px!important;min-height:60px!important;padding:0 10px!important;gap:5px!important}
  .topbar .breadcrumb,.top-dossier-context,.top-date{display:none!important}
  .topbar-context-switcher{flex:1 1 auto!important;min-width:0!important;margin:0!important}
  .topbar-context-picker{min-width:0!important;max-width:100%!important}
  .topbar-context-button{width:min(160px,43vw)!important;max-width:100%!important}
  .top-actions{flex:0 0 auto!important;gap:4px!important}
  .appointment-notification-button,.theme-toggle,.top-logout{
    width:34px!important;min-width:34px!important;height:36px!important;padding:0!important;
  }
  .top-avatar{display:none!important}
  .appointment-notification-panel{position:fixed!important;top:62px!important;right:8px!important;left:8px!important;width:auto!important;max-height:calc(100dvh - 75px)!important;overflow:auto!important}

  .page-heading,.section-head,.calendar-heading,.deadline-title-row,
  .reminder-title-row,.balance-title-row,.receipts-heading{
    align-items:stretch!important;flex-direction:column!important;gap:12px!important;
  }
  .page-heading h1,.main-content .page-heading h1{font-size:clamp(27px,9vw,34px)!important}
  .page-heading button,.page-heading .primary-button,.section-head>.primary-button,
  .deadline-title-row button,.reminder-title-row button{width:100%!important;justify-content:center!important}

  .stats-grid,.summary-grid,.receipt-summary,.calendar-summary,.invoice-summary,
  .balance-kpis,.reminder-kpis,.deadline-kpis,.document-shortcuts,
  .document-section-cards,.settings-grid,.account-info-grid,
  .recent-documents-grid,.admin-dashboard-grid,.permission-users-grid,
  .accountant-dossier-cards,.invoice-insights{
    grid-template-columns:1fr!important;
  }
  .insight-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}

  .page-filters,.audit-filters,.balance-filters,.deadline-filters,
  .reminder-filter-fields,.calendar-filters,.form-grid,.payment-form,
  .invoice-general-overview__grid,.clean-form-grid{
    grid-template-columns:1fr!important;
  }
  .form-grid .wide,.invoice-general-overview label.wide{grid-column:1!important}
  .page-filters button,.audit-filters button,.balance-filters button,
  .deadline-filters button,.reminder-filter-fields button{width:100%!important}

  /* Documents */
  .upload-layout{grid-template-columns:1fr!important}
  .upload-card,.info-panel,.profile-card,.settings-panel,.admin-card,.billing-card{
    max-width:100%;padding:16px!important;
  }
  .document-actions{flex-wrap:wrap!important}
  .document-actions a,.document-actions button{min-height:36px}

  /* Comptabilité, relances, échéanciers */
  .accounting-insights{padding:12px!important}
  .accounting-insights>header{min-width:0!important}
  .accounting-donut-layout{align-items:center;flex-direction:column!important}
  .accounting-chart-legend{width:100%;max-width:none!important}
  .reminder-header-actions,.deadline-header-actions,.balance-actions,
  .reminder-send-form,.deadline-send-form{
    display:grid!important;grid-template-columns:1fr!important;width:100%!important;
  }
  .reminder-header-actions button,.deadline-header-actions button,
  .balance-actions button,.reminder-send-form button,.deadline-send-form button{
    width:100%!important;justify-content:center!important;
  }
  .deadline-block-head{align-items:flex-start!important;flex-direction:column!important;gap:8px!important}
  .deadline-table-totals{display:flex!important;flex-wrap:wrap!important;gap:6px!important}
  .balance-table,.deadline-table{min-width:760px}

  /* Facturation */
  .billing-tabs,.settings-section-tabs,.invoice-list-tabs,.receipt-view-tabs{
    max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;
  }
  .billing-tabs a,.settings-section-tabs a,.invoice-list-tabs button,
  .receipt-view-tabs button{flex:0 0 auto;white-space:nowrap}
  .parties-toolbar{align-items:stretch!important;flex-direction:column!important}
  .parties-toolbar>button{width:100%;justify-content:center}
  .party-documents header{align-items:stretch!important;flex-direction:column!important}
  .party-document-filters{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));width:100%!important}
  .party-document-filters button{padding-inline:5px!important;white-space:normal}
  .party-table-head,.party-table-row{min-width:520px}
  .parties-directory{overflow-x:auto}
  .invoice-line-edit,.invoice-sheet-add-line,.invoice-sheet-edit-line{
    grid-template-columns:1fr!important;
  }
  .invoice-line-edit .edit-description,.invoice-sheet-add-line h3,
  .invoice-sheet-add-line label:first-of-type,.invoice-sheet-add-line .primary-button{
    grid-column:1!important;
  }
  .invoice-line-edit-actions,.invoice-sheet-line-actions{justify-content:stretch!important}
  .invoice-line-edit-actions button{flex:1}
  .invoice-create-dialog,.invoice-edit-sheet .invoice-create-dialog{
    width:100vw!important;max-width:100vw!important;height:100dvh!important;
    padding:22px 16px 30px!important;
  }
  .invoice-pdf-actions{display:grid!important;grid-template-columns:1fr!important}
  .invoice-pdf-actions button{width:100%!important}
  .invoice-totals,.validate-invoice,.payment-summary{width:100%!important}

  /* Calendrier */
  .calendar-toolbar,.calendar-actions,.request-actions,.calendar-detail-actions{
    flex-wrap:wrap!important;
  }
  .calendar-toolbar>*{min-width:0}
  .calendar-grid,.calendar-week{min-width:700px}
  .calendar-grid-wrap,.calendar-week-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .request-card,.appointment-card{min-width:0}
  .request-actions button,.calendar-detail-actions button{flex:1 1 130px}

  /* Administration et paramètres */
  .admin-row,.setting-line{align-items:flex-start!important;flex-wrap:wrap!important}
  .admin-row>div,.setting-line>div{flex:1 1 200px;min-width:0}
  .transfer-toolbar,.transfer-actions{position:static!important;width:100%!important;margin:0 0 16px!important}
  .transfer-actions{display:grid!important;grid-template-columns:1fr!important}
  .permission-management-panel{padding:16px!important}
  .permission-management-head{align-items:stretch!important;flex-direction:column!important}
  .permission-management-head label{min-width:0!important;width:100%}
  .bank-payment-ledger table,.payment-history table,.invoice-sheet-lines table{min-width:680px}

  /* Modales */
  .admin-modal,.calendar-modal,.party-create-modal,.clean-modal,.invoice-dialog{
    align-items:flex-start!important;padding:10px!important;overflow-y:auto!important;
  }
  .admin-modal-box,.calendar-modal-box,.party-create-dialog,.clean-modal-dialog,
  .invoice-dialog__box,.delete-confirm-box{
    width:100%!important;max-width:100%!important;max-height:none!important;
    margin:8px 0!important;padding:20px 16px!important;
  }
  .delete-confirm-actions,.exercise-close-actions,.party-create-actions{
    align-items:stretch!important;flex-direction:column-reverse!important;
  }
  .delete-confirm-actions button,.exercise-close-actions button,.party-create-actions button{width:100%!important}
  .document-preview-modal,.invoice-preview-modal{
    align-items:stretch!important;padding:6px!important;overflow:hidden!important;
    overscroll-behavior:contain!important;
  }
  .document-preview-box,.invoice-preview-dialog{
    width:100%!important;height:calc(100dvh - 12px)!important;min-height:0!important;
    border-radius:10px!important;overflow:hidden!important;
  }
  .document-preview-head{position:relative!important;z-index:2!important;flex:0 0 auto!important}
  .document-preview-frame{
    display:block!important;flex:1 1 auto!important;width:100%!important;height:100%!important;
    min-height:0!important;overflow:auto!important;touch-action:pan-x pan-y!important;
    overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;
  }

  /* Compositeur de message */
  .composer-panel{width:100vw!important;max-width:100vw!important}
  .composer-panel>header{padding:18px 16px!important}
  .composer-body{padding:12px!important}
  .composer-stats,.composer-recipients,.composer-edit-tabs{grid-template-columns:1fr!important}
  .composer-panel>footer{display:grid!important;grid-template-columns:1fr!important;padding:12px!important}
  .composer-panel footer button{width:100%!important;min-width:0!important}
}

@media(max-width:420px){
  .content,.main-content>section.content{padding-inline:10px!important}
  .stats-grid,.insight-grid,.dossier-global-kpis{grid-template-columns:1fr!important}
  .topbar{padding-inline:7px!important}
  .menu-button{width:34px!important;min-width:34px!important;margin-right:2px!important}
  .topbar-context-button{width:min(135px,38vw)!important}
  .appointment-notification-button,.theme-toggle,.top-logout{width:31px!important;min-width:31px!important}
  .calendar-grid,.calendar-week{min-width:620px}
  .party-document-filters{grid-template-columns:1fr!important}
}

/* Page d'authentification (hors shell applicatif). */
@media(max-width:760px){
  .login-page{min-height:100dvh;overflow-x:hidden}
  .login-shell,.login-card,.login-panel{width:100%!important;max-width:100%!important}
  .login-shell{min-height:100dvh;padding:14px!important}
  .login-card{padding:24px 18px!important;border-radius:16px!important}
  .login-brand img{max-width:min(190px,70vw)!important}
  .login-card input,.login-card button{width:100%!important;min-height:44px}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/*
 * Responsive piloté par l'espace réellement disponible dans la zone centrale.
 * Cela reste fiable avec la sidebar ouverte et avec un zoom navigateur différent
 * de 100 %, contrairement aux seuls breakpoints basés sur le viewport.
 */
.main-content{container-type:inline-size}
body[data-role] .topbar:has(.topbar-context-switcher)>.top-dossier-context{display:none!important}
.deadline-page,.reminder-page{min-width:0!important;overflow-x:hidden!important}
.deadline-page>* ,.reminder-page>*{min-width:0;max-width:100%}
.deadline-page .deadline-table-wrap,.reminder-page .reminder-table-wrap{
  width:100%!important;max-width:100%!important;overflow-x:auto!important;overflow-y:visible!important;
  overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;
}

@container (max-width:1100px){
  .topbar{gap:8px!important;padding-inline:16px!important;overflow:visible!important}
  .topbar .breadcrumb{display:none!important}
  .topbar-context-switcher{flex:1 1 auto!important;min-width:0!important;margin-left:0!important}
  .topbar-context-picker{min-width:0!important}
  .topbar-context-button{width:min(230px,26cqw)!important;max-width:100%!important}
  .topbar-context-button b{display:none!important}
  .topbar .top-actions{flex:0 0 auto!important;gap:6px!important}

  .deadline-title-row,.reminder-title-row{
    align-items:flex-start!important;flex-wrap:wrap!important;gap:12px!important;
  }
  .deadline-title-row>div:first-child,.reminder-title-row>div:first-child{
    flex:1 1 100%!important;min-width:0!important;
  }
  .deadline-header-actions,.reminder-header-actions{
    width:100%!important;max-width:100%!important;justify-content:flex-start!important;flex-wrap:wrap!important;
  }
  .deadline-kpis,.reminder-kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .deadline-kpi,.reminder-kpi{min-width:0!important}
  .deadline-kpi>span,.reminder-kpi>div{min-width:0!important}
  .deadline-kpi strong,.reminder-kpi strong{overflow-wrap:anywhere;white-space:normal!important}
  .deadline-filters{grid-template-columns:minmax(0,1fr) minmax(130px,.45fr) minmax(135px,.45fr)!important}
  .deadline-search{grid-column:1/-1!important}
  .deadline-filters button{grid-column:auto!important;width:100%!important}
  .reminder-filter-fields{grid-template-columns:minmax(0,1fr) minmax(135px,.45fr) minmax(135px,.45fr)!important}
  .reminder-search{grid-column:1/-1!important}
  .reminder-reset{grid-column:1/-1!important;justify-self:stretch!important;width:100%!important}
  .deadline-block-head{align-items:flex-start!important;flex-wrap:wrap!important;gap:9px!important}
  .deadline-table-totals{max-width:100%!important;flex-wrap:wrap!important}
}

@container (max-width:800px){
  .topbar-context-button{width:min(210px,34cqw)!important}
  .topbar-context-button small{display:none!important}
  .topbar .top-avatar{display:none!important}
  .deadline-kpis,.reminder-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .deadline-filters,.reminder-filter-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .deadline-search,.reminder-search{grid-column:1/-1!important}
  .deadline-filters button,.reminder-reset{grid-column:1/-1!important}
  .deadline-table-totals{width:100%!important}
  .deadline-table-totals b{flex:1 1 145px!important;justify-content:center!important}
}

@container (max-width:600px){
  .topbar-context-picker:first-child:not(:last-child){display:none!important}
  .topbar-context-button{width:min(240px,50cqw)!important}
  .deadline-header-actions,.reminder-header-actions,
  .deadline-send-form,.reminder-send-form{display:grid!important;grid-template-columns:1fr!important}
  .deadline-header-actions button,.reminder-header-actions button,
  .deadline-send-form button,.reminder-send-form button{width:100%!important;justify-content:center!important}
  .deadline-kpis,.reminder-kpis{grid-template-columns:1fr!important}
  .deadline-filters,.reminder-filter-fields{grid-template-columns:1fr!important}
  .deadline-search,.reminder-search,.deadline-filters button,.reminder-reset{grid-column:1!important}
}
