:root {
    --cs-cream: #f7f5ef;
    --cs-green: #173d36;
    --cs-ink: #243a35;
    --cs-muted: #64736b;
    --cs-line: #e2e5dd;
    --cs-paper: #fffefa;
}

body.cs-public-form {
    margin: 0;
    color: var(--cs-ink);
    background: var(--cs-cream);
    font: 400 14px/1.45 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    -webkit-font-smoothing: antialiased;
}

.cs-public-form *,
.cs-public-form *::before,
.cs-public-form *::after { box-sizing: border-box; }

.cs-public-form h1,
.cs-public-form h3,
.cs-public-form h4 {
    color: var(--cs-green);
    font-family: inherit;
    font-weight: 650;
    letter-spacing: -.025em;
}

.cs-public-form h1,
.cs-public-form .card-body > h3 {
    margin: 0 0 16px;
    font-size: 21px;
    line-height: 1.2;
    text-align: left;
}

.cs-public-form .form-group { min-width: 0; margin-bottom: 10px; }
.cs-public-form .form-group > label {
    display: block;
    margin: 0 0 5px;
    color: var(--cs-muted);
    font-size: 12px;
    font-weight: 550;
    line-height: 1.4;
}

.cs-public-form .form-control {
    display: block;
    width: 100%;
    min-height: 44px;
    margin: 0;
    padding: 10px 11px;
    border: 1px solid var(--cs-line);
    border-radius: 9px;
    color: var(--cs-ink);
    background: var(--cs-paper);
    font: inherit;
    line-height: 1.4;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.cs-public-form .form-control:focus {
    border-color: #668a76;
    outline: 0;
    background: #fff;
    box-shadow: 0 0 0 3px rgba(23, 61, 54, .08);
}

.cs-public-form .form-control[readonly] {
    color: #52675c;
    background: #eeefe8 !important;
}
.cs-public-form .form-control::placeholder { color: #8b958d; opacity: 1; }
.cs-public-form textarea.form-control { min-height: 104px; }
.cs-public-form input[type="radio"] { accent-color: var(--cs-green); }
.cs-public-form a { color: var(--cs-green); text-underline-offset: 3px; }
.cs-public-form button:focus-visible,
.cs-public-form a:focus-visible { outline: 3px solid #9db6a6; outline-offset: 3px; }

.cs-public-form .btn-submit,
.cs-public-form .btn-primary,
.cs-public-form .btn-new-card {
    min-height: 44px;
    padding: 11px 20px;
    border: 1px solid var(--cs-green);
    border-radius: 9px;
    color: #fffefa;
    background: var(--cs-green);
    box-shadow: none;
    font: 600 13px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    letter-spacing: .025em;
    cursor: pointer;
    transition: background .15s ease;
}
.cs-public-form .btn-submit:hover,
.cs-public-form .btn-primary:hover,
.cs-public-form .btn-new-card:hover {
    border-color: #285449;
    background: #285449;
    transform: none;
}
.cs-public-form .btn-submit:disabled,
.cs-public-form .btn-primary:disabled {
    border-color: #bac6bc;
    background: #bac6bc;
    cursor: wait;
}

/* Fidelity request: keep related fields together without a wide empty column. */
.cs-request-form .container {
    display: grid;
    grid-template-columns: minmax(0, 1.8fr) minmax(200px, 1fr);
    align-items: start;
    gap: 28px;
    width: 100%;
    max-width: 1080px;
    min-height: 0;
    margin: 0 auto;
    padding: 22px;
}
.cs-request-form .form-section {
    min-width: 0;
    padding: 0;
    background: transparent;
    overflow: visible;
}
.cs-request-form .form-container { max-width: none; margin: 0; }
.cs-request-form .form-row { display: flex; gap: 12px; margin-bottom: 0; }
.cs-request-form .form-row > .form-group { flex: 1; }
.cs-request-form .card-type {
    margin: 0 0 14px;
    padding: 11px 12px;
    border: 1px solid var(--cs-line);
    border-radius: 10px;
    background: rgba(255, 254, 250, .8);
}
.cs-request-form .card-type h3 {
    margin: 0 0 5px;
    color: var(--cs-muted);
    font-size: 12px;
    font-weight: 550;
    letter-spacing: 0;
}
.cs-request-form .radio-group { flex-flow: row wrap; gap: 2px 20px; }
.cs-request-form .radio-option { min-height: 30px; }
.cs-request-form .radio-option label { display: flex; align-items: center; min-height: 30px; margin: 0; font-size: 13px; }
.cs-request-form .radio-option input[type="radio"] { width: 16px; height: 16px; margin-right: 7px; }
.cs-request-form .info-box {
    margin-top: 7px;
    padding: 8px 10px;
    border: 1px solid #dce5d9;
    border-radius: 7px;
    color: var(--cs-green);
    background: #edf2e9;
    font-size: 12px;
}
.cs-request-form .privacy-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px 14px;
    margin: 0;
    padding: 6px 0;
    border-top: 1px solid var(--cs-line);
    border-radius: 0;
    background: transparent;
}
.cs-request-form .privacy-group p { margin: 0; color: var(--cs-ink); font-size: 12px; line-height: 1.4; }
.cs-request-form .privacy-options { flex-shrink: 0; gap: 12px; }
.cs-request-form .privacy-options label { min-height: 30px; margin: 0; font-size: 12px; }
.cs-request-form .privacy-options input[type="radio"] { width: 15px; height: 15px; margin-right: 5px; }
.cs-request-form .btn-submit { width: 100%; margin-top: 12px; }
.cs-request-form .preview-section {
    position: static;
    min-width: 0;
    padding: 36px 0 0;
    background: transparent;
}
.cs-request-form .card-preview { width: 100%; max-width: 280px; margin: 0 auto; }
.cs-request-form .card-preview img {
    border-radius: 13px;
    box-shadow: 0 12px 30px rgba(23, 61, 54, .11);
}
.cs-public-form #name-card { pointer-events: none; max-width: calc(100% - 38px); overflow-wrap: anywhere; font-size: 14px; }
.cs-request-form .loader-overlay { background: rgba(247, 245, 239, .96); }
.cs-request-form .loader-text { color: var(--cs-green); font-size: 14px; }
.cs-request-form .spinner { border-color: var(--cs-line); border-top-color: var(--cs-green); }
.cs-request-form .success-overlay { background: var(--cs-cream); }
.cs-request-form .success-box { padding: 28px; }
.cs-request-form .success-title { margin-bottom: 12px; color: var(--cs-green); font-size: 26px; }
.cs-request-form .success-message { margin-bottom: 22px; color: var(--cs-muted); font-size: 14px; }
.cs-request-form .success-icon { width: 64px; height: 64px; margin-bottom: 22px; background: var(--cs-green); }
.cs-request-form .success-icon svg { width: 32px; height: 32px; }

/* Gift and Box use the same palette and control sizes as the request form. */
.cs-purchase-form .page-body { width: 100%; max-width: 1080px; margin: 0 auto; padding: 22px !important; }
.cs-purchase-form .container-fluid { padding: 0; }
.cs-purchase-form .page-body > .container-fluid > .row { --bs-gutter-x: 24px; align-items: start; }
.cs-purchase-form .page-body > .container-fluid > .row > .col-md-6:first-child { flex: 0 0 64%; width: 64%; max-width: 64%; }
.cs-purchase-form .page-body > .container-fluid > .row > .preview-card { flex: 0 0 36%; width: 36%; max-width: 36%; }
.cs-purchase-form .card { border: 1px solid var(--cs-line); border-radius: 13px; background: var(--cs-paper); box-shadow: none; }
.cs-purchase-form .card-body { padding: 20px; }
.cs-purchase-form #formCard h4 { margin: 14px 0 10px; padding-top: 12px; border-top: 1px solid var(--cs-line); font-size: 14px; }
.cs-purchase-form #formCard h4:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.cs-purchase-form .form-group .col-sm-10 { width: 100%; }
.cs-purchase-form .preview-card { position: relative; align-self: start; height: auto !important; padding: 20px 14px; }
.cs-purchase-form .card-image { display: block; width: 100%; max-width: 280px; height: auto !important; max-height: 210px; margin: 18px auto 0 !important; border-radius: 13px; object-fit: contain !important; box-shadow: 0 12px 30px rgba(23, 61, 54, .11); }
.cs-purchase-form #name-card { bottom: 25%; margin-left: 10px; }
.cs-purchase-form .card-body > p:last-child { margin: 14px 0 0 !important; color: var(--cs-muted); font-size: 12px !important; }
.cs-purchase-form .desc-txt { margin-bottom: 4px; color: var(--cs-muted); font-size: 12px; }
.cs-purchase-form .price-txt { margin-left: 4px; }

@media (max-width: 767px) {
    .cs-request-form .container { grid-template-columns: minmax(0, 1fr); gap: 18px; padding: 16px; }
    .cs-request-form .form-row { flex-direction: row; gap: 10px; }
    .cs-request-form .preview-section { position: static; padding: 4px 0 0; }
    .cs-request-form .card-preview { max-width: 230px; }
    .cs-public-form h1,
    .cs-public-form .card-body > h3 { font-size: 20px; }
    .cs-public-form .form-control { font-size: 16px; }
    .cs-purchase-form .page-body { padding: 12px !important; }
    .cs-purchase-form .card-body { padding: 16px; }
    .cs-purchase-form .page-body > .container-fluid > .row > .col-md-6:first-child,
    .cs-purchase-form .page-body > .container-fluid > .row > .preview-card { flex-basis: 100%; width: 100%; max-width: 100%; }
    .cs-purchase-form .preview-card { position: relative; padding: 14px; }
    .cs-purchase-form .card-image { max-width: 230px; max-height: 170px; margin-top: 6px !important; }
}

@media (max-width: 390px) {
    .cs-request-form .container { padding: 12px; }
    .cs-request-form .privacy-group { flex-wrap: wrap; gap: 0 12px; }
    .cs-request-form .privacy-options { margin-left: auto; }
    .cs-request-form .form-row { gap: 8px; }
    .cs-public-form .form-control { padding-right: 8px; padding-left: 8px; }
}

@media (prefers-reduced-motion: reduce) {
    .cs-public-form *, .cs-public-form *::before, .cs-public-form *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
