/* Kovalskii Group / iForms modal appearance. Scoped to forms, never admin dialogs. */
:root { --kg-modal-ink:#17262e; --kg-modal-muted:#56676b; --kg-modal-accent:#087963; --kg-modal-accent-hover:#066451; --kg-modal-border:#dce5e4; }
/* :has supports AJAX-inserted modals without imposing classes on controller output. */
.modal:has(form.iforms) .modal-dialog,
.iforms .modal .modal-dialog { max-width:min(620px,calc(100vw - 32px)); margin:clamp(14px,4vh,48px) auto; }
.modal:has(form.iforms) .modal-content,
.iforms .modal .modal-content {
  position:relative; overflow:visible; color:var(--kg-modal-ink); background:#fff;
  border:1px solid var(--kg-modal-border); border-radius:24px;
  box-shadow:0 28px 90px rgba(13,31,38,.22);
}
.modal:has(form.iforms) :is(.modal-header,.modal-body),
.iforms .modal :is(.modal-header,.modal-body) { padding-inline:clamp(20px,4vw,40px); }
.modal:has(form.iforms) .modal-header,
.iforms .modal .modal-header { padding-top:34px; padding-bottom:16px; border-bottom:0; }
.modal:has(form.iforms) .modal-title,
.iforms .modal .modal-title { margin:0; color:var(--kg-modal-ink); font-size:clamp(24px,3vw,30px); font-weight:700; line-height:1.22; }
.modal:has(form.iforms) .modal-body,
.iforms .modal .modal-body { padding-top:26px; padding-bottom:clamp(24px,4vw,40px); }
.modal:has(form.iforms) .modal-header + .modal-body,
.iforms .modal .modal-header + .modal-body { padding-top:0; }
.modal:has(form.iforms) .modal-body > p,
.iforms .modal .modal-body > p { margin:0 0 24px; color:var(--kg-modal-muted); font-size:16px; line-height:1.6; }
.modal:has(form.iforms) :is(.form-group,.field),
.iforms .modal :is(.form-group,.field) { margin-bottom:18px; }
.modal:has(form.iforms) :is(label,.control-label),
.iforms .modal :is(label,.control-label) { color:var(--kg-modal-ink); font-size:15px; font-weight:600; line-height:1.45; }
.modal:has(form.iforms) :is(.form-control,.custom-select,select),
.iforms .modal :is(.form-control,.custom-select,select) {
  width:100%; min-height:48px; height:auto; padding:11px 14px; background:#fff;
  color:var(--kg-modal-ink); font-size:16px; line-height:1.5;
  border:1px solid #bdcdca; border-radius:12px; box-shadow:none;
}
.modal:has(form.iforms) :is(.form-control,.custom-select,select):focus,
.iforms .modal :is(.form-control,.custom-select,select):focus { outline:0; border-color:var(--kg-modal-accent); box-shadow:0 0 0 3px rgba(8,121,99,.16); }
.modal:has(form.iforms) textarea.form-control,
.iforms .modal textarea.form-control { min-height:116px; resize:vertical; }
.modal:has(form.iforms) .form-control::placeholder,
.iforms .modal .form-control::placeholder { color:#67777b; opacity:1; }
.modal:has(form.iforms) :is(.form-check,.custom-control),
.iforms .modal :is(.form-check,.custom-control) { line-height:1.55; }
.modal:has(form.iforms) :is(input[type=checkbox],input[type=radio]),
.iforms .modal :is(input[type=checkbox],input[type=radio]) { accent-color:var(--kg-modal-accent); }
.modal:has(form.iforms) :is(.btn-primary,.btn-success,button[type=submit],input[type=submit]),
.iforms .modal :is(.btn-primary,.btn-success,button[type=submit],input[type=submit]) {
  min-height:48px; padding:12px 24px; border-radius:12px; border:1px solid var(--kg-modal-accent);
  background:var(--kg-modal-accent); color:#fff!important; font-size:16px; font-weight:650;
  line-height:1.35; box-shadow:none; text-decoration:none;
}
.modal:has(form.iforms) :is(.btn-primary,.btn-success,button[type=submit],input[type=submit]):is(:hover,:focus,:active),
.iforms .modal :is(.btn-primary,.btn-success,button[type=submit],input[type=submit]):is(:hover,:focus,:active) {
  background:var(--kg-modal-accent-hover); border-color:var(--kg-modal-accent-hover); color:#fff!important;
}
.modal:has(form.iforms) :is(button[type=submit],input[type=submit]):focus-visible,
.iforms .modal :is(button[type=submit],input[type=submit]):focus-visible { outline:3px solid #9ce5d7; outline-offset:3px; }
.modal:has(form.iforms) :is(a:not(.btn),.form-text a),
.iforms .modal :is(a:not(.btn),.form-text a) { color:var(--kg-modal-accent); text-underline-offset:3px; }
.modal:has(form.iforms) .modal-close,
.iforms .modal .modal-close {
  position:absolute; right:14px; top:14px; z-index:3; display:grid; place-items:center;
  width:40px; height:40px; padding:4px!important; border:0; border-radius:12px;
  background:#eef4f2!important; color:var(--kg-modal-ink)!important; cursor:pointer;
}
.modal:has(form.iforms) .modal-close :is(svg,path,span),
.iforms .modal .modal-close :is(svg,path,span) { color:inherit!important; }
.modal:has(form.iforms) .modal-close:hover,
.iforms .modal .modal-close:hover { background:#dcefe9!important; }
.modal:has(form.iforms) .modal-close:focus-visible,
.iforms .modal .modal-close:focus-visible { outline:3px solid var(--kg-modal-accent); outline-offset:2px; }
/* Avoid global container max-width inside rendered CMS form fieldsets. */
.modal:has(form.iforms) form.iforms fieldset.container,
.iforms .modal form.iforms fieldset.container { max-width:100%; width:100%; padding:0; }
.modal:has(form.iforms) :is(.invalid-feedback,.field_error),
.iforms .modal :is(.invalid-feedback,.field_error) { color:#9d2934; }
@media(max-width:575.98px) {
 .modal:has(form.iforms) .modal-dialog,.iforms .modal .modal-dialog {max-width:calc(100vw - 20px);margin:10px auto;}
 .modal:has(form.iforms) .modal-content,.iforms .modal .modal-content {border-radius:18px;}
 .modal:has(form.iforms) .modal-close,.iforms .modal .modal-close {right:10px;top:10px;}
 .modal:has(form.iforms) :is(.modal-header,.modal-body),.iforms .modal :is(.modal-header,.modal-body) {padding-inline:20px;}
}
@media(prefers-reduced-motion:reduce) {
 .modal:has(form.iforms) *, .iforms .modal * {transition:none!important;}
}

/* File attachment: scoped to iForms modal, Bootstrap 4-compatible markup. */
.iforms .modal .kg-file-upload {
  position:relative; display:block; width:100%; height:76px; min-height:76px;
}
.iforms .modal .kg-file-upload .custom-file-input {
  position:absolute; inset:0; display:block; width:100%; height:100%;
  opacity:0; z-index:3; cursor:pointer; font-size:16px;
}
.iforms .modal .kg-file-upload .custom-file-label {
  position:absolute; inset:0; display:flex; align-items:center; min-width:0;
  height:76px; padding:14px 18px 14px 66px; margin:0;
  border:1.5px dashed #9cbdb5; border-radius:14px;
  color:#17262e; background:#f5faf8; font-size:15px; font-weight:600;
  line-height:1.4; box-shadow:none; white-space:normal; overflow:hidden;
  text-overflow:ellipsis; pointer-events:none; transition:background-color .18s,border-color .18s;
}
.iforms .modal .kg-file-upload .custom-file-label::before {
  content:""; position:absolute; left:18px; top:50%; transform:translateY(-50%);
  display:block; width:32px; height:32px; border-radius:9px; background:#e1f1ec;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23087963' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V4m-4 4 4-4 4 4M4 16v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-size:22px 22px; background-position:center;
}
.iforms .modal .kg-file-upload .custom-file-label::after { display:none!important; content:none!important; }
.iforms .modal .kg-file-upload:hover .custom-file-label { background:#ebf7f3; border-color:#087963; }
.iforms .modal .kg-file-upload .custom-file-input:focus + .custom-file-label,
.iforms .modal .kg-file-upload .custom-file-input:focus-visible + .custom-file-label {
  border-color:#087963; outline:2px solid #087963; outline-offset:2px;
}
.iforms .modal .kg-file-upload.kg-file-selected .custom-file-label {
  border-style:solid; border-color:#087963; background:#ecf8f3;
}
.iforms .modal .kg-file-upload .custom-file-label span {
  overflow:hidden; display:block; text-overflow:ellipsis; white-space:nowrap; max-width:100%;
}
.iforms .modal .kg-file-hint { color:#52656b!important; margin:6px 0 0; font-size:13px; line-height:1.5; }
.iforms .modal .kg-file-hint + .kg-file-hint { margin-top:2px; }
@media(max-width:575.98px) {
  .iforms .modal .kg-file-upload,.iforms .modal .kg-file-upload .custom-file-label {height:72px;min-height:72px;}
  .iforms .modal .kg-file-upload .custom-file-label {padding:12px 12px 12px 58px;font-size:14px;}
  .iforms .modal .kg-file-upload .custom-file-label::before {left:13px;}
}
@media(prefers-reduced-motion:reduce){.iforms .modal .kg-file-upload .custom-file-label{transition:none;}}

/* Worker 16: iForms' actual html_file_input() is .file-input.form-control-file.
   Always scope by the dedicated field wrapper, including AJAX modals and inline forms. */
.kg-upload-field { width:100%; min-width:0; }
.kg-upload-field .kg-file-upload {
  position:relative; display:block; width:100%; height:84px; min-height:84px;
  margin:0; padding:0; border:0; background:transparent; isolation:isolate;
}
.kg-upload-field .kg-file-upload input[type="file"],
.kg-upload-field .kg-file-upload input.file-input.form-control-file {
  position:absolute!important; inset:0!important; z-index:3!important;
  display:block!important; width:100%!important; height:100%!important;
  min-height:0!important; margin:0!important; padding:0!important;
  opacity:0!important; cursor:pointer; font-size:16px;
  border:0!important; background:transparent!important;
}
.kg-upload-field .kg-file-upload .kg-file-upload-label {
  position:absolute; inset:0; display:flex; align-items:center; width:100%; height:100%;
  padding:15px 20px 15px 72px; margin:0;
  border:2px dashed #95bfb5; border-radius:16px;
  background:#f5faf8; color:#17262e; font-size:15px; font-weight:600;
  line-height:1.4; white-space:normal; pointer-events:none;
  box-shadow:none; overflow:hidden; transition:background-color .2s,border-color .2s;
}
.kg-upload-field .kg-file-upload .kg-file-upload-label::before {
  content:""; position:absolute; top:50%; left:17px; transform:translateY(-50%);
  width:40px; height:40px; border-radius:11px; background-color:#e1f1ec;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23087963' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V4m-4 4 4-4 4 4M4 16v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:center; background-size:24px 24px;
}
.kg-upload-field .kg-file-upload .kg-file-upload-label::after {content:none!important;display:none!important;}
.kg-upload-field .kg-file-upload .kg-file-upload-label span {
  display:block; min-width:0; width:100%; overflow:hidden; white-space:nowrap;
  text-overflow:ellipsis; color:#17262e;
}
.kg-upload-field .kg-file-upload:hover .kg-file-upload-label {border-color:#087963;background:#eaf6f2;}
.kg-upload-field .kg-file-upload:focus-within .kg-file-upload-label {border-color:#087963;outline:3px solid rgba(8,121,99,.24);outline-offset:2px;}
.kg-upload-field .kg-file-upload.kg-file-selected .kg-file-upload-label {border-style:solid;border-color:#087963;background:#eaf6f3;}
.kg-upload-field .kg-file-hint {margin:7px 0 0;color:#52656b!important;font-size:13px;line-height:1.5;}
@media(max-width:575.98px) {
 .kg-upload-field .kg-file-upload {height:76px;min-height:76px;}
 .kg-upload-field .kg-file-upload .kg-file-upload-label {padding:12px 12px 12px 61px;font-size:14px;}
 .kg-upload-field .kg-file-upload .kg-file-upload-label::before {left:12px;width:36px;height:36px;}
}
@media(prefers-reduced-motion:reduce){.kg-upload-field .kg-file-upload .kg-file-upload-label{transition:none;}}
