/*
 * FRQ QR Code Generator - Frontend Styles
 *
 * This file contains styles for the QR code generator form and the user dashboard
 * display when rendered via shortcodes on the frontend of the website.
 */

/*-----------------------------------------------------------------------------
 * Styles for QR Generator Shortcode ([qr_generator])
 *-----------------------------------------------------------------------------*/

.qr-generator-wrapper {
    max-width: 600px;
    margin: 2rem auto;
    padding: 2rem;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, sans-serif;
    box-sizing: border-box;
}

.qr-generator-wrapper *,
.qr-generator-wrapper *::before,
.qr-generator-wrapper *::after {
    box-sizing: inherit;
}

/* Form Header */
.qr-generator-wrapper .form-header {
    text-align: center;
    margin-bottom: 2rem;
}

.qr-generator-wrapper .form-header h2 {
    color: #1a1a1a;
    margin: 0 0 0.5rem;
    font-size: 1.8rem;
    font-weight: 600;
}

.qr-generator-wrapper .form-header p {
    font-size: 1rem;
    color: #555;
    margin-top: 0.25rem;
}



/* User Actions on Generator Page (e.g., Dashboard Link) */
.qr-generator-wrapper .frq-generator-useractions {
    margin-bottom: 1.5rem; /* Space below the link/button */
    text-align: right; /* Align to the right, or 'left'/'center' as preferred */
}

/* Inline Notice for Dynamic QR Login Prompt */
.qr-generator-wrapper .frq-inline-notice {
    padding: 10px 15px;
    margin-top: 10px; /* Default margin-top, can be overridden by inline style */
    border-radius: 4px;
    font-size: 0.9em;
    background-color: #e9f5ff; /* Light blue, similar to info notices */
    border: 1px solid #cce7ff;
    color: #004085; /* Darker blue text */
    line-height: 1.4;
}

.qr-generator-wrapper .frq-inline-notice a {
    color: #004085; /* Match text color */
    font-weight: bold;
    text-decoration: underline;
}

.qr-generator-wrapper .frq-inline-notice a:hover {
    text-decoration: none;
}


.qr-generator-wrapper .frq-button, /* General button class for plugin */
.frq-qr-dashboard .frq-button { /* Also target buttons in dashboard if needed for consistency */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.6rem 1.2rem;
    font-size: 0.95rem;
    font-weight: 500;
    text-decoration: none;
    border: 1px solid transparent;
    border-radius: 6px;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
    line-height: 1.5;
}

.qr-generator-wrapper .frq-button-secondary {
    background-color: #6c757d; /* A common secondary button color (Bootstrap-like gray) */
    border-color: #6c757d;
    color: #fff;
}

.qr-generator-wrapper .frq-button-secondary:hover,
.qr-generator-wrapper .frq-button-secondary:focus {
    background-color: #5a6268;
    border-color: #545b62;
    color: #fff;
    outline: none;
    box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
}

.qr-generator-wrapper .frq-button i,
.frq-qr-dashboard .frq-button i {
    /* font-size: 0.9em; /* Adjust icon size relative to button text if needed */
    /* margin-right: 0.5rem; /* Replaced by gap */
}

/* Adjustments for existing dashboard buttons to use the new frq-button class if desired for consistency */
/* You might need to update the dashboard shortcode HTML to use class="frq-button button-small" etc. */
/* For example:
.frq-qr-dashboard .frq-dashboard-table .button.frq-edit-qr-btn {
    background-color: #17a2b8; info
    border-color: #17a2b8;
    color: #fff;
}
.frq-qr-dashboard .frq-dashboard-table .button.frq-edit-qr-btn:hover {
    background-color: #138496;
    border-color: #117a8b;
}
*/






/* Form Groups and Labels */
.qr-generator-wrapper .form-group {
    margin-bottom: 1.5rem;
}

.qr-generator-wrapper .form-label {
    display: block;
    margin-bottom: 0.5rem;
    color: #404040;
    font-weight: 500;
    font-size: 0.95rem;
}

/* Form Controls (Inputs, Selects, Textareas) */
.qr-generator-wrapper .form-control,
.qr-generator-wrapper .qr-type-select,
.qr-generator-wrapper .form-select {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-size: 1rem;
    color: #333;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.qr-generator-wrapper .form-control:focus,
.qr-generator-wrapper .qr-type-select:focus,
.qr-generator-wrapper .form-select:focus {
    outline: none;
    border-color: #007cba;
    box-shadow: 0 0 0 3px rgba(0, 124, 186, 0.2);
}

.qr-generator-wrapper .qr-type-select,
.qr-generator-wrapper .form-select {
    background-color: #f8f9fa; /* Light background for selects */
}

.qr-generator-wrapper textarea.form-control {
    min-height: 80px;
    resize: vertical;
}

/* Generate Button */
.qr-generator-wrapper .generate-btn {
    width: 100%;
    padding: 1rem;
    background: #007cba;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 1.1rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.3s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem; /* Replaces margin-right on icon */
}

.qr-generator-wrapper .generate-btn:hover,
.qr-generator-wrapper .generate-btn:focus {
    background-color: #005f8f; /* Darker shade on hover/focus */
    outline: none;
}

/* .qr-generator-wrapper .generate-btn i { Removed, using gap now
    margin-right: 0.75rem;
} */

/* QR Result Area */
.qr-generator-wrapper .qr-result-container {
    margin-top: 2rem;
    text-align: center;
    padding: 1.5rem;
    background: #f8f9fa;
    border-radius: 8px;
    /* display: none; */ /* Controlled by JS */
}

.qr-generator-wrapper .qr-code-image-container {
    margin: 1rem auto;
    display: inline-block;
    background-color: #fff; /* Default background, can be overridden by JS */
    padding: 10px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    line-height: 0; /* Helps remove extra space around canvas/img if any */
}

.qr-generator-wrapper #qrCodeOutput canvas,
.qr-generator-wrapper #qrCodeOutput img,
.qr-generator-wrapper #qrCodeOutput svg {
    display: block;
    margin: 0 auto; /* Center the QR code element */
}

/* Download Button */
.qr-generator-wrapper .download-btn {
    display: inline-flex; /* Changed from inline-block to align icon better */
    align-items: center;
    justify-content: center;
    gap: 0.5rem; /* Replaces margin-right on icon */
    margin-top: 1.5rem;
    padding: 0.75rem 1.5rem;
    background: #28a745;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.3s ease;
    text-decoration: none; /* For cases where it might be an <a> tag */
}

.qr-generator-wrapper .download-btn:hover,
.qr-generator-wrapper .download-btn:focus {
    background-color: #1e7e34; /* Darker shade for hover/focus */
    outline: none;
}

/* .qr-generator-wrapper .download-btn i { Removed, using gap now
    margin-right: 0.5rem;
} */

/* Utility Classes */
.qr-generator-wrapper .hidden {
    display: none !important;
}

.qr-generator-wrapper .error-message {
    color: #dc3545;
    margin-top: 0.5rem;
    font-size: 0.9rem;
    display: none; /* Controlled by JS */
}

.qr-generator-wrapper .loading-spinner {
    /* display: none; */ /* Controlled by JS */
    margin: 1rem auto;
    width: 2rem;
    height: 2rem;
    border: 3px solid #f3f3f3; /* Light grey */
    border-radius: 50%;
    border-top-color: #007cba; /* Blue */
    animation: frq_spin 1s linear infinite;
}

@keyframes frq_spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Options Groups (for styling, logo etc.) */
.qr-generator-wrapper .options-group {
    border: 1px solid #e0e0e0;
    padding: 1.25rem;
    margin-bottom: 1.5rem;
    border-radius: 8px;
    background-color: #fdfdfd;
}

.qr-generator-wrapper .options-group h3 {
    margin-top: 0;
    margin-bottom: 1rem;
    font-size: 1.2rem;
    color: #333;
    font-weight: 600;
}

.qr-generator-wrapper .options-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1rem;
}

.qr-generator-wrapper .options-row .form-group {
    flex: 1 1 calc(50% - 0.5rem); /* Two items per row, accounting for gap */
    margin-bottom: 0; /* Reset bottom margin as gap handles spacing */
    min-width: 200px; /* Ensure they don't get too squished */
}

/* Color Picker Specific */
.qr-generator-wrapper .color-picker-group {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.qr-generator-wrapper .color-picker-group label.form-label { /* Target only labels within this group */
    margin-bottom: 0; /* Align with color input */
}

.qr-generator-wrapper .color-picker-group input[type="color"] {
    min-width: 40px;
    width: 40px; /* Fixed width */
    height: 40px;
    padding: 2px; /* Small padding for the color itself */
    border-radius: 4px;
    border: 1px solid #ddd;
    cursor: pointer;
    background-color: transparent; /* Ensure native picker shows */
}

/* Button Group Style (for Pattern Style Radio Buttons) */
.qr-generator-wrapper .button-group-style .form-label {
    margin-bottom: 0.75rem; /* Space above the buttons */
}

.qr-generator-wrapper .button-group-style .options-row-inline {
    display: flex;
    gap: 10px;
    flex-wrap: wrap; /* Allow wrapping on small screens */
}

.qr-generator-wrapper .button-group-style input[type="radio"] {
    display: none; /* Hide actual radio button */
}

.qr-generator-wrapper .button-group-style input[type="radio"] + label {
    padding: 0.6rem 1.1rem;
    border: 1px solid #ccc;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.2s ease-in-out;
    background-color: #f0f0f0;
    color: #495057;
    font-weight: 500;
    display: inline-block;
    text-align: center;
    font-size: 0.9rem;
}

.qr-generator-wrapper .button-group-style input[type="radio"]:checked + label {
    background-color: #007cba;
    color: #fff;
    border-color: #007cba;
    box-shadow: 0 2px 4px rgba(0, 124, 186, 0.2);
}

.qr-generator-wrapper .button-group-style input[type="radio"]:hover:not(:checked) + label {
    border-color: #007cba;
    background-color: #e9ecef;
}

.qr-generator-wrapper .button-group-style input[type="radio"]:focus + label {
    border-color: #007cba;
    box-shadow: 0 0 0 2px rgba(0, 124, 186, 0.2);
}


/* Logo Options */
.qr-generator-wrapper .logo-choice-visuals {
    display: flex;
    gap: 15px;
    align-items: center;
    flex-wrap: wrap; /* Allow wrapping */
    margin-top: 0.5rem;
}

.qr-generator-wrapper .logo-choice-visuals .logo-option {
    padding: 10px;
    border: 2px solid #ddd;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.2s ease-in-out;
    text-align: center;
    min-width: 80px; /* Ensure items don't get too small */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background-color: #f9f9f9;
}

.qr-generator-wrapper .logo-choice-visuals .logo-option.selected,
.qr-generator-wrapper .logo-choice-visuals .logo-option:hover {
    border-color: #007cba;
    box-shadow: 0 0 0 3px rgba(0, 124, 186, 0.2);
    background-color: #fff;
}

.qr-generator-wrapper .logo-choice-visuals .logo-option img {
    max-width: 45px; /* Slightly smaller than original to fit padding better */
    max-height: 45px;
    display: block;
    margin: 0 auto 5px auto;
    border-radius: 4px; /* Soften image corners if visible */
}

.qr-generator-wrapper .logo-choice-visuals .logo-option span {
    font-size: 0.85em;
    color: #404040;
    display: block; /* Ensure span takes full width for centering */
}

.qr-generator-wrapper .logo-choice-visuals .logo-option.upload-logo-btn i {
    font-size: 1.8em;
    margin-bottom: 5px;
    color: #007cba;
}

.qr-generator-wrapper #custom_logo_preview {
    max-width: 100px;
    max-height: 100px;
    margin-top: 10px;
    border: 1px solid #ddd;
    padding: 5px;
    border-radius: 4px;
    display: none; /* Controlled by JS */
    background-color: #f9f9f9;
}

.qr-generator-wrapper #logo_upload_error {
    color: #dc3545;
    font-size: 0.9em;
    margin-top: 5px;
}

.qr-generator-wrapper .ec-level-note {
    font-size: 0.9em;
    color: #555;
    margin-top: 5px;
    display: none; /* Controlled by JS */
    background-color: #fffbe6; /* Light yellow for attention */
    padding: 8px;
    border-radius: 4px;
    border: 1px solid #ffe58f;
}

/* Dynamic QR Mode Specific */
.qr-generator-wrapper #frq_make_dynamic_qr {
    vertical-align: middle;
}
.qr-generator-wrapper #dynamic_option_note {
    font-size: 0.85em;
    padding: 5px;
    border-radius: 3px;
}
.qr-generator-wrapper #dynamic_option_note:not(:empty) { /* Only style if it has content */
    background-color: #e9f5ff;
    border: 1px solid #cce7ff;
}


/*-----------------------------------------------------------------------------
 * Styles for User QR Dashboard Shortcode ([frq_qr_dashboard])
 *-----------------------------------------------------------------------------*/

.frq-qr-dashboard {
    max-width: 900px; /* Wider than generator for table */
    margin: 2rem auto;
    padding: 1.5rem;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, sans-serif;
    box-sizing: border-box;
}
.frq-qr-dashboard *,
.frq-qr-dashboard *::before,
.frq-qr-dashboard *::after {
    box-sizing: inherit;
}


.frq-qr-dashboard h2 {
    text-align: center;
    margin-bottom: 1.5rem;
    color: #1a1a1a;
    font-size: 1.6rem;
    font-weight: 600;
}

/* Dashboard Table */
.frq-qr-dashboard table.frq-dashboard-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 1.5rem; /* Was 20px */
    font-size: 0.95rem;
}

.frq-qr-dashboard .frq-dashboard-table th,
.frq-qr-dashboard .frq-dashboard-table td {
    padding: 10px 12px; /* Increased padding slightly */
    text-align: left;
    border: 1px solid #e0e0e0; /* Lighter border */
    vertical-align: middle;
}

.frq-qr-dashboard .frq-dashboard-table th {
    background-color: #f7f7f9; /* Slightly different background */
    font-weight: 600; /* Bolder */
    color: #333;
}

.frq-qr-dashboard .frq-dashboard-table tbody tr:nth-child(even) {
    background-color: #fdfdfd; /* Subtle striping for even rows */
}
.frq-qr-dashboard .frq-dashboard-table tbody tr:hover {
    background-color: #f0f5ff; /* Highlight on hover */
}


/* Buttons in Dashboard Table */
.frq-qr-dashboard .frq-dashboard-table .button,
.frq-qr-dashboard p > .button-primary { /* Create New QR button */
    margin-right: 5px;
    margin-bottom: 5px; /* For wrapping on small screens */
    padding: 6px 10px;
    font-size: 0.85rem;
    text-decoration: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
    border: 1px solid transparent;
}
/* Default button WordPress-like styling */
.frq-qr-dashboard .frq-dashboard-table .button {
    background-color: #f0f0f1;
    border-color: #cacaca;
    color: #2c3338;
}
.frq-qr-dashboard .frq-dashboard-table .button:hover {
    background-color: #e0e0e0;
    border-color: #b0b0b0;
}

.frq-qr-dashboard .frq-dashboard-table .button-danger,
.frq-qr-dashboard .frq-dashboard-table .button.frq-ajax-delete-qr-btn { /* More specific target */
    background-color: #dc3545 !important;
    border-color: #dc3545 !important;
    color: #fff !important;
}

.frq-qr-dashboard .frq-dashboard-table .button-danger:hover,
.frq-qr-dashboard .frq-dashboard-table .button-danger:focus,
.frq-qr-dashboard .frq-dashboard-table .button.frq-ajax-delete-qr-btn:hover,
.frq-qr-dashboard .frq-dashboard-table .button.frq-ajax-delete-qr-btn:focus {
    background-color: #c82333 !important;
    border-color: #bd2130 !important;
    outline: none;
}

/* "Create New QR Code" button */
.frq-qr-dashboard p > .button-primary {
    background-color: #007cba;
    border-color: #007cba;
    color: #fff;
    font-size: 1rem;
    padding: 0.7rem 1.2rem;
}
.frq-qr-dashboard p > .button-primary:hover {
    background-color: #005f8f;
    border-color: #005f8f;
}


/* Notices and Messages */
.frq-qr-dashboard .frq-messages-area .frq-notice, /* For JS injected messages */
.frq-login-prompt,
.frq-qr-dashboard .frq-notice /* General notice styling if used directly in PHP */
 {
    padding: 12px 18px;
    margin-bottom: 1.5rem; /* Was 20px */
    border-left-width: 4px;
    border-left-style: solid;
    border-radius: 4px; /* Rounded corners */
    font-size: 0.95rem;
}

.frq-qr-dashboard .frq-messages-area .frq-notice {
    margin-top:0; /* For JS injected messages */
}

.frq-qr-dashboard .frq-notice-success,
.frq-qr-dashboard .frq-messages-area .frq-notice-success {
    background-color: #d1e7dd; /* Bootstrap success green */
    border-color: #badbcc;
    color: #0f5132;
}

.frq-qr-dashboard .frq-notice-error,
.frq-qr-dashboard .frq-messages-area .frq-notice-error {
    background-color: #f8d7da; /* Bootstrap error red */
    border-color: #f5c2c7;
    color: #842029;
}

/* Login Prompt */
.frq-qr-dashboard .frq-login-prompt {
    background-color: #fff3cd; /* Bootstrap warning yellow */
    border-color: #ffecb5;
    color: #664d03;
    text-align: center;
}
.frq-qr-dashboard .frq-login-prompt a {
    color: #664d03;
    font-weight: bold;
    text-decoration: underline;
}
.frq-qr-dashboard .frq-login-prompt a:hover {
    text-decoration: none;
}

/* Dashboard QR Preview Area */
.frq-qr-dashboard #frq_dashboard_qr_preview_area {
    margin-top: 20px;
    text-align:center;
    min-height:50px; /* To prevent layout jumps */
    padding: 15px;
    background-color: #f9f9f9;
    border-radius: 6px;
}
.frq-qr-dashboard #frq_dashboard_qr_preview_area h4 {
    margin: 0 0 10px 0;
    font-size: 1.1em;
    color: #333;
}
.frq-qr-dashboard #frq_dashboard_qr_preview_area div[id^="dashboard-qr-temp-render-"] { /* Target generated temp div */
    display: inline-block;
    background-color: #fff;
    padding: 8px;
    border-radius: 6px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

/* Responsive adjustments (Example) */
@media (max-width: 768px) {
    .qr-generator-wrapper .options-row .form-group {
        flex: 1 1 100%; /* Stack items on smaller screens */
    }

    .frq-qr-dashboard .frq-dashboard-table,
    .frq-qr-dashboard .frq-dashboard-table tbody,
    .frq-qr-dashboard .frq-dashboard-table tr,
    .frq-qr-dashboard .frq-dashboard-table td {
        display: block; /* Make table cells stack */
    }
    .frq-qr-dashboard .frq-dashboard-table thead {
        display: none; /* Hide table headers, use data-labels if needed */
    }
    .frq-qr-dashboard .frq-dashboard-table tr {
        margin-bottom: 1rem;
        border: 1px solid #ddd;
        border-radius: 4px;
    }
    .frq-qr-dashboard .frq-dashboard-table td {
        text-align: right; /* Align content to the right */
        padding-left: 50%; /* Create space for the pseudo-label */
        position: relative;
        border-bottom: 0;
    }
    .frq-qr-dashboard .frq-dashboard-table td:last-child {
        border-bottom: 1px solid #e0e0e0;
    }
    .frq-qr-dashboard .frq-dashboard-table td::before {
        content: attr(data-label); /* Use data-label for pseudo-headers */
        position: absolute;
        left: 10px;
        width: calc(50% - 20px);
        padding-right: 10px;
        white-space: nowrap;
        text-align: left;
        font-weight: bold;
    }
    .frq-qr-dashboard .frq-dashboard-table td[data-label="Actions"] .button { /* Adjust buttons in stacked view */
        display: block;
        width: 100%;
        margin-bottom: 5px;
    }
    .frq-qr-dashboard .frq-dashboard-table td[data-label="Actions"] .button:last-child {
        margin-bottom: 0;
    }
}

@media (max-width: 480px) {
    .qr-generator-wrapper {
        padding: 1.5rem;
        margin: 1rem auto;
    }
    .frq-qr-dashboard {
        padding: 1rem;
    }
    .qr-generator-wrapper .form-header h2 { font-size: 1.6rem; }
    .frq-qr-dashboard h2 { font-size: 1.4rem; }

    .qr-generator-wrapper .button-group-style input[type="radio"] + label {
        padding: 0.5rem 0.8rem; /* Smaller padding for radio-like buttons */
        font-size: 0.85rem;
    }
}