﻿
.dynamic-form-body {
    display: flex;
    flex-wrap: wrap;
}

.dynamic-form-content {
    max-width: 100%;
}

    .dynamic-form-content .message-success p {
        color: green;
        font-weight: bold;
    }

    .dynamic-form-content .message-error ul {
        margin-left: 20px;
    }

        .dynamic-form-content .message-error ul li {
            text-align: left;
            float: left;
            width: 100%;
            padding: 5px 0px;
            list-style: disc;
        }

.dynamic-form-page .ajax-loader {
    background: #F9F9F9;
    position: fixed;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    z-index: 99;
    visibility: hidden;
    opacity: 0.7;
}

    .dynamic-form-page .ajax-loader img {
        width: auto;
        height: auto;
        position: absolute;
        top: 35%;
        left: 45%;
        margin-left: -50px;
        margin-right: -50px;
        -webkit-animation: none;
        animation: none;
    }

.dynamic-form-content .short-description, .dynamic-form-content .title {
    padding: 10px 0px;
    margin: 10px 0px;
    float: left;
    width: 100%;
}

.dynamic-form-attributes {
    padding: 5px 0px;
    width: 100%;
}

    .dynamic-form-attributes .attributes-name {
        width: 100%;
        float: left;
        text-align: left;
        margin: 10px 0;
    }

        .dynamic-form-attributes .attributes-name .required {
            display: inline-block;
            color: red;
        }


    .dynamic-form-attributes .attributes-value {
        float: left;
        width: 100%;
        text-align: left;
    }

        .dynamic-form-attributes .attributes-value .textbox, .dynamic-form-attributes .attributes-value textarea {
            width: 100%;
        }

    .dynamic-form-attributes .attributes-name label {
        vertical-align: middle;
        font: normal 14px 'Montserrat', sans-serif;
        color: #343642;
    }

    .dynamic-form-attributes .attributes-value .option-list {
        margin-left: 20px;
    }

.dynamic-form-content .registration-page {
    margin: 10px 0px;
}

.dynamic-form-attributes .attributes-value select {
    width: 100%;
}

.dynamic-form-attributes .attributes-value .date-picker-wrapper select {
    width: 31%;
    margin-right: 3%;
}

    .dynamic-form-attributes .attributes-value .date-picker-wrapper select:last-child {
        float: right;
        margin-right: 0px;
    }

.dynamic-form-attributes .attributes-value .qq-upload-button {
    width: 100%
}

.dynamic-form-content .registration-page .buttons {
    margin: 10px auto !important;
    width: 220px;
}


.qq-upload-list li.qq-upload-success {
    margin: 2px;
}


.dynamic-form-page .page-body {
    padding: 40px 0 60px;
}

@media (min-width:769px) {

    .dynamic-form-attributes.two-columns {
        width: 46.5%;
        margin: 0 10px;
    }

    .topic-page .page-body .dynamic-form-attributes .option-list {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
    }

    .dynamic-form-attributes .option-list li {
        width: 33%;
    }
}



.topic-page .page-body .dynamic-form-attributes .option-list {
    list-style: none;
    margin: 0;
    padding: 0;
    font: normal 14px 'Montserrat', sans-serif;
    color: #343642;
}

/* ── Plain (non-card) option list rows ─────────────────────────── */
.dynamic-form-attributes .option-list li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 10px;
}

.dynamic-form-attributes .option-list li input[type="checkbox"],
.dynamic-form-attributes .option-list li input[type="radio"] {
    flex-shrink: 0;
    margin: 0;
}

.dynamic-form-attributes.two-columns .option-list li {
    width: auto;
}

.dynamic-form-attributes .option-list li label {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    flex: 1;
    margin: 0;
}

/* ── Card grid layout ───────────────────────────────────────────── */
.dynamic-form-attributes .option-list--cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 14px;
    list-style: none;
    margin: 0;
    padding: 0;
}

/* Override the plain-row rules for card list items */
    .dynamic-form-attributes .option-list--cards li {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 0;
        width: auto; /* beats the desktop width:33% rule */
        border: 1px solid #ddd;
        border-radius: 8px;
        overflow: hidden;
        background: #fff;
        transition: border-color 0.15s ease, box-shadow 0.15s ease;
        margin-bottom: 10px;
    }

.dynamic-form-attributes .option-list--cards li:hover {
    border-color: #bbb;
    box-shadow: 0 3px 10px rgba(0,0,0,0.1);
}

/* Highlight checked card */
.dynamic-form-attributes .option-list--cards li:has(input:checked) {
    border-color: #2a7ae2;
    box-shadow: 0 0 0 2px rgba(42,122,226,0.2);
}

/* Disabled (readonly) card */
.dynamic-form-attributes .option-list--cards li:has(input:disabled) {
    opacity: 0.55;
    pointer-events: none;
}

/* Label fills the full card so every click area is interactive */
.dynamic-form-attributes .option-list--cards li label {
    display: flex;
    flex-direction: column;
    flex: 1;
    height: 100%;
    cursor: pointer;
    gap: 0;
    margin: 0;
    padding: 0;
}

/* Title */
.option-card__title {
    display: block;
    font-weight: 600;
    font-size: 13px;
    line-height: 1.35;
    text-align: center;
    padding: 10px 12px 8px;
    color: #333;
    word-break: break-word;
}

/* Fixed-height image slot — keeps all cards the same height */
.option-card__image-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 130px;
    flex-shrink: 0;
    background: #f7f7f7;
    border-top: 1px solid #ebebeb;
    border-bottom: 1px solid #ebebeb;
    overflow: hidden;
}

.option-card__image-wrap .option-image {
    max-width: calc(100% - 16px);
    max-height: 116px;
    object-fit: contain;
    border: none;
    border-radius: 0;
    padding: 0;
    cursor: zoom-in;
    transition: opacity 0.15s ease;
}

.option-card__image-wrap .option-image:hover {
    opacity: 0.82;
    box-shadow: none;
}

/* Footer row: checkbox / radio + "Select" text */
.option-card__footer {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 12px;
    margin-top: auto;
}

.option-card__footer input[type="checkbox"],
.option-card__footer input[type="radio"] {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    margin: 0;
    cursor: pointer;
    accent-color: #2a7ae2;
}

.option-card__select-text {
    font-size: 13px;
    color: #555;
    line-height: 1;
}

/* ── Responsive overrides for card grid ─────────────────────────── */

/* 2 columns on very small screens */
@media (max-width: 400px) {
    .dynamic-form-attributes .option-list--cards {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Override the desktop flex/33%-width rules that target generic option-list */
@media (min-width: 769px) {
    .topic-page .page-body .dynamic-form-attributes .option-list--cards {
        display: grid;
    }

    .dynamic-form-attributes .option-list--cards li {
        width: auto;
    }
}
