/* Spinner — shared across all form buttons */
@keyframes odf-spin {
    to { transform: rotate(360deg); }
}
.odf-spinner {
    display: inline-block;
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255,255,255,.35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: odf-spin .7s linear infinite;
    vertical-align: middle;
}

/* Error message — prominent alert box (overrides the small per-page red text)
   so validation errors clearly pop up instead of being a tiny line. */
.odf-cp-error,
.odf-sp-error,
.odf-ap-error,
.odf-error-msg {
    margin-top: 14px !important;
    padding: 12px 16px !important;
    background: #fde8e8 !important;
    border: 1px solid #f5c2c2 !important;
    border-left: 4px solid #d63638 !important;
    border-radius: 8px !important;
    color: #b32d2e !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    line-height: 1.45 !important;
    animation: odf-error-pop .3s ease;
}

@keyframes odf-error-pop {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
