/* app/assets/stylesheets/application.css */

/* 
   This file is loaded last by stylesheet_link_tag
   Use this file for any additional custom CSS rules that need to override other styles

   Consolidated styles from minimal/empty files:
   - five_star.css (was empty)
   - scaffold.css (was empty)
   - thermocycler_types.css (minimal styles)
   - core_submission_form.css (single rule)
   - platemap_modal.css (loading animation)
*/

/* Consolidated from thermocycler_types.css */
.some-random-selector {
    margin: 0;
    padding: 0;
}

/* Consolidated from core_submission_form.css */
.form-wrapper {
    display: block;
}

/* Consolidated from platemap_modal.css - Plate save loading animation */
.plate-save-loader {
    border: 16px solid #f3f3f3; /* Light grey */
    border-top: 16px solid blue;
    border-right: 16px solid green;
    border-bottom: 16px solid red;
    border-left: 16px solid pink;
    border-radius: 50%;
    zoom: 20%;
    width: 120px;
    height: 120px;
    animation: spin 2s linear infinite;
    margin-left: 28px;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Common utility classes consolidated from multiple files */
.no-display {
    display: none !important;
}

#errs-box {
    color: red;
}

.llm-json-responses {
    margin-top: 30px;
}

.llm-json-response .panel-heading {
    padding: 0;
}

.llm-json-response .panel-title > a {
    color: #245269;
    display: block;
    padding: 12px 15px;
    text-decoration: none;
}

.llm-json-response .panel-title > a:hover,
.llm-json-response .panel-title > a:focus {
    background-color: #d9edf7;
    text-decoration: none;
}

.llm-json-response .panel-title small {
    color: #52788a;
    font-weight: normal;
    margin-left: 8px;
}

.llm-json-response-title {
    margin-left: 6px;
}

.llm-json-response .glyphicon-chevron-down {
    transition: transform 160ms ease-in-out;
}

.llm-json-response a[aria-expanded="true"] .glyphicon-chevron-down {
    transform: rotate(180deg);
}

.llm-json-response .panel-body {
    padding: 0;
}

.llm-review-controls .panel-body {
    padding: 15px;
}

.llm-json-response pre {
    background: #17232d;
    border: 0;
    border-radius: 0;
    color: #d8e6ef;
    font-size: 12px;
    line-height: 1.55;
    margin: 0;
    max-height: 520px;
    overflow: auto;
    padding: 18px;
    white-space: pre;
    word-break: normal;
    word-wrap: normal;
}

/* Keep the review editor independent of the compact forms elsewhere in Ebase. */
.llm-identity-review [data-polymerase-candidate] {
    border-color: #dce5e8;
    border-radius: 12px;
    box-shadow: 0 2px 6px rgba(25, 50, 62, .04);
    margin-bottom: 24px;
    scroll-margin-top: 20px;
}

.llm-identity-review [data-polymerase-candidate] > .panel-heading {
    align-items: center;
    background: #f6f9fa;
    border-color: #e2e9ec;
    border-radius: 12px 12px 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 16px 22px;
}

.llm-identity-review [data-polymerase-candidate] > .panel-heading > strong {
    color: #203740;
    font-size: 18px;
    overflow-wrap: anywhere;
}

.llm-identity-review [data-polymerase-candidate] > .panel-heading .label {
    background: #e7edef;
    border-radius: 20px;
    color: #48616c;
    font-size: 12px;
    font-weight: 600;
    padding: 6px 10px;
}

.llm-identity-review [data-polymerase-candidate] > .panel-heading .label-success {
    background: #dff3ec;
    color: #17604b;
}

.llm-identity-review [data-polymerase-candidate] > .panel-body {
    padding: 22px;
}

.llm-review-editor {
    background: #f7fafb;
    border: 1px solid #dce7ea;
    border-radius: 10px;
    color: #243b45;
    margin-top: 26px;
    padding: 24px;
}

.llm-review-editor h3 {
    color: #1b3540;
    font-size: 20px;
    font-weight: 600;
    letter-spacing: -.3px;
    margin: 0 0 6px;
}

.llm-review-editor .llm-review-intro {
    color: #607480;
    line-height: 1.6;
    margin: 0 0 24px;
}

.llm-review-editor .form-group {
    margin: 0 0 20px;
    min-width: 0;
}

.llm-review-editor label {
    color: #304a56;
    display: block;
    font-size: 13px;
    font-weight: 600;
    margin: 0 0 8px;
}

.llm-review-editor .llm-review-optional {
    color: #667b86;
    font-size: 12px;
    font-weight: 400;
    margin-left: 6px;
}

.llm-review-editor .form-control,
.llm-review-editor .select2-container--default .select2-selection--single {
    background: #fff;
    border: 1px solid #b9cbd2;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(25, 50, 62, .03);
    color: #203b47;
    font-size: 15px;
    height: auto;
    line-height: 1.5;
    min-height: 46px;
    width: 100%;
}

.llm-review-editor .form-control {
    margin: 0;
    padding: 11px 14px;
}

.llm-review-editor textarea.form-control {
    min-height: 88px;
    resize: vertical;
}

.llm-review-editor .form-control::placeholder {
    color: #6c7d87;
}

.llm-review-editor .select2-container {
    display: block;
    max-width: 100%;
    width: 100% !important;
}

.llm-review-editor .select2-container--default .select2-selection__rendered {
    color: #203b47;
    line-height: 1.5;
    overflow: visible;
    overflow-wrap: anywhere;
    padding: 11px 64px 11px 14px;
    text-overflow: clip;
    white-space: normal;
}

.llm-review-editor .select2-container--default .select2-selection__placeholder {
    color: #6c7d87;
}

.llm-review-editor .select2-container--default .select2-selection__arrow {
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
}

.llm-review-editor .select2-container--default .select2-selection__clear {
    color: #667b86;
    height: 28px;
    margin: 0;
    position: absolute;
    right: 38px;
    top: 50%;
    transform: translateY(-50%);
}

.llm-review-editor .form-control:focus,
.llm-review-editor .select2-container--focus .select2-selection--single,
.llm-review-editor .select2-container--open .select2-selection--single {
    border-color: #157b80;
    box-shadow: 0 0 0 3px rgba(21, 123, 128, .14);
    outline: none;
}

.llm-review-editor .help-block[data-review-effect] {
    border-left: 3px solid #8fc6c4;
    margin: -6px 0 24px;
    padding: 2px 0 2px 12px;
}

.llm-review-editor .help-block {
    color: #607480;
    font-size: 13px;
    line-height: 1.6;
    margin: 7px 0 0;
}

.llm-review-editor fieldset {
    min-width: 0;
}

.llm-review-editor legend {
    border-color: #dce7ea;
    color: #304a56;
    font-size: 15px;
    font-weight: 600;
    margin-bottom: 20px;
    padding-bottom: 12px;
}

.llm-review-grid {
    column-gap: 20px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.llm-review-grid-wide {
    grid-column: 1 / -1;
}

.llm-review-actions {
    align-items: center;
    border-top: 1px solid #dce7ea;
    display: flex;
    flex-wrap: wrap;
    gap: 14px 20px;
    margin-top: 24px;
    padding-top: 20px;
}

.llm-review-actions .btn-primary {
    background: #126a70;
    border: 1px solid #126a70;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    max-width: 100%;
    padding: 12px 18px;
    white-space: normal;
}

.llm-review-actions .btn-primary:hover,
.llm-review-actions .btn-primary:focus {
    background: #0d5359;
    border-color: #0d5359;
}

.llm-review-actions .btn-primary:focus-visible {
    outline: 3px solid #77b7bb;
    outline-offset: 3px;
}

.llm-review-actions > span {
    color: #607480;
    flex: 1 1 200px;
    font-size: 12px;
    line-height: 1.5;
}

.llm-review-dropdown {
    border: 1px solid #b9cbd2;
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(25, 50, 62, .12);
    overflow: hidden;
}

.llm-review-dropdown .select2-results__option {
    font-size: 14px;
    line-height: 1.5;
    overflow-wrap: anywhere;
    padding: 10px 14px;
    white-space: normal;
}

.llm-review-dropdown .select2-results__option--highlighted[aria-selected] {
    background: #126a70;
    color: #fff;
}

@media (max-width: 767px) {
    .llm-identity-review [data-polymerase-candidate] > .panel-heading,
    .llm-identity-review [data-polymerase-candidate] > .panel-body {
        padding: 16px;
    }

    .llm-review-editor {
        padding: 16px;
    }

    .llm-review-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}
