/* KMV Forms – front end */
.kmvf-form{
	--kmvf-accent:#007dbe;
	--kmvf-accent-dark:#005a9c;
	--kmvf-ink:#10233f;
	--kmvf-muted:#6b7b90;
	--kmvf-line:#dbe3ec;
	--kmvf-bg:#fff;
	--kmvf-bg-focus:#fff;
	--kmvf-danger:#d93036;
	--kmvf-success:#0f9d58;
	font-family:inherit;
	color:var(--kmvf-ink);
	margin:0;
}
.kmvf-form.kmvf-theme-dark{
	--kmvf-ink:#fff;
	--kmvf-muted:rgba(255,255,255,.72);
	--kmvf-line:rgba(255,255,255,.28);
	--kmvf-bg:rgba(255,255,255,.08);
	--kmvf-bg-focus:rgba(255,255,255,.14);
	--kmvf-danger:#ffb4b6;
	--kmvf-success:#9ff0c4;
}

.kmvf-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 18px; }
.kmvf-field{ grid-column:1 / -1; display:flex; flex-direction:column; min-width:0; }
.kmvf-field.kmvf-half{ grid-column:span 1; }

.kmvf-label{
	display:block; margin:0 0 7px; font-size:13.5px; font-weight:600; line-height:1.3;
	color:var(--kmvf-ink); text-transform:none; letter-spacing:0;
}
.kmvf-req{ color:var(--kmvf-danger); margin-left:2px; }

.kmvf-form input[type=text],
.kmvf-form input[type=email],
.kmvf-form input[type=tel],
.kmvf-form input[type=date],
.kmvf-form select,
.kmvf-form textarea{
	width:100%; max-width:100%; margin:0; box-sizing:border-box;
	height:48px; padding:0 15px;
	font:inherit; font-size:15px; color:var(--kmvf-ink);
	background:var(--kmvf-bg); border:1.5px solid var(--kmvf-line); border-radius:10px;
	box-shadow:none; outline:0;
	transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;
	-webkit-appearance:none; appearance:none;
}
.kmvf-form textarea{ height:auto; min-height:120px; padding:12px 15px; line-height:1.55; resize:vertical; }
.kmvf-form ::placeholder{ color:var(--kmvf-muted); opacity:.85; }
.kmvf-form input:focus,
.kmvf-form select:focus,
.kmvf-form textarea:focus{
	border-color:var(--kmvf-accent); background:var(--kmvf-bg-focus);
	box-shadow:0 0 0 4px rgba(0,125,190,.14);
}
.kmvf-theme-dark input:focus,
.kmvf-theme-dark select:focus,
.kmvf-theme-dark textarea:focus{ border-color:#fff; box-shadow:0 0 0 4px rgba(255,255,255,.16); }

.kmvf-select{ position:relative; }
.kmvf-select::after{
	content:""; position:absolute; right:16px; top:50%; width:8px; height:8px; margin-top:-6px;
	border-right:2px solid var(--kmvf-muted); border-bottom:2px solid var(--kmvf-muted);
	transform:rotate(45deg); pointer-events:none;
}
.kmvf-form select{ padding-right:40px; cursor:pointer; }
.kmvf-theme-dark select option{ color:#10233f; }

/* Choices */
.kmvf-choices{ display:flex; flex-wrap:wrap; gap:8px 18px; }
.kmvf-choice{ display:inline-flex; align-items:flex-start; gap:8px; margin:0; font-size:14.5px; font-weight:400; line-height:1.45; cursor:pointer; color:var(--kmvf-ink); }
.kmvf-choice input{ width:18px; height:18px; margin:2px 0 0; accent-color:var(--kmvf-accent); flex:0 0 18px; }

/* File drop zone */
.kmvf-file{
	display:flex; align-items:center; gap:14px; margin:0;
	padding:14px 16px; border:1.5px dashed var(--kmvf-line); border-radius:12px;
	background:var(--kmvf-bg); cursor:pointer; transition:border-color .2s ease,background .2s ease;
}
.kmvf-file:hover,.kmvf-file.is-drag{ border-color:var(--kmvf-accent); background:rgba(0,125,190,.05); }
.kmvf-file.has-file{ border-style:solid; border-color:var(--kmvf-accent); }
.kmvf-file input[type=file]{ position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.kmvf-file-icon{
	flex:0 0 42px; width:42px; height:42px; border-radius:50%;
	display:flex; align-items:center; justify-content:center;
	background:rgba(0,125,190,.1); color:var(--kmvf-accent);
}
.kmvf-theme-dark .kmvf-file-icon{ background:rgba(255,255,255,.14); color:#fff; }
.kmvf-file-text{ display:flex; flex-direction:column; font-size:14px; line-height:1.4; color:var(--kmvf-ink); min-width:0; }
.kmvf-file-text strong{ font-weight:600; color:var(--kmvf-accent); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.kmvf-theme-dark .kmvf-file-text strong{ color:#fff; }
.kmvf-file-text small{ font-size:12px; color:var(--kmvf-muted); margin-top:2px; }

/* Errors */
.kmvf-error{ display:block; min-height:0; font-size:12.5px; color:var(--kmvf-danger); margin-top:5px; }
.kmvf-error:empty{ display:none; }
.kmvf-invalid input:not([type=checkbox]):not([type=radio]),
.kmvf-invalid select,
.kmvf-invalid textarea,
.kmvf-invalid .kmvf-file{ border-color:var(--kmvf-danger) !important; }

/* Submit */
.kmvf-actions{ margin-top:20px; }
.kmvf-form .kmvf-submit{
	position:relative; display:inline-flex; align-items:center; gap:12px;
	height:50px; margin:0; padding:0 8px 0 24px;
	font:inherit; font-size:15px; font-weight:700; letter-spacing:.2px; text-transform:none; line-height:1;
	color:#fff; background:linear-gradient(135deg,var(--kmvf-accent) 0%,var(--kmvf-accent-dark) 100%);
	border:0; border-radius:999px; cursor:pointer;
	box-shadow:0 10px 22px rgba(0,125,190,.28);
	transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;
}
.kmvf-form .kmvf-submit:hover{ transform:translateY(-1px); box-shadow:0 14px 28px rgba(0,125,190,.36); color:#fff; }
.kmvf-submit-icon{
	display:inline-flex; align-items:center; justify-content:center;
	width:34px; height:34px; border-radius:50%; background:#fff; color:var(--kmvf-accent);
	transition:transform .2s ease;
}
.kmvf-submit:hover .kmvf-submit-icon{ transform:translateX(3px); }
.kmvf-theme-dark .kmvf-submit{ background:#fff; color:var(--kmvf-accent-dark); box-shadow:0 10px 22px rgba(0,0,0,.18); }
.kmvf-theme-dark .kmvf-submit:hover{ color:var(--kmvf-accent-dark); }
.kmvf-theme-dark .kmvf-submit-icon{ background:var(--kmvf-accent); color:#fff; }

.kmvf-spinner{
	display:none; position:absolute; right:15px; top:50%; width:20px; height:20px; margin-top:-10px;
	border:2.5px solid rgba(0,125,190,.25); border-top-color:var(--kmvf-accent); border-radius:50%;
	animation:kmvf-spin .7s linear infinite;
}
.is-sending .kmvf-submit{ opacity:.85; cursor:progress; }
.is-sending .kmvf-submit-icon{ visibility:hidden; }
.is-sending .kmvf-spinner{ display:block; }
@keyframes kmvf-spin{ to{ transform:rotate(360deg); } }

/* Response */
.kmvf-response{ display:none; }
.kmvf-response.is-success,
.kmvf-response.is-error{
	display:flex; align-items:flex-start; gap:10px; margin-top:16px; padding:12px 14px;
	border-radius:10px; font-size:14px; line-height:1.5;
}
.kmvf-response.is-success{ background:rgba(15,157,88,.1); color:var(--kmvf-success); }
.kmvf-response.is-error{ background:rgba(217,48,54,.08); color:var(--kmvf-danger); }
.kmvf-theme-dark .kmvf-response.is-success{ background:rgba(159,240,196,.14); }
.kmvf-theme-dark .kmvf-response.is-error{ background:rgba(255,180,182,.14); }
.kmvf-response-icon{
	flex:0 0 22px; width:22px; height:22px; border-radius:50%;
	display:flex; align-items:center; justify-content:center;
	font-size:13px; font-weight:700; color:#fff; background:currentColor;
}
.kmvf-response-icon{ color:inherit; }
.kmvf-response.is-success .kmvf-response-icon{ background:var(--kmvf-success); color:#fff; }
.kmvf-response.is-error .kmvf-response-icon{ background:var(--kmvf-danger); color:#fff; }
.kmvf-theme-dark .kmvf-response-icon{ color:#10233f !important; }

.kmvf-hp{ position:absolute !important; left:-9999px !important; width:1px; height:1px; overflow:hidden; }
.kmvf-noscript{ color:var(--kmvf-danger); font-size:13px; }

@media (max-width:600px){
	.kmvf-grid{ grid-template-columns:1fr; }
	.kmvf-field.kmvf-half{ grid-column:1 / -1; }
	.kmvf-form .kmvf-submit{ width:100%; justify-content:center; padding:0 24px; }
	.kmvf-submit-icon{ position:absolute; right:8px; }
}

/* Centered submit button + file drop zone */
.kmvf-align-center .kmvf-actions{ text-align:center; }
.kmvf-align-center .kmvf-response.is-success,
.kmvf-align-center .kmvf-response.is-error{ justify-content:center; text-align:left; }
.kmvf-align-center .kmvf-type-file{ align-items:center; text-align:center; }
.kmvf-align-center .kmvf-type-file .kmvf-label{ text-align:center; }
.kmvf-align-center .kmvf-file{
	flex-direction:column; justify-content:center; text-align:center;
	width:100%; box-sizing:border-box; gap:8px; padding:20px 16px;
}
.kmvf-align-center .kmvf-file-text{ align-items:center; }
.kmvf-align-center .kmvf-type-file .kmvf-error{ text-align:center; }
@media (max-width:600px){
	.kmvf-align-center .kmvf-form .kmvf-submit,
	.kmvf-form.kmvf-align-center .kmvf-submit{ width:100%; }
}
