/**
 * JB Material Options - Main CSS
 *
 * Contains basic variables needed for the plugin and all component styles
 */

:root {
  /* Primary colors */
  --jb-primary-color: #2271b1;
  --jb-primary-color-dark: #135e96;
  --jb-primary-color-light: #72aee6;

  /* Secondary colors */
  --jb-secondary-color: #3c434a;
  --jb-secondary-color-dark: #2c3338;
  --jb-secondary-color-light: #f0f0f1;

  /* Text colors */
  --jb-text-color: #1d2327;
  --jb-text-color-light: #f0f0f1;

  /* Border colors */
  --jb-border-color: #c3c4c7;
  --jb-border-color-light: #dcdcde;
  --jb-border-color-ultra-light: #eee;
  --jb-border-color-medium: #ddd;
  --jb-border-color-dark: #ccc;

  /* Background colors */
  --jb-bg-color-light: #f5f5f5;
  --jb-bg-color-ultra-light: #f9f9f9;
  --jb-bg-color-white: #fff;
  --jb-bg-color-highlight: #f0f7ff;

  /* Accent colors */
  --jb-accent-color: #4a90e2;
  --jb-accent-color-light: rgba(74, 144, 226, 0.5);
  --jb-error-color: #dc3232;
  --jb-warning-color: #ffb900;
  --jb-success-color: #46b450;

  /* Text colors - Additional */
  --jb-text-color-muted: #666;
  --jb-text-color-subtle: #777;
  --jb-text-color-emphasis: #555;

  /* Spacing - Using fluid spacing with clamp and rem units */
  --jb-spacing-xs: clamp(0.25rem, 0.5vw, 0.3125rem);
  --jb-spacing-sm: clamp(0.5rem, 1vw, 0.625rem);
  --jb-spacing-md: clamp(0.75rem, 1.5vw, 0.9375rem);
  --jb-spacing-lg: clamp(1rem, 2vw, 1.25rem);
  --jb-spacing-xl: clamp(1.25rem, 3vw, 1.875rem);

  /* Font sizes - Using fluid typography with clamp and rem units */
  --jb-font-size-xs: clamp(0.625rem, 0.75rem, 0.75rem);
  --jb-font-size-sm: clamp(0.75rem, 0.875rem, 0.875rem);
  --jb-font-size-md: clamp(0.875rem, 1rem, 1rem);
  --jb-font-size-lg: clamp(1rem, 1.25rem, 1.125rem);
  --jb-font-size-xl: clamp(1.125rem, 1.5rem, 1.5rem);
  --jb-font-size-2xl: clamp(1.25rem, 2rem, 1.75rem);

  /* Layout dimensions - Using rem units with responsive functions */
  --jb-container-max-width: 71.25rem; /* 1140px */
  --jb-column-min-width: clamp(15.625rem, 30vw, 18.75rem); /* 250-300px */
  --jb-grid-item-min-width: clamp(9.375rem, 20vw, 13.75rem); /* 150-220px */

  /* Border radius - Small values can remain in px for precision */
  --jb-border-radius: 4px;
  --jb-border-radius-lg: 8px;
  --jb-border-radius-circle: 50%;

  /* Shadows - Using rem units */
  --jb-shadow-sm: 0 0.125rem 0.25rem rgba(0,0,0,0.1);
  --jb-shadow-md: 0 0.25rem 0.5rem rgba(0,0,0,0.1);
  --jb-shadow-lg: 0 0.5rem 1rem rgba(0,0,0,0.15);

  /* Transitions */
  --jb-transition: all 0.3s ease;
  --jb-transition-fast: all 0.2s ease;
}

/* Basic reset for plugin elements */
.jb-material-options-container * {
  box-sizing: border-box;
}

.jb-material-options-container {
  width: 100%;
  margin: 0 auto;
  padding: var(--jb-spacing-md);
  max-width: var(--jb-container-max-width);
}

/* Material Picker Layout Styles */
.jb-material-picker-simple {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
    margin: 0 auto;
}

.jb-material-picker-title {
    font-size: var(--jb-font-size-2xl);
    margin-bottom: var(--jb-spacing-sm);
}

.jb-material-picker-description {
    margin-bottom: var(--jb-spacing-lg);
    font-size: var(--jb-font-size-md);
}

.jb-material-picker-layout {
    display: flex;
    gap: clamp(0.625rem, 3vw, 1.875rem);
}

/* Left Column: Material Previews */
.jb-material-preview-column {
    flex: 1;
    min-width: 0; /* Allow column to shrink on mobile */
}

@media (min-width: 768px) {
    .jb-material-preview-column {
        min-width: var(--jb-column-min-width);
    }
}

.jb-material-preview-title {
    font-size: var(--jb-font-size-xl);
    margin-bottom: var(--jb-spacing-md);
    padding-bottom: var(--jb-spacing-xs);
    border-bottom: 1px solid var(--jb-border-color-ultra-light);
}

.jb-material-preview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(var(--jb-grid-item-min-width), 1fr));
    gap: clamp(0.625rem, 3vw, 1.875rem);
}

/* Paint swatch style containers */
.jb-material-swatch-container {
    display: flex;
    flex-direction: column;
}

.jb-material-swatch-preview {
    aspect-ratio: 3 / 2;
    width: 100%;
    height: 0;
    padding-bottom: 66.666%;
    border-radius: var(--jb-border-radius-lg) var(--jb-border-radius-lg) 0 0;
    border: 1px solid var(--jb-border-color-medium);
    overflow: hidden;
    position: relative;
    box-shadow: var(--jb-shadow-md);
    transition: var(--jb-transition);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

/* Loading state for material swatch preview */
.jb-material-swatch-preview.is-loading::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.7);
    z-index: 1;
}

.jb-material-swatch-preview.is-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 30px;
    height: 30px;
    margin: -15px 0 0 -15px;
    border: 3px solid var(--jb-border-color-medium);
    border-top-color: var(--jb-accent-color);
    border-radius: 50%;
    z-index: 2;
    animation: jb-material-spinner 0.8s linear infinite;
}

@keyframes jb-material-spinner {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.jb-material-swatch-preview:hover {
    transform: translateY(-0.3125rem);
    box-shadow: var(--jb-shadow-lg);
}

.jb-material-swatch-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.jb-material-swatch-info {
    background-color: var(--jb-bg-color-white);
    border: 1px solid var(--jb-border-color-medium);
    border-top: none;
    border-radius: 0 0 var(--jb-border-radius-lg) var(--jb-border-radius-lg);
    padding: var(--jb-spacing-sm);
    box-shadow: 0 0.25rem 0.5rem rgba(0,0,0,0.05);
}

.jb-material-swatch-group {
    font-size: var(--jb-font-size-sm);
    font-weight: bold;
    color: var(--jb-text-color-emphasis);
    margin-bottom: var(--jb-spacing-xs);
}

.jb-material-swatch-name {
    font-size: var(--jb-font-size-xs);
    color: var(--jb-text-color-subtle);
}

/* Right Column: Material Selection */
.jb-material-selection-column {
    flex: 1;
    min-width: 0; /* Allow column to shrink on mobile */
}

@media (min-width: 768px) {
    .jb-material-selection-column {
        min-width: var(--jb-column-min-width);
    }
}

.jb-material-selection-title {
    font-size: var(--jb-font-size-xl);
    margin-bottom: var(--jb-spacing-md);
    padding-bottom: var(--jb-spacing-xs);
    border-bottom: 1px solid var(--jb-border-color-ultra-light);
}

.jb-material-group-selection {
    margin-bottom: var(--jb-spacing-xl);
    padding-bottom: var(--jb-spacing-lg);
    border-bottom: 1px solid var(--jb-border-color-ultra-light);
}

.jb-material-group-heading {
    font-size: var(--jb-font-size-lg);
    margin-top: 0;
    margin-bottom: var(--jb-spacing-xs);
}

.jb-material-group-description {
    font-size: var(--jb-font-size-sm);
    color: var(--jb-text-color-muted);
    margin-top: 0;
    margin-bottom: var(--jb-spacing-md);
}

.jb-material-options {
    display: grid;
    gap: var(--jb-spacing-sm);
}

/* Grid layout for material options */
.jb-material-options-grid {
    grid-template-columns: repeat(auto-fill, minmax(clamp(7.5rem, 15vw, 10rem), 1fr));
    gap: var(--jb-spacing-xs);
}

/* List layout for material options */
.jb-material-picker-list-layout {
    display: flex;
    flex-direction: column;
    gap: var(--jb-spacing-lg);
}

.jb-material-picker-list .jb-material-selection-form {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(clamp(15rem, 30vw, 20rem), 1fr));
    gap: var(--jb-spacing-md);
}

.jb-material-list-group {
    margin-bottom: var(--jb-spacing-md);
    padding-bottom: var(--jb-spacing-md);
    border-bottom: 1px solid var(--jb-border-color-ultra-light);
    width: 100%;
}

.jb-material-list-group .jb-material-swatch-container {
    margin-bottom: var(--jb-spacing-sm);
    width: 100%;
}

.jb-material-options-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(clamp(7.5rem, 15vw, 10rem), 1fr));
    gap: var(--jb-spacing-xs);
    margin-top: var(--jb-spacing-sm);
    width: 100%;
}

.jb-material-label-list {
    padding: var(--jb-spacing-sm) var(--jb-spacing-md);
    border-radius: var(--jb-border-radius);
}

/* Dropdown layout for material options */
.jb-material-picker-dropdown .jb-material-options-dropdown {
    display: flex;
    align-items: center;
    gap: var(--jb-spacing-sm);
}

.jb-material-picker-dropdown .jb-material-dropdown-wrapper {
    display: flex;
    align-items: center;
    width: 100%;
    position: relative;
    border: 1px solid var(--jb-border-color-medium);
    border-radius: var(--jb-border-radius);
    background-color: var(--jb-bg-color-white);
    overflow: hidden;
    box-shadow: var(--jb-shadow-sm);
    transition: var(--jb-transition-fast);
}

.jb-material-picker-dropdown .jb-material-dropdown-wrapper:hover {
    border-color: var(--jb-accent-color);
    box-shadow: var(--jb-shadow-md);
}

.jb-material-picker-dropdown .jb-material-dropdown {
    flex: 1;
    padding: var(--jb-spacing-sm) var(--jb-spacing-sm) var(--jb-spacing-sm) calc(2rem + var(--jb-spacing-md));
    border: none;
    background-color: transparent;
    font-size: var(--jb-font-size-md);
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="6" viewBox="0 0 12 6"><path fill="%23666" d="M0 0l6 6 6-6z"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    padding-right: 30px;
}

.jb-material-picker-dropdown .jb-material-dropdown:focus {
    outline: none;
}

.jb-material-picker-dropdown .jb-material-dropdown-wrapper:focus-within {
    border-color: var(--jb-accent-color);
    box-shadow: 0 0 0 2px var(--jb-accent-color-light);
}

.jb-material-picker-dropdown .jb-material-dropdown-preview {
    display: flex;
    align-items: center;
    position: absolute;
    left: var(--jb-spacing-sm);
    z-index: 1;
}

.jb-material-picker-dropdown .jb-material-color-preview {
    width: 1.5rem;
    height: 1.5rem;
    border-radius: var(--jb-border-radius-circle);
    margin-right: 0;
    border: 1px solid var(--jb-border-color-medium);
}

/* Style for dropdown options - Note: these styles may not work in all browsers */
.jb-material-picker-dropdown .jb-material-dropdown option {
    padding: var(--jb-spacing-sm);
    font-weight: bold;
}

/* Radio buttons layout for material options */
.jb-material-picker-radio .jb-material-options-radio-buttons {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--jb-spacing-sm);
}

.jb-material-picker-radio .jb-material-option-radio {
    margin-bottom: var(--jb-spacing-xs);
}

.jb-material-picker-radio .jb-material-label-radio {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--jb-spacing-xs);
    border-radius: var(--jb-border-radius);
    width: auto;
    height: auto;
    text-align: center;
}

.jb-material-picker-radio .jb-material-color-preview {
    width: 2rem;
    height: 2rem;
    border-radius: var(--jb-border-radius-circle);
    margin-right: 0;
    margin-bottom: var(--jb-spacing-xs);
    border: 2px solid var(--jb-border-color-medium);
    transition: var(--jb-transition-fast);
}

.jb-material-picker-radio .jb-material-name {
    font-size: var(--jb-font-size-xs);
    color: var(--jb-text-color-subtle);
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.jb-material-picker-radio .jb-material-radio:checked + .jb-material-label-radio .jb-material-color-preview {
    border-color: var(--jb-accent-color);
    box-shadow: 0 0 0 2px var(--jb-accent-color-light);
}

.jb-material-picker-radio .jb-material-radio:focus + .jb-material-label-radio .jb-material-color-preview {
    box-shadow: 0 0 0 3px var(--jb-accent-color-light);
}

.jb-material-picker-radio .jb-material-label-radio:hover .jb-material-color-preview {
    transform: scale(1.1);
    border-color: var(--jb-border-color-dark);
}

.jb-material-option {
    display: flex;
    align-items: center;
    margin-bottom: var(--jb-spacing-xs);
}

.jb-material-radio {
    position: absolute;
    opacity: 0;
}

.jb-material-radio:checked + .jb-material-label {
    background-color: var(--jb-bg-color-highlight);
    border-color: var(--jb-accent-color);
}

.jb-material-radio:focus + .jb-material-label {
    outline: 2px solid var(--jb-accent-color-light);
}

.jb-material-label {
    display: flex;
    align-items: center;
    cursor: pointer;
    padding: var(--jb-spacing-xs) var(--jb-spacing-sm);
    border-radius: var(--jb-border-radius);
    transition: var(--jb-transition-fast);
    border: 1px solid var(--jb-border-color-medium);
    width: 100%;
    height: 100%;
    justify-content: flex-start;
}

.jb-material-label:hover {
    background-color: var(--jb-bg-color-light);
    border-color: var(--jb-border-color-dark);
}

.jb-material-color-preview {
    width: clamp(1rem, 1.5vw, 1.25rem);
    height: clamp(1rem, 1.5vw, 1.25rem);
    border-radius: var(--jb-border-radius-circle);
    margin-right: var(--jb-spacing-xs);
    border: 1px solid var(--jb-border-color-medium);
    flex-shrink: 0;
}

.jb-material-name {
    font-size: var(--jb-font-size-sm);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Responsive Styles - Mobile First Approach */
/* 
 * Most responsive behavior is now handled by CSS variables and functions like clamp()
 * We only need breakpoints for major layout changes that can't be handled with CSS functions
 */

/* Base styles are for all devices - side by side layout */
.jb-material-picker-layout {
    flex-direction: row;
}

/* Breakpoints for responsive layout */
@media (min-width: 768px) {
    /* Adjust grid columns for medium screens */
    .jb-material-options-grid {
        grid-template-columns: repeat(auto-fill, minmax(clamp(7.5rem, 15vw, 10rem), 1fr));
    }
}

/* Adjust styles for small screens */
@media (max-width: 767px) {

    /* Adjust column widths for mobile side-by-side layout */
    .jb-material-preview-column,
    .jb-material-selection-column {
        min-width: 0;
        width: 50%;
    }

    /* Single column grids for material options on mobile */
    .jb-material-options-grid {
        grid-template-columns: 1fr;
    }

    .jb-material-preview-grid {
        grid-template-columns: 1fr;
    }

    .jb-material-group-selection {
        margin-bottom: var(--jb-spacing-md);
        padding-bottom: var(--jb-spacing-sm);
    }

    /* Remove bottom margin since columns are side by side */
    .jb-material-preview-column {
        margin-bottom: 0;
    }

    /* Smaller title margins and font sizes for compact layout */
    .jb-material-preview-title,
    .jb-material-selection-title {
        margin-bottom: var(--jb-spacing-sm);
        font-size: var(--jb-font-size-lg);
        padding-bottom: var(--jb-spacing-xs);
    }

    /* Smaller group headings on mobile */
    .jb-material-group-heading {
        font-size: var(--jb-font-size-md);
        margin-bottom: var(--jb-spacing-xs);
    }

    /* Smaller padding for material labels on mobile */
    .jb-material-label {
        padding: var(--jb-spacing-xs) var(--jb-spacing-xs);
    }

    /* Smaller color preview on mobile */
    .jb-material-color-preview {
        width: clamp(0.75rem, 1vw, 1rem);
        height: clamp(0.75rem, 1vw, 1rem);
    }
}
