/* Centiva 2.40.0 — Global Modal Contract
 * One modal shell, one vertical scroll owner, fixed/sticky header+footer,
 * compact responsive field grids, and zero accidental horizontal overflow.
 */
:root{
  --ctv-modal-contract-pad:12px;
  --ctv-modal-contract-gap-x:12px;
  --ctv-modal-contract-gap-y:10px;
  --ctv-modal-contract-control-h:34px;
  --ctv-modal-contract-radius:20px;
}

/* Shell ------------------------------------------------------------------ */
.ctv-modal-layer{
  padding:12px!important;
  overflow:hidden!important;
  align-items:center!important;
  justify-content:center!important;
  justify-items:center!important;
  box-sizing:border-box!important;
}
.ctv-modal-layer .ctv-modal-card{
  container-type:inline-size;
  position:relative!important;
  display:flex!important;
  flex-direction:column!important;
  inline-size:min(var(--ctv-modal-width,780px),calc(100vw - 24px))!important;
  width:min(var(--ctv-modal-width,780px),calc(100vw - 24px))!important;
  max-inline-size:calc(100vw - 24px)!important;
  max-width:calc(100vw - 24px)!important;
  margin-inline:auto!important;
  align-self:center!important;
  justify-self:center!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  max-height:calc(100dvh - 24px)!important;
  padding:0!important;
  overflow:hidden!important;
  border-radius:var(--ctv-modal-contract-radius)!important;
  background:#fff!important;
}
.ctv-modal-layer .ctv-modal-card.ctv-modal-wide,
.ctv-modal-layer .ctv-modal-card.ctv-step-wizard-modal,
.ctv-modal-layer .ctv-modal-card.ctv-product-wizard-modal,
.ctv-modal-layer .ctv-modal-card.ctv-commercial-wizard-modal,
.ctv-modal-layer .ctv-modal-card.ctv-service-wizard-modal{--ctv-modal-width:1180px;}
.ctv-modal-layer .ctv-modal-card.ctv-notify-wide-modal{--ctv-modal-width:1480px;}
.ctv-modal-layer .ctv-modal-card.ctv-notify-events-modal,
.ctv-modal-layer .ctv-modal-card.ctv-notify-logs-modal{--ctv-modal-width:1380px;}
.ctv-modal-layer .ctv-modal-card.ctv-modal-standard-card > .ctv-modal-close{
  position:absolute!important;
  top:10px!important;
  left:10px!important;
  right:auto!important;
  width:30px!important;
  height:30px!important;
  min-width:30px!important;
  min-height:30px!important;
  border-radius:10px!important;
  z-index:80!important;
}

/* Exactly one vertical scroll owner in ordinary modal flows. */
.ctv-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvModalContent,
.ctv-client-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvClientModalContent{
  flex:1 1 auto!important;
  align-self:stretch!important;
  box-sizing:border-box!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  min-height:0!important;
  max-height:none!important;
  margin:0!important;
  overflow-y:auto!important;
  overflow-x:clip!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable both-edges!important;
  scrollbar-width:thin!important;
  scrollbar-color:#aebed8 #f4f7fb!important;
  padding-block:var(--ctv-modal-contract-pad)!important;
  padding-inline:var(--ctv-modal-contract-pad)!important;
}
.ctv-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvModalContent::-webkit-scrollbar,
.ctv-client-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvClientModalContent::-webkit-scrollbar{width:8px;height:0!important;}
.ctv-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvModalContent::-webkit-scrollbar-track,
.ctv-client-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvClientModalContent::-webkit-scrollbar-track{background:#f4f7fb;border-radius:999px;}
.ctv-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvModalContent::-webkit-scrollbar-thumb,
.ctv-client-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvClientModalContent::-webkit-scrollbar-thumb{background:#aebed8;border:2px solid #f4f7fb;border-radius:999px;}

.ctv-modal-standard-surface{
  box-sizing:border-box!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  margin-inline:0!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
.ctv-modal-standard-surface:is(.ctv-real-form,.ctv-subtab-modal-form,.ctv-module-modal-form,.ctv-ui-modal-standard){
  padding:0!important;
  margin:0!important;
  border:0!important;
  box-shadow:none!important;
  background:transparent!important;
}

/* Geometry guard ----------------------------------------------------------
 * A scrolling RTL content box must not use width:100% together with its own
 * gutter/padding. Auto inline sizing plus symmetric scrollbar gutters keeps the body centered inside the card
 * and prevents the right edge from being clipped. Every top-level surface is
 * constrained to the modal content box; nested flex/grid items may shrink.
 */
.ctv-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvModalContent > *,
.ctv-client-modal-layer .ctv-modal-card.ctv-modal-standard-card #ctvClientModalContent > *{
  box-sizing:border-box!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  margin-inline:0!important;
}
.ctv-modal-card.ctv-modal-standard-card :where(
  form,section,article,fieldset,div,header,footer,main,nav,aside,
  .ctv-modal-standard-surface,.ctv-wizard-step,.ctv-stepper,
  .ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-detail-grid,
  .ctv-grid,.ctv-grid-2,.ctv-grid-3,.ctv-ui-grid,.ctv-work-grid
){min-inline-size:0;max-inline-size:100%;}
.ctv-modal-card.ctv-modal-standard-card :where(img,svg,canvas,video,iframe){max-inline-size:100%;}

/* Header ----------------------------------------------------------------- */
.ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-header="1"],
.ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-header="1"]{
  position:sticky!important;
  top:0!important;
  z-index:45!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:none!important;
  min-height:46px!important;
  margin-block:calc(var(--ctv-modal-contract-pad) * -1) 10px!important;
  margin-inline:calc(var(--ctv-modal-contract-pad) * -1)!important;
  padding-block:10px 9px!important;
  padding-inline:var(--ctv-modal-contract-pad) 48px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
  border:0!important;
  border-bottom:1px solid #e5ecf6!important;
  background:rgba(255,255,255,.97)!important;
  backdrop-filter:blur(10px)!important;
  box-shadow:0 5px 14px rgba(15,28,50,.035)!important;
}
.ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-header="1"] :where(h2,h3,h4,strong),
.ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-header="1"] :where(h2,h3,h4,strong){margin-top:0!important;margin-bottom:0!important;}
.ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-header="1"] :where(p,span),
.ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-header="1"] :where(p,span){min-width:0;}

/* Footer/action bar: stays visible and ends at the actual modal bottom. */
.ctv-modal-layer .ctv-modal-card.ctv-modal-has-footer #ctvModalContent,
.ctv-client-modal-layer .ctv-modal-card.ctv-modal-has-footer #ctvClientModalContent{padding-bottom:0!important;}
.ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-footer="1"],
.ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-footer="1"]{
  position:sticky!important;
  right:auto!important;
  left:auto!important;
  bottom:0!important;
  z-index:46!important;
  min-height:48px!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:none!important;
  margin-block:10px 0!important;
  margin-inline:calc(var(--ctv-modal-contract-pad) * -1)!important;
  padding:9px var(--ctv-modal-contract-pad) max(9px,env(safe-area-inset-bottom))!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:8px!important;
  border:0!important;
  border-top:1px solid #e5ecf6!important;
  background:rgba(255,255,255,.98)!important;
  backdrop-filter:blur(10px)!important;
  box-shadow:0 -8px 22px rgba(15,28,50,.055)!important;
}
.ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-footer="1"] .ctv-wizard-nav,
.ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-footer="1"] .ctv-wizard-nav{display:flex!important;align-items:center!important;gap:7px!important;}

/* Dense form grid -------------------------------------------------------- */
.ctv-modal-field-grid,
.ctv-modal-card #ctvModalContent :where(.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid),
.ctv-modal-card #ctvClientModalContent :where(.ctv-client-order-grid,.ctv-client-account-form,.ctv-form-grid){
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:var(--ctv-modal-contract-gap-y) var(--ctv-modal-contract-gap-x)!important;
  align-items:start!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
}
.ctv-modal-card:is(.ctv-modal-wide,.ctv-step-wizard-modal,.ctv-product-wizard-modal,.ctv-commercial-wizard-modal,.ctv-service-wizard-modal,.ctv-notify-wide-modal,.ctv-notify-events-modal,.ctv-notify-logs-modal) :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid){
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.ctv-modal-field-grid > :is(.ctv-field-wide,.wide,[data-field-span="full"],.ctv-form-section-title,.ctv-modal-actions,.ctv-modal-footer,.ctv-real-form-actions,.ctv-wizard-footer){grid-column:1/-1!important;}
.ctv-modal-field-grid > .ctv-field-span-2{grid-column:span 2!important;}

.ctv-modal-card :where(.ctv-field,.ctv-form-field,.ctv-client-field){
  min-width:0!important;
  margin:0!important;
}
.ctv-modal-card #ctvModalContent :where(.ctv-field,.ctv-form-field,.ctv-client-field),
.ctv-modal-card #ctvClientModalContent :where(.ctv-field,.ctv-form-field,.ctv-client-field){
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  align-content:start!important;
  gap:5px!important;
}
.ctv-modal-card :where(.ctv-field>label,.ctv-form-field>label,.ctv-client-field>label,label.ctv-field>span,label.ctv-form-field>span){
  display:block!important;
  margin:0!important;
  padding:0!important;
  min-height:0!important;
  color:#526078!important;
  font-size:11px!important;
  font-weight:750!important;
  line-height:1.55!important;
}
.ctv-modal-card :where(.ctv-field input,.ctv-field select,.ctv-form-field input,.ctv-form-field select,.ctv-client-field input,.ctv-client-field select){
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  min-height:var(--ctv-modal-contract-control-h)!important;
  height:var(--ctv-modal-contract-control-h)!important;
  padding-block:0!important;
  font-size:11.5px!important;
}
.ctv-modal-card :where(.ctv-field textarea,.ctv-form-field textarea,.ctv-client-field textarea){
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:62px!important;
  padding:7px 9px!important;
  line-height:1.75!important;
  resize:vertical!important;
  font-size:11.5px!important;
}
.ctv-modal-card textarea[rows="2"]{min-height:54px!important;}
.ctv-modal-card textarea[rows="3"]{min-height:66px!important;}
.ctv-modal-card textarea[rows="4"]{min-height:78px!important;}
.ctv-modal-card .ctv-form-section-title{
  margin:2px 0 0!important;
  padding:7px 10px!important;
  border-radius:11px!important;
  font-size:11.5px!important;
  line-height:1.5!important;
}

/* Wizards: the content shell owns scrolling, not each step. */
.ctv-modal-card .ctv-step-wizard,
.ctv-modal-card .ctv-product-wizard{
  box-sizing:border-box!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:100%!important;
  margin-inline:0!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
.ctv-modal-card .ctv-wizard-step,
.ctv-modal-card .ctv-product-wizard .ctv-wizard-step{
  box-sizing:border-box!important;
  inline-size:auto!important;
  width:auto!important;
  max-inline-size:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  margin-inline:0!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
  padding:0!important;
}
.ctv-modal-card .ctv-stepper{
  flex:0 0 auto!important;
  margin:0 0 9px!important;
  padding:5px 0 9px!important;
  overflow:hidden!important;
}
.ctv-modal-card .ctv-product-wizard .ctv-stepper{grid-template-columns:repeat(5,minmax(0,1fr))!important;}
.ctv-modal-card .ctv-product-wizard .ctv-stepper-item{min-width:0!important;white-space:normal!important;line-height:1.45!important;}

/* Notification center: remove legacy phantom bottom padding and nested scroll. */
.ctv-modal-card.ctv-notify-wide-modal,
.ctv-modal-card.ctv-notify-events-modal,
.ctv-modal-card.ctv-notify-logs-modal{
  height:auto!important;
  max-height:calc(100dvh - 24px)!important;
}
.ctv-modal-card.ctv-notify-wide-modal #ctvModalContent,
.ctv-modal-card.ctv-notify-events-modal #ctvModalContent,
.ctv-modal-card.ctv-notify-logs-modal #ctvModalContent{
  box-sizing:border-box!important;
  inline-size:auto!important;
  width:auto!important;
  align-self:stretch!important;
  height:auto!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:clip!important;
  padding:var(--ctv-modal-contract-pad)!important;
}
.ctv-notify-builder,
.ctv-notify-events-view,
.ctv-notify-queue-view,
.ctv-notify-rule-view,
.ctv-notify-logs-view{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  padding:0!important;
}
.ctv-modal-layer .ctv-modal-card #ctvModalContent .ctv-notify-actions.ctv-modal-actions[data-ctv-standard-footer="1"]{
  margin:10px calc(var(--ctv-modal-contract-pad) * -1) 0!important;
  padding:9px var(--ctv-modal-contract-pad) max(9px,env(safe-area-inset-bottom))!important;
}

/* Horizontal overflow is never owned by a modal body. Only explicit table
 * wrappers may scroll horizontally when the table itself is wider. */
.ctv-modal-card #ctvModalContent :where(.ctv-grid,.ctv-grid-2,.ctv-grid-3,.ctv-detail-grid,.ctv-ui-grid,.ctv-work-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-field-grid,.ctv-product-tech-row,.ctv-product-price-row,.ctv-product-custom-row),
.ctv-modal-card #ctvClientModalContent :where(.ctv-grid,.ctv-grid-2,.ctv-grid-3,.ctv-detail-grid,.ctv-ui-grid,.ctv-work-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-field-grid){
  min-width:0!important;
  max-width:100%!important;
}
.ctv-modal-card #ctvModalContent :where(input,select,textarea,.select2-container,.select2-selection),
.ctv-modal-card #ctvClientModalContent :where(input,select,textarea,.select2-container,.select2-selection){min-width:0!important;max-width:100%!important;}

/* Desktop density breakpoints. */
@media(max-width:1000px){
  .ctv-modal-card:is(.ctv-modal-wide,.ctv-step-wizard-modal,.ctv-product-wizard-modal,.ctv-commercial-wizard-modal,.ctv-service-wizard-modal,.ctv-notify-wide-modal,.ctv-notify-events-modal,.ctv-notify-logs-modal) :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid){grid-template-columns:repeat(2,minmax(0,1fr))!important;}
}
@media(max-width:680px){
  :root{--ctv-modal-contract-pad:10px;--ctv-modal-contract-gap-y:9px;--ctv-modal-contract-gap-x:9px;}
  .ctv-modal-layer{padding:5px!important;}
  .ctv-modal-layer .ctv-modal-card{inline-size:calc(100vw - 10px)!important;width:calc(100vw - 10px)!important;max-inline-size:calc(100vw - 10px)!important;max-width:calc(100vw - 10px)!important;max-height:calc(100dvh - 10px)!important;margin-inline:auto!important;border-radius:13px!important;}
  .ctv-modal-field-grid,
  .ctv-modal-card #ctvModalContent :where(.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid),
  .ctv-modal-card #ctvClientModalContent :where(.ctv-client-order-grid,.ctv-client-account-form,.ctv-form-grid),
  .ctv-modal-card:is(.ctv-modal-wide,.ctv-step-wizard-modal,.ctv-product-wizard-modal,.ctv-commercial-wizard-modal,.ctv-service-wizard-modal,.ctv-notify-wide-modal,.ctv-notify-events-modal,.ctv-notify-logs-modal) :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid){grid-template-columns:1fr!important;}
  .ctv-modal-field-grid > .ctv-field-span-2{grid-column:auto!important;}
  .ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-footer="1"],
  .ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-footer="1"]{display:grid!important;grid-template-columns:1fr 1fr!important;align-items:stretch!important;}
  .ctv-modal-layer .ctv-modal-card #ctvModalContent [data-ctv-standard-footer="1"] .ctv-wizard-nav,
  .ctv-client-modal-layer .ctv-modal-card #ctvClientModalContent [data-ctv-standard-footer="1"] .ctv-wizard-nav{display:grid!important;grid-template-columns:1fr!important;}
  .ctv-modal-card .ctv-product-wizard .ctv-stepper{gap:2px!important;}
  .ctv-modal-card .ctv-product-wizard .ctv-stepper-item{display:grid!important;justify-items:center!important;text-align:center!important;font-size:8px!important;gap:2px!important;}
  .ctv-modal-card .ctv-product-wizard .ctv-stepper-item:after{display:none!important;}
}

/* Centiva 2.40.0 — authoritative modal geometry + inline feedback -----------------
 * This block intentionally uses the actual modal layer/content IDs so the
 * global UiKit contract wins over high-specificity legacy v2.22/v2.28 rules.
 * A standard modal is centered by its layer, owns one vertical scrollbar,
 * and every ordinary surface is exactly the content-box width. No logical
 * offset, negative horizontal margin or inherited transform may move it.
 */
body.ctv-modal-open #ctvModalLayer.is-active,
body.ctv-modal-open #ctvModalLayer.is-open,
body.ctv-client-modal-open #ctvClientModal.is-active,
body.ctv-client-modal-open #ctvClientModal.is-open{
  position:fixed!important;
  inset:0!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:minmax(0,1fr)!important;
  place-items:center!important;
  align-content:center!important;
  justify-content:center!important;
  width:100vw!important;
  max-width:100vw!important;
  height:100dvh!important;
  max-height:100dvh!important;
  margin:0!important;
  padding:12px!important;
  overflow:hidden!important;
  direction:rtl!important;
}

#ctvModalLayer:is(.is-active,.is-open) > .ctv-modal-card.ctv-modal-standard-card,
#ctvClientModal:is(.is-active,.is-open) > .ctv-modal-card.ctv-modal-standard-card{
  box-sizing:border-box!important;
  position:relative!important;
  inset:auto!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  left:auto!important;
  transform:none!important;
  translate:none!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:minmax(0,1fr)!important;
  align-self:center!important;
  justify-self:center!important;
  inline-size:min(var(--ctv-modal-width,780px),calc(100vw - 24px))!important;
  width:min(var(--ctv-modal-width,780px),calc(100vw - 24px))!important;
  max-inline-size:calc(100vw - 24px)!important;
  max-width:calc(100vw - 24px)!important;
  block-size:auto!important;
  height:auto!important;
  min-inline-size:0!important;
  min-width:0!important;
  min-block-size:0!important;
  min-height:0!important;
  max-block-size:calc(100dvh - 24px)!important;
  max-height:calc(100dvh - 24px)!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  direction:rtl!important;
  text-align:start!important;
  container-type:inline-size!important;
}

/* Standard widths are UiKit tokens, not module-local widths. */
#ctvModalLayer .ctv-modal-card.ctv-modal-wide,
#ctvModalLayer .ctv-modal-card.ctv-step-wizard-modal,
#ctvModalLayer .ctv-modal-card.ctv-product-wizard-modal,
#ctvModalLayer .ctv-modal-card.ctv-commercial-wizard-modal,
#ctvModalLayer .ctv-modal-card.ctv-service-wizard-modal{--ctv-modal-width:1180px;}
#ctvModalLayer .ctv-modal-card.ctv-support-wide-card{--ctv-modal-width:1480px;}
#ctvModalLayer .ctv-modal-card.ctv-notify-wide-modal{--ctv-modal-width:1480px;}
#ctvModalLayer .ctv-modal-card.ctv-notify-events-modal,
#ctvModalLayer .ctv-modal-card.ctv-notify-logs-modal{--ctv-modal-width:1380px;}
#ctvModalLayer .ctv-modal-card.ctv-portal-global-modal{--ctv-modal-width:1120px;}
#ctvModalLayer .ctv-modal-card.ctv-portal-modal-v229{--ctv-modal-width:1040px;}
#ctvModalLayer .ctv-modal-card.ctv-rbac-modal-card{--ctv-modal-width:1080px;}
#ctvModalLayer .ctv-modal-card.ctv-rbac-modal-card-sm{--ctv-modal-width:760px;}
#ctvModalLayer .ctv-modal-card.ctv-rbac-permissions-modal{--ctv-modal-width:1180px;}
#ctvClientModal .ctv-modal-card{--ctv-modal-width:820px;}

#ctvModalLayer .ctv-modal-card.ctv-modal-standard-card > #ctvModalContent,
#ctvClientModal .ctv-modal-card.ctv-modal-standard-card > #ctvClientModalContent{
  box-sizing:border-box!important;
  position:relative!important;
  inset:auto!important;
  transform:none!important;
  translate:none!important;
  display:block!important;
  align-self:stretch!important;
  justify-self:stretch!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  block-size:auto!important;
  height:auto!important;
  min-block-size:0!important;
  min-height:0!important;
  max-block-size:calc(100dvh - 24px)!important;
  max-height:calc(100dvh - 24px)!important;
  margin:0!important;
  padding:var(--ctv-modal-contract-pad)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:auto!important;
  /* Scroll geometry is LTR so Chromium/Windows keeps the vertical scrollbar
   * on the physical right edge. Every content surface below is reset to RTL.
   * This prevents an RTL left-side scrollbar from visually pushing the whole
   * form to the right while preserving RTL controls/content. */
  direction:ltr!important;
  text-align:left!important;
}
#ctvModalContent > *,
#ctvClientModalContent > *{direction:rtl!important;text-align:start!important;}

/* Every normal root/surface fills the modal body symmetrically. */
#ctvModalContent > .ctv-modal-standard-surface,
#ctvClientModalContent > .ctv-modal-standard-surface,
#ctvModalContent > form,
#ctvModalContent > section,
#ctvModalContent > article,
#ctvClientModalContent > form,
#ctvClientModalContent > section,
#ctvClientModalContent > article{
  box-sizing:border-box!important;
  position:relative!important;
  inset:auto!important;
  right:auto!important;
  left:auto!important;
  transform:none!important;
  translate:none!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  margin-inline:auto!important;
  margin-left:auto!important;
  margin-right:auto!important;
  padding-inline:0!important;
  direction:rtl!important;
  text-align:start!important;
}

/* No ordinary flex/grid descendant may establish a larger inline formatting
 * context than the modal body. Tables retain their explicit scroll wrappers. */
#ctvModalContent :where(
  .ctv-product-wizard,.ctv-step-wizard,.ctv-wizard-step,.ctv-stepper,
  .ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-modal-field-grid,
  .ctv-detail-grid,.ctv-grid,.ctv-grid-2,.ctv-grid-3,.ctv-ui-grid,.ctv-work-grid,
  .ctv-product-tech-list,.ctv-product-custom-list,.ctv-product-pricing-list,
  .ctv-product-tech-row,.ctv-product-custom-row,.ctv-product-price-row,
  .ctv-product-switches,.ctv-notify-builder,.ctv-notify-form,.ctv-notify-canvas
),
#ctvClientModalContent :where(
  .ctv-client-order-grid,.ctv-client-account-form,.ctv-form-grid,.ctv-detail-grid,
  .ctv-grid,.ctv-grid-2,.ctv-grid-3,.ctv-ui-grid,.ctv-work-grid
){
  box-sizing:border-box!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
  margin-inline:0!important;
  transform:none!important;
  translate:none!important;
}

#ctvModalContent :where(.ctv-field,.ctv-form-field,.ctv-client-field),
#ctvClientModalContent :where(.ctv-field,.ctv-form-field,.ctv-client-field){
  box-sizing:border-box!important;
  min-inline-size:0!important;
  min-width:0!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  margin-inline:0!important;
  text-align:start!important;
}
#ctvModalContent :where(input,select,textarea,.select2,.select2-container,.select2-selection),
#ctvClientModalContent :where(input,select,textarea,.select2,.select2-container,.select2-selection){
  box-sizing:border-box!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  min-inline-size:0!important;
  min-width:0!important;
}

/* Sticky chrome stays inside the content box; no negative horizontal margin. */
#ctvModalContent [data-ctv-standard-header="1"],
#ctvClientModalContent [data-ctv-standard-header="1"]{
  box-sizing:border-box!important;
  position:sticky!important;
  top:calc(var(--ctv-modal-contract-pad) * -1)!important;
  right:auto!important;
  left:auto!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  margin:calc(var(--ctv-modal-contract-pad) * -1) 0 10px!important;
  padding-block:10px 9px!important;
  padding-inline:0 48px!important;
  transform:none!important;
  translate:none!important;
  direction:rtl!important;
}
#ctvModalContent [data-ctv-standard-footer="1"],
#ctvClientModalContent [data-ctv-standard-footer="1"]{
  box-sizing:border-box!important;
  position:sticky!important;
  bottom:calc(var(--ctv-modal-contract-pad) * -1)!important;
  right:auto!important;
  left:auto!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:100%!important;
  max-width:100%!important;
  margin:10px 0 calc(var(--ctv-modal-contract-pad) * -1)!important;
  padding:9px 0 max(9px,env(safe-area-inset-bottom))!important;
  transform:none!important;
  translate:none!important;
  direction:rtl!important;
}

/* Desktop form density stays centered because columns are always minmax(0,1fr). */
#ctvModalLayer .ctv-modal-card.ctv-modal-standard-card :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid){
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:var(--ctv-modal-contract-gap-y) var(--ctv-modal-contract-gap-x)!important;
  align-items:start!important;
}
#ctvModalLayer .ctv-modal-card.ctv-modal-standard-card:is(.ctv-modal-wide,.ctv-step-wizard-modal,.ctv-product-wizard-modal,.ctv-commercial-wizard-modal,.ctv-service-wizard-modal,.ctv-notify-wide-modal,.ctv-notify-events-modal,.ctv-notify-logs-modal) :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid){
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}

@media(max-width:1000px){
  #ctvModalLayer .ctv-modal-card.ctv-modal-standard-card:is(.ctv-modal-wide,.ctv-step-wizard-modal,.ctv-product-wizard-modal,.ctv-commercial-wizard-modal,.ctv-service-wizard-modal,.ctv-notify-wide-modal,.ctv-notify-events-modal,.ctv-notify-logs-modal) :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid){
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:680px){
  body.ctv-modal-open #ctvModalLayer.is-active,
  body.ctv-modal-open #ctvModalLayer.is-open,
  body.ctv-client-modal-open #ctvClientModal.is-active,
  body.ctv-client-modal-open #ctvClientModal.is-open{padding:5px!important;}
  #ctvModalLayer:is(.is-active,.is-open) > .ctv-modal-card.ctv-modal-standard-card,
  #ctvClientModal:is(.is-active,.is-open) > .ctv-modal-card.ctv-modal-standard-card{
    inline-size:calc(100vw - 10px)!important;
    width:calc(100vw - 10px)!important;
    max-inline-size:calc(100vw - 10px)!important;
    max-width:calc(100vw - 10px)!important;
    max-block-size:calc(100dvh - 10px)!important;
    max-height:calc(100dvh - 10px)!important;
  }
  #ctvModalLayer .ctv-modal-card.ctv-modal-standard-card :where(.ctv-modal-field-grid,.ctv-real-form-grid,.ctv-form-grid,.ctv-modal-form-grid,.ctv-rbac-form-grid),
  #ctvClientModal .ctv-modal-card.ctv-modal-standard-card :where(.ctv-client-order-grid,.ctv-client-account-form,.ctv-form-grid){
    grid-template-columns:1fr!important;
  }
}

/* Centiva 2.40.0 — modal class lifecycle completion ------------------------
 * These classes are card-level state, not module-local geometry. They are
 * centrally reset between modal invocations and receive width tokens here so
 * a previous module can never influence the next modal's placement/width. */
#ctvModalLayer .ctv-modal-card.ctv-client-360-modal,
#ctvModalLayer .ctv-modal-card.ctv-order-workspace-modal{--ctv-modal-width:1180px;}
#ctvModalLayer .ctv-modal-card.ctv-provider-modal{--ctv-modal-width:980px;}


/* Global inline AJAX feedback ---------------------------------------------
 * Errors never replace/close the active modal. They live inside the current
 * modal/form and preserve every value entered by the user.
 */
.ctv-modal-feedback{
  grid-column:1 / -1!important;
  inline-size:100%!important;
  max-inline-size:100%!important;
  min-inline-size:0!important;
  box-sizing:border-box!important;
  display:grid!important;
  grid-template-columns:28px minmax(0,1fr) 28px!important;
  align-items:start!important;
  gap:8px!important;
  margin:0 0 10px!important;
  padding:9px 10px!important;
  border:1px solid var(--ctv-border,#d8e2f0)!important;
  border-radius:10px!important;
  background:var(--ctv-surface-soft,#f7f9fc)!important;
  direction:rtl!important;
}
.ctv-modal-feedback.is-error{border-color:var(--ctv-danger-border,#f0b9b9)!important;background:var(--ctv-danger-soft,#fff3f3)!important;}
.ctv-modal-feedback.is-warning{border-color:var(--ctv-warning-border,#ead29d)!important;background:var(--ctv-warning-soft,#fff9ea)!important;}
.ctv-modal-feedback.is-success{border-color:var(--ctv-success-border,#acd9c1)!important;background:var(--ctv-success-soft,#effaf4)!important;}
.ctv-modal-feedback-icon{display:grid!important;place-items:center!important;width:26px!important;height:26px!important;border-radius:8px!important;}
.ctv-modal-feedback-body{min-inline-size:0!important;display:grid!important;gap:2px!important;}
.ctv-modal-feedback-body strong{font-size:12px!important;line-height:1.65!important;color:var(--ctv-text,#172033)!important;}
.ctv-modal-feedback-body p{margin:0!important;font-size:11.5px!important;line-height:1.8!important;white-space:pre-wrap!important;overflow-wrap:anywhere!important;color:var(--ctv-text-muted,#5c687c)!important;}
.ctv-modal-feedback-meta{font-size:10px!important;line-height:1.6!important;color:var(--ctv-text-muted,#7b8798)!important;direction:ltr!important;text-align:right!important;}
.ctv-modal-feedback-close{display:grid!important;place-items:center!important;width:26px!important;height:26px!important;min-width:26px!important;padding:0!important;border:0!important;border-radius:8px!important;background:transparent!important;color:var(--ctv-text-muted,#657286)!important;font-size:18px!important;line-height:1!important;cursor:pointer!important;}
.ctv-modal-feedback-close:hover{background:rgba(15,40,80,.06)!important;}
.ctv-field-invalid{position:relative!important;}
.ctv-field-invalid > input,.ctv-field-invalid > select,.ctv-field-invalid > textarea,.ctv-field-invalid .select2-selection,[aria-invalid="true"][data-ctv-invalid="1"]{
  border-color:var(--ctv-danger,#cf3f4b)!important;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--ctv-danger,#cf3f4b) 10%,transparent)!important;
}
.ctv-field-error-text{display:block!important;margin-top:3px!important;color:var(--ctv-danger,#b92f3c)!important;font-size:10.5px!important;line-height:1.65!important;}
@media (max-width:720px){.ctv-modal-feedback{grid-template-columns:24px minmax(0,1fr) 24px!important;padding:8px!important;}}
