/**
 * InmoPlus Shared Library 1.4.6
 * Capa de autoridad visual final. Debe imprimirse después del CSS modular.
 * Totalmente limitada a contextos privados del ERP.
 */

/* Contenedor respirable y uniforme. */
body.inmoplus-platform-app .imp-layout__workspace,
body.imp-layout-engine .imp-layout__workspace,
body.inmoplus-role-dashboard-active .imp-layout__workspace{
  width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
  padding:24px clamp(18px,3vw,34px) 42px!important;
}
body.inmoplus-platform-app .imp-layout__content,
body.imp-layout-engine .imp-layout__content,
body.inmoplus-role-dashboard-active .imp-layout__content,
body.inmoplus-platform-app .ipx-content,
body.imp-layout-engine .ipx-content,
body.inmoplus-role-dashboard-active .ipx-content{
  width:100%!important;
  max-width:1180px!important;
  margin-inline:auto!important;
  box-sizing:border-box!important;
}

/* Encabezados de página y héroes canónicos. */
body.inmoplus-platform-app :is(.imp-page-heading,.imp-enterprise-hero,.inm-contracts-hero,.inm-con-hero,.neg-front-hero,.inm-neg-head),
body.imp-layout-engine :is(.imp-page-heading,.imp-enterprise-hero,.inm-contracts-hero,.inm-con-hero,.neg-front-hero,.inm-neg-head){
  box-sizing:border-box!important;
  width:100%!important;
  margin:0 0 24px!important;
  padding:30px clamp(24px,4vw,42px)!important;
  border-radius:26px!important;
}

/* Tarjetas, paneles y formularios. */
body.inmoplus-platform-app :is(.imp-card,.inm-contract-card,.inm-con-panel,.inm-con-editor,.inm-neg-panel,.inm-neg-form,.inm-con-form),
body.imp-layout-engine :is(.imp-card,.inm-contract-card,.inm-con-panel,.inm-con-editor,.inm-neg-panel,.inm-neg-form,.inm-con-form){
  box-sizing:border-box!important;
  padding:24px!important;
  border-radius:22px!important;
}
body.inmoplus-platform-app :is(.imp-grid,.imp-form-grid,.inm-contract-form-grid,.inm-con-fields,.inm-neg-fields,.inm-con-data,.inm-neg-amounts),
body.imp-layout-engine :is(.imp-grid,.imp-form-grid,.inm-contract-form-grid,.inm-con-fields,.inm-neg-fields,.inm-con-data,.inm-neg-amounts){
  gap:18px!important;
}
body.inmoplus-platform-app :is(input:not([type=checkbox]):not([type=radio]),select,textarea),
body.imp-layout-engine :is(input:not([type=checkbox]):not([type=radio]),select,textarea){
  width:100%!important;
  min-height:50px!important;
  padding:13px 15px!important;
  font-size:16px!important;
  line-height:1.35!important;
  border-radius:13px!important;
  box-sizing:border-box!important;
}
body.inmoplus-platform-app textarea,
body.imp-layout-engine textarea{min-height:132px!important;resize:vertical!important}
body.inmoplus-platform-app :is(button,.button,.imp-btn,input[type=submit]),
body.imp-layout-engine :is(button,.button,.imp-btn,input[type=submit]){
  min-height:50px!important;
  padding:12px 18px!important;
  box-sizing:border-box!important;
}

@media (max-width:820px){
  body.inmoplus-platform-app .imp-layout__workspace,
  body.imp-layout-engine .imp-layout__workspace,
  body.inmoplus-role-dashboard-active .imp-layout__workspace{
    padding:22px 16px calc(104px + env(safe-area-inset-bottom))!important;
  }
  body.inmoplus-platform-app .imp-layout__content,
  body.imp-layout-engine .imp-layout__content,
  body.inmoplus-role-dashboard-active .imp-layout__content{
    padding:0!important;
  }
  body.inmoplus-platform-app .ipx-content,
  body.imp-layout-engine .ipx-content,
  body.inmoplus-role-dashboard-active .ipx-content,
  body.inmoplus-platform-app .inm-client-content,
  body.inmoplus-role-dashboard-active .inm-client-content{
    padding-left:16px!important;
    padding-right:16px!important;
    box-sizing:border-box!important;
  }
  body.inmoplus-platform-app .imp-layout__workspace .ipx-content,
  body.imp-layout-engine .imp-layout__workspace .ipx-content,
  body.inmoplus-role-dashboard-active .imp-layout__workspace .ipx-content{
    padding-left:0!important;
    padding-right:0!important;
  }
  body.inmoplus-platform-app :is(.imp-page-heading,.imp-enterprise-hero,.inm-contracts-hero,.inm-con-hero,.neg-front-hero,.inm-neg-head),
  body.imp-layout-engine :is(.imp-page-heading,.imp-enterprise-hero,.inm-contracts-hero,.inm-con-hero,.neg-front-hero,.inm-neg-head){
    padding:24px 20px!important;
    margin-bottom:24px!important;
    border-radius:24px!important;
  }
  body.inmoplus-platform-app :is(.imp-card,.inm-contract-card,.inm-con-panel,.inm-con-editor,.inm-neg-panel,.inm-neg-form,.inm-con-form),
  body.imp-layout-engine :is(.imp-card,.inm-contract-card,.inm-con-panel,.inm-con-editor,.inm-neg-panel,.inm-neg-form,.inm-con-form){
    padding:20px 18px!important;
  }
  body.inmoplus-platform-app :is(.imp-form-grid,.inm-contract-form-grid,.inm-con-fields,.inm-neg-fields,.inm-con-data,.inm-neg-amounts),
  body.imp-layout-engine :is(.imp-form-grid,.inm-contract-form-grid,.inm-con-fields,.inm-neg-fields,.inm-con-data,.inm-neg-amounts){
    grid-template-columns:minmax(0,1fr)!important;
  }
}
@media (max-width:420px){
  body.inmoplus-platform-app .imp-layout__workspace,
  body.imp-layout-engine .imp-layout__workspace,
  body.inmoplus-role-dashboard-active .imp-layout__workspace{
    padding-left:14px!important;
    padding-right:14px!important;
  }
  body.inmoplus-platform-app :is(.imp-page-heading,.imp-enterprise-hero,.inm-contracts-hero,.inm-con-hero,.neg-front-hero,.inm-neg-head),
  body.imp-layout-engine :is(.imp-page-heading,.imp-enterprise-hero,.inm-contracts-hero,.inm-con-hero,.neg-front-hero,.inm-neg-head){
    padding:24px 20px!important;
  }
}


/* Fase 0: estabilidad del shell canónico en PC y móvil. */
body.inmoplus-canonical-app,
body.inmoplus-platform-app{
  margin:0!important;
  overflow-x:hidden!important;
  background:#f5f7fa!important;
}
body.inmoplus-canonical-app .inmoplus-app-runtime,
body.inmoplus-canonical-app .inmoplus-app-runtime__content{
  min-height:100vh!important;
  width:100%!important;
  margin:0!important;
  padding:0!important;
}
body.inmoplus-canonical-app .ipx-app{
  visibility:visible!important;
  opacity:1!important;
  min-height:100vh!important;
  width:100%!important;
}
@media (min-width:1024px){
  body.inmoplus-canonical-app .ipx-app,
  body.inmoplus-platform-app .ipx-app{
    display:grid!important;
    grid-template-columns:270px minmax(0,1fr)!important;
  }
  body.inmoplus-canonical-app .ipx-sidebar,
  body.inmoplus-platform-app .ipx-sidebar{
    display:block!important;
    position:sticky!important;
    top:0!important;
    height:100vh!important;
  }
  body.inmoplus-canonical-app .ipx-main,
  body.inmoplus-platform-app .ipx-main{
    min-width:0!important;
    width:auto!important;
  }
  body.inmoplus-canonical-app .ipx-topbar,
  body.inmoplus-platform-app .ipx-topbar{
    display:flex!important;
    min-height:72px!important;
    padding-inline:26px!important;
  }
  body.inmoplus-canonical-app .ipx-content,
  body.inmoplus-platform-app .ipx-content{
    width:100%!important;
    max-width:1450px!important;
    margin-inline:auto!important;
    padding:28px 32px 44px!important;
  }
  body.inmoplus-canonical-app .ipx-mobile-nav,
  body.inmoplus-platform-app .ipx-mobile-nav{
    display:none!important;
  }
}
@media (max-width:1023px){
  body.inmoplus-canonical-app .ipx-app,
  body.inmoplus-platform-app .ipx-app{
    display:block!important;
  }
  body.inmoplus-canonical-app .ipx-content,
  body.inmoplus-platform-app .ipx-content{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:24px 16px calc(112px + env(safe-area-inset-bottom))!important;
  }
  body.inmoplus-canonical-app .ipx-greeting,
  body.inmoplus-platform-app .ipx-greeting{
    margin-inline:0!important;
  }
}
