.koc-sf-wrap {
max-width: 760px;
margin: 0 auto;
font-family: inherit;
--koc-sf-accent:    #1a6fb5;
--koc-sf-danger:    #d32f2f;
--koc-sf-ok:        #2e7d32;
--koc-sf-border:    rgba(0,0,0,.18);
--koc-sf-border-in: rgba(0,0,0,.30);
--koc-sf-bg-form:   #fff;
--koc-sf-bg-input:  #f5f7fa;
--koc-sf-muted:     rgba(0,0,0,.50);
--koc-sf-radius:    8px;
--koc-sf-shadow:    0 2px 16px rgba(0,0,0,.10);
} @media (prefers-color-scheme: dark) {
.koc-sf-wrap {
--koc-sf-border:    rgba(255,255,255,.18);
--koc-sf-border-in: rgba(255,255,255,.28);
--koc-sf-bg-form:   rgba(255,255,255,.03);
--koc-sf-bg-input:  rgba(255,255,255,.05);
--koc-sf-muted:     rgba(255,255,255,.50);
--koc-sf-shadow:    0 2px 8px rgba(0,0,0,.35);
}
}
body.dark-bg .koc-sf-wrap {
--koc-sf-border:    rgba(255,255,255,.18);
--koc-sf-border-in: rgba(255,255,255,.28);
--koc-sf-bg-form:   rgba(255,255,255,.03);
--koc-sf-bg-input:  rgba(255,255,255,.05);
--koc-sf-muted:     rgba(255,255,255,.50);
--koc-sf-shadow:    0 2px 8px rgba(0,0,0,.35);
} .koc-sf-trigger {
margin-bottom: 24px;
text-align: center;
}
#koc-sf-open {
display: inline-flex;
padding: 14px 40px;
font-size: 1.1rem;
font-weight: 700;
letter-spacing: .02em;
} .koc-sf-notice {
padding: 12px 16px;
border-radius: var(--koc-sf-radius);
margin-bottom: 16px;
font-size: 0.95rem;
}
.koc-sf-notice--success {
background: rgba(46,125,50,.12);
border: 1px solid rgba(46,125,50,.35);
}
.koc-sf-notice--error {
background: rgba(211,47,47,.10);
border: 1px solid rgba(211,47,47,.35);
} .koc-sf-form {
background: var(--koc-sf-bg-form);
border: 1px solid var(--koc-sf-border);
border-radius: var(--koc-sf-radius);
padding: 28px 32px;
box-shadow: var(--koc-sf-shadow);
}
.koc-sf-title {
margin: 0 0 20px;
font-size: 1.35rem;
color: inherit;
}
.koc-sf-fieldset {
border: 1px solid var(--koc-sf-border);
border-radius: var(--koc-sf-radius);
padding: 18px 20px;
margin-bottom: 20px;
background: inherit;
}
.koc-sf-fieldset legend {
font-weight: 600;
padding: 0 8px;
color: var(--koc-sf-accent);
font-size: 0.95rem;
}
.koc-sf-field { margin-bottom: 14px; }
.koc-sf-field:last-child { margin-bottom: 0; }
.koc-sf-field label,
.koc-sf-field-heading {
display: block;
font-weight: 500;
font-size: 0.9rem;
margin-bottom: 4px;
color: inherit;
}
.koc-sf-field-heading { margin-top: 0; }
.koc-req { color: var(--koc-sf-danger); }
.koc-sf-wrap .koc-sf-input {
display: block;
width: 100%;
padding: 8px 12px;
border: 1px solid var(--koc-sf-border-in);
border-radius: 6px;
font-size: 0.95rem;
font-family: inherit;
background: var(--koc-sf-bg-input);
color: inherit;
box-sizing: border-box;
transition: border-color .15s;
outline: none;
}
.koc-sf-wrap .koc-sf-input:focus {
border-color: var(--koc-sf-accent);
box-shadow: 0 0 0 2px rgba(26,111,181,.15);
}
.koc-sf-wrap .koc-sf-input::placeholder { color: inherit; opacity: .4; }
.koc-sf-wrap textarea.koc-sf-input { resize: vertical; min-height: 100px; }
.koc-sf-wrap select.koc-sf-input { cursor: pointer; }
.koc-sf-hint {
font-size: 0.82rem;
color: var(--koc-sf-muted);
margin-top: 4px;
display: block;
} .koc-geocode-row {
display: flex;
gap: 8px;
align-items: center;
}
.koc-geocode-row .koc-sf-input { flex: 1; }
.koc-geocode-status {
display: block;
font-size: 0.82rem;
margin-top: 4px;
}
.koc-geocode-status--error { color: var(--koc-sf-danger); }
.koc-geocode-status--ok    { color: var(--koc-sf-ok); }
.koc-geocode-status--info  { color: var(--koc-sf-muted); } .koc-sf-gallery {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: flex-start;
}
.koc-sf-gallery-previews {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.koc-sf-gallery-item {
position: relative;
width: 88px;
height: 88px;
border-radius: 6px;
overflow: hidden;
border: 2px solid var(--koc-sf-border);
cursor: pointer;
}
.koc-sf-gallery-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.koc-sf-gallery-item--loading img { opacity: .4; }
.koc-sf-gallery-item--thumb {
border-color: var(--koc-sf-accent);
border-width: 3px;
}
.koc-sf-gallery-item--thumb::after {
content: '★';
position: absolute;
top: 3px; left: 3px;
width: 18px; height: 18px;
border-radius: 50%;
background: var(--koc-sf-accent);
color: #fff;
font-size: 11px;
line-height: 18px;
text-align: center;
pointer-events: none;
}
.koc-sf-gallery-remove {
position: absolute;
top: 2px; right: 2px;
width: 22px; height: 22px;
border-radius: 50%;
background: rgba(0,0,0,.65);
color: #fff;
border: none;
cursor: pointer;
font-size: 15px;
line-height: 22px;
padding: 0;
text-align: center;
opacity: 0;
transition: opacity .15s;
}
.koc-sf-gallery-item:hover .koc-sf-gallery-remove { opacity: 1; }
.koc-sf-gallery-spinner {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
}
.koc-sf-gallery-spinner::after {
content: '';
width: 24px; height: 24px;
border: 3px solid rgba(255,255,255,.4);
border-top-color: #fff;
border-radius: 50%;
animation: koc-spin .8s linear infinite;
}
.koc-sf-gallery-add {
width: 88px; height: 88px;
border-radius: 6px;
border: 2px dashed var(--koc-sf-border-in);
background: none;
color: inherit;
opacity: .65;
cursor: pointer;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 0.8rem;
transition: border-color .15s, opacity .15s;
font-family: inherit;
}
.koc-sf-gallery-add:hover {
border-color: var(--koc-sf-accent);
opacity: 1;
} .koc-sf-pdf-item {
display: flex;
align-items: center;
gap: 8px;
padding: 7px 10px;
border: 1px solid var(--koc-sf-border);
border-radius: 6px;
background: var(--koc-sf-bg-input);
margin-bottom: 6px;
font-size: 0.9rem;
color: inherit;
}
.koc-sf-pdf-item--loading { opacity: .7; }
.koc-sf-pdf-icon { font-size: 1.1rem; flex-shrink: 0; }
.koc-sf-pdf-name { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.koc-sf-pdf-loading { color: var(--koc-sf-muted); font-size: 0.82rem; }
.koc-sf-pdf-remove {
background: none;
border: none;
color: var(--koc-sf-danger);
cursor: pointer;
font-size: 1.1rem;
line-height: 1;
padding: 2px 4px;
flex-shrink: 0;
}
.koc-sf-pdf-remove:hover { opacity: .7; } .koc-sf-consent {
margin: 16px 0;
padding: 12px 16px;
background: rgba(255,193,7,.07);
border: 1px solid rgba(255,193,7,.35);
border-radius: var(--koc-sf-radius);
font-size: 0.9rem;
}
.koc-sf-consent label {
display: flex;
align-items: flex-start;
gap: 8px;
cursor: pointer;
}
.koc-sf-consent input[type="checkbox"] { margin-top: 3px; flex-shrink: 0; }
.koc-sf-actions {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
margin-top: 20px;
} .koc-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 9px 20px;
border-radius: 6px;
font-size: 0.95rem;
font-weight: 500;
cursor: pointer;
border: 2px solid transparent;
transition: background .15s, border-color .15s, color .15s, filter .15s;
text-decoration: none;
font-family: inherit;
}
.koc-btn:focus { outline: 2px solid var(--koc-sf-accent); outline-offset: 2px; }
.koc-btn-primary {
background: var(--koc-sf-accent);
color: #fff;
border-color: var(--koc-sf-accent);
}
.koc-btn-primary:hover:not(:disabled) { filter: brightness(1.1); }
.koc-btn-primary:disabled { opacity: .6; cursor: not-allowed; }
.koc-btn-outline {
background: none;
color: inherit;
border-color: var(--koc-sf-border-in);
}
.koc-btn-outline:hover { border-color: var(--koc-sf-accent); color: var(--koc-sf-accent); }
.koc-btn-danger {
background: none;
color: var(--koc-sf-danger);
border-color: rgba(211,47,47,.4);
}
.koc-btn-danger:hover { background: rgba(211,47,47,.1); }
.koc-btn-sm { padding: 5px 12px; font-size: 0.85rem; } .koc-btn-link {
background: none;
border: none;
padding: 0;
color: var(--koc-sf-accent);
cursor: pointer;
font-size: inherit;
font-family: inherit;
text-decoration: underline;
line-height: inherit;
}
.koc-btn-link:hover { opacity: .75; } .koc-sf-login p, .koc-db-login p {
padding: 14px 18px;
border: 1px solid var(--koc-sf-border);
border-radius: var(--koc-sf-radius);
background: var(--koc-sf-bg-input);
color: inherit;
} @keyframes koc-spin { to { transform: rotate(360deg); } } @media (max-width: 600px) {
.koc-sf-form { padding: 16px; }
.koc-sf-actions { flex-direction: column; align-items: stretch; }
.koc-sf-actions .koc-btn { justify-content: center; }
.koc-geocode-row { flex-direction: column; align-items: stretch; }
.koc-geocode-row .koc-btn { width: 100%; justify-content: center; }
}