/* CEMHS Área VIP · Canonical Form Controls · MMD governed
 * Authority: final geometry layer for every interactive form primitive.
 * Loaded LAST for login and authenticated application.
 */

/* 1. Canonical continuous corners */
body.avp-body input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
body.avp-body select,
body.avp-body textarea,
body.avp-body .avp-choice>span,
body.avp-body .avp-check-choice,
body.avp-body .avp-btn:not(.avp-sheet-close):not(.avp-global-message-close):not(.avp-sidebar-close),
body.avp-body .btn:not(.close),
body.avp-body button:not(.avp-sheet-close):not(.avp-global-message-close):not(.avp-sidebar-close):not(.avp-bottom-menu):not(.close),
body.avp-body input.btn,
body.avp-body .paginate_button{
  border-radius:var(--ds-r-control)!important;
  corner-shape:squircle;
  box-sizing:border-box!important;
}
body.avp-body .avp-btn:not(.avp-sheet-close):not(.avp-global-message-close):not(.avp-sidebar-close),
body.avp-body .btn:not(.close),
body.avp-body button:not(.avp-sheet-close):not(.avp-global-message-close):not(.avp-sidebar-close):not(.avp-bottom-menu):not(.close),
body.avp-body input.btn,
body.avp-body .paginate_button,
body.avp-body .avp-choice>span,
body.avp-body .avp-check-choice{
  border-radius:var(--ds-r-action)!important;
}

/* 2. Explicit circles/pills stay semantically separate */
body.avp-body .avp-sheet-close,
body.avp-body .modal.avp-sheet .modal-header .close,
body.avp-body .avp-sidebar-close,
body.avp-body .avp-global-message-close,
body.avp-body .beforeSend .close{
  border-radius:9999px!important;
  corner-shape:round;
}
body.avp-body .avp-status,
body.avp-body .avp-visibility,
body.avp-body .avp-library-row-state,
body.avp-body .avp-detail-chip{
  border-radius:9999px!important;
  corner-shape:round;
}

/* 3. One field-icon slot for the entire product
 * Single-line controls are centered by geometry, independent of labels/errors.
 */
body.avp-body .avp-field-control{
  position:relative!important;
  display:block!important;
  width:100%!important;
  min-width:0!important;
}
body.avp-body .avp-field-control>.avp-field-prefix{
  position:absolute!important;
  z-index:2!important;
  inset-inline-start:15px!important;
  left:15px!important;
  top:50%!important;
  bottom:auto!important;
  width:var(--ds-field-icon-size)!important;
  height:var(--ds-field-icon-size)!important;
  transform:translateY(-50%)!important;
  display:grid!important;
  place-items:center!important;
  color:var(--ds-muted)!important;
  pointer-events:none!important;
  line-height:0!important;
}
body.avp-body .avp-field-control>.avp-field-prefix>.avp-icon,
body.avp-body .avp-field-control>.avp-field-prefix>svg{
  width:var(--ds-field-icon-size)!important;
  height:var(--ds-field-icon-size)!important;
  min-width:var(--ds-field-icon-size)!important;
  min-height:var(--ds-field-icon-size)!important;
  display:block!important;
  margin:0!important;
  flex:0 0 auto!important;
}
body.avp-body .avp-field-control>input:not([type="checkbox"]):not([type="radio"]),
body.avp-body .avp-field-control>select,
body.avp-body .avp-field-control>textarea{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  margin:0!important;
  padding-inline-start:var(--ds-field-icon-slot)!important;
  padding-left:var(--ds-field-icon-slot)!important;
}
body.avp-body .avp-field-control.avp-field-control-textarea>.avp-field-prefix{
  top:15px!important;
  bottom:auto!important;
  height:var(--ds-field-icon-size)!important;
  transform:none!important;
}
body.avp-body .avp-field-control:focus-within>.avp-field-prefix{
  color:var(--ds-brand-strong)!important;
}

/* 4. Search is the same icon-slot primitive, not a special case */
body.avp-body .avp-searchbox,
body.avp-body .avp-library-search,
body.avp-body .avp-directory-search,
body.avp-body .dataTables_filter{
  position:relative!important;
  min-width:0!important;
  max-width:100%!important;
}
body.avp-body .avp-searchbox>.avp-icon,
body.avp-body .avp-library-search>.avp-icon,
body.avp-body .avp-directory-search>.avp-icon,
body.avp-body .dataTables_filter>.avp-search-icon{
  position:absolute!important;
  z-index:2!important;
  inset-inline-start:15px!important;
  left:15px!important;
  top:calc(var(--ds-control-h) / 2)!important;
  bottom:auto!important;
  width:var(--ds-field-icon-size)!important;
  height:var(--ds-field-icon-size)!important;
  min-width:var(--ds-field-icon-size)!important;
  min-height:var(--ds-field-icon-size)!important;
  transform:translateY(-50%)!important;
  padding:0!important;
  margin:0!important;
  display:block!important;
  color:var(--ds-muted)!important;
  pointer-events:none!important;
  line-height:0!important;
}
/* 4a. Search icons are anchored to the control height, never the toolbar/label height. */

body.avp-body .avp-searchbox>input,
body.avp-body .avp-library-search>input,
body.avp-body .avp-directory-search>input,
body.avp-body .dataTables_filter input{
  padding-inline-start:var(--ds-field-icon-slot)!important;
  padding-left:var(--ds-field-icon-slot)!important;
}
body.avp-body .avp-searchbox:focus-within>.avp-icon,
body.avp-body .avp-library-search:focus-within>.avp-icon,
body.avp-body .avp-directory-search:focus-within>.avp-icon,
body.avp-body .dataTables_filter:focus-within>.avp-search-icon{
  color:var(--ds-brand-strong)!important;
}

/* 4b. Governed select chevron
 * Native select interaction remains intact; only the visual indicator is normalized.
 */
body.avp-body select:not([multiple]):not([size]),
body.avp-body select:not([multiple])[size="1"]{
  -webkit-appearance:none!important;
  appearance:none!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23687570' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-size:14px 14px!important;
  background-position:calc(100% - 18px) calc(50% + 1px)!important;
  padding-inline-end:44px!important;
  padding-right:44px!important;
}
body.avp-body select:not([multiple]):not([size]):disabled,
body.avp-body select:not([multiple])[size="1"]:disabled{
  background-color:var(--ds-surface-subtle)!important;
}


/* 4c. Publish/admin form optical lock
 * Prevents old upload/admin form rules from shifting icons or arrows.
 */
body.avp-body .avp-publish-form .avp-field-control>.avp-field-prefix{
  left:15px!important;
  inset-inline-start:15px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
}
body.avp-body .avp-publish-form .avp-field{
  align-content:start!important;
  align-self:start!important;
}
body.avp-body .avp-publish-form .avp-field-control{
  height:var(--ds-control-h)!important;
  min-height:var(--ds-control-h)!important;
  align-self:start!important;
}
body.avp-body .avp-publish-form .avp-field-control>input,
body.avp-body .avp-publish-form .avp-field-control>select{
  min-height:var(--ds-control-h)!important;
  height:var(--ds-control-h)!important;
  padding-left:46px!important;
  padding-inline-start:46px!important;
}
body.avp-body .avp-publish-form select:not([multiple]):not([size]){
  background-position:calc(100% - 18px) calc(50% + 1px)!important;
  padding-right:44px!important;
  padding-inline-end:44px!important;
}

/* 5. Inline icons in actions align to the same optical box */
body.avp-body .avp-btn>.avp-icon,
body.avp-body .btn>.avp-icon,
body.avp-body button>.avp-icon{
  width:var(--ds-field-icon-size)!important;
  height:var(--ds-field-icon-size)!important;
  display:block!important;
  flex:0 0 auto!important;
  margin:0!important;
}

/* 6. Safari/iOS autofill must not create a second visual language */
body.avp-login input:-webkit-autofill,
body.avp-login input:-webkit-autofill:hover,
body.avp-login input:-webkit-autofill:focus,
body.avp-login input:-webkit-autofill:active{
  -webkit-text-fill-color:var(--ds-ink)!important;
  caret-color:var(--ds-ink)!important;
  background-color:var(--ds-surface)!important;
  transition:background-color 9999s ease-out 0s!important;
}

/* 7. Mobile keeps the same primitive, only the canonical token changes */
@media(max-width:820px){
  body.avp-body .avp-field-control.avp-field-control-textarea>.avp-field-prefix{
    height:var(--ds-control-h)!important;
  }
}


/* 8. Canonical sheet/drawer close control */
body.avp-body .avp-sheet-close,
body.avp-body .modal.avp-sheet .modal-header .close,
body.avp-body .avp-sidebar-close{
  width:44px!important;
  height:44px!important;
  min-width:44px!important;
  min-height:44px!important;
  flex:0 0 44px!important;
  aspect-ratio:1/1!important;
  padding:0!important;
  margin:0!important;
  border:1px solid var(--ds-line)!important;
  border-radius:9999px!important;
  corner-shape:round;
  background:#fff!important;
  color:var(--ds-ink)!important;
  display:inline-grid!important;
  place-items:center!important;
  line-height:0!important;
  opacity:1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
body.avp-body .avp-sheet-close:hover,
body.avp-body .modal.avp-sheet .modal-header .close:hover,
body.avp-body .avp-sidebar-close:hover{
  background:var(--ds-surface-2)!important;
  color:var(--ds-ink)!important;
}
body.avp-body .avp-sheet-close>.avp-icon,
body.avp-body .avp-sheet-close>svg,
body.avp-body .modal.avp-sheet .modal-header .close>.avp-icon,
body.avp-body .modal.avp-sheet .modal-header .close>svg,
body.avp-body .avp-sidebar-close>.avp-icon,
body.avp-body .avp-sidebar-close>svg{
  width:22px!important;
  height:22px!important;
  min-width:22px!important;
  min-height:22px!important;
  display:block!important;
  margin:0!important;
}


/* 9. Native date/time — iOS picker, governed geometry
 * Keep the native picker behavior while removing Safari intrinsic overflow/alignment.
 */
body.avp-body input[type="date"],
body.avp-body input[type="time"]{
  position:relative!important;
  display:block!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  -webkit-appearance:none!important;
  appearance:none!important;
  text-align:left!important;
  font-variant-numeric:tabular-nums;
}
body.avp-body input[type="date"]::-webkit-date-and-time-value,
body.avp-body input[type="time"]::-webkit-date-and-time-value{
  display:block!important;
  min-width:0!important;
  width:100%!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
}
body.avp-body input[type="date"]::-webkit-datetime-edit,
body.avp-body input[type="time"]::-webkit-datetime-edit{
  display:block!important;
  min-width:0!important;
  padding:0!important;
  text-align:left!important;
}
body.avp-body input[type="date"]::-webkit-calendar-picker-indicator,
body.avp-body input[type="time"]::-webkit-calendar-picker-indicator{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  opacity:0!important;
  cursor:pointer!important;
}
body.avp-body .avp-field-control>input[type="date"],
body.avp-body .avp-field-control>input[type="time"]{
  padding-inline-start:var(--ds-field-icon-slot)!important;
  padding-left:var(--ds-field-icon-slot)!important;
  padding-inline-end:16px!important;
  padding-right:16px!important;
}



/* MMD invariant · Global mobile viewport zoom lock
 * iOS auto-zooms focused controls below 16px. This canonical mobile rule
 * applies to the whole authenticated product, not only the login.
 */
@media(max-width:820px){
  body.avp-body input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
  body.avp-body select,
  body.avp-body textarea{
    font-size:16px!important;
  }
}
